From 7187d0dced4e3714a4c796687a86ee3c88e52092 Mon Sep 17 00:00:00 2001 From: ninifly <18328038336@163.com> Date: Sat, 18 May 2019 15:35:51 +0800 Subject: [PATCH 001/336] Update 20190423 Edge computing is in most industries- future.md --- ...computing is in most industries- future.md | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/sources/talk/20190423 Edge computing is in most industries- future.md b/sources/talk/20190423 Edge computing is in most industries- future.md index 3f5a6d4c00..ec6366638b 100644 --- a/sources/talk/20190423 Edge computing is in most industries- future.md +++ b/sources/talk/20190423 Edge computing is in most industries- future.md @@ -7,38 +7,39 @@ [#]: via: (https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html#tk.rss_all) [#]: author: (Anne Taylor https://www.networkworld.com/author/Anne-Taylor/) -Edge computing is in most industries’ future +边缘计算是大多数行业的未来 ====== -Nearly every industry can take advantage of edge computing in the journey to speed digital transformation efforts +几乎每个行业都能够在加速数字化转型的进程中利用边缘计算的优势。 ![iStock][1] -The growth of edge computing is about to take a huge leap. Right now, companies are generating about 10% of their data outside a traditional data center or cloud. But within the next six years, that will increase to 75%, [according to Gartner][2]. +边缘计算的发展将取得一次巨大的飞跃。现在,公司在传统数据中心或云之外生成了10%的数据。但在未来六年内,这一比例将升至75%。 +[according to Gartner][2]. -That’s largely down to the need to process data emanating from devices, such as Internet of Things (IoT) sensors. Early adopters include: +这很大程度上取决于处理来自设备数据的需要,比如物联网数据传感器。 +早起采用这一方法的人包括: - * **Manufacturers:** Devices and sensors seem endemic to this industry, so it’s no surprise to see the need to find faster processing methods for the data produced. A recent [_Automation World_][3] survey found that 43% of manufacturers have deployed edge projects. Most popular use cases have included production/manufacturing data analysis and equipment data analytics. + * **制造商:** 设备与传感器在这个行业似乎是特有的,因此需要为生产数据找到更快速的方法也就不足为奇。最近 [_Automation World_][3]研究发现43%的制造商已经部署了边缘计算。最流行的事例包括了生产数据分析与设备数据分析。 - * **Retailers** : Like most industries deeply affected by the need to digitize operations, retailers are being forced to innovate their customer experiences. To that end, these organizations are “investing aggressively in compute power located closer to the buyer,” [writes Dave Johnson][4], executive vice president of the IT division at Schneider Electric. He cites examples such as augmented-reality mirrors in fitting rooms that offer different clothing options without the consumer having to try on the items, and beacon-based heat maps that show in-store traffic. + * **零售商** : 与大多数深受数字化运营需求影响的产业一样,零售商被迫革新其客户体验。为了达到那一目的,这些组织“正在积极投资靠近买家的计算能力”[writes Dave Johns on][4], 施耐德电气公司IT部门执行副总裁说。他列举了一些例子,例如在试衣间的增强现实镜,给提供了不同的服装选择,而不用顾客试用这些服装。又如用于显示店内交通的基于信标的热图。 - * **Healthcare organizations** : As healthcare costs continue to escalate, this industry is ripe for innovation that improves productivity and cost efficiencies. Management consulting firm [McKinsey & Co. has identified][5] at least 11 healthcare use cases that benefit patients, the facility, or both. Two examples: tracking mobile medical devices for nursing efficiency as well as optimization of equipment, and wearable devices that track user exercise and offer wellness advice. + * **医疗保健机构** : 随着医疗成本的不断上升,这一行业已经在具备在提高生产能力与成本效率方面的创新能力。管理咨询公司已经确定,[McKinsey & Co. has identified][5] 至少有11个有益于患者、医疗机构或者两者都有的医疗保健用例。两个例子:跟踪移动医疗设备提高护理效率,同时也有助于优化设备;可穿戴设备跟踪用户锻炼并提供健康的建议。 -While these are strong use cases, as the edge computing market grows, so too will the number of industries adopting it. +虽然这些是强大的用例,随着边缘计算市场的扩大,使用它的行业也会增加。 -**Getting the edge on digital transformation** +**数字化转型的优势** -Faster processing at the edge fits perfectly into the objectives and goals of digital transformation — improving efficiencies, productivity, speed to market, and the customer experience. Here are just a few of the potential applications and industries that will be changed by edge computing: +随着边缘计算的快速处理能力完全符合数字化转型的提高效率、生产能力和市场发展速度和客户体验。以下是一些有潜力的应用及将被边缘计算改变的行业: -**Agriculture:** Farmers and organizations already use drones to transmit field and climate conditions to watering equipment. Other applications might include monitoring and location tracking of workers, livestock, and equipment to improve productivity, efficiencies, and costs. - -**Energy** : There are multiple potential applications in this sector that could benefit both consumers and providers. For example, smart meters help homeowners better manage energy use while reducing grid operators’ need for manual meter reading. Similarly, sensors on water pipes would detect leaks, while providing real-time consumption data. +**农业** :农名和组织已经使用无人机将农田和气候环境传给灌溉设备。其他的应用可能包括了工人、牲畜和设备的监测与位置跟踪从而改善生产能力、效率和成本。 +**能源** : 在这一领域有许多的qian that could benefit both consumers and providers. For example, smart meters help homeowners better manage energy use while reducing grid operators’ need for manual meter reading. Similarly, sensors on water pipes would detect leaks, while providing real-time consumption data. **Financial services** : Banks are adopting interactive ATMs that quickly process data to provide better customer experiences. At the organizational level, transactional data can be more quickly analyzed for fraudulent activity. -**Logistics** : As consumers demand faster delivery of goods and services, logistics companies will need to transform mapping and routing capabilities to get real-time data, especially in terms of last-mile planning and tracking. That could involve street-, package-, and car-based sensors transmitting data for processing. +**Logistics** : As consumers demand faster delivery of goods and services, logistics companies will need to transform mapping and routing capabilities to get real-time data, especially in terms of last-mile pla钱 nning and tracking. That could involve street-, package-, and car-based sensors transmitting data for processing. All industries have the potential for transformation, thanks to edge computing. But it will depend on how they address their computing infrastructure. Discover how to overcome any IT obstacles at [APC.com][6]. From e8f92a6dfbafcdf901a2bb7e06c6bf92b168b3e6 Mon Sep 17 00:00:00 2001 From: ninifly <18328038336@163.com> Date: Mon, 20 May 2019 22:08:21 +0800 Subject: [PATCH 002/336] Update 20190423 Edge computing is in most industries- future.md --- ...3 Edge computing is in most industries- future.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sources/talk/20190423 Edge computing is in most industries- future.md b/sources/talk/20190423 Edge computing is in most industries- future.md index ec6366638b..f94e35ef05 100644 --- a/sources/talk/20190423 Edge computing is in most industries- future.md +++ b/sources/talk/20190423 Edge computing is in most industries- future.md @@ -24,24 +24,24 @@ - * **医疗保健机构** : 随着医疗成本的不断上升,这一行业已经在具备在提高生产能力与成本效率方面的创新能力。管理咨询公司已经确定,[McKinsey & Co. has identified][5] 至少有11个有益于患者、医疗机构或者两者都有的医疗保健用例。两个例子:跟踪移动医疗设备提高护理效率,同时也有助于优化设备;可穿戴设备跟踪用户锻炼并提供健康的建议。 + * **医疗保健机构** : 随着医疗成本的不断上升,这一行业已经在具备在提高生产能力与成本效率方面的创新能力。管理咨询公司已经确定,[McKinsey & Co. has identified][5] 至少有11个有益于患者、医疗机构或者两者都有的医疗保健用例。举两个例子:跟踪移动医疗设备提高护理效率,同时也有助于优化设备;可穿戴设备跟踪用户锻炼并提供健康的建议。 -虽然这些是强大的用例,随着边缘计算市场的扩大,使用它的行业也会增加。 +虽然以上这些是明显的用例,随着边缘计算市场的扩大,使用它的行业也会增加。 **数字化转型的优势** 随着边缘计算的快速处理能力完全符合数字化转型的提高效率、生产能力和市场发展速度和客户体验。以下是一些有潜力的应用及将被边缘计算改变的行业: **农业** :农名和组织已经使用无人机将农田和气候环境传给灌溉设备。其他的应用可能包括了工人、牲畜和设备的监测与位置跟踪从而改善生产能力、效率和成本。 -**能源** : 在这一领域有许多的qian that could benefit both consumers and providers. For example, smart meters help homeowners better manage energy use while reducing grid operators’ need for manual meter reading. Similarly, sensors on water pipes would detect leaks, while providing real-time consumption data. +**能源** : 在这一领域有许多的潜在的应用,可以使消费者与供应商都受益。例如,智能电表有助于业主更好地管理能源使用,同时减少电网运营商对手动抄表的需求。 同样的,水管上的传感器能够监测到泄露,同时提供实时漏水数据。 -**Financial services** : Banks are adopting interactive ATMs that quickly process data to provide better customer experiences. At the organizational level, transactional data can be more quickly analyzed for fraudulent activity. +**金融服务** : 银行正在采取交互式ATM机,这种交互式ATM机能够快速地处理数据以提供更好的用户体验。在管理层次,可以更快速地分析交易数据中的欺诈行为。 -**Logistics** : As consumers demand faster delivery of goods and services, logistics companies will need to transform mapping and routing capabilities to get real-time data, especially in terms of last-mile pla钱 nning and tracking. That could involve street-, package-, and car-based sensors transmitting data for processing. +**物流** : 由于消费者需要更快速地提供商品和服务,物流公司将需要转换映射和路由功能以获取实时数据,尤其在最后一公里计划和轨迹方面。这可能涉及到街道、数据包及汽车基于传感器的数据传输过程。 -All industries have the potential for transformation, thanks to edge computing. But it will depend on how they address their computing infrastructure. Discover how to overcome any IT obstacles at [APC.com][6]. +得益于边缘计算,所有行业都有转型的潜力。但是,这将取决于他们如何处理计算机基础设施。在APC.com发现如何克服任何IT阻碍。 -------------------------------------------------------------------------------- From 17d9ed28751c39b4427636e05d28e6a89568c3ce Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Fri, 14 Jun 2019 17:06:34 +0800 Subject: [PATCH 003/336] Update 20190111 Top 5 Linux Distributions for Productivity.md --- ... 5 Linux Distributions for Productivity.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 725f3bcccb..06dbc19f3e 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -1,19 +1,23 @@ -[#]: collector: (lujun9972) -[#]: translator: (qfzy1233) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top 5 Linux Distributions for Productivity) -[#]: via: (https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity) -[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen) +[#]: collector: "lujun9972" +[#]: translator: "qfzy1233" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " +[#]: subject: "Top 5 Linux Distributions for Productivity" +[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" +[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" -Top 5 Linux Distributions for Productivity +五个最具生产力的 Linux 发行版 ====== ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) +必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 + I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. +然而,这并不意味着 + That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: @@ -149,22 +153,22 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv [b]: https://github.com/lujun9972 [1]: https://www.ubuntu.com/ [2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w (GNOME Clipboard) +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" [4]: /licenses/category/used-permission [5]: https://labs.fedoraproject.org/en/design-suite/ [6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials [7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH (Fedora Design Suite Favorites) +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" [9]: https://system76.com/ [10]: https://system76.com/pop [11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD (Pop!_OS) +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" [13]: https://www.debian.org/ [14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 (Debian) +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" [16]: https://en.opensuse.org/openSUSE:Education-Li-f-e [17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT (Education) +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" [19]: https://en.opensuse.org/Portal:KIWI-LTSP [20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start [21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 265bb0d87458b2275669dafe87f2b1a2a8c91739 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Fri, 14 Jun 2019 17:07:21 +0800 Subject: [PATCH 004/336] Revert "Update 20190111 Top 5 Linux Distributions for Productivity.md" This reverts commit 17d9ed28751c39b4427636e05d28e6a89568c3ce. --- ... 5 Linux Distributions for Productivity.md | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 06dbc19f3e..725f3bcccb 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -1,23 +1,19 @@ -[#]: collector: "lujun9972" -[#]: translator: "qfzy1233" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " -[#]: subject: "Top 5 Linux Distributions for Productivity" -[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" -[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" +[#]: collector: (lujun9972) +[#]: translator: (qfzy1233) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Top 5 Linux Distributions for Productivity) +[#]: via: (https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity) +[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen) -五个最具生产力的 Linux 发行版 +Top 5 Linux Distributions for Productivity ====== ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) -必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 - I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. -然而,这并不意味着 - That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: @@ -153,22 +149,22 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv [b]: https://github.com/lujun9972 [1]: https://www.ubuntu.com/ [2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w (GNOME Clipboard) [4]: /licenses/category/used-permission [5]: https://labs.fedoraproject.org/en/design-suite/ [6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials [7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH (Fedora Design Suite Favorites) [9]: https://system76.com/ [10]: https://system76.com/pop [11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD (Pop!_OS) [13]: https://www.debian.org/ [14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 (Debian) [16]: https://en.opensuse.org/openSUSE:Education-Li-f-e [17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT (Education) [19]: https://en.opensuse.org/Portal:KIWI-LTSP [20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start [21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 3a0d8d52b205a00057aa7deac48f6f198618bf92 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Sat, 15 Jun 2019 16:27:39 +0800 Subject: [PATCH 005/336] Revert "Revert "Update 20190111 Top 5 Linux Distributions for Productivity.md"" This reverts commit 265bb0d87458b2275669dafe87f2b1a2a8c91739. --- ... 5 Linux Distributions for Productivity.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 725f3bcccb..06dbc19f3e 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -1,19 +1,23 @@ -[#]: collector: (lujun9972) -[#]: translator: (qfzy1233) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top 5 Linux Distributions for Productivity) -[#]: via: (https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity) -[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen) +[#]: collector: "lujun9972" +[#]: translator: "qfzy1233" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " +[#]: subject: "Top 5 Linux Distributions for Productivity" +[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" +[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" -Top 5 Linux Distributions for Productivity +五个最具生产力的 Linux 发行版 ====== ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) +必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 + I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. +然而,这并不意味着 + That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: @@ -149,22 +153,22 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv [b]: https://github.com/lujun9972 [1]: https://www.ubuntu.com/ [2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w (GNOME Clipboard) +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" [4]: /licenses/category/used-permission [5]: https://labs.fedoraproject.org/en/design-suite/ [6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials [7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH (Fedora Design Suite Favorites) +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" [9]: https://system76.com/ [10]: https://system76.com/pop [11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD (Pop!_OS) +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" [13]: https://www.debian.org/ [14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 (Debian) +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" [16]: https://en.opensuse.org/openSUSE:Education-Li-f-e [17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT (Education) +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" [19]: https://en.opensuse.org/Portal:KIWI-LTSP [20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start [21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 609c1babb4845e21eddc42ff29d9e17f5590477d Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Sat, 15 Jun 2019 16:27:42 +0800 Subject: [PATCH 006/336] Revert "Update 20190111 Top 5 Linux Distributions for Productivity.md" This reverts commit 17d9ed28751c39b4427636e05d28e6a89568c3ce. --- ... 5 Linux Distributions for Productivity.md | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 06dbc19f3e..725f3bcccb 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -1,23 +1,19 @@ -[#]: collector: "lujun9972" -[#]: translator: "qfzy1233" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " -[#]: subject: "Top 5 Linux Distributions for Productivity" -[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" -[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" +[#]: collector: (lujun9972) +[#]: translator: (qfzy1233) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Top 5 Linux Distributions for Productivity) +[#]: via: (https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity) +[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen) -五个最具生产力的 Linux 发行版 +Top 5 Linux Distributions for Productivity ====== ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) -必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 - I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. -然而,这并不意味着 - That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: @@ -153,22 +149,22 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv [b]: https://github.com/lujun9972 [1]: https://www.ubuntu.com/ [2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w (GNOME Clipboard) [4]: /licenses/category/used-permission [5]: https://labs.fedoraproject.org/en/design-suite/ [6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials [7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH (Fedora Design Suite Favorites) [9]: https://system76.com/ [10]: https://system76.com/pop [11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD (Pop!_OS) [13]: https://www.debian.org/ [14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 (Debian) [16]: https://en.opensuse.org/openSUSE:Education-Li-f-e [17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT (Education) [19]: https://en.opensuse.org/Portal:KIWI-LTSP [20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start [21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 2e80b1f9164e2f6d43af8123c0ea0aa3d85ae85a Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Sat, 15 Jun 2019 16:33:53 +0800 Subject: [PATCH 007/336] Revert "Revert "Update 20190111 Top 5 Linux Distributions for Productivity.md"" This reverts commit 265bb0d87458b2275669dafe87f2b1a2a8c91739. --- ... 5 Linux Distributions for Productivity.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 725f3bcccb..06dbc19f3e 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -1,19 +1,23 @@ -[#]: collector: (lujun9972) -[#]: translator: (qfzy1233) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top 5 Linux Distributions for Productivity) -[#]: via: (https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity) -[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen) +[#]: collector: "lujun9972" +[#]: translator: "qfzy1233" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " +[#]: subject: "Top 5 Linux Distributions for Productivity" +[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" +[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" -Top 5 Linux Distributions for Productivity +五个最具生产力的 Linux 发行版 ====== ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) +必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 + I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. +然而,这并不意味着 + That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: @@ -149,22 +153,22 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv [b]: https://github.com/lujun9972 [1]: https://www.ubuntu.com/ [2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w (GNOME Clipboard) +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" [4]: /licenses/category/used-permission [5]: https://labs.fedoraproject.org/en/design-suite/ [6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials [7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH (Fedora Design Suite Favorites) +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" [9]: https://system76.com/ [10]: https://system76.com/pop [11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD (Pop!_OS) +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" [13]: https://www.debian.org/ [14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 (Debian) +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" [16]: https://en.opensuse.org/openSUSE:Education-Li-f-e [17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT (Education) +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" [19]: https://en.opensuse.org/Portal:KIWI-LTSP [20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start [21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 3f6a1fc6a49badcceb8f406046e2901f36974e4c Mon Sep 17 00:00:00 2001 From: LazyWolf Lin Date: Tue, 18 Jun 2019 15:08:16 +0800 Subject: [PATCH 008/336] Translating Looking into Linux modules. --- .../20190501 Looking into Linux modules.md | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 translated/tech/20190501 Looking into Linux modules.md diff --git a/translated/tech/20190501 Looking into Linux modules.md b/translated/tech/20190501 Looking into Linux modules.md new file mode 100644 index 0000000000..e059000287 --- /dev/null +++ b/translated/tech/20190501 Looking into Linux modules.md @@ -0,0 +1,219 @@ +[#]: collector: (lujun9972) +[#]: translator: (LazyWolfLin) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Looking into Linux modules) +[#]: via: (https://www.networkworld.com/article/3391362/looking-into-linux-modules.html#tk.rss_all) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +深入学习 Linux 内核模块 +====== +The lsmod command can tell you which kernel modules are currently loaded on your system, along with some interesting details about their use. +![Rob Oo \(CC BY 2.0\)][1] + +### 什么是 Linux 内核模块? + +Kernel modules are chunks of code that are loaded and unloaded into the kernel as needed, thus extending the functionality of the kernel without requiring a reboot. In fact, unless users inquire about modules using commands like **lsmod** , they won't likely know that anything has changed. + +One important thing to understand is that there are _lots_ of modules that will be in use on your Linux system at all times and that a lot of details are available if you're tempted to dive into the details. + +One of the prime ways that lsmod is used is to examine modules when a system isn't working properly. However, most of the time, modules load as needed and users don't need to be aware of how they are working. + +**[ Also see:[Must-know Linux Commands][2] ]** + +### 列出内核模块 + +The easiest way to list modules is with the **lsmod** command. While this command provides a lot of detail, this is the most user-friendly output. + +``` +$ lsmod +Module Size Used by +snd_hda_codec_realtek 114688 1 +snd_hda_codec_generic 77824 1 snd_hda_codec_realtek +ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek +snd_hda_codec_hdmi 53248 1 +snd_hda_intel 40960 2 +snd_hda_codec 131072 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel + ,snd_hda_codec_realtek +snd_hda_core 86016 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel + ,snd_hda_codec,snd_hda_codec_realtek +snd_hwdep 20480 1 snd_hda_codec +snd_pcm 102400 4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda + _core +snd_seq_midi 20480 0 +snd_seq_midi_event 16384 1 snd_seq_midi +dcdbas 20480 0 +snd_rawmidi 36864 1 snd_seq_midi +snd_seq 69632 2 snd_seq_midi,snd_seq_midi_event +coretemp 20480 0 +snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi +snd_timer 36864 2 snd_seq,snd_pcm +kvm_intel 241664 0 +kvm 626688 1 kvm_intel +radeon 1454080 10 +irqbypass 16384 1 kvm +joydev 24576 0 +input_leds 16384 0 +ttm 102400 1 radeon +drm_kms_helper 180224 1 radeon +drm 475136 13 drm_kms_helper,radeon,ttm +snd 81920 15 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda + _codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd + _hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi +i2c_algo_bit 16384 1 radeon +fb_sys_fops 16384 1 drm_kms_helper +syscopyarea 16384 1 drm_kms_helper +serio_raw 20480 0 +sysfillrect 16384 1 drm_kms_helper +sysimgblt 16384 1 drm_kms_helper +soundcore 16384 1 snd +mac_hid 16384 0 +sch_fq_codel 20480 2 +parport_pc 40960 0 +ppdev 24576 0 +lp 20480 0 +parport 53248 3 parport_pc,lp,ppdev +ip_tables 28672 0 +x_tables 40960 1 ip_tables +autofs4 45056 2 +raid10 57344 0 +raid456 155648 0 +async_raid6_recov 24576 1 raid456 +async_memcpy 20480 2 raid456,async_raid6_recov +async_pq 24576 2 raid456,async_raid6_recov +async_xor 20480 3 async_pq,raid456,async_raid6_recov +async_tx 20480 5 async_pq,async_memcpy,async_xor,raid456,async_raid6_re + cov +xor 24576 1 async_xor +raid6_pq 114688 3 async_pq,raid456,async_raid6_recov +libcrc32c 16384 1 raid456 +raid1 45056 0 +raid0 24576 0 +multipath 20480 0 +linear 20480 0 +hid_generic 16384 0 +psmouse 151552 0 +i2c_i801 32768 0 +pata_acpi 16384 0 +lpc_ich 24576 0 +usbhid 53248 0 +hid 126976 2 usbhid,hid_generic +e1000e 245760 0 +floppy 81920 0 +``` + +In the output above: + + * "Module" shows the name of each module + * "Size" shows the module size (not how much memory it is using) + * "Used by" shows each module's usage count and the referring modules + + + +Clearly, that's a _lot_ of modules. The number of modules loaded will depend on your system and distribution and what's running. We can count them like this: + +``` +$ lsmod | wc -l +67 +``` + +To see the number of modules available on the system (not just running), try this command: + +``` +$ modprobe -c | wc -l +41272 +``` + +### 与内核模块相关的其他命令 + +Linux provides several commands for listing, loading and unloading, examining, and checking the status of modules. + + * depmod -- generates modules.dep and map files + * insmod -- a simple program to insert a module into the Linux Kernel + * lsmod -- show the status of modules in the Linux Kernel + * modinfo -- show information about a Linux Kernel module + * modprobe -- add and remove modules from the Linux Kernel + * rmmod -- a simple program to remove a module from the Linux Kernel + + + +### 列出内置的内核模块 + +As mentioned above, the **lsmod** command is the most convenient command for listing modules. There are, however, other ways to examine them. The modules.builtin file lists all modules that are built into the kernel and is used by modprobe when trying to load one of these modules. Note that **$(uname -r)** in the commands below provides the name of the kernel release. + +``` +$ more /lib/modules/$(uname -r)/modules.builtin | head -10 +kernel/arch/x86/crypto/crc32c-intel.ko +kernel/arch/x86/events/intel/intel-uncore.ko +kernel/arch/x86/platform/intel/iosf_mbi.ko +kernel/mm/zpool.ko +kernel/mm/zbud.ko +kernel/mm/zsmalloc.ko +kernel/fs/binfmt_script.ko +kernel/fs/mbcache.ko +kernel/fs/configfs/configfs.ko +kernel/fs/crypto/fscrypto.ko +``` + +You can get some additional detail on a module by using the **modinfo** command, though nothing that qualifies as an easy explanation of what service the module provides. The omitted details from the output below include a lengthy signature. + +``` +$ modinfo floppy | head -16 +filename: /lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko +alias: block-major-2-* +license: GPL +author: Alain L. Knaff +srcversion: EBEAA26742DF61790588FD9 +alias: acpi*:PNP0700:* +alias: pnp:dPNP0700* +depends: +retpoline: Y +intree: Y +name: floppy +vermagic: 5.0.0-13-generic SMP mod_unload +sig_id: PKCS#7 +signer: +sig_key: +sig_hashalgo: md4 +``` + +You can load or unload a module using the **modprobe** command. Using a command like the one below, you can locate the kernel object associated with a particular module: + +``` +$ find /lib/modules/$(uname -r) -name floppy* +/lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko +``` + +If you needed to load the module, you could use a command like this one: + +``` +$ sudo modprobe floppy +``` + +### 总结一下 + +Clearly the loading and unloading of modules is a big deal. It makes Linux systems considerably more flexible and efficient than if they ran with a one-size-fits-all kernel. It also means you can make significant changes — including adding hardware — without rebooting. + +**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][3] ]** + +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/3391362/looking-into-linux-modules.html#tk.rss_all + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[LazyWolfLin](https://github.com/LazyWolfLin) +校对:[校对者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://images.idgesg.net/images/article/2019/04/modules-100794941-large.jpg +[2]: https://www.networkworld.com/article/3391029/must-know-linux-commands.html +[3]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua +[4]: https://www.facebook.com/NetworkWorld/ +[5]: https://www.linkedin.com/company/network-world From 47ab8854cc64e0ddb076b3b4c21b4c8d1424f95f Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:22:11 +0800 Subject: [PATCH 009/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190619=20Codeth?= =?UTF-8?q?ink=20open=20sources=20part=20of=20onboarding=20process=20sourc?= =?UTF-8?q?es/tech/20190619=20Codethink=20open=20sources=20part=20of=20onb?= =?UTF-8?q?oarding=20process.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...open sources part of onboarding process.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sources/tech/20190619 Codethink open sources part of onboarding process.md diff --git a/sources/tech/20190619 Codethink open sources part of onboarding process.md b/sources/tech/20190619 Codethink open sources part of onboarding process.md new file mode 100644 index 0000000000..537ded948b --- /dev/null +++ b/sources/tech/20190619 Codethink open sources part of onboarding process.md @@ -0,0 +1,42 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Codethink open sources part of onboarding process) +[#]: via: (https://opensource.com/article/19/6/codethink-onboarding-process) +[#]: author: (Laurence Urhegyi https://opensource.com/users/laurence-urhegyi) + +Codethink open sources part of onboarding process +====== +In other words, how to Git going in FOSS. +![Teacher or learner?][1] + +Here at [Codethink][2], we’ve recently focused our energy into enhancing the onboarding process we use for all new starters at the company. As we grow steadily in size, it’s important that we have a well-defined approach to both welcoming new employees into the company, and introducing them to the organization’s culture. + +As part of this overall onboarding effort, we’ve created [_How to Git going in FOSS_][3]: an introductory guide to the world of free and open source software (FOSS), and some of the common technologies, practices, and principles associated with free and open source software. + +This guide was initially aimed at work experience students and summer interns. However, the document is in fact equally applicable to anyone who is new to free and open source software, no matter their prior experience in software or IT in general. _How to Git going in FOSS_ is hosted on GitLab and consists of several repositories, each designed to be a self-guided walk through. + +Our guide begins with a general introduction to FOSS, including explanations of the history of GNU/Linux, how to use [Git][4] (as well as Git hosting services such as GitLab), and how to use a text editor. The document then moves on to exercises that show the reader how to implement some of the things they’ve just learned. + +_How to Git going in FOSS_ is fully public and available for anyone to try. If you’re new to FOSS or know someone who is, then please have a read-through, and see what you think. If you have any feedback, feel free to raise an issue on GitLab. And, of course, we also welcome contributions. We’re keen to keep improving the guide however possible. One future improvement we plan to make is an additional exercise that is more complex than the existing two, such as potentially introducing the reader to [Continuous Integration][5]. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/codethink-onboarding-process + +作者:[Laurence Urhegyi][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/laurence-urhegyi +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-lead-teacher-learner.png?itok=rMJqBN5G (Teacher or learner?) +[2]: https://www.codethink.co.uk/about.html +[3]: https://gitlab.com/ct-starter-guide +[4]: https://git-scm.com +[5]: https://en.wikipedia.org/wiki/Continuous_integration From 4b3fe220de1dfe261584c203a127a55da79a2cf2 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:22:36 +0800 Subject: [PATCH 010/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190619=20Leadin?= =?UTF-8?q?g=20in=20the=20Python=20community=20sources/tech/20190619=20Lea?= =?UTF-8?q?ding=20in=20the=20Python=20community.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0190619 Leading in the Python community.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 sources/tech/20190619 Leading in the Python community.md diff --git a/sources/tech/20190619 Leading in the Python community.md b/sources/tech/20190619 Leading in the Python community.md new file mode 100644 index 0000000000..98fa8c5dba --- /dev/null +++ b/sources/tech/20190619 Leading in the Python community.md @@ -0,0 +1,68 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Leading in the Python community) +[#]: via: (https://opensource.com/article/19/6/naomi-ceder-python-software-foundation) +[#]: author: (Don Watkins https://opensource.com/users/don-watkins) + +Leading in the Python community +====== +A chat with Naomi Ceder, current Python Software Foundation board chair. +![Hands together around the word trust][1] + +Like many other leaders in the open source software world, [Naomi Ceder][2], board chair of the [Python Software Foundation][3] (PSF), took a non-traditional path into the Python world. As the title of her 2017 [keynote][4] at PyCon España explains, she came for the language and stayed for the community. In a recent conversation with her, she shared how she became a Python community leader and offered some insight into what makes Python special. + +### From teaching to coding + +Naomi began her career in the Classics; she earned a PhD in Latin and Ancient Greek with a minor in Indo-European Linguistics, as she says, "several decades ago." While teaching Latin at a private school, she began tinkering with computers, learning to code and to take machines apart to do upgrades and repairs. She started working with open source software in 1995 with [Yggdrasil Linux][5] and helped launch the Fort Wayne, Indiana, [Linux User Group][6]. + +A teacher at heart, Naomi believes teaching coding in middle and high school is essential because, by the time most people get to college, they are already convinced that coding and technology careers are not for them. Starting earlier can help increase the supply of technical talent and the diversity and breadth of experience in our talent pools to meet the industry's needs, she says. + +Somewhere around 2001, she decided to switch from studying human languages to researching computer languages, as well as teaching computer classes and managing the school's IT. Her interest in Python was sparked at Linux World 2001 when she attended PSF president Guido Van Rossum's day-long tutorial on Python. Back then, it was an obscure language, but she liked it so well that she began teaching Python and using it to track student records and do sysadmin duties at her school. + +### Leading the Python community + +Naomi says, "community is the key factor behind Python's success. The whole idea behind open source software is sharing. Few people really want to just sit alone, writing code, and staring at their screens. The real satisfaction comes in trading ideas and building something with others." + +She started giving talks at the first [PyCon][7] in 2003 has been a consistent attendee and leader since then. She has organized birds-of-a-feather sessions and founded the PyCon and PyCon UK poster sessions, the education summit, and the Spanish language track, [Charlas][8]. + +She is also the author of _[The Quick Python Book][9]_ and co-founded [Trans*Code][10], "the UK's only hack event series focused solely on drawing attention to transgender issues and opportunities." Naomi says, "as technology offers growing opportunities, being sure these opportunities are equally accessible to traditionally marginalized groups grows ever more important." + +### Contributing through the PSF + +As board chair of the PSF, Naomi contributes actively to the organization's work to support the Python language and the people working with it. In addition to sponsoring PyCon, the PSF funds grants for meetups, conferences, and workshops around the world. In 2018, the organization gave almost $335,000 in grants, most of them in the $500 to $5,000 range. + +The PSF's short-term goals are to become a sustainable, stable, and mature non-profit organization with professional staff. Its long-term goals include developing resources that offer meaningful support to development efforts for Python and expanding the organization's support for educational efforts in Python around the world. + +This work depends on having financial support from the community. Naomi says the PSF's "largest current source of funding is PyCon. To ensure the PSF's sustainability, we are also focusing on [sponsorships][11] from companies using Python, which is our fastest-growing segment." Supporting memberships are $99 per year, and [donations and fundraisers][12] also help sustain the organization's work. + +You can learn much more about the PSF's work in its [Annual Report][13]. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/naomi-ceder-python-software-foundation + +作者:[Don Watkins][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/don-watkins +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BIZ_HighTrust_1110_A.png?itok=EF5Tmcdk (Hands together around the word trust) +[2]: https://www.naomiceder.tech/pages/about/ +[3]: https://www.python.org/psf/ +[4]: https://www.youtube.com/watch?v=ayQK6app_wA +[5]: https://en.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X +[6]: http://fortwaynelinux.org/about +[7]: http://pycon.org/ +[8]: https://twitter.com/pyconcharlas?lang=en +[9]: https://www.manning.com/books/the-quick-python-book-third-edition +[10]: https://www.trans.tech/ +[11]: https://www.python.org/psf/sponsorship/ +[12]: https://www.python.org/psf/donations/ +[13]: https://www.python.org/psf/annual-report/2019/ From cef7af871e2e2dc5e98ea26cfc1a7473238a33a0 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:22:47 +0800 Subject: [PATCH 011/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190618=20How=20?= =?UTF-8?q?to=20use=20MapTool=20to=20build=20an=20interactive=20dungeon=20?= =?UTF-8?q?RPG=20sources/tech/20190618=20How=20to=20use=20MapTool=20to=20b?= =?UTF-8?q?uild=20an=20interactive=20dungeon=20RPG.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ool to build an interactive dungeon RPG.md | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 sources/tech/20190618 How to use MapTool to build an interactive dungeon RPG.md diff --git a/sources/tech/20190618 How to use MapTool to build an interactive dungeon RPG.md b/sources/tech/20190618 How to use MapTool to build an interactive dungeon RPG.md new file mode 100644 index 0000000000..94aaf47de2 --- /dev/null +++ b/sources/tech/20190618 How to use MapTool to build an interactive dungeon RPG.md @@ -0,0 +1,231 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use MapTool to build an interactive dungeon RPG) +[#]: via: (https://opensource.com/article/19/6/how-use-maptools) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +How to use MapTool to build an interactive dungeon RPG +====== +By using MapTool, most of a game master's work is done well before a +role-playing game begins. +![][1] + +In my previous article on MapTool, I explained how to download, install, and configure your own private, [open source virtual tabletop][2] so you and your friends can play a role-playing game (RPG) together. [MapTool][3] is a complex application with lots of features, and this article demonstrates how a game master (GM) can make the most of it. + +### Update JavaFX + +MapTool requires JavaFX, but Java maintainers recently stopped bundling it in Java downloads. This means that, even if you have Java installed, you might not have JavaFX installed. + +Some Linux distributions have a JavaFX package available, so if you try to run MapTool and get an error about JavaFX, download the latest self-contained version: + + * For [Ubuntu and other Debian-based systems][4] + * For [Fedora and Red Hat-based systems][5] + + + +### Build a campaign + +The top-level file in MapTool is a campaign (.cmpgn) file. A campaign can contain all of the maps required by the game you're running. As your players progress through the campaign, everyone changes to the appropriate map and plays. + +For that to go smoothly, you must do a little prep work. + +First, you need the digital equivalents of miniatures: _tokens_ in MapTool terminology. Tokens are available from various sites, but the most prolific is [immortalnights.com/tokensite][6]. If you're still just trying out virtual tabletops and aren't ready to invest in digital art yet, you can get a stunning collection of starter tokens from immortalnights.com for $0. + +You can add starter content to MapTool quickly and easily using its built-in resource importer. Go to the **File** menu and select **Add Resource to Library**. + +In the **Add Resource to Library** dialogue box, select the RPTools tab, located at the bottom-left. This lists all the free art packs available from the RPTools server, tokens and maps alike. Click to download and import. + +![Add Resource to Library dialogue][7] + +You can import assets you already have on your computer by selecting files from the file system, using the same dialogue box. + +MapTool resources appear in the Library panel. If your MapTool window has no Library panel, select **Library** in the **Window** menu to add one. + +### Gather your maps + +The next step in preparing for your game is to gather maps. Depending on what you're playing, that might mean you need to draw your maps, purchase a map pack, or just open a map bundled with a game module. If all you need is a generic dungeon, you can also download free maps from within MapTool's **Add Resource to Library**. + +If you have a set of maps you intend to use often, you can import them as resources. If you are building a campaign you intend to use just once, you can quickly add any PNG or JPEG file as a **New Map** in the **Map** menu. + +![Creating a new map][8] + +Set the **Background** to a texture that roughly matches your map or to a neutral color. + +Set the **Map** to your map graphics file. + +Give your new map a unique **Name**. The map name is visible to your players, so keep it free of spoilers. + +To switch between maps, click the **Select Map** button in the top-right corner of the MapTool window, and choose the map name in the drop-down menu that appears. + +![Select a map][9] + +Before you let your players loose on your map, you still have some important prep work to do. + +### Adjust the grid size + +Since most RPGs govern how far players can move during their turn, especially during combat, game maps are designed to a specific scale. The most common scale is one map square for every five feet. Most maps you download already have a grid drawn on them; if you're designing a map, you should draw on graph paper to keep your scale consistent. Whether your map graphic has a grid or not, MapTool doesn't know about it, but you can adjust the digital grid overlay so that your player tokens are constrained into squares along the grid. + +MapTool doesn't show the grid by default, so go to the **Map** menu and select **Adjust grid**. This displays MapTool's grid lines, and your goal is to make MapTool's grid line up with the grid drawn onto your map graphic. If your map graphic doesn't have a grid, it may indicate its scale; a common scale is one inch per five feet, and you can usually assume 72 pixels is one inch (on a 72 DPI screen). While adjusting the grid, you can change the color of the grid lines for your own reference. Set the cell size in pixels. Click and drag to align MapTool's grid to your map's grid. + +![Adjusting the grid][10] + +If your map has no grid and you want the grid to remain visible after you adjust it, go to the **View** menu and select **Show Grid**. + +### Add players and NPCs + +To add a player character (PC), non-player character (NPC), or monster to your map, find an appropriate token in your **Library** panel, then drag and drop one onto your map. In the **New Token** dialogue box that appears, give the token a name and set it as an NPC or a PC, then click the OK button. + +![Adding a player character to the map][11] + +Once a token is on the map, try moving it to see how its movements are constrained to the grid you've designated. Make sure **Interaction Tools** , located in the toolbar just under the **File** menu, is selected. + +![A token moving within the grid][12] + +Each token added to a map has its own set of properties, including the direction it's facing, a light source, player ownership, conditions (such as incapacitated, prone, dead, and so on), and even class attributes. You can set as many or as few of these as you want, but at the very least you should right-click on each token and assign it ownership. Your players must be logged into your MapTool server for tokens to be assigned to them, but you can assign yourself NPCs and monsters in advance. + +The right-click menu provides access to all important token-related functions, including setting which direction it's facing, setting a health bar and health value, a copy and paste function (enabling you and your players to move tokens from map to map), and much more. + +![The token menu unlocks great, arcane power][13] + +### Activate fog-of-war effects + +If you're using maps exclusively to coordinate combat, you may not need a fog-of-war effect. But if you're using maps to help your players visualize a dungeon they're exploring, you probably don't want them to see the whole map before they've made significant moves, like opening locked doors or braving a decaying bridge over a pit of hot lava. + +The fog-of-war effect is an invaluable tool for the GM, and it's essential to set it up early so that your players don't accidentally get a sneak peek at all the horrors your dungeon holds for them. + +To activate fog-of-war on a map, go to the **Map** and select **Fog-of-War**. This blackens the entire screen for your players, so your next step is to reveal some portion of the map so that your players aren't faced with total darkness when they switch to the map. Fog-of-war is a subtractive process; it starts 100% dark, and as the players progress, you reveal new portions of the map using fog-of-war drawing tools available in the **FOG** toolbar, just under the **View** menu. + +You can reveal sections of the map in rectangle blocks, ovals, polygons, diamonds, and freehand shapes. Once you've selected the shape, click and release on the map, drag to define an area to reveal, and then click again. + +![Fog-of-war as experienced by a playe][14] + +If you're accidentally overzealous with what you reveal, you have two ways to reverse what you've done: You can manually draw new fog, or you can reset all fog. The quicker method is to reset all fog with **Ctrl+Shift+A**. The more elegant solution is to press **Shift** , then click and release, draw an area of fog, and then click again. Instead of exposing an area of the map, it restores fog. + +### Add lighting effects + +Fog-of-war mimics the natural phenomenon of not being able to see areas of the world other than where you are, but lighting effects mimic the visibility player characters might experience in light and dark. For games like Pathfinder and Dungeons and Dragons 5e, visibility is governed by light sources matched against light conditions. + +First, activate lighting by clicking on the **Map** menu, selecting **Vision** , and then choosing either Daylight or Night. Now lighting effects are active, but none of your players have light sources, so they have no visibility. + +To assign light sources to players, right-click on the appropriate token and choose **Light Source**. Definitions exist for the D20 system (candle, lantern, torch, and so on) and in generic measurements. + +With lighting effects active, players can expose portions of fog-of-war as their light sources get closer to unexposed fog. That's a great effect, but it doesn't make much sense when players can illuminate the next room right through a solid wall. To prevent that, you have to help MapTool differentiate between empty space and solid objects. + +#### Define solid objects + +Defining walls and other solid objects through which light should not pass is easier than it sounds. MapTool's **Vision Blocking Layer** (VBL) tools are basic and built to minimize prep time. There are several basic shapes available, including a basic rectangle and an oval. Draw these shapes over all the solid walls, doors, pillars, and other obstructions, and you have instant rudimentary physics. + +![Setting up obstructions][15] + +Now your players can move around the map with light sources without seeing what lurks in the shadows of a nearby pillar or behind an innocent-looking door… until it's too late! + +![Lighting effects][16] + +### Track initiative + +Eventually, your players are going to stumble on something that wants to kill them, and that means combat. In most RPG systems, combat is played in rounds, with the order of turns decided by an _initiative_ roll. During combat, each player (in order of their initiative roll, from greatest to lowest) tries to defeat their foe, ideally dealing enough damage until their foe is left with no health points (HP). It's usually the most paperwork a GM has to do during a game because it involves tracking whose turn it is, how much damage each monster has taken, what amount of damage each monster's attack deals, what special abilities each monster has, and more. Luckily, MapTool can help with that—and better yet, you can extend it with a custom macro to do even more. + +MapTool's basic initiative panel helps you keep track of whose turn it is and how many rounds have transpired so far. To view the initiative panel, go to the **Window** menu and select **Initiative**. + +To add characters to the initiative order, right-click a token and select **Add To Initiative**. As you add each, the token and its label appear in the initiative panel in the order that you add them. If you make a mistake or someone holds their action and changes the initiative order, click and drag the tokens in the initiative panel to reorder them. + +During combat, click the **Next** button in the top-left of the initiative panel to progress to the next character. As long as you use the **Next** button, the **Round** counter increments, helping you track how many rounds the combat has lasted (which is helpful when you have spells or effects that last only for a specific number of rounds). + +Tracking combat order is helpful, but it's even better to track health points. Your players should be tracking their own health, but since everyone's staring at the same screen, it doesn't hurt to track it publicly in one place. An HP property and a graphical health bar (which you can activate) are assigned to each token, so that's all the infrastructure you need to track HP in MapTool, but doing it manually takes a lot of clicking around. Since MapTool can be extended with macros, it's trivial to bring all these components together for a smooth GM experience. + +The first step is to activate graphical health bars for your tokens. To do this, right-click on each token and select **Edit**. In the **Edit Token** dialog box, click on the **State** tab and deselect the radio button next to **Hide**. + +![Don't hide the health bar][17] + +Do this for each token whose health you want to expose. + +#### Write a macro + +Macros have access to all token properties, so each token's HP can be tracked by reading and writing whatever value exists in the token's HP property. The graphical health bar, however, bases its state on a percentage, so for the health bars to be meaningful, your tokens also must have some value that represents 100% of its HP. + +Go to the **Edit** menu and select **Campaign Properties** to globally add properties to tokens. In the **Campaign Properties** window, select the **Token Properties** tab and then click the **Basic** category in the left column. Under ***@HP** , add ***@MaxHP** and click the **Update** button. Click the **OK** button to close the window. + +![Adding a property to all tokens][18] + +Now right-click a token and select **Edit**. In the **Edit Token** window, select the **State** tab and enter a value for the token's maximum HP (from the player's character sheet). + +To create a new macro, reveal the **Campaign** panel in the **Window** menu. + +In the **Campaign** panel, right-click and select **Add New Macro**. A button labeled **New** appears in the panel. Right-click on the **New** button and select **Edit**. + +Enter this code in the macro editor window: + + +``` +[h:status = input( +"hpAmount|0|Points", +"hpType|Damage,Healing|Damage or heal?|RADIO|SELECT=0")] +[h:abort(status)] + +[if(hpType == 0),CODE: { +[h:HP = HP - hpAmount] +[h:bar.Health = HP / MaxHP] +[r:token.name] takes [r:hpAmount] damage.}; +{ +[h:diff = MaxHP - HP] +[h:HP = min(HP+hpAmount, MaxHP)] +[h:bar.Health = HP / MaxHP] +[r:token.name] gains [r:min(diff,hpAmount)] HP. };] +``` + +You can find full documentation of functions available in MapTool macros and their syntax from the [RPTools wiki][19]. + +In the **Details** tab, enable **Include Label** and **Apply to Selected Tokens** , and leave all other values at their default. Give your macro a better name than **New** , such as **HPTracker** , then click **Apply** and **OK**. + +![Macro editing][20] + +Your campaign now has a new ability! + +Select a token and click your **HPTracker** button. Enter the number of points to deduct from the token, click **OK** , and watch the health bar change to reflect the token's new state. + +It may seem like a simple change, but in the heat of battle, this is a GM's greatest weapon. + +### During the game + +There's obviously a lot you can do with MapTool, but with a little prep work, most of your work is done well before you start playing. You can even create a template campaign by creating an empty campaign with only the macros and settings you want, so all you have to do is import maps and stat out tokens. + +During the game, your workflow is mostly about revealing areas from fog-of-war and managing combat. The players can manage their own tokens, and your prep work takes care of everything else. + +MapTool makes digital gaming easy and fun, and most importantly, it keeps it open source and self-contained. Level-up today by learning MapTool and using it for your games. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/how-use-maptools + +作者:[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/dice-keys_0.jpg?itok=PGEs3ZXa +[2]: https://opensource.com/article/18/5/maptool +[3]: https://github.com/RPTools/maptool +[4]: https://github.com/RPTools/maptool/releases +[5]: https://klaatu.fedorapeople.org/RPTools/maptool/ +[6]: https://immortalnights.com/tokensite/ +[7]: https://opensource.com/sites/default/files/uploads/maptool-resources.png (Add Resource to Library dialogue) +[8]: https://opensource.com/sites/default/files/uploads/map-properties.png (Creating a new map) +[9]: https://opensource.com/sites/default/files/uploads/map-select.jpg (Select a map) +[10]: https://opensource.com/sites/default/files/uploads/grid-adjust.jpg (Adjusting the grid) +[11]: https://opensource.com/sites/default/files/uploads/token-new.png (Adding a player character to the map) +[12]: https://opensource.com/sites/default/files/uploads/token-move.jpg (A token moving within the grid) +[13]: https://opensource.com/sites/default/files/uploads/token-menu.jpg (The token menu unlocks great, arcane power) +[14]: https://opensource.com/sites/default/files/uploads/fog-of-war.jpg (Fog-of-war as experienced by a playe) +[15]: https://opensource.com/sites/default/files/uploads/vbl.jpg (Setting up obstructions) +[16]: https://opensource.com/sites/default/files/uploads/map-light.jpg (Lighting effects) +[17]: https://opensource.com/sites/default/files/uploads/token-edit.jpg (Don't hide the health bar) +[18]: https://opensource.com/sites/default/files/uploads/campaign-properties.jpg (Adding a property to all tokens) +[19]: https://lmwcs.com/rptools/wiki/Main_Page +[20]: https://opensource.com/sites/default/files/uploads/macro-detail.jpg (Macro editing) From 4ef28a17d95a30ea0ead82ceb3d3273e7ddc5b44 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:22:59 +0800 Subject: [PATCH 012/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190618=20A=20be?= =?UTF-8?q?ginner's=20guide=20to=20Linux=20permissions=20sources/tech/2019?= =?UTF-8?q?0618=20A=20beginner-s=20guide=20to=20Linux=20permissions.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...A beginner-s guide to Linux permissions.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 sources/tech/20190618 A beginner-s guide to Linux permissions.md diff --git a/sources/tech/20190618 A beginner-s guide to Linux permissions.md b/sources/tech/20190618 A beginner-s guide to Linux permissions.md new file mode 100644 index 0000000000..470545c291 --- /dev/null +++ b/sources/tech/20190618 A beginner-s guide to Linux permissions.md @@ -0,0 +1,118 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (A beginner's guide to Linux permissions) +[#]: via: (https://opensource.com/article/19/6/understanding-linux-permissions) +[#]: author: (Bryant Son https://opensource.com/users/brson/users/greg-p/users/tj) + +A beginner's guide to Linux permissions +====== +Linux security permissions designate who can do what with a file or +directory. +![Hand putting a Linux file folder into a drawer][1] + +One of the main benefits of Linux systems is that they are known to be less prone to security vulnerabilities and exploits than other systems. Linux definitely gives users more flexibility and granular controls over its file systems' security permissions. This may imply that it's critical for Linux users to understand security permissions. That isn't necessarily true, but it's still wise for beginning users to understand the basics of Linux permissions. + +### View Linux security permissions + +To start learning about Linux permissions, imagine we have a newly created directory called **PermissionDemo**. Run **cd** inside the directory and use the **ls -l** command to view the Linux security permissions. If you want to sort them by time modified, add the **-t** option. + + +``` +`ls -lt` +``` + +Since there are no files inside this new directory, this command returns nothing. + +![No output from ls -l command][2] + +To learn more about the **ls** option, access its man page by entering **man ls** on the command line. + +![ls man page][3] + +Now, let's create two files: **cat.txt** and **dog.txt** with empty content; this is easy to do using the **touch** command. Let's also create an empty directory called **Pets** with the **mkdir** command. We can use the **ls -l** command again to see the permissions for these new files. + +![Creating new files and directory][4] + +We need to pay attention to two sections of output from this command. + +### Who has permission? + +The first thing to examine indicates _who_ has permission to access the file/directory. Note the section highlighted in the red box below. The first column refers to the _user_ who has access, while the second column refers to the _group_ that has access. + +![Output from -ls command][5] + +There are three main types of users: **user** , **group** ; and **other** (essentially neither a user nor a group). There is one more: **all** , which means practically everyone. + +![User types][6] + +Because we are using **root** as the user, we can access any file or directory because **root** is the superuser. However, this is generally not the case, and you will probably be restricted to your username. A list of all users is stored in the **/etc/passwd** file. + +![/etc/passwd file][7] + +Groups are maintained in the **/etc/group** file. + +![/etc/passwd file][8] + +### What permissions do they have? + +The other section of the output from **ls -l** that we need to pay attention to relates to enforcing permissions. Above, we confirmed that the owner and group permissions for the files dog.txt and cat.txt and the directory Pets we created belong to the **root** account. We can use that information about who owns what to enforce permissions for the different user ownership types, as highlighted in the red box below. + +![Enforcing permissions for different user ownership types][9] + +We can dissect each line into five bits of information. The first part indicates whether it is a file or a directory; files are labeled with a **-** (hyphen), and directories are labeled with **d**. The next three parts refer to permissions for **user** , **group** , and **other** , respectively. The last part is a flag for the [**access-control list**][10] (ACL), a list of permissions for an object. + +![Different Linux permissions][11] + +Linux permission levels can be identified with letters or numbers. There are three privilege types: + + * **read** : r or 4 + * **write:** w or 2 + * **executable:** e or 1 + + + +![Privilege types][12] + +The presence of each letter symbol ( **r** , **w** , or **x** ) means that the permission exists, while **-** indicates it does not. In the example below, the file is readable and writeable by the owner, only readable if the user belongs to the group, and readable and executable by anyone else. Converted to numeric notation, this would be 645 (see the image below for an explanation of how this is calculated). + +![Permission type example][13] + +Here are a few more examples: + +![Permission type examples][14] + +Test your knowledge by going through the following exercises. + +![Permission type examples][15] + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/understanding-linux-permissions + +作者:[Bryant Son][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/brson/users/greg-p/users/tj +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) +[2]: https://opensource.com/sites/default/files/uploads/1_3.jpg (No output from ls -l command) +[3]: https://opensource.com/sites/default/files/uploads/1_man.jpg (ls man page) +[4]: https://opensource.com/sites/default/files/uploads/2_6.jpg (Creating new files and directory) +[5]: https://opensource.com/sites/default/files/uploads/3_2.jpg (Output from -ls command) +[6]: https://opensource.com/sites/default/files/uploads/4_0.jpg (User types) +[7]: https://opensource.com/sites/default/files/uploads/linuxpermissions_4_passwd.jpg (/etc/passwd file) +[8]: https://opensource.com/sites/default/files/uploads/linuxpermissions_4_group.jpg (/etc/passwd file) +[9]: https://opensource.com/sites/default/files/uploads/linuxpermissions_5.jpg (Enforcing permissions for different user ownership types) +[10]: https://en.wikipedia.org/wiki/Access-control_list +[11]: https://opensource.com/sites/default/files/uploads/linuxpermissions_6.jpg (Different Linux permissions) +[12]: https://opensource.com/sites/default/files/uploads/linuxpermissions_7.jpg (Privilege types) +[13]: https://opensource.com/sites/default/files/uploads/linuxpermissions_8.jpg (Permission type example) +[14]: https://opensource.com/sites/default/files/uploads/linuxpermissions_9.jpg (Permission type examples) +[15]: https://opensource.com/sites/default/files/uploads/linuxpermissions_10.jpg (Permission type examples) From c8f0dcd1ac2779a020f33185f0e34de102a6589b Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:23:10 +0800 Subject: [PATCH 013/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190618=20Why=20?= =?UTF-8?q?your=20workplace=20arguments=20aren't=20as=20effective=20as=20y?= =?UTF-8?q?ou'd=20like=20sources/tech/20190618=20Why=20your=20workplace=20?= =?UTF-8?q?arguments=20aren-t=20as=20effective=20as=20you-d=20like.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ments aren-t as effective as you-d like.md | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md diff --git a/sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md b/sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md new file mode 100644 index 0000000000..54a0cca26f --- /dev/null +++ b/sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md @@ -0,0 +1,144 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Why your workplace arguments aren't as effective as you'd like) +[#]: via: (https://opensource.com/open-organization/19/6/barriers-productive-arguments) +[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland/users/ron-mcfarland) + +Why your workplace arguments aren't as effective as you'd like +====== +Open organizations rely on open conversations. These common barriers to +productive argument often get in the way. +![Arrows pointing different directions][1] + +Transparent, frank, and often contentious arguments are part of life in an open organization. But how can we be sure those conversations are _productive_ —not _destructive_? + +This is the second installment of a two-part series on how to argue and actually achieve something. In the [first article][2], I mentioned what arguments are (and are not), according to author Sinnott-Armstrong in his book _Think Again: How to Reason and Argue._ I also offered some suggestions for making arguments as productive as possible. + +In this article, I'll examine three barriers to productive arguments that Sinnott-Armstrong elaborates in his book: incivility, polarization, and language issues. Finally, I'll explain his suggestions for addressing those barriers. + +### Incivility + +"Incivility" has become a social concern in recent years. Consider this: As a tactic in arguments, incivility _can_ have an effect in certain situations—and that's why it's a common strategy. Sinnott-Armstrong notes that incivility: + + * **Attracts attention:** Incivility draws people's attention in one direction, sometimes to misdirect attention from or outright obscure other issues. It redirects people's attention to shocking statements. Incivility, exaggeration, and extremism can increase the size of an audience. + + * **Energizes:** Sinnott-Armstrong writes that seeing someone being uncivil on a topic of interest can generate energy from a state of powerlessness. + + * **Stimulates memory:** Forgetting shocking statements is difficult; they stick in our memory more easily than statements that are less surprising to us. + + * **Excites the powerless:** The groups most likely to believe and invest in someone being uncivil are those that feel they're powerless and being treated unfairly. + + + + +Unfortunately, incivility as a tactic in arguments has its costs. One such cost is polarization. + +### Polarization + +Sinnott-Armstrong writes about five forms of polarization: + + * **Distance:** If two people's or groups' views are far apart according to some relevant scale, have significant disagreements and little common ground, then they're polarized. + + * **Differences:** If two people or groups have fewer values and beliefs _in common_ than they _don't have in common_ , then they're polarized. + + * **Antagonism:** Groups are more polarized the more they feel hatred, disdain, fear, or other negative emotions toward other people or groups. + + * **Incivility:** Groups tend to be more polarized when they talk more negatively about people of the other groups. + + * **Rigidity:** Groups tend to be more polarized when they treat their values as indisputable and will not compromise. + + * **Gridlock:** Groups tend to be more polarized when they're unable to cooperate and work together toward common goals. + + + + +And I'll add one more form of polarization to Sinnott-Armstrong's list: + + * **Non-disclosure:** Groups tend to be more polarized when one or both of the groups refuses to share valid, verifiable information—or when they distract each other with useless or irrelevant information. One of the ways people polarize is by not talking to each other and withhold information. Similarly, they talk on subjects that distract us from the issue at hand. Some issues are difficult to talk about, but by doing so solutions can be explored. + + + +### Language issues + +Identifying discussion-stoppers like these can help you avoid shutting down a discussion that would otherwise achieve beneficial outcomes. + +Language issues can be argument-stoppers Sinnott-Armstrong says. In particular, he outlines some of the following language-related barriers to productive argument. + + * **Guarding:** Using words like "all" can make a statement unbelievable; words like "sometimes" can make a statement too vague. + + * **Assuring:** Simply stating "trust me, I know what I'm talking about," without offering evidence that this is the case, can impede arguments. + + * **Evaluating:** Offering an evaluation of something—like saying "It is good"―without any supporting reasoning. + + * **Discounting:** This involves anticipating what the another person will say and attempting to weaken it as much as possible by framing an argument in a negative way. (Contrast these two sentences, for example: "Ramona is smart but boring" and "Ramona is boring but smart." The difference is subtle, but you'd probably want to spend less time with Ramona if you heard the first statement about her than if you heard the second.) + + + + +Identifying discussion-stoppers like these can help you avoid shutting down a discussion that would otherwise achieve beneficial outcomes. In addition, Sinnott-Armstrong specifically draws readers' attention to two other language problems that can kill productive debates: vagueness and ambiguity. + + * **Vagueness:** This occurs when a word or sentence is not precise enough and having many ways to interpret its true meaning and intent, which leads to confusion. Consider the sentence "It is big." "It" must be defined if it's not already obvious to everyone in the conversation. And a word like "big" must be clarified through comparison to something that everyone has agreed upon. + + * **Ambiguity:** This occurs when a sentence could have two distinct meanings. For example: "Police killed man with axe." Who was holding the axe, the man or the police? "My neighbor had a friend for dinner." Did your neighbor invite a friend to share a meal—or did she eat her friend? + + + + +### Overcoming barriers + +To help readers avoid these common roadblocks to productive arguments, Sinnott-Armstrong recommends a simple, four-step process for evaluating another person's argument. + + 1. **Observation:** First, observe a stated opinion and its related evidence to determine the precise nature of the claim. This might require you to ask some questions for clarification (you'll remember I employed this technique when arguing with my belligerent uncle, which I described [in the first article of this series][2]). + + 2. **Hypothesis:** Develop some hypothesis about the argument. In this case, the hypothesis should be an inference based on generally acceptable standards (for more on the structure of arguments themselves, also see [the first part of this series][2]). + + 3. **Comparison:** Compare that hypothesis with others and evaluate which is more accurate. More important issues will require you to conduct more comparisons. In other cases, premises are so obvious that no further explanation is required. + + 4. **Conclusion:** From the comparison analysis, reach a conclusion about whether your hypothesis about a competing argument is correct. + + + + +In many cases, the question is not whether a particular claim is _correct_ or _incorrect_ , but whether it is _believable._ So Sinnott-Armstrong also offers a four-step "believability test" for evaluating claims of this type. + + 1. **Expertise:** Does the person presenting the argument have authority in an appropriate field? Being a specialist is one field doesn't necessarily make that person an expert in another. + + 2. **Motive:** Would self-interest or other personal motives compel a person to withhold information or make false statements? To confirm one's statements, it might be wise to seek a totally separate, independent authority for confirmation. + + 3. **Sources:** Are the sources the person offers as evidence of a claim recognized experts? Do those sources have the expertise on the specific issue addressed? + + 4. **Agreement:** Is there agreement among many experts within the same specialty? + + + + +### Let's argue + +If you really want to strengthen your ability to argue, find someone that totally disagrees with you but wants to learn and understand your beliefs. + +When I was a university student, I would usually sit toward the front of the classroom. When I didn't understand something, I would start asking questions for clarification. Everyone else in the class would just sit silently, saying nothing. After class, however, other students would come up to me and thank me for asking those questions—because everyone else in the room was confused, too. + +Clarification is a powerful act—not just in the classroom, but during arguments anywhere. Building an organizational culture in which people feel empowered to ask for clarification is critical for productive arguments (I've [given presentations on this topic][3] before). If members have the courage to clarify premises, and they can do so in an environment where others don't think they're being belligerent, then this might be the key to a successful and productive argument. + +If you really want to strengthen your ability to argue, find someone that totally disagrees with you but wants to learn and understand your beliefs. Then, practice some of Sinnott-Armstrong's suggestions. Arguing productively will enhance [transparency, inclusivity, and collaboration][4] in your organization—leading to a more open culture. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/19/6/barriers-productive-arguments + +作者:[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/users/ron-mcfarland +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/directions-arrows.png?itok=EE3lFewZ (Arrows pointing different directions) +[2]: https://opensource.com/open-organization/19/5/productive-arguments +[3]: https://www.slideshare.net/RonMcFarland1/argue-successfully-achieve-something +[4]: https://opensource.com/open-organization/resources/open-org-definition From 3aacaf9d455789509fe65c4c362e7b9e21a6864e Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:28:47 +0800 Subject: [PATCH 014/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190619=20Cisco?= =?UTF-8?q?=20issues=20critical=20security=20warnings=20on=20SD-WAN,=20DNA?= =?UTF-8?q?=20Center=20sources/talk/20190619=20Cisco=20issues=20critical?= =?UTF-8?q?=20security=20warnings=20on=20SD-WAN,=20DNA=20Center.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...security warnings on SD-WAN, DNA Center.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 sources/talk/20190619 Cisco issues critical security warnings on SD-WAN, DNA Center.md diff --git a/sources/talk/20190619 Cisco issues critical security warnings on SD-WAN, DNA Center.md b/sources/talk/20190619 Cisco issues critical security warnings on SD-WAN, DNA Center.md new file mode 100644 index 0000000000..187e883706 --- /dev/null +++ b/sources/talk/20190619 Cisco issues critical security warnings on SD-WAN, DNA Center.md @@ -0,0 +1,111 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Cisco issues critical security warnings on SD-WAN, DNA Center) +[#]: via: (https://www.networkworld.com/article/3403349/cisco-issues-critical-security-warnings-on-sd-wan-dna-center.html) +[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) + +Cisco issues critical security warnings on SD-WAN, DNA Center +====== +Vulnerabilities to Cisco's SD-WAN and DNA Center software top a list of nearly 30 security advisories issued by the company. +![zajcsik \(CC0\)][1] + +Cisco has released two critical warnings about security issues with its SD-WAN and DNA Center software packages. + +The worse, with a Common Vulnerability Scoring System rating of 9.3 out of 10, is a vulnerability in its [Digital Network Architecture][2] (DNA) Center software that could let an unauthenticated attacker connect an unauthorized network device to the subnet designated for cluster services. + +**More about SD-WAN** + + * [How to buy SD-WAN technology: Key questions to consider when selecting a supplier][3] + * [How to pick an off-site data-backup method][4] + * [SD-Branch: What it is and why you’ll need it][5] + * [What are the options for security SD-WAN?][6] + + + +A successful exploit could let an attacker reach internal services that are not hardened for external access, Cisco [stated][7]. The vulnerability is due to insufficient access restriction on ports necessary for system operation, and the company discovered the issue during internal security testing, Cisco stated. + +Cisco DNA Center gives IT teams the ability to control access through policies using Software-Defined Access, automatically provision through Cisco DNA Automation, virtualize devices through Cisco Network Functions Virtualization (NFV), and lower security risks through segmentation and Encrypted Traffic Analysis. + +This vulnerability affects Cisco DNA Center Software releases prior to 1.3, and it is fixed in version 1.3 and releases after that. + +Cisco wrote that system updates are available from the Cisco cloud but not from the [Software Center][8] on Cisco.com. To upgrade to a fixed release of Cisco DNA Center Software, administrators can use the “System Updates” feature of the software. + +A second critical warning – with a CVVS score of 7.8 – is a weakness in the command-line interface of the Cisco SD-WAN Solution that could let an authenticated local attacker elevate lower-level privileges to the root user on an affected device. + +Cisco [wrote][9] that the vulnerability is due to insufficient authorization enforcement. An attacker could exploit this vulnerability by authenticating to the targeted device and executing commands that could lead to elevated privileges. A successful exploit could let the attacker make configuration changes to the system as the root user, the company stated. + +This vulnerability affects a range of Cisco products running a release of the Cisco SD-WAN Solution prior to Releases 18.3.6, 18.4.1, and 19.1.0 including: + + * vBond Orchestrator Software + * vEdge 100 Series Routers + * vEdge 1000 Series Routers + * vEdge 2000 Series Routers + * vEdge 5000 Series Routers + * vEdge Cloud Router Platform + * vManage Network Management Software + * vSmart Controller Software + + + +Cisco said it has released free [software updates][10] that address the vulnerability described in this advisory. Cisco wrote that it fixed this vulnerability in Release 18.4.1 of the Cisco SD-WAN Solution. + +The two critical warnings were included in a dump of [nearly 30 security advisories][11]. + +There were two other “High” impact rated warnings involving the SD-WAN software. + +One, a vulnerability in the vManage web-based UI (Web UI) of the Cisco SD-WAN Solution could let an authenticated, remote attacker gain elevated privileges on an affected vManage device, Cisco [wrote][12]. + +The vulnerability is due to a failure to properly authorize certain user actions in the device configuration. An attacker could exploit this vulnerability by logging in to the vManage Web UI and sending crafted HTTP requests to vManage. A successful exploit could let attackers gain elevated privileges and make changes to the configuration that they would not normally be authorized to make, Cisco stated. + +Another vulnerability in the vManage web-based UI could let an authenticated, remote attacker inject arbitrary commands that are executed with root privileges. + +This exposure is due to insufficient input validation, Cisco [wrote][13]. An attacker could exploit this vulnerability by authenticating to the device and submitting crafted input to the vManage Web UI. + +Both vulnerabilities affect Cisco vManage Network Management Software that is running a release of the Cisco SD-WAN Solution prior to Release 18.4.0 and Cisco has released free [software updates][10] to correct them. + +Other high-rated vulnerabilities Cisco disclosed included: + + * A [vulnerability][14] in the Cisco Discovery Protocol (CDP) implementation for the Cisco TelePresence Codec (TC) and Collaboration Endpoint (CE) Software could allow an unauthenticated, adjacent attacker to inject arbitrary shell commands that are executed by the device. + * A [weakness][15] in the internal packet-processing functionality of the Cisco StarOS operating system running on virtual platforms could allow an unauthenticated, remote attacker to cause an affected device to stop processing traffic, resulting in a denial of service (DoS) condition. + * A [vulnerability][16] in the web-based management interface of the Cisco RV110W Wireless-N VPN Firewall, Cisco RV130W Wireless-N Multifunction VPN Router, and Cisco RV215W Wireless-N VPN Router could allow an unauthenticated, remote attacker to cause a reload of an affected device, resulting in a denial of service (DoS) condition. + + + +Cisco has [released software][10] fixes for those advisories as well. + +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/3403349/cisco-issues-critical-security-warnings-on-sd-wan-dna-center.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://images.idgesg.net/images/article/2018/04/lightning_storm_night_gyorgy_karoly_toth_aka_zajcsik_cc0_via_pixabay_1200x800-100754504-large.jpg +[2]: https://www.networkworld.com/article/3401523/cisco-software-to-make-networks-smarter-safer-more-manageable.html +[3]: https://www.networkworld.com/article/3323407/sd-wan/how-to-buy-sd-wan-technology-key-questions-to-consider-when-selecting-a-supplier.html +[4]: https://www.networkworld.com/article/3328488/backup-systems-and-services/how-to-pick-an-off-site-data-backup-method.html +[5]: https://www.networkworld.com/article/3250664/lan-wan/sd-branch-what-it-is-and-why-youll-need-it.html +[6]: https://www.networkworld.com/article/3285728/sd-wan/what-are-the-options-for-securing-sd-wan.html?nsdr=true +[7]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-dnac-bypass +[8]: https://software.cisco.com/download/home +[9]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-sdwan-privesca +[10]: https://tools.cisco.com/security/center/resources/security_vulnerability_policy.html#fixes +[11]: https://tools.cisco.com/security/center/publicationListing.x?product=Cisco&sort=-day_sir&limit=50#~Vulnerabilities +[12]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-sdwan-privilescal +[13]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-sdwan-cmdinj +[14]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-tele-shell-inj +[15]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-staros-asr-dos +[16]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190619-rvrouters-dos +[17]: https://www.facebook.com/NetworkWorld/ +[18]: https://www.linkedin.com/company/network-world From 12d2e4474fc6cead6164973c49b6be21489c2a08 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:28:59 +0800 Subject: [PATCH 015/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190619=20With?= =?UTF-8?q?=20Tableau,=20SaaS=20king=20Salesforce=20becomes=20a=20hybrid?= =?UTF-8?q?=20cloud=20company=20sources/talk/20190619=20With=20Tableau,=20?= =?UTF-8?q?SaaS=20king=20Salesforce=20becomes=20a=20hybrid=20cloud=20compa?= =?UTF-8?q?ny.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lesforce becomes a hybrid cloud company.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 sources/talk/20190619 With Tableau, SaaS king Salesforce becomes a hybrid cloud company.md diff --git a/sources/talk/20190619 With Tableau, SaaS king Salesforce becomes a hybrid cloud company.md b/sources/talk/20190619 With Tableau, SaaS king Salesforce becomes a hybrid cloud company.md new file mode 100644 index 0000000000..d0d1d24cb6 --- /dev/null +++ b/sources/talk/20190619 With Tableau, SaaS king Salesforce becomes a hybrid cloud company.md @@ -0,0 +1,67 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (With Tableau, SaaS king Salesforce becomes a hybrid cloud company) +[#]: via: (https://www.networkworld.com/article/3403442/with-tableau-saas-king-salesforce-becomes-a-hybrid-cloud-company.html) +[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) + +With Tableau, SaaS king Salesforce becomes a hybrid cloud company +====== +Once dismissive of software, Salesforce acknowledges the inevitability of the hybrid cloud. +![Martyn Williams/IDGNS][1] + +I remember a time when people at Salesforce events would hand out pins that read “Software” inside a red circle with a slash through it. The High Priest of SaaS (a.k.a. CEO Marc Benioff) was so adamant against installed, on-premises software that his keynotes were always comical. + +Now, Salesforce is prepared to [spend $15.7 billion to acquire Tableau Software][2], the leader in on-premises data analytics. + +On the hell-freezes-over scale, this is up there with Microsoft embracing Linux or Apple PR people returning a phone call. Well, we know at least one of those has happened. + +**[ Also read:[Hybrid Cloud: The time for adoption is upon us][3] | Stay in the know: [Subscribe and get daily newsletter updates][4] ]** + +So, why would a company that is so steeped in the cloud, so anti-on-premises software, make such a massive purchase? + +Partly it is because Benioff and company are finally coming to the same conclusion as most everyone else: The hybrid cloud, a mix of on-premises systems and public cloud, is the wave of the future, and pure cloud plays are in the minority. + +The reality is that data is hybrid and does not sit in a single location, and Salesforce is finally acknowledging this, said Tim Crawford, president of Avoa, a strategic CIO advisory firm. + +“I see the acquisition of Tableau by Salesforce as less about getting into the on-prem game as it is a reality of the world we live in. Salesforce needed a solid analytics tool that went well beyond their existing capability. Tableau was that tool,” he said. + +**[[Become a Microsoft Office 365 administrator in record time with this quick start course from PluralSight.][5] ]** + +Salesforce also understands that they need a better understanding of customers and those data insights that drive customer decisions. That data is both on-prem and in the cloud, Crawford noted. It is in Salesforce, other solutions, and the myriad of Excel spreadsheets spread across employee systems. Tableau crosses the hybrid boundaries and brings a straightforward way to visualize data. + +Salesforce had analytics features as part of its SaaS platform, but it was geared around their own platform, whereas everyone uses Tableau and Tableau supports all manner of analytics. + +“There’s a huge overlap between Tableau customers and Salesforce customers,” Crawford said. “The data is everywhere in the enterprise, not just in Salesforce. Salesforce does a great job with its own data, but Tableau does great with data in a lot of places because it’s not tied to one platform. So, it opens up where the data comes from and the insights you get from the data.” + +Crawford said that once the deal is done and Tableau is under some deeper pockets, the organization may be able to innovate faster or do things they were unable to do prior. That hardly indicates Tableau was struggling, though. It pulled in [$1.16 billion in revenue][6] in 2018. + +Crawford also expects Salesforce to push Tableau to open up new possibilities for customer insights by unlocking customer data inside and outside of Salesforce. One challenge for the two companies is to maintain that neutrality so that they don’t lose the ability to use Tableau for non-customer centric activities. + +“It’s a beautiful way to visualize large sets of data that have nothing to do with customer centricity,” he said. + +Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3403442/with-tableau-saas-king-salesforce-becomes-a-hybrid-cloud-company.html + +作者:[Andy Patrizio][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/Andy-Patrizio/ +[b]: https://github.com/lujun9972 +[1]: https://images.techhive.com/images/article/2015/09/150914-salesforce-dreamforce-2-100614575-large.jpg +[2]: https://www.cio.com/article/3402026/how-salesforces-tableau-acquisition-will-impact-it.html +[3]: http://www.networkworld.com/article/2172875/cloud-computing/hybrid-cloud--the-year-of-adoption-is-upon-us.html +[4]: https://www.networkworld.com/newsletters/signup.html +[5]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fadministering-office-365-quick-start +[6]: https://www.geekwire.com/2019/tableau-hits-841m-annual-recurring-revenue-41-transition-subscription-model-continues/ +[7]: https://www.facebook.com/NetworkWorld/ +[8]: https://www.linkedin.com/company/network-world From f5c0608cde5e3ea07ec22545520dff74e2a107f5 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 11:29:16 +0800 Subject: [PATCH 016/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190618=2017=20p?= =?UTF-8?q?redictions=20about=205G=20networks=20and=20devices=20sources/ta?= =?UTF-8?q?lk/20190618=2017=20predictions=20about=205G=20networks=20and=20?= =?UTF-8?q?devices.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...edictions about 5G networks and devices.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/talk/20190618 17 predictions about 5G networks and devices.md diff --git a/sources/talk/20190618 17 predictions about 5G networks and devices.md b/sources/talk/20190618 17 predictions about 5G networks and devices.md new file mode 100644 index 0000000000..d8833f9887 --- /dev/null +++ b/sources/talk/20190618 17 predictions about 5G networks and devices.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (17 predictions about 5G networks and devices) +[#]: via: (https://www.networkworld.com/article/3403358/17-predictions-about-5g-networks-and-devices.html) +[#]: author: (Fredric Paul https://www.networkworld.com/author/Fredric-Paul/) + +17 predictions about 5G networks and devices +====== +Not surprisingly, the new Ericsson Mobility Report is bullish on the potential of 5G technology. Here’s a quick look at the most important numbers. +![Vertigo3D / Getty Images][1] + +_“As market after market switches on 5G, we are at a truly momentous point in time. No previous generation of mobile technology has had the potential to drive economic growth to the extent that 5G promises. It goes beyond connecting people to fully realizing the Internet of Things (IoT) and the Fourth Industrial Revolution.”_ —The opening paragraph of the [June 2019 Ericsson Mobility Report][2] + +Almost every significant technology advancement now goes through what [Gartner calls the “hype cycle.”][3] These days, Everyone expects new technologies to be met with gushing optimism and dreamy visions of how it’s going to change the world in the blink of an eye. After a while, we all come to expect the vendors and the press to go overboard with excitement, at least until reality and disappointment set in when things don’t pan out exactly as expected. + +**[ Also read:[The time of 5G is almost here][4] ]** + +Even with all that in mind, though, Ericsson’s whole-hearted embrace of 5G in its Internet Mobility Report is impressive. The optimism is backed up by lots of numbers, but they can be hard to tease out of the 36-document. So, let’s recap some of the most important top-line predictions (with my comments at the end). + +### Worldwide 5G growth projections + + 1. “More than 10 million 5G subscriptions are projected worldwide by the end of 2019.” + 2. “[We] now expect there to be 1.9 billion 5G subscriptions for enhanced mobile broadband by the end of 2024. This will account for over 20 percent of all mobile subscriptions at that time. The peak of LTE subscriptions is projected for 2022, at around 5.3 billion subscriptions, with the number declining slowly thereafter.” + 3. “In 2024, 5G networks will carry 35 percent of mobile data traffic globally.” + 4. “5G can cover up to 65 percent of the world’s population in 2024.” + 5. ”NB-IoT and Cat-M technologies will account for close to 45 percent of cellular IoT connections in 2024.” + 6. “By the end of 2024, nearly 35 percent of cellular IoT connections will be Broadband IoT, with 4G connecting the majority.” But 5G connections will support more advanced use cases. + 7. “Despite challenging 5G timelines, device suppliers are expected to be ready with different band and architecture support in a range of devices during 2019.” + 8. “Spectrum sharing … chipsets are currently in development and are anticipated to be in 5G commercial devices in late 2019." + 9. “[VoLTE][5] is the foundation for enabling voice and communication services on 5G devices. Subscriptions are expected to reach 2.1 billion by the end of 2019. … The number of VoLTE subscriptions is projected to reach 5.9 billion by the end of 2024, accounting for more than 85 percent of combined LTE and 5G subscriptions.” + + + +![][6] + +### Regional 5G projections + + 1. “In North America, … service providers have already launched commercial 5G services, both for fixed wireless access and mobile. … By the end of 2024, we anticipate close to 270 million 5G subscriptions in the region, accounting for more than 60 percent of mobile subscriptions.” + 2. “In Western Europe … The momentum for 5G in the region was highlighted by the first commercial launch in April. By the end of 2024, 5G is expected to account for around 40 percent of mobile subscriptions. + 3. In Central and Eastern Europe, … The first 5G subscriptions are expected in 2019, and will make up 15 percent of subscriptions in 2024.” + 4. “In North East Asia, … the region’s 5G subscription penetration is projected to reach 47 percent [by the end of 2024]. + 5. “[In India,] 5G subscriptions are expected to become available in 2022 and will represent 6 percent of mobile subscriptions at the end of 2024.” + 6. “In the Middle East and North Africa, we anticipate commercial 5G deployments with leading communications service providers during 2019, and significant volumes in 2021. … Around 60 million 5G subscriptions are forecast for the end of 2024, representing 3 percent of total mobile subscriptions.” + 7. “Initial 5G commercial devices are expected in the [South East Asia and Oceania] region during the first half of 2019. By the end of 2024, it is anticipated that almost 12 percent of subscriptions in the region will be for 5G.]” + 8. “In Latin America … the first 5G deployments will be possible in the 3.5GHz band during 2019. Argentina, Brazil, Chile, Colombia, and Mexico are anticipated to be the first countries in the region to deploy 5G, with increased subscription uptake forecast from 2020. By the end of 2024, 5G is set to make up 7 percent of mobile subscriptions.” + + + +### Is 5G really so inevitable? + +Considered individually, these predictions all seem perfectly reasonable. Heck, 10 million 5G subscriptions is only a drop in the global bucket. And rumors are already flying that Apple’s next round of iPhones will include 5G capability. Also, 2024 is still five years in the future, so why wouldn’t the faster connections drive impressive traffic stats? Similarly, North America and North East Asia will experience the fastest 5G penetration. + +But when you look at them all together, these numbers project a sense of 5G inevitability that could well be premature. It will take a _lot_ of spending, by a lot of different parties—carriers, chip makers, equipment vendors, phone manufacturers, and consumers—to make this kind of growth a reality. + +I’m not saying 5G won’t take over the world. I’m just saying that when so many things have to happen in a relatively short time, there are a lot of opportunities for the train to jump the tracks. Don’t be surprised if it takes longer than expected for 5G to turn into the worldwide default standard Ericsson—and everyone else—seems to think it will inevitably become. + +Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3403358/17-predictions-about-5g-networks-and-devices.html + +作者:[Fredric 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://www.networkworld.com/author/Fredric-Paul/ +[b]: https://github.com/lujun9972 +[1]: https://images.idgesg.net/images/article/2019/02/5g_wireless_technology_network_connections_by_credit-vertigo3d_gettyimages-1043302218_3x2-100787550-large.jpg +[2]: https://www.ericsson.com/assets/local/mobility-report/documents/2019/ericsson-mobility-report-june-2019.pdf +[3]: https://www.gartner.com/en/research/methodologies/gartner-hype-cycle +[4]: https://www.networkworld.com/article/3354477/mobile-world-congress-the-time-of-5g-is-almost-here.html +[5]: https://www.gsma.com/futurenetworks/technology/volte/ +[6]: https://images.idgesg.net/images/article/2019/06/ericsson-mobility-report-june-2019-graph-100799481-large.jpg +[7]: https://www.facebook.com/NetworkWorld/ +[8]: https://www.linkedin.com/company/network-world From fa50cc6f7147cd41e42744160b6859296738d067 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:21:23 +0800 Subject: [PATCH 017/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190617=20How=20?= =?UTF-8?q?to=20Use=20VLAN=20tagged=20NIC=20(Ethernet=20Card)=20on=20CentO?= =?UTF-8?q?S=20and=20RHEL=20Servers=20sources/tech/20190617=20How=20to=20U?= =?UTF-8?q?se=20VLAN=20tagged=20NIC=20(Ethernet=20Card)=20on=20CentOS=20an?= =?UTF-8?q?d=20RHEL=20Servers.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...hernet Card) on CentOS and RHEL Servers.md | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 sources/tech/20190617 How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers.md diff --git a/sources/tech/20190617 How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers.md b/sources/tech/20190617 How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers.md new file mode 100644 index 0000000000..1a6f5988e9 --- /dev/null +++ b/sources/tech/20190617 How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers.md @@ -0,0 +1,173 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers) +[#]: via: (https://www.linuxtechi.com/vlan-tagged-nic-ethernet-card-centos-rhel-servers/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +How to Use VLAN tagged NIC (Ethernet Card) on CentOS and RHEL Servers +====== + +There are some scenarios where we want to assign multiple IPs from different **VLAN** on the same Ethernet card (nic) on Linux servers ( **CentOS** / **RHEL** ). This can be done by enabling VLAN tagged interface. But for this to happen first we must make sure multiple VLANs are attached to port on switch or in other words we can say we should configure trunk port by adding multiple VLANs on switch. + + + +Let’s assume we have a Linux Server, there we have two Ethernet cards (enp0s3 & enp0s8), first NIC ( **enp0s3** ) will be used for data traffic and second NIC ( **enp0s8** ) will be used for control / management traffic. For Data traffic I will using multiple VLANs (or will assign multiple IPs from different VLANs on data traffic ethernet card). + +I am assuming the port from switch which is connected to my server data NIC is configured as trunk port by mapping the multiple VLANs to it. + +Following are the VLANs which is mapped to data traffic Ethernet Card (NIC): + + * VLAN ID (200), VLAN N/W = 172.168.10.0/24 + * VLAN ID (300), VLAN N/W = 172.168.20.0/24 + + + +To use VLAN tagged interface on CentOS 7 / RHEL 7 / CentOS 8 /RHEL 8 systems, [kernel module][1] **8021q** must be loaded. + +Use the following command to load the kernel module “8021q” + +``` +[root@linuxtechi ~]# lsmod | grep -i 8021q +[root@linuxtechi ~]# modprobe --first-time 8021q +[root@linuxtechi ~]# lsmod | grep -i 8021q +8021q 29022 0 +garp 14384 1 8021q +mrp 18542 1 8021q +[root@linuxtechi ~]# +``` + +Use below modinfo command to display information about kernel module “8021q” + +``` +[root@linuxtechi ~]# modinfo 8021q +filename: /lib/modules/3.10.0-327.el7.x86_64/kernel/net/8021q/8021q.ko +version: 1.8 +license: GPL +alias: rtnl-link-vlan +rhelversion: 7.2 +srcversion: 2E63BD725D9DC11C7DA6190 +depends: mrp,garp +intree: Y +vermagic: 3.10.0-327.el7.x86_64 SMP mod_unload modversions +signer: CentOS Linux kernel signing key +sig_key: 79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3 +sig_hashalgo: sha256 +[root@linuxtechi ~]# +``` + +Now tagged (or mapped) the VLANs 200 and 300 to NIC enp0s3 using the [ip command][2] + +``` +[root@linuxtechi ~]# ip link add link enp0s3 name enp0s3.200 type vlan id 200 +``` + +Bring up the interface using below ip command: + +``` +[root@linuxtechi ~]# ip link set dev enp0s3.200 up +``` + +Similarly mapped the VLAN 300 to NIC enp0s3 + +``` +[root@linuxtechi ~]# ip link add link enp0s3 name enp0s3.300 type vlan id 300 +[root@linuxtechi ~]# ip link set dev enp0s3.300 up +[root@linuxtechi ~]# +``` + +Now view the tagged interface status using ip command: + +[![tagged-interface-ip-command][3]][4] + +Now we can assign the IP address to tagged interface from their respective VLANs using beneath ip command, + +``` +[root@linuxtechi ~]# ip addr add 172.168.10.51/24 dev enp0s3.200 +[root@linuxtechi ~]# ip addr add 172.168.20.51/24 dev enp0s3.300 +``` + +Use below ip command to see whether IP is assigned to tagged interface or not. + +![ip-address-tagged-nic][5] + +All the above changes via ip commands will not be persistent across the reboot. These tagged interfaces will not be available after reboot and after network service restart + +So, to make tagged interfaces persistent across the reboot then use interface **ifcfg files** + +Edit interface (enp0s3) file “ **/etc/sysconfig/network-scripts/ifcfg-enp0s3** ” and add the following content, + +Note: Replace the interface name that suits to your env, + +``` +[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 +TYPE=Ethernet +DEVICE=enp0s3 +BOOTPROTO=none +ONBOOT=yes +``` + +Save & exit the file + +Create tagged interface file for VLAN id 200 as “ **/etc/sysconfig/network-scripts/ifcfg-enp0s3.200** ” and add the following contents to it. + +``` +[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.200 +DEVICE=enp0s3.200 +BOOTPROTO=none +ONBOOT=yes +IPADDR=172.168.10.51 +PREFIX=24 +NETWORK=172.168.10.0 +VLAN=yes +``` + +Save & exit the file + +Similarly create interface file for VLAN id 300 as “/etc/sysconfig/network-scripts/ifcfg-enp0s3.300” and add the following contents to it + +``` +[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.300 +DEVICE=enp0s3.300 +BOOTPROTO=none +ONBOOT=yes +IPADDR=172.168.20.51 +PREFIX=24 +NETWORK=172.168.20.0 +VLAN=yes +``` + +Save and exit file and then restart network services using the beneath command, + +``` +[root@linuxtechi ~]# systemctl restart network +[root@linuxtechi ~]# +``` + +Now verify whether tagged interface are configured and up & running using the ip command, + +![tagged-interface-status-ip-command-linux-server][6] + +That’s all from this article, I hope you got an idea how to configure and enable VLAN tagged interface on CentOS 7 / 8 and RHEL 7 /8 Severs. Please do share your feedback and comments. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/vlan-tagged-nic-ethernet-card-centos-rhel-servers/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/how-to-manage-kernel-modules-in-linux/ +[2]: https://www.linuxtechi.com/ip-command-examples-for-linux-users/ +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/06/tagged-interface-ip-command-1024x444.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/06/tagged-interface-ip-command.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/06/ip-address-tagged-nic-1024x343.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/06/tagged-interface-status-ip-command-linux-server-1024x656.jpg From e6666ef71f092d22be16f8214eb720e5fa2499a3 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:21:35 +0800 Subject: [PATCH 018/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190611=20Step?= =?UTF-8?q?=20by=20Step=20Zorin=20OS=2015=20Installation=20Guide=20with=20?= =?UTF-8?q?Screenshots=20sources/tech/20190611=20Step=20by=20Step=20Zorin?= =?UTF-8?q?=20OS=2015=20Installation=20Guide=20with=20Screenshots.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... 15 Installation Guide with Screenshots.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 sources/tech/20190611 Step by Step Zorin OS 15 Installation Guide with Screenshots.md diff --git a/sources/tech/20190611 Step by Step Zorin OS 15 Installation Guide with Screenshots.md b/sources/tech/20190611 Step by Step Zorin OS 15 Installation Guide with Screenshots.md new file mode 100644 index 0000000000..79d0b9e1a5 --- /dev/null +++ b/sources/tech/20190611 Step by Step Zorin OS 15 Installation Guide with Screenshots.md @@ -0,0 +1,204 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Step by Step Zorin OS 15 Installation Guide with Screenshots) +[#]: via: (https://www.linuxtechi.com/zorin-os-15-installation-guide-screenshots/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +Step by Step Zorin OS 15 Installation Guide with Screenshots +====== + +Good News for all the Zorin users out there! Zorin has launched its latest version (Zorin OS 15) of its Ubuntu based Linux distro. This version is based on Ubuntu 18.04.2, since its launch in July 2009, it is estimated that this popular distribution has reached more than 17 million downloads. Zorin is renowned for creating a distribution for beginner level users and the all new Zorin OS 15 comes packed with a lot of goodies that surely will make Zorin OS lovers happy. Let’s see some of the major enhancements made in the latest version. + +### New Features of Zorin OS 15 + +Zorin OS has always amazed users with different set of features when every version is released Zorin OS 15 is no exception as it comes with a lot of new features as outlined below: + +**Enhanced User Experience** + +The moment you look at the Zorin OS 15, you will ask whether it is a Linux distro because it looks more like a Windows OS. According to Zorin, it wanted Windows users to get ported to Linux in a more user-friendly manner. And it features a Windows like Start menu, quick app launchers, a traditional task bar section, system tray etc. + +**Zorin Connect** + +Another major highlight of Zorin OS 15 is the ability to integrate your Android Smartphones seamlessly with your desktop using the Zorin Connect application. With your phone connected, you can share music, videos and other files between your phone and desktop. You can even use your phone as a mouse to control the desktop. You can also easily control the media playback in your desktop from your phone itself. Quickly reply to all your messages and notifications sent to your phone from your desktop. + +**New GTK Theme** + +Zorin OS 15 ships with an all new GTK Theme that has been exclusively built for this distro and the theme is available in 6 different colors along with the hugely popular dark theme. Another highlight is that the OS automatically detects the time of the day and changes the desktop theme accordingly. Say for example, during sunset it switches to a dark theme whereas in the morning it switches to bright theme automatically. + +**Other New Features:** + +Zorin OS 15 comes packed with a lot of new features including: + + * Compatible with Thunderbolt 3.0 devices + * Supports color emojis + * Comes with an upgraded Linux Kernel 4.18 + * Customized settings available for application menu and task bar + * System font changed to Inter + * Supports renaming bulk files + + + +### Minimum system requirements for Zorin OS 15 (Core): + + * Dual Core 64-bit (1GHZ) + * 2 GB RAM + * 10 GB free disk space + * Internet Connection Optional + * Display (800×600) + + + +### Step by Step Guide to Install Zorin OS 15 (Core) + +Before you start installing Zorin OS 15, ensure you have a copy of the Zorin OS 15 downloaded in your system. If not download then refer official website of [Zorin OS 15][1]. Remember this Linux distribution is available in 4 versions including: + + * Ultimate (Paid Version) + * Core (Free Version) + * Lite (Free Version) + * Education (Free Version) + + + +Note: In this article I will demonstrate Zorin OS 15 Core Installation Steps + +### Step 1) Create Zorin OS 15 Bootable USB Disk + +Once you have downloaded Zorin OS 15, copy the ISO into an USB disk and create a bootable disk. Change our system settings to boot using an USB disk and restart your system. Once you restart your system, you will see the screen as shown below. Click “ **Install or Try Zorin OS** ” + + + +### Step 2) Choose Install Zorin OS + +In the next screen, you will be shown option to whether install Zorin OS 15 or to try Zorin OS. Click “ **Install Zorin OS** ” to continue the installation process. + + + +### Step 3) Choose Keyboard Layout + +Next step is to choose your keyboard layout. By default, English (US) is selected and if you want to choose a different language, then choose it and click “ **Continue** ” + + + +### Step 4) Download Updates and Other Software + +In the next screen, you will be asked whether you need to download updates while you are installing Zorin OS and install other 3rd party applications. In case your system is connected to internet then you can select both of these options, but by doing so your installation time increases considerably, or if you don’t want to install updates and third party software during the installation then untick both these options and click “Continue” + + + +### Step 5) Choose Zorin OS 15 Installation Method + +If you are new to Linux and want fresh installation and don’t want to customize partitions, then better choose option “ **Erase disk and install Zorin OS** ” + +If you want to create customize partitions for Zorin OS then choose “ **Something else** “, In this tutorial I will demonstrate how to create customize partition scheme for Zorin OS 15 installation, + +So, choose “ **Something else** ” option and then click on Continue + + + + + +As we can see we have around 42 GB disk available for Zorin OS, We will be creating following partitions, + + * /boot = 2 GB (ext4 file system) + * /home = 20 GB (ext4 file system) + * / = 10 GB (ext4 file system) + * /var = 7 GB (ext4 file system) + * Swap = 2 GB (ext4 file system) + + + +To start creating partitions, first click on “ **New Partition Table** ” and it will show it is going to create empty partition table, click on continue + + + +In the next screen we will see that we have now 42 GB free space on disk (/dev/sda), so let’s create our first partition as /boot, + +Select the free space, then click on + symbol and then specify the partition size as 2048 MB, file system type as ext4 and mount point as /boot, + + + +Click on OK + +Now create our next partition /home of size 20 GB (20480 MB), + + + +Similarly create our next two partition / and /var of size 10 and 7 GB respectively, + + + + + +Let’s create our last partition as swap of size 2 GB + + + +Click on OK + +Choose “ **Install Now** ” option in next window, + + + +In next window, choose “Continue” to write changes to disk and to proceed with installation + + + +### Step 6) Choose Your Preferred Location + +In the next screen, you will be asked to choose your location and click “Continue” + + + +### Step 7) Provide User Credentials + +In the next screen, you’ll be asked to enter the user credentials including your name, computer name, + +Username and password. Once you are done, click “Continue” to proceed with the installation process. + + + +### Step 8) Installing Zorin OS 15 + +Once you click continue, you can see that the Zorin OS 15 starts installing and it may take some time to complete the installation process. + + + +### Step 9) Restart your system after Successful Installation + +Once the installation process is completed, it will ask to restart your computer. Hit “ **Restart Now** ” + + + +### Step 10) Login to Zorin OS 15 + +Once the system restarts, you will be asked to login into the system using the login credentials provided earlier. + +Note: Don’t forget to change the boot medium from bios so that system boots up with disk. + + + +### Step 11) Zorin OS 15 Welcome Screen + +Once your login is successful, you can see the Zorin OS 15 welcome screen. Now you can start exploring all the incredible features of Zorin OS 15. + + + +That’s all from this tutorial, please do share feedback and comments. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/zorin-os-15-installation-guide-screenshots/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://zorinos.com/download/ From f039f8cef34f4b49acc2a81f5c9a77686a45decd Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:21:47 +0800 Subject: [PATCH 019/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190609=20How=20?= =?UTF-8?q?to=20set=20ulimit=20and=20file=20descriptors=20limit=20on=20Lin?= =?UTF-8?q?ux=20Servers=20sources/tech/20190609=20How=20to=20set=20ulimit?= =?UTF-8?q?=20and=20file=20descriptors=20limit=20on=20Linux=20Servers.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...file descriptors limit on Linux Servers.md | 227 ++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md diff --git a/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md b/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md new file mode 100644 index 0000000000..1b732b566d --- /dev/null +++ b/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md @@ -0,0 +1,227 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to set ulimit and file descriptors limit on Linux Servers) +[#]: via: (https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/) +[#]: author: (Shashidhar Soppin https://www.linuxtechi.com/author/shashidhar/) + +How to set ulimit and file descriptors limit on Linux Servers +====== + +**Introduction: ** Challenges like number of open files in any of the production environment has become common now a day. Since many applications which are Java based and Apache based, are getting installed and configured, which may lead to too many open files, file descriptors etc. If this exceeds the default limit that is set, then one may face access control problems and file opening challenges. Many production environments come to standstill kind of situations because of this. + + + +Luckily, we have “ **ulimit** ” command in any of the Linux based server, by which one can see/set/get number of files open status/configuration details. This command is equipped with many options and with this combination one can set number of open files. Following are step-by-step commands with examples explained in detail. + +### To see what is the present open file limit in any Linux System + +To get open file limit on any Linux server, execute the following command, + +``` +[root@linuxtechi ~]# cat /proc/sys/fs/file-max +146013 +``` + +The above number shows that user can open ‘146013’ file per user login session. + +``` +[root@linuxtechi ~]# cat /proc/sys/fs/file-max +149219 +[root@linuxtechi ~]# cat /proc/sys/fs/file-max +73906 +``` + +This clearly indicates that individual Linux operating systems have different number of open files. This is based on dependencies and applications which are running in respective systems. + +### ulimit command : + +As the name suggests, ulimit (user limit) is used to display and set resources limit for logged in user.When we run ulimit command with -a option then it will print all resources’ limit for the logged in user. Now let’s run “ **ulimit -a** ” on Ubuntu / Debian and CentOS systems, + +**Ubuntu / Debian System** , + +``` +root@linuxtechi ~}$ ulimit -a +core file size (blocks, -c) 0 +data seg size (kbytes, -d) unlimited +scheduling priority (-e) 0 +file size (blocks, -f) unlimited +pending signals (-i) 5731 +max locked memory (kbytes, -l) 64 +max memory size (kbytes, -m) unlimited +open files (-n) 1024 +pipe size (512 bytes, -p) 8 +POSIX message queues (bytes, -q) 819200 +real-time priority (-r) 0 +stack size (kbytes, -s) 8192 +cpu time (seconds, -t) unlimited +max user processes (-u) 5731 +virtual memory (kbytes, -v) unlimited +file locks (-x) unlimited +``` + +**CentOS System** + +``` +root@linuxtechi ~}$ ulimit -a +core file size (blocks, -c) 0 +data seg size (kbytes, -d) unlimited +scheduling priority (-e) 0 +file size (blocks, -f) unlimited +pending signals (-i) 5901 +max locked memory (kbytes, -l) 64 +max memory size (kbytes, -m) unlimited +open files (-n) 1024 +pipe size (512 bytes, -p) 8 +POSIX message queues (bytes, -q) 819200 +real-time priority (-r) 0 +stack size (kbytes, -s) 8192 +cpu time (seconds, -t) unlimited +max user processes (-u) 5901 +virtual memory (kbytes, -v) unlimited +file locks (-x) unlimited +``` + +As we can be seen here different OS have different limits set. All these limits can be configured/changed using “ulimit” command. + +To display the individual resource limit then pass the individual parameter in ulimit command, some of parameters are listed below: + + * ulimit -n –> It will display number of open files limit + * ulimit -c –> It display the size of core file + * umilit -u –> It will display the maximum user process limit for the logged in user. + * ulimit -f –> It will display the maximum file size that the user can have. + * umilit -m –> It will display the maximum memory size for logged in user. + * ulimit -v –> It will display the maximum memory size limit + + + +Use below commands check hard and soft limits for number of open file for the logged in user + +``` +root@linuxtechi ~}$ ulimit -Hn +1048576 +root@linuxtechi ~}$ ulimit -Sn +1024 +``` + +### How to fix the problem when limit on number of Maximum Files was reached ? + +Let’s assume our Linux server has reached the limit of maximum number of open files and want to extend that limit system wide, for example we want to set 100000 as limit of number of open files. + +Use sysctl command to pass fs.file-max parameter to kernel on the fly, execute beneath command as root user, + +``` +root@linuxtechi~]# sysctl -w fs.file-max=100000 +fs.file-max = 100000 +``` + +Above changes will be active until the next reboot, so to make these changes persistent across the reboot, edit the file **/etc/sysctl.conf** and add same parameter, + +``` +root@linuxtechi~]# vi /etc/sysctl.conf +fs.file-max = 100000 +``` + +save and exit file, + +Run the beneath command to make above changes into effect immediately without logout and reboot. + +``` +root@linuxtechi~]# sysctl -p +``` + +Now verify whether new changes are in effect or not. + +``` +root@linuxtechi~]# cat /proc/sys/fs/file-max +100000 +``` + +Use below command to find out how many file descriptors are currently being utilized: + +``` +[root@linuxtechi ~]# more /proc/sys/fs/file-nr +1216 0 100000 +``` + +Note:- Command “ **sysctl -p** ” is used to commit the changes without reboot and logout. + +### Set User level resource limit via limit.conf file + +“ **/etc/sysctl.conf** ” file is used to set resource limit system wide but if you want to set resource limit for specific user like Oracle, MariaDB and Apache then this can be achieved via “ **/etc/security/limits.conf** ” file. + +Sample Limit.conf is shown below, + +``` +root@linuxtechi~]# cat /proc/sys/fs/file-max +``` + +![Limits-conf-linux-part1][1] + +![Limits-conf-linux-part2][2] + +Let’s assume we want to set hard and soft limit on number of open files for linuxtechi user and for oracle user set hard and soft limit on number of open process, edit the file “/etc/security/limits.conf” and add the following lines + +``` +# hard limit for max opened files for linuxtechi user +linuxtechi hard nofile 4096 +# soft limit for max opened files for linuxtechi user +linuxtechi soft nofile 1024 + +# hard limit for max number of process for oracle user +oracle hard nproc 8096 +# soft limit for max number of process for oracle user +oracle soft nproc 4096 +``` + +Save & exit the file. + +**Note:** In case you want to put resource limit on a group instead of users, then it can also be possible via limit.conf file, in place of user name , type **@ ** and rest of the items will be same, example is shown below, + +``` +# hard limit for max opened files for sysadmin group +@sysadmin hard nofile 4096 +# soft limit for max opened files for sysadmin group +@sysadmin soft nofile 1024 +``` + +Verify whether new changes are in effect or not, + +``` +~]# su - linuxtechi +~]$ ulimit -n -H +4096 +~]$ ulimit -n -S +1024 + +~]# su - oracle +~]$ ulimit -H -u +8096 +~]$ ulimit -S -u +4096 +``` + +Note: Other majorly used command is “[ **lsof**][3]” which is used for finding out “how many files are opened currently”. This command is very helpful for admins. + +**Conclusion:** + +As mentioned in the introduction section “ulimit” command is very powerful and helps one to configure and make sure application installations are smoother without any bottlenecks. This command helps in fixing many of the number of file limitations in Linux based servers. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/ + +作者:[Shashidhar Soppin][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.linuxtechi.com/author/shashidhar/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Limits-conf-linux-part1-1024x677.jpg +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Limits-conf-linux-part2-1024x443.jpg +[3]: https://www.linuxtechi.com/lsof-command-examples-linux-geeks/ From bd1bad075805e6549b4ff0b495f74d394685ea98 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:21:58 +0800 Subject: [PATCH 020/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190602=20How=20?= =?UTF-8?q?to=20Install=20LEMP=20(Linux,=20Nginx,=20MariaDB,=20PHP)=20on?= =?UTF-8?q?=20Fedora=2030=20Server=20sources/tech/20190602=20How=20to=20In?= =?UTF-8?q?stall=20LEMP=20(Linux,=20Nginx,=20MariaDB,=20PHP)=20on=20Fedora?= =?UTF-8?q?=2030=20Server.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ginx, MariaDB, PHP) on Fedora 30 Server.md | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 sources/tech/20190602 How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server.md diff --git a/sources/tech/20190602 How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server.md b/sources/tech/20190602 How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server.md new file mode 100644 index 0000000000..e3a533b3b2 --- /dev/null +++ b/sources/tech/20190602 How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server.md @@ -0,0 +1,200 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server) +[#]: via: (https://www.linuxtechi.com/install-lemp-stack-fedora-30-server/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +How to Install LEMP (Linux, Nginx, MariaDB, PHP) on Fedora 30 Server +====== + +In this article, we’ll be looking at how to install **LEMP** stack on Fedora 30 Server. LEMP Stands for: + + * L -> Linux + * E -> Nginx + * M -> Maria DB + * P -> PHP + + + +I am assuming **[Fedora 30][1]** is already installed on your system. + +![LEMP-Stack-Fedora30][2] + +LEMP is a collection of powerful software setup that is installed on a Linux server to help in developing popular development platforms to build websites, LEMP is a variation of LAMP wherein instead of **Apache** , **EngineX (Nginx)** is used as well as **MariaDB** used in place of **MySQL**. This how-to guide is a collection of separate guides to install Nginx, Maria DB and PHP. + +### Install Nginx, PHP 7.3 and PHP-FPM on Fedora 30 Server + +Let’s take a look at how to install Nginx and PHP along with PHP FPM on Fedora 30 Server. + +### Step 1) Switch to root user + +First step in installing Nginx in your system is to switch to root user. Use the following command : + +``` +root@linuxtechi ~]$ sudo -i +[sudo] password for pkumar: +[root@linuxtechi ~]# +``` + +### Step 2) Install Nginx, PHP 7.3 and PHP FPM using dnf command + +Install Nginx using the following dnf command: + +``` +[root@linuxtechi ~]# dnf install nginx php php-fpm php-common -y +``` + +### Step 3) Install Additional PHP modules + +The default installation of PHP only comes with the basic and the most needed modules installed. If you need additional modules like GD, XML support for PHP, command line interface Zend OPCache features etc, you can always choose your packages and install everything in one go. See the sample command below: + +``` +[root@linuxtechi ~]# sudo dnf install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y +``` + +### Step 4) Start & Enable Nginx and PHP-fpm Service + +Start and enable Nginx service using the following command + +``` +[root@linuxtechi ~]# systemctl start nginx && systemctl enable nginx +Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. +[root@linuxtechi ~]# +``` + +Use the following command to start and enable PHP-FPM service + +``` +[root@linuxtechi ~]# systemctl start php-fpm && systemctl enable php-fpm +Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service. +[root@linuxtechi ~]# +``` + +**Verify Nginx (Web Server) and PHP installation,** + +**Note:** In case OS firewall is enabled and running on your Fedora 30 system, then allow 80 and 443 ports using beneath commands, + +``` +[root@linuxtechi ~]# firewall-cmd --permanent --add-service=http +success +[root@linuxtechi ~]# +[root@linuxtechi ~]# firewall-cmd --permanent --add-service=https +success +[root@linuxtechi ~]# firewall-cmd --reload +success +[root@linuxtechi ~]# +``` + +Open the web browser, type the following URL: http:// + +[![Test-Page-HTTP-Server-Fedora-30][3]][4] + +Above screen confirms that NGINX is installed successfully. + +Now let’s verify PHP installation, create a test php page(info.php) using the beneath command, + +``` +[root@linuxtechi ~]# echo "" > /usr/share/nginx/html/info.php +[root@linuxtechi ~]# +``` + +Type the following URL in the web browser, + +http:///info.php + +[![Php-info-page-fedora30][5]][6] + +Above page confirms that PHP 7.3.5 has been installed successfully. Now let’s install MariaDB database server. + +### Install MariaDB on Fedora 30 + +MariaDB is a great replacement for MySQL DB as it is works much similar to MySQL and also compatible with MySQL steps too. Let’s look at the steps to install MariaDB on Fedora 30 Server + +### Step 1) Switch to Root User + +First step in installing MariaDB in your system is to switch to root user or you can use a local user who has root privilege. Use the following command below: + +``` +[root@linuxtechi ~]# sudo -i +[root@linuxtechi ~]# +``` + +### Step 2) Install latest version of MariaDB (10.3) using dnf command + +Use the following command to install MariaDB on Fedora 30 Server + +``` +[root@linuxtechi ~]# dnf install mariadb-server -y +``` + +### Step 3) Start and enable MariaDB Service + +Once the mariadb is installed successfully in step 2), next step is to start the MariaDB service. Use the following command: + +``` +[root@linuxtechi ~]# systemctl start mariadb.service ; systemctl enable mariadb.service +``` + +### Step 4) Secure MariaDB Installation + +When we install MariaDB server, so by default there is no root password, also anonymous users are created in database. So, to secure MariaDB installation, run the beneath “mysql_secure_installation” command + +``` +[root@linuxtechi ~]# mysql_secure_installation +``` + +Next you will be prompted with some question, just answer the questions as shown below: + +![Secure-MariaDB-Installation-Part1][7] + +![Secure-MariaDB-Installation-Part2][8] + +### Step 5) Test MariaDB Installation + +Once you have installed, you can always test if MariaDB is successfully installed on the server. Use the following command: + +``` +[root@linuxtechi ~]# mysql -u root -p +Enter password: +``` + +Next you will be prompted for a password. Enter the password same password that you have set during MariaDB secure installation, then you can see the MariaDB welcome screen. + +``` +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 17 +Server version: 10.3.12-MariaDB MariaDB Server + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +MariaDB [(none)]> +``` + +And finally, we’ve completed everything to install LEMP (Linux, Nginx, MariaDB and PHP) on your server successfully. Please post all your comments and suggestions in the feedback section below and we’ll respond back at the earliest. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/install-lemp-stack-fedora-30-server/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/fedora-30-workstation-installation-guide/ +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/06/LEMP-Stack-Fedora30.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Test-Page-HTTP-Server-Fedora-30-1024x732.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Test-Page-HTTP-Server-Fedora-30.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Php-info-page-fedora30-1024x732.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Php-info-page-fedora30.jpg +[7]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Secure-MariaDB-Installation-Part1.jpg +[8]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Secure-MariaDB-Installation-Part2.jpg From 4c3ede985d2da95f349fccadcebebeb0c90b8d8b Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:22:14 +0800 Subject: [PATCH 021/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190522=20How=20?= =?UTF-8?q?to=20Download=20and=20Use=20Ansible=20Galaxy=20Roles=20in=20Ans?= =?UTF-8?q?ible=20Playbook=20sources/tech/20190522=20How=20to=20Download?= =?UTF-8?q?=20and=20Use=20Ansible=20Galaxy=20Roles=20in=20Ansible=20Playbo?= =?UTF-8?q?ok.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nsible Galaxy Roles in Ansible Playbook.md | 193 ++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 sources/tech/20190522 How to Download and Use Ansible Galaxy Roles in Ansible Playbook.md diff --git a/sources/tech/20190522 How to Download and Use Ansible Galaxy Roles in Ansible Playbook.md b/sources/tech/20190522 How to Download and Use Ansible Galaxy Roles in Ansible Playbook.md new file mode 100644 index 0000000000..3bb9e39184 --- /dev/null +++ b/sources/tech/20190522 How to Download and Use Ansible Galaxy Roles in Ansible Playbook.md @@ -0,0 +1,193 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Download and Use Ansible Galaxy Roles in Ansible Playbook) +[#]: via: (https://www.linuxtechi.com/use-ansible-galaxy-roles-ansible-playbook/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +How to Download and Use Ansible Galaxy Roles in Ansible Playbook +====== + +**Ansible** is tool of choice these days if you must manage multiple devices, be it Linux, Windows, Mac, Network Devices, VMware and lot more. What makes Ansible popular is its agent less feature and granular control. If you have worked with python or have experience with **yaml** , you will feel at home with Ansible. To see how you can install [Ansible][1] click here. + + + +Ansible core modules will let you manage almost anything should you wish to write playbooks, however often there is someone who has already written a role for a problem you are trying to solve. Let’s take an example, you wish to manage NTP clients on the Linux machines, you have 2 choices either write a role which can be applied to the nodes or use **ansible-galaxy** to download an existing role someone has already written/tested for you. Ansible galaxy has roles for almost all the domains and these caters different problems. You can visit to get an idea on domains and popular roles it has. Each role published on galaxy repository is thoroughly tested and has been rated by the users, so you get an idea on how other people who have used it liked it. + +To keep moving with the NTP idea, here is how you can search and install an NTP role from galaxy. + +Firstly, lets run ansible-galaxy with the help flag to check what options does it give us + +``` +[root@linuxtechi ~]# ansible-galaxy --help +``` + +![ansible-galaxy-help][2] + +As you can see from the output above there are some interesting options been shown, since we are looking for a role to manage ntp clients lets try the search option to see how good it is finding what we are looking for. + +``` +[root@linuxtechi ~]# ansible-galaxy search ntp +``` + +Here is the truncated output of the command above. + +![ansible-galaxy-search][3] + +It found 341 matches based on our search, as you can see from the output above many of these roles are not even related to NTP which means our search needs some refinement however, it has managed to pull some NTP roles, lets dig deeper to see what these roles are. But before that let me tell you the naming convention being followed here. The name of a role is always preceded by the author name so that it is easy to segregate roles with the same name. So, if you have written an NTP role and have published it to galaxy repo, it does not get mixed up with someone else repo with the same name. + +With that out of the way, lets continue with our job of installing a NTP role for our Linux machines. Let’s try **bennojoy.ntp** for this example, but before using this we need to figure out couple of things, is this role compatible with the version of ansible I am running. Also, what is the license status of this role. To figure out these, let’s run below ansible-galaxy command, + +``` +[root@linuxtechi ~]# ansible-galaxy info bennojoy.ntp +``` + +![ansible-galaxy-info][4] + +ok so this says the minimum version is 1.4 and the license is BSD, lets download it + +``` +[root@linuxtechi ~]# ansible-galaxy install bennojoy.ntp +- downloading role 'ntp', owned by bennojoy +- downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz +- extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp +- bennojoy.ntp (master) was installed successfully +[root@linuxtechi ~]# ansible-galaxy list +- bennojoy.ntp, master +[root@linuxtechi ~]# +``` + +Let’s find the newly installed role. + +``` +[root@linuxtechi ~]# cd /etc/ansible/roles/bennojoy.ntp/ +[root@linuxtechi bennojoy.ntp]# ls -l +total 4 +drwxr-xr-x. 2 root root 21 May 21 22:38 defaults +drwxr-xr-x. 2 root root 21 May 21 22:38 handlers +drwxr-xr-x. 2 root root 48 May 21 22:38 meta +-rw-rw-r--. 1 root root 1328 Apr 20 2016 README.md +drwxr-xr-x. 2 root root 21 May 21 22:38 tasks +drwxr-xr-x. 2 root root 24 May 21 22:38 templates +drwxr-xr-x. 2 root root 55 May 21 22:38 vars +[root@linuxtechi bennojoy.ntp]# +``` + +I am going to run this newly downloaded role on my Elasticsearch CentOS node. Here is my hosts file + +``` +[root@linuxtechi ~]# cat hosts +[CentOS] +elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi +[root@linuxtechi ~]# +``` + +Let’s try to ping the node using below ansible ping module, + +``` +[root@linuxtechi ~]# ansible -m ping -i hosts elastic7-01 +elastic7-01 | SUCCESS => { + "changed": false, + "ping": "pong" +} +[root@linuxtechi ~]# +``` + +Here is what the current ntp.conf looks like on elastic node. + +``` +[root@linuxtechi ~]# head -30 /etc/ntp.conf +``` + +![Current-ntp-conf][5] + +Since I am in India, lets add server **in.pool.ntp.org** to ntp.conf. I would have to edit the variables in default directory of the role. + +``` +[root@linuxtechi ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml +``` + +Change NTP server address in “ntp_server” parameter, after updating it should look like below. + +![Update-ansible-ntp-role][6] + +The last thing now is to create my playbook which would call this role. + +``` +[root@linuxtechi ~]# vi ntpsite.yaml +--- + - name: Configure NTP on CentOS/RHEL/Debian System + become: true + hosts: all + roles: + - {role: bennojoy.ntp} +``` + +save and exit the file + +We are ready to run this role now, use below command to run ntp playbook, + +``` +[root@linuxtechi ~]# ansible-playbook -i hosts ntpsite.yaml +``` + +Output of above ntp ansible playbook should be something like below, + +![ansible-playbook-output][7] + +Let’s check updated file now. go to elastic node and view the contents of ntp.conf file + +``` +[root@linuxtechi ~]# cat /etc/ntp.conf +#Ansible managed + +driftfile /var/lib/ntp/drift +server in.pool.ntp.org + +restrict -4 default kod notrap nomodify nopeer noquery +restrict -6 default kod notrap nomodify nopeer noquery +restrict 127.0.0.1 +[root@linuxtechi ~]# +``` + +Just in case you do not find a role fulfilling your requirement ansible-galaxy can help you create a directory structure for your custom roles. This helps your playbooks along with the variables, handlers, templates etc assembled in a standardized file structure. Let’s create our own role, its always a good practice to let ansible-galaxy create the structure for you. + +``` +[root@linuxtechi ~]# ansible-galaxy init pk.backup +- pk.backup was created successfully +[root@linuxtechi ~]# +``` + +Verify the structure of your role using the tree command, + +![createing-roles-ansible-galaxy][8] + +Let me quickly explain what each of these directories and files are for, each of these serves a purpose. + +The very first one is the **defaults** directory which contains the files containing variables with takes the lowest precedence, if the same variables are assigned in var directory it will be take precedence over default. The **handlers** directory hosts the handlers. The **file** and **templates** keep any files your role may need to copy and **jinja templates** to be used in playbooks respectively. The **tasks** directory is where your playbooks containing the tasks are kept. The var directory consists of all the files that hosts the variables used in role. The test directory consists of a sample inventory and test playbooks which can be used to test the role. The **meta directory** consists of any dependencies on other roles along with the authorship information. + +Finally, **README.md** file simply consists of some general information like description and minimum version of ansible this role is compatible with. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/use-ansible-galaxy-roles-ansible-playbook/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/install-and-use-ansible-in-centos-7/ +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/05/ansible-galaxy-help-1024x294.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/05/ansible-galaxy-search-1024x552.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/05/ansible-galaxy-info-1024x557.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Current-ntp-conf.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Update-ansible-ntp-role.jpg +[7]: https://www.linuxtechi.com/wp-content/uploads/2019/05/ansible-playbook-output-1024x376.jpg +[8]: https://www.linuxtechi.com/wp-content/uploads/2019/05/createing-roles-ansible-galaxy.jpg From 9e68157669c3cb10ccae4786187da2dc17a0bd83 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:22:26 +0800 Subject: [PATCH 022/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190516=20Monito?= =?UTF-8?q?r=20and=20Manage=20Docker=20Containers=20with=20Portainer.io=20?= =?UTF-8?q?(GUI=20tool)=20=E2=80=93=20Part-2=20sources/tech/20190516=20Mon?= =?UTF-8?q?itor=20and=20Manage=20Docker=20Containers=20with=20Portainer.io?= =?UTF-8?q?=20(GUI=20tool)=20-=20Part-2.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s with Portainer.io (GUI tool) - Part-2.md | 244 ++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 sources/tech/20190516 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-2.md diff --git a/sources/tech/20190516 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-2.md b/sources/tech/20190516 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-2.md new file mode 100644 index 0000000000..58a9459a41 --- /dev/null +++ b/sources/tech/20190516 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-2.md @@ -0,0 +1,244 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Monitor and Manage Docker Containers with Portainer.io (GUI tool) – Part-2) +[#]: via: (https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-io-part-2/) +[#]: author: (Shashidhar Soppin https://www.linuxtechi.com/author/shashidhar/) + +Monitor and Manage Docker Containers with Portainer.io (GUI tool) – Part-2 +====== + +As a continuation of Part-1, this part-2 has remaining features of Portainer covered and as explained below. + +### Monitoring docker container images + +``` +root@linuxtechi ~}$ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +9ab9aa72f015 ubuntu "/bin/bash" 14 seconds ago Exited (0) 12 seconds ago suspicious_shannon +305369d3b2bb centos "/bin/bash" 24 seconds ago Exited (0) 22 seconds ago admiring_mestorf +9a669f3dc4f6 portainer/portainer "/portainer" 7 minutes ago Up 7 minutes 0.0.0.0:9000->9000/tcp trusting_keller +``` + +Including the portainer(which is a docker container image), all the exited and present running docker images are displayed. Below screenshot from Portainer GUI displays the same. + +[![Docker_status][1]][2] + +### Monitoring events + +Click on the “Events” option from the portainer webpage as shown below. + +Various events that are generated and created based on docker-container activity, are captured and displayed in this page + +[![Container-Events-Poratiner-GUI][3]][4] + +Now to check and validate how the “ **Events** ” section works. Create a new docker-container image redis as explained below, check the docker ps –a status at docker command-line. + +``` +root@linuxtechi ~}$ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +cdbfbef59c31 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp angry_varahamihira +9ab9aa72f015 ubuntu "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago suspicious_shannon +305369d3b2bb centos "/bin/bash" 11 minutes ago Exited (0) 11 minutes ago admiring_mestorf +9a669f3dc4f6 portainer/portainer "/portainer" 17 minutes ago Up 17 minutes 0.0.0.0:9000->9000/tcp trusting_keller +``` + +Click the “Event List” on the top to refresh the events list, + +[![events_updated][5]][6] + +Now the event’s page also updated with this change, + +### Host status + +Below is the screenshot of the portainer displaying the host status. This is a simple window showing-up. This shows the basic info like “CPU”, “hostname”, “OS info” etc of the host linux machine. Instead of logging- into the host command-line, this page provides very useful info on for quick glance. + +[![Host-names-Portainer][7]][8] + +### Dashboard in Portainer + +Until now we have seen various features of portainer based under “ **Local”** section. Now jump on to the “ **Dashboard** ” section of the selected Docker Container image. + +When “ **EndPoint** ” option is clicked in the GUI of Portainer, the following window appears, + +[![End_Point_Settings][9]][10] + +This Dashboard has many statuses and options, for a host container image. + +**1) Stacks:** Clicking on this option, provides status of any stacks if any. Since there are no stacks, this displays zero. + +**2) Images:** Clicking on this option provides host of container images that are available. This option will display all the live and exited container images + +[![Docker-Container-Images-Portainer][11]][12] + +For example create one more “ **Nginx”** container and refresh this list to see the updates. + +``` +root@linuxtechi ~}$ sudo docker run nginx +Unable to find image 'nginx:latest' locally +latest: Pulling from library/nginx +27833a3ba0a5: Pull complete +ea005e36e544: Pull complete +d172c7f0578d: Pull complete +Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c +Status: Downloaded newer image for nginx:latest +``` + +The following is the image after refresh, + +[![Nginx_Image_creation][13]][14] + +Once the Nginx image is stopped/killed and docker container image will be moved to unused status. + +**Note** :-One can see all the image details here are very clear with memory usage, creation date and time. As compared to command-line option, maintaining and monitoring containers from here it will be very easy. + +**3) Networks:** this option is used for network operations. Like assigning IP address, creating subnets, providing IP address range, access control (admin and normal user) . The following window provides the details of various options possible. Based on your need these options can be explored further. + +[![Conatiner-Network-Portainer][15]][16] + +Once all the various networking parameters are entered, “ **create network** ” button is clicked for creating the network. + +**4) Container:** (click on container) This option will provide the container status. This list will provide details on live and not running container statuses. This output is similar to docker ps command option. + +[![Containers-Status-Portainer][17]][18] + +From this window only the containers can be stopped and started as need arises by checking the check box and selecting the above buttons. One example is provided as below, + +Example, Both “CentOS” and “Ubuntu” containers which are in stopped state, they are started now by selecting check boxes and hitting “Start” button. + +[![start_containers1][19]][20] + +[![start_containers2][21]][22] + +**Note:** Since both are Linux container images, they will not be started. Portainer tries to start and stops later. Try “Nginx” instead and you can see it coming to “running”status. + +[![start_containers3][23]][24] + +**5) Volume:** Described in Part-I of Portainer Article + +### Setting option in Portainer + +Until now we have seen various features of portainer based under “ **Local”** section. Now jump on to the “ **Setting”** section of the selected Docker Container image. + +When “Settings” option is clicked in the GUI of Portainer, the following further configuration options are available, + +**1) Extensions** : This is a simple Portainer CE subscription process. The details and uses can be seen from the attached window. This is mainly used for maintaining the license and subscription of the respective version. + +[![Extensions][25]][26] + +**2) Users:** This option is used for adding “users” with or without administrative privileges. Following example provides the same. + +Enter the selected user name “shashi” in this case and your choice of password and hit “ **Create User** ” button below. + +[![create_user_portainer][27]][28] + +[![create_user2_portainer][29]][30] + +[![Internal-user-Portainer][31]][32] + +Similarly the just now created user “shashi” can be removed by selecting the check box and hitting remove button. + +[![user_remove_portainer][33]][34] + +**3) Endpoints:** this option is used for Endpoint management. Endpoints can be added and removed as shown in the attached windows. + +[![Endpoint-Portainer-GUI][35]][36] + +The new endpoint “shashi” is created using the various default parameters as shown below, + +[![Endpoint2-Portainer-GUI][37]][38] + +Similarly this endpoint can be removed by clicking the check box and hitting remove button. + +**4) Registries:** this option is used for registry management. As docker hub has registry of various images, this feature can be used for similar purposes. + +[![Registry-Portainer-GUI][39]][40] + +With the default options the “shashi-registry” can be created. + +[![Registry2-Portainer-GUI][41]][42] + +Similarly this can be removed if not required. + +**5) Settings:** This option is used for the following various options, + + * Setting-up snapshot interval + * For using custom logo + * To create external templates + * Security features like- Disable and enable bin mounts for non-admins, Disable/enable privileges for non-admins, Enabling host management features + + + +Following screenshot shows some options enabled and disabled for demonstration purposes. Once all done hit on “Save Settings” button to save all these options. + +[![Portainer-GUI-Settings][43]][44] + +Now one more option pops-up on “Authentication settings” for LDAP, Internal or OAuth extension as shown below” + +[![Authentication-Portainer-GUI-Settings][45]][46] + +Based on what level of security features we want for our environment, respective option is chosen. + +That’s all from this article, I hope these Portainer GUI articles helps you to manage and monitor containers more efficiently. Please do share your feedback and comments. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-io-part-2/ + +作者:[Shashidhar Soppin][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.linuxtechi.com/author/shashidhar/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Docker_status-1024x423.jpg +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Docker_status.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Events-1024x404.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Events.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/05/events_updated-1024x414.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/05/events_updated.jpg +[7]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Host_names-1024x408.jpg +[8]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Host_names.jpg +[9]: https://www.linuxtechi.com/wp-content/uploads/2019/05/End_Point_Settings-1024x471.jpg +[10]: https://www.linuxtechi.com/wp-content/uploads/2019/05/End_Point_Settings.jpg +[11]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Images-1024x398.jpg +[12]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Images.jpg +[13]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Nginx_Image_creation-1024x439.jpg +[14]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Nginx_Image_creation.jpg +[15]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Network-1024x463.jpg +[16]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Network.jpg +[17]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Containers-1024x364.jpg +[18]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Containers.jpg +[19]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers1-1024x432.jpg +[20]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers1.jpg +[21]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers2-1024x307.jpg +[22]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers2.jpg +[23]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers3-1024x435.jpg +[24]: https://www.linuxtechi.com/wp-content/uploads/2019/05/start_containers3.jpg +[25]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Extensions-1024x421.jpg +[26]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Extensions.jpg +[27]: https://www.linuxtechi.com/wp-content/uploads/2019/05/create_user-1024x350.jpg +[28]: https://www.linuxtechi.com/wp-content/uploads/2019/05/create_user.jpg +[29]: https://www.linuxtechi.com/wp-content/uploads/2019/05/create_user2-1024x372.jpg +[30]: https://www.linuxtechi.com/wp-content/uploads/2019/05/create_user2.jpg +[31]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Internal-user-Portainer-1024x257.jpg +[32]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Internal-user-Portainer.jpg +[33]: https://www.linuxtechi.com/wp-content/uploads/2019/05/user_remove-1024x318.jpg +[34]: https://www.linuxtechi.com/wp-content/uploads/2019/05/user_remove.jpg +[35]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Endpoint-1024x349.jpg +[36]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Endpoint.jpg +[37]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Endpoint2-1024x379.jpg +[38]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Endpoint2.jpg +[39]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Registry-1024x420.jpg +[40]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Registry.jpg +[41]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Registry2-1024x409.jpg +[42]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Registry2.jpg +[43]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-GUI-Settings-1024x418.jpg +[44]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-GUI-Settings.jpg +[45]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Authentication-Portainer-GUI-Settings-1024x344.jpg +[46]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Authentication-Portainer-GUI-Settings.jpg From 890a24c9bf3434a9cbe735599249cb7532dbfa8c Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:22:44 +0800 Subject: [PATCH 023/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190512=20How=20?= =?UTF-8?q?to=20Setup=20Local=20Yum/DNF=20Repository=20on=20RHEL=208=20Ser?= =?UTF-8?q?ver=20Using=20DVD=20or=20ISO=20File=20sources/tech/20190512=20H?= =?UTF-8?q?ow=20to=20Setup=20Local=20Yum-DNF=20Repository=20on=20RHEL=208?= =?UTF-8?q?=20Server=20Using=20DVD=20or=20ISO=20File.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... on RHEL 8 Server Using DVD or ISO File.md | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 sources/tech/20190512 How to Setup Local Yum-DNF Repository on RHEL 8 Server Using DVD or ISO File.md diff --git a/sources/tech/20190512 How to Setup Local Yum-DNF Repository on RHEL 8 Server Using DVD or ISO File.md b/sources/tech/20190512 How to Setup Local Yum-DNF Repository on RHEL 8 Server Using DVD or ISO File.md new file mode 100644 index 0000000000..c136a83deb --- /dev/null +++ b/sources/tech/20190512 How to Setup Local Yum-DNF Repository on RHEL 8 Server Using DVD or ISO File.md @@ -0,0 +1,164 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Setup Local Yum/DNF Repository on RHEL 8 Server Using DVD or ISO File) +[#]: via: (https://www.linuxtechi.com/setup-local-yum-dnf-repository-rhel-8/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +How to Setup Local Yum/DNF Repository on RHEL 8 Server Using DVD or ISO File +====== + +Recently Red Hat has released its most awaited operating system “ **RHEL 8** “, in case you have installed RHEL 8 Server on your system and wondering how to setup local yum or dnf repository using installation DVD or ISO file then refer below steps and procedure. + + + +In RHEL 8, we have two package repositories: + + * BaseOS + * Application Stream + + + +BaseOS repository have all underlying OS packages where as Application Stream repository have all application related packages, developer tools and databases etc. Using Application stream repository, we can have multiple of versions of same application and Database. + +### Step:1) Mount RHEL 8 ISO file / Installation DVD + +To mount RHEL 8 ISO file inside your RHEL 8 server use the beneath mount command, + +``` +[root@linuxtechi ~]# mount -o loop rhel-8.0-x86_64-dvd.iso /opt/ +``` + +**Note:** I am assuming you have already copied RHEL 8 ISO file inside your system, + +In case you have RHEL 8 installation DVD, then use below mount command to mount it, + +``` +[root@linuxtechi ~]# mount /dev/sr0 /opt +``` + +### Step:2) Copy media.repo file from mounted directory to /etc/yum.repos.d/ + +In our case RHEL 8 Installation DVD or ISO file is mounted under /opt folder, use cp command to copy media.repo file to /etc/yum.repos.d/ directory, + +``` +[root@linuxtechi ~]# cp -v /opt/media.repo /etc/yum.repos.d/rhel8.repo +'/opt/media.repo' -> '/etc/yum.repos.d/rhel8.repo' +[root@linuxtechi ~]# +``` + +Set “644” permission on “ **/etc/yum.repos.d/rhel8.repo** ” + +``` +[root@linuxtechi ~]# chmod 644 /etc/yum.repos.d/rhel8.repo +[root@linuxtechi ~]# +``` + +### Step:3) Add repository entries in “/etc/yum.repos.d/rhel8.repo” file + +By default, **rhel8.repo** file will have following content, + + + +Edit rhel8.repo file and add the following contents, + +``` +[root@linuxtechi ~]# vi /etc/yum.repos.d/rhel8.repo +[InstallMedia-BaseOS] +name=Red Hat Enterprise Linux 8 - BaseOS +metadata_expire=-1 +gpgcheck=1 +enabled=1 +baseurl=file:///opt/BaseOS/ +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release + +[InstallMedia-AppStream] +name=Red Hat Enterprise Linux 8 - AppStream +metadata_expire=-1 +gpgcheck=1 +enabled=1 +baseurl=file:///opt/AppStream/ +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release +``` + +rhel8.repo should look like above once we add the content, In case you have mounted the Installation DVD or ISO on different folder then change the location and folder name in base url line for both repositories and rest of parameter leave as it is. + +### Step:4) Clean Yum / DNF and Subscription Manager Cache + +Use the following command to clear yum or dnf and subscription manager cache, + +``` +root@linuxtechi ~]# dnf clean all +[root@linuxtechi ~]# subscription-manager clean +All local data removed +[root@linuxtechi ~]# +``` + +### Step:5) Verify whether Yum / DNF is getting packages from Local Repo + +Use dnf or yum repolist command to verify whether these commands are getting packages from Local repositories or not. + +``` +[root@linuxtechi ~]# dnf repolist +Updating Subscription Management repositories. +Unable to read consumer identity +This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. +Last metadata expiration check: 1:32:44 ago on Sat 11 May 2019 08:48:24 AM BST. +repo id repo name status +InstallMedia-AppStream Red Hat Enterprise Linux 8 - AppStream 4,672 +InstallMedia-BaseOS Red Hat Enterprise Linux 8 - BaseOS 1,658 +[root@linuxtechi ~]# +``` + +**Note :** You can use either dnf or yum command, if you use yum command then its request is redirecting to DNF itself because in RHEL 8 yum is based on DNF command. + +If you have noticed the above command output carefully, we are getting warning message “ **This system is not registered to Red Hat Subscription Management**. **You can use subscription-manager to register”** , if you want to suppress or prevent this message while running dnf / yum command then edit the file “/etc/yum/pluginconf.d/subscription-manager.conf”, changed the parameter “enabled=1” to “enabled=0” + +``` +[root@linuxtechi ~]# vi /etc/yum/pluginconf.d/subscription-manager.conf +[main] +enabled=0 +``` + +save and exit the file. + +### Step:6) Installing packages using DNF / Yum + +Let’s assume we want to install nginx web server then run below dnf command, + +``` +[root@linuxtechi ~]# dnf install nginx +``` + +![][1] + +Similarly if you want to install **LEMP** stack on your RHEL 8 system use the following dnf command, + +``` +[root@linuxtechi ~]# dnf install nginx mariadb php -y +``` + +[![][2]][3] + +This confirms that we have successfully configured Local yum / dnf repository on our RHEL 8 server using Installation DVD or ISO file. + +In case these steps help you technically, please do share your feedback and comments. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/setup-local-yum-dnf-repository-rhel-8/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/wp-content/uploads/2019/05/dnf-install-nginx-rhel8-1024x376.jpg +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/05/LEMP-Stack-Install-RHEL8-1024x540.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/05/LEMP-Stack-Install-RHEL8.jpg From 0c4e96c20ea52a495b78cfc16caea15387039640 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:22:58 +0800 Subject: [PATCH 024/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190509=20Red=20?= =?UTF-8?q?Hat=20Enterprise=20Linux=20(RHEL)=208=20Installation=20Steps=20?= =?UTF-8?q?with=20Screenshots=20sources/tech/20190509=20Red=20Hat=20Enterp?= =?UTF-8?q?rise=20Linux=20(RHEL)=208=20Installation=20Steps=20with=20Scree?= =?UTF-8?q?nshots.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...) 8 Installation Steps with Screenshots.md | 256 ++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 sources/tech/20190509 Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots.md diff --git a/sources/tech/20190509 Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots.md b/sources/tech/20190509 Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots.md new file mode 100644 index 0000000000..0b2d9e55c6 --- /dev/null +++ b/sources/tech/20190509 Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots.md @@ -0,0 +1,256 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots) +[#]: via: (https://www.linuxtechi.com/rhel-8-installation-steps-screenshots/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +Red Hat Enterprise Linux (RHEL) 8 Installation Steps with Screenshots +====== + +Red Hat has released its most awaited OS **RHEL 8** on 7th May 2019. RHEL 8 is based on **Fedora 28** distribution and Linux **kernel version 4.18**. One of the important key features in RHEL 8 is that it has introduced “ **Application Streams** ” which allows developers tools, frameworks and languages to be updated frequently without impacting the core resources of base OS. In other words, application streams will help to segregate the users space packages from OS Kernel Space. + +Apart from this, there are many new features which are noticed in RHEL 8 like: + + * XFS File system supports copy-on-write of file extents + * Introduction of Stratis filesystem, Buildah, Podman, and Skopeo + * Yum utility is based on DNF + * Chrony replace NTP. + * Cockpit is the default Web Console tool for Server management. + * OpenSSL 1.1.1 & TLS 1.3 support + * PHP 7.2 + * iptables replaced by nftables + + + +### Minimum System Requirements for RHEL 8: + + * 4 GB RAM + * 20 GB unallocated disk space + * 64-bit x86 or ARM System + + + +**Note:** RHEL 8 supports the following architectures: + + * AMD or Intel x86 64-bit + * 64-bit ARM + * IBM Power Systems, Little Endian & IBM Z + + + +In this article we will demonstrate how to install RHEL 8 step by step with screenshots. + +### RHEL 8 Installation Steps with Screenshots + +### Step:1) Download RHEL 8.0 ISO file + +Download RHEL 8 iso file from its official web site, + + + +I am assuming you have the active subscription if not then register yourself for evaluation and then download ISO file + +### Step:2) Create Installation bootable media (USB or DVD) + +Once you have downloaded RHEL 8 ISO file, make it bootable by burning it either into a USB drive or DVD. Reboot the target system where you want to install RHEL 8 and then go to its bios settings and set the boot medium as USB or DVD, + +### Step:3) Choose “Install Red Hat Enterprise Linux 8.0” option + +When the system boots up with installation media (USB or DVD), we will get the following screen, choose “ **Install Red Hat Enterprise Linux 8.0** ” and hit enter, + + + +### Step:4) Choose your preferred language for RHEL 8 installation + +In this step, you need to choose a language that you want to use for RHEL 8 installation, so make a selection that suits to your setup. + + + +Click on Continue + +### Step:5) Preparing RHEL 8 Installation + +In this step we will decide the installation destination for RHEL 8, apart from this we can configure the followings: + + * Time Zone + * Kdump (enabled/disabled) + * Software Selection (Packages) + * Networking and Hostname + * Security Policies & System purpose + + + + + +By default, installer will automatically pick time zone and will enable the **kdump** , if wish to change the time zone then click on “ **Time & Date**” option and set your preferred time zone and then click on Done. + + + +To configure IP address and Hostname click on “ **Network & Hostname**” option from installation summary screen, + +If your system is connected to any switch or modem, then it will try to get IP from DHCP server otherwise we can configure IP manually. + +Mention the hostname that you want to set and then click on “ **Apply”**. Once you are done with IP address and hostname configuration click on “Done” + + + +To define the installation disk and partition scheme for RHEL 8, click on “ **Installation Destination** ” option, + + + +Click on Done + +As we can see I have around 60 GB free disk space on sda drive, I will be creating following customize lvm based partitions on this disk, + + * /boot = 2GB (xfs file system) + * / = 20 GB (xfs file system) + * /var = 10 GB (xfs file system) + * /home = 15 GB (xfs file system) + * /tmp = 5 GB (xfs file system) + * Swap = 2 GB (xfs file system) + + + +**Note:** If you don’t want to create manual partitions then select “ **Automatic** ” option from Storage Configuration Tab + + + +Let’s create our first partition as /boot of size 2 GB, Select LVM as mount point partitioning scheme and then click on + “plus” symbol, + + + +Click on “ **Add mount point** ” + + + +To create next partition as / of size 20 GB, click on + symbol and specify the details as shown below, + + + +Click on “Add mount point” + + + +As we can see installer has created the Volume group as “ **rhel_rhel8** “, if you want to change this name then click on Modify option and specify the desired name and then click on Save + + + +Now onward all partitions will be part of Volume Group “ **VolGrp** ” + +Similarly create next three partitions **/home** , **/var** and **/tmp** of size 15GB, 10 GB and 5 GB respectively + +**/home partition:** + + + +**/var partition:** + + + +**/tmp partition:** + + + +Now finally create last partition as swap of size of 2 GB, + + + +Click on “Add mount point” + +Once you are done with partition creations, click on Done on Next screen, example is shown below + + + +In the next window, choose “ **Accept Changes** ” + + + +### Step:6) Select Software Packages and Choose Security Policy and System purpose + +After accepting the changes in above step, we will be redirected to installation summary window. + +By default, installer will select “ **Server with GUI”** as software packages and if you want to change it then click on “ **Software Selection** ” option and choose your preferred “ **Basic Environment** ” + + + +Click on Done + +If you want to set the security policies during the installation, the choose the required profile from Security polices option else you can leave as it is. + +From “ **System Purpose** ” option specify the Role, Red Hat Service Level Agreement and Usage. Though You can leave this option as it is. + + + +Click on Done to proceed further. + +### Step:7) Choose “Begin Installation” option to start installation + +From the Installation summary window click on “Begin Installation” option to start the installation, + + + +As we can see below RHEL 8 Installation is started & is in progress + + + +Set the root password, + + + +Specify the local user details like its Full Name, user name and its password, + + + +Once the installation is completed, installer will prompt us to reboot the system, + + + +Click on “Reboot” to restart your system and don’t forget to change boot medium from bios settings so that system boots up with hard disk. + +### Step:8) Initial Setup after installation + +When the system is rebooted first time after the successful installation then we will get below window there we need to accept the license (EULA), + + + +Click on Done, + +In the next Screen click on “ **Finish Configuration** ” + + + +### Step:8) Login Screen of RHEL 8 Server after Installation + +As we have installed RHEL 8 Server with GUI, so we will get below login screen, use the same user name and password that we created during the installation + + + +After the login we will get couple of Welcome Screen and follow the screen instructions and then finally we will get the following screen, + + + +Click on “Start Using Red Hat Enterprise Linux” + + + +This confirms that we have successfully installed RHEL 8, that’s all from this article. We will be writing articles on RHEL 8 in the coming future till then please do share your feedback and comments on this article. + +Read Also :** [How to Setup Local Yum/DNF Repository on RHEL 8 Server Using DVD or ISO File][1]** + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/rhel-8-installation-steps-screenshots/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/setup-local-yum-dnf-repository-rhel-8/ From da43fe1df1d02716b7bdea06fef87c6ac353aa83 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:23:11 +0800 Subject: [PATCH 025/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190504=20Fedora?= =?UTF-8?q?=2030=20Workstation=20Installation=20Guide=20with=20Screenshots?= =?UTF-8?q?=20sources/tech/20190504=20Fedora=2030=20Workstation=20Installa?= =?UTF-8?q?tion=20Guide=20with=20Screenshots.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ion Installation Guide with Screenshots.md | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 sources/tech/20190504 Fedora 30 Workstation Installation Guide with Screenshots.md diff --git a/sources/tech/20190504 Fedora 30 Workstation Installation Guide with Screenshots.md b/sources/tech/20190504 Fedora 30 Workstation Installation Guide with Screenshots.md new file mode 100644 index 0000000000..9e0ebd4381 --- /dev/null +++ b/sources/tech/20190504 Fedora 30 Workstation Installation Guide with Screenshots.md @@ -0,0 +1,207 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Fedora 30 Workstation Installation Guide with Screenshots) +[#]: via: (https://www.linuxtechi.com/fedora-30-workstation-installation-guide/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +Fedora 30 Workstation Installation Guide with Screenshots +====== + +If you are a **Fedora distribution** lover and always try the things at Fedora Workstation and Servers, then it is good news for you as Fedora has released its latest OS edition as **Fedora 30** for the Workstation and Server. One of the important updates in Fedora 30 from its previous release is that it has introduced **Fedora CoreOS** as a replacement of Fedora Atomic host. + +Some other noticeable updates in Fedora 30 are listed beneath: + + * Updated Desktop Gnome 3.32 + * New Linux Kernel 5.0.9 + * Updated Bash Version 5.0, PHP 7.3 & GCC 9 + * Updated Python 3.7.3, JDK12, Ruby 2.6 Mesa 19.0.2 and Golang 1.12 + * Improved DNF (Default Package Manager) + + + +In this article we will walk through the Fedora 30 workstation Installation steps for laptop or desktop. + +**Following are the minimum system requirement for Fedora 30 workstation,** + + * 1GHz Processor (Recommended 2 GHz Dual Core processor) + * 2 GB RAM + * 15 GB unallocated Hard Disk + * Bootable Media (USB / DVD) + * nternet Connection (Optional) + + + +Let’s Jump into Installation steps, + +### Step:1) Download Fedora 30 Workstation ISO File + +Download the Fedora 30 Workstation ISO file on your system from its Official Web Site + + + +Once the ISO file is downloaded, then burn it either in USB drive or DVD and make it bootable. + +### Step:2) Boot Your Target System with Bootable media (USB Drive or DVD) + +Reboot your target machine (i.e. machine where you want to install Fedora 30), Set the boot medium as USB or DVD from Bios settings so system boots up with bootable media. + +### Step:3) Choose Start Fedora-Workstation-30 Live + +When the system boots up with bootable media then we will get the following screen, to begin with installation on your system’s hard disk, choose “ **Start Fedora-Workstation-30 Live** “, + + + +### Step:4) Select Install to Hard Drive Option + +Select “ **Install to Hard Drive** ” option to install Fedora 30 on your system’s hard disk, you can also try Fedora on your system without installing it, for that select “ **Try Fedora** ” Option + + + +### Step:5) Choose appropriate language for your Fedora 30 Installation + +In this step choose your language which will be used during Fedora 30 Installation, + + + +Click on Continue + +### Step:6) Choose Installation destination and partition Scheme + +In the next window we will be present the following screen, here we will choose our installation destination, means on which hard disk we will do installation + + + +In the next screen we will see the local available hard disk, select the disk that suits your installation and then choose how you want to create partitions on it from storage configuration tab. + +If you choose “ **Automatic** ” partition scheme, then installer will create the necessary partition for your system automatically but if you want to create your own customize partition scheme then choose “ **Custom** ” option, + + + +Click on Done + +In this article I will demonstrate how to create [**LVM**][1] based custom partitions, in my case I have around 40 GB unallocated hard drive, so I will be creating following partitions on it, + + * /boot = 2 GB (ext4 file system) + * /home = 15 GB (ext4 file system) + * /var = 10 GB (ext4 file system) + * / = 10 GB (ext4 file system) + * Swap = 2 GB + + + + + +Select “ **LVM** ” as partitioning scheme and then click on plus (+) symbol, + +Specify the mount point as /boot and partition size as 2 GB and then click on “Add mount point” + + + + + +Now create next partition as /home of size 15 GB, Click on + symbol + + + +Click on “ **Add mount point** ” + + + +If you might have noticed, /home partition is created as LVM partition under default Volume Group, if you wish to change default Volume Group name then click on “ **Modify** ” option from Volume Group Tab, + +Mention the Volume Group name you want to set and then click on Save. Now onward all the LVM partition will be part of fedora30 volume group. + + + +Similarly create the next two partitions **/var** and **/** of size 10 GB respectively, + +**/var partition:** + + + +**/ (slash) partition:** + + + +Now create the last partition as swap of size 2 GB, + + + +In the next window, click on Done + + + +In the next screen, choose “ **Accept Changes** ” + + + +Now we will get Installation Summary window, here you can also change the time zone that suits to your installation and then click on “ **Begin Installation** ” + + + +### Step:7) Fedora 30 Installation started + +In this step we can see Fedora 30 Installation has been started and it is in progress, + + + +Once the Installation is completed, you will be prompted to restart your system + + + +Click on Quit and reboot your system. + +Don’t forget the Change boot medium from Bios settings so your system boots up with hard disk. + +### Step:8) Welcome message and login Screen after reboot + +When we first time reboot Fedora 30 system after the successful installation, we will get below welcome screen, + + + +Click on Next + +In the next screen you can Sync your online accounts or else you can skip, + + + +In the next window you will be required to specify the local account (user name) and its password, later this account will be used to login to the system + + + + + +Click on Next + +And finally, we will get below screen which confirms that we are ready to use Fedora 30, + + + +Click on “ **Start Using Fedora** ” + + + +Above Gnome Desktop Screen confirms that we have successfully installed Fedora 30 Workstation, now explore it and have fun 😊 + +In Fedora 30 workstation, if you want to install any packages or software from command line use DNF command. + +Read More On: **[26 DNF Command Examples for Package Management in Fedora Linux][2]** + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/fedora-30-workstation-installation-guide/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/lvm-good-way-to-utilize-disks-space/ +[2]: https://www.linuxtechi.com/dnf-command-examples-rpm-management-fedora-linux/ From 34d92e80e443cbfed0ea64e9418908fe16425adc Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 12:23:23 +0800 Subject: [PATCH 026/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190501=20Monito?= =?UTF-8?q?r=20and=20Manage=20Docker=20Containers=20with=20Portainer.io=20?= =?UTF-8?q?(GUI=20tool)=20=E2=80=93=20Part-1=20sources/tech/20190501=20Mon?= =?UTF-8?q?itor=20and=20Manage=20Docker=20Containers=20with=20Portainer.io?= =?UTF-8?q?=20(GUI=20tool)=20-=20Part-1.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s with Portainer.io (GUI tool) - Part-1.md | 247 ++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 sources/tech/20190501 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-1.md diff --git a/sources/tech/20190501 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-1.md b/sources/tech/20190501 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-1.md new file mode 100644 index 0000000000..27bf04eb05 --- /dev/null +++ b/sources/tech/20190501 Monitor and Manage Docker Containers with Portainer.io (GUI tool) - Part-1.md @@ -0,0 +1,247 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Monitor and Manage Docker Containers with Portainer.io (GUI tool) – Part-1) +[#]: via: (https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-part1/) +[#]: author: (Shashidhar Soppin https://www.linuxtechi.com/author/shashidhar/) + +Monitor and Manage Docker Containers with Portainer.io (GUI tool) – Part-1 +====== + +As **Docker** usage and adoption is growing faster and faster, monitoring **Docker container** images is becoming more challenging. As multiple Docker container images are getting created day-by-day, monitoring them is very important. There are already some in built tools and technologies, but configuring them is little complex. As micro-services based architecture is becoming the de-facto standard in coming days, learning such tool adds one more arsenal to your tool-set. + +Based on the above scenarios, there was in need of one light weight and robust tool requirement was growing. So Portainer.io addressed this. “ **Portainer.io** “,(Latest version is 1.20.2) the tool is very light weight(with 2-3 commands only one can configure it) and has become popular among Docker users. + +**This tool has advantages over other tools; some of these are as below** , + + * Light weight (requires only 2-3 commands to be required to run to install this tool) {Also installation image is only around 26-30MB of size) + * Robust and easy to use + * Can be used for Docker monitor and Build + * This tool provides us a detailed overview of your Docker environments + * This tool allows us to manage your containers, images, networks and volumes. + * Portainer is simple to deploy – this requires just one Docker command (can be run from anywhere.) + * Complete Docker-container environment can be monitored easily + + + +**Portainer is also equipped with** , + + * Community support + * Enterprise support + * Has professional services available(along with partner OEM services) + + + +**Functionality and features of Portainer tool are,** + + 1. It comes-up with nice Dashboard, easy to use and monitor. + 2. Many in-built templates for ease of operation and creation + 3. Support of services (OEM, Enterprise level) + 4. Monitoring of Containers, Images, Networks, Volume and configuration at almost real-time. + 5. Also includes Docker-Swarm monitoring + 6. User management with many fancy capabilities + + + +**Read Also :[How to Install Docker CE on Ubuntu 16.04 / 18.04 LTS System][1]** + +### How to install and configure Portainer.io on Ubuntu Linux / RHEL / CentOS + +**Note:** This installation is done on Ubuntu 18.04 but the installation on RHEL & CentOS would be same. We are assuming Docker CE is already installed on your system. + +``` +root@linuxtechi:~$ lsb_release -a +No LSB modules are available. +Distributor ID: Ubuntu +Description: Ubuntu 18.04 LTS +Release: 18.04 +Codename: bionic +root@linuxtechi:~$ +``` + +Create the Volume for portainer + +``` +root@linuxtechi:~$ sudo docker volume create portainer_data +portainer_data +root@linuxtechi:~$ +``` + +Launch and start Portainer Container using the beneath docker command, + +``` +root@linuxtechi:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer +Unable to find image 'portainer/portainer:latest' locally +latest: Pulling from portainer/portainer +d1e017099d17: Pull complete +0b1e707a06d2: Pull complete +Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d +Status: Downloaded newer image for portainer/portainer:latest +35286de9f2e21d197309575bb52b5599fec24d4f373cc27210d98abc60244107 +root@linuxtechi:~$ +``` + +Once the complete installation is done, use the ip of host or Docker using port 9000 of the Docker engine where portainer is running using your browser. + +**Note:** If OS firewall is enabled on your Docker host then make sure 9000 port is allowed else its GUI will not come up. + +In my case, IP address of my Docker Host / Engine is “192.168.1.16” so URL will be, + + + +[![Portainer-Login-User-Name-Password][2]][3] + +Please make sure that you enter 8-character passwords. Let the admin be the user as it is and then click “Create user”. + +Now the following screen appears, in this select “Local” rectangle box. + +[![Connect-Portainer-Local-Docker][4]][5] + +Click on “Connect” + +Nice GUI with admin as user home screen appears as below, + +[![Portainer-io-Docker-Monitor-Dashboard][6]][7] + +Now Portainer is ready to launch and manage your Docker containers and it can also be used for containers monitoring. + +### Bring-up container image on Portainer tool + +[![Portainer-Endpoints][8]][9] + +Now check the present status, there are two container images are already running, if you create one more that appears instantly. + +From your command line kick-start one or two containers as below, + +``` +root@linuxtechi:~$ sudo docker run --name test -it debian +Unable to find image 'debian:latest' locally +latest: Pulling from library/debian +e79bb959ec00: Pull complete +Digest: sha256:724b0fbbda7fda6372ffed586670573c59e07a48c86d606bab05db118abe0ef5 +Status: Downloaded newer image for debian:latest +root@linuxtechi:/# +``` + +Now click Refresh button (Are you sure message appears, click “continue” on this) in Portainer GUI, you will now see 3 container images as highlighted below, + +[![Portainer-io-new-container-image][10]][11] + +Click on the “ **containers** ” (in which it is red circled above), next window appears with “ **Dashboard Endpoint summary** ” + +[![Portainer-io-Docker-Container-Dash][12]][13] + +In this page, click on “ **Containers** ” as highlighted in red color. Now you are ready to monitor your container image. + +### Simple Docker container image monitoring + +From the above step, it appears that a fancy and nice looking “Container List” page appears as below, + +[![Portainer-Container-List][14]][15] + +All the container images can be controlled from here (stop, start, etc) + +**1)** Now from this page, stop the earlier started {“test” container (this was the debian image that we started earlier)} + +To do this select the check box in front of this image and click stop button from above, + +[![Stop-Container-Portainer-io-dashboard][16]][17] + +From the command line option, you will see that this image has been stopped or exited now, + +``` +root@linuxtechi:~$ sudo docker container ls -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +d45902e717c0 debian "bash" 21 minutes ago Exited (0) 49 seconds ago test +08b96eddbae9 centos:7 "/bin/bash" About an hour ago Exited (137) 9 minutes ago mycontainer2 +35286de9f2e2 portainer/portainer "/portainer" 2 hours ago Up About an hour 0.0.0.0:9000->9000/tcp compassionate_benz +root@linuxtechi:~$ +``` + +**2)** Now start the stopped containers (test & mycontainer2) from Portainer GUI, + +Select the check box in front of stopped containers, and the click on Start + +[![Start-Containers-Portainer-GUI][18]][19] + +You will get a quick window saying, “ **Container successfully started** ” and with running state + +[![Conatiner-Started-successfully-Portainer-GUI][20]][21] + +### Various other options and features are explored as below step-by-step + +**1)** Click on “ **Images** ” which is highlighted, you will get the below window, + +[![Docker-Container-Images-Portainer-GUI][22]][23] + +This is the list of container images that are available but some may not running. These images can be imported, exported or uploaded to various locations, below screen shot shows the same, + +[![Upload-Docker-Container-Image-Portainer-GUI][24]][25] + +**2)** Click on “ **volumes”** which is highlighted, you will get the below window, + +[![Volume-list-Portainer-io-gui][26]][27] + +**3)** Volumes can be added easily with following option, click on add volume button, below window appears, + +Provide the name as “ **myvol** ” in the name box and click on “ **create the volume** ” button. + +[![Volume-Creation-Portainer-io-gui][28]][29] + +The newly created volume appears as below, (with unused state) + +[![Volume-unused-Portainer-io-gui][30]][31] + +#### Conclusion: + +As from the above installation steps, configuration and playing around with various options you can see how easy and fancy looking is Portainer.io tool is. This provides multiple features and options to explore on building, monitoring docker container. As explained this is very light weight tool, so doesn’t add any overload to host system. Next set-of options will be explored in part-2 of this series. + +Read Also: **[Monitor and Manage Docker Containers with Portainer.io (GUI tool) – Part-2][32]** + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-part1/ + +作者:[Shashidhar Soppin][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.linuxtechi.com/author/shashidhar/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/how-to-setup-docker-on-ubuntu-server-16-04/ +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Login-User-Name-Password-1024x681.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Login-User-Name-Password.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Connect-Portainer-Local-Docker-1024x538.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Connect-Portainer-Local-Docker.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-Docker-Monitor-Dashboard-1024x544.jpg +[7]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-Docker-Monitor-Dashboard.jpg +[8]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Endpoints-1024x252.jpg +[9]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Endpoints.jpg +[10]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-new-container-image-1024x544.jpg +[11]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-new-container-image.jpg +[12]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-Docker-Container-Dash-1024x544.jpg +[13]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-io-Docker-Container-Dash.jpg +[14]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Container-List-1024x538.jpg +[15]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Portainer-Container-List.jpg +[16]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Stop-Container-Portainer-io-dashboard-1024x447.jpg +[17]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Stop-Container-Portainer-io-dashboard.jpg +[18]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Start-Containers-Portainer-GUI-1024x449.jpg +[19]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Start-Containers-Portainer-GUI.jpg +[20]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Conatiner-Started-successfully-Portainer-GUI-1024x538.jpg +[21]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Conatiner-Started-successfully-Portainer-GUI.jpg +[22]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Docker-Container-Images-Portainer-GUI-1024x544.jpg +[23]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Docker-Container-Images-Portainer-GUI.jpg +[24]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Upload-Docker-Container-Image-Portainer-GUI-1024x544.jpg +[25]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Upload-Docker-Container-Image-Portainer-GUI.jpg +[26]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-list-Portainer-io-gui-1024x544.jpg +[27]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-list-Portainer-io-gui.jpg +[28]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-Creation-Portainer-io-gui-1024x544.jpg +[29]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-Creation-Portainer-io-gui.jpg +[30]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-unused-Portainer-io-gui-1024x544.jpg +[31]: https://www.linuxtechi.com/wp-content/uploads/2019/05/Volume-unused-Portainer-io-gui.jpg +[32]: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-io-part-2/ From 523a8f6f081a7caf1d916faa62c929390dd948e0 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 20 Jun 2019 16:35:50 +0800 Subject: [PATCH 027/336] Update 20190111 Top 5 Linux Distributions for Productivity.md --- .../20190111 Top 5 Linux Distributions for Productivity.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 06dbc19f3e..4fa47c7b9b 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -12,11 +12,11 @@ ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) -必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于她极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 +必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于它极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. -然而,这并不意味着 +然而,这并不意味着那些 That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. @@ -95,6 +95,8 @@ And because you can select which desktop you want (from GNOME, Xfce, KDE, Cinnam ### Education +如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本从未跌出教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。幸运的是,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 + If you are a teacher or student, or otherwise involved in education, you need the right tools to be productive. Once upon a time, there existed the likes of Edubuntu. That distribution never failed to be listed in the top of education-related lists. However, that distro hasn’t been updated since it was based on Ubuntu 14.04. Fortunately, there’s a new education-based distribution ready to take that title, based on openSUSE. This spin is called [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), and is based on openSUSE Leap 42.1 (so it is slightly out of date). openSUSE:Education-Li-f-e includes tools like: From 0699a8d3bea45767f6153edb8eddb8c6df498e69 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 20 Jun 2019 17:01:07 +0800 Subject: [PATCH 028/336] Update 20190111 Top 5 Linux Distributions for Productivity.md --- ... 5 Linux Distributions for Productivity.md | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 4fa47c7b9b..d73c26ee09 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -93,11 +93,39 @@ Figure 4: SSH’ing into a remote server on Debian. And because you can select which desktop you want (from GNOME, Xfce, KDE, Cinnamon, MATE, LXDE), you can be sure to have the interface that best matches your work habits. -### Education +### 教育 -如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本从未跌出教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。幸运的是,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 +如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本从未跌出教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。还好,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 -If you are a teacher or student, or otherwise involved in education, you need the right tools to be productive. Once upon a time, there existed the likes of Edubuntu. That distribution never failed to be listed in the top of education-related lists. However, that distro hasn’t been updated since it was based on Ubuntu 14.04. Fortunately, there’s a new education-based distribution ready to take that title, based on openSUSE. This spin is called [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), and is based on openSUSE Leap 42.1 (so it is slightly out of date). +openSUSE:Education-Li-f-e 包含了一下工具: + + * Brain Workshop(大脑工坊) - 一种基于 dual n-back 模式的大脑训练软件(译注:dual n-back 训练是一种科学的智力训练方法,可以改善人的工作记忆和流体智力) + + * GCompris - 一种针对青少年的教育软件包 + + * gElemental - 一款元素周期表查看工具 + + * iGNUit - 一款通用的记忆卡片工具 + + * Little Wizard - 基于 Pascal 语言的少儿编程开发环境 + + * Stellarium - 天文模拟器 + + * TuxMath - 数学入门游戏 + + * TuxPaint - 一款少儿绘画软件 + + * TuxType - 一款为少儿准备的打字入门软件 + + * wxMaxima - A cross platform GUI for the computer algebra system + + * Inkscape - Vector graphics program + + * GIMP - Graphic image manipulation program + + * Pencil - GUI prototyping tool + + * Hugin - Panorama photo stitching and HDR merging program openSUSE:Education-Li-f-e includes tools like: From 917a1ac963e6a9a7d97b10c98468425addd997eb Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:40:28 +0800 Subject: [PATCH 029/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190519=20The=20?= =?UTF-8?q?three=20Rs=20of=20remote=20work=20sources/tech/20190519=20The?= =?UTF-8?q?=20three=20Rs=20of=20remote=20work.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20190519 The three Rs of remote work.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 sources/tech/20190519 The three Rs of remote work.md diff --git a/sources/tech/20190519 The three Rs of remote work.md b/sources/tech/20190519 The three Rs of remote work.md new file mode 100644 index 0000000000..f40f8b652e --- /dev/null +++ b/sources/tech/20190519 The three Rs of remote work.md @@ -0,0 +1,65 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The three Rs of remote work) +[#]: via: (https://dave.cheney.net/2019/05/19/the-three-rs-of-remote-work) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +The three Rs of remote work +====== + +I started working remotely in 2012. Since then I’ve worked for big companies and small, organisations with outstanding remote working cultures, and others that probably would have difficulty spelling the word without predictive text. I broadly classify my experiences into three tiers; + +### Little r remote + +The first kind of remote work I call _little r_ remote. + +Your company has an office, but it’s not convenient or you don’t want to work from there. It could be the commute is too long, or its in the next town over, or perhaps a short plane flight away. Sometimes you might go into the office for a day or two a week, and should something serious arise you could join your co-workers onsite for an extended period of time. + +If you often hear people say they are going to work from home to get some work done, that’s little r remote. + +### Big R remote + +The next category I call _Big R_ remote. Big R remote differs mainly from little r remote by the tyranny of distance. It’s not impossible to visit your co-workers in person, but it is inconvenient. Meeting face to face requires a day’s flying. Passports and boarder crossings are frequently involved. The expense and distance necessitates week long sprints and commensurate periods of jetlag recuperation. + +Because of timezone differences meetings must be prearranged and periods of overlap closely guarded. Communication becomes less spontaneous and care must be taken to avoid committing to unsustainable working hours. + +### Gothic ℜ remote + +The final category is basically Big R remote working on hard mode. Everything that was hard about Big R remote, timezone, travel schedules, public holidays, daylight savings, video call latency, cultural and language barriers is multiplied for each remote worker. + +In person meetings are so rare that without a focus on written asynchronous communication progress can repeatedly stall for days, if not weeks, as miscommunication leads to disillusionment and loss of trust. + +In my experience, for knowledge workers, little r remote work offers many benefits over [the open office hell scape][1] du jour. Big R remote takes a serious commitment by all parties and if you are the first employee in that category you will bare most of the cost to making Big R remote work for you. + +Gothic ℜ remote working should probably be avoided unless all those involved have many years of working in that style _and_ the employer is committed to restructuring the company as a remote first organisation. It is not possible to succeed in a Gothic ℜ remote role without a culture of written communication and asynchronous decision making mandated, _and consistently enforced,_ by the leaders of the company. + +#### Related posts: + + 1. [How to dial remote SSL/TLS services in Go][2] + 2. [How does the go build command work ?][3] + 3. [Why Slack is inappropriate for open source communications][4] + 4. [The office coffee model of concurrent garbage collection][5] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/05/19/the-three-rs-of-remote-work + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://twitter.com/davecheney/status/761693088666357760 +[2]: https://dave.cheney.net/2010/10/05/how-to-dial-remote-ssltls-services-in-go (How to dial remote SSL/TLS services in Go) +[3]: https://dave.cheney.net/2013/10/15/how-does-the-go-build-command-work (How does the go build command work ?) +[4]: https://dave.cheney.net/2017/04/11/why-slack-is-inappropriate-for-open-source-communications (Why Slack is inappropriate for open source communications) +[5]: https://dave.cheney.net/2018/12/28/the-office-coffee-model-of-concurrent-garbage-collection (The office coffee model of concurrent garbage collection) From 9311c36c56c6785cbaed67ecdb3df004af83124f Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:40:36 +0800 Subject: [PATCH 030/336] add done: 20190519 The three Rs of remote work.md --- sources/tech/20190610 Constant Time.md | 281 +++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 sources/tech/20190610 Constant Time.md diff --git a/sources/tech/20190610 Constant Time.md b/sources/tech/20190610 Constant Time.md new file mode 100644 index 0000000000..f19207fb58 --- /dev/null +++ b/sources/tech/20190610 Constant Time.md @@ -0,0 +1,281 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Constant Time) +[#]: via: (https://dave.cheney.net/2019/06/10/constant-time) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Constant Time +====== + +This essay is a derived from my [dotGo 2019 presentation][1] about my favourite feature in Go. + +* * * + +Many years ago Rob Pike remarked, + +> “Numbers are just numbers, you’ll never see `0x80ULL` in a `.go` source file”. + +—Rob Pike, [The Go Programming Language][2] + +Beyond this pithy observation lies the fascinating world of Go’s constants. Something that is perhaps taken for granted because, as Rob noted, is Go numbers–constants–just work. +In this post I intend to show you a few things that perhaps you didn’t know about Go’s `const` keyword. + +## What’s so great about constants? + +To kick things off, why are constants good? Three things spring to mind: + + * _Immutability_. Constants are one of the few ways we have in Go to express immutability to the compiler. + * _Clarity_. Constants give us a way to extract magic numbers from our code, giving them names and semantic meaning. + * _Performance_. The ability to express to the compiler that something will not change is key as it unlocks optimisations such as constant folding, constant propagation, branch and dead code elimination. + + + +But these are generic use cases for constants, they apply to any language. Let’s talk about some of the properties of Go’s constants. + +### A Challenge + +To introduce the power of Go’s constants let’s try a little challenge: declare a _constant_ whose value is the number of bits in the natural machine word. + +We can’t use `unsafe.SizeOf` as it is not a constant expression. We could use a build tag and laboriously record the natural word size of each Go platform, or we could do something like this: + +``` +const uintSize = 32 << (^uint(0) >> 32 & 1) +``` + +There are many versions of this expression in Go codebases. They all work roughly the same way. If we’re on a 64 bit platform then the exclusive or of the number zero–all zero bits–is a number with all bits set, sixty four of them to be exact. + +``` +1111111111111111111111111111111111111111111111111111111111111111 +``` + +If we shift that value thirty two bits to the right, we get another value with thirty two ones in it. + +``` +0000000000000000000000000000000011111111111111111111111111111111 +``` + +Anding that with a number with one bit in the final position give us, the same thing, `1`, + +``` +0000000000000000000000000000000011111111111111111111111111111111 & 1 = 1 +``` + +Finally we shift the number thirty two one place to the right, giving us 641. + +``` +32 << 1 = 64 +``` + +This expression is an example of a _constant expression_. All of these operations happen at compile time and the result of the expression is itself a constant. If you look in the in runtime package, in particular the garbage collector, you’ll see how constant expressions are used to set up complex invariants based on the word size of the machine the code is compiled on. + +So, this is a neat party trick, but most compilers will do this kind of constant folding at compile time for you. Let’s step it up a notch. + +## Constants are values + +In Go, constants are values and each value has a type. In Go, user defined types can declare their own methods. Thus, a constant value can have a method set. If you’re surprised by this, let me show you an example that you probably use every day. + +``` +const timeout = 500 * time.Millisecond +fmt.Println("The timeout is", timeout) // 500ms +``` + +In the example the untyped literal constant `500` is multiplied by `time.Millisecond`, itself a constant of type `time.Duration`. The rule for assignments in Go are, unless otherwise declared, the type on the left hand side of the assignment operator is inferred from the type on the right.`500` is an untyped constant so it is converted to a `time.Duration` then multiplied with the constant `time.Millisecond`. + +Thus `timeout` is a constant of type `time.Duration` which holds the value `500000000`. +Why then does `fmt.Println` print `500ms`, not `500000000`? + +The answer is `time.Duration` has a `String` method. Thus any `time.Duration` value, even a constant, knows how to pretty print itself. + +Now we know that constant values are typed, and because types can declare methods, we can derive that _constant values can fulfil interfaces_. In fact we just saw an example of this. `fmt.Println` doesn’t assert that a value has a `String` method, it asserts the value implements the `Stringer` interface. + +Let’s talk a little about how we can use this property to make our Go code better, and to do that I’m going to take a brief digression into the Singleton pattern. + +## Singletons + +I’m generally not a fan of the singleton pattern, in Go or any language. Singletons complicate testing and create unnecessary coupling between packages. I feel the singleton pattern is often used _not_ to create a singular instance of a thing, but instead to create a place to coordinate registration. `net/http.DefaultServeMux` is a good example of this pattern. + +``` +package http + +// DefaultServeMux is the default ServeMux used by Serve. +var DefaultServeMux = &defaultServeMux + +var defaultServeMux ServeMux +``` + +There is nothing singular about `http.defaultServerMux`, nothing prevents you from creating another `ServeMux`. In fact the `http` package provides a helper that will create as many `ServeMux`‘s as you want. + +``` +// NewServeMux allocates and returns a new ServeMux. +func NewServeMux() *ServeMux { return new(ServeMux) } +``` + +`http.DefaultServeMux` is not a singleton. Never the less there is a case for things which are truely singletons because they can only represent a single thing. A good example of this are the file descriptors of a process; 0, 1, and 2 which represent stdin, stdout, and stderr respectively. + +It doesn’t matter what names you give them, `1` is always stdout, and there can only ever be one file descriptor `1`. Thus these two operations are identical: + +``` +fmt.Fprintf(os.Stdout, "Hello dotGo\n") +syscall.Write(1, []byte("Hello dotGo\n")) +``` + +So let’s look at how the `os` package defines `Stdin`, `Stdout`, and `Stderr`: + +``` +package os + +var ( + Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") + Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout") + Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr") +) +``` + +There are a few problems with this declaration. Firstly their type is `*os.File` not the respective `io.Reader` or `io.Writer` interfaces. People have long complained that this makes replacing them with alternatives problematic. However the notion of replacing these variables is precisely the point of this digression. Can you safely change the value of `os.Stdout` once your program is running without causing a data race? + +I argue that, in the general case, you cannot. In general, if something is unsafe to do, as programmers we shouldn’t let our users think that it is safe, [lest they begin to depend on that behaviour][3]. + +Could we change the definition of `os.Stdout` and friends so that they retain the observable behaviour of reading and writing, but remain immutable? It turns out, we can do this easily with constants. + +``` +type readfd int + +func (r readfd) Read(buf []byte) (int, error) { + return syscall.Read(int(r), buf) +} + +type writefd int + +func (w writefd) Write(buf []byte) (int, error) { + return syscall.Write(int(w), buf) +} + +const ( + Stdin = readfd(0) + Stdout = writefd(1) + Stderr = writefd(2) +) + +func main() { + fmt.Fprintf(Stdout, "Hello world") +} +``` + +In fact this change causes only one compilation failure in the standard library.2 + +## Sentinel error values + +Another case of things which look like constants but really aren’t, are sentinel error values. `io.EOF`, `sql.ErrNoRows`, `crypto/x509.ErrUnsupportedAlgorithm`, and so on are all examples of sentinel error values. They all fall into a category of _expected_ errors, and because they are expected, you’re expected to check for them. + +To compare the error you have with the one you were expecting, you need to import the package that defines that error. Because, by definition, sentinel errors are exported public variables, any code that imports, for example, the `io` package could change the value of `io.EOF`. + +``` +package nelson + +import "io" + +func init() { + io.EOF = nil // haha! +} +``` + +I’ll say that again. If I know the name of `io.EOF` I can import the package that declares it, which I must if I want to compare it to my error, and thus I could change `io.EOF`‘s value. Historically convention and a bit of dumb luck discourages people from writing code that does this, but technically there is nothing to prevent you from doing so. + +Replacing `io.EOF` is probably going to be detected almost immediately. But replacing a less frequently used sentinel error may cause some interesting side effects: + +``` +package innocent + +import "crypto/rsa" + +func init() { + rsa.ErrVerification = nil // 🤔 +} +``` + +If you were hoping the race detector will spot this subterfuge, I suggest you talk to the folks writing testing frameworks who replace `os.Stdout` without it triggering the race detector. + +## Fungibility + +I want to digress for a moment to talk about _the_ most important property of constants. Constants aren’t just immutable, its not enough that we cannot overwrite their declaration, +Constants are _fungible_. This is a tremendously important property that doesn’t get nearly enough attention. + +Fungible means identical. Money is a great example of fungibility. If you were to lend me 10 bucks, and I later pay you back, the fact that you gave me a 10 dollar note and I returned to you 10 one dollar bills, with respect to its operation as a financial instrument, is irrelevant. Things which are fungible are by definition equal and equality is a powerful property we can leverage for our programs. + +``` +var myEOF = errors.New("EOF") // io/io.go line 38 +fmt.Println(myEOF == io.EOF) // false +``` + +Putting aside the effect of malicious actors in your code base the key design challenge with sentinel errors is they behave like _singletons_ , not _constants_. Even if we follow the exact procedure used by the `io` package to create our own EOF value, `myEOF` and `io.EOF` are not equal. `myEOF` and `io.EOF` are not fungible, they cannot be interchanged. Programs can spot the difference. + +When you combine the lack of immutability, the lack of fungibility, the lack of equality, you have a set of weird behaviours stemming from the fact that sentinel error values in Go are not constant expressions. But what if they were? + +## Constant errors + +Ideally a sentinel error value should behave as a constant. It should be immutable and fungible. Let’s recap how the built in `error` interface works in Go. + +``` +type error interface { + Error() string +} +``` + +Any type with an `Error() string` method fulfils the `error` interface. This includes user defined types, it includes types derived from primitives like string, and it includes constant strings. With that background, consider this error implementation: + +``` +type Error string + +func (e Error) Error() string { + return string(e) +} +``` + +We can use this error type as a constant expression: + +``` +const err = Error("EOF") +``` + +Unlike `errors.errorString`, which is a struct, a compact struct literal initialiser is not a constant expression and cannot be used. + +``` +const err2 = errors.errorString{"EOF"} // doesn't compile +``` + +As constants of this `Error` type are not variables, they are immutable. + +``` +const err = Error("EOF") +err = Error("not EOF") // doesn't compile +``` + +Additionally, two constant strings are always equal if their contents are equal: + +``` +const str1 = "EOF" +const str2 = "EOF" +fmt.Println(str1 == str2) // true +``` + +which means two constants of a type derived from string with the same contents are also equal. + +``` +type Error string + +const err1 = Error("EOF") +const err2 = Error("EOF") + fmt.Println(err1 == err2) // true``` + +``` +Said another way, equal constant `Error` values are the same, in the way that the literal constant `1` is the same as every other literal constant `1`. + +Now we have all the pieces we need to make sentinel errors, like `io.EOF`, and `rsa.ErrVerfication`, immutable, fungible, constant expressions. +``` + + % git diff + diff --git a/src/io/io.go b/src/io/io.go + inde \ No newline at end of file From 550c61a6e7272f9f62be6e147603a188eb261b74 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:40:46 +0800 Subject: [PATCH 031/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190514=20Why=20?= =?UTF-8?q?bother=20writing=20tests=20at=20all=3F=20sources/tech/20190514?= =?UTF-8?q?=20Why=20bother=20writing=20tests=20at=20all.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0190514 Why bother writing tests at all.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 sources/tech/20190514 Why bother writing tests at all.md diff --git a/sources/tech/20190514 Why bother writing tests at all.md b/sources/tech/20190514 Why bother writing tests at all.md new file mode 100644 index 0000000000..2b80dbaf40 --- /dev/null +++ b/sources/tech/20190514 Why bother writing tests at all.md @@ -0,0 +1,93 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Why bother writing tests at all?) +[#]: via: (https://dave.cheney.net/2019/05/14/why-bother-writing-tests-at-all) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Why bother writing tests at all? +====== + +In previous posts and presentations I talked about [how to test][1], and [when to test][2]. To conclude this series of I’m going to ask the question, _why test at all?_ + +### Even if you don’t, someone _will_ test your software + +I’m sure no-one reading this post thinks that software should be delivered without being tested first. Even if that were true, your customers are going to test it, or at least use it. If nothing else, it would be good to discover any issues with the code before your customers do. If not for the reputation of your company, at least for your professional pride. + +So, if we agree that software should be tested, the question becomes: _who_ should do that testing? + +### The majority of testing should be performed by development teams + +I argue that the majority of the testing should be done by development groups. Moreover, testing should be automated, and thus the majority of these tests should be unit style tests. + +To be clear, I am _not_ saying you shouldn’t write integration, functional, or end to end tests. I’m also _not_ saying that you shouldn’t have a QA group, or integration test engineers. However at a recent software conference, in a room of over 1,000 engineers, nobody raised their hand when I asked if they considered themselves in a pure quality assurance role. + +You might argue that the audience was self selecting, that QA engineers did not feel a software conference was relevant–or welcoming–to them. However, I think this proves my point, the days of [one developer to one test engineer][3] are gone and not coming back. + +If development teams aren’t writing the majority of tests, who is? + +### Manual testing should not be the majority of your testing because manual testing is O(n) + +Thus, if individual contributors are expected to test the software they write, why do we need to automate it? Why is a manual testing plan not good enough? + +Manual testing of software or manual verification of a defect is not sufficient because it does not scale. As the number of manual tests grows, engineers are tempted to skip them or only execute the scenarios they _think_ are could be affected. Manual testing is expensive in terms of time, thus dollars, and it is boring. 99.9% of the tests that passed last time are _expected_ to pass again. Manual testing is looking for a needle in a haystack, except you don’t stop when you find the first needle. + +This means that your first response when given a bug to fix or a feature to implement should be to write a failing test. This doesn’t need to be a unit test, but it should be an automated test. Once you’ve fixed the bug, or added the feature, now have the test case to prove it worked–and you can check them in together. + +### Tests are the critical component that ensure you can always ship your master branch + +As a development team, you are judged on your ability to deliver working software to the business. No, seriously, the business could care less about OOP vs FP, CI/CD, table tennis or limited run La Croix. + +Your super power is, at any time, anyone on the team should be confident that the master branch of your code is shippable. This means at any time they can deliver a release of your software to the business and the business can recoup its investment in your development R&D. + +I cannot emphasise this enough. If you want the non technical parts of the business to believe you are heros, you must never create a situation where you say “well, we can’t release right now because we’re in the middle of an important refactoring. It’ll be a few weeks. We hope.” + +Again, I’m not saying you cannot refactor, but at every stage your product must be shippable. Your tests have to pass. It may not have all the desired features, but the features that are there should work as described on the tin. + +### Tests lock in behaviour + +Your tests are the contract about what your software does and does not do. Unit tests should lock in the behaviour of the package’s API. Integration tests do the same for complex interactions. Tests describe, in code, what the program promises to do. + +If there is a unit test for each input permutation, you have defined the contract for what the code will do _in code_ , not documentation. This is a contract anyone on your team can assert by simply running the tests. At any stage you _know_ with a high degree of confidence that the behaviour people relied on before your change continues to function after your change. + +### Tests give you confidence to change someone else’s code + +Lastly, and this is the biggest one, for programmers working on a piece of code that has been through many hands. Tests give you the confidence to make changes. + +Even though we’ve never met, something I know about you, the reader, is you will eventually leave your current employer. Maybe you’ll be moving on to a new role, or perhaps a promotion, perhaps you’ll move cities, or follow your partner overseas. Whatever the reason, the succession of the maintenance of programs you write is key. + +If people cannot maintain our code then as you and I move from job to job we’ll leave behind programs which cannot be maintained. This goes beyond advocacy for a language or tool. Programs which cannot be changed, programs which are too hard to onboard new developers, or programs which feel like career digression to work on them will reach only one end state–they are a dead end. They represent a balance sheet loss for the business. They will be replaced. + +If you worry about who will maintain your code after you’re gone, write good tests. + +#### Related posts: + + 1. [Writing table driven tests in Go][4] + 2. [Prefer table driven tests][5] + 3. [Automatically run your package’s tests with inotifywait][6] + 4. [The value of TDD][7] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/05/14/why-bother-writing-tests-at-all + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://dave.cheney.net/2019/05/07/prefer-table-driven-tests +[2]: https://dave.cheney.net/paste/absolute-unit-test-london-gophers.pdf +[3]: https://docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/evolving-test-practices-microsoft +[4]: https://dave.cheney.net/2013/06/09/writing-table-driven-tests-in-go (Writing table driven tests in Go) +[5]: https://dave.cheney.net/2019/05/07/prefer-table-driven-tests (Prefer table driven tests) +[6]: https://dave.cheney.net/2016/06/21/automatically-run-your-packages-tests-with-inotifywait (Automatically run your package’s tests with inotifywait) +[7]: https://dave.cheney.net/2016/04/11/the-value-of-tdd (The value of TDD) From 5b8af4c927ecae18916d5878c734d6239bf262e5 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:40:57 +0800 Subject: [PATCH 032/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190507=20Prefer?= =?UTF-8?q?=20table=20driven=20tests=20sources/tech/20190507=20Prefer=20ta?= =?UTF-8?q?ble=20driven=20tests.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20190507 Prefer table driven tests.md | 521 ++++++++++++++++++ 1 file changed, 521 insertions(+) create mode 100644 sources/tech/20190507 Prefer table driven tests.md diff --git a/sources/tech/20190507 Prefer table driven tests.md b/sources/tech/20190507 Prefer table driven tests.md new file mode 100644 index 0000000000..0a41860207 --- /dev/null +++ b/sources/tech/20190507 Prefer table driven tests.md @@ -0,0 +1,521 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Prefer table driven tests) +[#]: via: (https://dave.cheney.net/2019/05/07/prefer-table-driven-tests) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Prefer table driven tests +====== + +I’m a big fan of testing, specifically [unit testing][1] and TDD ([done correctly][2], of course). A practice that has grown around Go projects is the idea of a table driven test. This post explores the how and why of writing a table driven test. + +Let’s say we have a function that splits strings: + +``` +// Split slices s into all substrings separated by sep and +// returns a slice of the substrings between those separators. +func Split(s, sep string) []string { + var result []string + i := strings.Index(s, sep) + for i > -1 { + result = append(result, s[:i]) + s = s[i+len(sep):] + i = strings.Index(s, sep) + } + return append(result, s) +} +``` + +In Go, unit tests are just regular Go functions (with a few rules) so we write a unit test for this function starting with a file in the same directory, with the same package name, `strings`. + +``` +package split + +import ( + "reflect" + "testing" +) + +func TestSplit(t *testing.T) { + got := Split("a/b/c", "/") + want := []string{"a", "b", "c"} + if !reflect.DeepEqual(want, got) { + t.Fatalf("expected: %v, got: %v", want, got) + } +} +``` + +Tests are just regular Go functions with a few rules: + + 1. The name of the test function must start with `Test`. + 2. The test function must take one argument of type `*testing.T`. A `*testing.T` is a type injected by the testing package itself, to provide ways to print, skip, and fail the test. + + + +In our test we call `Split` with some inputs, then compare it to the result we expected. + +### Code coverage + +The next question is, what is the coverage of this package? Luckily the go tool has a built in branch coverage. We can invoke it like this: + +``` +% go test -coverprofile=c.out +PASS +coverage: 100.0% of statements +ok split 0.010s +``` + +Which tells us we have 100% branch coverage, which isn’t really surprising, there’s only one branch in this code. + +If we want to dig in to the coverage report the go tool has several options to print the coverage report. We can use `go tool cover -func` to break down the coverage per function: + +``` +% go tool cover -func=c.out +split/split.go:8: Split 100.0% +total: (statements) 100.0% +``` + +Which isn’t that exciting as we only have one function in this package, but I’m sure you’ll find more exciting packages to test. + +#### Spray some .bashrc on that + +This pair of commands is so useful for me I have a shell alias which runs the test coverage and the report in one command: + +``` +cover () { + local t=$(mktemp -t cover) + go test $COVERFLAGS -coverprofile=$t $@ \ + && go tool cover -func=$t \ + && unlink $t +} +``` + +### Going beyond 100% coverage + +So, we wrote one test case, got 100% coverage, but this isn’t really the end of the story. We have good branch coverage but we probably need to test some of the boundary conditions. For example, what happens if we try to split it on comma? + +``` +func TestSplitWrongSep(t *testing.T) { + got := Split("a/b/c", ",") + want := []string{"a/b/c"} + if !reflect.DeepEqual(want, got) { + t.Fatalf("expected: %v, got: %v", want, got) + } +} +``` + +Or, what happens if there are no separators in the source string? + +``` +func TestSplitNoSep(t *testing.T) { + got := Split("abc", "/") + want := []string{"abc"} + if !reflect.DeepEqual(want, got) { + t.Fatalf("expected: %v, got: %v", want, got) + } +} +``` + +We’re starting build a set of test cases that exercise boundary conditions. This is good. + +### Introducing table driven tests + +However the there is a lot of duplication in our tests. For each test case only the input, the expected output, and name of the test case change. Everything else is boilerplate. What we’d like to to set up all the inputs and expected outputs and feel them to a single test harness. This is a great time to introduce table driven testing. + +``` +func TestSplit(t *testing.T) { + type test struct { + input string + sep string + want []string + } + + tests := []test{ + {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + {input: "abc", sep: "/", want: []string{"abc"}}, + } + + for _, tc := range tests { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("expected: %v, got: %v", tc.want, got) + } + } +} +``` + +We declare a structure to hold our test inputs and expected outputs. This is our table. The `tests` structure is usually a local declaration because we want to reuse this name for other tests in this package. + +In fact, we don’t even need to give the type a name, we can use an anonymous struct literal to reduce the boilerplate like this: + +``` +func TestSplit(t *testing.T) { + tests := []struct { + input string + sep string + want []string + }{ + {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + {input: "abc", sep: "/", want: []string{"abc"}}, + } + + for _, tc := range tests { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("expected: %v, got: %v", tc.want, got) + } + } +} +``` + +Now, adding a new test is a straight forward matter; simply add another line the `tests` structure. For example, what will happen if our input string has a trailing separator? + +``` +{input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, +{input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, +{input: "abc", sep: "/", want: []string{"abc"}}, +{input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, // trailing sep +``` + +But, when we run `go test`, we get + +``` +% go test +--- FAIL: TestSplit (0.00s) + split_test.go:24: expected: [a b c], got: [a b c ] +``` + +Putting aside the test failure, there are a few problems to talk about. + +The first is by rewriting each test from a function to a row in a table we’ve lost the name of the failing test. We added a comment in the test file to call out this case, but we don’t have access to that comment in the `go test` output. + +There are a few ways to resolve this. You’ll see a mix of styles in use in Go code bases because the table testing idiom is evolving as people continue to experiment with the form. + +### Enumerating test cases + +As tests are stored in a slice we can print out the index of the test case in the failure message: + +``` +func TestSplit(t *testing.T) { + tests := []struct { + input string + sep . string + want []string + }{ + {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + {input: "abc", sep: "/", want: []string{"abc"}}, + {input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, + } + + for i, tc := range tests { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("test %d: expected: %v, got: %v", i+1, tc.want, got) + } + } +} +``` + +Now when we run `go test` we get this + +``` +% go test +--- FAIL: TestSplit (0.00s) + split_test.go:24: test 4: expected: [a b c], got: [a b c ] +``` + +Which is a little better. Now we know that the fourth test is failing, although we have to do a little bit of fudging because slice indexing—​and range iteration—​is zero based. This requires consistency across your test cases; if some use zero base reporting and others use one based, it’s going to be confusing. And, if the list of test cases is long, it could be difficult to count braces to figure out exactly which fixture constitutes test case number four. + +### Give your test cases names + +Another common pattern is to include a name field in the test fixture. + +``` +func TestSplit(t *testing.T) { + tests := []struct { + name string + input string + sep string + want []string + }{ + {name: "simple", input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + {name: "wrong sep", input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + {name: "no sep", input: "abc", sep: "/", want: []string{"abc"}}, + {name: "trailing sep", input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, + } + + for _, tc := range tests { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("%s: expected: %v, got: %v", tc.name, tc.want, got) + } + } +} +``` + +Now when the test fails we have a descriptive name for what the test was doing. We no longer have to try to figure it out from the output—​also, now have a string we can search on. + +``` +% go test +--- FAIL: TestSplit (0.00s) + split_test.go:25: trailing sep: expected: [a b c], got: [a b c ] +``` + +We can dry this up even more using a map literal syntax: + +``` +func TestSplit(t *testing.T) { + tests := map[string]struct { + input string + sep string + want []string + }{ + "simple": {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + "wrong sep": {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + "no sep": {input: "abc", sep: "/", want: []string{"abc"}}, + "trailing sep": {input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, + } + + for name, tc := range tests { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("%s: expected: %v, got: %v", name, tc.want, got) + } + } +} +``` + +Using a map literal syntax we define our test cases not as a slice of structs, but as map of test names to test fixtures. There’s also a side benefit of using a map that is going to potentially improve the utility of our tests. + +Map iteration order is _undefined_ 1 This means each time we run `go test`, our tests are going to be potentially run in a different order. + +This is super useful for spotting conditions where test pass when run in statement order, but not otherwise. If you find that happens you probably have some global state that is being mutated by one test with subsequent tests depending on that modification. + +### Introducing sub tests + +Before we fix the failing test there are a few other issues to address in our table driven test harness. + +The first is we’re calling `t.Fatalf` when one of the test cases fails. This means after the first failing test case we stop testing the other cases. Because test cases are run in an undefined order, if there is a test failure, it would be nice to know if it was the only failure or just the first. + +The testing package would do this for us if we go to the effort to write out each test case as its own function, but that’s quite verbose. The good news is since Go 1.7 a new feature was added that lets us do this easily for table driven tests. They’re called [sub tests][3]. + +``` +func TestSplit(t *testing.T) { + tests := map[string]struct { + input string + sep string + want []string + }{ + "simple": {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + "wrong sep": {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + "no sep": {input: "abc", sep: "/", want: []string{"abc"}}, + "trailing sep": {input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + got := Split(tc.input, tc.sep) + if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("expected: %v, got: %v", tc.want, got) + } + }) + } +} +``` + +As each sub test now has a name we get that name automatically printed out in any test runs. + +``` +% go test +--- FAIL: TestSplit (0.00s) + --- FAIL: TestSplit/trailing_sep (0.00s) + split_test.go:25: expected: [a b c], got: [a b c ] +``` + +Each subtest is its own anonymous function, therefore we can use `t.Fatalf`, `t.Skipf`, and all the other `testing.T`helpers, while retaining the compactness of a table driven test. + +#### Individual sub test cases can be executed directly + +Because sub tests have a name, you can run a selection of sub tests by name using the `go test -run` flag. + +``` +% go test -run=.*/trailing -v +=== RUN TestSplit +=== RUN TestSplit/trailing_sep +--- FAIL: TestSplit (0.00s) + --- FAIL: TestSplit/trailing_sep (0.00s) + split_test.go:25: expected: [a b c], got: [a b c ] +``` + +### Comparing what we got with what we wanted + +Now we’re ready to fix the test case. Let’s look at the error. + +``` +--- FAIL: TestSplit (0.00s) + --- FAIL: TestSplit/trailing_sep (0.00s) + split_test.go:25: expected: [a b c], got: [a b c ] +``` + +Can you spot the problem? Clearly the slices are different, that’s what `reflect.DeepEqual` is upset about. But spotting the actual difference isn’t easy, you have to spot that extra space after `c`. This might look simple in this simple example, but it is any thing but when you’re comparing two complicated deeply nested gRPC structures. + +We can improve the output if we switch to the `%#v` syntax to view the value as a Go(ish) declaration: + +``` +got := Split(tc.input, tc.sep) +if !reflect.DeepEqual(tc.want, got) { + t.Fatalf("expected: %#v, got: %#v", tc.want, got) +} +``` + +Now when we run our test it’s clear that the problem is there is an extra blank element in the slice. + +``` +% go test +--- FAIL: TestSplit (0.00s) + --- FAIL: TestSplit/trailing_sep (0.00s) + split_test.go:25: expected: []string{"a", "b", "c"}, got: []string{"a", "b", "c", ""} +``` + +But before we go to fix our test failure I want to talk a little bit more about choosing the right way to present test failures. Our `Split` function is simple, it takes a primitive string and returns a slice of strings, but what if it worked with structs, or worse, pointers to structs? + +Here is an example where `%#v` does not work as well: + +``` +func main() { + type T struct { + I int + } + x := []*T{{1}, {2}, {3}} + y := []*T{{1}, {2}, {4}} + fmt.Printf("%v %v\n", x, y) + fmt.Printf("%#v %#v\n", x, y) +} +``` + +The first `fmt.Printf`prints the unhelpful, but expected slice of addresses; `[0xc000096000 0xc000096008 0xc000096010] [0xc000096018 0xc000096020 0xc000096028]`. However our `%#v` version doesn’t fare any better, printing a slice of addresses cast to `*main.T`;`[]*main.T{(*main.T)(0xc000096000), (*main.T)(0xc000096008), (*main.T)(0xc000096010)} []*main.T{(*main.T)(0xc000096018), (*main.T)(0xc000096020), (*main.T)(0xc000096028)}` + +Because of the limitations in using any `fmt.Printf` verb, I want to introduce the [go-cmp][4] library from Google. + +The goal of the cmp library is it is specifically to compare two values. This is similar to `reflect.DeepEqual`, but it has more capabilities. Using the cmp pacakge you can, of course, write: + +``` +func main() { + type T struct { + I int + } + x := []*T{{1}, {2}, {3}} + y := []*T{{1}, {2}, {4}} + fmt.Println(cmp.Equal(x, y)) // false +} +``` + +But far more useful for us with our test function is the `cmp.Diff` function which will produce a textual description of what is different between the two values, recursively. + +``` +func main() { + type T struct { + I int + } + x := []*T{{1}, {2}, {3}} + y := []*T{{1}, {2}, {4}} + diff := cmp.Diff(x, y) + fmt.Printf(diff) +} +``` + +Which instead produces: + +``` +% go run +{[]*main.T}[2].I: + -: 3 + +: 4 +``` + +Telling us that at element 2 of the slice of `T`s the `I`field was expected to be 3, but was actually 4. + +Putting this all together we have our table driven go-cmp test + +``` +func TestSplit(t *testing.T) { + tests := map[string]struct { + input string + sep string + want []string + }{ + "simple": {input: "a/b/c", sep: "/", want: []string{"a", "b", "c"}}, + "wrong sep": {input: "a/b/c", sep: ",", want: []string{"a/b/c"}}, + "no sep": {input: "abc", sep: "/", want: []string{"abc"}}, + "trailing sep": {input: "a/b/c/", sep: "/", want: []string{"a", "b", "c"}}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + got := Split(tc.input, tc.sep) + diff := cmp.Diff(tc.want, got) + if diff != "" { + t.Fatalf(diff) + } + }) + } +} +``` + +Running this we get + +``` +% go test +--- FAIL: TestSplit (0.00s) + --- FAIL: TestSplit/trailing_sep (0.00s) + split_test.go:27: {[]string}[?->3]: + -: + +: "" +FAIL +exit status 1 +FAIL split 0.006s +``` + +Using `cmp.Diff` our test harness isn’t just telling us that what we got and what we wanted were different. Our test is telling us that the strings are different lengths, the third index in the fixture shouldn’t exist, but the actual output we got an empty string, “”. From here fixing the test failure is straight forward. + + 1. Please don’t email me to argue that map iteration order is _random_. [It’s not][5]. + + + +#### Related posts: + + 1. [Writing table driven tests in Go][6] + 2. [Internets of Interest #7: Ian Cooper on Test Driven Development][7] + 3. [Automatically run your package’s tests with inotifywait][8] + 4. [How to write benchmarks in Go][9] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/05/07/prefer-table-driven-tests + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://dave.cheney.net/2019/04/03/absolute-unit-test +[2]: https://www.youtube.com/watch?v=EZ05e7EMOLM +[3]: https://blog.golang.org/subtests +[4]: https://github.com/google/go-cmp +[5]: https://golang.org/ref/spec#For_statements +[6]: https://dave.cheney.net/2013/06/09/writing-table-driven-tests-in-go (Writing table driven tests in Go) +[7]: https://dave.cheney.net/2018/10/15/internets-of-interest-7-ian-cooper-on-test-driven-development (Internets of Interest #7: Ian Cooper on Test Driven Development) +[8]: https://dave.cheney.net/2016/06/21/automatically-run-your-packages-tests-with-inotifywait (Automatically run your package’s tests with inotifywait) +[9]: https://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go (How to write benchmarks in Go) From ab8f35e70159da5108ebfcdea2c3ca3f940d290c Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:41:32 +0800 Subject: [PATCH 033/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190218=20Talk,?= =?UTF-8?q?=20then=20code=20sources/tech/20190218=20Talk,=20then=20code.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190218 Talk, then code.md | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 sources/tech/20190218 Talk, then code.md diff --git a/sources/tech/20190218 Talk, then code.md b/sources/tech/20190218 Talk, then code.md new file mode 100644 index 0000000000..18ed81e43c --- /dev/null +++ b/sources/tech/20190218 Talk, then code.md @@ -0,0 +1,64 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Talk, then code) +[#]: via: (https://dave.cheney.net/2019/02/18/talk-then-code) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Talk, then code +====== + +The open source projects that I contribute to follow a philosophy which I describe as _talk, then code_. I think this is generally a good way to develop software and I want to spend a little time talking about the benefits of this methodology. + +### Avoiding hurt feelings + +The most important reason for discussing the change you want to make is it avoids hurt feelings. Often I see a contributor work hard in isolation on a pull request only to find their work is rejected. This can be for a bunch of reasons; the PR is too large, the PR doesn’t follow the local style, the PR fixes an issue which wasn’t important to the project or was recently fixed indirectly, and many more. + +The underlying cause of all these issues is a lack of communication. The goal of the _talk, then code_ philosophy is not to impede or frustrate, but to ensure that a feature lands correctly the first time, without incurring significant maintenance debt, and neither the author of the change, or the reviewer, has to carry the emotional burden of dealing with hurt feelings when a change appears out of the blue with an implicit “well, I’ve done the work, all you have to do is merge it, right?” + +### What does discussion look like? + +Every new feature or bug fix should be discussed with the maintainer(s) of the project before work commences. It’s fine to experiment privately, but do not send a change without discussing it first. + +The definition of _talk_ for simple changes can be as little as a design sketch in a GitHub issue. If your PR fixes a bug, you should link to the bug it fixes. If there isn’t one, you should raise a bug and wait for the maintainers to acknowledge it before sending a PR. This might seem a little backward–who wouldn’t want a bug fixed–but consider the bug could be a misunderstanding in how the software works or it could be a symptom of a larger problem that needs further investigation. + +For more complicated changes, especially feature requests, I recommend that a design document be circulated and agreed upon before sending code. This doesn’t have to be a full blown document, a sketch in an issue may be sufficient, but the key is to reach agreement using words, before locking it in stone with code. + +In all cases you shouldn’t proceed to send code until there is a positive agreement from the maintainer that the approach is one they are happy with. A pull request is for life, not just for Christmas. + +### Code review, not design by committee + +A code review is not the place for arguments about design. This is for two reasons. First, most code review tools are not suitable for long comment threads, GitHub’s PR interface is very bad at this, Gerrit is better, but few have a team of admins to maintain a Gerrit instance. More importantly, disagreements at the code review stage suggests there wasn’t agreement on how the change should be implemented. + +* * * + +Talk about what you want to code, then code what you talked about. Please don’t do it the other way around. + +### Related posts: + + 1. [How to include C code in your Go package][1] + 2. [Let’s talk about logging][2] + 3. [The value of TDD][3] + 4. [Suggestions for contributing to an Open Source project][4] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/02/18/talk-then-code + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://dave.cheney.net/2013/09/07/how-to-include-c-code-in-your-go-package (How to include C code in your Go package) +[2]: https://dave.cheney.net/2015/11/05/lets-talk-about-logging (Let’s talk about logging) +[3]: https://dave.cheney.net/2016/04/11/the-value-of-tdd (The value of TDD) +[4]: https://dave.cheney.net/2016/03/12/suggestions-for-contributing-to-an-open-source-project (Suggestions for contributing to an Open Source project) From 33d271a9689586d1cce139460e5670000fcb0d62 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:41:44 +0800 Subject: [PATCH 034/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190129=20You=20?= =?UTF-8?q?shouldn=E2=80=99t=20name=20your=20variables=20after=20their=20t?= =?UTF-8?q?ypes=20for=20the=20same=20reason=20you=20wouldn=E2=80=99t=20nam?= =?UTF-8?q?e=20your=20pets=20=E2=80=9Cdog=E2=80=9D=20or=20=E2=80=9Ccat?= =?UTF-8?q?=E2=80=9D=20sources/tech/20190129=20You=20shouldn-t=20name=20yo?= =?UTF-8?q?ur=20variables=20after=20their=20types=20for=20the=20same=20rea?= =?UTF-8?q?son=20you=20wouldn-t=20name=20your=20pets=20-dog-=20or=20-cat.m?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...u wouldn-t name your pets -dog- or -cat.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 sources/tech/20190129 You shouldn-t name your variables after their types for the same reason you wouldn-t name your pets -dog- or -cat.md diff --git a/sources/tech/20190129 You shouldn-t name your variables after their types for the same reason you wouldn-t name your pets -dog- or -cat.md b/sources/tech/20190129 You shouldn-t name your variables after their types for the same reason you wouldn-t name your pets -dog- or -cat.md new file mode 100644 index 0000000000..75ad9e93c6 --- /dev/null +++ b/sources/tech/20190129 You shouldn-t name your variables after their types for the same reason you wouldn-t name your pets -dog- or -cat.md @@ -0,0 +1,83 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (You shouldn’t name your variables after their types for the same reason you wouldn’t name your pets “dog” or “cat”) +[#]: via: (https://dave.cheney.net/2019/01/29/you-shouldnt-name-your-variables-after-their-types-for-the-same-reason-you-wouldnt-name-your-pets-dog-or-cat) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +You shouldn’t name your variables after their types for the same reason you wouldn’t name your pets “dog” or “cat” +====== + +The name of a variable should describe its contents, not the _type_ of the contents. Consider this example: + +``` +var usersMap map[string]*User +``` + +What are some good properties of this declaration? We can see that it’s a map, and it has something to do with the `*User` type, so that’s probably good. But `usersMap` _is_ a map and Go, being a statically typed language, won’t let us accidentally use a map where a different type is required, so the `Map` suffix as a safety precaution is redundant. + +Now, consider what happens if we declare other variables using this pattern: + +``` +var ( + companiesMap map[string]*Company + productsMap map[string]*Products +) +``` + +Now we have three map type variables in scope, `usersMap`, `companiesMap`, and `productsMap`, all mapping `string`s to different `struct` types. We know they are maps, and we also know that their declarations prevent us from using one in place of another—​the compiler will throw an error if we try to use `companiesMap` where the code is expecting a `map[string]*User`. In this situation it’s clear that the `Map` suffix does not improve the clarity of the code, its just extra boilerplate to type. + +My suggestion is avoid any suffix that resembles the _type_ of the variable. Said another way, if `users` isn’t descriptive enough, then `usersMap` won’t be either. + +This advice also applies to function parameters. For example: + +``` +type Config struct { + // +} + +func WriteConfig(w io.Writer, config *Config) +``` + +Naming the `*Config` parameter `config` is redundant. We know it’s a pointer to a `Config`, it says so right there in the declaration. Instead consider if `conf` will do, or maybe just `c` if the lifetime of the variable is short enough. + +This advice is more than just a desire for brevity. If there is more that one `*Config` in scope at any one time, calling them `config1` and `config2` is less descriptive than calling them `original` and `updated` . The latter are less likely to be accidentally transposed—something the compiler won’t catch—while the former differ only in a one character suffix. + +Finally, don’t let package names steal good variable names. The name of an imported identifier includes its package name. For example the `Context` type in the `context` package will be known as `context.Context` when imported into another package . This makes it impossible to use `context` as a variable or type, unless of course you rename the import, but that’s throwing good after bad. This is why the local declaration for `context.Context` types is traditionally `ctx`. eg. + +``` +func WriteLog(ctx context.Context, message string) +``` + +* * * + +A variable’s name should be independent of its type. You shouldn’t name your variables after their types for the same reason you wouldn’t name your pets “dog” or “cat”. You shouldn’t include the name of your type in the name of your variable for the same reason. + +### Related posts: + + 1. [On declaring variables][1] + 2. [Go, without package scoped variables][2] + 3. [A whirlwind tour of Go’s runtime environment variables][3] + 4. [Declaration scopes in Go][4] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/01/29/you-shouldnt-name-your-variables-after-their-types-for-the-same-reason-you-wouldnt-name-your-pets-dog-or-cat + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://dave.cheney.net/2014/05/24/on-declaring-variables (On declaring variables) +[2]: https://dave.cheney.net/2017/06/11/go-without-package-scoped-variables (Go, without package scoped variables) +[3]: https://dave.cheney.net/2015/11/29/a-whirlwind-tour-of-gos-runtime-environment-variables (A whirlwind tour of Go’s runtime environment variables) +[4]: https://dave.cheney.net/2016/12/15/declaration-scopes-in-go (Declaration scopes in Go) From 7ac74c903ba8ffc45da368a357b0d980074ae34e Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:41:55 +0800 Subject: [PATCH 035/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190127=20Elimin?= =?UTF-8?q?ate=20error=20handling=20by=20eliminating=20errors=20sources/te?= =?UTF-8?q?ch/20190127=20Eliminate=20error=20handling=20by=20eliminating?= =?UTF-8?q?=20errors.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...te error handling by eliminating errors.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 sources/tech/20190127 Eliminate error handling by eliminating errors.md diff --git a/sources/tech/20190127 Eliminate error handling by eliminating errors.md b/sources/tech/20190127 Eliminate error handling by eliminating errors.md new file mode 100644 index 0000000000..6eac4740eb --- /dev/null +++ b/sources/tech/20190127 Eliminate error handling by eliminating errors.md @@ -0,0 +1,204 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Eliminate error handling by eliminating errors) +[#]: via: (https://dave.cheney.net/2019/01/27/eliminate-error-handling-by-eliminating-errors) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Eliminate error handling by eliminating errors +====== + +Go 2 aims to improve the overhead of [error handling][1], but do you know what is better than an improved syntax for handling errors? Not needing to handle errors at all. Now, I’m not saying “delete your error handling code”, instead I’m suggesting changing your code so you don’t have as many errors to handle. + +This article draws inspiration from a chapter in John Ousterhout’s, _[A philosophy of Software Design,][2]_ “Define Errors Out of Existence”. I’m going to try to apply his advice to Go. + +* * * + +Here’s a function to count the number of lines in a file, + +``` +func CountLines(r io.Reader) (int, error) { + var ( + br = bufio.NewReader(r) + lines int + err error + ) + + for { + _, err = br.ReadString('\n') + lines++ + if err != nil { + break + } + } + + if err != io.EOF { + return 0, err + } + return lines, nil + } +``` + +We construct a `bufio.Reader`, then sit in a loop calling the `ReadString` method, incrementing a counter until we reach the end of the file, then we return the number of lines read. That’s the code we _wanted_ to write, instead `CountLines` is made more complicated by its error handling. For example, there is this strange construction: + +``` +_, err = br.ReadString('\n') +lines++ +if err != nil { + break +} +``` + +We increment the count of lines _before_ checking the error—​that looks odd. The reason we have to write it this way is `ReadString` will return an error if it encounters an end-of-file—`io.EOF`—before hitting a newline character. This can happen if there is no trailing newline. + +To address this problem, we rearrange the logic to increment the line count, then see if we need to exit the loop.1 + +But we’re not done checking errors yet. `ReadString` will return `io.EOF` when it hits the end of the file. This is expected, `ReadString` needs some way of saying _stop, there is nothing more to read_. So before we return the error to the caller of `CountLine`, we need to check if the error was _not_ `io.EOF`, and in that case propagate it up, otherwise we return `nil` to say that everything worked fine. This is why the final line of the function is not simply + +``` +return lines, err +``` + +I think this is a good example of Russ Cox’s [observation that error handling can obscure the operation of the function][3]. Let’s look at an improved version. + +``` +func CountLines(r io.Reader) (int, error) { + sc := bufio.NewScanner(r) + lines := 0 + + for sc.Scan() { + lines++ + } + + return lines, sc.Err() +} +``` + +This improved version switches from using `bufio.Reader` to `bufio.Scanner`. Under the hood `bufio.Scanner` uses `bufio.Reader` adding a layer of abstraction which helps remove the error handling which obscured the operation of our previous version of `CountLines` 2 + +The method `sc.Scan()` returns `true` if the scanner _has_ matched a line of text and _has not_ encountered an error. So, the body of our `for` loop will be called only when there is a line of text in the scanner’s buffer. This means our revised `CountLines` correctly handles the case where there is no trailing newline, It also correctly handles the case where the file is empty. + +Secondly, as `sc.Scan` returns `false` once an error is encountered, our `for` loop will exit when the end-of-file is reached or an error is encountered. The `bufio.Scanner` type memoises the first error it encounters and we recover that error once we’ve exited the loop using the `sc.Err()` method. + +Lastly, `buffo.Scanner` takes care of handling `io.EOF` and will convert it to a `nil` if the end of file was reached without encountering another error. + +* * * + +My second example is inspired by Rob Pikes’ _[Errors are values][4]_ blog post. + +When dealing with opening, writing and closing files, the error handling is present but not overwhelming as, the operations can be encapsulated in helpers like `ioutil.ReadFile` and `ioutil.WriteFile`. However, when dealing with low level network protocols it often becomes necessary to build the response directly using I/O primitives, thus the error handling can become repetitive. Consider this fragment of a HTTP server which is constructing a HTTP/1.1 response. + +``` +type Header struct { + Key, Value string +} + +type Status struct { + Code int + Reason string +} + +func WriteResponse(w io.Writer, st Status, headers []Header, body io.Reader) error { + _, err := fmt.Fprintf(w, "HTTP/1.1 %d %s\r\n", st.Code, st.Reason) + if err != nil { + return err + } + + for _, h := range headers { + _, err := fmt.Fprintf(w, "%s: %s\r\n", h.Key, h.Value) + if err != nil { + return err + } + } + + if _, err := fmt.Fprint(w, "\r\n"); err != nil { + return err + } + + _, err = io.Copy(w, body) + return err +} +``` + +First we construct the status line using `fmt.Fprintf`, and check the error. Then for each header we write the header key and value, checking the error each time. Lastly we terminate the header section with an additional `\r\n`, check the error, and copy the response body to the client. Finally, although we don’t need to check the error from `io.Copy`, we do need to translate it from the two return value form that `io.Copy` returns into the single return value that `WriteResponse` expects. + +Not only is this a lot of repetitive work, each operation—fundamentally writing bytes to an `io.Writer`—has a different form of error handling. But we can make it easier on ourselves by introducing a small wrapper type. + +``` +type errWriter struct { + io.Writer + err error +} + +func (e *errWriter) Write(buf []byte) (int, error) { + if e.err != nil { + return 0, e.err + } + + var n int + n, e.err = e.Writer.Write(buf) + return n, nil +} +``` + +`errWriter` fulfils the `io.Writer` contract so it can be used to wrap an existing `io.Writer`. `errWriter` passes writes through to its underlying writer until an error is detected. From that point on, it discards any writes and returns the previous error. + +``` +func WriteResponse(w io.Writer, st Status, headers []Header, body io.Reader) error { + ew := &errWriter{Writer: w} + fmt.Fprintf(ew, "HTTP/1.1 %d %s\r\n", st.Code, st.Reason) + + for _, h := range headers { + fmt.Fprintf(ew, "%s: %s\r\n", h.Key, h.Value) + } + + fmt.Fprint(ew, "\r\n") + io.Copy(ew, body) + + return ew.err +} +``` + +Applying `errWriter` to `WriteResponse` dramatically improves the clarity of the code. Each of the operations no longer needs to bracket itself with an error check. Reporting the error is moved to the end of the function by inspecting the `ew.err` field, avoiding the annoying translation from `io.Copy`’s return values. + +* * * + +When you find yourself faced with overbearing error handling, try to extract some of the operations into a helper type. + + 1. This logic _still_ isn’t correct, can you spot the bug? + 2. `bufio.Scanner` can scan for any pattern, by default it looks for newlines. + + + +### Related posts: + + 1. [Error handling vs. exceptions redux][5] + 2. [Stack traces and the errors package][6] + 3. [Subcommand handling in Go][7] + 4. [Constant errors][8] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/01/27/eliminate-error-handling-by-eliminating-errors + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling-overview.md +[2]: https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201 +[3]: https://www.youtube.com/watch?v=6wIP3rO6On8 +[4]: https://blog.golang.org/errors-are-values +[5]: https://dave.cheney.net/2014/11/04/error-handling-vs-exceptions-redux (Error handling vs. exceptions redux) +[6]: https://dave.cheney.net/2016/06/12/stack-traces-and-the-errors-package (Stack traces and the errors package) +[7]: https://dave.cheney.net/2013/11/07/subcommand-handling-in-go (Subcommand handling in Go) +[8]: https://dave.cheney.net/2016/04/07/constant-errors (Constant errors) From 1f10664638ccb1ff9e9720a753a8e469f2294e25 Mon Sep 17 00:00:00 2001 From: darksun Date: Thu, 20 Jun 2019 17:42:07 +0800 Subject: [PATCH 036/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190108=20Avoid?= =?UTF-8?q?=20package=20names=20like=20base,=20util,=20or=20common=20sourc?= =?UTF-8?q?es/tech/20190108=20Avoid=20package=20names=20like=20base,=20uti?= =?UTF-8?q?l,=20or=20common.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ackage names like base, util, or common.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 sources/tech/20190108 Avoid package names like base, util, or common.md diff --git a/sources/tech/20190108 Avoid package names like base, util, or common.md b/sources/tech/20190108 Avoid package names like base, util, or common.md new file mode 100644 index 0000000000..b2c70b0b2e --- /dev/null +++ b/sources/tech/20190108 Avoid package names like base, util, or common.md @@ -0,0 +1,57 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Avoid package names like base, util, or common) +[#]: via: (https://dave.cheney.net/2019/01/08/avoid-package-names-like-base-util-or-common) +[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) + +Avoid package names like base, util, or common +====== + +Writing a good Go package starts with its name. Think of your package’s name as an elevator pitch, you have to describe what it does using just one word. + +A common cause of poor package names are _utility packages_. These are packages where helpers and utility code congeal. These packages contain an assortment of unrelated functions, as such their utility is hard to describe in terms of what the package _provides_. This often leads to a package’s name being derived from what the package _contains_ —utilities. + +Package names like `utils` or `helpers` are commonly found in projects which have developed deep package hierarchies and want to share helper functions without introducing import loops. Extracting utility functions to new package breaks the import loop, but as the package stems from a design problem in the project, its name doesn’t reflect its purpose, only its function in breaking the import cycle. + +> [A little] duplication is far cheaper than the wrong abstraction. + +— [Sandy Metz][1] + +My recommendation to improve the name of `utils` or `helpers` packages is to analyse where they are imported and move the relevant functions into the calling package. Even if this results in some code duplication this is preferable to introducing an import dependency between two packages. In the case where utility functions are used in many places, prefer multiple packages, each focused on a single aspect with a correspondingly descriptive name. + +Packages with names like `base` or `common` are often found when functionality common to two or more related facilities, for example common types between a client and server or a server and its mock, has been refactored into a separate package. Instead the solution is to reduce the number of packages by combining client, server, and common code into a single package named after the facility the package provides. + +For example, the `net/http` package does not have `client` and `server` packages, instead it has `client.go` and `server.go` files, each holding their respective types. `transport.go` holds for the common message transport code used by both HTTP clients and servers. + +Name your packages after what they _provide_ , not what they _contain_. + +### Related posts: + + 1. [Simple profiling package moved, updated][2] + 2. [The package level logger anti pattern][3] + 3. [How to include C code in your Go package][4] + 4. [Why I think Go package management is important][5] + + + +-------------------------------------------------------------------------------- + +via: https://dave.cheney.net/2019/01/08/avoid-package-names-like-base-util-or-common + +作者:[Dave Cheney][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://dave.cheney.net/author/davecheney +[b]: https://github.com/lujun9972 +[1]: https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction +[2]: https://dave.cheney.net/2014/10/22/simple-profiling-package-moved-updated (Simple profiling package moved, updated) +[3]: https://dave.cheney.net/2017/01/23/the-package-level-logger-anti-pattern (The package level logger anti pattern) +[4]: https://dave.cheney.net/2013/09/07/how-to-include-c-code-in-your-go-package (How to include C code in your Go package) +[5]: https://dave.cheney.net/2013/10/10/why-i-think-go-package-management-is-important (Why I think Go package management is important) From 23faef53e58505349f8508b4fe6b5cffb8814c9f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 01:29:11 +0800 Subject: [PATCH 037/336] PRF:20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md @wxy --- ...music lovers- Headphone, amps, and more.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md b/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md index d81d9e27d4..b491d64758 100644 --- a/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md +++ b/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Open hardware for musicians and music lovers: Headphone, amps, and more) @@ -10,40 +10,39 @@ 音乐家和音乐爱好者的开放硬件:耳机、放大器等 ====== -从 3D 打印乐器到将隔空播放声音的设备,有很多可以通过开放硬件项目来制造音乐的方法。 +> 从 3D 打印乐器到无线播放声音的设备,有很多通过开放硬件项目来奏乐的方法。 ![][1] -这个世界到处都是很棒的[开源音乐播放器][2],但为什么只是将开源用在播放音乐上呢?你还可以使用开源硬件制造音乐。本文中描述的所有工具都是经过了[开源硬件协会][3](OSHWA)认证的。这意味着你可以自由地构建它们,重新组合它们,或者用它们做任何其他事情。 +这个世界到处都是很棒的[开源音乐播放器][2],但为什么只是将开源用在播放音乐上呢?你还可以使用开源硬件奏乐。本文中描述的所有工具都是经过了[开源硬件协会][3](OSHWA)认证的。这意味着你可以自由地构建它们,重新组合它们,或者用它们做任何其他事情。 ### 开源乐器 -当你想制作音乐时,乐器始终是一个好的起点。如果你更倾向于传统的的乐器,那么[F-F-Fiddle][4]可能适合你。 +当你想奏乐时使用乐器总是最好的方式之一。如果你喜欢传统的的乐器,那么 [F-F-Fiddle][4] 可能适合你。 ![F-f-fiddle][5] -F-F-Fiddle 是一款全尺寸电子小提琴,你可以使用标准桌面 3D 打印机制作([熔丝制造][6])。如果你觉得眼见为真,那么这里有一个 F-F-Fiddle 的视频: https://youtu.be/8NDWVcJJS2Y +F-F-Fiddle 是一款全尺寸电子小提琴,你可以使用标准的桌面 3D 打印机制作(采用[熔丝制造][6])。如果你想眼见为真,那么这里有一个 F-F-Fiddle 的视频: https://img.linux.net.cn/static/video/The%20F-F-Fiddle-8NDWVcJJS2Y.mp4 -精通小提琴,但还对一些更具异国情调的东西感兴趣?[开源特雷门琴][7]Open Theremin怎么样? +如果你精通小提琴,但还对一些更具异国情调的东西感兴趣?[开源的特雷门琴][7]Open Theremin怎么样? ![Open Theremin][8] 与所有特雷门琴一样,开源特雷门琴可让你在不触碰乐器的情况下播放音乐。当然,它特别擅长为你的下一个科幻视频或空间主题派对制作[令人毛骨悚然的空间声音][9]。 -[Waft][10] 的操作类似,也可以远程控制声音。它使用[激光雷达][11]来测量手与传感器的距离。看看这个: https://vimeo.com/203705197 +[Waft][10] 的操作类似,也可以远程控制声音。它使用[激光雷达][11]来测量手与传感器的距离。看看这个: https://img.linux.net.cn/static/video/Waft%20Prototype%2012-Feb-2017-203705197.mp4 Waft 是特雷门琴吗?我不确定算不算,特雷门琴高手可以在下面的评论里发表一下看法。 -如果特雷门琴对你来说太熟悉了,[SIGNUM][12]可能就是你想要的。用其开发人员的话说,SIGNUM 通过将不可见的无线通信转换为可听信号来“揭示加密的信息代码和人/机通信的语言”。 +如果特雷门琴对你来说太熟悉了,[SIGNUM][12] 可能就是你想要的。用其开发人员的话说,SIGNUM 通过将不可见的无线通信转换为可听信号来“揭示加密的信息代码和人/机通信的语言”。 ![SIGNUM][13] -这是演示: https://vimeo.com/142831757 - +这是演示: https://img.linux.net.cn/static/video/SIGNUM_Portable%20Analog%20Instrumentation%20Amplifier-142831757.mp4 ### 输入 -无论你使用什么乐器,都需要将其插入某些东西。如果你想要连接到树莓派,请尝试 [AudioSense-Pi][14],它允许你一次将多个输入和输出连接到你的树莓派。 +无论你使用什么乐器,都需要将其接到某些东西上。如果你想要连接到树莓派,请尝试 [AudioSense-Pi][14],它允许你一次将多个输入和输出连接到你的树莓派。 ![AudioSense-Pi][15] @@ -55,7 +54,7 @@ Waft 是特雷门琴吗?我不确定算不算,特雷门琴高手可以在下 ### 耳机 -制作所有这些音乐很棒,但你还需要考虑如何听它。幸运的是,[EQ-1耳机][18]是开源和可以 3D 打印的。 +制作所有这些音乐很棒,但你还需要考虑如何听它。幸运的是,[EQ-1耳机][18]是开源,支持 3D 打印。 ![EQ-1 headphones][19] @@ -68,7 +67,7 @@ via: https://opensource.com/article/19/6/hardware-music 作者:[Michael Weinberg][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 9f1b862afcdbd2789bc3747dd0c09947464f7d54 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 01:31:40 +0800 Subject: [PATCH 038/336] PUB:20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md @wxy https://linux.cn/article-10998-1.html --- ...r musicians and music lovers- Headphone, amps, and more.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md (98%) diff --git a/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md b/published/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md similarity index 98% rename from translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md rename to published/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md index b491d64758..03a5f4dd47 100644 --- a/translated/tech/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md +++ b/published/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-10998-1.html) [#]: subject: (Open hardware for musicians and music lovers: Headphone, amps, and more) [#]: via: (https://opensource.com/article/19/6/hardware-music) [#]: author: (Michael Weinberg https://opensource.com/users/mweinberg) From c38b3d8b8023023bcc64b135ecf0b6ec264779d2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 01:44:49 +0800 Subject: [PATCH 039/336] PRF:20190612 Installing alternative versions of RPMs in Fedora.md @geekpi --- ... alternative versions of RPMs in Fedora.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md b/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md index 23f95600d7..831723db0f 100644 --- a/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md +++ b/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md @@ -1,24 +1,24 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Installing alternative versions of RPMs in Fedora) [#]: via: (https://fedoramagazine.org/installing-alternative-rpm-versions-in-fedora/) [#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) -在 Fedora 中安装替代版本的 RPM +在 Fedora 中安装替代版本的 RPM 包 ====== ![][1] -[模块化][2](Modularity)使 Fedora 能够在仓库中提供替代版本的 RPM 软件包。为每个 Fedroa 版本原生构建了多个不同的应用、语言运行时和工具版本。 +[模块化][2]Modularity使 Fedora 能够在仓库中提供替代版本的 RPM 软件包。每个 Fedroa 版本可以原生构建不同应用、语言运行时和工具版本的多个版本。 -Fedora Magazine 大约一年前就写了 [Fedora 28 服务器版的模块化][3]。那时,它只是一个有附加内容的可选仓库,并且明确只支持服务器版。到目前为止,它已经发生了很多变化,现在**模块化是 Fedora 发行版的核心部分**。一些软件包已完全变成模块。在编写本文时,Fedora 30 的 49,464 个二进制 RPM 软件包中的 1,119(2.26%)来自一个模块([关于这个数字的更多信息][4])。 +Fedora Magazine 大约一年前就写了 [Fedora 28 服务器版的模块化][3]。那时,它只是一个有附加内容的可选仓库,并且明确只支持服务器版。到目前为止,它已经发生了很多变化,现在**模块化是 Fedora 发行版的核心部分**。一些软件包已完全变成模块。在编写本文时,Fedora 30 的 49,464 个二进制 RPM 软件包中的 1,119(2.26%)来自模块([关于这个数字的更多信息][4])。 ### 模块化基础知识 -由于许多软件包有不同的版本会让人难以承受(并且难以管理),所以包被分组为**模块**,这代表一个应用程序、一个语言运行时或任何其他合理的组。 +由于许多软件包有不同的版本会让人难以承受(并且难以管理),所以包被分组为**模块**,它可以代表一个应用程序、一个语言运行时或任何其他合理的组。 模块通常有多个**流**,这通常代表软件的主要版本。它可以并行使用,但在给定系统上只能安装每个模块的一个流。 @@ -28,9 +28,9 @@ Fedora Magazine 大约一年前就写了 [Fedora 28 服务器版的模块化][3] ### 实际使用模块化 -当你在 Fedora 系统上安装 RPM 软件包时,它很可能它来自模块流。你可能没有注意到的原因之一是模块化的核心原则之一是在你要了解之前保持不可见。 +当你在 Fedora 系统上安装 RPM 软件包时,它很可能它来自模块流。你可能没有注意到的原因之一是模块化的核心原则之一是在你探究之前保持不可见。 -让我们比较以下两种情况。首先,安装流行的 _i3_ 平铺窗口管理器,然后安装极简化的 _dwm_ 窗口管理器: +让我们比较以下两种情况。首先,安装流行的 i3 平铺窗口管理器,然后安装极简化的 dwm 窗口管理器: ``` $ sudo dnf install i3 @@ -38,7 +38,7 @@ $ sudo dnf install i3 Done! ``` -正如所料,上面的命令会在系统上安装 _i3_ 包及其依赖项。这里没有其他事情发生。但另一个会怎么样? +正如所料,上面的命令会在系统上安装 i3 包及其依赖项。这里没有其他事情发生。但另一个会怎么样? ``` $ sudo dnf install dwm @@ -49,11 +49,11 @@ Enabling module streams: Done! ``` -感觉是一样的,但后台发生了一些事情 。它启用了默认的 _dwm_ 模块流 (_6.1_),并且安装了模块中的 _dwm_ 包。 +感觉是一样的,但后台发生了一些事情 。它启用了默认的 dwm 模块流(6.1),并且安装了模块中的 dwm 包。 为了保持透明,输出中有一条关于模块自动启用的消息。但除此之外,用户不需要了解模块化的任何信息,以便按照他们一贯的方式使用他们的系统。 -但如果他们使用模块化方式呢?让我们看看如何安装不同版本的 _dwm_。 +但如果他们使用模块化方式呢?让我们看看如何安装不同版本的 dwm。 使用以下命令查看可用的模块流: @@ -68,9 +68,9 @@ dwm 6.2 ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled ``` -输出显示 _dwm_ 模块有四个流,_6.1_ 是默认值。 +输出显示 dwm 模块有四个流,6.1 是默认值。 -要安装不同版本的 _dwm_ 包,例如,安装 _6.2_ 的流。启用他,然后使用以下两个命令安装软件包: +要安装不同版本的 dwm 包,例如,安装 6.2 的流。启用它,然后使用以下两个命令安装软件包: ``` $ sudo dnf module enable dwm:6.2 @@ -120,7 +120,7 @@ via: https://fedoramagazine.org/installing-alternative-rpm-versions-in-fedora/ 作者:[Adam Šamalík][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/) 荣誉推出 @@ -128,6 +128,6 @@ via: https://fedoramagazine.org/installing-alternative-rpm-versions-in-fedora/ [b]: https://github.com/lujun9972 [1]: https://fedoramagazine.org/wp-content/uploads/2019/06/modularity-f30-816x345.jpg [2]: https://docs.pagure.org/modularity -[3]: https://fedoramagazine.org/modularity-fedora-28-server-edition/ +[3]: https://linux.cn/article-10479-1.html [4]: https://blog.samalik.com/2019/06/12/counting-modularity-packages.html [5]: https://docs.fedoraproject.org/en-US/modularity/using-modules/ From 3c9e3f6e0dfa6d49acdddb62bac4da1e9a229a1d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 01:45:21 +0800 Subject: [PATCH 040/336] PUB:20190612 Installing alternative versions of RPMs in Fedora.md @geekpi https://linux.cn/article-10999-1.html --- ...90612 Installing alternative versions of RPMs in Fedora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190612 Installing alternative versions of RPMs in Fedora.md (98%) diff --git a/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md b/published/20190612 Installing alternative versions of RPMs in Fedora.md similarity index 98% rename from translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md rename to published/20190612 Installing alternative versions of RPMs in Fedora.md index 831723db0f..54406f13ba 100644 --- a/translated/tech/20190612 Installing alternative versions of RPMs in Fedora.md +++ b/published/20190612 Installing alternative versions of RPMs in Fedora.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-10999-1.html) [#]: subject: (Installing alternative versions of RPMs in Fedora) [#]: via: (https://fedoramagazine.org/installing-alternative-rpm-versions-in-fedora/) [#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) From 0be233d8d85b4d2c756245b056949a4955f578dd Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 02:12:51 +0800 Subject: [PATCH 041/336] PRF:20190508 Why startups should release their code as open source.md @chen-ni --- ...hould release their code as open source.md | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/translated/tech/20190508 Why startups should release their code as open source.md b/translated/tech/20190508 Why startups should release their code as open source.md index f5da2b2148..7256e60b3a 100644 --- a/translated/tech/20190508 Why startups should release their code as open source.md +++ b/translated/tech/20190508 Why startups should release their code as open source.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Why startups should release their code as open source) @@ -9,32 +9,34 @@ 为什么初创公司应该将代码开源 ====== -Dokit 曾经怀疑将自己的知识开源可能是一个失败的商业决策,然而正是这个选择奠定了它的成功。 + +> Dokit 曾经怀疑将自己的知识开源可能是一个失败的商业决策,然而正是这个选择奠定了它的成功。 + ![open source button on keyboard][1] -回想一个项目开展最初期的细节并不是一件容易的事情,但有时候可以帮助你更清晰地理解这个项目。如果让我来说,关于 [Dokit][2] 这个用来创建用户手册和文档的平台的最早的想法来自我的童年。小时候我家里都是 Meccano(译注:一种类似乐高的拼装玩具)和飞机模型之类的玩具,对于我来说,游戏中很重要的一部分就是动手制作,把独立的零件组装在一起来创造一个新的东西。我父亲在一家 DIY 公司工作,所以家里的很多东西也都和建筑、修理,以及使用说明书有关。小的时候父母还让我参加了童子军,在那里我们制作桌子和帐篷,还有泥巴做的烧烤炉,这些事情都培养了我在共同学习中感受到的乐趣,就像我在开源活动中感受到的一样。 +回想一个项目开展最初期的细节并不是一件容易的事情,但这有时候可以帮助你更清晰地理解这个项目。如果让我来说,关于 [Dokit][2] 这个用来创建用户手册和文档的平台的最早的想法来自我的童年。小时候我家里都是 Meccano(LCTT 译注:一种类似乐高的拼装玩具)和飞机模型之类的玩具,对于我来说,游戏中很重要的一部分就是动手制作,把独立的零件组装在一起来创造一个新的东西。我父亲在一家 DIY 公司工作,所以家里到处都建筑、修理,以及使用说明书。小的时候父母还让我参加了童子军,在那里我们制作桌子和帐篷,还有泥巴做的烧烤炉,这些事情都培养了我在共同学习中感受到的乐趣,就像我在开源活动中感受到的一样。 -在童年学到的修理东西和回收产品的艺术后来成为了我工作的一部分。后来我决心要用线上的方式,还原这种在家里或者小组里学习如何制作和修理东西时的那种非常棒的感觉。Dokit 就从这个想法中诞生了。 +在童年学到的修理东西和回收产品的本领成为了我工作的一部分。后来我决心要用线上的方式,还原这种在家里或者小组里学习如何制作和修理东西时的那种非常棒的感觉。Dokit 就从这个想法中诞生了。 ### 创业初期 -事情并非一帆风顺,在我们的公司于 2017 年成立之后,我很快就意识到那些最庞大、最值得奋斗的目标一般来说也总是最困难的。如果想要实现我们的计划 —— 彻底改变 [人们旧有的编写和发行说明书和用户手册的方式][3],并且在这个细分市场(我们非常清楚这一点)里取得最大的影响力 —— 那么确立一个主导任务就十分关键,它关乎项目的组织方式。我们据此做出了第一个重要决策:首先 [在短时间内使用一个已有的开源框架 MediaWiki 制作产品原型来验证我们的想法][4],然后将我们的全部代码都作为开源项目发布。 +事情并非一帆风顺,在我们的公司于 2017 年成立之后,我很快就意识到那些最庞大、最值得奋斗的目标一般来说也总是最困难的。如果想要实现我们的计划 —— 彻底改变 [老式的说明书和用户手册的编写和发行方式][3],并且在这个细分市场(我们非常清楚这一点)里取得最大的影响力 —— 那么确立一个主导任务就十分关键,它关乎项目的组织方式。我们据此做出了第一个重要决策:首先 [在短时间内使用一个已有的开源框架 MediaWiki 制作产品原型来验证我们的想法][4],然后将我们的全部代码都作为开源项目发布。 -当时 [MediaWiki][5] 已经在正常运作了,事后看来,这一点让我们的决策变得容易了许多。这个平台已经拥有我们设想的最小可用产品(MVP)所需要的 90% 的功能,并且在全世界范围内有 15000 名活跃的开发者。MediaWiki 因为是维基百科的驱动引擎而小有名气,如果没有来自它的支持,事情对我们来说无疑会困难很多。还有一个许多公司都在使用的文档平台 Confluence 也有一些不错的功能,但是最终还是不难在这两者之间做出选择。 +当时 [MediaWiki][5] 已经在正常运作了,事后看来,这一点让我们的决策变得容易了许多。这个平台已经拥有我们设想的最小可用产品(MVP)所需要的 90% 的功能,并且在全世界范围内有 15000 名活跃的开发者。MediaWiki 因为是维基百科的驱动引擎而小有名气,如果没有来自它的支持,事情对我们来说无疑会困难很多。还有一个许多公司都在使用的文档平台 Confluence 也有一些不错的功能,但是最终在这两者之间做出选择还是很容易的。 -出于对 Github 的信赖,我们把自己平台的初始版本完全放在了这个社区上。我们甚至还没有真正开始进行推广,就已经可以看到世界各地的制造者开始使用我们的平台,这种令人激动的感觉似乎说明我们的选择是正确的。尽管 [制造商以及 Fablab 运动][6](译注: Fablab 是一种向个人提供包括 3D 打印在内的电子化制造服务的小型工坊)都在鼓励用户积极分享说明材料,并且在 [Fablab 契约][7] 中也写明了这一点,现实中像模像样的文档还是不太多见。 +出于对社区的信赖,我们把自己平台的初始版本完全放在了 GitHub 上。我们甚至还没有真正开始进行推广,就已经可以看到世界各地的创客们开始使用我们的平台,这种令人激动的感觉似乎说明我们的选择是正确的。尽管 [创客以及 Fablab 运动][6](LCTT 译注:Fablab 是一种向个人提供包括 3D 打印在内的电子化制造服务的小型工坊)都在鼓励用户积极分享说明材料,并且在 [Fablab 章程][7] 中也写明了这一点,但现实中像模像样的文档还是不太多见。 -人们喜欢使用我们这个平台的首要原因是它可以解决一个非常实在的问题:一个本来还不错的项目,却使用了非常糟糕的文档 —— 其实这个项目本来可以变得更好的。对我们来说,这有点儿像是在修复 DIY 以及动手爱好者社区里的一个裂缝。在我们的平台发布后的一年之内,Fablabs、[Wikifab][8]、[Open Source Ecology][9]、[Les Petits Debrouillards][10]、[Ademe][11] 以及 [Low-Tech Lab][12] 都在他们的服务器上安装了我们的工具,用来制作逐步引导的教程。 +人们喜欢使用我们这个平台的首要原因是它可以解决一个非常实在的问题:一个本来还不错的项目,却使用了非常糟糕的文档 —— 其实这个项目本来可以变得更好的。对我们来说,这有点儿像是在修复创客及 DIY 社区里的一个裂缝。在我们的平台发布后的一年之内,Fablabs、[Wikifab][8]、[Open Source Ecology][9]、[Les Petits Debrouillards][10]、[Ademe][11] 以及 [Low-Tech Lab][12] 都在他们的服务器上安装了我们的工具,用来制作逐步引导的教程。 -甚至在我们还没有发新闻稿之前,我们的其中一个用户 Wikifab 就开始在全国性媒体上收到“DIY 界的维基百科”这样的称赞了。仅仅两年之内,我们看到有数百的社区都在他们自己的 Dokits 上开展了项目,从有意思的、搞笑的,到那种很正式的产品手册都有。这种社区的力量正是我们想要驾驭的,并且有这么多的项目 —— 从风力涡轮机到宠物喂食器 —— 都在使用我们创建的平台编写非常有吸引力的产品手册,这件事情真的令我们赞叹不已。 +甚至在我们还没有发新闻稿之前,我们的其中一个用户 Wikifab 就开始在全国性媒体上收到“DIY 界的维基百科”这样的称赞了。短短两年之内,我们看到有数百的社区都在他们自己的 Dokits 上开展了项目,从有意思的、搞笑的,到那种很正式的产品手册都有。这种社区的力量正是我们想要驾驭的,并且有这么多的项目 —— 从风力涡轮机到宠物喂食器 —— 都在使用我们创建的平台编写非常有吸引力的产品手册,这件事情真的令我们赞叹不已。 ### 项目开源 回头看看前两年的成功,很明显选择开源是我们能迅速取得成果的关键因素。最有价值的事情就是在开源项目中获得反馈的能力了。如果一段代码无法正常运行,[会有人立刻告诉我们][14]。如果可以从这些已经在使用你提供的服务的人那里学到这么多东西,为什么还要需要等着和顾问们开会呢? -Github 社区对我们这个项目的关注程度也反映出了这个市场的潜力(包括利润上的潜力)。[巴黎有非常好的、成长迅速的开发者社区][15](译注:Dokit 是一家设立在巴黎的公司),但是开源将我们从一个只有数千当地人的小池子里带到了全世界数百万的开发者身边,他们都将成为我们的创作中的一部分。与此同时,代码的开放性也让我们的用户和客户更加放心,因为即使我们这个公司不在了,代码仍然会存续下去。 +社区对我们这个项目的关注程度也反映出了这个市场的潜力(包括利润上的潜力)。[巴黎有一个非常好的、成长迅速的开发者社区][15](LCTT 译注:Dokit 是一家设立在巴黎的公司),但是开源将我们从一个只有数千当地人的小池子里带到了全世界数百万的开发者身边,他们都将成为我们的创作中的一部分。与此同时,代码的开放性也让我们的用户和客户更加放心,因为即使我们这个公司不在了,代码仍然会存续下去。 -如果说上面这些都是在我们之前对开源的预期之中的话,其实这一路上也有不少惊喜。因为开源,我们获得了更多的客户、声望以及精准推广,这种推广本来以我们有限的预算是负担不起的,现在却不需要我们支付费用。开放代码还优化了我们的招聘流程,因为在雇佣之前就可以通过我们的代码来测试候选人,并且被雇佣之后的入职过程也会更加顺利。 +如果说上面这些都是在我们之前对开源的预期之中的话,其实这一路上也有不少惊喜。因为开源,我们获得了更多的客户、声望以及精准推广,这种推广本来以我们有限的预算是负担不起的,现在却不需要我们支付费用。我们发现开源代码还改善了我们的招聘流程,因为在雇佣之前就可以通过我们的代码来测试候选人,并且被雇佣之后的入职过程也会更加顺利。 开发者在完全公开的情况下写代码,既有一点尴尬,同时也很团结,这对我们提升产品质量很有帮助。人们可以互相发表意见和反馈,并且因为工作都是完全公开的,人们似乎会尽可能地想做到最好。为了不断优化、不断重构 Dokit 的运行方式,我们明白未来应该在对社区的支持上做得更好。 @@ -44,7 +46,7 @@ Github 社区对我们这个项目的关注程度也反映出了这个市场的 在创业初期,我们对将自己的知识免费分发出去这件事还是非常担心的。事实证明正好相反 —— 正是开源让我们能够迅速构建起一个可持续的初创企业。Dokit 平台的设计初衷是通过社区的支持,让它的用户有信心去构建、组装、修理和创造全新的发明。事后看来,我们用开源的方式去构建了 Dokit 这个平台,这和 Dokit 本身想做的其实正好是同一件事情。 -如同修理或者组装一件实体产品一样,只有当你对自己的方法有信心的时候,事情才会越来越顺利。现在,在我们创业的第三个年头,我们开始注意到全世界对这个领域的兴趣在增加,因为它迎合了出于不断变化的居家和生活方式的需求而 [想要使用、重复利用以及组装产品的新一代客户][16]。我们正是在通过线上社区的支持,创造一个让大家能够在自己动手做东西的时候感到更加有信心的平台。 +如同修理或者组装一件实体产品一样,只有当你对自己的方法有信心的时候,事情才会越来越顺利。现在,在我们创业的第三个年头,我们开始注意到全世界对这个领域的兴趣在增加,因为它迎合了出于不断变化的居家和生活方式的需求而 [想要使用或重复利用以及组装产品的新一代客户][16]。我们正是在通过线上社区的支持,创造一个让大家能够在自己动手做东西的时候感到更加有信心的平台。 -------------------------------------------------------------------------------- @@ -53,7 +55,7 @@ via: https://opensource.com/article/19/5/startups-release-code 作者:[Clément Flipo][a] 选题:[lujun9972][b] 译者:[chen-ni](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 5a04dbce29b3856950663acfcbfafba0b6f22d49 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 02:16:14 +0800 Subject: [PATCH 042/336] PUB:20190508 Why startups should release their code as open source.md @chen-ni https://linux.cn/article-11000-1.html --- ...8 Why startups should release their code as open source.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190508 Why startups should release their code as open source.md (99%) diff --git a/translated/tech/20190508 Why startups should release their code as open source.md b/published/20190508 Why startups should release their code as open source.md similarity index 99% rename from translated/tech/20190508 Why startups should release their code as open source.md rename to published/20190508 Why startups should release their code as open source.md index 7256e60b3a..ff12c65320 100644 --- a/translated/tech/20190508 Why startups should release their code as open source.md +++ b/published/20190508 Why startups should release their code as open source.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11000-1.html) [#]: subject: (Why startups should release their code as open source) [#]: via: (https://opensource.com/article/19/5/startups-release-code) [#]: author: (Clément Flipo https://opensource.com/users/cl%C3%A9ment-flipo) From 09c76244b9c30499a1aab19c4296438c16b4346e Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 21 Jun 2019 09:10:42 +0800 Subject: [PATCH 043/336] translated --- ...19 Get the latest Ansible 2.8 in Fedora.md | 60 ------------------- ...19 Get the latest Ansible 2.8 in Fedora.md | 60 +++++++++++++++++++ 2 files changed, 60 insertions(+), 60 deletions(-) delete mode 100644 sources/tech/20190619 Get the latest Ansible 2.8 in Fedora.md create mode 100644 translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md diff --git a/sources/tech/20190619 Get the latest Ansible 2.8 in Fedora.md b/sources/tech/20190619 Get the latest Ansible 2.8 in Fedora.md deleted file mode 100644 index 7feffbf41b..0000000000 --- a/sources/tech/20190619 Get the latest Ansible 2.8 in Fedora.md +++ /dev/null @@ -1,60 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Get the latest Ansible 2.8 in Fedora) -[#]: via: (https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/) -[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) - -Get the latest Ansible 2.8 in Fedora -====== - -![][1] - -Ansible is one of the most popular automation engines in the world. It lets you automate virtually anything, from setup of a local system to huge groups of platforms and apps. It’s cross platform, so you can use it with all sorts of operating systems. Read on for more information on how to get the latest Ansible in Fedora, some of its changes and improvements, and how to put it to use. - -### Releases and features - -Ansible 2.8 was recently released with many fixes, features, and enhancements. It was available in Fedora mere days afterward as an official update in Fedora 29 and 30, as well as EPEL. The follow-on version 2.8.1 released two weeks ago. Again, the new release was available within a few days in Fedora. - -Installation is, of course, easy to do from the official Fedora repositories [using sudo][2]: - -``` -$ sudo dnf -y install ansible -``` - -The 2.8 release has a long list of changes, and you can read them in the [Porting Guide for 2.8][3]. But they include some goodies, such as _Python interpreter discovery._ Ansible 2.8 now tries to figure out which Python is preferred by the platform it runs on. In cases where that fails, Ansible uses a fallback list. However, you can still use a variable _ansible_python_interpreter_ to set the Python interpreter. - -Another change makes Ansible more consistent across platforms. Since _sudo_ is more exclusive to UNIX/Linux, and other platforms don’t have it, _become_ is now used in more places. This includes command line switches. For example, _–ask-sudo-pass_ has become _–ask-become-pass_ , and the prompt is now _BECOME password:_ instead. - -There are many more features in the 2.8 and 2.8.1 releases. Do check out the [official changelog on GitHub][4] for all the details. - -### Using Ansible - -Maybe you’re not sure if Ansible is something you could really use. Don’t worry, you might not be alone in thinking that, because it’s so powerful. But it turns out that it’s not hard to use it even for simple or individual setups like a home with a couple computers (or even just one!). - -We covered this topic earlier in the Fedora magazine as well: - -> [Using Ansible to set up a workstation][5] - -Give Ansible a try and see what you think. The great part about it is that Fedora stays quite up to date with the latest releases. Happy automating! - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/ - -作者:[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/2019/06/ansible28-816x345.jpg -[2]: https://fedoramagazine.org/howto-use-sudo/ -[3]: https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html -[4]: https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst -[5]: https://fedoramagazine.org/using-ansible-setup-workstation/ diff --git a/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md b/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md new file mode 100644 index 0000000000..d189875e73 --- /dev/null +++ b/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md @@ -0,0 +1,60 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Get the latest Ansible 2.8 in Fedora) +[#]: via: (https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/) +[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) + +在 Fedora 中获取最新的 Ansible 2.8 +====== + +![][1] + +Ansible 是世界上最受欢迎的自动化引擎之一。它能让你自动化几乎任何事情,从本地系统的设置到大量的平台和应用。它是跨平台的,因此你可以将其用于各种操作系统。继续阅读以获取有关如何在 Fedora 中获取最新 Ansible,一些更改和改进,以及如何使用它。 + +### 发布版本和功能 + +最近发布了 Ansible 2.8,其中包含许多修复,功能和增强。仅仅几天之后,它就可在 Fedora 29 和 30 以及 EPEL 中获取。两周前发布了后续版本 2.8.1。同样,新版本在几天内就可以在 Fedora 中获取。 + +[使用 sudo][2] 能够非常容易地从官方仓库安装: + +``` +$ sudo dnf -y install ansible +``` + +2.8 版本有很长的更新列表,你可以在 [2.8 的迁移指南][3]中阅读查看。但其中包含了一些好东西,比如 _Python 解释器发现_ 。Ansible 2.8 现在会试图找出哪个 Python 是它运行的平台的首选。如果失败,Ansible 会使用后备列表。但是,你仍然可以使用变量 _ansible_python_interpreter_ 来设置 Python 解释器。 + +另一个变化使 Ansible 在各个平台上更加一致。由于 _sudo_ 专用于 UNIX/Linux,而其他平台并没有,因此现在在更多地方使用 _become_。这包括了命令行开关。例如,_-ask-sudo-pass_ 已变成了 _-ask-become-pass_,提示符也变成了 _BECOME password:_。 + +2.8 和 2.8.1 版本中还有许多其他功能。有关所有细节,请查看 [GitHub 上的官方更新日志][4]。 + +### 使用 Ansible + +也许你不确定 Ansible 是否可以实际使用。别担心,你并不是唯一一个这样想的,因为它太强大了。但事实证明,它并不难以使用,在一个家庭内的几台电脑(甚至一台电脑)上设置都可以。 + +我们之前在 Fedora Magazine 中也讨论过这个话题: + +> [使用 Ansible 设置工作站][5] + +试试看 Ansible,说下你的想法。很重要的一部分是让 Fedora 保持最新版本。自动化快乐! + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/ + +作者:[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/2019/06/ansible28-816x345.jpg +[2]: https://fedoramagazine.org/howto-use-sudo/ +[3]: https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html +[4]: https://github.com/ansible/ansible/blob/stable-2.8/changelogs/CHANGELOG-v2.8.rst +[5]: https://fedoramagazine.org/using-ansible-setup-workstation/ From 9c5d31d06f6fa91ea409d84fc2d4adebeae7a6c7 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 21 Jun 2019 09:37:56 +0800 Subject: [PATCH 044/336] translating --- .../tech/20190614 Personal assistant with Mycroft and Fedora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md b/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md index f7f0edebfc..25feafdc93 100644 --- a/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md +++ b/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 372aca73b38bdfbb96b7cbb1554b178e4a48aa3b Mon Sep 17 00:00:00 2001 From: darksun Date: Fri, 21 Jun 2019 15:49:23 +0800 Subject: [PATCH 045/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190620=20Carrie?= =?UTF-8?q?r=20services=20help=20expand=20healthcare,=20with=205G=20in=20t?= =?UTF-8?q?he=20offing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190620 Carrier services help expand healthcare, with 5G in the offing.md --- ...xpand healthcare, with 5G in the offing.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 sources/talk/20190620 Carrier services help expand healthcare, with 5G in the offing.md diff --git a/sources/talk/20190620 Carrier services help expand healthcare, with 5G in the offing.md b/sources/talk/20190620 Carrier services help expand healthcare, with 5G in the offing.md new file mode 100644 index 0000000000..072b172fda --- /dev/null +++ b/sources/talk/20190620 Carrier services help expand healthcare, with 5G in the offing.md @@ -0,0 +1,85 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Carrier services help expand healthcare, with 5G in the offing) +[#]: via: (https://www.networkworld.com/article/3403366/carrier-services-help-expand-healthcare-with-5g-in-the-offing.html) +[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) + +Carrier services help expand healthcare, with 5G in the offing +====== +Many telehealth initiatives tap into wireless networking supplied by service providers that may start offering services such as Citizen's Band and 5G to support remote medical care. +![Thinkstock][1] + +There are connectivity options aplenty for most types of [IoT][2] deployment, but the idea of simply handing the networking part of the equation off to a national licensed wireless carrier could be the best one for certain kinds of deployments in the medical field. + +Telehealth systems, for example, are still a relatively new facet of modern medicine, but they’re already among the most important applications that use carrier networks to deliver care. One such system is operated by the University of Mississippi Medical Center, for the treatment and education of diabetes patients. + +**[More on wireless:[The time of 5G is almost here][3]]** + +**[ Now read[20 hot jobs ambitious IT pros should shoot for][4]. ]** + +Greg Hall is the director of IT at UMMC’s center for telehealth. He said that the remote patient monitoring system is relatively simple by design – diabetes patients receive a tablet computer that they can use to input and track their blood sugar levels, alert clinicians to symptoms like nerve pain or foot sores, and even videoconference with their doctors directly. The tablet connects via Verizon, AT&T or CSpire – depending on who’s got the best coverage in a given area – back to UMMC’s servers. + +According to Hall, there are multiple advantages to using carrier connectivity instead of unlicensed (i.e. purpose-built [Wi-Fi][5] or other technology) to connect patients – some of whom live in remote parts of the state – to their caregivers. + +“We weren’t expecting everyone who uses the service to have Wi-Fi,” he said, “and they can take their tablet with them if they’re traveling.” + +The system serves about 250 patients in Mississippi, up from roughly 175 in the 2015 pilot program that got the effort off the ground. Nor is it strictly limited to diabetes care – Hall said that it’s already been extended to patients suffering from chronic obstructive pulmonary disease, asthma and even used for prenatal care, with further expansion in the offing. + +“The goal of our program isn’t just the monitoring piece, but also the education piece, teaching a person to live with their [condition] and thrive,” he said. + +It hasn’t all been smooth sailing. One issue was caused by the natural foliage of the area, as dense areas of pine trees can cause transmission problems, thanks to their needles being a particularly troublesome length and interfering with 2.5GHz wireless signals. But Hall said that the team has been able to install signal boosters or repeaters to overcome that obstacle. + +Neurologist Dr. Allen Gee’s practice in Wyoming attempts to address a similar issue – far-flung patients with medical needs that might not be addressed by the sparse local-care options. From his main office in Cody, he said, he can cover half the state via telepresence, using a purpose-built system that is based on cellular-data connectivity from TCT, Spectrum and AT&T, as well as remote audiovisual equipment and a link to electronic health records stored in distant locations. That allows him to receive patient data, audio/visual information and even imaging diagnostics remotely. Some specialists in the state are able to fly to those remote locations, others are not. + +While Gee’s preference is to meet with patients in person, that’s just not always possible, he said. + +“Medical specialists don’t get paid for windshield time,” he noted. “Being able to transfer information from an EHR facilitates the process of learning about the patient.” + +### 5G is coming** + +** + +According to Alan Stewart-Brown, vice president at infrastructure management vendor Opengear, there’s a lot to like about current carrier networks for medical use – particularly wide coverage and a lack of interference – but there are bigger things to come. + +“We have customers that have equipment in ambulances for instance, where they’re livestreaming patients’ vital signs to consoles that doctors can monitor,” he said. “They’re using carrier 4G for that right now and it works well enough, but there are limitations, namely latency, which you don’t get on [5G][6].” + +Beyond the simple fact of increased throughput and lower latency, widespread 5G deployments could open a wide array of new possibilities for medical technology, mostly involving real-time, very-high-definition video streaming. These include medical VR, remote surgery and the like. + +“The process you use to do things like real-time video – right now on a 4G network, that may or may not have a delay,” said Stewart-Brown. “Once you can get rid of the delay, the possibilities are endless as to what you can use the technology for.” + +### Citizens band + +Ron Malenfant, chief architect for service provider IoT at Cisco, agreed that the future of 5G for medical IoT is bright, but said that the actual applications of the technology have to be carefully thought out. + +“The use cases need to be worked on,” he said. “The innovative [companies] are starting to say ‘OK, what does 5G mean to me’ and starting to plan use cases.” + +One area that the carriers themselves have been eyeing recently is the CBRS band of radio frequencies, which sits around 3.5GHz. It’s what’s referred to as “lightly licensed” spectrum, in that parts of it are used for things like CB radio and other parts are the domain of the U.S. armed forces, and it could be used to build private networks for institutional users like hospitals, instead of deploying small but expensive 4G cells. The idea is that the institutions would be able to lease those frequencies for their specific area from the carrier directly for private LTE/CBRS networks, and, eventually 5G, Malenfant said. + +There’s also the issue, of course, that there are still a huge amount of unknowns around 5G, which isn’t expected to supplant LTE in the U.S. for at least another year or so. The medical field’s stiff regulatory requirements could also prove a stumbling block for the adoption of newer wireless technology. + +Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3403366/carrier-services-help-expand-healthcare-with-5g-in-the-offing.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://images.idgesg.net/images/article/2018/07/stethoscope_mobile_healthcare_ipad_tablet_doctor_patient-100765655-large.jpg +[2]: https://www.networkworld.com/article/3207535/what-is-iot-how-the-internet-of-things-works.html +[3]: https://www.networkworld.com/article/3354477/mobile-world-congress-the-time-of-5g-is-almost-here.html +[4]: https://www.networkworld.com/article/3276025/careers/20-hot-jobs-ambitious-it-pros-should-shoot-for.html +[5]: https://www.networkworld.com/article/3238664/80211-wi-fi-standards-and-speeds-explained.html +[6]: https://www.networkworld.com/article/3203489/what-is-5g-how-is-it-better-than-4g.html +[7]: https://www.facebook.com/NetworkWorld/ +[8]: https://www.linkedin.com/company/network-world From e57d2418436b603c63f42b37b0ef7bd98dd7a836 Mon Sep 17 00:00:00 2001 From: darksun Date: Fri, 21 Jun 2019 15:49:43 +0800 Subject: [PATCH 046/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190620=20Severa?= =?UTF-8?q?l=20deals=20solidify=20the=20hybrid=20cloud=E2=80=99s=20status?= =?UTF-8?q?=20as=20the=20cloud=20of=20choice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190620 Several deals solidify the hybrid cloud-s status as the cloud of choice.md --- ...d cloud-s status as the cloud of choice.md | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 sources/talk/20190620 Several deals solidify the hybrid cloud-s status as the cloud of choice.md diff --git a/sources/talk/20190620 Several deals solidify the hybrid cloud-s status as the cloud of choice.md b/sources/talk/20190620 Several deals solidify the hybrid cloud-s status as the cloud of choice.md new file mode 100644 index 0000000000..ade07dcb10 --- /dev/null +++ b/sources/talk/20190620 Several deals solidify the hybrid cloud-s status as the cloud of choice.md @@ -0,0 +1,77 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Several deals solidify the hybrid cloud’s status as the cloud of choice) +[#]: via: (https://www.networkworld.com/article/3403354/several-deals-solidify-the-hybrid-clouds-status-as-the-cloud-of-choice.html) +[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) + +Several deals solidify the hybrid cloud’s status as the cloud of choice +====== +On-premises and cloud connections are being built by all the top vendors to bridge legacy and modern systems, creating hybrid cloud environments. +![Getty Images][1] + +The hybrid cloud market is expected to grow from $38.27 billion in 2017 to $97.64 billion by 2023, at a Compound Annual Growth Rate (CAGR) of 17.0% during the forecast period, according to Markets and Markets. + +The research firm said the hybrid cloud is rapidly becoming a leading cloud solution, as it provides various benefits, such as cost, efficiency, agility, mobility, and elasticity. One of the many reasons is the need for interoperability standards between cloud services and existing systems. + +Unless you are a startup company and can be born in the cloud, you have legacy data systems that need to be bridged, which is where the hybrid cloud comes in. + +So, in very short order we’ve seen a bunch of new alliances involving the old and new guard, reiterating that the need for hybrid solutions remains strong. + +**[ Read also:[What hybrid cloud means in practice][2] | Get regularly scheduled insights: [Sign up for Network World newsletters][3] ]** + +### HPE/Google + +In April, the Hewlett Packard Enterprise (HPE) and Google announced a deal where HPE introduced a variety of server solutions for Google Cloud’s Anthos, along with a consumption-based model for the validated HPE on-premises infrastructure that is integrated with Anthos. + +Following up with that, the two just announced a strategic partnership to create a hybrid cloud for containers by combining HPE’s on-premises infrastructure, Cloud Data Services, and GreenLake consumption model with Anthos. This allows for: + + * Bi-directional data mobility for data mobility and consistent data services between on-premises and cloud + * Application workload mobility to move containerized app workloads across on-premises and multi-cloud environments + * Multi-cloud flexibility, offering the choice of HPE Cloud Volumes and Anthos for what works best for the workload + * Unified hybrid management through Anthos, so customers can get a unified and consistent view of their applications and workloads regardless of where they reside + * Charged as a service via HPE GreenLake + + + +### IBM/Cisco + +This is a furthering of an already existing partnership between IBM and Cisco designed to deliver a common and secure developer experience across on-premises and public cloud environments for building modern applications. + +[Cisco said it will support IBM Cloud Private][4], an on-premises container application development platform, on Cisco HyperFlex and HyperFlex Edge hyperconverged infrastructure. This includes support for IBM Cloud Pak for Applications. IBM Cloud Paks deliver enterprise-ready containerized software solutions and developer tools for building apps and then easily moving to any cloud—public or private. + +This architecture delivers a common and secure Kubernetes experience across on-premises (including edge) and public cloud environments. IBM’s Multicloud Manager covers monitoring and management of clusters and container-based applications running from on-premises to the edge, while Cisco’s Virtual Application Centric Infrastructure (ACI) will allow customers to extend their network fabric from on-premises to the IBM Cloud. + +### IBM/Equinix + +Equinix expanded its collaboration with IBM Cloud to bring private and scalable connectivity to global enterprises via Equinix Cloud Exchange Fabric (ECX Fabric). This provides private connectivity to IBM Cloud, including Direct Link Exchange, Direct Link Dedicated and Direct Link Dedicated Hosting, that is secure and scalable. + +ECX Fabric is an on-demand, SDN-enabled interconnection service that allows any business to connect between its own distributed infrastructure and any other company’s distributed infrastructure, including cloud providers. Direct Link provides IBM customers with a connection between their network and IBM Cloud. So ECX Fabric provides IBM customers with a secured and scalable network connection to the IBM Cloud service. + +At the same time, ECX Fabric provides secure connections to other cloud providers, and most customers prefer a multi-vendor approach to avoid vendor lock-in. + +“Each of the partnerships focus on two things: 1) supporting a hybrid-cloud platform for their existing customers by reducing the friction to leveraging each solution and 2) leveraging the unique strength that each company brings. Each of the solutions are unique and would be unlikely to compete directly with other partnerships,” said Tim Crawford, president of Avoa, an IT consultancy. + +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/3403354/several-deals-solidify-the-hybrid-clouds-status-as-the-cloud-of-choice.html + +作者:[Andy Patrizio][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/Andy-Patrizio/ +[b]: https://github.com/lujun9972 +[1]: https://images.idgesg.net/images/article/2019/02/cloud_hand_plus_sign_private-100787051-large.jpg +[2]: https://www.networkworld.com/article/3249495/what-hybrid-cloud-mean-practice +[3]: https://www.networkworld.com/newsletters/signup.html +[4]: https://www.networkworld.com/article/3403363/cisco-connects-with-ibm-in-to-simplify-hybrid-cloud-deployment.html +[5]: https://www.facebook.com/NetworkWorld/ +[6]: https://www.linkedin.com/company/network-world From 7b40a0b00748cb5ddde2c1032f82b583e6538a11 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Fri, 21 Jun 2019 17:05:58 +0800 Subject: [PATCH 047/336] Update 20190111 Top 5 Linux Distributions for Productivity.md --- ... 5 Linux Distributions for Productivity.md | 58 ++++--------------- 1 file changed, 12 insertions(+), 46 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index d73c26ee09..5bbae53e33 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -14,23 +14,19 @@ 必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于它极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 -I have to confess, this particular topic is a tough one to address. Why? First off, Linux is a productive operating system by design. Thanks to an incredibly reliable and stable platform, getting work done is easy. Second, to gauge effectiveness, you have to consider what type of work you need a productivity boost for. General office work? Development? School? Data mining? Human resources? You see how this question can get somewhat complicated. +然而,这并不意味着那些基于推动底层操作系统成为更为高效平台的发行版们可以在配置和呈现方面做的更好。恰恰相反,许多发行版在偏离生产力这条道路上越走越远,所以你不会意识到你自己处在工作的窘境中,而是继续挖掘自己的潜力在工期结束之前拼命赶上进度。这些 Linux 发行版可以帮助你化繁为简,因此或许可以减少你工作流程中的痛点。 -然而,这并不意味着那些 +让我们来看一下这些发行版并为你找出适合你的最佳选择。为了更具条理,我按照生产力诉求把他们分成了几类。这项任务本身也是一种挑战,因为每个人在生产力提升上的需要是千差万别的。然而,我所关注的是下列的几项: -That doesn’t mean, however, that some distributions aren’t able to do a better job of configuring and presenting that underlying operating system into an efficient platform for getting work done. Quite the contrary. Some distributions do a much better job of “getting out of the way,” so you don’t find yourself in a work-related hole, having to dig yourself out and catch up before the end of day. These distributions help strip away the complexity that can be found in Linux, thereby making your workflow painless. + * 普通生产力: 适于从事复杂工作并希望提升工作效率。 -Let’s take a look at the distros I consider to be your best bet for productivity. To help make sense of this, I’ve divided them into categories of productivity. That task itself was challenging, because everyone’s productivity varies. For the purposes of this list, however, I’ll look at: + * 平面设计: 适于从事设计创造和图像处理的人们。 - * General Productivity: For those who just need to work efficiently on multiple tasks. + * 开发: 适于那些使用 Linux 桌面发行版来进行编程工作。 - * Graphic Design: For those that work with the creation and manipulation of graphic images. + * 管理人员: 适于那些需要某些版本来促进一体化的管理任务的人员。 - * Development: For those who use their Linux desktops for programming. - - * Administration: For those who need a distribution to facilitate their system administration tasks. - - * Education: For those who need a desktop distribution to make them more productive in an educational environment. + * 教育: 适于那些需要桌面发行版可以助力他们在教育领域更创造力的人们。 @@ -117,45 +113,15 @@ openSUSE:Education-Li-f-e 包含了一下工具: * TuxType - 一款为少儿准备的打字入门软件 - * wxMaxima - A cross platform GUI for the computer algebra system + * wxMaxima - 一个跨平台的计算机代数系统 - * Inkscape - Vector graphics program + * Inkscape - 矢量图形编辑软件 - * GIMP - Graphic image manipulation program + * GIMP - 图像处理软件(译注:被誉为 Linux 上的 PhotoShop) * Pencil - GUI prototyping tool - * Hugin - Panorama photo stitching and HDR merging program - -openSUSE:Education-Li-f-e includes tools like: - - * Brain Workshop - A dual n-back brain exercise - - * GCompris - An educational software suite for young children - - * gElemental - A periodic table viewer - - * iGNUit - A general purpose flash card program - - * Little Wizard - Development environment for children based on Pascal - - * Stellarium - An astronomical sky simulator - - * TuxMath - An math tutor game - - * TuxPaint - A drawing program for young children - - * TuxType - An educational typing tutor for children - - * wxMaxima - A cross platform GUI for the computer algebra system - - * Inkscape - Vector graphics program - - * GIMP - Graphic image manipulation program - - * Pencil - GUI prototyping tool - - * Hugin - Panorama photo stitching and HDR merging program + * Hugin - 全景照片拼接及 HDR 效果混合软件 ![Education][18] @@ -166,7 +132,7 @@ Figure 5: The openSUSE:Education-Li-f-e distro has plenty of tools to help you b Also included with openSUSE:Education-Li-f-e is the [KIWI-LTSP Server][19]. The KIWI-LTSP Server is a flexible, cost effective solution aimed at empowering schools, businesses, and organizations all over the world to easily install and deploy desktop workstations. Although this might not directly aid the student to be more productive, it certainly enables educational institutions be more productive in deploying desktops for students to use. For more information on setting up KIWI-LTSP, check out the openSUSE [KIWI-LTSP quick start guide][20]. -Learn more about Linux through the free ["Introduction to Linux" ][21]course from The Linux Foundation and edX. +Learn more about Linux through the free ["Introduction to Linux"][21]course from The Linux Foundation and edX. -------------------------------------------------------------------------------- From a5e0fdd94e3405b23b454c82c20cdf50de70af4a Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:12:21 +0800 Subject: [PATCH 048/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190621=207=20in?= =?UTF-8?q?frastructure=20performance=20and=20scaling=20tools=20you=20shou?= =?UTF-8?q?ld=20be=20using?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190621 7 infrastructure performance and scaling tools you should be using.md --- ...e and scaling tools you should be using.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 sources/tech/20190621 7 infrastructure performance and scaling tools you should be using.md diff --git a/sources/tech/20190621 7 infrastructure performance and scaling tools you should be using.md b/sources/tech/20190621 7 infrastructure performance and scaling tools you should be using.md new file mode 100644 index 0000000000..3a9003ae9c --- /dev/null +++ b/sources/tech/20190621 7 infrastructure performance and scaling tools you should be using.md @@ -0,0 +1,94 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (7 infrastructure performance and scaling tools you should be using) +[#]: via: (https://opensource.com/article/19/6/performance-scaling-tools) +[#]: author: (Pradeep SurisettyPeter Portante https://opensource.com/users/psuriset/users/aakarsh/users/portante/users/anaga) + +7 infrastructure performance and scaling tools you should be using +====== +These open source tools will help you feel confident in your +infrastructure's performance as it scales up. +![Several images of graphs.][1] + +[Sysadmins][2], [site reliability engineers][3] (SREs), and cloud operators all too often struggle to feel confident in their infrastructure as it scales up. Also too often, they think the only way to solve their challenges is to write a tool for in-house use. Fortunately, there are options. There are many open source tools available to test an infrastructure's performance. Here are my favorites. + +### Pbench + +Pbench is a performance testing harness to make executing benchmarks and performance tools easier and more convenient. In short, it: + + * Excels at running micro-benchmarks on large scales of hosts (bare-metal, virtual machines, containers, etc.) while automating a potentially large set of benchmark parameters + * Focuses on installing, configuring, and executing benchmark code and performance tools and not on provisioning or orchestrating the testbed (e.g., OpenStack, RHEV, RHEL, Docker, etc.) + * Is designed to work in concert with provisioning tools like BrowBeat or Ansible playbooks + + + +Pbench's [documentation][4] includes installation and user guides, and the code is [maintained on GitHub][5], where the team welcomes contributions and issues. + +### Ripsaw + +Baselining is a critical aspect of infrastructure reliability. Ripsaw is a performance benchmark Operator for launching workloads on Kubernetes. It deploys as a Kuberentes Operator that then deploys common workloads, including specific applications (e.g., Couchbase) or general performance tests (e.g., Uperf) to measure and establish a performance baseline. + +Ripsaw is [maintained on GitHub][6]. You can also find its maintainers on the [Kubernetes Slack][7], where they are active contributors. + +### OpenShift Scale + +The collection of tools in OpenShift Scale, OpenShift's open source solution for performance testing, do everything from spinning up OpenShift on OpenStack installations (TripleO Install and ShiftStack Install), installing on Amazon Web Services (AWS), or providing containerized tooling, like running Pbench on your cluster or doing cluster limits testing, network tests, storage tests, metric tests with Prometheus, logging, and concurrent build testing. + +Scale's CI suite is flexible enough to both add workloads and include your workloads when deploying to Azure or anywhere else you might run. You can see the full suite of tools [on GitHub][8]. + +### Browbeat + +[Browbeat][9] calls itself "a performance tuning and analysis tool for OpenStack." You can use it to analyze and tune the deployment of your workloads. It also automates the deployment of standard monitoring and data analysis tools like Grafana and Graphite. Browbeat is [maintained on GitHub][10]. + +### Smallfile + +Smallfile is a filesystem workload generator targeted for scale-out, distributed storage. It has been used to test a number of open filesystem technologies, including GlusterFS, CephFS, Network File System (NFS), Server Message Block (SMB), and OpenStack Cinder volumes. It is [maintained on GitHub][11]. + +### Ceph Benchmarking Tool + +Ceph Benchmarking Tool (CBT) is a testing harness that can automate tasks for testing [Ceph][12] cluster performance. It records system metrics with collectl, and it can collect more information with tools including perf, blktrace, and valgrind. CBT can also do advanced testing that includes automated object storage daemon outages, erasure-coded pools, and cache-tier configurations. + +Contributors have extended CBT to use [Pbench monitoring tools and Ansible][13] and to run the [Smallfile benchmark][14]. A separate Grafana visualization dashboard uses Elasticsearch data generated by [Automated Ceph Test][15]. + +### satperf + +Satellite-performance (satperf) is a set of Ansible playbooks and helper scripts to deploy Satellite 6 environments and measure the performance of selected actions, such as concurrent registrations, remote execution, Puppet operations, repository synchronizations and promotions, and more. You can find Satperf [on GitHub][16]. + +### Conclusion + +Sysadmins, SREs, and cloud operators face a wide variety of challenges as they work to scale their infrastructure, but luckily there is also a wide variety of tools to help them get past those common issues. Any of these seven tools should help you get started testing your infrastructure's performance as it scales. + +Are there other open source performance and scaling tools that should be on this list? Add your favorites in the comments. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/performance-scaling-tools + +作者:[Pradeep SurisettyPeter Portante][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/psuriset/users/aakarsh/users/portante/users/anaga +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/containers_scale_performance.jpg?itok=R7jyMeQf (Several images of graphs.) +[2]: /16/12/yearbook-10-open-source-sysadmin-tools +[3]: /article/19/5/life-performance-engineer +[4]: https://distributed-system-analysis.github.io/pbench/ +[5]: https://github.com/distributed-system-analysis/pbench +[6]: https://github.com/cloud-bulldozer/ripsaw +[7]: https://github.com/cloud-bulldozer/ripsaw#community +[8]: https://github.com/openshift-scale +[9]: https://browbeatproject.org/ +[10]: https://github.com/cloud-bulldozer/browbeat +[11]: https://github.com/distributed-system-analysis/smallfile +[12]: https://ceph.com/ +[13]: https://github.com/acalhounRH/cbt +[14]: https://nuget.pkg.github.com/bengland2/cbt/tree/smallfile +[15]: https://github.com/acalhounRH/automated_ceph_test +[16]: https://github.com/redhat-performance/satperf From 51e27c15c72e017ea8e67cb04d068681d4583a6e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:13:12 +0800 Subject: [PATCH 049/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190621=20The=20?= =?UTF-8?q?state=20of=20open=20source=20translation=20tools=20for=20contri?= =?UTF-8?q?butors=20to=20your=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190621 The state of open source translation tools for contributors to your project.md --- ... tools for contributors to your project.md | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 sources/tech/20190621 The state of open source translation tools for contributors to your project.md diff --git a/sources/tech/20190621 The state of open source translation tools for contributors to your project.md b/sources/tech/20190621 The state of open source translation tools for contributors to your project.md new file mode 100644 index 0000000000..07bac654fc --- /dev/null +++ b/sources/tech/20190621 The state of open source translation tools for contributors to your project.md @@ -0,0 +1,97 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The state of open source translation tools for contributors to your project) +[#]: via: (https://opensource.com/article/19/6/translation-platforms-matter) +[#]: author: (Jean-Baptiste Holcroft https://opensource.com/users/jibec/users/jibec) + +The state of open source translation tools for contributors to your project +====== +There are almost 100 languages with more than 10 million speakers. How +many of your active contributors speak one? +![Team of people around the world][1] + +In the world of free software, many people speak English: It is the **one** language. English helps us cross borders to meet others. However, this language is also a barrier for the majority of people. + +Some master it while others don't. Complex English terms are, in general, a barrier to the understanding and propagation of knowledge. Whenever you use an uncommon English word, ask yourself about your real mastery of what you are explaining, and the unintentional barriers you build in the process. + +_“If you talk to a man in a language he understands, that goes to his head. If you talk to him in his language, that goes to his heart.”_ — Nelson Mandela + +We are 7 billion humans, and less than 400 million of us are English natives. The wonders done day after day by free/libre open source contributors deserve to reach the hearts of the [6.6 billion people][2] for whom English is not their mother tongue. In this day and age, we have the technology to help translate all types of content: websites, documentation, software, and even sounds and images. Even if I do not translate of all of these media personally, I do not know of any real limits. The only prerequisite for getting this content translated is both the willingness of the creators and the collective will of the users, customers, and—in the case of free software—the contributors. + +### Why successful translation requires real tooling + +Some projects are stuck in the stone ages and require translators to use [Git][3], [Mercurial][4], or other development tools. These tools don’t meet the needs of translation communities. Let’s help these projects evolve, as discussed in the section "A call for action." + +Other projects have integrated translation platforms, which are key tools for linguistic diversity and existence. These tools understand the needs of translators and serve as a bridge to the development world. They make translation contribution easy, and keep those doing the translations motivated over time. + +This aspect is important: There are almost 100 languages with more than 10 million speakers. Do you really believe that your project can have an active contributor for each of these languages? Unless you are a huge organization, like Mozilla or LibreOffice, there is no chance. The translators who help you also help two, ten, or a hundred other projects. They need tools to be effective, such as [translation memories][5], progress reports, alerts, ways to collaborate, and knowing that what they do is useful. + +### Translation platforms are in trouble + +However, the translation platforms distributed as free software are disappearing in favor of closed platforms. These platforms set their rules and efforts according to what will bring them the most profit. + +Linguistic and cultural diversity does not bring money: It opens doors and allows local development. It emancipates populations and can ensure the survival of certain cultures and languages. In the 21st century, is your culture really alive if it does not exist in cyberspace? + +The short history of translation platforms is not pretty: + + * In 2011, Transifex ceased to be open when they decided to no longer publish their source code. + * Since September 2017, the [Pootle][6] project seems to have stalled. + * In October 2018, the [Zanata][7] project shut down because it had not succeeded in building a community of technical contributors capable of taking over when corporate funding was halted. + + + +In particular, the [Fedora Project][8]—which I work closely with—has ridden the roller coaster from Transifex to Zanata and is now facing another move and more challenges. + +Two significant platforms remain: + + * [Pontoon][9]: Dedicated to the Mozilla use case (large community, common project). + * [Weblate][10]: A generic platform created by developer [Michal Čihař][11] (a generic purpose platform). + + + +These two tools are of high quality and are technically up-to-date, but Mozilla’s Pontoon is not designed to appeal to the greatest number of people. This project is dedicated to the specific challenges Mozilla faces.  + +### A call for action + +There is an urgent need for large communities to share resources to perpetuate Weblate as free software and promote its adoption. Support is also needed for other tools, such as [po4a][12], the [Translate Toolkit][13], and even our old friend [gettext][14]. Will we accept a sword of Damocles hanging over our heads? Will we continue to consume years of free work without giving a cent in return? Or will we take the lead in bringing security to our communities? + +**What you can do as a contributor**: Promote Weblate as an open source translation platform, and help your beloved project use it. [Hosting is free for open source projects][15]. + +**What you can do as a developer**: Make sure all of your project’s content can be translated into any language. Think about this issue from the beginning, as all tools don’t provide the same internationalization features. + +**What you can do as an entity with a budget**: Whether you’re a company or just part of the community, pay for the support, hosting, or development of the tools you use. Even if the amount is symbolic, doing this will lower the risks. In particular, [here is the info for Weblate][16]. (Note: I’m not involved with the Weblate project other than bug reports and translation.) + +**What to do if you’re a language enthusiast**: Contact me to help create an open source language organization to promote our tools and their usage, and find money to fund them. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/translation-platforms-matter + +作者:[Jean-Baptiste Holcroft][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/jibec/users/jibec +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team_global_people_gis_location.png?itok=Rl2IKo12 (Team of people around the world) +[2]: https://www.ethnologue.com/statistics/size +[3]: https://git-scm.com +[4]: https://www.mercurial-scm.org +[5]: https://en.wikipedia.org/wiki/Translation_memory +[6]: http://pootle.translatehouse.org +[7]: http://zanata.org +[8]: https://getfedora.org +[9]: https://github.com/mozilla/pontoon/ +[10]: https://weblate.org +[11]: https://cihar.com +[12]: https://po4a.org +[13]: http://docs.translatehouse.org/projects/translate-toolkit/en/latest/ +[14]: https://www.gnu.org/software/gettext/ +[15]: http://hosted.weblate.org/ +[16]: https://weblate.org/en/hosting/ From 27ba6ca84bd024c4c0017bcd74f2458b28b53e8c Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:13:41 +0800 Subject: [PATCH 050/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190620=20How=20?= =?UTF-8?q?to=20SSH=20into=20a=20running=20container?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190620 How to SSH into a running container.md --- ...620 How to SSH into a running container.md | 185 ++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 sources/tech/20190620 How to SSH into a running container.md diff --git a/sources/tech/20190620 How to SSH into a running container.md b/sources/tech/20190620 How to SSH into a running container.md new file mode 100644 index 0000000000..f0b4cdafc2 --- /dev/null +++ b/sources/tech/20190620 How to SSH into a running container.md @@ -0,0 +1,185 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to SSH into a running container) +[#]: via: (https://opensource.com/article/19/6/how-ssh-running-container) +[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/bcotton) + +How to SSH into a running container +====== +SSH is probably not the best way to run commands in a container; try +this instead. +![cubes coming together to create a larger cube][1] + +Containers have shifted the way we think about virtualization. You may remember the days (or you may still be living them) when a virtual machine was the full stack, from virtualized BIOS, operating system, and kernel up to each virtualized network interface controller (NIC). You logged into the virtual box just as you would your own workstation. It was a very direct and simple analogy. + +And then containers came along, [starting with LXC][2] and culminating in the Open Container Initiative ([OCI][3]), and that's when things got complicated. + +### Idempotency + +In the world of containers, the "virtual machine" is only mostly virtual. Everything that doesn't need to be virtualized is borrowed from the host machine. Furthermore, the container itself is usually meant to be ephemeral and idempotent, so it stores no persistent data, and its state is defined by configuration files on the host machine. + +If you're used to the old ways of virtual machines, then you naturally expect to log into a virtual machine in order to interact with it. But containers are ephemeral, so anything you do in a container is forgotten, by design, should the container need to be restarted or respawned. + +The commands controlling your container infrastructure (such as **oc, crictl**, **lxc**, and **docker**) provide an interface to run important commands to restart services, view logs, confirm the existence and permissions modes of an important file, and so on. You should use the tools provided by your container infrastructure to interact with your application, or else edit configuration files and relaunch. That's what containers are designed to do. + +For instance, the open source forum software [Discourse][4] is officially distributed as a container image. The Discourse software is _stateless_, so its installation is self-contained within **/var/discourse**. As long as you have a backup of **/var/discourse**, you can always restore the forum by relaunching the container. The container holds no persistent data, and its configuration file is **/var/discourse/containers/app.yml**. + +Were you to log into the container and edit any of the files it contains, all changes would be lost if the container had to be restarted. + +LXC containers you're building from scratch are more flexible, with configuration files (in a location defined by you) passed to the container when you launch it. + +A build system like [Jenkins][5] usually has a default configuration file, such as **jenkins.yaml**, providing instructions for a base container image that exists only to build and run tests on source code. After the builds are done, the container goes away. + +Now that you know you don't need SSH to interact with your containers, here's an overview of what tools are available (and some notes about using SSH in spite of all the fancy tools that make it redundant). + +### OpenShift web console + +[OpenShift 4][6] offers an open source toolchain for container creation and maintenance, including an interactive web console. + +When you log into your web console, navigate to your project overview and click the **Applications** tab for a list of pods. Select a (running) pod to open the application's **Details** panel. + +![Pod details in OpenShift][7] + +Click the **Terminal** tab at the top of the **Details** panel to open an interactive shell in your container. + +![A terminal in a running container][8] + +If you prefer a browser-based experience for Kubernetes management, you can learn more through interactive lessons available at [learn.openshift.com][9]. + +### OpenShift oc + +If you prefer a command-line interface experience, you can use the **oc** command to interact with containers from the terminal. + +First, get a list of running pods (or refer to the web console for a list of active pods). To get that list, enter: + + +``` +`$ oc get pods` +``` + +You can view the logs of a resource (a pod, build, or container). By default, **oc logs** returns the logs from the first container in the pod you specify. To select a single container, add the **\--container** option: + + +``` +`$ oc logs --follow=true example-1-e1337 --container app` +``` + +You can also view logs from all containers in a pod with: + + +``` +`$ oc logs --follow=true example-1-e1337 --all-containers` +``` + +#### Execute commands + +You can execute commands remotely with: + + +``` +$ oc exec example-1-e1337 --container app hostname +        example.local +``` + +This is similar to running SSH non-interactively: you get to run the command you want to run without an interactive shell taking over your environment. + +#### Remote shell + +You can attach to a running container. This still does _not_ open a shell in the container, but it does run commands directly. For example: + + +``` +`$ oc attach example-1-e1337 --container app` +``` + +If you need a true interactive shell in a container, you can open a remote shell with the **oc rsh** command as long as the container includes a shell. By default, **oc rsh** launches **/bin/sh**: + + +``` +`$ oc rsh example-1-e1337 --container app` +``` + +### Kubernetes + +If you're using Kubernetes directly, you can use the **kubetcl** **exec** command to run a Bash shell in your pod. + +First, confirm that your pod is running: + + +``` +`$ kubectl get pods` +``` + +As long as the pod containing your application is listed, you can use the **exec** command to launch a shell in the container. Using the name **example-pod** as the pod name, enter: + + +``` +$ kubectl exec --stdin=false --tty=false +  example-pod -- /bin/bash +[root@example.local][10]:/# ls +bin   core etc   lib    root  srv +boot  dev  home  lib64  sbin  tmp  var +``` + +### Docker + +The **docker** command is similar to **kubectl**. With the **dockerd** daemon running, get the name of the running container (you may have to use **sudo** to escalate privileges if you're not in the appropriate group): + + +``` +$ docker ps +CONTAINER ID    IMAGE       COMMAND      NAME +678ac5cca78e    centos     "/bin/bash"   example-centos +``` + +Using the container name, you can run a command in the container: + + +``` +$ docker exec example/centos cat /etc/os-release +CentOS Linux release 7.6 +NAME="CentOS Linux" +VERSION="7" +ID="centos" +ID_LIKE="rhel fedora" +VERSION_ID="7" +[...] +``` + +Or you can launch a Bash shell for an interactive session: + + +``` +`$ docker exec -it example-centos /bin/bash` +``` + +### Containers and appliances + +The important thing to remember when dealing with the cloud is that containers are essentially runtimes rather than virtual machines. While they have much in common with a Linux system (because they _are_ a Linux system!), they rarely translate directly to the commands and workflow you may have developed on your Linux workstation. However, like appliances, containers have an interface to help you develop, maintain, and monitor them, so get familiar with the front-end commands and services until you're happily interacting with them just as easily as ****you interact with virtual (or bare-metal) machines. Soon, you'll wonder why everything isn't developed to be ephemeral. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/how-ssh-running-container + +作者:[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/bcotton +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cube_innovation_process_block_container.png?itok=vkPYmSRQ (cubes coming together to create a larger cube) +[2]: https://opensource.com/article/18/11/behind-scenes-linux-containers +[3]: https://www.opencontainers.org/ +[4]: http://discourse.org +[5]: http://jenkins.io +[6]: https://www.openshift.com/learn/get-started +[7]: https://opensource.com/sites/default/files/uploads/openshift-pod-access.jpg (Pod details in OpenShift) +[8]: https://opensource.com/sites/default/files/uploads/openshift-pod-terminal.jpg (A terminal in a running container) +[9]: http://learn.openshift.com +[10]: mailto:root@example.local From 85daa85d9c870dac384233aebd1438ce09c7de4a Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:17:10 +0800 Subject: [PATCH 051/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190620=20You=20?= =?UTF-8?q?can't=20buy=20DevOps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190620 You can-t buy DevOps.md --- sources/tech/20190620 You can-t buy DevOps.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 sources/tech/20190620 You can-t buy DevOps.md diff --git a/sources/tech/20190620 You can-t buy DevOps.md b/sources/tech/20190620 You can-t buy DevOps.md new file mode 100644 index 0000000000..36717058a0 --- /dev/null +++ b/sources/tech/20190620 You can-t buy DevOps.md @@ -0,0 +1,103 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (You can't buy DevOps) +[#]: via: (https://opensource.com/article/19/6/you-cant-buy-devops) +[#]: author: (Julie Gunderson https://opensource.com/users/juliegund) + +You can't buy DevOps +====== +But plenty of people are happy to sell it to you. Here's why it's not +for sale. +![Coffee shop photo][1] + +![DevOps price tag graphic][2] + +Making a move to [DevOps][3] can be a daunting undertaking, with many organizations not knowing the right place to start. I recently had some fun taking a few "DevOps assessments" to see what solutions they offered. I varied my answers—from an organization that fully embraces DevOps to one at the beginning of the journey. Some of the assessments provided real value, linking me back to articles on culture and methodologies, while others merely offered me a tool promising to bring all my DevOps dreams into reality. + +Tools are absolutely essential to the DevOps journey; for instance, tools can continuously deliver, automate, or monitor your environment. However, **DevOps is not a product**, and tools alone will not enable the processes necessary to realize the full value of DevOps. People are what matter most; you can't do DevOps without building the people, mindset, and culture first. + +### Don't 'win' at DevOps; become a champion + +As a DevOps advocate at PagerDuty, I am proud to be a part of an organization with a strong commitment to DevOps methodologies, well beyond just "checking the boxes" of tool adoption. + +I recently had a conversation with PagerDuty CEO Jennifer Tejada about being a winner versus a champion. She talked about how winning is fantastic—you get a trophy, a title, or maybe even a few million dollars (if it's the lottery). However, in the big picture, winning is all about short-term goals, while being a champion means focusing on long-term successes or outcomes. This got me thinking about how to apply this principle to organizations embracing DevOps. + +One of my favorite examples of DevOps tooling is XebiaLabs' [Periodic Table of DevOps Tools][4]: + +[![Periodic Table of DevOps][5]][4] + +(Click table for interactive version.) + +The table shows that numerous tools fit into DevOps. However, too many times, I have heard about organizations "transforming to DevOps" by purchasing tools. While tooling is an essential part of the DevOps journey, a tool alone does not create a DevOps environment. You have to consider all the factors that make a DevOps team function well: collaboration, breaking down silos, defined processes, ownership, and automation, along with continuous improvement/continuous delivery. + +Deciding to purchase tooling is a great step in the right direction; what is more important is to define the "why" or the end goal behind decisions first. Which brings us back to the mentality of a champion; look at Olympic gold medalist Michael Phelps, for example. Phelps is the most decorated Olympian of all time and holds 39 world records. To achieve these accomplishments, Phelps didn't stop at one, two, or even 20 wins; he aimed to be a champion. This was all done through commitment, practice, and focusing on the desired end state. + +### DevOps defined + +There are hundreds of definitions for DevOps, but almost everyone can agree on the core tenet outlined in the [State of DevOps Report][6]: + +> "DevOps is a set of principles aimed at building culture and processes to help teams work more efficiently and deliver better software faster." + +You can't change culture and processes with a credit card. Tooling can enable an organization to collaborate better or automate or continuously deliver; however, without the right mindset and adoption, a tool's full capability may not be achievable. + +For example, one of my former colleagues heard how amazing Slack is for teams transforming to DevOps by opening up channels for collaboration. He convinced his manager that Slack would solve all of their communication woes. However, six months into the Slack adoption, most teams were still using Skype, including the manager. Slack ended up being more of a place to talk about brewing beer than a tool to bring the product to market faster. The issue was not Slack; it was the lack of buy-in from the team and organization and knowledge around the product's full functionality. + +Purchasing a tool can definitely be a win for a team, but purchasing a tool is not purchasing DevOps. Making tooling and best practices work for the team and achieving short- and long-term goals are where our conversation around being a champion comes up. This brings us back to the why, the overall and far-reaching goal for the team or organization. Once you identify the goal, how do you get buy-in from key stakeholders? After you achieve buy-in, how do you implement the solution? + +### Organizational change + +#### + +[![Change management comic by Randy Glasbergen][7]][8] + +Change is hard for many organizations and individuals; moreover, meaningful change does not happen overnight. It is important to understand how people and organizations process change. In the [Kotter 8-Step Process for Leading Change][9], it's about articulating the need for a change, creating urgency around the why, then starting small and finding and developing internal champions, _before_ trying to prove wins or, in this case, purchasing a tool. + +If people in an organization are not aware of a problem or that there's a better way of operating, it will be hard to get the buy-in necessary and motivate team members to adopt new ideas and take action. People may be perfectly content with the current state; perhaps the processes in place are adequate or, at a minimum, the current state is a known factor. However, for the overall team to function well and achieve its shared goal in a faster, more agile way, new mechanisms must be put into place first. + +![Kotter 8-Step Process for Leading Change][10] + +### How to be a DevOps champion + +Being a champion in the DevOps world means going beyond the win and delving deeper into the team/organizational structure and culture, thereby identifying outlying issues beyond tools, and then working with others to embrace the right change that leads to defined results. Go back to the beginning and define the end goal. Here are a few sample questions you can ask to get started: + + * What are your core values? + * Why are you trying to become a more agile company or team? + * What obstacles is your team or organization facing? + * What will the tool or process accomplish? + * How are people communicating and collaborating? + * Are there silos and why? + * How are you championing the customer? + * Are employees empowered? + + + +After defining the end state, find other like-minded individuals to be part of your champion team, and don't lose sight of what you are trying to accomplish. When making any change, make sure to start small, e.g., with one team or a test environment. By starting small and building on the wins, internal champions will start creating themselves. + +Remember, companies are happy and eager to try to sell you DevOps, but at the end of the day, DevOps is not a product. It is a fully embraced methodology and mindset of automation, collaboration, people, and processes. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/you-cant-buy-devops + +作者:[Julie Gunderson][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/juliegund +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee-shop-devops.png?itok=CPefJZJL (Coffee shop photo) +[2]: https://opensource.com/sites/default/files/uploads/devops-pricetag.jpg (DevOps price tag graphic) +[3]: https://opensource.com/resources/devops +[4]: https://xebialabs.com/periodic-table-of-devops-tools/ +[5]: https://opensource.com/sites/default/files/uploads/periodic-table-of-devops-tools.png (Periodic Table of DevOps) +[6]: https://puppet.com/resources/whitepaper/state-of-devops-report +[7]: https://opensource.com/sites/default/files/uploads/cartoon.png (Change management comic by Randy Glasbergen) +[8]: https://images.app.goo.gl/JiMaWAenNkLcmkZJ9 +[9]: https://www.kotterinc.com/8-steps-process-for-leading-change/ +[10]: https://opensource.com/sites/default/files/uploads/kotter-process.png (Kotter 8-Step Process for Leading Change) From 0583c018d6a278840343b94c55a5bfaf34662bfb Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:17:50 +0800 Subject: [PATCH 052/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190620=20How=20?= =?UTF-8?q?to=20use=20OpenSSL:=20Hashes,=20digital=20signatures,=20and=20m?= =?UTF-8?q?ore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190620 How to use OpenSSL- Hashes, digital signatures, and more.md --- ...L- Hashes, digital signatures, and more.md | 337 ++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 sources/tech/20190620 How to use OpenSSL- Hashes, digital signatures, and more.md diff --git a/sources/tech/20190620 How to use OpenSSL- Hashes, digital signatures, and more.md b/sources/tech/20190620 How to use OpenSSL- Hashes, digital signatures, and more.md new file mode 100644 index 0000000000..724c97bc01 --- /dev/null +++ b/sources/tech/20190620 How to use OpenSSL- Hashes, digital signatures, and more.md @@ -0,0 +1,337 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use OpenSSL: Hashes, digital signatures, and more) +[#]: via: (https://opensource.com/article/19/6/cryptography-basics-openssl-part-2) +[#]: author: (Marty Kalin https://opensource.com/users/mkalindepauledu) + +How to use OpenSSL: Hashes, digital signatures, and more +====== +Dig deeper into the details of cryptography with OpenSSL: Hashes, +digital signatures, digital certificates, and more +![A person working.][1] + +The [first article in this series][2] introduced hashes, encryption/decryption, digital signatures, and digital certificates through the OpenSSL libraries and command-line utilities. This second article drills down into the details. Let’s begin with hashes, which are ubiquitous in computing, and consider what makes a hash function _cryptographic_. + +### Cryptographic hashes + +The download page for the OpenSSL source code () contains a table with recent versions. Each version comes with two hash values: 160-bit SHA1 and 256-bit SHA256. These values can be used to verify that the downloaded file matches the original in the repository: The downloader recomputes the hash values locally on the downloaded file and then compares the results against the originals. Modern systems have utilities for computing such hashes. Linux, for instance, has **md5sum** and **sha256sum**. OpenSSL itself provides similar command-line utilities. + +Hashes are used in many areas of computing. For example, the Bitcoin blockchain uses SHA256 hash values as block identifiers. To mine a Bitcoin is to generate a SHA256 hash value that falls below a specified threshold, which means a hash value with at least N leading zeroes. (The value of N can go up or down depending on how productive the mining is at a particular time.) As a point of interest, today’s miners are hardware clusters designed for generating SHA256 hashes in parallel. During a peak time in 2018, Bitcoin miners worldwide generated about 75 million terahashes per second—yet another incomprehensible number. + +Network protocols use hash values as well—often under the name **checksum**—to support message integrity; that is, to assure that a received message is the same as the one sent. The message sender computes the message’s checksum and sends the results along with the message. The receiver recomputes the checksum when the message arrives. If the sent and the recomputed checksum do not match, then something happened to the message in transit, or to the sent checksum, or to both. In this case, the message and its checksum should be sent again, or at least an error condition should be raised. (Low-level network protocols such as UDP do not bother with checksums.) + +Other examples of hashes are familiar. Consider a website that requires users to authenticate with a password, which the user enters in their browser. Their password is then sent, encrypted, from the browser to the server via an HTTPS connection to the server. Once the password arrives at the server, it's decrypted for a database table lookup. + +What should be stored in this lookup table? Storing the passwords themselves is risky. It’s far less risky is to store a hash generated from a password, perhaps with some _salt_ (extra bits) added to taste before the hash value is computed. Your password may be sent to the web server, but the site can assure you that the password is not stored there. + +Hash values also occur in various areas of security. For example, hash-based message authentication code ([HMAC][3]) uses a hash value and a secret cryptographic key to authenticate a message sent over a network. HMAC codes, which are lightweight and easy to use in programs, are popular in web services. An X509 digital certificate includes a hash value known as the _fingerprint_, which can facilitate certificate verification. An in-memory truststore could be implemented as a lookup table keyed on such fingerprints—as a _hash map_, which supports constant-time lookups. The fingerprint from an incoming certificate can be compared against the truststore keys for a match. + +What special property should a _cryptographic hash function_ have? It should be _one-way_, which means very difficult to invert. A cryptographic hash function should be relatively straightforward to compute, but computing its inverse—the function that maps the hash value back to the input bitstring—should be computationally intractable. Here is a depiction, with **chf** as a cryptographic hash function and my password **foobar** as the sample input: + + +``` +        +---+ +foobar—>|chf|—>hash value ## straightforward +        +--–+ +``` + +By contrast, the inverse operation is infeasible: + + +``` +            +-----------+ +hash value—>|chf inverse|—>foobar ## intractable +            +-----------+ +``` + +Recall, for example, the SHA256 hash function. For an input bitstring of any length N > 0, this function generates a fixed-length hash value of 256 bits; hence, this hash value does not reveal even the input bitstring’s length N, let alone the value of each bit in the string. By the way, SHA256 is not susceptible to a [_length extension attack_][4]. The only effective way to reverse engineer a computed SHA256 hash value back to the input bitstring is through a brute-force search, which means trying every possible input bitstring until a match with the target hash value is found. Such a search is infeasible on a sound cryptographic hash function such as SHA256. + +Now, a final review point is in order. Cryptographic hash values are statistically rather than unconditionally unique, which means that it is unlikely but not impossible for two different input bitstrings to yield the same hash value—a _collision_. The [_birthday problem_][5] offers a nicely counter-intuitive example of collisions. There is extensive research on various hash algorithms’ _collision resistance_. For example, MD5 (128-bit hash values) has a breakdown in collision resistance after roughly 221 hashes. For SHA1 (160-bit hash values), the breakdown starts at about 261 hashes. + +A good estimate of the breakdown in collision resistance for SHA256 is not yet in hand. This fact is not surprising. SHA256 has a range of 2256 distinct hash values, a number whose decimal representation has a whopping 78 digits! So, can collisions occur with SHA256 hashing? Of course, but they are extremely unlikely. + +In the command-line examples that follow, two input files are used as bitstring sources: **hashIn1.txt** and **hashIn2.txt**. The first file contains **abc** and the second contains **1a2b3c**. + +These files contain text for readability, but binary files could be used instead. + +Using the Linux **sha256sum** utility on these two files at the command line—with the percent sign (**%**) as the prompt—produces the following hash values (in hex): + + +``` +% sha256sum hashIn1.txt +9e83e05bbf9b5db17ac0deec3b7ce6cba983f6dc50531c7a919f28d5fb3696c3 hashIn1.txt + +% sha256sum hashIn2.txt +3eaac518777682bf4e8840dd012c0b104c2e16009083877675f00e995906ed13 hashIn2.txt +``` + +The OpenSSL hashing counterparts yield the same results, as expected: + + +``` +% openssl dgst -sha256 hashIn1.txt +SHA256(hashIn1.txt)= 9e83e05bbf9b5db17ac0deec3b7ce6cba983f6dc50531c7a919f28d5fb3696c3 + +% openssl dgst -sha256 hashIn2.txt +SHA256(hashIn2.txt)= 3eaac518777682bf4e8840dd012c0b104c2e16009083877675f00e995906ed13 +``` + +This examination of cryptographic hash functions sets up a closer look at digital signatures and their relationship to key pairs. + +### Digital signatures + +As the name suggests, a digital signature can be attached to a document or some other electronic artifact (e.g., a program) to vouch for its authenticity. Such a signature is thus analogous to a hand-written signature on a paper document. To verify the digital signature is to confirm two things. First, that the vouched-for artifact has not changed since the signature was attached because it is based, in part, on a cryptographic _hash_ of the document. Second, that the signature belongs to the person (e.g., Alice) who alone has access to the private key in a pair. By the way, digitally signing code (source or compiled) has become a common practice among programmers. + +Let’s walk through how a digital signature is created. As mentioned before, there is no digital signature without a public and private key pair. When using OpenSSL to create these keys, there are two separate commands: one to create a private key, and another to extract the matching public key from the private one. These key pairs are encoded in base64, and their sizes can be specified during this process. + +The private key consists of numeric values, two of which (a _modulus_ and an _exponent_) make up the public key. Although the private key file contains the public key, the extracted public key does _not_ reveal the value of the corresponding private key. + +The resulting file with the private key thus contains the full key pair. Extracting the public key into its own file is practical because the two keys have distinct uses, but this extraction also minimizes the danger that the private key might be publicized by accident. + +Next, the pair’s private key is used to process a hash value for the target artifact (e.g., an email), thereby creating the signature. On the other end, the receiver’s system uses the pair’s public key to verify the signature attached to the artifact. + +Now for an example. To begin, generate a 2048-bit RSA key pair with OpenSSL: + +**openssl genpkey -out privkey.pem -algorithm rsa 2048** + +We can drop the **-algorithm rsa** flag in this example because **genpkey** defaults to the type RSA. The file’s name (**privkey.pem**) is arbitrary, but the Privacy Enhanced Mail (PEM) extension **pem** is customary for the default PEM format. (OpenSSL has commands to convert among formats if needed.) If a larger key size (e.g., 4096) is in order, then the last argument of **2048** could be changed to **4096**. These sizes are always powers of two. + +Here’s a slice of the resulting **privkey.pem** file, which is in base64: + + +``` +\-----BEGIN PRIVATE KEY----- +MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANnlAh4jSKgcNj/Z +JF4J4WdhkljP2R+TXVGuKVRtPkGAiLWE4BDbgsyKVLfs2EdjKL1U+/qtfhYsqhkK +… +\-----END PRIVATE KEY----- +``` + +The next command then extracts the pair’s public key from the private one: + +**openssl rsa -in privkey.pem -outform PEM -pubout -out pubkey.pem** + +The resulting **pubkey.pem** file is small enough to show here in full: + + +``` +\-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZ5QIeI0ioHDY/2SReCeFnYZJY +z9kfk11RrilUbT5BgIi1hOAQ24LMilS37NhHYyi9VPv6rX4WLKoZCmkeYaWk/TR5 +4nbH1E/AkniwRoXpeh5VncwWMuMsL5qPWGY8fuuTE27GhwqBiKQGBOmU+MYlZonO +O0xnAKpAvysMy7G7qQIDAQAB +\-----END PUBLIC KEY----- +``` + +Now, with the key pair at hand, the digital signing is easy—in this case with the source file **client.c** as the artifact to be signed: + +**openssl dgst -sha256 -sign privkey.pem -out sign.sha256 client.c** + +The digest for the **client.c** source file is SHA256, and the private key resides in the **privkey.pem** file created earlier. The resulting binary signature file is **sign.sha256**, an arbitrary name. To get a readable (if base64) version of this file, the follow-up command is: + +**openssl enc -base64 -in sign.sha256 -out sign.sha256.base64** + +The file **sign.sha256.base64** now contains: + + +``` +h+e+3UPx++KKSlWKIk34fQ1g91XKHOGFRmjc0ZHPEyyjP6/lJ05SfjpAJxAPm075 +VNfFwysvqRGmL0jkp/TTdwnDTwt756Ej4X3OwAVeYM7i5DCcjVsQf5+h7JycHKlM +o/Jd3kUIWUkZ8+Lk0ZwzNzhKJu6LM5KWtL+MhJ2DpVc= +``` + +Or, the executable file **client** could be signed instead, and the resulting base64-encoded signature would differ as expected: + + +``` +VMVImPgVLKHxVBapJ8DgLNJUKb98GbXgehRPD8o0ImADhLqlEKVy0HKRm/51m9IX +xRAN7DoL4Q3uuVmWWi749Vampong/uT5qjgVNTnRt9jON112fzchgEoMb8CHNsCT +XIMdyaPtnJZdLALw6rwMM55MoLamSc6M/MV1OrJnk/g= +``` + +The final step in this process is to verify the digital signature with the public key. The hash used to sign the artifact (in this case, the executable **client** program) should be recomputed as an essential step in the verification since the verification process should indicate whether the artifact has changed since being signed. + +There are two OpenSSL commands used for this purpose. The first decodes the base64 signature: + +**openssl enc -base64 -d -in sign.sha256.base64 -out sign.sha256** + +The second verifies the signature: + +**openssl dgst -sha256 -verify pubkey.pem -signature sign.sha256 client** + +The output from this second command is, as it should be: + + +``` +`Verified OK` +``` + +To understand what happens when verification fails, a short but useful exercise is to replace the executable **client** file in the last OpenSSL command with the source file **client.c** and then try to verify. Another exercise is to change the **client** program, however slightly, and try again. + +### Digital certificates + +A digital certificate brings together the pieces analyzed so far: hash values, key pairs, digital signatures, and encryption/decryption. The first step toward a production-grade certificate is to create a certificate signing request (CSR), which is then sent to a certificate authority (CA). To do this for the example with OpenSSL, run: + +**openssl req -out myserver.csr -new -newkey rsa:4096 -nodes -keyout myserverkey.pem** + +This example generates a CSR document and stores the document in the file **myserver.csr** (base64 text). The purpose here is this: the CSR document requests that the CA vouch for the identity associated with the specified domain name—the common name (CN) in CA-speak. + +A new key pair also is generated by this command, although an existing pair could be used. Note that the use of **server** in names such as **myserver.csr** and **myserverkey.pem** hints at the typical use of digital certificates: as vouchers for the identity of a web server associated with a domain such as [www.google.com][6]. + +The same command, however, creates a CSR regardless of how the digital certificate might be used. It also starts an interactive question/answer session that prompts for relevant information about the domain name to link with the requester’s digital certificate. This interactive session can be short-circuited by providing the essentials as part of the command, with backslashes as continuations across line breaks. The **-subj** flag introduces the required information: + + +``` +% openssl req -new +-newkey rsa:2048 -nodes -keyout privkeyDC.pem +-out myserver.csr +-subj "/C=US/ST=Illinois/L=Chicago/O=Faulty Consulting/OU=IT/CN=myserver.com" +``` + +The resulting CSR document can be inspected and verified before being sent to a CA. This process creates the digital certificate with the desired format (e.g., X509), signature, validity dates, and so on: + +**openssl req -text -in myserver.csr -noout -verify** + +Here’s a slice of the output: + + +``` +verify OK +Certificate Request: +Data: +Version: 0 (0x0) +Subject: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com +Subject Public Key Info: +Public Key Algorithm: rsaEncryption +Public-Key: (2048 bit) +Modulus: +00:ba:36:fb:57:17:65:bc:40:30:96:1b:6e🇩🇪73: +… +Exponent: 65537 (0x10001) +Attributes: +a0:00 +Signature Algorithm: sha256WithRSAEncryption +… +``` + +### A self-signed certificate + +During the development of an HTTPS web site, it is convenient to have a digital certificate on hand without going through the CA process. A self-signed certificate fills the bill during the HTTPS handshake’s authentication phase, although any modern browser warns that such a certificate is worthless. Continuing the example, the OpenSSL command for a self-signed certificate—valid for a year and with an RSA public key—is: + +**openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout myserver.pem -out myserver.crt** + +The OpenSSL command below presents a readable version of the generated certificate: + +**openssl x509 -in myserver.crt -text -noout** + +Here’s part of the output for the self-signed certificate: + + +``` +Certificate: +Data: +Version: 3 (0x2) +Serial Number: 13951598013130016090 (0xc19e087965a9055a) +Signature Algorithm: sha256WithRSAEncryption +Issuer: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com +Validity +Not Before: Apr 11 17:22:18 2019 GMT +Not After : Apr 10 17:22:18 2020 GMT +Subject: C=US, ST=Illinois, L=Chicago, O=Faulty Consulting, OU=IT, CN=myserver.com +Subject Public Key Info: +Public Key Algorithm: rsaEncryption +Public-Key: (4096 bit) +Modulus: +00:ba:36:fb:57:17:65:bc:40:30:96:1b:6e🇩🇪73: +… +Exponent: 65537 (0x10001) +X509v3 extensions: +X509v3 Subject Key Identifier: +3A:32:EF:3D:EB:DF:65:E5:A8:96:D7:D7:16:2C:1B:29:AF:46:C4:91 +X509v3 Authority Key Identifier: +keyid:3A:32:EF:3D:EB:DF:65:E5:A8:96:D7:D7:16:2C:1B:29:AF:46:C4:91 + +        X509v3 Basic Constraints: +            CA:TRUE +Signature Algorithm: sha256WithRSAEncryption +     3a:eb:8d:09:53:3b:5c:2e:48:ed:14:ce:f9:20:01:4e:90:c9: +     ... +``` + +As mentioned earlier, an RSA private key contains values from which the public key is generated. However, a given public key does _not_ give away the matching private key. For an introduction to the underlying mathematics, see . + +There is an important correspondence between a digital certificate and the key pair used to generate the certificate, even if the certificate is only self-signed: + + * The digital certificate contains the _exponent_ and _modulus_ values that make up the public key. These values are part of the key pair in the originally-generated PEM file, in this case, the file **myserver.pem**. + * The exponent is almost always 65,537 (as in this case) and so can be ignored. + * The modulus from the key pair should match the modulus from the digital certificate. + + + +The modulus is a large value and, for readability, can be hashed. Here are two OpenSSL commands that check for the same modulus, thereby confirming that the digital certificate is based upon the key pair in the PEM file: + + +``` +% openssl x509 -noout -modulus -in myserver.crt | openssl sha1 ## modulus from CRT +(stdin)= 364d21d5e53a59d482395b1885aa2c3a5d2e3769 + +% openssl rsa -noout -modulus -in myserver.pem | openssl sha1 ## modulus from PEM +(stdin)= 364d21d5e53a59d482395b1885aa2c3a5d2e3769 +``` + +The resulting hash values match, thereby confirming that the digital certificate is based upon the specified key pair. + +### Back to the key distribution problem + +Let’s return to an issue raised at the end of Part 1: the TLS handshake between the **client** program and the Google web server. There are various handshake protocols, and even the Diffie-Hellman version at work in the **client** example offers wiggle room. Nonetheless, the **client** example follows a common pattern. + +To start, during the TLS handshake, the **client** program and the web server agree on a cipher suite, which consists of the algorithms to use. In this case, the suite is **ECDHE-RSA-AES128-GCM-SHA256**. + +The two elements of interest now are the RSA key-pair algorithm and the AES128 block cipher used for encrypting and decrypting messages if the handshake succeeds. Regarding encryption/decryption, this process comes in two flavors: symmetric and asymmetric. In the symmetric flavor, the _same_ key is used to encrypt and decrypt, which raises the _key distribution problem_ in the first place: How is the key to be distributed securely to both parties? In the asymmetric flavor, one key is used to encrypt (in this case, the RSA public key) but a different key is used to decrypt (in this case, the RSA private key from the same pair). + +The **client** program has the Google web server’s public key from an authenticating certificate, and the web server has the private key from the same pair. Accordingly, the **client** program can send an encrypted message to the web server, which alone can readily decrypt this message. + +In the TLS situation, the symmetric approach has two significant advantages: + + * In the interaction between the **client** program and the Google web server, the authentication is one-way. The Google web server sends three certificates to the **client** program, but the **client** program does not send a certificate to the web server; hence, the web server has no public key from the client and can’t encrypt messages to the client. + * Symmetric encryption/decryption with AES128 is nearly a _thousand times faster_ than the asymmetric alternative using RSA keys. + + + +The TLS handshake combines the two flavors of encryption/decryption in a clever way. During the handshake, the **client** program generates random bits known as the pre-master secret (PMS). Then the **client** program encrypts the PMS with the server’s public key and sends the encrypted PMS to the server, which in turn decrypts the PMS message with its private key from the RSA pair: + + +``` +              +-------------------+ encrypted PMS  +--------------------+ +client PMS--->|server’s public key|--------------->|server’s private key|--->server PMS +              +-------------------+                +--------------------+ +``` + +At the end of this process, the **client** program and the Google web server now have the same PMS bits. Each side uses these bits to generate a _master secret_ and, in short order, a symmetric encryption/decryption key known as the _session key_. There are now two distinct but identical session keys, one on each side of the connection. In the **client** example, the session key is of the AES128 variety. Once generated on both the **client** program’s and Google web server’s sides, the session key on each side keeps the conversation between the two sides confidential. A handshake protocol such as Diffie-Hellman allows the entire PMS process to be repeated if either side (e.g., the **client** program) or the other (in this case, the Google web server) calls for a restart of the handshake. + +### Wrapping up + +The OpenSSL operations illustrated at the command line are available, too, through the API for the underlying libraries. These two articles have emphasized the utilities to keep the examples short and to focus on the cryptographic topics. If you have an interest in security issues, OpenSSL is a fine place to start—and to stay. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/cryptography-basics-openssl-part-2 + +作者:[Marty Kalin][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/mkalindepauledu +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003784_02_os.comcareers_os_rh2x.png?itok=jbRfXinl (A person working.) +[2]: https://opensource.com/article/19/6/cryptography-basics-openssl-part-1 +[3]: https://en.wikipedia.org/wiki/HMAC +[4]: https://en.wikipedia.org/wiki/Length_extension_attack +[5]: https://en.wikipedia.org/wiki/Birthday_problem +[6]: http://www.google.com From 5e259f7616b0050f2933fc191dee26d660c474d2 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:20:46 +0800 Subject: [PATCH 053/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190621=20Bash?= =?UTF-8?q?=20Script=20to=20Monitor=20Memory=20Usage=20on=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md --- ...Script to Monitor Memory Usage on Linux.md | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md diff --git a/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md b/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md new file mode 100644 index 0000000000..ded8050ee7 --- /dev/null +++ b/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md @@ -0,0 +1,175 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Bash Script to Monitor Memory Usage on Linux) +[#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + +Bash Script to Monitor Memory Usage on Linux +====== + +There are many open source monitoring tools are currently available in market to monitor Linux systems performance. + +It will send an email alert when the system reaches the specified threshold limit. + +It monitors everything such as CPU utilization, Memory utilization, swap utilization, disk space utilization and much more. + +If you only have few systems and want to monitor them then writing a small shell script can make your task very easy. + +In this tutorial we have added two shell script to monitor Memory utilization on Linux system. + +When the system reaches the given threshold then it will trigger a mail to given email id. + +### Method-1 : Linux Bash Script To Monitor Memory Utilization And Send an Email + +If you want to only get current Memory utilization percentage through mail when the system reaches the given threshold, use the following script. + +This is very simple, straightforward and one line script. I preferred to go with this method in most of the time. + +It will trigger an email when your system reaches `80%` of Memory utilization. + +``` +*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" [email protected] +``` + +**Note:** You need to change the email id instead of ours. Also, you can change the Memory utilization threshold value as per your requirement. + +**Output:** You will be getting an email alert similar to below. + +``` +High Memory Alert: 80.40% +``` + +We had added many useful shell scripts in the past. If you want to check those, navigate to the below link. + + * **[How to automate day to day activities using shell scripts?][1]** + + + +### Method-2 : Linux Bash Script To Monitor Memory Utilization And Send an Email + +If you want to get more information about the Memory utilization in the mail alert. + +Then use the following script, which includes top Memory utilization process details based on the top Command and ps Command. + +This will instantly gives you an idea what is going on your system. + +It will trigger an email when your system reaches `80%` of Memory utilization. + +**Note:** You need to change the email id instead of ours. Also, you can change the Memory utilization threshold value as per your requirement. + +``` +# vi /opt/scripts/memory-alert.sh + +#!/bin/sh +ramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{print $3}') + +if [ "$ramusage" > 20 ]; then + +SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)" + +MESSAGE="/tmp/Mail.out" + +TO="[email protected]" + + echo "Memory Current Usage is: $ramusage%" >> $MESSAGE + + echo "" >> $MESSAGE + + echo "------------------------------------------------------------------" >> $MESSAGE + + echo "Top Memory Consuming Process Using top command" >> $MESSAGE + + echo "------------------------------------------------------------------" >> $MESSAGE + + echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE + + echo "" >> $MESSAGE + + echo "------------------------------------------------------------------" >> $MESSAGE + + echo "Top Memory Consuming Process Using ps command" >> $MESSAGE + + echo "------------------------------------------------------------------" >> $MESSAGE + + echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE + + mail -s "$SUBJECT" "$TO" < $MESSAGE + + rm /tmp/Mail.out + + fi +``` + +Finally add a **[cronjob][2]** to automate this. It will run every 5 minutes. + +``` +# crontab -e +*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh +``` + +**Note:** You will be getting an email alert 5 mins later since the script has scheduled to run every 5 minutes (But it’s not exactly 5 mins and it depends the timing). + +Say for example. If your system reaches the given limit at 8.25 then you will be getting an email alert in another 5 mins. Hope it’s clear now. + +**Output:** You will be getting an email alert similar to below. + +``` +Memory Current Usage is: 80.71% + ++------------------------------------------------------------------+ +Top Memory Consuming Process Using top command ++------------------------------------------------------------------+ +top - 12:00:58 up 5 days, 9:03, 1 user, load average: 1.82, 2.60, 2.83 +Tasks: 314 total, 1 running, 313 sleeping, 0 stopped, 0 zombie +%Cpu0 : 8.3 us, 12.5 sy, 0.0 ni, 75.0 id, 0.0 wa, 0.0 hi, 4.2 si, 0.0 st +%Cpu1 : 13.6 us, 4.5 sy, 0.0 ni, 81.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +%Cpu2 : 21.7 us, 21.7 sy, 0.0 ni, 56.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +%Cpu3 : 13.6 us, 9.1 sy, 0.0 ni, 77.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +%Cpu4 : 17.4 us, 8.7 sy, 0.0 ni, 73.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +%Cpu5 : 20.8 us, 4.2 sy, 0.0 ni, 70.8 id, 0.0 wa, 0.0 hi, 4.2 si, 0.0 st +%Cpu6 : 9.1 us, 0.0 sy, 0.0 ni, 90.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +%Cpu7 : 17.4 us, 4.3 sy, 0.0 ni, 78.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +KiB Mem : 16248588 total, 5015964 free, 6453404 used, 4779220 buff/cache +KiB Swap: 17873388 total, 16928620 free, 944768 used. 6423008 avail Mem + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND +17163 daygeek 20 2033204 487736 282888 S 10.0 3.0 8:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+ + 1121 daygeek 20 4191388 419180 100552 S 5.0 2.6 126:02.84 /usr/bin/gnome-shell + 1902 daygeek 20 1701644 327216 82536 S 20.0 2.0 153:27.92 /opt/google/chrome/chrome + 2969 daygeek 20 1051116 324656 92388 S 15.0 2.0 149:38.09 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=1339861+ + 1068 daygeek 20 1104856 309552 278072 S 5.0 1.9 143:47.42 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3 +27246 daygeek 20 907344 265600 108276 S 30.0 1.6 10:42.80 /opt/google/chrome/chrome --type=renderer --field-trial-handle=10346122902703263820,11905758137655502112,131072 --service-pipe-token=8587368+ + ++------------------------------------------------------------------+ +Top Memory Consuming Process Using ps command ++------------------------------------------------------------------+ + PID PPID %MEM %CPU CMD + 8223 1 6.4 6.8 /usr/lib/firefox/firefox --new-window +13948 1121 6.3 1.2 /usr/bin/../lib/notepadqq/notepadqq-bin + 8671 8223 4.4 7.5 /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 6999 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab +17163 8223 3.0 0.6 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab + 1121 1078 2.5 1.6 /usr/bin/gnome-shell +17937 8223 2.5 0.8 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 9410 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab + 8499 8223 2.2 0.6 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 6635 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab + 8306 8223 2.2 0.8 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab + 9198 8223 2.1 0.6 /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 8604 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 8223 true tab +``` + +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/ + +作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ +[b]: https://github.com/lujun9972 +[1]: https://www.2daygeek.com/category/shell-script/ +[2]: https://www.2daygeek.com/crontab-cronjob-to-schedule-jobs-in-linux/ From c4db5dcc1d48da7ab178e4a5f6ab054e4eb06381 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 21 Jun 2019 17:21:21 +0800 Subject: [PATCH 054/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190621=20Three?= =?UTF-8?q?=20Ways=20to=20Lock=20and=20Unlock=20User=20Account=20in=20Linu?= =?UTF-8?q?x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md --- ...o Lock and Unlock User Account in Linux.md | 307 ++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md diff --git a/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md new file mode 100644 index 0000000000..4f791da9c6 --- /dev/null +++ b/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md @@ -0,0 +1,307 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Three Ways to Lock and Unlock User Account in Linux) +[#]: via: (https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + +Three Ways to Lock and Unlock User Account in Linux +====== + +If password policy had already implemented in your organization, then you no need to look for this options. + +However, if you had set up lock period for 24 hours, in this case you might need to unlock the user’s account manually. + +This tutorial will help you to manually lock and unlock users account in Linux. + +This can be done using the following two Linux Commands in three ways. + + * **`passwd:`**The passwd command is used to update user’s authentication tokens. This task is achieved by calling the Linux-PAM and Libuser API + * **`usermod:`**The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., + + + +To exprement this, we are choosing `daygeek` user account. Let’s see, how to do step by step. + +Make a note, you have to use corresponding user account which you need to lock or unlock instead of ours. + +You can check the given user account is available or not in system by using `id Command`. Yes, my account is available in the system. + +``` +# id daygeek + +uid=2240(daygeek) gid=2243(daygeek) groups=2243(daygeek),2244(ladmin) +``` + +### Method-1: How To Lock, Unlock and Check Status of the Given User Account in Linux Using passwd Command? + +The passwd command is one of the frequently used command by Linux administrator very often. + +It used to update user’s authentication tokens in the `/etc/shadow` file. + +Run the passwd command with the `-l` switch to lock the given user account. + +``` +# passwd -l daygeek + +Locking password for user daygeek. +passwd: Success +``` + +You can check the locked account status either passwd command or grep the given user name from /etc/shadow file. + +Checking the user account locked status using passwd command. + +``` +# passwd -S daygeek +or +# passwd --status daygeek + +daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) +``` + +This will output a short information about the status of the password for a given account. + + * **`LK:`**` ` Password locked + * **`NP:`**` ` No password + * **`PS:`**` ` Password set + + + +Checking the locked user account status using `/etc/shadow` file. Two exclamation mark will be added in front of the password, if the account is already locked. + +``` +# grep daygeek /etc/shadow + +daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: +``` + +Run the passwd command with the `-u` switch to unlock the given user account. + +``` +# passwd -u daygeek + +Unlocking password for user daygeek. +passwd: Success +``` + +### Method-2: How To Lock, Unlock and Check Status of the Given User Account in Linux Using usermod Command? + +Even, the usermod command also frequently used by Linux administrator very often. + +The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., + +Run the usermod command with the `-L` switch to lock the given user account. + +``` +# usermod --lock daygeek +or +# usermod -L daygeek +``` + +You can check the locked account status either passwd command or grep the given user name from /etc/shadow file. + +Checking the user account locked status using passwd command. + +``` +# passwd -S daygeek +or +# passwd --status daygeek + +daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) +``` + +This will output a short information about the status of the password for a given account. + + * **`LK:`**` ` Password locked + * **`NP:`**` ` No password + * **`PS:`**` ` Password set + + + +Checking the locked user account status using /etc/shadow file. Two exclamation mark will be added in front of the password, if the account is already locked. + +``` +# grep daygeek /etc/shadow + +daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: +``` + +Run the usermod command with the `-U` switch to unlock the given user account. + +``` +# usermod --unlock daygeek +or +# usermod -U daygeek +``` + +### Method-3: How To Disable, Enable SSH Access To the Given User Account in Linux Using usermod Command? + +Even, the usermod command also frequently used by Linux administrator very often. + +The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., + +Alternativly this can be done by assigning the `nologin` shell to the given user. To do so, run the below command. + +``` +# usermod -s /sbin/nologin daygeek +``` + +You can check the locked user account details by greping the given user name from /etc/passwd file. + +``` +# grep daygeek /etc/passwd + +daygeek:x:2240:2243::/home/daygeek:/sbin/nologin +``` + +We can enable the user ssh access by assigning back to the old shell. + +``` +# usermod -s /bin/bash daygeek +``` + +### How To Lock, Unlock and Check Status of Multiple User Account in Linux Using Shell Script? + +If you would like to lock/unlock more than one account then you need to look for script. + +Yes, we can write a small shell script to perform this. To do so, use the following shell script. + +Create The Users list. Each user should be in separate line. + +``` +$ cat user-lists.txt + +u1 +u2 +u3 +u4 +u5 +``` + +Use the following shell script to lock multiple users account in Linux. + +``` +# user-lock.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -l $user +done +``` + +Set an executable permission to `user-lock.sh` file. + +``` +# chmod + user-lock.sh +``` + +Finally run the script to achieve this. + +``` +# sh user-lock.sh + +Locking password for user u1. +passwd: Success +Locking password for user u2. +passwd: Success +Locking password for user u3. +passwd: Success +Locking password for user u4. +passwd: Success +Locking password for user u5. +passwd: Success +``` + +Use the following shell script to check locked users account in Linux. + +``` +# vi user-lock-status.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -S $user +done +``` + +Set an executable permission to `user-lock-status.sh` file. + +``` +# chmod + user-lock-status.sh +``` + +Finally run the script to achieve this. + +``` +# sh user-lock-status.sh + +u1 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u2 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u3 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u4 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u5 LK 2019-06-10 0 99999 7 -1 (Password locked.) +``` + +Use the following shell script to unlock multiple users account in Linux. + +``` +# user-unlock.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -u $user +done +``` + +Set an executable permission to `user-unlock.sh` file. + +``` +# chmod + user-unlock.sh +``` + +Finally run the script to achieve this. + +``` +# sh user-unlock.sh + +Unlocking password for user u1. +passwd: Success +Unlocking password for user u2. +passwd: Success +Unlocking password for user u3. +passwd: Success +Unlocking password for user u4. +passwd: Success +Unlocking password for user u5. +passwd: Success +``` + +Run the same shell script `user-lock-status.sh` to check these locked user accounts got unlocked in Linux. + +``` +# sh user-lock-status.sh + +u1 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u2 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u3 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u4 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u5 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +``` +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/ + +作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ +[b]: https://github.com/lujun9972 From f57d8b4ffc5125a0389771ce37c522f450d325da Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 19:16:56 +0800 Subject: [PATCH 055/336] PRF:20190619 Get the latest Ansible 2.8 in Fedora.md @geekpi --- ...0190619 Get the latest Ansible 2.8 in Fedora.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md b/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md index d189875e73..90076868b4 100644 --- a/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md +++ b/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Get the latest Ansible 2.8 in Fedora) @@ -12,11 +12,11 @@ ![][1] -Ansible 是世界上最受欢迎的自动化引擎之一。它能让你自动化几乎任何事情,从本地系统的设置到大量的平台和应用。它是跨平台的,因此你可以将其用于各种操作系统。继续阅读以获取有关如何在 Fedora 中获取最新 Ansible,一些更改和改进,以及如何使用它。 +Ansible 是世界上最受欢迎的自动化引擎之一。它能让你自动化几乎任何事情,从本地系统的设置到大量的平台和应用。它是跨平台的,因此你可以将其用于各种操作系统。请继续阅读以获取有关如何在 Fedora 中获取最新 Ansible,以及它的一些更改和改进,以及如何使用它。 ### 发布版本和功能 -最近发布了 Ansible 2.8,其中包含许多修复,功能和增强。仅仅几天之后,它就可在 Fedora 29 和 30 以及 EPEL 中获取。两周前发布了后续版本 2.8.1。同样,新版本在几天内就可以在 Fedora 中获取。 +Ansible 2.8 最近发布了,其中包含许多修复、功能和增强。仅仅几天之后,它就可在 Fedora 29 和 30 以及 EPEL 中获取。两周前发布了后续版本 2.8.1。同样,新版本在几天内就可以在 Fedora 中获取。 [使用 sudo][2] 能够非常容易地从官方仓库安装: @@ -24,9 +24,9 @@ Ansible 是世界上最受欢迎的自动化引擎之一。它能让你自动化 $ sudo dnf -y install ansible ``` -2.8 版本有很长的更新列表,你可以在 [2.8 的迁移指南][3]中阅读查看。但其中包含了一些好东西,比如 _Python 解释器发现_ 。Ansible 2.8 现在会试图找出哪个 Python 是它运行的平台的首选。如果失败,Ansible 会使用后备列表。但是,你仍然可以使用变量 _ansible_python_interpreter_ 来设置 Python 解释器。 +2.8 版本有很长的更新列表,你可以在 [2.8 的迁移指南][3]中阅读查看。但其中包含了一些好东西,比如 *Python 解释器发现功能* 。Ansible 2.8 现在会试图找出哪个 Python 是它所运行的平台的首选版本。如果失败,Ansible 会使用后备列表。但是,你仍然可以使用变量 `ansible_python_interpreter` 来设置 Python 解释器。 -另一个变化使 Ansible 在各个平台上更加一致。由于 _sudo_ 专用于 UNIX/Linux,而其他平台并没有,因此现在在更多地方使用 _become_。这包括了命令行开关。例如,_-ask-sudo-pass_ 已变成了 _-ask-become-pass_,提示符也变成了 _BECOME password:_。 +另一个变化使 Ansible 在各个平台上更加一致。由于 `sudo` 专用于 UNIX/Linux,而其他平台并没有,因此现在在更多地方使用 `become`。这包括了命令行开关。例如,`-ask-sudo-pass` 已变成了 `-ask-become-pass`,提示符也变成了 `BECOME password:`。 2.8 和 2.8.1 版本中还有许多其他功能。有关所有细节,请查看 [GitHub 上的官方更新日志][4]。 @@ -36,7 +36,7 @@ $ sudo dnf -y install ansible 我们之前在 Fedora Magazine 中也讨论过这个话题: -> [使用 Ansible 设置工作站][5] +- [使用 Ansible 设置工作站][5] 试试看 Ansible,说下你的想法。很重要的一部分是让 Fedora 保持最新版本。自动化快乐! @@ -47,7 +47,7 @@ via: https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/ 作者:[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 52064c4a480115f8960bfa069f0678fbb85e48b2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 21 Jun 2019 19:17:35 +0800 Subject: [PATCH 056/336] PUB:20190619 Get the latest Ansible 2.8 in Fedora.md @geekpi https://linux.cn/article-11002-1.html --- .../20190619 Get the latest Ansible 2.8 in Fedora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190619 Get the latest Ansible 2.8 in Fedora.md (97%) diff --git a/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md b/published/20190619 Get the latest Ansible 2.8 in Fedora.md similarity index 97% rename from translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md rename to published/20190619 Get the latest Ansible 2.8 in Fedora.md index 90076868b4..dd851a1dde 100644 --- a/translated/tech/20190619 Get the latest Ansible 2.8 in Fedora.md +++ b/published/20190619 Get the latest Ansible 2.8 in Fedora.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11002-1.html) [#]: subject: (Get the latest Ansible 2.8 in Fedora) [#]: via: (https://fedoramagazine.org/get-the-latest-ansible-2-8-in-fedora/) [#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) From 5453702bf78a34aff1513441cd2a1e43e5e11529 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 22 Jun 2019 02:06:28 +0800 Subject: [PATCH 057/336] PRF:20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md @LuuMing --- ...eech Recognition-Speech-to-Text Systems.md | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md b/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md index 0067324e41..bc5db34108 100644 --- a/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md +++ b/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (luuming) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (5 Good Open Source Speech Recognition/Speech-to-Text Systems) @@ -8,16 +8,15 @@ [#]: author: (Simon James https://fosspost.org/author/simonjames) 5 款不错的开源语音识别/语音文字转换系统 - ====== ![](https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/open-source-speech-recognition-speech-to-text.png?resize=1237%2C527&ssl=1) -语音文字转换speech-to-text(STT)系统就像它名字所蕴含的那样,是一种将说出的单词转换为文本文件以供后续用途的方式。 +语音文字转换speech-to-text(STT)系统就像它名字所蕴含的意思那样,是一种将说出的单词转换为文本文件以供后续用途的方式。 语音文字转换技术非常有用。它可以用到许多应用中,例如自动转录,使用自己的声音写书籍或文本,用生成的文本文件和其他工具做复杂的分析等。 -在过去,语音文字转换技术以专有软件和库为主导,开源替代品并不存在或是有严格的限制并且没有社区。这一点正在发生改变,当今有许多开源语音文字转换工具和库可以让你立即使用。 +在过去,语音文字转换技术以专有软件和库为主导,要么没有开源替代品,要么有着严格的限制,也没有社区。这一点正在发生改变,当今有许多开源语音文字转换工具和库可以让你随时使用。 这里我列出了 5 个。 @@ -27,74 +26,74 @@ ![5 Good Open Source Speech Recognition/Speech-to-Text Systems 15 open source speech recognition][1] -该项目由 Firefox 浏览器背后的组织 Mozilla 团队开发。它 100% 自由并且使用 TensorFlow 机器学习框架实现。 +该项目由 Firefox 浏览器的开发组织 Mozilla 团队开发。它是 100% 的自由开源软件,其名字暗示使用了 TensorFlow 机器学习框架实现去功能。 -换句话说,你可以用它训练自己的模型获得更好的效果,甚至可以用它转换其它的语言。你也可以轻松的将它集成到自己的 Tensorflow 机器学习项目中。可惜的是项目当前默认仅支持英语。 +换句话说,你可以用它训练自己的模型获得更好的效果,甚至可以用它来转换其它的语言。你也可以轻松的将它集成到自己的 Tensorflow 机器学习项目中。可惜的是项目当前默认仅支持英语。 -它也支持许多编程语言,例如 Python(3.6)。可以让你在数秒之内获取: +它也支持许多编程语言,例如 Python(3.6)。可以让你在数秒之内完成工作: ``` pip3 install deepspeech deepspeech --model models/output_graph.pbmm --alphabet models/alphabet.txt --lm models/lm.binary --trie models/trie --audio my_audio_file.wav ``` -你也可以通过 npm 安装它: +你也可以通过 `npm` 安装它: ``` npm install deepspeech ``` -想要获得更多信息,请参考[项目主页][2]。 +- [项目主页][2] #### Kaldi ![5 Good Open Source Speech Recognition/Speech-to-Text Systems 17 open source speech recognition][3] -Kaldi 是一个用 C++ 写的开源语音识别软件,并且在 Apache 公共许可下发布。它可以运行在 Windows,macOS 和 Linux 上。它的开发始于 2009。 +Kaldi 是一个用 C++ 编写的开源语音识别软件,并且在 Apache 公共许可证下发布。它可以运行在 Windows、macOS 和 Linux 上。它的开发始于 2009。 -Kaldi 超过其他语音识别软件的主要特点是可扩展和模块化。社区提供了大量的三方模块可以用来完成你的任务。Kaldi 也支持深度神经网络,并且在它的网站上提供了[出色的文档][4]。 +Kaldi 超过其他语音识别软件的主要特点是可扩展和模块化。社区提供了大量的可以用来完成你的任务的第三方模块。Kaldi 也支持深度神经网络,并且在它的网站上提供了[出色的文档][4]。 -虽然代码主要由 C++ 完成,但它通过 Bash 和 Python 脚本进行了封装。因此,如果你仅仅想使用基本的语音到文字转换功能,你就会发现通过 Python 或 Bash 能够轻易的完成。 +虽然代码主要由 C++ 完成,但它通过 Bash 和 Python 脚本进行了封装。因此,如果你仅仅想使用基本的语音到文字转换功能,你就会发现通过 Python 或 Bash 能够轻易的实现。 -[Project’s homepage][5]. +- [项目主页][5] #### Julius ![5 Good Open Source Speech Recognition/Speech-to-Text Systems 19 open source speech recognition][6] -可能是有史以来最古老的语音识别软件之一。它的发展始于 1991 年的京都大学,之后在 2005 年将所有权转移到了一个独立的项目组。 +它可能是有史以来最古老的语音识别软件之一。它的开发始于 1991 年的京都大学,之后在 2005 年将所有权转移到了一个独立的项目组。 -Julius 的主要特点包括了执行实时 STT 的能力,低内存占用(20000 单词少于 64 MB),输出最优词N-best word/词图Word-graph的能力,当作服务器单元运行的能力和很多东西。这款软件主要为学术和研究所设计。由 C 语言写成,并且可以运行在 Linux,Windows,macOS 甚至 Android(在智能手机上)。 +Julius 的主要特点包括了执行实时 STT 的能力,低内存占用(20000 单词少于 64 MB),能够输出最优词N-best word词图Word-graph,能够作为服务器单元运行等等。这款软件主要为学术和研究所设计。由 C 语言写成,并且可以运行在 Linux、Windows、macOS 甚至 Android(在智能手机上)。 -它当前仅支持英语和日语。软件或许易于从 Linux 发行版的仓库中安装。只要在软件包管理器中搜索 julius 即可。最新的版本[发布][7]于大约一个半月之前。 +它当前仅支持英语和日语。软件应该能够从 Linux 发行版的仓库中轻松安装。只要在软件包管理器中搜索 julius 即可。最新的版本[发布][7]于本文发布前大约一个半月之前。 -[Project’s homepage][8]. +- [项目主页][8] #### Wav2Letter++ ![5 Good Open Source Speech Recognition/Speech-to-Text Systems 21 open source speech recognition][9] -如果你在寻找一个更加时髦的,那么这款一定适合。Wav2Letter++ 是一款由 Facebook 的 AI 研究团队于 2 个月之前发布的开源语言识别软件。代码在 BSD 许可下发布。 +如果你在寻找一个更加时髦的,那么这款一定适合。Wav2Letter++ 是一款由 Facebook 的 AI 研究团队于 2 个月之前发布的开源语言识别软件。代码在 BSD 许可证下发布。 -Facebook 描述它的库是“最快最先进state-of-the-art的语音识别系统”。构建它时的想法使其能在默认情况下对性能进行优化。Facebook 最新的机器学习库 [FlashLight][11] 也被用作 Wav2Letter++ 的底层核心。 +Facebook 描述它的库是“最快、最先进state-of-the-art的语音识别系统”。构建它时的理念使其默认针对性能进行了优化。Facebook 最新的机器学习库 [FlashLight][11] 也被用作 Wav2Letter++ 的底层核心。 -Wav2Letter++ 需要你先为所描述的语言建立一个模型来训练算法。没有任何一种语言(包括英语)的预训练模型,它仅仅是个机器学习驱动的文本语音转换工具,它用 C++ 写成,因此命名为 Wav2Letter++。 +Wav2Letter++ 需要你先为所描述的语言建立一个模型来训练算法。没有任何一种语言(包括英语)的预训练模型,它仅仅是个机器学习驱动的文本语音转换工具,它用 C++ 写成,因此被命名为 Wav2Letter++。 -[Project’s homepage][12]. +- [项目主页][12] #### DeepSpeech2 ![5 Good Open Source Speech Recognition/Speech-to-Text Systems 23 open source speech recognition][13] -中国巨头百度的研究人员也在开发他们自己的语音文字转换引擎,叫做“DeepSpeech2”。它是一个端对端的开源引擎,使用“PaddlePaddle”深度学习框架进行英语或汉语的文字转换。代码在 BSD 许可下发布。 +中国软件巨头百度的研究人员也在开发他们自己的语音文字转换引擎,叫做“DeepSpeech2”。它是一个端对端的开源引擎,使用“PaddlePaddle”深度学习框架进行英语或汉语的文字转换。代码在 BSD 许可证下发布。 -引擎可以训练在任何模型之上,并且可以用于任何想要的语言。模型并未随代码一同发布。你要像其他软件那样自己建立模型。DeepSpeech2 的源代码由 Python 写成,如果你使用过就会非常容易上手。 +该引擎可以在你想用的任何模型和任何语言上训练。模型并未随代码一同发布。你要像其他软件那样自己建立模型。DeepSpeech2 的源代码由 Python 写成,如果你使用过就会非常容易上手。 -[Project’s homepage][14]. +- [项目主页][14] ### 总结 -语音识别领域仍然主要地由专有软件巨头所占据,比如 Google 和 IBM(它们为此提供了闭源商业服务),但是开源同类软件很有前途。这 5 款开源语音识别引擎应当能够帮助你构建应用,随着时间推移,它们会不断地发展。在几年之后,我们希望开源成为这些技术中的常态,就像其他行业那样。 +语音识别领域仍然主要由专有软件巨头所占据,比如 Google 和 IBM(它们为此提供了闭源商业服务),但是开源同类软件很有前途。这 5 款开源语音识别引擎应当能够帮助你构建应用,随着时间推移,它们会不断地发展。在几年之后,我们希望开源成为这些技术中的常态,就像其他行业那样。 如果你对清单有其他的建议或评论,我们很乐意在下面听到。 @@ -104,8 +103,8 @@ via: https://fosspost.org/lists/open-source-speech-recognition-speech-to-text 作者:[Simon James][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/LuuMing) -校对:[校对者ID](https://github.com/校对者ID) +译者:[LuuMing](https://github.com/LuuMing) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 0f87ade02a0734e00be7ece2b19e4d07e12ff464 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 22 Jun 2019 02:07:01 +0800 Subject: [PATCH 058/336] PUB:20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md @LuuMing https://linux.cn/article-11004-1.html --- ...d Open Source Speech Recognition-Speech-to-Text Systems.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md (99%) diff --git a/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md b/published/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md similarity index 99% rename from translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md rename to published/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md index bc5db34108..07d273c666 100644 --- a/translated/tech/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md +++ b/published/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (luuming) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11004-1.html) [#]: subject: (5 Good Open Source Speech Recognition/Speech-to-Text Systems) [#]: via: (https://fosspost.org/lists/open-source-speech-recognition-speech-to-text) [#]: author: (Simon James https://fosspost.org/author/simonjames) From e01055cad9b8b92827fc722439750bd9172b36de Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 14:54:05 +0800 Subject: [PATCH 059/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190622=20Open?= =?UTF-8?q?=20Source=20Slack=20Alternative=20Mattermost=20Gets=20$50M=20Fu?= =?UTF-8?q?nding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md --- ...lternative Mattermost Gets -50M Funding.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md diff --git a/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md new file mode 100644 index 0000000000..993e30d5ec --- /dev/null +++ b/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -0,0 +1,95 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Open Source Slack Alternative Mattermost Gets $50M Funding) +[#]: via: (https://itsfoss.com/mattermost-funding/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Open Source Slack Alternative Mattermost Gets $50M Funding +====== + +[Mattermost][1], which presents itself as an open source alternative to [Slack][2] raised $50M in series B funding. This is definitely something to get excited for. + +[Slack][3] is a cloud-based team collaboration software that is mainly used for internal team communication. Enterprises, startups and even open source projects worldwide use it interact with colleagues and project members. Slack is free with limited features while the paid enterprise version has premium features. + +[Slack is valued at $20 billion][4] in June, 2019. You can guess the kind of impact it has made in the tech industry and certainly more products are trying to compete with Slack. + +### $50 million for an open source project + +![][5] + +Personally, I was not aware of Mattermost. But, when [VentureBeat][6] reported the story, it made me curious. The funding was led by [Y Combinator’s][7] Continuity with a new investor Battery Ventures and was joined by the existing investors – Redpoint and S28 Captial. + +With the [announcement][8], they also mentioned: + +> With today’s announcement, Mattermost becomes YC’s largest ever Series B investment, and more importantly, their largest open source investment to date. + +To give you some specifics, here’s what VentureBeat mentioned: + +> The capital infusion follows a $20 million series A in February and a $3.5 million seed round in February 2017 and brings the Palo Alto, California-based company’s total raised to roughly $70 million. + +If you are curious about their plans, you should go through their [official announcement post][8]. + +Even though it all sounds good, what is Mattermost? Maybe you didn’t know about it, until now. So, let us take a brief look at it: + +### A quick look at Mattermost + +![Mattermost][9] + +As mentioned, it is an open source Slack alternative. + +At first glance, it almost resembles the look and feel of Slack. Well, that’s the point here – you will have an open source solution that you’re comfortable using. + +It even integrates with some of the popular DevOps tools like Git, Bots, and CI/CD. In addition to the functionality, it focuses on security and privacy as well. + +[][10] + +Suggested read  Zettlr - Markdown Editor for Writers and Researchers + +Also, similar to Slack, it supports integration with multiple apps and services. + +Sounds promising? I think so. + +#### Pricing: Enterprise Edition vs Team Edition + +If you want them (Mattermost) to host it (or want priority support), you should opt for the Enterprise edition. However, if you want to host it without spending a penny, you can download the [Team edition][11] and install it on your Linux-based cloud/VPS server. + +Of course, we are not here to review it in-depth. However, I do want to mention that the enterprise edition is quite affordable. + +![][12] + +**Wrapping Up** + +Mattermost is definitely impressive. And, with a whopping $50M funding, it may become the next big thing in the open source community for users who were on the lookout for a secure and open source messaging platform with efficient team collaboration support. + +What do you think about this news? Is it something exciting for you? Were you already aware of Mattermost as a slack alternative? + +Let us know your thoughts in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/mattermost-funding/ + +作者:[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://mattermost.com/ +[2]: https://itsfoss.com/slack-use-linux/ +[3]: https://slack.com +[4]: https://www.ft.com/content/98747b36-9368-11e9-aea1-2b1d33ac3271 +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-wallpaper.png?resize=800%2C450&ssl=1 +[6]: https://venturebeat.com/2019/06/19/mattermost-raises-50-million-to-advance-its-open-source-slack-alternative/ +[7]: https://www.ycombinator.com/ +[8]: https://mattermost.com/blog/yc-leads-50m-series-b-in-mattermost-as-open-source-slack-alternative/ +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-screenshot.jpg?fit=800%2C497&ssl=1 +[10]: https://itsfoss.com/zettlr-markdown-editor/ +[11]: https://mattermost.com/download/ +[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-enterprise-plan.jpg?fit=800%2C325&ssl=1 From 4bcf8dd064a8c069fad1a9f0190b72c50fdcb6c6 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 14:56:11 +0800 Subject: [PATCH 060/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190612=20BitTor?= =?UTF-8?q?rent=20Client=20Deluge=202.0=20Released:=20Here=E2=80=99s=20Wha?= =?UTF-8?q?t=E2=80=99s=20New?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md --- ... Deluge 2.0 Released- Here-s What-s New.md | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md diff --git a/sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md new file mode 100644 index 0000000000..52fcdc0569 --- /dev/null +++ b/sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @@ -0,0 +1,88 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (BitTorrent Client Deluge 2.0 Released: Here’s What’s New) +[#]: via: (https://itsfoss.com/deluge-2-release/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +BitTorrent Client Deluge 2.0 Released: Here’s What’s New +====== + +You probably already know that [Deluge][1] is one of the [best Torrent clients available for Linux users][2]. However, the last stable release was almost two years back. + +Even though it was in active development, a major stable release wasn’t there – until recently. The latest version while we write this happens to be 2.0.2. So, if you haven’t downloaded the latest stable version – do try it out. + +In either case, if you’re curious, let us talk about what’s new. + +![Deluge][3] + +### Major improvements in Deluge 2.0 + +The new release introduces multi-user support – which was a much needed addition. + +In addition to that, there has been several performance improvements to handle more torrents with faster loading times. + +Also, with version 2.0, Deluge used Python 3 with minimal support for Python 2.7. Even for the user interface, they migrated from GTK UI to GTK3. + +As per the release notes, there are several more significant additions/improvements, which include: + + * Multi-user support. + * Performance updates to handle thousands of torrents with faster loading times. + * A New Console UI which emulates GTK/Web UIs. + * GTK UI migrated to GTK3 with UI improvements and additions. + * Magnet pre-fetching to allow file selection when adding torrent. + * Fully support libtorrent 1.2 release. + * Language switching support. + * Improved documentation hosted on ReadTheDocs. + * AutoAdd plugin replaces built-in functionality. + + + +### How to install or upgrade to Deluge 2.0 + +![][4] + +You should follow the official [installation guide][5] (using PPA or PyPi) for any Linux distro. However, if you are upgrading, you should go through the note mentioned in the release note: + +“_Deluge 2.0 is not compatible with Deluge 1.x clients or daemons so these will require upgrading too._ _Also_ _third-party Python scripts may not be compatible if they directly connect to the Deluge client and will need migrating._“ + +So, they insist to always make a backup of your [config][6] before a major version upgrade to guard against data loss. + +[][7] + +Suggested read  Ubuntu's Snap Apps Website Gets Much Needed Improvements + +And, if you are an author of a plugin, you need to upgrade it make it compatible with the new release. + +Direct download app packages not yet available for Windows and Mac OS. However, the release note mentions that they are being worked on. + +As an alternative, you can install them manually by following the [installation guide][5] in the updated official documentation. + +**Wrapping Up** + +What do you think about the latest stable release? Do you utilize Deluge as your BitTorrent client? Or do you find something else as a better alternative? + +Let us know your thoughts in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/deluge-2-release/ + +作者:[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://dev.deluge-torrent.org/ +[2]: https://itsfoss.com/best-torrent-ubuntu/ +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/deluge.jpg?fit=800%2C410&ssl=1 +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/Deluge-2-release.png?resize=800%2C450&ssl=1 +[5]: https://deluge.readthedocs.io/en/latest/intro/01-install.html +[6]: https://dev.deluge-torrent.org/wiki/Faq#WheredoesDelugestoreitssettingsconfig +[7]: https://itsfoss.com/snap-store/ From 02dd6e82bba2fb140c5986e7f7ee3aecf35a2635 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 15:10:42 +0800 Subject: [PATCH 061/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190409=20VSCodi?= =?UTF-8?q?um:=20100%=20Open=20Source=20Version=20of=20Microsoft=20VS=20Co?= =?UTF-8?q?de?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md --- ...pen Source Version of Microsoft VS Code.md | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md diff --git a/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md new file mode 100644 index 0000000000..e9ec3e4a85 --- /dev/null +++ b/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @@ -0,0 +1,123 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (VSCodium: 100% Open Source Version of Microsoft VS Code) +[#]: via: (https://itsfoss.com/vscodium/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +VSCodium: 100% Open Source Version of Microsoft VS Code +====== + +_**Brief: VSCodium is a fork of Microsoft’s popular Visual Studio Code editor. It’s identical to VS Code with the single biggest difference that unlike VS Code, VSCodium doesn’t track your usage data.**_ + +Microsoft’s [Visual Studio Code][1] is an excellent editor not only for web developers but also for other programmers. Due to its features, it’s considered one of the best open source code editors. + +Yes, it’s one of the many open source products from Microsoft. You can [easily install Visual Studio Code in Linux][2] thanks to the ready to use binaries in the form of DEB, RPM and Snap packages. + +And there is a problem which might not be an issue for a regular user but significant to an open source purist. + +The ready to use binaries Microsoft provides are not open source. + +Confused? Let me explain. + +The source code of VS Code is open sourced under MIT license. You can access it on the [GitHub][3]. However, the [installation files that Microsoft has created contain proprietary telemetry/tracking][4]. + +This tracking basically collects usage data and sends it to Microsoft to ‘help improve their products and services’. Telemetry reporting is common with software products these days. Even [Ubuntu does that but with more transparency][5]. + +You can [disable the telemetry in VS Code][6] but can you trust Microsoft completely? If the answer is no, then what are your options? + +You can build it from the source code and thus keep everything open source. But [installing from source code][7] is not always the prettiest option specially in today’s world when we are so used to of having binaries. + +Another option is to use VSCodium! + +### VSCodium: 100% open source form of Visual Studio Code + +![][8] + +[VSCodium][9] is a fork of Microsoft’s Visual Studio Code. This project’s sole aim is to provide you with ready to use binaries without Microsoft’s telemetry code. + +[][10] + +Suggested read  SuiteCRM: An Open Source CRM Takes Aim At Salesforce + +This solves the problem where you want to use VS Code without the proprietary code from Microsoft but you are not comfortable with building it from the source. + +Since [VSCodium is a fork of VS Code][11], it looks and functions exactly the same as VS Code. + +Here’s a screenshot of the first run of VS Code and VSCodium side by side in Ubuntu. Can you distinguish one from another? + +![Can you guess which is VSCode and VSCodium?][12] + +If you have not been able to distinguish between the two, look at the bottom. + +![That’s Microsoft][13] + +Apart from this and the logo of the two applications, there is no other noticeable difference. + +![VSCodium and VS Code in GNOME Menu][14] + +#### Installing VSCodium on Linux + +While VSCodium is available in some distributions like Parrot OS, you’ll have to add additional repositories in other Linux distributions. + +On Ubuntu and Debian based distributions, you can use the following commands to install VSCodium. + +First, add the GPG key of the repository: + +``` +wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | sudo apt-key add - +``` + +And then add the repository itself: + +``` +echo 'deb https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/repos/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list +``` + +Now update your system and install VSCodium: + +``` +sudo apt update && sudo apt install codium +``` + +You can find the [installation instructions for other distributions on its page][15]. You should also read the [instructions about migrating from VS Code to VSCodium][16]. + +**What do you think of VSCodium?** + +Personally, I like the concept of VSCodium. To use the cliche, the project has its heart in the right place. I think, Linux distributions committed to open source may even start including it in their official repository. + +What do you think? Is it worth switching to VSCodium or would you rather opt out of the telemetry and continue using VS Code? + +And please, no “I use Vim” comments :D + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/vscodium/ + +作者:[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://code.visualstudio.com/ +[2]: https://itsfoss.com/install-visual-studio-code-ubuntu/ +[3]: https://github.com/Microsoft/vscode +[4]: https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005 +[5]: https://itsfoss.com/ubuntu-data-collection-stats/ +[6]: https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting +[7]: https://itsfoss.com/install-software-from-source-code/ +[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium.png?resize=800%2C450&ssl=1 +[9]: https://vscodium.com/ +[10]: https://itsfoss.com/suitecrm-ondemand/ +[11]: https://github.com/VSCodium/vscodium +[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-vs-vscode.png?resize=800%2C450&ssl=1 +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/microsoft-vscode-tracking.png?resize=800%2C259&ssl=1 +[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-and-vscode.jpg?resize=800%2C220&ssl=1 +[15]: https://vscodium.com/#install +[16]: https://vscodium.com/#migrate From 23da63d4c005d368c25dcd3cf1139bb728bcb94a Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 22 Jun 2019 15:16:44 +0800 Subject: [PATCH 062/336] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8E=9F=E6=96=87?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这里在从原网站复制过来的时候多出来了一段 --- sources/tech/20190416 Can schools be agile.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/sources/tech/20190416 Can schools be agile.md b/sources/tech/20190416 Can schools be agile.md index ca9db0c33f..8223973619 100644 --- a/sources/tech/20190416 Can schools be agile.md +++ b/sources/tech/20190416 Can schools be agile.md @@ -39,8 +39,6 @@ So why a tendency to ignore (or be outright hostile toward) ideas that come from I, for example, have certainly faced criticism in the past for suggesting that we look to other professions for ideas and inspiration that can help us better meet the needs of students. A common refrain is something like: "You're trying to treat our students like widgets!" But how could our students be treated any more like widgets than they already are? They matriculate through school in age-based cohorts, going from siloed class to class each day by the sound of a shrill bell, and receive grades based on arbitrary tests that emphasize sameness over individuality. -What I'm advocating is a clear-eyed and objective look at any idea from any sector with potential to help us better meet the needs of individual students, not that we somehow run our schools like businesses. - It may be news to many inside of education, but widgets—abstract units of production that evoke the idea of assembly line standardization—are not a significant part of the modern manufacturing sector. Thanks to the culture of continuous improvement described above, modern, advanced manufacturing delivers just what the individual customer wants, at a competitive price, exactly when she wants it. If we adapted this model to our schools, teachers would be more likely to collaborate and constantly refine their unique paths of growth for all students based on just-in-time needs and desires—regardless of the time, subject, or any other traditional norm. What I'm advocating is a clear-eyed and objective look at any idea from any sector with potential to help us better meet the needs of individual students, not that we somehow run our schools like businesses. In order for this to happen effectively, however, we need to scrutinize a leadership structure that has frankly remained stagnant for over 100 years. From 431aec897ae979b287f5ca5257a609b57f31a85d Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 15:29:05 +0800 Subject: [PATCH 063/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190622=20Cloudf?= =?UTF-8?q?lare's=20random=20number=20generator,=20robotics=20data=20visua?= =?UTF-8?q?lization,=20npm=20token=20scanning,=20and=20more=20news?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md --- ...tion, npm token scanning, and more news.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md diff --git a/sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md b/sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md new file mode 100644 index 0000000000..af595d310b --- /dev/null +++ b/sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md @@ -0,0 +1,84 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Cloudflare's random number generator, robotics data visualization, npm token scanning, and more news) +[#]: via: (https://opensource.com/article/19/6/news-june-22) +[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) + +Cloudflare's random number generator, robotics data visualization, npm token scanning, and more news +====== +Catch up on the biggest open source headlines from the past two weeks. +![Weekly news roundup with TV][1] + +In this edition of our open source news roundup, we take a look Cloudflare's open source random number generator, more open source robotics data, new npm functionality, and more! + +### Cloudflare announces open source random number generator project + +Is there such a thing as a truly random number? Internet security and services provider Cloudflare things so. To prove it, the company has formed [The League of Entropy][2], an open source project to create a generator for random numbers. + +The League consists of Cloudflare and "five other organisations — predominantly universities and security companies." They share random numbers, using an open source tool called [Drand][3] (short for Distributed Randomness Beacon Daemon). The numbers are then "composited into one random number" on the basis that "several random numbers are more random than one random number." While the League's random number generator isn't intended "for any kind of password or cryptographic seed generation," Cloudflare's CEO Matthew Prince points out that if "you need a way of having a known random source, this is a really valuable tool." + +### Cruise open sources robotics data analysis tool + +Projects involved in creating self-driving vehicles generate petabytes of data. And with amounts of data that large comes the challenge of quickly and effectively analyzing it. To make the task easier, General Motors subsidiary Cruise has made its Webviz data visualization tool "[freely available to developers][4] in need of a modular robotics analysis solution." + +Webviz "takes as input any bag file (the message format used by the popular Robot Operating System) and outputs charts and graphs." It "contains a collection of general panels (which visualize data) applicable to most robotics developers," said Esther Weon, a software engineer at Cruise. The company also plans to "release a public API that’ll allow developers to build custom panels themselves." + +The code for Webviz is [available on GitHub][5], where you can download or contribute to the project. + +### npm provides more security + +The team behind npm, the site providing JavaScript package hosting, has a new collaboration with GitHub to automatically scan for exposed tokens that could give hackers access that doesn't belong to them. The project includes a handy automatic revoke of leaked credentials them if are still valid. This could drastically reduce vulnerabilities in the JavaScript community. For instructions on how to participate, see the [original article][6]. + +Note that this news was found via the [Changelog news][7]. + +### Better end of life tracking via open source + +A new project, [endoflife.date][8], aims to overcome the complexity of end of life (EOL) announcements for software. It's part tracker, part public announcement on what good documentation looks like for software. As the README states: "The reason this site exists is because this information is very often hidden away. If you're releasing something on a regular basis: + + 1. List only supported releases. + 2. Give EoL dates/policy if possible. + 3. Hide unsupported releases behind a few extra clicks. + 4. Mention security/active release difference if needed." + + + +Check out the [source code][9] for more information. + +### In other news + + * [Medicine needs to embrace open source][10] + * [Using geospatial data to create safer roads][11] + * [Embracing open source could be a big competitive advantage for businesses][12] + + + +_Thanks, as always, to Opensource.com staff members and moderators for their help this week._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/news-june-22 + +作者:[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/lead-images/weekly_news_roundup_tv.png?itok=B6PM4S1i (Weekly news roundup with TV) +[2]: https://thenextweb.com/dd/2019/06/17/cloudflares-new-open-source-project-helps-anyone-obtain-truly-random-numbers/ +[3]: https://github.com/dedis/drand +[4]: https://venturebeat.com/2019/06/18/cruise-open-sources-webview-a-tool-for-robotics-data-analysis/ +[5]: https://github.com/cruise-automation/webviz +[6]: https://blog.npmjs.org/post/185680936500/protecting-package-publishers-npm-token-security +[7]: https://changelog.com/news/npm-token-scanning-extending-to-github-NAoe +[8]: https://endoflife.date/ +[9]: https://github.com/captn3m0/endoflife.date +[10]: https://www.zdnet.com/article/medicine-needs-to-embrace-open-source/ +[11]: https://itbrief.co.nz/story/using-geospatial-data-to-create-safer-roads +[12]: https://www.fastcompany.com/90364152/embracing-open-source-could-be-a-big-competitive-advantage-for-businesses From 969d7f2316d1417854df33258436d3fd62957382 Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 22 Jun 2019 16:52:57 +0800 Subject: [PATCH 064/336] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8E=9F=E6=96=87?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190416 Can schools be agile.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/sources/tech/20190416 Can schools be agile.md b/sources/tech/20190416 Can schools be agile.md index 8223973619..adcd4f4117 100644 --- a/sources/tech/20190416 Can schools be agile.md +++ b/sources/tech/20190416 Can schools be agile.md @@ -49,8 +49,6 @@ While I certainly appreciate the argument that education is an animal significan Not surprisingly, a go-to resource I recommend to any school wanting to begin or accelerate this process is _The Open Organization_ by Jim Whitehurst. Not only does the book provide a window into how educators can create more open, inclusive leadership structures—where mutual respect enables nimble decisions to be made per real-time data—but it does so in language easily adaptable to the rather strange lexicon that's second nature to educators. Open organization thinking provides pragmatic ways any organization can empower members to be more open: sharing ideas and resources, embracing a culture of collaborative participation as a top priority, developing an innovation mindset through rapid prototyping, valuing ideas based on merit rather than the rank of the person proposing them, and building a strong sense of community that's baked into the organization's DNA. Such an open organization crowd-sources ideas from both inside and outside its formal structure and creates the type of environment that enables localized, student-centered innovations to thrive. -We simply can't rely on solutions and practices we developed in a factory-model paradigm. - Here's the bottom line: Essential to a culture of continuous improvement is recognizing that what we've done in the past may not be suitable in a rapidly changing future. For educators, that means we simply can't rely on solutions and practices we developed in a factory-model paradigm. We must acknowledge countless examples of best practices from other sectors—such as non-profits, the military, the medical profession, and yes, even business—that can at least _inform_ how we rethink what we do in the best interest of students. By moving beyond the traditionally sanctioned "eduspeak" world, we create opportunities for considering perspectives. We can better see the forest for the trees, taking a more objective look at the problems we face, as well as acknowledging what we do very well. Intentionally considering ideas from all sources—from first year classroom teachers to the latest NYT Business & Management Leadership bestseller—offers us a powerful way to engage existing talent within our schools to help overcome the institutionalized inertia that has prevented more positive change from taking hold in our schools and districts. From 359e0506a2a403d56de7a17a3c2009ee00b32598 Mon Sep 17 00:00:00 2001 From: ninifly <18328038336@163.com> Date: Sat, 22 Jun 2019 21:44:30 +0800 Subject: [PATCH 065/336] =?UTF-8?q?Revert=20"=E8=B6=85=E6=9C=9F=E5=9B=9E?= =?UTF-8?q?=E6=94=B6:=20sources/tech/20131228=20Introduction=20to=20Clojur?= =?UTF-8?q?e=20-=20Modern=20dialect=20of=20Lisp=20(Part=201).md"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Introduction to Clojure - Modern dialect of Lisp (Part 1).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20131228 Introduction to Clojure - Modern dialect of Lisp (Part 1).md b/sources/tech/20131228 Introduction to Clojure - Modern dialect of Lisp (Part 1).md index 5e5f4df763..0fb3c6469d 100644 --- a/sources/tech/20131228 Introduction to Clojure - Modern dialect of Lisp (Part 1).md +++ b/sources/tech/20131228 Introduction to Clojure - Modern dialect of Lisp (Part 1).md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (ninifly) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From c442d0643e5d1a04fd648ca8a697d1fdfdca6de9 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 21:51:17 +0800 Subject: [PATCH 066/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190619=20Gettin?= =?UTF-8?q?g=20started=20with=20OpenSSL:=20Cryptography=20basics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190619 Getting started with OpenSSL- Cryptography basics.md --- ...arted with OpenSSL- Cryptography basics.md | 342 ++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 sources/tech/20190619 Getting started with OpenSSL- Cryptography basics.md diff --git a/sources/tech/20190619 Getting started with OpenSSL- Cryptography basics.md b/sources/tech/20190619 Getting started with OpenSSL- Cryptography basics.md new file mode 100644 index 0000000000..0f3da1b13e --- /dev/null +++ b/sources/tech/20190619 Getting started with OpenSSL- Cryptography basics.md @@ -0,0 +1,342 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Getting started with OpenSSL: Cryptography basics) +[#]: via: (https://opensource.com/article/19/6/cryptography-basics-openssl-part-1) +[#]: author: (Marty Kalin https://opensource.com/users/mkalindepauledu/users/akritiko/users/clhermansen) + +Getting started with OpenSSL: Cryptography basics +====== +Need a primer on cryptography basics, especially regarding OpenSSL? Read +on. +![A lock on the side of a building][1] + +This article is the first of two on cryptography basics using [OpenSSL][2], a production-grade library and toolkit popular on Linux and other systems. (To install the most recent version of OpenSSL, see [here][3].) OpenSSL utilities are available at the command line, and programs can call functions from the OpenSSL libraries. The sample program for this article is in C, the source language for the OpenSSL libraries. + +The two articles in this series cover—collectively—cryptographic hashes, digital signatures, encryption and decryption, and digital certificates. You can find the code and command-line examples in a ZIP file from [my website][4]. + +Let’s start with a review of the SSL in the OpenSSL name. + +### A quick history + +[Secure Socket Layer (SSL)][5] is a cryptographic protocol that [Netscape][6] released in 1995. This protocol layer can sit atop HTTP, thereby providing the _S_ for _secure_ in HTTPS. The SSL protocol provides various security services, including two that are central in HTTPS: + + * Peer authentication (aka mutual challenge): Each side of a connection authenticates the identity of the other side. If Alice and Bob are to exchange messages over SSL, then each first authenticates the identity of the other. + * Confidentiality: A sender encrypts messages before sending these over a channel. The receiver then decrypts each received message. This process safeguards network conversations. Even if eavesdropper Eve intercepts an encrypted message from Alice to Bob (a _man-in-the-middle_ attack), Eve finds it computationally infeasible to decrypt this message. + + + +These two key SSL services, in turn, are tied to others that get less attention. For example, SSL supports message integrity, which assures that a received message is the same as the one sent. This feature is implemented with hash functions, which likewise come with the OpenSSL toolkit. + +SSL is versioned (e.g., SSLv2 and SSLv3), and in 1999 Transport Layer Security (TLS) emerged as a similar protocol based upon SSLv3. TLSv1 and SSLv3 are alike, but not enough so to work together. Nonetheless, it is common to refer to SSL/TLS as if they are one and the same protocol. For example, OpenSSL functions often have SSL in the name even when TLS rather than SSL is in play. Furthermore, calling OpenSSL command-line utilities begins with the term **openssl**. + +The documentation for OpenSSL is spotty beyond the **man** pages, which become unwieldy given how big the OpenSSL toolkit is. Command-line and code examples are one way to bring the main topics into focus together. Let’s start with a familiar example—accessing a web site with HTTPS—and use this example to pick apart the cryptographic pieces of interest. + +### An HTTPS client + +The **client** program shown here connects over HTTPS to Google: + + +``` +/* compilation: gcc -o client client.c -lssl -lcrypto */ + +#include <stdio.h> + +#include <stdlib.h> + +#include <openssl/bio.h> /* BasicInput/Output streams */ + +#include <openssl/err.h> /* errors */ + +#include <openssl/ssl.h> /* core library */ + +#define BuffSize 1024 + +void report_and_exit(const char* msg) { +  [perror][7](msg); +  ERR_print_errors_fp(stderr); +  [exit][8](-1); +} + +void init_ssl() { +  SSL_load_error_strings(); +  SSL_library_init(); +} + +void cleanup(SSL_CTX* ctx, BIO* bio) { +  SSL_CTX_free(ctx); +  BIO_free_all(bio); +} + +void secure_connect(const char* hostname) { +  char name[BuffSize]; +  char request[BuffSize]; +  char response[BuffSize]; + +  const SSL_METHOD* method = TLSv1_2_client_method(); +  if (NULL == method) report_and_exit("TLSv1_2_client_method..."); + +  SSL_CTX* ctx = SSL_CTX_new(method); +  if (NULL == ctx) report_and_exit("SSL_CTX_new..."); + +  BIO* bio = BIO_new_ssl_connect(ctx); +  if (NULL == bio) report_and_exit("BIO_new_ssl_connect..."); + +  SSL* ssl = NULL; + +  /* link bio channel, SSL session, and server endpoint */ + +  [sprintf][9](name, "%s:%s", hostname, "https"); +  BIO_get_ssl(bio, &ssl); /* session */ +  SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY); /* robustness */ +  BIO_set_conn_hostname(bio, name); /* prepare to connect */ + +  /* try to connect */ +  if (BIO_do_connect(bio) <= 0) { +    cleanup(ctx, bio); +    report_and_exit("BIO_do_connect..."); +  } + +  /* verify truststore, check cert */ +  if (!SSL_CTX_load_verify_locations(ctx, +                                      "/etc/ssl/certs/ca-certificates.crt", /* truststore */ +                                      "/etc/ssl/certs/")) /* more truststore */ +    report_and_exit("SSL_CTX_load_verify_locations..."); + +  long verify_flag = SSL_get_verify_result(ssl); +  if (verify_flag != X509_V_OK) +    [fprintf][10](stderr, +            "##### Certificate verification error (%i) but continuing...\n", +            (int) verify_flag); + +  /* now fetch the homepage as sample data */ +  [sprintf][9](request, +          "GET / HTTP/1.1\x0D\x0AHost: %s\x0D\x0A\x43onnection: Close\x0D\x0A\x0D\x0A", +          hostname); +  BIO_puts(bio, request); + +  /* read HTTP response from server and print to stdout */ +  while (1) { +    [memset][11](response, '\0', sizeof(response)); +    int n = BIO_read(bio, response, BuffSize); +    if (n <= 0) break; /* 0 is end-of-stream, < 0 is an error */ +  [puts][12](response); +  } + +  cleanup(ctx, bio); +} + +int main() { +  init_ssl(); + +  const char* hostname = "www.google.com:443"; +  [fprintf][10](stderr, "Trying an HTTPS connection to %s...\n", hostname); +  secure_connect(hostname); + +return 0; +} +``` + +This program can be compiled and executed from the command line (note the lowercase L in **-lssl** and **-lcrypto**): + +**gcc** **-o** **client client.c -lssl** **-lcrypto** + +This program tries to open a secure connection to the web site [www.google.com][13]. As part of the TLS handshake with the Google web server, the **client** program receives one or more digital certificates, which the program tries (but, on my system, fails) to verify. Nonetheless, the **client** program goes on to fetch the Google homepage through the secure channel. This program depends on the security artifacts mentioned earlier, although only a digital certificate stands out in the code. The other artifacts remain behind the scenes and are clarified later in detail. + +Generally, a client program in C or C++ that opened an HTTP (non-secure) channel would use constructs such as a _file descriptor_ for a _network socket_, which is an endpoint in a connection between two processes (e.g., the client program and the Google web server). A file descriptor, in turn, is a non-negative integer value that identifies, within a program, any file-like construct that the program opens. Such a program also would use a structure to specify details about the web server’s address. + +None of these relatively low-level constructs occurs in the client program, as the OpenSSL library wraps the socket infrastructure and address specification in high-level security constructs. The result is a straightforward API. Here’s a first look at the security details in the example **client** program. + + * The program begins by loading the relevant OpenSSL libraries, with my function **init_ssl** making two calls into OpenSSL: + +**SSL_library_init(); SSL_load_error_strings();** + + * The next initialization step tries to get a security _context_, a framework of information required to establish and maintain a secure channel to the web server. **TLS 1.2** is used in the example, as shown in this call to an OpenSSL library function: + +**const SSL_METHOD* method = TLSv1_2_client_method(); /* TLS 1.2 */** + +If the call succeeds, then the **method** pointer is passed to the library function that creates the context of type **SSL_CTX**: + +**SSL_CTX*** **ctx** **= SSL_CTX_new(method);** + +The **client** program checks for errors on each of these critical library calls, and then the program terminates if either call fails. + + * Two other OpenSSL artifacts now come into play: a security session of type **SSL**, which manages the secure connection from start to finish; and a secured stream of type **BIO** (Basic Input/Output), which is used to communicate with the web server. The **BIO** stream is generated with this call: + +**BIO* bio = BIO_new_ssl_connect(ctx);** + +Note that the all-important context is the argument. The **BIO** type is the OpenSSL wrapper for the **FILE** type in C. This wrapper secures the input and output streams between the **client** program and Google's web server. + + * With the **SSL_CTX** and **BIO** in hand, the program then links these together in an **SSL** session. Three library calls do the work: + +**BIO_get_ssl(bio, &ssl); /* get a TLS session */** + +**SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY); /* for robustness */** + +**BIO_set_conn_hostname(bio, name); /* prepare to connect to Google */** + +The secure connection itself is established through this call: + +**BIO_do_connect(bio);** + +If this last call does not succeed, the **client** program terminates; otherwise, the connection is ready to support a confidential conversation between the **client** program and the Google web server. + + + + +During the handshake with the web server, the **client** program receives one or more digital certificates that authenticate the server’s identity. However, the **client** program does not send a certificate of its own, which means that the authentication is one-way. (Web servers typically are configured _not_ to expect a client certificate.) Despite the failed verification of the web server’s certificate, the **client** program continues by fetching the Google homepage through the secure channel to the web server. + +Why does the attempt to verify a Google certificate fail? A typical OpenSSL installation has the directory **/etc/ssl/certs**, which includes the **ca-certificates.crt** file. The directory and the file together contain digital certificates that OpenSSL trusts out of the box and accordingly constitute a _truststore_. The truststore can be updated as needed, in particular, to include newly trusted certificates and to remove ones no longer trusted. + +The client program receives three certificates from the Google web server, but the OpenSSL truststore on my machine does not contain exact matches. As presently written, the **client** program does not pursue the matter by, for example, verifying the digital signature on a Google certificate (a signature that vouches for the certificate). If that signature were trusted, then the certificate containing it should be trusted as well. Nonetheless, the client program goes on to fetch and then to print Google’s homepage. The next section gets into more detail. + +### The hidden security pieces in the client program + +Let’s start with the visible security artifact in the client example—the digital certificate—and consider how other security artifacts relate to it. The dominant layout standard for a digital certificate is X509, and a production-grade certificate is issued by a certificate authority (CA) such as [Verisign][14]. + +A digital certificate contains various pieces of information (e.g., activation and expiration dates, and a domain name for the owner), including the issuer’s identity and _digital signature_, which is an encrypted _cryptographic hash_ value. A certificate also has an unencrypted hash value that serves as its identifying _fingerprint_. + +A hash value results from mapping an arbitrary number of bits to a fixed-length digest. What the bits represent (an accounting report, a novel, or maybe a digital movie) is irrelevant. For example, the Message Digest version 5 (MD5) hash algorithm maps input bits of whatever length to a 128-bit hash value, whereas the SHA1 (Secure Hash Algorithm version 1) algorithm maps input bits to a 160-bit value. Different input bits result in different—indeed, statistically unique—hash values. The next article goes into further detail and focuses on what makes a hash function _cryptographic_. + +Digital certificates differ in type (e.g., _root_, _intermediate_, and _end-entity_ certificates) and form a hierarchy that reflects these types. As the name suggests, a _root_ certificate sits atop the hierarchy, and the certificates under it inherit whatever trust the root certificate has. The OpenSSL libraries and most modern programming languages have an X509 type together with functions that deal with such certificates. The certificate from Google has an X509 format, and the **client** program checks whether this certificate is **X509_V_OK**. + +X509 certificates are based upon public-key infrastructure (PKI), which includes algorithms—RSA is the dominant one—for generating _key pairs_: a public key and its paired private key. A public key is an identity: [Amazon’s][15] public key identifies it, and my public key identifies me. A private key is meant to be kept secret by its owner. + +The keys in a pair have standard uses. A public key can be used to encrypt a message, and the private key from the same pair can then be used to decrypt the message. A private key also can be used to sign a document or other electronic artifact (e.g., a program or an email), and the public key from the pair can then be used to verify the signature. The following two examples fill in some details. + +In the first example, Alice distributes her public key to the world, including Bob. Bob then encrypts a message with Alice’s public key, sending the encrypted message to Alice. The message encrypted with Alice’s public key is decrypted with her private key, which (by assumption) she alone has, like so: + + +``` +             +------------------+ encrypted msg  +-------------------+ +Bob's msg--->|Alice's public key|--------------->|Alice's private key|---> Bob's msg +             +------------------+                +-------------------+ +``` + +Decrypting the message without Alice’s private key is possible in principle, but infeasible in practice given a sound cryptographic key-pair system such as RSA. + +Now, for the second example, consider signing a document to certify its authenticity. The signature algorithm uses a private key from a pair to process a cryptographic hash of the document to be signed: + + +``` +                    +-------------------+ +Hash of document--->|Alice's private key|--->Alice's digital signature of the document +                    +-------------------+ +``` + +Assume that Alice digitally signs a contract sent to Bob. Bob then can use Alice’s public key from the key pair to verify the signature: + + +``` +                                             +------------------+ +Alice's digital signature of the document--->|Alice's public key|--->verified or not +                                             +------------------+ +``` + +It is infeasible to forge Alice’s signature without Alice’s private key: hence, it is in Alice’s interest to keep her private key secret. + +None of these security pieces, except for digital certificates, is explicit in the **client** program. The next article fills in the details with examples that use the OpenSSL utilities and library functions. + +### OpenSSL from the command line + +In the meantime, let’s take a look at OpenSSL command-line utilities: in particular, a utility to inspect the certificates from a web server during the TLS handshake. Invoking the OpenSSL utilities begins with the **openssl** command and then adds a combination of arguments and flags to specify the desired operation. + +Consider this command: + +**openssl list-cipher-algorithms** + +The output is a list of associated algorithms that make up a _cipher suite_. Here’s the start of the list, with comments to clarify the acronyms: + + +``` +AES-128-CBC ## Advanced Encryption Standard, Cipher Block Chaining +AES-128-CBC-HMAC-SHA1 ## Hash-based Message Authentication Code with SHA1 hashes +AES-128-CBC-HMAC-SHA256 ## ditto, but SHA256 rather than SHA1 +... +``` + +The next command, using the argument **s_client**, opens a secure connection to **[www.google.com][13]** and prints screens full of information about this connection: + +**openssl s_client -connect [www.google.com:443][16] -showcerts** + +The port number 443 is the standard one used by web servers for receiving HTTPS rather than HTTP connections. (For HTTP, the standard port is 80.) The network address **[www.google.com:443][16]** also occurs in the **client** program's code. If the attempted connection succeeds, the three digital certificates from Google are displayed together with information about the secure session, the cipher suite in play, and related items. For example, here is a slice of output from near the start, which announces that a _certificate chain_ is forthcoming. The encoding for the certificates is base64: + + +``` +Certificate chain + 0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com + i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3 +\-----BEGIN CERTIFICATE----- +MIIEijCCA3KgAwIBAgIQdCea9tmy/T6rK/dDD1isujANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNlcnZpY2VzMSUw +... +``` + +A major web site such as Google usually sends multiple certificates for authentication. + +The output ends with summary information about the TLS session, including specifics on the cipher suite: + + +``` +SSL-Session: +    Protocol : TLSv1.2 +    Cipher : ECDHE-RSA-AES128-GCM-SHA256 +    Session-ID: A2BBF0E4991E6BBBC318774EEE37CFCB23095CC7640FFC752448D07C7F438573 +... +``` + +The protocol **TLS 1.2** is used in the **client** program, and the **Session-ID** uniquely identifies the connection between the **openssl** utility and the Google web server. The **Cipher** entry can be parsed as follows: + + * **ECDHE** (Elliptic Curve Diffie Hellman Ephemeral) is an effective and efficient algorithm for managing the TLS handshake. In particular, ECDHE solves the _key-distribution problem_ by ensuring that both parties in a connection (e.g., the client program and the Google web server) use the same encryption/decryption key, which is known as the _session key_. The follow-up article digs into the details. + + * **RSA** (Rivest Shamir Adleman) is the dominant public-key cryptosystem and named after the three academics who first described the system in the late 1970s. The key-pairs in play are generated with the RSA algorithm. + + * **AES128** (Advanced Encryption Standard) is a _block cipher_ that encrypts and decrypts blocks of bits. (The alternative is a _stream cipher_, which encrypts and decrypts bits one at a time.) The cipher is _symmetric_ in that the same key is used to encrypt and to decrypt, which raises the key-distribution problem in the first place. AES supports key sizes of 128 (used here), 192, and 256 bits: the larger the key, the better the protection. + +Key sizes for symmetric cryptosystems such as AES are, in general, smaller than those for asymmetric (key-pair based) systems such as RSA. For example, a 1024-bit RSA key is relatively small, whereas a 256-bit key is currently the largest for AES. + + * **GCM** (Galois Counter Mode) handles the repeated application of a cipher (in this case, AES128) during a secured conversation. AES128 blocks are only 128-bits in size, and a secure conversation is likely to consist of multiple AES128 blocks from one side to the other. GCM is efficient and commonly paired with AES128. + + * **SHA256** (Secure Hash Algorithm 256 bits) is the cryptographic hash algorithm in play. The hash values produced are 256 bits in size, although even larger values are possible with SHA. + + + + +Cipher suites are in continual development. Not so long ago, for example, Google used the RC4 stream cipher (Ron’s Cipher version 4 after Ron Rivest from RSA). RC4 now has known vulnerabilities, which presumably accounts, at least in part, for Google’s switch to AES128. + +### Wrapping up + +This first look at OpenSSL, through a secure C web client and various command-line examples, has brought to the fore a handful of topics in need of more clarification. [The next article gets into the details][17], starting with cryptographic hashes and ending with a fuller discussion of how digital certificates address the key distribution challenge. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/cryptography-basics-openssl-part-1 + +作者:[Marty Kalin][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/mkalindepauledu/users/akritiko/users/clhermansen +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_3reasons.png?itok=k6F3-BqA (A lock on the side of a building) +[2]: https://www.openssl.org/ +[3]: https://www.howtoforge.com/tutorial/how-to-install-openssl-from-source-on-linux/ +[4]: http://condor.depaul.edu/mkalin +[5]: https://en.wikipedia.org/wiki/Transport_Layer_Security +[6]: https://en.wikipedia.org/wiki/Netscape +[7]: http://www.opengroup.org/onlinepubs/009695399/functions/perror.html +[8]: http://www.opengroup.org/onlinepubs/009695399/functions/exit.html +[9]: http://www.opengroup.org/onlinepubs/009695399/functions/sprintf.html +[10]: http://www.opengroup.org/onlinepubs/009695399/functions/fprintf.html +[11]: http://www.opengroup.org/onlinepubs/009695399/functions/memset.html +[12]: http://www.opengroup.org/onlinepubs/009695399/functions/puts.html +[13]: http://www.google.com +[14]: https://www.verisign.com +[15]: https://www.amazon.com +[16]: http://www.google.com:443 +[17]: https://opensource.com/article/19/6/cryptography-basics-openssl-part-2 From 77287aa0a2fc1e97685753030ee89f3549c5344d Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 21:57:34 +0800 Subject: [PATCH 067/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190605=20How=20?= =?UTF-8?q?to=20navigate=20the=20Kubernetes=20learning=20curve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190605 How to navigate the Kubernetes learning curve.md --- ... navigate the Kubernetes learning curve.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 sources/tech/20190605 How to navigate the Kubernetes learning curve.md diff --git a/sources/tech/20190605 How to navigate the Kubernetes learning curve.md b/sources/tech/20190605 How to navigate the Kubernetes learning curve.md new file mode 100644 index 0000000000..0fde8d1383 --- /dev/null +++ b/sources/tech/20190605 How to navigate the Kubernetes learning curve.md @@ -0,0 +1,75 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to navigate the Kubernetes learning curve) +[#]: via: (https://opensource.com/article/19/6/kubernetes-learning-curve) +[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux/users/fatherlinux) + +How to navigate the Kubernetes learning curve +====== +Kubernetes is like a dump truck. It's elegant for solving the problems +it's designed for, but you have to master the learning curve first. +![Dump truck rounding a turn in the road][1] + +In _[Kubernetes is a dump truck][2]_, I talked about how a tool can be elegant for the problem it was designed to solve—once you learn how to use it. In part 2 of this series, I'm going a little deeper into the Kubernetes' learning curve. + +The journey to [Kubernetes][3] often starts with running one container on one host. You quickly discover how easy it is to run new versions of software, how easy it is to share that software with others, and how easy it is for those users to run it the way you intended. + +But then you need + + * Two containers + * Two hosts + + + +It's easy to fire up one web server on port 80 with a container, but what happens when you need to fire up a second container on port 80? What happens when you are building a production environment and you need the containerized web server to fail over to a second host? The short answer, in either case, is you have to move into container orchestration. + +Inevitably, when you start to handle the two containers or two hosts problem, you'll introduce complexity and, hence, a learning curve. The two services (a more generalized version of a container) / two hosts problem has been around for a long time and has always introduced complexity. + +Historically, this would have involved load balancers, clustering software, and even clustered file systems. Configuration logic for every service is embedded in every system (load balancers, cluster software, and file systems). Running 60 or 70 services, clustered, behind load balancers is complex. Adding another new service is also complex. Worse, decommissioning a service is a nightmare. Thinking back on my days of troubleshooting production MySQL and Apache servers with logic embedded in three, four, or five different places, all in different formats, still makes my head hurt. + +Kubernetes elegantly solves all these problems with one piece of software: + + 1. Two services (containers): Check + 2. Two servers (high availability): Check + 3. Single source of configuration: Check + 4. Standard configuration format: Check + 5. Networking: Check + 6. Storage: Check + 7. Dependencies (what services talk to what databases): Check + 8. Easy provisioning: Check + 9. Easy de-provisioning: Check (perhaps Kubernetes' _most_ powerful piece) + + + +Wait, it's starting to look like Kubernetes is pretty elegant and pretty powerful. _It is._ You can model an entire miniature IT universe in Kubernetes. + +![Kubernetes business model][4] + +So yes, there is a learning curve when starting to use a giant dump truck (or any professional equipment). There's also a learning curve to use Kubernetes, but it's worth it because you can solve so many problems with one tool. If you are apprehensive about the learning curve, think through all the underlying networking, storage, and security problems in IT infrastructure and envision their solutions today—they're not easier. Especially when you introduce more and more services, faster and faster. Velocity is the goal nowadays, so give special consideration to the provisioning and de-provisioning problem. + +But don't confuse the learning curve for building or equipping Kubernetes (picking the right mud flaps for your dump truck can be hard, LOL) with the learning curve for using it. Learning to build your own Kubernetes with so many different choices at so many different layers (container engine, logging, monitoring, service mesh, storage, networking), and then maintaining updated selections of each component every six months, might not be worth the investment—but learning to use it is absolutely worth it. + +I eat, sleep, and breathe Kubernetes and containers every day, and even I struggle to keep track of all the major new projects announced literally almost every day. But there isn't a day that I'm not excited about the operational benefits of having a single tool to model an entire IT miniverse. Also, remember Kubernetes has matured a ton and will continue to do so. Like Linux and OpenStack before it, the interfaces and de facto projects at each layer will mature and become easier to select. + +In the third article in this series, I'll dig into what you need to know before you drive your Kubernetes "truck." + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/kubernetes-learning-curve + +作者:[Scott McCarty][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/fatherlinux/users/fatherlinux +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dumptruck_car_vehicle_storage_container_road.jpg?itok=TWK0CbX_ (Dump truck rounding a turn in the road) +[2]: https://opensource.com/article/19/6/kubernetes-dump-truck +[3]: https://kubernetes.io/ +[4]: https://opensource.com/sites/default/files/uploads/developer_native_experience_-_mapped_to_traditional_1.png (Kubernetes business model) From 5ccf646b5f1f7fe24d95ca1073b5e3273fee1630 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 22 Jun 2019 21:58:32 +0800 Subject: [PATCH 068/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190604=20Kubern?= =?UTF-8?q?etes=20is=20a=20dump=20truck:=20Here's=20why?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md --- ... Kubernetes is a dump truck- Here-s why.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md diff --git a/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md new file mode 100644 index 0000000000..40aef2d614 --- /dev/null +++ b/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md @@ -0,0 +1,52 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Kubernetes is a dump truck: Here's why) +[#]: via: (https://opensource.com/article/19/6/kubernetes-dump-truck) +[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) + +Kubernetes is a dump truck: Here's why +====== +Dump trucks are an elegant solution to a wide range of essential +business problems. +![Dump truck with kids standing in the foreground][1] + +As we approach Kubernetes anniversary on Friday, June 7 this week let's start with this. + +Dump trucks are elegant. Seriously, stay with me for a minute. They solve a wide array of technical problems in an elegant way. They can move dirt, gravel, rocks, coal, construction material, or road barricades. They can even pull trailers with other pieces of heavy equipment on them. You can load a dump truck with five tons of dirt and drive across the country with it. For a nerd like me, that's elegance. + +But, they're not easy to use. Dump trucks require a special driver's license. They're also not easy to equip or maintain. There are a ton of options when you buy a dump truck and a lot of maintenance. But, they're elegant for moving dirt. + +You know what's not elegant for moving dirt? A late-model, compact sedan. They're way easier to buy. Easier to drive. Easier to maintain. But, they're terrible at carrying dirt. It would take 200 trips to carry five tons of dirt, and nobody would want the car after that. + +Alright, you're sold on using a dump truck, but you want to build it yourself. I get it. I'm a nerd and I love building things. But… + +If you owned a construction company, you wouldn't build your own dump trucks. You definitely wouldn't maintain the supply chain to rebuild dump trucks (that's a big supply chain). But you would learn to drive one. + +OK, my analogy is crude but easy to understand. Ease of use is relative. Ease of maintenance is relative. Ease of configuration is relative. It really depends on what you are trying to do. [Kubernetes][2] is no different. + +Building Kubernetes once isn't too hard. Equipping Kubernetes? Well, that gets harder. What did you think of KubeCon? How many new projects were announced? Which ones are "real"? Which ones should you learn? How deeply do you understand Harbor, TikV, NATD, Vitess, Open Policy Agent? Not to mention Envoy, eBPF, and a bunch of the underlying technologies in Linux? It feels a lot like building dump trucks in 1904 with the industrial revolution in full swing. Figuring out what screws, bolts, metal, and pistons to use. (Steampunk, anyone?) + +Building and equipping Kubernetes, like a dump truck, is a technical problem you probably shouldn't be tackling if you are in financial services, retail, biological research, food services, and so forth. But, learning how to drive Kubernetes is definitely something you should be learning. + +Kubernetes, like a dump truck, is elegant for the wide variety of technical problems it can solve (and the ecosystem it drags along). So, I'll leave you with a quote that one of my computer science professors told us in my first year of college. She said, "one day, you will look at a piece of code and say to yourself, 'now that's elegant!'" + +Kubernetes is elegant. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/kubernetes-dump-truck + +作者:[Scott McCarty][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/fatherlinux +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dump_truck_car_container_kubernetes.jpg?itok=4BdmyVGd (Dump truck with kids standing in the foreground) +[2]: https://kubernetes.io/ From adfd26a2fda18bd17da694600f19518329bee0e0 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 23 Jun 2019 07:53:22 +0800 Subject: [PATCH 069/336] Rename sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md to sources/news/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md --- ...otics data visualization, npm token scanning, and more news.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md (100%) diff --git a/sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md b/sources/news/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md similarity index 100% rename from sources/tech/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md rename to sources/news/20190622 Cloudflare-s random number generator, robotics data visualization, npm token scanning, and more news.md From 58e2e63d15870149ae7f7ababbfd09be5dc7826c Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 23 Jun 2019 07:59:09 +0800 Subject: [PATCH 070/336] Rename sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md to sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md --- ...12 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md (100%) diff --git a/sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md similarity index 100% rename from sources/tech/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md rename to sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md From 8a71f4d45ab9cce8863266ad256e943e0d707152 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 23 Jun 2019 08:05:13 +0800 Subject: [PATCH 071/336] Rename sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md to sources/talk/20190618 Why your workplace arguments aren-t as effective as you-d like.md --- ... your workplace arguments aren-t as effective as you-d like.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20190618 Why your workplace arguments aren-t as effective as you-d like.md (100%) diff --git a/sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md b/sources/talk/20190618 Why your workplace arguments aren-t as effective as you-d like.md similarity index 100% rename from sources/tech/20190618 Why your workplace arguments aren-t as effective as you-d like.md rename to sources/talk/20190618 Why your workplace arguments aren-t as effective as you-d like.md From 7b8a7625d54123f5f998d037d56508826a8c07fe Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 23 Jun 2019 08:06:57 +0800 Subject: [PATCH 072/336] Rename sources/tech/20190619 Codethink open sources part of onboarding process.md to sources/news/20190619 Codethink open sources part of onboarding process.md --- .../20190619 Codethink open sources part of onboarding process.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20190619 Codethink open sources part of onboarding process.md (100%) diff --git a/sources/tech/20190619 Codethink open sources part of onboarding process.md b/sources/news/20190619 Codethink open sources part of onboarding process.md similarity index 100% rename from sources/tech/20190619 Codethink open sources part of onboarding process.md rename to sources/news/20190619 Codethink open sources part of onboarding process.md From 72f40cf246a03a9333283014e97d7b9a5b1e7999 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 08:28:25 +0800 Subject: [PATCH 073/336] APL:20190621 Bash Script to Monitor Memory Usage on Linux.md --- .../20190621 Bash Script to Monitor Memory Usage on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md b/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md index ded8050ee7..2f943bd32b 100644 --- a/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md +++ b/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From f6ca4188a04875179f5932ea3af7cafc8882ef1d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 08:45:28 +0800 Subject: [PATCH 074/336] TSL:20190621 Bash Script to Monitor Memory Usage on Linux.md --- ...Script to Monitor Memory Usage on Linux.md | 82 +++++++------------ 1 file changed, 29 insertions(+), 53 deletions(-) rename {sources => translated}/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md (69%) diff --git a/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md b/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md similarity index 69% rename from sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md rename to translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md index 2f943bd32b..47071fdf42 100644 --- a/sources/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md +++ b/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md @@ -7,58 +7,50 @@ [#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -Bash Script to Monitor Memory Usage on Linux +在 Linux 上用 Bash 脚本监控内存使用情况 ====== -There are many open source monitoring tools are currently available in market to monitor Linux systems performance. +目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它可以发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。 -It will send an email alert when the system reaches the specified threshold limit. +如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单。 -It monitors everything such as CPU utilization, Memory utilization, swap utilization, disk space utilization and much more. +在本教程中,我们添加了两个 shell 脚本来监视 Linux 系统上的内存利用率。当系统达到给定阈值时,它将给特定电子邮件地址发邮件。 -If you only have few systems and want to monitor them then writing a small shell script can make your task very easy. +### 方法-1:用 Linux Bash 脚本监视内存利用率并发送电子邮件 -In this tutorial we have added two shell script to monitor Memory utilization on Linux system. +如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。 -When the system reaches the given threshold then it will trigger a mail to given email id. +这是非常简单直接的单行脚本。在大多数情况下,我更喜欢使用这种方法。 -### Method-1 : Linux Bash Script To Monitor Memory Utilization And Send an Email - -If you want to only get current Memory utilization percentage through mail when the system reaches the given threshold, use the following script. - -This is very simple, straightforward and one line script. I preferred to go with this method in most of the time. - -It will trigger an email when your system reaches `80%` of Memory utilization. +当你的系统达到内存利用率的 80% 时,它将触发一封电子邮件。 ``` -*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" [email protected] +*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" 2daygeek@gmail.com ``` -**Note:** You need to change the email id instead of ours. Also, you can change the Memory utilization threshold value as per your requirement. +**注意:**你需要更改电子邮件地址而不是我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。 -**Output:** You will be getting an email alert similar to below. +**输出:**你将收到类似下面的电子邮件提醒。 ``` High Memory Alert: 80.40% ``` -We had added many useful shell scripts in the past. If you want to check those, navigate to the below link. +我们过去添加了许多有用的 shel l脚本。如果要查看这些内容,请导航至以下链接。 - * **[How to automate day to day activities using shell scripts?][1]** + * [如何使用 shell 脚本自动执行日常活动?][1] +### 方法-2:用 Linux Bash 脚本监视内存利用率并发送电子邮件 +如果要在邮件警报中获取有关内存利用率的更多信息。 -### Method-2 : Linux Bash Script To Monitor Memory Utilization And Send an Email +使用以下脚本,其中包括基于 `top` 命令和 `ps` 命令的最高内存利用率进程详细信息。 -If you want to get more information about the Memory utilization in the mail alert. +这将立即让你了解系统的运行情况。 -Then use the following script, which includes top Memory utilization process details based on the top Command and ps Command. +当你的系统达到内存利用率的 “80%” 时,它将触发一封电子邮件。 -This will instantly gives you an idea what is going on your system. - -It will trigger an email when your system reaches `80%` of Memory utilization. - -**Note:** You need to change the email id instead of ours. Also, you can change the Memory utilization threshold value as per your requirement. +**注意:**你需要更改电子邮件地址而不是我们的电子邮件地址。 此外,你可以根据你的要求更改内存利用率阈值。 ``` # vi /opt/scripts/memory-alert.sh @@ -68,53 +60,37 @@ ramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{pri if [ "$ramusage" > 20 ]; then -SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)" - -MESSAGE="/tmp/Mail.out" - -TO="[email protected]" - + SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)" + MESSAGE="/tmp/Mail.out" + TO="2daygeek@gmail.com" echo "Memory Current Usage is: $ramusage%" >> $MESSAGE - echo "" >> $MESSAGE - echo "------------------------------------------------------------------" >> $MESSAGE - echo "Top Memory Consuming Process Using top command" >> $MESSAGE - echo "------------------------------------------------------------------" >> $MESSAGE - echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE - echo "" >> $MESSAGE - echo "------------------------------------------------------------------" >> $MESSAGE - echo "Top Memory Consuming Process Using ps command" >> $MESSAGE - echo "------------------------------------------------------------------" >> $MESSAGE - echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE - mail -s "$SUBJECT" "$TO" < $MESSAGE - rm /tmp/Mail.out - - fi +fi ``` -Finally add a **[cronjob][2]** to automate this. It will run every 5 minutes. +最后添加一个 [cron 任务][2] 来自动执行此操作。它将每 5 分钟运行一次。 ``` # crontab -e */5 * * * * /bin/bash /opt/scripts/memory-alert.sh ``` -**Note:** You will be getting an email alert 5 mins later since the script has scheduled to run every 5 minutes (But it’s not exactly 5 mins and it depends the timing). +**注意:**由于脚本计划每 5 分钟运行一次,因此你将在 5 分钟后收到电子邮件提醒(但不是 5 分钟,而是取决于具体时间)。 -Say for example. If your system reaches the given limit at 8.25 then you will be getting an email alert in another 5 mins. Hope it’s clear now. +比如说。 如果你的系统达到 8.25 的给定限制,那么你将在再过 5 分钟收到电子邮件警报。 希望现在说清楚了。 -**Output:** You will be getting an email alert similar to below. +**输出:**你将收到类似下面的电子邮件提醒。 ``` Memory Current Usage is: 80.71% @@ -133,7 +109,7 @@ Tasks: 314 total, 1 running, 313 sleeping, 0 stopped, 0 zombie %Cpu6 : 9.1 us, 0.0 sy, 0.0 ni, 90.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu7 : 17.4 us, 4.3 sy, 0.0 ni, 78.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16248588 total, 5015964 free, 6453404 used, 4779220 buff/cache -KiB Swap: 17873388 total, 16928620 free, 944768 used. 6423008 avail Mem +KiB Swap: 17873388 total, 16928620 free, 944768 used. 6423008 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17163 daygeek 20 2033204 487736 282888 S 10.0 3.0 8:26.07 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 9408 -prefMapSize 184979 -parentBuildID 20190521202118 -greomni /u+ @@ -164,7 +140,7 @@ via: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-us 作者:[Magesh Maruthamuthu][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 b49846ba26bf6944e2b558460ed55cdf1dde07ff Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 08:54:25 +0800 Subject: [PATCH 075/336] PRF:20190621 Bash Script to Monitor Memory Usage on Linux.md @wxy --- ...Script to Monitor Memory Usage on Linux.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md b/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md index 47071fdf42..ce95199f6d 100644 --- a/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md +++ b/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md @@ -1,15 +1,17 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Bash Script to Monitor Memory Usage on Linux) [#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -在 Linux 上用 Bash 脚本监控内存使用情况 +用 Bash 脚本监控 Linux 上的内存使用情况 ====== +![](https://img.linux.net.cn/data/attachment/album/201906/23/085446setqkshf5zk0tn2x.jpg) + 目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它可以发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。 如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单。 @@ -20,7 +22,7 @@ 如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。 -这是非常简单直接的单行脚本。在大多数情况下,我更喜欢使用这种方法。 +这是个非常简单直接的单行脚本。在大多数情况下,我更喜欢使用这种方法。 当你的系统达到内存利用率的 80% 时,它将触发一封电子邮件。 @@ -28,7 +30,7 @@ */5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" 2daygeek@gmail.com ``` -**注意:**你需要更改电子邮件地址而不是我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。 +**注意:**你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。 **输出:**你将收到类似下面的电子邮件提醒。 @@ -36,21 +38,19 @@ High Memory Alert: 80.40% ``` -我们过去添加了许多有用的 shel l脚本。如果要查看这些内容,请导航至以下链接。 +我们过去添加了许多有用的 shell 脚本。如果要查看这些内容,请导航至以下链接。  * [如何使用 shell 脚本自动执行日常活动?][1] ### 方法-2:用 Linux Bash 脚本监视内存利用率并发送电子邮件 -如果要在邮件警报中获取有关内存利用率的更多信息。 - -使用以下脚本,其中包括基于 `top` 命令和 `ps` 命令的最高内存利用率进程详细信息。 +如果要在邮件警报中获取有关内存利用率的更多信息。使用以下脚本,其中包括基于 `top` 命令和 `ps` 命令的最高内存利用率和进程详细信息。 这将立即让你了解系统的运行情况。 当你的系统达到内存利用率的 “80%” 时,它将触发一封电子邮件。 -**注意:**你需要更改电子邮件地址而不是我们的电子邮件地址。 此外,你可以根据你的要求更改内存利用率阈值。 +**注意:**你需要更改电子邮件地址而不是使用我们的电子邮件地址。此外,你可以根据你的要求更改内存利用率阈值。 ``` # vi /opt/scripts/memory-alert.sh @@ -86,9 +86,9 @@ fi */5 * * * * /bin/bash /opt/scripts/memory-alert.sh ``` -**注意:**由于脚本计划每 5 分钟运行一次,因此你将在 5 分钟后收到电子邮件提醒(但不是 5 分钟,而是取决于具体时间)。 +**注意:**由于脚本计划每 5 分钟运行一次,因此你将在最多 5 分钟后收到电子邮件提醒(但不是 5 分钟,取决于具体时间)。 -比如说。 如果你的系统达到 8.25 的给定限制,那么你将在再过 5 分钟收到电子邮件警报。 希望现在说清楚了。 +比如说,如果你的系统达到 8.25 的给定限制,那么你将在 5 分钟内收到电子邮件警报。希望现在说清楚了。 **输出:**你将收到类似下面的电子邮件提醒。 @@ -141,7 +141,7 @@ via: https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-us 作者:[Magesh Maruthamuthu][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 aa8f174b15d0b02ea1699a9f05eb72d43ff132f9 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 08:55:54 +0800 Subject: [PATCH 076/336] PUB:20190621 Bash Script to Monitor Memory Usage on Linux.md @wxy https://linux.cn/article-11007-1.html --- .../20190621 Bash Script to Monitor Memory Usage on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190621 Bash Script to Monitor Memory Usage on Linux.md (99%) diff --git a/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md b/published/20190621 Bash Script to Monitor Memory Usage on Linux.md similarity index 99% rename from translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md rename to published/20190621 Bash Script to Monitor Memory Usage on Linux.md index ce95199f6d..ee2a3cba8c 100644 --- a/translated/tech/20190621 Bash Script to Monitor Memory Usage on Linux.md +++ b/published/20190621 Bash Script to Monitor Memory Usage on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11007-1.html) [#]: subject: (Bash Script to Monitor Memory Usage on Linux) [#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-memory-utilization-usage-and-send-email/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From 9ca37b911cef7d645efb54b8f60119d8332d9ab3 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 09:01:23 +0800 Subject: [PATCH 077/336] APL:20190617 Exploring -run on Linux --- sources/tech/20190617 Exploring -run on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190617 Exploring -run on Linux.md b/sources/tech/20190617 Exploring -run on Linux.md index e2b497930c..57a153ac9a 100644 --- a/sources/tech/20190617 Exploring -run on Linux.md +++ b/sources/tech/20190617 Exploring -run on Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From b7edd0d3aad667e86a900f912f21af49b3714d28 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 09:21:48 +0800 Subject: [PATCH 078/336] TSL:20190617 Exploring -run on Linux.md --- .../tech/20190617 Exploring -run on Linux.md | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) rename {sources => translated}/tech/20190617 Exploring -run on Linux.md (53%) diff --git a/sources/tech/20190617 Exploring -run on Linux.md b/translated/tech/20190617 Exploring -run on Linux.md similarity index 53% rename from sources/tech/20190617 Exploring -run on Linux.md rename to translated/tech/20190617 Exploring -run on Linux.md index 57a153ac9a..59704c3b02 100644 --- a/sources/tech/20190617 Exploring -run on Linux.md +++ b/translated/tech/20190617 Exploring -run on Linux.md @@ -7,14 +7,16 @@ [#]: via: (https://www.networkworld.com/article/3403023/exploring-run-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) -Exploring /run on Linux +探索 Linux 上的 /run ====== -There's been a small but significant change in how Linux systems work with respect to runtime data. + +> Linux 系统在运行时数据方面的工作方式发生了微小但重大的变化。 + ![Sandra Henry-Stocker][1] -If you haven’t been paying close attention, you might not have noticed a small but significant change in how Linux systems work with respect to runtime data. A re-arrangement of how and where it’s accessible in the file system started taking hold about eight years ago. And while this change might not have been big enough of a splash to wet your socks, it provides some additional consistency in the Linux file system and is worthy of some exploration. +如果你没有密切关注,你可能没有注意到 Linux 系统在运行时数据方面的工作方式有一些小但重大的变化。 它重新组织了文件系统中可访问的方式和位置,而这个变化在大约八年前就开始了。虽然这种变化可能不足以让你的袜子变湿,但它在 Linux 文件系统中提供了更多一致性,值得进行一些探索。 -To get started, cd your way over to /run. If you use df to check it out, you’ll see something like this: +要开始,请转到 `/run`。如果你使用 `df` 来检查它,你会看到这样的输出: ``` $ df -k . @@ -22,18 +24,16 @@ Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 609984 2604 607380 1% /run ``` -Identified as a “tmpfs” (temporary file system), we know that the files and directories in /run are not stored on disk but only in volatile memory. They represent data kept in memory (or disk-based swap) that takes on the appearance of a mounted file system to allow it to be more accessible and easier to manage. +它被识别为 “tmpfs”(临时文件系统),因此我们知道 `/run` 中的文件和目录没有存储在磁盘上,而只存储在内存中。它们表示保存在内存(或基于磁盘的交换空间)中的数据,它看起来像是一个已挂载的文件系统,这个可以使其更易于访问和管理。 -**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][2] ]** - -/run is home to a wide assortment of data. For example, if you take a look at /run/user, you will notice a group of directories with numeric names. +`/run` 是各种各样数据的家园。例如,如果你查看 `/run/user`,你会注意到一组带有数字名称的目录。 ``` $ ls /run/user 1000 1002 121 ``` -A long file listing will clarify the significance of these numbers. +使用长文件列表可以发现这些数字的重要性。 ``` $ ls -l @@ -43,9 +43,9 @@ drwx------ 5 dory dory 120 Jun 16 16:14 1002 drwx------ 8 gdm gdm 220 Jun 14 12:18 121 ``` -This allows us to see that each directory is related to a user who is currently logged in or to the display manager, gdm. The numbers represent their UIDs. The content of each of these directories are files that are used by running processes. +我们看到每个目录与当前登录的用户或显示管理器 gdm 相关。数字代表他们的 UID。每个目录的内容都是运行中的进程所使用的文件。 -The /run/user files represent only a very small portion of what you’ll find in /run. There are lots of other files, as well. A handful contain the process IDs for various system processes. +`/run/user` 文件只是你在 `/run` 中找到的一小部分。还有很多其他文件。有一些文件包含了各种系统进程的进程 ID。 ``` $ ls *.pid @@ -53,7 +53,7 @@ acpid.pid atopacctd.pid crond.pid rsyslogd.pid atd.pid atop.pid gdm3.pid sshd.pid ``` -As shown below, that sshd.pid file listed above contains the process ID for the ssh daemon (sshd). +如下所示,上面列出的 `sshd.pid` 文件包含 ssh 守护程序(`sshd`)的进程 ID。 ``` $ cat sshd.pid @@ -67,7 +67,7 @@ dory 18232 18109 0 16:14 ? 00:00:00 sshd: dory@pts/1 shs 19276 10923 0 16:50 pts/0 00:00:00 grep --color=auto sshd ``` -Some of the subdirectories within /run can only be accessed with root authority such as /run/sudo. Running as root, for example, we can see some files related to real or attempted sudo usage: +`/run` 中的某些子目录只能使用 root 权限访问,例如 `/run/sudo`。例如,以 root 身份运行我们可以看到一些与真实或尝试使用 `sudo` 相关的文件: ``` /run/sudo/ts# ls -l @@ -76,7 +76,7 @@ total 8 -rw------- 1 root shs 168 Jun 17 08:33 shs ``` -In keeping with the shift to using /run, some of the old locations for runtime data are now symbolic links. /var/run is now a pointer to /run and /var/lock a pointer to /run/lock, allowing old references to work as expected. +为了与 `/run` 的变化保持一致,一些运行时数据的旧位置现在是符号链接。`/var/run` 现在是指向 `/run` 的指针,`/var/lock` 指向 `/run/lock` 的指针,可以保证旧的引用按预期工作。 ``` $ ls -l /var @@ -98,11 +98,7 @@ drwxrwxrwt 8 root root 4096 Jun 17 00:00 tmp drwxr-xr-x 3 root root 4096 Jan 19 12:14 www ``` -While minor as far as technical changes go, the transition to using /run simply allows for a better organization of runtime data in the Linux file system. - -**[ Now read this:[Invaluable tips and tricks for troubleshooting Linux][3] ]** - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. +虽然技术上的变化很小,但转换到使用 `/run` 只是为了在 Linux 文件系统中更好地组织运行时数据。 -------------------------------------------------------------------------------- @@ -110,7 +106,7 @@ via: https://www.networkworld.com/article/3403023/exploring-run-on-linux.html 作者:[Sandra Henry-Stocker][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 cbd2076322eae64b72eedc040c339e7e5a2e739d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 09:28:06 +0800 Subject: [PATCH 079/336] PRF:20190617 Exploring -run on Linux.md @wxy --- translated/tech/20190617 Exploring -run on Linux.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translated/tech/20190617 Exploring -run on Linux.md b/translated/tech/20190617 Exploring -run on Linux.md index 59704c3b02..162b8c0479 100644 --- a/translated/tech/20190617 Exploring -run on Linux.md +++ b/translated/tech/20190617 Exploring -run on Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Exploring /run on Linux) @@ -12,7 +12,7 @@ > Linux 系统在运行时数据方面的工作方式发生了微小但重大的变化。 -![Sandra Henry-Stocker][1] +![](https://img.linux.net.cn/data/attachment/album/201906/23/092816aqczi984w30j8k12.jpg) 如果你没有密切关注,你可能没有注意到 Linux 系统在运行时数据方面的工作方式有一些小但重大的变化。 它重新组织了文件系统中可访问的方式和位置,而这个变化在大约八年前就开始了。虽然这种变化可能不足以让你的袜子变湿,但它在 Linux 文件系统中提供了更多一致性,值得进行一些探索。 @@ -107,7 +107,7 @@ via: https://www.networkworld.com/article/3403023/exploring-run-on-linux.html 作者:[Sandra Henry-Stocker][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 a8b3ad9a25136518647810b0bd1e8a50ebd44e50 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 09:29:35 +0800 Subject: [PATCH 080/336] PUB:20190617 Exploring -run on Linux.md @wxy https://linux.cn/article-11008-1.html --- translated/tech/20190617 Exploring -run on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translated/tech/20190617 Exploring -run on Linux.md b/translated/tech/20190617 Exploring -run on Linux.md index 162b8c0479..575d5ffd0b 100644 --- a/translated/tech/20190617 Exploring -run on Linux.md +++ b/translated/tech/20190617 Exploring -run on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11008-1.html) [#]: subject: (Exploring /run on Linux) [#]: via: (https://www.networkworld.com/article/3403023/exploring-run-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From 8dcf79bf209b0c2fe7283eb97962f9702f280b97 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 09:47:15 +0800 Subject: [PATCH 081/336] PUB:20190617 Exploring -run on Linux.md @wxy https://linux.cn/article-11008-1.html --- .../tech => published}/20190617 Exploring -run on Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20190617 Exploring -run on Linux.md (100%) diff --git a/translated/tech/20190617 Exploring -run on Linux.md b/published/20190617 Exploring -run on Linux.md similarity index 100% rename from translated/tech/20190617 Exploring -run on Linux.md rename to published/20190617 Exploring -run on Linux.md From bebf3fd734dd1dd8141085139011062a8b578a45 Mon Sep 17 00:00:00 2001 From: yizhuyan Date: Sun, 23 Jun 2019 12:25:43 +0800 Subject: [PATCH 082/336] Create 20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md --- ...nstalled Or Not On Debian-Ubuntu System.md | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md diff --git a/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md b/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md new file mode 100644 index 0000000000..0dbaa6bcbb --- /dev/null +++ b/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md @@ -0,0 +1,137 @@ +[#]: collector: (lujun9972) +[#]: translator: (yizhuoyan) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (如何在Debian/Ubuntu系统中检查程序包是否安装?) +[#]: via: (https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + + +如何在Debian/Ubuntu系统中检查程序包是否安装? +====== + +我们近期发布了一篇关于批量程序包安装的文章。在此同时,关于如何获取系统上已安装了的程序包信息,我也做了些调查然后找到了些方法。我会把这些方法分享在我们的网站上,希望能帮助到其他人。 + +有很多种方法可以检查程序包是否已安装,我找到了7种命令,您可以从中选择您喜欢的使用。 + +如下: + + * **`apt-cache :`** 可用于查询APT缓存或程序包的元数据。 + * **`apt :`** 在基于Debian的系统中是安装,下载,删除,搜索和管理包的强有力的工具。 + * **`dpkg-query :`** 一个查询dpkg数据库的工具。 + * **`dpkg :`** Debian系统的包管理工具 + * **`which :`** 返回在终端中输入命令时执行的可执行文件的全路径 + * **`whereis :`** 可用于搜索指定命令的二进制文件,源码文件和帮助文件。 + * **`locate :`** locate命令比find命令快,因为其使用updatedb数据库搜索,而find命令在实际系统中搜索。 + + + +## 方法一、使用`apt-cache `命令 + +`apt-cache `命令用于从APT的内部数据库中查询**APT缓存**和**包元数据**,将会搜索和显示指定包的信息,包括是否安装,程序包版本,源码仓库信息等。 + +下面的示例清楚的显示`nano`包已经在系统中安装了以及对应安装的版本号。 + +``` +# apt-cache policy nano +nano: + Installed: 2.9.3-2 + Candidate: 2.9.3-2 + Version table: + *** 2.9.3-2 500 + 500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages + 100 /var/lib/dpkg/status +``` + +### 方法二、使用`apt`命令 + + + +`apt`是一个功能强大的命令行工具,可用于安装,下载,删除,搜索,管理程序包以及查询关于程序包的信息,类似对于`libapt-pkg`库的所有功能的底层访问。其包含一些与包管理相关的但很少用到的命令行功能。 + +``` +# apt -qq list nano +nano/bionic,now 2.9.3-2 amd64 [installed] +``` + +### 方法三、使用`dpkg-query`命令 + +`dpkg-query` 是显示`dpkg`数据库中程序包信息列表的一个工具。 + +下面示例中的输出的第一列`ii`,表示查询的程序包已安装了。 + +``` +# dpkg-query --list | grep -i nano +ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico +``` + +### 方法四、使用`dpkg`命令 + +`dpkg`(**d**ebian **p**ac**k**a**g**e)是一个安装,构建,删除和管理Debian包的工具,但和其他包管理系统不同的是,其不能自动下载和安装包或包依赖。 + +下面示例中的输出的第一列`ii`,表示查询的包已安装了。 + +``` +# dpkg -l | grep -i nano +ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico +``` + +### 方法五、使用`which`命令 + + + +`which`命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件创建桌面快捷方式或符号链接时非常有用。 + +`which`命令仅在当前用户`PATH`环境变量配置的目录列表中搜索,而不是在所有用户的目录中搜索。意思是当你登入你自己账号时 ,其不会在`root`用户文件或目录中搜索。 + +如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 + +``` +# which nano +/bin/nano +``` + +### 方法六、使用`whereis`命令 + +`whereis`命令用于针对指定命令搜索对应的程序二进制文件,源码文件以及帮助文件等。 + +如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 + +``` +# whereis nano +nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz +``` + +### 方法七、使用`locate`命令 + +`locate`命令比`find`命令快,因为其在**updatedb**数据库中搜索,而find命令在实际系统中进行搜索。 + +对于获取指定文件,其使用数据库而不是在特定目录路径中搜索。 + +`locate`命令不会预安装在大多数系统中,需要手动安装。 + +`locate`使用的数据库会根据定时任务定期更新。当然,我们也可以手动更新。 + +如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 + +``` +# locate --basename '\nano' +/usr/bin/nano +/usr/share/nano +/usr/share/doc/nano +``` +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/ + +作者:[Magesh Maruthamuthu][a] +选题:[lujun9972][b] +译者:[yizhuoyan][translator] +校对:[校对者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 +[translator]:https://github.com/yizhuoyan From dc37186e1dcaf44769a7b32f196b4e591338e847 Mon Sep 17 00:00:00 2001 From: yizhuyan Date: Sun, 23 Jun 2019 12:28:16 +0800 Subject: [PATCH 083/336] Delete 20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 已翻译完毕 --- ...nstalled Or Not On Debian-Ubuntu System.md | 141 ------------------ 1 file changed, 141 deletions(-) delete mode 100644 sources/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md diff --git a/sources/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md b/sources/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md deleted file mode 100644 index dfc3e62dce..0000000000 --- a/sources/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md +++ /dev/null @@ -1,141 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How To Check Whether The Given Package Is Installed Or Not On Debian/Ubuntu System?) -[#]: via: (https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/) -[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -How To Check Whether The Given Package Is Installed Or Not On Debian/Ubuntu System? -====== - -We have recently published an article about bulk package installation. - -While doing that, i was struggled to get the installed package information and did a small google search and found few methods about it. - -I would like to share it in our website so, that it will be helpful for others too. - -There are numerous ways we can achieve this. - -I have add seven ways to achieve this. However, you can choose the preferred method for you. - -Those methods are listed below. - - * **`apt-cache Command:`** apt-cache command is used to query the APT cache or package metadata. - * **`apt Command:`** APT is a powerful command-line tool for installing, downloading, removing, searching and managing packages on Debian based systems. - * **`dpkg-query Command:`** dpkg-query is a tool to query the dpkg database. - * **`dpkg Command:`** dpkg is a package manager for Debian based systems. - * **`which Command:`** The which command returns the full path of the executable that would have been executed when the command had been entered in terminal. - * **`whereis Command:`** The whereis command used to search the binary, source, and man page files for a given command. - * **`locate Command:`** locate command works faster than the find command because it uses updatedb database, whereas the find command searches in the real system. - - - -### Method-1 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using apt-cache Command? - -apt-cache command is used to query the APT cache or package metadata from APT’s internal database. - -It will search and display an information about the given package. It shows whether the package is installed or not, installed package version, source repository information. - -The below output clearly showing that `nano` package has already installed in the system. Since installed part is showing the installed version of nano package. - -``` -# apt-cache policy nano -nano: - Installed: 2.9.3-2 - Candidate: 2.9.3-2 - Version table: - *** 2.9.3-2 500 - 500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages - 100 /var/lib/dpkg/status -``` - -### Method-2 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using apt Command? - -APT is a powerful command-line tool for installing, downloading, removing, searching and managing as well as querying information about packages as a low-level access to all features of the libapt-pkg library. It’s contains some less used command-line utilities related to package management. - -``` -# apt -qq list nano -nano/bionic,now 2.9.3-2 amd64 [installed] -``` - -### Method-3 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using dpkg-query Command? - -dpkg-query is a tool to show information about packages listed in the dpkg database. - -In the below output first column showing `ii`. It means, the given package has already installed in the system. - -``` -# dpkg-query --list | grep -i nano -ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico -``` - -### Method-4 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using dpkg Command? - -DPKG stands for Debian Package is a tool to install, build, remove and manage Debian packages, but unlike other package management systems, it cannot automatically download and install packages or their dependencies. - -In the below output first column showing `ii`. It means, the given package has already installed in the system. - -``` -# dpkg -l | grep -i nano -ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico -``` - -### Method-5 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using which Command? - -The which command returns the full path of the executable that would have been executed when the command had been entered in terminal. - -It’s very useful when you want to create a desktop shortcut or symbolic link for executable files. - -Which command searches the directories listed in the current user’s PATH environment variable not for all the users. I mean, when you are logged in your own account and you can’t able to search for root user file or directory. - -If the following output shows the given package binary or executable file location then the given package has already installed in the system. If not, the package is not installed in system. - -``` -# which nano -/bin/nano -``` - -### Method-6 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using whereis Command? - -The whereis command used to search the binary, source, and man page files for a given command. - -If the following output shows the given package binary or executable file location then the given package has already installed in the system. If not, the package is not installed in system. - -``` -# whereis nano -nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz -``` - -### Method-7 : How To Check Whether The Given Package Is Installed Or Not On Ubuntu System Using locate Command? - -locate command works faster than the find command because it uses updatedb database, whereas the find command searches in the real system. - -It uses a database rather than hunting individual directory paths to get a given file. - -locate command doesn’t pre-installed in most of the distributions so, use your distribution package manager to install it. - -The database is updated regularly through cron. Even, we can update it manually. - -If the following output shows the given package binary or executable file location then the given package has already installed in the system. If not, the package is not installed in system. - -``` -# locate --basename '\nano' -/usr/bin/nano -/usr/share/nano -/usr/share/doc/nano -``` --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/ - -作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ -[b]: https://github.com/lujun9972 From 00a9339103716f39934d59e231bdbdca28e70a78 Mon Sep 17 00:00:00 2001 From: Lingxu Meng Date: Sun, 23 Jun 2019 16:44:41 +1000 Subject: [PATCH 084/336] Finish translating --- ... send email from the Linux command line.md | 171 ------------------ ... send email from the Linux command line.md | 168 +++++++++++++++++ 2 files changed, 168 insertions(+), 171 deletions(-) delete mode 100644 sources/tech/20190614 How to send email from the Linux command line.md create mode 100644 translated/tech/20190614 How to send email from the Linux command line.md diff --git a/sources/tech/20190614 How to send email from the Linux command line.md b/sources/tech/20190614 How to send email from the Linux command line.md deleted file mode 100644 index 7bdb9448f8..0000000000 --- a/sources/tech/20190614 How to send email from the Linux command line.md +++ /dev/null @@ -1,171 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Modrisco) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to send email from the Linux command line) -[#]: via: (https://www.networkworld.com/article/3402027/how-to-send-email-from-the-linux-command-line.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -How to send email from the Linux command line -====== -Linux offers several commands that allow you to send email from the command line. Here's look at some that offer interesting options. -![Molnia/iStock][1] - -There are several ways to send email from the Linux command line. Some are very simple and others more complicated, but offer some very useful features. The choice depends on what you want to do -– whether you want to get a quick message off to a co-worker or send a more complicated message with an attachment to a large group of people. Here's a look at some of the options: - -### mail - -The easiest way to send a simple message from the Linux command line is to use the **mail** command. Maybe you need to remind your boss that you're leaving a little early that day. You could use a command like this one: - -``` -$ echo "Reminder: Leaving at 4 PM today" | mail -s "early departure" myboss -``` - -**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][2] ]** - -Another option is to grab your message text from a file that contains the content you want to send: - -``` -$ mail -s "Reminder:Leaving early" myboss < reason4leaving -``` - -In both cases, the -s options allows you to provide a subject line for your message. - -### sendmail - -Using **sendmail** , you can send a quick message (with no subject) using a command like this (replacing "recip" with your intended recipient: - -``` -$ echo "leaving now" | sendmail recip -``` - -You can send just a subject line (with no message content) with a command like this: - -``` -$ echo "Subject: leaving now" | sendmail recip -``` - -You can also use sendmail on the command line to send a message complete with a subject line. However, when using this approach, you would add your subject line to the file you intend to send as in this example file: - -``` -Subject: Requested lyrics -I would just like to say that, in my opinion, longer hair and other flamboyant -affectations of appearance are nothing more ... -``` - -Then you would send the file like this (where the lyrics file contains your subject line and text): - -``` -$ sendmail recip < lyrics -``` - -Sendmail can be quite verbose in its output. If you're desperately curious and want to see the interchange between the sending and receiving systems, add the -v (verbose) option: - -``` -$ sendmail -v recip@emailsite.com < lyrics -``` - -### mutt - -An especially nice tool for command line emailing is the **mutt** command, though you will likely have to install it first. Mutt has a convenient advantage in that it can allow you to include attachments. - -To use mutt to send a quick messsage: - -``` -$ echo "Please check last night's backups" | mutt -s "backup check" recip -``` - -To get content from a file: - -``` -$ mutt -s "Agenda" recip < agenda -``` - -To add an attachment with mutt, use the -a option. You can even add more than one – as shown in this command: - -``` -$ mutt -s "Agenda" recip -a agenda -a speakers < msg -``` - -In the command above, the "msg" file includes content for the email. If you don't have any additional content to provide, you can do this instead: - -``` -$ echo "" | mutt -s "Agenda" recip -a agenda -a speakers -``` - -The other useful option that you have with mutt is that it provides a way to send carbon copies (using the -c option) and blind carbon copies (using the -b option). - -``` -$ mutt -s "Minutes from last meeting" recip@somesite.com -c myboss < mins -``` - -### telnet - -If you want to get deep into the details of sending email, you can use **telnet** to carry on the email exchange operation, but you'll need to, as they say, "learn the lingo." Mail servers expect a sequence of commands that include things like introducing yourself ( **EHLO** command), providing the email sender ( **MAIL FROM** command), specifying the email recipient ( **RCPT TO** command), and then adding the message ( **DATA** ) and ending the message with a "." as the only character on the line. Not every email server will respond to these requests. This approach is generally used only for troubleshooting. - -``` -$ telnet emailsite.org 25 -Trying 192.168.0.12... -Connected to emailsite. -Escape character is '^]'. -220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-12; Wed, 12 Jun 2019 16:32:13 -0400; (No UCE/UBE) logging access from: mysite(OK)-mysite [192.168.0.12] -EHLO mysite.org <== introduce yourself -250-localhost Hello mysite [127.0.0.1], pleased to meet you -250-ENHANCEDSTATUSCODES -250-PIPELINING -250-EXPN -250-VERB -250-8BITMIME -250-SIZE -250-DSN -250-ETRN -250-AUTH DIGEST-MD5 CRAM-MD5 -250-DELIVERBY -250 HELP -MAIL FROM: me@mysite.org <== specify sender -250 2.1.0 shs@mysite.org... Sender ok -RCPT TO: recip <== specify recipient -250 2.1.5 recip... Recipient ok -DATA <== start message -354 Enter mail, end with "." on a line by itself -This is a test message. Please deliver it for me. -. <== end message -250 2.0.0 x5CKWDds029287 Message accepted for delivery -quit <== end exchange -``` - -### Sending email to multiple recipients - -If you want to send email from the Linux command line to a large group of recipients, you can always use a loop to make the job easier as in this example using mutt. - -``` -$ for recip in `cat recips` -do - mutt -s "Minutes from May meeting" $recip < May_minutes -done -``` - -### Wrap-up - -There are quite a few ways to send email from the Linux command line. Some tools provide quite a few options. - -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/3402027/how-to-send-email-from-the-linux-command-line.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/Modrisco) -校对:[校对者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://images.idgesg.net/images/article/2017/08/email_image_blue-100732096-large.jpg -[2]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua -[3]: https://www.facebook.com/NetworkWorld/ -[4]: https://www.linkedin.com/company/network-world diff --git a/translated/tech/20190614 How to send email from the Linux command line.md b/translated/tech/20190614 How to send email from the Linux command line.md new file mode 100644 index 0000000000..ddeef7571f --- /dev/null +++ b/translated/tech/20190614 How to send email from the Linux command line.md @@ -0,0 +1,168 @@ +[#]: collector: (lujun9972) +[#]: translator: (Modrisco) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to send email from the Linux command line) +[#]: via: (https://www.networkworld.com/article/3402027/how-to-send-email-from-the-linux-command-line.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +如何用 Linux 命令行发电子邮件 +====== +Linux 提供了几种命令允许您通过终端发送电子邮件,下面来展示一些有趣的方法。 + +![Molnia/iStock][1] + +Linux 可以用多种方式通过命令行发送电子邮件。有一些方法十分简单,有一些相对会复杂一些,不过仍旧提供了很多有用的特性。选择哪一种方式取决于你想要什么 —— 向同事快速发送消息,还是向一批人群发带有附件的更复杂的信息。接下来看一看几种可行方案: + +### mail + +发送一条简单消息最便捷的 Linux 命令是 `mail`。假设你需要提醒老板你今天得早点走,你可以使用这样的一条命令: + +``` +$ echo "Reminder: Leaving at 4 PM today" | mail -s "early departure" myboss +``` + +另一种方式是从一个文件中提取出你想要发送的文本信息: + +``` +$ mail -s "Reminder:Leaving early" myboss < reason4leaving +``` + +在以上两种情况中,你都可以通过 -s 来为邮件添加标题。 + +### sendmail + +使用 `sendmail` 命令可以发送一封不包含标题的快信。(用目标收件人替换 `recip`): + +``` +$ echo "leaving now" | sendmail recip +``` + +你可以用这条命令发送一条只有标题,没有内容的信息: + +``` +$ echo "Subject: leaving now" | sendmail recip +``` + +你也可以用 `sendmail` 发送一条包含一条标题行的完整信息。不过使用这个方法时,你的标题行会被添加到要发送的文件中,如下例所示: + +``` +Subject: Requested lyrics +I would just like to say that, in my opinion, longer hair and other flamboyant +affectations of appearance are nothing more ... +``` + +你也可以发送这样的文件(lyric 文件包含标题和正文): + +``` +$ sendmail recip < lyrics +``` + +`sendmain` 的输出可能会很冗长。如果你感到好奇并希望查看发送系统和接收系统之间的交互,请添加 `-v` (verbose)选项。 + +``` +$ sendmail -v recip@emailsite.com < lyrics +``` + +### mutt + +`mutt` 是通过命令行发送邮件的一个很好的工具,在使用前你需要安装它。 `mutt` 的一个很方便的优势就是它允许你在邮件中添加附件。 + +使用 `mutt` 发送一条快速信息: + +``` +$ echo "Please check last night's backups" | mutt -s "backup check" recip +``` + +从文件中获取内容: + +``` +$ mutt -s "Agenda" recip < agenda +``` + +使用 `-a` 选项在 `mutt` 中添加附件。你甚至可以添加不止一个附件 —— 如下一条命令所示: + +``` +$ mutt -s "Agenda" recip -a agenda -a speakers < msg +``` + +在以上的命令中,`msg` 文件包含了邮件中的正文。如果你没有其他补充的内容,你可以这样来代替之前的命令: + +``` +$ echo "" | mutt -s "Agenda" recip -a agenda -a speakers +``` + +`mutt` 另一个有用的功能是可以添加抄送(`-c`)和密送(`-b`)。 + +``` +$ mutt -s "Minutes from last meeting" recip@somesite.com -c myboss < mins +``` + +### telnet + +如果你想深入了解发送电子邮件的细节,你可以使用 `telnet` 来进行电子邮件交互操作。但正如所说的那样,你需要“学习术语”。邮件服务器期望一系列命令,其中包括自我介绍(`EHLO` 命令)、提供发件人(`MAIL FROM` 命令)、指定收件人(`RCPT TO` 命令),然后添加消息(`DATA`)并以 `.` 结束消息。并不是所有的电子邮件服务器都会响应这些请求。此方法通常仅用于故障排除。 + +``` +$ telnet emailsite.org 25 +Trying 192.168.0.12... +Connected to emailsite. +Escape character is '^]'. +220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-12; Wed, 12 Jun 2019 16:32:13 -0400; (No UCE/UBE) logging access from: mysite(OK)-mysite [192.168.0.12] +EHLO mysite.org <== introduce yourself +250-localhost Hello mysite [127.0.0.1], pleased to meet you +250-ENHANCEDSTATUSCODES +250-PIPELINING +250-EXPN +250-VERB +250-8BITMIME +250-SIZE +250-DSN +250-ETRN +250-AUTH DIGEST-MD5 CRAM-MD5 +250-DELIVERBY +250 HELP +MAIL FROM: me@mysite.org <== specify sender +250 2.1.0 shs@mysite.org... Sender ok +RCPT TO: recip <== specify recipient +250 2.1.5 recip... Recipient ok +DATA <== start message +354 Enter mail, end with "." on a line by itself +This is a test message. Please deliver it for me. +. <== end message +250 2.0.0 x5CKWDds029287 Message accepted for delivery +quit <== end exchange +``` + +### 向多个收件人发送电子邮件 + +如果你希望通过 Linux 命令行向一大组收件人发送电子邮件,你可以使用一个循环来帮助你完成任务,如下面应用在 `mutt` 中的例子: + +``` +$ for recip in `cat recips` +do + mutt -s "Minutes from May meeting" $recip < May_minutes +done +``` + +### 总结 + +有很多方法可以从 Linux 命令行发送电子邮件。有些工具提供了相当多的选项。 + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3402027/how-to-send-email-from-the-linux-command-line.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[Modrisco](https://github.com/Modrisco) +校对:[校对者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://images.idgesg.net/images/article/2017/08/email_image_blue-100732096-large.jpg +[2]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua +[3]: https://www.facebook.com/NetworkWorld/ +[4]: https://www.linkedin.com/company/network-world From c261e3e99182f7c50676ab8b11f580620adb1dd7 Mon Sep 17 00:00:00 2001 From: LazyWolf Lin Date: Sun, 23 Jun 2019 14:59:41 +0800 Subject: [PATCH 085/336] Translating Looking into Linux modules. --- translated/tech/20190501 Looking into Linux modules.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translated/tech/20190501 Looking into Linux modules.md b/translated/tech/20190501 Looking into Linux modules.md index e059000287..b4e7a118d5 100644 --- a/translated/tech/20190501 Looking into Linux modules.md +++ b/translated/tech/20190501 Looking into Linux modules.md @@ -9,16 +9,16 @@ 深入学习 Linux 内核模块 ====== -The lsmod command can tell you which kernel modules are currently loaded on your system, along with some interesting details about their use. +lsmod 命令能够告诉你当前系统上加载了哪些内核模块,以及关于使用它们的一些有趣的细节。 ![Rob Oo \(CC BY 2.0\)][1] ### 什么是 Linux 内核模块? -Kernel modules are chunks of code that are loaded and unloaded into the kernel as needed, thus extending the functionality of the kernel without requiring a reboot. In fact, unless users inquire about modules using commands like **lsmod** , they won't likely know that anything has changed. +内核模块是根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似 **lsmod** 这样的命令来查询模块,否则用户不太可能知道内核发生的任何变化。 -One important thing to understand is that there are _lots_ of modules that will be in use on your Linux system at all times and that a lot of details are available if you're tempted to dive into the details. +需要理解的重要一点是,在你的 Linux 系统上总会有_很多_模块可用,并且如果你想深入了解细节,那么有很多细节可以获得。 -One of the prime ways that lsmod is used is to examine modules when a system isn't working properly. However, most of the time, modules load as needed and users don't need to be aware of how they are working. +lsmod 的主要用途之一是在系统不能正常工作时检查模块。然而,大多数情况下,模块是根据需要加载的,而且用户不需要知道它们如何工作。 **[ Also see:[Must-know Linux Commands][2] ]** From f04c723abe56d1b29ba84a9e28c0a3a75f169593 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 23 Jun 2019 20:33:07 +0800 Subject: [PATCH 086/336] Rename sources/talk/20190423 Edge computing is in most industries- future.md to translated/talk/20190423 Edge computing is in most industries- future.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ninifly 这次我帮你挪啦 --- .../talk/20190423 Edge computing is in most industries- future.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/talk/20190423 Edge computing is in most industries- future.md (100%) diff --git a/sources/talk/20190423 Edge computing is in most industries- future.md b/translated/talk/20190423 Edge computing is in most industries- future.md similarity index 100% rename from sources/talk/20190423 Edge computing is in most industries- future.md rename to translated/talk/20190423 Edge computing is in most industries- future.md From 305ea6d0bdf0aded499b45fa585c58eb8ed4bd6e Mon Sep 17 00:00:00 2001 From: Liwen Jiang Date: Sun, 23 Jun 2019 06:23:37 -0700 Subject: [PATCH 087/336] Apply for Translating Apply for Translating --- .../20190531 Learn Python with these awesome resources.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20190531 Learn Python with these awesome resources.md b/sources/tech/20190531 Learn Python with these awesome resources.md index 8bcd1d2bbf..3b8704cb49 100644 --- a/sources/tech/20190531 Learn Python with these awesome resources.md +++ b/sources/tech/20190531 Learn Python with these awesome resources.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (tomjlw) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) @@ -45,7 +45,7 @@ via: https://opensource.com/article/19/5/resources-learning-python 作者:[Don Watkins][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[tomjlw](https://github.com/tomjlw) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 19d87708ad3edb74002101380fe35ffb81bba812 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Sun, 23 Jun 2019 22:45:46 +0800 Subject: [PATCH 088/336] Update 20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md Apply to be translating owner --- ...pen Source Slack Alternative Mattermost Gets -50M Funding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md index 993e30d5ec..5d0d25f9d7 100644 --- a/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md +++ b/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wahailin) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From bfe39bf0bdd5d1a688d9c3b4c7adca3f0329a1fb Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 23:13:31 +0800 Subject: [PATCH 089/336] PRF:20190423 Edge computing is in most industries- future.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ninifly 恭喜你完成了第一篇翻译!可以参照我的校对细节了解格式等要求。 --- ...computing is in most industries- future.md | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/translated/talk/20190423 Edge computing is in most industries- future.md b/translated/talk/20190423 Edge computing is in most industries- future.md index f94e35ef05..f2245bb0b2 100644 --- a/translated/talk/20190423 Edge computing is in most industries- future.md +++ b/translated/talk/20190423 Edge computing is in most industries- future.md @@ -1,56 +1,51 @@ [#]: collector: (lujun9972) -[#]: translator: (ninifly ) -[#]: reviewer: ( ) +[#]: translator: (ninifly) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Edge computing is in most industries’ future) -[#]: via: (https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html#tk.rss_all) +[#]: via: (https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html) [#]: author: (Anne Taylor https://www.networkworld.com/author/Anne-Taylor/) 边缘计算是大多数行业的未来 ====== -几乎每个行业都能够在加速数字化转型的进程中利用边缘计算的优势。 -![iStock][1] -边缘计算的发展将取得一次巨大的飞跃。现在,公司在传统数据中心或云之外生成了10%的数据。但在未来六年内,这一比例将升至75%。 -[according to Gartner][2]. +> 几乎每个行业都可以利用边缘计算来加速数字化转型。 -这很大程度上取决于处理来自设备数据的需要,比如物联网数据传感器。 -早起采用这一方法的人包括: +![](https://img.linux.net.cn/data/attachment/album/201906/23/231224cdl3kwedn0hw2lie.jpg) - * **制造商:** 设备与传感器在这个行业似乎是特有的,因此需要为生产数据找到更快速的方法也就不足为奇。最近 [_Automation World_][3]研究发现43%的制造商已经部署了边缘计算。最流行的事例包括了生产数据分析与设备数据分析。 +边缘计算的发展将取得一次巨大的飞跃。[据 Gartner 数据][2],现在公司有 10% 的数据是在传统数据中心或云之外生成的。但在未来六年内,这一比例将升至 75%。 - * **零售商** : 与大多数深受数字化运营需求影响的产业一样,零售商被迫革新其客户体验。为了达到那一目的,这些组织“正在积极投资靠近买家的计算能力”[writes Dave Johns on][4], 施耐德电气公司IT部门执行副总裁说。他列举了一些例子,例如在试衣间的增强现实镜,给提供了不同的服装选择,而不用顾客试用这些服装。又如用于显示店内交通的基于信标的热图。 +这很大程度上取决于处理来自设备数据的需要,比如物联网(IoT)数据传感器。早期采用这一方法的包括: +* **制造商**:设备与传感器似乎是这个行业特有的,因此需要为产生的数据找到更快速的方法也就不足为奇。一份 [Automation World][3] 最近的研究发现 43% 的制造商已经部署了边缘计算项目。最常用用途包括生产/制造数据分析与设备数据分析。 +* **零售商**:与大多数深受数字化运营需求影响的产业一样,零售商也不得不革新了其客户体验。为此,这些组织“正在积极投资贴近于买家的计算能力”,施耐德电气公司 IT 部门执行副总裁 [Dave Johnson][4] 如是说。他列举了一些例子,例如在试衣间的增强现实(AR)镜子,提供了不同的服装选择,而不用顾客试用这些服装。又如用于显示店内导航的基于信标的热图。 +* **医疗保健机构**:随着医疗保健成本的不断上升,这一行业已经具备了提高生产能力与成本效率方面的创新能力。管理咨询公司[麦肯锡已经确定][5],至少有 11 个有益于患者、医疗机构或两者的医疗保健用例。举两个例子:提高护理效率并有助于优化设备的跟踪移动医疗设备;跟踪用户锻炼并提供健康建议的可穿戴设备。 +虽然以上这些是明显的用例,随着边缘计算市场的扩大,采用它的行业也会增加。 - * **医疗保健机构** : 随着医疗成本的不断上升,这一行业已经在具备在提高生产能力与成本效率方面的创新能力。管理咨询公司已经确定,[McKinsey & Co. has identified][5] 至少有11个有益于患者、医疗机构或者两者都有的医疗保健用例。举两个例子:跟踪移动医疗设备提高护理效率,同时也有助于优化设备;可穿戴设备跟踪用户锻炼并提供健康的建议。 +### 数字化转型的优势 +随着边缘计算的快速处理能力完全符合数字化转型的目标:提高效率、生产能力和加速产品上市和客户体验。以下是一些有潜力的应用及将被边缘计算改变的行业: +**农业**:农民和组织已经使用无人机将农田和气候环境传给灌溉设备。其他的应用可能包括了对工人、牲畜和设备的监测与位置跟踪,从而改善生产能力、效率和成本。 -虽然以上这些是明显的用例,随着边缘计算市场的扩大,使用它的行业也会增加。 +**能源**:在这一领域有许多的潜在的应用,可以使消费者与供应商都受益。例如,智能电表有助于业主更好地管理能源使用,同时减少电网运营商对手动抄表的需求。同样的,水管上的传感器能够监测到漏水,同时提供实时漏水数据。 -**数字化转型的优势** +**金融服务**:银行正在采取交互式 ATM 机,这种交互式 ATM 机能够快速地处理数据以提供更好的用户体验。在管理层次,可以更快速地分析交易数据中的欺诈行为。 -随着边缘计算的快速处理能力完全符合数字化转型的提高效率、生产能力和市场发展速度和客户体验。以下是一些有潜力的应用及将被边缘计算改变的行业: +**物流**:由于消费者需要更快速地交付商品和服务,物流公司将需要转换其地图和寻路功能以获取实时数据,尤其在最后一公里计划和跟踪方面。这可能涉及到基于街道、包裹及汽车的传感器数据传输处理过程。 -**农业** :农名和组织已经使用无人机将农田和气候环境传给灌溉设备。其他的应用可能包括了工人、牲畜和设备的监测与位置跟踪从而改善生产能力、效率和成本。 -**能源** : 在这一领域有许多的潜在的应用,可以使消费者与供应商都受益。例如,智能电表有助于业主更好地管理能源使用,同时减少电网运营商对手动抄表的需求。 同样的,水管上的传感器能够监测到泄露,同时提供实时漏水数据。 - -**金融服务** : 银行正在采取交互式ATM机,这种交互式ATM机能够快速地处理数据以提供更好的用户体验。在管理层次,可以更快速地分析交易数据中的欺诈行为。 - -**物流** : 由于消费者需要更快速地提供商品和服务,物流公司将需要转换映射和路由功能以获取实时数据,尤其在最后一公里计划和轨迹方面。这可能涉及到街道、数据包及汽车基于传感器的数据传输过程。 - -得益于边缘计算,所有行业都有转型的潜力。但是,这将取决于他们如何处理计算机基础设施。在APC.com发现如何克服任何IT阻碍。 +得益于边缘计算,所有行业都有转型的潜力。但是,这将取决于他们如何处理计算基础设施。可以在 [APC.com][6] 找到如何克服任何 IT 阻碍的解决方案。 -------------------------------------------------------------------------------- -via: https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html#tk.rss_all +via: https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html 作者:[Anne Taylor][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[ninifly](https://github.com/ninifly) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 242b5cffccdc57f3ba584236007b0c94d761f2e0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 23:15:38 +0800 Subject: [PATCH 090/336] PUB:20190423 Edge computing is in most industries- future.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ninifly 本文首发地址: https://linux.cn/article-11009-1.html 你的 LCTT 专页地址: https://linux.cn/lctt/ninifly 请注册领取 LCCN: https://lctt.linux.cn/ --- .../20190423 Edge computing is in most industries- future.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/talk => published}/20190423 Edge computing is in most industries- future.md (98%) diff --git a/translated/talk/20190423 Edge computing is in most industries- future.md b/published/20190423 Edge computing is in most industries- future.md similarity index 98% rename from translated/talk/20190423 Edge computing is in most industries- future.md rename to published/20190423 Edge computing is in most industries- future.md index f2245bb0b2..c27a689af9 100644 --- a/translated/talk/20190423 Edge computing is in most industries- future.md +++ b/published/20190423 Edge computing is in most industries- future.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (ninifly) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11009-1.html) [#]: subject: (Edge computing is in most industries’ future) [#]: via: (https://www.networkworld.com/article/3391016/edge-computing-is-in-most-industries-future.html) [#]: author: (Anne Taylor https://www.networkworld.com/author/Anne-Taylor/) From 3294ae543d23890bc8c78b2f986b302085f8fc51 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 23:56:12 +0800 Subject: [PATCH 091/336] PRF:20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md @yizhuoyan --- ...nstalled Or Not On Debian-Ubuntu System.md | 78 +++++++++---------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md b/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md index 0dbaa6bcbb..b71a8b2907 100644 --- a/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md +++ b/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md @@ -1,37 +1,37 @@ [#]: collector: (lujun9972) [#]: translator: (yizhuoyan) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) -[#]: subject: (如何在Debian/Ubuntu系统中检查程序包是否安装?) +[#]: subject: (How To Check Whether The Given Package Is Installed Or Not On Debian/Ubuntu System?) [#]: via: (https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -如何在Debian/Ubuntu系统中检查程序包是否安装? +如何在 Debian/Ubuntu 系统中检查程序包是否安装? ====== +![](https://img.linux.net.cn/data/attachment/album/201906/23/235541yl41p73z5jv78y8p.jpg) + 我们近期发布了一篇关于批量程序包安装的文章。在此同时,关于如何获取系统上已安装了的程序包信息,我也做了些调查然后找到了些方法。我会把这些方法分享在我们的网站上,希望能帮助到其他人。 -有很多种方法可以检查程序包是否已安装,我找到了7种命令,您可以从中选择您喜欢的使用。 +有很多种方法可以检查程序包是否已安装,我找到了 7 种命令,你可以从中选择你喜欢的使用。 -如下: +如下: - * **`apt-cache :`** 可用于查询APT缓存或程序包的元数据。 - * **`apt :`** 在基于Debian的系统中是安装,下载,删除,搜索和管理包的强有力的工具。 - * **`dpkg-query :`** 一个查询dpkg数据库的工具。 - * **`dpkg :`** Debian系统的包管理工具 - * **`which :`** 返回在终端中输入命令时执行的可执行文件的全路径 - * **`whereis :`** 可用于搜索指定命令的二进制文件,源码文件和帮助文件。 - * **`locate :`** locate命令比find命令快,因为其使用updatedb数据库搜索,而find命令在实际系统中搜索。 + * `apt-cache`:可用于查询 APT 缓存或程序包的元数据。 + * `apt`:是基于 Debian 的系统中的安装、下载、删除、搜索和管理包的强有力的工具。 + * `dpkg-query`:一个查询 dpkg 数据库的工具。 + * `dpkg`:基于 Debian 的系统的包管理工具。 + * `which`:返回在终端中输入命令时执行的可执行文件的全路径。 + * `whereis`:可用于搜索指定命令的二进制文件、源码文件和帮助文件。 + * `locate`:比 `find` 命令快,因为其使用 `updatedb` 数据库搜索,而 `find`命令在实际系统中搜索。 +### 方法一、使用 apt-cache 命令 +`apt-cache` 命令用于从 APT 内部数据库中查询**APT 缓存**和**包的元数据**,将会搜索和显示指定包的信息,包括是否安装、程序包版本、源码仓库信息等。 -## 方法一、使用`apt-cache `命令 - -`apt-cache `命令用于从APT的内部数据库中查询**APT缓存**和**包元数据**,将会搜索和显示指定包的信息,包括是否安装,程序包版本,源码仓库信息等。 - -下面的示例清楚的显示`nano`包已经在系统中安装了以及对应安装的版本号。 +下面的示例清楚的显示 `nano` 包已经在系统中安装了以及对应安装的版本号。 ``` # apt-cache policy nano @@ -44,46 +44,42 @@ nano: 100 /var/lib/dpkg/status ``` -### 方法二、使用`apt`命令 +### 方法二、使用 apt 命令 - - -`apt`是一个功能强大的命令行工具,可用于安装,下载,删除,搜索,管理程序包以及查询关于程序包的信息,类似对于`libapt-pkg`库的所有功能的底层访问。其包含一些与包管理相关的但很少用到的命令行功能。 +`apt` 是一个功能强大的命令行工具,可用于安装、下载、删除、搜索、管理程序包以及查询关于程序包的信息,类似对于 `libapt-pkg` 库的所有功能的底层访问。其包含一些与包管理相关的但很少用到的命令行功能。 ``` # apt -qq list nano nano/bionic,now 2.9.3-2 amd64 [installed] ``` -### 方法三、使用`dpkg-query`命令 +### 方法三、使用 dpkg-query 命令 -`dpkg-query` 是显示`dpkg`数据库中程序包信息列表的一个工具。 +`dpkg-query` 是显示 `dpkg` 数据库中程序包信息列表的一个工具。 -下面示例中的输出的第一列`ii`,表示查询的程序包已安装了。 +下面示例中的输出的第一列 `ii`,表示查询的程序包已安装了。 ``` # dpkg-query --list | grep -i nano ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico ``` -### 方法四、使用`dpkg`命令 +### 方法四、使用 dpkg 命令 -`dpkg`(**d**ebian **p**ac**k**a**g**e)是一个安装,构建,删除和管理Debian包的工具,但和其他包管理系统不同的是,其不能自动下载和安装包或包依赖。 +`dpkg`(**d**ebian **p**ac**k**a**g**e)是一个安装、构建、删除和管理 Debian 包的工具,但和其他包管理系统不同的是,其不能自动下载和安装包或包依赖。 -下面示例中的输出的第一列`ii`,表示查询的包已安装了。 +下面示例中的输出的第一列 `ii`,表示查询的包已安装了。 ``` # dpkg -l | grep -i nano ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico ``` -### 方法五、使用`which`命令 +### 方法五、使用 which 命令 +`which` 命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件创建桌面快捷方式或符号链接时非常有用。 - -`which`命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件创建桌面快捷方式或符号链接时非常有用。 - -`which`命令仅在当前用户`PATH`环境变量配置的目录列表中搜索,而不是在所有用户的目录中搜索。意思是当你登入你自己账号时 ,其不会在`root`用户文件或目录中搜索。 +`which` 命令仅在当前用户 `PATH` 环境变量配置的目录列表中搜索,而不是在所有用户的目录中搜索。这意思是当你登入你自己账号时,其不会在 `root` 用户文件或目录中搜索。 如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 @@ -92,9 +88,9 @@ ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico /bin/nano ``` -### 方法六、使用`whereis`命令 +### 方法六、使用 whereis 命令 -`whereis`命令用于针对指定命令搜索对应的程序二进制文件,源码文件以及帮助文件等。 +`whereis` 命令用于针对指定命令搜索对应的程序二进制文件、源码文件以及帮助文件等。 如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 @@ -103,15 +99,15 @@ ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz ``` -### 方法七、使用`locate`命令 +### 方法七、使用 locate 命令 -`locate`命令比`find`命令快,因为其在**updatedb**数据库中搜索,而find命令在实际系统中进行搜索。 +`locate` 命令比 `find` 命令快,因为其在 `updatedb` 数据库中搜索,而 `find` 命令在实际系统中进行搜索。 对于获取指定文件,其使用数据库而不是在特定目录路径中搜索。 -`locate`命令不会预安装在大多数系统中,需要手动安装。 +`locate` 命令不会预安装在大多数系统中,需要手动安装。 -`locate`使用的数据库会根据定时任务定期更新。当然,我们也可以手动更新。 +`locate` 使用的数据库会根据定时任务定期更新。当然,我们也可以手动更新。 如果对于指定的程序包或可执行文件路径有如下输出,则表示已安装了,否则没有。 @@ -121,17 +117,17 @@ nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/na /usr/share/nano /usr/share/doc/nano ``` + -------------------------------------------------------------------------------- via: https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/ 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] -译者:[yizhuoyan][translator] -校对:[校对者ID](https://github.com/校对者ID) +译者:[yizhuoyan](https://github.com/yizhuoyan) +校对:[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 -[translator]:https://github.com/yizhuoyan From 50cee921dd0cb19e44f500c0b70aca71fb226897 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 23 Jun 2019 23:57:15 +0800 Subject: [PATCH 092/336] PUB:20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md @yizhuoyan https://linux.cn/article-11010-1.html --- ...ven Package Is Installed Or Not On Debian-Ubuntu System.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md (98%) diff --git a/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md b/published/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md similarity index 98% rename from translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md rename to published/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md index b71a8b2907..a0f55d4b7b 100644 --- a/translated/tech/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md +++ b/published/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (yizhuoyan) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11010-1.html) [#]: subject: (How To Check Whether The Given Package Is Installed Or Not On Debian/Ubuntu System?) [#]: via: (https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From 72fa15a6e9e2283e41a4c2f99f6f49f098ef4661 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 00:50:48 +0800 Subject: [PATCH 093/336] APL:20190604 Kubernetes is a dump truck- Here-s why --- sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md index 40aef2d614..84a6809004 100644 --- a/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md +++ b/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From c66099076788f7bb51aed46f810fc674241d5f91 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Mon, 24 Jun 2019 01:06:29 +0800 Subject: [PATCH 094/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=91=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lternative Mattermost Gets -50M Funding.md | 95 ------------------- ...lternative Mattermost Gets -50M Funding.md | 92 ++++++++++++++++++ 2 files changed, 92 insertions(+), 95 deletions(-) delete mode 100644 sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md create mode 100644 translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md diff --git a/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md deleted file mode 100644 index 5d0d25f9d7..0000000000 --- a/sources/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wahailin) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open Source Slack Alternative Mattermost Gets $50M Funding) -[#]: via: (https://itsfoss.com/mattermost-funding/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Open Source Slack Alternative Mattermost Gets $50M Funding -====== - -[Mattermost][1], which presents itself as an open source alternative to [Slack][2] raised $50M in series B funding. This is definitely something to get excited for. - -[Slack][3] is a cloud-based team collaboration software that is mainly used for internal team communication. Enterprises, startups and even open source projects worldwide use it interact with colleagues and project members. Slack is free with limited features while the paid enterprise version has premium features. - -[Slack is valued at $20 billion][4] in June, 2019. You can guess the kind of impact it has made in the tech industry and certainly more products are trying to compete with Slack. - -### $50 million for an open source project - -![][5] - -Personally, I was not aware of Mattermost. But, when [VentureBeat][6] reported the story, it made me curious. The funding was led by [Y Combinator’s][7] Continuity with a new investor Battery Ventures and was joined by the existing investors – Redpoint and S28 Captial. - -With the [announcement][8], they also mentioned: - -> With today’s announcement, Mattermost becomes YC’s largest ever Series B investment, and more importantly, their largest open source investment to date. - -To give you some specifics, here’s what VentureBeat mentioned: - -> The capital infusion follows a $20 million series A in February and a $3.5 million seed round in February 2017 and brings the Palo Alto, California-based company’s total raised to roughly $70 million. - -If you are curious about their plans, you should go through their [official announcement post][8]. - -Even though it all sounds good, what is Mattermost? Maybe you didn’t know about it, until now. So, let us take a brief look at it: - -### A quick look at Mattermost - -![Mattermost][9] - -As mentioned, it is an open source Slack alternative. - -At first glance, it almost resembles the look and feel of Slack. Well, that’s the point here – you will have an open source solution that you’re comfortable using. - -It even integrates with some of the popular DevOps tools like Git, Bots, and CI/CD. In addition to the functionality, it focuses on security and privacy as well. - -[][10] - -Suggested read  Zettlr - Markdown Editor for Writers and Researchers - -Also, similar to Slack, it supports integration with multiple apps and services. - -Sounds promising? I think so. - -#### Pricing: Enterprise Edition vs Team Edition - -If you want them (Mattermost) to host it (or want priority support), you should opt for the Enterprise edition. However, if you want to host it without spending a penny, you can download the [Team edition][11] and install it on your Linux-based cloud/VPS server. - -Of course, we are not here to review it in-depth. However, I do want to mention that the enterprise edition is quite affordable. - -![][12] - -**Wrapping Up** - -Mattermost is definitely impressive. And, with a whopping $50M funding, it may become the next big thing in the open source community for users who were on the lookout for a secure and open source messaging platform with efficient team collaboration support. - -What do you think about this news? Is it something exciting for you? Were you already aware of Mattermost as a slack alternative? - -Let us know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/mattermost-funding/ - -作者:[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://mattermost.com/ -[2]: https://itsfoss.com/slack-use-linux/ -[3]: https://slack.com -[4]: https://www.ft.com/content/98747b36-9368-11e9-aea1-2b1d33ac3271 -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-wallpaper.png?resize=800%2C450&ssl=1 -[6]: https://venturebeat.com/2019/06/19/mattermost-raises-50-million-to-advance-its-open-source-slack-alternative/ -[7]: https://www.ycombinator.com/ -[8]: https://mattermost.com/blog/yc-leads-50m-series-b-in-mattermost-as-open-source-slack-alternative/ -[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-screenshot.jpg?fit=800%2C497&ssl=1 -[10]: https://itsfoss.com/zettlr-markdown-editor/ -[11]: https://mattermost.com/download/ -[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-enterprise-plan.jpg?fit=800%2C325&ssl=1 diff --git a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md new file mode 100644 index 0000000000..6b430cc7a0 --- /dev/null +++ b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -0,0 +1,92 @@ +[#]: collector: (lujun9972) +[#]: translator: (wahailin) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Open Source Slack Alternative Mattermost Gets $50M Funding) +[#]: via: (https://itsfoss.com/mattermost-funding/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Slack 开源替代品 Mattermost 获得 5000 万美元融资 +====== + +[Mattermost][1],作为 [Slack][2] 的开源替代品,获得了 5000 万美元的B轮融资。这个消息极其令人振奋。 + +[Slack][3] 是一个基于云的团队内部沟通协作软件。企业、创业公司、甚至全球化的开源项目都在使用Slack进行同事及项目成员间的沟通。 + +[Slack 在 2019 年 6 月的估值为 200 亿美元][4],由此可见其在科技行业的巨大影响,当然也就有更多产品想与之竞争。 + +### 5000 万美元开源项目 + +![][5] + +就我个人而言,我并不知道 MatterMost 这个产品。但 [VentureBeat][6] 对这则新闻的报道,激发了我的好奇心。 这次融资由 [Y Combinator’s][7] 与一家新的投资方 BattleVentures 牵头,现有投资者 Redpoint 和 S28 Captial 共同加入。 + + +在[公告][8]中,他们也提到: + +> 今天的公告中,Mattermost 成为了 YC 历次 B 轮投资中投资额最高的项目。 + +下面是摘自 VentureBeat 的报道,你可以从中了解到一些细节: + +> 本次资本注入,是继 2017 年 2 月的种子轮 350 万融资和今年 2 月份的 2000 万 A 轮融资之后进行的,并使得这家总部位于美国加州帕罗奥图(Palo Alto)的公司融资总额达到了约 7000 万美元。 + +如果你对他们的规划感兴趣,可以阅读[官方公告][8]。 + +尽管听起来很不错,但可能你并不知道 Mattermost 是什么。所以我们先来作个简单了解: + +### Mattermost 快览 + +![Mattermost][9] + +前面已经提到,Mattermost 是 Slack 的开源替代品。 + +乍一看,它几乎照搬了 Slack 的界面外观,没错,这就是关键所在,你将拥有你乐于使用的软件的开源方案。 + +它甚至集成了一些流行的 DevOps 工具,如 Git、Bots 和 CI/CD。除了这些功能外,它还关注安全性和隐私。 + +同样,和 Slack 类似,它支持和多种应用程序与服务的集成。 + +听起来很有前景?我也这么认为。 + +#### 定价:企业版和团队版 + +如果你想让 Mattermost 对其托管(或获得优先支持),应选择企业版。但如果你想使用非付费托管,可以下载[团队版][11],并安装到基于 Linux 的云服务器或 VPS 服务器上。 + +当然,我们不会在此进行深入探究。我确想在此提及的是,企业版并不昂贵。 + +![][12] + +**总结** + +MatterMost 无疑相当出色,有了 5000 万巨额资金的注入,对于那些正在寻求安全的并能提供高效团队协作支持的开源通讯平台的开源社区用户,Mattermost 很可能成为下一个大事件。 + +你觉得这条新闻怎么样?对你来说有价值吗?你是否已了解 Mattermost 是 Slack 的替代品? + +请在下面的评论中给出你的想法。 + +-------------------------------------------------------------------------------- + +来源: + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[wahailin](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://mattermost.com/ +[2]: https://itsfoss.com/slack-use-linux/ +[3]: https://slack.com +[4]: https://www.ft.com/content/98747b36-9368-11e9-aea1-2b1d33ac3271 +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-wallpaper.png?resize=800%2C450&ssl=1 +[6]: https://venturebeat.com/2019/06/19/mattermost-raises-50-million-to-advance-its-open-source-slack-alternative/ +[7]: https://www.ycombinator.com/ +[8]: https://mattermost.com/blog/yc-leads-50m-series-b-in-mattermost-as-open-source-slack-alternative/ +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-screenshot.jpg?fit=800%2C497&ssl=1 +[10]: https://itsfoss.com/zettlr-markdown-editor/ +[11]: https://mattermost.com/download/ +[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/mattermost-enterprise-plan.jpg?fit=800%2C325&ssl=1 From e0600ef7f64ae827946d42e32d59fb30b224a4f1 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Mon, 24 Jun 2019 01:07:40 +0800 Subject: [PATCH 095/336] Update 20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md --- ...pen Source Slack Alternative Mattermost Gets -50M Funding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md index 6b430cc7a0..e9ebcd7bfa 100644 --- a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md +++ b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -71,7 +71,7 @@ MatterMost 无疑相当出色,有了 5000 万巨额资金的注入,对于那 作者:[Ankush Das][a] 选题:[lujun9972][b] -译者:[wahailin](https://github.com/译者ID) +译者:[wahailin](https://github.com/wahailin) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 8db7a3a042a5415a138013f5c3e56e395880a51a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 01:23:22 +0800 Subject: [PATCH 096/336] TSL:20190604 Kubernetes is a dump truck- Here-s why.md --- ... Kubernetes is a dump truck- Here-s why.md | 52 ------------------ ... Kubernetes is a dump truck- Here-s why.md | 53 +++++++++++++++++++ 2 files changed, 53 insertions(+), 52 deletions(-) delete mode 100644 sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md create mode 100644 translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md diff --git a/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md deleted file mode 100644 index 84a6809004..0000000000 --- a/sources/tech/20190604 Kubernetes is a dump truck- Here-s why.md +++ /dev/null @@ -1,52 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Kubernetes is a dump truck: Here's why) -[#]: via: (https://opensource.com/article/19/6/kubernetes-dump-truck) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) - -Kubernetes is a dump truck: Here's why -====== -Dump trucks are an elegant solution to a wide range of essential -business problems. -![Dump truck with kids standing in the foreground][1] - -As we approach Kubernetes anniversary on Friday, June 7 this week let's start with this. - -Dump trucks are elegant. Seriously, stay with me for a minute. They solve a wide array of technical problems in an elegant way. They can move dirt, gravel, rocks, coal, construction material, or road barricades. They can even pull trailers with other pieces of heavy equipment on them. You can load a dump truck with five tons of dirt and drive across the country with it. For a nerd like me, that's elegance. - -But, they're not easy to use. Dump trucks require a special driver's license. They're also not easy to equip or maintain. There are a ton of options when you buy a dump truck and a lot of maintenance. But, they're elegant for moving dirt. - -You know what's not elegant for moving dirt? A late-model, compact sedan. They're way easier to buy. Easier to drive. Easier to maintain. But, they're terrible at carrying dirt. It would take 200 trips to carry five tons of dirt, and nobody would want the car after that. - -Alright, you're sold on using a dump truck, but you want to build it yourself. I get it. I'm a nerd and I love building things. But… - -If you owned a construction company, you wouldn't build your own dump trucks. You definitely wouldn't maintain the supply chain to rebuild dump trucks (that's a big supply chain). But you would learn to drive one. - -OK, my analogy is crude but easy to understand. Ease of use is relative. Ease of maintenance is relative. Ease of configuration is relative. It really depends on what you are trying to do. [Kubernetes][2] is no different. - -Building Kubernetes once isn't too hard. Equipping Kubernetes? Well, that gets harder. What did you think of KubeCon? How many new projects were announced? Which ones are "real"? Which ones should you learn? How deeply do you understand Harbor, TikV, NATD, Vitess, Open Policy Agent? Not to mention Envoy, eBPF, and a bunch of the underlying technologies in Linux? It feels a lot like building dump trucks in 1904 with the industrial revolution in full swing. Figuring out what screws, bolts, metal, and pistons to use. (Steampunk, anyone?) - -Building and equipping Kubernetes, like a dump truck, is a technical problem you probably shouldn't be tackling if you are in financial services, retail, biological research, food services, and so forth. But, learning how to drive Kubernetes is definitely something you should be learning. - -Kubernetes, like a dump truck, is elegant for the wide variety of technical problems it can solve (and the ecosystem it drags along). So, I'll leave you with a quote that one of my computer science professors told us in my first year of college. She said, "one day, you will look at a piece of code and say to yourself, 'now that's elegant!'" - -Kubernetes is elegant. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/kubernetes-dump-truck - -作者:[Scott McCarty][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/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dump_truck_car_container_kubernetes.jpg?itok=4BdmyVGd (Dump truck with kids standing in the foreground) -[2]: https://kubernetes.io/ diff --git a/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md new file mode 100644 index 0000000000..3a629dfc93 --- /dev/null +++ b/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md @@ -0,0 +1,53 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Kubernetes is a dump truck: Here's why) +[#]: via: (https://opensource.com/article/19/6/kubernetes-dump-truck) +[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) + +为什么说 Kubernetes 是一辆翻斗车 +====== + +> 翻斗车是解决各种基本业务问题的优雅解决方案。 + +![Dump truck with kids standing in the foreground][1] + +这篇文章写于 Kubernetes 的生日(6 月 7 日星期五)前夕。 + +翻斗车很优雅。说真的,不信你听我说。它们以优雅的方式解决了各种各样的技术问题。它们可以搬动泥土、砾石、岩石、煤炭、建筑材料或道路上的障碍。它们甚至可以拉动拖车及它们上面的其他重型设备。你可以给一辆翻斗车装上五吨泥土,然后自驾游遍全国。对于像我这样的电脑极客来说,那就是优雅。 + +但是,它们并不容易使用。驾驶翻斗车需要特殊的驾驶执照。它们也不容易装配和维护。购买翻斗车和各种维护时要做很多选择。但是,它们可以优雅的搬动那些垃圾。 + +你知道搬动垃圾有什么不优雅的地方吗?假如你有一款新型的紧凑型轿车,它们到处可以买到,易于驾驶、更易于维护。但是,用它们来装泥土就很糟糕。这需要跑 200 趟才能运走 5 吨垃圾,而且,之后没人再会想要这辆车了。 + +好吧,你可以买一辆出售的翻斗车,而不是想自己造一辆。但是我不同,我是个极客,我喜欢自己造东西。但…… + +如果你拥有一家建筑公司,你就不会想着自己造一辆翻斗车。你肯定不会维持一条供应链来重构翻斗车(这可是一条很大的供应链)。但你可以学会驾驶一辆。 + +好吧,我的这个比喻很粗糙,但很容易理解。易用性是相对的,易于维护是相对的,易于装配也是相对的。这实际上取决于你想要做什么。[Kubernetes][2] 也不例外。 + +一次性构建 Kubernetes 并不太难。配置好 Kubernetes 呢?好吧,这稍微难一些。你如何看待 KubeCon?它们又宣布了多少新项目?哪些是“真实的”呢?而你应该学习哪些?你对 Harbour、TikV、NATD、Vitess,开放策略代理有多深入的了解?更不用说 Envoy、eBPF 和 Linux 中的一系列底层技术?这就像是 1904 年工业革命爆发时建造翻斗车一样,你要弄清楚使用的螺钉、螺栓、金属和活塞。(有没有蒸汽朋克在这里吗?) + +像翻斗车一样构造和配置 Kubernetes 是一个技术问题,如果你从事金融服务、零售、生物研究、食品服务等等,这可能不是你应该做的事情。但是,学习如何驾驶 Kubernetes 肯定是你应该学习的东西。 + +Kubernetes 就像一辆翻斗车,因其可以解决的各种技术问题(以及它所拖带的生态系统)而优雅。所以,我会给你一句引用的话,这是我的一位计算机科学教授在我大学的第一年告诉我们的,她说,“有一天,你会看到一段代码并对自己说,‘真特么优雅!’” + +Kubernetes 很优雅。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/kubernetes-dump-truck + +作者:[Scott McCarty][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/fatherlinux +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dump_truck_car_container_kubernetes.jpg?itok=4BdmyVGd (Dump truck with kids standing in the foreground) +[2]: https://kubernetes.io/ From 3a9e4224b8fa3c9a26623efa8a78bcb11482101f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 01:29:00 +0800 Subject: [PATCH 097/336] PRF:20190604 Kubernetes is a dump truck- Here-s why.md @wxy --- .../tech/20190604 Kubernetes is a dump truck- Here-s why.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md index 3a629dfc93..a5146b077c 100644 --- a/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md +++ b/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Kubernetes is a dump truck: Here's why) @@ -12,7 +12,7 @@ > 翻斗车是解决各种基本业务问题的优雅解决方案。 -![Dump truck with kids standing in the foreground][1] +![](https://img.linux.net.cn/data/attachment/album/201906/24/012846v737bts00uwk3qd7.jpg) 这篇文章写于 Kubernetes 的生日(6 月 7 日星期五)前夕。 @@ -43,7 +43,7 @@ via: https://opensource.com/article/19/6/kubernetes-dump-truck 作者:[Scott McCarty][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 259bff1c6a8f59aa65721d9ef60d3f0ddda57fa2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 01:29:56 +0800 Subject: [PATCH 098/336] PUB:20190604 Kubernetes is a dump truck- Here-s why.md @wxy https://linux.cn/article-11011-1.html --- .../20190604 Kubernetes is a dump truck- Here-s why.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190604 Kubernetes is a dump truck- Here-s why.md (98%) diff --git a/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md b/published/20190604 Kubernetes is a dump truck- Here-s why.md similarity index 98% rename from translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md rename to published/20190604 Kubernetes is a dump truck- Here-s why.md index a5146b077c..b8f0930300 100644 --- a/translated/tech/20190604 Kubernetes is a dump truck- Here-s why.md +++ b/published/20190604 Kubernetes is a dump truck- Here-s why.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11011-1.html) [#]: subject: (Kubernetes is a dump truck: Here's why) [#]: via: (https://opensource.com/article/19/6/kubernetes-dump-truck) [#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) From 7a0bd3e7751619ced812ac796d583d4801822771 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 24 Jun 2019 08:59:08 +0800 Subject: [PATCH 099/336] translated --- ...sonal assistant with Mycroft and Fedora.md | 94 ------------------- ...sonal assistant with Mycroft and Fedora.md | 94 +++++++++++++++++++ 2 files changed, 94 insertions(+), 94 deletions(-) delete mode 100644 sources/tech/20190614 Personal assistant with Mycroft and Fedora.md create mode 100644 translated/tech/20190614 Personal assistant with Mycroft and Fedora.md diff --git a/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md b/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md deleted file mode 100644 index 25feafdc93..0000000000 --- a/sources/tech/20190614 Personal assistant with Mycroft and Fedora.md +++ /dev/null @@ -1,94 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Personal assistant with Mycroft and Fedora) -[#]: via: (https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/) -[#]: author: (Clément Verna https://fedoramagazine.org/author/cverna/) - -Personal assistant with Mycroft and Fedora -====== - -![][1] - -Looking for an open source personal assistant ? [Mycroft][2] is allowing you to run an open source service which gives you better control of your data. - -### Install Mycroft on Fedora - -Mycroft is currently not available in the official package collection, but it can be easily installed from the project source. The first step is to download the source from Mycroft’s GitHub repository. - -``` -$ git clone https://github.com/MycroftAI/mycroft-core.git -``` - -Mycroft is a Python application and the project provides a script that takes care of creating a virtual environment before installing Mycroft and its dependencies. - -``` -$ cd mycroft-core -$ ./dev_setup.sh -``` - -The installation script prompts the user to help him with the installation process. It is recommended to run the stable version and get automatic updates. - -When prompted to install locally the Mimic text-to-speech engine, answer No. Since as described in the installation process this can take a long time and Mimic is available as an rpm package in Fedora so it can be installed using dnf. - -``` -$ sudo dnf install mimic -``` - -### Starting Mycroft - -After the installation is complete, the Mycroft services can be started using the following script. - -``` -$ ./start-mycroft.sh all -``` - -In order to start using Mycroft the device running the service needs to be registered. To do that an account is needed and can be created at . - -Once the account created, it is possible to add a new device at the following address [https://account.mycroft.ai/devices.][3] Adding a new device requires a pairing code that will be spoken to you by your device after starting all the services. - -![][4] - -The device is now ready to be used. - -### Using Mycroft - -Mycroft provides a set of [skills][5] that are enabled by default or can be downloaded from the [Marketplace][5]. To start you can simply ask Mycroft how is doing, or what the weather is. - -``` -Hey Mycroft, how are you ? - -Hey Mycroft, what's the weather like ? -``` - -If you are interested in how things works, the _start-mycroft.sh_ script provides a _cli_ option that lets you interact with the services using the command line. It is also displaying logs which is really useful for debugging. - -Mycroft is always trying to learn new skills, and there are many way to help by [contributing][6] the Mycroft community. - -* * * - -Photo by [Przemyslaw Marczynski][7] on [Unsplash][8] - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/ - -作者:[Clément Verna][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/cverna/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2017/08/mycroft-816x345.jpg -[2]: https://mycroft.ai/ -[3]: https://account.mycroft.ai/devices -[4]: https://fedoramagazine.org/wp-content/uploads/2019/06/Screenshot_2019-06-14-Account.png -[5]: https://market.mycroft.ai/skills -[6]: https://mycroft.ai/contribute/ -[7]: https://unsplash.com/@pemmax?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[8]: https://unsplash.com/search/photos/ai?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md b/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md new file mode 100644 index 0000000000..58a589b6df --- /dev/null +++ b/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md @@ -0,0 +1,94 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Personal assistant with Mycroft and Fedora) +[#]: via: (https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/) +[#]: author: (Clément Verna https://fedoramagazine.org/author/cverna/) + +在 Fedora 中使用私人助理 Mycroft +====== + +![][1] + +还在找开源的私人助理么?[Mycroft][2] 让你运行开源服务,从而更好地控制你的数据。 + +### 在 Fedora 上安装 Mycroft + +Mycroft 目前不存在于官方软件包集合中,但它可以轻松地从源码安装。第一步是从 Mycroft 的 GitHub 仓库下载源码。 + +``` +$ git clone https://github.com/MycroftAI/mycroft-core.git +``` + +Mycroft 是一个 Python 应用,它提供了一个脚本负责在安装 Mycroft 及其依赖项之前创建虚拟环境。 + +``` +$ cd mycroft-core +$ ./dev_setup.sh +``` + +安装脚本会提示用户帮助他完成安装过程。建议运行稳定版本并获取自动更新。 + +当提示在本地安装 Mimic 文字转语音引擎时,请回答否。因为根据安装描述,这可能需要很长时间,并且 Mimic 有适合 Fedora 的 rpm 包,因此可以使用 dnf 进行安装。 + +``` +$ sudo dnf install mimic +``` + +### 开始使用 Mycroft + +安装完成后,可以使用以下脚本启动 Mycroft 服务。 + +``` +$ ./start-mycroft.sh all +``` + +要开始使用 Mycroft,需要注册运行服务的设备。因此需要一个帐户,可以在 中创建。 + +创建帐户后,可以在 [https://account.mycroft.ai/devices][3] 中添加新设备。添加新设备需要配对码,你的设备会在所有服务启动后告诉你。 + +![][4] + +现在可以使用该设备了。 + +### 使用 Mycroft + +Mycroft 提供了一组默认启用的[技能][5],它们或者可以从[市场][5]下载。刚开始,你可以简单地向 Mycroft 问好,或天气如何。 + +``` +Hey Mycroft, how are you ? + +Hey Mycroft, what's the weather like ? +``` + +如果你对它是如何工作的感兴趣,_start-mycroft.sh_ 脚本提供了一个_命令行_选项,它能让你使用命令行交互。它也会显示用于调试的有用信息。 + +Mycroft 总在学习新技能,并且有很多方法给 Mycroft 社区做[贡献][6]。 + +* * * + +由 [Przemyslaw Marczynski][7] 摄影,发布于 [Unsplash][8] + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/ + +作者:[Clément Verna][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/cverna/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2017/08/mycroft-816x345.jpg +[2]: https://mycroft.ai/ +[3]: https://account.mycroft.ai/devices +[4]: https://fedoramagazine.org/wp-content/uploads/2019/06/Screenshot_2019-06-14-Account.png +[5]: https://market.mycroft.ai/skills +[6]: https://mycroft.ai/contribute/ +[7]: https://unsplash.com/@pemmax?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[8]: https://unsplash.com/search/photos/ai?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText From e551bf1dc34eb24cfb24ef5add67400d79d74f98 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 24 Jun 2019 09:08:14 +0800 Subject: [PATCH 100/336] translating --- ...9 VSCodium- 100- Open Source Version of Microsoft VS Code.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md index e9ec3e4a85..2365c992e2 100644 --- a/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md +++ b/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 6adfd99944d349126831dce9d6689113520db516 Mon Sep 17 00:00:00 2001 From: Liwen Jiang Date: Sun, 23 Jun 2019 19:52:29 -0700 Subject: [PATCH 101/336] Submitted Translated Passage for Review Submitted Translated Passage for Review --- ...arn Python with these awesome resources.md | 90 ------------------- ...arn Python with these awesome resources.md | 87 ++++++++++++++++++ 2 files changed, 87 insertions(+), 90 deletions(-) delete mode 100644 sources/tech/20190531 Learn Python with these awesome resources.md create mode 100644 translated/tech/20190531 Learn Python with these awesome resources.md diff --git a/sources/tech/20190531 Learn Python with these awesome resources.md b/sources/tech/20190531 Learn Python with these awesome resources.md deleted file mode 100644 index 3b8704cb49..0000000000 --- a/sources/tech/20190531 Learn Python with these awesome resources.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (tomjlw) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Learn Python with these awesome resources) -[#]: via: (https://opensource.com/article/19/5/resources-learning-python) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Learn Python with these awesome resources -====== -Expand your Python knowledge by adding these resources to your personal -learning network. -![Book list, favorites][1] - -I've been using and teaching Python for a long time now, but I'm always interested in increasing my knowledge about this practical and useful programming language. That's why I've been trying to expand my Python [personal learning network][2] (PLN), a concept that describes informal and mutually beneficial networks for sharing information. - -Educators [Kelly Paredes][3] and [Sean Tibor][4] recently talked about how to build your Python PLN on their podcast, [Teaching Python][5], which I subscribed to after meeting them at [PyCon 2019][6] in Cleveland (and adding them to my Python PLN). This podcast inspired me to think more about the people in my Python PLN, including those I met recently at PyCon. - -I'll share some of the places I've met members of my PLN; maybe they can become part of your Python PLN, too. - -### Young Coders mentors - -[Betsy Waliszewski][7], the event coordinator for the Python Foundation, is a member of my Python PLN. When we ran into each other at PyCon2019, because I'm a teacher, she recommended I check out the [Young Coders][8] workshop for kids ages 12 and up. There, I met [Katie Cunningham][9], who was running the program, which taught participants how to set up and configure a Raspberry Pi and use Python. The young students also received two books: _[Python for Kids][10]_ by Jason Briggs and _[Learn to Program with Minecraft][11]_ by Craig Richardson. I'm always looking for new ways to improve my teaching, so I quickly picked up two copies of the Minecraft book at [NoStarch Press][12]' booth at the conference. Katie is a great teacher and a prolific author with a wonderful [YouTube][13] channel full of Python training videos. - -I added Katie to my PLN, along with two other people I met at the Young Coders workshop: [Nat Dunn][14] and [Sean Valentine][15]. Like Katie, they were volunteering their time to introduce young programmers to Python. Nat is the president of [Webucator][16], an IT training company that has been a sponsor of the Python Software Foundation for several years and sponsored the PyCon 2018 Education Summit. He decided to teach at Young Coders after teaching Python to his 13-year-old son and 14-year-old nephew. Sean is the director of strategic initiatives at the [Hidden Genius Project][17], a technology and leadership mentoring program for black male youth. Sean said many Hidden Genius participants "built projects using Python, so we saw [Young Coders] as a great opportunity to partner." Learning about the Hidden Genius Project has inspired me to think deeper about the implications of coding and its power to change lives. - -### Open Spaces meetups - -I found PyCon's [Open Spaces][18], self-organizing, impromptu hour-long meetups, just as useful as the official programmed events. One of my favorites was about the [Circuit Playground Express][19] device, which was part of our conference swag bags. I am fascinated by this device, and the Open Space provided an avenue to learn more. The organizers offered a worksheet and a [GitHub][20] repo with all the tools we needed to be successful, as well as an opportunity for hands-on learning and direction to explore this unique hardware. - -This meetup whetted my appetite to learn even more about programming the Circuit Playground Express, so after PyCon, I reached out on Twitter to [Nina Zakharenko][21], who [presented a keynote][22] at the conference about programming the device. Nina has been in my Python PLN since last fall when I heard her talk at [All Things Open][23], and I recently signed up for her [Python Fundamentals][24] class to add to my learning. Nina recommended I add [Kattni Rembor][25], whose [code examples][26] are helping me learn to program with CircuitPython, to my Python PLN. - -### Other resources from my PLN - -I also met fellow [Opensource.com][27] Community Moderator [Moshe Zadka][28] at PyCon2019 and talked with him at length. He shared several new Python resources, including _[How to Think Like a Computer Scientist][29]_. Community Moderator [Seth Kenlon][30] is another member of my PLN; he has published many great [Python articles][31], and I recommend you follow him, too. - -My Python personal learning network continues to grow each day. Besides the folks I have already mentioned, I recommend you follow [Al Sweigart][32], [Eric Matthes][33], and [Adafruit][34] because they share great content. I also recommend the book _[Make: Getting Started with Adafruit Circuit Playground Express][35]_ and [Podcast.__init__][36], a podcast all about the Python community, both of which I learned about from my PLN. - -Who is in your Python PLN? Please share your favorites in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/5/resources-learning-python - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[tomjlw](https://github.com/tomjlw) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/reading_book_stars_list.png?itok=Iwa1oBOl (Book list, favorites) -[2]: https://en.wikipedia.org/wiki/Personal_learning_network -[3]: https://www.teachingpython.fm/hosts/kellypared -[4]: https://twitter.com/smtibor -[5]: https://www.teachingpython.fm/20 -[6]: https://us.pycon.org/2019/ -[7]: https://www.linkedin.com/in/betsywaliszewski -[8]: https://us.pycon.org/2019/events/letslearnpython/ -[9]: https://www.linkedin.com/in/kcunning/ -[10]: https://nostarch.com/pythonforkids -[11]: https://nostarch.com/programwithminecraft -[12]: https://nostarch.com/ -[13]: https://www.youtube.com/c/KatieCunningham -[14]: https://www.linkedin.com/in/natdunn/ -[15]: https://www.linkedin.com/in/sean-valentine-b370349b/ -[16]: https://www.webucator.com/ -[17]: http://www.hiddengeniusproject.org/ -[18]: https://us.pycon.org/2019/events/open-spaces/ -[19]: https://www.adafruit.com/product/3333 -[20]: https://github.com/adafruit/PyCon2019 -[21]: https://twitter.com/nnja -[22]: https://www.youtube.com/watch?v=35mXD40SvXM -[23]: https://allthingsopen.org/ -[24]: https://frontendmasters.com/courses/python/ -[25]: https://twitter.com/kattni -[26]: https://github.com/kattni/ChiPy_2018 -[27]: http://Opensource.com -[28]: https://opensource.com/users/moshez -[29]: http://openbookproject.net/thinkcs/python/english3e/ -[30]: https://opensource.com/users/seth -[31]: https://www.google.com/search?source=hp&ei=gVToXPq-FYXGsAW-mZ_YAw&q=site%3Aopensource.com+%22Seth+Kenlon%22+%2B+Python&oq=site%3Aopensource.com+%22Seth+Kenlon%22+%2B+Python&gs_l=psy-ab.12...627.15303..15584...1.0..0.176.2802.4j21......0....1..gws-wiz.....0..35i39j0j0i131j0i67j0i20i263.r2SAW3dxlB4 -[32]: http://alsweigart.com/ -[33]: https://twitter.com/ehmatthes?lang=en -[34]: https://twitter.com/adafruit -[35]: https://www.adafruit.com/product/3944 -[36]: https://www.pythonpodcast.com/episodes/ diff --git a/translated/tech/20190531 Learn Python with these awesome resources.md b/translated/tech/20190531 Learn Python with these awesome resources.md new file mode 100644 index 0000000000..927355886d --- /dev/null +++ b/translated/tech/20190531 Learn Python with these awesome resources.md @@ -0,0 +1,87 @@ +[#]: collector: (lujun9972) +[#]: translator: (tomjlw) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Learn Python with these awesome resources) +[#]: via: (https://opensource.com/article/19/5/resources-learning-python) +[#]: author: (Don Watkins https://opensource.com/users/don-watkins) + +通过这些精品资源学习 Python +====== +通过将这些资源加入你自己的私人学习网络以拓展你的 Python 知识 +![书单,最爱][1] + +我使用和教 Python 已有很长时间了,但我总是感兴趣于增加我对这门实用语言的知识。这就是为什么我一直试着拓展我的 Python [私人学习网络][2](PLN),一个描述非正式的互惠型分享信息网络的概念。 + +教育学家 [Kelly Paredes][3] 和 [Sean Tibor][4] 最近讨论关于如何在他们的播客 [Teaching Python][5] 上搭建 Python PLN。我在克里夫兰的 [PyCon 2019][6] 遇到他们之后就订阅了这个频道(并把它们假如我的 Python PLN)。这个播客鼓励我考虑更多关于我的 Python PLN 中的人,包括那些我最近在 PyCon 遇到的。 + +我会分享一些我遇到我的 PLN 的地方;可能它们也可以变成你的 Python PLN 的一部分。 + +### Young Coders 导师 +Python 基金会的活动协调者 [Betsy Waliszewski][7] 是我的 Python PLN 中的一员。当我们在 PyCon2019 碰到彼此时,因为我是个老师她推荐我看看为十二岁及以上的孩子打造的 [Young Coders][8] 工作室。在那我遇到了负责这个教参与者如何搭建并配置树莓派并使用 Python 项目的 [Katie Cunningham][9]。年轻学生也会收到两本书 Jason Briggs 的 _[Python for Kids][10]_ 和 Craig Richardson 的 _[Learn to Program with Minecraft][11]_。我总是寻找提升我教学水平的新方式,因此我在会议上的 [NoStarch Press][12] 展台迅速拿了两本 Minecraft 书的抄本。Katie 是一名优秀的教师以及一名熟练的有着惊艳的充满 Python 培训视频的 [YouTube][13] 频道作者。 + +我把 Kattie 与另外两个我在 Young Coders 工作室碰到的人加入我的 PLN:[Nat Dunn][14] 和 [Sean Valentine][15]。像 Katie 一样,他们志愿将他们的时间用来把 Python 介绍给青年程序员。Nat 是 [Webucator][16],一家成为 Python 软件基金会赞助商好几年并赞助了 PyCon 2018 教育峰会的 IT 培训公司的主席。他在教他的13岁儿子和14岁外甥 Python 后决定在 Young Coders 教学。Sean 是 [Hidden Genius Project][17],一个为黑人男青年而打造的科技及领导力教导项目,的战略倡议指导。Sean 说许多 Hidden Genius 参与者“用 Python打造项目因此我们将 [Young Coders] 看成一个对合作商的好机会”。了解 Hidden Genius Project 鼓励我更深层次地思考编程的未来以及其改变生活的威力。 + +### Open Spaces 会面 +我发现 PyCon 的 [Open Spaces][18] 一小时左右的自序即兴会面跟正式的项目活动一样有用。我的最爱之一是关于 [Circuit Playground Express][19] 设备,它是我们会议主题包的一部分。我着迷于这个设备并且 Open Space 提供了学习它的一条大道。组织者提供工作表和拥有成功所需要的所有工具的 [Github][20] 仓库,也提供了一个上手学习的机会以及探索这个独特硬件的方向。 + +这次会面满足了我想要了解更多关于编程 Circuit Playground Express 的胃口,因此在 PyCon 之后, 我在 Twitter 上接触到了在会议上就有关编程这个设备发表主旨演讲的 [Nina Zakharenko][21]。Nina 自从去年秋天我在 [All Things Open][23] 上听过她的演讲就在我的 Python PLN 里了。我最近报名了她的[Python 基础][24]课程以加深我的学习。Nina 推荐我将 [Kattni Rembor][25] 加入我的 Python PLN。他的[示例代码][26]正帮助我学习用 CircuitPython 编程。 + +### 我 PLN 中的其他资源 + +我在 PyCon 2019 也遇见了下属 [Opensource.com][27] 社区的主席 [Moshe Zadka][28] 并和他来了场长谈。他分享了几个新的 Python 资源,包括 _[如何像电脑科学家一样思考][29]_ 社区主席[Seth Kenlon][30] 是我的 PLN 中的另一名成员;他发表了许多优秀的 [Python 文章][31]我也推荐你关注他。 + +我的 Python每天都在继续扩大。除了我已经提到的,我同样推荐你关注 [Al Sweigart][32],[Eric Matthes][33],以及 [Adafruit][34] 因为他们分享优质内容。我也推荐这本书 _[制作:由 Adafruit Circuit Playground Express 开始][35]_ 和 [Podcast.__init__][36],一个关于 Python 社区的播客。这两个都是我从我的 PLN 中了解到的。 + +谁在你的 Python PLN 中?请在留言区分享你的最爱。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/5/resources-learning-python + +作者:[Don Watkins][a] +选题:[lujun9972][b] +译者:[tomjlw](https://github.com/tomjlw) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/don-watkins +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/reading_book_stars_list.png?itok=Iwa1oBOl (Book list, favorites) +[2]: https://en.wikipedia.org/wiki/Personal_learning_network +[3]: https://www.teachingpython.fm/hosts/kellypared +[4]: https://twitter.com/smtibor +[5]: https://www.teachingpython.fm/20 +[6]: https://us.pycon.org/2019/ +[7]: https://www.linkedin.com/in/betsywaliszewski +[8]: https://us.pycon.org/2019/events/letslearnpython/ +[9]: https://www.linkedin.com/in/kcunning/ +[10]: https://nostarch.com/pythonforkids +[11]: https://nostarch.com/programwithminecraft +[12]: https://nostarch.com/ +[13]: https://www.youtube.com/c/KatieCunningham +[14]: https://www.linkedin.com/in/natdunn/ +[15]: https://www.linkedin.com/in/sean-valentine-b370349b/ +[16]: https://www.webucator.com/ +[17]: http://www.hiddengeniusproject.org/ +[18]: https://us.pycon.org/2019/events/open-spaces/ +[19]: https://www.adafruit.com/product/3333 +[20]: https://github.com/adafruit/PyCon2019 +[21]: https://twitter.com/nnja +[22]: https://www.youtube.com/watch?v=35mXD40SvXM +[23]: https://allthingsopen.org/ +[24]: https://frontendmasters.com/courses/python/ +[25]: https://twitter.com/kattni +[26]: https://github.com/kattni/ChiPy_2018 +[27]: http://Opensource.com +[28]: https://opensource.com/users/moshez +[29]: http://openbookproject.net/thinkcs/python/english3e/ +[30]: https://opensource.com/users/seth +[31]: https://www.google.com/search?source=hp&ei=gVToXPq-FYXGsAW-mZ_YAw&q=site%3Aopensource.com+%22Seth+Kenlon%22+%2B+Python&oq=site%3Aopensource.com+%22Seth+Kenlon%22+%2B+Python&gs_l=psy-ab.12...627.15303..15584...1.0..0.176.2802.4j21......0....1..gws-wiz.....0..35i39j0j0i131j0i67j0i20i263.r2SAW3dxlB4 +[32]: http://alsweigart.com/ +[33]: https://twitter.com/ehmatthes?lang=en +[34]: https://twitter.com/adafruit +[35]: https://www.adafruit.com/product/3944 +[36]: https://www.pythonpodcast.com/episodes/ From 8bc3c68a126b045d76cf734993eb331f4df6e945 Mon Sep 17 00:00:00 2001 From: chen ni Date: Mon, 24 Jun 2019 12:55:27 +0800 Subject: [PATCH 102/336] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E5=8E=9F=E6=96=87=E6=97=B6=E7=B2=98=E8=B4=B4=E8=BF=87=E6=9D=A5?= =?UTF-8?q?=E7=9A=84=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190416 Can schools be agile.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/sources/tech/20190416 Can schools be agile.md b/sources/tech/20190416 Can schools be agile.md index adcd4f4117..9b45f2c430 100644 --- a/sources/tech/20190416 Can schools be agile.md +++ b/sources/tech/20190416 Can schools be agile.md @@ -57,8 +57,6 @@ Relentlessly pursuing methods of continuous improvement should not be a behavior I'm eagerly awaiting the day when I enter a school, recognize that spirit, and smile to myself as I say, "I've seen this before." -Experiential learning using open source is fraught with opportunities for disaster. - -------------------------------------------------------------------------------- via: https://opensource.com/open-organization/19/4/education-culture-agile From 6cea616f6fde93672a07ce055f57ac61a689d836 Mon Sep 17 00:00:00 2001 From: chen ni Date: Mon, 24 Jun 2019 12:58:48 +0800 Subject: [PATCH 103/336] =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190416 Can schools be agile.md | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/sources/tech/20190416 Can schools be agile.md b/sources/tech/20190416 Can schools be agile.md index 9b45f2c430..354490db5b 100644 --- a/sources/tech/20190416 Can schools be agile.md +++ b/sources/tech/20190416 Can schools be agile.md @@ -7,55 +7,51 @@ [#]: via: (https://opensource.com/open-organization/19/4/education-culture-agile) [#]: author: (Ben Owens https://opensource.com/users/engineerteacher/users/ke4qqq/users/n8chz/users/don-watkins) -Can schools be agile? +学校可以变得敏捷吗? ====== -We certainly don't need to run our schools like businesses—but we could -benefit from educational organizations more focused on continuous -improvement. +我们一定不会希望用商业的方式运作我们的学校 —— 但是更加注重持续改进的教育机构是可以让我们受益的。 ![][1] -We've all had those _deja vu_ moments that make us think "I've seen this before!" I experienced them often in the late 1980s, when I first began my career in industry. I was caught up in a wave of organizational change, where the U.S. manufacturing sector was experimenting with various models that asked leaders, managers, and engineers like me to rethink how we approached things like quality, cost, innovation, and shareholder value. It seems as if every year (sometimes, more frequently) we'd study yet another book to identify the "best practices" necessary for making us leaner, flatter, more nimble, and more responsive to the needs of the customer. +我们都有过那种感觉一件事情“似曾相识”的经历。在 1980 年代末期我经常会有这种感觉,那时候我刚刚进入工业领域不久。当时正赶上一波组织变革的热潮,美国制造业在尝试各种各样不同的模型,让企业领导、经理人和像我这样的工程师重新思考我们应该如何处理质量、成本、创新以及股东价值这样的问题。我们似乎每一年(有时候更加频繁)都需要通过学习一本书来找到让我们更精简、更扁平、更灵活以及更加能满足顾客需求的“最佳方案”。 -Many of the approaches were so transformational that their core principles still resonate with me today. Specific ideas and methods from thought leaders such as John Kotter, Peter Drucker, Edwards Demming, and Peter Senge were truly pivotal for our ability to rethink our work, as were the adoption of process improvement methods such as Six Sigma and those embodied in the "Toyota Way." +这里面的很多方法都带来了巨大的改进,我至今仍然赞同它们的核心原则。像 John Kotter、Peter Drucker、Edwards Demming 和 Peter Senge 这样的思想领袖提出的某些思想和策略,还有我们采用的像 Six Sigma 以及在“丰田模式”里可以找到的一些流程优化方法,对我们改进工作都起到了十分关键的作用。 -But others seemed to simply repackage these same ideas with a sexy new twist—hence my _deja vu_. +但是其他人似乎只是在同样的思想上进行了润色和调整,然后重新包装了一下 —— 所以我才会有那种 *似曾相识* 的感觉。但是当我成为了一名教师之后,我遇到了一个 *没有* 给我那种似曾相识的感觉的地方:教育界。事实上我十分惊讶地发现,在我的这个新职业里,“持续不断的改进”并 *不像* 在我之前的职业里那样重要了(特别是对于像我这种授课老师职级的人来说)。 -And yet when I began my career as a teacher, I encountered a context that _didn't_ give me that feeling: education. In fact, I was surprised to find that "getting better all the time" was _not_ the same high priority in my new profession that it was in my old one (particularly at the level of my role as a classroom teacher). +为什么教育机构很少努力营造一种不断改进的文化氛围呢?我能想到几个原因,在这里我列举两个。 -Why aren't more educational organizations working to create cultures of continuous improvement? I can think of several reasons, but let me address two. +### 不再做生产线上的元件 -### Widgets no more +这种不断改进的文化氛围遇到的第一个阻碍是,教育界普遍不愿意从其它行业借鉴可以为自己所用的思想 —— 特别是来自商界的思想。第二个阻碍是,主导教育界的仍然是一种自上而下的、等级制度森严的领导模式。人们往往只能在小范围哪讨论这种系统性的、持续的改进方案,比如包括校长、助理校长、学校监管人(LCTT 译注:美国地方政府下设的一种官职,每个学校监管人管理一定数量的学校,接受学校校长的汇报)等等在内的学校领导和区域领袖。但是一小群人的参与是远远不足以带来整个组织层面的文化改革的。 -The first barrier to a culture of continuous improvement is education's general reticence to look at other professions for ideas it can adapt and adopt—especially ideas from the business community. The second is education's predominant leadership model, which remains predominantly top-down and rooted in hierarchy. Conversations about systemic, continuous improvement tend to be the purview of a relatively small group of school or district leaders: principals, assistant principals, superintendents, and the like. But widespread organizational culture change can't occur if only one small group is involved in it. +在进一步展开观点之前,我想强调一下,上面所做的概括一定是存在例外情况 的(我自己就见到过很多),不过我觉得任何一个教育界的利益相关者都应该会同意以下两点基本假设: -Before unpacking these points a bit further, I'd like to emphasize that there are certainly exceptions to the above generalization (many I have seen first hand) and that there are two basic assumptions that I think any education stakeholder should be able to agree with: + 1. 为学生提供高质量的、公平的教育和教学系统的工作所涉及到的任何人都应该将持续不断的改进作为思维方式里的重要部分; + 2. 如果学校领导在做决策的时候可以更多地参考那些离学生最近的工作者的意见,那么学生以及学生所在的社区都将更加受益; - 1. Continuous improvement must be an essential mindset for _anyone_ involved in the work of providing high-quality and equitable teaching and learning systems for students, and - 2. Decisions by leaders of our schools will more greatly benefit students and the communities in which they live when those decisions are informed and influenced by those who work closest with students. +那么教育界人士为什么会倾向于忽视(或者公然地敌视)教育界之外的思想呢? + +比如我过去就曾经提议应该向别的行业借鉴一些思想和灵感来帮助我们更好地迎合学生的需求,并且果然遭到了批评。我经常得到的回应是:“你这是在把我们的学生当成生产线上的元件来对待呀!”但是我们的学生现在就是在被当作生产线上的元件对待,并且已经无以复加了。他们按照被年龄划分的群体考入大学,每天根据刺耳的铃声的指示去上一节又一节孤立的课程,并且由一些武断的、强调同一性而不是个性的考试来评判他们的成绩。 + +很多教育界人士可能不知道,生产线元件这种会让人想到流水线标准化作业的东西已经不是现代制造业里的重要组成部分了。得益于上面提到的不断改进的文化氛围,现代先进制造业已经可以做到在单个顾客产生需求的时候,以合理的价格有针对性地提供她所需要的商品。如果我们的学校也可以采用这种模式,教师们之间就更可能会产生协作,并且可以基于学生即时的需求和兴趣,不断完善每一个学生独特的成长和进步路线,而不受时间、课题或者其它传统规范的限制。 + +我并不是要呼吁大家像经营商业一样经营我们的学校。我所主张的是,用一种清晰而客观的态度去看待任何行业的任何思想,只要它们有可能帮助我们更好地迎合学生个体的需求。不过,如果想有效率地实现这个目标,我们需要仔细研究这个 100 多年来都停滞不前的领导结构。 +### 把不断改进作为努力的目标 -So why a tendency to ignore (or be outright hostile toward) ideas that come from outside the education space? +有一种说法认为教育和其它行业之间存在着巨大的差异,我虽然赞同这种说法,但同时也相信“重新思考组织和领导结构”这件事情对于任何一个希望对利益相关者负责(并且可以及时作出响应)的主体来说都是适用的。大多数其它行业都已经在重新审视它们传统的、封闭的、等级森严的结构,并且采用可以鼓励员工基于共有的优秀目标发挥自主性的组织结构 —— 这种组织结构对于不断改进来说十分关键。我们的学校和行政区是时候放开眼界了,而不应该拘泥于只听到来自内部的声音,因为它们的用意虽然是好的,但都没有脱离现有的范式。 -I, for example, have certainly faced criticism in the past for suggesting that we look to other professions for ideas and inspiration that can help us better meet the needs of students. A common refrain is something like: "You're trying to treat our students like widgets!" But how could our students be treated any more like widgets than they already are? They matriculate through school in age-based cohorts, going from siloed class to class each day by the sound of a shrill bell, and receive grades based on arbitrary tests that emphasize sameness over individuality. +对于任何希望开始或者加速这个转变过程的学校,我推荐一本很好的书:Jim Whitehurst 的《开放的组织》(这不应该让你感到意外)。这本书不仅可以帮助我们理解教育者如何创造更加开放、覆盖面更广的领导领导结构 —— 在这样的结构下,互相尊重让人们可以基于实时数据作出更加灵活的决策 —— 并且它所使用的语言风格也和教育者们所习惯使用的奇怪的词汇库非常契合(这种词汇库简直是教育者们第二天性)。任何组织都可以借鉴开放组织的思维提供的实用主义方法让组织成员更加开放:分享想法和资源、拥抱以共同协作为核心的文化、通过快速制作原型来开发创新思维、基于价值(而不是提出者的职级)来评估一个想法,以及创造一种融入到组织 DNA 里的很强的社区观念。通过众包的方式,这样的开放组织不仅可以从组织内部,也能够从组织外部收集想法,创造一种可以让本地化的、以学生为中心的创新蓬勃发展的环境。 -It may be news to many inside of education, but widgets—abstract units of production that evoke the idea of assembly line standardization—are not a significant part of the modern manufacturing sector. Thanks to the culture of continuous improvement described above, modern, advanced manufacturing delivers just what the individual customer wants, at a competitive price, exactly when she wants it. If we adapted this model to our schools, teachers would be more likely to collaborate and constantly refine their unique paths of growth for all students based on just-in-time needs and desires—regardless of the time, subject, or any other traditional norm. +最重要的事情是:在快速变化的未来,我们在过去所做的事情不一定仍然适用了 —— 认清楚这一点对于创造一个不断改进的文化氛围是十分关键的。对于教育者来说,这意味着我们不能只是简单地依赖在针对工厂模型发展出来的解决方案和实践方式了。我们必须从其它行业(比如说非营利组织、军事、医疗以及商业 —— 没错,甚至是商业)里借鉴数不清的最佳方案,这样至少应该能让我们*知道*如何找到让学生受益最大的办法。从教育界传统的陈词滥调里超脱出来,才有机会拥有更广阔的视角。我们可以更好地顾全大局,用更客观地视角看待我们遇到的问题,同时也知道我们在什么方面已经做得很不错。 -What I'm advocating is a clear-eyed and objective look at any idea from any sector with potential to help us better meet the needs of individual students, not that we somehow run our schools like businesses. In order for this to happen effectively, however, we need to scrutinize a leadership structure that has frankly remained stagnant for over 100 years. +通过有意识地借鉴各路思想 —— 从一年级教师到纽约时报上最新的商业、管理、领导力畅销书 —— 我们可以更好地发掘和运用校内人才,以帮助我们克服阻碍了我们的学校和区域进步的制度里的惰性。 -### Toward continuous improvement +坚持不懈地追求不断改进这件事情,不应该只局限于那种努力在一个全球化的、创新的经济环境中争取竞争力的机构,或者是负责运营学校的少数几个人。当机构里的每一个人都能不断思考怎样才能让今天比昨天做得更好的时候,这就是一个拥有优秀的文化氛围的机构。这种非常有注重协作性和创新的文化氛围,正是我们希望在这些负责改变年轻人命运的机构身上看到的。 -While I certainly appreciate the argument that education is an animal significantly different from other professions, I also believe that rethinking an organizational and leadership structure is an applicable exercise for any entity wanting to remain responsible (and responsive) to the needs of its stakeholders. Most other professions have taken a hard look at their traditional, closed, hierarchical structures and moved to ones that encourage collective autonomy per shared goals of excellence—organizational elements essential for continuous improvement. It's time our schools and districts do the same by expanding their horizon beyond sources that, while well intended, are developed from a lens of the current paradigm. -Not surprisingly, a go-to resource I recommend to any school wanting to begin or accelerate this process is _The Open Organization_ by Jim Whitehurst. Not only does the book provide a window into how educators can create more open, inclusive leadership structures—where mutual respect enables nimble decisions to be made per real-time data—but it does so in language easily adaptable to the rather strange lexicon that's second nature to educators. Open organization thinking provides pragmatic ways any organization can empower members to be more open: sharing ideas and resources, embracing a culture of collaborative participation as a top priority, developing an innovation mindset through rapid prototyping, valuing ideas based on merit rather than the rank of the person proposing them, and building a strong sense of community that's baked into the organization's DNA. Such an open organization crowd-sources ideas from both inside and outside its formal structure and creates the type of environment that enables localized, student-centered innovations to thrive. - -Here's the bottom line: Essential to a culture of continuous improvement is recognizing that what we've done in the past may not be suitable in a rapidly changing future. For educators, that means we simply can't rely on solutions and practices we developed in a factory-model paradigm. We must acknowledge countless examples of best practices from other sectors—such as non-profits, the military, the medical profession, and yes, even business—that can at least _inform_ how we rethink what we do in the best interest of students. By moving beyond the traditionally sanctioned "eduspeak" world, we create opportunities for considering perspectives. We can better see the forest for the trees, taking a more objective look at the problems we face, as well as acknowledging what we do very well. - -Intentionally considering ideas from all sources—from first year classroom teachers to the latest NYT Business & Management Leadership bestseller—offers us a powerful way to engage existing talent within our schools to help overcome the institutionalized inertia that has prevented more positive change from taking hold in our schools and districts. - -Relentlessly pursuing methods of continuous improvement should not be a behavior confined to organizations fighting to remain competitive in a global, innovation economy, nor should it be left to a select few charged with the operation of our schools. When everyone in an organization is always thinking about what they can do differently _today_ to improve what they did _yesterday_ , then you have an organization living a culture of excellence. That's the kind of radically collaborative and innovative culture we should especially expect for organizations focused on changing the lives of young people. - -I'm eagerly awaiting the day when I enter a school, recognize that spirit, and smile to myself as I say, "I've seen this before." +我非常期待,有朝一日我能在学校里感受到这种精神,然后微笑着对自己说:“这种感觉多么似曾相识啊。” -------------------------------------------------------------------------------- @@ -63,7 +59,7 @@ via: https://opensource.com/open-organization/19/4/education-culture-agile 作者:[Ben Owens][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[chen-ni](https://github.com/chen-ni) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 1d9470cc17ae536fcc6829ed8df12413e8f1a239 Mon Sep 17 00:00:00 2001 From: chen ni Date: Mon, 24 Jun 2019 13:05:09 +0800 Subject: [PATCH 104/336] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190416 Can schools be agile.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/tech/20190416 Can schools be agile.md b/sources/tech/20190416 Can schools be agile.md index 354490db5b..83f051f11f 100644 --- a/sources/tech/20190416 Can schools be agile.md +++ b/sources/tech/20190416 Can schools be agile.md @@ -22,7 +22,7 @@ ### 不再做生产线上的元件 -这种不断改进的文化氛围遇到的第一个阻碍是,教育界普遍不愿意从其它行业借鉴可以为自己所用的思想 —— 特别是来自商界的思想。第二个阻碍是,主导教育界的仍然是一种自上而下的、等级制度森严的领导模式。人们往往只能在小范围哪讨论这种系统性的、持续的改进方案,比如包括校长、助理校长、学校监管人(LCTT 译注:美国地方政府下设的一种官职,每个学校监管人管理一定数量的学校,接受学校校长的汇报)等等在内的学校领导和区域领袖。但是一小群人的参与是远远不足以带来整个组织层面的文化改革的。 +这种不断改进的文化氛围遇到的第一个阻碍是,教育界普遍不愿意从其它行业借鉴可以为自己所用的思想 —— 特别是来自商界的思想。第二个阻碍是,主导教育界的仍然是一种自上而下的、等级制度森严的领导模式。人们往往只能在小范围内讨论这种系统性的、持续的改进方案,比如包括校长、助理校长、学校监管人(LCTT 译注:美国地方政府下设的一种官职,每个学校监管人管理一定数量的学校,接受学校校长的汇报)等等在内的学校领导和区域领袖。但是一小群人的参与是远远不足以带来整个组织层面的文化改革的。 在进一步展开观点之前,我想强调一下,上面所做的概括一定是存在例外情况 的(我自己就见到过很多),不过我觉得任何一个教育界的利益相关者都应该会同意以下两点基本假设: @@ -33,7 +33,7 @@ 比如我过去就曾经提议应该向别的行业借鉴一些思想和灵感来帮助我们更好地迎合学生的需求,并且果然遭到了批评。我经常得到的回应是:“你这是在把我们的学生当成生产线上的元件来对待呀!”但是我们的学生现在就是在被当作生产线上的元件对待,并且已经无以复加了。他们按照被年龄划分的群体考入大学,每天根据刺耳的铃声的指示去上一节又一节孤立的课程,并且由一些武断的、强调同一性而不是个性的考试来评判他们的成绩。 -很多教育界人士可能不知道,生产线元件这种会让人想到流水线标准化作业的东西已经不是现代制造业里的重要组成部分了。得益于上面提到的不断改进的文化氛围,现代先进制造业已经可以做到在单个顾客产生需求的时候,以合理的价格有针对性地提供她所需要的商品。如果我们的学校也可以采用这种模式,教师们之间就更可能会产生协作,并且可以基于学生即时的需求和兴趣,不断完善每一个学生独特的成长和进步路线,而不受时间、课题或者其它传统规范的限制。 +很多教育界人士可能不知道,生产线元件这种会让人想到流水线标准化作业的东西已经不是现代制造业里的重要组成部分了。得益于上面提到的不断改进的文化氛围,现代先进制造业已经可以做到在单个顾客产生需求的时候,以合理的价格有针对性地提供她所需要的商品。如果我们的学校也可以采用这种模式,教师们之间就更可能会进行协作,并且可以基于学生即时的需求和兴趣,不断完善每一个学生独特的成长和进步路线,而不受时间、课题或者其它传统规范的限制。 我并不是要呼吁大家像经营商业一样经营我们的学校。我所主张的是,用一种清晰而客观的态度去看待任何行业的任何思想,只要它们有可能帮助我们更好地迎合学生个体的需求。不过,如果想有效率地实现这个目标,我们需要仔细研究这个 100 多年来都停滞不前的领导结构。 @@ -44,7 +44,7 @@ 对于任何希望开始或者加速这个转变过程的学校,我推荐一本很好的书:Jim Whitehurst 的《开放的组织》(这不应该让你感到意外)。这本书不仅可以帮助我们理解教育者如何创造更加开放、覆盖面更广的领导领导结构 —— 在这样的结构下,互相尊重让人们可以基于实时数据作出更加灵活的决策 —— 并且它所使用的语言风格也和教育者们所习惯使用的奇怪的词汇库非常契合(这种词汇库简直是教育者们第二天性)。任何组织都可以借鉴开放组织的思维提供的实用主义方法让组织成员更加开放:分享想法和资源、拥抱以共同协作为核心的文化、通过快速制作原型来开发创新思维、基于价值(而不是提出者的职级)来评估一个想法,以及创造一种融入到组织 DNA 里的很强的社区观念。通过众包的方式,这样的开放组织不仅可以从组织内部,也能够从组织外部收集想法,创造一种可以让本地化的、以学生为中心的创新蓬勃发展的环境。 -最重要的事情是:在快速变化的未来,我们在过去所做的事情不一定仍然适用了 —— 认清楚这一点对于创造一个不断改进的文化氛围是十分关键的。对于教育者来说,这意味着我们不能只是简单地依赖在针对工厂模型发展出来的解决方案和实践方式了。我们必须从其它行业(比如说非营利组织、军事、医疗以及商业 —— 没错,甚至是商业)里借鉴数不清的最佳方案,这样至少应该能让我们*知道*如何找到让学生受益最大的办法。从教育界传统的陈词滥调里超脱出来,才有机会拥有更广阔的视角。我们可以更好地顾全大局,用更客观地视角看待我们遇到的问题,同时也知道我们在什么方面已经做得很不错。 +最重要的事情是:在快速变化的未来,我们在过去所做的事情不一定仍然适用了 —— 认清楚这一点对于创造一个不断改进的文化氛围是十分关键的。对于教育者来说,这意味着我们不能只是简单地依赖在针对工厂模型发展出来的解决方案和实践方式了。我们必须从其它行业(比如说非营利组织、军事、医疗以及商业 —— 没错,甚至是商业)里借鉴数不清的最佳方案,这样至少应该能让我们 *知道* 如何找到让学生受益最大的办法。从教育界传统的陈词滥调里超脱出来,才有机会拥有更广阔的视角。我们可以更好地顾全大局,用更客观地视角看待我们遇到的问题,同时也知道我们在什么方面已经做得很不错。 通过有意识地借鉴各路思想 —— 从一年级教师到纽约时报上最新的商业、管理、领导力畅销书 —— 我们可以更好地发掘和运用校内人才,以帮助我们克服阻碍了我们的学校和区域进步的制度里的惰性。 From a155f2ba5eb6244d6f964d6396caebfde2e02842 Mon Sep 17 00:00:00 2001 From: chen ni Date: Mon, 24 Jun 2019 13:05:46 +0800 Subject: [PATCH 105/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {sources => translated}/tech/20190416 Can schools be agile.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20190416 Can schools be agile.md (100%) diff --git a/sources/tech/20190416 Can schools be agile.md b/translated/tech/20190416 Can schools be agile.md similarity index 100% rename from sources/tech/20190416 Can schools be agile.md rename to translated/tech/20190416 Can schools be agile.md From 4b87f145e154dbe1839c2949f47eafc12dd6dc46 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Mon, 24 Jun 2019 16:58:36 +0800 Subject: [PATCH 106/336] Update 20190111 Top 5 Linux Distributions for Productivity.md --- ... 5 Linux Distributions for Productivity.md | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md index 5bbae53e33..40f5d63791 100644 --- a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ b/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md @@ -29,69 +29,68 @@ * 教育: 适于那些需要桌面发行版可以助力他们在教育领域更创造力的人们。 +诚然,有很多很多类别的发行版可供挑选,其中的很多可能用起来十分得心应手,但这五种或许是你最为需要的。 -Yes, there are more categories to be had, many of which can get very niche-y, but these five should fill most of your needs. +### 普通生产力 -### General Productivity +对普通的生产力诉求来说,你不会找到比 [Ubuntu][1] 更为高效的了。在这个类别中首推 Ubuntu 最基础的原因是因为它实现了桌面操作系统、软件、服务的无缝集成。你可能会问为什么我不选择同类别的 Linux Mint 呢?因为 Ubuntu 现在默认的的桌面环境为 GNOME 桌面,而它拥有 GNOME 许多扩展程序的优势的加成(图 1)。 -For general productivity, you won’t get much more efficient than [Ubuntu][1]. The primary reason for choosing Ubuntu for this category is the seamless integration of apps, services, and desktop. You might be wondering why I didn’t choose Linux Mint for this category? Because Ubuntu now defaults to the GNOME desktop, it gains the added advantage of GNOME Extensions (Figure 1). ![GNOME Clipboard][3] -Figure 1: The GNOME Clipboard Indicator extension in action. +图 1:运行中的 GNOME 桌面的剪切板管理工具。 -[Used with permission][4] +[经许可使用][4] -These extensions go a very long way to aid in boosting productivity (so Ubuntu gets the nod over Mint). But Ubuntu didn’t just accept a vanilla GNOME desktop. Instead, they tweaked it to make it slightly more efficient and user-friendly, out of the box. And because Ubuntu contains just the right mixture of default, out-of-the-box, apps (that just work), it makes for a nearly perfect platform for productivity. +这些扩展程序在提升生产力方面做了很多努力(所以 Ubuntu 比 Linux Mint 获得了更多的认可)。但是 Ubuntu 不仅仅支持 vanilla 版本的 GNOME 桌面。事实上,他们致力于将它改进的更为轻量化、更为高效、以及用户友好度更高、开箱即用。总而言之,由于 Ubuntu 正确的融合了多种特性,开箱即用,完善的软件支持(仅对工作方面而言),这些特性使它几乎成为了生产力领域最为完美的一个平台。 -Whether you need to write a paper, work on a spreadsheet, code a new app, work on your company website, create marketing images, administer a server or network, or manage human resources from within your company HR tool, Ubuntu has you covered. The Ubuntu desktop distribution also doesn’t require the user to jump through many hoops to get things working … it simply works (and quite well). Finally, thanks to it’s Debian base, Ubuntu makes installing third-party apps incredibly easy. +不管你是要写一篇文档,制作一张电子表格,写一个新的软件,开啊公司的网站,设计商用的图形,管理一个服务器或是网络,抑或是在你的公司内从事人力资源管理工作, Ubuntu 都可以满足你的需求。Ubuntu 桌面发行版也并不要求你耗费很大的精力才能开始开始开展工作…他只是纯粹的工作(并且十分优秀)。最后,得益于 Debian 的基础,使得 Ubuntu 上安装第三方的软件十分简便。 -Although Ubuntu tends to be the go-to for nearly every list of “top distributions for X,” it’s very hard to argue against this particular distribution topping the list of general productivity distributions. +很难反对这一特殊的发行版在生产力发行版列表中独占鳌头,尽管 Ubuntu 几乎已经成为几乎所有“顶级发行版”列表的榜首。 -### Graphic Design +### 平面设计 -If you’re looking to up your graphic design productivity, you can’t go wrong with [Fedora Design Suite][5]. This Fedora respin was created by the team responsible for all Fedora-related art work. Although the default selection of apps isn’t a massive collection of tools, those it does include are geared specifically for the creation and manipulation of images. +如果你正在寻求提升你的平面设计效率,你不能错过[Fedora设计套件][5]。这一 Fedora 的衍生版是由负责 Fedora 艺术类项目的团队亲自操刀制作的。虽然默认选择的应用程序并不是一个庞大的工具集合,但它所包含的工具都是创建和处理图像专用的。 -With apps like GIMP, Inkscape, Darktable, Krita, Entangle, Blender, Pitivi, Scribus, and more (Figure 2), you’ll find everything you need to get your image editing jobs done and done well. But Fedora Design Suite doesn’t end there. This desktop platform also includes a bevy of tutorials that cover countless subjects for many of the installed applications. For anyone trying to be as productive as possible, this is some seriously handy information to have at the ready. I will say, however, the tutorial entry in the GNOME Favorites is nothing more than a link to [this page][6]. +有了GIMP、Inkscape、Darktable、Krita、Entangle、Blender、Pitivi、Scribus等应用程序(图 2),您将发现完成图像编辑工作所需要的一切都已经准备好了,而且准备得很好。但是Fedora设计套件并不仅限于此。这个桌面平台还包括一堆教程,涵盖了许多已安装的应用程序。对于任何想要尽可能提高效率的人来说,这将是一些非常有用的信息。不过,我要说的是,GNOME Favorites中的教程不过是[此页][6]链接的内容。 ![Fedora Design Suite Favorites][8] -Figure 2: The Fedora Design Suite Favorites menu includes plenty of tools for getting your graphic design on. +图 2: Fedora Design Suite Favorites菜单包含了许多工具,可以让您用于图形设计。 -[Used with permission][4] +[经许可使用][4] -Those that work with a digital camera will certainly appreciate the inclusion of the Entangle app, which allows you to control your DSLR from the desktop. +那些使用数码相机的用户肯定会喜欢Entangle应用程序,它可以让你在电脑上上控制单反相机。 -### Development +### 开发人员 -Nearly all Linux distributions are great platforms for programmers. However, one particular distributions stands out, above the rest, as one of the most productive tools you’ll find for the task. That OS comes from [System76][9] and it’s called [Pop!_OS][10]. Pop!_OS is tailored specifically for creators, but not of the artistic type. Instead, Pop!_OS is geared toward creators who specialize in developing, programming, and making. If you need an environment that is not only perfected suited for your development work, but includes a desktop that’s sure to get out of your way, you won’t find a better option than Pop!_OS (Figure 3). +几乎所有的Linux发行版对于程序员来说都是很好的编程平台。然而,有一种特定的发行版脱颖而出,并超越了其他发行版,它将是您见过的用于编程类最有效率的工具之一。这个操作系统来自[System76][9](译注:一家美国的计算机制造商),名为[Pop!_OS][10]。Pop!_OS是专门为创作者定制的,但不是针对艺术类。相反,Pop!_OS面向专门从事开发、编程和软件制作的程序员。如果您需要一个既能完美的胜任开发平台又包含桌面操作系统的开发环境,Pop!_OS 将会是您的不二选择。 (图 3) -What might surprise you (given how “young” this operating system is), is that Pop!_OS is also one of the single most stable GNOME-based platforms you’ll ever use. This means Pop!_OS isn’t just for creators and makers, but anyone looking for a solid operating system. One thing that many users will greatly appreciate with Pop!_OS, is that you can download an ISO specifically for your video hardware. If you have Intel hardware, [download][10] the version for Intel/AMD. If your graphics card is NVIDIA, download that specific release. Either way, you are sure go get a solid platform for which to create your masterpiece. +可能会让您感到惊讶(考虑到这个操作系统是多么“年轻”)的是Pop!_OS也是您使用过的基于 GNOME平台的最稳定系统的之一。这意味着 Pop!_OS 不只是为创造者和制造者准备的,也是为任何想要一个可靠的操作系统的人准备的。你可以下载针对你的硬件的专门 ISO 文件,这一点是许多用户十分欣赏的。如果你有英特尔硬件,[下载][10]Intel或AMD的版本。如果您的显卡是NVIDIA,请下载该特定版本。不管怎样,您肯定会得到针对不同平台进行特殊定制的稳定的版本。 ![Pop!_OS][12] -Figure 3: The Pop!_OS take on GNOME Overview. +图 3: 装有 GNOME 桌面的 Pop!_OS 一览。 -[Used with permission][4] +[经许可使用][4] -Interestingly enough, with Pop!_OS, you won’t find much in the way of pre-installed development tools. You won’t find an included IDE, or many other dev tools. You can, however, find all the development tools you need in the Pop Shop. +有趣的是,在 Pop!_OS 中,您不会找到太多预装的开发工具。你也不会找到IDE或许多其他开发工具。但是,您可以在Pop 商店中中找到所需的所有开发工具。 -### Administration - -If you’re looking to find one of the most productive distributions for admin tasks, look no further than [Debian][13]. Why? Because Debian is not only incredibly reliable, it’s one of those distributions that gets out of your way better than most others. Debian is the perfect combination of ease of use and unlimited possibility. On top of which, because this is the distribution for which so many others are based, you can bet if there’s an admin tool you need for a task, it’s available for Debian. Of course, we’re talking about general admin tasks, which means most of the time you’ll be using a terminal window to SSH into your servers (Figure 4) or a browser to work with web-based GUI tools on your network. Why bother making use of a desktop that’s going to add layers of complexity (such as SELinux in Fedora, or YaST in openSUSE)? Instead, chose simplicity. +### 管理人员 +如果你正在寻找适合管理领域的最生产力的发行版本,[Debian][13]将会是你的不二之选。为什么这么说呢?因为 Debian 不仅仅拥有无与伦比的可靠性,它也是众多能从苦海中将你解救出来的最好的一个版本。Debian是易用性和无限可能性的完美结合。最重要的是,因为它是许多其他发行版的基础,所以可以打赌的是,如果您需要一个任务的管理工具,那么它一定支持 Debian 系统。当然,我们讨论的是一般管理任务,这意味着大多数时候您需要使用终端窗口 SSH 连接到服务器(图4),或者在浏览器上使用网络上基于web的GUI工具。既然如此为什么还要使用一个复杂的桌面呢(比如Fedora中的SELinux或openSUSE中的YaST)呢?所以,应选择更为简洁易用的那一种。 ![Debian][15] -Figure 4: SSH’ing into a remote server on Debian. +图 4: 在 Debian 系统上通过SSH 连接到远程服务器。 -[Used with permission][4] +[经授权使用][4] -And because you can select which desktop you want (from GNOME, Xfce, KDE, Cinnamon, MATE, LXDE), you can be sure to have the interface that best matches your work habits. +你可以选择你想要的不同的桌面(包括GNOME, Xfce, KDE, Cinnamon, MATE, LXDE),确保你所使用的桌面外观最适合你的工作习惯。 ### 教育 -如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本从未跌出教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。还好,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - Figure 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 +如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本位列教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。还好,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - 图 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 openSUSE:Education-Li-f-e 包含了一下工具: @@ -119,20 +118,20 @@ openSUSE:Education-Li-f-e 包含了一下工具: * GIMP - 图像处理软件(译注:被誉为 Linux 上的 PhotoShop) - * Pencil - GUI prototyping tool + * Pencil - GUI 模型制作工具 * Hugin - 全景照片拼接及 HDR 效果混合软件 ![Education][18] -Figure 5: The openSUSE:Education-Li-f-e distro has plenty of tools to help you be productive in or for school. +图 5: openSUSE:Education-Li-f-e 发行版拥有大量的工具可以帮你在学校中变得更为高效。 -[Used with permission][4] +[经许可使用][4] -Also included with openSUSE:Education-Li-f-e is the [KIWI-LTSP Server][19]. The KIWI-LTSP Server is a flexible, cost effective solution aimed at empowering schools, businesses, and organizations all over the world to easily install and deploy desktop workstations. Although this might not directly aid the student to be more productive, it certainly enables educational institutions be more productive in deploying desktops for students to use. For more information on setting up KIWI-LTSP, check out the openSUSE [KIWI-LTSP quick start guide][20]. +同时还集成在 openSUSE:Education-Li-f-e 中的还有 [KIWI-LTSP Server][19] 。Also included with openSUSE:Education-Li-f-e is the [KIWI-LTSP Server][19]. KIWI-LTSP KIWI-LTSP服务器是一个灵活的、成本有效的解决方案,旨在使全世界的学校、企业和组织能够轻松地安装和部署桌面工作站。虽然这可能不会直接帮助学生变得更具创造力,但它肯定会使教育机构在部署供学生使用的桌面时更有效率。有关配置 KIWI-LTSP 的更多信息,请查看openSUSE [KIWI-LTSP quick start guide][20]. -Learn more about Linux through the free ["Introduction to Linux"][21]course from The Linux Foundation and edX. +通过 Linux 基金会和 edX 的免费["入门介绍"][21]课程来了解更多关于 Linux 的知识。 -------------------------------------------------------------------------------- @@ -140,7 +139,7 @@ via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productiv 作者:[Jack Wallen][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[qfzy1233](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From fc08149d062103335c034901f853d1db14d737b5 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Mon, 24 Jun 2019 17:04:03 +0800 Subject: [PATCH 107/336] Rename sources/tech/20190111 Top 5 Linux Distributions for Productivity.md to translated/tech/20190111 Top 5 Linux Distributions for Productivity.md --- .../tech/20190111 Top 5 Linux Distributions for Productivity.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20190111 Top 5 Linux Distributions for Productivity.md (100%) diff --git a/sources/tech/20190111 Top 5 Linux Distributions for Productivity.md b/translated/tech/20190111 Top 5 Linux Distributions for Productivity.md similarity index 100% rename from sources/tech/20190111 Top 5 Linux Distributions for Productivity.md rename to translated/tech/20190111 Top 5 Linux Distributions for Productivity.md From 8ad00bd28e3fbcc3cc7bb45ebb82ced71240b61a Mon Sep 17 00:00:00 2001 From: darksun Date: Mon, 24 Jun 2019 21:13:54 +0800 Subject: [PATCH 108/336] translate done: 20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md --- ... Tray Indicator For Your Tasks on Linux.md | 187 ------------------ ... Tray Indicator For Your Tasks on Linux.md | 187 ++++++++++++++++++ 2 files changed, 187 insertions(+), 187 deletions(-) delete mode 100644 sources/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md create mode 100644 translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md diff --git a/sources/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md b/sources/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md deleted file mode 100644 index d9d42b7a2f..0000000000 --- a/sources/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md +++ /dev/null @@ -1,187 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (lujun9972) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create a Custom System Tray Indicator For Your Tasks on Linux) -[#]: via: (https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux) -[#]: author: (M.Hanny Sabbagh https://fosspost.org/author/mhsabbagh) - -Create a Custom System Tray Indicator For Your Tasks on Linux -====== - -System Tray icons are still considered to be an amazing functionality today. By just right-clicking on the icon, and then selecting which actions you would like to take, you may ease your life a lot and save many unnecessary clicks on daily basis. - -When talking about useful system tray icons, examples like Skype, Dropbox and VLC do come to mind: - -![Create a Custom System Tray Indicator For Your Tasks on Linux 11][1] - -However, system tray icons can actually be quite a lot more useful; By simply building one yourself for your own needs. In this tutorial, we’ll explain how to do that for you in very simple steps. - -### Prerequisites - -We are going to build a custom system tray indicator using Python. Python is probably installed by default on all the major Linux distributions, so just check it’s there (version 2.7). Additionally, we’ll need the gir1.2-appindicator3 package installed. It’s the library allowing us to easily create system tray indicators. - -To install it on Ubuntu/Mint/Debian: - -``` -sudo apt-get install gir1.2-appindicator3 -``` - -On Fedora: - -``` -sudo dnf install libappindicator-gtk3 -``` - -For other distributions, just search for any packages containing appindicator. - -On GNOME Shell, system tray icons are removed starting from 3.26. You’ll need to install the [following extension][2] (Or possibly other extensions) to re-enable the feature on your desktop. Otherwise, you won’t be able to see the indicator we are going to create here. - -### Basic Code - -Here’s the basic code of the indicator: - -``` -#!/usr/bin/python -import os -from gi.repository import Gtk as gtk, AppIndicator3 as appindicator - -def main(): - indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) - indicator.set_status(appindicator.IndicatorStatus.ACTIVE) - indicator.set_menu(menu()) - gtk.main() - -def menu(): - menu = gtk.Menu() - - command_one = gtk.MenuItem('My Notes') - command_one.connect('activate', note) - menu.append(command_one) - - exittray = gtk.MenuItem('Exit Tray') - exittray.connect('activate', quit) - menu.append(exittray) - - menu.show_all() - return menu - -def note(_): - os.system("gedit $HOME/Documents/notes.txt") - -def quit(_): - gtk.main_quit() - -if __name__ == "__main__": - main() -``` - -We’ll explain how the code works later. But for know, just save it in a text file under the name tray.py, and run it using Python: - -``` -python tray.py -``` - -You’ll see the indicator working as follows: - -![Create a Custom System Tray Indicator For Your Tasks on Linux 13][3] - -Now, to explain how we did the magic: - - * The first 3 lines of the code are nothing more than just specifying the Python path and importing the libraries we are going to use in our indicator. - - * def main() : This is the main function of the indicator. Under it we write the code to initialize and build the indicator. - - * indicator = appindicator.Indicator.new(“customtray”, “semi-starred-symbolic”, appindicator.IndicatorCategory.APPLICATION_STATUS) : Here we are specially creating a new indicator and calling it `customtray` . This is the special name of the indicator so that the system doesn’t mix it with other indicators that may be running. Also, we used the `semi-starred-symbolic` icon name as the default icon for our indicator. You could possibly change thing to any other things; Say `firefox` (if you want to see Firefox icon being used for the indicator), or any other icon name you would like. The last part regarding the `APPLICATION_STATUS` is just ordinary code for the categorization/scope of that indicator. - - * `indicator.set_status(appindicator.IndicatorStatus.ACTIVE)` : This line just turns the indicator on. - - * `indicator.set_menu(menu())` : Here, we are saying that we want to use the `menu()` function (which we’ll define later) for creating the menu items of our indicator. This is important so that when you click on the indicator, you can see a list of possible actions to take. - - * `gtk.main()` : Just run the main GTK loop. - - * Under `menu()` you’ll see that we are creating the actions/items we want to provide using our indicator. `command_one = gtk.MenuItem(‘My Notes’)` simply initializes the first menu item with the text “My notes”, and then `command_one.connect(‘activate’, note)` connects the `activate` signal of that menu item to the `note()` function defined later; In other words, we are telling our system here: “When this menu item is clicked, run the note() function”. Finally, `menu.append(command_one)` adds that menu item to the list. - - * The lines regarding `exittray` are just for creating an exit menu item to close the indicator any time you want. - - * `menu.show_all()` and `return menu` are just ordinary codes for returning the menu list to the indicator. - - * Under `note(_)` you’ll see the code that must be executed when the “My Notes” menu item is clicked. Here, we just wrote `os.system(“gedit $HOME/Documents/notes.txt”)` ; The `os.system` function is a function that allows us to run shell commands from inside Python, so here we wrote a command to open a file called `notes.txt` under the `Documents` folder in our home directory using the `gedit` editor. This for example can be your daily notes taking program from now on! - -### Adding your Needed Tasks - -There are only 2 things you need to touch in the code: - - 1. Define a new menu item under `menu()` for your desired task. - - 2. Create a new function to run a specific action when that menu item is clicked. - - -So, let’s say that you want to create a new menu item, which when clicked, plays a specific video/audio file on your hard disk using VLC? To do it, simply add the following 3 lines in line 17: - -``` -command_two = gtk.MenuItem('Play video/audio') -command_two.connect('activate', play) -menu.append(command_two) -``` - -And the following lines in line 30: - -``` -def play(_): - os.system("vlc /home//Videos/somevideo.mp4") -``` - -Replace /home//Videos/somevideo.mp4 with the path to the video/audio file you want. Now save the file and run the indicator again: - -``` -python tray.py -``` - -This is how you’ll see it now: - -![Create a Custom System Tray Indicator For Your Tasks on Linux 15][4] - -And when you click on the newly-created menu item, VLC will start playing! - -To create other items/tasks, simply redo the steps again. Just be careful to replace command_two with another name, like command_three, so that no clash between variables happen. And then define new separate functions like what we did with the play(_) function. - -The possibilities are endless from here; I am using this way for example to fetch some data from the web (using the urllib2 library) and display them for me any time. I am also using it for playing an mp3 file in the background using the mpg123 command, and I am defining another menu item to killall mpg123 to stop playing that audio whenever I want. CS:GO on Steam for example takes a huge time to exit (the window doesn’t close automatically), so as a workaround for this, I simply minimize the window and click on a menu item that I created which will execute killall -9 csgo_linux64. - -You can use this indicator for anything: Updating your system packages, possibly running some other scripts any time you want.. Literally anything. - -### Autostart on Boot - -We want our system tray indicator to start automatically on boot, we don’t want to run it manually each time. To do that, simply add the following command to your startup applications (after you replace the path to the tray.py file with yours): - -``` -nohup python /home//tray.py & -``` - -The very next time you reboot your system, the indicator will start working automatically after boot! - -### Conclusion - -You now know how to create your own system tray indicator for any task that you may want. This method should save you a lot of time depending on the nature and number of tasks you need to run on daily basis. Some users may prefer creating aliases from the command line, but this will require you to always open the terminal window or have a drop-down terminal emulator available, while here, the system tray indicator is always working and available for you. - -Have you used this method to run your tasks before? Would love to hear your thoughts. - - --------------------------------------------------------------------------------- - -via: https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux - -作者:[M.Hanny Sabbagh][a] -选题:[lujun9972][b] -译者:[lujun9972](https://github.com/lujun9972) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fosspost.org/author/mhsabbagh -[b]: https://github.com/lujun9972 -[1]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/02/Screenshot-at-2019-02-28-0808.png?resize=407%2C345&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 12) -[2]: https://extensions.gnome.org/extension/1031/topicons/ -[3]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/03/Screenshot-at-2019-03-02-1041.png?resize=434%2C140&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 14) -[4]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/03/Screenshot-at-2019-03-02-1141.png?resize=440%2C149&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 16) diff --git a/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md b/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md new file mode 100644 index 0000000000..a3efed0db0 --- /dev/null +++ b/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md @@ -0,0 +1,187 @@ +[#]: collector: (lujun9972) +[#]: translator: (lujun9972) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Create a Custom System Tray Indicator For Your Tasks on Linux) +[#]: via: (https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux) +[#]: author: (M.Hanny Sabbagh https://fosspost.org/author/mhsabbagh) + +在 Linux 上为你的任务创建一个自定义的系统托盘指示器 +====== + +时至今日系统托盘图标依然很有用。只需要右击图标,然后选择想要的动作即可,你可以大幅简化你的生活并且减少日常行为中的大量无用的点击。 + +一说到有用的系统托盘图标,我们很容易就想到 Skype,Dropbox 和 VLC: + +![Create a Custom System Tray Indicator For Your Tasks on Linux 11][1] + +然而系统托盘图标实际上要更有用得多; 你可以根据自己的需求创建自己的系统托盘图标。本指导将会教你通过简单的几个步骤来实现这一目的。 + +### 前置条件 + +我们将要用 Python 来实现一个自定义的系统托盘指示器。Python 默认在所有主流的 Linux 发行版中都有安装,因此你只需要确定一下它已经确实被安装好了(版本为 2.7)。另外,我们还需要安装好 gir1.2-appindicator3 包。该库能够让我们很容易就能创建系统图标指示器。 + +在 Ubuntu/Mint/Debian 上安装: + +``` +sudo apt-get install gir1.2-appindicator3 +``` + +在 Fedora 上安装: + +``` +sudo dnf install libappindicator-gtk3 +``` + +对于其他发行版,只需要搜索包含 appindicator 的包就行了。 + +在 GNOME Shell 3.26 开始,系统托盘图标被删除了。你需要安装 [这个扩展 ][2] (或者其他扩展) 来为桌面启用该功能。否则你无法看到我们创建的指示器。 + +### 基础代码 + +下面是指示器的基础代码: + +``` +#!/usr/bin/python +import os +from gi.repository import Gtk as gtk, AppIndicator3 as appindicator + +def main(): + indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) + indicator.set_status(appindicator.IndicatorStatus.ACTIVE) + indicator.set_menu(menu()) + gtk.main() + +def menu(): + menu = gtk.Menu() + + command_one = gtk.MenuItem('My Notes') + command_one.connect('activate', note) + menu.append(command_one) + + exittray = gtk.MenuItem('Exit Tray') + exittray.connect('activate', quit) + menu.append(exittray) + + menu.show_all() + return menu + +def note(_): + os.system("gedit $HOME/Documents/notes.txt") + +def quit(_): + gtk.main_quit() + +if __name__ == "__main__": + main() +``` + +我们待会会解释一下代码是怎么工作的。但是现在,让我们将该文本保存为 tray.py,然后使用 Python 运行之: + +``` +python tray.py +``` + +我们会看到指示器运行起来了,如下图所示: + +![Create a Custom System Tray Indicator For Your Tasks on Linux 13][3] + +现在,让我们解释一下魔术的原理: + + * 前三行代码仅仅用来指明 Python 的路径并且导入需要的库。 + + * def main() : 此为指示器的主函数。该函数的代码用来初始化并创建指示器。 + + * indicator = appindicator.Indicator.new(“customtray”,“semi-starred-symbolic”,appindicator.IndicatorCategory.APPLICATION_STATUS) : 这里我们指明创建一个名为 `customtray` 的指示器。这是指示器的唯一名称这样系统就不会与其他运行中的指示器搞混了。同时我们使用名为 `semi-starred-symbolic` 的图标作为指示器的默认图标。你可以将之改成任何其他值; 比如 `firefox` (如果你希望该指示器使用 FireFox 的图标),或任何其他希望的图标名。最后与 `APPLICATION_STATUS` 相关的部分是指明指示器类别/范围的常规代码。 + + * `indicator.set_status(appindicator.IndicatorStatus.ACTIVE)` : 这一行激活指示器。 + + * `indicator.set_menu(menu())` : 这里我的是我们想使用 `menu()` 函数 (我们会在后面定义) 来为我们的指示器创建菜单项。这很重要,可以让你右击指示器后看到一个可以实施行为的列别。 + + * `gtk.main()` : 运行 GTK 主循环。 + + * 在 `menu()` 中我们定义了想要指示器提供的行为或项目。`command_one = gtk.MenuItem(‘My Notes’)` 仅仅使用文本 “My notes” 来初始化第一个菜单项,接下来 `command_one.connect(‘activate’,note)` 将菜单的 `activate` 信号与后面定义的 `note()` 函数相连接; 换句话说,我们告诉我们的系统:“当该菜单项被点击,运行 note() 函数”。最后,`menu.append(command_one)` 将菜单项添加到列表中。 + + * `exittray` 相关的行是为了创建一个退出的菜单项让你在想要的时候关闭指示器。 + + * `menu.show_all()` 以及 `return menu` 只是返回菜单项给指示器的常规代码。 + + * 在 `note(_)` 下面是点击 “My Notes” 菜单项时需要执行的代码。这里只是 `os.system(“gedit $HOME/Documents/notes.txt”)` 这一句话; `os.system` 函数允许你在 Python 中运行 shell 命令,因此这里我们写了一行命令来使用 `gedit` 打开 home 目录下 `Documents` 目录中名为 `notes.txt` 的文件。例如,这个可以称为你今后的日常笔记程序了! + +### 添加你所需要的任务 + +你只需要修改代码中的两块地方: + + 1。在 `menu()` 中为你想要的任务定义新的菜单项。 + + 2。创建一个新的函数让给该菜单项被点击时执行特定的行为。 + + +所以,比如说你想要创建一个新菜单项,在点击后,会使用 VLC 播放硬盘中某个特定的视频/音频文件?要做到这一点,只需要在地 17 行处添加下面三行内容: + +``` +command_two = gtk.MenuItem('Play video/audio') +command_two.connect('activate', play) +menu.append(command_two) +``` + +然后在地 30 行添加下面内容: + +``` +def play(_): + os.system("vlc /home//Videos/somevideo.mp4") +``` + +将 /home//Videos/somevideo.mp4 替换成你想要播放的视频/音频文件路径。现在保存该文件然后再次运行该指示器: + +``` +python tray.py +``` + +你将会看到: + +![Create a Custom System Tray Indicator For Your Tasks on Linux 15][4] + +而且当你点击新创建的菜单项时,VLC 会开始播放! + +要创建其他项目/任务,只需要重复上面步骤即可。但是要小心,需要用其他命令来为 command_two 改名,比如 command_three,这样在变量之间才不会产生冲突。然后定义新函数,就像 play(_) 函数那样。 + +从这里开始的可能性是无穷的; 比如我用这种方法来从网上获取数据(使用 urllib2 库) 并显示出来。我也用它来在后台使用 mpg123 命令播放 mp3 文件,而且我还定义了另一个菜单项来杀掉所有的 mpg123 来随时停止播放音频。比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 killall -9 csgo_linux64 命令。 + +你可以使用这个指示器来做任何事情:升级系统包,运行其他脚本。字面上的任何事情。 + +### 自动启动 + +我们希望系统托盘指示器能在系统启动后自动启动,而不用每次都手工运行。要做到这一点,只需要在自启动应用程序中添加下面命令即可(但是你需要将 tray.py 的路径替换成你自己的路径): + +``` +nohup python /home//tray.py & +``` + +下次重启系统,指示器会在系统启动后自动开始工作了! + +### 结论 + +你现在知道了如何为你想要的任务创建自己的系统托盘指示器了。根据每天需要运行的任务的性质和数量,此方法可以节省大量时间。有些人偏爱从命令行创建别名,但是这需要你每次都打开终端窗口或者需要有一个可用的下拉式终端仿真器,而这里,这个系统托盘指示器一直在工作,随时可用。 + +你以前用过这个方法来运行你的任务吗?很想听听你的想法。 + + +-------------------------------------------------------------------------------- + +via: https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux + +作者:[M.Hanny Sabbagh][a] +选题:[lujun9972][b] +译者:[lujun9972](https://github.com/lujun9972) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fosspost.org/author/mhsabbagh +[b]: https://github.com/lujun9972 +[1]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/02/Screenshot-at-2019-02-28-0808.png?resize=407%2C345&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 12) +[2]: https://extensions.gnome.org/extension/1031/topicons/ +[3]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/03/Screenshot-at-2019-03-02-1041.png?resize=434%2C140&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 14) +[4]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/03/Screenshot-at-2019-03-02-1141.png?resize=440%2C149&ssl=1 (Create a Custom System Tray Indicator For Your Tasks on Linux 16) From 29ad5c041f38e185c7332a10b3ab50b91f5d1800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Mon, 24 Jun 2019 21:47:25 +0800 Subject: [PATCH 109/336] Transalted --- ...emove Unwanted or Junk Files) on Ubuntu.md | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) rename {sources => translated}/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md (52%) diff --git a/sources/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md b/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md similarity index 52% rename from sources/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md rename to translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md index 12d8fe588b..c8ddd01d91 100644 --- a/sources/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md +++ b/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md @@ -7,28 +7,28 @@ [#]: via: (https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-space-ubuntu-mint-debian/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu +5种简单的方法来在 Ubuntu 上释放空间(移除不想要的或没有用的文件) ====== -Most of us may perform this action whenever we fall into out of disk space on system. +我们中的大多数人可能在系统磁盘存储不足的情况下执行这个操作。 -Most of us may perform this action whenever we are running out of space on Linux system +我们中的大多数人可能在 Linux 系统磁盘存储不足的情况下执行这个操作。 -It should be performed frequently, to make space for installing a new application and dealing with other files. +它应该被经常执行,来为安装一个新的应用程序和处理其它文件弥补磁盘存储空间。 -Housekeeping is one of the routine task of Linux administrator, which allow them to maintain the disk utilization is in under threshold. +内务处理是 Linux 管理员的一个日常任务,管理员允许内务处理在阈值下维持磁盘利用率。 -There are several ways we can clean up our system space. +这里有一些我们可以清理我们系统空间的方法。 -There is no need to clean up your system when you have TB of storage capacity. +当你有 TB 级存储容量时,不需要清理你的系统。 -But if your have limited space then freeing up disk space becomes a necessity. +但是,如果你空间有限,那么释放磁盘空间,变的不可避免。 -In this article, I’ll show you some of the easiest or simple ways to clean up your Ubuntu system and get more space. +在这篇文章中,我将向你展示一些最容易的或简单的方法来清理你的 Ubuntu 系统,获得更多空间。 -### How To Check Free Space On Ubuntu Systems? +### 在 Ubuntu 系统上如何检查可用的空间? -Use **[df Command][1]** to check current disk utilization on your system. +在你的系统上使用 **[df 命令][1]** 来检查当前磁盘利用率。 ``` $ df -h @@ -41,18 +41,18 @@ tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup ``` -GUI users can use “Disk Usage Analyzer tool” to view current usage. +图形界面用户可以使用“磁盘利用率分析器工具”来查看当前利用率。 [![][2]![][2]][3] -### 1) Remove The Packages That Are No Longer Required +### 1) 移除不再需要的软件包 -The following command removes the dependency libs and packages that are no longer required by the system. +下面的命令移除系统不再需要依赖的库和软件包。 -These packages were installed automatically to satisfy the dependencies of an installed package. +这些软件包自动地安装来使一个被安装软件包满足的依赖关系。 -Also, it removes old Linux kernels that were installed in the system. +同样,它移除安装在系统中的旧的 Linux 内核。 -It removes orphaned packages which are not longer needed from the system, but not purges them. +它移除不再被系统需要的孤立的软件包,但是不清除它们。 ``` $ sudo apt-get autoremove @@ -71,7 +71,7 @@ After this operation, 189 MB disk space will be freed. Do you want to continue? [Y/n] ``` -To purge them, use the `--purge` option together with the command for that. +为清除它们,与命令一起使用 `--purge` 选项。 ``` $ sudo apt-get autoremove --purge @@ -90,67 +90,67 @@ After this operation, 189 MB disk space will be freed. Do you want to continue? [Y/n] ``` -### 2) Empty The Trash Can +### 2) 清空回收站 -There might a be chance, that you may have a large amount of useless data residing in your trash can. +这可能有风险,你可能有大量的无用数据存在于你的回收站中。 -It takes up your system space. This is one of the best way to clear up those and get some free space on your system. +它占用你的系统空间。这是最好的一个方法来在你的系统上清理这些无用的数据,并获取一些可用的空间。 -To clean up this, simple use the file manager to empty your trash can. +为清理这些,简单地使用文件管理器来清空你的回收站。 [![][2]![][2]][4] -### 3) Clean up the APT cache +### 3) 清理 APT 缓存文件 -Ubuntu uses **[APT Command][5]** (Advanced Package Tool) for package management like installing, removing, searching, etc,. +Ubuntu 使用 **[APT 命令][5]** (高级软件包工具)用于软件包管理,像:安装,移除,搜索等等。 -By default every Linux operating system keeps a cache of downloaded and installed packages on their respective directory. +默认情况下,每个 Linux 操作系统在它们各自的命令保留下载和安装的软件包的缓冲。 -Ubuntu also does the same, it keeps every updates it downloads and installs in a cache on your disk. +Ubuntu 也做相同的事,它以缓冲的形式在你的磁盘上保留它下载和安装的每次更新。 -Ubuntu system keeps a cache of DEB packages in /var/cache/apt/archives directory. +Ubuntu 在 /var/cache/apt/archives 目录中保留 DEB 软件包的缓冲文件。 -Over time, this cache can quickly grow and hold a lot of space on your system. +随着时间推移,这些缓存可能快速增长,并在你的系统上占有很多空间。 -Run the following command to check the current utilization of APT cache. +运行下面的命令来检查当前 APT 缓存文件的使用率。 ``` $ sudo du -sh /var/cache/apt 147M /var/cache/apt ``` -It cleans obsolete deb-packages. I mean to say, less than clean. +它清理过时的 deb 软件包。我想说,一点都清理不干净。 ``` $ sudo apt-get autoclean ``` -It removes all packages kept in the apt cache. +它移除所有在 apt 缓存中的软件包。 ``` $ sudo apt-get clean ``` -### 4) Uninstall the unused applications +### 4) 卸载不使用的应用程序 -I would request you to check the installed packages and games on your system and delete them if you are using rarely. +我可能要求你来检查在你的系统上安装的软件包和游戏,,删除它们,如果你很少使用。 -This can be easily done via “Ubuntu Software Center”. +这可以简单地完成,通过 “Ubuntu 软件中心”。 [![][2]![][2]][6] -### 5) Clean up the thumbnail cache +### 5) 清理缩略图缓存 -The cache folder is a place where programs stored data they may need again, it is kept for speed but is not essential to keep. It can be generated again or downloaded again. +缓存文件夹是程序存储它们可能再次需要的数据的地方,它是为速度保留的,而不是必需保留的。它可以被再次生成或再次下载。 -If it’s really filling up your hard drive then you can delete things without worrying. +假如它真的填满你的硬盘,那么你可以删除一些东西而不用担心。 -Run the following command to check the current utilization of APT cache. +运行下面的命令来检查当前 APT 缓存的利用率。 ``` $ du -sh ~/.cache/thumbnails/ 412K /home/daygeek/.cache/thumbnails/ ``` -Run the following command to delete them permanently from your system. +运行下面的命令来从你的系统中永久地删除它们。 ``` $ rm -rf ~/.cache/thumbnails/* @@ -162,7 +162,7 @@ via: https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-sp 作者:[Magesh Maruthamuthu][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 0a6897257420d4b4f7819a3bd181f710a8bd1139 Mon Sep 17 00:00:00 2001 From: darksun Date: Mon, 24 Jun 2019 22:12:47 +0800 Subject: [PATCH 110/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190331=20Codeca?= =?UTF-8?q?demy=20vs.=20The=20BBC=20Micro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190331 Codecademy vs. The BBC Micro.md --- .../20190331 Codecademy vs. The BBC Micro.md | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 sources/talk/20190331 Codecademy vs. The BBC Micro.md diff --git a/sources/talk/20190331 Codecademy vs. The BBC Micro.md b/sources/talk/20190331 Codecademy vs. The BBC Micro.md new file mode 100644 index 0000000000..e4720315cc --- /dev/null +++ b/sources/talk/20190331 Codecademy vs. The BBC Micro.md @@ -0,0 +1,129 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Codecademy vs. The BBC Micro) +[#]: via: (https://twobithistory.org/2019/03/31/bbc-micro.html) +[#]: author: (Two-Bit History https://twobithistory.org) + +Codecademy vs. The BBC Micro +====== + +In the late 1970s, the computer, which for decades had been a mysterious, hulking machine that only did the bidding of corporate overlords, suddenly became something the average person could buy and take home. An enthusiastic minority saw how great this was and rushed to get a computer of their own. For many more people, the arrival of the microcomputer triggered helpless anxiety about the future. An ad from a magazine at the time promised that a home computer would “give your child an unfair advantage in school.” It showed a boy in a smart blazer and tie eagerly raising his hand to answer a question, while behind him his dim-witted classmates look on sullenly. The ad and others like it implied that the world was changing quickly and, if you did not immediately learn how to use one of these intimidating new devices, you and your family would be left behind. + +In the UK, this anxiety metastasized into concern at the highest levels of government about the competitiveness of the nation. The 1970s had been, on the whole, an underwhelming decade for Great Britain. Both inflation and unemployment had been high. Meanwhile, a series of strikes put London through blackout after blackout. A government report from 1979 fretted that a failure to keep up with trends in computing technology would “add another factor to our poor industrial performance.”1 The country already seemed to be behind in the computing arena—all the great computer companies were American, while integrated circuits were being assembled in Japan and Taiwan. + +In an audacious move, the BBC, a public service broadcaster funded by the government, decided that it would solve Britain’s national competitiveness problems by helping Britons everywhere overcome their aversion to computers. It launched the _Computer Literacy Project_ , a multi-pronged educational effort that involved several TV series, a few books, a network of support groups, and a specially built microcomputer known as the BBC Micro. The project was so successful that, by 1983, an editor for BYTE Magazine wrote, “compared to the US, proportionally more of Britain’s population is interested in microcomputers.”2 The editor marveled that there were more people at the Fifth Personal Computer World Show in the UK than had been to that year’s West Coast Computer Faire. Over a sixth of Great Britain watched an episode in the first series produced for the _Computer Literacy Project_ and 1.5 million BBC Micros were ultimately sold.3 + +[An archive][1] containing every TV series produced and all the materials published for the _Computer Literacy Project_ was put on the web last year. I’ve had a huge amount of fun watching the TV series and trying to imagine what it would have been like to learn about computing in the early 1980s. But what’s turned out to be more interesting is how computing was _taught_. Today, we still worry about technology leaving people behind. Wealthy tech entrepreneurs and governments spend lots of money trying to teach kids “to code.” We have websites like Codecademy that make use of new technologies to teach coding interactively. One would assume that this approach is more effective than a goofy ’80s TV series. But is it? + +### The Computer Literacy Project + +The microcomputer revolution began in 1975 with the release of [the Altair 8800][2]. Only two years later, the Apple II, TRS-80, and Commodore PET had all been released. Sales of the new computers exploded. In 1978, the BBC explored the dramatic societal changes these new machines were sure to bring in a documentary called “Now the Chips Are Down.” + +The documentary was alarming. Within the first five minutes, the narrator explains that microelectronics will “totally revolutionize our way of life.” As eerie synthesizer music plays, and green pulses of electricity dance around a magnified microprocessor on screen, the narrator argues that the new chips are why “Japan is abandoning its ship building, and why our children will grow up without jobs to go to.” The documentary goes on to explore how robots are being used to automate car assembly and how the European watch industry has lost out to digital watch manufacturers in the United States. It castigates the British government for not doing more to prepare the country for a future of mass unemployment. + +The documentary was supposedly shown to the British Cabinet.4 Several government agencies, including the Department of Industry and the Manpower Services Commission, became interested in trying to raise awareness about computers among the British public. The Manpower Services Commission provided funds for a team from the BBC’s education division to travel to Japan, the United States, and other countries on a fact-finding trip. This research team produced a report that cataloged the ways in which microelectronics would indeed mean major changes for industrial manufacturing, labor relations, and office work. In late 1979, it was decided that the BBC should make a ten-part TV series that would help regular Britons “learn how to use and control computers and not feel dominated by them.”5 The project eventually became a multimedia endeavor similar to the _Adult Literacy Project_ , an earlier BBC undertaking involving both a TV series and supplemental courses that helped two million people improve their reading. + +The producers behind the _Computer Literacy Project_ were keen for the TV series to feature “hands-on” examples that viewers could try on their own if they had a microcomputer at home. These examples would have to be in BASIC, since that was the language (really the entire shell) used on almost all microcomputers. But the producers faced a thorny problem: Microcomputer manufacturers all had their own dialects of BASIC, so no matter which dialect they picked, they would inevitably alienate some large fraction of their audience. The only real solution was to create a new BASIC—BBC BASIC—and a microcomputer to go along with it. Members of the British public would be able to buy the new microcomputer and follow along without worrying about differences in software or hardware. + +The TV producers and presenters at the BBC were not capable of building a microcomputer on their own. So they put together a specification for the computer they had in mind and invited British microcomputer companies to propose a new machine that met the requirements. The specification called for a relatively powerful computer because the BBC producers felt that the machine should be able to run real, useful applications. Technical consultants for the _Computer Literacy Project_ also suggested that, if it had to be a BASIC dialect that was going to be taught to the entire nation, then it had better be a good one. (They may not have phrased it exactly that way, but I bet that’s what they were thinking.) BBC BASIC would make up for some of BASIC’s usual shortcomings by allowing for recursion and local variables.6 + +The BBC eventually decided that a Cambridge-based company called Acorn Computers would make the BBC Micro. In choosing Acorn, the BBC passed over a proposal from Clive Sinclair, who ran a company called Sinclair Research. Sinclair Research had brought mass-market microcomputing to the UK in 1980 with the Sinclair ZX80. Sinclair’s new computer, the ZX81, was cheap but not powerful enough for the BBC’s purposes. Acorn’s new prototype computer, known internally as the Proton, would be more expensive but more powerful and expandable. The BBC was impressed. The Proton was never marketed or sold as the Proton because it was instead released in December 1981 as the BBC Micro, also affectionately called “The Beeb.” You could get a 16k version for £235 and a 32k version for £335. + +In 1980, Acorn was an underdog in the British computing industry. But the BBC Micro helped establish the company’s legacy. Today, the world’s most popular microprocessor instruction set is the ARM architecture. “ARM” now stands for “Advanced RISC Machine,” but originally it stood for “Acorn RISC Machine.” ARM Holdings, the company behind the architecture, was spun out from Acorn in 1990. + +![Picture of the BBC Micro.][3] _A bad picture of a BBC Micro, taken by me at the Computer History Museum +in Mountain View, California._ + +### The Computer Programme + +A dozen different TV series were eventually produced as part of the _Computer Literacy Project_ , but the first of them was a ten-part series known as _The Computer Programme_. The series was broadcast over ten weeks at the beginning of 1982. A million people watched each week-night broadcast of the show; a quarter million watched the reruns on Sunday and Monday afternoon. + +The show was hosted by two presenters, Chris Serle and Ian McNaught-Davis. Serle plays the neophyte while McNaught-Davis, who had professional experience programming mainframe computers, plays the expert. This was an inspired setup. It made for [awkward transitions][4]—Serle often goes directly from a conversation with McNaught-Davis to a bit of walk-and-talk narration delivered to the camera, and you can’t help but wonder whether McNaught-Davis is still standing there out of frame or what. But it meant that Serle could voice the concerns that the audience would surely have. He can look intimidated by a screenful of BASIC and can ask questions like, “What do all these dollar signs mean?” At several points during the show, Serle and McNaught-Davis sit down in front of a computer and essentially pair program, with McNaught-Davis providing hints here and there while Serle tries to figure it out. It would have been much less relatable if the show had been presented by a single, all-knowing narrator. + +The show also made an effort to demonstrate the many practical applications of computing in the lives of regular people. By the early 1980s, the home computer had already begun to be associated with young boys and video games. The producers behind _The Computer Programme_ sought to avoid interviewing “impressively competent youngsters,” as that was likely “to increase the anxieties of older viewers,” a demographic that the show was trying to attract to computing.7 In the first episode of the series, Gill Nevill, the show’s “on location” reporter, interviews a woman that has bought a Commodore PET to help manage her sweet shop. The woman (her name is Phyllis) looks to be 60-something years old, yet she has no trouble using the computer to do her accounting and has even started using her PET to do computer work for other businesses, which sounds like the beginning of a promising freelance career. Phyllis says that she wouldn’t mind if the computer work grew to replace her sweet shop business since she enjoys the computer work more. This interview could instead have been an interview with a teenager about how he had modified _Breakout_ to be faster and more challenging. But that would have been encouraging to almost nobody. On the other hand, if Phyllis, of all people, can use a computer, then surely you can too. + +While the show features lots of BASIC programming, what it really wants to teach its audience is how computing works in general. The show explains these general principles with analogies. In the second episode, there is an extended discussion of the Jacquard loom, which accomplishes two things. First, it illustrates that computers are not based only on magical technology invented yesterday—some of the foundational principles of computing go back two hundred years and are about as simple as the idea that you can punch holes in card to control a weaving machine. Second, the interlacing of warp and weft threads is used to demonstrate how a binary choice (does the weft thread go above or below the warp thread?) is enough, when repeated over and over, to produce enormous variation. This segues, of course, into a discussion of how information can be stored using binary digits. + +Later in the show there is a section about a steam organ that plays music encoded in a long, segmented roll of punched card. This time the analogy is used to explain subroutines in BASIC. Serle and McNaught-Davis lay out the whole roll of punched card on the floor in the studio, then point out the segments where it looks like a refrain is being repeated. McNaught-Davis explains that a subroutine is what you would get if you cut out those repeated segments of card and somehow added an instruction to go back to the original segment that played the refrain for the first time. This is a brilliant explanation and probably one that stuck around in people’s minds for a long time afterward. + +I’ve picked out only a few examples, but I think in general the show excels at demystifying computers by explaining the principles that computers rely on to function. The show could instead have focused on teaching BASIC, but it did not. This, it turns out, was very much a conscious choice. In a retrospective written in 1983, John Radcliffe, the executive producer of the _Computer Literacy Project_ , wrote the following: + +> If computers were going to be as important as we believed, some genuine understanding of this new subject would be important for everyone, almost as important perhaps as the capacity to read and write. Early ideas, both here and in America, had concentrated on programming as the main route to computer literacy. However, as our thinking progressed, although we recognized the value of “hands-on” experience on personal micros, we began to place less emphasis on programming and more on wider understanding, on relating micros to larger machines, encouraging people to gain experience with a range of applications programs and high-level languages, and relating these to experience in the real world of industry and commerce…. Our belief was that once people had grasped these principles, at their simplest, they would be able to move further forward into the subject. + +Later, Radcliffe writes, in a similar vein: + +> There had been much debate about the main explanatory thrust of the series. One school of thought had argued that it was particularly important for the programmes to give advice on the practical details of learning to use a micro. But we had concluded that if the series was to have any sustained educational value, it had to be a way into the real world of computing, through an explanation of computing principles. This would need to be achieved by a combination of studio demonstration on micros, explanation of principles by analogy, and illustration on film of real-life examples of practical applications. Not only micros, but mini computers and mainframes would be shown. + +I love this, particularly the part about mini-computers and mainframes. The producers behind _The Computer Programme_ aimed to help Britons get situated: Where had computing been, and where was it going? What can computers do now, and what might they do in the future? Learning some BASIC was part of answering those questions, but knowing BASIC alone was not seen as enough to make someone computer literate. + +### Computer Literacy Today + +If you google “learn to code,” the first result you see is a link to Codecademy’s website. If there is a modern equivalent to the _Computer Literacy Project_ , something with the same reach and similar aims, then it is Codecademy. + +“Learn to code” is Codecademy’s tagline. I don’t think I’m the first person to point this out—in fact, I probably read this somewhere and I’m now ripping it off—but there’s something revealing about using the word “code” instead of “program.” It suggests that the important thing you are learning is how to decode the code, how to look at a screen’s worth of Python and not have your eyes glaze over. I can understand why to the average person this seems like the main hurdle to becoming a professional programmer. Professional programmers spend all day looking at computer monitors covered in gobbledygook, so, if I want to become a professional programmer, I better make sure I can decipher the gobbledygook. But dealing with syntax is not the most challenging part of being a programmer, and it quickly becomes almost irrelevant in the face of much bigger obstacles. Also, armed only with knowledge of a programming language’s syntax, you may be able to _read_ code but you won’t be able to _write_ code to solve a novel problem. + +I recently went through Codecademy’s “Code Foundations” course, which is the course that the site recommends you take if you are interested in programming (as opposed to web development or data science) and have never done any programming before. There are a few lessons in there about the history of computer science, but they are perfunctory and poorly researched. (Thank heavens for [this noble internet vigilante][5], who pointed out a particularly egregious error.) The main focus of the course is teaching you about the common structural elements of programming languages: variables, functions, control flow, loops. In other words, the course focuses on what you would need to know to start seeing patterns in the gobbledygook. + +To be fair to Codecademy, they offer other courses that look meatier. But even courses such as their “Computer Science Path” course focus almost exclusively on programming and concepts that can be represented in programs. One might argue that this is the whole point—Codecademy’s main feature is that it gives you little interactive programming lessons with automated feedback. There also just isn’t enough room to cover more because there is only so much you can stuff into somebody’s brain in a little automated lesson. But the producers at the BBC tasked with kicking off the _Computer Literacy Project_ also had this problem; they recognized that they were limited by their medium and that “the amount of learning that would take place as a result of the television programmes themselves would be limited.”8 With similar constraints on the volume of information they could convey, they chose to emphasize general principles over learning BASIC. Couldn’t Codecademy replace a lesson or two with an interactive visualization of a Jacquard loom weaving together warp and weft threads? + +I’m banging the drum for “general principles” loudly now, so let me just explain what I think they are and why they are important. There’s a book by J. Clark Scott about computers called _But How Do It Know?_ The title comes from the anecdote that opens the book. A salesman is explaining to a group of people that a thermos can keep hot food hot and cold food cold. A member of the audience, astounded by this new invention, asks, “But how do it know?” The joke of course is that the thermos is not perceiving the temperature of the food and then making a decision—the thermos is just constructed so that cold food inevitably stays cold and hot food inevitably stays hot. People anthropomorphize computers in the same way, believing that computers are digital brains that somehow “choose” to do one thing or another based on the code they are fed. But learning a few things about how computers work, even at a rudimentary level, takes the homunculus out of the machine. That’s why the Jacquard loom is such a good go-to illustration. It may at first seem like an incredible device. It reads punch cards and somehow “knows” to weave the right pattern! The reality is mundane: Each row of holes corresponds to a thread, and where there is a hole in that row the corresponding thread gets lifted. Understanding this may not help you do anything new with computers, but it will give you the confidence that you are not dealing with something magical. We should impart this sense of confidence to beginners as soon as we can. + +Alas, it’s possible that the real problem is that nobody wants to learn about the Jacquard loom. Judging by how Codecademy emphasizes the professional applications of what it teaches, many people probably start using Codecademy because they believe it will help them “level up” their careers. They believe, not unreasonably, that the primary challenge will be understanding the gobbledygook, so they want to “learn to code.” And they want to do it as quickly as possible, in the hour or two they have each night between dinner and collapsing into bed. Codecademy, which after all is a business, gives these people what they are looking for—not some roundabout explanation involving a machine invented in the 18th century. + +The _Computer Literacy Project_ , on the other hand, is what a bunch of producers and civil servants at the BBC thought would be the best way to educate the nation about computing. I admit that it is a bit elitist to suggest we should laud this group of people for teaching the masses what they were incapable of seeking out on their own. But I can’t help but think they got it right. Lots of people first learned about computing using a BBC Micro, and many of these people went on to become successful software developers or game designers. [As I’ve written before][6], I suspect learning about computing at a time when computers were relatively simple was a huge advantage. But perhaps another advantage these people had is shows like _The Computer Programme_ , which strove to teach not just programming but also how and why computers can run programs at all. After watching _The Computer Programme_ , you may not understand all the gobbledygook on a computer screen, but you don’t really need to because you know that, whatever the “code” looks like, the computer is always doing the same basic thing. After a course or two on Codecademy, you understand some flavors of gobbledygook, but to you a computer is just a magical machine that somehow turns gobbledygook into running software. That isn’t computer literacy. + +_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…_ + +> FINALLY some new damn content, amirite? +> +> Wanted to write an article about how Simula bought us object-oriented programming. It did that, but early Simula also flirted with a different vision for how OOP would work. Wrote about that instead! +> +> — TwoBitHistory (@TwoBitHistory) [February 1, 2019][9] + + 1. Robert Albury and David Allen, Microelectronics, report (1979). ↩ + + 2. Gregg Williams, “Microcomputing, British Style”, Byte Magazine, 40, January 1983, accessed on March 31, 2019, . ↩ + + 3. John Radcliffe, “Toward Computer Literacy,” Computer Literacy Project Achive, 42, accessed March 31, 2019, [https://computer-literacy-project.pilots.bbcconnectedstudio.co.uk/media/Towards Computer Literacy.pdf][10]. ↩ + + 4. David Allen, “About the Computer Literacy Project,” Computer Literacy Project Archive, accessed March 31, 2019, . ↩ + + 5. ibid. ↩ + + 6. Williams, 51. ↩ + + 7. Radcliffe, 11. ↩ + + 8. Radcliffe, 5. ↩ + + + + +-------------------------------------------------------------------------------- + +via: https://twobithistory.org/2019/03/31/bbc-micro.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]: https://computer-literacy-project.pilots.bbcconnectedstudio.co.uk/ +[2]: /2018/07/22/dawn-of-the-microcomputer.html +[3]: /images/beeb.jpg +[4]: https://twitter.com/TwoBitHistory/status/1112372000742404098 +[5]: https://twitter.com/TwoBitHistory/status/1111305774939234304 +[6]: /2018/09/02/learning-basic.html +[7]: https://twitter.com/TwoBitHistory +[8]: https://twobithistory.org/feed.xml +[9]: https://twitter.com/TwoBitHistory/status/1091148050221944832?ref_src=twsrc%5Etfw +[10]: https://computer-literacy-project.pilots.bbcconnectedstudio.co.uk/media/Towards%20Computer%20Literacy.pdf From a32fcca576a6321dc882294a3e09ef13483820a0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 23:11:41 +0800 Subject: [PATCH 111/336] PRF:20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md @wxy --- ...e State Of Smart Contracts Now) -Part 6.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md b/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md index 3748d28dd8..63dab46960 100644 --- a/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md +++ b/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Blockchain 2.0 – Ongoing Projects (The State Of Smart Contracts Now) [Part 6]) @@ -12,15 +12,15 @@ ![The State Of Smart Contracts Now][1] -继续我们的[前面的关于智能合约的文章][2],这篇文章旨在讨论智能合约的形势,重点介绍目前正在该领域进行开发的一些项目和公司。如本系列前一篇文章中讨论的,智能合约是在区块链网络上存在并执行的程序。我们探讨了智能合约的工作原理以及它们优于传统数字平台的原因。这里描述的公司分布于各种各样的行业中,但是大多涉及到身份管理系统、金融服务、众筹系统等,因为这些是被认为最适合切换到基于区块链的数据库系统的领域。 +继续我们的[前面的关于智能合约的文章][2],这篇文章旨在讨论智能合约的发展形势,重点介绍目前正在该领域进行开发的一些项目和公司。如本系列前一篇文章中讨论的,智能合约是在区块链网络上存在并执行的程序。我们探讨了智能合约的工作原理以及它们优于传统数字平台的原因。这里描述的公司分布于各种各样的行业中,但是大多涉及到身份管理系统、金融服务、众筹系统等,因为这些是被认为最适合切换到基于区块链的数据库系统的领域。 ### 开放平台 -诸如 [Counterparty][8] 和 Solidity(以太坊)等平台是完全公用的构建模块,开发者可以以之创建自己的智能合约。大量的开发人员参与此类项目使这些项目成为开发智能合约、设计自己的加密货币令牌系统以及为区块链创建协议以实现功能的事实标准。许多值得称赞的项目都来源于它们。摩根大通派生自以太坊的 [Quorum][9],就是一个例子。而瑞波是另一个例子。 +诸如 [Counterparty][8] 和 Solidity(以太坊)等平台是完全公用的构建模块,开发者可以以之创建自己的智能合约。大量的开发人员参与此类项目使这些项目成为开发智能合约、设计自己的加密货币令牌系统,以及创建区块链运行协议的事实标准。许多值得称赞的项目都来源于它们。摩根大通派生自以太坊的 [Quorum][9],就是一个例子。而瑞波是另一个例子。 ### 管理金融交易 -通过互联网转账加密货币被吹捧为在未来几年的常态。与此相关的不足之处是: +通过互联网转账加密货币被吹捧为在未来几年会成为常态。与此相关的不足之处是: * 身份和钱包地址是匿名的。如果接收方不履行交易,则付款人没有任何第一追索权。 * 错误交易(如果无法追踪任何交易)。 @@ -32,17 +32,17 @@ ### 金融服务 -小额融资和小额保险项目的发展将改善世界上大多数贫穷或没有银行账户的人的银行金融服务。据估计,社会中较贫穷的“无银行账户”人群可以为银行和机构的增加 3800 亿美元收入 [^5]。这一金额取代了通过银行切换到区块链 DLT 预期可以节省的运营费用。 +小额融资和小额保险项目的发展将改善世界上大多数贫穷或没有银行账户的人的银行金融服务。据估计,社会中较贫穷的“无银行账户”人群可以为银行和机构的增加 3800 亿美元收入 [^5]。这一金额要远远超过银行切换到区块链分布式账本技术(DLT)预期可以节省的运营费用。 -位于美国中西部的 BankQu Inc. 的口号是“通过身份而尊严”。他们的平台允许个人设置他们自己的数字身份记录,其中所有交易将在区块链上实时审查和处理。在底层代码上记录并为其用户构建唯一的在线标识,从而实现超快速的交易和结算。BankQu 案例研究探讨了他们如何以这种方式帮助个人和公司,可以在[这里][3]看到。 +位于美国中西部的 BankQu Inc. 的口号是“通过身份而尊严”。他们的平台允许个人建立他们自己的数字身份记录,其中所有交易将在区块链上实时审查和处理。在底层代码上记录并为其用户构建唯一的在线标识,从而实现超快速的交易和结算。BankQu 案例研究探讨了他们如何以这种方式帮助个人和公司,可以在[这里][3]看到。 -[Stratumn][12] 正在帮助保险公司通过自动执行早期由人类微观管理的任务来提供更好的保险服务。通过自动化、端到端可追溯性和高效的数据隐私方法,他们彻底改变了保险索赔的结算方式。改善客户体验以及显著降低成本,为客户和相关公司带来双赢局面。 +[Stratumn][12] 正在帮助保险公司通过自动化早期由人类微观管理的任务来提供更好的保险服务。通过自动化、端到端可追溯性和高效的数据隐私方法,他们彻底改变了保险索赔的结算方式。改善客户体验以及显著降低成本为客户和相关的公司带来双赢局面。 -法国保险公司 [AXA][14] 目前正在试行类似的努力。其产品 [fizzy][13] 允许用户以少量费用订阅其服务并输入他们的航班详细信息。如果航班延误或遇到其他问题,该程序会自动搜索在线数据库,检查保险条款并将保险金额记入用户的帐户。这样就消除了用户或客户在手动检查条款后提出索赔的要求,并且一旦这样的系统成为主流,就不需要长期提出索赔,增加了航空公司的责任。 +法国保险公司 [AXA][14] 目前正在试行类似的努力。其产品 [fizzy][13] 允许用户以少量费用订阅其服务并输入他们的航班详细信息。如果航班延误或遇到其他问题,该程序会自动搜索在线数据库,检查保险条款并将保险金额记入用户的帐户。这样就用户或客户无需在手动检查条款后提出索赔,并且就长期而言,一旦这样的系统成为主流,就增加了航空公司的责任心。 ### 跟踪所有权 -理论上可以利用 DLT 中的带时间戳的数据块来跟踪从创建到最终用户消费的媒体。Peertracks 公司 和 Mycelia 公司目前正在帮助音乐家发布内容,而不必担心其内容被盗或被滥用。他们帮助艺术家直接向粉丝和客户销售,同时获得工作报酬,而无需通过权利和唱片公司 [^9]。 +理论上可以利用 DLT 中的带时间戳的数据块来跟踪媒体的创建到最终用户消费。Peertracks 公司和 Mycelia 公司目前正在帮助音乐家发布内容,而不必担心其内容被盗或被滥用。他们帮助艺术家直接向粉丝和客户销售,同时获得工作报酬,而无需通过权利和唱片公司 [^9]。 ### 身份管理平台 @@ -56,7 +56,7 @@ [Share & Charge][18] ([Slock.It][19]) 是一家欧洲的区块链初创公司。他们的移动应用程序允许房主和其他个人投入资金建立充电站与其他正在寻找快速充电的人分享他们的资源。这不仅使业主能够收回他们的一些投资,而且还允许 EV 司机在其近地域获得更多的充电点,从而允许供应商以方便的方式满足需求。一旦“客户”完成对其车辆的充电,相关的硬件就会创建一个由数据组成的安全时间戳块,并且在该平台上工作的智能合约会自动将相应的金额记入所有者账户。记录所有此类交易的跟踪并保持适当的安全验证。有兴趣的读者可以看一下[这里][6],了解他们产品背后的技术角度。该公司的平台将逐步使用户能够与有需要的个人分享其他产品和服务,并从中获得被动收入。 -我们在这里看到的公司,以及一个很短的正在进行中的项目的清单,这些项目利用智能合约和区块链数据库系统。诸如此类的平台有助于构建一个安全的“盒子”,其中包含仅由用户自己和上面的代码或智能合约访问的信息。基于触发器对信息进行实时审查、检查,并且算法由系统执行。这样的平台具有最小化的人为监督,这是在安全数字自动化方面朝着正确方向迈出的急需的一步,这在以前从未被考虑过如此规模。 +我们在这里看到的公司,以及一个很短的正在进行中的项目的清单,这些项目利用智能合约和区块链数据库系统。诸如此类的平台有助于构建一个安全的“盒子”,其中包含仅由用户自己、其上的代码或智能合约访问的信息。基于触发器对信息进行实时审查、检查,并且算法由系统执行。这样的平台人为监督最小化,这是在安全数字自动化方面朝着正确方向迈出的急需的一步,这在以前从未被考虑过如此规模。 下一篇文章将阐述不同类型的区块链。单击以下链接以了解有关此主题的更多信息。 @@ -70,10 +70,10 @@ via: https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/ -作者:[editor][a] +作者:[ostechnix][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 9e3baa702c43d3575ecf569fa2e51dde5e44cea2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 23:12:09 +0800 Subject: [PATCH 112/336] PUB:20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md @wxy https://linux.cn/article-11013-1.html --- ...ing Projects (The State Of Smart Contracts Now) -Part 6.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/talk => published}/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md (99%) diff --git a/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md b/published/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md similarity index 99% rename from translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md rename to published/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md index 63dab46960..dbc3c03306 100644 --- a/translated/talk/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md +++ b/published/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11013-1.html) [#]: subject: (Blockchain 2.0 – Ongoing Projects (The State Of Smart Contracts Now) [Part 6]) [#]: via: (https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/) [#]: author: (editor https://www.ostechnix.com/author/editor/) From 1b69a97ce36e3f17f6a269538400b13999705e0c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 23:32:28 +0800 Subject: [PATCH 113/336] PRF:20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wahailin 恭喜您完成了第一篇贡献! --- ...lternative Mattermost Gets -50M Funding.md | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md index e9ebcd7bfa..0aafeeedf9 100644 --- a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md +++ b/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -1,18 +1,18 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Open Source Slack Alternative Mattermost Gets $50M Funding) [#]: via: (https://itsfoss.com/mattermost-funding/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -Slack 开源替代品 Mattermost 获得 5000 万美元融资 +Slack 的开源替代品 Mattermost 获得 5000 万美元融资 ====== -[Mattermost][1],作为 [Slack][2] 的开源替代品,获得了 5000 万美元的B轮融资。这个消息极其令人振奋。 +[Mattermost][1],作为 [Slack][2] 的开源替代品,获得了 5000 万美元的 B 轮融资。这个消息极其令人振奋。 -[Slack][3] 是一个基于云的团队内部沟通协作软件。企业、创业公司、甚至全球化的开源项目都在使用Slack进行同事及项目成员间的沟通。 +[Slack][3] 是一个基于云的团队内部沟通协作软件。企业、初创企业、甚至全球化的开源项目都在使用 Slack 进行同事及项目成员间的沟通。 [Slack 在 2019 年 6 月的估值为 200 亿美元][4],由此可见其在科技行业的巨大影响,当然也就有更多产品想与之竞争。 @@ -20,16 +20,15 @@ Slack 开源替代品 Mattermost 获得 5000 万美元融资 ![][5] -就我个人而言,我并不知道 MatterMost 这个产品。但 [VentureBeat][6] 对这则新闻的报道,激发了我的好奇心。 这次融资由 [Y Combinator’s][7] 与一家新的投资方 BattleVentures 牵头,现有投资者 Redpoint 和 S28 Captial 共同加入。 - +就我个人而言,我并不知道 MatterMost 这个产品。但 [VentureBeat][6] 对这则新闻的报道,激发了我的好奇心。这次融资由 [Y Combinator][7] 的 Continuity 与一家新的投资方 BattleVentures 领投,现有投资者 Redpoint 和 S28 Captial 共同跟投。 在[公告][8]中,他们也提到: -> 今天的公告中,Mattermost 成为了 YC 历次 B 轮投资中投资额最高的项目。 +> 今天的公告中,Mattermost 成为了 YC 有史以来规模最大的 B 轮投资项目,更重要的是,它是 YC 迄今为止投资额最高的开源项目。 下面是摘自 VentureBeat 的报道,你可以从中了解到一些细节: -> 本次资本注入,是继 2017 年 2 月的种子轮 350 万融资和今年 2 月份的 2000 万 A 轮融资之后进行的,并使得这家总部位于美国加州帕罗奥图(Palo Alto)的公司融资总额达到了约 7000 万美元。 +> 本次资本注入,是继 2017 年 2 月的种子轮 350 万融资和今年 2 月份的 2000 万 A 轮融资之后进行的,并使得这家总部位于美国加州帕罗奥图Palo Alto的公司融资总额达到了约 7000 万美元。 如果你对他们的规划感兴趣,可以阅读[官方公告][8]。 @@ -41,9 +40,9 @@ Slack 开源替代品 Mattermost 获得 5000 万美元融资 前面已经提到,Mattermost 是 Slack 的开源替代品。 -乍一看,它几乎照搬了 Slack 的界面外观,没错,这就是关键所在,你将拥有你乐于使用的软件的开源方案。 +乍一看,它几乎照搬了 Slack 的界面外观,没错,这就是关键所在,你将拥有你可以轻松使用的软件的开源解决方案。 -它甚至集成了一些流行的 DevOps 工具,如 Git、Bots 和 CI/CD。除了这些功能外,它还关注安全性和隐私。 +它甚至集成了一些流行的 DevOps 工具,如 Git、自动机器人和 CI/CD。除了这些功能外,它还关注安全性和隐私。 同样,和 Slack 类似,它支持和多种应用程序与服务的集成。 @@ -51,15 +50,15 @@ Slack 开源替代品 Mattermost 获得 5000 万美元融资 #### 定价:企业版和团队版 -如果你想让 Mattermost 对其托管(或获得优先支持),应选择企业版。但如果你想使用非付费托管,可以下载[团队版][11],并安装到基于 Linux 的云服务器或 VPS 服务器上。 +如果你希望由 Mattermost 托管该服务(或获得优先支持),应选择其企业版。但如果你不想使用付费托管,可以下载[团队版][11],并将其安装到基于 Linux 的云服务器或 VPS 服务器上。 当然,我们不会在此进行深入探究。我确想在此提及的是,企业版并不昂贵。 ![][12] -**总结** +### 总结 -MatterMost 无疑相当出色,有了 5000 万巨额资金的注入,对于那些正在寻求安全的并能提供高效团队协作支持的开源通讯平台的开源社区用户,Mattermost 很可能成为下一个大事件。 +MatterMost 无疑相当出色,有了 5000 万巨额资金的注入,对于那些正在寻求安全的并能提供高效团队协作支持的开源通讯平台的用户,Mattermost 很可能成为开源社区重要的部分。 你觉得这条新闻怎么样?对你来说有价值吗?你是否已了解 Mattermost 是 Slack 的替代品? @@ -67,12 +66,12 @@ MatterMost 无疑相当出色,有了 5000 万巨额资金的注入,对于那 -------------------------------------------------------------------------------- -来源: +via: https://itsfoss.com/mattermost-funding/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[wahailin](https://github.com/wahailin) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 20bda0ca900f5bacf7ee2b1aed4f908fe7d30bbf Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 24 Jun 2019 23:33:54 +0800 Subject: [PATCH 114/336] PUB:20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wahailin 本文首发地址: https://linux.cn/article-11014-1.html 您的 LCTT 专页地址: https://linux.cn/lctt/wahailin 请注册领取 LCCN:https://lctt.linux.cn/ --- ...n Source Slack Alternative Mattermost Gets -50M Funding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md (98%) diff --git a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/published/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md similarity index 98% rename from translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md rename to published/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md index 0aafeeedf9..8d6b7aad8a 100644 --- a/translated/tech/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md +++ b/published/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11014-1.html) [#]: subject: (Open Source Slack Alternative Mattermost Gets $50M Funding) [#]: via: (https://itsfoss.com/mattermost-funding/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From 1147da078c62c141a4cfd9475f4c13643918cb90 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 25 Jun 2019 00:26:39 +0800 Subject: [PATCH 115/336] PRF:20190531 Learn Python with these awesome resources.md @tomjlw --- ...arn Python with these awesome resources.md | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/translated/tech/20190531 Learn Python with these awesome resources.md b/translated/tech/20190531 Learn Python with these awesome resources.md index 927355886d..d4fc5bdad7 100644 --- a/translated/tech/20190531 Learn Python with these awesome resources.md +++ b/translated/tech/20190531 Learn Python with these awesome resources.md @@ -1,38 +1,42 @@ [#]: collector: (lujun9972) [#]: translator: (tomjlw) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Learn Python with these awesome resources) [#]: via: (https://opensource.com/article/19/5/resources-learning-python) [#]: author: (Don Watkins https://opensource.com/users/don-watkins) -通过这些精品资源学习 Python +学习 Python 的精品 PLN 资源 ====== -通过将这些资源加入你自己的私人学习网络以拓展你的 Python 知识 -![书单,最爱][1] -我使用和教 Python 已有很长时间了,但我总是感兴趣于增加我对这门实用语言的知识。这就是为什么我一直试着拓展我的 Python [私人学习网络][2](PLN),一个描述非正式的互惠型分享信息网络的概念。 +> 通过将这些资源加入你自己的私人学习网络以拓展 Python 知识。 -教育学家 [Kelly Paredes][3] 和 [Sean Tibor][4] 最近讨论关于如何在他们的播客 [Teaching Python][5] 上搭建 Python PLN。我在克里夫兰的 [PyCon 2019][6] 遇到他们之后就订阅了这个频道(并把它们假如我的 Python PLN)。这个播客鼓励我考虑更多关于我的 Python PLN 中的人,包括那些我最近在 PyCon 遇到的。 +![](https://img.linux.net.cn/data/attachment/album/201906/25/002706hrx0d3dfrxeid3nj.jpg) -我会分享一些我遇到我的 PLN 的地方;可能它们也可以变成你的 Python PLN 的一部分。 +我使用和教授 Python 已有很长时间了,但我总是乐于增加我对这门实用语言的知识。这就是为什么我一直试着拓展我的 Python [个人学习网络][2]personal learning network(PLN),这是一个描述用于分享信息的非正式的互惠型网络的概念。 + +教育学家 [Kelly Paredes][3] 和 [Sean Tibor][4] 最近在他们的播客 [Teaching Python][5] 上谈到了如何搭建 Python PLN。我在克里夫兰的 [PyCon 2019][6] 遇到他们之后就订阅了这个频道(并把它们加入到我的 Python PLN 当中)。这个播客激发了我对 Python PLN 中的人的思考,包括那些我最近在 PyCon 遇到的人们。 + +我会分享一些我找到 PLN 成员的地方;可能它们也可以变成你的 Python PLN 的一部分。 ### Young Coders 导师 -Python 基金会的活动协调者 [Betsy Waliszewski][7] 是我的 Python PLN 中的一员。当我们在 PyCon2019 碰到彼此时,因为我是个老师她推荐我看看为十二岁及以上的孩子打造的 [Young Coders][8] 工作室。在那我遇到了负责这个教参与者如何搭建并配置树莓派并使用 Python 项目的 [Katie Cunningham][9]。年轻学生也会收到两本书 Jason Briggs 的 _[Python for Kids][10]_ 和 Craig Richardson 的 _[Learn to Program with Minecraft][11]_。我总是寻找提升我教学水平的新方式,因此我在会议上的 [NoStarch Press][12] 展台迅速拿了两本 Minecraft 书的抄本。Katie 是一名优秀的教师以及一名熟练的有着惊艳的充满 Python 培训视频的 [YouTube][13] 频道作者。 -我把 Kattie 与另外两个我在 Young Coders 工作室碰到的人加入我的 PLN:[Nat Dunn][14] 和 [Sean Valentine][15]。像 Katie 一样,他们志愿将他们的时间用来把 Python 介绍给青年程序员。Nat 是 [Webucator][16],一家成为 Python 软件基金会赞助商好几年并赞助了 PyCon 2018 教育峰会的 IT 培训公司的主席。他在教他的13岁儿子和14岁外甥 Python 后决定在 Young Coders 教学。Sean 是 [Hidden Genius Project][17],一个为黑人男青年而打造的科技及领导力教导项目,的战略倡议指导。Sean 说许多 Hidden Genius 参与者“用 Python打造项目因此我们将 [Young Coders] 看成一个对合作商的好机会”。了解 Hidden Genius Project 鼓励我更深层次地思考编程的未来以及其改变生活的威力。 +Python 基金会的活动协调者 [Betsy Waliszewski][7] 是我的 Python PLN 中的一员。当我们在 PyCon2019 见到时,因为我是个老师,她推荐我看看为十二岁及以上的孩子打造的 [Young Coders][8] 工作室。在那我遇到了正在负责这个计划的 [Katie Cunningham][9],它会教参与者如何搭建和配置树莓派并使用 Python 项目。年轻学生也会收到两本书 Jason Briggs 的 《[Python for Kids][10]》 和 Craig Richardson 的 《[Learn to Program with Minecraft][11]》。我一直寻找提升我教学水平的新方式,因此我在该会议上的 [NoStarch Press][12] 展台迅速拿到了两本 Minecraft 书。Katie 是一名优秀的教师,也是一名多产作家,拥有一个充满 Python 培训视频的 [YouTube][13] 精彩频道。 -### Open Spaces 会面 -我发现 PyCon 的 [Open Spaces][18] 一小时左右的自序即兴会面跟正式的项目活动一样有用。我的最爱之一是关于 [Circuit Playground Express][19] 设备,它是我们会议主题包的一部分。我着迷于这个设备并且 Open Space 提供了学习它的一条大道。组织者提供工作表和拥有成功所需要的所有工具的 [Github][20] 仓库,也提供了一个上手学习的机会以及探索这个独特硬件的方向。 +我把 Kattie 与我在 Young Coders 工作室碰到的另外两个人加入我的 PLN:[Nat Dunn][14] 和 [Sean Valentine][15]。像 Katie 一样,他们自愿花时间把 Python 介绍给青年程序员们。Nat 是 [Webucator][16] 的总裁,这是一家 IT 培训公司,多年来一直是 Python 软件基金会赞助商,并赞助了 PyCon 2018 教育峰会。在将 Python 教他 13 岁的儿子和 14 岁的侄子之后,他决定在 Young Coders 任教。Sean 是 [Hidden Genius 项目][17] 的战略计划总监,这是一个针对黑人男性青年的技术及领导力打造的教导项目。Sean 说许多 Hidden Genius 参与者“用 Python 打造项目因此我们认为 [Young Coders] 是一个很好的合作机会”。了解 Hidden Genius 项目激发了我更深层次地思考编程的未来以及其改变生活的威力。 -这次会面满足了我想要了解更多关于编程 Circuit Playground Express 的胃口,因此在 PyCon 之后, 我在 Twitter 上接触到了在会议上就有关编程这个设备发表主旨演讲的 [Nina Zakharenko][21]。Nina 自从去年秋天我在 [All Things Open][23] 上听过她的演讲就在我的 Python PLN 里了。我最近报名了她的[Python 基础][24]课程以加深我的学习。Nina 推荐我将 [Kattni Rembor][25] 加入我的 Python PLN。他的[示例代码][26]正帮助我学习用 CircuitPython 编程。 +### Open Spaces 聚会 -### 我 PLN 中的其他资源 +我发现 PyCon 的 [Open Spaces][18] —— 这是一个一小时左右的自组织的即兴聚会 —— 跟正式的项目活动一样有用。我的最爱之一是 [Circuit Playground Express][19] 设备,它是我们会议主题包的一部分。我很喜欢这个设备,并且 Open Space 提供了学习它的一条大道。组织者提供了工作表和一个 [Github][20] 仓库,其中包含有我们成功所需要的所有工具,也提供了一个上手实践的机会以及探索这个独特硬件的方向。 -我在 PyCon 2019 也遇见了下属 [Opensource.com][27] 社区的主席 [Moshe Zadka][28] 并和他来了场长谈。他分享了几个新的 Python 资源,包括 _[如何像电脑科学家一样思考][29]_ 社区主席[Seth Kenlon][30] 是我的 PLN 中的另一名成员;他发表了许多优秀的 [Python 文章][31]我也推荐你关注他。 +这次会面激起了了我对学习 Circuit Playground Express 更新信息的兴趣,因此在 PyCon 之后, 我在 Twitter 上接触到了在会议上就该设备编程发表主旨演讲的 [Nina Zakharenko][21]。Nina 自从去年秋天我在 [All Things Open][23] 上听过她的演讲后就在我的 Python PLN 里了。我最近报名参加了她的 [Python 基础][24]课程以加深我的学习。Nina 推荐我将 [Kattni Rembor][25] 加入我的 Python PLN。他的[示例代码][26]正帮助我学习用 CircuitPython 编程。 -我的 Python每天都在继续扩大。除了我已经提到的,我同样推荐你关注 [Al Sweigart][32],[Eric Matthes][33],以及 [Adafruit][34] 因为他们分享优质内容。我也推荐这本书 _[制作:由 Adafruit Circuit Playground Express 开始][35]_ 和 [Podcast.__init__][36],一个关于 Python 社区的播客。这两个都是我从我的 PLN 中了解到的。 +### 我的 PLN 中的其他资源 + +我在 PyCon 2019 也遇见了 [Opensource.com][27] 社区版主 [Moshe Zadka][28],并和他来了场长谈。他分享了几个新的 Python 资源,包括 [如何像电脑科学家一样思考][29]。社区版主 [Seth Kenlon][30] 是我的 PLN 中的另一名成员;他发表了许多优秀的 [Python 文章][31],我也推荐你关注他。 + +我的 Python PLN 每天都在持续扩大。除了我已经提到的,我同样推荐你关注 [Al Sweigart][32]、[Eric Matthes][33] 以及 [Adafruit][34]他们分享的优质内容。我也推荐这本书《[制作:由 Adafruit Circuit Playground Express 开始][35]》和《[Podcast.\_\_init\_\_][36]》,这是一个关于 Python 社区的播客。这两个都是我从我的 PLN 中了解到的。 谁在你的 Python PLN 中?请在留言区分享你的最爱。 @@ -43,7 +47,7 @@ via: https://opensource.com/article/19/5/resources-learning-python 作者:[Don Watkins][a] 选题:[lujun9972][b] 译者:[tomjlw](https://github.com/tomjlw) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From a4a2c1583acb3cec5c3a0bd3d7768e74f9208095 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 25 Jun 2019 00:27:16 +0800 Subject: [PATCH 116/336] PUB:20190531 Learn Python with these awesome resources.md @tomjlw https://linux.cn/article-11015-1.html --- .../20190531 Learn Python with these awesome resources.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190531 Learn Python with these awesome resources.md (99%) diff --git a/translated/tech/20190531 Learn Python with these awesome resources.md b/published/20190531 Learn Python with these awesome resources.md similarity index 99% rename from translated/tech/20190531 Learn Python with these awesome resources.md rename to published/20190531 Learn Python with these awesome resources.md index d4fc5bdad7..80aaa801f4 100644 --- a/translated/tech/20190531 Learn Python with these awesome resources.md +++ b/published/20190531 Learn Python with these awesome resources.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (tomjlw) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11015-1.html) [#]: subject: (Learn Python with these awesome resources) [#]: via: (https://opensource.com/article/19/5/resources-learning-python) [#]: author: (Don Watkins https://opensource.com/users/don-watkins) From a5e47aba6a4cf57ccaf19f789cac4332af46d0bb Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:51:58 +0800 Subject: [PATCH 117/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20Using?= =?UTF-8?q?=20i3=20with=20multiple=20monitors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 Using i3 with multiple monitors.md --- ...0190624 Using i3 with multiple monitors.md | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 sources/tech/20190624 Using i3 with multiple monitors.md diff --git a/sources/tech/20190624 Using i3 with multiple monitors.md b/sources/tech/20190624 Using i3 with multiple monitors.md new file mode 100644 index 0000000000..a1407008e7 --- /dev/null +++ b/sources/tech/20190624 Using i3 with multiple monitors.md @@ -0,0 +1,192 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Using i3 with multiple monitors) +[#]: via: (https://fedoramagazine.org/using-i3-with-multiple-monitors/) +[#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) + +Using i3 with multiple monitors +====== + +![][1] + +Are you using multiple monitors with your Linux workstation? Seeing many things at once might be beneficial. But there are often much more windows in our workflows than physical monitors — and that’s a good thing, because seeing too many things at once might be distracting. So being able to switch what we see on individual monitors seems crucial. + +Let’s talk about i3 — a popular tiling window manager that works great with multiple monitors. And there is one handy feature that many other window managers don’t have — the ability to switch workspaces on individual monitors independently. + +### Quick introduction to i3 + +The [Fedora Magazine has already covered i3][2] about three years ago. And it was one of the most popular articles ever published! Even though that’s not always the case, i3 is pretty stable and that article is still very accurate today. So — not to repeat ourselves too much — this article only covers the very minimum to get i3 up and running, and you’re welcome to go ahead and read it if you’re new to i3 and want to learn more about the basics. + +To install i3 on your system, run the following command: + +``` +$ sudo dnf install i3 +``` + +When that’s done, log out, and on the log in screen choose i3 as your window manager and log back in again. + +When you run i3 for the first time, you’ll be asked if you wish to proceed with automatic configuration — answer yes here. After that, you’ll be asked to choose a “mod key”. If you’re not sure here, just accept the default which sets you Windows/Super key as the mod key. You’ll use this key for mostly all the shortcuts within the window manager. + +At this point, you should see a little bar at the bottom and an empty screen. Let’s have a look at some of the basic shortcuts. + +Open a terminal using: + +``` +$mod + enter +``` + +Switch to a second workspace using: + +``` +$mod + 2 +``` + +Open firefox in two steps, first by: + +``` +$mod + d +``` + +… and then by typing “firefox” and pressing enter. + +Move it to the first workspace by: + +``` +$mod + shift + 1 +``` + +… and switch to the first workspace by: + +``` +$mod + 1 +``` + +At this point, you’ll see a terminal and a firefox window side by side. To close a window, press: + +``` +$mod + shift + q +``` + +There are more shortcuts, but these should give you the minimum to get started with i3. + +Ah! And to exit i3 (to log out) press: + +``` +$mod + shift + e +``` + +… and then confirm using your mouse at the top-right corner. + +### Getting multiple screens to work + +Now that we have i3 up and running, let’s put all those screens to work! + +To do that, we’ll need to use the command line as i3 is very lightweight and doesn’t have gui to manage additional screens. But don’t worry if that sounds difficult — it’s actually quite straightforward! + +The command we’ll use is called xrandr. If you don’t have xrandr on your system, install it by running: + +``` +$ sudo dnf install xrandr +``` + +When that’s installed, let’s just go ahead and run it: + +``` +$ xrandr +``` + +The output lists all the available outputs, and also indicated which have a screen attached to them (a monitor connected with a cable) by showing supported resolutions. Good news is that we don’t need to really care about the specific resolutions to make the them work. + +This specific example shows a primary screen of a laptop (named eDP1), and a second monitor connected to the HDMI-2 output, physically positioned right of the laptop. To turn it on, run the following command: + +``` +$ xrandr --output HDMI-2 --auto --right-of eDP1 +``` + +And that’s it! Your screen is now active. + +![Second screen active. The commands shown on this screenshot are slightly different than in the article, as they set a smaller resolution to make the screenshots more readable.][3] + +### Managing workspaces on multiple screens + +Switching workspaces and creating new ones on multiple screens is very similar to having just one screen. New workspaces get created on the screen that’s currently active — the one that has your mouse cursor on it. + +So, to switch to a specific workspace (or to create a new one in case it doesn’t exist), press: + +``` +$mod + NUMBER +``` + +And you can switch workspaces on individual monitors independently! + +![Workspace 2 on the left screen, workspace 4 on the right screen.][4] + +![Left screen switched to workspace 3, right screen still showing workspace 4.][5] + +![Right screen switched to workspace 4, left screen still showing workspace 3.][6] + +### Moving workspaces between monitors + +The same way we can move windows to different workspaces by the following command: + +``` +$mod + shift + NUMBER +``` + +… we can move workspaces to different screens as well. However, there is no default shortcut for this action — so we have to create it first. + +To create a custom shortcut, you’ll need to open the configuration file in a text editor of your choice (this article uses _vim_): + +``` +$ vim ~/.config/i3/config +``` + +And add the following lines to the very bottom of the configuration file: + +``` +# Moving workspaces between screens +bindsym $mod+p move workspace to output right +``` + +Save, close, and to reload and apply the configuration, press: + +``` +$mod + shift + r +``` + +Now you’ll be able to move your active workspace to the second monitor by: + +``` +$mod + p +``` + +![Workspace 2 with Firefox on the left screen][7] + +![Workspace 2 with Firefox moved to the second screen][8] + +And that’s it! Enjoy your new multi-monitor experience, and to learn more about i3, you’re welcome to read the previous article about i3 on the Fedora Magazine, or consult the official i3 documentation. + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/using-i3-with-multiple-monitors/ + +作者:[Adam Šamalík][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/asamalik/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/i3-title-816x345.jpg +[2]: https://fedoramagazine.org/getting-started-i3-window-manager/ +[3]: https://fedoramagazine.org/wp-content/uploads/2019/06/0-1-1024x384.png +[4]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-1-1024x384.png +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-2-1024x384.png +[6]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-3-1024x384.png +[7]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-1-1024x384.png +[8]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-2-1024x384.png From d4e5f2d2276f0e2625c105356f471e05b0d0f5ea Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:52:40 +0800 Subject: [PATCH 118/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20With?= =?UTF-8?q?=20Upgraded=20Specs,=20Raspberry=20Pi=204=20Takes=20Aim=20at=20?= =?UTF-8?q?Desktop=20Segment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md --- ...berry Pi 4 Takes Aim at Desktop Segment.md | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md diff --git a/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md new file mode 100644 index 0000000000..38bdb01b27 --- /dev/null +++ b/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @@ -0,0 +1,110 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment) +[#]: via: (https://itsfoss.com/raspberry-pi-4/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment +====== + +_**Brief: Raspberry Pi 4 is here with the upgraded technical specifications. You get up to 4 GB of RAM and you can connect two 4K displays with it. With the new hardware, you should be more comfortable using it as a desktop. Starting price remains the $35 like the previous models.**_ + +The Raspberry Pi Foundation has just launched the new [Raspberry Pi 4 Model B][1]. + +It comes with some impressive upgrades which makes one of the most powerful [single board computers][2] under $40. + +![Raspberry Pi 4][3] + +### What’s new in Raspberry Pi 4? + +The Raspberry Pi 4 now supports a dual 4K monitor setup – if that is what you are looking for. In addition to this, you get a more powerful processor which can be coupled with up to 4 GB of RAM. That’s almost equivalent to a mid-end laptop. + +The upgraded specification makes it a competitor in the [Linux mini-PC][4] segment while the same price tag of $35 gives it an edge over [other single board computers][2]. + +Right after the launch, it’s almost out of stock at major online stores. So, let us take a look at what makes it so impressive. + +#### Raspberry Pi 4 key specifications + +![Raspberry Pi 4 Tech Specs][5] + + * Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz + * Up to 4GB RAM (choices are 1 GB, 2 GB and 4 GB) + * WiFi and Bluetooth 5.0 + * 2 USB 3.0 and a USB 2.0 ports + * 40 pin GPIO header (backward compatible) + * 2 micro-HDMI ports (supports 4K displays) + * USB-C (power supply) + * Gigabit Ethernet + + + +If you are curious to know more, do check out the [official tech specs][6] on their website. + +### Pricing and availability + +The pricing for just the Raspberry Pi 4 board starts from $35 and depending on the choice of RAM (1-4 GB), the cost shall vary. + + * Raspberry Pi 4 with 1 GB RAM: $35 + * Raspberry Pi 4 with 2 GB RAM: $45 + * Raspberry Pi 4 with 4 GB RAM: $55 + + + +Raspberry Pi 4 is available from different vendors depending on your country. It’s getting out of stock so you should either hurry up or wait for a few days/weeks. You can get purchase information on its official webpage. + +[Buy Raspberry Pi 4][1] + +You should note that [you need to have additional accessories in order to run Raspberry Pi][7]. This is why there are several starter kits available to give you all the necessary supporting accessories. + +[][8] + +Suggested read  Raspberry Pi Gets RAM Upgrade, In The Same Price + +#### Raspberry Pi 4 desktop Kit + +![Raspberry Pi 4 Desktop Kit][9] + +You can also purchase the official Raspberry Pi 4 desktop kit that comes with a Raspberry Pi 4, its case, keyboard, mouse, micro HDMI cables, USB-C power supply, user guide and 16GB [microSD card with Raspbian installed][10]. + +![Raspberry Pi Branded Desktop Kit][11] + +The entire kit is in red and white color and it looks pretty (if you care for the looks). You can get the purchase information on Raspberry Pi website. + +[Raspberry Pi 4 Desktop Kit][12] + +#### Raspberry Pi 4 is promising + +With all that spec buff, it is definitely going to be one of the best out there. Also, instead of getting an entry-level desktop, Raspberry Pi 4 will be a better choice. You can easily access your documents, manage your spreadsheets, and do a lot of things at a cheaper price tag. + +I’m definitely considering to purchase the Raspberry Pi 4 as a spare (but a powerful) entry-level desktop. Well, I won’t be going for the 4K dual monitor setup, but it surely is capable of that, at least on paper. + +What do you think about the new Raspberry Pi 4 Model B? Let us know your thoughts in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/raspberry-pi-4/ + +作者:[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/products/raspberry-pi-4-model-b/ +[2]: https://itsfoss.com/raspberry-pi-alternatives/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4.jpeg?resize=800%2C449&ssl=1 +[4]: https://itsfoss.com/linux-based-mini-pc/ +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-tech-specs.jpg?ssl=1 +[6]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/ +[7]: https://itsfoss.com/things-you-need-to-get-your-raspberry-pi-working/ +[8]: https://itsfoss.com/raspberry-pi-gets-ram-upgrade-in-the-same-price/ +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-desktop-kit.jpg?resize=800%2C427&ssl=1 +[10]: https://itsfoss.com/tutorial-how-to-install-raspberry-pi-os-raspbian-wheezy/ +[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-desktop-kit-official.jpg?ssl=1 +[12]: https://www.raspberrypi.org/products/raspberry-pi-4-desktop-kit/ From 600cd5a1c57aaf5bd2068a786800ee92ef575f68 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:53:09 +0800 Subject: [PATCH 119/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20Book?= =?UTF-8?q?=20Review:=20A=20Byte=20of=20Vim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 Book Review- A Byte of Vim.md --- .../20190624 Book Review- A Byte of Vim.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 sources/tech/20190624 Book Review- A Byte of Vim.md diff --git a/sources/tech/20190624 Book Review- A Byte of Vim.md b/sources/tech/20190624 Book Review- A Byte of Vim.md new file mode 100644 index 0000000000..e221a3bc6f --- /dev/null +++ b/sources/tech/20190624 Book Review- A Byte of Vim.md @@ -0,0 +1,99 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Book Review: A Byte of Vim) +[#]: via: (https://itsfoss.com/book-review-a-byte-of-vim/) +[#]: author: (John Paul https://itsfoss.com/author/john/) + +Book Review: A Byte of Vim +====== + +[Vim][1] is a tool that is both simple and very powerful. Most new users will be intimidated by it because it doesn’t ‘work’ like regular graphical text editors. The ‘unusual’ keyboard shortcuts makes people wonder about [how to save and exit Vim][2]. But once you master Vim, there is nothing like it. + +There are numerous [Vim resources available online][3]. We have covered some Vim tricks on It’s FOSS as well. Apart from online resources, plenty of books have been dedicated to this editor as well. Today, we will look at one of such book that is designed to make Vim easy for most users to understand. The book we will be discussing is [A Byte of Vim][4] by [Swaroop C H][5]. + +The author [Swaroop C H][6] has worked in computing for over a decade. He previously worked at Yahoo and Adobe. Out of college, he made money by selling Linux CDs. He started a number of businesses, including an iPod charger named ion. He is currently an engineering manager for the AI team at [Helpshift][7]. + +### A Byte of Vim + +![][8] + +Like all good books, A Byte of Vim starts by talking about what Vim is: “a computer program used for writing any kind of text”. He does on to say, “What makes Vim special is that it is one of those few software which is both simple and powerful.” + +Before diving into telling how to use Vim, Swaroop tells the reader how to install Vim for Windows, Mac, Linux, and BSD. Once the installation is complete, he runs you through how to launch Vim and how to create your first file. + +Next, Swaroop discusses the different modes of Vim and how to navigate around your document using Vim’s keyboard shortcuts. This is followed by the basics of editing a document with Vim, including the Vim version of cut/copy/paste and undo/redo. + +Once the editing basics are covered, Swaroop talks about using Vim to edit multiple parts of a single document. You can also multiple tabs and windows to edit multiple documents at the same time. + +[][9] + +Suggested read  Bring Your Old Computer Back to Life With 4MLinux + +The book also covers extending the functionality of Vim through scripting and installing plugins. There are two ways to using scripts in Vim, use Vim’s built-in scripting language or using a programming language like Python or Perl to access Vim’s internals. There are five types of Vim plugins that can be written or downloaded: vimrc, global plugin, filetype plugin, syntax highlighting plugin, and compiler plugin. + +In a separate section, Swaroop C H covers the features of Vim that make it good for programming. These features include syntax highlighting, smart indentation, support for shell commands, omnicompletion, and the ability to be used as an IDE. + +#### Getting the ‘A Byte of Vim’ book and contributing to it + +A Byte of Book is licensed under [Creative Commons 4.0][10]. You can read an online version of the book for free on [the author’s website][4]. You can also download a [PDF][11], [Epub][12], or [Mobi][13] for free. + +[Get A Byte of Vim for FREE][4] + +If you prefer reading a [hard copy][14], you have that option, as well. + +Please note that the _**original version of A Byte of Vim was written in 2008**_ and converted to PDf. Unfortunately, Swaroop C H lost the original source files and he is working to convert the book to [Markdown][15]. If you would like to help, please visit the [book’s GitHub page][16]. + +Preview | Product | Price | +---|---|---|--- +![Mastering Vim Quickly: From WTF to OMG in no time][17] ![Mastering Vim Quickly: From WTF to OMG in no time][17] | [Mastering Vim Quickly: From WTF to OMG in no time][18] | $34.00[][19] | [Buy on Amazon][20] + +#### Conclusion + +When I first stared into the angry maw that is Vim, I did not have a clue what to do. I wish that I had known about A Byte of Vim then. This book is a good resource for anyone learning about Linux, especially if you are getting into the command line. + +Have you read [A Byte of Vim][4] by Swaroop C H? If yes, how do you find it? If not, what is your favorite book on an open source topic? Let us know in the comments below. + +[][21] + +Suggested read  Iridium Browser: A Browser for the Privacy Conscious + +If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][22]. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/book-review-a-byte-of-vim/ + +作者:[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://www.vim.org/ +[2]: https://itsfoss.com/how-to-exit-vim/ +[3]: https://linuxhandbook.com/basic-vim-commands/ +[4]: https://vim.swaroopch.com/ +[5]: https://swaroopch.com/ +[6]: https://swaroopch.com/about/ +[7]: https://www.helpshift.com/ +[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/Byte-of-vim-book.png?resize=800%2C450&ssl=1 +[9]: https://itsfoss.com/4mlinux-review/ +[10]: https://creativecommons.org/licenses/by/4.0/ +[11]: https://www.gitbook.com/download/pdf/book/swaroopch/byte-of-vim +[12]: https://www.gitbook.com/download/epub/book/swaroopch/byte-of-vim +[13]: https://www.gitbook.com/download/mobi/book/swaroopch/byte-of-vim +[14]: https://swaroopch.com/buybook/ +[15]: https://itsfoss.com/best-markdown-editors-linux/ +[16]: https://github.com/swaroopch/byte-of-vim#status-incomplete +[17]: https://i2.wp.com/images-na.ssl-images-amazon.com/images/I/41itW8furUL._SL160_.jpg?ssl=1 +[18]: https://www.amazon.com/Mastering-Vim-Quickly-WTF-time/dp/1983325740?SubscriptionId=AKIAJ3N3QBK3ZHDGU54Q&tag=chmod7mediate-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1983325740 (Mastering Vim Quickly: From WTF to OMG in no time) +[19]: https://www.amazon.com/gp/prime/?tag=chmod7mediate-20 (Amazon Prime) +[20]: https://www.amazon.com/Mastering-Vim-Quickly-WTF-time/dp/1983325740?SubscriptionId=AKIAJ3N3QBK3ZHDGU54Q&tag=chmod7mediate-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1983325740 (Buy on Amazon) +[21]: https://itsfoss.com/iridium-browser-review/ +[22]: http://reddit.com/r/linuxusersgroup From 5632081070900f9a3229f621f4699a6065da7e29 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:53:48 +0800 Subject: [PATCH 120/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20How=20?= =?UTF-8?q?to=20Install=20and=20Configure=20KVM=20on=20RHEL=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 How to Install and Configure KVM on RHEL 8.md --- ... to Install and Configure KVM on RHEL 8.md | 256 ++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 sources/tech/20190624 How to Install and Configure KVM on RHEL 8.md diff --git a/sources/tech/20190624 How to Install and Configure KVM on RHEL 8.md b/sources/tech/20190624 How to Install and Configure KVM on RHEL 8.md new file mode 100644 index 0000000000..3021561dd8 --- /dev/null +++ b/sources/tech/20190624 How to Install and Configure KVM on RHEL 8.md @@ -0,0 +1,256 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Install and Configure KVM on RHEL 8) +[#]: via: (https://www.linuxtechi.com/install-configure-kvm-on-rhel-8/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +How to Install and Configure KVM on RHEL 8 +====== + +**KVM** is an open source virtualization technology which converts your Linux machine into a type-1 bare-metal hypervisor that allows you to run multiple virtual machines (VMs) or guest VMs + + + +KVM stands for **Kernel based Virtual machine**, as the name suggests KVM is a kernel module, once it is loaded into the kernel , then your Linux machine will start working as a KVM hypervisor. In this article we will demonstrate how to install KVM on RHEL 8 system but before start installing KVM on your RHEL 8 system first we have to make sure that your system’s processor supports hardware virtualization extensions like **Intel VT** or **AMD-V** and enabled it from BIOS. + +**RHEL 8 KVM Lab Details:** + + * OS = RHEL 8 + * Hostname = rhel8-kvm + * Ethernet Cards = ens32 –  192.168.1.4 & ens36 – 192.168..1.12 + * RAM = 4 GB + * CPU = 2 + * Disk = 40 GB Free Space (/var/libvirtd) + + + +Let’s Jump into the KVM installation steps + +### Step:1) Verify Hardware Virtualization is enabled or not + +Open the terminal and execute the beneath egrep command + +``` +[root@linuxtechi ~]# egrep -c '(vmx|svm)' /proc/cpuinfo +2 +[root@linuxtechi ~]# +``` + +If output of above egrep command is equal to 1 or more than 1 then this confirms that hardware virtualization is enabled and supported. + +Alternate way to check whether hardware virtualization is enabled or not , execute the beneath command, + +``` +[root@linuxtechi ~]# lscpu | grep Virtualization: +Virtualization: VT-x +[root@linuxtechi opt]# +``` + +If there is no output in above command then it confirms that Virtualization is not enabled from BIOS. + +**Note:** To enable hardware virtualization reboot your system, go to bios settings and then look for Intel VT or AMD virtualization option and enable one of this option which which suits to your system architecture. + +### Step:2) Install KVM and its dependent packages using dnf + +Run the following dnf command to install KVM and its dependent packages, + +``` +[root@linuxtechi ~]# dnf install qemu-kvm qemu-img libvirt virt-install libvirt-client virt-manager -y +``` + +Once above packages has been installed successfully, then run the below command to confirm whether KVM module has been loaded into the kernel or not, + +``` +root@linuxtechi ~]# lsmod | grep -i kvm +kvm_intel 245760 0 +kvm 745472 1 kvm_intel +irqbypass 16384 1 kvm +[root@linuxtechi ~]# +``` + +### Step:3) Enable and Start libvirtd service + +Run the following systemctl command to enable and start libvirtd service, + +``` +[root@linuxtechi ~]# systemctl enable libvirtd +[root@linuxtechi ~]# systemctl start libvirtd +``` + +### Step:4) Create Network bridge and attach Interface to it  + +In RHEL 8, network scripts are deprecated, We have to use Network Manager (nmcli / nmtui) to configure network and network bridges. + +I have two Ethernet cards on my server, ens36 will attached to bridge br0 and ens32 will be used for management . + +``` +[root@linuxtechi ~]# nmcli connection show +NAME UUID TYPE DEVICE +ens32 1d21959d-e2ea-4129-bb89-163486c8d7bc ethernet ens32 +ens36 1af408b6-c98e-47ce-bca7-5141b721f8d4 ethernet ens36 +virbr0 d0f05de4-4b3b-4710-b904-2524b5ad11bf bridge virbr0 +[root@linuxtechi ~]# +``` + +Delete the existing connection of interface “ens36” + +``` +[root@linuxtechi ~]# nmcli connection delete ens36 +Connection 'ens36' (1af408b6-c98e-47ce-bca7-5141b721f8d4) successfully deleted. +[root@linuxtechi ~]# +``` + +Create a Network Bridge with name “**br0**” using mcli command, + +``` +[root@linuxtechi ~]# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0 +Connection 'br0' (62c14e9d-3e72-41c2-8ecf-d17978ad02da) successfully added. +[root@linuxtechi ~]# +``` + +Assign the same IP of ens36 to the bridge interface using following nmcli commands, + +``` +[root@linuxtechi ~]# nmcli connection modify br0 ipv4.addresses 192.168.1.12/24 ipv4.method manual +[root@linuxtechi ~]# nmcli connection modify br0 ipv4.gateway 192.168.1.1 +[root@linuxtechi ~]# nmcli connection modify br0 ipv4.dns 192.168.1.1 +``` + +Add ens36 interface as bridge salve to the network bridge br0, + +``` +[root@linuxtechi ~]# nmcli connection add type bridge-slave autoconnect yes con-name ens36 ifname ens36 master br0 +Connection 'ens36' (0c2065bc-ad39-47a7-9a3e-85c80cd73c94) successfully added. +[root@linuxtechi ~]# +``` + +Now bring up the network bridge using beneath nmcli command, + +``` +[root@linuxtechi ~]# nmcli connection up br0 +Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9) +[root@linuxtechi ~]# +``` + +Verify the connections using following command, + +``` +[root@linuxtechi ~]# nmcli connection show +NAME UUID TYPE DEVICE +br0 00bcff8f-af85-49ad-9196-974de2d9d9d1 bridge br0 +ens32 1d21959d-e2ea-4129-bb89-163486c8d7bc ethernet ens32 +ens36 eaef13c9-c24e-4a3f-ae85-21bf0610471e ethernet ens36 +virbr0 d0f05de4-4b3b-4710-b904-2524b5ad11bf bridge virbr0 +[root@linuxtechi ~]# +``` + +View the bridge (br0) details and status using ip command, + +![rhel-8-bridge-details][1] + +**Note:** If you want to use network-scripts in RHEL 8 system then install network-scripts packages, + +``` +~ ]# dnf install network-scripts -y +``` + +### Step:5) Creating and Managing KVM Virtual Machines + +In RHEL 8 there are different ways to create and manage KVM virtual machines, + + * virt-manager (GUI) + * Command Line tools (**virt-install** & **virsh**) + + + +During the KVM installation we have already installed virt-manager and virt-install packages. + +### Creating Virtual Machines using virt-manager GUI tool: + +Run the virt-manager command from command line or Access virt-manager from RHEL 8 Desktop + +[![Access-Virt-Manager-RHEL8][2]][3] + +Click on Monitor Icon to create a new guest VM (Virtual Machine), + +Choose Local Installation Media as ISO, + +[![Choose-ISO-KVM-RHEL8][4]][5] + +Click on forward, + +In the next screen, browse the OS installation ISO file , in my case i have placed Ubuntu 18.04 LTS server ISO file under /opt folder, + +[![Installation-ISO-File-RHEL8-KVM][6]][7] + +click on Forward to Proceed further, + +In the next window you will be prompted to specify RAM and vCPU for your virtual machine, so specify the values that suits your installation and then click on Forward, + +[![Specify-RAM-CPU-KVM-RHEL8][8]][9] + +In next window specify disk size for your Virtual Machine and the click on Forward, in my case i am giving disk space for my VM as 20 GB, + +[![Disk-Image-RHEL8-KVM-VM][10]][11] + +In the next window, specify the name of VM and choose the Network that you want to attach to VM’s Ethernet card, as we had created network bridge “br0” for vms networking, so choose bridge“br0”. + +[![Network-Selection-KVM-RHEL8][12]][13] + +Click on Finish to proceed with VM creation and its OS installation, + +[![OS-Installation-KVM-VM-RHEL8][14]][15] + +Follow the screen Instructions and complete the Installation. + +**Creating KVM Virtual Machine from Command Line** + +if you are fan of command line then there is a command line tool for you called “**virt-install**” to create virtual machines. Once the Virtual machines are provisioned then vms can be managed via command line tool “[virsh][16]“. + +Let’s assume we want to create CentOS 7 VM using virt-install, i have already placed CentOS 7 ISO file under /opt folder, + +Execute beneath command to provision a VM + +``` +[root@linuxtechi ~]# virt-install -n CentOS7-Server --description "CentOS 7 Virtual Machine" --os-type=Linux --os-variant=rhel7 --ram=1096 --vcpus=1 --disk path=/var/lib/libvirt/images/centos7-server.img,bus=virtio,size=20 --network bridge:br0 --graphics none --location /opt/CentOS-7-x86_64-DVD-1511.iso --extra-args console=ttyS0 +``` + +Output of command would be something like below, + +![Virt-Install-KVM-RHEL8][17] + +Follow screen instructions to complete CentOS 7 Installation. That’s all from this tutorial, i hope these steps helped you to setup KVM on your RHEL 8 system, please do share your feedback and comments. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/install-configure-kvm-on-rhel-8/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/wp-content/uploads/2019/06/rhel-8-bridge-details-1024x628.jpg +[2]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Access-Virt-Manager-RHEL8-1024x471.jpg +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Access-Virt-Manager-RHEL8.jpg +[4]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Choose-ISO-KVM-RHEL8-1024x479.jpg +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Choose-ISO-KVM-RHEL8.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Installation-ISO-File-RHEL8-KVM-1024x477.jpg +[7]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Installation-ISO-File-RHEL8-KVM.jpg +[8]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Specify-RAM-CPU-KVM-RHEL8-1024x478.jpg +[9]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Specify-RAM-CPU-KVM-RHEL8.jpg +[10]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Disk-Image-RHEL8-KVM-VM-1024x483.jpg +[11]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Disk-Image-RHEL8-KVM-VM.jpg +[12]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Network-Selection-KVM-RHEL8-1024x482.jpg +[13]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Network-Selection-KVM-RHEL8.jpg +[14]: https://www.linuxtechi.com/wp-content/uploads/2019/06/OS-Installation-KVM-VM-RHEL8-1024x479.jpg +[15]: https://www.linuxtechi.com/wp-content/uploads/2019/06/OS-Installation-KVM-VM-RHEL8.jpg +[16]: https://www.linuxtechi.com/create-revert-delete-kvm-virtual-machine-snapshot-virsh-command/ +[17]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Virt-Install-KVM-RHEL8.jpg From 934a0f45b15ec236842aa1794db46b396bf7c836 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:54:28 +0800 Subject: [PATCH 121/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20Check?= =?UTF-8?q?=20your=20password=20security=20with=20Have=20I=20Been=20Pwned?= =?UTF-8?q?=3F=20and=20pass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 Check your password security with Have I Been Pwned- and pass.md --- ...curity with Have I Been Pwned- and pass.md | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 sources/tech/20190624 Check your password security with Have I Been Pwned- and pass.md diff --git a/sources/tech/20190624 Check your password security with Have I Been Pwned- and pass.md b/sources/tech/20190624 Check your password security with Have I Been Pwned- and pass.md new file mode 100644 index 0000000000..d4557725ba --- /dev/null +++ b/sources/tech/20190624 Check your password security with Have I Been Pwned- and pass.md @@ -0,0 +1,113 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Check your password security with Have I Been Pwned? and pass) +[#]: via: (https://opensource.com/article/19/6/check-passwords) +[#]: author: (Brian "bex" Exelbierd https://opensource.com/users/bexelbie/users/jason-baker/users/admin/users/mtsouk) + +Check your password security with Have I Been Pwned? and pass +====== +Periodically checking for password compromise is an excellent way to +help ward off most attackers in most threat models. +![Password lock][1] + +Password security involves a broad set of practices, and not all of them are appropriate or possible for everyone. Therefore, the best strategy is to develop a threat model by thinking through your most significant risks—who and what you are protecting against—then model your security approach on the activities that are most effective against those specific threats. The Electronic Frontier Foundation (EFF) has a [great series on threat modeling][2] that I encourage everyone to read. + +In my threat model, I am very concerned about the security of my passwords against (among other things) [dictionary attacks][3], in which an attacker uses a list of likely or known passwords to try to break into a system. One way to stop dictionary attacks is to have your service provider rate-limit or deny login attempts after a certain number of failures. Another way is not to use passwords in the "known passwords" dataset. + +### Check password security with HIBP + +[Troy Hunt][4] created [Have I Been Pwned?][5] (HIBP) to notify people when their information is found in leaked data dumps and breaches. If you haven't already registered, you should, as the mere act of registering exposes nothing. Troy has built a collection of over 550 million real-world passwords from this data. These are passwords that real people used and were exposed by data that was stolen or accidentally made public. + +The site _does not_ publish the plaintext password list, but it doesn't have to. By definition, this data is already out there. If you've ever reused a password or used a "common" password, then you are at risk because someone is building a dictionary of these passwords to try right now. + +Recently, Firefox and HIBP announced they are [teaming up][6] to make breach searches easier. And the National Institutes of Standards and Technology (NIST) recommends that you [check passwords][7] against those known to be compromised and change them if they are found. HIBP supports this via a password-checking feature that is exposed via an API, so it is easy to use. + +Now, it would be a bad idea to send the website a full list of your passwords. While I trust [HaveIBeenPwned.com][5], it could be compromised one day. Instead, the site uses a process called [k-Anonymity][8] that allows you to check your passwords without exposing them. This is a three-step process. First, let's review the steps, and then we can use the **pass-pwned** plugin to do it for us: + + 1. Create a hash value of your password. A hash value is just a way of turning arbitrary data—your password—into a fixed data representation—the hash value. A cryptographic hash function is collision-resistant, meaning it creates a unique hash value for every input. The algorithm used for the hash is a one-way transformation, which makes it hard to know the input value if you only have the hash value. For example, using the SHA-1 algorithm that HIBP uses, the password **hunter2** becomes **F3BBBD66A63D4BF1747940578EC3D0103530E21D**. + 2. Send the first five characters (**F3BBB** in our example) to the site, and the site will send back a list of all the hash values that start with those five characters. This way, the site can't know which hash values you are interested in. The k-Anonymity process ensures there is so much statistical noise that it is hard for a compromised site to determine which password you inquired about. For example, our query returns a list of 527 potential matches from HIBP. + 3. Search through the list of results to see if your hash is there. If it is, your password has been compromised. If it isn't, the password isn't in a publicly known data breach. HIBP returns a bonus in its data: a count of how many times the password has been seen in data breaches. Astoundingly, **hunter2** has been seen 17,043 times! + + + +### Check password security with pass + +I use [**pass**][9], a [GNU Privacy Guard][10]-based password manager. It has many extensions, which are available on the [**pass** website][11] and as a separately maintained [awesome-style list][12]. One of these extensions is [**pass-pwned**][13], which will check your passwords with HIBP. Both **pass** and **pass-pwned** are packaged for Fedora 29, 30, and Rawhide. You can install the extension with: + + +``` +`sudo dnf install pass pass-pwned` +``` + +or you can follow the manual instructions on their respective websites. + +If you're just getting started with **pass**, read [Managing passwords the open source way][14] for a great overview. + +The following will quickly set up **pass** and check a stored password. This example assumes you already have a GPG key. + + +``` +# Setup a pass password store +$ pass init <GPG key email> + +# Add the password, "hunter2" to the store +$ pass insert awesome-site.com + +# Install the pass-pwned extension +# Download the bash script from the upstream and then review it +$ mkdir ~/.password-store/.extensions +$ wget -O ~/.password-store/.extensions/pwned.bash +$ vim ~/.password-store/.extensions/pwned.bash + +# If everything is OK, set it executable and enable pass extensions +$ chmod u+x ~/.password-store/.extensions/pwned.bash +$ echo 'export PASSWORD_STORE_ENABLE_EXTENSIONS="true"' >> ~/.bash_profile +$ source ~/.bash_profile + +# Check the password +$ pass pwned awesome-site.com +Password found in haveibeenpwned 17043 times + +# Change this password to something randomly generated and verify it +$ pass generate -i awesoem-site.com +The generated password for awesome-site.com is: +<REDACTED> +$ pass pwned awesome-site.com +Password not found in haveibeenpwned +``` + +Congratulations, your password is now more secure than it was before! You can also [use wildcards to check multiple passwords][15] at once. + +Periodically checking for password compromise is an excellent way to help ward off most attackers in most threat models. If your password management system doesn't make it this easy, you may want to upgrade to something like **pass**. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/check-passwords + +作者:[Brian "bex" Exelbierd][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/bexelbie/users/jason-baker/users/admin/users/mtsouk +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/password.jpg?itok=ec6z6YgZ (Password lock) +[2]: https://ssd.eff.org/en/module/your-security-plan +[3]: https://en.wikipedia.org/wiki/Dictionary_attack +[4]: https://www.troyhunt.com/ +[5]: https://haveibeenpwned.com/ +[6]: https://www.troyhunt.com/were-baking-have-i-been-pwned-into-firefox-and-1password/ +[7]: https://pages.nist.gov/800-63-FAQ/#q-b5 +[8]: https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ +[9]: https://www.passwordstore.org/ +[10]: https://gnupg.org/ +[11]: https://www.passwordstore.org/#extensions +[12]: https://github.com/tijn/awesome-password-store +[13]: https://github.com/alzeih/pass-pwned +[14]: https://opensource.com/life/14/7/managing-passwords-open-source-way +[15]: https://github.com/alzeih/pass-pwned/issues/3 From 4fee4007f4b5801d1fbca9ecf6c6e29f9ccedf7b Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 25 Jun 2019 00:55:43 +0800 Subject: [PATCH 122/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20Raspbe?= =?UTF-8?q?rry=20Pi=204=20is=20here!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 Raspberry Pi 4 is here.md --- .../tech/20190624 Raspberry Pi 4 is here.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 sources/tech/20190624 Raspberry Pi 4 is here.md diff --git a/sources/tech/20190624 Raspberry Pi 4 is here.md b/sources/tech/20190624 Raspberry Pi 4 is here.md new file mode 100644 index 0000000000..35748c7d25 --- /dev/null +++ b/sources/tech/20190624 Raspberry Pi 4 is here.md @@ -0,0 +1,92 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Raspberry Pi 4 is here!) +[#]: via: (https://opensource.com/article/19/6/raspberry-pi-4) +[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) + +Raspberry Pi 4 is here! +====== +A new version of the $35 computer features a 1.5GHz Arm chip and support +for dual-HDMI 4K displays, Gigabit Ethernet, and much more. +![Raspberry Pi 4 board][1] + +The latest version of the Raspberry Pi—Raspberry Pi 4—was released today, earlier than anticipated, featuring a new 1.5GHz Arm chip and VideoCore GPU with some brand new additions: dual-HDMI 4K display output; USB3 ports; Gigabit Ethernet; and multiple RAM options up to 4GB. + +![Raspberry Pi 4 case][2] + +The Raspberry Pi 4 is a very powerful single-board computer and starts at the usual price of $35. That gets you the standard 1GB RAM, or you can pay $45 for the 2GB model or $55 for the 4GB model—premium-priced models are a first for Raspberry Pi. + +The specs at-a-glance: + + * 64-bit BCM2711 quad-core A72 CPU @ 1.5GHz + * VideoCore VI GPU + * Gigabit Ethernet port + * 1GB, 2GB, or 4GB LPDDR4 RAM + * Two Micro-HDMI ports + * Two USB3 ports + * Two USB2 ports + * Dual-band (2.4GHz and 5GHz) WiFi + * Bluetooth 5.0 + * USB Type C power port + * CSI camera interface + * DSI display interface + * MicroSD card slot + * Power-over-Ethernet pins + * Full compatibility with all previous Raspberry Pi models + + + +### USB and networking + +The Raspberry Pi 4 has the benefit of having USB3; it's powered by a USB Type C cable and provides two USB3 ports and two USB2 ports. You can now connect USB3 hard drives and other peripherals and get faster connectivity. + +![Raspberry Pi 4 USBs][3] + +The BCM2835-based chip in Raspberry Pi 1 to 3 provided just one native USB port and no Ethernet, so a USB hub on the board provided more USB ports and an Ethernet port. The 3B+ added a dedicated LAN chip, which gave it Gigabit Ethernet, but this was limited to USB2 speeds. The Pi 4 has dedicated Gigabit Ethernet, and because it's no longer throttled over USB, its networking speeds are much faster. + +The Pi 4 takes advantage of the technology built into the 3B+ that made it the first single-board computer with dual-band WiFi. This means you can connect to both 2.4GHz and 5GHz networks. + +### Displays + +When the first Raspberry Pi launched, the balance of its CPU and GPU performance was tipped heavily in favor of the GPU. The VideoCore IV was a very powerful graphics processor, capable of full-HD 1080p multimedia, which is why the Pi has always been popular as a home media center. The Pi 2 rebalanced things somewhat and brought the CPU in line, taking the Pi from a single-core to a quad-core Arm chip. The Pi 4 takes both factors a big step forward. The new VideoCore VI GPU gives the Pi 4K video and allows two displays via the board's two Micro-HDMI ports (selected to keep the board the same size), so you'll need an adapter or a Micro-to-full HDMI cable to use an HDMI monitor. + +Dual displays are a godsend when you need more screen real estate to keep eye contact with multiple windows—if you're programming you might have your code on one screen and the website or app you're building; your database; your web browser; your emails, or anything else on the other. For the first time, development on Raspberry Pi won't be limited to a single monitor. It's also handy if you want to build a Pi-based project with different things on different screens. + +The Pi also has a Display Serial Interface (DSI) port to drive another special display—not another monitor per se, but the official Raspberry Pi touch screen display connected via a flex cable. + +### Raspbian Buster + +This Raspberry Pi 4's launch coincides with a major Debian release, and the fact the new Pi supports OpenGL ES 3 means it makes sense for any software developed for the Pi 4 to target Raspbian Buster. Buster brings a few user interface tweaks and a whole host of software upgrades, including Python 3.7. + +![Raspbian Buster][4] + +### Open source graphics drivers + +Over the last five years, Eric Anholt has been working to write open source graphics drivers for the Raspberry Pi. Now, Raspbian can use this driver to deliver accelerated web browsing, desktop graphics, and 3D applications on the Pi. This replaces a large chunk of closed-source code that was previously required. Huge thanks to Eric and Broadcom for this effort. + +Previously, the Raspberry Pi 4 was expected to be yet another year away, but the chip design turned out to be ready for production much earlier than anticipated, so here it is! + +* * * + +_The Raspberry Pi 4 is on sale now. Which model will you opt for? Let us know your plans in the comments!_ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/raspberry-pi-4 + +作者:[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/raspberry-pi-4_lead.jpg?itok=2bkk43om (Raspberry Pi 4 board) +[2]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-case.jpg (Raspberry Pi 4 case) +[3]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-usb.jpg (Raspberry Pi 4 USBs) +[4]: https://opensource.com/sites/default/files/uploads/raspbian-buster.png (Raspbian Buster) From 3884a8974dc458d9393828f44cf912319da4244d Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 25 Jun 2019 08:55:03 +0800 Subject: [PATCH 123/336] translating --- ...pen Source Version of Microsoft VS Code.md | 123 ------------------ ...pen Source Version of Microsoft VS Code.md | 118 +++++++++++++++++ 2 files changed, 118 insertions(+), 123 deletions(-) delete mode 100644 sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md create mode 100644 translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md diff --git a/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md deleted file mode 100644 index 2365c992e2..0000000000 --- a/sources/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md +++ /dev/null @@ -1,123 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (VSCodium: 100% Open Source Version of Microsoft VS Code) -[#]: via: (https://itsfoss.com/vscodium/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -VSCodium: 100% Open Source Version of Microsoft VS Code -====== - -_**Brief: VSCodium is a fork of Microsoft’s popular Visual Studio Code editor. It’s identical to VS Code with the single biggest difference that unlike VS Code, VSCodium doesn’t track your usage data.**_ - -Microsoft’s [Visual Studio Code][1] is an excellent editor not only for web developers but also for other programmers. Due to its features, it’s considered one of the best open source code editors. - -Yes, it’s one of the many open source products from Microsoft. You can [easily install Visual Studio Code in Linux][2] thanks to the ready to use binaries in the form of DEB, RPM and Snap packages. - -And there is a problem which might not be an issue for a regular user but significant to an open source purist. - -The ready to use binaries Microsoft provides are not open source. - -Confused? Let me explain. - -The source code of VS Code is open sourced under MIT license. You can access it on the [GitHub][3]. However, the [installation files that Microsoft has created contain proprietary telemetry/tracking][4]. - -This tracking basically collects usage data and sends it to Microsoft to ‘help improve their products and services’. Telemetry reporting is common with software products these days. Even [Ubuntu does that but with more transparency][5]. - -You can [disable the telemetry in VS Code][6] but can you trust Microsoft completely? If the answer is no, then what are your options? - -You can build it from the source code and thus keep everything open source. But [installing from source code][7] is not always the prettiest option specially in today’s world when we are so used to of having binaries. - -Another option is to use VSCodium! - -### VSCodium: 100% open source form of Visual Studio Code - -![][8] - -[VSCodium][9] is a fork of Microsoft’s Visual Studio Code. This project’s sole aim is to provide you with ready to use binaries without Microsoft’s telemetry code. - -[][10] - -Suggested read  SuiteCRM: An Open Source CRM Takes Aim At Salesforce - -This solves the problem where you want to use VS Code without the proprietary code from Microsoft but you are not comfortable with building it from the source. - -Since [VSCodium is a fork of VS Code][11], it looks and functions exactly the same as VS Code. - -Here’s a screenshot of the first run of VS Code and VSCodium side by side in Ubuntu. Can you distinguish one from another? - -![Can you guess which is VSCode and VSCodium?][12] - -If you have not been able to distinguish between the two, look at the bottom. - -![That’s Microsoft][13] - -Apart from this and the logo of the two applications, there is no other noticeable difference. - -![VSCodium and VS Code in GNOME Menu][14] - -#### Installing VSCodium on Linux - -While VSCodium is available in some distributions like Parrot OS, you’ll have to add additional repositories in other Linux distributions. - -On Ubuntu and Debian based distributions, you can use the following commands to install VSCodium. - -First, add the GPG key of the repository: - -``` -wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | sudo apt-key add - -``` - -And then add the repository itself: - -``` -echo 'deb https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/repos/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list -``` - -Now update your system and install VSCodium: - -``` -sudo apt update && sudo apt install codium -``` - -You can find the [installation instructions for other distributions on its page][15]. You should also read the [instructions about migrating from VS Code to VSCodium][16]. - -**What do you think of VSCodium?** - -Personally, I like the concept of VSCodium. To use the cliche, the project has its heart in the right place. I think, Linux distributions committed to open source may even start including it in their official repository. - -What do you think? Is it worth switching to VSCodium or would you rather opt out of the telemetry and continue using VS Code? - -And please, no “I use Vim” comments :D - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/vscodium/ - -作者:[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://code.visualstudio.com/ -[2]: https://itsfoss.com/install-visual-studio-code-ubuntu/ -[3]: https://github.com/Microsoft/vscode -[4]: https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005 -[5]: https://itsfoss.com/ubuntu-data-collection-stats/ -[6]: https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting -[7]: https://itsfoss.com/install-software-from-source-code/ -[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium.png?resize=800%2C450&ssl=1 -[9]: https://vscodium.com/ -[10]: https://itsfoss.com/suitecrm-ondemand/ -[11]: https://github.com/VSCodium/vscodium -[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-vs-vscode.png?resize=800%2C450&ssl=1 -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/microsoft-vscode-tracking.png?resize=800%2C259&ssl=1 -[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-and-vscode.jpg?resize=800%2C220&ssl=1 -[15]: https://vscodium.com/#install -[16]: https://vscodium.com/#migrate diff --git a/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md new file mode 100644 index 0000000000..1790ac3066 --- /dev/null +++ b/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @@ -0,0 +1,118 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (VSCodium: 100% Open Source Version of Microsoft VS Code) +[#]: via: (https://itsfoss.com/vscodium/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +VSCodium:Microsoft VS Code 的 100% 开源版本 +====== + +_ **简介:VSCodium 是微软流行的 Visual Studio Code 编辑器的一个分支。它与 VS Code 完全相同,唯一不同的是,VSCodium 不跟踪你的使用数据。** _ + +微软的 [Visual Studio Code][1] 是一个出色的编辑器,不仅对于 Web 开发人员,也适合其他程序员。由于它的功能,它被认为是最好的开源代码编辑器之一。 + +是的,它是微软众多开源产品之一。因为有 DEB、RPM 和 Snap 包形式的二进制文件,你可以[在 Linux 中轻松安装 Visual Studio Code][2]。 + +但它存在一个问题,对于普通用户而言可能不是问题,但对于纯粹开源主义者而言是重要的。 + +Microsoft 提供的即用二进制文件不是开源的。 + +由困惑么?让我解释下。 + +VS Code 的源码是在 MIT 许可下开源的。你可以在 [GitHub][3] 上访问它。但是,[Microsoft 创建的安装包含专有的跟踪程序][4]。 + +此跟踪基本上用来收集使用数据并将其发送给 Microsoft 以“帮助改进其产品和服务”。如今,远程报告在软件产品中很常见。即使 [Ubuntu 也这样做,但它透明度更高][5]。 + +你可以[在 VS Code 中禁用远程报告][6]但是你能完全信任微软吗?如果答案是否定的,那你有什么选择? + +你可以从源代码构建它,从而保持所有开源。但是[从源代码安装][7]并不总是如今最好的选择,因为我们习惯于使用二进制文件。 + +另一种选择是使用 VSCodium! + +### VSCodium:100% 开源形式的 Visual Studio Code + +![][8] + +[VSCodium][9] 是微软 Visual Studio Code 的一个分支。该项目的唯一目的是为你提供现成的二进制文件,而没有 Microsoft 的远程收集代码。 + +这解决了你想在没有 Microsoft 的专有代码的情况下使用 VS Code 但你不习惯从源代码构建它的问题, + +由于 [VSCodium 是 VS Code 的一个分支][11],它的外观和功能与 VS Code 完全相同。 + +这是 Ubuntu 中第一次运行 VS Code 和 VSCodium 的截图。你能分辨出来吗? + +![Can you guess which is VSCode and VSCodium?][12] + +如果你无法区分这两者,请看下面。 + +![That’s Microsoft][13] + +除此之外,还有两个应用的 logo,没有其他明显的区别。 + +![VSCodium and VS Code in GNOME Menu][14] + +#### 在 Linux 上安装 VSCodium + +虽然 VSCodium 存在于某些发行版(如 Parrot OS)中,但你必须在其他 Linux 发行版中添加额外的仓库。 + +在基于 Ubuntu 和 Debian 的发行版上,你可以使用以下命令安装 VSCodium。 + +首先,添加仓库的 GPG 密钥: + +``` +wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | sudo apt-key add - +``` + +然后添加仓库: + +``` +echo 'deb https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/repos/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list +``` + +现在更新你的系统并安装 VSCodium: + +``` +sudo apt update && sudo apt install codium +``` + +你可以在它的页面上找到[其他发行版的安装说明][15]。你还应该阅读[有关从 VS Code 迁移到 VSCodium 的说明][16]。 + +**你如何看待 VSCodium?** + +就个人而言,我喜欢 VSCodium 的概念。说的老套一点,它的初心是好的。我认为,致力于开源的 Linux 发行版甚至可能开始将其包含在官方仓库中。 + +你怎么看?是否值得切换到 VSCodium 或者你选择关闭远程报告并继续使用 VS Code? + +请不要出现“我使用 Vim” 的评论 :D + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/vscodium/ + +作者:[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://code.visualstudio.com/ +[2]: https://itsfoss.com/install-visual-studio-code-ubuntu/ +[3]: https://github.com/Microsoft/vscode +[4]: https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005 +[5]: https://itsfoss.com/ubuntu-data-collection-stats/ +[6]: https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting +[7]: https://itsfoss.com/install-software-from-source-code/ +[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium.png?resize=800%2C450&ssl=1 +[9]: https://vscodium.com/ +[11]: https://github.com/VSCodium/vscodium +[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-vs-vscode.png?resize=800%2C450&ssl=1 +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/04/microsoft-vscode-tracking.png?resize=800%2C259&ssl=1 +[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/vscodium-and-vscode.jpg?resize=800%2C220&ssl=1 +[15]: https://vscodium.com/#install +[16]: https://vscodium.com/#migrate From 3f8a759d9090441cac15a43e91e4bab2d59220a0 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 25 Jun 2019 09:01:07 +0800 Subject: [PATCH 124/336] translating --- sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md b/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md index 984fb771dc..b8c28c7d5d 100644 --- a/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md +++ b/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 27bae6319e303aaad73ee4004a306728c62bea0b Mon Sep 17 00:00:00 2001 From: MurphyZhao Date: Tue, 25 Jun 2019 20:53:08 +0800 Subject: [PATCH 125/336] =?UTF-8?q?=E3=80=90=E7=A7=BB=E9=99=A4=E3=80=91201?= =?UTF-8?q?90610=20Applications=20for=20writing=20Markdown.md=20=E5=8E=9F?= =?UTF-8?q?=E6=96=87=20=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=9120190610=20Appl?= =?UTF-8?q?ications=20for=20writing=20Markdown.md=20=E8=AF=91=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MurphyZhao --- ...90610 Applications for writing Markdown.md | 76 ------------------- ...90610 Applications for writing Markdown.md | 76 +++++++++++++++++++ 2 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 sources/tech/20190610 Applications for writing Markdown.md create mode 100644 translated/tech/20190610 Applications for writing Markdown.md diff --git a/sources/tech/20190610 Applications for writing Markdown.md b/sources/tech/20190610 Applications for writing Markdown.md deleted file mode 100644 index 782ee8a0ee..0000000000 --- a/sources/tech/20190610 Applications for writing Markdown.md +++ /dev/null @@ -1,76 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (murphyzhao) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Applications for writing Markdown) -[#]: via: (https://fedoramagazine.org/applications-for-writing-markdown/) -[#]: author: (Ryan Lerch https://fedoramagazine.org/author/ryanlerch/) - -Applications for writing Markdown -====== - -![][1] - -Markdown is a lightweight markup language that is useful for adding formatting while still maintaining readability when viewing as plain text. Markdown (and Markdown derivatives) are used extensively as the priumary form of markup of documents on services like GitHub and pagure. By design, Markdown is easily created and edited in a text editor, however, there are a multitude of editors available that provide a formatted preview of Markdown markup, and / or provide a text editor that highlights the markdown syntax. - -This article covers 3 desktop applications for Fedora Workstation that help out when editing Markdown. - -### UberWriter - -[UberWriter][2] is a minimal Markdown editor and previewer that allows you to edit in text, and preview the rendered document. - -![][3] - -The editor itself has inline previews built in, so text marked up as bold is displayed bold. The editor also provides inline previews for images, formulas, footnotes, and more. Ctrl-clicking one of these items in the markup provides an instant preview of that element to appear. - -In addition to the editor features, UberWriter also features a full screen mode and a focus mode to help minimise distractions. Focus mode greys out all but the current paragraph to help you focus on that element in your document - -Install UberWriter on Fedora from the 3rd-party Flathub repositories. It can be installed directly from the Software application after [setting up your system to install from Flathub][4] - -### Marker - -Marker is a Markdown editor that provides a simple text editor to write Markdown in, and provides a live preview of the rendered document. The interface is designed with a split screen layout with the editor on the left, and the live preview on the right. - -![][5] - -Additionally, Marker allows you to export you document in a range of different formats, including HTML, PDF, and the Open Document Format (ODF). - -Install Marker on Fedora from the 3rd-party Flathub repositories. It can be installed directly from the Software application after [setting up your system to install from Flathub][4] - -### Ghostwriter - -Where the previous editors are more focussed on a minimal user experice, Ghostwriter provides many more features and options to play with. Ghostwriter provides a text editor that is partially styled as you write in Markdown format. Bold text is bold, and headings are in a larger font to assist in writing the markup. - -![][6] - -It also provides a split screen with a live updating preview of the rendered document. - -![][7] - -Ghostwriter also includes a range of other features, including the ability to choose the Markdown flavour that the preview is rendered in, as well as the stylesheet used to render the preview too. - -Additionally, it provides a format menu (and keyboard shortcuts) to insert some of the frequent markdown ‘tags’ like bold, bullets, and italics. - -Install Ghostwriter on Fedora from the 3rd-party Flathub repositories. It can be installed directly from the Software application after [setting up your system to install from Flathub][4] - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/applications-for-writing-markdown/ - -作者:[Ryan Lerch][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/ryanlerch/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/markdownapps.png-816x345.jpg -[2]: https://uberwriter.github.io/uberwriter/#1 -[3]: https://fedoramagazine.org/wp-content/uploads/2019/06/uberwriter-editor-1.png -[4]: https://fedoramagazine.org/install-flathub-apps-fedora/ -[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/marker-screenshot-1024x500.png -[6]: https://fedoramagazine.org/wp-content/uploads/2019/06/ghostwriter-1024x732.png -[7]: https://fedoramagazine.org/wp-content/uploads/2019/06/ghostwriter2-1024x566.png diff --git a/translated/tech/20190610 Applications for writing Markdown.md b/translated/tech/20190610 Applications for writing Markdown.md new file mode 100644 index 0000000000..c11ce19b1c --- /dev/null +++ b/translated/tech/20190610 Applications for writing Markdown.md @@ -0,0 +1,76 @@ +[#]: collector: (lujun9972) +[#]: translator: (murphyzhao) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Applications for writing Markdown) +[#]: via: (https://fedoramagazine.org/applications-for-writing-markdown/) +[#]: author: (Ryan Lerch https://fedoramagazine.org/author/ryanlerch/) + +撰写 Markdown 的软件 +====== + +![][1] + +Markdown 是一种轻量级标记语言,添加格式后,以纯文本格式查看时依然保持可读性。Markdown(和 Markdown 衍生物)被广泛用作 GitHub 和 pagure 等服务上文档标记的主要形式。根据设计,可以在文本编辑器中轻松创建和编辑 Markdown,但是,有许多编辑器可以提供 Markdown 标记的格式化预览,或提供 markdown 语法高亮显示。 + +本文介绍了针对 Fedora 平台的 3 个桌面应用程序,以帮助编辑 Markdown。 + +### UberWriter + +[UberWriter][2] 是一个小巧的 Markdown 编辑器和预览器,允许您编辑文本,并预览渲染的文档。 + +![][3] + +编辑器本身具有内置的内联预览,因此标记为粗体的文本以粗体显示。编辑器还提供图像、公式、脚注等标记的内联预览。按住 Ctrl 键单击其中的一个标记可以即时预览要显示的元素。 + +除了编辑器功能外,UberWriter 还具有全屏模式和聚焦模式,有助于最大限度地减少干扰。焦点模式将以灰色显示除当前段落以外的所有内容,以帮助您专注于文档中当前元素。 + +从第三方 Flathub 存储库安装 UberWriter 到 Fedora 平台。在将系统[设置为从 Flathub 安装][4]后,可以直接从 Software 应用程序中安装它。 + +### Marker + +Marker 是一个 Markdown 编辑器,它提供了一个简单的文本编辑器来编写 Markdown,并提供渲染文档的实时预览。界面采用分屏设计,左侧为编辑器,右侧为实时预览。 + +![][5] + +此外,Marker 允许您以各种格式导出文档,包括 HTML、PDF 和开放文档格式(ODF)。 + +从第三方 Flathub 存储库安装 Marker 到 Fedora 平台。在将系统[设置为从 Flathub 安装][4]后,可以直接从 Software 应用程序中安装它。 + +### Ghostwriter + +以前的编辑更专注于最小的用户体验,Ghostwriter 提供了更多的功能和选项。Ghostwriter 提供了一个文本编辑器,当您以 Markdown 格式书写时,编辑器将 Markdown 部分样式化。粗体标记文本显示为粗体,标题标记显示为较大的字体,以帮助编写 Markdown 标记。 + +![][6] + +它还提供了一个分屏,包含渲染文档的实时更新预览。 + +![][7] + +Ghostwriter 还包括一系列其他功能,包括能够选择渲染预览的 Markdown 风格,以及用于渲染预览的样式表。 + +此外,它还提供了一个格式菜单(和键盘快捷键)来插入一些频繁的 Markdown 标记,如粗体、项目符号和斜体。 + +从第三方 Flathub 存储库安装 Ghostwriter 到 Fedora 平台。在将系统[设置为从 Flathub 安装][4]后,可以直接从 Software 应用程序中安装它。 + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/applications-for-writing-markdown/ + +作者:[Ryan Lerch][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/ryanlerch/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/markdownapps.png-816x345.jpg +[2]: https://uberwriter.github.io/uberwriter/#1 +[3]: https://fedoramagazine.org/wp-content/uploads/2019/06/uberwriter-editor-1.png +[4]: https://fedoramagazine.org/install-flathub-apps-fedora/ +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/marker-screenshot-1024x500.png +[6]: https://fedoramagazine.org/wp-content/uploads/2019/06/ghostwriter-1024x732.png +[7]: https://fedoramagazine.org/wp-content/uploads/2019/06/ghostwriter2-1024x566.png From f9aa65239a4c09300f6b425f2847c72d5149521d Mon Sep 17 00:00:00 2001 From: chen ni Date: Tue, 25 Jun 2019 22:36:28 +0800 Subject: [PATCH 126/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190619 Leading in the Python community.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190619 Leading in the Python community.md b/sources/tech/20190619 Leading in the Python community.md index 98fa8c5dba..3ce59e8d68 100644 --- a/sources/tech/20190619 Leading in the Python community.md +++ b/sources/tech/20190619 Leading in the Python community.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 3510576e84185885d564da97ecde9adb18c4ff2b Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Tue, 25 Jun 2019 23:19:44 +0800 Subject: [PATCH 127/336] Rename sources/tech/20190624 Raspberry Pi 4 is here.md to sources/news/20190624 Raspberry Pi 4 is here.md --- sources/{tech => news}/20190624 Raspberry Pi 4 is here.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20190624 Raspberry Pi 4 is here.md (100%) diff --git a/sources/tech/20190624 Raspberry Pi 4 is here.md b/sources/news/20190624 Raspberry Pi 4 is here.md similarity index 100% rename from sources/tech/20190624 Raspberry Pi 4 is here.md rename to sources/news/20190624 Raspberry Pi 4 is here.md From ab25a4399d81ce470901ac5118df4ff19afd2e07 Mon Sep 17 00:00:00 2001 From: "GJ.Zhang" Date: Tue, 25 Jun 2019 23:20:04 +0800 Subject: [PATCH 128/336] Update 20190609 How to set ulimit and file descriptors limit on Linux Servers.md --- ...to set ulimit and file descriptors limit on Linux Servers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md b/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md index 1b732b566d..d7dab7ce06 100644 --- a/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md +++ b/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (zgj1024) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 48bc064fd18df691f8b06c48aadc573b5ebfc84d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 26 Jun 2019 00:28:28 +0800 Subject: [PATCH 129/336] PRF:20190530 A short primer on assemblers, compilers, and interpreters.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @chen-ni 翻译的很棒! --- ...assemblers, compilers, and interpreters.md | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md b/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md index 757c0631cb..96b64809d3 100644 --- a/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md +++ b/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md @@ -1,28 +1,30 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (A short primer on assemblers, compilers, and interpreters) [#]: via: (https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters) [#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/shawnhcorey/users/jnyjny/users/jnyjny) -浅谈汇编器,编译器和解释器 +浅谈汇编器、编译器和解释器 ====== -简单介绍一下编程方式的历史演变 + +> 简单介绍一下编程方式的历史演变。 + ![keyboard with connected dots][1] -在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来在短时间内解决复杂的数学问题,所以数学家天然就适合“编程”工作。 +在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来快速解决复杂的数学问题,所以数学家天然就适合“编程”工作。 ### 什么是程序? 首先来看一点背景知识。计算机自己是做不了任何事情的,它们的任何行为都需要程序来引导。你可以把程序看成是非常精确的菜谱,这种菜谱读取一个输入,然后生成对应的输出。菜谱里的各个步骤由操作数据的指令构成。听上去有点儿复杂,不过你或许知道下面这个语句是什么意思: ``` -`1 + 2 = 3` +1 + 2 = 3 ``` -其中的加号是“指令”,而数字 1 和 2 是数据。数学上的等号意味着等式两边的部分是“等价”的,不过在大部分编程语言中等号(或者它的变形)都是“赋值”的意思。如果计算机执行上面这个语句,它会把这个加法的结果(也就是“3”)储存在内存中的某个地方。 +其中的加号是“指令”,而数字 1 和 2 是数据。数学上的等号意味着等式两边的部分是“等价”的,不过在大部分编程语言中对变量使用等号是“赋值”的意思。如果计算机执行上面这个语句,它会把这个加法的结果(也就是“3”)储存在内存中的某个地方。 计算机知道如何使用数字进行数学运算,以及如何在内存结构中移动数据。在这里就不对内存进行展开了,你只需要知道内存一般分为两大类:“速度快/空间小”和“速度慢/空间大”。CPU 寄存器的读写速度非常快,但是空间非常小,相当于一个速记便签。主存储器通常有很大的空间,但是读写速度就比寄存器差远了。在程序运行的时候,CPU 不断将它所需要用到的数据从主存储器挪动到寄存器,然后再把结果放回到主存储器。 @@ -32,9 +34,9 @@ ![Programmers operate the ENIAC computer][2] -_程序员[Betty Jean Jennings][3] (左) 和 [Fran Bilas][4] (右) 在操作 [ENIAC][5] 的主控制面板._ +*程序员[Betty Jean Jennings][3] (左) 和 [Fran Bilas][4] (右) 在操作 [ENIAC][5] 的主控制面板* -后来有一名 [电气工程师][6] 认为自己的时间很宝贵,就写了一个能够把人们可以读懂的“菜谱”一样的程序转换成计算机可以读懂的版本的程序。这就是最初的“汇编器”,在当时引起了不小的争议。这些昂贵机器的主人不希望把计算资源浪费在人们已经在做的任务上(虽然又慢又容易出错)。不过随着时间的推移,人们逐渐发现使用汇编器在速度和准确性上都胜于人工编写机器语言,并且计算机完成的“实际工作量”增加了。 +后来有一名 [电气工程师][6] 认为自己的时间很宝贵,就写了一个程序,能够把人们可以读懂的“菜谱”一样的输入转换成计算机可以读懂的版本。这就是最初的“汇编器”,在当时引起了不小的争议。这些昂贵机器的主人不希望把计算资源浪费在人们已经能做的任务上(虽然又慢又容易出错)。不过随着时间的推移,人们逐渐发现使用汇编器在速度和准确性上都胜于人工编写机器语言,并且计算机完成的“实际工作量”增加了。 尽管汇编器相比在机器面板上切换比特的状态已经是很大的进步了,这种编程方式仍然非常专业。上面加法的例子在汇编语言中看起来差不多是这样的: @@ -46,15 +48,15 @@ _程序员[Betty Jean Jennings][3] (左) 和 [Fran Bilas][4] (右) 在操作 [EN 05 STO R2, R0 ``` -每一行都是一个计算机指令,前面是一个指令的简写,后面是指令所操作的数据。这个小小的程序会将数值 1 “移动”到寄存器 R0,然后把 2 移动到寄存器 R1。03 行把 R0 和 R1 两个寄存器里的数值相加,然后将结果储存在 R2 寄存器里。最后,04 行和 05 行决定结果应该被放在主存储器里的什么位置(在这里是地址 64)。管理内存中存储数据的位置是编程过程中最耗时也最容易出错的部分之一。 +每一行都是一个计算机指令,前面是一个指令的简写,后面是指令所操作的数据。这个小小的程序首先会将数值 1 “移动”到寄存器 R0,然后把 2 移动到寄存器 R1。03 行把 R0 和 R1 两个寄存器里的数值相加,然后将结果储存在 R2 寄存器里。最后,04 行和 05 行决定结果应该被放在主存储器里的什么位置(在这里是地址 64)。管理内存中存储数据的位置是编程过程中最耗时也最容易出错的部分之一。 ### 编译器 -汇编器已经比手写计算机指令要好太多了,不过早期的程序员还是渴望能够按照他们所习惯的方式,像书写数学公式一样地去写程序。这种需求驱动了更高级别编译语言的发展,其中有一些已经成为历史,另一些如今还在使用。比如[ALGO][7] 就已经成为历史了,但是像 [Fortran][8] 和 [C][9] 这样的语言仍然在不断解决实际问题。 +汇编器已经比手写计算机指令要好太多了,不过早期的程序员还是渴望能够按照他们所习惯的方式,像书写数学公式一样地去写程序。这种需求推动了高级编译语言的发展,其中有一些已经成为历史,另一些如今还在使用。比如 [ALGO][7] 就已经成为历史了,但是像 [Fortran][8] 和 [C][9] 这样的语言仍然在不断解决实际问题。 ![Genealogy tree of ALGO and Fortran][10] -ALGO 和 Fortran 编程语言的谱系树 +*ALGO 和 Fortran 编程语言的谱系树* 这些“高级”语言使得程序员可以用更简单的方式编写程序。在 C 语言中,我们的加法程序就变成了这样: @@ -63,40 +65,41 @@ int x; x = 1 + 2; ``` -第一个语句描述了该程序将要使用的一块内存。在这个例子中,这块内存应该占一个整数的大小,名字是 **x**。第二个语句是加法,虽然是倒着写的。一个 C 语言的程序员会说这是 "X 被赋值为 1 加 2 的结果"。需要注意的是,程序员并不需要决定在内存的什么位置储存 **x**,这个任务交给编译器了。 +第一个语句描述了该程序将要使用的一块内存。在这个例子中,这块内存应该占一个整数的大小,名字是 `x`。第二个语句是加法,虽然是倒着写的。一个 C 语言的程序员会说这是 “X 被赋值为 1 加 2 的结果”。需要注意的是,程序员并不需要决定在内存的什么位置储存 `x`,这个任务交给编译器了。 -这种被称为“编译器”的新程序可以把用高级语言写的程序转换成汇编语言,再使用汇编器把汇编语言转换成机器可读的程序。这种程序的组合常常被称为“工具链”,因为一个程序的输出就直接成为另一个程序的输入。 +这种被称为“编译器”的新程序可以把用高级语言写的程序转换成汇编语言,再使用汇编器把汇编语言转换成机器可读的程序。这种程序组合常常被称为“工具链”,因为一个程序的输出就直接成为另一个程序的输入。 -编译语言相比汇编语言的优势体现在从一台计算机迁移到不同型号或者品牌的另一台计算机上的时候。在计算机的早期岁月里,包括 IBM,Digital Equipment Corporation,德州仪器,UNIVAC 以及惠普在内的很多公司都在尝试不同类型的计算机硬件。这些计算机除了都需要连接电源之外就没有太多共同点了。它们在内存和 CPU 架构上的差异相当大,当时经常需要人们花费数年来将一台计算机的程序翻译成另一台计算机的程序。 +编译语言相比汇编语言的优势体现在从一台计算机迁移到不同型号或者品牌的另一台计算机上的时候。在计算机的早期岁月里,包括 IBM、DEC、德州仪器、UNIVAC 以及惠普在内的很多公司都在制造除了大量不同类型的计算机硬件。这些计算机除了都需要连接电源之外就没有太多共同点了。它们在内存和 CPU 架构上的差异相当大,当时经常需要人们花费数年来将一台计算机的程序翻译成另一台计算机的程序。 有了高级语言,我们只需要把编译器工具链迁移到新的平台就行了。只要有可用的编译器,高级语言写的程序最多只需要经过小幅修改就可以在新的计算机上被重新编译。高级语言的编译是一个真正的革命性成果。 ![IBM PC XT][11] -1983 发布的 IBM PC XT 是硬件价格下降的早期例子。 -程序员们的生活得到了很好的改善。相比之下,通过高级语言表达他们想要解决的问题让事情变得轻松很多。由于半导体技术的进步以及集成芯片的发明,计算机硬件的价格急剧下降。计算机的速度越来越快,能力也越来越强,并且还便宜了很多。从某个时点往后(也许是 80 年代末期吧),事情发生了转变,程序员变得比他们所使用的硬件更值钱了。 +*1983 发布的 IBM PC XT 是硬件价格下降的早期例子。* + +程序员们的生活得到了很好的改善。相比之下,通过高级语言表达他们想要解决的问题让事情变得轻松很多。由于半导体技术的进步以及集成芯片的发明,计算机硬件的价格急剧下降。计算机的速度越来越快,能力也越来越强,并且还便宜了很多。从某个时间点往后(也许是 80 年代末期吧),事情发生了反转,程序员变得比他们所使用的硬件更值钱了。 ### 解释器 -随着时间的推移,一种新的编程方式兴起了。一种被称为“解释器”的特殊程序可以将程序直接转换成可以立即执行的计算机指令。和编译器差不多,解释器读取程序并将它转换成一个中间形态。但和编译器不同的是,解释器直接执行程序的这个中间形态。解释型语言在每一次执行的时候都要经历这个过程;而编译程序只需要编译一次,之后计算机每次只需要执行编译好的机器指令就可以了。 +随着时间的推移,一种新的编程方式兴起了。一种被称为“解释器”的特殊程序可以直接读取一个程序将其转换成计算机指令以立即执行。和编译器差不多,解释器读取程序并将它转换成一个中间形态。但和编译器不同的是,解释器直接执行程序的这个中间形态。解释型语言在每一次执行的时候都要经历这个过程;而编译程序只需要编译一次,之后计算机每次只需要执行编译好的机器指令就可以了。 顺便说一句,这个特性就是导致人们感觉解释型程序运行得比较慢的原因。不过现代计算机的性能出奇地强大,以至于大多数人无法区分编译型程序和解释型程序。 -解释型程序(有时也被成为“脚本”)甚至更容易被迁移到不同的硬件平台上。因为脚本并不包含任何机器特有的指令,同一个版本的程序可以不经过任何修改就直接在很多不同的计算机上运行。不过当然了,解释器必须得先迁移到新的机器上才行。 +解释型程序(有时也被成为“脚本”)甚至更容易被移植到不同的硬件平台上。因为脚本并不包含任何机器特有的指令,同一个版本的程序可以不经过任何修改就直接在很多不同的计算机上运行。不过当然了,解释器必须得先移植到新的机器上才行。 一个很流行的解释型语言是 [perl][12]。用 perl 完整地表达我们的加法问题会是这样的: ``` -`$x = 1 + 2` +$x = 1 + 2 ``` 虽然这个程序看起来和 C 语言的版本差不多,运行上也没有太大区别,但却缺少了初始化变量的语句。其实还有一些其它的区别(超出这篇文章的范围了),但你应该已经注意到,我们写计算机程序的方式已经和数学家用纸笔手写数学表达式非常接近了。 ### 虚拟机 -最新潮的编程方式要数虚拟机(经常简称 VM)了。虚拟机分为两大类:系统虚拟机和进程虚拟机。这两种虚拟机都提供一种对“真实的”计算硬件的不同级别的抽象,不过他们的作用域不同。系统虚拟机是一个提供物理硬件的替代的软件,而进程虚拟机则被设计用来以一种“系统独立”的方式执行程序。所以在这个例子里,进程虚拟机(往后我所说的虚拟机都是指这个类型)的作用域和解释器的比较类似,因为也是先将程序编译成一个中间形态,然后虚拟机再执行这个中间形态。 +最新潮的编程方式要数虚拟机(经常简称 VM)了。虚拟机分为两大类:系统虚拟机和进程虚拟机。这两种虚拟机都提供一种对“真实的”计算硬件的不同级别的抽象,不过它们的作用域不同。系统虚拟机是一个提供物理硬件的替代品的软件,而进程虚拟机则被设计用来以一种“系统独立”的方式执行程序。所以在这个例子里,进程虚拟机(往后我所说的虚拟机都是指这个类型)的作用域和解释器的比较类似,因为也是先将程序编译成一个中间形态,然后虚拟机再执行这个中间形态。 -虚拟机和解释器的主要区别在于,虚拟机创造了一个虚拟的 CPU,以及一套虚拟的指令集。有了这层抽象,我们就可以编写前端工具来把不同语言的程序编译成虚拟机可以接受的程序了。也许最流行也最知名的虚拟机就是 Java 虚拟机(JVM)了。JVM 最初在 1990 年代只支持 Java 语言,但是如今却可以运行 [许多][13] 流行的编程语言,包括 Scala,Jython,JRuby,Clojure,以及 Kotlin 等等。还有其它一些不太常见的例子,在这里就不说了。我也是最近才知道,我最喜欢的语言 Python 并不是一个解释型语言,而是一个 [运行在虚拟机上的语言][15]! +虚拟机和解释器的主要区别在于,虚拟机创造了一个虚拟的 CPU,以及一套虚拟的指令集。有了这层抽象,我们就可以编写前端工具来把不同语言的程序编译成虚拟机可以接受的程序了。也许最流行也最知名的虚拟机就是 Java 虚拟机(JVM)了。JVM 最初在 1990 年代只支持 Java 语言,但是如今却可以运行 [许多][13] 流行的编程语言,包括 Scala、Jython、JRuby、Clojure,以及 Kotlin 等等。还有其它一些不太常见的例子,在这里就不说了。我也是最近才知道,我最喜欢的语言 Python 并不是一个解释型语言,而是一个 [运行在虚拟机上的语言][15]! 虚拟机仍然在延续这样一个历史趋势:让程序员在使用特定领域的编程语言解决问题的时候,所需要的对特定计算平台的了解变得越来越少了。 @@ -104,18 +107,14 @@ x = 1 + 2; 希望你喜欢这篇简单介绍软件背后运行原理的短文。有什么其它话题是你想让我接下来讨论的吗?在评论里告诉我吧。 -* * * - -_This article was originally published on[PyBites][16] and is reprinted with permission._ - -------------------------------------------------------------------------------- via: https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters 作者:[Erik O'Shaughnessy][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +译者:[chen-ni](https://github.com/chen-ni) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From c6770c76f31bcbb5790e6620fe743668daa5826b Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 26 Jun 2019 00:53:39 +0800 Subject: [PATCH 130/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190625=205=20ti?= =?UTF-8?q?ny=20Linux=20distros=20to=20try=20before=20you=20die?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190625 5 tiny Linux distros to try before you die.md --- ...iny Linux distros to try before you die.md | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 sources/tech/20190625 5 tiny Linux distros to try before you die.md diff --git a/sources/tech/20190625 5 tiny Linux distros to try before you die.md b/sources/tech/20190625 5 tiny Linux distros to try before you die.md new file mode 100644 index 0000000000..2d6cdfb4c6 --- /dev/null +++ b/sources/tech/20190625 5 tiny Linux distros to try before you die.md @@ -0,0 +1,268 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5 tiny Linux distros to try before you die) +[#]: via: (https://opensource.com/article/19/6/linux-distros-to-try) +[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/marcobravo) + +5 tiny Linux distros to try before you die +====== +Resurrect an ancient machine, boot a broken system, or ensure a safe +public computing session with these tiny Linux distros. +![Hand putting a Linux file folder into a drawer][1] + +There are plenty of Linux distributions out there to choose from when you're deciding what to run on a daily basis, yet some are so small that they get little notice. But tiny Linux distributions are powerful innovations: having an entire operating system drive a computer with less than 1GB of storage and half as much RAM is the ultimate software hack. + +Tiny distros have many uses, such as: + + * Save old and slow computers from the rubbish bin. Reject planned obsolescence and use computers until they fall apart, not just until they start to feel slow. + * Boot broken or corrupted systems from a thumb drive to recover data or repair boot partitions. + * Ensure a safe and private environment when on a public computer. If you boot a public computer in a hotel lobby or a library from a thumb drive, you'll know your operating environment is secure. + + + +There are plenty of lightweight distributions out there, like [Lubuntu][2], [Peppermint OS][3], and [Bodhi][4], but there's something special about the truly tiny. Here are five tiny distros you owe it to yourself to try. + +### Tiny Core + +![Tiny Core Linux][5] + +At 11MB for a text console and 16MB for a GUI, [Tiny Core Linux][6] is almost impossibly small. I dug through my collection of old thumb drives; the smallest one was 128MB, which is still eight times the size of Tiny Core's image. + +By default, Tiny Core includes the base OS, assuming you have an Ethernet connection to the internet so you can install only the applications you need. It's such an extremely efficient model that it doesn't even include an application to install the OS (although you can download it from the Tiny Core repository when you're ready to install). + +I've run Tiny Core from a 128MB thumb drive on a system with 512MB RAM, and the performance was excellent, as you might expect from an OS that takes only 16MB. Performance slows only when browsing the internet in a web browser, but the blame lies with the complexity of most modern websites more than Tiny Core. + +Without a GUI, Tiny Core runs well on a mere 64MB of RAM. + +#### Installation + +[Download Tiny Core][7] and write it to a thumb drive with **dd** or [Etcher][8]. + +Installing Tiny Core is easy, once you download the **tc-install** or **tc-install-GUI** application using the **Apps** icon in the launcher bar at the bottom of the screen. + +![Tiny Core installer][9] + +You have several options to install Tiny Core. You can install it to a thumb drive formatted as a Linux drive (this requires your computer to allow booting from a USB drive, which is common in most modern PCs but was less common for older ones), to a Microsoft FAT thumb drive (a hack for PCs that don't normally boot from USB drives), or even to a directory in an existing Linux partition. + +The installation is quick, and when you finish, you can reboot your computer and boot into your Tiny Core Linux OS. + +#### Applications + +Since it comes with little more than a text editor and a terminal, the first thing you should do is install some applications. The **Apps** icon in the bottom launcher bar displays all the Tiny Core packages available to you. The **Apps** repository also includes important drivers, so it's useful when you're looking to get a WiFi card or a printer working. + +When installing a new application or utility, you can choose between having the package load into Tiny Core at boot time or on demand. Choosing to load a package at boot makes it available to you immediately and still available after a reboot (as you would expect). Choosing to load it on demand means the package is available after Tiny Core downloads the package, but after a reboot, it won't be loaded into memory. This may keep your boot time fast and Tiny Core's footprint in RAM tiny, but it also means the package data isn't loaded into memory until you use it for the first time each session. + +The application selection is a good mix between user-centric apps, like office and graphics applications, and server-centric, such as [Samba][10] and web servers. + +Of course, once you start adding applications to Tiny Core, it becomes less tiny. Even the **Tiny Core Plus** image, which includes all WiFi drivers, on the Tiny Core website is only about 100MB, so "less tiny" is likely still well under 256MB or so. + +#### Bottom line + +Tiny Core is ideal for old computers with few resources, network boot images, and anyone who values applications over the OS. Tiny Core is a great weekend project: build the OS you want from 16MB until you have just as much of an OS as you need. + +### SliTaz + +![SliTaz Linux][11] + +The [SliTaz Linux][12] image is about 51MB, about four times the size of Tiny Core, with an impressive collection of drivers and applications included. In fact, if you didn't know better, you might think you booted into a 1GB Ubuntu image because everything you'd expect from a basic starter image is there: text editor, web browser, paint program, spreadsheet application, and so on. + +I've run SliTaz from a 128MB thumb drive on a system with 512MB RAM, and the performance was excellent. Performance slows when browsing heavy websites, but the included lightweight [Midori][13] browser keeps most sites loading quickly. + +At boot time, you can choose to run SliTaz without a GUI; it runs nicely on a mere 64MB of RAM. + +#### Installation + +There are many download options for SliTaz because its developers and community provide many variations for potential system limitations. For instance, there's a low RAM version for systems with as little as 24MB RAM, a version with Firefox instead of Midori, a version with no extra applications, and so on. + +If you're overwhelmed by options and just want to try it out, [download the rolling release][14]. This version is roughly 50MB and is updated weekly. If you fall in love with SliTaz, you can choose a download that's better for your needs—if the rolling release proves to be _too_ fresh for you. + +Once you've downloaded your choice of SliTaz image, write it to a thumb drive with **dd** or [Etcher][8] and reboot. + +Installing SliTaz to a thumb drive or hard drive is done through the **TazPanel** application. It guides you through partitioning your disk (as needed) and installs SliTaz to the destination you choose. + +![SliTaz installer][15] + +#### Applications + +The **TazPanel** application is SliTaz's control center. If you're a fan of OpenSUSE or Mageia (née Mandrake), you might find TazPanel familiar, at least in concept: it's a single application that provides access to system configuration, hardware detection, user and group management, system updates, and application installation. + +Available applications satisfy most basic requirements, meaning if you're not picky about which application you use to accomplish a task, then SliTaz's repositories probably have something for you. If you have specific requirements (GIMP 2.10 instead of GIMP 2.8, for instance), then you'll have to learn how to generate SliTaz packages. The good news is that the **tazpkg** command can convert from several packaging formats, including: + + * Debian packages (.deb, .udeb) + * RPM packages (.rpm) + * Slackware packages (.tgz) + * Puppy packages (.sfs, .pet) + * NuTyX packages (.cards.tar.xz) + * Arch and Alpine Linux packages (.apk, .pkg.tar.gz, .pkg.tar.xz) + * OpenWrt packages (.ipk, .opk) + * Paldo packages (.tar.bz2) + * Void packages (.xbps) + * Tiny Core packages (.tce, .tcel, .tcem, .tcz) + + + +#### Bottom line + +SliTaz is a fast, small Linux distribution with a centralized control panel that makes it easy to learn. Because its packaging tools can convert from other Linux packaging formats, its application selection is theoretically vast, making it easy for you to design your work environment with all your favorite tools. SliTaz is small but lethal, just like its arachnid logo. + +### Porteus + +![Porteus Linux][16] + +[Porteus][17] offers a few desktop options, with the smallest image around 270MB and the largest 350MB. That makes it one of the largest of tiny Linux images, but most of that space is dedicated to ensuring a smooth Linux desktop experience, to the point that you'll likely forget you're using a live distribution. Installing Porteus to an SSD drive or loading it to RAM during boot results in such a flawlessly smooth environment that you won't believe your OS occupies less space than half a CD-ROM. + +Porteus is tiny in the sense that its base image is comparatively small, but depending on the desktop you choose, it can easily require up to 1GB of RAM to run. While other tiny Linux distributions tend to capitalize on minimalist applications to preserve space and resources, Porteus expects you to use it as you would any other distribution. Install all your favorite apps and drivers and forget you're running on a tiny, compressed root filesystem. + +#### Installation + +Download Porteus from your [closest Porteus mirror][18], choosing from MATE, LXQT, LXDE, OpenBox, XFCE, Cinnamon, or KDE, depending upon your preference. If you have no preference, the MATE or KDE desktop are both good at balancing image size with a familiar-feeling desktop experience. + +![Porteus installer][19] + +opensource.com + +You can install Porteus to a thumb drive or an internal hard drive using the instructions in the [official installation guide][20]. The process is similar either way and results in a compressed root filesystem that never changes. It's a stable and contained filesystem upon which you overlay your changes as you use it. When you reboot, changes you make and applications you install are loaded into memory, so your environment is just as you left it. + +#### Applications + +Applications are called "modules" in Porteus lingo and are available from the [Unified Slackware Package Manager][21] (USM), which draws from five different Slackware repositories, meaning you have plenty of applications to choose from. + +#### Bottom line + +Porteus is a full Linux experience with a fraction of the space usually required. It's an excellent portable Linux distribution with lots of desktop options and lots of applications. + +### Bodhi Linux + +![Bodhi Linux][22] + +[Bodhi Linux][4] might not look tiny at first glance, with an ISO image of 740MB, but once it's installed, you'll be amazed at just how tiny it is. Bodhi runs smoothly on only 512MB of RAM but looks and feels like the desktop of tomorrow. Bodhi uses the [Enlightenment][23] desktop, a beautiful user interface that's lovingly crafted to be both small and powerful. + +Bodhi doesn't just use Enlightenment, though, it adds to it. Bodhi's configuration applications and system setting panels are custom interfaces to Enlightenment's sometimes overwhelming array of options. Bodhi makes some sane default choices for you and provides a subset of options. If you're a die-hard Enlightenment user, Bodhi's interpretation might not be pure enough for you, but for many users, Bodhi brings focus to the Enlightenment desktop. + +#### Installation + +[Download Bodhi Linux][24], write it to a thumb drive with **dd** or [Etcher][8], and reboot. + +The Bodhi installer is available from the **Applications** menu in the **Preferences** category. The installation application is **Ubiquity**, so the process is the same as installing Ubuntu. If you've never installed Ubuntu, don't worry; it's one of the easiest to install. + +![Bodhi installer][25] + +#### Applications + +Bodhi is based on the latest long term support (LTS) Ubuntu Linux release, so your available software knows almost no bounds. If it's available for Ubuntu Linux, Bohdi has access to it. + +#### Bottom line + +Bodhi Linux is a step down from the size of a typical Ubuntu install and a step up from many other minimalist Ubuntu environments because it uses Enlightenment. If you're looking for a Linux distribution that runs lighter than most without resorting to overlay filesystems and application modules, then Bodhi is the distribution for you. + +### Puppy Linux + +![Puppy Linux][26] + +Before there was Tiny Core or SliTaz or [AntiX][27] or Porteus, there was [Puppy Linux][28]. One of the original tiny Linux distributions, Puppy has endured for a decade and a half as a reliable, bootable OS for old computers and new users alike. + +Upon first boot, Puppy does its best to guide the user through any necessary steps to ensure everything works as expected. It's a lot of windows to wade through, but once you get through it all, you know without a doubt what works and what doesn't before you choose whether to install. + +Puppy is almost 300MB and failed to work on anything under 1GB RAM in my tests, so it's not exactly the tiniest Linux available. However, it's still a great, under-1GB operating system, and of the OSes in that category, it's one of the very friendliest. + +#### Installation + +[Download Puppy Linux][29] and write it to a thumb drive with **dd** or [Etcher][8] or burn it to a CD or DVD, then reboot. + +![Puppy installer][30] + +Puppy can install onto nearly anything that accepts data. The installer application, available from the top launcher bar, is called **Puppy Installer**, and it manages installing Puppy and applications for Puppy. + +Puppy Installer steps you through the process of installing the OS onto whatever media you have available. Puppy can boot from a thumb drive, an optical disc, a hard drive, and even an SD card. I've used Puppy on a computer with no hard drive whatsoever, no working optical drive, and no option to boot from USB. Because Puppy can write your configuration options to just about anything, I was able to use it with persistent data storage to an external device. + +#### Applications + +The **Puppy Installer** application is also used to install apps onto Puppy. Because Puppy is based on Ubuntu, there aren't likely to be any Linux packages missing from its repositories, and if there are, you can probably use a [Flatpak][31]. + +#### Bottom line + +Puppy is the original tiny Linux. While it's not the tiniest any more, it's by far the easiest. + +### Bonus: Silverblue + +![SilverBlue, not tiny, but tiny-adjacent][32] + +The concept of tiny Linux has changed over the years. Long ago, a tiny Linux distribution was something you downloaded onto a CD-R and ran from your optical drive while saving changes to external media. Later, it was something you ran from a thumb drive with dedicated space for persistent changes. Now it's all of those things plus the ability to install to internal drives or directories. + +What no one expected was for Linux to kick off the craze for containers, in which applications are self-contained Linux systems running in a para-virtualized environment. What was once a niche hobby for people who either loved to optimize disk space or who loved to resurrect ancient computers quickly became a salient requirement for developers who wanted to develop containers without adding too much overhead to their applications. All the work put into the minimalist, ephemeral Linux distributions suddenly paid off in an unexpected way. + +With the concept of what a root filesystem looks like, the Fedora Project's [Silverblue][33] experiment is an effort to create an immutable OS. It's an operating system that never changes and instead gets updates and application installs in the form of, essentially, containers. + +Silverblue at 2.1GB is by no means a tiny Linux distribution, but in many ways, it's a child of the tiny Linux and container movements. + +#### Installation + +[Download Silverblue][34] and write it to a thumb drive with **dd** or [Etcher][8] or burn it to a CD or DVD, then reboot. + +After booting into Silverblue, install it to an internal hard drive using [Anaconda][35], the standard, friendly Fedora Linux installer. + +![Anaconda installer][36] + +#### Applications + +Silverblue doesn't install applications in the traditional sense; instead, it runs containers over the top of its base OS. Specifically, it uses Flatpaks for GUI applications and [Toolbox][37] for commands. + +Because Flatpaks aren't nearly as common as traditional Fedora RPM packages, Silverblue also provides **package layering**, a way to convert Fedora RPM packages to Silverblue. + +#### Bottom line + +Silverblue could be a fun experiment testing out emerging technology, or it could be the future of the desktop OS. It's tiny only in the sense that its root filesystem remains the same size regardless of updates and applications added onto it, but it's worth looking at to see where the strange obsession with tiny distributions has delivered the Linux community and industry. Don't forget to tip your hat to the 11MB pioneers on your way out. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/linux-distros-to-try + +作者:[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/marcobravo +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) +[2]: http://lubuntu.net +[3]: http://peppermintos.com +[4]: https://www.bodhilinux.com/ +[5]: https://opensource.com/sites/default/files/uploads/tinycore.jpg (Tiny Core Linux) +[6]: http://tinycorelinux.net/ +[7]: http://tinycorelinux.net/welcome.html +[8]: https://www.balena.io/etcher/ +[9]: https://opensource.com/sites/default/files/uploads/tc-install-gui.png (Tiny Core installer) +[10]: https://www.samba.org/ +[11]: https://opensource.com/sites/default/files/uploads/slitaz.jpg (SliTaz Linux) +[12]: http://www.slitaz.org/en/ +[13]: https://github.com/midori-browser/core +[14]: http://slitaz.org/en/get/#rolling +[15]: https://opensource.com/sites/default/files/uploads/slitaz-install.jpg (SliTaz installer) +[16]: https://opensource.com/sites/default/files/uploads/porteus.jpg (Porteus Linux) +[17]: http://www.porteus.org/ +[18]: http://porteus.org/porteus-mirrors.txt +[19]: https://opensource.com/sites/default/files/images/porteus-installer.png (Porteus installer) +[20]: http://www.porteus.org/component/content/article/26-tutorials/general-info-tutorials/114-official-porteus-installation-guide.html +[21]: http://www.porteus.org/tutorials/9-modules/149-usm.html +[22]: https://opensource.com/sites/default/files/uploads/bodhi.jpg (Bodhi Linux) +[23]: https://www.enlightenment.org/ +[24]: https://www.bodhilinux.com/download +[25]: https://opensource.com/sites/default/files/uploads/bodhi-install.jpg (Bodhi installer) +[26]: https://opensource.com/sites/default/files/uploads/puppy.jpg (Puppy Linux) +[27]: https://antixlinux.com/ +[28]: http://puppylinux.com/ +[29]: http://puppylinux.com/index.html#download +[30]: https://opensource.com/sites/default/files/uploads/puppy-install.jpg (Puppy installer) +[31]: https://docs.fedoraproject.org/en-US/fedora-silverblue/getting-started/#flatpak +[32]: https://opensource.com/sites/default/files/uploads/silverblue.jpg (SilverBlue, not tiny, but tiny-adjacent) +[33]: https://silverblue.fedoraproject.org/ +[34]: https://silverblue.fedoraproject.org/download +[35]: https://fedoraproject.org/wiki/Anaconda +[36]: https://opensource.com/sites/default/files/uploads/silverblue-install.jpg (Anaconda installer) +[37]: https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ From 81c25f12942845267401105d4ea9e4ad2a3a0bf4 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 26 Jun 2019 00:54:16 +0800 Subject: [PATCH 131/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190625=20The=20?= =?UTF-8?q?innovation=20delusion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190625 The innovation delusion.md --- .../tech/20190625 The innovation delusion.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 sources/tech/20190625 The innovation delusion.md diff --git a/sources/tech/20190625 The innovation delusion.md b/sources/tech/20190625 The innovation delusion.md new file mode 100644 index 0000000000..cfb74e42b9 --- /dev/null +++ b/sources/tech/20190625 The innovation delusion.md @@ -0,0 +1,93 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The innovation delusion) +[#]: via: (https://opensource.com/open-organization/19/6/innovation-delusion) +[#]: author: (Jim Whitehurst https://opensource.com/users/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans) + +The innovation delusion +====== +Innovation is a messy process. Our stories about it aren't. We shouldn't +confuse the two. +![gears and lightbulb to represent innovation][1] + +If [traditional planning is dead][2], then why do so many organizations still invest in planning techniques optimized for the Industrial Revolution? + +One reason might be that we trick ourselves into thinking innovation is the kind of thing we can accomplish with a structured, linear process. When we do this, I think we're confusing our _stories_ about innovation with the _process_ of innovation itself—and the two are very different. + +The _process_ of innovation is chaotic and unpredictable. It doesn't operate according to clean, regimented timelines. It's filled with iterative phases, sudden changes in direction, various starts and stops, dead ends, (hopefully productive) failures, and unknowable variables. It's messy. + +But the stories we tell ourselves about innovation, including the books and articles we read about great inventions and the tales we tell each other about our successes in the workplace, tidy that process up. Think about how many social media posts you've seen that feature nothing but the "high points." + +That's the nature of good storytelling. It takes a naturally scattered collection of moments and puts them neatly into a beginning, middle, and end. It smoothes out all the rough patches and makes a result seem inevitable from the start, despite whatever moments of uncertainty, panic, even despair we experienced along the way. + +We shouldn't confuse messy process with simplified story. When we do, we might mistakenly assume we can approach innovation challenges with the same practices we bring to neat and linear processes. In other words, we apply a set of management techniques appropriate for one set of activities (for more rote, mechanical, and prescriptive tasks) to a set of activities they aren't really suited for (more creative, non-linear work requiring autonomy and experimentation). + +If traditional planning is dead, then why do so many organizations still invest in planning techniques optimized for the Industrial Revolution? + +### An innovation story + +Here's [one of my favorite examples][2] of how this idea in action. + +In the 1970s, the British motorcycle industry was desperately trying to figure out why its U.S. market share was plummeting while Honda's was skyrocketing. The company hired my former employer, the Boston Consulting Group, to help them figure out what was going wrong. BCG gathered some historical data, reviewed a two-decade sequence of events, and developed a neat, linear story explaining Honda's success. + +Honda, [BCG concluded][3], had executed an ingenious strategy: enter the U.S market with smaller motorcycles it could sell at lower cost, use the economies of scale it had developed in the Japense market to set low prices and grow a market, then further leverage those economies of scale to grow their share in the States as demand grew. By all accounts, Honda had done it brilliantly, playing to its strengths while thoroughly and accurately assessing the new, target U.S. consumer. It had outsmarted, outflanked, and outperformed competitors with a well-executed plan. + +It _sounded_ great. But the reality was much less straightforward. + +Yes, Honda _did_ want to enter the U.S. motorcycle market. It initially attempted to [copy its competitors there][4], building the larger bikes Americans seemed to favor. But bikes like that weren't one of Honda's strengths, and their versions had reliability issues. To make matters worse, their models didn't look much different than other offerings already in the market, so they weren't standing out. Suffice it to say, sales were not booming. + +But in a happy coincidence, Honda's Japanese representatives visiting the States had brought their own motorcycles with them. Those bikes were different than the ones the company was attempting to sell to the American market. They were smaller, zippier, less bulky, more efficient, and generally less expensive. Sears took notice, contacted the reps, and the companies struck a deal that let Sears carry this new motorcycle—called the "Super Cub"—in its American stores. + +And the rest, as they say, is history. The Super Cub would go on to become the [best-selling motorized vehicle of all time][5], and Honda [continues to produce it today][6]. + +In hindsight, the events that brought the Super Cub to the U.S. seem logical, almost boring. But Honda owed its success less to an ingenious master plan and much more to serendipity and happenstance than most people care to admit. + +When success depends on things we don't or can't predict, is getting exactly what you've planned for good enough? + +### Open (and messy) innovation + +Organizations (and especially leaders) like to think that success is always planned—that they've become masters of chaos and can almost predict the future. But they're often making those assessments with the benefit of hindsight, telling the stories of their haphazard journey in a way that organizes the chaos, essentially reflecting on a period of uncertainty and saying "we meant to do that." + +But as I said, we shouldn't assume those stories are mirror reflections of the innovation process itself and build future initiatives or experiments on that mistaken assumption. + +Imagine another motorcycle manufacturer looking to replicate Honda's success with the Super Cub by following BCG's narrative to the letter. Because the _story_ of Honda's success seems so logical and linear, the new company might assume it could use similar processes and get the same results: plan objectives, prescribe behaviors, and execute against knowable outcomes. But we know that Honda didn't really win its market with that kind of "plan, prescribe, execute" mentality. It won through flexibility and a bit of blind luck—something more like "[try, learn, modify][7]." + +When we're able to appreciate and accept that the innovation process is messy, we allow ourselves to think differently about approaching innovation in our organizations. We can begin building the kinds of open and agile organizations capable of _responding to innovation as it happens_ instead of over-investing resources into pre-formed plans that try to _force_ innovation into a linear timeline. + +I saw this kind of approach several years ago, when Red Hat released a new version of a product that included a major technology update. [Version 5.4 of Red Hat Enterprise Linux][8] was the first to include full support for a technology called the Kernel-based Virtual Machine (or "KVM"). For us it was a significant innovation that promised to deliver immense value not only to customers and partners, but also to open source software communities. + +The technology was evolving quickly. Luckily, because we're an open organization, we were adaptable enough to respond to that innovation as it was happening and help our customers and partners take advantage of it. It was too important, and the competitive landscape too volatile, to justify withholding just so we could "save" it for a milestone moment like version 6.0. + +When you go back and review [the archived release notes][9] for Red Hat Enterprise Linux, you'll see that it doesn't "read" like a typical software innovation tale. A game-changing development pops up at an unpredicted and unremarkable moment (version 5.4), rather than a pre-planned blockbuster milestone (version 6.0). In hindsight, we now know that KVM _was_ the kind of "big bang" advancement that could have warranted a milestone release name like "6.0." But that's just not how the innovation process unfolded. + +Don't get me wrong, organizations still need to maintain operational excellence and perform execution-oriented tasks well. But [different kinds of challenges require different kinds of approaches][10], and we need to get better at building flexible organizations just as capable of [responding to the unforeseen or unknowable][11]. + +An organization great at planning (and executing against that plan) will quite likely get the results it planned for. But when success depends on things we _don't_ or _can't_ predict, is getting exactly what you've planned for good enough? + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/19/6/innovation-delusion + +作者:[Jim Whitehurst][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/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_lightbulb_gears_devops_ansible.png?itok=TSbmp3_M (gears and lightbulb to represent innovation) +[2]: https://www.youtube.com/watch?v=8MCbJmZQM9c +[3]: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/235319/0532.pdf +[4]: http://www.howardyu.org/the-revolutionary-approach-honda-took-to-rise-above-competition/ +[5]: https://autoweek.com/article/motorcycles/first-ride-honda-super-cub-c125-abs-all-new-and-still-super-cute +[6]: https://www.autoblog.com/2019/02/13/2019-honda-super-cub-first-ride-review/ +[7]: https://opensource.com/open-organization/18/3/try-learn-modify +[8]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.4_release_notes/index +[9]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.0_release_notes/index +[10]: https://opensource.com/open-organization/19/4/managed-enabled-empowered +[11]: https://www.linkedin.com/pulse/how-plan-world-full-unknowns-jim-whitehurst/ From 2b70f5765115539ac81481070a02fa99344bab9e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 26 Jun 2019 00:55:30 +0800 Subject: [PATCH 132/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190625=20You=20?= =?UTF-8?q?Can=E2=80=99t=20Afford=20Not=20to=20Use=20a=20Business-Driven?= =?UTF-8?q?=20SD-WAN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190625 You Can-t Afford Not to Use a Business-Driven SD-WAN.md --- ...ord Not to Use a Business-Driven SD-WAN.md | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sources/talk/20190625 You Can-t Afford Not to Use a Business-Driven SD-WAN.md diff --git a/sources/talk/20190625 You Can-t Afford Not to Use a Business-Driven SD-WAN.md b/sources/talk/20190625 You Can-t Afford Not to Use a Business-Driven SD-WAN.md new file mode 100644 index 0000000000..eb2dc6f18e --- /dev/null +++ b/sources/talk/20190625 You Can-t Afford Not to Use a Business-Driven SD-WAN.md @@ -0,0 +1,78 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (You Can’t Afford Not to Use a Business-Driven SD-WAN) +[#]: via: (https://www.networkworld.com/article/3404618/you-can-t-afford-not-to-use-a-business-driven-sd-wan.html) +[#]: author: (Rami Rammaha https://www.networkworld.com/author/Rami-Rammaha/) + +You Can’t Afford Not to Use a Business-Driven SD-WAN +====== + +![maxkabakov/istock][1] + +Digital transformation and cloud initiatives are changing the way IT organizations are thinking about and architecting the wide area network. It is estimated that over 70 percent of applications have already moved to the cloud. Yet, the transformational promise of the cloud is falling short as conventional networks can’t keep pace with demands of the cloud. Why? Because today’s router-centric and basic [SD-WAN][2] architectures have either hit the wall or can’t keep up with traffic pattern shifts, distributed applications and the open security perimeters inherent to the cloud. This blog will explore the limitations of today’s WAN approaches, offering a better way forward with a business-first networking model. + +### **Traditional Router-centric WAN** + +The traditional router-centric model is network-driven, where businesses are forced to conform to the constraints of the network. Enterprises struggle trying to stretch the old router-centric WAN – it’s too cumbersome and complicated and is simply unable to meet the business needs of a cloud-first enterprise. Cloud-first enterprise business requirements include: + + * Using the internet to connect users directly to cloud applications + * Delivering new applications to 1000s of sites, across multiple clouds, in 10 percent of the time + * Delivering 10x more bandwidth at the edge, for the same budget + * Protecting the business when the cloud is open, accessible and everything is connected + * Continuously delivering a WOW application performance for every business-critical application + + + +![][3] + +### **Basic SD-WAN Solutions** + +To address the requirements of cloud-first businesses, a plethora of SD-WAN solutions have emerged in the past few years. Basic SD-WAN solutions are a step in the right direction but fall well short of the goal of a fully automated business-driven network. A basic SD-WAN provides some level of automation and intelligence, but it is unable to continuously and automatically adapt to changing network conditions. A basic SD-WAN solution can’t deliver a consistent WOW experience for real-time voice and video applications, especially over broadband. Furthermore, with a basic SD-WAN, IT is unable to deliver a simplified end-to-end secure segmentation across the LAN-WAN-LAN/Data Center to minimize the attack surface.  A basic SD-WAN also won’t deliver on the promised savings in operational costs. The graphic below illustrates the short falls of a basic SD-WAN offering.  + +![][4] + +### **The Time is Now to Shift to a Business-driven SD-WAN** + +With a [business-driven SD-WAN][5], the network becomes a business enabler, not a constraint. It acts as a business accelerant with a top-down approach that starts with business intent. Business intent defines how applications should be delivered to end users. Business intent can include performance, priority, security, resiliency, routing, etc. that should be applied to different classes of applications. With a business-driven SD-WAN, network resources are matched – automatically – based on the business priority and security requirements for every application. The network continuously monitors the performance of applications and transport resources and automatically adapts to any changes to remain in compliance with application QoS and security policies. A business-driven SD-WAN delivers the highest quality of experience for users with consistent, reliable application performance – including the highest quality voice and video over broadband.  + +The highest quality of experience doesn’t stop with users. With [centralized orchestration][6], a business-driven SD-WAN minimizes human error, makes changes easier and enables faster response to business needs. A business-driven SD-WAN goes beyond the automation and templates of basic SD-WAN solutions to power a self-driving wide area network™ that learns and adapts to the changing requirements of the business to ensure the highest levels of end user and application performance. It eliminates the impact of brownouts and blackouts as monitoring and analytics detect changing conditions and trigger immediate adjustments. Built-in monitoring, alarms/alerts and reporting enables faster troubleshooting when issues occur. With a highly available, resilient, business-driven SD-WAN, IT can reclaim their weekends and sleep through the night!  A unified platform is designed as one unifying and orchestrating network functions such as SD-WAN, firewall, segmentation, routing, WAN optimization, application visibility and control based on business requirements. With service chaining, to ecosystem partners (security, cloud and service providers), existing investments can be fully leveraged with rapid deployment, interoperating with full and open APIs.     + +![][7] + +In this table, a comparison of router-centric, basic SD-WAN and business-driven SD-WAN shows that enterprises get the most value and benefits from shifting to a business-first networking model.  + +![Full Harvey Ball: Most; Empty Harvey Ball: Least][8] + +Click on the [infographic][9] for a full summary of the WAN edge architecture approaches. + +![][10] + +With an interactive ROI calculator, you can calculate savings between a business-driven SD-WAN from Silver Peak and a traditional router-centric SD-WAN. Click [here][11] to calculate your savings right now. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3404618/you-can-t-afford-not-to-use-a-business-driven-sd-wan.html + +作者:[Rami Rammaha][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/Rami-Rammaha/ +[b]: https://github.com/lujun9972 +[1]: https://images.idgesg.net/images/article/2019/06/istock-1073941846-100800084-large.jpg +[2]: https://www.silver-peak.com/sd-wan/sd-wan-explained +[3]: https://images.idgesg.net/images/article/2019/06/illo_1-100800095-large.jpg +[4]: https://images.idgesg.net/images/article/2019/06/illo_2-100800097-large.jpg +[5]: https://www.silver-peak.com/products/unity-edge-connect +[6]: https://www.silver-peak.com/products/unity-orchestrator +[7]: https://images.idgesg.net/images/article/2019/06/illo_3-100800099-large.jpg +[8]: https://images.idgesg.net/images/article/2019/06/sd-wan-comparison-chart4-100800100-large.jpg +[9]: https://www.silver-peak.com/sites/default/files/infoctr/sd-wan-comparison-diagram-0119.pdf +[10]: https://images.idgesg.net/images/article/2019/06/acomparisonoftodayswanedgeapproaches-100800113-large.jpg +[11]: https://www.silver-peak.com/sd-wan-interactive-roi-calculator From 89e662d3c73bc3a8b20685964cea4ff4feda1b9a Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 26 Jun 2019 08:50:34 +0800 Subject: [PATCH 133/336] translated --- ... Use Firefox Send with ffsend in Fedora.md | 126 ----------------- ... Use Firefox Send with ffsend in Fedora.md | 127 ++++++++++++++++++ 2 files changed, 127 insertions(+), 126 deletions(-) delete mode 100644 sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md create mode 100644 translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md diff --git a/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md b/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md deleted file mode 100644 index b8c28c7d5d..0000000000 --- a/sources/tech/20190531 Use Firefox Send with ffsend in Fedora.md +++ /dev/null @@ -1,126 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use Firefox Send with ffsend in Fedora) -[#]: via: (https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/) -[#]: author: (Sylvia Sánchez https://fedoramagazine.org/author/lailah/) - -Use Firefox Send with ffsend in Fedora -====== - -![][1] - -_ffsend_ is the command line client of Firefox Send. This article will show how Firefox Send and _ffsend_ work. It’ll also detail how it can be installed and used in Fedora. - -### What are Firefox Send and ffsend ? - -Firefox Send is a file sharing tool from Mozilla that allows sending encrypted files to other users. You can install Send on your own server, or use the Mozilla-hosted link [send.firefox.com][2]. The hosted version officially supports files up to 1 GB, and links that expire after a configurable download count (default of 1) or 24 hours, and then all the files on the Send server are deleted. This tool is still _in experimental phase_ , and therefore shouldn’t be used in production or to share important or sensitive data. - -While Firefox Send is the tool itself and can be used with a web interface, _ffsend_ is a command-line utility you can use with scripts and arguments. It has a wide range of configuration options and can be left working in the background without any human intervention. - -### How does it work? - -FFSend can both upload and download files. The remote host can use either the Firefox tool or another web browser to download the file. Neither Firefox Send nor _ffsend_ require the use of Firefox. - -It’s important to highlight that _ffsend_ uses client-side encryption. This means that files are encrypted _before_ they’re uploaded. You share secrets together with the link, so be careful when sharing, because anyone with the link will be able to download the file. As an extra layer of protection, you can protect the file with a password by using the following argument: - -``` -ffsend password URL -p PASSWORD -``` - -### Other features - -There are a few other features worth mentioning. Here’s a list: - - * Configurable download limit, between 1 and 20 times, before the link expires - * Built-in extract and archiving functions - * Track history of shared files - * Inspect or delete shared files - * Folders can be shared as well, either as they are or as compressed files - * Generate a QR code, for easier download on a mobile phone - - - -### How to install in Fedora - -While Fedora Send works with Firefox without installing anything extra, you’ll need to install the CLI tool to use _ffsend_. This tool is in the official repositories, so you only need a simple _dnf_ command [with][3] _[sudo][3]_. - -``` -$ sudo dnf install ffsend -``` - -After that, you can use _ffsend_ from the terminal . - -### Upload a file - -Uploading a file is a simple as - -``` -$ ffsend upload /etc/os-release -Upload complete -Share link: https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6kuyeBem8Z013mg -``` - -The file now can be easily share using the Share link URL. - -## Downloading a file - -Downloading a file is as simple as uploading. - -``` -$ ffsend download https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6kuyeBem8Z013mg -Download complete -``` - -Before downloading a file it might be useful to check if the file exist and get information about it. _ffsend_ provides 2 handy commands for that. - -``` -$ ffsend exists https://send.firefox.com/download/88a6324e2a99ebb6/#YRJDh8ZDQsnZL2KZIA-PaQ -Exists: true -Password: false -$ ffsend info https://send.firefox.com/download/88a6324e2a99ebb6/#YRJDh8ZDQsnZL2KZIA-PaQ -ID: 88a6324e2a99ebb6 -Downloads: 0 of 1 -Expiry: 23h59m (86388s -``` - -## Upload history - -_ffsend_ also provides a way to check the history of the uploads made with the tools. This can be really useful if you upload a lot of files during a scripted tasks for example and you want to keep track of each files download status. - -``` -$ ffsend history -LINK EXPIRY - 1 https://send.firefox.com/download/#8TJ9QNw 23h59m - 2 https://send.firefox.com/download/KZIA-PaQ 23h54m -``` - -## Delete a file - -Another useful feature is the possibility to delete a file. - -``` -ffsend delete https://send.firefox.com/download/2d9faa7f34bb1478/#phITKvaYBjCGSRI8TJ9QNw -``` - -Firefox Send is a great service and the _ffsend_ tools makes it really convenient to use from the terminal. More examples and documentation is available on _ffsend_ ‘s [Gitlab repository][4]. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/ - -作者:[Sylvia Sánchez][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/lailah/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/04/firefox-send-816x345.png -[2]: http://send.firefox.com/ -[3]: https://fedoramagazine.org/howto-use-sudo/ -[4]: https://gitlab.com/timvisee/ffsend diff --git a/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md b/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md new file mode 100644 index 0000000000..87175d5d90 --- /dev/null +++ b/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md @@ -0,0 +1,127 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Use Firefox Send with ffsend in Fedora) +[#]: via: (https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/) +[#]: author: (Sylvia Sánchez https://fedoramagazine.org/author/lailah/) + +在 Fedora 中利用 ffsend 使用 Firefox Send +====== + +![][1] + +_ffsend_ 是 Firefox Send 的命令行客户端。本文将展示 Firefox Send 和 _ffsend_ 如何工作。还会详细介绍如何在 Fedora 中安装和使用它。 + +### 什么是 Firefox Send 和 ffsend? + +Firefox Send 是 Mozilla 的一个文件共享工具,它能将加密文件发送给其他用户。你可以在自己的服务器上安装 Send,也可以使用 Mozilla 托管的链接 [send.firefox.com][2]。它最大支持 1GB 的文件,链接会在可配置的下载次数(默认值为 1)或 24 小时后过期,然后会删除发送服务器上的所有文件。此工具仍_处于实验阶段_,因此不应在生产中使用或共享重要或敏感数据。 + +虽然 Firefox Send 本身就是工具,并且可以在 Web 中使用,但 _ffsend_ 是一个可以与脚本和参数一起使用的命令行程序。它有多种配置选项,并且可以在后台工作而无需任何人为干预。 + +### 它如何工作? + +ffsend 可以上传和下载文件。远程主机可以使用 Firefox 工具或其他 Web 浏览器来下载文件。 Firefox Send 和 _ffsend_ 都不需要使用 Firefox。 + +值得一提 _ffsend_ 使用了客户端加密。这意味着文件在上传_前_被加密。链接中就有密钥,因此在共享时要小心,因为任何有链接的人都可以下载该文件。作为额外的保护,你可以使用以下参数使用密码保护文件: + +``` +ffsend password URL -p PASSWORD +``` + +### 其他功能 + +还有一些值得一提的其他功能: + + * 链接到期前可配置的下载限制,范围从 1 到 20 次之间 +  * 内置解压和归档功能 +  * 跟踪共享文件的历史记录 +  * 检查或删除共享文件 +  * 文件夹也可以按原样共享,也可以作为压缩文件共享 +  * 生成 QR 码,便于在手机上下载 + + + +### 如何在 Fedora 中安装 + +虽然 Fedora Send 可以在 Firefox 中使用而无需安装其他,但你需要安装 CLI 工具才能使用 _ffsend_。此工具在官方仓库中,因此你只需使用 _dnf_ 命令,并使用 _[sudo][3]_。 + +``` +$ sudo dnf install ffsend +``` + +之后,你可以在终端使用 _ffsend_。 + + +### 上传文件 + +上传文件很简单。 + +``` +$ ffsend upload /etc/os-release +Upload complete +Share link: https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6kuyeBem8Z013mg +``` + +现在可以使用 “Share link” URL 轻松共享该文件。 + +## 下载文件 + +下载文件和上传一样简单。 + +``` +$ ffsend download https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6kuyeBem8Z013mg +Download complete +``` + +在下载之前,检查文件是否存在并获取有关它的信息会有用。 _ffsend_ 为此提供了 2 个方便的命令。 + +``` +$ ffsend exists https://send.firefox.com/download/88a6324e2a99ebb6/#YRJDh8ZDQsnZL2KZIA-PaQ +Exists: true +Password: false +$ ffsend info https://send.firefox.com/download/88a6324e2a99ebb6/#YRJDh8ZDQsnZL2KZIA-PaQ +ID: 88a6324e2a99ebb6 +Downloads: 0 of 1 +Expiry: 23h59m (86388s +``` + +## 上传历史 + +_ffsend_ 还提供了一种查看使用工具上传的历史记录的方法。例如,如果你用脚本上传了大量文件并且想要跟踪每个文件的下载状态,那么这非常有用。 + +``` +$ ffsend history +LINK EXPIRY + 1 https://send.firefox.com/download/#8TJ9QNw 23h59m + 2 https://send.firefox.com/download/KZIA-PaQ 23h54m +``` + +## 删除文件 + +另一个有用的功能是删除文件。 + +``` +ffsend delete https://send.firefox.com/download/2d9faa7f34bb1478/#phITKvaYBjCGSRI8TJ9QNw +``` + +Firefox Send 是一项很棒的服务,_ffsend_ 使得它在终端使用起来非常方便。[Gitlab 仓库[4]中有关于 _ffsend_ 的的更多示例和文档。 + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/ + +作者:[Sylvia Sánchez][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/lailah/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/04/firefox-send-816x345.png +[2]: http://send.firefox.com/ +[3]: https://fedoramagazine.org/howto-use-sudo/ +[4]: https://gitlab.com/timvisee/ffsend From a90d6a4ba70b0af44535b8b71dca90c90a6f6040 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 26 Jun 2019 08:57:38 +0800 Subject: [PATCH 134/336] translating --- sources/tech/20190624 Using i3 with multiple monitors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190624 Using i3 with multiple monitors.md b/sources/tech/20190624 Using i3 with multiple monitors.md index a1407008e7..abc6dcd23c 100644 --- a/sources/tech/20190624 Using i3 with multiple monitors.md +++ b/sources/tech/20190624 Using i3 with multiple monitors.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 48ba8e7b1850dfa9a4b4af9b33112ca7506b6240 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Wed, 26 Jun 2019 11:07:17 +0800 Subject: [PATCH 135/336] translator updated --- ...graded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md index 38bdb01b27..2148648ee4 100644 --- a/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md +++ b/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wahailin) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From f8021c138786abeb381ced446215b8b33178f119 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Wed, 26 Jun 2019 11:09:36 +0800 Subject: [PATCH 136/336] Update 20190624 Raspberry Pi 4 is here.md --- sources/news/20190624 Raspberry Pi 4 is here.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190624 Raspberry Pi 4 is here.md b/sources/news/20190624 Raspberry Pi 4 is here.md index 35748c7d25..bba028bf68 100644 --- a/sources/news/20190624 Raspberry Pi 4 is here.md +++ b/sources/news/20190624 Raspberry Pi 4 is here.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wahailin) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 79e9105d55595f1682b19f05f6b05282e3146d7f Mon Sep 17 00:00:00 2001 From: chen ni Date: Wed, 26 Jun 2019 15:22:22 +0800 Subject: [PATCH 137/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0190619 Leading in the Python community.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/sources/tech/20190619 Leading in the Python community.md b/sources/tech/20190619 Leading in the Python community.md index 3ce59e8d68..5c5bf6db80 100644 --- a/sources/tech/20190619 Leading in the Python community.md +++ b/sources/tech/20190619 Leading in the Python community.md @@ -7,38 +7,39 @@ [#]: via: (https://opensource.com/article/19/6/naomi-ceder-python-software-foundation) [#]: author: (Don Watkins https://opensource.com/users/don-watkins) -Leading in the Python community +Python 社区的领袖 ====== -A chat with Naomi Ceder, current Python Software Foundation board chair. +对话现任 Python 软件基金会董事会主席 Naomi Ceder + ![Hands together around the word trust][1] -Like many other leaders in the open source software world, [Naomi Ceder][2], board chair of the [Python Software Foundation][3] (PSF), took a non-traditional path into the Python world. As the title of her 2017 [keynote][4] at PyCon España explains, she came for the language and stayed for the community. In a recent conversation with her, she shared how she became a Python community leader and offered some insight into what makes Python special. +和开源软件世界的很多其他领袖一样,[Python 软件基金会][3](PSF)的董事会主席 [Naomi Ceder][2] 通过一种不同寻常的方式走进了 Python 世界。正如她在 2017 年 PyCon España 大会上的 [keynote][4] 的标题所说,她是因为这个编程语言而来,因为这个社区而留下的。在我们和她的一次近期的交流中,她分享了自己成为 Python 社区领袖的历程,并且就“是什么让 Python 如此特别”这个问题提供了一些独到的见解。 -### From teaching to coding +### 从授课到编程 -Naomi began her career in the Classics; she earned a PhD in Latin and Ancient Greek with a minor in Indo-European Linguistics, as she says, "several decades ago." While teaching Latin at a private school, she began tinkering with computers, learning to code and to take machines apart to do upgrades and repairs. She started working with open source software in 1995 with [Yggdrasil Linux][5] and helped launch the Fort Wayne, Indiana, [Linux User Group][6]. +Naomi 的职业生涯是从古典文学开始的。她取得了拉丁文和古希腊文的博士学位,并且辅修了印欧语言学。在一家私立学校教授拉丁语的同时,她开始接触了计算机,学习如何编程、如何拆机进行升级或者维修。1995 年,她开始在 [Yggdrasil Linux][5] 系统上开发开源软件,并且帮助建立了印第安纳州韦恩堡的 [Linux 用户小组][6] -A teacher at heart, Naomi believes teaching coding in middle and high school is essential because, by the time most people get to college, they are already convinced that coding and technology careers are not for them. Starting earlier can help increase the supply of technical talent and the diversity and breadth of experience in our talent pools to meet the industry's needs, she says. +作为一名教师,Naomi 相信在中学教授编程课程是非常重要的,因为等到大多数人上大学的时候,他们已经认为编程和科技相关的职业已经不是自己可以从事的了。她表示,更早地教授相关课程有助于增加科技人才的供给,提高人才的多元化和经验的广度,从而更好地满足行业需求。 -Somewhere around 2001, she decided to switch from studying human languages to researching computer languages, as well as teaching computer classes and managing the school's IT. Her interest in Python was sparked at Linux World 2001 when she attended PSF president Guido Van Rossum's day-long tutorial on Python. Back then, it was an obscure language, but she liked it so well that she began teaching Python and using it to track student records and do sysadmin duties at her school. +大约在 2001 年前后,她决定从学习人类语言转向研究计算机语言,并同时教授计算机课程和管理学校的 IT 系统。在 2001 年的 Linux World 大会上听了一整天 PSF 主席 Guido Van Rossum 关于 Python 的演讲之后,她对 Python 的热情被点燃了。在那个时候,Python 还只是一门晦涩难懂的语言,但是她是如此喜欢 Python,以至于在她的学校开始使用 Python 记录学生信息、进行系统管理。 -### Leading the Python community +### 领导 Python 社区 -Naomi says, "community is the key factor behind Python's success. The whole idea behind open source software is sharing. Few people really want to just sit alone, writing code, and staring at their screens. The real satisfaction comes in trading ideas and building something with others." +Naomi 表示,“社区是 Python 成功背后的关键因素。开源软件的核心思想是分享,很少有人真的喜欢一个人坐在那儿盯着屏幕写代码。真正的满足来源于和别人交流想法,并且共同创造一些东西。” -She started giving talks at the first [PyCon][7] in 2003 has been a consistent attendee and leader since then. She has organized birds-of-a-feather sessions and founded the PyCon and PyCon UK poster sessions, the education summit, and the Spanish language track, [Charlas][8]. +她在第一届 [PyCon][7] 大会上发表了演讲,并且从此之后一直是一名参与者和领导者。她组织了一些 birds-of-a-feather 讨论会(LCTT 译注:一种在大会参与者之间进行的基于兴趣的小规模讨论活动)、PyCon 和 PyCon UK 大会的海报展示会、教育峰会,以及 PyCon 大会的西班牙语频道。 -She is also the author of _[The Quick Python Book][9]_ and co-founded [Trans*Code][10], "the UK's only hack event series focused solely on drawing attention to transgender issues and opportunities." Naomi says, "as technology offers growing opportunities, being sure these opportunities are equally accessible to traditionally marginalized groups grows ever more important." +她同时是 *[The Quick Python Book][9]* 一书的作者,并且联合创立了 [Trans\*Code][10],“英国唯一一个专注于变性者的问题和机遇的黑客节”(LCTT 译注:黑客节是一种让软件开发、设计、项目管理等相关人员相聚在一起,针对软件项目进行高强度合作的活动)。Naomi 表示,“随着科技能够提供越来越多的机遇,确保传统意义上的边缘化群体能够同等地享受到这些机遇成为了一件更为重要的事情。” -### Contributing through the PSF +### 通过 PSF 进行贡献 -As board chair of the PSF, Naomi contributes actively to the organization's work to support the Python language and the people working with it. In addition to sponsoring PyCon, the PSF funds grants for meetups, conferences, and workshops around the world. In 2018, the organization gave almost $335,000 in grants, most of them in the $500 to $5,000 range. +作为 PSF 的董事会主席,Naomi 积极地参与着该组织对 Python 语言和其使用者的支持工作。除了赞助 PyCon 大会的举办之外,PSF 基金会还为世界各地的小型聚会、大型会议和研习会提供资助。2018 年,该组织发放的资助接近 335000 美元,其中大多数款项的金额都在 500 美元到 5000 美元之间。 -The PSF's short-term goals are to become a sustainable, stable, and mature non-profit organization with professional staff. Its long-term goals include developing resources that offer meaningful support to development efforts for Python and expanding the organization's support for educational efforts in Python around the world. +PSF 的短期目标是成为一个由专业员工维护的可持续的、稳定的、成熟的非盈利机构。它的长期目标包括发展可以提供对 Python 开发工作有效支持的各种资源,以及扩展该组织对全世界范围内 Python 教育工作的支持。 -This work depends on having financial support from the community. Naomi says the PSF's "largest current source of funding is PyCon. To ensure the PSF's sustainability, we are also focusing on [sponsorships][11] from companies using Python, which is our fastest-growing segment." Supporting memberships are $99 per year, and [donations and fundraisers][12] also help sustain the organization's work. +这些工作都需要来自社区的经济上的支持。Naomi 表示,PSF “最大的资金来源是 PyCon 大会。为了确保 PSF 的可持续性,我们同事也关注使用 Python 的企业的赞助,这是我们增长最快的部分。”会员价格是每年 99 美元,并且 [捐款和募捐人][12] 同样也在帮助维持该组织的工作。 -You can learn much more about the PSF's work in its [Annual Report][13]. +你可以在 PSF 的 [年度报告][13] 中了解该组织的更多工作情况。 -------------------------------------------------------------------------------- From 87b66c7731bf8e486585fd4f7c186b920bb4a772 Mon Sep 17 00:00:00 2001 From: chen ni Date: Wed, 26 Jun 2019 15:23:29 +0800 Subject: [PATCH 138/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/20190619 Leading in the Python community.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename {sources => translated}/tech/20190619 Leading in the Python community.md (99%) diff --git a/sources/tech/20190619 Leading in the Python community.md b/translated/tech/20190619 Leading in the Python community.md similarity index 99% rename from sources/tech/20190619 Leading in the Python community.md rename to translated/tech/20190619 Leading in the Python community.md index 5c5bf6db80..69c82b8d4c 100644 --- a/sources/tech/20190619 Leading in the Python community.md +++ b/translated/tech/20190619 Leading in the Python community.md @@ -47,7 +47,7 @@ via: https://opensource.com/article/19/6/naomi-ceder-python-software-foundation 作者:[Don Watkins][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[chen-ni](https://github.com/chen-ni) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 6496db0616bbc4ea7de032598a2aadcd4cbfc37d Mon Sep 17 00:00:00 2001 From: LuMing <784315443@qq.com> Date: Wed, 26 Jun 2019 15:26:25 +0800 Subject: [PATCH 139/336] translated --- ... concerned about memory levels on Linux.md | 121 ------------------ ... concerned about memory levels on Linux.md | 117 +++++++++++++++++ 2 files changed, 117 insertions(+), 121 deletions(-) delete mode 100644 sources/tech/20190513 When to be concerned about memory levels on Linux.md create mode 100644 translated/tech/20190513 When to be concerned about memory levels on Linux.md diff --git a/sources/tech/20190513 When to be concerned about memory levels on Linux.md b/sources/tech/20190513 When to be concerned about memory levels on Linux.md deleted file mode 100644 index c42d417e9e..0000000000 --- a/sources/tech/20190513 When to be concerned about memory levels on Linux.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (luuming) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (When to be concerned about memory levels on Linux) -[#]: via: (https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -When to be concerned about memory levels on Linux -====== -Memory management on Linux systems is complicated. Seeing high usage doesn’t necessarily mean there’s a problem. There are other things you should also consider. -![Qfamily \(CC BY 2.0\)][1] - -Running out of memory on a Linux system is generally _not_ a sign that there's a serious problem. Why? Because a healthy Linux system will cache disk activity in memory, basically gobbling memory that isn't being used, which is a very good thing. - -In other words, it doesn't allow memory to go to waste. It uses the spare memory to increase disk access speed, and it does this _without_ taking memory away from running applications. This memory caching, as you might well imagine, is hundreds of times faster than working directly with the hard-disk drives (HDD) and significantly faster than solid-state drives. Full or near full memory normally means that a system is running as efficiently as it can — not that it's running into problems. - -**[ Also see:[Must-know Linux Commands][2] ]** - -### How caching works - -Disk caching simply means that a system is taking advantage of unused resources (free memory) to speed up disk reads and writes. Applications don't lose anything and most of the time can acquire more memory whenever they need it. In addition, disk caching does not cause applications to resort to using swap. Instead, memory used for disk caching is always returned immediately when needed and disk content updated. - -### Major and minor page faults - -Linux systems allocate memory to processes by breaking physical memory into chunks called "pages" and then mapping those pages into process virtual memory. Pages that appear to no longer be used may be removed from memory — even if the related process is still running. When a process needs a page that is no longer mapped or no longer in memory, a fault is generated. So, "fault" does not mean "error" but instead means "unavailable," and faults play an important role in memory management. - -A minor fault means the page is in memory but not allocated to the requesting process or not marked as present in the memory management unit. A major fault means the page in no longer in memory. - -If you'd like to get a feel for how often minor and major page faults occur, try a **ps** command like this one. Note that we're asking for the fields related to page faults and the commands to be listed. Numerous lines were omitted from the output. The MINFL displays the number of minor faults, while MAJFL represents the number of major faults. - -``` -$ ps -eo min_flt,maj_flt,cmd - MINFL MAJFL CMD -230760 150 /usr/lib/systemd/systemd --switched-root --system --deserialize 18 - 0 0 [kthreadd] - 0 0 [rcu_gp] - 0 0 [rcu_par_gp] - 0 0 [kworker/0:0H-kblockd] - ... - 166 20 gpg-agent --homedir /var/lib/fwupd/gnupg --use-standard-socket --daemon - 525 1 /usr/libexec/gvfsd-trash --spawner :1.16 /org/gtk/gvfs/exec_spaw/0 - 4966 4 /usr/libexec/gnome-terminal-server - 3617 0 bash - 0 0 [kworker/1:0H-kblockd] - 927 0 gdm-session-worker [pam/gdm-password] -``` - -To report on a single process, you might try a command like this: - -``` -$ ps -o min_flt,maj_flt 1 - MINFL MAJFL -230064 150 -``` - -You can also add other fields such as the process owner's UID and GID. - -``` -$ ps -o min_flt,maj_flt,cmd,args,uid,gid 1 - MINFL MAJFL CMD COMMAND UID GID -230064 150 /usr/lib/systemd/systemd -- /usr/lib/systemd/systemd -- 0 0 -``` - -### How full is full? - -One way to get a better handle on how memory is being used is with the **free -m** command. The **-m** option reports the numbers in mebibytes (MiBs) instead of bytes. - -``` -$ free -m - total used free shared buff/cache available -Mem: 3244 3069 35 49 140 667 -Swap: 3535 0 3535 -``` - -Note that "free" (unused) memory can be running low while "available" (available for starting new applications) might report a larger number. The distinction between these two fields is well worth paying attention to. Available means that it can be recovered and used when needed, while free means that it's available now. - -### When to worry - -If performance on a Linux systems appears to be good — applications are responsive, the command line shows no indications of a problem — chances are the system's in good shape. Keep in mind that some application might be slowed down for some reason that doesn't affect the overall system. - -An excessive number of hard faults may indeed indicate a problem, but balance this with observed performance. - -A good rule of thumb is to worry when available memory is close to zero or when the "swap used" field grows or fluctuates noticeably. Don't worry if the "available" figure is a reasonable percentage of the total memory available as it is in the example from above repeated here: - -``` -$ free -m - total used free shared buff/cache available -Mem: 3244 3069 35 49 140 667 -Swap: 3535 0 3535 -``` - -### Linux performance is complicated - -All that aside, memory on a Linux system can fill up and performance can slow down. Just don't take one report on memory usage as an indication that your system's in trouble. - -Memory management on Linux systems is complicated because of the measures taken to ensure the best use of system resources. Don't let the initial appearance of full memory trick you into believing that your system is in trouble when it isn't. - -**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][3] ]** - -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/3394603/when-to-be-concerned-about-memory-levels-on-linux.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://images.idgesg.net/images/article/2019/05/full-swimming-pool-100796221-large.jpg -[2]: https://www.networkworld.com/article/3391029/must-know-linux-commands.html -[3]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/translated/tech/20190513 When to be concerned about memory levels on Linux.md b/translated/tech/20190513 When to be concerned about memory levels on Linux.md new file mode 100644 index 0000000000..3a985290d2 --- /dev/null +++ b/translated/tech/20190513 When to be concerned about memory levels on Linux.md @@ -0,0 +1,117 @@ +[#]: collector: (lujun9972) +[#]: translator: (luuming) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (When to be concerned about memory levels on Linux) +[#]: via: (https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +何时需要关注 linux 的内存层面? +====== +Linux 上的内存管理很复杂。尽管使用率高但未必存在问题。你也应当关注一些其他的事情。 +![Qfamily \(CC BY 2.0\)][1] + +在 Linux 上用光内存通常并不意味着存在严重的问题。为什么?因为健康的 Linux 系统会在内存中缓存磁盘活动,基本上占用掉了未被使用的内存,这显然是一件好事情。 + +换句话说,它不让内存浪费掉。使用空闲的内存增加磁盘访问速度,并且不占用运行中应用程序的内存。你也能够想到,使用这种内存缓存比起直接访问硬盘驱动(HDD)快上数百倍,也比明显快于直接访问固态硬盘驱动。内存占满或几乎占满通常意味着系统正在尽可能高效地运行当中——并不是运行中遇到了问题。 + +### 缓存如何工作 + +磁盘缓存简单地意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读取与写入。应用程序不会失去任何东西,并且大多数时间里能够按需求获得更多的内存。此外,磁盘缓存不会导致应用程序使用交换分区。反而,用作磁盘缓存的内存空间当被需要时会立即归还,并且磁盘内容会被更新。 + +### 主要和次要的页故障 + +Linux 系统通过分割物理内存为进程分配空间,将分割成的块称为“页”,并且映射这些页到每个进程的虚拟内存上。不再会用到的页也许会从内存中移除,尽管相关的进程还在运行。当进程需要一个没有被映射或没在内存中页时,故障便会产生。所以,“故障fault”并不意味着“错误error”而是“不可用unavailables”,并且故障在内存管理中扮演者一个重要的角色。 + +次要故障意味着在内存中的页未分配给请求的进程或未在内存管理单元中标记为出现。主要故障意味着页不保留在内存中。 + +如果你想切身感受一下次要页故障和主要页故障出现的频率,像这样试一下 `ps` 命令。注意我们要的是与页故障和产生它的命令相关的项。输出中省略了很多行。`MINFL` 显示出次要故障的数目,而 `MAJFL` 表示了主要故障的数目。 + +``` +$ ps -eo min_flt,maj_flt,cmd + MINFL MAJFL CMD +230760 150 /usr/lib/systemd/systemd --switched-root --system --deserialize 18 + 0 0 [kthreadd] + 0 0 [rcu_gp] + 0 0 [rcu_par_gp] + 0 0 [kworker/0:0H-kblockd] + ... + 166 20 gpg-agent --homedir /var/lib/fwupd/gnupg --use-standard-socket --daemon + 525 1 /usr/libexec/gvfsd-trash --spawner :1.16 /org/gtk/gvfs/exec_spaw/0 + 4966 4 /usr/libexec/gnome-terminal-server + 3617 0 bash + 0 0 [kworker/1:0H-kblockd] + 927 0 gdm-session-worker [pam/gdm-password] +``` + +汇报单一进程,你可以尝试这样的命令: + +``` +$ ps -o min_flt,maj_flt 1 + MINFL MAJFL +230064 150 +``` + +你也可以添加其他的项,例如进程所有者的 UID 和 GID。 + +``` +$ ps -o min_flt,maj_flt,cmd,args,uid,gid 1 + MINFL MAJFL CMD COMMAND UID GID +230064 150 /usr/lib/systemd/systemd -- /usr/lib/systemd/systemd -- 0 0 +``` + +### 多少才算满? + +一种较好的方法来掌握内存究竟使用了多少是用 `free -m` 命令。`-m` 选项指定了数字的单位是 MiBsmebibytes 而不是字节。 + +``` +$ free -m + total used free shared buff/cache available +Mem: 3244 3069 35 49 140 667 +Swap: 3535 0 3535 +``` + +注意 `free`(未使用)的内存可能会不足,而 `available`(可用于启动新的应用)会显示更大的数量。这两者的区别值得我们去关注。可用available意味着它可以在需要时恢复使用,而空闲free意味着现在就能够使用。 + +### 什么时候要担心 + +如果 Linux 系统上的性能表现良好——应用程序响应度高,命令行没有显示出问题——很可能系统状况良好。记住,一些应用也许会出于某种原因而变慢,但它不影响整个系统。 + +过多的硬故障也许表明确实存在问题,但要将其与观察到的性能相比较。 + +一个好的方法是当可用内存接近 0 或者“用作交换swap used”项显著增长或波动时开始担心。如果“可用”项占总内存可用量的百分比合理,那么就无需担心,就像下面的例子那样: + +``` +$ free -m + total used free shared buff/cache available +Mem: 3244 3069 35 49 140 667 +Swap: 3535 0 3535 +``` + +### Linux 性能很复杂 + +把所有的放在一边,Linux 系统上的内存可能会变满,并且性能可能会降低。当系统出现问题时不要仅将单一的内存使用报告作为指标。 + +Linux 系统的内存管理很复杂,因为它采取的措施需要确保系统资源得到最好的利用。不要受到一开始内存占满的欺骗,使你认为系统存在问题,但实际上并没有。 + +在 [Facebook][4] 和 [LinkedIn][5] 上加入网络研讨会发表你的评论。 + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[LuuMing](https://github.com/LuuMing) +校对:[校对者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://images.idgesg.net/images/article/2019/05/full-swimming-pool-100796221-large.jpg +[2]: https://www.networkworld.com/article/3391029/must-know-linux-commands.html +[3]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua +[4]: https://www.facebook.com/NetworkWorld/ +[5]: https://www.linkedin.com/company/network-world From 7d181d50c4902348b9864caf35eeeaa9da7f8bf9 Mon Sep 17 00:00:00 2001 From: chen ni Date: Wed, 26 Jun 2019 17:08:41 +0800 Subject: [PATCH 140/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...till the heart of Jupyter Notebooks for Python developers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md b/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md index be6a013f5a..e7f8c70156 100644 --- a/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md +++ b/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From af9550870913c5daf28070a1316a6cf080b339a9 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 26 Jun 2019 17:42:35 +0800 Subject: [PATCH 141/336] PRF:20190614 How to send email from the Linux command line.md @Modrisco --- ... send email from the Linux command line.md | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/translated/tech/20190614 How to send email from the Linux command line.md b/translated/tech/20190614 How to send email from the Linux command line.md index ddeef7571f..7c8019f46c 100644 --- a/translated/tech/20190614 How to send email from the Linux command line.md +++ b/translated/tech/20190614 How to send email from the Linux command line.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (Modrisco) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to send email from the Linux command line) @@ -9,7 +9,8 @@ 如何用 Linux 命令行发电子邮件 ====== -Linux 提供了几种命令允许您通过终端发送电子邮件,下面来展示一些有趣的方法。 + +> Linux 提供了几个可以让你通过终端发送电子邮件的命令,下面来展示一些有趣的方法。 ![Molnia/iStock][1] @@ -29,7 +30,7 @@ $ echo "Reminder: Leaving at 4 PM today" | mail -s "early departure" myboss $ mail -s "Reminder:Leaving early" myboss < reason4leaving ``` -在以上两种情况中,你都可以通过 -s 来为邮件添加标题。 +在以上两种情况中,你都可以通过 `-s` 来为邮件添加标题。 ### sendmail @@ -53,13 +54,13 @@ I would just like to say that, in my opinion, longer hair and other flamboyant affectations of appearance are nothing more ... ``` -你也可以发送这样的文件(lyric 文件包含标题和正文): +你也可以发送这样的文件(`lyric` 文件包含标题和正文): ``` $ sendmail recip < lyrics ``` -`sendmain` 的输出可能会很冗长。如果你感到好奇并希望查看发送系统和接收系统之间的交互,请添加 `-v` (verbose)选项。 +`sendmain` 的输出也可以很冗长。如果你感到好奇并希望查看发送系统和接收系统之间的交互,请添加 `-v` (verbose)选项。 ``` $ sendmail -v recip@emailsite.com < lyrics @@ -67,9 +68,9 @@ $ sendmail -v recip@emailsite.com < lyrics ### mutt -`mutt` 是通过命令行发送邮件的一个很好的工具,在使用前你需要安装它。 `mutt` 的一个很方便的优势就是它允许你在邮件中添加附件。 +`mutt` 是通过命令行发送邮件的一个很好的工具,在使用前你需要安装它。`mutt` 的一个很方便的优势就是它允许你在邮件中添加附件。 -使用 `mutt` 发送一条快速信息: +使用 `mutt` 发送一条快速信息: ``` $ echo "Please check last night's backups" | mutt -s "backup check" recip @@ -122,16 +123,16 @@ EHLO mysite.org <== introduce yourself 250-AUTH DIGEST-MD5 CRAM-MD5 250-DELIVERBY 250 HELP -MAIL FROM: me@mysite.org <== specify sender +MAIL FROM: me@mysite.org <== 指定发件人 250 2.1.0 shs@mysite.org... Sender ok -RCPT TO: recip <== specify recipient +RCPT TO: recip <== 指定收件人 250 2.1.5 recip... Recipient ok -DATA <== start message +DATA <== 邮件内容开始 354 Enter mail, end with "." on a line by itself This is a test message. Please deliver it for me. -. <== end message +. <== 内容结束 250 2.0.0 x5CKWDds029287 Message accepted for delivery -quit <== end exchange +quit <== 结束交互 ``` ### 向多个收件人发送电子邮件 @@ -156,7 +157,7 @@ via: https://www.networkworld.com/article/3402027/how-to-send-email-from-the-lin 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] 译者:[Modrisco](https://github.com/Modrisco) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 6d490fe7c337d7ebc668917ab865de826af6ab8b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 26 Jun 2019 17:43:27 +0800 Subject: [PATCH 142/336] PUB:20190614 How to send email from the Linux command line.md @Modrisco https://linux.cn/article-11020-1.html --- .../20190614 How to send email from the Linux command line.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190614 How to send email from the Linux command line.md (98%) diff --git a/translated/tech/20190614 How to send email from the Linux command line.md b/published/20190614 How to send email from the Linux command line.md similarity index 98% rename from translated/tech/20190614 How to send email from the Linux command line.md rename to published/20190614 How to send email from the Linux command line.md index 7c8019f46c..b8754241ab 100644 --- a/translated/tech/20190614 How to send email from the Linux command line.md +++ b/published/20190614 How to send email from the Linux command line.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (Modrisco) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11020-1.html) [#]: subject: (How to send email from the Linux command line) [#]: via: (https://www.networkworld.com/article/3402027/how-to-send-email-from-the-linux-command-line.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From 38fca10dde0134961f94f78ed16567c8cdb5ab35 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 26 Jun 2019 18:14:09 +0800 Subject: [PATCH 143/336] PUB:20190530 A short primer on assemblers, compilers, and interpreters.md @chen-ni https://linux.cn/article-11021-1.html --- ...short primer on assemblers, compilers, and interpreters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190530 A short primer on assemblers, compilers, and interpreters.md (99%) diff --git a/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md b/published/20190530 A short primer on assemblers, compilers, and interpreters.md similarity index 99% rename from translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md rename to published/20190530 A short primer on assemblers, compilers, and interpreters.md index 96b64809d3..c58786d646 100644 --- a/translated/tech/20190530 A short primer on assemblers, compilers, and interpreters.md +++ b/published/20190530 A short primer on assemblers, compilers, and interpreters.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11021-1.html) [#]: subject: (A short primer on assemblers, compilers, and interpreters) [#]: via: (https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters) [#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/shawnhcorey/users/jnyjny/users/jnyjny) From 78acb6ea973c04bb10c77253787f08b914d1a74c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 26 Jun 2019 18:15:06 +0800 Subject: [PATCH 144/336] PRF:20190530 A short primer on assemblers, compilers, and interpreters.md --- ...A short primer on assemblers, compilers, and interpreters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/published/20190530 A short primer on assemblers, compilers, and interpreters.md b/published/20190530 A short primer on assemblers, compilers, and interpreters.md index c58786d646..1c60f1adcc 100644 --- a/published/20190530 A short primer on assemblers, compilers, and interpreters.md +++ b/published/20190530 A short primer on assemblers, compilers, and interpreters.md @@ -12,7 +12,7 @@ > 简单介绍一下编程方式的历史演变。 -![keyboard with connected dots][1] +![](https://img.linux.net.cn/data/attachment/album/201906/26/181309vdouxdfktr344rm4.jpg) 在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来快速解决复杂的数学问题,所以数学家天然就适合“编程”工作。 From 478bf3a2b3886b95df198e69444c341e34f4eaa1 Mon Sep 17 00:00:00 2001 From: heguangzhi <7731226@qq.com> Date: Wed, 26 Jun 2019 18:15:57 +0800 Subject: [PATCH 145/336] Update 20190621 Three Ways to Lock and Unlock User Account in Linux.md translator: heguangzhi --- ...90621 Three Ways to Lock and Unlock User Account in Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md index 4f791da9c6..f4a80828c9 100644 --- a/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md +++ b/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (heguagnzhi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From daa919d8d7c7325be166adc3f8eb0dcd8205df29 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 27 Jun 2019 00:52:57 +0800 Subject: [PATCH 146/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190626=204=20op?= =?UTF-8?q?en=20source=20Android=20apps=20for=20writers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190626 4 open source Android apps for writers.md --- ... 4 open source Android apps for writers.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 sources/tech/20190626 4 open source Android apps for writers.md diff --git a/sources/tech/20190626 4 open source Android apps for writers.md b/sources/tech/20190626 4 open source Android apps for writers.md new file mode 100644 index 0000000000..a5a2609bf3 --- /dev/null +++ b/sources/tech/20190626 4 open source Android apps for writers.md @@ -0,0 +1,105 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (4 open source Android apps for writers) +[#]: via: (https://opensource.com/article/19/6/android-apps-writers) +[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt/users/tiwarinitish86) + +4 open source Android apps for writers +====== +Get some writing work done on your mobile device with these four apps. +![Hands holding a mobile phone with open on the screen][1] + +While I'm of two minds when it comes to smartphones and tablets, I have to admit they can be useful. Not just for keeping in touch with people or using the web but also to do some work when I'm away from my computer. + +For me, that work is _writing_—articles, [blog posts][2], essays for my [weekly letter][3], e-book chapters, and more. I've tried many (probably too many!) writing apps for Android over the years. Some of them were good. Others fell flat. + +Here are four of my favorite open source Android apps for writers. You might find them as useful as I do. + +### Markor + +If you're a writer, you need to write with something. A good choice for that job is [Markor][4], a simple, flexible Markdown editor. + +All you need to do is fire up Markor, create a new document, and start typing. You can add Markdown formatting by hand or by clicking a button on the toolbar. When it comes to writing, Markor has no frills. It's just you and your words, as it should be. + +![Markor app][5] + +The app automatically saves your work to your phone or tablet's filesystem. If you sync your phone with a service like [Nextcloud][6], you can set up Markor to save your work in a folder the Nextcloud mobile app uses. That way, you don't need to shuffle files around manually. + +Markor has a few other useful features. One of those is a simple preview. Another is a task list, which uses the same format as [Todo.txt][7] (a popular to-do list manager). When you're researching a writing project, you can create a list of bookmarks. You can also export what you're writing as an HTML or a PDF file. + +### Orgzly + +Some writers swear by outlines. Others hate them with a passion, finding outlines restricting. I'm in the former camp. On my laptop, I do most of my outlining using [Emacs][8] and [Org mode][9]. Bringing the Org mode experience to my phone or tablet is easy using [Orgzly][10]. + +Don't let the fact that Orgzly uses Org mode's format turn you off. You don't need to be an Emacs guru, or even an Emacs user, to benefit from it. + +Create a new _notebook_ (the label Orgzly gives an outline) and add items to it. In addition to a title, you can add tags and notes to each item in your outline. Since outlines are fluid, you can move items up, down, and around. If you need to, you can also sync your notebooks with your service or tool of choice. + +![Orgzly app][11] + +Orgzly takes a bit of getting used to. Once you do, Orgzly's a great app for creating not only outlines but also notes and [task lists][12]. + +### Carnet + +Notes are the lifeblood of any writer. They're a record of thoughts on a subject. They're snippets and rough drafts. They're research and quotes. And a lot more. + +You can use Markor or Orgzly to take notes, but they're not for everyone. If you're one of those people, you'll want to check out [Carnet][13]. + +Unlike some note-taking apps, Carnet lets you add formatting to your notes. You can change the size, color, and alignment of fonts and add character formatting. You can also insert images into a note. When you finish, you can sync the note either with [Carnet's online service][14] or with Nextcloud. + +![Carnet app][15] + +The way Carnet displays notes reminds me of Google Keep's layout—as tiles, which you can color, that display a note's title and its first few lines. That's not a bad thing—you can see what a note is about with a glance. + +### Anysoft Keyboard + +When I write on a phone or tablet, I usually use a folding Bluetooth keyboard. It's a lot faster and easier than typing with an onscreen keyboard. But there are times when I don't have my physical keyboard with me. The stock Android keyboard? It really doesn't do it for me. Instead, I use [Anysoft Keyboard][16]. + +Why? I prefer the layout and spacing. On top of that, it has several keyboard themes to choose from. Some are compact, while others space the keys out a bit more widely. Don't use QWERTY? Not a problem. Anysoft Keyboard also supports the [Dvorak][17], [Colemak][18], [Workman][19], and [Halmak][20] layouts. + +![Anysoft Keyboard][21] + +While I'm more of a poly-not than a polyglot, I know more than a couple of people will find Anysoft Keyboard's [language support][22] to be a boon when they're writing in a language other than English. + +Have an open source Android app that you find indispensable when writing? Feel free to share it by leaving a comment. + +About 10 years ago, when I got my first mobile phone, I hardly knew anything about its operating... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/android-apps-writers + +作者:[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/users/tiwarinitish86 +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolserieshe_rh_041x_0.png?itok=tfg6_I78 (Hands holding a mobile phone with open on the screen) +[2]: https://scottnesbitt.online +[3]: https://buttondown.email/weeklymusings +[4]: https://gsantner.net/project/markor.html +[5]: https://opensource.com/sites/default/files/uploads/markor-app.png (Markor app) +[6]: https://opensource.com/article/19/5/mobile-apps-nextcloud +[7]: http://todotxt.org/ +[8]: https://www.gnu.org/software/emacs/ +[9]: https://opensource.com/article/19/1/productivity-tool-org-mode +[10]: http://www.orgzly.com/ +[11]: https://opensource.com/sites/default/files/uploads/orgzly.png (Orgzly app) +[12]: https://opensource.com/article/17/4/emacs-extensions-organization +[13]: https://f-droid.org/en/packages/com.spisoft.quicknote/ +[14]: https://carnet.live/index.php/login +[15]: https://opensource.com/sites/default/files/uploads/carnet.png (Carnet app) +[16]: https://anysoftkeyboard.github.io/ +[17]: https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard +[18]: https://en.wikipedia.org/wiki/Colemak +[19]: https://en.wikipedia.org/wiki/Keyboard_layout#Workman +[20]: https://github.com/MadRabbit/halmak +[21]: https://opensource.com/sites/default/files/uploads/anysoft.png (Anysoft Keyboard) +[22]: https://anysoftkeyboard.github.io/languages/ From 6696d2f4d0c25ac690680451696598b59e9152af Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 27 Jun 2019 00:53:31 +0800 Subject: [PATCH 147/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190626=20How=20?= =?UTF-8?q?a=20trip=20to=20China=20inspired=20Endless=20OS=20and=20teachin?= =?UTF-8?q?g=20kids=20to=20hack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190626 How a trip to China inspired Endless OS and teaching kids to hack.md --- ...ed Endless OS and teaching kids to hack.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 sources/tech/20190626 How a trip to China inspired Endless OS and teaching kids to hack.md diff --git a/sources/tech/20190626 How a trip to China inspired Endless OS and teaching kids to hack.md b/sources/tech/20190626 How a trip to China inspired Endless OS and teaching kids to hack.md new file mode 100644 index 0000000000..2431364051 --- /dev/null +++ b/sources/tech/20190626 How a trip to China inspired Endless OS and teaching kids to hack.md @@ -0,0 +1,98 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How a trip to China inspired Endless OS and teaching kids to hack) +[#]: via: (https://opensource.com/article/19/6/endless-digital-literacy) +[#]: author: (Don Watkins https://opensource.com/users/don-watkins) + +How a trip to China inspired Endless OS and teaching kids to hack +====== +Matt Dalio, Endless OS founder and CEO, opens up on how his company is +expanding digital literacy to all corners of the world. +![Digital literacy.][1] + +Last year, I decided to try out [Endless OS][2], a lightweight, Linux-based operating system developed to power inexpensive computers for developing markets. I wrote about [installing and setting it up][3]. Endless OS is unique because it uses a read-only root file system managed by OSTree and Flatpak, but the Endless company is unique for its approach to education. + +Late last year, Endless announced the [Hack][4], a $299 laptop manufactured by Asus that encourages kids to code, and most recently the company revealed [The Third Terminal][5], a group of video games designed to get kids coding while they're having fun. Since I'm so involved in teaching kids to code, I wanted to learn more about [Endless Studios][6], the company behind Endless OS, The Third Terminal, [The Endless Mission][7], a sandbox-style game created in partnership with E-Line Media, and other ventures targeted at expanding digital literacy and agency among children around the world. + +I reached out to [Matt Dalio][8], Endless' founder, CEO, and chief of product and founder of the China Care Foundation, to ask about Endless and his charitable work supporting orphaned children with special needs in China. + +**Don Watkins**: What encouraged you to be a social entrepreneur? + +**Matt Dalio**: The most impactful chapter of my life was when I lived in China at age 11. I became interested in social entrepreneurship after spending a summer in an orphanage in China when I was 16. + +That one summer quickly evolved into a decade of traveling to China to support orphanages in need, resulting in the founding of the [China Care Foundation][9]. It has since raised $14 million to provide surgery, foster placement, and adoption grants for thousands of special needs children. + +A decade later, my two worlds of technology and emerging markets merged when I realized that billions of people would get smartphones within the decade. I also saw that computers, the work and study tool that we run our productive lives with, weren't going to spread nearly as quickly. + +I started by creating Endless OS, which is focused on democratizing our most powerful technology tools the way smartphones have done for our mobile technology. We solved cost and connectivity barriers and put internet connectivity within reach worldwide. We were building the best platform for youth in emerging markets. It became clear that, as we did that, we were actually building the best technology education platform for kids there as well as in the US. + +We then grew our product vision further to use games and our operating system to teach kids to code, enabling digital literacy that spans from children who have nothing to kids who are fortunate enough to have access to the latest in technology and want to understand how to shape it. + +My goal through all of this is to help unlock discovery so every kid can realize the joy of creation. Our most recent launch at Endless Studios of our coding education games ties all of this together with games focused on digital literacy for kids in the US and the rest of the world. + +All of that started with China, decades ago at age 11. It's all one long story. + +**DW**: How did your experience founding the China Care Foundation at the age of 16 change you? + +**MD**: The biggest thing that I discovered in building China Care was the needs of underserved communities. The need of a child becomes truly palpable when you are holding her in your arms. I also discovered that I had the capability to do something about it. At 16, I was just a normal kid, but I happened to realize that I could get a child life-changing surgery by merely raising $500 for her. My actions could impact lives. That has stuck with me. Today at Endless, I am focused on using technology to improve lives at scale. Helping these kids guided me to my life purpose. I found my mission. + +**DW**: How did the fact that 3 billion people in the world did not have a computer animate your vision? + +**MD**: When I was in India in 2010, smartphones had not yet arrived, but it became quickly obvious that they would. Billions of people were about to be connected to the internet. While this rapidly came to fruition, my secondary discovery was that people there also wanted computers. In the developed world, we get our work done with computers. It is our productivity tool. Without a computer, children and adults do not have access to education and the modern economy. I spent months in the field researching this, and it became obvious that there was still a need for computers. People still wanted them. + +I remember a conversation I had in a tea shop in Bangladesh. It was a strange place to ask for life advice, but I did. After hours of talking to this new friend, asking, "Should I do this… should I leave everything and devote my life to this?" he begged me, "Do this, for my country…for my people. Please." I had dozens of conversations like this, and those sent me on my course. Our vision at Endless has continued to expand and to encompass educational technology everywhere, but it all started there. + +**DW**: Why Linux and why desktop/laptop computers, rather than smartphones? + +**MD**: I began Endless without any appreciation for open source software. Today, I believe with every fiber of my being that the desktop _must_ be open source. It is where we do our real work. Despite still accounting for half of web traffic and there being twice as many computers as there were when the smartphone was launched, and despite the fact that our office buildings and schools are full of people using their PCs, the big technology companies have stopped investing in the PC. + +As I look at what we are doing at Endless in international internet access and in coding education, none of it would be possible if we didn't have an open source OS. Although it would have been a lot easier to build upon the standard platforms, we have to touch code at the core of the OS to really solve the problems we have. We are a case study of why it is so important to have an open source operating system. The PC must be protected from the decisions of a few companies. + +Finally, as for why PCs, I challenge you to give up your computer for a month and then ask the same question. Can you do that? Question answered. + +**DW**: What is the vision of Endless and The Third Terminal? How do you see the games helping children become better coders? + +**MD**: Most of the engineers we were interviewing at Endless learned to code in the same way—by hacking their video games. For them, this was much more fun than playing them. The crucial insight from this was, "What if you could build video games in which everything were hackable?" + +This was the catalyst for launching Endless Studios, which is now working with almost a dozen global game studios that are all developing games that teach kids to code. We are first and foremost, a game company. These games are built by gamers. It just so happens that creation is a game mechanic that kids love. I believe that code is the greatest creation tool—the ultimate Minecraft. + +We are beginning with our first set of games on [thethirdterminal.com][10]. You'll see our games expand into something much bigger soon. We cannot wait to share it with you. + +**DW**: Can you tell me more about Hack computers? + +**MD**: Hack is a platform that integrates Endless OS into a coding platform. Coding takes place in an operating system because the tools of coding are built upon that operating system. We have harnessed this to expose children to the real tools that real engineers use in a safe environment. We have partnered with Asus to build the Hack PC as a solid, full-featured computer. My Hack laptop is the only laptop I use. + +**DW**: What software comes on Hack computers? + +**MD**: Hack comes with hundreds of apps. We have everything from Chrome, Steam, Spotify, and Skype to WhatsApp, a full office suite, and tons of games. Most importantly, we have a full developer suite and an array of coding education pathways. Again, I have everything I need in Hack. It's my only laptop today. + +**DW**: What is the importance of building digital agency around the world? + +**MD**: If our children are going to grow up and be prepared for the future, they had better know how to use the technology that is affecting every corner of our world. We must prepare them. If they do not start early, they will be digitally illiterate. It is as simple as that. Endless wants our children to be able to shape their technology, rather than being shaped by it. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/endless-digital-literacy + +作者:[Don Watkins][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/don-watkins +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_EDU_DigitalLiteracy_520x292.png?itok=ktHMrse6 (Digital literacy.) +[2]: https://endlessos.com/ +[3]: https://opensource.com/article/18/2/meet-endless-os-lightweight-linux +[4]: https://hack-computer.com/ +[5]: https://www.thethirdterminal.com/home +[6]: https://endlessnetwork.com/ +[7]: https://theendlessmission.com/ +[8]: https://www.linkedin.com/in/mattdalio/ +[9]: https://www.chinacare.org/ +[10]: http://www.thethirdterminal.com/home From 72308e2f69517dcd65114a8b1ff7a4d7fa0eba2e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 27 Jun 2019 00:54:12 +0800 Subject: [PATCH 148/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190626=20Where?= =?UTF-8?q?=20are=20all=20the=20IoT=20experts=20going=20to=20come=20from?= =?UTF-8?q?=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190626 Where are all the IoT experts going to come from.md --- ... all the IoT experts going to come from.md | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sources/talk/20190626 Where are all the IoT experts going to come from.md diff --git a/sources/talk/20190626 Where are all the IoT experts going to come from.md b/sources/talk/20190626 Where are all the IoT experts going to come from.md new file mode 100644 index 0000000000..22a303d2f6 --- /dev/null +++ b/sources/talk/20190626 Where are all the IoT experts going to come from.md @@ -0,0 +1,78 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Where are all the IoT experts going to come from?) +[#]: via: (https://www.networkworld.com/article/3404489/where-are-all-the-iot-experts-going-to-come-from.html) +[#]: author: (Fredric Paul https://www.networkworld.com/author/Fredric-Paul/) + +Where are all the IoT experts going to come from? +====== +The fast growth of the internet of things (IoT) is creating a need to train cross-functional experts who can combine traditional networking and infrastructure expertise with database and reporting skills. +![Kevin \(CC0\)][1] + +If the internet of things (IoT) is going to fulfill its enormous promise, it’s going to need legions of smart, skilled, _trained_ workers to make everything happen. And right now, it’s not entirely clear where those people are going to come from. + +That’s why I was interested in trading emails with Keith Flynn, senior director of product management, R&D at asset-optimization software company [AspenTech][2], who says that when dealing with the slew of new technologies that fall under the IoT umbrella, you need people who can understand how to configure the technology and interpret the data. Flynn sees a growing need for existing educational institutions to house IoT-specific programs, as well as an opportunity for new IoT-focused private colleges, offering a well -ounded curriculum + +“In the future,” Flynn told me, “IoT projects will differ tremendously from the general data management and automation projects of today. … The future requires a more holistic set of skills and cross-trading capabilities so that we’re all speaking the same language.” + +**[ Also read:  [20 hot jobs ambitious IT pros should shoot for][3] ]** + +With the IoT growing 30% a year, Flynn added, rather than a few specific skills, “everything from traditional deployment skills, like networking and infrastructure, to database and reporting skills and, frankly, even basic data science, need to be understood together and used together.” + +### Calling all IoT consultants + +“The first big opportunity for IoT-educated people is in the consulting field,” Flynn predicted. “As consulting companies adapt or die to the industry trends … having IoT-trained people on staff will help position them for IoT projects and make a claim in the new line of business: IoT consulting.” + +The problem is especially acute for startups and smaller companies. “The bigger the organization, the more likely they have a means to hire different people across different lines of skillsets,” Flynn said. “But for smaller organizations and smaller IoT projects, you need someone who can do both.” + +Both? Or _everything?_ The IoT “requires a combination of all knowledge and skillsets,” Flynn said, noting that “many of the skills aren’t new, they’ve just never been grouped together or taught together before.” + +**[ [Looking to upgrade your career in tech? This comprehensive online course teaches you how.][4] ]** + +### The IoT expert of the future + +True IoT expertise starts with foundational instrumentation and electrical skills, Flynn said, which can help workers implement new wireless transmitters and boost technology for better battery life and power consumption. + +“IT skills, like networking, IP addressing, subnet masks, cellular and satellite are also pivotal IoT needs,” Flynn said. He also sees a need for database management skills and cloud management and security expertise, “especially as things like [advanced process control] APC and sending sensor data directly to databases and data lakes become the norm.” + +### Where will IoT experts come from? + +Flynn said standardized formal education courses would be the best way to make sure that graduates or certificate holders have the right set of skills. He even laid out a sample curriculum: “Start in chronological order with the basics like [Electrical & Instrumentation] E&I and measurement. Then teach networking, and then database administration and cloud courses should follow that. This degree could even be looped into an existing engineering course, and it would probably take two years … to complete the IoT component.” + +While corporate training could also play role, “that’s easier said than done,” Flynn warned. “Those trainings will need to be organization-specific efforts and pushes.” + +Of course, there are already [plenty of online IoT training courses and certificate programs][5]. But, ultimately, the responsibility lies with the workers themselves. + +“Upskilling is incredibly important in this world as tech continues to transform industries,” Flynn said. “If that upskilling push doesn’t come from your employer, then online courses and certifications would be an excellent way to do that for yourself. We just need those courses to be created. ... I could even see organizations partnering with higher-education institutions that offer these courses to give their employees better access to it. Of course, the challenge with an IoT program is that it will need to constantly evolve to keep up with new advancements in tech.” + +**[ For more on IoT, see [tips for securing IoT on your network][6], our list of [the most powerful internet of things companies][7] and learn about the [industrial internet of things][8]. | Get regularly scheduled insights by [signing up for Network World newsletters][9]. ]** + +Join the Network World communities on [Facebook][10] and [LinkedIn][11] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3404489/where-are-all-the-iot-experts-going-to-come-from.html + +作者:[Fredric 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://www.networkworld.com/author/Fredric-Paul/ +[b]: https://github.com/lujun9972 +[1]: https://images.idgesg.net/images/article/2018/07/programmer_certification-skills_code_devops_glasses_student_by-kevin-unsplash-100764315-large.jpg +[2]: https://www.aspentech.com/ +[3]: https://www.networkworld.com/article/3276025/careers/20-hot-jobs-ambitious-it-pros-should-shoot-for.html +[4]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fupgrading-your-technology-career +[5]: https://www.google.com/search?client=firefox-b-1-d&q=iot+training +[6]: https://www.networkworld.com/article/3254185/internet-of-things/tips-for-securing-iot-on-your-network.html#nww-fsb +[7]: https://www.networkworld.com/article/2287045/internet-of-things/wireless-153629-10-most-powerful-internet-of-things-companies.html#nww-fsb +[8]: https://www.networkworld.com/article/3243928/internet-of-things/what-is-the-industrial-iot-and-why-the-stakes-are-so-high.html#nww-fsb +[9]: https://www.networkworld.com/newsletters/signup.html#nww-fsb +[10]: https://www.facebook.com/NetworkWorld/ +[11]: https://www.linkedin.com/company/network-world From ba1486691572228513ad7c9fed0ce6528fe57631 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 27 Jun 2019 00:55:08 +0800 Subject: [PATCH 149/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190626=20Tracki?= =?UTF-8?q?ng=20down=20library=20injections=20on=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190626 Tracking down library injections on Linux.md --- ...acking down library injections on Linux.md | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 sources/tech/20190626 Tracking down library injections on Linux.md diff --git a/sources/tech/20190626 Tracking down library injections on Linux.md b/sources/tech/20190626 Tracking down library injections on Linux.md new file mode 100644 index 0000000000..34ba19037c --- /dev/null +++ b/sources/tech/20190626 Tracking down library injections on Linux.md @@ -0,0 +1,139 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Tracking down library injections on Linux) +[#]: via: (https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Tracking down library injections on Linux +====== +Library injections are less common on Linux than they are on Windows, but they're still a problem. Here's a look at how they work and how to identify them. +![Sandra Henry-Stocker][1] + +While not nearly commonly seen on Linux systems, library (shared object files on Linux) injections are still a serious threat. On interviewing Jaime Blasco from AT&T's Alien Labs, I've become more aware of how easily some of these attacks are conducted. + +In this post, I'll cover one method of attack and some ways that it can be detected. I'll also provide some links that will provide more details on both attack methods and detection tools. First, a little background. + +**[ Two-Minute Linux Tips: [Learn how to master a host of Linux commands in these 2-minute video tutorials][2] ]** + +### Shared library vulnerability + +Both DLL and .so files are shared library files that allow code (and sometimes data) to be shared by various processes. Commonly used code might be put into one of these files so that it can be reused rather than rewritten many times over for each process that requires it. This also facilitates management of commonly used code. + +Linux processes often make use of many of these shared libraries. The **ldd** (display shared object dependencies) command can display these for any program file. Here are some examples: + +``` +$ ldd /bin/date + linux-vdso.so.1 (0x00007ffc5f179000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f02bea15000) + /lib64/ld-linux-x86-64.so.2 (0x00007f02bec3a000) +$ ldd /bin/netstat + linux-vdso.so.1 (0x00007ffcb67cd000) + libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f45e5d7b000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45e5b90000) + libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f45e5b1c000) + libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f45e5b16000) + /lib64/ld-linux-x86-64.so.2 (0x00007f45e5dec000) + libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f45e5af5000) +``` + +The **linux-vdso.so.1** file (which may have a different name on some systems) is one that the kernel automatically maps into the address space of every process. Its job is to find and locate other shared libraries that the process requires. + +One way that this library-loading mechanism is exploited is through the use of an environment variable called **LD_PRELOAD**. As Jaime Blasco explains in his research, "LD_PRELOAD is the easiest and most popular way to load a shared library in a process at startup. This environmental variable can be configured with a path to the shared library to be loaded before any other shared object." + +To illustrate how easily this is done, I created an extremely simple shared library and assigned it to my (formerly non-existent) LD_PRELOAD environment variable. Then I used the **ldd** command to see how this would affect a commonly used Linux command. + +**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][3] ]** + +``` +$ export LD_PRELOAD=/home/shs/shownum.so +$ ldd /bin/date + linux-vdso.so.1 (0x00007ffe005ce000) + /home/shs/shownum.so (0x00007f1e6b65f000) <== there it is + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e6b458000) + /lib64/ld-linux-x86-64.so.2 (0x00007f1e6b682000) +``` + +Note that doing nothing more than assigning my new library to LD_PRELOAD now affects any process that I run. + +Since the libraries specified by the LD_PRELOAD setting are the first to load (following linux-vdso.so.1), those libraries could significantly change a process. They could, for example, redirect system calls to their own resources or make unexpected changes in how the process being run behaves. + +### The osquery tool can detect library injections + +The **osquery** tool (downloadable from [osquery.io][4] is a tool that provides a very unique way of looking at Linux systems. It basically represents the operating system as a high-performance relational database. And, as you probably suspect, that means it can be queried and SQL tables created that provide details on such things as: + + * Running processes + * Loaded kernel modules + * Open network connections + + + +One kernel table that provides information on running processes is called **process_envs**. It provides details on environment variables used by various processes. With a fairly complicated query provided by Jaime Blasco, you can get osquery to identify processes that are using LD_PRELOAD. + +Note that this query pulls data from the **process_envs** table. The attack ID (T1055) is a reference to [Mitre's explanation of the attack method][5]: + +``` +SELECT process_envs.pid as source_process_id, process_envs.key as environment_variable_key, process_envs.value as environment_variable_value, processes.name as source_process, processes.path as file_path, processes.cmdline as source_process_commandline, processes.cwd as current_working_directory, 'T1055' as event_attack_id, 'Process Injection' as event_attack_technique, 'Defense Evasion, Privilege Escalation' as event_attack_tactic FROM process_envs join processes USING (pid) WHERE key = 'LD_PRELOAD'; +``` + +Note that the LD_PRELOAD environment variable is at times used legitimately. Various security monitoring tools, for example, could use it, as might developers while they are troubleshooting, debugging or doing performance analysis. However, its use is still quite uncommon and should be viewed with some suspicion. + +It's also worth noting that osquery can be used interactively or be run as a daemon (osqueryd) for scheduled queries. See the reference at the bottom of this post for more on this. + +You might also be able to locate use of LD_PRELOAD by examining users' environment settings. If LD_PRELOAD is configured in a user account, you might determine that with a command like this (after asssuming the individual's identity): + +``` +$ env | grep PRELOAD +LD_PRELOAD=/home/username/userlib.so +``` + +If you've not previously heard of osquery, don't take it too hard. It's now in the process of becoming a more popular tool. Just last week, in fact, the Linux Foundation announced its intention to support the osquery commmunity with a brand-new [osquery foundation][6]. + +#### Wrap-up + +While library injection remains a serious threat, it's helpful to know that some excellent tools are available to help detect its use on your systems. + +#### Additional resources + +Links to important references and tools: + + * [Hunting for Linux library injection with osquery][7] from AT&T Cybersecurity + * [Linux: How's My Memory?][8] from TrustedSec + * [Download site for osquery][4] + * [osquery schema][9] + * [osqueryd (osquery deamon)][10] + * [Mitre's attack framework][11] + * [New osquery foundation announced][6] + + + +Join the Network World communities on [Facebook][12] and [LinkedIn][13] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.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://images.idgesg.net/images/article/2019/06/dll-injection-100800196-large.jpg +[2]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua +[3]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr +[4]: https://osquery.io/ +[5]: https://attack.mitre.org/techniques/T1055/ +[6]: https://www.linuxfoundation.org/press-release/2019/06/the-linux-foundation-announces-intent-to-form-new-foundation-to-support-osquery-community/ +[7]: https://www.alienvault.com/blogs/labs-research/hunting-for-linux-library-injection-with-osquery +[8]: https://www.trustedsec.com/2018/09/linux-hows-my-memory/ +[9]: https://osquery.io/schema/3.3.2 +[10]: https://osquery.readthedocs.io/en/stable/deployment/configuration/#schedule +[11]: https://attack.mitre.org/ +[12]: https://www.facebook.com/NetworkWorld/ +[13]: https://www.linkedin.com/company/network-world From 2b9ffd334bfa9a89d7e778e0ef52dec142638482 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 27 Jun 2019 00:55:45 +0800 Subject: [PATCH 150/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190626=20Junipe?= =?UTF-8?q?r=E2=80=99s=20Mist=20adds=20WiFi=206,=20AI-based=20cloud=20serv?= =?UTF-8?q?ices=20to=20enterprise=20edge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190626 Juniper-s Mist adds WiFi 6, AI-based cloud services to enterprise edge.md --- ...based cloud services to enterprise edge.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 sources/talk/20190626 Juniper-s Mist adds WiFi 6, AI-based cloud services to enterprise edge.md diff --git a/sources/talk/20190626 Juniper-s Mist adds WiFi 6, AI-based cloud services to enterprise edge.md b/sources/talk/20190626 Juniper-s Mist adds WiFi 6, AI-based cloud services to enterprise edge.md new file mode 100644 index 0000000000..0548e968fe --- /dev/null +++ b/sources/talk/20190626 Juniper-s Mist adds WiFi 6, AI-based cloud services to enterprise edge.md @@ -0,0 +1,94 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Juniper’s Mist adds WiFi 6, AI-based cloud services to enterprise edge) +[#]: via: (https://www.networkworld.com/article/3405123/juniper-s-mist-adds-wifi-6-ai-based-cloud-services-to-enterprise-edge.html) +[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) + +Juniper’s Mist adds WiFi 6, AI-based cloud services to enterprise edge +====== +Mist, a Juniper Networks company, has rolled out an artificial-intelligence, cloud-based appliance and a WIFI 6 access point aimed at helping users roll out smart, high-density wireless networks. +![Getty Images][1] + +Mist, now a Juniper Networks company, has rolled out an artificial-intelligence, cloud-based appliance and a WiFi 6 access point that together aim at helping users deploy smart, high-density wireless networks. + +Leading the rollout is the Mist Edge appliance that extends Mist’s cloud services to the branch and lets enterprises manage the distributed Wi-Fi infrastructure from a central location.  + +**More about 802.11ax (Wi-Fi 6)** + + * [Why 802.11ax is the next big thing in wireless][2] + * [FAQ: 802.11ax Wi-Fi][3] + * [Wi-Fi 6 (802.11ax) is coming to a router near you][4] + * [Wi-Fi 6 with OFDMA opens a world of new wireless possibilities][5] + * [802.11ax preview: Access points and routers that support Wi-Fi 6 are on tap][6] + + + +The Mist Edge device features the company’s artificial-intelligence engine that helps automate tasks such as adjusting Wi-Fi signal strength and troubleshooting.  According to Mist, some other potential use cases for Mist Edge include: + + * Seamless roaming for large campus networks through on-premises tunnel termination of traffic to/from access points. + * Extending virtual LANs (VLANs) to distributed branches and telecommuters to replace remote virtual private network (VPN) technology. + * Dynamic traffic segmentation for IoT devices. + * The ability to split tunneling to keep guest access and corporate traffic separate. + + + +The company says a software-only version of Mist Edge will be available in the future.  + +[Mist’s][7] strength is its AI-based wireless platform which makes Wi-Fi more predictable, reliable and measurable. Mist is also unique in how it has delivered applications via cloud microservices and containers which could be attractive to enterprise users looking to reduce wireless operational costs, experts say.  + +Mist’s cloud-based system brings patented dynamic packet capture and machine learning technology to automatically identify, adapt and fix network issues, Gartner wrote in a recent Magic Quadrant report. The Mist system is delivered and managed via cloud services. + +“Mist's AI-driven Wi-Fi provides guest access, network management, policy applications and a virtual network assistant as well as analytics, IoT segmentation, and behavioral analysis at scale,” Gartner stated.  “Mist offers a new and unique approach to high-accuracy location services through a cloud-based machine-learning engine that uses Wi-Fi and Bluetooth Low Energy (BLE)-based signals from its multielement directional-antenna access points. The same platform can be used for Real Time Location System (RTLS) usage scenarios, static or zonal applications, and engagement use cases like wayfinding and proximity notifications.” + +Juniper bought Mist in March for $405 million for this AI-based WIFI technology.  For Juniper the Mist buy was significant as it had depended on agreements with partners such as Aerohive and Aruba to deliver wireless, according to Gartner.  + +Mist, too, has partners and recently announced joint product development with VMware that integrates Mist WLAN technology and VMware’s VeloCloud-based NSX SD-WAN. + +“Mist has focused on large enterprises and has won some very well known brands,” said Chris Depuy, technology analyst with the 650 Group.  “The [Mist/Juniper] combination is a good fit because both product lines are focusing on larger enterprises and over time, we expect Mist AI will be used to benefit the entire Juniper campus portfolio.” + +The other part of the company’s rollout is a WiFi 6 (802.11ax) access point, the Mist AP43, a cloud-managed WiFi 6 access point with integrated support for Mist’s AI automation and manageability. + +“The new access point gets Juniper to 802.11ax on the same time frame as other major competitors like Cisco,” said Depuy. “Juniper could not address customers who were upgrading wireless and wired at the same time without Mist. With 802.11ax, we expect new switches to be necessary because 1 GB isn’t fast enough to support these new APs. Thus, Juniper can now upgrade customers to 802.11ax and MultiGig switches instead of bringing in another vendor. “ + +WiFi 6 is designed for high-density public or private environments. But it also will be beneficial in internet of things (IoT) deployments, and in offices that use bandwidth-hogging applications like videoconferencing. Products promising WIFI 6 support have been rolling out across the industry with [HPE][8], [Cisco][9], [Arista][10] and others recently tossing their hats into the ring. + +The enterprise WLAN is now dominated by the 802.11ac standard, which makes up 86.4% of dependent access point (AP) shipments and 93.1% of enterprise WLAN dependent AP revenues. The next iteration of the standard, 802.11ax or WiFi 6, will increase in the market throughout the rest of 2019 and into 2020. In the consumer WLAN market, the 802.11ac standard accounted for 58.0% of shipments and 79.2% of revenue in 1Q19, according to IDC’s most recent [Worldwide Quarterly WLAN Tracker][11] report. + +"The WLAN market continues to see steady, moderate growth as enterprises invest in wireless connectivity to support the continued demand for access technology," said [Brandon Butler][12], senior research analyst, Network Infrastructure at IDC in the report. "Meanwhile, the coming Wi-Fi 6 standard will be a major driver of growth in the WLAN market in the coming years, especially in the advanced enterprise segments of the market." + +The AP43 lists at $1,585. + +Mist also announced a strategic relationship with ForeScout to automate management and security control of Wi-Fi client and Internet of Things (IoT) devices.  The Juniper and Forescout mashup lets customers monitor and profile devices and mobile clients including smartphones, tablets, laptops, robots and IoT devices (HVAC systems, security devices, displays, sensors, lights) based on their network traffic patterns. Then if anomalous or threatening behavior is observed, customers can launch trouble tickets, remediate software on devices as needed or quarantine devices. + +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/3405123/juniper-s-mist-adds-wifi-6-ai-based-cloud-services-to-enterprise-edge.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://images.idgesg.net/images/article/2019/02/wifi_cloud_wireless-100787113-large.jpg +[2]: https://www.networkworld.com/article/3215907/mobile-wireless/why-80211ax-is-the-next-big-thing-in-wi-fi.html +[3]: https://%20https//www.networkworld.com/article/3048196/mobile-wireless/faq-802-11ax-wi-fi.html +[4]: https://www.networkworld.com/article/3311921/mobile-wireless/wi-fi-6-is-coming-to-a-router-near-you.html +[5]: https://www.networkworld.com/article/3332018/wi-fi/wi-fi-6-with-ofdma-opens-a-world-of-new-wireless-possibilities.html +[6]: https://www.networkworld.com/article/3309439/mobile-wireless/80211ax-preview-access-points-and-routers-that-support-the-wi-fi-6-protocol-on-tap.html +[7]: https://www.networkworld.com/article/3089038/why-one-cisco-shop-is-willing-to-give-wifi-startup-mist-a-shot.html +[8]: https://www.arubanetworks.com/products/networking/802-11ax/ +[9]: https://www.networkworld.com/article/3391919/cisco-goes-all-in-on-wifi-6.html +[10]: https://www.networkworld.com/article/3400905/new-switches-wi-fi-gear-to-advance-aristas-campus-architecture.html +[11]: http://www.idc.com/tracker/showproductinfo.jsp?prod_id=262 +[12]: https://www.idc.com/getdoc.jsp?containerId=PRF005027 +[13]: https://www.facebook.com/NetworkWorld/ +[14]: https://www.linkedin.com/company/network-world From 32898915d7d519e13f839c13fc95d5c535c0f36d Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 27 Jun 2019 09:01:19 +0800 Subject: [PATCH 151/336] translating --- ...0190624 Using i3 with multiple monitors.md | 192 ------------------ ...0190624 Using i3 with multiple monitors.md | 192 ++++++++++++++++++ 2 files changed, 192 insertions(+), 192 deletions(-) delete mode 100644 sources/tech/20190624 Using i3 with multiple monitors.md create mode 100644 translated/tech/20190624 Using i3 with multiple monitors.md diff --git a/sources/tech/20190624 Using i3 with multiple monitors.md b/sources/tech/20190624 Using i3 with multiple monitors.md deleted file mode 100644 index abc6dcd23c..0000000000 --- a/sources/tech/20190624 Using i3 with multiple monitors.md +++ /dev/null @@ -1,192 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using i3 with multiple monitors) -[#]: via: (https://fedoramagazine.org/using-i3-with-multiple-monitors/) -[#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) - -Using i3 with multiple monitors -====== - -![][1] - -Are you using multiple monitors with your Linux workstation? Seeing many things at once might be beneficial. But there are often much more windows in our workflows than physical monitors — and that’s a good thing, because seeing too many things at once might be distracting. So being able to switch what we see on individual monitors seems crucial. - -Let’s talk about i3 — a popular tiling window manager that works great with multiple monitors. And there is one handy feature that many other window managers don’t have — the ability to switch workspaces on individual monitors independently. - -### Quick introduction to i3 - -The [Fedora Magazine has already covered i3][2] about three years ago. And it was one of the most popular articles ever published! Even though that’s not always the case, i3 is pretty stable and that article is still very accurate today. So — not to repeat ourselves too much — this article only covers the very minimum to get i3 up and running, and you’re welcome to go ahead and read it if you’re new to i3 and want to learn more about the basics. - -To install i3 on your system, run the following command: - -``` -$ sudo dnf install i3 -``` - -When that’s done, log out, and on the log in screen choose i3 as your window manager and log back in again. - -When you run i3 for the first time, you’ll be asked if you wish to proceed with automatic configuration — answer yes here. After that, you’ll be asked to choose a “mod key”. If you’re not sure here, just accept the default which sets you Windows/Super key as the mod key. You’ll use this key for mostly all the shortcuts within the window manager. - -At this point, you should see a little bar at the bottom and an empty screen. Let’s have a look at some of the basic shortcuts. - -Open a terminal using: - -``` -$mod + enter -``` - -Switch to a second workspace using: - -``` -$mod + 2 -``` - -Open firefox in two steps, first by: - -``` -$mod + d -``` - -… and then by typing “firefox” and pressing enter. - -Move it to the first workspace by: - -``` -$mod + shift + 1 -``` - -… and switch to the first workspace by: - -``` -$mod + 1 -``` - -At this point, you’ll see a terminal and a firefox window side by side. To close a window, press: - -``` -$mod + shift + q -``` - -There are more shortcuts, but these should give you the minimum to get started with i3. - -Ah! And to exit i3 (to log out) press: - -``` -$mod + shift + e -``` - -… and then confirm using your mouse at the top-right corner. - -### Getting multiple screens to work - -Now that we have i3 up and running, let’s put all those screens to work! - -To do that, we’ll need to use the command line as i3 is very lightweight and doesn’t have gui to manage additional screens. But don’t worry if that sounds difficult — it’s actually quite straightforward! - -The command we’ll use is called xrandr. If you don’t have xrandr on your system, install it by running: - -``` -$ sudo dnf install xrandr -``` - -When that’s installed, let’s just go ahead and run it: - -``` -$ xrandr -``` - -The output lists all the available outputs, and also indicated which have a screen attached to them (a monitor connected with a cable) by showing supported resolutions. Good news is that we don’t need to really care about the specific resolutions to make the them work. - -This specific example shows a primary screen of a laptop (named eDP1), and a second monitor connected to the HDMI-2 output, physically positioned right of the laptop. To turn it on, run the following command: - -``` -$ xrandr --output HDMI-2 --auto --right-of eDP1 -``` - -And that’s it! Your screen is now active. - -![Second screen active. The commands shown on this screenshot are slightly different than in the article, as they set a smaller resolution to make the screenshots more readable.][3] - -### Managing workspaces on multiple screens - -Switching workspaces and creating new ones on multiple screens is very similar to having just one screen. New workspaces get created on the screen that’s currently active — the one that has your mouse cursor on it. - -So, to switch to a specific workspace (or to create a new one in case it doesn’t exist), press: - -``` -$mod + NUMBER -``` - -And you can switch workspaces on individual monitors independently! - -![Workspace 2 on the left screen, workspace 4 on the right screen.][4] - -![Left screen switched to workspace 3, right screen still showing workspace 4.][5] - -![Right screen switched to workspace 4, left screen still showing workspace 3.][6] - -### Moving workspaces between monitors - -The same way we can move windows to different workspaces by the following command: - -``` -$mod + shift + NUMBER -``` - -… we can move workspaces to different screens as well. However, there is no default shortcut for this action — so we have to create it first. - -To create a custom shortcut, you’ll need to open the configuration file in a text editor of your choice (this article uses _vim_): - -``` -$ vim ~/.config/i3/config -``` - -And add the following lines to the very bottom of the configuration file: - -``` -# Moving workspaces between screens -bindsym $mod+p move workspace to output right -``` - -Save, close, and to reload and apply the configuration, press: - -``` -$mod + shift + r -``` - -Now you’ll be able to move your active workspace to the second monitor by: - -``` -$mod + p -``` - -![Workspace 2 with Firefox on the left screen][7] - -![Workspace 2 with Firefox moved to the second screen][8] - -And that’s it! Enjoy your new multi-monitor experience, and to learn more about i3, you’re welcome to read the previous article about i3 on the Fedora Magazine, or consult the official i3 documentation. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/using-i3-with-multiple-monitors/ - -作者:[Adam Šamalík][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/asamalik/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/i3-title-816x345.jpg -[2]: https://fedoramagazine.org/getting-started-i3-window-manager/ -[3]: https://fedoramagazine.org/wp-content/uploads/2019/06/0-1-1024x384.png -[4]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-1-1024x384.png -[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-2-1024x384.png -[6]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-3-1024x384.png -[7]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-1-1024x384.png -[8]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-2-1024x384.png diff --git a/translated/tech/20190624 Using i3 with multiple monitors.md b/translated/tech/20190624 Using i3 with multiple monitors.md new file mode 100644 index 0000000000..96d3a4b6b9 --- /dev/null +++ b/translated/tech/20190624 Using i3 with multiple monitors.md @@ -0,0 +1,192 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Using i3 with multiple monitors) +[#]: via: (https://fedoramagazine.org/using-i3-with-multiple-monitors/) +[#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) + +将 i3 与多个显示器配合使用 +====== + +![][1] + +你在 Linux 工作站上使用多个显示器吗?一次看到很多东西可能是有益的。但在我们的工作中通常有比实际显示器更多的窗口 - 这是一件好事,因为一次看到太多东西可能会分散注意力。因此能够切换我们在单个显示器上看到的内容似乎很重要。 + +让我们来谈谈 i3,它是一个流行的平铺窗口管理器,可以与多个显示器配合使用。并且有许多其他窗口管理器没有的便利功能,它能够独立地在各个显示器上切换工作区。 + +### 快速介绍 i3 + +大约三年前,[Fedora Magazine 已经写了一篇关于 i3 的文章][2]。这是有史以来最受欢迎的文章之一!虽然情况并非总是如此,但 i3 非常稳定,而且这篇文章如今也很准确。所以,这次不会重复太多,本篇只涵盖了让 i3 启动和运行,如果你是 i3 的新手,想要了解更多基础知识的话,欢迎你继续阅读。 + +要在系统上安装 i3,请运行以下命令: + +``` +$ sudo dnf install i3 +``` + +完成后,注销,然后在登录屏幕上选择 i3 作为窗口管理器,然后重新登录。 + +当你第一次运行 i3 时,系统会询问你是否要继续进行自动配置 - 在此处回答是。之后,你将被要求选择 “mod 键”。如果你在这里不确定,只需接受默认值,即将 Windows/Super 键设置为 mod 键。你将主要使用此键用于窗口管理器中的快捷方式。 + +此时,你应该在底部看到一个小条和一个空白屏幕。我们来看看一些基本的快捷方式。 + +打开终端: + +``` +$mod + enter +``` + +切换到第二个工作区: + +``` +$mod + 2 +``` + +通过以下两个步骤打开 firefox,首先: + +``` +$mod + d +``` + +然后输入 “firefox” 并按回车键。 + +将其移动到第一个工作区: + +``` +$mod + shift + 1 +``` + +切换到第一个工作区: + +``` +$mod + 1 +``` + +此时,你将并排看到一个终端和一个 firefox 窗口。要关闭窗口,请按: + +``` +$mod + shift + q +``` + +还有更多的快捷方式,但这些足够让你开始使用 i3。 + +要退出 i3(退出登录)按: + +``` +$mod + shift + e +``` + +然后在右上角使用鼠标确认。 + +### 同时让多个屏幕工作 + +现在我们已经启动并运行了 i3,让我们把所有这些屏幕都用到! + +为此,我们需要使用命令行,因为 i3 非常轻量级,并且没有 gui 来管理其他屏幕。如果这听起来很难也不用担心,它实际上非常简单! + +我们将使用的命令称为 xrandr。如果你的系统上没有 xrandr,请运行以下命令安装: + +``` +$ sudo dnf install xrandr +``` + +当它安装完毕后,让我们继续运行它: + +``` +$ xrandr +``` + +输出列出了所有可用输出,并通过显示支持的分辨率指示哪些输出连接了屏幕(通过电缆连接的显示器)。好消息是,我们不需要关心使它们工作的分辨率。 + +这个例子显示了笔记本电脑的主屏幕(名为 eDP1),以及连接到 HDMI-2 输出的第二个显示器,它位于笔记本电脑的右侧。要打开它,请运行以下命令: + +``` +$ xrandr --output HDMI-2 --auto --right-of eDP1 +``` + +就是这样!你的屏幕现已激活。 + +![Second screen active. The commands shown on this screenshot are slightly different than in the article, as they set a smaller resolution to make the screenshots more readable.][3] + +### 在多个屏幕上管理工作区 + +在多个屏幕上切换工作区和创建新工作区非常类似于只有一个屏幕的情况。新工作区会在当前处于活动状态(鼠标光标所在位置)的屏幕上创建。 + +因此,要切换到特定工作区(或在不存在的情况下创建新工作区),请按: + +``` +$mod + NUMBER +``` + +你可以独立切换各个显示器上的工作区! + +![Workspace 2 on the left screen, workspace 4 on the right screen.][4] + +![Left screen switched to workspace 3, right screen still showing workspace 4.][5] + +![Right screen switched to workspace 4, left screen still showing workspace 3.][6] + +### 在显示器之间移动工作区 + +我们可以通过以下命令将窗口移动到不同的工作区: + +``` +$mod + shift + NUMBER +``` + +我们也可以将工作区移动到不同的屏幕。但是,此操作没有默认快捷方式,因此我们必须先创建它。 + +要创建自定义快捷方式,你需要在你选择的文本编辑器中打开配置文件(本文使用 _vim_): + +``` +$ vim ~/.config/i3/config +``` + +并将以下行添加到配置文件的最底部: + +``` +# Moving workspaces between screens +bindsym $mod+p move workspace to output right +``` + +保存、关闭并重新加载以使配置生效,按下: + +``` +$mod + shift + r +``` + +现在你可以将活跃的工作区移动到第二个显示器: + +``` +$mod + p +``` + +![Workspace 2 with Firefox on the left screen][7] + +![Workspace 2 with Firefox moved to the second screen][8] + +就是这些了!享受你的新多显示器体验,并了解更多 i3,欢迎阅读 Fedora Magazine 上之前关于 i3 的文章,或者查看官方 i3 文档。 + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/using-i3-with-multiple-monitors/ + +作者:[Adam Šamalík][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/asamalik/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/i3-title-816x345.jpg +[2]: https://fedoramagazine.org/getting-started-i3-window-manager/ +[3]: https://fedoramagazine.org/wp-content/uploads/2019/06/0-1-1024x384.png +[4]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-1-1024x384.png +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-2-1024x384.png +[6]: https://fedoramagazine.org/wp-content/uploads/2019/06/1-3-1024x384.png +[7]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-1-1024x384.png +[8]: https://fedoramagazine.org/wp-content/uploads/2019/06/2-2-1024x384.png From 9425b93e7f6c62db8e3f3089ed23ee33e7722e1f Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 27 Jun 2019 09:44:41 +0800 Subject: [PATCH 152/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Jupyter Notebooks for Python developers.md | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md b/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md index e7f8c70156..6153a838f8 100644 --- a/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md +++ b/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md @@ -7,35 +7,34 @@ [#]: via: (https://opensource.com/article/19/6/ipython-still-heart-jupyterlab) [#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg/users/marcobravo) -IPython is still the heart of Jupyter Notebooks for Python developers +对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心 ====== -Project Jupyter's origin in IPython remains significant for the magical -development experience it provides. +Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 ![I love Free Software FSFE celebration][1] -I recently wrote about how I find Jupyter projects, especially JupyterLab, to be a [magical Python development experience][2]. In researching how the various projects are related to each other, I recapped how Jupyter began as a fork from IPython. As Project Jupyter's [The Big Split™ announcement][3] explained: +最近刚刚写过我为什么觉得觉得 Jupyter 项目(特别是 JupyterLab)提供了一种 [魔法般的 Python 开发体验][2]。在研究这些不同项目之间的关联的时候,我回顾了一下 Jupyter 最初从 IPython 分支出来的这段历史。正如 Jupyter 项目的 [大拆分™ 声明][3] 所说: -> "If anyone has been confused by what Jupyter is[1], it's the exact same code that lived in IPython, developed by the same people, just in a new home under a new name." +> “如果你不明白 Jupyter 是什么,这么说吧,它拥有和 IPython 同样的代码,并且是由同一批人开发的,只不过取了一个新名字、安了一个新家。” -That [1] links to a footnote that further clarifies: +下面这个注脚进一步说明了这一点: -> "I saw 'Jupyter is like IPython, but language agnostic' immediately after the announcement, which is a great illustration of why the project needs to not have Python in the name anymore, since it was already language agnostic at the time." +> “我从声明中解读出来的信息是,‘Jupyter 和 IPython 非常相似,但是拥有多种语言’,这也可以很好地解释为什么这个项目的名字已经不再需要包含 Python,因为当时它已经支持多种语言了。” -The fact that Jupyter Notebook and IPython forked from the same source code made sense to me, but I got lost in the current state of the IPython project. Was it no longer needed after The Big Split™ or is it living on in a different way? +我明白 Jupyter Notebook 和 IPython 都是从同样的源代码里分支出来的,但是不太清楚 IPython 项目的现状。在大拆分™ 之后它是已经不再被需要了,还是在以另一种方式延续着? -I was surprised to learn that IPython's significance continues to add value to Pythonistas, and that it is an essential part of the Jupyter experience. Here's a portion of the Jupyter FAQ: +后来我惊讶地发现,IPython 仍然不断在为 Python 使用者提供价值,它正是 Jupyter 体验的核心部分。下面是 Jupyter 常见问题页面的一段截取: -> **Are any languages pre-installed?** +> **有什么语言是需要预装的吗?** > -> Yes, installing the Jupyter Notebook will also install the IPython kernel. This allows working on notebooks using the Python programming language. +> 是的,安装 Jupyter Notebook 会首先安装 IPython 内核。这样我们就可以在 notebook 上运行 Python 语言了。 -I now understand that writing Python in JupyterLab (and Jupyter Notebook) relies on the continued development of IPython as its kernel. Not only that, IPython is the powerhouse default kernel, and it can act as a communication bus for other language kernels according to [the documentation][4], saving a lot of time and development effort. +现在我明白了,在 JupyterLab(以及 Jupyter Notebook)上编写 Python 程序仍然需要依赖 IPython 内核的持续开发。不仅如此,IPython 还充当了最为强大的默认内核的角色,根据 [这份文档][4],它是其它语言内核之间的枢纽,节省了很多开发时间和精力。 -The question remains, what can I do with just IPython? +现在唯一的问题是,IPython 本身可以做什么呢? -### What IPython does today +### IPython 如今的作用 -IPython provides both a powerful, interactive Python shell and a Jupyter kernel. After installing it, I can run **ipython** from any command line on its own and use it as a (much prettier than the default) Python shell: +IPython 提供了一个强大的、交互性的 Python shell,以及 Jupyter 的内核。安装完成之后,我可以在任何命令行运行 **ipython** 本身,将它当作一个(比默认 Python shell 好太多的)Python shell 来使用: ``` @@ -51,23 +50,23 @@ In [4]: print(average) 6.571428571428571 ``` -That brings us to the more significant issue: IPython's functionality gives JupyterLab the ability to execute the code in every project, and it also provides support for a whole bunch of functionality that's playfully called _magic_ (thank you, Nicholas Reith, for mentioning this in a comment on my previous article). +这就让我们发现了一个更为重要的问题:是IPython 让 JupyterLab 可以在项目中执行代码,并且支持了一系列被称为 *magic*的功能(感谢 Nicholas Reith 在我上一篇文章的评论里提到这点)。 -### Getting magical, thanks to IPython +### IPython 让魔法成为现实 -JupyterLab and other frontends using the IPython kernel can feel like your favorite IDE or terminal emulator environment. I'm a huge fan of how [dotfiles][5] give me the power to use shortcuts, and magic has some dotfile-like behavior as well. For example, check out **[%bookmark][6]**. I've mapped my default development folder, **~/Develop** , to a shortcut I can run at any time and hop right into it. +JupyterLab 和其它使用 IPython 的前端工具可以让你感觉像是在最喜欢的 IDE 或者是终端模拟器的环境下工作。我非常喜欢 [dotfiles][5] 快捷键功能,magic 也有类似 dotfile 的特征。比如说,可以试一下 **[%bookmark][6]** 这个命令。我把默认开发文件夹 **~/Develop** 关联到了一个可以在任何时候直接跳转的快捷方式上。 ![Screenshot of commands from JupyterLab][7] -The use of **%bookmark** and **%cd** , alongside the **!** operator (which I introduced in the previous article), are powered by IPython. As the [documentation][8] states: +**%bookmark**、**%cd**,以及我在前一篇文章里介绍过的 **!** 操作符,都是由 IPython 支持的。正如这篇 [文档][8] 所说: -> To Jupyter users: Magics are specific to and provided by the IPython kernel. Whether Magics are available on a kernel is a decision that is made by the kernel developer on a per-kernel basis. +> Jupyter 用户你们好:Magic 功能是 IPython 内核提供的专属功能。一个内核是否支持 Magic 功能是由该内核的开发者针对该内核所决定的。 -### Wrapping up +### 写在最后 -I, as a curious novice, was not quite sure if IPython remained relevant to the Jupyter ecosystem. I now have a new appreciation for the continuing development of IPython now that I realize it's the source of JupyterLab's powerful user experience. It's also a collection of talented contributors who are part of cutting edge research, so be sure to site them if you use Jupyter projects in your academic papers. They make it easy with this [ready-made citation entry][9]. +作为一个好奇的新手,我之前并不是特别确定 IPython 是否仍然和 Jupyter 生态还有任何联系。现在我对 IPython 的持续开发有了新的认识和,并且意识到它正是 JupyterLab 强大的用户体验的来源。这也是相当有才华的一批贡献者进行最前沿研究的成果,所以如果你在学术论文中使用到了 Jupyter 项目的话别忘了引用他们。为了方便引用,他们还提供了一个 [现成的引文][9]。 -Be sure to keep it in mind when you're thinking about open source projects to contribute to, and check out the [latest release notes][10] for a full list of magical features. +如果你在考虑参与哪个开源项目的贡献的话,一定不要忘了 IPython 哦。记得看看 [最新发布说明][10],在这里可以找到 magic 功能的完整列表。 -------------------------------------------------------------------------------- From d99b98b116467592dafc3c46ddfce20969486627 Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 27 Jun 2019 09:45:12 +0800 Subject: [PATCH 153/336] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0=20translate?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... still the heart of Jupyter Notebooks for Python developers.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md (100%) diff --git a/sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md b/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md similarity index 100% rename from sources/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md rename to translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md From 685552f63248cbe96072e43c1fd67f08d611094d Mon Sep 17 00:00:00 2001 From: heguangzhi <7731226@qq.com> Date: Thu, 27 Jun 2019 09:52:52 +0800 Subject: [PATCH 154/336] heguangzhi translated heguangzhi translated --- ...o Lock and Unlock User Account in Linux.md | 307 ------------------ ...o Lock and Unlock User Account in Linux.md | 305 +++++++++++++++++ 2 files changed, 305 insertions(+), 307 deletions(-) delete mode 100644 sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md create mode 100644 translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md diff --git a/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md deleted file mode 100644 index f4a80828c9..0000000000 --- a/sources/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md +++ /dev/null @@ -1,307 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (heguagnzhi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Three Ways to Lock and Unlock User Account in Linux) -[#]: via: (https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/) -[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -Three Ways to Lock and Unlock User Account in Linux -====== - -If password policy had already implemented in your organization, then you no need to look for this options. - -However, if you had set up lock period for 24 hours, in this case you might need to unlock the user’s account manually. - -This tutorial will help you to manually lock and unlock users account in Linux. - -This can be done using the following two Linux Commands in three ways. - - * **`passwd:`**The passwd command is used to update user’s authentication tokens. This task is achieved by calling the Linux-PAM and Libuser API - * **`usermod:`**The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., - - - -To exprement this, we are choosing `daygeek` user account. Let’s see, how to do step by step. - -Make a note, you have to use corresponding user account which you need to lock or unlock instead of ours. - -You can check the given user account is available or not in system by using `id Command`. Yes, my account is available in the system. - -``` -# id daygeek - -uid=2240(daygeek) gid=2243(daygeek) groups=2243(daygeek),2244(ladmin) -``` - -### Method-1: How To Lock, Unlock and Check Status of the Given User Account in Linux Using passwd Command? - -The passwd command is one of the frequently used command by Linux administrator very often. - -It used to update user’s authentication tokens in the `/etc/shadow` file. - -Run the passwd command with the `-l` switch to lock the given user account. - -``` -# passwd -l daygeek - -Locking password for user daygeek. -passwd: Success -``` - -You can check the locked account status either passwd command or grep the given user name from /etc/shadow file. - -Checking the user account locked status using passwd command. - -``` -# passwd -S daygeek -or -# passwd --status daygeek - -daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) -``` - -This will output a short information about the status of the password for a given account. - - * **`LK:`**` ` Password locked - * **`NP:`**` ` No password - * **`PS:`**` ` Password set - - - -Checking the locked user account status using `/etc/shadow` file. Two exclamation mark will be added in front of the password, if the account is already locked. - -``` -# grep daygeek /etc/shadow - -daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: -``` - -Run the passwd command with the `-u` switch to unlock the given user account. - -``` -# passwd -u daygeek - -Unlocking password for user daygeek. -passwd: Success -``` - -### Method-2: How To Lock, Unlock and Check Status of the Given User Account in Linux Using usermod Command? - -Even, the usermod command also frequently used by Linux administrator very often. - -The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., - -Run the usermod command with the `-L` switch to lock the given user account. - -``` -# usermod --lock daygeek -or -# usermod -L daygeek -``` - -You can check the locked account status either passwd command or grep the given user name from /etc/shadow file. - -Checking the user account locked status using passwd command. - -``` -# passwd -S daygeek -or -# passwd --status daygeek - -daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) -``` - -This will output a short information about the status of the password for a given account. - - * **`LK:`**` ` Password locked - * **`NP:`**` ` No password - * **`PS:`**` ` Password set - - - -Checking the locked user account status using /etc/shadow file. Two exclamation mark will be added in front of the password, if the account is already locked. - -``` -# grep daygeek /etc/shadow - -daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: -``` - -Run the usermod command with the `-U` switch to unlock the given user account. - -``` -# usermod --unlock daygeek -or -# usermod -U daygeek -``` - -### Method-3: How To Disable, Enable SSH Access To the Given User Account in Linux Using usermod Command? - -Even, the usermod command also frequently used by Linux administrator very often. - -The usermod command is used to modify/update given user’s account information. It used to add a user to a specific group, etc., - -Alternativly this can be done by assigning the `nologin` shell to the given user. To do so, run the below command. - -``` -# usermod -s /sbin/nologin daygeek -``` - -You can check the locked user account details by greping the given user name from /etc/passwd file. - -``` -# grep daygeek /etc/passwd - -daygeek:x:2240:2243::/home/daygeek:/sbin/nologin -``` - -We can enable the user ssh access by assigning back to the old shell. - -``` -# usermod -s /bin/bash daygeek -``` - -### How To Lock, Unlock and Check Status of Multiple User Account in Linux Using Shell Script? - -If you would like to lock/unlock more than one account then you need to look for script. - -Yes, we can write a small shell script to perform this. To do so, use the following shell script. - -Create The Users list. Each user should be in separate line. - -``` -$ cat user-lists.txt - -u1 -u2 -u3 -u4 -u5 -``` - -Use the following shell script to lock multiple users account in Linux. - -``` -# user-lock.sh - -#!/bin/bash -for user in `cat user-lists.txt` -do -passwd -l $user -done -``` - -Set an executable permission to `user-lock.sh` file. - -``` -# chmod + user-lock.sh -``` - -Finally run the script to achieve this. - -``` -# sh user-lock.sh - -Locking password for user u1. -passwd: Success -Locking password for user u2. -passwd: Success -Locking password for user u3. -passwd: Success -Locking password for user u4. -passwd: Success -Locking password for user u5. -passwd: Success -``` - -Use the following shell script to check locked users account in Linux. - -``` -# vi user-lock-status.sh - -#!/bin/bash -for user in `cat user-lists.txt` -do -passwd -S $user -done -``` - -Set an executable permission to `user-lock-status.sh` file. - -``` -# chmod + user-lock-status.sh -``` - -Finally run the script to achieve this. - -``` -# sh user-lock-status.sh - -u1 LK 2019-06-10 0 99999 7 -1 (Password locked.) -u2 LK 2019-06-10 0 99999 7 -1 (Password locked.) -u3 LK 2019-06-10 0 99999 7 -1 (Password locked.) -u4 LK 2019-06-10 0 99999 7 -1 (Password locked.) -u5 LK 2019-06-10 0 99999 7 -1 (Password locked.) -``` - -Use the following shell script to unlock multiple users account in Linux. - -``` -# user-unlock.sh - -#!/bin/bash -for user in `cat user-lists.txt` -do -passwd -u $user -done -``` - -Set an executable permission to `user-unlock.sh` file. - -``` -# chmod + user-unlock.sh -``` - -Finally run the script to achieve this. - -``` -# sh user-unlock.sh - -Unlocking password for user u1. -passwd: Success -Unlocking password for user u2. -passwd: Success -Unlocking password for user u3. -passwd: Success -Unlocking password for user u4. -passwd: Success -Unlocking password for user u5. -passwd: Success -``` - -Run the same shell script `user-lock-status.sh` to check these locked user accounts got unlocked in Linux. - -``` -# sh user-lock-status.sh - -u1 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) -u2 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) -u3 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) -u4 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) -u5 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) -``` --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/ - -作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ -[b]: https://github.com/lujun9972 diff --git a/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md new file mode 100644 index 0000000000..f80cbbd40a --- /dev/null +++ b/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md @@ -0,0 +1,305 @@ +[#]: collector: (lujun9972) +[#]: translator: (heguagnzhi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Three Ways to Lock and Unlock User Account in Linux) +[#]: via: (https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + + +在Linux中锁定和解锁用户帐户的三种方法 +====== + + +如果密码策略已经在你的组织中实施了,你无需看这篇文章了。 + +但是在这种情况下,如果你设置了24小时的锁定期,你需要手动解锁用户帐户。 + +本教程将帮助你在Linux中手动锁定和解锁用户帐户。 + +这可以通过三种方式使用以下两个 Linux 命令来完成。 + + * **`passwd:`** passwd 命令用于更新用户的身份验证令牌。这个任务是通过调用 Linux-PAM 和 Libuser API 来实现。 + + * **`usermod:`** usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等其他功能, + + +为了说明这一点,我们选择 `daygeek` 用户帐户。让我们看看,怎么一步步来实现的。 +请注意,你必须使用你需要锁定或解锁的用户的帐户,而不是我们自己的帐户。 +您可以使用 `id Command` 检查给定的用户帐户在系统中是否可用。是的,我的帐户在系统中是可用的。 + +``` +# id daygeek + +uid=2240(daygeek) gid=2243(daygeek) groups=2243(daygeek),2244(ladmin) +``` + +### 方法1: 如何使用 passwd 命令锁定、解锁和检查 Linux 中给定用户帐户的状态? + +passwd 命令是 Linux 管理员经常使用的命令之一。 + +它用于更新 `/etc/shadow` 文件中用户的身份验证令牌。 + +使用 `-l` 开关运行 passwd 命令,锁定给定的用户帐户。 + +``` +# passwd -l daygeek + +Locking password for user daygeek. +passwd: Success +``` + +你可以通过 passwd 命令或从 /etc/shadow 文件中获取给定用户名来检查锁定的帐户状态。 + +使用 passwd 命令检查用户帐户锁定状态。 + +``` +# passwd -S daygeek +or +# passwd --status daygeek + +daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) +``` +将输出给定帐户密码状态的简短信息。 + + * **`LK:`**` ` 密码锁定 + * **`NP:`**` ` 没有密码 + * **`PS:`**` ` 密码设置 + +使用 `/etc/shadow` 文件检查锁定的用户帐户状态。如果帐户已被锁定,密码前面将添加两个感叹号。 + +``` +# grep daygeek /etc/shadow + +daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: +``` +使用 `-u` 开关运行 passwd 命令,解锁给定的用户帐户。 + +``` +# passwd -u daygeek + +Unlocking password for user daygeek. +passwd: Success +``` + +### 方法2:如何使用 usermod 命令在 Linux 中锁定、解锁和检查给定用户帐户的状态? + +甚至,usermod 命令也经常被 Linux 管理员使用。 + +usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。, + +使用 `-L` 开关运行 usermod 命令,锁定给定的用户帐户。 + +``` +# usermod --lock daygeek +or +# usermod -L daygeek +``` + +你可以通过 passwd 命令或从 /etc/shadow 文件中获取给定用户名来检查锁定的帐户状态。 +使用 passwd 命令检查用户帐户锁定状态。 + +``` +# passwd -S daygeek +or +# passwd --status daygeek + +daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) +``` + +这将输出给定帐户密码状态的简短信息。 + + * **`LK:`**` ` Password locked + * **`NP:`**` ` No password + * **`PS:`**` ` Password set + +使用 /etc/shadow 文件检查锁定的用户帐户状态。如果帐户已被锁定,密码前面将添加两个感叹号。 + +``` +# grep daygeek /etc/shadow + +daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: +``` + +使用 `-U` 开关运行 usermod 命令以解锁给定的用户帐户。 + +``` +# usermod --unlock daygeek +or +# usermod -U daygeek +``` + +###方法-3:如何在 Linux 中使用 usermod 命令禁用、启用对给定用户帐户的 SSH 访问? + +甚至,usermod 命令也是经常被 Linux 管理员使用的命令。 + +usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。, + + +或者,这可以通过将 `nologin` shell 分配给给定用户来完成。为此,可以运行以下命令。 + +``` +# usermod -s /sbin/nologin daygeek +``` + +You can check the locked user account details by greping the given user name from /etc/passwd file. +你可以通过从 /etc/passwd 文件中给定用户名来检查锁定的用户帐户详细信息。 + +``` +# grep daygeek /etc/passwd + +daygeek:x:2240:2243::/home/daygeek:/sbin/nologin +``` + +我们可以通过分配回原来的 shell 来启用用户 ssh 访问。 + +``` +# usermod -s /bin/bash daygeek +``` + +###如何使用 shell 脚本锁定、解锁和检查 Linux 中多个用户帐户的状态? + +如果你想锁定/解锁多个帐户,那么你需要寻找脚本。 + + + +是的,我们可以编写一个小的 shell 脚本来执行这个操作。为此,请使用以下 shell 脚本。 + +创建用户列表。每个用户信息在单独的行中。 + +``` +$ cat user-lists.txt + +u1 +u2 +u3 +u4 +u5 +``` + +使用以下 shell 脚本锁定 Linux中 的多个用户帐户。 + +``` +# user-lock.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -l $user +done +``` + +将`user-lock.sh` 文件设置为可执行权限 。 + +``` +# chmod + user-lock.sh +``` + +最后运行脚本来实现这一点。 + +``` +# sh user-lock.sh + +Locking password for user u1. +passwd: Success +Locking password for user u2. +passwd: Success +Locking password for user u3. +passwd: Success +Locking password for user u4. +passwd: Success +Locking password for user u5. +passwd: Success +``` + +使用以下 shell 脚本检查锁定的用户帐户。 + +``` +# vi user-lock-status.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -S $user +done +``` + +设置 `user-lock-status.sh` 可执行权限。 + +``` +# chmod + user-lock-status.sh +``` + +最后运行脚本来实现这一点。 + +``` +# sh user-lock-status.sh + +u1 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u2 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u3 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u4 LK 2019-06-10 0 99999 7 -1 (Password locked.) +u5 LK 2019-06-10 0 99999 7 -1 (Password locked.) +``` + + +使用下面的 shell 脚本来解锁多个用户。 + +``` +# user-unlock.sh + +#!/bin/bash +for user in `cat user-lists.txt` +do +passwd -u $user +done +``` + +设置 `user-unlock.sh` 可执行权限。 + +``` +# chmod + user-unlock.sh +``` + +最后运行脚本来实现这一点。 + +``` +# sh user-unlock.sh + +Unlocking password for user u1. +passwd: Success +Unlocking password for user u2. +passwd: Success +Unlocking password for user u3. +passwd: Success +Unlocking password for user u4. +passwd: Success +Unlocking password for user u5. +passwd: Success +``` + +运行相同的 shell 脚本 `user-lock-status.sh` ,检查这些锁定的用户帐户在 Linux 中是否被解锁。 + +``` +# sh user-lock-status.sh + +u1 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u2 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u3 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u4 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +u5 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) +``` +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/ + +作者:[Magesh Maruthamuthu][a] +选题:[lujun9972][b] +译者:[heguangzhi](https://github.com/heguangzhi) +校对:[校对者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 From 3c9f731c811a80d8faecb5e99e5159e01d66d3b2 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 27 Jun 2019 10:11:49 +0800 Subject: [PATCH 155/336] =?UTF-8?q?=E7=94=B3=E8=AF=B7=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translating by qfzy1233 --- .../tech/20190618 A beginner-s guide to Linux permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190618 A beginner-s guide to Linux permissions.md b/sources/tech/20190618 A beginner-s guide to Linux permissions.md index 470545c291..5de5c372cb 100644 --- a/sources/tech/20190618 A beginner-s guide to Linux permissions.md +++ b/sources/tech/20190618 A beginner-s guide to Linux permissions.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (qfzy1233) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From f87150ac431cee2d50ca5a5121a6a51217dd1821 Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 27 Jun 2019 10:38:49 +0800 Subject: [PATCH 156/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/20190625 5 tiny Linux distros to try before you die.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190625 5 tiny Linux distros to try before you die.md b/sources/tech/20190625 5 tiny Linux distros to try before you die.md index 2d6cdfb4c6..9217e4b512 100644 --- a/sources/tech/20190625 5 tiny Linux distros to try before you die.md +++ b/sources/tech/20190625 5 tiny Linux distros to try before you die.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 9467bce65ecb1e8e8f51fafb66609c0602507045 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 27 Jun 2019 11:01:57 +0800 Subject: [PATCH 157/336] PRF:20190614 Personal assistant with Mycroft and Fedora.md @geekpi --- ...4 Personal assistant with Mycroft and Fedora.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md b/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md index 58a589b6df..496a299bcb 100644 --- a/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md +++ b/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Personal assistant with Mycroft and Fedora) @@ -12,7 +12,7 @@ ![][1] -还在找开源的私人助理么?[Mycroft][2] 让你运行开源服务,从而更好地控制你的数据。 +> 想要找个开源的私人助理么?[Mycroft][2] 可以让你运行一个开源的服务,从而更好地控制你的数据。 ### 在 Fedora 上安装 Mycroft @@ -29,9 +29,9 @@ $ cd mycroft-core $ ./dev_setup.sh ``` -安装脚本会提示用户帮助他完成安装过程。建议运行稳定版本并获取自动更新。 +安装脚本会提示用户以帮助他完成安装过程。建议运行稳定版本并获取自动更新。 -当提示在本地安装 Mimic 文字转语音引擎时,请回答否。因为根据安装描述,这可能需要很长时间,并且 Mimic 有适合 Fedora 的 rpm 包,因此可以使用 dnf 进行安装。 +当提示在本地安装 Mimic 文字转语音引擎时,请回答否。因为根据安装描述,这可能需要很长时间,并且 Mimic 有适合 Fedora 的 rpm 包,因此可以使用 `dnf` 进行安装。 ``` $ sudo dnf install mimic @@ -63,12 +63,10 @@ Hey Mycroft, how are you ? Hey Mycroft, what's the weather like ? ``` -如果你对它是如何工作的感兴趣,_start-mycroft.sh_ 脚本提供了一个_命令行_选项,它能让你使用命令行交互。它也会显示用于调试的有用信息。 +如果你对它是如何工作的感兴趣,`start-mycroft.sh` 脚本提供了一个命令行选项,它能让你使用命令行交互。它也会显示用于调试的有用信息。 Mycroft 总在学习新技能,并且有很多方法给 Mycroft 社区做[贡献][6]。 -* * * - 由 [Przemyslaw Marczynski][7] 摄影,发布于 [Unsplash][8] -------------------------------------------------------------------------------- @@ -78,7 +76,7 @@ via: https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/ 作者:[Clément Verna][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 3f1da75e733ede22dfa162a6cdc3c871cbe9e661 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 27 Jun 2019 11:12:03 +0800 Subject: [PATCH 158/336] PUB:20190614 Personal assistant with Mycroft and Fedora.md @geekpi https://linux.cn/article-11022-1.html --- .../20190614 Personal assistant with Mycroft and Fedora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190614 Personal assistant with Mycroft and Fedora.md (97%) diff --git a/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md b/published/20190614 Personal assistant with Mycroft and Fedora.md similarity index 97% rename from translated/tech/20190614 Personal assistant with Mycroft and Fedora.md rename to published/20190614 Personal assistant with Mycroft and Fedora.md index 496a299bcb..4b0a46c79d 100644 --- a/translated/tech/20190614 Personal assistant with Mycroft and Fedora.md +++ b/published/20190614 Personal assistant with Mycroft and Fedora.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11022-1.html) [#]: subject: (Personal assistant with Mycroft and Fedora) [#]: via: (https://fedoramagazine.org/personal-assistant-with-mycroft-and-fedora/) [#]: author: (Clément Verna https://fedoramagazine.org/author/cverna/) From 222919828a53854afcba8733ea918aadd889ec4a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 27 Jun 2019 11:47:37 +0800 Subject: [PATCH 159/336] PRF:20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @geekpi --- ...pen Source Version of Microsoft VS Code.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md index 1790ac3066..52f68b90fe 100644 --- a/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md +++ b/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @@ -1,16 +1,16 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (VSCodium: 100% Open Source Version of Microsoft VS Code) [#]: via: (https://itsfoss.com/vscodium/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) -VSCodium:Microsoft VS Code 的 100% 开源版本 +VSCodium:100% 开源的 VS Code ====== -_ **简介:VSCodium 是微软流行的 Visual Studio Code 编辑器的一个分支。它与 VS Code 完全相同,唯一不同的是,VSCodium 不跟踪你的使用数据。** _ +> VSCodium 是微软流行的 Visual Studio Code 编辑器的一个分支。它与 VS Code 完全相同,唯一不同的是,VSCodium 不跟踪你的使用数据。 微软的 [Visual Studio Code][1] 是一个出色的编辑器,不仅对于 Web 开发人员,也适合其他程序员。由于它的功能,它被认为是最好的开源代码编辑器之一。 @@ -18,19 +18,19 @@ _ **简介:VSCodium 是微软流行的 Visual Studio Code 编辑器的一个 但它存在一个问题,对于普通用户而言可能不是问题,但对于纯粹开源主义者而言是重要的。 -Microsoft 提供的即用二进制文件不是开源的。 +Microsoft 说提供的二进制文件是不开源的。 -由困惑么?让我解释下。 +感到困惑么?让我解释下。 VS Code 的源码是在 MIT 许可下开源的。你可以在 [GitHub][3] 上访问它。但是,[Microsoft 创建的安装包含专有的跟踪程序][4]。 此跟踪基本上用来收集使用数据并将其发送给 Microsoft 以“帮助改进其产品和服务”。如今,远程报告在软件产品中很常见。即使 [Ubuntu 也这样做,但它透明度更高][5]。 -你可以[在 VS Code 中禁用远程报告][6]但是你能完全信任微软吗?如果答案是否定的,那你有什么选择? +你可以[在 VS Code 中禁用远程报告][6],但是你能完全信任微软吗?如果答案是否定的,那你有什么选择? -你可以从源代码构建它,从而保持所有开源。但是[从源代码安装][7]并不总是如今最好的选择,因为我们习惯于使用二进制文件。 +你可以从源代码构建它,从而保持全都是开源的。但是如今[从源代码安装][7]并不总是最好的选择,因为我们习惯于使用二进制文件。 -另一种选择是使用 VSCodium! +另一种选择是使用 VSCodium ! ### VSCodium:100% 开源形式的 Visual Studio Code @@ -38,7 +38,7 @@ VS Code 的源码是在 MIT 许可下开源的。你可以在 [GitHub][3] 上访 [VSCodium][9] 是微软 Visual Studio Code 的一个分支。该项目的唯一目的是为你提供现成的二进制文件,而没有 Microsoft 的远程收集代码。 -这解决了你想在没有 Microsoft 的专有代码的情况下使用 VS Code 但你不习惯从源代码构建它的问题, +这解决了你想在去掉 Microsoft 的专有代码的情况下使用 VS Code ,而你又不习惯从源代码构建它的问题。 由于 [VSCodium 是 VS Code 的一个分支][11],它的外观和功能与 VS Code 完全相同。 @@ -80,7 +80,7 @@ sudo apt update && sudo apt install codium 你可以在它的页面上找到[其他发行版的安装说明][15]。你还应该阅读[有关从 VS Code 迁移到 VSCodium 的说明][16]。 -**你如何看待 VSCodium?** +### 你如何看待 VSCodium? 就个人而言,我喜欢 VSCodium 的概念。说的老套一点,它的初心是好的。我认为,致力于开源的 Linux 发行版甚至可能开始将其包含在官方仓库中。 @@ -95,7 +95,7 @@ via: https://itsfoss.com/vscodium/ 作者:[Abhishek Prakash][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 adda39fed20396c608d9698a5a41fadae7ddce0e Mon Sep 17 00:00:00 2001 From: LuMing <784315443@qq.com> Date: Thu, 27 Jun 2019 11:48:37 +0800 Subject: [PATCH 160/336] translating --- .../tech/20190626 Tracking down library injections on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190626 Tracking down library injections on Linux.md b/sources/tech/20190626 Tracking down library injections on Linux.md index 34ba19037c..14b93d7258 100644 --- a/sources/tech/20190626 Tracking down library injections on Linux.md +++ b/sources/tech/20190626 Tracking down library injections on Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (LuuMing) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a83c98b4dca9b91aaa4b0924caa981d877cc8275 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 27 Jun 2019 11:49:13 +0800 Subject: [PATCH 161/336] PUB:20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @geekpi https://linux.cn/article-11023-1.html --- ...VSCodium- 100- Open Source Version of Microsoft VS Code.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md (98%) diff --git a/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/published/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md similarity index 98% rename from translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md rename to published/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md index 52f68b90fe..1038abc8c2 100644 --- a/translated/tech/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md +++ b/published/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11023-1.html) [#]: subject: (VSCodium: 100% Open Source Version of Microsoft VS Code) [#]: via: (https://itsfoss.com/vscodium/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) From 57aed462d786e87b5b42b6de2c754bbd2f8aabeb Mon Sep 17 00:00:00 2001 From: eastdong Date: Thu, 27 Jun 2019 13:53:48 +0800 Subject: [PATCH 162/336] IEAST is translating --- ...ativity – Linux Programs for Drawing and Image Editing.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sources/tech/20171116 Unleash Your Creativity – Linux Programs for Drawing and Image Editing.md b/sources/tech/20171116 Unleash Your Creativity – Linux Programs for Drawing and Image Editing.md index c6c50d9b25..0b5576e3a6 100644 --- a/sources/tech/20171116 Unleash Your Creativity – Linux Programs for Drawing and Image Editing.md +++ b/sources/tech/20171116 Unleash Your Creativity – Linux Programs for Drawing and Image Editing.md @@ -1,3 +1,4 @@ +IEAST is translating ### Unleash Your Creativity – Linux Programs for Drawing and Image Editing By: [chabowski][1] @@ -74,11 +75,11 @@ And indeed, the sky’s the limit on how creative a user wants to be when using ( - _**2** votes, average: **5.00** out of 5_ + _**2** votes, average: **5.00** out of 5_ ) - _You need to be a registered member to rate this post._ + _You need to be a registered member to rate this post._ Tags: [drawing][19], [Getting Started with Linux][20], [GIMP][21], [image editing][22], [Images][23], [InkScape][24], [KDE][25], [Krita][26], [Leap 42.3][27], [LibreOffice][28], [Linux Magazine][29], [Okular][30], [openSUSE][31], [PDF][32] Categories: [Desktop][33], [Expert Views][34], [LibreOffice][35], [openSUSE][36] From b3d1d4e6e7f5da447aa59c19296ef461feb4b7a9 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 28 Jun 2019 00:51:47 +0800 Subject: [PATCH 163/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190627=20RPM=20?= =?UTF-8?q?packages=20explained?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190627 RPM packages explained.md --- .../tech/20190627 RPM packages explained.md | 339 ++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 sources/tech/20190627 RPM packages explained.md diff --git a/sources/tech/20190627 RPM packages explained.md b/sources/tech/20190627 RPM packages explained.md new file mode 100644 index 0000000000..3fb3cee6b2 --- /dev/null +++ b/sources/tech/20190627 RPM packages explained.md @@ -0,0 +1,339 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (RPM packages explained) +[#]: via: (https://fedoramagazine.org/rpm-packages-explained/) +[#]: author: (Ankur Sinha "FranciscoD" https://fedoramagazine.org/author/ankursinha/) + +RPM packages explained +====== + +![][1] + +Perhaps the best known way the Fedora community pursues its [mission of promoting free and open source software and content][2] is by developing the [Fedora software distribution][3]. So it’s not a surprise at all that a very large proportion of our community resources are spent on this task. This post summarizes how this software is “packaged” and the underlying tools such as _rpm_ that make it all possible. + +### RPM: the smallest unit of software + +The editions and flavors ([spins][4]/[labs][5]/[silverblue][6]) that users get to choose from are all very similar. They’re all composed of various software that is mixed and matched to work well together. What differs between them is the exact list of tools that goes into each. That choice depends on the use case that they target. The basic unit of all of these is an RPM package file. + +RPM files are archives that are similar to ZIP files or tarballs. In fact, they uses compression to reduce the size of the archive. However, along with files, RPM archives also contain metadata about the package. This can be queried using the _rpm_ tool: +``` + +``` + +$ rpm -q fpaste +fpaste-0.3.9.2-2.fc30.noarch + +$ rpm -qi fpaste +Name        : fpaste +Version     : 0.3.9.2 +Release     : 2.fc30 +Architecture: noarch +Install Date: Tue 26 Mar 2019 08:49:10 GMT +Group       : Unspecified +Size        : 64144 +License     : GPLv3+ +Signature   : RSA/SHA256, Thu 07 Feb 2019 15:46:11 GMT, Key ID ef3c111fcfc659b9 +Source RPM  : fpaste-0.3.9.2-2.fc30.src.rpm +Build Date  : Thu 31 Jan 2019 20:06:01 GMT +Build Host  : buildhw-07.phx2.fedoraproject.org +Relocations : (not relocatable) +Packager    : Fedora Project +Vendor      : Fedora Project +URL         : +Bug URL     : +Summary     : A simple tool for pasting info onto sticky notes instances +Description : +It is often useful to be able to easily paste text to the Fedora +Pastebin at and this simple script +will do that and return the resulting URL so that people may +examine the output. This can hopefully help folks who are for +some reason stuck without X, working remotely, or any other +reason they may be unable to paste something into the pastebin + +$ rpm -ql fpaste +/usr/bin/fpaste +/usr/share/doc/fpaste +/usr/share/doc/fpaste/README.rst +/usr/share/doc/fpaste/TODO +/usr/share/licenses/fpaste +/usr/share/licenses/fpaste/COPYING +/usr/share/man/man1/fpaste.1.gz +``` + +``` + +When an RPM package is installed, the _rpm_ tools know exactly what files were added to the system. So, removing a package also removes these files, and leaves the system in a consistent state. This is why installing software using _rpm_ is preferred over installing software from source whenever possible. + +### Dependencies + +Nowadays, it is quite rare for software to be completely self-contained. Even [fpaste][7], a simple one file Python script, requires that the Python interpreter be installed. So, if the system does not have Python installed (highly unlikely, but possible), _fpaste_ cannot be used. In packager jargon, we say that “Python is a **run-time dependency** of _fpaste_“. + +When RPM packages are built (the process of building RPMs is not discussed in this post), the generated archive includes all of this metadata. That way, the tools interacting with the RPM package archive know what else must must be installed so that fpaste works correctly: +``` + +``` + +$ rpm -q --requires fpaste +/usr/bin/python3 +python3 +rpmlib(CompressedFileNames) &lt;= 3.0.4-1 +rpmlib(FileDigests) &lt;= 4.6.0-1 +rpmlib(PayloadFilesHavePrefix) &lt;= 4.0-1 +rpmlib(PayloadIsXz) &lt;= 5.2-1 + +$ rpm -q --provides fpaste +fpaste = 0.3.9.2-2.fc30 + +$ rpm -qi python3 +Name        : python3 +Version     : 3.7.3 +Release     : 3.fc30 +Architecture: x86_64 +Install Date: Thu 16 May 2019 18:51:41 BST +Group       : Unspecified +Size        : 46139 +License     : Python +Signature   : RSA/SHA256, Sat 11 May 2019 17:02:44 BST, Key ID ef3c111fcfc659b9 +Source RPM  : python3-3.7.3-3.fc30.src.rpm +Build Date  : Sat 11 May 2019 01:47:35 BST +Build Host  : buildhw-05.phx2.fedoraproject.org +Relocations : (not relocatable) +Packager    : Fedora Project +Vendor      : Fedora Project +URL         : +Bug URL     : +Summary     : Interpreter of the Python programming language +Description : +Python is an accessible, high-level, dynamically typed, interpreted programming +language, designed with an emphasis on code readability. +It includes an extensive standard library, and has a vast ecosystem of +third-party libraries. + +The python3 package provides the "python3" executable: the reference +interpreter for the Python language, version 3. +The majority of its standard library is provided in the python3-libs package, +which should be installed automatically along with python3. +The remaining parts of the Python standard library are broken out into the +python3-tkinter and python3-test packages, which may need to be installed +separately. + +Documentation for Python is provided in the python3-docs package. + +Packages containing additional libraries for Python are generally named with +the "python3-" prefix. + +$ rpm -q --provides python3 +python(abi) = 3.7 +python3 = 3.7.3-3.fc30 +python3(x86-64) = 3.7.3-3.fc30 +python3.7 = 3.7.3-3.fc30 +python37 = 3.7.3-3.fc30 +``` + +``` + +### Resolving RPM dependencies + +While _rpm_ knows the required dependencies for each archive, it does not know where to find them. This is by design: _rpm_ only works on local files and must be told exactly where they are. So, if you try to install a single RPM package, you get an error if _rpm_ cannot find the package’s run-time dependencies. This example tries to install a package downloaded from the Fedora package set: +``` + +``` + +$ ls +python3-elephant-0.6.2-3.fc30.noarch.rpm + +$ rpm -qpi python3-elephant-0.6.2-3.fc30.noarch.rpm +Name        : python3-elephant +Version     : 0.6.2 +Release     : 3.fc30 +Architecture: noarch +Install Date: (not installed) +Group       : Unspecified +Size        : 2574456 +License     : BSD +Signature   : (none) +Source RPM  : python-elephant-0.6.2-3.fc30.src.rpm +Build Date  : Fri 14 Jun 2019 17:23:48 BST +Build Host  : buildhw-02.phx2.fedoraproject.org +Relocations : (not relocatable) +Packager    : Fedora Project +Vendor      : Fedora Project +URL         : +Bug URL     : +Summary     : Elephant is a package for analysis of electrophysiology data in Python +Description : +Elephant - Electrophysiology Analysis Toolkit Elephant is a package for the +analysis of neurophysiology data, based on Neo. + +$ rpm -qp --requires python3-elephant-0.6.2-3.fc30.noarch.rpm +python(abi) = 3.7 +python3.7dist(neo) >= 0.7.1 +python3.7dist(numpy) >= 1.8.2 +python3.7dist(quantities) >= 0.10.1 +python3.7dist(scipy) >= 0.14.0 +python3.7dist(six) >= 1.10.0 +rpmlib(CompressedFileNames) &lt;= 3.0.4-1 +rpmlib(FileDigests) &lt;= 4.6.0-1 +rpmlib(PartialHardlinkSets) &lt;= 4.0.4-1 +rpmlib(PayloadFilesHavePrefix) &lt;= 4.0-1 +rpmlib(PayloadIsXz) &lt;= 5.2-1 + +$ sudo rpm -i ./python3-elephant-0.6.2-3.fc30.noarch.rpm +error: Failed dependencies: +        python3.7dist(neo) >= 0.7.1 is needed by python3-elephant-0.6.2-3.fc30.noarch +        python3.7dist(quantities) >= 0.10.1 is needed by python3-elephant-0.6.2-3.fc30.noarch +``` + +``` + +In theory, one could download all the packages that are required for _python3-elephant_, and tell _rpm_ where they all are, but that isn’t convenient. What if _python3-neo_ and _python3-quantities_ have other run-time requirements and so on? Very quickly, the **dependency chain** can get quite complicated. + +#### Repositories + +Luckily, _dnf_ and friends exist to help with this issue. Unlike _rpm_, _dnf_ is aware of **repositories**. Repositories are collections of packages, with metadata that tells _dnf_ what these repositories contain. All Fedora systems come with the default Fedora repositories enabled by default: +``` + +``` + +$ sudo dnf repolist +repo id              repo name                             status +fedora               Fedora 30 - x86_64                    56,582 +fedora-modular       Fedora Modular 30 - x86_64               135 +updates              Fedora 30 - x86_64 - Updates           8,573 +updates-modular      Fedora Modular 30 - x86_64 - Updates     138 +updates-testing      Fedora 30 - x86_64 - Test Updates      8,458 +``` + +``` + +There’s more information on [these repositories][8], and how they [can be managed][9] on the Fedora quick docs. + +_dnf_ can be used to query repositories for information on the packages they contain. It can also search them for software, or install/uninstall/upgrade packages from them: +``` + +``` + +$ sudo dnf search elephant +Last metadata expiration check: 0:05:21 ago on Sun 23 Jun 2019 14:33:38 BST. +============================================================================== Name &amp; Summary Matched: elephant ============================================================================== +python3-elephant.noarch : Elephant is a package for analysis of electrophysiology data in Python +python3-elephant.noarch : Elephant is a package for analysis of electrophysiology data in Python + +$ sudo dnf list \\*elephant\\* +Last metadata expiration check: 0:05:26 ago on Sun 23 Jun 2019 14:33:38 BST. +Available Packages +python3-elephant.noarch      0.6.2-3.fc30      updates-testing +python3-elephant.noarch      0.6.2-3.fc30              updates +``` + +``` + +#### Installing dependencies + +When installing the package using _dnf_ now, it _resolves_ all the required dependencies, then calls _rpm_ to carry out the _transaction_: +``` + +``` + +$ sudo dnf install python3-elephant +Last metadata expiration check: 0:06:17 ago on Sun 23 Jun 2019 14:33:38 BST. +Dependencies resolved. +============================================================================================================================================================================================== + Package                                      Architecture                     Version                                                        Repository                                 Size +============================================================================================================================================================================================== +Installing: + python3-elephant                             noarch                           0.6.2-3.fc30                                                   updates-testing                           456 k +Installing dependencies: + python3-neo                                  noarch                           0.8.0-0.1.20190215git49b6041.fc30                              fedora                                    753 k + python3-quantities                           noarch                           0.12.2-4.fc30                                                  fedora                                    163 k +Installing weak dependencies: + python3-igor                                 noarch                           0.3-5.20150408git2c2a79d.fc30                                  fedora                                     63 k + +Transaction Summary +============================================================================================================================================================================================== +Install  4 Packages + +Total download size: 1.4 M +Installed size: 7.0 M +Is this ok [y/N]: y +Downloading Packages: +(1/4): python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch.rpm                                                                                                  222 kB/s |  63 kB     00:00 +(2/4): python3-elephant-0.6.2-3.fc30.noarch.rpm                                                                                                               681 kB/s | 456 kB     00:00 +(3/4): python3-quantities-0.12.2-4.fc30.noarch.rpm                                                                                                            421 kB/s | 163 kB     00:00 +(4/4): python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch.rpm                                                                                               840 kB/s | 753 kB     00:00 +\---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Total                                                                                                                                                         884 kB/s | 1.4 MB     00:01 +Running transaction check +Transaction check succeeded. +Running transaction test +Transaction test succeeded. +Running transaction +  Preparing        :                                                                                                                                                                      1/1 +  Installing       : python3-quantities-0.12.2-4.fc30.noarch                                                                                                                              1/4 +  Installing       : python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch                                                                                                                    2/4 +  Installing       : python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch                                                                                                                 3/4 +  Installing       : python3-elephant-0.6.2-3.fc30.noarch                                                                                                                                 4/4 +  Running scriptlet: python3-elephant-0.6.2-3.fc30.noarch                                                                                                                                 4/4 +  Verifying        : python3-elephant-0.6.2-3.fc30.noarch                                                                                                                                 1/4 +  Verifying        : python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch                                                                                                                    2/4 +  Verifying        : python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch                                                                                                                 3/4 +  Verifying        : python3-quantities-0.12.2-4.fc30.noarch                                                                                                                              4/4 + +Installed: +  python3-elephant-0.6.2-3.fc30.noarch   python3-igor-0.3-5.20150408git2c2a79d.fc30.noarch   python3-neo-0.8.0-0.1.20190215git49b6041.fc30.noarch   python3-quantities-0.12.2-4.fc30.noarch + +Complete! +``` + +``` + +Notice how dnf even installed _python3-igor_, which isn’t a direct dependency of _python3-elephant_. + +### DnfDragora: a graphical interface to DNF + +While technical users may find _dnf_ straightforward to use, it isn’t for everyone. [Dnfdragora][10] addresses this issue by providing a graphical front end to _dnf_. + +![dnfdragora \(version 1.1.1-2 on Fedora 30\) listing all the packages installed on a system.][11] + +From a quick look, dnfdragora appears to provide all of _dnf_‘s main functions. + +There are other tools in Fedora that also manage packages. GNOME Software, and Discover are two examples. GNOME Software is focused on graphical applications only. You can’t use the graphical front end to install command line or terminal tools such as _htop_ or _weechat_. However, GNOME Software does support the installation of [Flatpaks][12] and Snap applications which _dnf_ does not. So, they are different tools with different target audiences, and so provide different functions. + +This post only touches the tip of the iceberg that is the life cycle of software in Fedora. This article explained what RPM packages are, and the main differences between using _rpm_ and using _dnf_. + +In future posts, we’ll speak more about: + + * The processes that are needed to create these packages + * How the community tests them to ensure that they are built correctly + * The infrastructure that the community uses to get them to community users in future posts. + + + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/rpm-packages-explained/ + +作者:[Ankur Sinha "FranciscoD"][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/ankursinha/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/rpm.png-816x345.jpg +[2]: https://docs.fedoraproject.org/en-US/project/#_what_is_fedora_all_about +[3]: https://getfedora.org +[4]: https://spins.fedoraproject.org/ +[5]: https://labs.fedoraproject.org/ +[6]: https://silverblue.fedoraproject.org/ +[7]: https://src.fedoraproject.org/rpms/fpaste +[8]: https://docs.fedoraproject.org/en-US/quick-docs/repositories/ +[9]: https://docs.fedoraproject.org/en-US/quick-docs/adding-or-removing-software-repositories-in-fedora/ +[10]: https://src.fedoraproject.org/rpms/dnfdragora +[11]: https://fedoramagazine.org/wp-content/uploads/2019/06/dnfdragora-1024x558.png +[12]: https://fedoramagazine.org/getting-started-flatpak/ From bcca11a17ad48409c2e825743734bfa7ef88cf19 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 28 Jun 2019 00:52:43 +0800 Subject: [PATCH 164/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190627=20OpenAs?= =?UTF-8?q?sessIt=20Tooklit=20helps=20improve=20website=20accessibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190627 OpenAssessIt Tooklit helps improve website accessibility.md --- ...lit helps improve website accessibility.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 sources/tech/20190627 OpenAssessIt Tooklit helps improve website accessibility.md diff --git a/sources/tech/20190627 OpenAssessIt Tooklit helps improve website accessibility.md b/sources/tech/20190627 OpenAssessIt Tooklit helps improve website accessibility.md new file mode 100644 index 0000000000..43ab924a8a --- /dev/null +++ b/sources/tech/20190627 OpenAssessIt Tooklit helps improve website accessibility.md @@ -0,0 +1,64 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (OpenAssessIt Tooklit helps improve website accessibility) +[#]: via: (https://opensource.com/article/19/6/openassessit-toolkit) +[#]: author: (Jeff Macharyas https://opensource.com/users/jeffmacharyas/users/petercheer) + +OpenAssessIt Tooklit helps improve website accessibility +====== +Open source application reports website accessibility problems in +human-readable format so it is easier to find and fix them. +![web development and design, desktop and browser][1] + +People with disabilities often feel [excluded from society][2], despite laws like the Americans with Disabilities Act and the UK's Equality Act 2010 that were created to safeguard accessibility for people with different abilities. This is even true on the web. According to the [Web Accessibility Initiative][3]: + +> _When websites and web tools are properly designed and coded, people with disabilities can use them. However, currently many sites and tools are developed with accessibility barriers that make them difficult or impossible for some people to use._ + +Unfortunately, because of poor website design decisions, a lot of content on the web (such as PDFs) is not accessible to people with hearing, sight, mobility, neurological, and other disabilities, and as the population rapidly ages, accessibility-related problems will increase. + +Fortunately, many businesses, governments, and other organizations are taking strides to remedy inaccessible websites. There are two paths to achieving accessibility: fixing existing websites and doing the right things when sites are created. Fixing a website that has been in use for many years—with hundreds of pages, posts, images, and PDFs—can be a daunting task. Every element must be scrutinized for problems, and sometimes the fix is not obvious nor easy to accomplish. + +There are many [tools][4] available to check and fix website accessibility issues, including [OpenAssessIt Toolkit][5], a new open source tool developed by [Joel Crawford-Smith][6], a self-described "relentless web accessibility fanatic" and "cat aficionado." + +[OpenAssessIt][7] converts [Chrome Lighthouse][8] files into visual, human-readable web accessibility assessments. Lighthouse audits websites for accessibility issues and reports its findings as text that can be viewed in the browser or exported as a JSON file with valuable hidden data. + +OpenAssessIt consumes Lighthouse's data-rich JSON files and outputs them in [Markdown][9], which is easy for people to read and edit. It also takes screenshots of each failing element and provides suggestions on how to fix each issue. Automated tools help detect accessibility issues, but a human must evaluate the validity and seriousness of each problem. "Seeing the issues visually [is] a good tool for training and development," Joel says. + +The toolkit also includes [OpenDiffIt][10] to help prevent accidentally re-checking PDF files that have already been validated as accessible. It identifies new or modified PDF files by comparing user-generated CSV files from server logs or analytics, generating a unique hash for every file, and marking each one as New, Same, or Modified (based on the hash). By using OpenDiffIt, users can make sure all new or revised PDF files are validated without doing unnecessary work. + +### OpenAssessIt development + +Joel developed the OpenAssessIt Toolkit with Python, which he says "makes development fun." + +OpenAssessIt is available as a native version that requires Python, headless Chrome, and Selenium, and as a simple Docker version, which doesn't require any Python knowledge to use. OpenDiffIt is only available as a Python version, but Joel says he hopes to make a Docker version available soon. + +Joel concedes the OpenAssessIt Toolkit is still in a "primitive" stage and says it is a good option for people who don't have the money for big, enterprise-wide solutions. He hopes the software will be politely "roasted" by the open source community to help him improve it. He would also like help to give the tool a graphical user interface that is easier for less tech-savvy people to use. + +Accessibility is an ongoing endeavor, and people like Joel Crawford-Smith are making the task less daunting by developing open source solutions. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/openassessit-toolkit + +作者:[Jeff Macharyas][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jeffmacharyas/users/petercheer +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/web_browser_desktop_devlopment_design_system_computer.jpg?itok=pfqRrJgh (web development and design, desktop and browser) +[2]: https://rightsinfo.org/49-of-disabled-people-feel-excluded-from-society/ +[3]: https://www.w3.org/WAI/ +[4]: https://www.w3.org/WAI/ER/tools/ +[5]: https://github.com/OpenAssessItToolkit +[6]: http://joelcrawfordsmith.com/ +[7]: https://github.com/OpenAssessItToolkit/openassessit +[8]: https://developers.google.com/web/tools/lighthouse/ +[9]: https://en.wikipedia.org/wiki/Markdown +[10]: https://github.com/OpenAssessItToolkit/opendiffit From 31e6b19fd97fbf73ab4e44afd72e79f57b73053a Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 28 Jun 2019 00:54:02 +0800 Subject: [PATCH 165/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190627=20How=20?= =?UTF-8?q?to=20use=20Tig=20to=20browse=20Git=20logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190627 How to use Tig to browse Git logs.md --- ...90627 How to use Tig to browse Git logs.md | 216 ++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 sources/tech/20190627 How to use Tig to browse Git logs.md diff --git a/sources/tech/20190627 How to use Tig to browse Git logs.md b/sources/tech/20190627 How to use Tig to browse Git logs.md new file mode 100644 index 0000000000..1b0c88752e --- /dev/null +++ b/sources/tech/20190627 How to use Tig to browse Git logs.md @@ -0,0 +1,216 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use Tig to browse Git logs) +[#]: via: (https://opensource.com/article/19/6/what-tig) +[#]: author: (Olaf Alders https://opensource.com/users/oalders/users/mbbroberg/users/marcobravo) + +How to use Tig to browse Git logs +====== +Tig is more than just a text-mode interface for Git. Here's how it can +enhance your daily workflow. +![A person programming][1] + +If you work with Git as your version control system, you've likely already resigned yourself to the fact that Git is a complicated beast. It is a fantastic tool, but it can be cumbersome to navigate Git repositories. That's where a tool like [Tig][2] comes in. + +From the [Tig man page][3]: + +> Tig is an ncurses-based text-mode interface for git(1). It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands. + +This basically means that Tig provides a text-based user interface you can run in your terminal. Tig makes it easy to browse your Git logs, but it can do much more than just bounce you around from your last commit to a previous one. + +![Tig screenshot][4] + +Many of the examples in this quick introduction to Tig have been poached directly from its excellent man page. I highly recommend reading it to learn more. + +### Install Tig + + * Fedora and RHEL: **sudo dnf install tig** + * Ubuntu and Debian: **sudo apt install tig** + * MacOS: **brew install tig** + + + +See the official [installation instructions][5] for even more options. + +### Browse commits in your current branch + +If you want to browse the latest commits in your branch, enter: + + +``` +`tig` +``` + +That's it. This three-character command will launch a browser where you can navigate the commits in your current branch. You can think of it as a wrapper around **git log**. + +To navigate the output, you can use the Up and Down arrow keys to move from one commit to another. Pressing the Return/Enter key will open a vertical split with the contents of the chosen commit on the right-hand side. You can continue to browse up and down in your commit history on the left-hand side, and your changes will appear on the right. Use **k** and **j** to navigate up and down by line and **-** and the Space Bar to page up and down on the right-hand side. Use **q** to exit the right-hand pane. + +Searching on **tig** output is simple as well. Use **/** to search forward and **?** to search backward on both the left and right panes. + +![Searching Tig][6] + +That's enough to get you started navigating your commits. There are too many key bindings to cover here, but clicking **h** will display a Help menu where you can discover its navigation and command options. You can also use **/** and **?** to search the Help menu. Use **q** to exit Help. + +![Tig Help][7] + +### Browse revisions for a single file + +Since Tig is a wrapper around **git log**, it conveniently accepts the same arguments that can be passed to **git log**. For instance, to browse the commit history for a single file, enter: + + +``` +`tig README.md` +``` + +Compare this with the output of the Git command being wrapped to get a clearer view of how Tig enhances the output. + + +``` +`git log README.md` +``` + +To include the patches in the raw Git output, you can add a **-p** option: + + +``` +`git log -p README.md` +``` + +If you want to narrow the commits down to a specific date range, try something like this: + + +``` +`tig --after="2017-01-01" --before="2018-05-16" -- README.md` +``` + +Again, you can compare this with the raw Git version: + + +``` +`git log --after="2017-01-01" --before="2018-05-16" -- README.md` +``` + +### Browse who changed a file + +Sometimes you want to find out who made a change to a file and why. The command: + + +``` +`tig blame README.md` +``` + +is essentially a wrapper around **git blame**. As you would expect, it allows you to see who the last person was to edit a given line, and it also allows you to navigate to the commit that introduced the line. This is somewhat like the **:Gblame** command Vim's **vim-fugitive** plugin provides. + +### Browse your stash + +If you're like me, you may have a pile of edits in your stash. It's easy to lose track of them. You can view the latest item in your stash via:  + + +``` +`git stash show -p stash@{0}` +``` + +You can find the second most recent item via: + + +``` +`git stash show -p stash@{1}` +``` + +and so on. If you can recall these commands whenever you need them, you have a much sharper memory than I do. + +As with the Git commands above, Tig makes it easy to enhance your Git output with a simple invocation: + + +``` +`tig stash` +``` + +Try issuing this command in a repository with a populated stash. You'll be able to browse _and search_ your stash items, giving you a quick overview of everything you saved for a rainy day. + +### Browse your refs + +A Git ref is the hash of something you have committed. This includes files as well as branches. Using the **tig refs** command allows you to browse all of your refs and drill down to specific commits. + + +``` +`tig refs` +``` + +When you're finished, use **q** to return to a previous menu. + +### Browse git status + +If you want to view which files have been staged and which are untracked, use **tig status**, a wrapper around **git status**. + +![Tig status][8] + +### Browse git grep + +You can use the **grep** command to search for expressions in text files. The command **tig grep** allows you to navigate the output of **git grep**. For example: + + +``` +`tig grep -i foo lib/Bar` +``` + +will navigate the output of a case-insensitive search for **foo** in the **lib/Bar** directory. + +### Pipe output to Tig via STDIN + +If you are piping a list of commit IDs to Tig, you must use the **\--stdin** flag so that **tig show** reads from stdin. Otherwise, **tig show** launches without input (rendering an empty screen). + + +``` +`git rev-list --author=olaf HEAD | tig show --stdin` +``` + +### Add custom bindings + +You can customize Tig with an [rc][9] file. Here's how you can configure Tig to your liking, using the example of adding some helpful custom key bindings. + +Create a file in your home directory called **.tigrc**. Open **~/.tigrc** in your favorite editor and add: + + +``` +# Apply the selected stash +bind stash a !?git stash apply %(stash) + +# Drop the selected stash item +bind stash x !?git stash drop %(stash) +``` + +Run **tig stash** to browse your stash, as above. However, with these bindings in place, you can press **a** to apply an item from the stash to your repository and **x** to drop an item from the stash. Keep in mind that you'll need to perform these commands when browsing the stash _list_. If you're browsing a stash _item_, enter **q** to exit that view and press **a** or **x** to get the effect you want. + +For more information, you can read more about [Tig key bindings][10]. + +### Wrapping up + +I hope this has been a helpful demonstration of how Tig can enhance your daily workflow. Tig can do even more powerful things (such as staging lines of code), but that's outside the scope of this introductory article. There's enough information here to make you dangerous, but there's still more to explore. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/what-tig + +作者:[Olaf Alders][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/oalders/users/mbbroberg/users/marcobravo +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_keyboard_laptop_development_code_woman.png?itok=vbYz6jjb (A person programming) +[2]: https://jonas.github.io/tig/ +[3]: http://manpages.ubuntu.com/manpages/bionic/man1/tig.1.html +[4]: https://opensource.com/sites/default/files/uploads/tig.jpg (Tig screenshot) +[5]: https://jonas.github.io/tig/INSTALL.html +[6]: https://opensource.com/sites/default/files/uploads/tig-search.png (Searching Tig) +[7]: https://opensource.com/sites/default/files/uploads/tig-help.png (Tig Help) +[8]: https://opensource.com/sites/default/files/uploads/tig-status.png (Tig status) +[9]: https://en.wikipedia.org/wiki/Run_commands +[10]: https://github.com/jonas/tig/wiki/Bindings From e62bc63d519f6378393dd04b5f7462d032391991 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 28 Jun 2019 09:19:53 +0800 Subject: [PATCH 166/336] translating --- sources/tech/20190320 4 cool terminal multiplexers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190320 4 cool terminal multiplexers.md b/sources/tech/20190320 4 cool terminal multiplexers.md index e8650b4f56..2dbdfc6770 100644 --- a/sources/tech/20190320 4 cool terminal multiplexers.md +++ b/sources/tech/20190320 4 cool terminal multiplexers.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From b01454bd5bdb68bc2cffe941e0331967558f3a7a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 12:17:14 +0800 Subject: [PATCH 167/336] APL:20190605 How to navigate the Kubernetes learning curve --- .../20190605 How to navigate the Kubernetes learning curve.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190605 How to navigate the Kubernetes learning curve.md b/sources/tech/20190605 How to navigate the Kubernetes learning curve.md index 0fde8d1383..e8755094fd 100644 --- a/sources/tech/20190605 How to navigate the Kubernetes learning curve.md +++ b/sources/tech/20190605 How to navigate the Kubernetes learning curve.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 1117fb90e23aae955434d2211a1e4c3320e6a21d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 12:54:09 +0800 Subject: [PATCH 168/336] TSL:20190605 How to navigate the Kubernetes learning curve.md --- ... navigate the Kubernetes learning curve.md | 75 ------------------- ... navigate the Kubernetes learning curve.md | 72 ++++++++++++++++++ 2 files changed, 72 insertions(+), 75 deletions(-) delete mode 100644 sources/tech/20190605 How to navigate the Kubernetes learning curve.md create mode 100644 translated/tech/20190605 How to navigate the Kubernetes learning curve.md diff --git a/sources/tech/20190605 How to navigate the Kubernetes learning curve.md b/sources/tech/20190605 How to navigate the Kubernetes learning curve.md deleted file mode 100644 index e8755094fd..0000000000 --- a/sources/tech/20190605 How to navigate the Kubernetes learning curve.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to navigate the Kubernetes learning curve) -[#]: via: (https://opensource.com/article/19/6/kubernetes-learning-curve) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux/users/fatherlinux) - -How to navigate the Kubernetes learning curve -====== -Kubernetes is like a dump truck. It's elegant for solving the problems -it's designed for, but you have to master the learning curve first. -![Dump truck rounding a turn in the road][1] - -In _[Kubernetes is a dump truck][2]_, I talked about how a tool can be elegant for the problem it was designed to solve—once you learn how to use it. In part 2 of this series, I'm going a little deeper into the Kubernetes' learning curve. - -The journey to [Kubernetes][3] often starts with running one container on one host. You quickly discover how easy it is to run new versions of software, how easy it is to share that software with others, and how easy it is for those users to run it the way you intended. - -But then you need - - * Two containers - * Two hosts - - - -It's easy to fire up one web server on port 80 with a container, but what happens when you need to fire up a second container on port 80? What happens when you are building a production environment and you need the containerized web server to fail over to a second host? The short answer, in either case, is you have to move into container orchestration. - -Inevitably, when you start to handle the two containers or two hosts problem, you'll introduce complexity and, hence, a learning curve. The two services (a more generalized version of a container) / two hosts problem has been around for a long time and has always introduced complexity. - -Historically, this would have involved load balancers, clustering software, and even clustered file systems. Configuration logic for every service is embedded in every system (load balancers, cluster software, and file systems). Running 60 or 70 services, clustered, behind load balancers is complex. Adding another new service is also complex. Worse, decommissioning a service is a nightmare. Thinking back on my days of troubleshooting production MySQL and Apache servers with logic embedded in three, four, or five different places, all in different formats, still makes my head hurt. - -Kubernetes elegantly solves all these problems with one piece of software: - - 1. Two services (containers): Check - 2. Two servers (high availability): Check - 3. Single source of configuration: Check - 4. Standard configuration format: Check - 5. Networking: Check - 6. Storage: Check - 7. Dependencies (what services talk to what databases): Check - 8. Easy provisioning: Check - 9. Easy de-provisioning: Check (perhaps Kubernetes' _most_ powerful piece) - - - -Wait, it's starting to look like Kubernetes is pretty elegant and pretty powerful. _It is._ You can model an entire miniature IT universe in Kubernetes. - -![Kubernetes business model][4] - -So yes, there is a learning curve when starting to use a giant dump truck (or any professional equipment). There's also a learning curve to use Kubernetes, but it's worth it because you can solve so many problems with one tool. If you are apprehensive about the learning curve, think through all the underlying networking, storage, and security problems in IT infrastructure and envision their solutions today—they're not easier. Especially when you introduce more and more services, faster and faster. Velocity is the goal nowadays, so give special consideration to the provisioning and de-provisioning problem. - -But don't confuse the learning curve for building or equipping Kubernetes (picking the right mud flaps for your dump truck can be hard, LOL) with the learning curve for using it. Learning to build your own Kubernetes with so many different choices at so many different layers (container engine, logging, monitoring, service mesh, storage, networking), and then maintaining updated selections of each component every six months, might not be worth the investment—but learning to use it is absolutely worth it. - -I eat, sleep, and breathe Kubernetes and containers every day, and even I struggle to keep track of all the major new projects announced literally almost every day. But there isn't a day that I'm not excited about the operational benefits of having a single tool to model an entire IT miniverse. Also, remember Kubernetes has matured a ton and will continue to do so. Like Linux and OpenStack before it, the interfaces and de facto projects at each layer will mature and become easier to select. - -In the third article in this series, I'll dig into what you need to know before you drive your Kubernetes "truck." - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/kubernetes-learning-curve - -作者:[Scott McCarty][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/fatherlinux/users/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dumptruck_car_vehicle_storage_container_road.jpg?itok=TWK0CbX_ (Dump truck rounding a turn in the road) -[2]: https://opensource.com/article/19/6/kubernetes-dump-truck -[3]: https://kubernetes.io/ -[4]: https://opensource.com/sites/default/files/uploads/developer_native_experience_-_mapped_to_traditional_1.png (Kubernetes business model) diff --git a/translated/tech/20190605 How to navigate the Kubernetes learning curve.md b/translated/tech/20190605 How to navigate the Kubernetes learning curve.md new file mode 100644 index 0000000000..d94a6ac25b --- /dev/null +++ b/translated/tech/20190605 How to navigate the Kubernetes learning curve.md @@ -0,0 +1,72 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to navigate the Kubernetes learning curve) +[#]: via: (https://opensource.com/article/19/6/kubernetes-learning-curve) +[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux/users/fatherlinux) + +如何跨越 Kubernetes 学习曲线 +====== + +Kubernetes 就像一辆翻斗车。它非常适合解决它所针对的问题,但你必须首先掌握其学习曲线。 + +![Dump truck rounding a turn in the road][1] + +在[为什么说 Kubernetes 是一辆翻斗车][2]中,我谈到了一个工具如何优雅地解决它设计要解决的问题 —— 只是你要学会如何使用它。在本系列的第 2 部分中,我将更深入地了解 Kubernetes 的学习曲线。 + +[Kubernetes][3] 的旅程通常从在一台主机上运行一个容器开始。你可以快速了解运行新版本软件的难易程度,与其他人共享该软件的难易程度,以及对于这些用户按照你预期方式运行它的难易程度。 + +但是你需要 + +* 两个容器 +* 两个主机 + +使用容器在端口 80 上启动一个 Web 服务器很容易,但是当你需要在端口 80 上启动第二个容器时会发生什么?当你构建生产环境时,需要容器化 Web 服务器在发生故障时转移到第二个主机时会发生什么?在任何一种情况下,简而言之就是你必须采用容器编排。 + +当你开始处理两个容器或两个主机问题时,你将不可避免地引入复杂性,因此,这就是一个学习曲线。这个两个服务(容器的更通用说法)或两个主机的问题已经存在了很长时间,并且带来了复杂性。 + +从历史上看,这将涉及负载均衡、集群软件甚至集群文件系统。每个服务的配置逻辑都嵌入在每个系统(负载均衡、集群软件和文件系统)中。在负载平衡器后运行 60 或 70 个集群的服务是复杂的。添加另一个新服务也很复杂。更糟糕的是,撤下服务简直是一场噩梦。回想起我对生产环境中的 MySQL 和 Apache 服务器进行故障排除的日子,这些服务器的逻辑嵌入在三、四个或五个不同的地方,所有这些都采用不同的格式,让我头疼不已。 + +Kubernetes 使用一个软件优雅地解决了所有这些问题: + +1. 两项服务(容器):检查 +2. 两台服务器(高可用性):检查 +3. 单一配置来源:检查 +4. 标准配置格式:检查 +5. 网络:检查 +6. 储存:检查 +7. 依赖关系(什么服务与哪些数据库对应):检查 +8. 易于配置:检查 +9. 轻松取消配置:检查(也许是 Kubernetes **最**强大的部分) + +等等,初看起来 Kubernetes 非常优雅、非常强大。 **没错。**你可以在 Kubernetes 中建模整个一个微型 IT 世界。 + +![Kubernetes business model][4] + +所以,是的,就像开始使用巨型翻斗车(或任何专业设备)时,有一个学习曲线。使用 Kubernetes 还有一个学习曲线,但它值得,因为你可以用一个工具解决这么多问题。如果你对学习曲线感到担忧,请仔细考虑 IT 基础架构中的所有底层网络、存储和安全问题,并设想今天的解决方案 —— 这并不容易。特别是当你越来越快引入越来越多的服务时。速度是当今的目标,因此要特别考虑配置和取消配置问题。 + +但是,不要混淆了建造或配置 Kubernetes 的学习曲线(为你的翻斗车挑选合适的挡泥板可能很难,LOL)和使用它的学习曲线。学习用如此多的不同层次(容器引擎、日志记录、监控、服务网格、存储、网络)技术来建立自己的 Kubernetes 有很多不同的选择,以及每六个月维护每个组件的更新选择,这可能不值得投资 —— 但学会使用它绝对是值得的。 + +我每天都与 Kubernetes 和容器泡在一起,即使这样我都很难跟踪几乎每天都在宣布的所有重大新项目。 但是,每一天我都对使用单一工具来模拟整个 IT 多方面的运营优势感到兴奋。此外,记住 Kubernetes 已经成熟了很多,并将继续这样做。与之前的 Linux 和 OpenStack 一样,每一层的接口和事实上的项目都将成熟并变得更容易选择。 + +在本系列的第三篇文章中,我将深入挖掘你在驾驶 Kubernetes “卡车”之前需要了解的内容。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/kubernetes-learning-curve + +作者:[Scott McCarty][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/fatherlinux/users/fatherlinux +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/dumptruck_car_vehicle_storage_container_road.jpg?itok=TWK0CbX_ (Dump truck rounding a turn in the road) +[2]: https://linux.cn/article-11011-1.html +[3]: https://kubernetes.io/ +[4]: https://opensource.com/sites/default/files/uploads/developer_native_experience_-_mapped_to_traditional_1.png (Kubernetes business model) From da31560891285eb9b53d37ca91d41690fabab427 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 13:15:10 +0800 Subject: [PATCH 169/336] PRF:20190605 How to navigate the Kubernetes learning curve.md @wxy --- ... navigate the Kubernetes learning curve.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/translated/tech/20190605 How to navigate the Kubernetes learning curve.md b/translated/tech/20190605 How to navigate the Kubernetes learning curve.md index d94a6ac25b..41da083d86 100644 --- a/translated/tech/20190605 How to navigate the Kubernetes learning curve.md +++ b/translated/tech/20190605 How to navigate the Kubernetes learning curve.md @@ -10,46 +10,46 @@ 如何跨越 Kubernetes 学习曲线 ====== -Kubernetes 就像一辆翻斗车。它非常适合解决它所针对的问题,但你必须首先掌握其学习曲线。 +> Kubernetes 就像一辆翻斗车。它非常适合解决它所针对的问题,但你必须首先掌握其学习曲线。 -![Dump truck rounding a turn in the road][1] +![](https://img.linux.net.cn/data/attachment/album/201906/28/131501h8vydvd4tyx5gz5t.jpg) -在[为什么说 Kubernetes 是一辆翻斗车][2]中,我谈到了一个工具如何优雅地解决它设计要解决的问题 —— 只是你要学会如何使用它。在本系列的第 2 部分中,我将更深入地了解 Kubernetes 的学习曲线。 +在[为什么说 Kubernetes 是一辆翻斗车][2]中,我谈到了一个工具如何优雅地解决它所设计用来解决的问题 —— 只是你要学会如何使用它。在本系列的第 2 部分中,我将更深入地了解 Kubernetes 的学习曲线。 -[Kubernetes][3] 的旅程通常从在一台主机上运行一个容器开始。你可以快速了解运行新版本软件的难易程度,与其他人共享该软件的难易程度,以及对于这些用户按照你预期方式运行它的难易程度。 +[Kubernetes][3] 的旅程通常从在一台主机上运行一个容器开始。你可以快速了解运行新版本软件的难易程度,与其他人分享该软件的难易程度,以及对于这些用户按照你预期方式运行它的难易程度。 -但是你需要 +但是你需要: * 两个容器 * 两个主机 -使用容器在端口 80 上启动一个 Web 服务器很容易,但是当你需要在端口 80 上启动第二个容器时会发生什么?当你构建生产环境时,需要容器化 Web 服务器在发生故障时转移到第二个主机时会发生什么?在任何一种情况下,简而言之就是你必须采用容器编排。 +使用容器在端口 80 上启动一个 Web 服务器很容易,但是当你需要在端口 80 上启动第二个容器时会发生什么?当你构建生产环境时,需要容器化 Web 服务器在发生故障时转移到第二个主机时会发生什么?在任何一种情况下,这个答案简单来说就是你必须采用容器编排。 -当你开始处理两个容器或两个主机问题时,你将不可避免地引入复杂性,因此,这就是一个学习曲线。这个两个服务(容器的更通用说法)或两个主机的问题已经存在了很长时间,并且带来了复杂性。 +当你开始处理两个容器或两个主机问题时,你将不可避免地引入了复杂性,因此,这就是一个学习曲线。这个两个服务(容器的更通用说法)或两个主机的问题已经存在了很长时间,并且由此带来了复杂性。 从历史上看,这将涉及负载均衡、集群软件甚至集群文件系统。每个服务的配置逻辑都嵌入在每个系统(负载均衡、集群软件和文件系统)中。在负载平衡器后运行 60 或 70 个集群的服务是复杂的。添加另一个新服务也很复杂。更糟糕的是,撤下服务简直是一场噩梦。回想起我对生产环境中的 MySQL 和 Apache 服务器进行故障排除的日子,这些服务器的逻辑嵌入在三、四个或五个不同的地方,所有这些都采用不同的格式,让我头疼不已。 Kubernetes 使用一个软件优雅地解决了所有这些问题: -1. 两项服务(容器):检查 -2. 两台服务器(高可用性):检查 -3. 单一配置来源:检查 -4. 标准配置格式:检查 -5. 网络:检查 -6. 储存:检查 -7. 依赖关系(什么服务与哪些数据库对应):检查 -8. 易于配置:检查 -9. 轻松取消配置:检查(也许是 Kubernetes **最**强大的部分) +1. 两项服务(容器):✅ +2. 两台服务器(高可用性):✅ +3. 单一配置来源:✅ +4. 标准配置格式:✅ +5. 网络:✅ +6. 储存:✅ +7. 依赖关系(什么服务与哪些数据库对应):✅ +8. 易于配置:✅ +9. 轻松取消配置:✅(也许是 Kubernetes **最**强大的部分) -等等,初看起来 Kubernetes 非常优雅、非常强大。 **没错。**你可以在 Kubernetes 中建模整个一个微型 IT 世界。 +等等,这样初看起来 Kubernetes 非常优雅、非常强大。 **没错。**你可以在 Kubernetes 中建模一整个微型 IT 世界。 ![Kubernetes business model][4] -所以,是的,就像开始使用巨型翻斗车(或任何专业设备)时,有一个学习曲线。使用 Kubernetes 还有一个学习曲线,但它值得,因为你可以用一个工具解决这么多问题。如果你对学习曲线感到担忧,请仔细考虑 IT 基础架构中的所有底层网络、存储和安全问题,并设想今天的解决方案 —— 这并不容易。特别是当你越来越快引入越来越多的服务时。速度是当今的目标,因此要特别考虑配置和取消配置问题。 +所以,是的,就像开始使用巨型翻斗车(或任何专业设备)时,有一个学习曲线。使用 Kubernetes 还有一个学习曲线,但它值得,因为你可以用一个工具解决这么多问题。如果你对学习曲线感到担忧,请仔细考虑 IT 基础架构中的所有底层网络、存储和安全问题,并设想一下今天的解决方案 —— 这并不容易。特别是当你越来越快地引入越来越多的服务时。速度是当今的目标,因此要特别考虑配置和取消配置问题。 -但是,不要混淆了建造或配置 Kubernetes 的学习曲线(为你的翻斗车挑选合适的挡泥板可能很难,LOL)和使用它的学习曲线。学习用如此多的不同层次(容器引擎、日志记录、监控、服务网格、存储、网络)技术来建立自己的 Kubernetes 有很多不同的选择,以及每六个月维护每个组件的更新选择,这可能不值得投资 —— 但学会使用它绝对是值得的。 +但是,不要混淆了建造或配置 Kubernetes 的学习曲线(为你的翻斗车挑选合适的挡泥板可能很难,LOL)和使用它的学习曲线。学习用如此多的不同层次(容器引擎、日志记录、监控、服务网格、存储、网络)的技术来建立自己的 Kubernetes 有很多不同的选择,还有每六个月维护每个组件的更新选择,这可能不值得投资 —— 但学会使用它绝对是值得的。 -我每天都与 Kubernetes 和容器泡在一起,即使这样我都很难跟踪几乎每天都在宣布的所有重大新项目。 但是,每一天我都对使用单一工具来模拟整个 IT 多方面的运营优势感到兴奋。此外,记住 Kubernetes 已经成熟了很多,并将继续这样做。与之前的 Linux 和 OpenStack 一样,每一层的接口和事实上的项目都将成熟并变得更容易选择。 +我每天都与 Kubernetes 和容器泡在一起,即使这样我都很难跟踪几乎每天都在宣布的所有重大新项目。 但是,每一天我都对使用单一工具来模拟整个 IT 多个方面的运营优势感到兴奋。此外,记住 Kubernetes 已经成熟了很多,并将继续发展下去。与之前的 Linux 和 OpenStack 一样,每一层的接口和事实上的项目都将成熟并变得更容易选择。 在本系列的第三篇文章中,我将深入挖掘你在驾驶 Kubernetes “卡车”之前需要了解的内容。 @@ -60,7 +60,7 @@ via: https://opensource.com/article/19/6/kubernetes-learning-curve 作者:[Scott McCarty][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 bc7fb994bfc0cc8bd1282699002a63e4fa668be7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 13:15:59 +0800 Subject: [PATCH 170/336] PUB:20190605 How to navigate the Kubernetes learning curve.md @wxy https://linux.cn/article-11026-1.html --- ...0190605 How to navigate the Kubernetes learning curve.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/tech => published}/20190605 How to navigate the Kubernetes learning curve.md (98%) diff --git a/translated/tech/20190605 How to navigate the Kubernetes learning curve.md b/published/20190605 How to navigate the Kubernetes learning curve.md similarity index 98% rename from translated/tech/20190605 How to navigate the Kubernetes learning curve.md rename to published/20190605 How to navigate the Kubernetes learning curve.md index 41da083d86..74c3187b50 100644 --- a/translated/tech/20190605 How to navigate the Kubernetes learning curve.md +++ b/published/20190605 How to navigate the Kubernetes learning curve.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11026-1.html) [#]: subject: (How to navigate the Kubernetes learning curve) [#]: via: (https://opensource.com/article/19/6/kubernetes-learning-curve) [#]: author: (Scott McCarty https://opensource.com/users/fatherlinux/users/fatherlinux) From 0849b9e41a3742f5d8e45f19870f31b9b195c3e4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 13:37:01 +0800 Subject: [PATCH 171/336] PRF:20190610 Applications for writing Markdown.md @murphyzhao --- ...90610 Applications for writing Markdown.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translated/tech/20190610 Applications for writing Markdown.md b/translated/tech/20190610 Applications for writing Markdown.md index c11ce19b1c..92ea8c692f 100644 --- a/translated/tech/20190610 Applications for writing Markdown.md +++ b/translated/tech/20190610 Applications for writing Markdown.md @@ -1,30 +1,30 @@ [#]: collector: (lujun9972) [#]: translator: (murphyzhao) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Applications for writing Markdown) [#]: via: (https://fedoramagazine.org/applications-for-writing-markdown/) [#]: author: (Ryan Lerch https://fedoramagazine.org/author/ryanlerch/) -撰写 Markdown 的软件 +三个在 Fedora 平台上撰写 Markdown 的软件 ====== ![][1] -Markdown 是一种轻量级标记语言,添加格式后,以纯文本格式查看时依然保持可读性。Markdown(和 Markdown 衍生物)被广泛用作 GitHub 和 pagure 等服务上文档标记的主要形式。根据设计,可以在文本编辑器中轻松创建和编辑 Markdown,但是,有许多编辑器可以提供 Markdown 标记的格式化预览,或提供 markdown 语法高亮显示。 +Markdown 是一种轻量级标记语言,可以在添加格式后以纯文本格式查看时依然保持可读性。Markdown(和 Markdown 衍生物)被广泛用作 GitHub 和 pagure 等服务上格式化文档的主要形式。根据其设计,可以在文本编辑器中轻松创建和编辑 Markdown,但是,有许多编辑器可以提供 Markdown 标记的格式化预览,或提供 Markdown 语法高亮显示。 本文介绍了针对 Fedora 平台的 3 个桌面应用程序,以帮助编辑 Markdown。 ### UberWriter -[UberWriter][2] 是一个小巧的 Markdown 编辑器和预览器,允许您编辑文本,并预览渲染的文档。 +[UberWriter][2] 是一个小巧的 Markdown 编辑器和预览器,允许你以文本方式编辑,并预览渲染的文档。 ![][3] -编辑器本身具有内置的内联预览,因此标记为粗体的文本以粗体显示。编辑器还提供图像、公式、脚注等标记的内联预览。按住 Ctrl 键单击其中的一个标记可以即时预览要显示的元素。 +该编辑器本身具有内置的内联预览,因此标记为粗体的文本以粗体显示。编辑器还提供图像、公式、脚注等标记的内联预览。按住 `Ctrl` 键单击其中的一个标记可以即时预览要显示的元素。 -除了编辑器功能外,UberWriter 还具有全屏模式和聚焦模式,有助于最大限度地减少干扰。焦点模式将以灰色显示除当前段落以外的所有内容,以帮助您专注于文档中当前元素。 +除了编辑器功能外,UberWriter 还具有全屏模式和聚焦模式,有助于最大限度地减少干扰。焦点模式将以灰色显示除当前段落以外的所有内容,以帮助你专注于文档中当前元素。 从第三方 Flathub 存储库安装 UberWriter 到 Fedora 平台。在将系统[设置为从 Flathub 安装][4]后,可以直接从 Software 应用程序中安装它。 @@ -34,13 +34,13 @@ Marker 是一个 Markdown 编辑器,它提供了一个简单的文本编辑器 ![][5] -此外,Marker 允许您以各种格式导出文档,包括 HTML、PDF 和开放文档格式(ODF)。 +此外,Marker 允许你以各种格式导出文档,包括 HTML、PDF 和开放文档格式(ODF)。 从第三方 Flathub 存储库安装 Marker 到 Fedora 平台。在将系统[设置为从 Flathub 安装][4]后,可以直接从 Software 应用程序中安装它。 ### Ghostwriter -以前的编辑更专注于最小的用户体验,Ghostwriter 提供了更多的功能和选项。Ghostwriter 提供了一个文本编辑器,当您以 Markdown 格式书写时,编辑器将 Markdown 部分样式化。粗体标记文本显示为粗体,标题标记显示为较大的字体,以帮助编写 Markdown 标记。 +以前的编辑更专注于最小的用户体验,Ghostwriter 提供了更多的功能和选项。Ghostwriter 提供了一个文本编辑器,当你以 Markdown 格式书写时,编辑器将 Markdown 部分样式化。粗体标记文本显示为粗体,标题标记显示为较大的字体,以帮助编写 Markdown 标记。 ![][6] @@ -60,8 +60,8 @@ via: https://fedoramagazine.org/applications-for-writing-markdown/ 作者:[Ryan Lerch][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[murphyzhao](https://github.com/murphyzhao) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From e1496b8e3231d9624521315ad47553c0f7c90b09 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 28 Jun 2019 13:40:29 +0800 Subject: [PATCH 172/336] PUB:20190610 Applications for writing Markdown.md @murphyzhao https://linux.cn/article-11027-1.html --- .../20190610 Applications for writing Markdown.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190610 Applications for writing Markdown.md (98%) diff --git a/translated/tech/20190610 Applications for writing Markdown.md b/published/20190610 Applications for writing Markdown.md similarity index 98% rename from translated/tech/20190610 Applications for writing Markdown.md rename to published/20190610 Applications for writing Markdown.md index 92ea8c692f..0c7477e7fb 100644 --- a/translated/tech/20190610 Applications for writing Markdown.md +++ b/published/20190610 Applications for writing Markdown.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (murphyzhao) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11027-1.html) [#]: subject: (Applications for writing Markdown) [#]: via: (https://fedoramagazine.org/applications-for-writing-markdown/) [#]: author: (Ryan Lerch https://fedoramagazine.org/author/ryanlerch/) From d6b1a14d73eae7964e068f60007c39d9f252fc07 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sat, 8 Jun 2019 15:17:43 +0800 Subject: [PATCH 173/336] =?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 --- ...ith Ansible- Configure desktop settings.md | 198 ------------------ ...ith Ansible- Configure desktop settings.md | 193 +++++++++++++++++ 2 files changed, 193 insertions(+), 198 deletions(-) delete mode 100644 sources/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md create mode 100644 translated/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md diff --git a/sources/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md b/sources/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md deleted file mode 100644 index ed85b172af..0000000000 --- a/sources/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md +++ /dev/null @@ -1,198 +0,0 @@ -Translating by MjSeven - -Manage your workstation with Ansible: Configure desktop settings -====== - -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cube_innovation_process_block_container.png?itok=vkPYmSRQ) - -In the [first article][1] of this series on using Ansible to configure a workstation, we set up a repository and configured a few basic things. In the [second part][2], we automated Ansible to apply settings automatically when changes are made to our repository. In this third (and final) article, we'll use Ansible to configure GNOME desktop settings. - -This configuration will work only on newer distributions (such as Ubuntu 18.04, which I'll use in my examples). Older versions of Ubuntu will not work, as they ship with a version of `python-psutils` that is too old for Ansible's `dconf` module to work properly. If you're using a newer version of your Linux distribution, you should have no issues. - -Before you begin, make sure you've worked through parts one and two of this series, as part three builds upon that groundwork. If you haven't already, download the GitHub repository you've been using in those first two articles. We'll add a few more features to it. - -### Set a wallpaper and lock screen - -First, we'll create a taskbook to hold our GNOME settings. In the root of the repository, you should have a file named `local.yml`. Add the following line to it: -``` -- include: tasks/gnome.yml - -``` - -The entire file should now look like this: -``` -- hosts: localhost - -  become: true - -  pre_tasks: - -    - name: update repositories - -      apt: update_cache=yes - -      changed_when: False - - - -  tasks: - -    - include: tasks/users.yml - -    - include: tasks/cron.yml - -    - include: tasks/packages.yml - -    - include: tasks/gnome.yml - -``` - -Basically, this added a reference to a file named `gnome.yml` that will be stored in the `tasks` directory inside the repository. We haven't created this file yet, so let's do that now. Create `gnome.yml` file in the `tasks` directory, and place the following content inside: -``` -- name: Install python-psutil package - -  apt: name=python-psutil - - - -- name: Copy wallpaper file - -  copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600 - - - -- name: Set GNOME Wallpaper - -  become_user: jay - -  dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'" - -``` - -Note that this code refers to my username (`jay`) several times, so make sure to replace every occurrence of `jay` with the username you use on your machine. Also, if you're not using Ubuntu 18.04 (as I am), you'll have to change the `apt` line to match the package manager for your chosen distribution and to confirm the name of the `python-psutil` package for your distribution, as it may be different. - -`wallpaper.jpg` inside the `files` directory. This file must exist or the Ansible configuration will fail. Inside the `tasks` directory, create a subdirectory named `files`. Find a wallpaper image you like, name it `wallpaper.jpg`, and place it inside the `files` directory. If the file is a PNG image instead of a JPG, change the file extension in both the code and in the repository. If you're not feeling creative, I have an example wallpaper file in the - -In the example tasks, I referred to a file namedinside thedirectory. This file must exist or the Ansible configuration will fail. Inside thedirectory, create a subdirectory named. Find a wallpaper image you like, name it, and place it inside thedirectory. If the file is a PNG image instead of a JPG, change the file extension in both the code and in the repository. If you're not feeling creative, I have an example wallpaper file in the [GitHub repository][3] for this article series that you can use. - -Once you've made all these changes, commit everything to your GitHub repository, and push those changes. To recap, you should've completed the following: - - * Modified the `local.yml` file to refer to the `tasks/gnome.yml` playbook - * Created the `tasks/gnome.yml` playbook with the content mentioned above - * Created a `files` directory inside the `tasks` directory, with an image file named `wallpaper.jpg` (or whatever you chose to call it). - - - -Once you've completed those steps and pushed your changes back to the repository, the configuration should be automatically applied during its next scheduled run. (You may recall that we automated this in the previous article.) If you're in a hurry, you can apply the configuration immediately with the following command: -``` -sudo ansible-pull -U https://github.com//ansible.git - -``` - -If everything ran correctly, you should see your new wallpaper. - -Let's take a moment to go through what the new GNOME taskbook does. First, we added a play to install the `python-psutil` package. If we don't add this, we can't use the `dconf` module, since it requires this package to be installed before we can modify GNOME settings. Next, we used the `copy` module to copy the wallpaper file to our `home` directory, and we named the resulting file starting with a period to hide it. If you'd prefer not to have this file in the root of your `home` directory, you can always instruct this section to copy it somewhere else—it will still work as long as you refer to it at the correct place. In the next play, we used the `dconf` module to change GNOME settings. In this case, we adjusted the `/org/gnome/desktop/background/picture-uri` key and set it equal to `file:///home/jay/.wallpaper.jpg`. Note the quotes in this section of the playbook—you must always use two single-quotes in `dconf` values, and you must also include double-quotes if the value is a string. - -Now, let's take our configuration a step further and apply a background to the lock screen. Here's the GNOME taskbook again, but with two additional plays added: -``` -- name: Install python-psutil package - -  apt: name=python-psutil - - - -- name: Copy wallpaper file - -  copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600 - - - -- name: Set GNOME wallpaper - -  dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'" - - - -- name: Copy lockscreenfile - -  copy: src=files/lockscreen.jpg dest=/home/jay/.lockscreen.jpg owner=jay group=jay mode=600 - - - -- name: Set lock screen background - -  become_user: jay - -  dconf: key="/org/gnome/desktop/screensaver/picture-uri" value="'file:///home/jay/.lockscreen.jpg'" - -``` - -As you can see, we're pretty much doing the same thing as we did with the wallpaper. We added two additional tasks, one to copy the lock screen image and place it in our `home` directory, and another to apply the setting to GNOME so it will be used. Again, be sure to change your username from `jay` and also name your desired lock screen picture `lockscreen.jpg` and copy it to the `files` directory. Once you've committed these changes to your repository, the new lock screen should be applied during the next scheduled Ansible run. - -### Apply a new desktop theme - -Setting the wallpaper and lock screen background is cool and all, but let's go even further and apply a desktop theme. First, let's add an instruction to our taskbook to install the package for the `arc` theme. Add the following code to the beginning of the GNOME taskbook: -``` -- name: Install arc theme - -  apt: name=arc-theme - -``` - -Then, at the bottom, add the following play: -``` -- name: Set GTK theme - -  become_user: jay - -  dconf: key="/org/gnome/desktop/interface/gtk-theme" value="'Arc'" - -``` - -Did you see GNOME's GTK theme change right before your eyes? We added a play to install the `arc-theme` package via the `apt` module and another play to apply this theme to GNOME. - -### Make other customizations - -Now that you've changed some GNOME settings, feel free to add additional customizations on your own. Any setting you can tweak in GNOME can be automated this way; setting the wallpapers and the theme were just a few examples. You may be wondering how to find the settings that you want to change. Here's a trick that works for me. - -First, take a snapshot of ALL your current `dconf` settings by running the following command on the machine you're managing: -``` -dconf dump / > before.txt - -``` - -This command exports all your current changes to a file named `before.txt`. Next, manually change the setting you want to automate, and capture the `dconf` settings again: -``` -dconf dump / > after.txt - -``` - -Now, you can use the `diff` command to see what's different between the two files: -``` -diff before.txt after.txt - -``` - -This should give you a list of keys that changed. While it's true that changing settings manually defeats the purpose of automation, what you're essentially doing is capturing the keys that change when you update your preferred settings, which then allows you to create Ansible plays to modify those settings so you'll never need to touch those settings again. If you ever need to restore your machine, your Ansible repository will take care of each and every one of your customizations. If you have multiple machines, or even a fleet of workstations, you only have to manually make the change once, and all other workstations will have the new settings applied and be completely in sync. - -### Wrapping up - -If you've followed along with this series, you should know how to set up Ansible to automate your workstation. These examples offer a useful baseline, and you can use the syntax and examples to make additional customizations. As you go along, you can continue to add new modifications, which will make your Ansible configuration grow over time. - -I've used Ansible in this way to automate everything, including my user account and password; configuration files for Vim, tmux, etc.; desktop packages; SSH settings; SSH keys; and basically everything I could ever want to customize. Using this series as a starting point will pave the way for you to completely automate your workstations. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/18/5/manage-your-workstation-ansible-part-3 - -作者:[Jay LaCroix][a] -选题:[lujun9972](https://github.com/lujun9972) -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://opensource.com/users/jlacroix -[1]:https://opensource.com/article/18/3/manage-workstation-ansible -[2]:https://opensource.com/article/18/3/manage-your-workstation-configuration-ansible-part-2 -[3]:https://github.com/jlacroix82/ansible_article.git diff --git a/translated/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md b/translated/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md new file mode 100644 index 0000000000..8989aa0a5a --- /dev/null +++ b/translated/tech/20180529 Manage your workstation with Ansible- Configure desktop settings.md @@ -0,0 +1,193 @@ +使用 Ansible 管理工作站:配置桌面设置 +====== + +![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cube_innovation_process_block_container.png?itok=vkPYmSRQ) + +在本系列关于使用 Ansible 配置工作站的[第一篇文章][1]中,我们设置了一个仓库并配置了一些基本的东西。在[第二篇文章][2]中,我们配置了 Ansible 以使其在对仓库进行更改时自动应用设置。在第三篇(也是最后一篇)文章中,我们将使用 Ansible 配置 GNOME 桌面设置。 + +此配置只适用于较新的发行版(例如我将在示例中使用的 Ubuntu 18.04)。较旧版本的 Ubuntu 将无法运行,因为它们附带了一个老版本的 `python-psutils`,对于 Ansible 的 `dconf` 模块无法正常工作。如果你使用的是较新版本的 Linux 发行版,则应该没有问题。 + +在开始之前,确保你已经完成了本系列的第一部分和第二部分,因为第三部分建立在此基础之上的。如果还没有,下载前两篇文章中一直使用的 GitHub 仓库,我们将为其添加更多功能。 + +### 设置壁纸和锁屏 + +首先,我们将创建一个任务手册来保存我们的 GNOME 设置。在仓库的根目录中,应该有一个名为 `local.yml` 的文件,添加以下行: +``` +- include: tasks/gnome.yml + +``` + +整个文件应如下所示: +``` +- hosts: localhost + +  become: true + +  pre_tasks: + +    - name: update repositories + +      apt: update_cache=yes + +      changed_when: False + + + +  tasks: + +    - include: tasks/users.yml + +    - include: tasks/cron.yml + +    - include: tasks/packages.yml + +    - include: tasks/gnome.yml + +``` + +基本上,这添加了对名为 `gnome.yml` 文件的引用,它将存储在仓库内的 `tasks` 目录中。我们还没有创建这个文件,现在就来创建它。在 `tasks` 目录中创建 `gnome.yml` 文件,并将以下内容放入: +``` +- name: Install python-psutil package + +  apt: name=python-psutil + + +- name: Copy wallpaper file + +  copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600 + + + +- name: Set GNOME Wallpaper + +  become_user: jay + +  dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'" + +``` + +注意,此代码多次引用我的用户名(`jay`),因此确保使用你机器上的用户名替换每次出现的 `jay`。另外,如果你没有像我一样使用 Ubuntu 18.04,你将不得不更改 `apt` 一行来匹配你所选择的发行版的包管理器,并确认 `python-psutil` 包的名称,因为它可能有所不同。 + + +在示例任务中,我引用了 `file` 目录下的 `wallpaper.jpg` 文件,此文件必须存在,否则 Ansible 配置将失败。在 `tasks` 目录中,创建一个名为 `files` 的子目录。找到你喜欢的壁纸图片,将其命名为 `wallpaper.jpg`,然后把它放在 `files` 目录中。如果文件是 PNG 图像而不是 JPG,在代码和仓库中更改文件扩展名。如果你觉得没有创意,我在 [GitHub 仓库][3] 中有一个示例壁纸文件,你可以使用它。 + +完成所有这些更改后,将内容提交到 GitHub 仓库,并推送这些更改。总结一下,你应该完成以下工作: + + * 修改 `local.yml` 文件以引用 `tasks/gnome.yml` + * 使用上面提到的内容创建 `tasks/gnome.yml` + * 在 `tasks` 目录中创建一个 `files` 目录,其中有一个名为 `wallpaper.jpg` 的图像文件(或者你选择的任何名称)。 + + +完成这些步骤并将更改推送到仓库后,配置应该在下次计划运行期间自动应用。(你可能还记得我们在上一篇文章中对此进行了自动化。)如果你赶时间,可以使用以下命令立即应用配置: +``` +sudo ansible-pull -U https://github.com//ansible.git + +``` + +如果一切正常,你应该可以看到你的新壁纸。 + +让我们花一点时间来了解新 GNOME 任务手册的功能。首先,我们添加了一个计划来安装 `python-psutil` 包。如果不添加它,我们就不能使用 `dconf` 模块,因为它需要在修改 GNOME 设置之前安装这个包。接下来,我们使用 `copy` 模块将壁纸文件复制到我们的 `home` 目录,并将生成的文件命名为以点开头的隐藏文件。如果你不希望此文件放在 `home` 目录的根目录中,你可以随时指示此部分将其复制到其它位置 - 只要你在正确的位置引用它,它仍然可以工作。在下一个计划中,我们使用 `dconf` 模块来更改 GNOME 设置。在这种情况下,我们调整了 `/org/gnome/desktop/background/picture-uri` 键并将其设置为 `file:///home/jay/.wallpaper.jpg`。注意本节中的引号 - 你必须在 `dconf` 值中使用两个单引号,如果值是一个字符串,还必须包含双引号。 + +现在,让我们进一步进行配置,并将背景应用于锁屏。这是 GNOME 任务手册,但增加了两个额外的计划: +``` +- name: Install python-psutil package + +  apt: name=python-psutil + + + +- name: Copy wallpaper file + +  copy: src=files/wallpaper.jpg dest=/home/jay/.wallpaper.jpg owner=jay group=jay mode=600 + + + +- name: Set GNOME wallpaper + +  dconf: key="/org/gnome/desktop/background/picture-uri" value="'file:///home/jay/.wallpaper.jpg'" + + + +- name: Copy lockscreenfile + +  copy: src=files/lockscreen.jpg dest=/home/jay/.lockscreen.jpg owner=jay group=jay mode=600 + + + +- name: Set lock screen background + +  become_user: jay + +  dconf: key="/org/gnome/desktop/screensaver/picture-uri" value="'file:///home/jay/.lockscreen.jpg'" + +``` + +正如你所看到的,我们做的事情和设置壁纸时差不多。我们添加了两个额外的任务,一个是复制锁屏图像并将其放在我们的 `home` 目录中,另一个是将设置应用于 GNOME 以便使用它。同样,确保将 `jay` 更改为你的用户名,并命名你想要的锁屏图片 `lockscreen.jpg`,并将其复制到 `files` 目录。将这些更改提交到仓库后,在下一次计划的 Ansible 运行期间就会应用新的锁屏。 + +### 应用新的桌面主题 + +设置壁纸和锁屏背景很酷,但是让我们更进一步来应用桌面主题。首先,让我们在我们的任务手册中添加一条指令来安装 `arc` 主题的包。将以下代码添加到 GNOME 任务手册的开头: +``` +- name: Install arc theme + +  apt: name=arc-theme + +``` + +然后,在底部,添加以下任务: +``` +- name: Set GTK theme + +  become_user: jay + +  dconf: key="/org/gnome/desktop/interface/gtk-theme" value="'Arc'" + +``` + +你看到 GNOME 的 GTK 主题在你眼前变化了吗?我们添加了一个任务来通过 `apt` 模块安装 `arc-theme` 包,另一个任务将这个主题应用到 GNOME。 + +### 进行其它定制 + +既然你已经更改了一些 GNOME 设置,你可以随意添加其它定制。你在 GNOME 中调整的任何设置都可以通过这种方式自动完成,设置壁纸和主题只是几个例子。你可能想知道如何找到要更改的设置,以下一个适合我的技巧。 + +首先,通过在你管理的计算机上运行以下命令,获取所有当前 `dconf` 设置的快照: +``` +dconf dump / > before.txt + +``` + +此命令将所有当前更改导出到名为 `before.txt` 的文件中。接下来,手动更改要自动化的设置,并再次获取 `dconf` 设置: +``` +dconf dump / > after.txt + +``` + +现在,你可以使用 `diff` 命令查看两个文件之间的不同之处: +``` +diff before.txt after.txt + +``` + +这应该会给你一个已更改键的列表。虽然手动更改设置确实违背了自动化的目的,但你实际上正在做的是获取更新首选设置时更改的键,这允许你创建 Ansible 任务以修改这些设置,这样你就再也不需要碰这些设置了。如果你需要还原机器,Ansible 仓库将负责你的每个定制。如果你有多台计算机,甚至是一组工作站,则只需手动进行一次更改,所有其他工作站都将应用新设置并完全同步。 + +### 最后 + +如果你已经阅读完本系列文章,你应该知道如何设置 Ansible 来自动化工作站。这些示例提供了一个有用的基线,你可以使用语法和示例进行其他定制。随着你的前进,你可以继续添加新的修改,这将使你的 Ansible 配置一直增长。 + +我已经用 Ansible 以这种方式自动化了一切,包括我的用户帐户和密码、Vim、tmux 等配置文件、桌面包、SSH 设置、SSH 密钥,基本上我想要自定义的一切都使用了。以本系列文章作为起点,将为你实现工作站的完全自动化铺平道路。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/18/5/manage-your-workstation-ansible-part-3 + +作者:[Jay LaCroix][a] +选题:[lujun9972](https://github.com/lujun9972 ) +译者:[MjSeven](https://github.com/MjSeven) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://opensource.com/users/jlacroix +[1]:https://opensource.com/article/18/3/manage-workstation-ansible +[2]:https://opensource.com/article/18/3/manage-your-workstation-configuration-ansible-part-2 +[3]:https://github.com/jlacroix82/ansible_article.git From 724732ad46dd2f0fe8deacdc55da82c0676572ff Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Fri, 28 Jun 2019 17:22:15 +0800 Subject: [PATCH 174/336] PRF&PUB:20190111 Top 5 Linux Distributions for Productivity (#14366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * PRF:20190111 Top 5 Linux Distributions for Productivity.md @qfzy1233 恭喜你完成了第一篇翻译贡献! * PUB:20190111 Top 5 Linux Distributions for Productivity.md @qfzy1233 https://linux.cn/article-11028-1.html --- ... 5 Linux Distributions for Productivity.md | 140 +++++++++++++++ ... 5 Linux Distributions for Productivity.md | 169 ------------------ 2 files changed, 140 insertions(+), 169 deletions(-) create mode 100644 published/20190111 Top 5 Linux Distributions for Productivity.md delete mode 100644 translated/tech/20190111 Top 5 Linux Distributions for Productivity.md diff --git a/published/20190111 Top 5 Linux Distributions for Productivity.md b/published/20190111 Top 5 Linux Distributions for Productivity.md new file mode 100644 index 0000000000..57a17925cd --- /dev/null +++ b/published/20190111 Top 5 Linux Distributions for Productivity.md @@ -0,0 +1,140 @@ +[#]: collector: "lujun9972" +[#]: translator: "qfzy1233" +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-11028-1.html" +[#]: subject: "Top 5 Linux Distributions for Productivity" +[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" +[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" + +5 个最具生产力的 Linux 发行版 +====== + +> 如果你正在寻找一个适合开发工作的完美环境,我敢说你找不到比 Pop!_OS 更好的选择。 + +![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) + +必须承认的是,这样的一个热门话题其实很难被总结的话题。为什么呢?首先,Linux 在就是一种有生产力的操作系统。由于它极强的可靠性和稳定的平台,使得完成工作变得很容易。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是日常办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这个问题有多复杂。 + +然而,这并不意味着某些发行版无法更好地配置将底层操作系统呈现为一个有效的平台来完成工作。恰恰相反,许多发行版在偏离生产力这条道路上越走越远,所以你不会意识到你自己处在工作的窘境中,而是继续挖掘自己的潜力在工期结束之前拼命赶上进度。这些 Linux 发行版可以帮助你化繁为简,因此或许可以减少你工作流程中的痛点。 + +让我们来看一下这些发行版并为你找出适合你的最佳选择。为了更具条理,我按照生产力诉求把它们分成了几类。这项任务本身也是一种挑战,因为每个人在生产力提升上的需要是千差万别的。然而,我所关注的是下列的几项: + + * 常规:适于那些只需要有效地完成多项工作的人。 + * 设计:适于那些从事设计创造和图像处理的人。 + * 开发:适于那些使用 Linux 桌面发行版来进行编程工作的人。 + * 运维:适于那些需要一个发行版来促进其执行系统管理任务的人。 + * 教育:适于那些需要桌面发行版可以助力他们在教育领域更高效的人。 + +诚然,有很多很多类别的发行版可供挑选,其中的很多可能用起来十分得心应手,但这五种或许是你最为需要的。 + +### 常规 + +对于常规的生产力诉求来说,你不会找到比 [Ubuntu][1] 更为高效的了。在这个类别中首推 Ubuntu 最主要的原因是因为它实现了桌面操作系统、软件、服务的无缝集成。你可能会问为什么我不选择同类别的 Linux Mint 呢?因为 Ubuntu 现在默认的的桌面环境为 GNOME 桌面,而它拥有 GNOME 许多扩展程序的优势的加成(图 1)。 + +![GNOME Clipboard][3] + +*图 1:运行中的 GNOME 桌面的剪切板管理工具。* + +这些扩展程序在提升生产力方面做了很多努力(所以 Ubuntu 比 Linux Mint 获得了更多的认可)。但是 Ubuntu 不仅仅是装了一个普通的 GNOME 桌面。事实上,他们致力于将它改进的更为轻量化、更为高效、以及用户友好度更高、开箱即用。总而言之,由于 Ubuntu 正确的融合了多种特性,开箱即用,完善的软件支持(仅对工作方面而言),这些特性使它几乎成为了生产力领域最为完美的一个平台。 + +不管你是要写一篇文档,制作一张电子表格,写一个新的软件,开发公司的网站,设计商用的图形,管理一个服务器或是网络,抑或是在你的公司内从事人力资源管理工作,Ubuntu 都可以满足你的需求。Ubuntu 桌面发行版也并不要求你耗费很大的精力才能开始开始开展工作……它直接就能使用(并且工作的十分优秀)。最后,得益于它是基于 Debian 的,使得在 Ubuntu 上安装第三方的软件十分简便。 + +很难不支持这一发行版独占生产力发行版列表的鳌头,尽管 Ubuntu 几乎已经成为几乎所有“某某类顶级发行版”列表的榜首。 + +### 设计 + +如果你正在寻求提升你的平面设计效率,你不能错过 [Fedora 设计套件][5]。这一 Fedora 衍生版是由负责 Fedora 相关的艺术作品的团队亲自操刀制作的。虽然其默认选择的应用程序并不是一个庞大的工具集合,但它所包含的工具都是创建和处理图像专用的。 + +有了 GIMP、Inkscape、Darktable、Krita、Entangle、Blender、Pitivi、Scribus 等应用程序(图 2),你可以找到完成图像编辑工作所需要的一切。但是 Fedora 设计套件并不仅限于此。这个桌面平台还包括一堆教程,涵盖了许多已安装的应用程序。对于任何想要尽可能提高效率的人来说,这将是一些非常有用的信息。不过,我要说的是,GNOME 收藏夹中的教程并没有超乎[此页中][6]链接的内容。 + +![Fedora Design Suite Favorites][8] + +*图 2:Fedora 设计套件收藏夹菜单包含了许多工具,可以让你用于图形设计。* + +那些使用数码相机的用户肯定会喜欢 Entangle 应用程序,它可以让你在电脑上控制单反相机。 + +### 开发 + +几乎所有的 Linux 发行版都是程序员的绝佳平台。然而,有一种特定的发行版脱颖而出,并超越了其他发行版,它将是你见过的用于编程类最有效率的工具之一。这个操作系统来自 [System76][9](LCTT 译注:一家美国的计算机制造商),名为 [Pop!\_OS][10]。Pop!\_OS 是专门为创作者定制的,但不是针对艺术类。相反,Pop!\_OS 面向专门从事开发、编程和软件制作的程序员。如果你需要一个既能完美的胜任开发工作又包含符合使用习惯的桌面操作系统的开发环境,Pop!\_OS 将会是你的不二选择。(图 3) + +可能会让你感到惊讶(考虑到这个操作系统是多么“年轻”)的是 Pop!\_OS 也是你将使用的基于 GNOME 平台的最稳定系统的之一。这意味着 Pop!\_OS 不只是为创作者和创客准备的,也是为任何想要一个可靠的操作系统的人准备的。你可以下载针对你的硬件的专门 ISO 文件,这一点是许多用户十分欣赏的。如果你有英特尔硬件,[下载][10] Intel 或 AMD 的版本。如果你的显卡是 NVIDIA,请下载该特定版本。不管怎样,你肯定会得到针对不同平台进行特殊定制的稳定版本。 + +![Pop!_OS][12] + +*图 3:装有 GNOME 桌面的 Pop!_OS 一览。* + +有趣的是,在 Pop!\_OS 中,你不会找到太多预装的开发工具。你也不会找到 IDE 或许多其他开发工具。但是,你可以在 Pop 商店中中找到所需的所有开发工具。 + +### 运维 + +如果你正在寻找适合系统管理的最具生产力的发行版,[Debian][13] 将会是你的不二之选。为什么这么说呢?因为 Debian 不仅仅拥有无与伦比的可靠性,它也是众多能从苦海中将你解救出来的最好的一个发行版。Debian 是易用性和无限可能性的完美结合。最重要的是,因为它是许多其他发行版的基础,所以可以打赌,如果你需要一个任务的管理工具,那么它一定支持 Debian 系统。当然,我们讨论的是一般的系统管理任务,这意味着大多数时候你需要使用终端窗口 SSH 连接到服务器(图 4),或者在浏览器上使用网络上基于 web 的 GUI 工具。既然如此为什么还要使用一个增加复杂性的桌面呢(比如 Fedora 中的 SELinux 或 openSUSE 中的 YaST)呢?所以,应选择更为简洁易用的那一种。 + +![Debian][15] + +*图 4:在 Debian 系统上通过 SSH 连接到远程服务器。* + +你可以选择你想要的不同的桌面(包括 GNOME、Xfce、KDE、Cinnamon、MATE、LXDE),可以确保你所使用的桌面外观最适合你的工作习惯。 + +### 教育 + +如果你是一名老师或学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来提高生产力。之前,有 Edubuntu 这样的版本。这一版本位列教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。还好,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16](Li-f-e:Linux For Education - 图 5),它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 + +openSUSE:Education-Li-f-e 包含了以下工具: + + * Brain Workshop(大脑工坊):一种基于 dual n-back 模式的大脑训练软件(LCTT 译注:dual n-back 训练是一种科学的智力训练方法,可以改善人的工作记忆和流体智力) + * GCompris:一种针对青少年的教育软件包 + * gElemental:一款元素周期表查看工具 + * iGNUit:一款通用的记忆卡片工具 + * Little Wizard:基于 Pascal 语言的少儿编程开发环境 + * Stellarium:天文模拟器 + * TuxMath:数学入门游戏 + * TuxPaint:一款少儿绘画软件 + * TuxType:一款为少儿准备的打字入门软件 + * wxMaxima:一个跨平台的计算机代数系统 + * Inkscape:矢量图形编辑软件 + * GIMP:图像处理软件(LCTT 译注:被誉为 Linux 上的 PhotoShop) + * Pencil:GUI 模型制作工具 + * Hugin:全景照片拼接及 HDR 效果混合软件 + + +![Education][18] + +*图 5:openSUSE:Education-Li-f-e 发行版拥有大量的工具可以帮你在学校中变得更为高效。* + +同时还集成在 openSUSE:Education-Li-f-e 中的还有 [KIWI-LTSP Server][19] 。KIWI-LTSP 服务器是一个灵活的、经济高效的解决方案,旨在使全世界的学校、企业和组织能够轻松地安装和部署桌面工作站。虽然这可能不会直接帮助学生变得更具生产力,但它肯定会使教育机构在部署供学生使用的桌面时更有效率。有关配置 KIWI-LTSP 的更多信息,请查看 openSUSE [KIWI-LTSP 快速入门指南][20]。 + +-------------------------------------------------------------------------------- + +via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity + +作者:[Jack Wallen][a] +选题:[lujun9972][b] +译者:[qfzy1233](https://github.com/qfzy1233) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.linux.com/users/jlwallen +[b]: https://github.com/lujun9972 +[1]: https://www.ubuntu.com/ +[2]: /files/images/productivity1jpg +[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" +[4]: /licenses/category/used-permission +[5]: https://labs.fedoraproject.org/en/design-suite/ +[6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials +[7]: /files/images/productivity2jpg +[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" +[9]: https://system76.com/ +[10]: https://system76.com/pop +[11]: /files/images/productivity3jpg-0 +[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" +[13]: https://www.debian.org/ +[14]: /files/images/productivity4jpg +[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" +[16]: https://en.opensuse.org/openSUSE:Education-Li-f-e +[17]: /files/images/productivity5jpg +[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" +[19]: https://en.opensuse.org/Portal:KIWI-LTSP +[20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start +[21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux diff --git a/translated/tech/20190111 Top 5 Linux Distributions for Productivity.md b/translated/tech/20190111 Top 5 Linux Distributions for Productivity.md deleted file mode 100644 index 40f5d63791..0000000000 --- a/translated/tech/20190111 Top 5 Linux Distributions for Productivity.md +++ /dev/null @@ -1,169 +0,0 @@ -[#]: collector: "lujun9972" -[#]: translator: "qfzy1233" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " -[#]: subject: "Top 5 Linux Distributions for Productivity" -[#]: via: "https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity" -[#]: author: "Jack Wallen https://www.linux.com/users/jlwallen" - -五个最具生产力的 Linux 发行版 -====== - -![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_main.jpg?itok=2IKyg_7_) - -必须承认的是,这样一个热门的话题其实很难被总结出来。为什么呢?首先,Linux 在设计层面就是一种有生产力的操作系统。由于它极强的可靠性和稳定的平台,使得工作的开展变得简易化。其次为了衡量工作的效率,你需要考虑到哪项工作需要得到生产力方面的助推。是普通办公?开发类工作?学校事务?数据挖掘?或者是人力资源?你可以看到这一问题变得复杂起来了。 - -然而,这并不意味着那些基于推动底层操作系统成为更为高效平台的发行版们可以在配置和呈现方面做的更好。恰恰相反,许多发行版在偏离生产力这条道路上越走越远,所以你不会意识到你自己处在工作的窘境中,而是继续挖掘自己的潜力在工期结束之前拼命赶上进度。这些 Linux 发行版可以帮助你化繁为简,因此或许可以减少你工作流程中的痛点。 - -让我们来看一下这些发行版并为你找出适合你的最佳选择。为了更具条理,我按照生产力诉求把他们分成了几类。这项任务本身也是一种挑战,因为每个人在生产力提升上的需要是千差万别的。然而,我所关注的是下列的几项: - - * 普通生产力: 适于从事复杂工作并希望提升工作效率。 - - * 平面设计: 适于从事设计创造和图像处理的人们。 - - * 开发: 适于那些使用 Linux 桌面发行版来进行编程工作。 - - * 管理人员: 适于那些需要某些版本来促进一体化的管理任务的人员。 - - * 教育: 适于那些需要桌面发行版可以助力他们在教育领域更创造力的人们。 - - -诚然,有很多很多类别的发行版可供挑选,其中的很多可能用起来十分得心应手,但这五种或许是你最为需要的。 - - -### 普通生产力 - -对普通的生产力诉求来说,你不会找到比 [Ubuntu][1] 更为高效的了。在这个类别中首推 Ubuntu 最基础的原因是因为它实现了桌面操作系统、软件、服务的无缝集成。你可能会问为什么我不选择同类别的 Linux Mint 呢?因为 Ubuntu 现在默认的的桌面环境为 GNOME 桌面,而它拥有 GNOME 许多扩展程序的优势的加成(图 1)。 - - -![GNOME Clipboard][3] - -图 1:运行中的 GNOME 桌面的剪切板管理工具。 - -[经许可使用][4] - -这些扩展程序在提升生产力方面做了很多努力(所以 Ubuntu 比 Linux Mint 获得了更多的认可)。但是 Ubuntu 不仅仅支持 vanilla 版本的 GNOME 桌面。事实上,他们致力于将它改进的更为轻量化、更为高效、以及用户友好度更高、开箱即用。总而言之,由于 Ubuntu 正确的融合了多种特性,开箱即用,完善的软件支持(仅对工作方面而言),这些特性使它几乎成为了生产力领域最为完美的一个平台。 - -不管你是要写一篇文档,制作一张电子表格,写一个新的软件,开啊公司的网站,设计商用的图形,管理一个服务器或是网络,抑或是在你的公司内从事人力资源管理工作, Ubuntu 都可以满足你的需求。Ubuntu 桌面发行版也并不要求你耗费很大的精力才能开始开始开展工作…他只是纯粹的工作(并且十分优秀)。最后,得益于 Debian 的基础,使得 Ubuntu 上安装第三方的软件十分简便。 - -很难反对这一特殊的发行版在生产力发行版列表中独占鳌头,尽管 Ubuntu 几乎已经成为几乎所有“顶级发行版”列表的榜首。 - -### 平面设计 - -如果你正在寻求提升你的平面设计效率,你不能错过[Fedora设计套件][5]。这一 Fedora 的衍生版是由负责 Fedora 艺术类项目的团队亲自操刀制作的。虽然默认选择的应用程序并不是一个庞大的工具集合,但它所包含的工具都是创建和处理图像专用的。 - -有了GIMP、Inkscape、Darktable、Krita、Entangle、Blender、Pitivi、Scribus等应用程序(图 2),您将发现完成图像编辑工作所需要的一切都已经准备好了,而且准备得很好。但是Fedora设计套件并不仅限于此。这个桌面平台还包括一堆教程,涵盖了许多已安装的应用程序。对于任何想要尽可能提高效率的人来说,这将是一些非常有用的信息。不过,我要说的是,GNOME Favorites中的教程不过是[此页][6]链接的内容。 - -![Fedora Design Suite Favorites][8] - -图 2: Fedora Design Suite Favorites菜单包含了许多工具,可以让您用于图形设计。 - -[经许可使用][4] - -那些使用数码相机的用户肯定会喜欢Entangle应用程序,它可以让你在电脑上上控制单反相机。 - -### 开发人员 - -几乎所有的Linux发行版对于程序员来说都是很好的编程平台。然而,有一种特定的发行版脱颖而出,并超越了其他发行版,它将是您见过的用于编程类最有效率的工具之一。这个操作系统来自[System76][9](译注:一家美国的计算机制造商),名为[Pop!_OS][10]。Pop!_OS是专门为创作者定制的,但不是针对艺术类。相反,Pop!_OS面向专门从事开发、编程和软件制作的程序员。如果您需要一个既能完美的胜任开发平台又包含桌面操作系统的开发环境,Pop!_OS 将会是您的不二选择。 (图 3) - -可能会让您感到惊讶(考虑到这个操作系统是多么“年轻”)的是Pop!_OS也是您使用过的基于 GNOME平台的最稳定系统的之一。这意味着 Pop!_OS 不只是为创造者和制造者准备的,也是为任何想要一个可靠的操作系统的人准备的。你可以下载针对你的硬件的专门 ISO 文件,这一点是许多用户十分欣赏的。如果你有英特尔硬件,[下载][10]Intel或AMD的版本。如果您的显卡是NVIDIA,请下载该特定版本。不管怎样,您肯定会得到针对不同平台进行特殊定制的稳定的版本。 - -![Pop!_OS][12] - -图 3: 装有 GNOME 桌面的 Pop!_OS 一览。 - -[经许可使用][4] - -有趣的是,在 Pop!_OS 中,您不会找到太多预装的开发工具。你也不会找到IDE或许多其他开发工具。但是,您可以在Pop 商店中中找到所需的所有开发工具。 - -### 管理人员 - -如果你正在寻找适合管理领域的最生产力的发行版本,[Debian][13]将会是你的不二之选。为什么这么说呢?因为 Debian 不仅仅拥有无与伦比的可靠性,它也是众多能从苦海中将你解救出来的最好的一个版本。Debian是易用性和无限可能性的完美结合。最重要的是,因为它是许多其他发行版的基础,所以可以打赌的是,如果您需要一个任务的管理工具,那么它一定支持 Debian 系统。当然,我们讨论的是一般管理任务,这意味着大多数时候您需要使用终端窗口 SSH 连接到服务器(图4),或者在浏览器上使用网络上基于web的GUI工具。既然如此为什么还要使用一个复杂的桌面呢(比如Fedora中的SELinux或openSUSE中的YaST)呢?所以,应选择更为简洁易用的那一种。 -![Debian][15] - -图 4: 在 Debian 系统上通过SSH 连接到远程服务器。 - -[经授权使用][4] - -你可以选择你想要的不同的桌面(包括GNOME, Xfce, KDE, Cinnamon, MATE, LXDE),确保你所使用的桌面外观最适合你的工作习惯。 - -### 教育 - -如果你是一名老师或者学生,抑或是其他从事与教育相关工作的人士,你需要适当的工具来变得更具创造力。之前,有 Edubuntu 这样的版本。这一版本位列教育类相关发行版排名的前列。然而,自从 Ubuntu 14.04 版之后这一发行版就再也没有更新。还好,现在有一款基于 openSUSE 的新的以教育为基础的发行版有望夺摘得桂冠。这一改版叫做 [openSUSE:Education-Li-f-e][16] (Linux For Education - 图 5), 它基于 openSUSE Leap 42.1 (所以它可能稍微有一点过时)。 - -openSUSE:Education-Li-f-e 包含了一下工具: - - * Brain Workshop(大脑工坊) - 一种基于 dual n-back 模式的大脑训练软件(译注:dual n-back 训练是一种科学的智力训练方法,可以改善人的工作记忆和流体智力) - - * GCompris - 一种针对青少年的教育软件包 - - * gElemental - 一款元素周期表查看工具 - - * iGNUit - 一款通用的记忆卡片工具 - - * Little Wizard - 基于 Pascal 语言的少儿编程开发环境 - - * Stellarium - 天文模拟器 - - * TuxMath - 数学入门游戏 - - * TuxPaint - 一款少儿绘画软件 - - * TuxType - 一款为少儿准备的打字入门软件 - - * wxMaxima - 一个跨平台的计算机代数系统 - - * Inkscape - 矢量图形编辑软件 - - * GIMP - 图像处理软件(译注:被誉为 Linux 上的 PhotoShop) - - * Pencil - GUI 模型制作工具 - - * Hugin - 全景照片拼接及 HDR 效果混合软件 - - -![Education][18] - -图 5: openSUSE:Education-Li-f-e 发行版拥有大量的工具可以帮你在学校中变得更为高效。 - -[经许可使用][4] - -同时还集成在 openSUSE:Education-Li-f-e 中的还有 [KIWI-LTSP Server][19] 。Also included with openSUSE:Education-Li-f-e is the [KIWI-LTSP Server][19]. KIWI-LTSP KIWI-LTSP服务器是一个灵活的、成本有效的解决方案,旨在使全世界的学校、企业和组织能够轻松地安装和部署桌面工作站。虽然这可能不会直接帮助学生变得更具创造力,但它肯定会使教育机构在部署供学生使用的桌面时更有效率。有关配置 KIWI-LTSP 的更多信息,请查看openSUSE [KIWI-LTSP quick start guide][20]. - -通过 Linux 基金会和 edX 的免费["入门介绍"][21]课程来了解更多关于 Linux 的知识。 - --------------------------------------------------------------------------------- - -via: https://www.linux.com/blog/learn/2019/1/top-5-linux-distributions-productivity - -作者:[Jack Wallen][a] -选题:[lujun9972][b] -译者:[qfzy1233](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/users/jlwallen -[b]: https://github.com/lujun9972 -[1]: https://www.ubuntu.com/ -[2]: /files/images/productivity1jpg -[3]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_1.jpg?itok=yxez3X1w "GNOME Clipboard" -[4]: /licenses/category/used-permission -[5]: https://labs.fedoraproject.org/en/design-suite/ -[6]: https://fedoraproject.org/wiki/Design_Suite/Tutorials -[7]: /files/images/productivity2jpg -[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_2.jpg?itok=ke0b8qyH "Fedora Design Suite Favorites" -[9]: https://system76.com/ -[10]: https://system76.com/pop -[11]: /files/images/productivity3jpg-0 -[12]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_3_0.jpg?itok=8UkCUfsD "Pop!_OS" -[13]: https://www.debian.org/ -[14]: /files/images/productivity4jpg -[15]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_4.jpg?itok=c9yD3Xw2 "Debian" -[16]: https://en.opensuse.org/openSUSE:Education-Li-f-e -[17]: /files/images/productivity5jpg -[18]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/productivity_5.jpg?itok=oAFtV8nT "Education" -[19]: https://en.opensuse.org/Portal:KIWI-LTSP -[20]: https://en.opensuse.org/SDB:KIWI-LTSP_quick_start -[21]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 0d63731763d6d386cd7a9e1eef2bc5c13f6b6c8e Mon Sep 17 00:00:00 2001 From: hopefully2333 <787016457@qq.com> Date: Fri, 28 Jun 2019 22:41:57 +0800 Subject: [PATCH 175/336] Rename sources/news/20190606 Cisco to buy IoT security, management firm Sentryo.md to translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md --- ...20190606 Cisco to buy IoT security, management firm Sentryo.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/news/20190606 Cisco to buy IoT security, management firm Sentryo.md (100%) diff --git a/sources/news/20190606 Cisco to buy IoT security, management firm Sentryo.md b/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md similarity index 100% rename from sources/news/20190606 Cisco to buy IoT security, management firm Sentryo.md rename to translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md From cdb708ff6730f67ad8f71e0f156d65a2a2a5616d Mon Sep 17 00:00:00 2001 From: hopefully2333 <787016457@qq.com> Date: Fri, 28 Jun 2019 22:49:19 +0800 Subject: [PATCH 176/336] translated by hopefully2333 translated by hopefully2333 --- ...y IoT security, management firm Sentryo.md | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md b/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md index cc90793305..8654707218 100644 --- a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md +++ b/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md @@ -7,63 +7,63 @@ [#]: via: (https://www.networkworld.com/article/3400847/cisco-to-buy-iot-security-management-firm-sentryo.html) [#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) -Cisco to buy IoT security, management firm Sentryo +思科收购了物联网安全管理公司 Sentryo ====== -Buying Sentryo will give Cisco support for anomaly and real-time threat detection for the industrial internet of things. +买下 Sentryo 将给思科在工业互联网的异常和实时威胁检测两方面予以支持。 ![IDG Worldwide][1] -Looking to expand its IoT security and management offerings Cisco plans to acquire [Sentryo][2], a company based in France that offers anomaly detection and real-time threat detection for Industrial Internet of Things ([IIoT][3]) networks. +为了扩展自己的物联网安全管理产品,思科计划收购 Sentryo,这是一家位于法国的公司,Sentryo 为工业互联网提供异常检测和实时威胁检测。 -Founded in 2014 Sentryo products include ICS CyberVision – an asset inventory, network monitoring and threat intelligence platform – and CyberVision network edge sensors, which analyze network flows. +Sentryo 成立于 2014 年,产品包括 ICS CyberVision - 一种用于资产库存、网络监控和威胁情报的平台 - 以及 CyberVision 网络边界传感器,这用于分析网络流量。 -**More on IoT:** +**更多关于物联网的信息:** - * [What is the IoT? How the internet of things works][4] - * [What is edge computing and how it’s changing the network][5] - * [Most powerful Internet of Things companies][6] - * [10 Hot IoT startups to watch][7] - * [The 6 ways to make money in IoT][8] - * [What is digital twin technology? [and why it matters]][9] - * [Blockchain, service-centric networking key to IoT success][10] - * [Getting grounded in IoT networking and security][11] - * [Building IoT-ready networks must become a priority][12] - * [What is the Industrial IoT? [And why the stakes are so high]][13] + * [什么是物联网?物联网如何运行?][4] + * [什么是边缘计算,这会如何改变我们的网络?][5] + * [最强的物联网公司][6] + * [10 个值得关注的热门物联网创业公司][7] + * [在物联网领域赚钱的六种方法][8] + * [什么是数字双胞胎技术? [以及它为什么重要]][9] + * [区块链,以服务为中心的网络是物联网成功的关键][10] + * [物联网的网络和安全作为基础][11] + * [构建完整的物联网网络必须优先完成][12] + * [什么是工业互联网? [为什么风险如此之高]][13] -“We have incorporated Sentryo’s edge sensor and our industrial networking hardware with Cisco’s IOx application framework,” wrote Rob Salvagno, Cisco vice president of Corporate Development and Cisco Investments in a [blog][14] about the proposed buy. +“我们通过思科的 IOx 应用框架将 Sentryo 的边缘传感器和我们的工业网络硬件相结合”,思科企业发展和思科投资的副总裁 Rob Salvagno 在一篇关于计划收购的博客中写道。 -“We believe that connectivity is foundational to IoT projects and by unleashing the power of the network we can dramatically improve operational efficiencies and uncover new business opportunities. With the addition of Sentryo, Cisco can offer control systems engineers deeper visibility into assets to optimize, detect anomalies and secure their networks.” +“我们相信连接是物联网项目的基础,通过释放网络的力量,我们可以大大提高运作的效率并发现新的商业机会。随着 Sentryo 的加入,思科可以为系统控制工程师提供更加深入的资产可见度,以此来对系统进行优化,检测异常并保护他们的网络” -Gartner [wrote][15] of Sentryo’s system: “ICS CyberVision product provides visibility into its customers'' OT networks in way all OT users will understand, not just technical IT staff. With the increased focus of both hackers and regulators on industrial control systems, it is vital to have the right visibility of an organization’s OT. Many OT networks not only are geographically dispersed, but also are complex and consist of hundreds of thousands of components.” +Gartner 对 Sentryo 的系统写道:“ICS CyberVision 这个产品为它的客户提供了可见性”所有的 OT 用户都将了解 OT 网络,而不仅仅是 IT 技术人员。随着黑客和监管机构越来越关注工业控制系统,一个组织的 OT 拥有完整的可见性是至关重要的一件事。很多的 OT 网络不仅在地理上位置分散,而且也很复杂,由成千上万的组件组成 -Sentryo's ICS CyberVision lets enterprises ensure continuity, resilience and safety of their industrial operations while preventing possible cyberattacks, said [Nandini Natarajan][16] , industry analyst at Frost & Sullivan. "It automatically profiles assets and communication flows using a unique 'universal OT language' in the form of tags, which describe in plain text what each asset is doing. ICS CyberVision gives anyone immediate insights into an asset's role and behaviors; it offers many different analytic views leveraging artificial intelligence algorithms to let users deep-dive into the vast amount of data a typical industrial control system can generate. Sentryo makes it easy to see important or relevant information." +Frost & Sullivan 的工业分析师 Nandini Natarajan 表示,Sentryo 的 ICS CyberVision 让企业能够确保其工业运作的连续性、动态弹性和安全性,并以此预防可能的网络攻击。“它将在标签的表单中使用一种独特的 ‘通用 OT 语言’ 来自动描述资产和通信流程,它会用纯文本的方式描述每个资产在做什么。ICS CyberVision 可以让任何人都能立刻查看一台设备的类别和行为;它利用人工智能算法提供很多不同的分析视图,来让用户深入了解到一个典型的工业控制系统可以产生多么庞大的数据。Sentryo 可以轻松查看重要或相关的信息” -In addition, Sentryo's platform uses deep packet inspection (DPI) to extract information from communications among industrial assets, Natarajan said. This DPI engine is deployed through an edge-computing architecture that can run either on Sentryo sensor appliances or on network equipment that is already installed. Thus, Sentryo can embed visibility and cybersecurity features in the industrial network rather than deploying an out-of-band monitoring network, Natarajan said. +Natarajan 表示,除此之外,Sentryo 的平台使用深度数据包检测(DPI)从工业设备之间的通信数据包里提取信息。DPI 引擎通过边缘计算架构进行部署,它可以运行在 Sentryo 传感器设备上,也可以在已经安装好的网络设备上运行。因此,Sentryo 可以将可见性和网络安全特性嵌入进工业网络中,而非部署带外监控网络。 + +**[[好消息!好消息!通过 PluralSight 的综合在线课程,成为一名光荣的认证信息安全系统专家,现在免费提供 10 天试用!走过路过不要错过!][17] ]** -**[[Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][17] ]** +Sentryo 的技术将扩大思科在物联网上的总体计划。在今年一月,思科推出了一整套的交换机、软件、开发工具和蓝图,这些东西将用于把物联网、基于意图联网的工业网络、传统信息安全、传统信息监控、应用开发支持融为一体。 -Sentryo’s technology will broaden [Cisco’s][18] overarching IoT plan. In January it [launched][19] a family of switches, software, developer tools and blueprints to meld IoT and industrial networking with [intent-based networking][20] (IBN) and classic IT security, monitoring and application-development support. +这个新平台可以通过思科的 DNA 中心进行管理,让客户能将他们的物联网、工业网络控制和他们的商业 IT 世界融为一体。 -The new platforms can be managed by Cisco’s DNA Center, and Cisco IoT Field Network Director, letting customers fuse their IoT and industrial-network control with their business IT world. +DNA 中心是思科用于企业网络的中央管理工具,具有自动化、确保设置、结构配置、基于策略进行分割的功能。它也是公司 IBN 计划的核心,用于主动向客户提供动态自动化完成网络和策略变更的能力,并在这个过程中确保数据的交付。物联网领域网络的主管是软件,这个软件管理思科工业、连接的网格路由器、终端这多个业务的网络。 -DNA Center is Cisco’s central management tool for enterprise networks, featuring automation capabilities, assurance setting, fabric provisioning and policy-based segmentation. It is also at the center of the company’s IBN initiative offering customers the ability to automatically implement network and policy changes on the fly and ensure data delivery. The IoT Field Network Director is software that manages multiservice networks of Cisco industrial, connected grid routers and endpoints. +思科物联网业务部的高级副总裁兼总经理 Liz Centoni 表示,公司希望 Sentryo 的技术能以多种方式帮助物联网客户: -Liz Centoni, senior vice president and general manager of Cisco's IoT business group said the company expects the [Sentryo technology to help][21] IoT customers in a number of ways: +支持网络的被动 DPI 功能,这用于发现 IOT 和 OT 设备,并且在设备和系统之间建立起通信模式。Sentryo 的传感器可以在思科的 IOx 框架里进行本地部署,并且可以内置到这些设备运行的工业网络中,而不是添加额外的硬件。 -Network-enabled, passive DPI capabilities to discover IoT and OT assets, and establish communication patterns between devices and systems. Sentryo’s sensor is natively deployable on Cisco’s IOx framework and can be built into the industrial network these devices run on instead of adding additional hardware. +随着设备识别和通信模式的建立,思科将把 DNA 中心和身份识别服务引擎(ISE)集成到一起,以便客户能够很轻松地定义分割策略。这种集成将使 OT 团队能够利用 IT 安全团队的专业知识来保护他们的环境,而不会对运营的流程造成风险。 -As device identification and communication patterns are created, Cisco will integrate this with DNA Center and Identity Services Engine(ISE) to allow customers to easily define segmentation policy. This integration will allow OT teams to leverage IT security teams’ expertise to secure their environments without risk to the operational processes. +这些物联网设备缺乏现代嵌入式软件和安全功能,网络分段将成为允许运作设备向合法系统进行通信的关键技术,并降低像我们看见的 WannaCry 和 Norsk Hydro 那样网络安全事件的风险。 -With these IoT devices lacking modern embedded software and security capabilities, segmentation will be the key technology to allow communication from operational assets to the rightful systems, and reduce risk of cyber security incidents like we saw with [WannaCry][22] and [Norsk Hydro][23]. +据 Crunchbase 称,Sentryo 的每年预计收入为 350 万美元,与 Cymmetria,Team8,和 Indegy 的竞争最为激烈。此次收购预期将在思科 2020 财年的第一季度 - 2019 年 10 月 26 日 - 结束前完成。思科并未详细披露此次收购的财务细节。 -According to [Crunchbase][24], Sentryo has $3.5M in estimated revenue annually and it competes most closely with Cymmetria, Team8, and Indegy. The acquisition is expected to close before the end of Cisco’s Q1 Fiscal Year 2020 -- October 26, 2019. Financial details of the acquisition were not detailed. - -Sentryo is Cisco’s second acquisition this year. It bought Singularity for its network analytics technology in January. In 2018 Cisco bought six companies including Duo security software. +Sentryo 是思科今年的第二次收购。思科在今年一月收购了 Singularity,这是为了这家公司的网络分析技术。在 2018 年,思科收购了包含 Duo security software 在内的 6 家公司。 ** ** -Join the Network World communities on [Facebook][25] and [LinkedIn][26] to comment on topics that are top of mind. +加入 Facebook 和 LinkedIn 上的网络世界社区,评论最重要的主题。 -------------------------------------------------------------------------------- @@ -71,7 +71,7 @@ via: https://www.networkworld.com/article/3400847/cisco-to-buy-iot-security-mana 作者:[Michael Cooney][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[hopefully2333](https://github.com/hopefully2333) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 03651137d9168a8596bf29664a53b28626f1e142 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 29 Jun 2019 00:53:33 +0800 Subject: [PATCH 177/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190628=20How=20?= =?UTF-8?q?to=20Install=20and=20Use=20R=20on=20Ubuntu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190628 How to Install and Use R on Ubuntu.md --- ...0628 How to Install and Use R on Ubuntu.md | 209 ++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 sources/tech/20190628 How to Install and Use R on Ubuntu.md diff --git a/sources/tech/20190628 How to Install and Use R on Ubuntu.md b/sources/tech/20190628 How to Install and Use R on Ubuntu.md new file mode 100644 index 0000000000..84699fbc8e --- /dev/null +++ b/sources/tech/20190628 How to Install and Use R on Ubuntu.md @@ -0,0 +1,209 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Install and Use R on Ubuntu) +[#]: via: (https://itsfoss.com/install-r-ubuntu/) +[#]: author: (Sergiu https://itsfoss.com/author/sergiu/) + +How to Install and Use R on Ubuntu +====== + +_**Brief: This tutorial teaches you to install R on Ubuntu. You’ll also learn how to run your first R program in Ubuntu using various methods.**_ + +[R][1], together with Python, is the most commonly used programming language for statistical computing and graphics, making it easy to work with data. With the growing interest in data analysis, data visualization, data science (the machine learning craze), it is now more popular than ever and is a great tool for anyone looking to dive into this fields. + +The good thing about R is that its syntax is pretty straight-forward and you can find many tutorials/guides on how R is used in the real world. + +In this article, I’ll cover how to install R on Ubuntu Linux. I’ll also show you how to run your first R program in Linux. + +![][2] + +### Installing R on Ubuntu + +**R** is included in the Ubuntu repositories. It can be easily installed using: + +``` +sudo apt install r-base +``` + +Do note that this may install a slightly older version. At the time of writing this article, Ubuntu offers version 3.4 whereas the latest is version 3.6. + +_I advise sticking with whichever version Ubuntu provides unless you must use the newer version._ + +In order to get the latest version (or any specific version for that matter), you must use **[CRAN][3]** (The Comprehensive R Archive Network). This is a list of mirrors for downloading the latest version of R. Click on the next section to learn how to install the latest version of R on Ubuntu. + +**How to install latest R version 3.6 on Ubuntu (click to expand)** + +To get the R version 3.6, you need to add the mirror to your sources list. I have simplified it for you in this command: + +``` +sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran35/" +``` + +Now you should add the key for the repository: + +``` +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 +``` + +And then update the repository information and install R: + +``` +sudo apt update +sudo apt install r-base +``` + +That’s it. + +[][4] + +Suggested read  How to Create a Bootable Windows 10 USB in Linux + +### Using R programming on Ubuntu + +R has more than one use. I’ll go over several methods you can use to run R programs. + +#### Interactive Mode in R + +After having installed **R**, you can run the console using: + +``` +R +``` + +This should open up the interactive mode: + +![R Interactive Mode][5] + +This R console is very similar to the **Python** and **Haskell** interactive prompts. You can enter any **R** command and you can do basic mathematical computations. For example: + +``` +> 20+40 +[1] 60 + +> print ("Hello World!") +[1] "Hello World!" +``` + +You could test plotting too: + +![R Plotting][6] + +You can **quit** using **q()** or pressing **CTRL+c**. When doing so, you will be asked if you want to save a workspace ****image; a workspace ****is an environment for created variables. + +#### Running R program with Rscript + +The second way to run R programs is in directly on the Linux command line. You can do so using **RScript**, a utility included with **r-base**. + +First, you have to save your R program to a file using your [favorite code editor on Linux][7]. The file extension should be .r. + +This is my sample R program printing “Hello World”. I have saved it in a file name hello.r. + +``` +print("Hello World!") +a <- rnorm(100) +plot(a) +``` + +To run the R program, use the command like this: + +``` +Rscript hello.r +``` + +You should get back the output: + +``` +[1] "Hello World!" +``` + +The plot is going to be saved in the working directory, to a file named **Rplots.pdf**: + +![Rplots.pdf][8] + +**Note:** _**Rscript**_ _doesn’t load the_ _**methods**_ _package by default. Make sure to [load it explicitly][9] in your script_. + +#### Run R scripts with RStudio in Ubuntu + +The most common way to use **R** is using [RStudio][10], a great cross-platform open source IDE. You can [install it using deb file in Ubuntu][11]. Download the deb file from the link below. You’ll have to scroll down a bit to locate the DEB files for Ubuntu. + +[Download RStudio for Ubuntu][12] + +Once you download the DEB file, just double click on it to install it. + +Once installed, search for it in the menu and start it. The home window of the application should pop up: + +![RStudio Home][13] + +Here you have a working console, just like the one you got in the terminal with the **R** command. + +[][14] + +Suggested read  Setting Up Python Environments In Linux and Unix Systems + +To create a file, in the top bar click on **File** and select **New File > Rscript** (or **CTRL+Shift+n)**: + +![RStudio New File][15] + +Press **CTRL+s** to save the file and choose a location and a name it: + +![RStudio Save File][16] + +After doing so, click on **Session > Set Working Directory > To Source File Location** to change the working directory to the location of your script: + +![RStudio Working Directory][17] + +You are now ready to go! Write in your code and click run. You should be able to see output both in the console and in the plotting window: + +![RStudio Run][18] + +**Wrapping Up** + +In this article, I showed you step by step how to get started using the **R** programming language on an Ubuntu system. I covered several ways you can go about this: **R console** – useful for testing, **Rscript** – for the terminal lover, **RStudio** – the IDE for your needs. + +Whether you are willing to get into data science or simply love statistics, **R** is a good addition to your programming arsenal, being the perfect tool for analyzing data. + +If you are absolutely new to R, let me recommend you this excellent book that will teach you fundamentals of R. It’s available on Amazon Kindle. + +Preview | Product | Price | +---|---|---|--- +![Learn R in a Day][19] ![Learn R in a Day][19] | [Learn R in a Day][20] | | [Buy on Amazon][21] + +Do you use **R**? Are you just getting into it? Let us know more about how and why you use or want to learn to use **R**! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-r-ubuntu/ + +作者:[Sergiu][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/sergiu/ +[b]: https://github.com/lujun9972 +[1]: https://www.r-project.org/ +[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/install-r-on-ubuntu.jpg?resize=800%2C450&ssl=1 +[3]: https://cran.r-project.org/ +[4]: https://itsfoss.com/bootable-windows-usb-linux/ +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/r_interactive_mode.png?fit=800%2C516&ssl=1 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/r_plotting.jpg?fit=800%2C434&ssl=1 +[7]: https://itsfoss.com/best-modern-open-source-code-editors-for-linux/ +[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/rplots_pdf.png?fit=800%2C539&ssl=1 +[9]: https://www.dummies.com/programming/r/how-to-install-load-and-unload-packages-in-r/ +[10]: https://www.rstudio.com/ +[11]: https://itsfoss.com/install-deb-files-ubuntu/ +[12]: https://www.rstudio.com/products/rstudio/download/#download +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/rstudio_home.jpg?fit=800%2C603&ssl=1 +[14]: https://itsfoss.com/python-setup-linux/ +[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/rstudio_new_file.png?fit=800%2C392&ssl=1 +[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/rstudio_save_file.png?fit=800%2C258&ssl=1 +[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/rstudio_working_directory.png?fit=800%2C394&ssl=1 +[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/rstudio_run.jpg?fit=800%2C626&ssl=1 +[19]: https://i1.wp.com/images-na.ssl-images-amazon.com/images/I/51oIJTbUlnL._SL160_.jpg?ssl=1 +[20]: https://www.amazon.com/Learn-R-Day-Steven-Murray-ebook/dp/B00GC2LKOK?SubscriptionId=AKIAJ3N3QBK3ZHDGU54Q&tag=chmod7mediate-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B00GC2LKOK (Learn R in a Day) +[21]: https://www.amazon.com/Learn-R-Day-Steven-Murray-ebook/dp/B00GC2LKOK?SubscriptionId=AKIAJ3N3QBK3ZHDGU54Q&tag=chmod7mediate-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B00GC2LKOK (Buy on Amazon) From e03f4d03cd31d2c9cc8b53c1b9737fe4dbc5e296 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 29 Jun 2019 00:55:40 +0800 Subject: [PATCH 178/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190628=20FreeDO?= =?UTF-8?q?S=20turns=2025=20years=20old:=20An=20origin=20story?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md --- ...DOS turns 25 years old- An origin story.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md diff --git a/sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md b/sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md new file mode 100644 index 0000000000..16464c696a --- /dev/null +++ b/sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md @@ -0,0 +1,95 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (FreeDOS turns 25 years old: An origin story) +[#]: via: (https://opensource.com/article/19/6/freedos-anniversary) +[#]: author: (Jim Hall https://opensource.com/users/jim-hall) + +FreeDOS turns 25 years old: An origin story +====== +The operating system's history is a great example of the open source +software model: developers working together to create something. +![FreeDOS fish logo and command prompt on computer][1] + +June 29 marks the 25th anniversary of [FreeDOS][2]. That's a major milestone for any open source software project, and I'm proud of the work that we've done on it over the past quarter century. I'm also proud of how we built FreeDOS because it is a great example of how the open source software model works. + +For its time, MS-DOS was a powerful operating system. I'd used DOS for years, ever since my parents replaced our aging Apple II computer with a newer IBM machine. MS-DOS provided a flexible command line, which I quite liked and that came in handy to manipulate my files. Over the years, I learned how to write my own utilities in C to expand its command-line capabilities even further. + +Around 1994, Microsoft announced that its next planned version of Windows would do away with MS-DOS. But I liked DOS. Even though I had started migrating to Linux, I still booted into MS-DOS to run applications that Linux didn't have yet. + +I figured that if we wanted to keep DOS, we would need to write our own. And that's how FreeDOS was born. + +On June 29, 1994, I made a small announcement about my idea to the comp.os.msdos.apps newsgroup on Usenet. + +> ANNOUNCEMENT OF PD-DOS PROJECT: +> A few months ago, I posted articles relating to starting a public domain version of DOS. The general support for this at the time was strong, and many people agreed with the statement, "start writing!" So, I have… +> +> Announcing the first effort to produce a PD-DOS. I have written up a "manifest" describing the goals of such a project and an outline of the work, as well as a "task list" that shows exactly what needs to be written. I'll post those here, and let discussion follow. + +While I announced the project as PD-DOS (for "public domain," although the abbreviation was meant to mimic IBM's "PC-DOS"), we soon changed the name to Free-DOS and later FreeDOS. + +I started working on it right away. First, I shared the utilities I had written to expand the DOS command line. Many of them reproduced MS-DOS features, including CLS, DATE, DEL, FIND, HELP, and MORE. Some added new features to DOS that I borrowed from Unix, such as TEE and TRCH (a simple implementation of Unix's tr). I contributed over a dozen FreeDOS utilities + +By sharing my utilities, I gave other developers a starting point. And by sharing my source code under the [GNU General Public License][3] (GNU GPL), I implicitly allowed others to add new features and fix bugs. + +Other developers who saw FreeDOS taking shape contacted me and wanted to help. Tim Norman was one of the first; Tim volunteered to write a command shell (COMMAND.COM, later named FreeCOM). Others contributed utilities that replicated or expanded the DOS command line. + +We released our first alpha version as soon as possible. Less than three months after announcing FreeDOS, we had an Alpha 1 distribution that collected our utilities. By the time we released Alpha 5, FreeDOS boasted over 60 utilities. And FreeDOS included features never imagined in MS-DOS, including internet connectivity via a PPP dial-up driver and dual-monitor support using a primary VGA monitor and a secondary Hercules Mono monitor. + +New developers joined the project, and we welcomed them. By October 1998, FreeDOS had a working kernel, thanks to Pat Villani. FreeDOS also sported a host of new features that brought not just parity with MS-DOS but surpassed MS-DOS, including ANSI support and a print spooler that resembled Unix lpr. + +You may be familiar with other milestones. We crept our way towards the 1.0 label, finally releasing FreeDOS 1.0 in September 2006, FreeDOS 1.1 in January 2012, and FreeDOS 1.2 in December 2016. MS-DOS stopped being a moving target long ago, so we didn't need to update as frequently after the 1.0 release. + +Today, FreeDOS is a very modern DOS. We've moved beyond "classic DOS," and now FreeDOS features lots of development tools such as compilers, assemblers, and debuggers. We have lots of editors beyond the plain DOS Edit editor, including Fed, Pico, TDE, and versions of Emacs and Vi. FreeDOS supports networking and even provides a simple graphical web browser (Dillo). And we have tons of new utilities, including many that will make Linux users feel at home. + +FreeDOS got where it is because developers worked together to create something. In the spirit of open source software, we contributed to each other's work by fixing bugs and adding new features. We treated our users as co-developers; we always found ways to include people, whether they were writing code or writing documentation. And we made decisions through consensus based on merit. If that sounds familiar, it's because those are the core values of open source software: transparency, collaboration, release early and often, meritocracy, and community. That's the [open source way][4]! + +I encourage you to download FreeDOS 1.2 and give it a try. + +### More resources + + * [FreeDOS website][2] + * [FreeDOS wiki][5] + * [Download FreeDOS 1.2][6] + * [Free ebooks about FreeDOS][7] + * [A gentle introduction to FreeDOS][8] + * [The origin and evolution of FreeDOS][9] + * [4 cool facts you should know about FreeDOS][10] + * [How to upgrade your system BIOS using FreeDOS][11] + * [Celebrating 24 years of FreeDOS: Useful commands cheat sheet][12] + * [How to run DOS programs in Linux][13] + * [Keeping DOS alive and kicking with open source][14] + * [Running DOS on the Raspberry Pi][15] + + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/freedos-anniversary + +作者:[Jim Hall][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/jim-hall +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/freedos-fish-laptop-color.png?itok=vfv_Lpph (FreeDOS fish logo and command prompt on computer) +[2]: https://www.freedos.org/ +[3]: https://www.gnu.org/licenses/licenses.en.html +[4]: https://opensource.com/open-source-way +[5]: http://wiki.freedos.org/ +[6]: https://www.freedos.org/download/ +[7]: https://www.freedos.org/ebook/ +[8]: https://opensource.com/article/18/4/gentle-introduction-freedos +[9]: https://opensource.com/article/17/10/freedos +[10]: https://opensource.com/article/17/6/freedos-still-cool-today +[11]: https://opensource.com/article/17/6/upgrade-bios-freedos +[12]: https://opensource.com/article/18/6/freedos-commands-cheat-sheet +[13]: https://opensource.com/article/17/10/run-dos-applications-linux +[14]: https://opensource.com/life/16/9/interview-jim-hall-freedos +[15]: https://opensource.com/article/18/3/can-you-run-dos-raspberry-pi From 9e41c704c06e43b7ee95ca77591039eac46136e8 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 29 Jun 2019 00:57:10 +0800 Subject: [PATCH 179/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190628=20Undo?= =?UTF-8?q?=20releases=20Live=20Recorder=205.0=20for=20Linux=20debugging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md --- ...s Live Recorder 5.0 for Linux debugging.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md diff --git a/sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md new file mode 100644 index 0000000000..4e383f1fe6 --- /dev/null +++ b/sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md @@ -0,0 +1,55 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Undo releases Live Recorder 5.0 for Linux debugging) +[#]: via: (https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Undo releases Live Recorder 5.0 for Linux debugging +====== + +![André Gustavo Stumpf \(CC BY 2.0\)][1] + +Linux debugging has taken a giant step forward with the release of Live Recorder 5.0 from Undo. Just released on Wednesday, this product makes debugging on multi-process systems significantly easier. Based on flight recorder technology, it delves more deeply into processes to provide insight into what’s going on within each process. This includes memory, threads, program flow, service calls and more. To make this possible, Live Recorder 5.0's record, replay and debugging capabilities have been enhanced with the ability to: + + * Record the exact order in which processes altered shared memory variables. It is even possible to zero in on specific variables and skip backward to the last line of code in any process that altered the variable. + * Expose potential defects by randomizing thread execution to help reveal race conditions, crashes and other multi-threading defects. + * Record and replay the execution of individual Kubernetes and Docker containers to help resolve defects faster in microservices environments + + + +The Undo Live Recorder enables engineering teams to record and replay the execution of any software program -- no matter how complex -- and to diagnose and fix the root cause of any issue in test or production. + +Depending on your license, Live Recorder can be used on the command line with the **live-record** command that is somewhat similar to strace though, instead of printing system calls and signals, it creates an "Undo recording". Captured failings in recordings can then be debugged (far more effective than grappling with core dumps!). These recordings can also be can be shared with other members of the staff and can be replayed with the reversible debugger to further investigate the cause of the crash or other problem. + +The Undo Engine is supported on the following Linux distributions: + + * Red Hat Enterprise Linux 6.8, 6.9, 6.10, 7.4, 7.5, 7.6 and 8.0 + * Fedora 28, 29 and 30 + * SuSE Linux Enterprise Server 12.3, 12.4 and 15 + * Ubuntu 16.04 LTS, 18.04 LTS, 18.10 and 19.04 + + + +Undo is a fast-growing, venture-backed technology start-up based in San Francisco and Cambridge, UK. They claim that the Live Recorder provides 100% certainty about the factors that led to any software failure -- even in the most complex software environments. + +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/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.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://images.idgesg.net/images/article/2019/06/flight_data_recorder-100800552-large.jpg +[2]: https://www.facebook.com/NetworkWorld/ +[3]: https://www.linkedin.com/company/network-world From 761411ac588871b29e175b2968135e069225ffe1 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Sat, 29 Jun 2019 08:39:48 +0800 Subject: [PATCH 180/336] Update and rename sources/news/20190624 Raspberry Pi 4 is here.md to translated/news/20190624 Raspberry Pi 4 is here.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交译文 --- .../news/20190624 Raspberry Pi 4 is here.md | 92 ------------------ .../news/20190624 Raspberry Pi 4 is here.md | 95 +++++++++++++++++++ 2 files changed, 95 insertions(+), 92 deletions(-) delete mode 100644 sources/news/20190624 Raspberry Pi 4 is here.md create mode 100644 translated/news/20190624 Raspberry Pi 4 is here.md diff --git a/sources/news/20190624 Raspberry Pi 4 is here.md b/sources/news/20190624 Raspberry Pi 4 is here.md deleted file mode 100644 index bba028bf68..0000000000 --- a/sources/news/20190624 Raspberry Pi 4 is here.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wahailin) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Raspberry Pi 4 is here!) -[#]: via: (https://opensource.com/article/19/6/raspberry-pi-4) -[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) - -Raspberry Pi 4 is here! -====== -A new version of the $35 computer features a 1.5GHz Arm chip and support -for dual-HDMI 4K displays, Gigabit Ethernet, and much more. -![Raspberry Pi 4 board][1] - -The latest version of the Raspberry Pi—Raspberry Pi 4—was released today, earlier than anticipated, featuring a new 1.5GHz Arm chip and VideoCore GPU with some brand new additions: dual-HDMI 4K display output; USB3 ports; Gigabit Ethernet; and multiple RAM options up to 4GB. - -![Raspberry Pi 4 case][2] - -The Raspberry Pi 4 is a very powerful single-board computer and starts at the usual price of $35. That gets you the standard 1GB RAM, or you can pay $45 for the 2GB model or $55 for the 4GB model—premium-priced models are a first for Raspberry Pi. - -The specs at-a-glance: - - * 64-bit BCM2711 quad-core A72 CPU @ 1.5GHz - * VideoCore VI GPU - * Gigabit Ethernet port - * 1GB, 2GB, or 4GB LPDDR4 RAM - * Two Micro-HDMI ports - * Two USB3 ports - * Two USB2 ports - * Dual-band (2.4GHz and 5GHz) WiFi - * Bluetooth 5.0 - * USB Type C power port - * CSI camera interface - * DSI display interface - * MicroSD card slot - * Power-over-Ethernet pins - * Full compatibility with all previous Raspberry Pi models - - - -### USB and networking - -The Raspberry Pi 4 has the benefit of having USB3; it's powered by a USB Type C cable and provides two USB3 ports and two USB2 ports. You can now connect USB3 hard drives and other peripherals and get faster connectivity. - -![Raspberry Pi 4 USBs][3] - -The BCM2835-based chip in Raspberry Pi 1 to 3 provided just one native USB port and no Ethernet, so a USB hub on the board provided more USB ports and an Ethernet port. The 3B+ added a dedicated LAN chip, which gave it Gigabit Ethernet, but this was limited to USB2 speeds. The Pi 4 has dedicated Gigabit Ethernet, and because it's no longer throttled over USB, its networking speeds are much faster. - -The Pi 4 takes advantage of the technology built into the 3B+ that made it the first single-board computer with dual-band WiFi. This means you can connect to both 2.4GHz and 5GHz networks. - -### Displays - -When the first Raspberry Pi launched, the balance of its CPU and GPU performance was tipped heavily in favor of the GPU. The VideoCore IV was a very powerful graphics processor, capable of full-HD 1080p multimedia, which is why the Pi has always been popular as a home media center. The Pi 2 rebalanced things somewhat and brought the CPU in line, taking the Pi from a single-core to a quad-core Arm chip. The Pi 4 takes both factors a big step forward. The new VideoCore VI GPU gives the Pi 4K video and allows two displays via the board's two Micro-HDMI ports (selected to keep the board the same size), so you'll need an adapter or a Micro-to-full HDMI cable to use an HDMI monitor. - -Dual displays are a godsend when you need more screen real estate to keep eye contact with multiple windows—if you're programming you might have your code on one screen and the website or app you're building; your database; your web browser; your emails, or anything else on the other. For the first time, development on Raspberry Pi won't be limited to a single monitor. It's also handy if you want to build a Pi-based project with different things on different screens. - -The Pi also has a Display Serial Interface (DSI) port to drive another special display—not another monitor per se, but the official Raspberry Pi touch screen display connected via a flex cable. - -### Raspbian Buster - -This Raspberry Pi 4's launch coincides with a major Debian release, and the fact the new Pi supports OpenGL ES 3 means it makes sense for any software developed for the Pi 4 to target Raspbian Buster. Buster brings a few user interface tweaks and a whole host of software upgrades, including Python 3.7. - -![Raspbian Buster][4] - -### Open source graphics drivers - -Over the last five years, Eric Anholt has been working to write open source graphics drivers for the Raspberry Pi. Now, Raspbian can use this driver to deliver accelerated web browsing, desktop graphics, and 3D applications on the Pi. This replaces a large chunk of closed-source code that was previously required. Huge thanks to Eric and Broadcom for this effort. - -Previously, the Raspberry Pi 4 was expected to be yet another year away, but the chip design turned out to be ready for production much earlier than anticipated, so here it is! - -* * * - -_The Raspberry Pi 4 is on sale now. Which model will you opt for? Let us know your plans in the comments!_ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/raspberry-pi-4 - -作者:[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/raspberry-pi-4_lead.jpg?itok=2bkk43om (Raspberry Pi 4 board) -[2]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-case.jpg (Raspberry Pi 4 case) -[3]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-usb.jpg (Raspberry Pi 4 USBs) -[4]: https://opensource.com/sites/default/files/uploads/raspbian-buster.png (Raspbian Buster) diff --git a/translated/news/20190624 Raspberry Pi 4 is here.md b/translated/news/20190624 Raspberry Pi 4 is here.md new file mode 100644 index 0000000000..1d5e5a282a --- /dev/null +++ b/translated/news/20190624 Raspberry Pi 4 is here.md @@ -0,0 +1,95 @@ +[#]: collector: (lujun9972) +[#]: translator: (wahailin) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Raspberry Pi 4 is here!) +[#]: via: (https://opensource.com/article/19/6/raspberry-pi-4) +[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) + +树莓派 4 来袭! +====== +售价 35 美元起的新一代树莓派计算机,装载了 1.5 GHz 的 Arm 芯片,并支持双 HDMI 4K 显示,全吞吐量千兆以太网,以及更多新特性。 + +![Raspberry Pi 4 board][1] + +树莓派的最新版本树莓派 4 代,已于近日(北京时间 6 月 24 日)发布,这早于此前预期。树莓派 4 装载了 1.5 GHz 的 Arm 芯片和 VideoCore GPU,支持双 4K 显示输出,并引入了 USB 3 接口和全吞吐量千兆以太网,以及最高可达 4G 的多个可选 RAM 配置。 + +![Raspberry Pi 4 case][2] + +树莓派 4 是非常强大的单板计算机,其起始售价依然是 35 美元。起始版的 RAM 配置为 1G,2G RAM 配置的树莓派售价为 45 美元,顶配 4G RAM 的树莓派售价为 55 美元,采用这种差异化定价对树莓派尚属首次。 + +树莓派 4 的详细配置如下: + + * 1.5 GHz 4 核心 64 位博通 BCM2711 A72 CPU + * VideoCore VI GPU + * 千兆以太网端口 + * 1GB/2GB/4GB LPDDR4 SDRAM 内存 + * 双 Micro-HDMI 接口 + * 两个 USB 3 接口 + * 两个 USB 2 接口 + * 双频(2.4 GHz 和 5 GHz)无线网络 + * 蓝牙 5.0 + * USB Type C 电源接口 + * CSI 摄像头接口 + * DSI 显示接口 + * MicroSD 卡槽 + * PoE(以太网供电)供电针 + * 完全兼容早期的树莓派产品 + + + +### USB接口和网络 + +树莓派 4 板载了更高速率的 USB 3 接口;它通过 Type C 接口供电,并提供两个 USB 3 接口和两个 USB 2 接口。USB 3 接口可以为连接的硬盘和其它外部设备提供更高的速率。 + + +![Raspberry Pi 4 USBs][3] + +基于 BCM2835 的树莓派 1 到 3 代的芯片只有一个本地 USB 接口,并且没有以太网接口,因而需要使用板子的 USB 集线器给出更多的 USB 接口和以太网接口。树莓派 3B+ 增加了一个专用的局域网(LAN)芯片,装载了千兆以太网,但它受到 USB 2 速率的限制。树莓派 4 板载了专门的千兆以太网,并且由于它不再收到 USB 速率的限制,网络速度要快得多。 + + +树莓派 4 采用了 3B+ 中已有的技术,这项技术使得树莓派 3B+ 成为了第一个带有双频无线网络的单板计算机,即可以同时连接 2.4 GHz 和 5 GHz 频率的网络。 + +### 显示 + +设计第一代树莓派时,其 CPU 和 GPU 性能的平衡大大偏向于 GPU。VideoCore IV 是一个非常强大的图形处理器,支持全高清 1080 p 多媒体的处理,这就是为什么树莓派一直作为家庭媒体中心而广受欢迎的原因。树莓派 2 代在某种程度上进行了权衡修改,并将 CPU 的性能进行提升,将树莓派从单核发展成四核 ARM 芯片。而树莓派 4 代将 CPU 和 GPU 的性能都进行了大幅提升。新的 VideoCore VI GPU 支持 4K 视频,并允许通过板子的两个 Micro HDMI 端口(板子特意保持了和旧有型号相同的尺寸)进行双显示输出,这里要用一个适配器或 Micro HDMI 转 full HDMI 的转换线连接到 HDMI 屏幕。 + +当你需要同时浏览多个窗口时,需要用到更多的物理显示屏,双显示的好处在此时就得到了绝佳体现。如果你正在编程,你可能会在其中一个屏幕上编写代码,构建网站或应用,而在另一个屏幕上查看数据库、Web 浏览器、电子邮件或其他内容。这是树莓派首次可以不必将开发局限在一台显示器上,从而可以让你在需要时,在不同的屏幕上构建具有不同内容的基于树莓派的项目。 + + +树莓派还有一个显示器串行接口(DSI),用于驱动另一个特殊的显示-这里并非指另一个监视器本身,而是通过一根挠性电缆连接的官方树莓派触摸屏显示器。 + +### Raspbian Buster + +树莓派 4 发布后,紧接着更新了基于 Debian 的系统 Raspbian Buster,而新的树莓派对 OpenGL ES 3 的支持,使我们在 Raspbian Buster 上为树莓派 4 开发任意软件成为可能。 Buster 对界面进行了一些调整,并对很多软件进行了升级,其中包括 Python3.7。 + +![Raspbian Buster][4] + +### 开源图形驱动程序 + +在过去的五年中,Eric Anholt 一直致力于为树莓派编写开源图形驱动程序。现在,Raspbian 可以使用这个驱动程序加速树莓派上的 Web 浏览、桌面图形和 3D 应用,这取代了以前需要的大量封闭源代码。非常感谢 Eric 和 博通 的贡献。 + +按之前预计,树莓派 4 将于明年完成,但由于芯片设计比预期更早投入生产,树莓派 4 因而可以提早到现在发布。 + +* * * + +树莓派 4 已经开始发售,你会选择哪个型号呢?在评论中说出你的想法吧。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/raspberry-pi-4 + +作者:[Ben Nuttall][a] +选题:[lujun9972][b] +译者:[wahailin](https://github.com/wahailin) +校对:[校对者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/raspberry-pi-4_lead.jpg?itok=2bkk43om (Raspberry Pi 4 board) +[2]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-case.jpg (Raspberry Pi 4 case) +[3]: https://opensource.com/sites/default/files/uploads/raspberry-pi-4-usb.jpg (Raspberry Pi 4 USBs) +[4]: https://opensource.com/sites/default/files/uploads/raspbian-buster.png (Raspbian Buster) From 14de4ceba7e1b1da65a02ecf547b4f1e87e63a92 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Sat, 29 Jun 2019 08:40:24 +0800 Subject: [PATCH 181/336] Update 20190624 Raspberry Pi 4 is here.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交译文 --- translated/news/20190624 Raspberry Pi 4 is here.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/news/20190624 Raspberry Pi 4 is here.md b/translated/news/20190624 Raspberry Pi 4 is here.md index 1d5e5a282a..cc384cb55d 100644 --- a/translated/news/20190624 Raspberry Pi 4 is here.md +++ b/translated/news/20190624 Raspberry Pi 4 is here.md @@ -39,7 +39,7 @@ -### USB接口和网络 +### USB 接口和网络 树莓派 4 板载了更高速率的 USB 3 接口;它通过 Type C 接口供电,并提供两个 USB 3 接口和两个 USB 2 接口。USB 3 接口可以为连接的硬盘和其它外部设备提供更高的速率。 From 8749664b14ee6a6041d81584142da9b463981691 Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 29 Jun 2019 10:57:50 +0800 Subject: [PATCH 182/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iny Linux distros to try before you die.md | 268 ------------------ ...iny Linux distros to try before you die.md | 262 +++++++++++++++++ 2 files changed, 262 insertions(+), 268 deletions(-) delete mode 100644 sources/tech/20190625 5 tiny Linux distros to try before you die.md create mode 100644 translated/tech/20190625 5 tiny Linux distros to try before you die.md diff --git a/sources/tech/20190625 5 tiny Linux distros to try before you die.md b/sources/tech/20190625 5 tiny Linux distros to try before you die.md deleted file mode 100644 index 9217e4b512..0000000000 --- a/sources/tech/20190625 5 tiny Linux distros to try before you die.md +++ /dev/null @@ -1,268 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 tiny Linux distros to try before you die) -[#]: via: (https://opensource.com/article/19/6/linux-distros-to-try) -[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/marcobravo) - -5 tiny Linux distros to try before you die -====== -Resurrect an ancient machine, boot a broken system, or ensure a safe -public computing session with these tiny Linux distros. -![Hand putting a Linux file folder into a drawer][1] - -There are plenty of Linux distributions out there to choose from when you're deciding what to run on a daily basis, yet some are so small that they get little notice. But tiny Linux distributions are powerful innovations: having an entire operating system drive a computer with less than 1GB of storage and half as much RAM is the ultimate software hack. - -Tiny distros have many uses, such as: - - * Save old and slow computers from the rubbish bin. Reject planned obsolescence and use computers until they fall apart, not just until they start to feel slow. - * Boot broken or corrupted systems from a thumb drive to recover data or repair boot partitions. - * Ensure a safe and private environment when on a public computer. If you boot a public computer in a hotel lobby or a library from a thumb drive, you'll know your operating environment is secure. - - - -There are plenty of lightweight distributions out there, like [Lubuntu][2], [Peppermint OS][3], and [Bodhi][4], but there's something special about the truly tiny. Here are five tiny distros you owe it to yourself to try. - -### Tiny Core - -![Tiny Core Linux][5] - -At 11MB for a text console and 16MB for a GUI, [Tiny Core Linux][6] is almost impossibly small. I dug through my collection of old thumb drives; the smallest one was 128MB, which is still eight times the size of Tiny Core's image. - -By default, Tiny Core includes the base OS, assuming you have an Ethernet connection to the internet so you can install only the applications you need. It's such an extremely efficient model that it doesn't even include an application to install the OS (although you can download it from the Tiny Core repository when you're ready to install). - -I've run Tiny Core from a 128MB thumb drive on a system with 512MB RAM, and the performance was excellent, as you might expect from an OS that takes only 16MB. Performance slows only when browsing the internet in a web browser, but the blame lies with the complexity of most modern websites more than Tiny Core. - -Without a GUI, Tiny Core runs well on a mere 64MB of RAM. - -#### Installation - -[Download Tiny Core][7] and write it to a thumb drive with **dd** or [Etcher][8]. - -Installing Tiny Core is easy, once you download the **tc-install** or **tc-install-GUI** application using the **Apps** icon in the launcher bar at the bottom of the screen. - -![Tiny Core installer][9] - -You have several options to install Tiny Core. You can install it to a thumb drive formatted as a Linux drive (this requires your computer to allow booting from a USB drive, which is common in most modern PCs but was less common for older ones), to a Microsoft FAT thumb drive (a hack for PCs that don't normally boot from USB drives), or even to a directory in an existing Linux partition. - -The installation is quick, and when you finish, you can reboot your computer and boot into your Tiny Core Linux OS. - -#### Applications - -Since it comes with little more than a text editor and a terminal, the first thing you should do is install some applications. The **Apps** icon in the bottom launcher bar displays all the Tiny Core packages available to you. The **Apps** repository also includes important drivers, so it's useful when you're looking to get a WiFi card or a printer working. - -When installing a new application or utility, you can choose between having the package load into Tiny Core at boot time or on demand. Choosing to load a package at boot makes it available to you immediately and still available after a reboot (as you would expect). Choosing to load it on demand means the package is available after Tiny Core downloads the package, but after a reboot, it won't be loaded into memory. This may keep your boot time fast and Tiny Core's footprint in RAM tiny, but it also means the package data isn't loaded into memory until you use it for the first time each session. - -The application selection is a good mix between user-centric apps, like office and graphics applications, and server-centric, such as [Samba][10] and web servers. - -Of course, once you start adding applications to Tiny Core, it becomes less tiny. Even the **Tiny Core Plus** image, which includes all WiFi drivers, on the Tiny Core website is only about 100MB, so "less tiny" is likely still well under 256MB or so. - -#### Bottom line - -Tiny Core is ideal for old computers with few resources, network boot images, and anyone who values applications over the OS. Tiny Core is a great weekend project: build the OS you want from 16MB until you have just as much of an OS as you need. - -### SliTaz - -![SliTaz Linux][11] - -The [SliTaz Linux][12] image is about 51MB, about four times the size of Tiny Core, with an impressive collection of drivers and applications included. In fact, if you didn't know better, you might think you booted into a 1GB Ubuntu image because everything you'd expect from a basic starter image is there: text editor, web browser, paint program, spreadsheet application, and so on. - -I've run SliTaz from a 128MB thumb drive on a system with 512MB RAM, and the performance was excellent. Performance slows when browsing heavy websites, but the included lightweight [Midori][13] browser keeps most sites loading quickly. - -At boot time, you can choose to run SliTaz without a GUI; it runs nicely on a mere 64MB of RAM. - -#### Installation - -There are many download options for SliTaz because its developers and community provide many variations for potential system limitations. For instance, there's a low RAM version for systems with as little as 24MB RAM, a version with Firefox instead of Midori, a version with no extra applications, and so on. - -If you're overwhelmed by options and just want to try it out, [download the rolling release][14]. This version is roughly 50MB and is updated weekly. If you fall in love with SliTaz, you can choose a download that's better for your needs—if the rolling release proves to be _too_ fresh for you. - -Once you've downloaded your choice of SliTaz image, write it to a thumb drive with **dd** or [Etcher][8] and reboot. - -Installing SliTaz to a thumb drive or hard drive is done through the **TazPanel** application. It guides you through partitioning your disk (as needed) and installs SliTaz to the destination you choose. - -![SliTaz installer][15] - -#### Applications - -The **TazPanel** application is SliTaz's control center. If you're a fan of OpenSUSE or Mageia (née Mandrake), you might find TazPanel familiar, at least in concept: it's a single application that provides access to system configuration, hardware detection, user and group management, system updates, and application installation. - -Available applications satisfy most basic requirements, meaning if you're not picky about which application you use to accomplish a task, then SliTaz's repositories probably have something for you. If you have specific requirements (GIMP 2.10 instead of GIMP 2.8, for instance), then you'll have to learn how to generate SliTaz packages. The good news is that the **tazpkg** command can convert from several packaging formats, including: - - * Debian packages (.deb, .udeb) - * RPM packages (.rpm) - * Slackware packages (.tgz) - * Puppy packages (.sfs, .pet) - * NuTyX packages (.cards.tar.xz) - * Arch and Alpine Linux packages (.apk, .pkg.tar.gz, .pkg.tar.xz) - * OpenWrt packages (.ipk, .opk) - * Paldo packages (.tar.bz2) - * Void packages (.xbps) - * Tiny Core packages (.tce, .tcel, .tcem, .tcz) - - - -#### Bottom line - -SliTaz is a fast, small Linux distribution with a centralized control panel that makes it easy to learn. Because its packaging tools can convert from other Linux packaging formats, its application selection is theoretically vast, making it easy for you to design your work environment with all your favorite tools. SliTaz is small but lethal, just like its arachnid logo. - -### Porteus - -![Porteus Linux][16] - -[Porteus][17] offers a few desktop options, with the smallest image around 270MB and the largest 350MB. That makes it one of the largest of tiny Linux images, but most of that space is dedicated to ensuring a smooth Linux desktop experience, to the point that you'll likely forget you're using a live distribution. Installing Porteus to an SSD drive or loading it to RAM during boot results in such a flawlessly smooth environment that you won't believe your OS occupies less space than half a CD-ROM. - -Porteus is tiny in the sense that its base image is comparatively small, but depending on the desktop you choose, it can easily require up to 1GB of RAM to run. While other tiny Linux distributions tend to capitalize on minimalist applications to preserve space and resources, Porteus expects you to use it as you would any other distribution. Install all your favorite apps and drivers and forget you're running on a tiny, compressed root filesystem. - -#### Installation - -Download Porteus from your [closest Porteus mirror][18], choosing from MATE, LXQT, LXDE, OpenBox, XFCE, Cinnamon, or KDE, depending upon your preference. If you have no preference, the MATE or KDE desktop are both good at balancing image size with a familiar-feeling desktop experience. - -![Porteus installer][19] - -opensource.com - -You can install Porteus to a thumb drive or an internal hard drive using the instructions in the [official installation guide][20]. The process is similar either way and results in a compressed root filesystem that never changes. It's a stable and contained filesystem upon which you overlay your changes as you use it. When you reboot, changes you make and applications you install are loaded into memory, so your environment is just as you left it. - -#### Applications - -Applications are called "modules" in Porteus lingo and are available from the [Unified Slackware Package Manager][21] (USM), which draws from five different Slackware repositories, meaning you have plenty of applications to choose from. - -#### Bottom line - -Porteus is a full Linux experience with a fraction of the space usually required. It's an excellent portable Linux distribution with lots of desktop options and lots of applications. - -### Bodhi Linux - -![Bodhi Linux][22] - -[Bodhi Linux][4] might not look tiny at first glance, with an ISO image of 740MB, but once it's installed, you'll be amazed at just how tiny it is. Bodhi runs smoothly on only 512MB of RAM but looks and feels like the desktop of tomorrow. Bodhi uses the [Enlightenment][23] desktop, a beautiful user interface that's lovingly crafted to be both small and powerful. - -Bodhi doesn't just use Enlightenment, though, it adds to it. Bodhi's configuration applications and system setting panels are custom interfaces to Enlightenment's sometimes overwhelming array of options. Bodhi makes some sane default choices for you and provides a subset of options. If you're a die-hard Enlightenment user, Bodhi's interpretation might not be pure enough for you, but for many users, Bodhi brings focus to the Enlightenment desktop. - -#### Installation - -[Download Bodhi Linux][24], write it to a thumb drive with **dd** or [Etcher][8], and reboot. - -The Bodhi installer is available from the **Applications** menu in the **Preferences** category. The installation application is **Ubiquity**, so the process is the same as installing Ubuntu. If you've never installed Ubuntu, don't worry; it's one of the easiest to install. - -![Bodhi installer][25] - -#### Applications - -Bodhi is based on the latest long term support (LTS) Ubuntu Linux release, so your available software knows almost no bounds. If it's available for Ubuntu Linux, Bohdi has access to it. - -#### Bottom line - -Bodhi Linux is a step down from the size of a typical Ubuntu install and a step up from many other minimalist Ubuntu environments because it uses Enlightenment. If you're looking for a Linux distribution that runs lighter than most without resorting to overlay filesystems and application modules, then Bodhi is the distribution for you. - -### Puppy Linux - -![Puppy Linux][26] - -Before there was Tiny Core or SliTaz or [AntiX][27] or Porteus, there was [Puppy Linux][28]. One of the original tiny Linux distributions, Puppy has endured for a decade and a half as a reliable, bootable OS for old computers and new users alike. - -Upon first boot, Puppy does its best to guide the user through any necessary steps to ensure everything works as expected. It's a lot of windows to wade through, but once you get through it all, you know without a doubt what works and what doesn't before you choose whether to install. - -Puppy is almost 300MB and failed to work on anything under 1GB RAM in my tests, so it's not exactly the tiniest Linux available. However, it's still a great, under-1GB operating system, and of the OSes in that category, it's one of the very friendliest. - -#### Installation - -[Download Puppy Linux][29] and write it to a thumb drive with **dd** or [Etcher][8] or burn it to a CD or DVD, then reboot. - -![Puppy installer][30] - -Puppy can install onto nearly anything that accepts data. The installer application, available from the top launcher bar, is called **Puppy Installer**, and it manages installing Puppy and applications for Puppy. - -Puppy Installer steps you through the process of installing the OS onto whatever media you have available. Puppy can boot from a thumb drive, an optical disc, a hard drive, and even an SD card. I've used Puppy on a computer with no hard drive whatsoever, no working optical drive, and no option to boot from USB. Because Puppy can write your configuration options to just about anything, I was able to use it with persistent data storage to an external device. - -#### Applications - -The **Puppy Installer** application is also used to install apps onto Puppy. Because Puppy is based on Ubuntu, there aren't likely to be any Linux packages missing from its repositories, and if there are, you can probably use a [Flatpak][31]. - -#### Bottom line - -Puppy is the original tiny Linux. While it's not the tiniest any more, it's by far the easiest. - -### Bonus: Silverblue - -![SilverBlue, not tiny, but tiny-adjacent][32] - -The concept of tiny Linux has changed over the years. Long ago, a tiny Linux distribution was something you downloaded onto a CD-R and ran from your optical drive while saving changes to external media. Later, it was something you ran from a thumb drive with dedicated space for persistent changes. Now it's all of those things plus the ability to install to internal drives or directories. - -What no one expected was for Linux to kick off the craze for containers, in which applications are self-contained Linux systems running in a para-virtualized environment. What was once a niche hobby for people who either loved to optimize disk space or who loved to resurrect ancient computers quickly became a salient requirement for developers who wanted to develop containers without adding too much overhead to their applications. All the work put into the minimalist, ephemeral Linux distributions suddenly paid off in an unexpected way. - -With the concept of what a root filesystem looks like, the Fedora Project's [Silverblue][33] experiment is an effort to create an immutable OS. It's an operating system that never changes and instead gets updates and application installs in the form of, essentially, containers. - -Silverblue at 2.1GB is by no means a tiny Linux distribution, but in many ways, it's a child of the tiny Linux and container movements. - -#### Installation - -[Download Silverblue][34] and write it to a thumb drive with **dd** or [Etcher][8] or burn it to a CD or DVD, then reboot. - -After booting into Silverblue, install it to an internal hard drive using [Anaconda][35], the standard, friendly Fedora Linux installer. - -![Anaconda installer][36] - -#### Applications - -Silverblue doesn't install applications in the traditional sense; instead, it runs containers over the top of its base OS. Specifically, it uses Flatpaks for GUI applications and [Toolbox][37] for commands. - -Because Flatpaks aren't nearly as common as traditional Fedora RPM packages, Silverblue also provides **package layering**, a way to convert Fedora RPM packages to Silverblue. - -#### Bottom line - -Silverblue could be a fun experiment testing out emerging technology, or it could be the future of the desktop OS. It's tiny only in the sense that its root filesystem remains the same size regardless of updates and applications added onto it, but it's worth looking at to see where the strange obsession with tiny distributions has delivered the Linux community and industry. Don't forget to tip your hat to the 11MB pioneers on your way out. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/linux-distros-to-try - -作者:[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/marcobravo -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) -[2]: http://lubuntu.net -[3]: http://peppermintos.com -[4]: https://www.bodhilinux.com/ -[5]: https://opensource.com/sites/default/files/uploads/tinycore.jpg (Tiny Core Linux) -[6]: http://tinycorelinux.net/ -[7]: http://tinycorelinux.net/welcome.html -[8]: https://www.balena.io/etcher/ -[9]: https://opensource.com/sites/default/files/uploads/tc-install-gui.png (Tiny Core installer) -[10]: https://www.samba.org/ -[11]: https://opensource.com/sites/default/files/uploads/slitaz.jpg (SliTaz Linux) -[12]: http://www.slitaz.org/en/ -[13]: https://github.com/midori-browser/core -[14]: http://slitaz.org/en/get/#rolling -[15]: https://opensource.com/sites/default/files/uploads/slitaz-install.jpg (SliTaz installer) -[16]: https://opensource.com/sites/default/files/uploads/porteus.jpg (Porteus Linux) -[17]: http://www.porteus.org/ -[18]: http://porteus.org/porteus-mirrors.txt -[19]: https://opensource.com/sites/default/files/images/porteus-installer.png (Porteus installer) -[20]: http://www.porteus.org/component/content/article/26-tutorials/general-info-tutorials/114-official-porteus-installation-guide.html -[21]: http://www.porteus.org/tutorials/9-modules/149-usm.html -[22]: https://opensource.com/sites/default/files/uploads/bodhi.jpg (Bodhi Linux) -[23]: https://www.enlightenment.org/ -[24]: https://www.bodhilinux.com/download -[25]: https://opensource.com/sites/default/files/uploads/bodhi-install.jpg (Bodhi installer) -[26]: https://opensource.com/sites/default/files/uploads/puppy.jpg (Puppy Linux) -[27]: https://antixlinux.com/ -[28]: http://puppylinux.com/ -[29]: http://puppylinux.com/index.html#download -[30]: https://opensource.com/sites/default/files/uploads/puppy-install.jpg (Puppy installer) -[31]: https://docs.fedoraproject.org/en-US/fedora-silverblue/getting-started/#flatpak -[32]: https://opensource.com/sites/default/files/uploads/silverblue.jpg (SilverBlue, not tiny, but tiny-adjacent) -[33]: https://silverblue.fedoraproject.org/ -[34]: https://silverblue.fedoraproject.org/download -[35]: https://fedoraproject.org/wiki/Anaconda -[36]: https://opensource.com/sites/default/files/uploads/silverblue-install.jpg (Anaconda installer) -[37]: https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ diff --git a/translated/tech/20190625 5 tiny Linux distros to try before you die.md b/translated/tech/20190625 5 tiny Linux distros to try before you die.md new file mode 100644 index 0000000000..a0a2fa4f2d --- /dev/null +++ b/translated/tech/20190625 5 tiny Linux distros to try before you die.md @@ -0,0 +1,262 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5 tiny Linux distros to try before you die) +[#]: via: (https://opensource.com/article/19/6/linux-distros-to-try) +[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/marcobravo) + +5 个不容错过的微型 Linux 发行版 +====== +这些微型 Linux 发行版可以让你的老爷机复活、启动一个损坏的系统,或者是确保在公共电脑上进行安全的操作。 +![Hand putting a Linux file folder into a drawer][1] + +可供日常使用的 Linux 发行版比比皆是,不过其中有一些发行版常常被我们忽视,因为它们实在是太小了。但这些微型 Linux 发行版其实是一种非常强大的创新:使用一套完整的操作系统驱动一台只有不到 1 GB 存储空间和 512 MB 内存的计算机,真的是终极的黑客作风。 + +微型发行版的用法有很多种,比如说: + + * 从垃圾桶边挽救回那些又老又慢的电脑。你可以继续使用那些本来已经计划报废的机器,直到它们彻底解体(而不是在刚开始感觉有点儿慢的时候就扔掉)。 + * 使用 U盘 启动一个损坏的系统来恢复数据或者修复启动分区。 + * 确保在安全和隐私的操作环境下使用公共电脑。如果使用 U盘 启动酒店大厅或者图书馆里的一台公共电脑,你是可以确定操作环境是安全的。 + +轻量级发行版有很多种,比如说 [Lubuntu][2]、[Peppermint OS][3] 和 [Bodhi][4],但是那些真正微型的发行版又有一些独到之处。下面就是你不容错过的五个微型发行版: + +### Tiny Core + +![Tiny Core Linux][5] + +[Tiny Core Linux][6] 小得近乎不可思议:终端版本只有 11 MB,图形界面版本只有 16 MB。我翻了一下之前收集的旧 U盘,最小的一个是 128 MB 的,也有 Tiny Core 镜像文件的八倍之大呢。 + +Tiny Core 默认包括只包括了基础操作系统,你需要通过以太网下载需要的应用程序。由于设计得极端精简,甚至安装完整操作系统的应用程序都没有被包含在内(不过需要的话可以从 Tiny Core 的软件仓库下载)。 + +我使用过一个 128 MB 的 U盘 在一台只有 512 MB 内存的机器上运行了 Tiny Core,对于一个只有 16 MB 的操作系统来说,效果算是非常棒了。只有在使用网页浏览器的时候速度才会变慢,但这主要是由于大部分现代网站太过复杂,而不是 Tiny Core 的问题。 + +如果不使用图形界面,运行 Tiny Core 就只需要 64 MB 的内存了。 + +#### 安装 + +[下载 Tiny Core][7] 并使用 **dd** 或者 [Etcher][8] 写入 U盘。 + +你只需要点击屏幕底部启动栏上的 **Apps** 图标下载 **tc-install** 或者 **tc-install-GUI** 应用,就可以轻松安装 Tiny Core了。 + +![Tiny Core installer][9] + +安装 Tiny Core 有几种不同的方式。你可以把它安装在一个格式化为 Linux 驱动的 U盘 里(这要求你的电脑支持使用 USB 驱动启动。大多数现代电脑都支持,但是在老一些的电脑上不太常见),或者安装在微软 FAT 文件系统的 U盘 里(这对于大多数不支持从 USB 驱动启动的电脑来说非常管用),或者甚至安装在一个现有 Linux 分区的一个文件夹里。 + +安装过程非常快,完成之后就可以重启计算机,进入到 Tiny Core Linux 系统中啦。 + +#### 应用程序 + +由于系统自带程序基本上只有一个文本编辑器和一个终端,你所要做的第一件事情就应该是安装一些应用程序。底部启动栏上的 **Apps** 图标展示了 Tiny Core 提供的所有软件包。**Apps** 软件仓库同时包含了一些重要的驱动程序,对于使用 WiFi 网卡或者是打印机等等都很有帮助。 + +在安装一个新的应用程序或者实用程序的时候,你可以选择在 Tiny Core 启动的时候就加载软件包,或者是需要的时候才加载。如果选择启动时加载,那么不仅该软件立即就可以使用,并且(不出所料地)下次重启之后也依然可用;如果选择需要时加载,那么在软件包下载完成之后仍然可以马上使用,但是重启之后就不会被自动加载到内存中了。这样可以保持很快的开机速度,并且只占用很少的内存,但同时也意味着每次开机之后,该应用的软件包只有在第一次被使用的时候才会被加载到内存中。 + +可供选择的应用程序同时包括像 office 和图像应用之类的用户端应用,以及像 [Samba][10] 和网站服务器这种的服务端应用。 + +当然了,随着你在 Tiny Core 上添加的应用程序越来越多,它就不那么“微型”了。不过在 Tiny Core 的网站上我们可以看到,即使是包括了所有 WiFi 驱动程序的 **Tiny Core Plus** 镜像文件也只有大约 100 MB,所以“不那么微型”也仍然很可能比 256 MB 要小很多。 + +#### 结论 + +Tiny Core 非常适合性能不佳的老爷机、用来通过网络启动的镜像文件,以及任何更看重应用而不是操作系统的人。Tiny Core 可以作为一个很好的周末工程来实践:从 16 MB 开始一步步搭建操作系统,直到你感觉这个操作系统已经足够满足你的需求了。 + +### SliTaz + +![SliTaz Linux][11] + +[SliTaz Linux][12] 的镜像文件有大约 51 MB 大小,差不多是 Tiny Core 的四倍,但是包含一整套出色的驱动程序和应用程序。事实上,如果事先不知道的话,你可能会以为是通过一个 1 GB 的 Ubuntu 镜像启动的,因为能想到的任何一个基本启动镜像应该有的东西都在这儿:文本编辑器、网页浏览器、绘画工具、表格工具等等。 + +我使用过一个 128 MB 的 U盘 在一个 512 MB 内存的机器上运行了 SliTaz,效果非常不错。浏览复杂网站的时候性能会下降,但是系统包含的轻量级浏览器 [Midori][13] 可以快速加载绝大多数网站。 + +你可以在启动的时候选择进入没有图形界面的 SliTaz,这样在仅仅只有 64 MB 的机器上也可以很好地运行。 + +#### 安装 + +可供下载的 SliTaz 有很多种,因为它的开发者和社区针对可能存在的限制提供了非常多的版本。比如说,有一种低内存版本可以在只有 24 MB 内存的机器上运行;有一种版本使用 Firefox 而不是 Midori;还有一种版本没有包含额外的应用程序,等等。 + +如果你挑花了眼,只想赶紧选择一个版本尝试一下的话,那就 [下载滚动发布版本吧][14]。这个版本有差不多 50 MB 大小,每周都会更新。如果你爱上了 SliTaz,而滚动发布版本又更新得 *过快* 了的话,可以再选择一个更符合你需求的版本。 + +下载好你选择的 SliTaz 镜像文件之后,你就可以用 **dd** 或者 [Etcher][8] 将它写入 U盘,然后重启。 + +将 SliTaz 安装在 U盘 或者硬盘上需要通过 **TazPanel** 这个应用程序来实现。它会引导你对硬盘进行需要的分区,然后将 SliTaz 安装在你选择的地方。 + +![SliTaz installer][15] + +#### 应用程序 + +SliTaz 的控制中心是 **TazPanel** 这个应用程序。如果你喜欢 OpenSUSE 或者 Mageia (最初被称为 Mandrake),那 TazPanel 对你来说应该不会陌生(至少在核心思想上):包括系统设置、硬件监测、用户和用户组的管理、系统升级、安装应用程序在内的这些功能,都在这一个应用程序内实现。 + +SliTaz 提供的应用程序可以满足大多数基本需求,如果你不是非常在意完成某一项任务必须使用哪一个应用程序的话,那么在 SliTaz 的软件仓库里应该可以找到你想要的应用。如果你有一些特别的需求(比如说想要使用 GIMP 2.10 而不是 GIMP 2.8),那么就需要学习如何生成 SliTaz 软件包了。好消息是,**tazpkg** 命令支持从好几种软件包格式转换过来,包括: + + * Debian 软件包 (.deb, .udeb) + * RPM 软件包 (.rpm) + * Slackware 软件包 (.tgz) + * Puppy 软件包 (.sfs, .pet) + * NuTyX 软件包 (.cards.tar.xz) + * Arch 和 Alpine Linux 软件包 (.apk, .pkg.tar.gz, .pkg.tar.xz) + * OpenWrt 软件包 (.ipk, .opk) + * Paldo 软件包 (.tar.bz2) + * Void 软件包 (.xbps) + * Tiny Core 软件包 (.tce, .tcel, .tcem, .tcz) + +#### 结论 + +SliTaz 是一个快速而小巧的 Linux 发行版,并且非常容易上手(因为有一个中心化的控制面板)。由于它的软件包工具支持从其它格式的 Linux 软件包转换成自己的格式,它的应用程序理论上来说是非常丰富的,你可以很容易地使用喜欢的工具搭建自己的工作环境。SliTaz 很小,但是也非常具有杀伤力,正如它的蜘蛛 logo 所暗示的那样。 + +### Porteus + +![Porteus Linux][16] + +[Porteus][17] 提供了不同的桌面环境可供选择,最小的镜像文件大约在 270 MB 左右,最大的有 350 MB。它是微型 Linux 中镜像文件最大的一个,但是这些额外的空间都被用来确保一个非常顺畅的 Linux 桌面环境的体验,以至于你很可能会忘了自己是在使用一个 live 版本。如果将 Porteus 安装到 SSD 或者是在启动的时候加载到内存里的话,你就会得到一个如此天衣无缝地顺畅的环境,以至于不会相信你的操作系统所占用的空间只有不到半个 CD-ROM 的大小。 + +Porteus 的基础镜像文件相对来说比较小,因此被称为是“微型”,但是根据你选择的桌面环境版本,Porteus 有可能会需要 1 GB 之多的内存才可以运行。尽管其它微型 Linux 发行版倾向于通过精简应用程序来节约空间和资源,Porteus 却希望你像普通发行版一样来使用它。忘掉你是在使用一个微型的压缩根文件系统,尽情安装所有你喜欢的应用程序吧。 + +#### 安装 + +可以在 [离你最近的 Porteus 镜像网站][18] 上下载 Porteus,并且从 MATE、LXQT、LXDE、OpenBox、XFCE、Cinnamon 或者 KDE 里选择自己喜欢的桌面环境。如果没有特殊偏好,MATE 或者是 KDE 桌面都是不错的选择,他们可以提供熟悉的桌面环境体验,并且镜像文件又不至于太大。 + +![Porteus installer][19] + +你可以根据 [官方的安装指南][20] 将 Porteus 安装到一个 U盘 或者是内部硬盘里。这两种方式非常相似,都会使用一个不能被改变的压缩根文件系统。这是一种稳定的、受限制的文件系统,会根据你的使用被修改。你所做的变更和安装的应用程序在重启的时候都会被加载到内存里,从而还原你关机前的使用环境。 + +#### 应用程序 + +应用程序在 Porteus 里被称为“模块”,由 [Slackware 软件包统一管理器][21](USM)提供。USM 的资源涵盖五个不同的 Slackware 软件仓库,所以可供选择的应用还是很丰富的。 + +#### 结论 + +Porteus 可以提供完整的 Linux 使用体验,却只使用了正常 Linux 所需要空间的一小部分。这是一个配备了很多种可供选择的桌面环境和很多应用程序的出色的便携式 Linux 发行版。 + +### Bodhi Linux + +![Bodhi Linux][22] + +[Bodhi Linux][4] 的 ISO 镜像文件有 740 MB 大小,初看之下并不是很“微型”,不过一旦安装完成之后,你就会惊讶于它是多么微型了。Bodhi 在 512 MB 大小的内存上也可以顺畅运行,并且它的桌面环境看起来就像是来自未来一样。Bodhi 使用的是 [Enlightenment][23] 桌面,这是一个精心制作的优美的用户界面,小巧而强悍。 + +不过 Bodhi 并不只是简单地使用 Enlightenment,而是在此基础上增色不少。Bodhi 在配置型应用程序和系统设置面板上都进行了界面处理,避免了 Enlightenment 有时显得过于繁复的选项。Bodhi 替你做了一些很好的默认选择,并且只显示全部选项的一部分。如果你是一个 Enlightenment 狂热分子,那么 Bodhi 这样的做法对你来说可能显得不是很纯粹,但是对于大多数用户来说,Bodhi 这样做可以让人更加专注于 Enlightenment 桌面本身。 + +#### 安装 + +[下载 Bodhi Linux][24],通过 **dd** 或者 [Etcher][8] 写入 U盘,然后重启。 + +Bodhi 安装器可以在 **设置** 页面的 **应用程序** 菜单里找到。安装程序用的是 **Ubiquity**,所以整个过程和安装 Ubuntu 是一样的。如果你没有安装过 Ubuntu 也不必担心,因为这是最好安装的发行版之一了。 + +![Bodhi installer][25] + +#### 应用程序 + +Bodhi 是基于最新的 Ubuntu 长期维护发布版的,所以可供使用的应用程序简直数不胜数。只要是在 Ubuntu 上可以使用的应用,Bohdi 上就同样可以找到。 + +#### 结论 + +Bodhi Linux 相比一个标准的 Ubuntu 来说要小不少,但是相比其它微型 Ubuntu 环境来说又好一些(因为使用了 Enlightenment)。如果你在找一个比大多数发行版更轻量的 Linux 发行版,但是又不想使用 OverlayFS 或者是应用程序模块的话,那么 Bodhi 就是一个不错的选择了。 + +### Puppy Linux + +![Puppy Linux][26] + +早在 Tiny Core、SliTaz、[AntiX][27] 或者是 Porteus 诞生之前,就已经有 [Puppy Linux][28] 了。作为最早的微型 Linux 发行版之一,Puppy 已经历经了十五年风霜,并且无论是对于老爷机还是新用户来说始终都是一个可靠的、可启动的操作系统。 + +为了保证正常运行,Puppy 会在第一次启动之后引导用户完成必要的设置步骤。整个过程涉及很多个窗口,但是一旦完成,你就会对一切功能了如指掌,然后再决定是否需要安装。 + +Puppy 有几乎 300 MB 大小,并且在我测试的 1 GB 内存的机器上并不能正常运行,所以它并不是一个特别微型的 Linux 发行版。尽管如此,它仍然是一个非常棒的 1 GB 以下的操作系统,并且在该类系统里算是非常友好的一个。 + +#### 安装 + +[下载 Puppy Linux][29],然后通过 **dd** or [Etcher][8] 写入 U盘,或者是刻录到 CD 或者 DVD 里,然后重启。 + +![Puppy installer][30] + +Puppy 几乎可以安装在支持任何一种数据格式的载体上。你可以在顶部启动栏里找到 **Puppy Installer** 安装程序,这个程序负责安装 Puppy 以及 Puppy 的应用程序。 + +Puppy 安装器会一步步引导你将系统安装在你提供的任何一种媒介上。Puppy 可以从 U盘、光盘、硬盘,或者甚至是 SD 卡上启动。我曾经在一台没有硬盘、光驱出了故障,并且也无法从 USB 启动的计算机上成功运行了 Puppy。由于 Puppy 支持在任何载体上写入你的配置选项,我甚至可以在一个拥有永久数据存储的外部设备上使用它。 + +#### 应用程序 + +**Puppy 安装器** 这个应用同样被用来在 Puppy 上安装应用。由于 Puppy 是基于 Ubuntu 的,它的软件仓库几乎不会缺少任何一个 Linux 软件包,并且如果真的出现了这种情况的话,你也可以使用 [Flatpak][31]。 + +#### 结论 + +Puppy 是最早的微型 Linux。尽管它已经不是最微型的了,却是目前最易用的一个。 + +### 附赠:Silverblue + +![SilverBlue, not tiny, but tiny-adjacent][32] + +微型 Linux 这个概念是随着时间不断变化的。很久以前,微型 Linux 发行版意味着需要下载到 CD-R 里,从光驱启动,然后将修改写入外部媒介中。后来,你可以从 U盘 启动它,并且有专门用来记录永久修改的空间。现在的微型 Linux 不仅支持上面两种方法,还可以被直接安装在内部驱动或者文件夹里。 + +大家都没有想到 Linux 开创了容器的热潮 —— 容器里应用程序是在半虚拟化的环境中运行的一套独立的 Linux 系统。曾经只是属于喜欢优化硬盘空间或者重新利用老爷机的人们的小众爱好,很快成为了那些想要开发容器但又不想在应用程序上添加太多负载的人的强烈需求。那些在极简化的、不起眼的 Linux 发行版上所付出的辛苦,一夜之间以一种意想不到的方式得到了回报。 + +立足于根文件系统这个概念,Fedora 项目发起的 [Silverblue][33] 试验旨在创造一个不可修改的操作系统。该操作系统主要通过容器的形式来更新系统以及安装应用,系统本身永远不会改变。 + +2.1 GB 的 Silverblue 可不是一个微型 Linux 发行版,但是从某种程度上来说,它是微型 Linux 和容器运动的产物。 + +#### 安装 + +[下载 Silverblue][34],然后通过 **dd** or [Etcher][8] 写入 U盘,或者是刻录到 CD 或者 DVD 里,然后重启。 + +启动到 Silverblue 之后,使用 [Anaconda][35](标准的、友好的 Fedora 安装器)将它安装在一个内部硬盘里。 + +![Anaconda installer][36] + +#### 应用程序 + +Silverblue 安装应用的方式和传统意义上不同:它是在基础操作系统之上运行容器。具体来说,它使用 Flatpaks 运行 GUI 应用程序,使用 [Toolbox][37] 运行命令。 + +由于 Flatpaks 并非像传统的 Fedora RPM 软件包一样常见,Silverblue 也提供了一种可以将 Fedora RPM 软件包转换成 Silverblue 形式的方法:**package layering**。 + +#### 结论 + +Silverblue 可能是一个用来尝试前沿科技的有趣实验,或者也可能是桌面操作系统的未来。它之所以被称为微型,只是因为根文件系统的大小不会随着系统升级或者安装应用而改变。不过,透过 Silverblue 来看看对微型 Linux 的迷恋在带领着 Linux 社区和行业往哪个方向走,也是一件挺有意思的事情。对了,走之前不要忘了向 11 MB 大小的微型 Linux 先驱们脱帽致敬。 + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/linux-distros-to-try + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chen-ni](https://github.com/chen-ni) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth/users/marcobravo +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/yearbook-haff-rx-linux-file-lead_0.png?itok=-i0NNfDC (Hand putting a Linux file folder into a drawer) +[2]: http://lubuntu.net +[3]: http://peppermintos.com +[4]: https://www.bodhilinux.com/ +[5]: https://opensource.com/sites/default/files/uploads/tinycore.jpg (Tiny Core Linux) +[6]: http://tinycorelinux.net/ +[7]: http://tinycorelinux.net/welcome.html +[8]: https://www.balena.io/etcher/ +[9]: https://opensource.com/sites/default/files/uploads/tc-install-gui.png (Tiny Core installer) +[10]: https://www.samba.org/ +[11]: https://opensource.com/sites/default/files/uploads/slitaz.jpg (SliTaz Linux) +[12]: http://www.slitaz.org/en/ +[13]: https://github.com/midori-browser/core +[14]: http://slitaz.org/en/get/#rolling +[15]: https://opensource.com/sites/default/files/uploads/slitaz-install.jpg (SliTaz installer) +[16]: https://opensource.com/sites/default/files/uploads/porteus.jpg (Porteus Linux) +[17]: http://www.porteus.org/ +[18]: http://porteus.org/porteus-mirrors.txt +[19]: https://opensource.com/sites/default/files/images/porteus-installer.png (Porteus installer) +[20]: http://www.porteus.org/component/content/article/26-tutorials/general-info-tutorials/114-official-porteus-installation-guide.html +[21]: http://www.porteus.org/tutorials/9-modules/149-usm.html +[22]: https://opensource.com/sites/default/files/uploads/bodhi.jpg (Bodhi Linux) +[23]: https://www.enlightenment.org/ +[24]: https://www.bodhilinux.com/download +[25]: https://opensource.com/sites/default/files/uploads/bodhi-install.jpg (Bodhi installer) +[26]: https://opensource.com/sites/default/files/uploads/puppy.jpg (Puppy Linux) +[27]: https://antixlinux.com/ +[28]: http://puppylinux.com/ +[29]: http://puppylinux.com/index.html#download +[30]: https://opensource.com/sites/default/files/uploads/puppy-install.jpg (Puppy installer) +[31]: https://docs.fedoraproject.org/en-US/fedora-silverblue/getting-started/#flatpak +[32]: https://opensource.com/sites/default/files/uploads/silverblue.jpg (SilverBlue, not tiny, but tiny-adjacent) +[33]: https://silverblue.fedoraproject.org/ +[34]: https://silverblue.fedoraproject.org/download +[35]: https://fedoraproject.org/wiki/Anaconda +[36]: https://opensource.com/sites/default/files/uploads/silverblue-install.jpg (Anaconda installer) +[37]: https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ From a5d3bf09f8a7e350827199c85d183302db71ce09 Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 29 Jun 2019 11:02:30 +0800 Subject: [PATCH 183/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190625 The innovation delusion.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190625 The innovation delusion.md b/sources/tech/20190625 The innovation delusion.md index cfb74e42b9..53f7ffb412 100644 --- a/sources/tech/20190625 The innovation delusion.md +++ b/sources/tech/20190625 The innovation delusion.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From fb19cd43f5d35668b17216dc86dd2a1935c93286 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 11:17:38 +0800 Subject: [PATCH 184/336] PRF:20180629 100 Best Ubuntu Apps.md --- .../tech/20180629 100 Best Ubuntu Apps.md | 256 +++++++++--------- 1 file changed, 126 insertions(+), 130 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index c82f5cc099..fdacde6fb3 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -1,55 +1,51 @@ -warmfrog translating - -100 Best Ubuntu Apps +100 个最佳 Ubuntu 应用 ====== -今年早些时候我们发布了一个 [2018 年最好的 20 个 Ubuntu 应用][1]列表,可能对很多用户来说都很有用。现在我们几乎到 2018 年下半年了,所以今天我们打算看一下 Ubuntu 上最好的 100 个应用,你可能会觉得有帮助。 +今年早些时候我们发布了一个 [2018 年最好的 20 个 Ubuntu 应用][1]列表,可能对很多用户来说都很有用。现在我们几乎到 2018 年下半年了(LCTT 译注:好吧,我们翻译的有些晚了,顺便打个广告,[LCTT 欢迎你,有志于通过翻译为开源做些贡献的同学!][111]),所以今天我们打算看一下 Ubuntu 上最好的 100 个应用,你可能会觉得有帮助。 ![100 Best Ubuntu Apps][2] -很多用户最近从 Microsoft Windows 转换到了 Ubuntu,可能面临着这样一个困境:寻找它们之前使用了数年的操作系统上的应用软件的最好替代应用。Ubuntu 拥有上千个免费使用和开源应用软件比 Windows 和其它 OS 上的付费软件运行的更好。 +很多用户最近从 Microsoft Windows 转换到了 Ubuntu,可能面临着这样一个困境:寻找它们之前使用了数年的操作系统上的应用软件的最好替代应用。Ubuntu 拥有上千个免费使用和开源应用软件,比 Windows 和其它 OS 上的付费软件运行的更好。 下列列表归纳了各种分类下很多应用软件的功能特点,因此,你可以找到匹配你的需求的最好的应用。 -### **1\. Google Chrome 浏览器** +### 1、Google Chrome 浏览器 -几乎所有 Linux 发行版默认安装了 Mozilla Firefox 网络浏览器,并且它是 Google Chrome 的强力竞争对手。但是 Chrome 相对 Firefox 有它自己的优点,给了你 Google 账户的入口,你可以通过它来同步你的书签,浏览历史,扩展。例如从其它操作系统和手机的 Chrome 浏览器同步。 +几乎所有 Linux 发行版都默认安装了 Mozilla Firefox 网络浏览器,并且它是 Google Chrome 的强力竞争对手。但是 Chrome 相对 Firefox 而言有它自己的优点,比如它可以让你直接访问你的 Google 账户,你可以通过它来同步你在其它操作系统和手机上的 Chrome 浏览器的书签、浏览历史、扩展等等。 ![Chrome][3] Google Chrome 为 Linux 集成了最新的 Flash 播放器,其它 Linux 上的浏览器像 Mozilla Firefox 和 Opera 网络浏览器则不是这样。如果你在 Windows 上经常使用 Chrome,那么在 Linux 上也用它是最好的选择。 -### 2\. **Steam** +### 2、Steam 现在在 Linux 上玩游戏已经不是问题了,这在很多年前还是一个遥不可及的梦。在 2013 年,Valve 发布了 Linux 上的 Steam 游戏客户端,此后一切都变了。早期用户犹豫着从 Windows 转到 Linux,只是因为它们不能在 Ubuntu 上玩它们最喜欢的游戏,但是现在已经不是这样了。 ![Steam][4] -一些用户可能发现在 Linux 上安装 Steam 有点棘手,但如果能在 Linux 上玩上千的 Steam 游戏时这么做就是值得的。一些流行的像 Counter Strike 这样的高端游戏:Global Offensive, Hitman, Dota 2 在 Linux 上都能获取,你只需要确保你满足玩这些游戏的最小硬件需求。 +一些用户可能发现在 Linux 上安装 Steam 有点棘手,但如果能在 Linux 上玩上千的 Steam 游戏时这么做就是值得的。一些流行的高端游戏,如《反恐精英:全球攻势》、《Hitman》、《Dota 2》在 Linux 上都能获取,你只需要确保你满足玩这些游戏的最小硬件需求。 ``` $ sudo add-apt-repository multiverse - $ sudo apt-get update - $ sudo apt-get install steam ``` -### **3\. WordPress 桌面客户端** +### 3、WordPress 桌面客户端 -是的,没错,WordPress 有它专有的 Ubuntu 平台的客户端,你可以用来管理你的 WordPress 站点。你同样可以在桌面客户端上单独写和设计桌面客户端而不用转到浏览器。 +是的,没错,WordPress 有它专有的 Ubuntu 平台的客户端,你可以用来管理你的 WordPress 站点。你可以只在桌面客户端上撰写和设计你的站点而不用转到浏览器。 ![][5] -如果你有 WordPress 支持的站点,那么这个桌面客户端能够让你在单个窗口内追踪所有的 WordPress 通知。你同样可以检查站点的博客性能状态。桌面客户端可以在 Ubuntu 软件中心中获取,你可以在那里下载和安装。 +如果你拥有 WordPress 建立的站点,那么这个桌面客户端就是你必备的应用,它能够让你在单个窗口内追踪所有的 WordPress 通知。你也可以查看站点博客的数据。桌面客户端可以在 Ubuntu 软件中心中获取,你可以在那里下载和安装。 -### **4\. VLC 媒体播放器** +### 4、VLC 媒体播放器 -VLC 是一个非常流行的跨平台的开源媒体播放器,同样在 Ubuntu 中可以获取。使得 VLC 成为一个最好的媒体播放器的原因是它能够播放地球上能够获得的任何音频视频格式,而且不会出现任何问题。 +VLC 是一个非常流行的跨平台的开源媒体播放器,同样在 Ubuntu 中可以获取。使得 VLC 成为一个最好的媒体播放器的原因是它能够毫无问题地播放世界上任何音频视频格式。 ![][6] -VLC 有一个平滑的用户界面,易于使用,除此之外,它提供了很多特点包括在线视频流,音频和视频自定义,等。 +VLC 有一个平滑的用户界面,易于使用,除此之外,它提供了很多功能,包括在线视频流、音频和视频自定义等。 ``` $ sudo add-apt-repository ppa:videolan/master-daily @@ -57,13 +53,13 @@ $ sudo apt update $ sudo apt-get install vlc qtwayland5 ``` -### **5\. Atom 文本编辑器** +### 5、Atom 文本编辑器 -由 Github 开发,Atom 是一个免费和开源的文本编辑器,它同样能够被用做集成开发环境(IDE)来进行主流编程语言的编码和编辑。Atom 开发者声称它是 21 世纪的完全可控制的文本编辑器。 +由 GitHub 开发,Atom 是一个自由开源的文本编辑器,它同样能够被用做集成开发环境(IDE)来进行主流编程语言的编码和编辑。Atom 开发者声称它是完全可魔改的 21 世纪文本编辑器。 ![][7] -Atom 文本编辑器属于最好的用户界面之一,它是一个富文本编辑器提供了自动补全,语法高亮、扩展与插件支持。 +Atom 文本编辑器属于最好的用户界面之一,它是一个富文本编辑器,提供了自动补全、语法高亮,支持扩展与插件。 ``` $ sudo add-apt-repository ppa:webupd8team/atom @@ -71,9 +67,9 @@ $ sudo apt-get update $ sudo apt-get install atom ``` -### **6\. GIMP 图像编辑器** +### 6、GIMP 图像编辑器 -GIMP (GNU 图形操作程序)是 Ubuntu 上免费和开源的图像编辑器。有争议说它是 Windows 上 Adobe Photoshop 的最好替代品。如果你过去经常用 Adobe Photoshop,会觉得很难习惯 GIMP,但是你可以自定义 GIMP 使它看起来与 Photoshop 非常相似。 +GIMP(GNU 图形操作程序)是 Ubuntu 上自由开源的图像编辑器。无疑它是 Windows 上 Adobe Photoshop 的最好替代品。如果你过去经常用 Adobe Photoshop,会觉得很难习惯 GIMP,但是你可以自定义 GIMP 使它看起来与 Photoshop 非常相似。 ![][8] @@ -83,23 +79,23 @@ GIMP 是一个功能丰富的图片编辑器,你可以随时通过安装扩展 $ sudo apt-get install gimp ``` -### **7\. Google Play 音乐桌面播放器** +### 7、Google Play 音乐桌面播放器 -Google Play 音乐桌面播放器是一个开源的音乐播放器,它是 Google Play Music 的一个替代品,或者说更好。Google 总是缺少桌面的音乐客户端,但第三方的应用完美的填充了空白。 +Google Play 音乐桌面播放器是一个开源的音乐播放器,它是 Google Play 音乐的一个替代品,或者说比它更好。Google 一直少个桌面的音乐客户端,但第三方的应用完美的填充了空白。 ![][9] -就像你在截屏里看到的,它的界面在外观和感觉上都是首屈一指的。你仅仅需要登录 Google 账户,之后会导入所有你的音乐和你的最爱到桌面客户端里。你可以从它的官方 [站点][10]下载安装文件并使用软件中心安装它。 +就像你在上述截屏里看到的,它的界面在外观和感觉上都是首屈一指的。你只需要登录 Google 账户,之后就会导入所有你的音乐和你的最爱到桌面客户端里。你可以从它的官方[站点][10]下载安装文件并使用软件中心安装它。 -### **8\. Franz** +### 8、Franz -Franz 是一个即时消息客户端,结合了聊天和信息服务到一个应用中。它是现代化的即时消息平台之一,在单个应用中支持 Facebook Messenger, WhatsApp, Telegram, 微信,Google Hangouts, Skype。 +Franz 是一个即时消息客户端,它将聊天和信息服务结合到了一个应用中。它是现代化的即时消息平台之一,在单个应用中支持 Facebook Messenger、WhatsApp、Telegram、微信、Google Hangouts、 Skype。 ![][11] -Franz 是一个完整的消息平台,你同样可以在商业中用它来管理大量的客户服务。为了安装 Franz,你需要从它的[网站][12]下载安装包,在软件中心中打开。 +Franz 是一个完备的消息平台,你可以用于商业中管理大量的客户服务。要安装 Franz,你需要从它的[网站][12]下载安装包,在软件中心中打开。 -### **9\. Synaptic 包管理器** +### 9、Synaptic 包管理器 Synaptic 包管理器是 Ubuntu 上必有工具之一,因为它为我们通常在命令行界面安装软件的 ‘apt-get’ 命令提供了用户图形界面。它是各种 Linux 发行版中默认的应用的强力对手。 @@ -111,7 +107,7 @@ Synaptic 拥有非常简单的用户图形界面,相比其它的应用商店 $ sudo apt-get install synaptic ``` -### **10\. Skype** +### 10、Skype Skype 是一个非常流行的跨平台视频电话应用,如今在 Linux 系统的 Snap 应用中可以获取了。Skype 是一个即时通信应用,它提供了视频和音频通话,桌面共享等特点。 @@ -123,7 +119,7 @@ Skype 有一个优秀的用户图形界面,与 Windows 上的桌面客户端 $ sudo snap install skype ``` -### **13\. VirtualBox** +### 13、VirtualBox VirtualBox 是由 Oracle 公司开发的跨平台的虚拟化软件应用。如果你喜欢尝试新的操作系统,那么 VirtualBox 是为你准备的必备的 Ubuntu 应用。你可以尝试 Windows 内的 Linux,Mac 或者 Linux 系统中的 Windows 和 Mac。 @@ -131,7 +127,7 @@ VirtualBox 是由 Oracle 公司开发的跨平台的虚拟化软件应用。如 VB 实际做的是让你在宿机操作系统里可视化的运行顾客操作系统。它创建虚拟硬盘并在上面安装顾客操作系统。你可以在 Ubuntu 软件中心直接下载和安装。 -### **12\. Unity Tweak 工具** +### 12、Unity Tweak 工具 Unity Tweak 工具(Gnome Tweak 工具)对于每个 Linux 用户都是必须有的,因为它给了用户根据需要自定义桌面的能力。你可以尝试新的 GTK 主题,设置桌面角落,自定义图标集,改变 unity 启动器,等。 @@ -143,7 +139,7 @@ Unity Tweak 工具对于用户来说可能非常有用,因为它包含了从 $ sudo apt-get install unity-tweak-tool ``` -### **13\. Ubuntu Cleaner** +### 13、Ubuntu Cleaner Ubuntu Cleaner是一个系统管理工具,尤其被设计为移除不再使用的包,移除不必要的应用和清理浏览器缓存的。Ubuntu Cleaner 有易于使用的简易用户界面。 @@ -157,7 +153,7 @@ $ sudo apt-get update $ sudo apt-get install ubuntu-cleaner ``` -### 14\. Visual Studio Code +### 14、Visual Studio Code Visual Studio Code 是一个代码编辑器,你会发现它与 Atom 文本编辑器和 Sublime Text 非常相似,如果你曾用过的话。Visual Studio Code 证明是非常好的教育工具,因为它解释了所有东西,从 HTML 标签到编程中的语法。 @@ -165,7 +161,7 @@ Visual Studio Code 是一个代码编辑器,你会发现它与 Atom 文本编 Visual Studio 自身集成了 Git,它有优秀的用户界面,你会发现它与 Atom Text Editor 和 Sublime Text 非常相似。你可以从 Ubuntu 软件中心下载和安装它。 -### **15\. Corebird** +### 15、Corebird 如果你在找你可以用 Twitter 的桌面客户端,那 Corebird Twitter 客户端就是你在找的。它被争议是 Linux 发行版下可获得的最好的 Twitter 客户端,它提供了与你手机上的 Twitter 应用非常相似的功能。 @@ -177,7 +173,7 @@ Visual Studio 自身集成了 Git,它有优秀的用户界面,你会发现 $ sudo snap install corebird ``` -### **16\. Pixbuf** +### 16、Pixbuf Pixbuf 是来自 Pixbuf 图片社区中心的一个桌面客户端,让你上传,分享和出售你的相片。它支持图片共享到社交媒体像 Facebook,Pinterest,Instagram,Twitter,等等,也包括照相服务像 Flickr,500px and Youpic。 @@ -185,7 +181,7 @@ Pixbuf 是来自 Pixbuf 图片社区中心的一个桌面客户端,让你上 Pixbuf提供了分析等功能,可以让你统计点击量、转发量、照片的回复、预定的帖子、专用的iOS 扩展。它同样有移动应用,因此你可以在任何地方连接到你的 Pixbuf 账户。 Pixbuf 在 Ubuntu 软件中心以 Snap 包的形式获得。 -### **17\. Clementine 音乐播放器** +### 17、Clementine 音乐播放器 Clementine 是一个跨平台的音乐播放器,并且是 Ubuntu 上默认音乐播放器 Rhythmbox 的良好竞争者。多亏它的友好的界面,它很快速并易于使用。它支持所有音频文件格式的声音回放。 @@ -199,15 +195,15 @@ $ sudo apt-get update $ sudo apt-get install clementine ``` -### **18\. Blender** +### 18、Blender -Blender 是一个免费和开源的 3D 创建应用软件,你可以用来创建 3D 打印模型,动画电影,视频游戏,等。它自身集成了游戏引擎,你可以用来开发和测试视频游戏。 +Blender 是一个自由开源的 3D 创建应用软件,你可以用来创建 3D 打印模型,动画电影,视频游戏,等。它自身集成了游戏引擎,你可以用来开发和测试视频游戏。 ![blender][22] Blender 拥有赏心悦目的用户界面,易于使用,它包括了内置的渲染引擎,数字雕刻,仿真工具,动画工具,还有很多。考虑到它免费和它的特点,你甚至会认为它可能是 Ubuntu 上最好的应用之一。 -### **19\. Audacity** +### 19、Audacity Audacity 是一个开源的音频编辑应用,你可以用来记录、编辑音频文件。你可以从各种输入中录入音频,包括麦克风,电子吉它,等等。根据你的需要,它提供了编辑和裁剪音频的能力。 @@ -221,7 +217,7 @@ $ sudo apt-get update $ sudo apt-get install audacity ``` -### **20\. Vim** +### 20、Vim Vim 是一个集成开发环境,你可以用作一个独立的应用或各种像 Python 等主流编程语言的命令行接口。 @@ -233,7 +229,7 @@ Vim 是一个集成开发环境,你可以用作一个独立的应用或各种 $ sudo apt-get install vim ``` -### **21\. Inkscape** +### 21、Inkscape Inkscape 是一个开源和跨平台的矢量图形编辑器,你会觉得它和 Corel Draw 和 Adobe Illustrator 很相似。用它可以创建和编辑矢量图形例如柱形图、logo、图表、插图等。 @@ -247,7 +243,7 @@ $ sudo apt-get update $ sudo apt-get install inkscape ``` -### **22\. Shotcut** +### 22、Shotcut Shotcut 是一个免费、开源的跨平台的 Meltytech,LLC 在 MLT 多媒体框架下开发的视频编辑应用。你会发现它是 Linux 发行版上最强大的视频编辑器之一,因为它支持所有主要的音频,视频,图片格式。 @@ -259,7 +255,7 @@ Shotcut 是一个免费、开源的跨平台的 Meltytech,LLC 在 MLT 多媒 snap install shotcut -- classic ``` -### **23\. SimpleScreenRecorder** +### 23、SimpleScreenRecorder SimpleScreenRecorder 是 Ubuntu 上的一个免费和轻量级的屏幕录制工具。屏幕录制非常有用,如果你是 YouTube 创作者或应用开发者。 @@ -273,7 +269,7 @@ $ sudo apt-get update $ sudo apt-get install simplescreenrecorder ``` -### **24\. Telegram** +### 24、Telegram Telegram 是一个基于云的即时通信和网络电话平台,近年来非常流行。它是开源和跨平台的,用户可以用来发送消息,共享视频,图片,音频和其它文件。 @@ -291,7 +287,7 @@ $ sudo snap install telegram-desktop ClamTk 是一个轻量级的病毒扫描器,可以扫描系统中的文件和文件夹并清理发现的有害文件。ClamTk 可以 Snap 包的形式获得,可以从 Ubuntu 软件中心下载。 -### **26\. MailSpring** +### 26、MailSpring 早期的 MailSpring 以 Nylas Mail 或 Nylas N1 而著名,是开源的邮件客户端。它保存所有的邮件在电脑本地,因此你可以在任何需要的时候访问它。它提供了高级搜索的功能,使用与或操作,因此你可以基于不同的参数搜索邮件。 @@ -299,15 +295,15 @@ ClamTk 是一个轻量级的病毒扫描器,可以扫描系统中的文件和 MailSpring 有着和其它易于上手的邮件客户端同样优秀的用户界面。MailSpring 同样提供了私密性、安全性、规划期、通讯录管理、日历等功能特点。 -### **27\. PyCharm** +### 27、PyCharm -PyCharm 是我最喜欢的继 Vim 之后的 Python IDE 之一,因为它有优雅的用户界面,有很多扩展和插件支持。基本上,它有两个版本,一个是免费和开源的社区版,另一个是付费的专业版。 +PyCharm 是我最喜欢的继 Vim 之后的 Python IDE 之一,因为它有优雅的用户界面,有很多扩展和插件支持。基本上,它有两个版本,一个是自由开源的社区版,另一个是付费的专业版。 ![][31] PyCharm 是高度自定义的 IDE 并且有很多功能像错误高亮、代码分析、集成单元测试和 Python 调试器等。PyCharm 对于大多数 Python 程序员和开发者来说是首选的。 -### **28\. Caffeine** +### 28、Caffeine 想象一下你在 Youtube 上看视频或阅读一篇新文章,突然你的 Ubuntu 锁屏了,我知道它很烦人。我们很多人都会遇到这种情况,所以 Caffeine 是一个阻止 Ubuntu 锁屏或屏幕保护程序的工具。 @@ -321,7 +317,7 @@ $ sudo apt-get update $ sudo apt-get install caffeine -y ``` -### **29\. Etcher USB 镜像写入器** +### 29、Etcher USB 镜像写入器 Etcher 是一个有 resin.io 开发的 USB 镜像写入器。它是一个跨平台的应用,帮助你将 ZIP、ISO、IMG 格式的镜像文件写入到 USB 存储中。如果你总是尝试新的操作系统,那么 Ethcher 是你必有的简单可靠的系统。 @@ -329,7 +325,7 @@ Etcher 是一个有 resin.io 开发的 USB 镜像写入器。它是一个跨平 Etcher 有干净的用户界面指导你在三步内烧录镜像到 USB 驱动或 SD 卡的过程。步骤包括选择镜像文件,选择 USB 驱动 和最终的 flash(写文件到 USB 驱动)。你可以从它的[官网][34]下载和安装 Etcher。 -### **30\. Neofetch** +### 30、Neofetch Neofetch 是一个酷炫的系统信息工具,通过在终端中运行 “neofetch” 命令,它会给你关于你的系统的所有信息。它酷是因为它给你关于桌面环境,内核版本,bash 版本和你正在运行的 GTK 主题信息。 @@ -343,9 +339,9 @@ $ sudo apt-get update $ sudo apt-get update install neofetch ``` -### 31\. Liferea +### 31、Liferea -Liferea(Linux 热点阅读器)是一个免费和开源的新闻聚集工具,用于在线新闻订阅。使用新的聚集工具非常快捷和简单,支持各种格式例如 RSS/RDF,Atom 等。 +Liferea(Linux 热点阅读器)是一个自由开源的新闻聚集工具,用于在线新闻订阅。使用新的聚集工具非常快捷和简单,支持各种格式例如 RSS/RDF,Atom 等。 ![][36] Liferea 自带与 TinyTinyRSS 的同步支持,它给了你离线阅读的能力。你会发现,就可靠性和灵活性而言,它是 Linux 上最好的订阅工具之一。 @@ -357,7 +353,7 @@ $ sudo apt-get update $ sudo apt-get install liferea ``` -### 32\. Shutter +### 32、Shutter 在 Ubuntu 中很容易截屏,但当编辑截屏时 Shutter 是你必不可少的应用。它帮助你捕获,编辑和轻松的共享截屏。使用 Shutter 的选择工具,你可以选择屏幕的特定区域来截屏。 @@ -365,7 +361,7 @@ $ sudo apt-get install liferea Shutter 是一个功能强大的截图工具,提供了添加截图效果,画线等功能。它同样给你上传截屏到各种图像保存站点的选项。你可以直接在 Ubuntu 软件中心中下载和安装。 -### 33\. Weather +### 33、Weather Weather 是一个小的应用,给你关于你的城市或世界上其它位置的实时天气信息。它简单而且轻量级,给你超过 7 天的详细天气预报和今明两天的每个小时的细节信息。 @@ -373,7 +369,7 @@ Weather 是一个小的应用,给你关于你的城市或世界上其它位置 它集成在 GNOME shell 中,给你关于最近搜索位置的当前天气状态。它有最小的用户界面,在最小硬件需求下运行很顺畅。 -### 34\. Ramme +### 34、Ramme Ramme 是一个很酷的非官方的 Instagram 桌面客户端,给你带来 Instagram 移动端的感觉。它是基于 Electron 的客户端,所以它替代了 Instagram 应用提供了主题自定义的功能。 @@ -381,7 +377,7 @@ Ramme 是一个很酷的非官方的 Instagram 桌面客户端,给你带来 In 但是由于 Instagram 的 API 限制,你不能使用 Ramme 客户端上传图像,但你总是可以通过订阅 Instagram,喜欢和评论,给好友发消息。你可以从 [Github]][40] 下载 Ramme 安装文件。 -### **35\. Thunderbird** +### 35、Thunderbird Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默认邮件客户端。尽管在 2017 年与 Mozilla 分离,Thunderbird 仍然是 Linux 平台非常流行的最好的邮件客户端。它自带特点像垃圾短信过滤,IMAP 和 POP 邮件同步,日历支持,通讯录集成和很多其它特定。 @@ -389,7 +385,7 @@ Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默 它是一个跨平台的邮件客户端,在所有支持的平台上完全由社区提供支持。多亏它的高度自定义特点,你总是可以改变它的外观和观感。 -### **36\. Pidgin** +### 36、Pidgin Pidgin 是一个即时信息客户端,你能够在单个窗口下登录不同的即时网络。你可以登录到像 Google Talk,XMPP,AIM,Bonjour 等。 @@ -401,15 +397,15 @@ Pidgin 拥有所有你期待的即时通信的特点,你总是可以通过安 $ sudo apt-get install pidgin ``` -### **37\. Krita** +### 37、Krita -Krita 是由 KDE 开发的免费和开源的数字打印,编辑和动画应用。它有优秀的用户界面,每个组件都放的很完美,因此你可以找到你需要的。 +Krita 是由 KDE 开发的自由开源的数字打印,编辑和动画应用。它有优秀的用户界面,每个组件都放的很完美,因此你可以找到你需要的。 ![][43] 它使用 OpenGL 画布,这提升了 Krita 的性能,并且提供了很多特点相不同的绘画工具、动画工具、矢量工具、层、罩等很多。可在 Ubuntu 软件中心获取 Krita 并下载。 -### **38\. Dropbox** +### 38、Dropbox Dropbox 是一个出色的云存储播放器,一旦安装,它在 Ubuntu 中运行得非常好。即使 Google Drive 在 Ubuntu 16.04 LTS 和以后的版本中运行得不错,就 Dropbox 提供的特点而言,Dropbox 仍然是 Linux 上的首选云存储工具。 @@ -420,7 +416,7 @@ Dropbox 是一个出色的云存储播放器,一旦安装,它在 Ubuntu 中 $ sudo apt-get install nautilus-dropbox ``` -### 39\. Kodi +### 39、Kodi Kodi 的前身是人们熟知的 Xbox 媒体中心(XBMC),是一个开源的媒体播放器。你可以在线或离线播放音乐、视频、播客、视频游戏等。这个软件最初是为第一代的 Xbox 游戏控制台开发的,之后慢慢地面向了个人电脑。 @@ -428,7 +424,7 @@ Kodi 的前身是人们熟知的 Xbox 媒体中心(XBMC),是一个开源 Kodi 有令人印象深刻的视频接口,快速而强大。它是可高度定制的媒体播放器,你可以通过安装插件,来获取在线流服务像 Pandora、 Spotify、Amazon Prime Video、Netflix and YouTube。 -### **40\. Spotify** +### 40、Spotify Spotify 是最好的在线媒体流站点之一。它提供免费和付费音乐、播客、视频流服务。早期的 Spotify 不支持 Linux,但现在它有全功能的 Ubuntu 客户端。 @@ -436,7 +432,7 @@ Spotify 是最好的在线媒体流站点之一。它提供免费和付费音乐 与 Google Play 音乐播放器一样,Spotify 是必不可少的媒体播放器。你只需要登录你的 Spotify 账户,就能在任何地方获取你最爱的在线内容。 -### 41\. Brackets +### 41、Brackets Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来进行 web 开发和设计,例如 HTML,CSS 和 JavaScript。它随改变实时预览是一个很棒的特点,当你在脚本中修改时,你可以获得实时预览效果。 @@ -444,7 +440,7 @@ Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来 它是 Ubuntu 上的现代文本编辑器之一,拥有平滑的用户界面,这将 web 开发任务带到新的水平。它同样提供行内编辑器的特点,支持流行的扩展像 Emmet、Beautify、Git、File Icons 等等。 -### 42\. Bitwarden +### 42、Bitwarden 现今,安全问题事件增加,用户密码被盗后,重要的数据受到连累,因此,账户安全性必须严肃对待。推荐你使用 Bitwarden,将你的所有账户和登录密码安全的存在一个地方。 @@ -452,7 +448,7 @@ Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来 Bitwarden 使用 AES-256 加密技术来存储所有的登录细节,只有用户可以访问这些数据。它同样帮你创建健壮的密码,因为弱密码容易被黑。 -### 43\. Terminator +### 43、Terminator Terminator 是一个开源终端模拟器,用 Java 语言开发的。它是一个跨平台的模拟器,允许你在单个窗口有多个终端,在 Linux 默认的终端模拟器中不是这样。 @@ -464,7 +460,7 @@ Terminator 其它杰出的特点包括自动日志、拖、丢、智能垂直和 $ sudo apt-get install terminator ``` -### 44\. Yak Yak +### 44、Yak Yak Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端。它可能是一个不错的 Microsort 的 Skype 的替代品,自身拥有很多让人吃惊的特点。你可以允许桌面通知,语言偏好,工作在最小内存或电源需求等。 @@ -472,7 +468,7 @@ Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端 Yak Yak 拥有你期待的所有任何即时消息应用的所有特点,例如类型指示、拖、拽媒体文件,音/视频电话。 -### 45\. **Thonny** +### 45、Thonny Thonny 是一个简单和轻量级的 IDE,尤其是为编程的初学者设计的。如果你是编程初学者,这是你必备的 IDE,因为当用 Python 编程的时候它会帮你学习。 @@ -484,7 +480,7 @@ Thonny 同样是一个很棒的调试工具,它支持调试过程中的活变 $ sudo apt-get install thonny ``` -### **46\. Font Manager** +### 46、Font Manager Font Manager 是一个轻量级的工具,用于管理、添加、移除你的 Ubuntu 系统上的字体。尤其是为 Gnome 桌面环境构建的,当用户不知道如何在命令行管理字体的会发现这个工具非常有用。 @@ -496,7 +492,7 @@ $ sudo add-apt-repository ppa:font-manager/staging $ sudo apt-get update $ sudo apt-get install font-manager -### **47\. Atril Document Viewer** +### 47、Atril Document Viewer Atril 是一个简单的文件查看器,支持便携文件格式(PDF)、PostScript(PS)、Encapsulated PostScript(EPS)、DJVU 和 DVI。Atril 绑定在 MATE 桌面环境中,它比大多数 Linux 发行版中默认的文件查看器 Evince 更理想。 @@ -508,7 +504,7 @@ Atril 用简单和轻量级的用户界面,可高度自定义,提供了搜 $ sudo apt-get install atril ``` -### **48\. Notepadqq** +### 48、Notepadqq 如果你曾在 Windows 上用过 Notepad++,并且在 Linux 上寻找相似的程序,别担心,开发者们已经将它移植到 Linux,叫 Notepadqq。它是一个简单且强大的文本编辑器,你可以在日常生活中用它完成各种语言的任务。 @@ -522,7 +518,7 @@ $ sudo apt-get update $ sudo apt-get install notepadqq ``` -### **49\. Amarok** +### 49、Amarok Amarok 是在 KDE 项目下开发的一个开源音乐播放器。它有直观的界面,让你感觉在家一样,因此你可以轻易的发现你最喜爱的音乐。除了 Clementine,当你在寻找 Ubuntu 上的完美的音乐播放器时,Amarok 是一个很棒的选择。 @@ -530,7 +526,7 @@ Amarok 是在 KDE 项目下开发的一个开源音乐播放器。它有直观 Amarok 上的一些顶尖的特点包括智能播放列表支持,集成在线服务像 MP3tunes、Last.fm、 Magnatune 等。 -### **50\. Cheese** +### 50、Cheese Cheese 是 Linux 默认的网络摄像头应用,在视频聊天或即时消息应用中非常有用。除了这些,你还可以用这个应用来照相或拍视频,附带一些迷人的特效。 @@ -538,27 +534,27 @@ Cheese 是 Linux 默认的网络摄像头应用,在视频聊天或即时消息 它同样提供闪拍模式,让你快速拍摄多张相片,并提供你共享给你的朋友和家人的选项。Cheese 预装在大多数的 Linux 发行版中,但是你同样可以在软件中心下载它。 -### **51\. MyPaint** +### 51、MyPaint -MyPaint 是一个免费和开源的光栅图形编辑器,关注于数字绘画而不是图像操作和相片处理。它是跨平台的应用,与 Corel Painter 很相似。 +MyPaint 是一个自由开源的光栅图形编辑器,关注于数字绘画而不是图像操作和相片处理。它是跨平台的应用,与 Corel Painter 很相似。 ![][57] MyPaint 可能是 Windows 上的 Microsoft Paint 应用的很好的替代。它有简单的用户界面,快速而强大。MyPaint 可以软件中心下载。 -### **52\. PlayOnLinux** +### 52、PlayOnLinux PlayOnLinux 是 WINE 模拟器的前端,允许你在 Linux 上运行 Windows 应用。你只需要在 WINE 中安装 Windows 应用,之后你就可以轻松的使用 PlayOnLinux 启动应用和游戏了。 ![][58] -### **53\. Akregator** +### 53、Akregator Akregator 是在 KDE 项目下为 KDE Plasma 环境开发的默认的 RSS 阅读器。它有简单的用户界面,自带了 KDE 的 Konqueror 浏览器,所以你不需要在阅读新闻提要时切换应用。 Akregator 同样提供了桌面通知、自动提要等功能。你会发现在大多数 Linux 发行版中它是最好的提要阅读器。 -### **54\. Brave** +### 54、Brave Brave 是一个开源的 web 浏览器,阻挡了广告和追踪,所以你可以快速和安全的浏览你的内容。它实际做的是代表你像网站和油管主播支付了费用。如果你喜欢像网站和和油管主播共享而不是看广告,这个浏览器更适合你。 @@ -566,7 +562,7 @@ Brave 是一个开源的 web 浏览器,阻挡了广告和追踪,所以你可 对于那些想要安全浏览但有不想错过互联网上重要数据的人来说,这是一个新概念,一个不错的浏览器。 -### **55\. Bitcoin Core** +### 55、Bitcoin Core Bitcoin Core 是一个官方的客户端,非常安全和可靠。它持续追踪你的所有交易以保证你的所有交易都是有效的。它限制比特币矿工和银行完全掌控你的比特币钱包。 @@ -580,7 +576,7 @@ $ sudo apt-get update $ sudo apt-get install bitcoin-qt ``` -### **56\. Speedy Duplicate Finder** +### 56、Speedy Duplicate Finder Speedy Duplicate Finder 是一个跨平台的文件查找工具,用来帮助你查找你的系统上的重复文件,清理磁盘空间。它是一个智能工具,在整个硬盘上搜索重复文件,同样提供智能过滤功能,根据文件类型、扩展或大小帮你找到文件。 @@ -588,15 +584,15 @@ Speedy Duplicate Finder 是一个跨平台的文件查找工具,用来帮助 它有一个简单和整洁的用户界面,易于上手。从软件中心下载完后你就可以开始磁盘空间清理了。 -### **57\. Zulip** +### 57、Zulip -Zulip 是一个免费和开源的群聊应用,被 Dropbox 获得了。它是用 Python 写的,用 PostgreSQL 数据库。它被设计和开发为其它聊天应用像 Slack 和 HipChat 的好的替代品。 +Zulip 是一个自由开源的群聊应用,被 Dropbox 获得了。它是用 Python 写的,用 PostgreSQL 数据库。它被设计和开发为其它聊天应用像 Slack 和 HipChat 的好的替代品。 ![][63] Zulip 功能丰富,例如拖拽文件、群聊、私密聊天、图像预览等。它供养集成了 Github、JIRA、Sentry 和上百种其它服务。 -### **58\. Okular** +### 58、Okular Okular 是 KDE 为 KDE 桌面环境开发的跨平台的文件查看器。它是一个简单的文件查看器,支持 Portable Document Format (PDF), PostScript, DjVu, Microsoft Compiled HTML help 和很多其它文件格式。 @@ -604,7 +600,7 @@ Okular 是 KDE 为 KDE 桌面环境开发的跨平台的文件查看器。它是 Okular 是在 Ubuntu 上你应该尝试的最好的文件查看器之一,它提供了 PDF 文件评论、画线、高亮等很多功能。你同样可以从 PDF 文件中提取文本文件。 -### **59\. FocusWriter** +### 59、FocusWriter FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面屏幕,因此你能够专注写作。正如你看到的屏幕截图,整个 Ubuntu 屏被隐藏了,只有你和你的字处理工具。但你总是可以进入 Ubuntu 屏幕,当你需要的时候,只需要将光标移动到屏幕的边缘。 @@ -612,7 +608,7 @@ FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面 它是一个轻量级的字处理其,支持 TXT、RTF、ODT 文件格式。它同样提供可完全定制的用户界面,还有定时器、警报、每日目标、声音效果等特点,支持翻译为 20 种语言。 -### **60\. Guake** +### 60、Guake Guake 是为 GNOME 桌面环境准备的酷炫的下拉式终端。当你任务完成后,你需要它消失时, Guake 会闪一下。你只需要按 F12 按钮来启动或退出,这样启动 Guake 币启动一个新的终端窗口更快。 @@ -623,7 +619,7 @@ Guake 是一个特点丰富的终端,支持多栏,只需要点击几下就 ``` $ sudo apt-get install guake ``` -### **61\. KDE Connect** +### 61、KDE Connect KDE Connect 在 Ubuntu 上是一个很棒的应用,我很想在这篇马拉松文章中将它提早列出来,但是竞争激烈。总之 KDE Connect 可以将你的 Android 智能手机的通知直接转到 Ubuntu 桌面来。 @@ -637,7 +633,7 @@ $ sudo apt-get update $ sudo apt-get install kdeconnect indicator-kdeconnect ``` -### **62\. CopyQ** +### 62、CopyQ CopyQ 是一个简单但是非常有用的剪切板管理器,它保存你的系统剪切板内容,无论你做了什么改变,你都可以在你需要的时候恢复它。它是一个很棒的工具,支持文本、图像、HTML、和其它格式。 @@ -651,7 +647,7 @@ $ sudo apt-get update $ sudo apt-get install copyq ``` -### **63\. Tilix** +### 63、Tilix Tilix 是一个功能丰富的高级 GTX3 瓷砖终端模拟器。如果你使用 GNOME 桌面环境,那你会爱上 Tilix,因为它遵循了 GNOME 人类界面指导。Tilix 模拟器与大多数 Linux 发行版上默认终端模拟器相比,它给了你分离终端窗口为多个终端面板。 @@ -665,9 +661,9 @@ $ sudo apt-get update $ sudo apt-get install tilix ``` -### **64\. Anbox** +### 64、Anbox -Anbox 是一个 Android 模拟器,让你在 Linux 系统中安装和运行 Android 应用。它是免费和开源的 Android 模拟器,通过使用 Linux 容器来执行 Android 运行时环境。它使用最新的 Linux 技术 和 Android 发布版,所以你可以运行任何原生的 Android 应用。 +Anbox 是一个 Android 模拟器,让你在 Linux 系统中安装和运行 Android 应用。它是自由开源的 Android 模拟器,通过使用 Linux 容器来执行 Android 运行时环境。它使用最新的 Linux 技术 和 Android 发布版,所以你可以运行任何原生的 Android 应用。 ![][70] @@ -682,7 +678,7 @@ $ sudo apt install anbox-modules-dkms Now install Anbox using snap $ snap install --devmode -- beta anbox ``` -### **65\. OpenShot** +### 65、OpenShot 你会发现 OpenShot 是 Linux 发行版中最好的开源视频编辑器。它是跨平台的视频编辑器,易于使用,不在性能方面妥协。它支持所有主流的音频、视频、图像格式。 @@ -696,7 +692,7 @@ $ sudo apt-get update $ sudo apt-get install openshot -qt ``` -### **66\. Plank** +### 66、Plank 如果你在为你的 Ubuntu 桌面寻找一个 Dock 导航栏,那 Plank 应该是一个选择。它是完美的,安装后你不需要任何的修改,除非你想这么做,它有内置的偏好面板,你可以自定义主题,Dock 大小和位置。 @@ -711,7 +707,7 @@ $ sudo apt-get update $ sudo apt-get install plank ``` -### **67\. Filezilla** +### 67、Filezilla Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端和服务器。它让你使用 FTP 和加密的 FTP 像 FTPS 和 SFTP 传输文件,支持 IPv6 网络协议。 @@ -719,7 +715,7 @@ Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端 它是一个简单的文件传输应用,支持拖拽,支持世界范围的各种语言,多任务的强大用户界面,控制和配置传输速度。 -### **68\. Stacer** +### 68、Stacer Stacer 是一个开源的系统诊断和优化工具,使用 Electron 开发框架开发的。它有一个优秀的用户界面,你可以清理缓存内存,启动应用,卸载不需要的应用,掌控后台系统进程。 @@ -733,7 +729,7 @@ $ sudo apt-get update $ sudo apt-get install stacer ``` -### **69\. 4K Video Downloader** +### 69、4K Video Downloader 4K Video Downloader 是一个简单的视频下载工具,你可以用来从 Vimeo、Facebook、YouTube 和其它在线视频流站点下载视频,播放列表,频道。它支持下载 YouTuBe 播放列表和频道,以 MP4, MKV, M4A, 3GP 和很多其它 音/视频格式。 @@ -741,7 +737,7 @@ $ sudo apt-get install stacer 4K Video Downloader 不是你想的那么简单,除了正常的视频下载,它支持 3D 和 360 度 视频下载。它同样提供内置应用协议链接,直连 iTunes。你可以从[这里][76]下载。 -### 70\. **Qalculate** +### 70、Qalculate Qalculate 是一个多目的、跨平台的桌面计算器,简单但是强大。它可以用来解决复杂的数学问题和等式,货币汇率转换和很多其它日常计算。 @@ -749,7 +745,7 @@ Qalculate 是一个多目的、跨平台的桌面计算器,简单但是强大 它有优秀的用户界面,提供了自定义功能,单元计算,符号计算,算数,画图,和很多你可以在科学计算器上发现的功能。 -### **71\. Hiri** +### 71、Hiri Hiri 是一个跨平台的邮件客户端,使用 Python 语言开发的。它有平滑的用户界面,就它的功能和服务而言,是 Micorsoft Outlook 的很好的替代品。这是很棒的邮件客户端,可以用来发送和接收邮件,管理通讯录,日历和任务。 @@ -762,7 +758,7 @@ Hiri 是一个跨平台的邮件客户端,使用 Python 语言开发的。它 $ sudo snap install hiri ``` -### **72\. Sublime Text** +### 72、Sublime Text Sublime Text 是一个跨平台的源代码编辑器,用 C++ 和 Python 写的。它有 Python 语言编程接口(API),支持所有主流的编程语言和标记语言。它是简单轻量级的文本编辑器,可被用作 IDE,包含自动补全,语法高亮,分窗口编辑等功能。 @@ -774,7 +770,7 @@ Sublime Text 是一个跨平台的源代码编辑器,用 C++ 和 Python 写的 $ sudo apt-get install sublime-text ``` -### **73\. TeXstudio** +### 73、TeXstudio Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成查看、交互式拼写检查、代码折叠、拖拽等特点。 @@ -782,7 +778,7 @@ Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开 它是跨平台的编辑器,有简单轻量级的用户界面,易于使用。它集成了 BibTex和 BibLatex 目录管理器,同样有集成的 PDF 查看器。你可以从[官网][81]和 Ubuntu 软件中心下载 Texstudio。 -### **74\. QtQR** +### 74、QtQR QtQR 是一个基于 Qt 的应用,让你在 Ubuntu 中创建和读取二维码。它是用 Python 和 Qt 开发的,有简单和轻量级的用户界面,你可以编码网站地址、邮件、文本、短消息等。你也可以用网络相机解码二维码。 @@ -796,7 +792,7 @@ $ sudo apt-get update $ sudo apt-get install qtqr ``` -### **75\. Kontact** +### 75、Kontact Kontact 是一个由 KDE 为 KDE 桌面环境开发的集成的个人信息管理器(PIM)。它集成了多个软件到一个集合中,集成了 KMail、KOrganizer和 KAddressBook 到一个用户界面,你可以管理所有的邮件、通讯录、日程表等。 @@ -808,7 +804,7 @@ Kontact 是一个由 KDE 为 KDE 桌面环境开发的集成的个人信息管 $ sudo apt-get install kontact ``` -### **76\. NitroShare** +### 76、NitroShare NitroShare 是一个跨平台、开源的网络文件共享应用。它让你轻松的在局域网的多个操作系统中共享文件。它简单而强大,当在局域网中运行 NitroShare 时,它会自动侦查其它设备。 @@ -822,7 +818,7 @@ $ sudo apt-get update $ sudo apt-get install nitroshare ``` -### **77\. Konversation** +### 77、Konversation Konversation 是一个为 KDE 桌面环境开发的开源的网络中继聊天(IRC)客户端。它给了到 Freenode 网络平岛的快速入口,你可以为大多数发行版找到支持。 @@ -834,7 +830,7 @@ Konversation 是一个为 KDE 桌面环境开发的开源的网络中继聊天 $ sudo apt-get install konversation ``` -### **78\. Discord** +### 78、Discord 如果你是硬核游戏玩家,经常玩在线游戏,我有一个很棒的应用推荐给你。Discord 是一个免费的网络电话应用,尤其是为在线游戏者们设计的。它是一个跨平台的应用,可用来文字或语音聊天。 @@ -842,7 +838,7 @@ $ sudo apt-get install konversation Discord 是一个非常流行的语音通话应用游戏社区,因为它是完全免费的,它是 Skype,Ventrilo,Teamspeak 的很好的竞争者。它同样提供清晰的语音质量,现代的文本聊天,你可以共享图片,视频和链接。 -### **79\. QuiteRSS** +### 79、QuiteRSS QuiteRSS是一个开源的 RSS 的新闻聚合和 Atom 新闻要点应用。它是跨平台的要点阅读器,用 Qt 和 C++ 写的。它有简单的用户界面,你可以改变为经典或者报纸模式。它集成了 webkit 浏览器,因此,你可以在单个窗口执行所有任务。 @@ -854,9 +850,9 @@ QuiteRSS 自带了很多功能,像内容过滤,自动规划摘要,导入/ $ sudo apt-get install quiterss ``` -### **80\. MPV Media Player** +### 80、MPV Media Player -MPV 是一个免费和开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户之需要拖拽音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 +MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户之需要拖拽音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 ![][88] @@ -868,7 +864,7 @@ $ sudo apt-get update $ sudo apt-get install -y mpv ``` -### **81\. Plume Creator** +### 81、Plume Creator 如果你是一个作家,那么 Plume Creator 是你必不可少的应用,因为你在 Ubuntu 上找不到其它应用像 Plume Creater 这样。写作和编辑故事、章节是繁重的任务,在 Plume Creator 这个令人惊奇的工具的帮助下,将大大帮你简化这个任务。 @@ -880,11 +876,11 @@ $ sudo apt-get install -y mpv $ sudo apt-get install plume-creator ``` -### **82\. Chromium Web Browser** +### 82、Chromium Web Browser Chromium 是一个由 Google 开发和发布的开源 web 浏览器。Chromium 就其外观和特点而言,很容易被误认为是 Chrome。它是轻量级和快速的网络浏览器,拥有最小用户界面。 -### **83\. Simple Weather Indicator** +### 83、Simple Weather Indicator Simple Weather Indicator 是用 Python 开发的开源天气提示应用。它自动侦查你的位置,并显示你天气信息像温度,下雨的可能性,湿度,风速和可见度。 @@ -892,7 +888,7 @@ Simple Weather Indicator 是用 Python 开发的开源天气提示应用。它 Weather indicator 自带一些可配置项,例如位置检测,温度 SI 单元,位置可见度开关等等。它是一个酷应用,可以根据你的桌面来调整舒服。 -### **84\. SpeedCrunch** +### 84、SpeedCrunch SpeedCrunch 是一个快速和高精度的科学计算器。它预置了数学函数,用户定义函数,复数和单位转换支持。它有简单的用户界面并易于使用。 @@ -901,15 +897,15 @@ SpeedCrunch 是一个快速和高精度的科学计算器。它预置了数学 这个科学计算器有令人吃惊的特点像结果预览,语法高亮和自动补全。它是跨平台的,并有多语言支持。 -### **85\. Scribus** +### 85、Scribus -Scribus 是一个免费和开源的桌面出版应用,允许你创建宣传海报,杂志和图书。它是基于 Qt 工具器的跨平台英语,在 GNU 通用公共证书下发布。它是一个专业的应用,拥有 CMYK 和 ICC 颜色管理的功能,基于 Python 的脚本引擎,和 PDF 创建。 +Scribus 是一个自由开源的桌面出版应用,允许你创建宣传海报,杂志和图书。它是基于 Qt 工具器的跨平台英语,在 GNU 通用公共证书下发布。它是一个专业的应用,拥有 CMYK 和 ICC 颜色管理的功能,基于 Python 的脚本引擎,和 PDF 创建。 ![][93] Scribus 有相当好的用户界面,易于使用,轻松在低配置下使用。在所有的最新的 Linux 发行版的软件中心可以下载它。 -### **86.** **Cura** +### 86. Cura Cura 是一个由 David Braam 开发的开源的 3D 打印应用。Ultimaker Cura 是 3D 打印世界最流行的软件,并世界范围的百万用户使用。它遵守 3D 打印模型的 3 步:设计,准备,打印。 @@ -917,7 +913,7 @@ Cura 是一个由 David Braam 开发的开源的 3D 打印应用。Ultimaker Cur 它是功能丰富的 3D 打印应用,为 CAD 插件和扩展提供了无缝支持。它是一款简单易于使用的工具,新手艺术家可以马上开始了。它支持主流的文件格式像 STL,3MF,和 OBJ。 -### **87\. Nomacs** +### 87、Nomacs Nomacs 是一款开源、跨平台的图像浏览器,支持所有主流的图片格式包括 RAW 和 psd 图像。它可以浏览 zip 文件中的图像或者 Microsoft Office 文件并提取到目录。 @@ -931,7 +927,7 @@ $ sudo apt-get update $ sudo apt-get install nomacs ``` -### **88\. BitTicker** +### 88、BitTicker BitTicker 是一个 Ubuntu 上的在线比特币-USDT 收报。它是一个简单的工具,能够连接到 bittrex.com 市场,提取最新的 BTC-USDT 并在系统托盘显示 Ubuntu 时钟。 @@ -939,7 +935,7 @@ BitTicker 是一个 Ubuntu 上的在线比特币-USDT 收报。它是一个简 它是简单但有用的工具,如果你经常有规律的投资比特币并且必须了解价格波动的话。 -### **89\. Organize My Files** +### 89、Organize My Files Organize My Files 是一个跨平台的一键点击文件组织工具,它在 Ubuntu 中以 Snap 包的形式获得。它简单但是强大,帮助你找到未组织的文件,通过简单点击来掌控它们。 @@ -947,7 +943,7 @@ Organize My Files 是一个跨平台的一键点击文件组织工具,它在 U 它有易于理解的用户界面,强大且快速。它提供了很多功能:自动组织,递归组织,智能过滤和多层文件夹组织等。 -### **90\. GnuCash** +### 90、GnuCash GnuCash 是一个金融账户软件,在 GNU 公共证书下免费使用。它是个人和商业账户的理想软件。它有简单的用户界面允许你追踪银行账户,股票,收入和花费。 @@ -955,7 +951,7 @@ GnuCash 是一个金融账户软件,在 GNU 公共证书下免费使用。它 GnuCash 实现了双入口记账系统,基于专业的账户原则来确保帐薄的平衡和报告的精确。 -v### **91\. Calibre** +v### 91、Calibre Calibre 是一个跨平台开源的面向你所有电子书需要的解决方案。它是一个简单的电子书管理器,提供显示、创建、编辑电子书、组织已存在的电子书到虚拟书库、同步和其它更多。 @@ -963,7 +959,7 @@ Calibre 是一个跨平台开源的面向你所有电子书需要的解决方案 Calibre 同样帮你转换电子书到你需要的格式并发送到你的电子书阅读设备。Calibre 是一个很棒的工具,如果你经常阅读和管理电子书的话。 -### **92\. MATE Dictionary** +### 92、MATE Dictionary MATE Dictionary 是一个简单的词典,基本上是为 MATE 桌面环境开发的。你可以仅仅输入字然后这个字典会显示意思和引用。 @@ -971,7 +967,7 @@ MATE Dictionary 是一个简单的词典,基本上是为 MATE 桌面环境开 它简单和轻量级的在线词典,有最小的用户接口。 -### **93\. Converseen** +### 93、Converseen Converseen 是免费的跨平台的批量图片处理应用,允许你转换、编辑、调整、旋转、裁剪大量图像,仅仅一次鼠标调集。它提供了图像批量重命名的功能,使用前缀或后缀,从一个 Windows 图标文件提取图像等。 @@ -979,7 +975,7 @@ Converseen 是免费的跨平台的批量图片处理应用,允许你转换、 它有很好的用户界面,易于使用,即时你是一个新手。它也能够转换整个 PDF 文件为图像集合。 -### **94\. Tiled Map Editor** +### 94、Tiled Map Editor Tiled 是一个免费的水平映射图编辑器,允许你编辑各种形式的投影映射图,例如正交、等轴、和六角的。这个工具对于游戏开发者在游戏引擎开发周期内可能非常有用。 @@ -987,9 +983,9 @@ Tiled 是一个免费的水平映射图编辑器,允许你编辑各种形式 Tiled 是一个通用的映射图编辑器,让你创建强大的促进位置,图布局,碰撞区域和敌人位置。它保存所有的数据为 tmx 格式。 -### **95.** **Qmmp** +### 95. Qmmp -Qmmp 是一个免费和开源的音频播放器,用 C++ 和 Qt 开发的。它是跨平台的音频播放器,界面与 Winamp 很相似。 它有简单的直观的用户界面,Winamp 皮肤可替代默认的 UI。 +Qmmp 是一个自由开源的音频播放器,用 C++ 和 Qt 开发的。它是跨平台的音频播放器,界面与 Winamp 很相似。 它有简单的直观的用户界面,Winamp 皮肤可替代默认的 UI。 ![][103] @@ -1001,7 +997,7 @@ $ sudo apt-get update $ sudo apt-get install qmmp qmmp-q4 qmmp-plugin-pack-qt4 ``` -### **96\. Arora** +### 96、Arora Arora 是一个免费开源的 web 浏览器,提供了专有的下载管理器,书签,私密模式,选项卡式浏览。 @@ -1009,7 +1005,7 @@ Arora 是一个免费开源的 web 浏览器,提供了专有的下载管理器 Arora web 浏览器由 Benjamin C. Meyer 开发,它由于它的轻量自然灵活的特点在 Linux 用户间很受欢迎。 -### **97\. XnSketch** +### 97、XnSketch XnSketch 是一个 Ubuntu 上的酷应用,只需要几次点击,就能帮你转换你的图片为卡通或素描图。它展现了 18 个不同的效果例如:锐化、白描、铅笔画和其它的。 @@ -1017,7 +1013,7 @@ XnSketch 是一个 Ubuntu 上的酷应用,只需要几次点击,就能帮你 它有优秀的用户界面,易于使用。一些额外的特点包括容量和边缘强度调整,对比,亮度,饱和度调整。 -### **98\. Geany** +### 98、Geany Geany 是一个简单轻量级的文本编辑器,像一个集成开发环境。它是跨平台的文本编辑器,支持所有主流编程语言包括Python、C++、LaTex、Pascal、 C#、 etc。 @@ -1025,7 +1021,7 @@ Geany 是一个简单轻量级的文本编辑器,像一个集成开发环境 $ sudo apt-get install geany ``` -### **99\. Mumble** +### 99、Mumble Mumble 是另一个 IP 上的语音应用相似与 Discord。Mumble 同样最初是为在线游戏者使用的,在端到端的聊天上用了客户端-服务器架构。声音质量在 Mumble 上非常好,它提供了端到端的加密来确保私密性。 @@ -1037,7 +1033,7 @@ Mumble 是一个开源应用,有简单的用户界面,易于使用。Mumble $ sudo apt-get install mumble-server ``` -### **100\. Deluge** +### 100、Deluge Deluge 是一个跨平台的轻量级的 BitTorrent 客户端,能够用来在 Ubuntu 上下载文件。BitTorrent 客户端与很多 Linux 发行版一起发行,但 Deluge 是最好的 BitTorrent 客户端,界面简单,易于使用。 @@ -1175,7 +1171,7 @@ via: https://linuxhint.com/100_best_ubuntu_apps/ [108]:https://linuxhint.com/wp-content/uploads/2018/06/Deluge.png [109]:https://twitter.com/linuxhint [110]:https://twitter.com/SwapTirthakar - +[111]:https://linux.cn/lctt/ From 8795bf9a92459d0a0afb11448c3506f269e9bd39 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 14:05:00 +0800 Subject: [PATCH 185/336] PRF:20190624 Using i3 with multiple monitors.md @geekpi --- ...0190624 Using i3 with multiple monitors.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/translated/tech/20190624 Using i3 with multiple monitors.md b/translated/tech/20190624 Using i3 with multiple monitors.md index 96d3a4b6b9..3ac5b62007 100644 --- a/translated/tech/20190624 Using i3 with multiple monitors.md +++ b/translated/tech/20190624 Using i3 with multiple monitors.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Using i3 with multiple monitors) @@ -12,13 +12,13 @@ ![][1] -你在 Linux 工作站上使用多个显示器吗?一次看到很多东西可能是有益的。但在我们的工作中通常有比实际显示器更多的窗口 - 这是一件好事,因为一次看到太多东西可能会分散注意力。因此能够切换我们在单个显示器上看到的内容似乎很重要。 +你在 Linux 工作站上使用多个显示器吗?一次看到很多东西可能是有益的。但在我们的工作中通常有比实际显示器更多的窗口 —— 这是一件好事,因为一次看到太多东西可能会分散注意力。因此能够切换我们在单个显示器上看到的内容似乎很重要。 -让我们来谈谈 i3,它是一个流行的平铺窗口管理器,可以与多个显示器配合使用。并且有许多其他窗口管理器没有的便利功能,它能够独立地在各个显示器上切换工作区。 +让我们来看看 i3,它是一个流行的平铺窗口管理器,可以与多个显示器配合使用。并且有许多其他窗口管理器没有的便利功能,它能够独立地在各个显示器上切换工作区。 ### 快速介绍 i3 -大约三年前,[Fedora Magazine 已经写了一篇关于 i3 的文章][2]。这是有史以来最受欢迎的文章之一!虽然情况并非总是如此,但 i3 非常稳定,而且这篇文章如今也很准确。所以,这次不会重复太多,本篇只涵盖了让 i3 启动和运行,如果你是 i3 的新手,想要了解更多基础知识的话,欢迎你继续阅读。 +大约三年前,[Fedora Magazine 已经写了一篇关于 i3 的文章][2]。这是有史以来最受欢迎的文章之一!虽然情况并非总是如此,但 i3 非常稳定,而且那篇文章如今也很准确。所以,这次不会重复太多内容,本篇只涵盖了让 i3 启动和运行的极少内容,如果你是 i3 的新手,想要了解更多基础知识的话,欢迎你继续阅读。 要在系统上安装 i3,请运行以下命令: @@ -28,7 +28,7 @@ $ sudo dnf install i3 完成后,注销,然后在登录屏幕上选择 i3 作为窗口管理器,然后重新登录。 -当你第一次运行 i3 时,系统会询问你是否要继续进行自动配置 - 在此处回答是。之后,你将被要求选择 “mod 键”。如果你在这里不确定,只需接受默认值,即将 Windows/Super 键设置为 mod 键。你将主要使用此键用于窗口管理器中的快捷方式。 +当你第一次运行 i3 时,系统会询问你是否要继续进行自动配置 —— 在此处回答是。之后,你将被要求选择 “mod 键”。如果你不确定,只需接受默认值,即将 Windows/Super 键设置为 mod 键。你将主要使用此键用于窗口管理器中的快捷方式。 此时,你应该在底部看到一个小条和一个空白屏幕。我们来看看一些基本的快捷方式。 @@ -72,7 +72,7 @@ $mod + shift + q 还有更多的快捷方式,但这些足够让你开始使用 i3。 -要退出 i3(退出登录)按: +要退出 i3(并退出登录)按: ``` $mod + shift + e @@ -84,9 +84,9 @@ $mod + shift + e 现在我们已经启动并运行了 i3,让我们把所有这些屏幕都用到! -为此,我们需要使用命令行,因为 i3 非常轻量级,并且没有 gui 来管理其他屏幕。如果这听起来很难也不用担心,它实际上非常简单! +为此,我们需要使用命令行,因为 i3 非常轻量级,并且没有 GUI 来管理其他屏幕。如果这听起来很难也不用担心,它实际上非常简单! -我们将使用的命令称为 xrandr。如果你的系统上没有 xrandr,请运行以下命令安装: +我们将使用的命令称为 `xrandr`。如果你的系统上没有 `xrandr`,请运行以下命令安装: ``` $ sudo dnf install xrandr @@ -98,7 +98,7 @@ $ sudo dnf install xrandr $ xrandr ``` -输出列出了所有可用输出,并通过显示支持的分辨率指示哪些输出连接了屏幕(通过电缆连接的显示器)。好消息是,我们不需要关心使它们工作的分辨率。 +输出列出了所有可用输出设备,并通过显示支持的分辨率指示哪些输出连接了屏幕(通过电缆连接的显示器)。好消息是,我们不需要关心使它们工作的分辨率。 这个例子显示了笔记本电脑的主屏幕(名为 eDP1),以及连接到 HDMI-2 输出的第二个显示器,它位于笔记本电脑的右侧。要打开它,请运行以下命令: @@ -108,7 +108,7 @@ $ xrandr --output HDMI-2 --auto --right-of eDP1 就是这样!你的屏幕现已激活。 -![Second screen active. The commands shown on this screenshot are slightly different than in the article, as they set a smaller resolution to make the screenshots more readable.][3] +![第二个屏幕激活。截屏上显示命令与文章中略有不同,它设置了更小的分辨率以使截屏适合阅读][3] ### 在多个屏幕上管理工作区 @@ -122,11 +122,11 @@ $mod + NUMBER 你可以独立切换各个显示器上的工作区! -![Workspace 2 on the left screen, workspace 4 on the right screen.][4] +![工作空间 2 在左侧屏幕,工作空间 4 在右侧屏幕][4] -![Left screen switched to workspace 3, right screen still showing workspace 4.][5] +![左侧屏幕切换为工作空间 3,右侧屏幕仍为工作空间 4][5] -![Right screen switched to workspace 4, left screen still showing workspace 3.][6] +![右侧屏幕切换为工作空间 5,左侧屏幕仍为空间空间 3][6] ### 在显示器之间移动工作区 @@ -138,7 +138,7 @@ $mod + shift + NUMBER 我们也可以将工作区移动到不同的屏幕。但是,此操作没有默认快捷方式,因此我们必须先创建它。 -要创建自定义快捷方式,你需要在你选择的文本编辑器中打开配置文件(本文使用 _vim_): +要创建自定义快捷方式,你需要在你选择的文本编辑器中打开配置文件(本文使用 `vim`): ``` $ vim ~/.config/i3/config @@ -163,9 +163,9 @@ $mod + shift + r $mod + p ``` -![Workspace 2 with Firefox on the left screen][7] +![打开火狐浏览器的工作空间 2 在左侧][7] -![Workspace 2 with Firefox moved to the second screen][8] +![打开火狐浏览器的工作空间 2 移动到第二个屏幕][8] 就是这些了!享受你的新多显示器体验,并了解更多 i3,欢迎阅读 Fedora Magazine 上之前关于 i3 的文章,或者查看官方 i3 文档。 @@ -176,7 +176,7 @@ via: https://fedoramagazine.org/using-i3-with-multiple-monitors/ 作者:[Adam Šamalík][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 c081d7480027e2b33419e9014bffd63bc6437bc6 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 14:05:28 +0800 Subject: [PATCH 186/336] PUB:20190624 Using i3 with multiple monitors.md @geekpi https://linux.cn/article-11031-1.html --- .../20190624 Using i3 with multiple monitors.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190624 Using i3 with multiple monitors.md (98%) diff --git a/translated/tech/20190624 Using i3 with multiple monitors.md b/published/20190624 Using i3 with multiple monitors.md similarity index 98% rename from translated/tech/20190624 Using i3 with multiple monitors.md rename to published/20190624 Using i3 with multiple monitors.md index 3ac5b62007..33eeeac1e2 100644 --- a/translated/tech/20190624 Using i3 with multiple monitors.md +++ b/published/20190624 Using i3 with multiple monitors.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11031-1.html) [#]: subject: (Using i3 with multiple monitors) [#]: via: (https://fedoramagazine.org/using-i3-with-multiple-monitors/) [#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/) From 9d0a35dd9c672049a67066cadeb62910d7ff8458 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sat, 29 Jun 2019 14:14:56 +0800 Subject: [PATCH 187/336] Rename sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md to sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md --- .../20190628 FreeDOS turns 25 years old- An origin story.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20190628 FreeDOS turns 25 years old- An origin story.md (100%) diff --git a/sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md b/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md similarity index 100% rename from sources/tech/20190628 FreeDOS turns 25 years old- An origin story.md rename to sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md From fa081608a4ce754f7c32983eb5772ccd23891d74 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 14:30:58 +0800 Subject: [PATCH 188/336] APL:20190628 FreeDOS turns 25 years old- An origin story --- .../20190628 FreeDOS turns 25 years old- An origin story.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md b/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md index 16464c696a..6a316b000c 100644 --- a/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md +++ b/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 3672f2b5512395a72765a03f34edea467ed0a618 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 15:43:52 +0800 Subject: [PATCH 189/336] TSL&APL:20190628 FreeDOS turns 25 years old- An origin story.md --- ...DOS turns 25 years old- An origin story.md | 95 ------------------ ...DOS turns 25 years old- An origin story.md | 97 +++++++++++++++++++ 2 files changed, 97 insertions(+), 95 deletions(-) delete mode 100644 sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md create mode 100644 translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md diff --git a/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md b/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md deleted file mode 100644 index 6a316b000c..0000000000 --- a/sources/talk/20190628 FreeDOS turns 25 years old- An origin story.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (FreeDOS turns 25 years old: An origin story) -[#]: via: (https://opensource.com/article/19/6/freedos-anniversary) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -FreeDOS turns 25 years old: An origin story -====== -The operating system's history is a great example of the open source -software model: developers working together to create something. -![FreeDOS fish logo and command prompt on computer][1] - -June 29 marks the 25th anniversary of [FreeDOS][2]. That's a major milestone for any open source software project, and I'm proud of the work that we've done on it over the past quarter century. I'm also proud of how we built FreeDOS because it is a great example of how the open source software model works. - -For its time, MS-DOS was a powerful operating system. I'd used DOS for years, ever since my parents replaced our aging Apple II computer with a newer IBM machine. MS-DOS provided a flexible command line, which I quite liked and that came in handy to manipulate my files. Over the years, I learned how to write my own utilities in C to expand its command-line capabilities even further. - -Around 1994, Microsoft announced that its next planned version of Windows would do away with MS-DOS. But I liked DOS. Even though I had started migrating to Linux, I still booted into MS-DOS to run applications that Linux didn't have yet. - -I figured that if we wanted to keep DOS, we would need to write our own. And that's how FreeDOS was born. - -On June 29, 1994, I made a small announcement about my idea to the comp.os.msdos.apps newsgroup on Usenet. - -> ANNOUNCEMENT OF PD-DOS PROJECT: -> A few months ago, I posted articles relating to starting a public domain version of DOS. The general support for this at the time was strong, and many people agreed with the statement, "start writing!" So, I have… -> -> Announcing the first effort to produce a PD-DOS. I have written up a "manifest" describing the goals of such a project and an outline of the work, as well as a "task list" that shows exactly what needs to be written. I'll post those here, and let discussion follow. - -While I announced the project as PD-DOS (for "public domain," although the abbreviation was meant to mimic IBM's "PC-DOS"), we soon changed the name to Free-DOS and later FreeDOS. - -I started working on it right away. First, I shared the utilities I had written to expand the DOS command line. Many of them reproduced MS-DOS features, including CLS, DATE, DEL, FIND, HELP, and MORE. Some added new features to DOS that I borrowed from Unix, such as TEE and TRCH (a simple implementation of Unix's tr). I contributed over a dozen FreeDOS utilities - -By sharing my utilities, I gave other developers a starting point. And by sharing my source code under the [GNU General Public License][3] (GNU GPL), I implicitly allowed others to add new features and fix bugs. - -Other developers who saw FreeDOS taking shape contacted me and wanted to help. Tim Norman was one of the first; Tim volunteered to write a command shell (COMMAND.COM, later named FreeCOM). Others contributed utilities that replicated or expanded the DOS command line. - -We released our first alpha version as soon as possible. Less than three months after announcing FreeDOS, we had an Alpha 1 distribution that collected our utilities. By the time we released Alpha 5, FreeDOS boasted over 60 utilities. And FreeDOS included features never imagined in MS-DOS, including internet connectivity via a PPP dial-up driver and dual-monitor support using a primary VGA monitor and a secondary Hercules Mono monitor. - -New developers joined the project, and we welcomed them. By October 1998, FreeDOS had a working kernel, thanks to Pat Villani. FreeDOS also sported a host of new features that brought not just parity with MS-DOS but surpassed MS-DOS, including ANSI support and a print spooler that resembled Unix lpr. - -You may be familiar with other milestones. We crept our way towards the 1.0 label, finally releasing FreeDOS 1.0 in September 2006, FreeDOS 1.1 in January 2012, and FreeDOS 1.2 in December 2016. MS-DOS stopped being a moving target long ago, so we didn't need to update as frequently after the 1.0 release. - -Today, FreeDOS is a very modern DOS. We've moved beyond "classic DOS," and now FreeDOS features lots of development tools such as compilers, assemblers, and debuggers. We have lots of editors beyond the plain DOS Edit editor, including Fed, Pico, TDE, and versions of Emacs and Vi. FreeDOS supports networking and even provides a simple graphical web browser (Dillo). And we have tons of new utilities, including many that will make Linux users feel at home. - -FreeDOS got where it is because developers worked together to create something. In the spirit of open source software, we contributed to each other's work by fixing bugs and adding new features. We treated our users as co-developers; we always found ways to include people, whether they were writing code or writing documentation. And we made decisions through consensus based on merit. If that sounds familiar, it's because those are the core values of open source software: transparency, collaboration, release early and often, meritocracy, and community. That's the [open source way][4]! - -I encourage you to download FreeDOS 1.2 and give it a try. - -### More resources - - * [FreeDOS website][2] - * [FreeDOS wiki][5] - * [Download FreeDOS 1.2][6] - * [Free ebooks about FreeDOS][7] - * [A gentle introduction to FreeDOS][8] - * [The origin and evolution of FreeDOS][9] - * [4 cool facts you should know about FreeDOS][10] - * [How to upgrade your system BIOS using FreeDOS][11] - * [Celebrating 24 years of FreeDOS: Useful commands cheat sheet][12] - * [How to run DOS programs in Linux][13] - * [Keeping DOS alive and kicking with open source][14] - * [Running DOS on the Raspberry Pi][15] - - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/freedos-anniversary - -作者:[Jim Hall][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/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/freedos-fish-laptop-color.png?itok=vfv_Lpph (FreeDOS fish logo and command prompt on computer) -[2]: https://www.freedos.org/ -[3]: https://www.gnu.org/licenses/licenses.en.html -[4]: https://opensource.com/open-source-way -[5]: http://wiki.freedos.org/ -[6]: https://www.freedos.org/download/ -[7]: https://www.freedos.org/ebook/ -[8]: https://opensource.com/article/18/4/gentle-introduction-freedos -[9]: https://opensource.com/article/17/10/freedos -[10]: https://opensource.com/article/17/6/freedos-still-cool-today -[11]: https://opensource.com/article/17/6/upgrade-bios-freedos -[12]: https://opensource.com/article/18/6/freedos-commands-cheat-sheet -[13]: https://opensource.com/article/17/10/run-dos-applications-linux -[14]: https://opensource.com/life/16/9/interview-jim-hall-freedos -[15]: https://opensource.com/article/18/3/can-you-run-dos-raspberry-pi diff --git a/translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md b/translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md new file mode 100644 index 0000000000..cf7b377559 --- /dev/null +++ b/translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md @@ -0,0 +1,97 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: (wxy) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (FreeDOS turns 25 years old: An origin story) +[#]: via: (https://opensource.com/article/19/6/freedos-anniversary) +[#]: author: (Jim Hall https://opensource.com/users/jim-hall) + +FreeDOS 25 岁:起源故事 +====== + +> 操作系统的历史是开发人员共同造物的开源软件模型的很好例子。 + +![FreeDOS fish logo and command prompt on computer][1] + +6 月 29 日是 [FreeDOS][2] 25 周年的日子。不管对于哪个开源软件项目来说,这都是一个重要的里程碑,我为过去这 1/4 个世纪来我们在这方面所做的工作感到自豪。我也为我们如何构建 FreeDOS 感到自豪,因为它是开源软件模型如何工作的一个很好的例子。 + +在它的那个时代,MS-DOS 是一个功能强大的操作系统。自从我的父母用新的 IBM 机器取代了老化的 Apple II 计算机以来,我已经使用 DOS 多年了。MS-DOS 提供了一个灵活的命令行,我非常喜欢它,它可以方便地操作我的文件。多年来,我学会了如何在 C 中编写自己的实用程序,以进一步扩展其命令行功能。 + +大约在 1994 年,微软宣布其下一代的 Windows 将取消 MS-DOS。但我喜欢 DOS,即使我已经开始迁移到 Linux,我仍然会启动到 MS-DOS 来运行一些 Linux 尚未拥有的应用程序。 + +我想,如果我们想留下 DOS,我们需要自己编写一个。FreeDOS 就是这样诞生的。 + +1994 年 6 月 29 日,我向 Usenet 上的 comp.os.msdos.apps 新闻组发表了关于我的想法的一个小小公告: + +> PD-DOS 项目公告: +> +> 几个月前,我发布了有关启动公共域(PD)版本 DOS 的文章。当时对此的普遍支持很强烈,很多人都赞同:“开始编写吧!”所以,我… +> +> 宣布开发 PD-DOS 的首次尝试。我写了一个“清单”来描述这样的一个项目的目标和工作大纲,以及一个“任务列表”,它准确地显示了需要编码开发的内容。我会在这里发布,然后讨论。 +> + +虽然我宣布该项目为 PD-DOS(“公共领域”的意思,缩写是为了模仿 IBM 的“PC-DOS”),但我们很快将名称改为 Free-DOS,再后来又改为 FreeDOS。 + +我马上开始开发它。首先,我分享了我编写的用于扩展 DOS 命令行功能的实用程序。它们中的许多程序都重现了 MS-DOS 功能,包括 `CLS`、`DATE`、`DEL`、`FIND`、`HELP` 和 `MORE`。有些是我从 Unix 借来的新功能,比如 `TEE` 和 `TRCH`(Unix 的 `tr` 的简单实现)。我贡献了十几个 FreeDOS 工具。 + +通过分享我的实用程序,我给了其他开发人员一个起点。通过在 [GNU 通用公共许可证][3](GNU GPL)下共享我的源代码,我隐含地允许其他人添加新功能并修复错误。 + +看到 FreeDOS 开始成型的其他开发人员联系了我并希望提供帮助。Tim Norman 是第一个人,Tim 自愿编写命令行 shell(`COMMAND.COM`,后来命名为 `FreeCOM`)。其他人贡献了复制或扩展了 DOS 命令行的实用程序。 + +我们尽快发布了第一个 alpha 版本。在宣布了 FreeDOS 后不到三个月,我们就有了一个集合了我们所编写的功能的 Alpha 1 发行版。当我们发布 Alpha 5 时,FreeDOS 已经拥有了 60 多个实用程序。FreeDOS 包含了 MS-DOS 中从未想过的功能,包括通过 PPP 拨号驱动程序实现的互联网连接,以及使用主 VGA 监视器和辅助单色监视器的双显示器支持。 + +新的开发人员加入了该项目,我们很欢迎他们。到 1998 年 10 月,感谢 Pat Villani,FreeDOS 有了一个可以工作的内核。FreeDOS 还提供了许多新功能,不仅带来了与 MS-DOS 的同等性,而且超越了 MS-DOS,包括 ANSI 支持和类似 Unix lpr 的打印后台处理程序。 + +你可能熟悉其他的里程碑版本。我们继续向 1.0 版本迈进,终于在 2006 年 9 月发布了 FreeDOS 1.0,在 2012 年 1 月发布了 FreeDOS 1.1,在 2016 年 12 月发布了 FreeDOS 1.2。而 MS-DOS 很久以前就停止了开发,因此我们在 1.0 发布之后不需要经常更新了。 + +如今,FreeDOS 已经是一个非常现代的 DOS。我们已经超越了“经典 DOS”,现在 FreeDOS 拥有许多开发工具,如编译器、汇编器和调试器。除了普通的 DOS Edit 编辑器之外,我们还有许多编辑器,包括 Fed、Pico、TDE 以及 Emacs 和 Vi 的一个版本。FreeDOS 支持网络,甚至还提供简单的图形 Web 浏览器(Dillo)。我们有大量的新工具,包括许多可以让 Linux 用户感到熟悉的实用工具。 + +正因为开发人员的共同创造,FreeDOS 才走到如今。本着开源软件的精神,我们通过修复错误和添加新功能为彼此的工作做出了贡献。我们将用户视为共同开发者;我们总能找到方法来吸引贡献者,无论是编写代码还是编写文档。我们基于优点达成共识。如果这听起来很熟悉,那是因为这些是开源软件的核心价值:透明度、协作、尽早发布、经常发布、精英管理和社区。这就是[开源方式][4]! + +我鼓励你下载 FreeDOS 1.2 并尝试一下。 + +### 更多资源 + + * [FreeDOS 官方网站][2] + * [FreeDOS wiki][5] + * [下载 FreeDOS 1.2][6] + * [FreeDOS 的免费电子书][7] + * [FreeDOS 的简单介绍][8] + * [FreeDOS 起源与革命][9] + * [4 个 FreeDOS 的有趣事实][10] + * [如何使用 FreeDOS 升级你的系统 BIOS][11] + * [庆祝 FreeDOS 24 岁生日:有用的命令速查表][12] + * [如何在 Linux 中运行 DOS 程序][13] + * [让 DOS 活到现在并通过开源来起步][14] + * [在树莓派上运行 DOS][15] + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/freedos-anniversary + +作者:[Jim Hall][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/jim-hall +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/freedos-fish-laptop-color.png?itok=vfv_Lpph (FreeDOS fish logo and command prompt on computer) +[2]: https://www.freedos.org/ +[3]: https://www.gnu.org/licenses/licenses.en.html +[4]: https://opensource.com/open-source-way +[5]: http://wiki.freedos.org/ +[6]: https://www.freedos.org/download/ +[7]: https://www.freedos.org/ebook/ +[8]:https://linux.cn/article-9983-1.html +[9]: https://opensource.com/article/17/10/freedos +[10]: https://opensource.com/article/17/6/freedos-still-cool-today +[11]: https://opensource.com/article/17/6/upgrade-bios-freedos +[12]: https://opensource.com/article/18/6/freedos-commands-cheat-sheet +[13]: https://linux.cn/article-9014-1.html +[14]: https://opensource.com/life/16/9/interview-jim-hall-freedos +[15]: https://linux.cn/article-9544-1.html From 1449d32ff427583689d8a57ea4a8e6e4c45f9203 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 15:48:17 +0800 Subject: [PATCH 190/336] PUB:20190628 FreeDOS turns 25 years old- An origin story.md @wxy https://linux.cn/article-11033-1.html --- ...0190628 FreeDOS turns 25 years old- An origin story.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/talk => published}/20190628 FreeDOS turns 25 years old- An origin story.md (96%) diff --git a/translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md b/published/20190628 FreeDOS turns 25 years old- An origin story.md similarity index 96% rename from translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md rename to published/20190628 FreeDOS turns 25 years old- An origin story.md index cf7b377559..bf11ae7964 100644 --- a/translated/talk/20190628 FreeDOS turns 25 years old- An origin story.md +++ b/published/20190628 FreeDOS turns 25 years old- An origin story.md @@ -1,18 +1,18 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11033-1.html) [#]: subject: (FreeDOS turns 25 years old: An origin story) [#]: via: (https://opensource.com/article/19/6/freedos-anniversary) [#]: author: (Jim Hall https://opensource.com/users/jim-hall) -FreeDOS 25 岁:起源故事 +25 岁的 FreeDOS:起源故事 ====== > 操作系统的历史是开发人员共同造物的开源软件模型的很好例子。 -![FreeDOS fish logo and command prompt on computer][1] +![FreeDOS fish logo and command prompt on computer](https://img.linux.net.cn/data/attachment/album/201906/29/154802szbavz4a0fa8a27f.jpg) 6 月 29 日是 [FreeDOS][2] 25 周年的日子。不管对于哪个开源软件项目来说,这都是一个重要的里程碑,我为过去这 1/4 个世纪来我们在这方面所做的工作感到自豪。我也为我们如何构建 FreeDOS 感到自豪,因为它是开源软件模型如何工作的一个很好的例子。 From 2888f4f730aa2a5b1543a130360aeeddb39c727c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 16:18:58 +0800 Subject: [PATCH 191/336] PRF:20190624 Raspberry Pi 4 is here.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wahailin 翻译的不错~ --- .../news/20190624 Raspberry Pi 4 is here.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/translated/news/20190624 Raspberry Pi 4 is here.md b/translated/news/20190624 Raspberry Pi 4 is here.md index cc384cb55d..56b768771e 100644 --- a/translated/news/20190624 Raspberry Pi 4 is here.md +++ b/translated/news/20190624 Raspberry Pi 4 is here.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Raspberry Pi 4 is here!) @@ -9,7 +9,10 @@ 树莓派 4 来袭! ====== -售价 35 美元起的新一代树莓派计算机,装载了 1.5 GHz 的 Arm 芯片,并支持双 HDMI 4K 显示,全吞吐量千兆以太网,以及更多新特性。 + +![](https://img.linux.net.cn/data/attachment/album/201906/29/161918icu6zrn8qrg3p38u.png) + +> 售价 35 美元起的新一代树莓派单板计算机,装载了 1.5 GHz 的 Arm 芯片,并支持双 HDMI 4K 显示,全吞吐量千兆以太网,以及更多新特性。 ![Raspberry Pi 4 board][1] @@ -37,38 +40,33 @@ * PoE(以太网供电)供电针 * 完全兼容早期的树莓派产品 - - ### USB 接口和网络 树莓派 4 板载了更高速率的 USB 3 接口;它通过 Type C 接口供电,并提供两个 USB 3 接口和两个 USB 2 接口。USB 3 接口可以为连接的硬盘和其它外部设备提供更高的速率。 - ![Raspberry Pi 4 USBs][3] -基于 BCM2835 的树莓派 1 到 3 代的芯片只有一个本地 USB 接口,并且没有以太网接口,因而需要使用板子的 USB 集线器给出更多的 USB 接口和以太网接口。树莓派 3B+ 增加了一个专用的局域网(LAN)芯片,装载了千兆以太网,但它受到 USB 2 速率的限制。树莓派 4 板载了专门的千兆以太网,并且由于它不再收到 USB 速率的限制,网络速度要快得多。 +基于 BCM2835 的树莓派 1 到 3 代的芯片只有一个本地 USB 接口,并且没有以太网接口,因而需要使用板子的 USB 集线器给出更多的 USB 接口和以太网接口。树莓派 3B+ 增加了一个专用的局域网(LAN)芯片,装载了千兆以太网,但它受到 USB 2 速率的限制。树莓派 4 板载了专门的千兆以太网,并且由于它不再受到 USB 速率的限制,网络速度要快得多。 - -树莓派 4 采用了 3B+ 中已有的技术,这项技术使得树莓派 3B+ 成为了第一个带有双频无线网络的单板计算机,即可以同时连接 2.4 GHz 和 5 GHz 频率的网络。 +树莓派 4 采用了 3B+ 中已有的技术 —— 该技术使得树莓派 3B+ 成为了第一个带有双频无线网络的单板计算机,即可以同时连接 2.4 GHz 和 5 GHz 频率的网络。 ### 显示 -设计第一代树莓派时,其 CPU 和 GPU 性能的平衡大大偏向于 GPU。VideoCore IV 是一个非常强大的图形处理器,支持全高清 1080 p 多媒体的处理,这就是为什么树莓派一直作为家庭媒体中心而广受欢迎的原因。树莓派 2 代在某种程度上进行了权衡修改,并将 CPU 的性能进行提升,将树莓派从单核发展成四核 ARM 芯片。而树莓派 4 代将 CPU 和 GPU 的性能都进行了大幅提升。新的 VideoCore VI GPU 支持 4K 视频,并允许通过板子的两个 Micro HDMI 端口(板子特意保持了和旧有型号相同的尺寸)进行双显示输出,这里要用一个适配器或 Micro HDMI 转 full HDMI 的转换线连接到 HDMI 屏幕。 - -当你需要同时浏览多个窗口时,需要用到更多的物理显示屏,双显示的好处在此时就得到了绝佳体现。如果你正在编程,你可能会在其中一个屏幕上编写代码,构建网站或应用,而在另一个屏幕上查看数据库、Web 浏览器、电子邮件或其他内容。这是树莓派首次可以不必将开发局限在一台显示器上,从而可以让你在需要时,在不同的屏幕上构建具有不同内容的基于树莓派的项目。 +设计第一代树莓派时,其 CPU 和 GPU 性能的平衡大大偏向于 GPU。VideoCore IV 是一个非常强大的图形处理器,支持全高清 1080p 多媒体的处理,这就是为什么树莓派一直作为家庭媒体中心而广受欢迎的原因。树莓派 2 代在某种程度上进行了权衡修改,并将 CPU 的性能进行提升,将树莓派从单核发展成四核 ARM 芯片。而树莓派 4 代将 CPU 和 GPU 的性能都进行了大幅提升。新的 VideoCore VI GPU 支持 4K 视频,并允许通过板子上的两个 Micro HDMI 端口(板子特意保持了和旧有型号相同的尺寸)进行双显示输出,这里要用一个适配器或 Micro HDMI 转 full HDMI 的转换线连接到 HDMI 屏幕。 +当你需要同时浏览多个窗口时,需要用到更多的物理显示屏,双显示的好处在此时就得到了绝佳体现。如果你正在编程,你可能会在其中一个屏幕上编写代码,构建网站或应用,而在另一个屏幕上查看数据库、Web 浏览器、电子邮件或其他内容。这是树莓派首次可以不必将开发局限在一台显示器上,从而可以让你在需要时,在不同的屏幕上构建具有不同内容的基于树莓派的项目。 -树莓派还有一个显示器串行接口(DSI),用于驱动另一个特殊的显示-这里并非指另一个监视器本身,而是通过一根挠性电缆连接的官方树莓派触摸屏显示器。 +该树莓派还有一个显示器串行接口(DSI),用于驱动另一个特殊的显示-这里并非指另一个监视器本身,而是通过一根挠性电缆连接的官方树莓派触摸屏显示器。 ### Raspbian Buster -树莓派 4 发布后,紧接着更新了基于 Debian 的系统 Raspbian Buster,而新的树莓派对 OpenGL ES 3 的支持,使我们在 Raspbian Buster 上为树莓派 4 开发任意软件成为可能。 Buster 对界面进行了一些调整,并对很多软件进行了升级,其中包括 Python3.7。 +树莓派 4 发布后,紧接着更新了基于 Debian 的系统 Raspbian Buster,而新的树莓派对 OpenGL ES 3 的支持,使我们在 Raspbian Buster 上为树莓派 4 开发任意软件成为可能。Buster 对界面进行了一些调整,并对很多软件进行了升级,其中包括 Python3.7。 ![Raspbian Buster][4] ### 开源图形驱动程序 -在过去的五年中,Eric Anholt 一直致力于为树莓派编写开源图形驱动程序。现在,Raspbian 可以使用这个驱动程序加速树莓派上的 Web 浏览、桌面图形和 3D 应用,这取代了以前需要的大量封闭源代码。非常感谢 Eric 和 博通 的贡献。 +在过去的五年中,Eric Anholt 一直致力于为树莓派编写开源图形驱动程序。现在,Raspbian 可以使用这个驱动程序加速树莓派上的 Web 浏览、桌面图形和 3D 应用,这取代了以前需要的大量闭源代码。非常感谢 Eric 和博通的贡献。 按之前预计,树莓派 4 将于明年完成,但由于芯片设计比预期更早投入生产,树莓派 4 因而可以提早到现在发布。 @@ -83,7 +81,7 @@ via: https://opensource.com/article/19/6/raspberry-pi-4 作者:[Ben Nuttall][a] 选题:[lujun9972][b] 译者:[wahailin](https://github.com/wahailin) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 5cc5df1516301884f19f52df5bd962ee2f270e94 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 16:19:37 +0800 Subject: [PATCH 192/336] PUB:20190624 Raspberry Pi 4 is here.md @wahailin https://linux.cn/article-11034-1.html --- .../news => published}/20190624 Raspberry Pi 4 is here.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190624 Raspberry Pi 4 is here.md (98%) diff --git a/translated/news/20190624 Raspberry Pi 4 is here.md b/published/20190624 Raspberry Pi 4 is here.md similarity index 98% rename from translated/news/20190624 Raspberry Pi 4 is here.md rename to published/20190624 Raspberry Pi 4 is here.md index 56b768771e..3aab50ec31 100644 --- a/translated/news/20190624 Raspberry Pi 4 is here.md +++ b/published/20190624 Raspberry Pi 4 is here.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11034-1.html) [#]: subject: (Raspberry Pi 4 is here!) [#]: via: (https://opensource.com/article/19/6/raspberry-pi-4) [#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) From 7e7b2c582e17f864b48fcae94a84ad98c211b8a2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 29 Jun 2019 21:31:30 +0800 Subject: [PATCH 193/336] PRF:20180629 100 Best Ubuntu Apps.md PART 2 --- .../tech/20180629 100 Best Ubuntu Apps.md | 118 +++++++++--------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index fdacde6fb3..c1e54b5d6b 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -11,7 +11,7 @@ ### 1、Google Chrome 浏览器 -几乎所有 Linux 发行版都默认安装了 Mozilla Firefox 网络浏览器,并且它是 Google Chrome 的强力竞争对手。但是 Chrome 相对 Firefox 而言有它自己的优点,比如它可以让你直接访问你的 Google 账户,你可以通过它来同步你在其它操作系统和手机上的 Chrome 浏览器的书签、浏览历史、扩展等等。 +几乎所有 Linux 发行版都默认安装了 Mozilla Firefox 网络浏览器,它是 Google Chrome 的强力竞争对手。但是 Chrome 相对 Firefox 而言有它自己的优点,比如它可以让你直接访问你的 Google 账户,你可以通过它来同步你在其它操作系统和手机上的 Chrome 浏览器的书签、浏览历史、扩展等等。 ![Chrome][3] @@ -19,11 +19,11 @@ Google Chrome 为 Linux 集成了最新的 Flash 播放器,其它 Linux 上的 ### 2、Steam -现在在 Linux 上玩游戏已经不是问题了,这在很多年前还是一个遥不可及的梦。在 2013 年,Valve 发布了 Linux 上的 Steam 游戏客户端,此后一切都变了。早期用户犹豫着从 Windows 转到 Linux,只是因为它们不能在 Ubuntu 上玩它们最喜欢的游戏,但是现在已经不是这样了。 +现在在 Linux 上玩游戏已经不是问题了,这在很多年前还是一个遥不可及的梦。在 2013 年,Valve 发布了 Linux 上的 Steam 游戏客户端,此后一切都变了。早期用户犹豫着从 Windows 转到 Linux,只是因为他们不能在 Ubuntu 上玩它们最喜欢的游戏,但是现在已经不是这样了。 ![Steam][4] -一些用户可能发现在 Linux 上安装 Steam 有点棘手,但如果能在 Linux 上玩上千的 Steam 游戏时这么做就是值得的。一些流行的高端游戏,如《反恐精英:全球攻势》、《Hitman》、《Dota 2》在 Linux 上都能获取,你只需要确保你满足玩这些游戏的最小硬件需求。 +一些用户可能发现在 Linux 上安装 Steam 有点棘手,但如果能在 Linux 上玩上千的 Steam 游戏这么做就是值得的。一些流行的高端游戏,如《反恐精英:全球攻势》、《Hitman》、《Dota 2》在 Linux 上都能获取,你只需要确保你满足玩这些游戏的最小硬件需求。 ``` $ sudo add-apt-repository multiverse @@ -33,11 +33,11 @@ $ sudo apt-get install steam ### 3、WordPress 桌面客户端 -是的,没错,WordPress 有它专有的 Ubuntu 平台的客户端,你可以用来管理你的 WordPress 站点。你可以只在桌面客户端上撰写和设计你的站点而不用转到浏览器。 +是的,没错,WordPress 有它专属的 Ubuntu 平台的客户端,你可以用来管理你的 WordPress 站点。你可以在桌面客户端上撰写和设计你的站点而不用转到浏览器。 ![][5] -如果你拥有 WordPress 建立的站点,那么这个桌面客户端就是你必备的应用,它能够让你在单个窗口内追踪所有的 WordPress 通知。你也可以查看站点博客的数据。桌面客户端可以在 Ubuntu 软件中心中获取,你可以在那里下载和安装。 +如果你拥有使用 WordPress 建立的站点,那么这个桌面客户端就是你必备的应用,它能够让你在单个窗口内追踪所有的 WordPress 通知。你也可以查看你的站点上的博客数据。桌面客户端可以在 Ubuntu 软件中心中获取,你可以在那里下载和安装。 ### 4、VLC 媒体播放器 @@ -55,11 +55,11 @@ $ sudo apt-get install vlc qtwayland5 ### 5、Atom 文本编辑器 -由 GitHub 开发,Atom 是一个自由开源的文本编辑器,它同样能够被用做集成开发环境(IDE)来进行主流编程语言的编码和编辑。Atom 开发者声称它是完全可魔改的 21 世纪文本编辑器。 +由 GitHub 开发的 Atom 是一个自由开源的文本编辑器,它同样能够被用做集成开发环境(IDE)来进行主流编程语言的编码和编辑。Atom 开发者声称它是完全可魔改的 21 世纪文本编辑器。 ![][7] -Atom 文本编辑器属于最好的用户界面之一,它是一个富文本编辑器,提供了自动补全、语法高亮,支持扩展与插件。 +Atom 文本编辑器拥有最佳的用户界面,它是一个富文本编辑器,提供了自动补全、语法高亮,支持扩展与插件。 ``` $ sudo add-apt-repository ppa:webupd8team/atom @@ -69,7 +69,7 @@ $ sudo apt-get install atom ### 6、GIMP 图像编辑器 -GIMP(GNU 图形操作程序)是 Ubuntu 上自由开源的图像编辑器。无疑它是 Windows 上 Adobe Photoshop 的最好替代品。如果你过去经常用 Adobe Photoshop,会觉得很难习惯 GIMP,但是你可以自定义 GIMP 使它看起来与 Photoshop 非常相似。 +GIMP(GNU 图形操作程序)是 Ubuntu 上的自由开源的图像编辑器。无疑它是 Windows 上 Adobe Photoshop 的最好替代品。如果你过去经常用 Adobe Photoshop,会觉得很难习惯 GIMP,但是你可以自定义 GIMP 使它看起来与 Photoshop 非常相似。 ![][8] @@ -81,27 +81,27 @@ $ sudo apt-get install gimp ### 7、Google Play 音乐桌面播放器 -Google Play 音乐桌面播放器是一个开源的音乐播放器,它是 Google Play 音乐的一个替代品,或者说比它更好。Google 一直少个桌面的音乐客户端,但第三方的应用完美的填充了空白。 +Google Play 音乐桌面播放器是一个开源的音乐播放器,它是 Google Play 音乐的一个复制品,或者说比它更好。Google 一直少个桌面的音乐客户端,但第三方的应用完美的填充了空白。 ![][9] -就像你在上述截屏里看到的,它的界面在外观和感觉上都是首屈一指的。你只需要登录 Google 账户,之后就会导入所有你的音乐和你的最爱到桌面客户端里。你可以从它的官方[站点][10]下载安装文件并使用软件中心安装它。 +就像你在上面的截屏里看到的,它的界面在外观和感觉上都是首屈一指的。你只需要登录 Google 账户,之后就会导入你的所有音乐和收藏到桌面客户端里。你可以从它的官方[站点][10]下载安装文件并使用软件中心安装它。 ### 8、Franz -Franz 是一个即时消息客户端,它将聊天和信息服务结合到了一个应用中。它是现代化的即时消息平台之一,在单个应用中支持 Facebook Messenger、WhatsApp、Telegram、微信、Google Hangouts、 Skype。 +Franz 是一个即时消息客户端,它将聊天和信息服务结合到了一个应用中。它是一个现代化的即时消息平台,在单个应用中支持了 Facebook Messenger、WhatsApp、Telegram、微信、Google Hangouts、 Skype。 ![][11] Franz 是一个完备的消息平台,你可以用于商业中管理大量的客户服务。要安装 Franz,你需要从它的[网站][12]下载安装包,在软件中心中打开。 -### 9、Synaptic 包管理器 +### 9、新立得包管理器 - Synaptic 包管理器是 Ubuntu 上必有工具之一,因为它为我们通常在命令行界面安装软件的 ‘apt-get’ 命令提供了用户图形界面。它是各种 Linux 发行版中默认的应用的强力对手。 +新立得包管理器是 Ubuntu 上必有工具之一,因为它为我们通常在终端里安装软件的 `apt-get` 命令提供了用户图形界面。它是各种 Linux 发行版中的默认应用商店的强力对手。 ![][13] -Synaptic 拥有非常简单的用户图形界面,相比其它的应用商店非常快并易于使用。左手边你可以浏览不同分类的各种应用,也可以轻松安装和卸载。 +新立得拥有非常简单的用户图形界面,相比其它的应用商店非常快并易于使用。在左手边你可以浏览不同分类的各种应用,也可以轻松安装和卸载。 ``` $ sudo apt-get install synaptic @@ -109,7 +109,7 @@ $ sudo apt-get install synaptic ### 10、Skype -Skype 是一个非常流行的跨平台视频电话应用,如今在 Linux 系统的 Snap 应用中可以获取了。Skype 是一个即时通信应用,它提供了视频和音频通话,桌面共享等特点。 +Skype 是一个非常流行的跨平台视频电话应用,如今在 Linux 系统可以以 Snap 应用方式获取。Skype 是一个即时通信应用,它提供了视频和音频通话、桌面共享等功能。 ![][14] @@ -121,15 +121,15 @@ $ sudo snap install skype ### 13、VirtualBox -VirtualBox 是由 Oracle 公司开发的跨平台的虚拟化软件应用。如果你喜欢尝试新的操作系统,那么 VirtualBox 是为你准备的必备的 Ubuntu 应用。你可以尝试 Windows 内的 Linux,Mac 或者 Linux 系统中的 Windows 和 Mac。 +VirtualBox 是由 Oracle 公司开发的跨平台的虚拟化软件应用(LCTT 译注:实际上是由被 Oracle 公司收购的 Sun 公司开发的,包括 Java、Solaris 也是)。如果你喜欢尝试新的操作系统,那么 VirtualBox 是你必备的 Ubuntu 应用。你可以在 Windows 内尝试 Linux、Mac,也可以在 Linux 系统内尝试 Windows 和 Mac。 ![][15] -VB 实际做的是让你在宿机操作系统里可视化的运行顾客操作系统。它创建虚拟硬盘并在上面安装顾客操作系统。你可以在 Ubuntu 软件中心直接下载和安装。 +VirtualBox 实际做的是让你在宿机操作系统里可视化地运行访客操作系统。它可以创建虚拟硬盘并在上面安装访客操作系统。你可以在 Ubuntu 软件中心直接下载和安装它。 ### 12、Unity Tweak 工具 -Unity Tweak 工具(Gnome Tweak 工具)对于每个 Linux 用户都是必须有的,因为它给了用户根据需要自定义桌面的能力。你可以尝试新的 GTK 主题,设置桌面角落,自定义图标集,改变 unity 启动器,等。 +Unity Tweak 工具(Gnome Tweak 工具)对于每个 Linux 用户都是必须拥有的,因为它给了用户根据需要自定义桌面的能力。你可以尝试新的 GTK 主题、设置桌面热角、自定义图标集、调整 unity 启动器等等。 ![][16] @@ -141,11 +141,11 @@ $ sudo apt-get install unity-tweak-tool ### 13、Ubuntu Cleaner -Ubuntu Cleaner是一个系统管理工具,尤其被设计为移除不再使用的包,移除不必要的应用和清理浏览器缓存的。Ubuntu Cleaner 有易于使用的简易用户界面。 +Ubuntu Cleaner 是一个系统管理工具,其被特别设计用来移除不再使用的包、不需要的应用和清理浏览器缓存。Ubuntu Cleaner 有易于使用的简单用户界面。 ![][17] -Ubuntu Cleaner是 BleachBit 最好的替代品之一,BleachBit 是 Linux 发行版上的相当好的清理工具。 +Ubuntu Cleaner 是 BleachBit 最好的替代品之一,BleachBit 是 Linux 发行版上的相当好的清理工具。 ``` $ sudo add-apt-repository ppa:gerardpuig/ppa @@ -155,7 +155,7 @@ $ sudo apt-get install ubuntu-cleaner ### 14、Visual Studio Code -Visual Studio Code 是一个代码编辑器,你会发现它与 Atom 文本编辑器和 Sublime Text 非常相似,如果你曾用过的话。Visual Studio Code 证明是非常好的教育工具,因为它解释了所有东西,从 HTML 标签到编程中的语法。 +Visual Studio Code 是一个代码编辑器,你会发现它与你可能曾用过的 Atom 文本编辑器和 Sublime Text 非常相似。Visual Studio Code 被证明是非常好的教育工具,因为它可以对编程中的从 HTML 标签到语法的所有东西做出解释。 ![][18] @@ -163,11 +163,11 @@ Visual Studio 自身集成了 Git,它有优秀的用户界面,你会发现 ### 15、Corebird -如果你在找你可以用 Twitter 的桌面客户端,那 Corebird Twitter 客户端就是你在找的。它被争议是 Linux 发行版下可获得的最好的 Twitter 客户端,它提供了与你手机上的 Twitter 应用非常相似的功能。 +如果你在找你可以使用 Twitter 的桌面客户端,那 Corebird Twitter 客户端就是你在找的。它被视为 Linux 发行版下可获得的最好的 Twitter 客户端,它提供了与你手机上的 Twitter 应用非常相似的功能。 ![][19] - 当有人喜欢或者转发你的 tweet 或者给你发消息时,Corebird Twitter 客户端同样会给你通知。你同样可以在这个客户端上添加多个 Twitter 账户。 +当有人喜欢或者转发你的 tweet 或者给你发消息时,Corebird Twitter 客户端同样会给你通知。你同样可以在这个客户端上添加多个 Twitter 账户。 ``` $ sudo snap install corebird @@ -175,19 +175,19 @@ $ sudo snap install corebird ### 16、Pixbuf -Pixbuf 是来自 Pixbuf 图片社区中心的一个桌面客户端,让你上传,分享和出售你的相片。它支持图片共享到社交媒体像 Facebook,Pinterest,Instagram,Twitter,等等,也包括照相服务像 Flickr,500px and Youpic。 +Pixbuf 是来自 Pixbuf 图片社区中心的一个桌面客户端,可以让你上传、分享和出售你的相片。它支持图片共享,如像 Facebook、Pinterest、Instagram、Twitter 等社交媒体,以及像 Flickr、500px 和 Youpic 等相片服务。 ![][20] -Pixbuf提供了分析等功能,可以让你统计点击量、转发量、照片的回复、预定的帖子、专用的iOS 扩展。它同样有移动应用,因此你可以在任何地方连接到你的 Pixbuf 账户。 Pixbuf 在 Ubuntu 软件中心以 Snap 包的形式获得。 +Pixbuf 提供了分析等功能,可以让你统计点击量、转发量、照片的回复数、定时发帖、iOS 专有的扩展信息。它同样有移动应用,因此你可以在任何地方连接到你的 Pixbuf 账户。Pixbuf 可以在 Ubuntu 软件中心以 Snap 包的形式获得。 ### 17、Clementine 音乐播放器 -Clementine 是一个跨平台的音乐播放器,并且是 Ubuntu 上默认音乐播放器 Rhythmbox 的良好竞争者。多亏它的友好的界面,它很快速并易于使用。它支持所有音频文件格式的声音回放。 +Clementine 是一个跨平台的音乐播放器,并且是 Ubuntu 上默认音乐播放器 Rhythmbox 的良好竞争者。它是一个快速而易用的音乐播放器,其用户界面友好。它支持所有主流音频文件格式的回放。 ![][21] -除了播放本地库中的音乐,你也可以在线听 Spotify, SKY.fm, Soundcloud 等的广播。它也支持其它的功能像智能动态播放列表,从像 Dropbox,Google Drive 这样的云存储中同步音乐。 +除了可以播放本地库中的音乐,你也可以在线听 Spotify、SKY.fm、Soundcloud 等的广播。它也支持其它的功能像智能和动态播放列表,可以从像 Dropbox、Google Drive 这样的云存储中同步音乐。 ``` $ sudo add-apt-repository ppa:me-davidsansome/clementine @@ -197,19 +197,19 @@ $ sudo apt-get install clementine ### 18、Blender -Blender 是一个自由开源的 3D 创建应用软件,你可以用来创建 3D 打印模型,动画电影,视频游戏,等。它自身集成了游戏引擎,你可以用来开发和测试视频游戏。 +Blender 是一个自由开源的 3D 创建应用软件,你可以用来创建 3D 打印模型、动画电影、视频游戏等。它自身集成了游戏引擎,你可以用来开发和测试视频游戏。 ![blender][22] -Blender 拥有赏心悦目的用户界面,易于使用,它包括了内置的渲染引擎,数字雕刻,仿真工具,动画工具,还有很多。考虑到它免费和它的特点,你甚至会认为它可能是 Ubuntu 上最好的应用之一。 +Blender 拥有赏心悦目的用户界面,易于使用,它包括了内置的渲染引擎、数字雕刻、仿真工具、动画工具,还有很多。考虑到它免费和它的特点,你甚至会认为它可能是 Ubuntu 上最好的应用之一。 ### 19、Audacity -Audacity 是一个开源的音频编辑应用,你可以用来记录、编辑音频文件。你可以从各种输入中录入音频,包括麦克风,电子吉它,等等。根据你的需要,它提供了编辑和裁剪音频的能力。 +Audacity 是一个开源的音频编辑应用,你可以用来记录、编辑音频文件。你可以从各种输入中录入音频,包括麦克风、电子吉它等等。它提供了根据你的需要编辑和裁剪音频的能力。 ![][23] -最近 Audacity 发布了 Ubuntu 上的新版本,新特点包括主题提升、放缩命令等。除了这些,它还提供了降噪等更多特点。 +最近 Audacity 发布了 Ubuntu 上的新版本,新特点包括主题改进、放缩命令等。除了这些,它还提供了降噪等音频效果的功能。 ``` $ sudo add-apt-repository ppa:ubuntuhandbook1/audacity @@ -219,11 +219,11 @@ $ sudo apt-get install audacity ### 20、Vim -Vim 是一个集成开发环境,你可以用作一个独立的应用或各种像 Python 等主流编程语言的命令行接口。 +Vim 是一个集成开发环境,你可以以一个独立应用或 CLI 程序使用它,用于各种像 Python 等主流编程语言的编程。 ![][24] -大多数程序员喜欢在 Vim 中编代码,因为它快速并且是一个可高度定制的集成开发环境。最初你可能觉得有点难用,但你会很快习惯它。 +大多数程序员喜欢在 Vim 中编写代码,因为它快速并且是一个可高度定制的集成开发环境。最初你可能觉得有点难用,但你会很快习惯它。 ``` $ sudo apt-get install vim @@ -231,11 +231,11 @@ $ sudo apt-get install vim ### 21、Inkscape -Inkscape 是一个开源和跨平台的矢量图形编辑器,你会觉得它和 Corel Draw 和 Adobe Illustrator 很相似。用它可以创建和编辑矢量图形例如柱形图、logo、图表、插图等。 +Inkscape 是一个开源和跨平台的矢量图形编辑器,你会觉得它和 Corel Draw 和 Adobe Illustrator 很相似。用它可以创建和编辑矢量图形例如柱形图、徽标、图表、插图等。 ![][25] -Inkscape 使用规模矢量图形(SVG),一个基于 XML 的 W3C 标准格式。它只是各种格式包括 JPEG、PNG、GIF、PDF、AI(Adobe Illustrator 格式)、VSD 等等。 +Inkscape 使用可缩放矢量图形(SVG),这是一个基于 XML 的 W3C 标准格式。它支持各种格式,包括 JPEG、PNG、GIF、PDF、AI(Adobe Illustrator 格式)、VSD 等等。 ``` $ sudo add-apt-repository ppa:inkscape.dev/stable @@ -245,11 +245,11 @@ $ sudo apt-get install inkscape ### 22、Shotcut -Shotcut 是一个免费、开源的跨平台的 Meltytech,LLC 在 MLT 多媒体框架下开发的视频编辑应用。你会发现它是 Linux 发行版上最强大的视频编辑器之一,因为它支持所有主要的音频,视频,图片格式。 +Shotcut 是一个 Meltytech, LLC 在 MLT 多媒体框架下开发的自由开源的跨平台视频编辑应用。你会发现它是 Linux 发行版上最强大的视频编辑器之一,它支持所有主要的音频、视频、图片格式。 ![][26] -它给了非线性编辑的各种文件格式多轨道视频的能力。它支持 4K 视频分辨率和各种音频,视频过滤,语气生成、音频混合和很多其它的。 +它提供了非线性编辑多轨编辑各种文件格式的视频的能力。它支持 4K 视频分辨率和各种音频、视频过滤、语气生成、音频混合和很多其它的。 ``` snap install shotcut -- classic @@ -257,11 +257,11 @@ snap install shotcut -- classic ### 23、SimpleScreenRecorder -SimpleScreenRecorder 是 Ubuntu 上的一个免费和轻量级的屏幕录制工具。屏幕录制非常有用,如果你是 YouTube 创作者或应用开发者。 +SimpleScreenRecorder 是 Ubuntu 上的一个免费而轻量级的屏幕录制工具。如果你是 YouTube 创作者或应用开发者,屏幕录制功能非常有用。 ![][27] -它可以捕获桌面屏幕的视频/音频记录或直接录制视频游戏。在屏幕录制前你可以设置视频分辨率、帧率等。它有简单的用户界面,你会发现非常易用。 +它可以捕获桌面屏幕的视频/音频记录或直接录制视频游戏。在录制屏幕前,你可以设置视频分辨率、帧率等。它有简单的用户界面,你会发现非常易用。 ``` $ sudo add-apt-repository ppa:marten-baert/simplescreenrecorder @@ -271,17 +271,19 @@ $ sudo apt-get install simplescreenrecorder ### 24、Telegram -Telegram 是一个基于云的即时通信和网络电话平台,近年来非常流行。它是开源和跨平台的,用户可以用来发送消息,共享视频,图片,音频和其它文件。 +Telegram 是一个基于云的即时通信和网络电话平台,近年来非常流行。它是开源和跨平台的,用户可以用来发送消息,共享视频、图片、音频和其它文件。 ![][28] -Telegram 中容易发现的特点是加密聊天,语音信息,远程视频通话,在线位置和社交登录。在 Telegram 中隐私和安全拥有最高优先级,因此,所有你发送和接收的是端对端加密的。 +Telegram 中容易注意到的特点是加密聊天、语音信息、机器人、远程视频通话、在线位置和社交登录。在 Telegram 中隐私和安全拥有最高优先级,因此,所有你发送和接收的是端对端加密的。 ``` $ sudo snap install telegram-desktop ``` -我们所知道的危害 Windows PC 的病毒不能危害 Ubuntu,因为在 Windows PC 中接收到的邮件的破坏性文件会破坏 Windows PC。因此,在 Linux 上有一些抗病毒应用是安全的。 +### 25、ClamTk + +正如我们知道的,危害 Windows PC 的病毒不能危害 Ubuntu,但是可能被来自包含破坏性文件的 Windows PC 中的邮件所感染。因此,在 Linux 上有一些抗病毒应用是安全的。 ![][29] @@ -289,27 +291,27 @@ ClamTk 是一个轻量级的病毒扫描器,可以扫描系统中的文件和 ### 26、MailSpring -早期的 MailSpring 以 Nylas Mail 或 Nylas N1 而著名,是开源的邮件客户端。它保存所有的邮件在电脑本地,因此你可以在任何需要的时候访问它。它提供了高级搜索的功能,使用与或操作,因此你可以基于不同的参数搜索邮件。 +MailSpring 早期名为 Nylas Mail 或 Nylas N1,是开源的邮件客户端。它在电脑本地保存所有的邮件,因此你可以在任何需要的时候访问它。它提供了高级搜索的功能,可以使用“与”和“或”操作,因此你可以基于不同的参数搜索邮件。 ![][30] -MailSpring 有着和其它易于上手的邮件客户端同样优秀的用户界面。MailSpring 同样提供了私密性、安全性、规划期、通讯录管理、日历等功能特点。 +MailSpring 有着和其它易于上手的邮件客户端同样优秀的用户界面。MailSpring 同样提供了私密性、安全性、日程、通讯录管理、日历等功能特点。 ### 27、PyCharm -PyCharm 是我最喜欢的继 Vim 之后的 Python IDE 之一,因为它有优雅的用户界面,有很多扩展和插件支持。基本上,它有两个版本,一个是自由开源的社区版,另一个是付费的专业版。 +继 Vim 之后,PyCharm 是我最喜欢的的 Python IDE 之一,因为它有优雅的用户界面,有很多扩展和插件支持。基本上,它有两个版本,一个是自由开源的社区版,另一个是付费的专业版。 ![][31] -PyCharm 是高度自定义的 IDE 并且有很多功能像错误高亮、代码分析、集成单元测试和 Python 调试器等。PyCharm 对于大多数 Python 程序员和开发者来说是首选的。 +PyCharm 是可高度自定义的 IDE 并且有很多功能,如错误高亮、代码分析、集成单元测试和 Python 调试器等。PyCharm 对于大多数 Python 程序员和开发者来说是首选 IDE。 -### 28、Caffeine +### 28、咖啡因 -想象一下你在 Youtube 上看视频或阅读一篇新文章,突然你的 Ubuntu 锁屏了,我知道它很烦人。我们很多人都会遇到这种情况,所以 Caffeine 是一个阻止 Ubuntu 锁屏或屏幕保护程序的工具。 +想象一下你在 Youtube 上看视频或阅读一篇新文章,突然你的 Ubuntu 锁屏了,我知道它很烦人。我们很多人都会遇到这种情况,所以咖啡因是一个阻止 Ubuntu 锁屏或屏幕保护程序的工具。 ![][32] -Caffeine Inhibitor 是一个轻量级的工具,它在通知栏添加图标,你可以在那里轻松的激活或禁止它。不需要额外的设置。 +咖啡因指示器是一个轻量级的工具,它添加图标到通知栏,你可以在那里轻松的激活或禁止它。不需要额外的设置。 ``` $ sudo add-apt-repository ppa:eugenesan/ppa @@ -319,15 +321,15 @@ $ sudo apt-get install caffeine -y ### 29、Etcher USB 镜像写入器 -Etcher 是一个有 resin.io 开发的 USB 镜像写入器。它是一个跨平台的应用,帮助你将 ZIP、ISO、IMG 格式的镜像文件写入到 USB 存储中。如果你总是尝试新的操作系统,那么 Ethcher 是你必有的简单可靠的系统。 +Etcher 是一个由 resin.io 开发的 USB 镜像写入器。它是一个跨平台的应用,可以帮助你将 ZIP、ISO、IMG 格式的镜像文件写入到 USB 存储中。如果你经常尝试新的操作系统,那么 Ethcher 是你必有的简单可靠的工具。 ![][33] -Etcher 有干净的用户界面指导你在三步内烧录镜像到 USB 驱动或 SD 卡的过程。步骤包括选择镜像文件,选择 USB 驱动 和最终的 flash(写文件到 USB 驱动)。你可以从它的[官网][34]下载和安装 Etcher。 +Etcher 有干净的用户界面,可以指导你在三步内烧录镜像到 USB 驱动或 SD 卡的过程。步骤包括选择镜像文件、选择 USB 驱动 和最终的烧录(写文件到 USB 驱动)。你可以从它的[官网][34]下载和安装 Etcher。 ### 30、Neofetch -Neofetch 是一个酷炫的系统信息工具,通过在终端中运行 “neofetch” 命令,它会给你关于你的系统的所有信息。它酷是因为它给你关于桌面环境,内核版本,bash 版本和你正在运行的 GTK 主题信息。 +Neofetch 是一个酷炫的系统信息工具,通过在终端中运行 `neofetch` 命令,它会给你关于你的系统的所有信息。它酷是因为它可以给你关于桌面环境、内核版本、bash 版本和你正在运行的 GTK 主题的信息。 ![][35] @@ -341,11 +343,11 @@ $ sudo apt-get update install neofetch ### 31、Liferea -Liferea(Linux 热点阅读器)是一个自由开源的新闻聚集工具,用于在线新闻订阅。使用新的聚集工具非常快捷和简单,支持各种格式例如 RSS/RDF,Atom 等。 +Liferea(Linux 订阅阅读器)是一个自由开源的新闻聚合工具,用于在线新闻订阅。使用新的聚合非常快捷和简单,支持各种格式例如 RSS/RDF,Atom 等。 ![][36] -Liferea 自带与 TinyTinyRSS 的同步支持,它给了你离线阅读的能力。你会发现,就可靠性和灵活性而言,它是 Linux 上最好的订阅工具之一。 +Liferea 自带与 TinyTinyRSS 的同步支持,它给了你离线阅读的能力。你会发现,就可靠性和灵活性而言,它是 Linux 上最好的订阅工具之一。 ``` $ sudo add-apt-repository ppa:ubuntuhandbook1/apps @@ -355,19 +357,19 @@ $ sudo apt-get install liferea ### 32、Shutter -在 Ubuntu 中很容易截屏,但当编辑截屏时 Shutter 是你必不可少的应用。它帮助你捕获,编辑和轻松的共享截屏。使用 Shutter 的选择工具,你可以选择屏幕的特定区域来截屏。 +在 Ubuntu 中很容易截屏,但当需要编辑截屏时 Shutter 是你必不可少的应用。它帮助你捕获、编辑和轻松的共享截屏。使用 Shutter 的选择工具,你可以选择屏幕的特定区域来截屏。 ![][37] -Shutter 是一个功能强大的截图工具,提供了添加截图效果,画线等功能。它同样给你上传截屏到各种图像保存站点的选项。你可以直接在 Ubuntu 软件中心中下载和安装。 +Shutter 是一个功能强大的截图工具,提供了添加截图效果、画线等功能。它同样给你上传截屏到各种图像托管站点的选项。你可以直接在 Ubuntu 软件中心中下载和安装。 ### 33、Weather -Weather 是一个小的应用,给你关于你的城市或世界上其它位置的实时天气信息。它简单而且轻量级,给你超过 7 天的详细天气预报和今明两天的每个小时的细节信息。 +Weather 是一个小的应用,给你关于你的城市或世界上其它位置的实时天气信息。它简单而且轻量级,可以给你最多 7 天的详细天气预报和今明两天的每个小时的细节信息。 ![][38] -它集成在 GNOME shell 中,给你关于最近搜索位置的当前天气状态。它有最小的用户界面,在最小硬件需求下运行很顺畅。 +它集成在 GNOME shell 中,给你关于最近搜索位置的当前天气状态。它有极简的用户界面,在最小硬件需求下运行很顺畅。 ### 34、Ramme From 36043a6f277e65b8fdeac79315de2a4f1d7d375a Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 29 Jun 2019 21:48:13 +0800 Subject: [PATCH 194/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190624=20Linux?= =?UTF-8?q?=20Package=20Managers=20Compared=20=E2=80=93=20AppImage=20vs=20?= =?UTF-8?q?Snap=20vs=20Flatpak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md --- ... Compared - AppImage vs Snap vs Flatpak.md | 222 ++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md diff --git a/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md b/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md new file mode 100644 index 0000000000..df5686d0a5 --- /dev/null +++ b/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md @@ -0,0 +1,222 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Linux Package Managers Compared – AppImage vs Snap vs Flatpak) +[#]: via: (https://www.ostechnix.com/linux-package-managers-compared-appimage-vs-snap-vs-flatpak/) +[#]: author: (editor https://www.ostechnix.com/author/editor/) + +Linux Package Managers Compared – AppImage vs Snap vs Flatpak +====== + +![3 Linux Package Managers Compared][1] + +**Package managers** provide a way of packaging, distributing, installing, and maintaining apps in an operating system. With modern desktop, server and IoT applications of the Linux operating system and the hundreds of different distros that exist, it becomes necessary to move away from platform specific packaging methods to platform agnostic ones. This post explores 3 such tools, namely **AppImage** , **Snap** and **Flatpak** , that each aim to be the future of software deployment and management in Linux. At the end we summarize a few key findings. + +### 1\. AppImage + +**AppImage** follows a concept called **“One app = one file”**. This is to be understood as an AppImage being a regular independent “file” containing one application with everything it needs to run in the said file. Once made executable, the AppImage can be run like any application in a computer by simply double-clicking it in the users file system.[1] + +It is a format for creating portable software for Linux without requiring the user to install the said application. The format allows the original developers of the software (upstream developers) to create a platform and distribution independent (also called a distribution-agnostic binary) version of their application that will basically run on any flavor of Linux. + +AppImage has been around for a long time. **Klik** , a predecessor of AppImage was created by **Simon Peter** in 2004. The project was shut down in 2011 after not having passed the beta stage. A project named **PortableLinuxApps** was created by Simon around the same time and the format was picked up by a few portals offering software for Linux users. The project was renamed again in 2013 to its current name AppImage and a repository has been maintained in GitHub (project [link][2]) with all the latest changes to the same since 2018.[2][3] + +Written primarily in **C** and donning the **MIT license** since 2013, AppImage is currently developed by **The AppImage project**. It is a very convenient way to use applications as demonstrated by the following features: + + 1. AppImages can run on virtually any Linux system. As mentioned before applications derive a lot of functionality from the operating system and a few common libraries. This is a common practice in the software world since if something is already done, there is no point in doing it again if you can pick and choose which parts from the same to use. The problem is that many Linux distros might not have all the files a particular application requires to run since it is left to the developers of that particular distro to include the necessary packages. Hence developers need to separately include the dependencies of the application for each Linux distro they are publishing their app for. Using the AppImage format developers can choose to include all the libraries and files that they cannot possibly hope the target operating system to have as part of the AppImage file. Hence the same AppImage format file can work on different operating systems and machines without needing granular control. + 2. The one app one file philosophy means that user experience is simple and elegant in that users need only download and execute one file that will serve their needs for using the application. + 3. **No requirement of root access**. System administrators will require people to have root access to stop them from messing with computers and their default setup. This also means that people with no root access or super user privileges cannot install the apps they need as they please. The practice is common in a public setting (such as library or university computers or on enterprise systems). The AppImage file does not require users to “install” anything and hence users need only download the said file and **make it executable** to start using it. This removes the access dilemmas that system administrators have and makes their job easier without sacrificing user experience. + 4. **No effect on core operating system**. The AppImage-application format allows using applications with their full functionality without needing to change or even access most system files. Meaning whatever the applications do, the core operating system setup and files remain untouched. + 5. An AppImage can be made by a developer for a particular version of their application. Any updated version is made as a different AppImage. Hence users if need be can **test multiple versions of the same application** by running different instances using different AppImages. This is an invaluable feature when you need to test your applications from an end-user POV to notice differences. + 6. Take your applications where you go. As mentioned previously AppImages are archived files of all the files that an application requires and can be used without installing or even bothering about the distribution the system uses. Hence if you have a set of apps that you use regularly you may even mount a few AppImage files on a thumb drive and take it with you to use on multiple computers running multiple different distros without worrying whether they’ll work or not. + + + +Furthermore, the **AppImageKit** allows users from all backgrounds to build their own AppImages from applications they already have or for applications that are not provided an AppImage by their upstream developer. + +The package manager is platform independent but focuses primarily on software distribution to end users on their desktops with a dedicated daemon **AppImaged** for integrating the AppImage formats into respective desktop environments. AppImage is supported natively now by a variety of distros such as Ubuntu, Debian, openSUSE, CentOS, Fedora etc. and others may set it up as per their needs. AppImages can also be run on servers with limited functionality via the CLI tools included. + +To know more about AppImages, go to the official [**AppImage documentation**][3] page. + +* * * + +**Suggested read:** + + * [**Search Linux Applications On AppImage, Flathub And Snapcraft Platforms**][4] + + + +* * * + +### 2\. Snappy + +**Snappy** is a software deployment and package management system like AppImage or any other package manager for that instance. It is originally designed for the now defunct **Ubuntu Touch** Operating system. Snappy lets developers create software packages for use in a variety of Linux based distributions. The initial intention behind creating Snappy and deploying **“snaps”** on Ubuntu based systems is to obtain a unified single format that could be used in everything from IoT devices to full-fledged computer systems that ran some version of Ubuntu and in a larger sense Linux itself.[4] + +The lead developer behind the project is **Canonical** , the same company that pilots the Ubuntu project. Ubuntu had native snap support from version 16.04 LTS with more and more distros supporting it out of the box or via a simple setup these days. If you use Arch or Debian or openSUSE you’ll find it easy to install support for the package manager using simple commands in the terminal as explained later in this section. This is also made possible by making the necessary snap platform files available on the respective repos.[5] + +Snappy has the following important components that make up the entire package manager system.[6] + + * **Snap** – is the file format of the packages themselves. Individual applications that are deployed using Snappy are called “Snaps”. Any application may be packaged using the tools provided to make a snap that is intended to run on a different system running Linux. Snap, similar to AppImage is an all-inclusive file and contains all dependencies the application needs to run without assuming them to part of the target system. + * **Snapcraft** – is the tool that lets developers make snaps of their applications. It is basically a command that is part of the snap system as well as a framework that will let you build your own snaps. + * **Snapd** – is the background daemon that maintains all the snaps that are installed in your system. It integrates into the desktop environment and manages all the files and processes related to working with snaps. The snapd daemon also checks for updates normally **4 times a day** unless set otherwise. + * [**Snap Store**][5] – is an online gallery of sorts that lets developers upload their snaps into the repository. Snap store is also an application discovery medium for users and will let users see and experience the application library before downloading and installing them. + + + +The snapd component is written primarily in **C** and **Golang** whereas the Snapcraft framework is built using **Python**. Although both the modules use the GPLv3 license it is to be noted that snapd has proprietary code from Canonical for its server-side operations with just the client side being published under the GPL license. This is a major point of contention with developers since this involves developers signing a CLA form to participate in snap development.[7] + +Going deeper into the finer details of the Snappy package manager the following may be noted: + + 1. Snaps as noted before are all inclusive and contain all the necessary files (dependencies) that the application needs to run. Hence, developers need not to make different snaps for the different distros that they target. Being mindful of the runtimes is all that’s necessary if base runtimes are excluded from the snap. + 2. Snappy packages are meant to support transactional updates. Such a transactional update is atomic and fully reversible, meaning you can use the application while its being updated and that if an update does not behave the way its supposed to, you can reverse the same with no other effects whatsoever. The concept is also called as **delta programming** in which only changes to the application are transmitted as an update instead of the whole package. An Ubuntu derivative called **Ubuntu Core** actually promises the snappy update protocol to the OS itself.[8] + 3. A key point of difference between snaps and AppImages, is how they handle version differences. Using AppImages different versions of the application will have different AppImages allowing you to concurrently use 2 or more different versions of the same application at the same time. However, using snaps means conforming to the transactional or delta update system. While this means faster updates, it keeps you from running two instances of the same application at the same time. If you need to use the old version of an app you’ll need to reverse or uninstall the new version. Snappy does support a feature called [**“parallel install”**][6] which will let users accomplish similar goals, however, it is still in an experimental stage and cannot be considered to be a stable implementation. Snappy also makes use of channels meaning you can use the beta or the nightly build of an app and the stable version at the same time.[9] + 4. Extensive support from major Linux distros and major developers including Google, Mozilla, Microsoft, etc.[4] + 5. Snapd the desktop integration tool supports taking **“snapshots”** of the current state of all the installed snaps in the system. This will let users save the current configuration state of all the applications that are installed via the Snappy package manager and let users revert to that state whenever they desire so. The same feature can also be set to automatically take snapshots at a frequency deemed necessary by the user. Snapshots can be created using the **snap save command** in the snapd framework.[10] + 6. Snaps are designed to be sandboxed during operation. This provides a much-required layer of security and isolation to users. Users need not worry about snap-based applications messing with the rest of the software on their computer. Sandboxing is implemented using three levels of isolation viz, **classic** , **strict** and **devmode**. Each level of isolation allows the app different levels of access within the file system and computer.[11] + + + +On the flip side of things, snaps are widely criticized for being centered around **Canonical’s modus operandi**. Most of the commits to the project are by Canonical employees or contractors and other contributors are required to sign a release form (CLA). The sandboxing feature, a very important one indeed from a security standpoint, is flawed in that the sandboxing actually requires certain other core services to run (such as Mir) while applications running the X11 desktop won’t support the said isolation, hence making the said security feature irrelevant. Questionable press releases and other marketing efforts from Canonical and the “central” and closed app repository are also widely criticized aspects of Snappy. Furthermore, the file sizes of the different snaps are also **comparatively very large** compared to the app sizes of the packages made using AppImage.[7] + +For more details, check [**Snap official documentation**][7]. + +* * * + +**Related read:** + + * [**Install Snap packages in Arch Linux, and Fedora**][8] + + + +* * * + +### 3\. Flatpak + +Like the Snap/Snappy listed above, **Flatpak** is also a software deployment tool that aims to ease software distribution and use in Linux. Flatpak was previously known as **“xdg-app”** and was based on concept proposed by **Lennart Poettering** in 2004. The idea was to contain applications in a secure virtual sandbox allowing for using applications **without the need of root privileges** and without compromising on the systems security. **Alex** started tinkering with Klik (thought to be a former version of AppImage) and wanted to implement the concept better. **Alexander Larsson** who at the time was working with Red Hat wrote an implementation called xdg-app in 2015 that acted as a pre-cursor to the current Flatpak format. + +Flatpak officially came out in 2016 with backing from Red Hat, Endless Computers and Collabora. **Flathub** is the official repository of all Flatpak application packages. At its surface Flatpak like the other is a framework for building and packaging distribution agnostic applications for Linux. It simply requires the developers to conform to a few desktop environment guidelines in order for the application to be successfully integrated into the Flatpak environment. + +Targeted primarily at the three popular desktop implementations **FreeDesktop** , **KDE** , and **GNOME** , the Flatpak framework itself is written in **C** and works on a **LGPL** license. The maintenance repository can be accessed via the GitHub link **[here][9]**. + +A few features of Flatpak that make it stand apart are mentioned below. Notice that features Flatpak shares with AppImage and Snappy are omitted here. + + * Deep integration into popular Linux desktop environments such as GNOME & KDE so that users can simply use Flatpaks using Graphical software management tools instead of resorting to the terminal. Flatpak can be installed from the default repositories of major desktop environments now and once the apps themselves are set-up they can be used and provide features similar to normal desktop applications.[12][13] + * **Forward-compatibility** – Flatpaks are built from the ground up keeping the operating systems core kernel and runtimes in mind. Hence, even if you upgrade or update your distro the Flatpaks you have should still work unless there is a core update. This is especially crucial for people who prefer staying on rolling betas or development versions of their distros. For such people, since the kinks of the OS itself isn’t ironed out usually, the Flatpak application will run seamlessly without having to depend on the OS files or libraries for its operation.[13] + * **Sandboxing using Bubblewrap** – snaps are also by default sandboxed in that they run in isolation from the rest of the applications running while you’re using your computer. However, Flatpaks fully seal the application from accessing OS files and user files during its operation by default. This essentially means that system administrators can be certain that Flatpaks that are installed in their systems cannot exploit the computer and the files it contains whereas for end users this will mean that in order to access a few specific functions or user data root permission is required.[14] + * Flatpak supports decentralized distribution of application natively however the team behind Flatpak still maintains a central online repository of apps/Flatpaks called **Flathub**. Users may in fact configure Flatpak to use multiple remote repositories as they see necessary. As opposed to snap you can have multiple repositories.[13] + * Modular access through the sandbox. Although this capability comes at a great potential cost to the integrity of the system, Flatpak framework allows for channels to be created through the sandbox for exchange of specific information from within the sandbox to the host system or vice versa. The channel is in this case referred to as a portal. A con to this feature is discussed later in the section.[14] + + + +One of the most criticized aspects of Flatpak however is it’s the sandbox feature itself. Sandboxing is how package managers such as Snappy and Flatpak implement important security features. Sandboxing essentially isolates the application from everything else in the system only allowing for user defined exchange of information from within the sandbox to outside. The flaw with the concept being that the sandbox cannot be inherently impregnable. Data has to be eventually transferred between the two domains and simple Linux commands can simply get rid of the sandbox restriction meaning that malicious applications might potentially jump out of the said sandbox.[15] + +This combined with the worse than expected commitment to rolling out security updates for Flatpak has resulted in widespread criticism of the team’s tall claim of providing a secure framework. The blog (named **flatkill** ) linked at the end of this guide in fact mentions a couple of exploits that were not addressed by the Flatpak team as soon as they should’ve been.[15] + +For more details, I suggest you to read [**Flatpak official documentation**][10]. + +* * * + +**Related read:** + + * [**A Beginners Guide To Flatpak**][11] + + + +* * * + +### AppImage vs Snap vs Flatpak + +The table attached below summarizes all the above findings into a concise and technical comparison of the three frameworks. + +**Feature** | **AppImage** | **Snappy** | **Flatpak** +---|---|---|--- +**Unique feature** | Not an appstore or repository, its simply put a packaging format for software distribution. | Led by Canonical (Same company as Ubuntu), features central app repository and active contribution from Canonical. | Features an app store called FlatHub, however, individuals may still host packages and distribute it. +**Target system** | Desktops and Servers. | Desktops, Servers, IoT devices, Embedded devices etc. | Desktops and limited function on servers. +**Libraries/Dependencies** | Base system. Runtimes optional, Libraries and other dependencies packaged. | Base system or via Plugins or can be packaged. | GNOME, KDE, Freedesktop bundled or custom bundled. +**Developers** | Community Driven led by Simon Peter. | Corporate driven by Canonical Ltd. | Community driven by flatpak team supported by enterprise. +**Written in** | C. | Golang, C and Python. | C. +**Initial release** | 2004. | 2014. | 2015. +**Sandboxing** | Can be implemented. | 3 modes – strict, classic, and devmode with varying confinement capabilities. Runs in isolation. | Isolated but Uses system files to run applications by default. +**Sandboxing Platform** | Firejail, AppArmor, Bubblewrap. | AppArmor. | Bubblewrap. +**App Installation** | Not necessary. Will act as self mounted disc. | Installation using snapd. | Installed using flatpak client tools. +**App Execution** | Can be run after setting executing bit. | Using desktop integrated snap tools. Runs isolated with user defined resources. | Needs to be executed using flatpak command if CLI is used. +**User Privileges** | Can be run w/o root user access. | Can be run w/o root user access. | Selectively required. +**Hosting Applications** | Can be hosted anywhere by anybody. | Has to be hosted with Canonical servers which are proprietary. | Can be hosted anywhere by anybody. +**Portable Execution from non system locations** | Yes. | No. | Yes, after flatpak client is configured. +**Central Repository** | AppImageHub. | Snap Store. | Flathub. +**Running multiple versions of the app** | Possible, any number of versions simultaneously. | One version of the app in one channel. Has to be separately configured for more. | Yes. +**Updating applications** | Using CLI command AppImageUpdate or via an updater tool built into the AppImage. | Requires snapd installed. Supports delta updating, will automatically update. | Required flatpak installed. Update Using flatpak update command. +**Package sizes on disk** | Application remains archived. | Application remains archived. | Client side is uncompressed. + +Here is a long tabular comparison of AppImage vs. Snap vs. Flatpak features. Please note that the comparison is made from an AppImage perspective. + + * [**https://github.com/AppImage/AppImageKit/wiki/Similar-projects#comparison**][12] + + + +### Conclusion + +While all three of these platforms have a lot in common with each other and aim to be platform agnostic in approach, they offer different levels of competencies in a few areas. While Snaps can run on a variety of devices including embedded ones, AppImages and Flatpaks are built with the desktop user in mind. AppImages of popular applications on the other had have superior packaging sizes and portability whereas Flatpak really shines with its forward compatibility when its used in a set it and forget it system. + +If there are any flaws in this guide, please let us know in the comment section below. We will update the guide accordingly. + +**References:** + + * **[1]** [**Concepts — AppImage documentation**][13] + * **[2]** [**Slashdot – Point-and-klik Linux Software Installation**][14] + * **[3]** [**History of AppImage project**][15] + * **[4][Snapcraft – Snaps are universal Linux packages][16]** + * **[5][Installing snapd – Snap documentation][17]** + * **[6][Snap documentation][7]** + * **[7][On Snappy and Flatpak: business as usual in the Canonical propaganda department][18]** + * **[8][Snap Updates are getting smaller, here’s why][19]** + * **[9][What Are Linux Snap Packages? Why Use Them?][20]** + * **[10][Snapshots – Snap documentation][21]** + * **[11][Snap confinement – Snap documentation][22]** + * **[12][Desktop Integration – Flatpak documentation][23]** + * **[13][Introduction to Flatpak – Flatpak documentation][24]** + * **[14][Sandbox Permissions – Flatpak documentation][25]** + * **[15][Flatpak – a security nightmare][26]** + + + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/linux-package-managers-compared-appimage-vs-snap-vs-flatpak/ + +作者:[editor][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/editor/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2019/06/Linux-Package-Managers-Compared-1-720x340.png +[2]: https://github.com/AppImage/AppImageKit/blob/master/README.md +[3]: https://docs.appimage.org/ +[4]: https://www.ostechnix.com/search-linux-applications-on-appimage-flathub-and-snapcraft-platforms/ +[5]: https://snapcraft.io/store +[6]: https://blog.ubuntu.com/2019/06/20/parallel-installs-test-and-run-multiple-instances-of-snaps +[7]: https://docs.snapcraft.io/ +[8]: https://www.ostechnix.com/install-snap-packages-arch-linux-fedora/ +[9]: https://github.com/flatpak/flatpak +[10]: http://docs.flatpak.org/en/latest/index.html +[11]: https://www.ostechnix.com/flatpak-new-framework-desktop-applications-linux/ +[12]: https://github.com/AppImage/AppImageKit/wiki/Similar-projects#comparison +[13]: https://docs.appimage.org/introduction/concepts.html#one-app-one-file. +[14]: https://linux.slashdot.org/story/05/01/15/1815210/point-and-klik-linux-software-installation +[15]: https://github.com/AppImage/AppImageKit/wiki/History#timeline. +[16]: https://snapcraft.io/# +[17]: https://docs.snapcraft.io/installing-snapd +[18]: https://www.happyassassin.net/2016/06/16/on-snappy-and-flatpak-business-as-usual-in-the-canonical-propaganda-department/ +[19]: https://blog.ubuntu.com/2017/08/01/snap-updates-are-getting-smaller-heres-why +[20]: https://www.feliciano.tech/blog/what-are-linux-snap-packages-why-use-them/ +[21]: https://docs.snapcraft.io/snapshots +[22]: https://docs.snapcraft.io/snap-confinement +[23]: http://docs.flatpak.org/en/latest/desktop-integration.html?highlight=desktop%20integration +[24]: http://docs.flatpak.org/en/latest/introduction.html +[25]: http://docs.flatpak.org/en/latest/sandbox-permissions.html?highlight=sandboxing +[26]: https://flatkill.org/ From a08995287e7ff24b802fd2fd02cce3c08d47e3e0 Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 29 Jun 2019 21:57:56 +0800 Subject: [PATCH 195/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020180620=20How=20?= =?UTF-8?q?To=20Find=20The=20Port=20Number=20Of=20A=20Service=20In=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md --- ...d The Port Number Of A Service In Linux.md | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md diff --git a/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md new file mode 100644 index 0000000000..7004a4350a --- /dev/null +++ b/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md @@ -0,0 +1,210 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How To Find The Port Number Of A Service In Linux) +[#]: via: (https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +How To Find The Port Number Of A Service In Linux +====== + +![Find The Port Number Of A Service In Linux OS][1] + +You might often need to find the port names and numbers for some reasons. If so, you’re in luck. Today, in this brief tutorial, we are going to see the easiest and quickest ways to find the port number of a service in Linux operating system. There could be many methods to do it, but I am aware of the following three methods only at present. Read on. + +### Find The Port Number Of A Service In Linux + +**Method 1 – Using[Grep][2] command:** + +To find the default port number of a given service in Linux using grep command, just run: + +``` +$ grep /etc/services +``` + +For example, to find the default port of a SSH service, simply run: + +``` +$ grep ssh /etc/services +``` + +It’s that simple. This command should work on most Linux distributions. Here is the sample output from my Arch Linux test box: + +``` +ssh 22/tcp +ssh 22/udp +ssh 22/sctp +sshell 614/tcp +sshell 614/udp +netconf-ssh 830/tcp +netconf-ssh 830/udp +sdo-ssh 3897/tcp +sdo-ssh 3897/udp +netconf-ch-ssh 4334/tcp +snmpssh 5161/tcp +snmpssh-trap 5162/tcp +tl1-ssh 6252/tcp +tl1-ssh 6252/udp +ssh-mgmt 17235/tcp +ssh-mgmt 17235/udp +``` + +As you can see in the above output, the default port number of SSH service is 22. + +Let us find the port number of Apache web server. To do so, the command would be: + +``` +$ grep http /etc/services +# http://www.iana.org/assignments/port-numbers +http 80/tcp www www-http # WorldWideWeb HTTP +http 80/udp www www-http # HyperText Transfer Protocol +http 80/sctp # HyperText Transfer Protocol +https 443/tcp # http protocol over TLS/SSL +https 443/udp # http protocol over TLS/SSL +https 443/sctp # http protocol over TLS/SSL +gss-http 488/tcp +gss-http 488/udp +webcache 8080/tcp http-alt # WWW caching service +webcache 8080/udp http-alt # WWW caching service +[...] +``` + +How about FTP port number? That’s easy! + +``` +$ grep ftp /etc/services +ftp-data 20/tcp +ftp-data 20/udp +# 21 is registered to ftp, but also used by fsp +ftp 21/tcp +ftp 21/udp fsp fspd +tftp 69/tcp +[...] +``` + +**Method 2 – Using getent command** + +As you can see, the above commands shows all port names and numbers for the given search term “ssh”, “http” and “ftp”. That means, you will get a quite long output of all port names that matches with the given search term. + +You can, however, narrow down the result to exact output using “getent” command like below: + +``` +$ getent services ssh +ssh 22/tcp + +$ getent services http +http 80/tcp www www-http + +$ getent services ftp +ftp 21/tcp +``` + +If you don’t know the port name but the port number, simply replace the port name with number like below: + +``` +$ getent services 80 +http 80/tcp +``` + +To display all port names and numbers, simply run: + +``` +$ getent services +``` + +* * * + +**Suggested read:** + + * [**How To Change Apache Default Port To A Custom Port**][3] + * [**How To Change FTP Default Port To A Custom Port**][4] + * [**How To Change SSH Default Port To A Custom Port**][5] + + + +* * * + +**Method 3 – Using Whatportis Utility** + +The **Whatportis** is a simple python script used to find port names and numbers. Unlike the above commands, this utility displays the output in a nice tabular column format. + +Make sure you have installed PIP package manager. If not, refer the following link. + + * [**How To Manage Python Packages Using Pip**][6] + + + +Once installed PIP, run the following command to install Whatportis utility. + +``` +$ pip install whatportis +``` + +Now, you can find what port is associated with a service as shown below. + +``` +$ whatportis ssh + +$ whatportis ftp + +$ whatportis http +``` + +Sample output from my CentOS 7 server: + +![][7] + +Find The Port Number Of A Service In Linux + +If you don’t know the exact name of a service, use **–like** flag to display the relevant results. + +``` +$ whatportis mysql --like +``` + +The above commands helped you to find what port is associated with a service. You can also find what service is associated with a port number like below. + +``` +$ whatportis 993 +``` + +You can even display the results in **JSON** format. + +``` +$ whatportis 993 --json +``` + +![][8] + +For more details, refer the GitHub repository. + + * [**Whatportis GitHub Repository**][9] + + + +And, that’s all for now. You know now how to find the port names and numbers in Linux using three simple methods. If you know any other methods/commands, let me know in the comment section below. I will check and update this guide accordingly. + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/ + +作者:[sk][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2018/06/Find-The-Port-Number-720x340.png +[2]: https://www.ostechnix.com/the-grep-command-tutorial-with-examples-for-beginners/ +[3]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-1/ +[4]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-2/ +[5]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/ +[6]: https://www.ostechnix.com/manage-python-packages-using-pip/ +[7]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis.png +[8]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis-1.png +[9]: https://github.com/ncrocfer/whatportis From d6eac7076ae441b79053b5da55bae0236501ffa8 Mon Sep 17 00:00:00 2001 From: lctt-bot Date: Sat, 29 Jun 2019 17:00:40 +0000 Subject: [PATCH 196/336] Revert "translating by arrowfeng" This reverts commit 62c587d2b2fdd1c2b5bc8eb8fe75d94fbfd42ab9. --- sources/tech/20190521 How to Disable IPv6 on Ubuntu Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190521 How to Disable IPv6 on Ubuntu Linux.md b/sources/tech/20190521 How to Disable IPv6 on Ubuntu Linux.md index d25298583c..4420b034e6 100644 --- a/sources/tech/20190521 How to Disable IPv6 on Ubuntu Linux.md +++ b/sources/tech/20190521 How to Disable IPv6 on Ubuntu Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (arrowfeng) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From e25a7e8e62227ae8f1cd911a33498d8d7e5b74fc Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 30 Jun 2019 11:49:15 +0800 Subject: [PATCH 197/336] PRF:20190606 Cisco to buy IoT security, management firm Sentryo.md @hopefully2333 --- ...y IoT security, management firm Sentryo.md | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md b/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md index 8654707218..ebc87c919a 100644 --- a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md +++ b/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (hopefully2333) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Cisco to buy IoT security, management firm Sentryo) @@ -9,12 +9,13 @@ 思科收购了物联网安全管理公司 Sentryo ====== -买下 Sentryo 将给思科在工业互联网的异常和实时威胁检测两方面予以支持。 +> 买下 Sentryo 将给思科在工业物联网的异常和实时威胁检测两方面予以支持。 + ![IDG Worldwide][1] -为了扩展自己的物联网安全管理产品,思科计划收购 Sentryo,这是一家位于法国的公司,Sentryo 为工业互联网提供异常检测和实时威胁检测。 +为了扩展自己的物联网安全管理产品,思科计划收购 Sentryo,这是一家总部位于法国的公司,Sentryo 为工业物联网提供异常检测和实时威胁检测。 -Sentryo 成立于 2014 年,产品包括 ICS CyberVision - 一种用于资产库存、网络监控和威胁情报的平台 - 以及 CyberVision 网络边界传感器,这用于分析网络流量。 +Sentryo 成立于 2014 年,产品包括 ICS CyberVision(一种用于资产库存、网络监控和威胁情报的平台)以及 CyberVision 网络边界传感器,这用于分析网络流量。 **更多关于物联网的信息:** @@ -25,29 +26,25 @@ Sentryo 成立于 2014 年,产品包括 ICS CyberVision - 一种用于资产 * [在物联网领域赚钱的六种方法][8] * [什么是数字双胞胎技术? [以及它为什么重要]][9] * [区块链,以服务为中心的网络是物联网成功的关键][10] - * [物联网的网络和安全作为基础][11] + * [物联网以网络和安全作为基础][11] * [构建完整的物联网网络必须优先完成][12] - * [什么是工业互联网? [为什么风险如此之高]][13] - - + * [什么是工业物联网?[为什么风险如此之高]][13] “我们通过思科的 IOx 应用框架将 Sentryo 的边缘传感器和我们的工业网络硬件相结合”,思科企业发展和思科投资的副总裁 Rob Salvagno 在一篇关于计划收购的博客中写道。 -“我们相信连接是物联网项目的基础,通过释放网络的力量,我们可以大大提高运作的效率并发现新的商业机会。随着 Sentryo 的加入,思科可以为系统控制工程师提供更加深入的资产可见度,以此来对系统进行优化,检测异常并保护他们的网络” +“我们相信连接是物联网项目的基础,通过释放网络的力量,我们可以大大提高运作的效率并发现新的商业机会。随着 Sentryo 的加入,思科可以为系统控制工程师提供更加深入的资产可见度,以此来对系统进行优化,检测异常并保护他们的网络。” -Gartner 对 Sentryo 的系统写道:“ICS CyberVision 这个产品为它的客户提供了可见性”所有的 OT 用户都将了解 OT 网络,而不仅仅是 IT 技术人员。随着黑客和监管机构越来越关注工业控制系统,一个组织的 OT 拥有完整的可见性是至关重要的一件事。很多的 OT 网络不仅在地理上位置分散,而且也很复杂,由成千上万的组件组成 +Gartner 对 Sentryo 的系统写道:“ICS CyberVision 产品以其所有 OT 用户都能理解的方式提供对其客户 OT 网络的可视性,而不仅仅是 IT 技术人员。随着黑客和监管机构越来越关注工业控制系统,一个组织的 OT 拥有完整的可见性是至关重要的一件事。很多的 OT 网络不仅在地理上位置分散,而且也很复杂,由成千上万的组件组成。” -Frost & Sullivan 的工业分析师 Nandini Natarajan 表示,Sentryo 的 ICS CyberVision 让企业能够确保其工业运作的连续性、动态弹性和安全性,并以此预防可能的网络攻击。“它将在标签的表单中使用一种独特的 ‘通用 OT 语言’ 来自动描述资产和通信流程,它会用纯文本的方式描述每个资产在做什么。ICS CyberVision 可以让任何人都能立刻查看一台设备的类别和行为;它利用人工智能算法提供很多不同的分析视图,来让用户深入了解到一个典型的工业控制系统可以产生多么庞大的数据。Sentryo 可以轻松查看重要或相关的信息” +Frost & Sullivan 的工业分析师 Nandini Natarajan 表示,Sentryo 的 ICS CyberVision 让企业能够确保其工业运作的连续性、动态弹性和安全性,并以此预防可能的网络攻击。“它将使用标签形式的独特的 ‘通用 OT 语言’ 来自动描述资产和通信流程,以纯文本的方式描述每个资产在做什么。ICS CyberVision 可以让任何人都能立刻查看一台设备的类别和行为;它利用人工智能算法提供很多不同的分析视图,来让用户深入了解到一个典型的工业控制系统可以产生多么庞大的数据。Sentryo 可以轻松查看重要或相关的信息。” Natarajan 表示,除此之外,Sentryo 的平台使用深度数据包检测(DPI)从工业设备之间的通信数据包里提取信息。DPI 引擎通过边缘计算架构进行部署,它可以运行在 Sentryo 传感器设备上,也可以在已经安装好的网络设备上运行。因此,Sentryo 可以将可见性和网络安全特性嵌入进工业网络中,而非部署带外监控网络。 - -**[[好消息!好消息!通过 PluralSight 的综合在线课程,成为一名光荣的认证信息安全系统专家,现在免费提供 10 天试用!走过路过不要错过!][17] ]** -Sentryo 的技术将扩大思科在物联网上的总体计划。在今年一月,思科推出了一整套的交换机、软件、开发工具和蓝图,这些东西将用于把物联网、基于意图联网的工业网络、传统信息安全、传统信息监控、应用开发支持融为一体。 +Sentryo 的技术将扩大思科在物联网上的总体计划。在今年一月,思科推出了一整套的交换机、软件、开发工具和蓝图,这些东西将用于把物联网、基于意图联网的工业网络、传统信息安全、传统信息监控、应用开发支持融为一体。 这个新平台可以通过思科的 DNA 中心进行管理,让客户能将他们的物联网、工业网络控制和他们的商业 IT 世界融为一体。 -DNA 中心是思科用于企业网络的中央管理工具,具有自动化、确保设置、结构配置、基于策略进行分割的功能。它也是公司 IBN 计划的核心,用于主动向客户提供动态自动化完成网络和策略变更的能力,并在这个过程中确保数据的交付。物联网领域网络的主管是软件,这个软件管理思科工业、连接的网格路由器、终端这多个业务的网络。 +DNA 中心是思科用于企业网络的中央管理工具,具有自动化、确保设置、结构配置、基于策略进行分割的功能。它也是该公司 IBN 计划的核心,用于主动向客户提供动态自动化实施网络和策略变更的能力,并在这个过程中确保数据的交付。IoT Field Network Director 是管理思科工业、连接网格路由器和终端的多服务网络的软件。 思科物联网业务部的高级副总裁兼总经理 Liz Centoni 表示,公司希望 Sentryo 的技术能以多种方式帮助物联网客户: @@ -55,15 +52,11 @@ DNA 中心是思科用于企业网络的中央管理工具,具有自动化、 随着设备识别和通信模式的建立,思科将把 DNA 中心和身份识别服务引擎(ISE)集成到一起,以便客户能够很轻松地定义分割策略。这种集成将使 OT 团队能够利用 IT 安全团队的专业知识来保护他们的环境,而不会对运营的流程造成风险。 -这些物联网设备缺乏现代嵌入式软件和安全功能,网络分段将成为允许运作设备向合法系统进行通信的关键技术,并降低像我们看见的 WannaCry 和 Norsk Hydro 那样网络安全事件的风险。 +由于这些物联网设备缺乏现代嵌入式软件和安全功能,网络分段将成为允许运作设备向合法系统进行通信的关键技术,并降低像我们看见的 WannaCry 和 Norsk Hydro 那样网络安全事件的风险。 -据 Crunchbase 称,Sentryo 的每年预计收入为 350 万美元,与 Cymmetria,Team8,和 Indegy 的竞争最为激烈。此次收购预期将在思科 2020 财年的第一季度 - 2019 年 10 月 26 日 - 结束前完成。思科并未详细披露此次收购的财务细节。 +据 Crunchbase 称,Sentryo 的每年预计收入为 350 万美元,与 Cymmetria、Team8 和 Indegy 的竞争最为激烈。此次收购预期将在思科 2020 财年的第一季度 - 2019 年 10 月 26 日 - 结束前完成。思科并未详细披露此次收购的财务细节。 -Sentryo 是思科今年的第二次收购。思科在今年一月收购了 Singularity,这是为了这家公司的网络分析技术。在 2018 年,思科收购了包含 Duo security software 在内的 6 家公司。 - -** ** - -加入 Facebook 和 LinkedIn 上的网络世界社区,评论最重要的主题。 +Sentryo 是思科今年的第二次收购。思科在今年一月收购了 Singularity 公司的网络分析技术。在 2018 年,思科收购了包含 Duo security software 在内的 6 家公司。 -------------------------------------------------------------------------------- @@ -72,7 +65,7 @@ via: https://www.networkworld.com/article/3400847/cisco-to-buy-iot-security-mana 作者:[Michael Cooney][a] 选题:[lujun9972][b] 译者:[hopefully2333](https://github.com/hopefully2333) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From fc4183b94b80b89fa88a85fd529756a8fc9a138f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 30 Jun 2019 11:49:43 +0800 Subject: [PATCH 198/336] PUB:20190606 Cisco to buy IoT security, management firm Sentryo.md @hopefully2333 https://linux.cn/article-11035-1.html --- ...0606 Cisco to buy IoT security, management firm Sentryo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190606 Cisco to buy IoT security, management firm Sentryo.md (99%) diff --git a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md b/published/20190606 Cisco to buy IoT security, management firm Sentryo.md similarity index 99% rename from translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md rename to published/20190606 Cisco to buy IoT security, management firm Sentryo.md index ebc87c919a..302ea5e3f4 100644 --- a/translated/news/20190606 Cisco to buy IoT security, management firm Sentryo.md +++ b/published/20190606 Cisco to buy IoT security, management firm Sentryo.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (hopefully2333) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11035-1.html) [#]: subject: (Cisco to buy IoT security, management firm Sentryo) [#]: via: (https://www.networkworld.com/article/3400847/cisco-to-buy-iot-security-management-firm-sentryo.html) [#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) From ef059f1fba1bd7a9c2e6de7bcf124506429a1ef3 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 30 Jun 2019 14:09:49 +0800 Subject: [PATCH 199/336] PRF:20190606 Kubernetes basics- Learn how to drive first.md @geekpi --- ...rnetes basics- Learn how to drive first.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md b/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md index 6ead832f0d..ebf7a7b766 100644 --- a/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md +++ b/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Kubernetes basics: Learn how to drive first) @@ -9,14 +9,16 @@ Kubernetes 基础:首先学习如何使用 ====== -放弃专注于新项目,专注于获取你的 Kubernetes 翻斗车商业驾驶执照。 + +> 不要被新项目分心,而是专注于取得你的 Kubernetes 翻斗车驾驶执照。 + ![Truck steering wheel and dash][1] -在本系列的前两篇文章中,我解释了为何 Kubernetes [像翻斗车][2]并且要理解优雅、专业的工具,如 [Kubernetes][4](和翻斗车,起重机等)总是有[学习曲线][3]的。本文是下一步:学习如何驾驶。 +在本系列的前两篇文章中,我解释了为何 Kubernetes [像翻斗车][2],并且想要理解像 [Kubernetes][4](和翻斗车,起重机等)这样优雅、专业工具总是有[学习曲线][3]的。本文是下一步:学习如何驾驶。 -最近,我在 Reddit 上看到了一个关于[重要的 Kubernetes 项目][5]的帖子。人们似乎很想知道他们应该学习如何开始使用 Kubernetes。“驾驶翻斗车的类比”有助于确保问题保持正轨。帖子中的某个人提到你不应该运行自己的镜像仓库,除非你必须这样做,所以人们开始逐渐接受驱动 Kubernetes 而不是构建它。 +最近,我在 Reddit 上看到了一个关于[重要的 Kubernetes 项目][5]的帖子。人们似乎很想知道他们应该学习如何开始使用 Kubernetes。“驾驶翻斗车的类比”有助于确保这个问题回到轨道上去。在这个帖子中的某个人提到,除非必要,你不应该运行自己的镜像仓库,所以人们开始逐渐接受驾驭 Kubernetes 而不是构建它的想法。 -API 是 Kubernetes 的引擎和变速器。像翻斗车的方向盘、离合器、汽油和制动踏板一样,用于构建应用程序的 YAML 或 JSON 文件是机器的主要接口。当你第一次学习 Kubernetes 时,这应该是你的主要关注点。了解你的控制部件。不要被所有最新和最大的项目所左右。当你刚学会开车时,不要尝试驾驶实验性的翻斗车。相反,专注于基础知识。 +API 是 Kubernetes 的引擎和变速器。像翻斗车的方向盘、离合器、汽油和制动踏板一样,用于构建应用程序的 YAML 或 JSON 文件是机器的主要接口。当你第一次学习 Kubernetes 时,这应该是你的主要关注点。了解你的控制部件。不要分心于最新和最大的那些项目。当你刚学会开车时,不要尝试驾驶实验性的翻斗车。相反,请专注于基础知识。 ### 定义状态和实际状态 @@ -26,25 +28,25 @@ API 是 Kubernetes 的引擎和变速器。像翻斗车的方向盘、离合器 人类(开发人员/系统管理员/运维人员)使用他们提交给 Kubernetes API 的 YAML/JSON 文件指定定义的状态。然后,Kubernetes 使用控制器来分析 YAML/JSON 中定义的新状态与集群中的实际状态之间的差异。 -在上面的例子中,Replication Controller 可以看到用户指定的三个 pod 之间的差异,其中一个 pod 正在运行,并调度另外两个 Pod。如果你要登录 Kubernetes 并手动杀死其中一个 Pod,它会不断启动另一个来替换它。在实际状态与定义的状态匹配之前,Kubernetes 不会停止。这是非常强大的。 +在上面的例子中,Replication Controller 可以看到用户指定的三个 pod 之间的差异,其中一个 pod 正在运行,并调度另外两个 Pod。如果你登录 Kubernetes 并手动杀死其中一个 Pod,它会不断启动另一个来替换它。在实际状态与定义的状态匹配之前,Kubernetes 不会停止。这是非常强大的。 -### **原语** +### 原语 接下来,你需要了解可以在 Kubernetes 中指定的原语。 ![Kubernetes primitives][7] -它不仅仅有 Pods,还有部署 (Deployments)、持久化卷声明 (Persistent Volume Claims)、服务 (Services),路由 (routes) 等。使用支持 Kubernetes 的平台 [OpenShift][8],你可以添加构建和 BuildConfigs。你大概需要一天左右的时间来了解这些原语。之后,当你的情况变得更加复杂时,你可以深入了解。 +这些原语不仅仅有 Pod,还有部署Deployment持久化卷声明Persistent Volume Claim服务Service路由route等。使用支持 Kubernetes 的平台 [OpenShift][8],你可以添加构建build和 BuildConfig。你大概需要一天左右的时间来了解这些原语。你可以在你的用例变得更加复杂时再深入了解。 -### 将开发者映射到传统 IT 环境 +### 将原生开发者映射到传统 IT 环境 最后,考虑这该如何映射到你在传统 IT 环境中的操作。 ![Mapping developer-native to traditional IT environments][9] -尽管是一个技术问题,但用户一直在尝试解决业务问题。从历史上看,我们使用诸如 playbook 之类的东西将业务逻辑与单一语言的 IT 系统绑定起来。对于运维人员来说,这很不错,但是当你尝试将其扩展到开发人员时,它会变得更加繁琐。 +尽管是一个技术问题,但用户一直在尝试解决业务问题。从历史上看,我们使用诸如剧本playbook之类的东西将业务逻辑与单一语言的 IT 系统绑定起来。对于运维人员来说,这很不错,但是当你尝试将其扩展到开发人员时,它会变得更加繁琐。 -直到 Kubernete 出现之前,我们从未能够以开发者的方式真正同时指定一组 IT 系统应如何表现和交互。如果你考虑一下,我们正在使用在 Kubernetes 中编写的 YAML/JSON 文件以非常便携和声明的方式扩展了管理存储、网络和计算资源的能力,但它们总会映射到某处的“真实”资源。我们不必以开发者身份担心它。 +直到 Kubernete 出现之前,我们从未能够以原生开发者的方式真正同时指定一组 IT 系统应如何表现和交互。如果你考虑一下,我们正在使用在 Kubernetes 中编写的 YAML/JSON 文件以非常便携和声明的方式扩展了管理存储、网络和计算资源的能力,但它们总会映射到某处的“真实”资源。我们不必以开发者身份担心它。 因此,快放弃关注 Kubernetes 生态系统中的新项目,而是专注开始使用它。在下一篇文章中,我将分享一些可以帮助你使用 Kubernetes 的工具和工作流程。 @@ -55,15 +57,15 @@ via: https://opensource.com/article/19/6/kubernetes-basics 作者:[Scott McCarty][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://opensource.com/users/fatherlinux/users/fatherlinux/users/fatherlinux [b]: https://github.com/lujun9972 [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/truck_steering_wheel_drive_car_kubernetes.jpg?itok=0TOzve80 (Truck steering wheel and dash) -[2]: https://opensource.com/article/19/6/kubernetes-dump-truck -[3]: https://opensource.com/article/19/6/kubernetes-learning-curve +[2]: https://linux.cn/article-11011-1.html +[3]: https://linux.cn/article-11026-1.html [4]: https://opensource.com/resources/what-is-kubernetes [5]: https://www.reddit.com/r/kubernetes/comments/bsoixc/what_are_the_essential_kubernetes_related/ [6]: https://opensource.com/sites/default/files/uploads/defined_state_-_actual_state.png (Defined state and actual state) From 420343f3438456e42ca15a3ad956775c889cbf5b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 30 Jun 2019 14:10:18 +0800 Subject: [PATCH 200/336] PUB:20190606 Kubernetes basics- Learn how to drive first.md @geekpi https://linux.cn/article-11036-1.html --- .../20190606 Kubernetes basics- Learn how to drive first.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190606 Kubernetes basics- Learn how to drive first.md (98%) diff --git a/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md b/published/20190606 Kubernetes basics- Learn how to drive first.md similarity index 98% rename from translated/tech/20190606 Kubernetes basics- Learn how to drive first.md rename to published/20190606 Kubernetes basics- Learn how to drive first.md index ebf7a7b766..2e93d2d5d9 100644 --- a/translated/tech/20190606 Kubernetes basics- Learn how to drive first.md +++ b/published/20190606 Kubernetes basics- Learn how to drive first.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11036-1.html) [#]: subject: (Kubernetes basics: Learn how to drive first) [#]: via: (https://opensource.com/article/19/6/kubernetes-basics) [#]: author: (Scott McCarty https://opensource.com/users/fatherlinux/users/fatherlinux/users/fatherlinux) From 8ca325b9bc64f61750507b6309f422c5ab1cefe2 Mon Sep 17 00:00:00 2001 From: LazyWolf Lin Date: Sun, 30 Jun 2019 16:10:45 +0800 Subject: [PATCH 201/336] Translating Looking into Linux modules. --- .../20190501 Looking into Linux modules.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/translated/tech/20190501 Looking into Linux modules.md b/translated/tech/20190501 Looking into Linux modules.md index b4e7a118d5..0f3a1e317a 100644 --- a/translated/tech/20190501 Looking into Linux modules.md +++ b/translated/tech/20190501 Looking into Linux modules.md @@ -22,9 +22,9 @@ lsmod 的主要用途之一是在系统不能正常工作时检查模块。然 **[ Also see:[Must-know Linux Commands][2] ]** -### 列出内核模块 +### 显示内核模块 -The easiest way to list modules is with the **lsmod** command. While this command provides a lot of detail, this is the most user-friendly output. +显示内核模块最简单的方法是使用 **lsmod** 命令。虽然这个命令包含了很多细节,但输出却是最用户友好。 ``` $ lsmod @@ -103,22 +103,22 @@ e1000e 245760 0 floppy 81920 0 ``` -In the output above: +在上面的输出中: - * "Module" shows the name of each module - * "Size" shows the module size (not how much memory it is using) - * "Used by" shows each module's usage count and the referring modules + * “Module”显示每个模块的名称 + * “Size”显示每个模块的大小(并不是它们使占的内存大小) + * “Used by”显示每个模块的被使用的计数和使用它们的模块 -Clearly, that's a _lot_ of modules. The number of modules loaded will depend on your system and distribution and what's running. We can count them like this: +显然,这有_很多_模块。加载的模块数取决于你的系统和版本以及正在运行的内容。我们可以这样计数: ``` $ lsmod | wc -l 67 ``` -To see the number of modules available on the system (not just running), try this command: +要查看系统中可用的模块数(不止运行当中的),试试这个命令: ``` $ modprobe -c | wc -l @@ -127,14 +127,14 @@ $ modprobe -c | wc -l ### 与内核模块相关的其他命令 -Linux provides several commands for listing, loading and unloading, examining, and checking the status of modules. +Linux 提供了几条用于罗列,加载及卸载,测试,以及检查模块状态的命令。 - * depmod -- generates modules.dep and map files - * insmod -- a simple program to insert a module into the Linux Kernel - * lsmod -- show the status of modules in the Linux Kernel - * modinfo -- show information about a Linux Kernel module - * modprobe -- add and remove modules from the Linux Kernel - * rmmod -- a simple program to remove a module from the Linux Kernel + * depmod —— 生成 modules.dep 和映射文件 + * insmod —— 一个往 Linux 内核插入模块的程序 + * lsmod —— 显示 Linux 内核中模块状态 + * modinfo —— 显示 Linux 内核模块信息 + * modprobe —— 添加或移除 Linux 内核模块 + * rmmod —— 一个从 Linux 内核移除模块的程序 From 3ac5f8aab60404e4ef295dafca09eb24a2ada0af Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 00:02:08 +0800 Subject: [PATCH 202/336] =?UTF-8?q?=E5=BD=92=E6=A1=A3=20201906?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20170410 Writing a Time Series Database from Scratch.md | 0 .../{ => 201906}/20170414 5 projects for Raspberry Pi at home.md | 0 .../20180324 Memories of writing a parser for man pages.md | 0 ... Resize Active-Primary root Partition Using GParted Utility.md | 0 ...ript To Securely Create A Bootable USB Device From ISO File.md | 0 ...180831 Get desktop notifications from Emacs shell commands .md | 0 .../{ => 201906}/20180914 A day in the life of a log message.md | 0 ... A Real-Time Web Server Log Analyzer And Interactive Viewer.md | 0 .../20190111 Top 5 Linux Distributions for Productivity.md | 0 ... Good Open Source Speech Recognition-Speech-to-Text Systems.md | 0 ...hain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md | 0 ...uild a mobile particulate matter sensor with a Raspberry Pi.md | 0 .../20190404 Running LEDs in reverse could cool computers.md | 0 ...Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md | 0 published/{ => 201906}/20190409 5 Linux rookie mistakes.md | 0 published/{ => 201906}/20190409 5 open source mobile apps.md | 0 ...409 VSCodium- 100- Open Source Version of Microsoft VS Code.md | 0 .../20190410 How we built a Linux desktop app with Electron.md | 0 .../{ => 201906}/20190411 Be your own certificate authority.md | 0 ...7 Inter-process communication in Linux- Sockets and signals.md | 0 .../20190422 4 open source apps for plant-based diets.md | 0 .../20190423 Edge computing is in most industries- future.md | 0 ...Epic Games Store is Now Available on Linux Thanks to Lutris.md | 0 .../20190423 How to identify same-content files on Linux.md | 0 .../20190427 Monitoring CPU and GPU Temperatures on Linux.md | 0 .../20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md | 0 ...w To Install-Uninstall Listed Packages From A File In Linux.md | 0 ...90508 Why startups should release their code as open source.md | 0 .../20190509 5 essential values for the DevOps mindset.md | 0 ...e Given Package Is Installed Or Not On Debian-Ubuntu System.md | 0 .../20190517 10 Places Where You Can Buy Linux Computers.md | 0 ...0190517 Using Testinfra with Ansible to verify server state.md | 0 published/{ => 201906}/20190520 Getting Started With Docker.md | 0 ...0520 When IoT systems fail- The risk of having bad IoT data.md | 0 ...190520 Zettlr - Markdown Editor for Writers and Researchers.md | 0 ...522 French IT giant Atos enters the edge-computing business.md | 0 .../20190522 Securing telnet connections with stunnel.md | 0 .../20190525 4 Ways to Run Linux Commands in Windows.md | 0 .../{ => 201906}/20190527 20- FFmpeg Commands For Beginners.md | 0 .../20190527 5 GNOME keyboard shortcuts to be more productive.md | 0 .../{ => 201906}/20190527 A deeper dive into Linux permissions.md | 0 .../20190527 Dockly - Manage Docker Containers From Terminal.md | 0 ...ilable Security Updates On Red Hat (RHEL) And CentOS System.md | 0 .../{ => 201906}/20190527 How to write a good C main function.md | 0 published/{ => 201906}/20190529 NVMe on Linux.md | 0 ...0 A short primer on assemblers, compilers, and interpreters.md | 0 .../20190531 Learn Python with these awesome resources.md | 0 ...20190531 Unity Editor is Now Officially Available for Linux.md | 0 .../{ => 201906}/20190531 Why translation platforms matter.md | 0 ...4 How To Verify NTP Setup (Sync) is Working or Not In Linux.md | 0 .../20190604 Kubernetes is a dump truck- Here-s why.md | 0 ...stalled Security Updates on Redhat (RHEL) And CentOS System.md | 0 .../20190605 How to navigate the Kubernetes learning curve.md | 0 ...20190606 Cisco to buy IoT security, management firm Sentryo.md | 0 .../20190606 How Linux can help with your spelling.md | 0 .../20190606 Kubernetes basics- Learn how to drive first.md | 0 published/{ => 201906}/20190607 5 reasons to use Kubernetes.md | 0 ... Python data pipeline, data breach detection, and more news.md | 0 .../{ => 201906}/20190610 Applications for writing Markdown.md | 0 ...0190610 Expand And Unexpand Commands Tutorial With Examples.md | 0 .../20190610 Graviton- A Minimalist Open Source Code Editor.md | 0 ...610 Neofetch - Display Linux system Information In Terminal.md | 0 ...creen Command Examples To Manage Multiple Terminal Sessions.md | 0 ...x Applications On AppImage, Flathub And Snapcraft Platforms.md | 0 published/{ => 201906}/20190610 Try a new game on Free RPG Day.md | 0 published/{ => 201906}/20190610 Welcoming Blockchain 3.0.md | 0 .../20190612 Installing alternative versions of RPMs in Fedora.md | 0 ...e for musicians and music lovers- Headphone, amps, and more.md | 0 ...190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md | 0 .../20190614 How to send email from the Linux command line.md | 0 .../20190614 Personal assistant with Mycroft and Fedora.md | 0 published/{ => 201906}/20190617 Exploring -run on Linux.md | 0 .../{ => 201906}/20190619 Get the latest Ansible 2.8 in Fedora.md | 0 .../20190621 Bash Script to Monitor Memory Usage on Linux.md | 0 ... Open Source Slack Alternative Mattermost Gets -50M Funding.md | 0 published/{ => 201906}/20190624 Raspberry Pi 4 is here.md | 0 .../{ => 201906}/20190624 Using i3 with multiple monitors.md | 0 .../20190628 FreeDOS turns 25 years old- An origin story.md | 0 78 files changed, 0 insertions(+), 0 deletions(-) rename published/{ => 201906}/20170410 Writing a Time Series Database from Scratch.md (100%) rename published/{ => 201906}/20170414 5 projects for Raspberry Pi at home.md (100%) rename published/{ => 201906}/20180324 Memories of writing a parser for man pages.md (100%) rename published/{ => 201906}/20180416 How To Resize Active-Primary root Partition Using GParted Utility.md (100%) rename published/{ => 201906}/20180604 BootISO - A Simple Bash Script To Securely Create A Bootable USB Device From ISO File.md (100%) rename published/{ => 201906}/20180831 Get desktop notifications from Emacs shell commands .md (100%) rename published/{ => 201906}/20180914 A day in the life of a log message.md (100%) rename published/{ => 201906}/20190109 GoAccess - A Real-Time Web Server Log Analyzer And Interactive Viewer.md (100%) rename published/{ => 201906}/20190111 Top 5 Linux Distributions for Productivity.md (100%) rename published/{ => 201906}/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md (100%) rename published/{ => 201906}/20190308 Blockchain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md (100%) rename published/{ => 201906}/20190331 How to build a mobile particulate matter sensor with a Raspberry Pi.md (100%) rename published/{ => 201906}/20190404 Running LEDs in reverse could cool computers.md (100%) rename published/{ => 201906}/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md (100%) rename published/{ => 201906}/20190409 5 Linux rookie mistakes.md (100%) rename published/{ => 201906}/20190409 5 open source mobile apps.md (100%) rename published/{ => 201906}/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md (100%) rename published/{ => 201906}/20190410 How we built a Linux desktop app with Electron.md (100%) rename published/{ => 201906}/20190411 Be your own certificate authority.md (100%) rename published/{ => 201906}/20190417 Inter-process communication in Linux- Sockets and signals.md (100%) rename published/{ => 201906}/20190422 4 open source apps for plant-based diets.md (100%) rename published/{ => 201906}/20190423 Edge computing is in most industries- future.md (100%) rename published/{ => 201906}/20190423 Epic Games Store is Now Available on Linux Thanks to Lutris.md (100%) rename published/{ => 201906}/20190423 How to identify same-content files on Linux.md (100%) rename published/{ => 201906}/20190427 Monitoring CPU and GPU Temperatures on Linux.md (100%) rename published/{ => 201906}/20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md (100%) rename published/{ => 201906}/20190505 How To Install-Uninstall Listed Packages From A File In Linux.md (100%) rename published/{ => 201906}/20190508 Why startups should release their code as open source.md (100%) rename published/{ => 201906}/20190509 5 essential values for the DevOps mindset.md (100%) rename published/{ => 201906}/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md (100%) rename published/{ => 201906}/20190517 10 Places Where You Can Buy Linux Computers.md (100%) rename published/{ => 201906}/20190517 Using Testinfra with Ansible to verify server state.md (100%) rename published/{ => 201906}/20190520 Getting Started With Docker.md (100%) rename published/{ => 201906}/20190520 When IoT systems fail- The risk of having bad IoT data.md (100%) rename published/{ => 201906}/20190520 Zettlr - Markdown Editor for Writers and Researchers.md (100%) rename published/{ => 201906}/20190522 French IT giant Atos enters the edge-computing business.md (100%) rename published/{ => 201906}/20190522 Securing telnet connections with stunnel.md (100%) rename published/{ => 201906}/20190525 4 Ways to Run Linux Commands in Windows.md (100%) rename published/{ => 201906}/20190527 20- FFmpeg Commands For Beginners.md (100%) rename published/{ => 201906}/20190527 5 GNOME keyboard shortcuts to be more productive.md (100%) rename published/{ => 201906}/20190527 A deeper dive into Linux permissions.md (100%) rename published/{ => 201906}/20190527 Dockly - Manage Docker Containers From Terminal.md (100%) rename published/{ => 201906}/20190527 How To Check Available Security Updates On Red Hat (RHEL) And CentOS System.md (100%) rename published/{ => 201906}/20190527 How to write a good C main function.md (100%) rename published/{ => 201906}/20190529 NVMe on Linux.md (100%) rename published/{ => 201906}/20190530 A short primer on assemblers, compilers, and interpreters.md (100%) rename published/{ => 201906}/20190531 Learn Python with these awesome resources.md (100%) rename published/{ => 201906}/20190531 Unity Editor is Now Officially Available for Linux.md (100%) rename published/{ => 201906}/20190531 Why translation platforms matter.md (100%) rename published/{ => 201906}/20190604 How To Verify NTP Setup (Sync) is Working or Not In Linux.md (100%) rename published/{ => 201906}/20190604 Kubernetes is a dump truck- Here-s why.md (100%) rename published/{ => 201906}/20190604 Two Methods To Check Or List Installed Security Updates on Redhat (RHEL) And CentOS System.md (100%) rename published/{ => 201906}/20190605 How to navigate the Kubernetes learning curve.md (100%) rename published/{ => 201906}/20190606 Cisco to buy IoT security, management firm Sentryo.md (100%) rename published/{ => 201906}/20190606 How Linux can help with your spelling.md (100%) rename published/{ => 201906}/20190606 Kubernetes basics- Learn how to drive first.md (100%) rename published/{ => 201906}/20190607 5 reasons to use Kubernetes.md (100%) rename published/{ => 201906}/20190608 An open source bionic leg, Python data pipeline, data breach detection, and more news.md (100%) rename published/{ => 201906}/20190610 Applications for writing Markdown.md (100%) rename published/{ => 201906}/20190610 Expand And Unexpand Commands Tutorial With Examples.md (100%) rename published/{ => 201906}/20190610 Graviton- A Minimalist Open Source Code Editor.md (100%) rename published/{ => 201906}/20190610 Neofetch - Display Linux system Information In Terminal.md (100%) rename published/{ => 201906}/20190610 Screen Command Examples To Manage Multiple Terminal Sessions.md (100%) rename published/{ => 201906}/20190610 Search Linux Applications On AppImage, Flathub And Snapcraft Platforms.md (100%) rename published/{ => 201906}/20190610 Try a new game on Free RPG Day.md (100%) rename published/{ => 201906}/20190610 Welcoming Blockchain 3.0.md (100%) rename published/{ => 201906}/20190612 Installing alternative versions of RPMs in Fedora.md (100%) rename published/{ => 201906}/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md (100%) rename published/{ => 201906}/20190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md (100%) rename published/{ => 201906}/20190614 How to send email from the Linux command line.md (100%) rename published/{ => 201906}/20190614 Personal assistant with Mycroft and Fedora.md (100%) rename published/{ => 201906}/20190617 Exploring -run on Linux.md (100%) rename published/{ => 201906}/20190619 Get the latest Ansible 2.8 in Fedora.md (100%) rename published/{ => 201906}/20190621 Bash Script to Monitor Memory Usage on Linux.md (100%) rename published/{ => 201906}/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md (100%) rename published/{ => 201906}/20190624 Raspberry Pi 4 is here.md (100%) rename published/{ => 201906}/20190624 Using i3 with multiple monitors.md (100%) rename published/{ => 201906}/20190628 FreeDOS turns 25 years old- An origin story.md (100%) diff --git a/published/20170410 Writing a Time Series Database from Scratch.md b/published/201906/20170410 Writing a Time Series Database from Scratch.md similarity index 100% rename from published/20170410 Writing a Time Series Database from Scratch.md rename to published/201906/20170410 Writing a Time Series Database from Scratch.md diff --git a/published/20170414 5 projects for Raspberry Pi at home.md b/published/201906/20170414 5 projects for Raspberry Pi at home.md similarity index 100% rename from published/20170414 5 projects for Raspberry Pi at home.md rename to published/201906/20170414 5 projects for Raspberry Pi at home.md diff --git a/published/20180324 Memories of writing a parser for man pages.md b/published/201906/20180324 Memories of writing a parser for man pages.md similarity index 100% rename from published/20180324 Memories of writing a parser for man pages.md rename to published/201906/20180324 Memories of writing a parser for man pages.md diff --git a/published/20180416 How To Resize Active-Primary root Partition Using GParted Utility.md b/published/201906/20180416 How To Resize Active-Primary root Partition Using GParted Utility.md similarity index 100% rename from published/20180416 How To Resize Active-Primary root Partition Using GParted Utility.md rename to published/201906/20180416 How To Resize Active-Primary root Partition Using GParted Utility.md diff --git a/published/20180604 BootISO - A Simple Bash Script To Securely Create A Bootable USB Device From ISO File.md b/published/201906/20180604 BootISO - A Simple Bash Script To Securely Create A Bootable USB Device From ISO File.md similarity index 100% rename from published/20180604 BootISO - A Simple Bash Script To Securely Create A Bootable USB Device From ISO File.md rename to published/201906/20180604 BootISO - A Simple Bash Script To Securely Create A Bootable USB Device From ISO File.md diff --git a/published/20180831 Get desktop notifications from Emacs shell commands .md b/published/201906/20180831 Get desktop notifications from Emacs shell commands .md similarity index 100% rename from published/20180831 Get desktop notifications from Emacs shell commands .md rename to published/201906/20180831 Get desktop notifications from Emacs shell commands .md diff --git a/published/20180914 A day in the life of a log message.md b/published/201906/20180914 A day in the life of a log message.md similarity index 100% rename from published/20180914 A day in the life of a log message.md rename to published/201906/20180914 A day in the life of a log message.md diff --git a/published/20190109 GoAccess - A Real-Time Web Server Log Analyzer And Interactive Viewer.md b/published/201906/20190109 GoAccess - A Real-Time Web Server Log Analyzer And Interactive Viewer.md similarity index 100% rename from published/20190109 GoAccess - A Real-Time Web Server Log Analyzer And Interactive Viewer.md rename to published/201906/20190109 GoAccess - A Real-Time Web Server Log Analyzer And Interactive Viewer.md diff --git a/published/20190111 Top 5 Linux Distributions for Productivity.md b/published/201906/20190111 Top 5 Linux Distributions for Productivity.md similarity index 100% rename from published/20190111 Top 5 Linux Distributions for Productivity.md rename to published/201906/20190111 Top 5 Linux Distributions for Productivity.md diff --git a/published/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md b/published/201906/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md similarity index 100% rename from published/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md rename to published/201906/20190219 5 Good Open Source Speech Recognition-Speech-to-Text Systems.md diff --git a/published/20190308 Blockchain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md b/published/201906/20190308 Blockchain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md similarity index 100% rename from published/20190308 Blockchain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md rename to published/201906/20190308 Blockchain 2.0 - Explaining Smart Contracts And Its Types -Part 5.md diff --git a/published/20190331 How to build a mobile particulate matter sensor with a Raspberry Pi.md b/published/201906/20190331 How to build a mobile particulate matter sensor with a Raspberry Pi.md similarity index 100% rename from published/20190331 How to build a mobile particulate matter sensor with a Raspberry Pi.md rename to published/201906/20190331 How to build a mobile particulate matter sensor with a Raspberry Pi.md diff --git a/published/20190404 Running LEDs in reverse could cool computers.md b/published/201906/20190404 Running LEDs in reverse could cool computers.md similarity index 100% rename from published/20190404 Running LEDs in reverse could cool computers.md rename to published/201906/20190404 Running LEDs in reverse could cool computers.md diff --git a/published/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md b/published/201906/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md similarity index 100% rename from published/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md rename to published/201906/20190405 Blockchain 2.0 - Ongoing Projects (The State Of Smart Contracts Now) -Part 6.md diff --git a/published/20190409 5 Linux rookie mistakes.md b/published/201906/20190409 5 Linux rookie mistakes.md similarity index 100% rename from published/20190409 5 Linux rookie mistakes.md rename to published/201906/20190409 5 Linux rookie mistakes.md diff --git a/published/20190409 5 open source mobile apps.md b/published/201906/20190409 5 open source mobile apps.md similarity index 100% rename from published/20190409 5 open source mobile apps.md rename to published/201906/20190409 5 open source mobile apps.md diff --git a/published/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md b/published/201906/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md similarity index 100% rename from published/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md rename to published/201906/20190409 VSCodium- 100- Open Source Version of Microsoft VS Code.md diff --git a/published/20190410 How we built a Linux desktop app with Electron.md b/published/201906/20190410 How we built a Linux desktop app with Electron.md similarity index 100% rename from published/20190410 How we built a Linux desktop app with Electron.md rename to published/201906/20190410 How we built a Linux desktop app with Electron.md diff --git a/published/20190411 Be your own certificate authority.md b/published/201906/20190411 Be your own certificate authority.md similarity index 100% rename from published/20190411 Be your own certificate authority.md rename to published/201906/20190411 Be your own certificate authority.md diff --git a/published/20190417 Inter-process communication in Linux- Sockets and signals.md b/published/201906/20190417 Inter-process communication in Linux- Sockets and signals.md similarity index 100% rename from published/20190417 Inter-process communication in Linux- Sockets and signals.md rename to published/201906/20190417 Inter-process communication in Linux- Sockets and signals.md diff --git a/published/20190422 4 open source apps for plant-based diets.md b/published/201906/20190422 4 open source apps for plant-based diets.md similarity index 100% rename from published/20190422 4 open source apps for plant-based diets.md rename to published/201906/20190422 4 open source apps for plant-based diets.md diff --git a/published/20190423 Edge computing is in most industries- future.md b/published/201906/20190423 Edge computing is in most industries- future.md similarity index 100% rename from published/20190423 Edge computing is in most industries- future.md rename to published/201906/20190423 Edge computing is in most industries- future.md diff --git a/published/20190423 Epic Games Store is Now Available on Linux Thanks to Lutris.md b/published/201906/20190423 Epic Games Store is Now Available on Linux Thanks to Lutris.md similarity index 100% rename from published/20190423 Epic Games Store is Now Available on Linux Thanks to Lutris.md rename to published/201906/20190423 Epic Games Store is Now Available on Linux Thanks to Lutris.md diff --git a/published/20190423 How to identify same-content files on Linux.md b/published/201906/20190423 How to identify same-content files on Linux.md similarity index 100% rename from published/20190423 How to identify same-content files on Linux.md rename to published/201906/20190423 How to identify same-content files on Linux.md diff --git a/published/20190427 Monitoring CPU and GPU Temperatures on Linux.md b/published/201906/20190427 Monitoring CPU and GPU Temperatures on Linux.md similarity index 100% rename from published/20190427 Monitoring CPU and GPU Temperatures on Linux.md rename to published/201906/20190427 Monitoring CPU and GPU Temperatures on Linux.md diff --git a/published/20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md b/published/201906/20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md similarity index 100% rename from published/20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md rename to published/201906/20190428 Installing Budgie Desktop on Ubuntu -Quick Guide.md diff --git a/published/20190505 How To Install-Uninstall Listed Packages From A File In Linux.md b/published/201906/20190505 How To Install-Uninstall Listed Packages From A File In Linux.md similarity index 100% rename from published/20190505 How To Install-Uninstall Listed Packages From A File In Linux.md rename to published/201906/20190505 How To Install-Uninstall Listed Packages From A File In Linux.md diff --git a/published/20190508 Why startups should release their code as open source.md b/published/201906/20190508 Why startups should release their code as open source.md similarity index 100% rename from published/20190508 Why startups should release their code as open source.md rename to published/201906/20190508 Why startups should release their code as open source.md diff --git a/published/20190509 5 essential values for the DevOps mindset.md b/published/201906/20190509 5 essential values for the DevOps mindset.md similarity index 100% rename from published/20190509 5 essential values for the DevOps mindset.md rename to published/201906/20190509 5 essential values for the DevOps mindset.md diff --git a/published/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md b/published/201906/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md similarity index 100% rename from published/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md rename to published/201906/20190513 How To Check Whether The Given Package Is Installed Or Not On Debian-Ubuntu System.md diff --git a/published/20190517 10 Places Where You Can Buy Linux Computers.md b/published/201906/20190517 10 Places Where You Can Buy Linux Computers.md similarity index 100% rename from published/20190517 10 Places Where You Can Buy Linux Computers.md rename to published/201906/20190517 10 Places Where You Can Buy Linux Computers.md diff --git a/published/20190517 Using Testinfra with Ansible to verify server state.md b/published/201906/20190517 Using Testinfra with Ansible to verify server state.md similarity index 100% rename from published/20190517 Using Testinfra with Ansible to verify server state.md rename to published/201906/20190517 Using Testinfra with Ansible to verify server state.md diff --git a/published/20190520 Getting Started With Docker.md b/published/201906/20190520 Getting Started With Docker.md similarity index 100% rename from published/20190520 Getting Started With Docker.md rename to published/201906/20190520 Getting Started With Docker.md diff --git a/published/20190520 When IoT systems fail- The risk of having bad IoT data.md b/published/201906/20190520 When IoT systems fail- The risk of having bad IoT data.md similarity index 100% rename from published/20190520 When IoT systems fail- The risk of having bad IoT data.md rename to published/201906/20190520 When IoT systems fail- The risk of having bad IoT data.md diff --git a/published/20190520 Zettlr - Markdown Editor for Writers and Researchers.md b/published/201906/20190520 Zettlr - Markdown Editor for Writers and Researchers.md similarity index 100% rename from published/20190520 Zettlr - Markdown Editor for Writers and Researchers.md rename to published/201906/20190520 Zettlr - Markdown Editor for Writers and Researchers.md diff --git a/published/20190522 French IT giant Atos enters the edge-computing business.md b/published/201906/20190522 French IT giant Atos enters the edge-computing business.md similarity index 100% rename from published/20190522 French IT giant Atos enters the edge-computing business.md rename to published/201906/20190522 French IT giant Atos enters the edge-computing business.md diff --git a/published/20190522 Securing telnet connections with stunnel.md b/published/201906/20190522 Securing telnet connections with stunnel.md similarity index 100% rename from published/20190522 Securing telnet connections with stunnel.md rename to published/201906/20190522 Securing telnet connections with stunnel.md diff --git a/published/20190525 4 Ways to Run Linux Commands in Windows.md b/published/201906/20190525 4 Ways to Run Linux Commands in Windows.md similarity index 100% rename from published/20190525 4 Ways to Run Linux Commands in Windows.md rename to published/201906/20190525 4 Ways to Run Linux Commands in Windows.md diff --git a/published/20190527 20- FFmpeg Commands For Beginners.md b/published/201906/20190527 20- FFmpeg Commands For Beginners.md similarity index 100% rename from published/20190527 20- FFmpeg Commands For Beginners.md rename to published/201906/20190527 20- FFmpeg Commands For Beginners.md diff --git a/published/20190527 5 GNOME keyboard shortcuts to be more productive.md b/published/201906/20190527 5 GNOME keyboard shortcuts to be more productive.md similarity index 100% rename from published/20190527 5 GNOME keyboard shortcuts to be more productive.md rename to published/201906/20190527 5 GNOME keyboard shortcuts to be more productive.md diff --git a/published/20190527 A deeper dive into Linux permissions.md b/published/201906/20190527 A deeper dive into Linux permissions.md similarity index 100% rename from published/20190527 A deeper dive into Linux permissions.md rename to published/201906/20190527 A deeper dive into Linux permissions.md diff --git a/published/20190527 Dockly - Manage Docker Containers From Terminal.md b/published/201906/20190527 Dockly - Manage Docker Containers From Terminal.md similarity index 100% rename from published/20190527 Dockly - Manage Docker Containers From Terminal.md rename to published/201906/20190527 Dockly - Manage Docker Containers From Terminal.md diff --git a/published/20190527 How To Check Available Security Updates On Red Hat (RHEL) And CentOS System.md b/published/201906/20190527 How To Check Available Security Updates On Red Hat (RHEL) And CentOS System.md similarity index 100% rename from published/20190527 How To Check Available Security Updates On Red Hat (RHEL) And CentOS System.md rename to published/201906/20190527 How To Check Available Security Updates On Red Hat (RHEL) And CentOS System.md diff --git a/published/20190527 How to write a good C main function.md b/published/201906/20190527 How to write a good C main function.md similarity index 100% rename from published/20190527 How to write a good C main function.md rename to published/201906/20190527 How to write a good C main function.md diff --git a/published/20190529 NVMe on Linux.md b/published/201906/20190529 NVMe on Linux.md similarity index 100% rename from published/20190529 NVMe on Linux.md rename to published/201906/20190529 NVMe on Linux.md diff --git a/published/20190530 A short primer on assemblers, compilers, and interpreters.md b/published/201906/20190530 A short primer on assemblers, compilers, and interpreters.md similarity index 100% rename from published/20190530 A short primer on assemblers, compilers, and interpreters.md rename to published/201906/20190530 A short primer on assemblers, compilers, and interpreters.md diff --git a/published/20190531 Learn Python with these awesome resources.md b/published/201906/20190531 Learn Python with these awesome resources.md similarity index 100% rename from published/20190531 Learn Python with these awesome resources.md rename to published/201906/20190531 Learn Python with these awesome resources.md diff --git a/published/20190531 Unity Editor is Now Officially Available for Linux.md b/published/201906/20190531 Unity Editor is Now Officially Available for Linux.md similarity index 100% rename from published/20190531 Unity Editor is Now Officially Available for Linux.md rename to published/201906/20190531 Unity Editor is Now Officially Available for Linux.md diff --git a/published/20190531 Why translation platforms matter.md b/published/201906/20190531 Why translation platforms matter.md similarity index 100% rename from published/20190531 Why translation platforms matter.md rename to published/201906/20190531 Why translation platforms matter.md diff --git a/published/20190604 How To Verify NTP Setup (Sync) is Working or Not In Linux.md b/published/201906/20190604 How To Verify NTP Setup (Sync) is Working or Not In Linux.md similarity index 100% rename from published/20190604 How To Verify NTP Setup (Sync) is Working or Not In Linux.md rename to published/201906/20190604 How To Verify NTP Setup (Sync) is Working or Not In Linux.md diff --git a/published/20190604 Kubernetes is a dump truck- Here-s why.md b/published/201906/20190604 Kubernetes is a dump truck- Here-s why.md similarity index 100% rename from published/20190604 Kubernetes is a dump truck- Here-s why.md rename to published/201906/20190604 Kubernetes is a dump truck- Here-s why.md diff --git a/published/20190604 Two Methods To Check Or List Installed Security Updates on Redhat (RHEL) And CentOS System.md b/published/201906/20190604 Two Methods To Check Or List Installed Security Updates on Redhat (RHEL) And CentOS System.md similarity index 100% rename from published/20190604 Two Methods To Check Or List Installed Security Updates on Redhat (RHEL) And CentOS System.md rename to published/201906/20190604 Two Methods To Check Or List Installed Security Updates on Redhat (RHEL) And CentOS System.md diff --git a/published/20190605 How to navigate the Kubernetes learning curve.md b/published/201906/20190605 How to navigate the Kubernetes learning curve.md similarity index 100% rename from published/20190605 How to navigate the Kubernetes learning curve.md rename to published/201906/20190605 How to navigate the Kubernetes learning curve.md diff --git a/published/20190606 Cisco to buy IoT security, management firm Sentryo.md b/published/201906/20190606 Cisco to buy IoT security, management firm Sentryo.md similarity index 100% rename from published/20190606 Cisco to buy IoT security, management firm Sentryo.md rename to published/201906/20190606 Cisco to buy IoT security, management firm Sentryo.md diff --git a/published/20190606 How Linux can help with your spelling.md b/published/201906/20190606 How Linux can help with your spelling.md similarity index 100% rename from published/20190606 How Linux can help with your spelling.md rename to published/201906/20190606 How Linux can help with your spelling.md diff --git a/published/20190606 Kubernetes basics- Learn how to drive first.md b/published/201906/20190606 Kubernetes basics- Learn how to drive first.md similarity index 100% rename from published/20190606 Kubernetes basics- Learn how to drive first.md rename to published/201906/20190606 Kubernetes basics- Learn how to drive first.md diff --git a/published/20190607 5 reasons to use Kubernetes.md b/published/201906/20190607 5 reasons to use Kubernetes.md similarity index 100% rename from published/20190607 5 reasons to use Kubernetes.md rename to published/201906/20190607 5 reasons to use Kubernetes.md diff --git a/published/20190608 An open source bionic leg, Python data pipeline, data breach detection, and more news.md b/published/201906/20190608 An open source bionic leg, Python data pipeline, data breach detection, and more news.md similarity index 100% rename from published/20190608 An open source bionic leg, Python data pipeline, data breach detection, and more news.md rename to published/201906/20190608 An open source bionic leg, Python data pipeline, data breach detection, and more news.md diff --git a/published/20190610 Applications for writing Markdown.md b/published/201906/20190610 Applications for writing Markdown.md similarity index 100% rename from published/20190610 Applications for writing Markdown.md rename to published/201906/20190610 Applications for writing Markdown.md diff --git a/published/20190610 Expand And Unexpand Commands Tutorial With Examples.md b/published/201906/20190610 Expand And Unexpand Commands Tutorial With Examples.md similarity index 100% rename from published/20190610 Expand And Unexpand Commands Tutorial With Examples.md rename to published/201906/20190610 Expand And Unexpand Commands Tutorial With Examples.md diff --git a/published/20190610 Graviton- A Minimalist Open Source Code Editor.md b/published/201906/20190610 Graviton- A Minimalist Open Source Code Editor.md similarity index 100% rename from published/20190610 Graviton- A Minimalist Open Source Code Editor.md rename to published/201906/20190610 Graviton- A Minimalist Open Source Code Editor.md diff --git a/published/20190610 Neofetch - Display Linux system Information In Terminal.md b/published/201906/20190610 Neofetch - Display Linux system Information In Terminal.md similarity index 100% rename from published/20190610 Neofetch - Display Linux system Information In Terminal.md rename to published/201906/20190610 Neofetch - Display Linux system Information In Terminal.md diff --git a/published/20190610 Screen Command Examples To Manage Multiple Terminal Sessions.md b/published/201906/20190610 Screen Command Examples To Manage Multiple Terminal Sessions.md similarity index 100% rename from published/20190610 Screen Command Examples To Manage Multiple Terminal Sessions.md rename to published/201906/20190610 Screen Command Examples To Manage Multiple Terminal Sessions.md diff --git a/published/20190610 Search Linux Applications On AppImage, Flathub And Snapcraft Platforms.md b/published/201906/20190610 Search Linux Applications On AppImage, Flathub And Snapcraft Platforms.md similarity index 100% rename from published/20190610 Search Linux Applications On AppImage, Flathub And Snapcraft Platforms.md rename to published/201906/20190610 Search Linux Applications On AppImage, Flathub And Snapcraft Platforms.md diff --git a/published/20190610 Try a new game on Free RPG Day.md b/published/201906/20190610 Try a new game on Free RPG Day.md similarity index 100% rename from published/20190610 Try a new game on Free RPG Day.md rename to published/201906/20190610 Try a new game on Free RPG Day.md diff --git a/published/20190610 Welcoming Blockchain 3.0.md b/published/201906/20190610 Welcoming Blockchain 3.0.md similarity index 100% rename from published/20190610 Welcoming Blockchain 3.0.md rename to published/201906/20190610 Welcoming Blockchain 3.0.md diff --git a/published/20190612 Installing alternative versions of RPMs in Fedora.md b/published/201906/20190612 Installing alternative versions of RPMs in Fedora.md similarity index 100% rename from published/20190612 Installing alternative versions of RPMs in Fedora.md rename to published/201906/20190612 Installing alternative versions of RPMs in Fedora.md diff --git a/published/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md b/published/201906/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md similarity index 100% rename from published/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md rename to published/201906/20190613 Open hardware for musicians and music lovers- Headphone, amps, and more.md diff --git a/published/20190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md b/published/201906/20190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md similarity index 100% rename from published/20190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md rename to published/201906/20190613 Ubuntu Kylin- The Official Chinese Version of Ubuntu.md diff --git a/published/20190614 How to send email from the Linux command line.md b/published/201906/20190614 How to send email from the Linux command line.md similarity index 100% rename from published/20190614 How to send email from the Linux command line.md rename to published/201906/20190614 How to send email from the Linux command line.md diff --git a/published/20190614 Personal assistant with Mycroft and Fedora.md b/published/201906/20190614 Personal assistant with Mycroft and Fedora.md similarity index 100% rename from published/20190614 Personal assistant with Mycroft and Fedora.md rename to published/201906/20190614 Personal assistant with Mycroft and Fedora.md diff --git a/published/20190617 Exploring -run on Linux.md b/published/201906/20190617 Exploring -run on Linux.md similarity index 100% rename from published/20190617 Exploring -run on Linux.md rename to published/201906/20190617 Exploring -run on Linux.md diff --git a/published/20190619 Get the latest Ansible 2.8 in Fedora.md b/published/201906/20190619 Get the latest Ansible 2.8 in Fedora.md similarity index 100% rename from published/20190619 Get the latest Ansible 2.8 in Fedora.md rename to published/201906/20190619 Get the latest Ansible 2.8 in Fedora.md diff --git a/published/20190621 Bash Script to Monitor Memory Usage on Linux.md b/published/201906/20190621 Bash Script to Monitor Memory Usage on Linux.md similarity index 100% rename from published/20190621 Bash Script to Monitor Memory Usage on Linux.md rename to published/201906/20190621 Bash Script to Monitor Memory Usage on Linux.md diff --git a/published/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md b/published/201906/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md similarity index 100% rename from published/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md rename to published/201906/20190622 Open Source Slack Alternative Mattermost Gets -50M Funding.md diff --git a/published/20190624 Raspberry Pi 4 is here.md b/published/201906/20190624 Raspberry Pi 4 is here.md similarity index 100% rename from published/20190624 Raspberry Pi 4 is here.md rename to published/201906/20190624 Raspberry Pi 4 is here.md diff --git a/published/20190624 Using i3 with multiple monitors.md b/published/201906/20190624 Using i3 with multiple monitors.md similarity index 100% rename from published/20190624 Using i3 with multiple monitors.md rename to published/201906/20190624 Using i3 with multiple monitors.md diff --git a/published/20190628 FreeDOS turns 25 years old- An origin story.md b/published/201906/20190628 FreeDOS turns 25 years old- An origin story.md similarity index 100% rename from published/20190628 FreeDOS turns 25 years old- An origin story.md rename to published/201906/20190628 FreeDOS turns 25 years old- An origin story.md From cbd3da015495c3c2b960617a7eea5e3f8eb302ea Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 1 Jul 2019 08:56:13 +0800 Subject: [PATCH 203/336] translated --- .../20190320 4 cool terminal multiplexers.md | 121 ----------------- .../20190320 4 cool terminal multiplexers.md | 122 ++++++++++++++++++ 2 files changed, 122 insertions(+), 121 deletions(-) delete mode 100644 sources/tech/20190320 4 cool terminal multiplexers.md create mode 100644 translated/tech/20190320 4 cool terminal multiplexers.md diff --git a/sources/tech/20190320 4 cool terminal multiplexers.md b/sources/tech/20190320 4 cool terminal multiplexers.md deleted file mode 100644 index 2dbdfc6770..0000000000 --- a/sources/tech/20190320 4 cool terminal multiplexers.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 cool terminal multiplexers) -[#]: via: (https://fedoramagazine.org/4-cool-terminal-multiplexers/) -[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) - -4 cool terminal multiplexers -====== - -![][1] - -The Fedora OS is comfortable and easy for lots of users. It has a stunning desktop that makes it easy to get everyday tasks done. Under the hood is all the power of a Linux system, and the terminal is the easiest way for power users to harness it. By default terminals are simple and somewhat limited. However, a _terminal multiplexer_ allows you to turn your terminal into an even more incredible powerhouse. This article shows off some popular terminal multiplexers and how to install them. - -Why would you want to use one? Well, for one thing, it lets you logout of your system while _leaving your terminal session undisturbed_. It’s incredibly useful to logout of your console, secure it, travel somewhere else, then remotely login with SSH and continue where you left off. Here are some utilities to check out. - -One of the oldest and most well-known terminal multiplexers is _screen._ However, because the code is no longer maintained, this article focuses on more recent apps. (“Recent” is relative — some of these have been around for years!) - -### Tmux - -The _tmux_ utility is one of the most widely used replacements for _screen._ It has a highly configurable interface. You can program tmux to start up specific kinds of sessions based on your needs. You’ll find a lot more about tmux in this article published earlier: - -> [Use tmux for a more powerful terminal][2] - -Already a tmux user? You might like [this additional article on making your tmux sessions more effective][3]. - -To install tmux, use the _sudo_ command along with _dnf_ , since you’re probably in a terminal already: - -``` -$ sudo dnf install tmux -``` - -To start learning, run the _tmux_ command. A single pane window starts with your default shell. Tmux uses a _modifier key_ to signal that a command is coming next. This key is **Ctrl+B** by default. If you enter **Ctrl+B, C** you’ll create a new window with a shell in it. - -Here’s a hint: Use **Ctrl+B, ?** to enter a help mode that lists all the keys you can use. To keep things simple, look for the lines starting with _bind-key -T prefix_ at first. These are keys you can use right after the modifier key to configure your tmux session. You can hit **Ctrl+C** to exit the help mode back to tmux. - -To completely exit tmux, use the standard _exit_ command or _Ctrl+D_ keystroke to exit all the shells. - -### Dvtm - -You might have recently seen the Magazine article on [dwm, a dynamic window manager][4]. Like dwm, _dvtm_ is for tiling window management — but in a terminal. It’s designed to adhere to the legacy UNIX philosophy of “do one thing well” — in this case managing windows in a terminal. - -Installing dvtm is easy as well. However, if you want the logout functionality mentioned earlier, you’ll also need the _abduco_ package which handles session management for dvtm. - -``` -$ sudo dnf install dvtm abduco -``` - -The dvtm utility has many keystrokes already mapped to allow you to manage windows in the terminal. By default, it uses **Ctrl+G** as its modifier key. This keystroke tells dvtm that the following character is going to be a command it should process. For instance, **Ctrl+G, C** creates a new window and **Ctrl+G, X** removes it. - -For more information on using dvtm, check out the dvtm [home page][5] which includes numerous tips and get-started information. - -### Byobu - -While _byobu_ isn’t truly a multiplexer on its own — it wraps _tmux_ or even the older _screen_ to add functions — it’s worth covering here too. Byobu makes terminal multiplexers better for novices, by adding a help menu and window tabs that are slightly easier to navigate. - -Of course it’s available in the Fedora repos as well. To install, use this command: - -``` -$ sudo dnf install byobu -``` - -By default the _byobu_ command runs _screen_ underneath, so you might want to run _byobu-tmux_ to wrap _tmux_ instead. You can then use the **F9** key to open up a help menu for more information to help you get started. - -### Mtm - -The _mtm_ utility is one of the smallest multiplexers you’ll find. In fact, it’s only about 1000 lines of code! You might find it helpful if you’re in a limited environment such as old hardware, a minimal container, and so forth. To get started, you’ll need a couple packages. - -``` -$ sudo dnf install git ncurses-devel make gcc -``` - -Then clone the repository where mtm lives: - -``` -$ git clone https://github.com/deadpixi/mtm.git -``` - -Change directory into the _mtm_ folder and build the program: - -``` -$ make -``` - -You might receive a few warnings, but when you’re done, you’ll have the very small _mtm_ utility. Run it with this command: - -``` -$ ./mtm -``` - -You can find all the documentation for the utility [on its GitHub page][6]. - -These are just some of the terminal multiplexers out there. Got one you’d like to recommend? Leave a comment below with your tips and enjoy building windows in your terminal! - -* * * - -_Photo by _[ _Michael_][7]_ on [Unsplash][8]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/4-cool-terminal-multiplexers/ - -作者:[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/2018/08/tmuxers-4-816x345.jpg -[2]: https://fedoramagazine.org/use-tmux-more-powerful-terminal/ -[3]: https://fedoramagazine.org/4-tips-better-tmux-sessions/ -[4]: https://fedoramagazine.org/lets-try-dwm-dynamic-window-manger/ -[5]: http://www.brain-dump.org/projects/dvtm/#why -[6]: https://github.com/deadpixi/mtm -[7]: https://unsplash.com/photos/48yI_ZyzuLo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[8]: https://unsplash.com/search/photos/windows?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20190320 4 cool terminal multiplexers.md b/translated/tech/20190320 4 cool terminal multiplexers.md new file mode 100644 index 0000000000..fd35fce491 --- /dev/null +++ b/translated/tech/20190320 4 cool terminal multiplexers.md @@ -0,0 +1,122 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (4 cool terminal multiplexers) +[#]: via: (https://fedoramagazine.org/4-cool-terminal-multiplexers/) +[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) + +4 款很酷的终端复用器 +====== + +![][1] + +Fedora 系统对很多用户来说都很舒适。它有一个令人惊叹的桌面,可以轻松地完成日常任务。表面之下有 Linux 系统的全部功能,终端是高级用户使用它们的最简单的方法。默认的终端简单且功能有限。但是,_终端复用器_能让你的终端变得非常强大。本文展示了一些流行的终端多路复用器以及如何安装它们。 + + +你为什么要用它?嗯,首先,它可以让你注销你的系统,同时_让你的终端会话不受干扰_。退出你的控制台,加密它,在其他地方旅行时通过远程登录 SSH 继续之前的操作是非常有用的。这里有一些工具可以看下。 + +最古老和最知名的终端多路复用器之一是 _screen_。但是,由于代码不再维护,本文将重点介绍最近的应用。 (“最近的”是相对的,其中一些已存在多年!) + +### Tmux + +_tmux_ 是 _screen_ 的最广泛使用的替换之一。它有高度可配置的接口。你可以根据需要对 tmux 进行编程以启动特定类型的会话。在前面发表的这篇文章中你会发现更多关于 tmux 的信息: + +> [使用 tmux 实现更强大的终端][2] + +已经是 tmux 用户?你可能会喜欢[这篇使你的 tmux 会话更有效的文章][3]。 + +要安装 tmux,由于你可能已经在终端中,请使用 _dnf_ 并带上 _sudo_: + +``` +$ sudo dnf install tmux +``` + +要开始学习,请运行 _tmux_ 命令。单窗格窗口以你的默认 shell 启动。tmux 使用_修饰键_来表示接下来会发出命令。默认情况下,此键为 **Ctrl+B**。如果输入 **Ctrl+B, C**,你将创建一个带有 shell 的新窗口。 + +提示:使用 **Ctrl+B, ?** 进入帮助模式,会列出你可以使用的所有键。为了简单起见,你先查看 _bind-key -T prefix_ 开头的行。这些是你可以在修饰键之后立即使用的键,可以用来配置你的 tmux 会话。你可以按 **Ctrl+C** 退出帮助模式回 tmux。 + +要完全退出 tmux,请使用标准 _exit_ 命令或 _Ctrl+D_ 退出所有 shell。 + +### Dvtm + +你可能最近在 Fedroa Magzine上看到过一篇 [dwm,一个动态窗口管理器][4]的文章。像 dwm 一样,_dvtm_ 用于平铺窗口管理,但是用在终端中。它的设计坚持 UNIX 的“做好一件事”的理念,在这里是管理终端中的窗口。 + +安装 dvtm 也很简单。但是,如果你想要前面提到的注销功能,你还需要 _abduco_ 包来处理 dvtm 的会话管理。 + +``` +$ sudo dnf install dvtm abduco +``` + +dvtm 已经映射了许多管理终端窗口的按键。默认情况下,它使用 **Ctrl+G** 作为其修饰键。这个按键告诉 dvtm 接下来的字符将成为它应该处理的命令。例如, **Ctrl+G, C** 创建一个新窗口,**Ctrl+G, X** 将其关闭。 + +有关使用 dvtm 的更多信息,请查看 dvtm 的[主页][5],其中包含大量提示和入门信息。 + +### Byobu + +虽然 _byobu_ 本身并不是真正的多路复用器 - 它封装了 _tmux_ 甚至更老的 _screen_ 来添加功能,但它也值得在这里一提。通过帮助菜单和窗口选项卡,以便更加容易地找到功能,Byobu 使终端复用器更适合初学者。 + +当然它也可以在 Fedora 仓库中找到。要安装它,请使用以下命令: + +``` +$ sudo dnf install byobu +``` + +默认情况下,_byobu_ 会在内部运行 _screen_,因此你可能希望运行 _byobu-tmux_ 来封装 _tmux_。你可以使用 **F9** 键打开帮助菜单以获取更多信息,来帮助你入门。 + +### Mtm + +_mtm_ 是你可以找到的最小的复用器之一。事实上,它只有大约 1000 行代码!如果你处于受限的环境(例如旧硬件、最小容器等)中,你可能会发现它很有用。要开始使用,你需要安装一些包。 + +``` +$ sudo dnf install git ncurses-devel make gcc +``` + +然后克隆 mtm 所在的仓库: + +``` +$ git clone https://github.com/deadpixi/mtm.git +``` + +进入 _mtm_ 文件夹并构建程序: + +``` +$ make +``` + +你可能会收到一些警告,但完成后,你将会有一个非常小的 _mtm_ 程序。使用以下命令运行它: + +``` +$ ./mtm +``` + +你可以在 [GitHub 页面][6]上找到该程序的所有文档。 + +这里只是一些终端复用器。你有想推荐的么?请在下面留下你的评论,享受在终端中创建窗口吧! + +* * * + +_由 _[ _Michael_][7]_ 拍摄,发布于 [Unsplash][8]。_ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/4-cool-terminal-multiplexers/ + +作者:[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/2018/08/tmuxers-4-816x345.jpg +[2]: https://fedoramagazine.org/use-tmux-more-powerful-terminal/ +[3]: https://fedoramagazine.org/4-tips-better-tmux-sessions/ +[4]: https://fedoramagazine.org/lets-try-dwm-dynamic-window-manger/ +[5]: http://www.brain-dump.org/projects/dvtm/#why +[6]: https://github.com/deadpixi/mtm +[7]: https://unsplash.com/photos/48yI_ZyzuLo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[8]: https://unsplash.com/search/photos/windows?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText From ab66f12c51150022da182a27727e6965f16d3583 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 1 Jul 2019 08:59:13 +0800 Subject: [PATCH 204/336] translating --- ... BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md index 52fcdc0569..446bf11a92 100644 --- a/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md +++ b/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From e05218fa5d408139c0ac68e8f8ae4f70020dccf5 Mon Sep 17 00:00:00 2001 From: sea0 <4127401@qq.com> Date: Mon, 1 Jul 2019 10:17:13 +0800 Subject: [PATCH 205/336] Update and rename sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md to translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交译文 --- ...berry Pi 4 Takes Aim at Desktop Segment.md | 110 ------------------ ...berry Pi 4 Takes Aim at Desktop Segment.md | 105 +++++++++++++++++ 2 files changed, 105 insertions(+), 110 deletions(-) delete mode 100644 sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md create mode 100644 translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md diff --git a/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md deleted file mode 100644 index 2148648ee4..0000000000 --- a/sources/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md +++ /dev/null @@ -1,110 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wahailin) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment) -[#]: via: (https://itsfoss.com/raspberry-pi-4/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment -====== - -_**Brief: Raspberry Pi 4 is here with the upgraded technical specifications. You get up to 4 GB of RAM and you can connect two 4K displays with it. With the new hardware, you should be more comfortable using it as a desktop. Starting price remains the $35 like the previous models.**_ - -The Raspberry Pi Foundation has just launched the new [Raspberry Pi 4 Model B][1]. - -It comes with some impressive upgrades which makes one of the most powerful [single board computers][2] under $40. - -![Raspberry Pi 4][3] - -### What’s new in Raspberry Pi 4? - -The Raspberry Pi 4 now supports a dual 4K monitor setup – if that is what you are looking for. In addition to this, you get a more powerful processor which can be coupled with up to 4 GB of RAM. That’s almost equivalent to a mid-end laptop. - -The upgraded specification makes it a competitor in the [Linux mini-PC][4] segment while the same price tag of $35 gives it an edge over [other single board computers][2]. - -Right after the launch, it’s almost out of stock at major online stores. So, let us take a look at what makes it so impressive. - -#### Raspberry Pi 4 key specifications - -![Raspberry Pi 4 Tech Specs][5] - - * Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz - * Up to 4GB RAM (choices are 1 GB, 2 GB and 4 GB) - * WiFi and Bluetooth 5.0 - * 2 USB 3.0 and a USB 2.0 ports - * 40 pin GPIO header (backward compatible) - * 2 micro-HDMI ports (supports 4K displays) - * USB-C (power supply) - * Gigabit Ethernet - - - -If you are curious to know more, do check out the [official tech specs][6] on their website. - -### Pricing and availability - -The pricing for just the Raspberry Pi 4 board starts from $35 and depending on the choice of RAM (1-4 GB), the cost shall vary. - - * Raspberry Pi 4 with 1 GB RAM: $35 - * Raspberry Pi 4 with 2 GB RAM: $45 - * Raspberry Pi 4 with 4 GB RAM: $55 - - - -Raspberry Pi 4 is available from different vendors depending on your country. It’s getting out of stock so you should either hurry up or wait for a few days/weeks. You can get purchase information on its official webpage. - -[Buy Raspberry Pi 4][1] - -You should note that [you need to have additional accessories in order to run Raspberry Pi][7]. This is why there are several starter kits available to give you all the necessary supporting accessories. - -[][8] - -Suggested read  Raspberry Pi Gets RAM Upgrade, In The Same Price - -#### Raspberry Pi 4 desktop Kit - -![Raspberry Pi 4 Desktop Kit][9] - -You can also purchase the official Raspberry Pi 4 desktop kit that comes with a Raspberry Pi 4, its case, keyboard, mouse, micro HDMI cables, USB-C power supply, user guide and 16GB [microSD card with Raspbian installed][10]. - -![Raspberry Pi Branded Desktop Kit][11] - -The entire kit is in red and white color and it looks pretty (if you care for the looks). You can get the purchase information on Raspberry Pi website. - -[Raspberry Pi 4 Desktop Kit][12] - -#### Raspberry Pi 4 is promising - -With all that spec buff, it is definitely going to be one of the best out there. Also, instead of getting an entry-level desktop, Raspberry Pi 4 will be a better choice. You can easily access your documents, manage your spreadsheets, and do a lot of things at a cheaper price tag. - -I’m definitely considering to purchase the Raspberry Pi 4 as a spare (but a powerful) entry-level desktop. Well, I won’t be going for the 4K dual monitor setup, but it surely is capable of that, at least on paper. - -What do you think about the new Raspberry Pi 4 Model B? Let us know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/raspberry-pi-4/ - -作者:[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/products/raspberry-pi-4-model-b/ -[2]: https://itsfoss.com/raspberry-pi-alternatives/ -[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4.jpeg?resize=800%2C449&ssl=1 -[4]: https://itsfoss.com/linux-based-mini-pc/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-tech-specs.jpg?ssl=1 -[6]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/ -[7]: https://itsfoss.com/things-you-need-to-get-your-raspberry-pi-working/ -[8]: https://itsfoss.com/raspberry-pi-gets-ram-upgrade-in-the-same-price/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-desktop-kit.jpg?resize=800%2C427&ssl=1 -[10]: https://itsfoss.com/tutorial-how-to-install-raspberry-pi-os-raspbian-wheezy/ -[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-desktop-kit-official.jpg?ssl=1 -[12]: https://www.raspberrypi.org/products/raspberry-pi-4-desktop-kit/ diff --git a/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md new file mode 100644 index 0000000000..2810363cc3 --- /dev/null +++ b/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @@ -0,0 +1,105 @@ +[#]: collector: (lujun9972) +[#]: translator: (wahailin) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment) +[#]: via: (https://itsfoss.com/raspberry-pi-4/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +升级配置后,树莓派 4 瞄准了桌面市场 +====== + +_**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 4 GB,并支持双 4k 显示。最新硬件配置下,您可以轻松将其作为桌面使用。起售价格依然和旧有型号一样,为 35 美元。**_ + +树莓派基金会已经发布了最新版的[树莓派 4B][1] 单板计算机。 + +在升级了几个重要特性后,树莓派 4 成为了 40 美元以下的[单板计算机][2]市场中最强大的产品。 + +![Raspberry Pi 4][3] + +### 树莓派 4 的新特性 + +树莓派 4 开始支持双 4k 显示器设置 - 如果您对此有所需求的话。除此外,它还配备了更强大的处理器,其搭载的 RAM 最高可达 4 GB,这几乎可以媲美一个中端的便携电脑。 + +本次配置升级使树莓派可以参与[迷你 Linux 机][4]市场的竞争,而依旧 35 美元的起始售价使其比[其它单板计算机][2]更具优势。 + +树莓派 4 发布不久,各大主要的在线商店就几乎销售一空。那么,我们来看看它有哪些新卖点吧。 + +#### 树莓派 4 的核心配置 + +![Raspberry Pi 4 Tech Specs][5] + + * 博通 BCM2711,1.5 GHz 64 位 4 核心 Cortex-A72(ARM v8) + * 顶配 4 GB RAM(可选 RAM 配置为 1 GB,2 GB 和 4 GB) + * 无线网络和蓝牙 5.0 + * 两个 USB 3.0 接口,两个 USB 2.0 接口 + * 40 针 GPIO 引脚(向前兼容) + * 两个 Micro-HDMI 接口(支持 4k 显示) + * USB-C(供电接口) + * 千兆以太网 + + +如果您想更深入的了解配置信息,可以参考树莓派网站的[官方技术规格][6]。 + +### 定价和可用性 + +树莓派 4 的板子起始售价为 35 美元,根据可选配置不同(1-4 GB),售价也不同。 + + * 1 GB RAM 树莓派 4 售价:35 美元 + * 2 GB RAM 树莓派 4 售价:45 美元 + * 4 GB RAM 树莓派 4 售价:55 美元 + + +根据您所在国家或地区的不同,树莓派 4 有不同的供应商。现有库存即将售罄,如果您想购买一定尽快,否则就要再等上一段时日了,您还可以参考官方页面上的购买信息。 + +[购买树莓派 4][1] + +请注意,[运行树莓派需要额外的配件][7],这就是为什么官方提供了可选的基础套件,套件中包含了所有必需的支持配件。 + + +#### 树莓派 4 桌面套件 + +![Raspberry Pi 4 Desktop Kit][9] + +您可以在购买树莓派 4 时同时购买树莓派 4 的桌面套件:外壳、键盘、鼠标、micro HDMI 线、USB-C 电源、用户指南以及[预装了 Rasbian 的 16 GB microSD 卡][10]。 + +![Raspberry Pi Branded Desktop Kit][11] + +整组套件采用红白颜色设计,看起来很美观(如果您关心外观的话)。您可以在树莓派网站上获取更多的购买信息。 + +[树莓派 4 桌面套件][12] + +#### 树莓派 4 的前景 + +拥有所有这些配置后,树莓派 4 无疑会成为同类产品中最好的之一。同样,相比购买入门级桌面计算机,购买树莓派 4 也会是更好的选择。您可以只花很便宜的价格,就能轻松访问文档,管理电子表格,以及完成更多其它操作。 + +我绝对会考虑购买树莓派 4 作为备用(但强大)的入门级桌面计算机,但不会配备 4k 显示器,但依据文档,树莓派 4 肯定是支持双 4k 显示设置的。 + +您怎么评价最新版的树莓派 4B? 欢迎在评论中说出您的想法。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/raspberry-pi-4/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[wahailin](https://github.com/wahailin) +校对:[校对者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/products/raspberry-pi-4-model-b/ +[2]: https://itsfoss.com/raspberry-pi-alternatives/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4.jpeg?resize=800%2C449&ssl=1 +[4]: https://itsfoss.com/linux-based-mini-pc/ +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-tech-specs.jpg?ssl=1 +[6]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/ +[7]: https://itsfoss.com/things-you-need-to-get-your-raspberry-pi-working/ +[8]: https://itsfoss.com/raspberry-pi-gets-ram-upgrade-in-the-same-price/ +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-4-desktop-kit.jpg?resize=800%2C427&ssl=1 +[10]: https://itsfoss.com/tutorial-how-to-install-raspberry-pi-os-raspbian-wheezy/ +[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspberry-pi-desktop-kit-official.jpg?ssl=1 +[12]: https://www.raspberrypi.org/products/raspberry-pi-4-desktop-kit/ From 617c3a6d7e376d9da4a5b3da73cc6c0947f42e5d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 11:32:52 +0800 Subject: [PATCH 206/336] PRF:20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @wahailin --- ...berry Pi 4 Takes Aim at Desktop Segment.md | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md index 2810363cc3..3f88a45a60 100644 --- a/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md +++ b/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment) @@ -10,7 +10,7 @@ 升级配置后,树莓派 4 瞄准了桌面市场 ====== -_**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 4 GB,并支持双 4k 显示。最新硬件配置下,您可以轻松将其作为桌面使用。起售价格依然和旧有型号一样,为 35 美元。**_ +> 树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 4 GB,并支持双 4k 显示。最新硬件配置下,你可以轻松将其作为桌面使用。起售价格依然和旧有型号一样,为 35 美元。 树莓派基金会已经发布了最新版的[树莓派 4B][1] 单板计算机。 @@ -20,7 +20,7 @@ _**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 ### 树莓派 4 的新特性 -树莓派 4 开始支持双 4k 显示器设置 - 如果您对此有所需求的话。除此外,它还配备了更强大的处理器,其搭载的 RAM 最高可达 4 GB,这几乎可以媲美一个中端的便携电脑。 +树莓派 4 开始支持双 4k 显示器设置 —— 如果你对此有所需求的话。除此外,它还配备了更强大的处理器,其搭载的 RAM 最高可达 4 GB,这几乎可以媲美一个中端的便携电脑。 本次配置升级使树莓派可以参与[迷你 Linux 机][4]市场的竞争,而依旧 35 美元的起始售价使其比[其它单板计算机][2]更具优势。 @@ -30,7 +30,7 @@ _**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 ![Raspberry Pi 4 Tech Specs][5] - * 博通 BCM2711,1.5 GHz 64 位 4 核心 Cortex-A72(ARM v8) + * 博通 BCM2711,1.5 GHz 64 位 4 核心 Cortex-A72(ARM v8) * 顶配 4 GB RAM(可选 RAM 配置为 1 GB,2 GB 和 4 GB) * 无线网络和蓝牙 5.0 * 两个 USB 3.0 接口,两个 USB 2.0 接口 @@ -39,8 +39,7 @@ _**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 * USB-C(供电接口) * 千兆以太网 - -如果您想更深入的了解配置信息,可以参考树莓派网站的[官方技术规格][6]。 +如果你想更深入的了解配置信息,可以参考树莓派网站的[官方技术规格][6]。 ### 定价和可用性 @@ -50,33 +49,31 @@ _**概要:树莓派 4 升级配置后开始发售,其 RAM 配置最高可达 * 2 GB RAM 树莓派 4 售价:45 美元 * 4 GB RAM 树莓派 4 售价:55 美元 +根据你所在国家或地区的不同,树莓派 4 有不同的供应商。现有库存即将售罄,如果你想购买一定尽快,否则就要再等上一段时日了,你还可以参考官方页面上的购买信息。 -根据您所在国家或地区的不同,树莓派 4 有不同的供应商。现有库存即将售罄,如果您想购买一定尽快,否则就要再等上一段时日了,您还可以参考官方页面上的购买信息。 - -[购买树莓派 4][1] +- [购买树莓派 4][1] 请注意,[运行树莓派需要额外的配件][7],这就是为什么官方提供了可选的基础套件,套件中包含了所有必需的支持配件。 - #### 树莓派 4 桌面套件 ![Raspberry Pi 4 Desktop Kit][9] -您可以在购买树莓派 4 时同时购买树莓派 4 的桌面套件:外壳、键盘、鼠标、micro HDMI 线、USB-C 电源、用户指南以及[预装了 Rasbian 的 16 GB microSD 卡][10]。 +你可以在购买树莓派 4 时同时购买树莓派 4 的桌面套件:外壳、键盘、鼠标、micro HDMI 线、USB-C 电源、用户指南以及[预装了 Rasbian 的 16 GB microSD 卡][10]。 ![Raspberry Pi Branded Desktop Kit][11] -整组套件采用红白颜色设计,看起来很美观(如果您关心外观的话)。您可以在树莓派网站上获取更多的购买信息。 +整组套件采用红白颜色设计,看起来很美观(如果你关心外观的话)。你可以在树莓派网站上获取更多的购买信息。 -[树莓派 4 桌面套件][12] +- [树莓派 4 桌面套件][12] -#### 树莓派 4 的前景 +### 树莓派 4 的前景 -拥有所有这些配置后,树莓派 4 无疑会成为同类产品中最好的之一。同样,相比购买入门级桌面计算机,购买树莓派 4 也会是更好的选择。您可以只花很便宜的价格,就能轻松访问文档,管理电子表格,以及完成更多其它操作。 +拥有所有这些配置后,树莓派 4 无疑会成为同类产品中最好的之一。同样,相比购买入门级桌面计算机,购买树莓派 4 也会是更好的选择。你可以只花很便宜的价格,就能轻松访问文档、管理电子表格,以及完成更多其它操作。 我绝对会考虑购买树莓派 4 作为备用(但强大)的入门级桌面计算机,但不会配备 4k 显示器,但依据文档,树莓派 4 肯定是支持双 4k 显示设置的。 -您怎么评价最新版的树莓派 4B? 欢迎在评论中说出您的想法。 +你怎么评价最新版的树莓派 4B? 欢迎在评论中说出你的想法。 -------------------------------------------------------------------------------- @@ -85,7 +82,7 @@ via: https://itsfoss.com/raspberry-pi-4/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[wahailin](https://github.com/wahailin) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From d5ab3c6d69a1480986b1f630ca6bf9bc213f8471 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 11:33:47 +0800 Subject: [PATCH 207/336] PUB:20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @wahailin https://linux.cn/article-11039-1.html --- ...aded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md (98%) diff --git a/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md b/published/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md similarity index 98% rename from translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md rename to published/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md index 3f88a45a60..54d28b5d1f 100644 --- a/translated/tech/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md +++ b/published/20190624 With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wahailin) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11039-1.html) [#]: subject: (With Upgraded Specs, Raspberry Pi 4 Takes Aim at Desktop Segment) [#]: via: (https://itsfoss.com/raspberry-pi-4/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From 5afc2fb71928f4d294ab8b4787daa81e3ffe6625 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 12:36:35 +0800 Subject: [PATCH 208/336] PRF:20190625 5 tiny Linux distros to try before you die.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @chen-ni 翻译的很棒! --- ...iny Linux distros to try before you die.md | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/translated/tech/20190625 5 tiny Linux distros to try before you die.md b/translated/tech/20190625 5 tiny Linux distros to try before you die.md index a0a2fa4f2d..f6e000a269 100644 --- a/translated/tech/20190625 5 tiny Linux distros to try before you die.md +++ b/translated/tech/20190625 5 tiny Linux distros to try before you die.md @@ -1,24 +1,26 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (5 tiny Linux distros to try before you die) [#]: via: (https://opensource.com/article/19/6/linux-distros-to-try) [#]: author: (Seth Kenlon https://opensource.com/users/seth/users/marcobravo) -5 个不容错过的微型 Linux 发行版 +不容错过的 5 个微型 Linux 发行版 ====== -这些微型 Linux 发行版可以让你的老爷机复活、启动一个损坏的系统,或者是确保在公共电脑上进行安全的操作。 -![Hand putting a Linux file folder into a drawer][1] + +> 这些微型 Linux 发行版可以让你的老爷机复活,可以启动一个损坏的系统,或者是确保在公共电脑上进行安全的操作。 + +![](https://img.linux.net.cn/data/attachment/album/201907/01/123700uva8cagcqywwj8jv.jpg) 可供日常使用的 Linux 发行版比比皆是,不过其中有一些发行版常常被我们忽视,因为它们实在是太小了。但这些微型 Linux 发行版其实是一种非常强大的创新:使用一套完整的操作系统驱动一台只有不到 1 GB 存储空间和 512 MB 内存的计算机,真的是终极的黑客作风。 微型发行版的用法有很多种,比如说: * 从垃圾桶边挽救回那些又老又慢的电脑。你可以继续使用那些本来已经计划报废的机器,直到它们彻底解体(而不是在刚开始感觉有点儿慢的时候就扔掉)。 - * 使用 U盘 启动一个损坏的系统来恢复数据或者修复启动分区。 - * 确保在安全和隐私的操作环境下使用公共电脑。如果使用 U盘 启动酒店大厅或者图书馆里的一台公共电脑,你是可以确定操作环境是安全的。 + * 使用 U盘启动一个损坏的系统来恢复数据或者修复启动分区。 + * 确保在安全和隐私的操作环境下使用公共电脑。如果使用 U 盘启动酒店大厅或者图书馆里的一台公共电脑,你是可以确定操作环境是安全的。 轻量级发行版有很多种,比如说 [Lubuntu][2]、[Peppermint OS][3] 和 [Bodhi][4],但是那些真正微型的发行版又有一些独到之处。下面就是你不容错过的五个微型发行版: @@ -28,21 +30,21 @@ [Tiny Core Linux][6] 小得近乎不可思议:终端版本只有 11 MB,图形界面版本只有 16 MB。我翻了一下之前收集的旧 U盘,最小的一个是 128 MB 的,也有 Tiny Core 镜像文件的八倍之大呢。 -Tiny Core 默认包括只包括了基础操作系统,你需要通过以太网下载需要的应用程序。由于设计得极端精简,甚至安装完整操作系统的应用程序都没有被包含在内(不过需要的话可以从 Tiny Core 的软件仓库下载)。 +Tiny Core 默认包括只包括了基本的操作系统,你需要通过以太网下载需要的应用程序。由于设计得极端精简,甚至安装完整操作系统的应用程序都没有被包含在内(不过需要的话可以从 Tiny Core 的软件仓库下载)。 -我使用过一个 128 MB 的 U盘 在一台只有 512 MB 内存的机器上运行了 Tiny Core,对于一个只有 16 MB 的操作系统来说,效果算是非常棒了。只有在使用网页浏览器的时候速度才会变慢,但这主要是由于大部分现代网站太过复杂,而不是 Tiny Core 的问题。 +我使用过一个 128 MB 的 U盘在一台只有 512 MB 内存的机器上运行了 Tiny Core,对于一个只有 16 MB 的操作系统来说,效果算是非常棒了。只有在使用网页浏览器的时候速度才会变慢,但这主要是由于大部分现代网站太过复杂,而不是 Tiny Core 的问题。 如果不使用图形界面,运行 Tiny Core 就只需要 64 MB 的内存了。 #### 安装 -[下载 Tiny Core][7] 并使用 **dd** 或者 [Etcher][8] 写入 U盘。 +[下载 Tiny Core][7] 并使用 `dd` 或者 [Etcher][8] 写入 U盘。 你只需要点击屏幕底部启动栏上的 **Apps** 图标下载 **tc-install** 或者 **tc-install-GUI** 应用,就可以轻松安装 Tiny Core了。 ![Tiny Core installer][9] -安装 Tiny Core 有几种不同的方式。你可以把它安装在一个格式化为 Linux 驱动的 U盘 里(这要求你的电脑支持使用 USB 驱动启动。大多数现代电脑都支持,但是在老一些的电脑上不太常见),或者安装在微软 FAT 文件系统的 U盘 里(这对于大多数不支持从 USB 驱动启动的电脑来说非常管用),或者甚至安装在一个现有 Linux 分区的一个文件夹里。 +安装 Tiny Core 有几种不同的方式。你可以把它安装在一个格式化为 Linux 驱动器的 U盘里(这要求你的电脑支持使用 USB 驱动启动。大多数现代电脑都支持,但是在老一些的电脑上不太常见),或者安装在微软 FAT 文件系统的 U 盘里(这对于大多数不支持从 USB 驱动启动的电脑来说非常管用),或者甚至安装在一个现有 Linux 分区的一个文件夹里。 安装过程非常快,完成之后就可以重启计算机,进入到 Tiny Core Linux 系统中啦。 @@ -76,9 +78,9 @@ Tiny Core 非常适合性能不佳的老爷机、用来通过网络启动的镜 如果你挑花了眼,只想赶紧选择一个版本尝试一下的话,那就 [下载滚动发布版本吧][14]。这个版本有差不多 50 MB 大小,每周都会更新。如果你爱上了 SliTaz,而滚动发布版本又更新得 *过快* 了的话,可以再选择一个更符合你需求的版本。 -下载好你选择的 SliTaz 镜像文件之后,你就可以用 **dd** 或者 [Etcher][8] 将它写入 U盘,然后重启。 +下载好你选择的 SliTaz 镜像文件之后,你就可以用 `dd` 或者 [Etcher][8] 将它写入 U 盘,然后重启。 -将 SliTaz 安装在 U盘 或者硬盘上需要通过 **TazPanel** 这个应用程序来实现。它会引导你对硬盘进行需要的分区,然后将 SliTaz 安装在你选择的地方。 +将 SliTaz 安装在 U 盘或者硬盘上需要通过 **TazPanel** 这个应用程序来实现。它会引导你对硬盘进行需要的分区,然后将 SliTaz 安装在你选择的地方。 ![SliTaz installer][15] @@ -88,16 +90,16 @@ SliTaz 的控制中心是 **TazPanel** 这个应用程序。如果你喜欢 Open SliTaz 提供的应用程序可以满足大多数基本需求,如果你不是非常在意完成某一项任务必须使用哪一个应用程序的话,那么在 SliTaz 的软件仓库里应该可以找到你想要的应用。如果你有一些特别的需求(比如说想要使用 GIMP 2.10 而不是 GIMP 2.8),那么就需要学习如何生成 SliTaz 软件包了。好消息是,**tazpkg** 命令支持从好几种软件包格式转换过来,包括: - * Debian 软件包 (.deb, .udeb) - * RPM 软件包 (.rpm) - * Slackware 软件包 (.tgz) - * Puppy 软件包 (.sfs, .pet) - * NuTyX 软件包 (.cards.tar.xz) - * Arch 和 Alpine Linux 软件包 (.apk, .pkg.tar.gz, .pkg.tar.xz) - * OpenWrt 软件包 (.ipk, .opk) - * Paldo 软件包 (.tar.bz2) - * Void 软件包 (.xbps) - * Tiny Core 软件包 (.tce, .tcel, .tcem, .tcz) + * Debian 软件包(.deb,.udeb) + * RPM 软件包(.rpm) + * Slackware 软件包(.tgz) + * Puppy 软件包(.sfs,.pet) + * NuTyX 软件包(.cards.tar.xz) + * Arch 和 Alpine Linux 软件包(.apk,.pkg.tar.gz,.pkg.tar.xz) + * OpenWrt 软件包(.ipk,.opk) + * Paldo 软件包(.tar.bz2) + * Void 软件包(.xbps) + * Tiny Core 软件包(.tce,.tcel,.tcem, .tcz) #### 结论 @@ -117,7 +119,7 @@ Porteus 的基础镜像文件相对来说比较小,因此被称为是“微型 ![Porteus installer][19] -你可以根据 [官方的安装指南][20] 将 Porteus 安装到一个 U盘 或者是内部硬盘里。这两种方式非常相似,都会使用一个不能被改变的压缩根文件系统。这是一种稳定的、受限制的文件系统,会根据你的使用被修改。你所做的变更和安装的应用程序在重启的时候都会被加载到内存里,从而还原你关机前的使用环境。 +你可以根据 [官方的安装指南][20] 将 Porteus 安装到一个 U盘 或者是内部硬盘里。这两种方式非常相似,都会使用一个不可变的压缩根文件系统。这是一种稳定的、受限制的文件系统,会根据你的使用被修改。你所做的变更和安装的应用程序在重启的时候都会被加载到内存里,从而还原你关机前的使用环境。 #### 应用程序 @@ -137,7 +139,7 @@ Porteus 可以提供完整的 Linux 使用体验,却只使用了正常 Linux #### 安装 -[下载 Bodhi Linux][24],通过 **dd** 或者 [Etcher][8] 写入 U盘,然后重启。 +[下载 Bodhi Linux][24],通过 `dd` 或者 [Etcher][8] 写入 U盘,然后重启。 Bodhi 安装器可以在 **设置** 页面的 **应用程序** 菜单里找到。安装程序用的是 **Ubiquity**,所以整个过程和安装 Ubuntu 是一样的。如果你没有安装过 Ubuntu 也不必担心,因为这是最好安装的发行版之一了。 @@ -159,17 +161,17 @@ Bodhi Linux 相比一个标准的 Ubuntu 来说要小不少,但是相比其它 为了保证正常运行,Puppy 会在第一次启动之后引导用户完成必要的设置步骤。整个过程涉及很多个窗口,但是一旦完成,你就会对一切功能了如指掌,然后再决定是否需要安装。 -Puppy 有几乎 300 MB 大小,并且在我测试的 1 GB 内存的机器上并不能正常运行,所以它并不是一个特别微型的 Linux 发行版。尽管如此,它仍然是一个非常棒的 1 GB 以下的操作系统,并且在该类系统里算是非常友好的一个。 +Puppy 几乎有 300 MB 大小,并且在我测试的 1 GB 内存的机器上并不能正常运行,所以它并不是一个特别微型的 Linux 发行版。尽管如此,它仍然是一个非常棒的 1 GB 以下的操作系统,并且在该类系统里算是非常友好的一个。 #### 安装 -[下载 Puppy Linux][29],然后通过 **dd** or [Etcher][8] 写入 U盘,或者是刻录到 CD 或者 DVD 里,然后重启。 +[下载 Puppy Linux][29],然后通过 `dd` 或 [Etcher][8] 写入 U 盘,或者是刻录到 CD 或者 DVD 里,然后重启。 ![Puppy installer][30] Puppy 几乎可以安装在支持任何一种数据格式的载体上。你可以在顶部启动栏里找到 **Puppy Installer** 安装程序,这个程序负责安装 Puppy 以及 Puppy 的应用程序。 -Puppy 安装器会一步步引导你将系统安装在你提供的任何一种媒介上。Puppy 可以从 U盘、光盘、硬盘,或者甚至是 SD 卡上启动。我曾经在一台没有硬盘、光驱出了故障,并且也无法从 USB 启动的计算机上成功运行了 Puppy。由于 Puppy 支持在任何载体上写入你的配置选项,我甚至可以在一个拥有永久数据存储的外部设备上使用它。 +Puppy 安装器会一步步引导你将系统安装在你提供的任何一种媒介上。Puppy 可以从 U盘、光盘、硬盘,或者甚至是 SD 卡上启动。我曾经在一台没有硬盘、光驱出了故障,并且也无法从 USB 启动的计算机上成功运行了 Puppy。由于 Puppy 支持在任何载体上写入你的配置选项,我甚至可以在一个拥有长期数据存储的外部设备上使用它。 #### 应用程序 @@ -183,7 +185,7 @@ Puppy 是最早的微型 Linux。尽管它已经不是最微型的了,却是 ![SilverBlue, not tiny, but tiny-adjacent][32] -微型 Linux 这个概念是随着时间不断变化的。很久以前,微型 Linux 发行版意味着需要下载到 CD-R 里,从光驱启动,然后将修改写入外部媒介中。后来,你可以从 U盘 启动它,并且有专门用来记录永久修改的空间。现在的微型 Linux 不仅支持上面两种方法,还可以被直接安装在内部驱动或者文件夹里。 +微型 Linux 这个概念是随着时间不断变化的。很久以前,微型 Linux 发行版意味着需要下载到 CD-R 里,从光驱启动,然后将修改写入外部媒介中。后来,你可以从 U 盘启动它,并且有专门用来记录永久修改的空间。现在的微型 Linux 不仅支持上面两种方法,还可以被直接安装在内部驱动或者文件夹里。 大家都没有想到 Linux 开创了容器的热潮 —— 容器里应用程序是在半虚拟化的环境中运行的一套独立的 Linux 系统。曾经只是属于喜欢优化硬盘空间或者重新利用老爷机的人们的小众爱好,很快成为了那些想要开发容器但又不想在应用程序上添加太多负载的人的强烈需求。那些在极简化的、不起眼的 Linux 发行版上所付出的辛苦,一夜之间以一种意想不到的方式得到了回报。 @@ -193,7 +195,7 @@ Puppy 是最早的微型 Linux。尽管它已经不是最微型的了,却是 #### 安装 -[下载 Silverblue][34],然后通过 **dd** or [Etcher][8] 写入 U盘,或者是刻录到 CD 或者 DVD 里,然后重启。 +[下载 Silverblue][34],然后通过 `dd` 琥或 [Etcher][8] 写入 U 盘,或者是刻录到 CD 或者 DVD 里,然后重启。 启动到 Silverblue 之后,使用 [Anaconda][35](标准的、友好的 Fedora 安装器)将它安装在一个内部硬盘里。 @@ -201,9 +203,9 @@ Puppy 是最早的微型 Linux。尽管它已经不是最微型的了,却是 #### 应用程序 -Silverblue 安装应用的方式和传统意义上不同:它是在基础操作系统之上运行容器。具体来说,它使用 Flatpaks 运行 GUI 应用程序,使用 [Toolbox][37] 运行命令。 +Silverblue 安装应用的方式和传统意义上不同:它是在基础操作系统之上运行容器。具体来说,它使用 Flatpak 运行 GUI 应用程序,使用 [Toolbox][37] 运行命令。 -由于 Flatpaks 并非像传统的 Fedora RPM 软件包一样常见,Silverblue 也提供了一种可以将 Fedora RPM 软件包转换成 Silverblue 形式的方法:**package layering**。 +由于 Flatpak 并非像传统的 Fedora RPM 软件包一样常见,Silverblue 也提供了一种可以将 Fedora RPM 软件包转换成 Silverblue 形式的方法:**软件包分层**。 #### 结论 @@ -217,7 +219,7 @@ via: https://opensource.com/article/19/6/linux-distros-to-try 作者:[Seth Kenlon][a] 选题:[lujun9972][b] 译者:[chen-ni](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From ef948d70b41ff8e77f06a903ea8132dbd8b704ff Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 12:37:50 +0800 Subject: [PATCH 209/336] PUB:20190625 5 tiny Linux distros to try before you die.md @chen-ni https://linux.cn/article-11040-1.html --- .../20190625 5 tiny Linux distros to try before you die.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190625 5 tiny Linux distros to try before you die.md (99%) diff --git a/translated/tech/20190625 5 tiny Linux distros to try before you die.md b/published/20190625 5 tiny Linux distros to try before you die.md similarity index 99% rename from translated/tech/20190625 5 tiny Linux distros to try before you die.md rename to published/20190625 5 tiny Linux distros to try before you die.md index f6e000a269..1105ff0e52 100644 --- a/translated/tech/20190625 5 tiny Linux distros to try before you die.md +++ b/published/20190625 5 tiny Linux distros to try before you die.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11040-1.html) [#]: subject: (5 tiny Linux distros to try before you die) [#]: via: (https://opensource.com/article/19/6/linux-distros-to-try) [#]: author: (Seth Kenlon https://opensource.com/users/seth/users/marcobravo) From 3085229786c3e06535de5e8973c25897e818b7de Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 12:50:14 +0800 Subject: [PATCH 210/336] PRF:20190531 Use Firefox Send with ffsend in Fedora.md @geekpi --- ... Use Firefox Send with ffsend in Fedora.md | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md b/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md index 87175d5d90..90385fb2fe 100644 --- a/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md +++ b/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Use Firefox Send with ffsend in Fedora) @@ -12,19 +12,19 @@ ![][1] -_ffsend_ 是 Firefox Send 的命令行客户端。本文将展示 Firefox Send 和 _ffsend_ 如何工作。还会详细介绍如何在 Fedora 中安装和使用它。 +`ffsend` 是 Firefox Send 的命令行客户端。本文将展示 Firefox Send 和 `ffsend` 如何工作。还会详细介绍如何在 Fedora 中安装和使用它。 ### 什么是 Firefox Send 和 ffsend? -Firefox Send 是 Mozilla 的一个文件共享工具,它能将加密文件发送给其他用户。你可以在自己的服务器上安装 Send,也可以使用 Mozilla 托管的链接 [send.firefox.com][2]。它最大支持 1GB 的文件,链接会在可配置的下载次数(默认值为 1)或 24 小时后过期,然后会删除发送服务器上的所有文件。此工具仍_处于实验阶段_,因此不应在生产中使用或共享重要或敏感数据。 +Firefox Send 是 Mozilla 的一个文件共享工具,它能将加密文件发送给其他用户。你可以在自己的服务器上安装 Send,也可以使用 Mozilla 托管的链接 [send.firefox.com][2]。它最大支持 1GB 的文件,链接会在可配置的下载次数(默认值为 1)或 24 小时后过期,然后会删除发送服务器上的所有文件。此工具仍*处于实验阶段*,因此不应在生产中使用或共享重要或敏感数据。 -虽然 Firefox Send 本身就是工具,并且可以在 Web 中使用,但 _ffsend_ 是一个可以与脚本和参数一起使用的命令行程序。它有多种配置选项,并且可以在后台工作而无需任何人为干预。 +虽然 Firefox Send 本身就是工具,并且可以在 Web 中使用,但 `ffsend` 是一个可以与脚本和参数一起使用的命令行程序。它有多种配置选项,并且可以在后台工作而无需任何人为干预。 ### 它如何工作? -ffsend 可以上传和下载文件。远程主机可以使用 Firefox 工具或其他 Web 浏览器来下载文件。 Firefox Send 和 _ffsend_ 都不需要使用 Firefox。 +`ffsend` 可以上传和下载文件。远程主机可以使用 Firefox 工具或其他 Web 浏览器来下载文件。 Firefox Send 和 `ffsend` 都不需要使用 Firefox。 -值得一提 _ffsend_ 使用了客户端加密。这意味着文件在上传_前_被加密。链接中就有密钥,因此在共享时要小心,因为任何有链接的人都可以下载该文件。作为额外的保护,你可以使用以下参数使用密码保护文件: +值得一提 `ffsend` 使用了客户端加密。这意味着文件在上传*前*被加密。链接中就有密钥,因此在共享时要小心,因为任何有链接的人都可以下载该文件。作为额外的保护,你可以使用以下参数使用密码保护文件: ``` ffsend password URL -p PASSWORD @@ -34,24 +34,22 @@ ffsend password URL -p PASSWORD 还有一些值得一提的其他功能: - * 链接到期前可配置的下载限制,范围从 1 到 20 次之间 -  * 内置解压和归档功能 -  * 跟踪共享文件的历史记录 -  * 检查或删除共享文件 -  * 文件夹也可以按原样共享,也可以作为压缩文件共享 -  * 生成 QR 码,便于在手机上下载 - - +* 链接到期前可配置的下载限制,范围从 1 到 20 次之间 +* 内置解压和归档功能 +* 跟踪共享文件的历史记录 +* 检查或删除共享文件 +* 文件夹也可以按原样共享,也可以作为压缩文件共享 +* 生成 QR 码,便于在手机上下载 ### 如何在 Fedora 中安装 -虽然 Fedora Send 可以在 Firefox 中使用而无需安装其他,但你需要安装 CLI 工具才能使用 _ffsend_。此工具在官方仓库中,因此你只需使用 _dnf_ 命令,并使用 _[sudo][3]_。 +虽然 Fedora Send 可以在 Firefox 中使用而无需安装其他,但你需要安装 CLI 工具才能使用 `ffsend`。此工具在官方仓库中,因此你只需使用 `dnf` 命令,并使用 [sudo][3]。 ``` $ sudo dnf install ffsend ``` -之后,你可以在终端使用 _ffsend_。 +之后,你可以在终端使用 `ffsend`。 ### 上传文件 @@ -66,7 +64,7 @@ Share link: https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6kuyeBem 现在可以使用 “Share link” URL 轻松共享该文件。 -## 下载文件 +### 下载文件 下载文件和上传一样简单。 @@ -75,7 +73,7 @@ $ ffsend download https://send.firefox.com/download/05826227d70b9a4b/#RM_HSBq6ku Download complete ``` -在下载之前,检查文件是否存在并获取有关它的信息会有用。 _ffsend_ 为此提供了 2 个方便的命令。 +在下载之前,检查文件是否存在并获取有关它的信息会有用。`ffsend` 为此提供了 2 个方便的命令。 ``` $ ffsend exists https://send.firefox.com/download/88a6324e2a99ebb6/#YRJDh8ZDQsnZL2KZIA-PaQ @@ -87,9 +85,9 @@ Downloads: 0 of 1 Expiry: 23h59m (86388s ``` -## 上传历史 +### 上传历史 -_ffsend_ 还提供了一种查看使用工具上传的历史记录的方法。例如,如果你用脚本上传了大量文件并且想要跟踪每个文件的下载状态,那么这非常有用。 +`ffsend` 还提供了一种查看使用工具上传的历史记录的方法。例如,如果你用脚本上传了大量文件并且想要跟踪每个文件的下载状态,那么这非常有用。 ``` $ ffsend history @@ -98,7 +96,7 @@ LINK EXPIRY 2 https://send.firefox.com/download/KZIA-PaQ 23h54m ``` -## 删除文件 +### 删除文件 另一个有用的功能是删除文件。 @@ -106,7 +104,7 @@ LINK EXPIRY ffsend delete https://send.firefox.com/download/2d9faa7f34bb1478/#phITKvaYBjCGSRI8TJ9QNw ``` -Firefox Send 是一项很棒的服务,_ffsend_ 使得它在终端使用起来非常方便。[Gitlab 仓库[4]中有关于 _ffsend_ 的的更多示例和文档。 +Firefox Send 是一项很棒的服务,`ffsend` 使得它在终端使用起来非常方便。[Gitlab 仓库][4]中有关于 `ffsend` 的更多示例和文档。 -------------------------------------------------------------------------------- @@ -115,7 +113,7 @@ via: https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/ 作者:[Sylvia Sánchez][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 50c176db3edf06d7d06a851abb0d0074c4d1f79e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 12:50:49 +0800 Subject: [PATCH 211/336] PUB:20190531 Use Firefox Send with ffsend in Fedora.md @geekpi https://linux.cn/article-11042-1.html --- .../20190531 Use Firefox Send with ffsend in Fedora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190531 Use Firefox Send with ffsend in Fedora.md (98%) diff --git a/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md b/published/20190531 Use Firefox Send with ffsend in Fedora.md similarity index 98% rename from translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md rename to published/20190531 Use Firefox Send with ffsend in Fedora.md index 90385fb2fe..e5c11d0d8d 100644 --- a/translated/tech/20190531 Use Firefox Send with ffsend in Fedora.md +++ b/published/20190531 Use Firefox Send with ffsend in Fedora.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11042-1.html) [#]: subject: (Use Firefox Send with ffsend in Fedora) [#]: via: (https://fedoramagazine.org/use-firefox-send-with-ffsend-in-fedora/) [#]: author: (Sylvia Sánchez https://fedoramagazine.org/author/lailah/) From e1fec066776adfab254998f8dff5c7160001b15a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 17:03:37 +0800 Subject: [PATCH 212/336] PRF:20190621 Three Ways to Lock and Unlock User Account in Linux.md @heguangzhi --- ...o Lock and Unlock User Account in Linux.md | 117 ++++++++---------- 1 file changed, 53 insertions(+), 64 deletions(-) diff --git a/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md index f80cbbd40a..f0e4e8ba94 100644 --- a/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md +++ b/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md @@ -1,33 +1,29 @@ [#]: collector: (lujun9972) [#]: translator: (heguagnzhi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Three Ways to Lock and Unlock User Account in Linux) [#]: via: (https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -在Linux中锁定和解锁用户帐户的三种方法 +在 Linux 中锁定和解锁用户帐户的三种方法 ====== +![](https://linux.cn/article-11043-1.html) -如果密码策略已经在你的组织中实施了,你无需看这篇文章了。 +如果你已经在你的组织中实施了某种密码策略,你无需看这篇文章了。但是在这种情况下,如果你给账户设置了 24 小时的锁定期,你需要手动解锁用户帐户。 -但是在这种情况下,如果你设置了24小时的锁定期,你需要手动解锁用户帐户。 - -本教程将帮助你在Linux中手动锁定和解锁用户帐户。 +本教程将帮助你在 Linux 中手动锁定和解锁用户帐户。 这可以通过三种方式使用以下两个 Linux 命令来完成。 - * **`passwd:`** passwd 命令用于更新用户的身份验证令牌。这个任务是通过调用 Linux-PAM 和 Libuser API 来实现。 - - * **`usermod:`** usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等其他功能, - +* `passwd`:用于更新用户的身份验证令牌。这个任务是通过调用 Linux PAM 和 libuser API 来实现。 +* `usermod`:用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中等等功能。 为了说明这一点,我们选择 `daygeek` 用户帐户。让我们看看,怎么一步步来实现的。 -请注意,你必须使用你需要锁定或解锁的用户的帐户,而不是我们自己的帐户。 -您可以使用 `id Command` 检查给定的用户帐户在系统中是否可用。是的,我的帐户在系统中是可用的。 + +请注意,你必须使用你需要锁定或解锁的用户的帐户,而不是我们的帐户。你可以使用 `id` 命令检查给定的用户帐户在系统中是否可用。是的,我的这个帐户在我的系统中是可用的。 ``` # id daygeek @@ -37,11 +33,9 @@ uid=2240(daygeek) gid=2243(daygeek) groups=2243(daygeek),2244(ladmin) ### 方法1: 如何使用 passwd 命令锁定、解锁和检查 Linux 中给定用户帐户的状态? -passwd 命令是 Linux 管理员经常使用的命令之一。 +`passwd` 命令是 Linux 管理员经常使用的命令之一。它用于更新 `/etc/shadow` 文件中用户的身份验证令牌。 -它用于更新 `/etc/shadow` 文件中用户的身份验证令牌。 - -使用 `-l` 开关运行 passwd 命令,锁定给定的用户帐户。 +使用 `-l` 开关运行 `passwd` 命令,锁定给定的用户帐户。 ``` # passwd -l daygeek @@ -50,22 +44,23 @@ Locking password for user daygeek. passwd: Success ``` -你可以通过 passwd 命令或从 /etc/shadow 文件中获取给定用户名来检查锁定的帐户状态。 +你可以通过 `passwd` 命令或从 `/etc/shadow` 文件中获取给定用户名来检查锁定的帐户状态。 -使用 passwd 命令检查用户帐户锁定状态。 +使用 `passwd` 命令检查用户帐户锁定状态。 ``` # passwd -S daygeek -or +或 # passwd --status daygeek daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) ``` -将输出给定帐户密码状态的简短信息。 - * **`LK:`**` ` 密码锁定 - * **`NP:`**` ` 没有密码 - * **`PS:`**` ` 密码设置 +这将输出给定帐户密码状态的简短信息。 + +* `LK`:密码被锁定 +* `NP`:没有设置密码 +* `PS`:密码已设置 使用 `/etc/shadow` 文件检查锁定的用户帐户状态。如果帐户已被锁定,密码前面将添加两个感叹号。 @@ -74,7 +69,8 @@ daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: ``` -使用 `-u` 开关运行 passwd 命令,解锁给定的用户帐户。 + +使用 `-u` 开关运行 `passwd` 命令,可以解锁给定的用户帐户。 ``` # passwd -u daygeek @@ -83,26 +79,25 @@ Unlocking password for user daygeek. passwd: Success ``` -### 方法2:如何使用 usermod 命令在 Linux 中锁定、解锁和检查给定用户帐户的状态? +### 方法2:如何使用 usermod 命令在 Linux 中锁定、解锁和检查给定用户帐户的状态? -甚至,usermod 命令也经常被 Linux 管理员使用。 +`usermod` 命令也经常被 Linux 管理员使用。`usermod` 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。 -usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。, - -使用 `-L` 开关运行 usermod 命令,锁定给定的用户帐户。 +使用 `-L` 开关运行 `usermod` 命令,锁定给定的用户帐户。 ``` # usermod --lock daygeek -or +或 # usermod -L daygeek ``` -你可以通过 passwd 命令或从 /etc/shadow 文件中获取给定用户名来检查锁定的帐户状态。 -使用 passwd 命令检查用户帐户锁定状态。 +你可以通过 `passwd` 命令或从 `/etc/shadow` 文件中获取给定用户名来检查锁定的帐户状态。 + +使用 `passwd` 命令检查用户帐户锁定状态。 ``` # passwd -S daygeek -or +或 # passwd --status daygeek daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) @@ -110,11 +105,11 @@ daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) 这将输出给定帐户密码状态的简短信息。 - * **`LK:`**` ` Password locked - * **`NP:`**` ` No password - * **`PS:`**` ` Password set +* `LK`:密码被锁定 +* `NP`:没有设置密码 +* `PS`:密码已设置 -使用 /etc/shadow 文件检查锁定的用户帐户状态。如果帐户已被锁定,密码前面将添加两个感叹号。 +使用 `/etc/shadow` 文件检查锁定的用户帐户状态。如果帐户已被锁定,密码前面将添加两个感叹号。 ``` # grep daygeek /etc/shadow @@ -122,29 +117,25 @@ daygeek LK 2019-05-30 7 90 7 -1 (Password locked.) daygeek:!!$6$tGvVUhEY$PIkpI43HPaEoRrNJSRpM3H0YWOsqTqXCxtER6rak5PMaAoyQohrXNB0YoFCmAuh406n8XOvBBldvMy9trmIV00:18047:7:90:7::: ``` -使用 `-U` 开关运行 usermod 命令以解锁给定的用户帐户。 +使用 `-U` 开关运行 `usermod` 命令以解锁给定的用户帐户。 ``` # usermod --unlock daygeek -or +或 # usermod -U daygeek ``` -###方法-3:如何在 Linux 中使用 usermod 命令禁用、启用对给定用户帐户的 SSH 访问? +### 方法-3:如何在 Linux 中使用 usermod 命令禁用、启用对给定用户帐户的 SSH 访问? -甚至,usermod 命令也是经常被 Linux 管理员使用的命令。 +`usermod` 命令也是经常被 Linux 管理员使用的命令。`usermod` 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。 -usermod 命令用于修改/更新给定用户的帐户信息。它用于将用户添加到特定的组中,等等。, - - -或者,这可以通过将 `nologin` shell 分配给给定用户来完成。为此,可以运行以下命令。 +替代的,锁定可以通过将 `nologin` shell 分配给给定用户来完成。为此,可以运行以下命令。 ``` # usermod -s /sbin/nologin daygeek ``` -You can check the locked user account details by greping the given user name from /etc/passwd file. -你可以通过从 /etc/passwd 文件中给定用户名来检查锁定的用户帐户详细信息。 +你可以通过从 `/etc/passwd` 文件中给定用户名来检查锁定的用户帐户详细信息。 ``` # grep daygeek /etc/passwd @@ -152,17 +143,15 @@ You can check the locked user account details by greping the given user name fro daygeek:x:2240:2243::/home/daygeek:/sbin/nologin ``` -我们可以通过分配回原来的 shell 来启用用户 ssh 访问。 +我们可以通过分配回原来的 shell 来启用用户的 ssh 访问。 ``` # usermod -s /bin/bash daygeek ``` -###如何使用 shell 脚本锁定、解锁和检查 Linux 中多个用户帐户的状态? - -如果你想锁定/解锁多个帐户,那么你需要寻找脚本。 - +### 如何使用 shell 脚本锁定、解锁和检查 Linux 中多个用户帐户的状态? +如果你想锁定/解锁多个帐户,那么你需要找个脚本。 是的,我们可以编写一个小的 shell 脚本来执行这个操作。为此,请使用以下 shell 脚本。 @@ -186,17 +175,17 @@ u5 #!/bin/bash for user in `cat user-lists.txt` do -passwd -l $user + passwd -l $user done ``` -将`user-lock.sh` 文件设置为可执行权限 。 +将 `user-lock.sh` 文件设置为可执行权限。 ``` # chmod + user-lock.sh ``` -最后运行脚本来实现这一点。 +最后运行脚本来达成目标。 ``` # sh user-lock.sh @@ -221,7 +210,7 @@ passwd: Success #!/bin/bash for user in `cat user-lists.txt` do -passwd -S $user + passwd -S $user done ``` @@ -231,7 +220,7 @@ done # chmod + user-lock-status.sh ``` -最后运行脚本来实现这一点。 +最后运行脚本来达成目标。 ``` # sh user-lock-status.sh @@ -243,7 +232,6 @@ u4 LK 2019-06-10 0 99999 7 -1 (Password locked.) u5 LK 2019-06-10 0 99999 7 -1 (Password locked.) ``` - 使用下面的 shell 脚本来解锁多个用户。 ``` @@ -252,17 +240,17 @@ u5 LK 2019-06-10 0 99999 7 -1 (Password locked.) #!/bin/bash for user in `cat user-lists.txt` do -passwd -u $user + passwd -u $user done ``` -设置 `user-unlock.sh` 可执行权限。 +设置 `user-unlock.sh` 可执行权限。 ``` # chmod + user-unlock.sh ``` -最后运行脚本来实现这一点。 +最后运行脚本来达成目标。 ``` # sh user-unlock.sh @@ -279,7 +267,7 @@ Unlocking password for user u5. passwd: Success ``` -运行相同的 shell 脚本 `user-lock-status.sh` ,检查这些锁定的用户帐户在 Linux 中是否被解锁。 +运行相同的 shell 脚本 `user-lock-status.sh`,检查这些锁定的用户帐户在 Linux 中是否被解锁。 ``` # sh user-lock-status.sh @@ -290,6 +278,7 @@ u3 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) u4 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) u5 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.) ``` + -------------------------------------------------------------------------------- via: https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/ @@ -297,7 +286,7 @@ via: https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/ 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] 译者:[heguangzhi](https://github.com/heguangzhi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From ab3e54720bb07e0e3ae358e6f634767968927bde Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 17:04:07 +0800 Subject: [PATCH 213/336] PUB:20190621 Three Ways to Lock and Unlock User Account in Linux.md @heguangzhi https://linux.cn/article-11043-1.html --- ...621 Three Ways to Lock and Unlock User Account in Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190621 Three Ways to Lock and Unlock User Account in Linux.md (99%) diff --git a/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md b/published/20190621 Three Ways to Lock and Unlock User Account in Linux.md similarity index 99% rename from translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md rename to published/20190621 Three Ways to Lock and Unlock User Account in Linux.md index f0e4e8ba94..870285a844 100644 --- a/translated/tech/20190621 Three Ways to Lock and Unlock User Account in Linux.md +++ b/published/20190621 Three Ways to Lock and Unlock User Account in Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (heguagnzhi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11043-1.html) [#]: subject: (Three Ways to Lock and Unlock User Account in Linux) [#]: via: (https://www.2daygeek.com/lock-unlock-disable-enable-user-account-linux/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From 46e584364e688a8c68ddbfdc091cffa09f1e6d6a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 17:40:11 +0800 Subject: [PATCH 214/336] PRF:20180629 100 Best Ubuntu Apps.md PART 3 --- .../tech/20180629 100 Best Ubuntu Apps.md | 63 ++++++++++--------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index c1e54b5d6b..51c14581b1 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -365,7 +365,7 @@ Shutter 是一个功能强大的截图工具,提供了添加截图效果、画 ### 33、Weather -Weather 是一个小的应用,给你关于你的城市或世界上其它位置的实时天气信息。它简单而且轻量级,可以给你最多 7 天的详细天气预报和今明两天的每个小时的细节信息。 +Weather 是一个小的应用,可以给你关于你的城市或世界上其它位置的实时天气信息。它简单而且轻量级,可以给你最多 7 天的详细天气预报和今明两天的每个小时的细节信息。 ![][38] @@ -373,15 +373,15 @@ Weather 是一个小的应用,给你关于你的城市或世界上其它位置 ### 34、Ramme -Ramme 是一个很酷的非官方的 Instagram 桌面客户端,给你带来 Instagram 移动端的感觉。它是基于 Electron 的客户端,所以它替代了 Instagram 应用提供了主题自定义的功能。 +Ramme 是一个很酷的非官方的 Instagram 桌面客户端,给你带来 Instagram 移动端的感觉。它是基于 Electron 开发的客户端,所以它复现了 Instagram 应用的功能,并提供了主题自定义的功能。 ![][39] -但是由于 Instagram 的 API 限制,你不能使用 Ramme 客户端上传图像,但你总是可以通过订阅 Instagram,喜欢和评论,给好友发消息。你可以从 [Github]][40] 下载 Ramme 安装文件。 +但是由于 Instagram 的 API 限制,你不能使用 Ramme 客户端上传图像,但你可以订阅 Instagram 流、喜欢和评论文章,给好友发消息。你可以从 [Github][40] 下载 Ramme 安装文件。 ### 35、Thunderbird -Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默认邮件客户端。尽管在 2017 年与 Mozilla 分离,Thunderbird 仍然是 Linux 平台非常流行的最好的邮件客户端。它自带特点像垃圾短信过滤,IMAP 和 POP 邮件同步,日历支持,通讯录集成和很多其它特定。 +Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默认邮件客户端。尽管在 2017 年与 Mozilla 分离,Thunderbird 仍然是 Linux 平台非常流行的最好的邮件客户端。它自带的功能包括垃圾邮件过滤、IMAP 和 POP 邮件同步、日历支持、通讯录集成和很多其它可以开箱即用的功能。 ![][41] @@ -389,11 +389,11 @@ Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默 ### 36、Pidgin -Pidgin 是一个即时信息客户端,你能够在单个窗口下登录不同的即时网络。你可以登录到像 Google Talk,XMPP,AIM,Bonjour 等。 +Pidgin 是一个即时信息客户端,你能够在单个窗口下登录不同的即时网络。你可以登录到像 Google Talk、XMPP、AIM、Bonjour 等。 ![][42] -Pidgin 拥有所有你期待的即时通信的特点,你总是可以通过安装额外的插件来提升它的性能。 +Pidgin 拥有你期待的即时通信的所有特点,你总是可以通过安装额外的插件来提升其表现。 ``` $ sudo apt-get install pidgin @@ -401,18 +401,19 @@ $ sudo apt-get install pidgin ### 37、Krita -Krita 是由 KDE 开发的自由开源的数字打印,编辑和动画应用。它有优秀的用户界面,每个组件都放的很完美,因此你可以找到你需要的。 +Krita 是由 KDE 开发的自由开源的数字绘制、编辑和动画应用。它有优秀的用户界面,每个组件都恰到好处,因此你可以轻松找到你所需要的。 ![][43] -它使用 OpenGL 画布,这提升了 Krita 的性能,并且提供了很多特点相不同的绘画工具、动画工具、矢量工具、层、罩等很多。可在 Ubuntu 软件中心获取 Krita 并下载。 +它使用 OpenGL 画布,这提升了 Krita 的性能,并且提供了很多功能,如各种绘画工具、动画工具、矢量工具、层和遮罩等很多。可在 Ubuntu 软件中心获取 Krita 并下载。 ### 38、Dropbox -Dropbox 是一个出色的云存储播放器,一旦安装,它在 Ubuntu 中运行得非常好。即使 Google Drive 在 Ubuntu 16.04 LTS 和以后的版本中运行得不错,就 Dropbox 提供的特点而言,Dropbox 仍然是 Linux 上的首选云存储工具。 +Dropbox 是一个出色的云存储客户端,正确安装后,它在 Ubuntu 中运行得非常好。即使 Google Drive 在 Ubuntu 16.04 LTS 和以后的版本中运行得不错,就 Dropbox 提供的特点而言,Dropbox 仍然是 Linux 上的首选云存储工具。 ![][44] -它总是在后台运行,备份你系统上的新文件到云存储,持续在你的电脑和云存储间同步。 + +它总是在后台运行,备份你系统上的新文件到云存储,持续保持你的电脑和云存储间的同步。 ``` $ sudo apt-get install nautilus-dropbox @@ -420,43 +421,43 @@ $ sudo apt-get install nautilus-dropbox ### 39、Kodi -Kodi 的前身是人们熟知的 Xbox 媒体中心(XBMC),是一个开源的媒体播放器。你可以在线或离线播放音乐、视频、播客、视频游戏等。这个软件最初是为第一代的 Xbox 游戏控制台开发的,之后慢慢地面向了个人电脑。 +Kodi 的前身是人们熟知的 Xbox 媒体中心(XBMC),是一个开源的媒体播放器。你可以在线或离线播放音乐、视频、播客、视频游戏等。这个软件最初是为第一代的 Xbox 游戏主机开发的,之后慢慢地移植到了个人电脑上。 ![][45] -Kodi 有令人印象深刻的视频接口,快速而强大。它是可高度定制的媒体播放器,你可以通过安装插件,来获取在线流服务像 Pandora、 Spotify、Amazon Prime Video、Netflix and YouTube。 +Kodi 有令人印象深刻的视频接口,快速而强大。它是可高度定制的媒体播放器,你可以通过安装插件,来获取在线流服务,如 Pandora、Spotify、Amazon Prime Video、Netflix 和 YouTube 等等。 ### 40、Spotify -Spotify 是最好的在线媒体流站点之一。它提供免费和付费音乐、播客、视频流服务。早期的 Spotify 不支持 Linux,但现在它有全功能的 Ubuntu 客户端。 +Spotify 是最好的在线媒体流站点之一。它提供免费和付费的音乐、播客、视频流服务。早期的 Spotify 不支持 Linux,但现在它有了自己的全功能的 Ubuntu 客户端。 ![][46] - 与 Google Play 音乐播放器一样,Spotify 是必不可少的媒体播放器。你只需要登录你的 Spotify 账户,就能在任何地方获取你最爱的在线内容。 +与 Google Play 音乐播放器一样,Spotify 是必不可少的媒体播放器。你只需要登录你的 Spotify 账户,就能在任何地方获取你最爱的在线内容。 ### 41、Brackets -Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来进行 web 开发和设计,例如 HTML,CSS 和 JavaScript。它随改变实时预览是一个很棒的特点,当你在脚本中修改时,你可以获得实时预览效果。 +Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来进行 web 开发和设计,例如 HTML、CSS 和 JavaScript。它带有的实时预览模式是一个很棒的特点,当你在脚本中修改时,你可以获得实时预览效果。 ![][47] -它是 Ubuntu 上的现代文本编辑器之一,拥有平滑的用户界面,这将 web 开发任务带到新的水平。它同样提供行内编辑器的特点,支持流行的扩展像 Emmet、Beautify、Git、File Icons 等等。 +它是 Ubuntu 上的现代文本编辑器之一,拥有平滑的用户界面,这将 web 开发任务带到新的水平。它同样提供了行内编辑器的特点,支持流行的扩展像 Emmet、Beautify、Git、File Icons 等等。 ### 42、Bitwarden -现今,安全问题事件增加,用户密码被盗后,重要的数据受到连累,因此,账户安全性必须严肃对待。推荐你使用 Bitwarden,将你的所有账户和登录密码安全的存在一个地方。 +现今,安全问题事件增加,用户密码被盗后,重要的数据受到连累,因此,账户安全性必须严肃对待。推荐你使用 Bitwarden,将你的所有账户和登录密码安全地存在一个地方。 ![][48] -Bitwarden 使用 AES-256 加密技术来存储所有的登录细节,只有用户可以访问这些数据。它同样帮你创建健壮的密码,因为弱密码容易被黑。 +Bitwarden 使用 AES-256 加密技术来存储所有的登录细节,只有用户可以访问这些数据。它同样可以帮你创建健壮的密码,因为弱密码容易被黑。 ### 43、Terminator -Terminator 是一个开源终端模拟器,用 Java 语言开发的。它是一个跨平台的模拟器,允许你在单个窗口有多个终端,在 Linux 默认的终端模拟器中不是这样。 +Terminator 是一个开源终端模拟器,是用 Java 语言开发的。它是一个跨平台的模拟器,允许你在单个窗口有多个终端,在 Linux 默认的终端模拟器中不是这样。 ![][49] -Terminator 其它杰出的特点包括自动日志、拖、丢、智能垂直和水平滚动等。 +Terminator 其它杰出的特点包括自动日志、拖放、垂直和水平的智能滚动等。 ``` $ sudo apt-get install terminator @@ -464,11 +465,11 @@ $ sudo apt-get install terminator ### 44、Yak Yak -Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端。它可能是一个不错的 Microsort 的 Skype 的替代品,自身拥有很多让人吃惊的特点。你可以允许桌面通知,语言偏好,工作在最小内存或电源需求等。 +Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端。它可能是一个不错的 Microsort 的 Skype 的替代品,自身拥有很多让人吃惊的特点。你可以启用桌面通知,设置语言偏好,使用最小内存或功率就可以工作等。 ![][50] -Yak Yak 拥有你期待的所有任何即时消息应用的所有特点,例如类型指示、拖、拽媒体文件,音/视频电话。 +Yak Yak 拥有你期待的所有任何即时消息应用的所有特点,例如输入指示、拖放媒体文件、音/视频电话。 ### 45、Thonny @@ -476,27 +477,29 @@ Thonny 是一个简单和轻量级的 IDE,尤其是为编程的初学者设计 ![][51] -Thonny 同样是一个很棒的调试工具,它支持调试过程中的活变量,除此之外,它还提供了执行函数调用是分离窗口、简易用户界面的特点。 +Thonny 同样是一个很棒的调试工具,它支持调试过程中的即时变量值显示,除此之外,它还提供了独立的窗口以执行函数调用,简易的用户界面的特点。 ``` $ sudo apt-get install thonny ``` -### 46、Font Manager +### 46、字体管理器 -Font Manager 是一个轻量级的工具,用于管理、添加、移除你的 Ubuntu 系统上的字体。尤其是为 Gnome 桌面环境构建的,当用户不知道如何在命令行管理字体的会发现这个工具非常有用。 +字体管理器是一个轻量级的工具,用于管理、添加、移除你的 Ubuntu 系统上的字体。它是特别为 Gnome 桌面环境构建的,在用户不知道如何在命令行管理字体时会发现这个工具非常有用。 ![][52] -Gtk+ Font Manager 不是为专业用户准备的,它有简单的用户界面,你会发现很容易导航。你只需要从网上下载字体文件,并使用 Font Manager 添加它们。 +Gtk+ 字体管理器不是为专业用户准备的,它有简单的用户界面,你会发现很容易使用。你只需要从网上下载字体文件,并使用字体管理器添加它们。 +``` $ sudo add-apt-repository ppa:font-manager/staging $ sudo apt-get update $ sudo apt-get install font-manager +``` -### 47、Atril Document Viewer +### 47、Atril 文档查看器 -Atril 是一个简单的文件查看器,支持便携文件格式(PDF)、PostScript(PS)、Encapsulated PostScript(EPS)、DJVU 和 DVI。Atril 绑定在 MATE 桌面环境中,它比大多数 Linux 发行版中默认的文件查看器 Evince 更理想。 +Atril 是一个简单的文件查看器,支持便携文件格式(PDF)、PostScript(PS)、Encapsulated PostScript(EPS)、DJVU 和 DVI。Atril 与 MATE 桌面环境捆绑在一起,它比大多数 Linux 发行版中默认的文件查看器 Evince 更理想。 ![][53] @@ -508,7 +511,7 @@ $ sudo apt-get install atril ### 48、Notepadqq -如果你曾在 Windows 上用过 Notepad++,并且在 Linux 上寻找相似的程序,别担心,开发者们已经将它移植到 Linux,叫 Notepadqq。它是一个简单且强大的文本编辑器,你可以在日常生活中用它完成各种语言的任务。 +如果你曾在 Windows 上用过 Notepad++,并且想在 Linux 上寻找相似的程序,别担心,开发者们已经将它移植到 Linux,叫 Notepadqq。它是一个简单且强大的文本编辑器,你可以在日常生活中用它,或用各种语言编程。 ![][54] @@ -526,7 +529,7 @@ Amarok 是在 KDE 项目下开发的一个开源音乐播放器。它有直观 ![][55] -Amarok 上的一些顶尖的特点包括智能播放列表支持,集成在线服务像 MP3tunes、Last.fm、 Magnatune 等。 +Amarok 上的一些顶尖的特点,包括智能播放列表支持,集成在线服务像 MP3tunes、Last.fm、 Magnatune 等。 ### 50、Cheese From 3e7e05871ae6ec0deb37bd144390785672d3bebb Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 1 Jul 2019 18:14:05 +0800 Subject: [PATCH 215/336] PRF:20180629 100 Best Ubuntu Apps.md PART 4 --- .../tech/20180629 100 Best Ubuntu Apps.md | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index 51c14581b1..9f55121d87 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -541,11 +541,11 @@ Cheese 是 Linux 默认的网络摄像头应用,在视频聊天或即时消息 ### 51、MyPaint -MyPaint 是一个自由开源的光栅图形编辑器,关注于数字绘画而不是图像操作和相片处理。它是跨平台的应用,与 Corel Painter 很相似。 +MyPaint 是一个自由开源的光栅图形编辑器,专于数字绘画而不是图像操作和相片处理。它是跨平台的应用,与 Corel Painter 很相似。 ![][57] -MyPaint 可能是 Windows 上的 Microsoft Paint 应用的很好的替代。它有简单的用户界面,快速而强大。MyPaint 可以软件中心下载。 +MyPaint 可能是 Windows 上的 Microsoft Paint 应用的很好的替代品。它有简单的用户界面,快速而强大。MyPaint 可以软件中心下载。 ### 52、PlayOnLinux @@ -555,13 +555,13 @@ PlayOnLinux 是 WINE 模拟器的前端,允许你在 Linux 上运行 Windows ### 53、Akregator -Akregator 是在 KDE 项目下为 KDE Plasma 环境开发的默认的 RSS 阅读器。它有简单的用户界面,自带了 KDE 的 Konqueror 浏览器,所以你不需要在阅读新闻提要时切换应用。 +Akregator 是在 KDE 项目下为 KDE Plasma 环境开发的默认 RSS 阅读器。它有简单的用户界面,自带了 KDE 的 Konqueror 浏览器,所以你不需要在阅读新闻提要时切换应用。 -Akregator 同样提供了桌面通知、自动提要等功能。你会发现在大多数 Linux 发行版中它是最好的提要阅读器。 +Akregator 同样提供了桌面通知、自动摘要等功能。你会发现在大多数 Linux 发行版中它是最好的提要阅读器。 ### 54、Brave -Brave 是一个开源的 web 浏览器,阻挡了广告和追踪,所以你可以快速和安全的浏览你的内容。它实际做的是代表你像网站和油管主播支付了费用。如果你喜欢像网站和和油管主播共享而不是看广告,这个浏览器更适合你。 +Brave 是一个开源的 web 浏览器,拦截了广告和追踪,所以你可以快速和安全的浏览你的内容。它实际做的是代表你向网站和油管主播支付了费用。如果你宁可向网站和和油管主播做出支持而不是看广告,这个浏览器更适合你。 ![][60] @@ -569,11 +569,11 @@ Brave 是一个开源的 web 浏览器,阻挡了广告和追踪,所以你可 ### 55、Bitcoin Core -Bitcoin Core 是一个官方的客户端,非常安全和可靠。它持续追踪你的所有交易以保证你的所有交易都是有效的。它限制比特币矿工和银行完全掌控你的比特币钱包。 +Bitcoin Core 是一个比特币官方的客户端,非常安全和可靠。它持续追踪你的所有比特币交易以保证你的所有交易都是有效的。它可以防止比特币矿工和银行完全掌控你的比特币钱包。 ![][61] -Bitcoin Core 同样提供了其它重要的特点像私钥备份、冷存储、安全通知等。 +Bitcoin Core 同样提供了其它重要的特点,像私钥备份、冷存储、安全通知等。 ``` $ sudo add-apt-repository ppa:bitcoin/bitcoin @@ -581,9 +581,9 @@ $ sudo apt-get update $ sudo apt-get install bitcoin-qt ``` -### 56、Speedy Duplicate Finder +### 56、Speedy 重复查找工具 -Speedy Duplicate Finder 是一个跨平台的文件查找工具,用来帮助你查找你的系统上的重复文件,清理磁盘空间。它是一个智能工具,在整个硬盘上搜索重复文件,同样提供智能过滤功能,根据文件类型、扩展或大小帮你找到文件。 +Speedy 重复查找工具是一个跨平台的文件查找工具,用来帮助你查找你的系统上的重复文件,清理磁盘空间。它是一个智能工具,在整个硬盘上搜索重复文件,同样提供智能过滤功能,根据文件类型、扩展或大小帮你找到文件。 ![][62] @@ -591,15 +591,15 @@ Speedy Duplicate Finder 是一个跨平台的文件查找工具,用来帮助 ### 57、Zulip -Zulip 是一个自由开源的群聊应用,被 Dropbox 获得了。它是用 Python 写的,用 PostgreSQL 数据库。它被设计和开发为其它聊天应用像 Slack 和 HipChat 的好的替代品。 +Zulip 是一个自由开源的群聊应用,被 Dropbox 收购了。它是用 Python 写的,用 PostgreSQL 数据库。它被设计和开发为其它如 Slack 和 HipChat 的聊天应用的替代品。 ![][63] -Zulip 功能丰富,例如拖拽文件、群聊、私密聊天、图像预览等。它供养集成了 Github、JIRA、Sentry 和上百种其它服务。 +Zulip 功能丰富,支持例如拖放文件、群聊、私密聊天、图像预览等。它也集成了 Github、JIRA、Sentry 和上百种其它服务。 ### 58、Okular -Okular 是 KDE 为 KDE 桌面环境开发的跨平台的文件查看器。它是一个简单的文件查看器,支持 Portable Document Format (PDF), PostScript, DjVu, Microsoft Compiled HTML help 和很多其它文件格式。 +Okular 是为 KDE 桌面环境开发的跨平台的文件查看器。它是一个简单的文件查看器,支持 Portable Document Format (PDF)、PostScript、DjVu、Microsoft Compiled HTML help 和很多其它文件格式。 ![][64] @@ -607,30 +607,31 @@ Okular 是在 Ubuntu 上你应该尝试的最好的文件查看器之一,它 ### 59、FocusWriter -FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面屏幕,因此你能够专注写作。正如你看到的屏幕截图,整个 Ubuntu 屏被隐藏了,只有你和你的字处理工具。但你总是可以进入 Ubuntu 屏幕,当你需要的时候,只需要将光标移动到屏幕的边缘。 +FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面屏幕,因此你能够专注写作。正如你看到的屏幕截图,整个 Ubuntu 屏幕被隐藏了,只有你和你的字处理工具。但你总是可以进入 Ubuntu 屏幕,当你需要的时候,只需要将光标移动到屏幕的边缘。 ![][65] -它是一个轻量级的字处理其,支持 TXT、RTF、ODT 文件格式。它同样提供可完全定制的用户界面,还有定时器、警报、每日目标、声音效果等特点,支持翻译为 20 种语言。 +它是一个轻量级的字处理器,支持 TXT、RTF、ODT 文件格式。它同样提供了可完全定制的用户界面,还有定时器、警报、每日目标、声音效果等特点,已经被翻译为 20 种语言。 ### 60、Guake -Guake 是为 GNOME 桌面环境准备的酷炫的下拉式终端。当你任务完成后,你需要它消失时, Guake 会闪一下。你只需要按 F12 按钮来启动或退出,这样启动 Guake 币启动一个新的终端窗口更快。 +Guake 是为 GNOME 桌面环境准备的酷炫的下拉式终端。当你需要时,Guake 就会闪现,当你任务完成后,它就会消失。你只需要按 F12 按钮来启动或退出,这样启动 Guake 比启动一个新的终端窗口更快。 ![][66] -Guake 是一个特点丰富的终端,支持多栏,只需要点击几下就能将你的终端内容保存到文件,并且有完全可定制的用户界面。 +Guake 是一个功能丰富的终端,支持多栏,只需要点击几下就能将你的终端内容保存到文件,并且有完全可定制的用户界面。 ``` $ sudo apt-get install guake ``` + ### 61、KDE Connect -KDE Connect 在 Ubuntu 上是一个很棒的应用,我很想在这篇马拉松文章中将它提早列出来,但是竞争激烈。总之 KDE Connect 可以将你的 Android 智能手机的通知直接转到 Ubuntu 桌面来。 +KDE Connect 是 Ubuntu 上的一个很棒的应用,我很想在这篇马拉松文章中将它提早列出来,但是竞争太激烈。总之 KDE Connect 可以将你的 Android 智能手机的通知直接转到 Ubuntu 桌面来。 ![][67] -有了 KDE Connect,你可以做很多事,例如检查手机电池水平,在电脑和 Android 手机间交换文件,剪贴板同步,发送短信,你还可以将你的手机当作无线鼠标或键盘。 +有了 KDE Connect,你可以做很多事,例如检查手机电池电量,在电脑和 Android 手机间交换文件,剪贴板同步,发送短信,你还可以将你的手机当作无线鼠标或键盘。 ``` $ sudo add-apt-repository ppa:webupd8team/indicator-kedeconnect @@ -640,11 +641,11 @@ $ sudo apt-get install kdeconnect indicator-kdeconnect ### 62、CopyQ -CopyQ 是一个简单但是非常有用的剪切板管理器,它保存你的系统剪切板内容,无论你做了什么改变,你都可以在你需要的时候恢复它。它是一个很棒的工具,支持文本、图像、HTML、和其它格式。 +CopyQ 是一个简单但是非常有用的剪贴板管理器,它保存你的系统剪贴板内容,无论你做了什么改变,你都可以在你需要的时候恢复它。它是一个很棒的工具,支持文本、图像、HTML 和其它格式。 ![][68] -CopyQ 自身有很多功能像拖拽、复制/拷贝、编辑、移除、排序、创建等。它同样支持集成文本编辑器,像 Vim,所以如果你是程序员,这非常有用。 +CopyQ 自身有很多功能像拖放、复制/拷贝、编辑、移除、排序、创建等。它同样支持集成文本编辑器,如 Vim,所以如果你是程序员,这非常有用。 ``` $ sudo add-apt-repository ppa:hluk/copyq @@ -654,11 +655,11 @@ $ sudo apt-get install copyq ### 63、Tilix -Tilix 是一个功能丰富的高级 GTX3 瓷砖终端模拟器。如果你使用 GNOME 桌面环境,那你会爱上 Tilix,因为它遵循了 GNOME 人类界面指导。Tilix 模拟器与大多数 Linux 发行版上默认终端模拟器相比,它给了你分离终端窗口为多个终端面板。 +Tilix 是一个功能丰富的高级 GTX3 平铺式终端模拟器。如果你使用 GNOME 桌面环境,那你会爱上 Tilix,因为它遵循了 GNOME 用户界面指导。Tilix 模拟器与大多数 Linux 发行版上默认终端模拟器相比,它给了你切分终端窗口为多个终端面板的功能。 ![][69] -Tilix 提供了自定义链接、图片支持、多面板、拖拽、持续布局等功能。它同样支持键盘快捷方式,你可以根据你的需要在偏好设置中自定义快捷方式。 +Tilix 提供了自定义链接、图片支持、多面板、拖放、固定布局等功能。它同样支持键盘快捷方式,你可以根据你的需要在偏好设置中自定义快捷方式。 ``` $ sudo add-apt-repository ppa:webupd8team/terminix @@ -668,7 +669,7 @@ $ sudo apt-get install tilix ### 64、Anbox -Anbox 是一个 Android 模拟器,让你在 Linux 系统中安装和运行 Android 应用。它是自由开源的 Android 模拟器,通过使用 Linux 容器来执行 Android 运行时环境。它使用最新的 Linux 技术 和 Android 发布版,所以你可以运行任何原生的 Android 应用。 +Anbox 是一个 Android 模拟器,可以让你在 Linux 系统中安装和运行 Android 应用。它是自由开源的 Android 模拟器,通过使用 Linux 容器来执行 Android 运行时环境。它使用最新的 Linux 技术 和 Android 发布版,所以你可以运行任何原生的 Android 应用。 ![][70] @@ -685,11 +686,11 @@ $ snap install --devmode -- beta anbox ### 65、OpenShot -你会发现 OpenShot 是 Linux 发行版中最好的开源视频编辑器。它是跨平台的视频编辑器,易于使用,不在性能方面妥协。它支持所有主流的音频、视频、图像格式。 +你会发现 OpenShot 是 Linux 发行版中最好的开源视频编辑器。它是跨平台的视频编辑器,易于使用,性能方面毫不逊色。它支持所有主流的音频、视频、图像格式。 ![][71] -OpenShot 有干净的用户界面,功能有拖拽、裁剪大小调整、大小调整、裁剪、快照、实时预览、音频混合和编辑等多种功能。 +OpenShot 有干净的用户界面,功能有拖放、片段大小、大小缩放、裁剪、快照、实时预览、音频混合和编辑等多种功能。 ``` $ sudo add-apt-repository ppa:openshot.developers/ppa @@ -703,8 +704,7 @@ $ sudo apt-get install openshot -qt ![][72] -尽管是一个简单的导航栏,Plank 提供了通过拖拽来重新安排的功能,固定和运行应用图标,转换主题支持。 - +尽管是一个简单的导航栏,Plank 提供了通过拖放来重新摆放的功能,固定和运行应用图标,转换主题支持。 ``` $ sudo add-apt-repository ppa:ricotz/docky @@ -718,7 +718,7 @@ Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端 ![][73] -它是一个简单的文件传输应用,支持拖拽,支持世界范围的各种语言,多任务的强大用户界面,控制和配置传输速度。 +它是一个简单的文件传输应用,支持拖放,支持世界范围的各种语言,多任务的强大用户界面,控制和配置传输速度。 ### 68、Stacer @@ -777,7 +777,7 @@ $ sudo apt-get install sublime-text ### 73、TeXstudio -Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成查看、交互式拼写检查、代码折叠、拖拽等特点。 +Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成查看、交互式拼写检查、代码折叠、拖放等特点。 ![][80] @@ -857,7 +857,7 @@ $ sudo apt-get install quiterss ### 80、MPV Media Player -MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户之需要拖拽音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 +MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户之需要拖放音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 ![][88] @@ -1061,7 +1061,7 @@ via: https://linuxhint.com/100_best_ubuntu_apps/ 作者:[Swapnil Tirthakar][a] 选题:[lujun9972](https://github.com/lujun9972) 译者:[warmfrog](https://github.com/warmfrog) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 7b504f5720d3d8f89f081268afe6325e9993cacd Mon Sep 17 00:00:00 2001 From: GraveAccent Date: Mon, 1 Jul 2019 18:25:35 +0800 Subject: [PATCH 216/336] TSL:20190604 5G will augment Wi-Fi, not replace it.md --- ...4 5G will augment Wi-Fi, not replace it.md | 102 ----------------- ...4 5G will augment Wi-Fi, not replace it.md | 103 ++++++++++++++++++ 2 files changed, 103 insertions(+), 102 deletions(-) delete mode 100644 sources/talk/20190604 5G will augment Wi-Fi, not replace it.md create mode 100644 translated/talk/20190604 5G will augment Wi-Fi, not replace it.md diff --git a/sources/talk/20190604 5G will augment Wi-Fi, not replace it.md b/sources/talk/20190604 5G will augment Wi-Fi, not replace it.md deleted file mode 100644 index 76346907f3..0000000000 --- a/sources/talk/20190604 5G will augment Wi-Fi, not replace it.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (GraveAccent) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5G will augment Wi-Fi, not replace it) -[#]: via: (https://www.networkworld.com/article/3399978/5g-will-augment-wi-fi-not-replace-it.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -5G will augment Wi-Fi, not replace it -====== -Jeff Lipton, vice president of strategy and corporate development at Aruba, adds a dose of reality to the 5G hype, discussing how it and Wi-Fi will work together and how to maximize the value of both. -![Thinkstock][1] - -There’s arguably no technology topic that’s currently hotter than [5G][2]. It was a major theme of the most recent [Mobile World Congress][3] show and has reared its head in other events such as Enterprise Connect and almost every vendor event I attend. - -Some vendors have positioned 5G as a panacea to all network problems and predict it will eradicate all other forms of networking. Views like that are obviously extreme, but I do believe that 5G will have an impact on the networking industry and is something that network engineers should be aware of. - -To help bring some realism to the 5G hype, I recently interviewed Jeff Lipton, vice president of strategy and corporate development at Aruba, a Hewlett Packard company, as I know HPE has been deeply involved in the evolution of both 5G and Wi-Fi. - -**[ Also read:[The time of 5G is almost here][3] ]** - -### Zeus Kerravala: 5G is being touted as the "next big thing." Do you see it that way? - -**Jeff Lipton:** The next big thing is connecting "things" and generating actionable insights and context from those things. 5G is one of the technologies that serve this trend. Wi-Fi 6 is another — so are edge compute, Bluetooth Low Energy (BLE), artificial intelligence (AI) and machine learning (ML). These all are important, and they each have a place. - -### Do you see 5G eclipsing Wi-Fi in the enterprise? - -![Jeff Lipton, VP of strategy and corporate development, Aruba][4] - -**Lipton:** No. 5G, like all cellular access, is appropriate if you need macro area coverage and high-speed handoffs. But it’s not ideal for most enterprise applications, where you generally don’t need these capabilities. From a performance standpoint, [Wi-Fi 6][5] and 5G are roughly equal on most metrics, including throughput, latency, reliability, and connection density. Where they aren’t close is economics, where Wi-Fi is far better. I don’t think many customers would be willing to trade Wi-Fi for 5G unless they need macro coverage or high-speed handoffs. - -### Can Wi-Fi and 5G coexist? How would an enterprise use 5G and Wi-Fi together? - -**Lipton:** Wi-Fi and 5G can and should be complementary. The 5G architecture decouples the cellular core and Radio Access Network (RAN). Consequently, Wi-Fi can be the enterprise radio front end and connect tightly with a 5G core. Since the economics of Wi-Fi — especially Wi-Fi 6 — are favorable and performance is extremely good, we envision many service providers using Wi-Fi as the radio front end for their 5G systems where it makes sense, as an alternative to Distributed Antenna (DAS) and small-cell systems. - -Wi-Fi and 5G can and should be complementary." — Jeff Lipton - -### If a business were considering moving to 5G only, how would this be done and how practical is it? - -**Lipton:** To use 5G for primary in-building access, a customer would need to upgrade their network and virtually all of their devices. 5G provides good coverage outdoors, but cellular signals can’t reliably penetrate buildings. And this problem will become worse with 5G, which partially relies on higher frequency radios. So service providers will need a way to provide indoor coverage. To provide this coverage, they propose deploying DAS or small-cell systems — paid for by the end customer. The customers would then connect their devices directly to these cellular systems and pay a service component for each device. - -**[[Take this mobile device management course from PluralSight and learn how to secure devices in your company without degrading the user experience.][6] ]** - -There are several problems with this approach. First, DAS and small-cell systems are significantly more expensive than Wi-Fi networks. And the cost doesn’t stop with the network. Every device would need to have a 5G cellular modem, which costs tens of dollars wholesale and usually over a hundred dollars to an end user. Since few, if any MacBooks, PCs, printers or AppleTVs today have 5G modems, these devices would need to be upgraded. I don’t believe many enterprises would be willing to pay this additional cost and upgrade most of their equipment for an unclear benefit. - -### Are economics a factor in the 5G versus Wi-Fi debate? - -**Lipton:** Economics is always a factor. Let’s focus the conversation on in-building enterprise applications, since this is the use case some carriers intend to target with 5G. We’ve already mentioned that upgrading to 5G would require enterprises to deploy expensive DAS or small-cell systems for in-building coverage, upgrade virtually all of their equipment to contain 5G modems, and pay service contracts for each of these devices. It’s also important to understand 5G cellular networks and DAS systems operate over licensed spectrum, which is analogous to a private highway. Service providers paid billions of dollars for this spectrum, and this expense needs to be monetized and embedded in service costs. So, from both deployment and lifecycle perspectives, Wi-Fi economics are favorable to 5G. - -### Are there any security implications of 5G versus Wi-Fi? - -**Lipton:** Cellular technologies are perceived by some to be more secure than Wi-Fi, but that’s not true. LTE is relatively secure, but it also has weak points. For example, LTE is vulnerable to a range of attacks, including data interception and device tracking, according to researchers at Purdue and the University of Iowa. 5G improves upon LTE security with multiple authentication methods and better key management. - -Wi-Fi security isn’t standing still either and continues to advance. Of course, Wi-Fi implementations that do not follow best practices, such as those without even basic password protection, are not optimal. But those configured with proper access controls and passwords are highly secure. With new standards — specifically, WPA3 and Enhanced Open — Wi-Fi network security has improved even further. - -It’s also important to keep in mind that enterprises have made enormous investments in security and compliance solutions tailored to their specific needs. With cellular networks, including 5G, enterprises lose the ability to deploy their chosen security and compliance solutions, as well as most visibility into traffic flows. While future versions of 5G will offer high-levels of customization with a feature called network slicing, enterprises would still lose the level of security and compliance customization they currently need and have. - -### Any parting thoughts to add to the discussion around 5G versus Wi-Fi? - -**Lipton:** The debate around Wi-Fi versus 5G misses the point. They each have their place, and they are in many ways complementary. The Wi-Fi and 5G markets both will grow, driven by the need to connect and analyze a growing number of things. If a customer needs macro coverage or high-speed handoffs and can pay the additional cost for these capabilities, 5G makes sense. - -5G also could be a fit for certain industrial use cases where customers require physical network segmentation. But for the vast majority of enterprise customers, Wi-Fi will continue to prove its value as a reliable, secure, and cost-effective wireless access technology, as it does today. - -**More about 802.11ax (Wi-Fi 6):** - - * [Why 802.11ax is the next big thing in wireless][7] - * [FAQ: 802.11ax Wi-Fi][8] - * [Wi-Fi 6 (802.11ax) is coming to a router near you][9] - * [Wi-Fi 6 with OFDMA opens a world of new wireless possibilities][10] - * [802.11ax preview: Access points and routers that support Wi-Fi 6 are on tap][11] - - - -Join the Network World communities on [Facebook][12] and [LinkedIn][13] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3399978/5g-will-augment-wi-fi-not-replace-it.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://images.idgesg.net/images/article/2019/05/wireless_connection_speed_connectivity_bars_cell_tower_5g_by_thinkstock-100796921-large.jpg -[2]: https://www.networkworld.com/article/3203489/what-is-5g-how-is-it-better-than-4g.html -[3]: https://www.networkworld.com/article/3354477/mobile-world-congress-the-time-of-5g-is-almost-here.html -[4]: https://images.idgesg.net/images/article/2019/06/headshot_jlipton_aruba-100798360-small.jpg -[5]: https://www.networkworld.com/article/3215907/why-80211ax-is-the-next-big-thing-in-wi-fi.html -[6]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fmobile-device-management-big-picture -[7]: https://www.networkworld.com/article/3215907/mobile-wireless/why-80211ax-is-the-next-big-thing-in-wi-fi.html -[8]: https://%20https//www.networkworld.com/article/3048196/mobile-wireless/faq-802-11ax-wi-fi.html -[9]: https://www.networkworld.com/article/3311921/mobile-wireless/wi-fi-6-is-coming-to-a-router-near-you.html -[10]: https://www.networkworld.com/article/3332018/wi-fi/wi-fi-6-with-ofdma-opens-a-world-of-new-wireless-possibilities.html -[11]: https://www.networkworld.com/article/3309439/mobile-wireless/80211ax-preview-access-points-and-routers-that-support-the-wi-fi-6-protocol-on-tap.html -[12]: https://www.facebook.com/NetworkWorld/ -[13]: https://www.linkedin.com/company/network-world diff --git a/translated/talk/20190604 5G will augment Wi-Fi, not replace it.md b/translated/talk/20190604 5G will augment Wi-Fi, not replace it.md new file mode 100644 index 0000000000..1daab85194 --- /dev/null +++ b/translated/talk/20190604 5G will augment Wi-Fi, not replace it.md @@ -0,0 +1,103 @@ +[#]: collector: (lujun9972) +[#]: translator: (GraveAccent) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5G will augment Wi-Fi, not replace it) +[#]: via: (https://www.networkworld.com/article/3399978/5g-will-augment-wi-fi-not-replace-it.html) +[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) + + +5G 会增强 Wi-Fi,而不是取代它 +====== +Aruba 战略和企业发展副总裁 Jeff Lipton 为 5G 炒作增添了一些干货,讨论了它和 Wi-Fi 如何协同工作以及如何最大化两者的价值。 +![Thinkstock][1] + +可以说没有技术主题比 [5G][2] 更热。 这是最近 [移动世界大会][3] 节目的一个主题,并且已经在其他活动中占据了主导地位,例如 Enterprise Connect 和我参加的几乎所有供应商活动。 + +一些供应商将 5G 定位为解决所有网络问题的灵丹妙药,并预测它将消除所有其他形式的网络。 像这样的观点显然是极端的,但我相信 5G 会对网络行业产生影响,网络工程师应该意识到这一点。 + +为了帮助为5G炒作带来一些现实感,我最近采访了一家惠普公司 Aruba 的战略和企业发展副总裁 Jeff Lipton,因为我知道惠普已经深入参与了 5G 和 Wi-Fi 的发展。 + +**[ 另见:[5G 时代几乎已经来了][3] ]** + +### Zeus Kerravala: 5G 被吹捧为“下一件大事”。你是这样看的吗? + +**Jeff Lipton:** 接下来的重点是连接“事物”并从这些事物中产生可操作的见解和背景。5G 是服务于这一趋势的技术之一。Wi-Fi 6 是另一个,还有边缘计算,蓝牙低功耗(BLE),人工智能(AI)和机器学习(ML)。这一切都很重要,全都有自己的用武之地。 + +### 你是否在企业中看到 5G 的风头盖过 Wi-Fi? + +![Jeff Lipton, VP of strategy and corporate development, Aruba][4] + +**Lipton:** 与所有蜂窝接入一样,如果你需要宏观区域覆盖和高速切换,使用 5G 是合适的。但对于大多数企业级应用程序而言,它通常不需要这些功能。从性能角度来看,[Wi-Fi 6][5] 和 5G 在大多数指标上大致相等,包括吞吐量,延迟,可靠性和连接密度。它们并不相似的地方在经济方面,Wi-Fi要好得多。我不认为很多客户愿意用 Wi-Fi 交换 5G,除非他们需要宏观覆盖或高速切换。 + +### Wi-Fi 和 5G 可以共存吗? 企业如何一起使用 5G 和 Wi-Fi? + +**Lipton:** Wi-Fi 和 5G 可以并且应该是互补的。 5G 架构将蜂窝核心和无线接入网络(RAN)分离。 因此,Wi-Fi 可以是企业无线电前端,并与 5G 核心紧密连接。 由于 Wi-Fi 的经济性 - 特别是 Wi-Fi 6 - 是有利的并且性能非常好,我们设想许多服务提供商在有可行的地方使用 Wi-Fi 作为其 5G 系统的无线电前端,充当分布式天线(DAS)和小型蜂窝系统的替代。 + +“Wi-Fi 和 5G 可以并且应该是互补的。” — Jeff Lipton + +### 如果一个企业打算完全转向 5G,那将如何实现以及它的实用性如何? + +**Lipton:** 为了将 5G 用于主要的室内访问,客户需要升级其网络和几乎所有设备。 5G 在室外提供良好的覆盖,但蜂窝信号不能可靠地穿透建筑物。 5G 会使这个问题变得更糟,因为它部分依赖于更高频率的无线电。因此,服务提供商需要一种提供室内覆盖的方法。为了提供这种覆盖,他们会部署 DAS 或小型蜂窝系统 - 由终端客户支付。然后,客户将他们的设备直连到这些蜂窝系统,并为每个设备支付服务合同。 + +**[[上 PluralSight 学习移动设备管理课程,了解如何在不降低用户体验的情况下保护公司中的设备。][6]]** + +这种方法存在一些问题。首先,DAS 和小型蜂窝系统比 Wi-Fi 网络贵得多。 并且成本不会因网络而停止。 每台设备都需要一台 5G 蜂窝调制解调器,批发价格高达数十美元,而终端用户通常需要花费一百多美元。 由于目前很少或者没有 MacBook、PC、打印机、AppleTV 有 5G 调制解调器,因此需要对这些设备进行升级。我不相信很多企业会愿意支付这笔额外费用并升级他们的大部分设备以获得不明确的好处。 + +### 经济是 5G 与 Wi-Fi 之争的一个要素吗? + +**Lipton:** 经济始终是一个要素。让我们将对话集中在室内企业级应用程序上,因为这是一些运营商打算用 5G 定位的用例。 我们已经提到升级到 5G 将要求企业部署昂贵的 DAS 或小型蜂窝系统用于室内覆盖,几乎将所有设备升级到包含 5G 调制解调器,并为每个设备支付服务合同。理解 5G 蜂窝网络和 DAS 系统在许可频谱上运行也很重要,这类似于私人高速公路。 服务提供商为此频谱支付了数十亿美元,这笔费用需要货币化并嵌入服务成本中。 因此,从部署和生命周期的角度来看,Wi-Fi 在经济上比 5G 有利。 + +### 5G 与 Wi-Fi 有任何安全隐患吗? + +**Lipton:** 一些人认为蜂窝技术比Wi-Fi更安全,但事实并非如此。LTE 相对安全,但也有弱点。例如,普渡大学和爱荷华大学的研究人员表示,LTE 容易受到一系列攻击,包括数据拦截和设备跟踪。5G 通过多种认证方法和更好的密钥管理改进了 LTE 安全性。 + +Wi-Fi 的安全性也没有停滞不前而是继续发展。当然,不遵循最佳实践的 Wi-Fi 实现,例如那些甚至没有基本密码保护的实现,并不是最佳的。但那些配置了适当的访问控制和密码的人是非常安全的。 随着新标准 - 特别是 WPA3 和增强开放(Enhanced Open) - Wi-Fi网络安全性进一步提高。 + +同样重要的是要记住,企业已根据其特定需求对安全性和合规性解决方案进行了大量投资。对于包括 5G 在内的蜂窝网络,企业将失去部署所选安全性和合规性解决方案的能力,以及对流量流的大多数可见性。 虽然 5G 的未来版本将通过称为网络切片的功能提供高级别的自定义,但企业仍将失去他们目前需要和拥有的安全性和合规性定制级别。 + +### 关于 5G 与 Wi-Fi 之间的讨论有什么最后的想法? + +**Lipton:** 围绕 Wi-Fi 与 5G 的争论忽略了这一点。它们都有自己的用武之地,而且它们在很多方面都是互补的。由于需要连接和分析越来越多的东西,Wi-Fi 和 5G 市场都将增长。如果客户需要宏覆盖或高速切换,并且可以为这些功能支付额外成本,那么 5G 是可行的。 + +5G 也适用于客户需要物理网络分段的某些工业用例。但对于绝大多数企业客户而言,Wi-Fi 将继续像现在一样证明自己作为可靠,安全且经济高效的无线接入技术的价值。 + +**更多关于 802.11ax (Wi-Fi 6):** + + * [为什么 802.11ax 是无线网络的下一件大事][7] + * [FAQ: 802.11ax Wi-Fi][8] + * [Wi-Fi 6 (802.11ax) 正在来到你附件的路由器][9] + * [带有 OFDMA 的 Wi-Fi 6 打开了一个全新的无线可能性世界][10] + * [802.11ax 预览:支持 Wi-Fi 6 的接入点和路由器随时可用][11] + + + +加入 [Facebook][12] 和 [LinkedIn][13] 上的 network world 社区,评论你认为最重要的话题。 + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3399978/5g-will-augment-wi-fi-not-replace-it.html + +作者:[Zeus Kerravala][a] +选题:[lujun9972][b] +译者:[GraveAccent](https://github.com/graveaccent) +校对:[校对者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://images.idgesg.net/images/article/2019/05/wireless_connection_speed_connectivity_bars_cell_tower_5g_by_thinkstock-100796921-large.jpg +[2]: https://www.networkworld.com/article/3203489/what-is-5g-how-is-it-better-than-4g.html +[3]: https://www.networkworld.com/article/3354477/mobile-world-congress-the-time-of-5g-is-almost-here.html +[4]: https://images.idgesg.net/images/article/2019/06/headshot_jlipton_aruba-100798360-small.jpg +[5]: https://www.networkworld.com/article/3215907/why-80211ax-is-the-next-big-thing-in-wi-fi.html +[6]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fmobile-device-management-big-picture +[7]: https://www.networkworld.com/article/3215907/mobile-wireless/why-80211ax-is-the-next-big-thing-in-wi-fi.html +[8]: https://%20https//www.networkworld.com/article/3048196/mobile-wireless/faq-802-11ax-wi-fi.html +[9]: https://www.networkworld.com/article/3311921/mobile-wireless/wi-fi-6-is-coming-to-a-router-near-you.html +[10]: https://www.networkworld.com/article/3332018/wi-fi/wi-fi-6-with-ofdma-opens-a-world-of-new-wireless-possibilities.html +[11]: https://www.networkworld.com/article/3309439/mobile-wireless/80211ax-preview-access-points-and-routers-that-support-the-wi-fi-6-protocol-on-tap.html +[12]: https://www.facebook.com/NetworkWorld/ +[13]: https://www.linkedin.com/company/network-world \ No newline at end of file From 23b0b0a8b416d4a0fc3e0d266a0a41091a725e3b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 2 Jul 2019 00:25:18 +0800 Subject: [PATCH 217/336] PRF:20190301 Emacs for (even more of) the win.md @oneforalone --- ...190301 Emacs for (even more of) the win.md | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/translated/tech/20190301 Emacs for (even more of) the win.md b/translated/tech/20190301 Emacs for (even more of) the win.md index 16313fc019..cfec191579 100644 --- a/translated/tech/20190301 Emacs for (even more of) the win.md +++ b/translated/tech/20190301 Emacs for (even more of) the win.md @@ -1,58 +1,58 @@ [#]: collector: (lujun9972) [#]: translator: (oneforalone) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Emacs for (even more of) the win) [#]: via: (https://so.nwalsh.com/2019/03/01/emacs) [#]: author: (Norman Walsh https://so.nwalsh.com) -Emacs 的胜利(或是更多) +Emacs 的胜利(或是大胜) ====== +![](https://img.linux.net.cn/data/attachment/album/201907/02/002550x2ol48004hx6e0od.jpg) + 我天天用 Emacs,但我却从意识到。但是每当我用 Emacs 时,它都给我带来了很多乐趣。 ->如果你是个职业作家……Emacs 与其它的编辑器的相比就如皓日与群星一样。不仅更大、更亮,它轻而易举就让其他所有的东西都消失了。 +> 如果你是个职业作家……Emacs 与其它的编辑器的相比就如皓日与群星一样。不仅更大、更亮,它轻而易举就让其他所有的东西都消失了。 -我用 [Emacs][1] 已有二十多年了。我用它来写几乎所有的东西(Scala 和 Java 我用 [IntelliJ][2])。看邮件的话我是能在 Emacs 里看就在里面看。 +我用 [Emacs][1] 已有二十多年了。我用它来写几乎所有的东西(我用 [IntelliJ][2] 编辑 Scala 和 Java )。看邮件的话我是能在 Emacs 里看就在里面看。 -尽管我用 Emacs 已有数十年,我在新年前后才意识到,在过去10年或更长时间里,我对 Emacs 的使用几乎没有什么变化。当然,新的编辑模式出现了,我就会选一两个插件,几年前我确实是用了 [Helm][3],但大多数时候,它只是完成了我需要的所有繁重工作,日复一日,没有抱怨,也没有妨碍我。一方面,这证明了它有多好。另一方面,这是一个邀请,让我深入挖掘,看看我错过了什么。 +尽管我用 Emacs 已有数十年,我在新年前后才意识到,在过去十几年里,我对 Emacs 的使用几乎没有什么变化。当然,新的编辑模式出现了,我就会选一两个插件,几年前我确实是用了 [Helm][3],但大多数时候,它只是完成了我需要的所有繁重工作,日复一日,没有抱怨,也没有妨碍我。一方面,这证明了它有多好。另一方面,这是一个邀请,让我深入挖掘,看看我错过了什么。 于此同时,我也决定从以下几方面改进我的工作方式: - * **更好的议程管理** 我在工作中负责几个项目,这些项目有定期和临时的会议;有些我是我主持的,有些我只要参加就可以。 +* **更好的议程管理** 我在工作中负责几个项目,这些项目有定期和临时的会议;有些我是我主持的,有些我只要参加就可以。 -我意识到我对开会变得草率起来了了。坐在一个有会议要开的房间里实在是太容易了,但实际上你可以阅读电子邮件,处理其他事情。(我强烈反对在会议中“禁止携带笔记本电脑”的这条规定,但这就是另一个话题。) + 我意识到我对参加会议变得有些敷衍。往会议室里一坐很简单,但实际上我是在阅读电子邮件或处理其他事情。(我强烈反对在会议中“禁止携带笔记本电脑”的这条规定,但这是另一个话题。) -草率地去开会有几个问题。首先,这是对主持会议的人和其他参与者的不尊重。实际上这是不这么做的完美理由,但我还有意识到令一个问题:它忽视了会议的成本。 + 敷衍地去参加会议有几个问题。首先,这是对主持会议的人和其他参会者的不尊重。实际上这是不应该这么做的充分理由,但我还有意识到另一个问题:它掩盖了会议的成本。 -如果你在开会,但同时还要回复电子邮件,也许还要改 bug,那么这个会议就不需要花费任何东西(或同样多的钱)。如果会议成本低廉,那么会议数量将会更多。 + 如果你在开会,但同时回复了一封电子邮件,也许修复了一个 bug,那么这个会议就没什么成本(或没那么多)。如果会议成本低廉,那么会议数量将会更多。 -我想要少点、短些的会议。我不想忽视它们的成本,我想让开会变得很有价值,除非绝对必要,否则就可以避免。 + 我想要更少、更短的会议。我不想掩盖它们的成本,我想让开会变得很有价值,除非绝对必要,否则就干脆不要开。 -有时,开会是很有必要的。而且我认为一个简短的会能够很快的解决问题。但是,如果我一天有十个短会的话,那还是不要说我做了些有成果的事吧。 + 有时,开会是绝对有必要的。而且我认为一个简短的会有时候能够很快的解决问题。但是,如果我一天要开十个短会的话,那我觉得还是不要假装取得了什么效果吧。 -我决定在我参加的所有的会上做笔记。我并不是说一定要做会议记录,而是我在做某种会议记录。这会让我把注意力集中在开会上,而忽略其他事。 + 我决定在我参加的所有的会上做笔记。我并不是说一定要做会议记录,但是我肯定会花上几分钟。这会让我把注意力集中在开会上,而忽略其他事。 - * **更好的时间管理** 我有很多要做和想做的事,或工作的或私人的。之前,我有在问题清单和邮件进程(Emacs 和 [Gmail][4] 中,用于一些稍微不同的提醒)、日历、手机上各种各样的“待办事项列表”和小纸片上记录过它们。可能还有其他地方。 +* **更好的时间管理** 无论是工作的或私人的,我有很多要做和想做的事。我一直在问题列表中跟踪其中的一些,一些在保存的电子邮件线索中(Emacs 和 [Gmail][4] 中,用于一些稍微不同的提醒),还有一些在日历、手机上各种各样的“待办事项列表”和小纸片上。可能还有其他地方。 -我决定把它们放在一起。不是说我认为有一个地方就最好或更好,而是说我想完成两件事。首先,把它们都放在一个地方,我能够对我把精力放在哪里有一个更好、更全面的看法。第二,也是因为我想养成一个习惯。固定的或有规律的倾向或行为,尤指难以放弃的。记录、跟踪并保存它们。 + 我决定把它们放在一起。不是说我认为放到一个一致的地方就更好,而是我想完成两件事:首先,把它们都集中在一个地方,我能够更好更全面地了解我在哪里投入了更多的精力;其次,我想养成一个记录、跟踪并保存它们的习惯(习惯指“固定或规律的倾向或做法,尤指难以放弃的倾向或做法”)。 - * **更好的说明** 如果你在某些科学或工程领域工作,你就会养成记笔记的习惯。唉,我没有。但我决定这么做。 +* **更好的问责制** 如果你在某些科学或工程领域工作,你就会养成记笔记的习惯。唉,我没有。但我决定这么做。 -我对法律上鼓励装订页面或做永久标记并不感兴趣。我感兴趣的是养成做记录的习惯。我的目标是有一个地方记下想法和设计草图等。如果我突然有了灵感,或者我想到了一个不在测试套件中的边缘案例,我希望我的本能是把它写在我的日志中,而不是草草写在一张小纸片上,或者向自己保证我会记住它。 + 我对法律上鼓励使用装订页面或用永久记号笔涂抹并不感兴趣。我感兴趣的是养成做记录的习惯。我的目标是有一个地方记下想法和设计草图等。如果我突然有了灵感,或者我想到了一个不在测试套件中的边缘情况,我希望我的直觉是把它写在我的日志中,而不是草草写在一张小纸片上,或者自己觉得自己会记住它。 +这些决心让我很快或多或少指向了 [Org][6] 模式。Org 模式有一个庞大的、活跃的、忠诚的用户社区。我以前也用过它(顺带一提,我都[写过][7]关于它的文章,在几年前),我花了很长的一段时间(将 [MarkLogic 集成][8]到其中。(这在过去的一两个星期里得到了回报!) +但我从没正经用过 Org 模式。 -这些决心让我很快或多或少地转到了 [Org][6]。Org 有一个庞大的、活跃的、忠诚的用户社区。我以前也用过它(顺带一提,我有[写过][7]它,至少在几年前),我花了很长的一段时间(将 [MarkLogic 集成][8]到其中。(天哪,这在过去的一两个星期里得到了回报!) +我现在正在用它。我用了几分钟,我把所有要做的事情都记录下来,我还记了日记。我不确定我争论或列表它的所有功能能有多大价值,你可以通过网页快速地搜索找到很多。 -但我从没用过 Org。 +如果你用 Emacs,那你也应该用 Org 模式。如果没用过 Emacs,我相信你不会是第一个因 Org 模式而使用 Emacs 的人。Org 模式可以做很多。它需要一点时间来学习方法和快捷键,但我认为这是值得的。(如果你的口袋中有一台 [iOS][9] 设备,我推荐你在路上使用 [beorg][10] 来记录。) -我现在正在用它。我用了几分钟,我把所有要做的事情都记录下来,我还记了日记。我不确定我试图对它进行边界或列举它的所有特性有多大价值,你可以通过网页快速地搜索找到很多。 - -如果你用 Emacs,那你也应该用 Org。如果没用过Emacs,我相信你不会是第一个因 Org 而使用 Emacs 的人。Org 可以做很多。它需要一点时间来学习你的方法和快捷键,但我认为这是值得的。(如果你的口袋中有一台 [iOS][9] 设备,我推荐你在忙的时候使用 [beorg][10] 来记录。) - -当然,我想出了如何[将 XML 从其中提取出来][11]⊕“working out” 确实是“用 elisp 来编程”的一种有趣的拼写方式。然后,如何将它转换回我的 weblog 期望的标记(当然,在 Emacs 中按下一个按钮就可以做到)。这是第一次用 Org 写的帖子。这也不会是最后一次。 +当然,我想出了如何[将 XML 从其中提取出来][11](“working out” 确实是“用 elisp 来编程”的一种有趣的魔法)然后,如何将它转换回我的博客用的标记(当然,在 Emacs 中按下一个按钮就可以做到)。这是用 Org 模式写的第一篇帖子。这也不会是最后一次。 附注:生日快乐,[小博客][12]。 @@ -63,7 +63,7 @@ via: https://so.nwalsh.com/2019/03/01/emacs 作者:[Norman Walsh][a] 选题:[lujun9972][b] 译者:[oneforalone](https://github.com/oneforalone) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 51d43fb0eae64d866368aa493f70f7893bf2b8c8 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 2 Jul 2019 00:28:54 +0800 Subject: [PATCH 218/336] PUB:20190301 Emacs for (even more of) the win.md @oneforalone https://linux.cn/article-11046-1.html --- .../20190301 Emacs for (even more of) the win.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/tech => published}/20190301 Emacs for (even more of) the win.md (98%) diff --git a/translated/tech/20190301 Emacs for (even more of) the win.md b/published/20190301 Emacs for (even more of) the win.md similarity index 98% rename from translated/tech/20190301 Emacs for (even more of) the win.md rename to published/20190301 Emacs for (even more of) the win.md index cfec191579..7da7ab6a51 100644 --- a/translated/tech/20190301 Emacs for (even more of) the win.md +++ b/published/20190301 Emacs for (even more of) the win.md @@ -1,13 +1,13 @@ [#]: collector: (lujun9972) [#]: translator: (oneforalone) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11046-1.html) [#]: subject: (Emacs for (even more of) the win) [#]: via: (https://so.nwalsh.com/2019/03/01/emacs) [#]: author: (Norman Walsh https://so.nwalsh.com) -Emacs 的胜利(或是大胜) +Emacs 的(更多)胜利 ====== ![](https://img.linux.net.cn/data/attachment/album/201907/02/002550x2ol48004hx6e0od.jpg) From 3bb4c603b7a2c2769099a423f07785b50d8d878c Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 2 Jul 2019 00:51:42 +0800 Subject: [PATCH 219/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190701=20Ubuntu?= =?UTF-8?q?=20or=20Fedora:=20Which=20One=20Should=20You=20Use=20and=20Why?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md --- ...edora- Which One Should You Use and Why.md | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md diff --git a/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md new file mode 100644 index 0000000000..9b6b7727f3 --- /dev/null +++ b/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -0,0 +1,190 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Ubuntu or Fedora: Which One Should You Use and Why) +[#]: via: (https://itsfoss.com/ubuntu-vs-fedora/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +Ubuntu or Fedora: Which One Should You Use and Why +====== + +_**Brief: Ubuntu or Fedora? What’s the difference? Which is better? Which one should you use? Read this comparison of Ubuntu and Fedora.**_ + +[Ubuntu][1] and [Fedora][2] are one of the most popular Linux distributions out there. Making a decision to choose between using Ubuntu and Fedora is not an easy one. I’ll try to help you in making your decision by comparing various features of Ubuntu and Fedora. + +Do note that this comparison is primarily from the desktop point of view. I am not going to focus on the container specific versions of Fedora or Ubuntu. + +### Ubuntu vs Fedora: Which one is better? + +![Ubuntu Vs Fedora][3] + +Almost all Linux distributions differ from one another primarily on these points: + + * Base distribution (Debian, Red Hat, Arch or from scratch) + * Installation + * Supported desktop environments + * Package management, software support and updates + * Hardware support + * Development team (backed by corporate or created by hobbyists) + * Release cycle + * Community and support + + + +Let’s see how similar or how different are Ubuntu and Fedora from each other. Once you know that, it should be perhaps easier for you to make a choice. + +#### Installation + +Ubuntu’s Ubiquity installer is one of easiest installers out there. I believe that it played an important role in Ubuntu’s popularity because when Ubuntu was just created in 2004, installing Linux itself was considered a huge task. + +The Ubuntu installer allows you to install Ubuntu in around 10 minutes. In most cases, it can identify Windows installed on your system and allows you to dual boot Ubuntu and Windows in a matter of clicks. + +You can also install updates and third-party codecs while installing Ubuntu. That’s an added advantage. + +![Ubuntu Installer][4] + +Fedora uses Anaconda installer. This too simplifies the installation process with the easy to use interface. + +![Fedora Installer | Image Credit Fedora Magazine][5] + +Fedora also provides a media writer tool for downloading and creating the live USB of Fedora on Windows operating system. When I last tried to use it around two years ago, it didn’t work and I had to use the regular live USB creating software. + +In my experience, installing Ubuntu is easier than installing Fedora. That doesn’t mean installing Fedora is a complex process. Just that Ubuntu is simpler. + +#### Desktop environments + +Both Ubuntu and Fedora use GNOME desktop environment by default. + +![GNOME Desktop in Fedora][6] + +While Fedora uses the stock GNOME desktop, Ubuntu has customized it to look and behave like its previous Unity desktop. + +![GNOME desktop customized by Ubuntu][7] + +Apart from GNOME, both Ubuntu and Fedora offer several other desktop variants. + +Ubuntu has Kubuntu, Xubuntu, Lubuntu etc., offering various desktop flavors. While they are the official flavor of Ubuntu, they are not directly developed by Ubuntu team from Canonical. The teams are separate. + +Fedora offers various desktop choices in the form of [Fedora Spins][8]. Unlike Kubuntu, Lubuntu etc,. they are not created and maintained by separate team. They are from core Fedora team. + +#### Package management and software availability + +Ubuntu uses APT package manager to provide and manage software (applications, libraries and other required codes) while Fedora uses DNF package manager. + +[][9] + +Suggested read  System76 Galago Pro: Specs, Price And Release Date + +[Ubuntu has vast software repositories][10] allowing you to easily install thousands of programs, both FOSS and non-FOSS, easily. Fedora on the other hand focuses on providing only open source software. This is changing in the new versions but Fedora’s repositories are still not as big as that of Ubuntu. + +Some third party software developer also provide click-to-install, .exe like packages for Linux. In Ubuntu, these packages are in .deb format and while Fedora supports .rpm packages. + +Most software vendors provide both DEB and RPM files for Linux users but I have experienced that sometimes software vendor only provide DEB file. For example, SEO tool [Screaming Frog][11] has only DEB packages. It’s extremely rare that a software is available in RPM but not in DEB format. + +#### Hardware support + +Linux in general has its fair share of trouble with some WiFi adapters and graphics cards. Both Ubuntu and Fedora are impacted from that. Take the example of Nvidia. It’s [open source Nouveau driver often results in troubles like system hanging at boot][12]. + +Ubuntu provides an easy way of installing additional proprietary drivers. This results in better hardware support in many cases. + +![Installing proprietary driver is easier in Ubuntu][13] + +Fedora, on the other hand, sticks to open source software and thus installing proprietary drivers on Fedora becomes a difficult task. + +#### Support and userbase + +Both Ubuntu and Fedora provide support through community forums. Ubuntu has two main forums: [UbuntuForums][14] and [Ask Ubuntu][15]. Fedora has one main forum [Ask Fedora][16]. + +In terms of userbase, Fedora has a large following. However, Ubuntu is more popular and has a larger following than Fedora. + +The popularity of Ubuntu has prompted a number of websites and blogs focused primarily on Ubuntu. This way, you get more troubleshooting tips and learning material on Ubuntu than Fedora. + +#### Release cycle + +A new Fedora version is released every six months and each Fedora release is supported for nine months only. Which means that between six to nine months, you must perform an upgrade. Upgrading Fedora version is simple but it does require a good internet connection. Not everyone can be happy with 1.5 GB of version upgrades every nine months. + +Ubuntu has two versions: regular release and the long term support (LTS) release. Regular release is similar to Fedora. It’s released at the interval of six months and is supported for nine months. + +The LTS release comes at an interval of two years and is supported for five years. Regular releases bring new features, new software versions while the LTS release holds on to the older versions. This makes it a great choice for people who don’t like frequent changes and prefer stability. + +#### Solid base distributions + +Ubuntu is based on [Debian][17]. Debian is one of the biggest community project and one of the most respected project in the [free software][18] world. + +Fedora is a community project from Red Hat. Red Hat is an enterprise focused Linux distribution. Fedora works as a ‘testing ground’ ([upstream][19] in technical term) for new features before those features are included in Red Hat Enterprise Linux. + +[][20] + +Suggested read  How To Manage StartUp Applications In Ubuntu + +#### Backed by enterprises + +Both Ubuntu and Fedora are backed by their parent corporations. Ubuntu is from [Canonical][21] while Fedora is from [Red Hat][22] (now [part of IBM][23]). Enterprise backing is important because it ensures that the Linux distribution is well-maintained. + +Hobbyists distributions created by a group of individuals often crumble under workload. You might have seen reasonably popular distribution projects being shutdown for this sole reason. [Antergos][24], Korora are just some of the many such examples where distributions were discontinued because the developers couldn’t get enough free time to work on the project. + +The fact that both Ubuntu and Fedora are supported by a two Linux-based enterprises makes them a viable choice over other independent distributions. + +#### Ubuntu vs Fedora as server + +The comparison between Ubuntu and Fedora was primarily aimed at desktop users so far. But a discussion about Linux is not complete until you include servers. + +![Ubuntu Server][25] + +Ubuntu is not only popular on desktop, it also has a good presence on the server side. If you are familiar with Ubuntu as desktop, you might not feel uncomfortable with Ubuntu server edition. I started with Ubuntu desktop and now my websites are hosted on Linux servers running Ubuntu. + +Fedora too has server edition and some people use it as well. But most sysadmins won’t prefer a server that has to be upgraded and rebooted every nine months. + +Knowing Fedora helps you in using Red Hat Enterprise Linux (RHEL). RHEL is a paid product and you’ll have to purchase a subscription. If you want an operating system for running server that is close to Fedora/Red Hat, I advise using CentOS. [CentOS][26] is also a community project affiliated with Red Hat but this one is focused on servers. + +#### Conclusion + +As you can see, both Ubuntu and Fedora are similar to each other on several points. Ubuntu does take lead when it comes to software availability, driver installation and online support. And _**these are the points that make Ubuntu a better choice, specially for inexperienced Linux users.**_ + +If you want to get familiar with Red Hat, Fedora is a good starting point. If you have some experience with Linux or if you want to use only open source software, Fedora is an excellent choice. + +In the end, it is really up to you to decide if you want to use Fedora or Ubuntu. I would suggest creating live USB of both distributions or try them out in virtual machine. + +What’s your opinion on Ubuntu vs Fedora? Which distribution do you prefer and why? Do share your views in the comment section. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ubuntu-vs-fedora/ + +作者:[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://ubuntu.com/ +[2]: https://getfedora.org/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-vs-fedora.png?resize=800%2C450&ssl=1 +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2018/03/install-linux-inside-windows-10.jpg?resize=800%2C479&ssl=1 +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/fedora-installer.png?resize=800%2C598&ssl=1 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/gnome-desktop-fedora.png?resize=800%2C450&ssl=1 +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/03/applications_menu.jpg?resize=800%2C450&ssl=1 +[8]: https://spins.fedoraproject.org/ +[9]: https://itsfoss.com/system-76-galago-pro/ +[10]: https://itsfoss.com/ubuntu-repositories/ +[11]: https://www.screamingfrog.co.uk/seo-spider/#download +[12]: https://itsfoss.com/fix-ubuntu-freezing/ +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/software_updates_additional_drivers_nvidia.png?resize=800%2C523&ssl=1 +[14]: https://ubuntuforums.org/ +[15]: https://askubuntu.com/ +[16]: https://ask.fedoraproject.org/ +[17]: https://www.debian.org/ +[18]: https://www.fsf.org/ +[19]: https://en.wikipedia.org/wiki/Upstream_(software_development) +[20]: https://itsfoss.com/manage-startup-applications-ubuntu/ +[21]: https://canonical.com/ +[22]: https://www.redhat.com/en +[23]: https://itsfoss.com/ibm-red-hat-acquisition/ +[24]: https://itsfoss.com/antergos-linux-discontinued/ +[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-server.png?resize=800%2C232&ssl=1 +[26]: https://centos.org/ From d31b0d6aeacd9b39d4baca0f896b6f51cd263541 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 2 Jul 2019 00:52:34 +0800 Subject: [PATCH 220/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190701=20Learn?= =?UTF-8?q?=20how=20to=20Record=20and=20Replay=20Linux=20Terminal=20Sessio?= =?UTF-8?q?ns=20Activity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190701 Learn how to Record and Replay Linux Terminal Sessions Activity.md --- ...Replay Linux Terminal Sessions Activity.md | 292 ++++++++++++++++++ 1 file changed, 292 insertions(+) create mode 100644 sources/tech/20190701 Learn how to Record and Replay Linux Terminal Sessions Activity.md diff --git a/sources/tech/20190701 Learn how to Record and Replay Linux Terminal Sessions Activity.md b/sources/tech/20190701 Learn how to Record and Replay Linux Terminal Sessions Activity.md new file mode 100644 index 0000000000..bf076d08ea --- /dev/null +++ b/sources/tech/20190701 Learn how to Record and Replay Linux Terminal Sessions Activity.md @@ -0,0 +1,292 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Learn how to Record and Replay Linux Terminal Sessions Activity) +[#]: via: (https://www.linuxtechi.com/record-replay-linux-terminal-sessions-activity/) +[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/) + +Learn how to Record and Replay Linux Terminal Sessions Activity +====== + +Generally, all Linux administrators use **history** command to track which commands were executed in previous sessions, but there is one limitation of history command is that it doesn’t store the command’s output. There can be some scenarios where we want to check commands output of previous session and want to compare it with current session. Apart from this, there are some situations where we are troubleshooting the issues on Linux production boxes and want to save all terminal session activities for future reference, so in such cases script command become handy. + + + +Script is a command line tool which is used to capture or record your Linux server terminal sessions activity and later the recorded session can be replayed using scriptreplay command. In this article we will demonstrate how to install script command line tool and how to record Linux server terminal session activity and then later we will see how the recorded session can be replayed using **scriptreplay** command. + +### Installation of Script tool on RHEL 7/ CentOS 7 + +Script command is provided by the rpm package “**util-linux**”, in case it is not installed on your CentOS 7 / RHEL 7 system , run the following yum command, + +``` +[root@linuxtechi ~]# yum install util-linux -y +``` + +**On RHEL 8 / CentOS 8** + +Run the following dnf command to install script utility on RHEL 8 and CentOS 8 system, + +``` +[root@linuxtechi ~]# dnf install util-linux -y +``` + +**Installation of Script tool on Debian based systems (Ubuntu / Linux Mint)** + +Execute the beneath apt-get command to install script utility + +``` +root@linuxtechi ~]# apt-get install util-linux -y +``` + +### How to Use script utility + +Use of script command is straight forward, type script command on terminal then hit enter, it will start capturing your current terminal session activities inside a file called “**typescript**” + +``` +[root@linuxtechi ~]# script +Script started, file is typescript +[root@linuxtechi ~]# +``` + +To stop recording the session activities, type exit command and hit enter. + +``` +[root@linuxtechi ~]# exit +exit +Script done, file is typescript +[root@linuxtechi ~]# +``` + +Syntax of Script command: + +``` +~ ] # script {options} {file_name} +``` + +Different options used in script command, + +![options-script-command][1] + +Let’s start recording of your Linux terminal session by executing script command and then execute couple of command like ‘**w**’, ‘**route -n**’ , ‘[**df -h**][2]’ and ‘**free-h**’, example is shown below + +![script-examples-linux-server][3] + +As we can see above, terminal session logs are saved in the file “typescript” + +Now view the contents of typescript file using [cat][4] / vi command, + +``` +[root@linuxtechi ~]# ls -l typescript +-rw-r--r--. 1 root root 1861 Jun 21 00:50 typescript +[root@linuxtechi ~]# +``` + +![typescript-file-content-linux][5] + +Above confirms that whatever commands we execute on terminal that have been saved inside the file “typescript” + +### Use Custom File name in script command + +Let’s assume we want to use our customize file name to script command, so specify the file name after script command, in the below example we are using a file name “session-log-(current-date-time).txt” + +``` +[root@linuxtechi ~]# script sessions-log-$(date +%d-%m-%Y-%T).txt +Script started, file is sessions-log-21-06-2019-01:37:39.txt +[root@linuxtechi ~]# +``` + +Now run the commands and then type exit, + +``` +[root@linuxtechi ~]# exit +exit +Script done, file is sessions-log-21-06-2019-01:37:39.txt +[root@linuxtechi ~]# +``` + +### Append the commands output to script file + +Let assume script command had already recorded the commands output to a file called session-log.txt file and now we want to append output of new sessions commands output to this file, then use “**-a**” command in script command + +``` +[root@linuxtechi ~]# script -a sessions-log.txt +Script started, file is sessions-log.txt +[root@linuxtechi ~]# xfs_info /dev/mapper/centos-root +meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2746624 blks + = sectsz=512 attr=2, projid32bit=1 + = crc=1 finobt=0 spinodes=0 +data = bsize=4096 blocks=10986496, imaxpct=25 + = sunit=0 swidth=0 blks +naming =version 2 bsize=4096 ascii-ci=0 ftype=1 +log =internal bsize=4096 blocks=5364, version=2 + = sectsz=512 sunit=0 blks, lazy-count=1 +realtime =none extsz=4096 blocks=0, rtextents=0 +[root@linuxtechi ~]# exit +exit +Script done, file is sessions-log.txt +[root@linuxtechi ~]# +``` + +To view updated session’s logs, use “cat session-log.txt ” + +### Capture commands output to script file without interactive shell + +Let’s assume we want to capture commands output to a script file, then use **-c** option, example is shown below, + +``` +[root@linuxtechi ~]# script -c "uptime && hostname && date" root-session.txt +Script started, file is root-session.txt + 01:57:40 up 2:30, 3 users, load average: 0.00, 0.01, 0.05 +linuxtechi +Fri Jun 21 01:57:40 EDT 2019 +Script done, file is root-session.txt +[root@linuxtechi ~]# +``` + +### Run script command in quiet mode + +To run script command in quiet mode use **-q** option, this option will suppress the script started and script done message, example is shown below, + +``` +[root@linuxtechi ~]# script -c "uptime && date" -q root-session.txt + 02:01:10 up 2:33, 3 users, load average: 0.00, 0.01, 0.05 +Fri Jun 21 02:01:10 EDT 2019 +[root@linuxtechi ~]# +``` + +Record Timing information to a file and capture commands output to a separate file, this can be achieved in script command by passing timing file (**–timing**) , example is shown below, + +Syntax: + +~ ]# script -t <timing-file-name>  {file_name} + +``` +[root@linuxtechi ~]# script --timing=timing.txt session.log +Script started, file is session.log +[root@linuxtechi ~]# uptime + 02:27:59 up 3:00, 3 users, load average: 0.00, 0.01, 0.05 +[root@linuxtechi ~]# date +Fri Jun 21 02:28:02 EDT 2019 +[root@linuxtechi ~]# free -h + total used free shared buff/cache available +Mem: 3.9G 171M 2.0G 8.6M 1.7G 3.3G +Swap: 3.9G 0B 3.9G +[root@linuxtechi ~]# whoami +root +[root@linuxtechi ~]# exit +exit +Script done, file is session.log +[root@linuxtechi ~]# +[root@linuxtechi ~]# ls -l session.log timing.txt +-rw-r--r--. 1 root root 673 Jun 21 02:28 session.log +-rw-r--r--. 1 root root 414 Jun 21 02:28 timing.txt +[root@linuxtechi ~]# +``` + +### Replay recorded Linux terminal session activity + +Now replay the recorded terminal session activities using scriptreplay command, + +**Note:** Scriptreplay is also provided by rpm package “**util-linux**”. Scriptreplay command requires timing file to work. + +``` +[root@linuxtechi ~]# scriptreplay --timing=timing.txt session.log +``` + +Output of above command would be something like below, + + + +### Record all User’s Linux terminal session activities + +There are some business critical Linux servers where we want keep track on all users activity, so this can be accomplished using script command, place the following content in /etc/profile file , + +``` +[root@linuxtechi ~]# vi /etc/profile +…………………………………………………… +if [ "x$SESSION_RECORD" = "x" ] +then +timestamp=$(date +%d-%m-%Y-%T) +session_log=/var/log/session/session.$USER.$$.$timestamp +SESSION_RECORD=started +export SESSION_RECORD +script -t -f -q 2>${session_log}.timing $session_log +exit +fi +…………………………………………………… +``` + +Save & exit the file. + +Create the session directory under /var/log folder, + +``` +[root@linuxtechi ~]# mkdir /var/log/session +``` + +Assign the permissions to session folder, + +``` +[root@linuxtechi ~]# chmod 777 /var/log/session/ +[root@linuxtechi ~]# +``` + +Now verify whether above code is working or not. Login to ordinary user to linux server, in my I am using pkumar user, + +``` +~ ] # ssh root@linuxtechi +root@linuxtechi's password: +[root@linuxtechi ~]$ uptime + 04:34:09 up 5:06, 3 users, load average: 0.00, 0.01, 0.05 +[root@linuxtechi ~]$ date +Fri Jun 21 04:34:11 EDT 2019 +[root@linuxtechi ~]$ free -h + total used free shared buff/cache available +Mem: 3.9G 172M 2.0G 8.6M 1.7G 3.3G +Swap: 3.9G 0B 3.9G +[root@linuxtechi ~]$ id +uid=1001(pkumar) gid=1002(pkumar) groups=1002(pkumar) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 +[root@linuxtechi ~]$ whoami +pkumar +[root@linuxtechi ~]$ exit + +Login as root and view user’s linux terminal session activity + +[root@linuxtechi ~]# cd /var/log/session/ +[root@linuxtechi session]# ls -l | grep pkumar +-rw-rw-r--. 1 pkumar pkumar 870 Jun 21 04:34 session.pkumar.19785.21-06-2019-04:34:05 +-rw-rw-r--. 1 pkumar pkumar 494 Jun 21 04:34 session.pkumar.19785.21-06-2019-04:34:05.timing +[root@linuxtechi session]# +``` + +![Session-output-file-linux][6] + +We can also use scriptreplay command to replay user’s terminal session activities, + +``` +[root@linuxtechi session]# scriptreplay --timing session.pkumar.19785.21-06-2019-04\:34\:05.timing session.pkumar.19785.21-06-2019-04\:34\:05 +``` + +That’s all from this tutorial, please do share your feedback and comments in the comments section below. + +-------------------------------------------------------------------------------- + +via: https://www.linuxtechi.com/record-replay-linux-terminal-sessions-activity/ + +作者:[Pradeep Kumar][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.linuxtechi.com/author/pradeep/ +[b]: https://github.com/lujun9972 +[1]: https://www.linuxtechi.com/wp-content/uploads/2019/06/options-script-command.png +[2]: https://www.linuxtechi.com/11-df-command-examples-in-linux/ +[3]: https://www.linuxtechi.com/wp-content/uploads/2019/06/script-examples-linux-server-1024x736.jpg +[4]: https://www.linuxtechi.com/cat-command-examples-for-beginners-in-linux/ +[5]: https://www.linuxtechi.com/wp-content/uploads/2019/06/typescript-file-content-linux-1024x794.jpg +[6]: https://www.linuxtechi.com/wp-content/uploads/2019/06/Session-output-file-linux-1024x353.jpg From 984b7654c06721264fcca9999ad2e31fa4e8d648 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 2 Jul 2019 00:53:25 +0800 Subject: [PATCH 221/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190701=20Get=20?= =?UTF-8?q?modular=20with=20Python=20functions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190701 Get modular with Python functions.md --- ...90701 Get modular with Python functions.md | 337 ++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 sources/tech/20190701 Get modular with Python functions.md diff --git a/sources/tech/20190701 Get modular with Python functions.md b/sources/tech/20190701 Get modular with Python functions.md new file mode 100644 index 0000000000..a424323503 --- /dev/null +++ b/sources/tech/20190701 Get modular with Python functions.md @@ -0,0 +1,337 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Get modular with Python functions) +[#]: via: (https://opensource.com/article/19/7/get-modular-python-functions) +[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/xd-deng/users/nhuntwalker/users/don-watkins) + +Get modular with Python functions +====== +Minimize your coding workload by using Python functions for repeating +tasks. +![OpenStack source code \(Python\) in VIM][1] + +Are you confused by fancy programming terms like functions, classes, methods, libraries, and modules? Do you struggle with the scope of variables? Whether you're a self-taught programmer or a formally trained code monkey, the modularity of code can be confusing. But classes and libraries encourage modular code, and modular code can mean building up a collection of multipurpose code blocks that you can use across many projects to reduce your coding workload. In other words, if you follow along with this article's study of [Python][2] functions, you'll find ways to work smarter, and working smarter means working less. + +This article assumes enough Python familiarity to write and run a simple script. If you haven't used Python, read my [intro to Python][3] article first. + +### Functions + +Functions are an important step toward modularity because they are formalized methods of repetition. If there is a task that needs to be done again and again in your program, you can group the code into a function and call the function as often as you need it. This way, you only have to write the code once, but you can use it as often as you like. + +Here is an example of a simple function: + + +``` +#!/usr/bin/env python3 + +import time + +def Timer(): +        print("Time is " + str(time.time() ) ) +``` + +Create a folder called **mymodularity** and save the function code as **timestamp.py**. + +In addition to this function, create a file called **__init__.py** in the **mymodularity** directory. You can do this in a file manager or a Bash shell: + + +``` +`$ touch mymodularity/__init__.py` +``` + +You have now created your own Python library (a "module," in Python lingo) in your Python package called **mymodularity**. It's not a very useful module, because all it does is import the **time** module and print a timestamp, but it's a start. + +To use your function, treat it just like any other Python module. Here's a small application that tests the accuracy of Python's **sleep()** function, using your **mymodularity** package for support. Save this file as **sleeptest.py** _outside_ the **mymodularity** directory (if you put this _into_ **mymodularity**, then it becomes a module in your package, and you don't want that). + + +``` +#!/usr/bin/env python3 + +import time +from mymodularity import timestamp + +print("Testing Python sleep()...") + +# modularity +timestamp.Timer() +time.sleep(3) +timestamp.Timer() +``` + +In this simple script, you are calling your **timestamp** module from your **mymodularity** package (twice). When you import a module from a package, the usual syntax is to import the module you want from the package and then use the _module name + a dot + the name of the function you want to call_ (e.g., **timestamp.Timer()**). + +You're calling your **Timer()** function twice, so if your **timestamp** module were more complicated than this simple example, you'd be saving yourself quite a lot of repeated code. + +Save the file and run it: + + +``` +$ python3 ./sleeptest.py +Testing Python sleep()... +Time is 1560711266.1526039 +Time is 1560711269.1557732 +``` + +According to your test, the sleep function in Python is pretty accurate: after three seconds of sleep, the timestamp was successfully and correctly incremented by three, with a little variance in microseconds. + +The structure of a Python library might seem confusing, but it's not magic. Python is _programmed_ to treat a folder full of Python code accompanied by an **__init__.py** file as a package, and it's programmed to look for available modules in its current directory _first_. This is why the statement **from mymodularity import timestamp** works: Python looks in the current directory for a folder called **mymodularity**, then looks for a **timestamp** file ending in **.py**. + +What you have done in this example is functionally the same as this less modular version: + + +``` +#!/usr/bin/env python3 + +import time +from mymodularity import timestamp + +print("Testing Python sleep()...") + +# no modularity +print("Time is " + str(time.time() ) ) +time.sleep(3) +print("Time is " + str(time.time() ) ) +``` + +For a simple example like this, there's not really a reason you wouldn't write your sleep test that way, but the best part about writing your own module is that your code is generic so you can reuse it for other projects. + +You can make the code more generic by passing information into the function when you call it. For instance, suppose you want to use your module to test not the _computer's_ sleep function, but a _user's_ sleep function. Change your **timestamp** code so it accepts an incoming variable called **msg**, which will be a string of text controlling how the **timestamp** is presented each time it is called: + + +``` +#!/usr/bin/env python3 + +import time + +# updated code +def Timer(msg): +    print(str(msg) + str(time.time() ) ) +``` + +Now your function is more abstract than before. It still prints a timestamp, but what it prints for the user is undefined. That means you need to define it when calling the function. + +The **msg** parameter your **Timer** function accepts is arbitrarily named. You could call the parameter **m** or **message** or **text** or anything that makes sense to you. The important thing is that when the **timestamp.Timer** function is called, it accepts some text as its input, places whatever it receives into a variable, and uses the variable to accomplish its task. + +Here's a new application to test the user's ability to sense the passage of time correctly: + + +``` +#!/usr/bin/env python3 + +from mymodularity import timestamp + +print("Press the RETURN key. Count to 3, and press RETURN again.") + +input() +timestamp.Timer("Started timer at ") + +print("Count to 3...") + +input() +timestamp.Timer("You slept until ") +``` + +Save your new application as **response.py** and run it: + + +``` +$ python3 ./response.py +Press the RETURN key. Count to 3, and press RETURN again. + +Started timer at 1560714482.3772075 +Count to 3... + +You slept until 1560714484.1628013 +``` + +### Functions and required parameters + +The new version of your timestamp module now _requires_ a **msg** parameter. That's significant because your first application is broken because it doesn't pass a string to the **timestamp.Timer** function: + + +``` +$ python3 ./sleeptest.py +Testing Python sleep()... +Traceback (most recent call last): +  File "./sleeptest.py", line 8, in <module> +    timestamp.Timer() +TypeError: Timer() missing 1 required positional argument: 'msg' +``` + +Can you fix your **sleeptest.py** application so it runs correctly with the updated version of your module? + +### Variables and functions + +By design, functions limit the scope of variables. In other words, if a variable is created within a function, that variable is available to _only_ that function. If you try to use a variable that appears in a function outside the function, an error occurs. + +Here's a modification of the **response.py** application, with an attempt to print the **msg** variable from the **timestamp.Timer()** function: + + +``` +#!/usr/bin/env python3 + +from mymodularity import timestamp + +print("Press the RETURN key. Count to 3, and press RETURN again.") + +input() +timestamp.Timer("Started timer at ") + +print("Count to 3...") + +input() +timestamp.Timer("You slept for ") + +print(msg) +``` + +Try running it to see the error: + + +``` +$ python3 ./response.py +Press the RETURN key. Count to 3, and press RETURN again. + +Started timer at 1560719527.7862902 +Count to 3... + +You slept for 1560719528.135406 +Traceback (most recent call last): +  File "./response.py", line 15, in <module> +    print(msg) +NameError: name 'msg' is not defined +``` + +The application returns a **NameError** message because **msg** is not defined. This might seem confusing because you wrote code that defined **msg**, but you have greater insight into your code than Python does. Code that calls a function, whether the function appears within the same file or if it's packaged up as a module, doesn't know what happens inside the function. A function independently performs its calculations and returns what it has been programmed to return. Any variables involved are _local_ only: they exist only within the function and only as long as it takes the function to accomplish its purpose. + +#### Return statements + +If your application needs information contained only in a function, use a **return** statement to have the function provide meaningful data after it runs. + +They say time is money, so modify your timestamp function to allow for an imaginary charging system: + + +``` +#!/usr/bin/env python3 + +import time + +def Timer(msg): +    print(str(msg) + str(time.time() ) ) +    charge = .02 +    return charge +``` + +The **timestamp** module now charges two cents for each call, but most importantly, it returns the amount charged each time it is called. + +Here's a demonstration of how a return statement can be used: + + +``` +#!/usr/bin/env python3 + +from mymodularity import timestamp + +print("Press RETURN for the time (costs 2 cents).") +print("Press Q RETURN to quit.") + +total = 0 + +while True: +    kbd = input() +    if kbd.lower() == "q": +        print("You owe $" + str(total) ) +        exit() +    else: +        charge = timestamp.Timer("Time is ") +        total = total+charge +``` + +In this sample code, the variable **charge** is assigned as the endpoint for the **timestamp.Timer()** function, so it receives whatever the function returns. In this case, the function returns a number, so a new variable called **total** is used to keep track of how many changes have been made. When the application receives the signal to quit, it prints the total charges: + + +``` +$ python3 ./charge.py +Press RETURN for the time (costs 2 cents). +Press Q RETURN to quit. + +Time is 1560722430.345412 + +Time is 1560722430.933996 + +Time is 1560722434.6027434 + +Time is 1560722438.612629 + +Time is 1560722439.3649364 +q +You owe $0.1 +``` + +#### Inline functions + +Functions don't have to be created in separate files. If you're just writing a short script specific to one task, it may make more sense to just write your functions in the same file. The only difference is that you don't have to import your own module, but otherwise the function works the same way. Here's the latest iteration of the time test application as one file: + + +``` +#!/usr/bin/env python3 + +import time + +total = 0 + +def Timer(msg): +    print(str(msg) + str(time.time() ) ) +    charge = .02 +    return charge + +print("Press RETURN for the time (costs 2 cents).") +print("Press Q RETURN to quit.") + +while True: +    kbd = input() +    if kbd.lower() == "q": +        print("You owe $" + str(total) ) +        exit() +    else: +        charge = Timer("Time is ") +        total = total+charge +``` + +It has no external dependencies (the **time** module is included in the Python distribution), and produces the same results as the modular version. The advantage is that everything is located in one file, and the disadvantage is that you cannot use the **Timer()** function in some other script you are writing unless you copy and paste it manually. + +#### Global variables + +A variable created outside a function has nothing limiting its scope, so it is considered a _global_ variable. + +An example of a global variable is the **total** variable in the **charge.py** example used to track current charges. The running total is created outside any function, so it is bound to the application rather than to a specific function. + +A function within the application has access to your global variable, but to get the variable into your imported module, you must send it there the same way you send your **msg** variable. + +Global variables are convenient because they seem to be available whenever and wherever you need them, but it can be difficult to keep track of their scope and to know which ones are still hanging around in system memory long after they're no longer needed (although Python generally has very good garbage collection). + +Global variables are important, though, because not all variables can be local to a function or class. That's easy now that you know how to send variables to functions and get values back. + +### Wrapping up functions + +You've learned a lot about functions, so start putting them into your scripts—if not as separate modules, then as blocks of code you don't have to write multiple times within one script. In the next article in this series, I'll get into Python classes. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/get-modular-python-functions + +作者:[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/xd-deng/users/nhuntwalker/users/don-watkins +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/openstack_python_vim_1.jpg?itok=lHQK5zpm (OpenStack source code (Python) in VIM) +[2]: https://www.python.org/ +[3]: https://opensource.com/article/17/10/python-101 From 7c2a2b7779d4832e8a3ec9967a7c469177a5d2e2 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 2 Jul 2019 00:55:05 +0800 Subject: [PATCH 222/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190701=20How=20?= =?UTF-8?q?to=20use=20to=20infrastructure=20as=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190701 How to use to infrastructure as code.md --- ...01 How to use to infrastructure as code.md | 373 ++++++++++++++++++ 1 file changed, 373 insertions(+) create mode 100644 sources/tech/20190701 How to use to infrastructure as code.md diff --git a/sources/tech/20190701 How to use to infrastructure as code.md b/sources/tech/20190701 How to use to infrastructure as code.md new file mode 100644 index 0000000000..8b8d931d0f --- /dev/null +++ b/sources/tech/20190701 How to use to infrastructure as code.md @@ -0,0 +1,373 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use to infrastructure as code) +[#]: via: (https://opensource.com/article/19/7/infrastructure-code) +[#]: author: (Michael Zamot https://opensource.com/users/mzamot) + +How to use to infrastructure as code +====== +As your servers and applications grow, it becomes harder to maintain and +keep track of them if you don't treat your infrastructure as code. +![Magnifying glass on code][1] + +My previous article about [setting up a homelab][2] described many options for building a personal lab to learn new technology. Regardless of whichever solution you choose, as your servers and applications grow, it will become harder and harder to maintain and keep track of them if you don't establish control. To avoid this, it's essential to treat your infrastructure as code. + +This article is about infrastructure as code (IaC) best practices and includes a sample project automating the deployment of two virtual machines (VMs) and installing [Keepalived][3] and [Nginx][4] while implementing these practices. You can find all the [code for this project][5] on GitHub. + +### Why is IaC important? Aren't my scripts enough? + +No, scripts are not enough. Over time, scripts become hard to maintain and hard to keep track of. IaC can help you maintain uniformity and scalability while saving lots of time that you would waste if you did every task manually. + +One of the problems with the culture of managing servers manually or partially automated is the lack of consistency and control, which (more often than not) causes configuration drifts and undocumented changes to applications or servers. If a server or a virtual machine has to be replaced, it's time-consuming to manually install every piece of software and do every bit of configuration. + +With IaC, hundreds of servers can be provisioned, deployed, and configured, usually from a centralized location, and every configuration can be tracked in a version-control system. If a configuration file has to be modified, instead of connecting to every server, the file can be altered locally and the code pushed to the version-control system. The same is true with scaling up or replacing damaged servers. The entire infrastructure is managed centrally, all the code is kept in a version-control repository like Git, and any changes required by the servers are done using this code alone. No more unique unicorns! (Sorry, unicorns!) + +One of IaC's main benefits is its integration with [CI/CD][6] tools like [Jenkins][7], which allows you to test more often and create deployment pipelines that automate moving versions of applications from one environment to the next. + +### So, how do you start? + +Start by doing an inventory of every application, service, and configuration needed by a server; review every piece of software installed, collect the configuration files, verify their parameters, and find where you can replicate the server. + +When you have identified everything you need, remember: + + * Use version control; everything should be tracked using version control. + * Code everything; nothing should be done manually. Use code to describe the desired state. + * Idempotence. Every result from the code you write should always yield the same result, no matter how many times it is executed. + * Make your code modular. + * Test, test, test + * Again: Use version control. Don't _ever_ forget this. + + + +#### Prerequisites + +You need two virtual machines with CentOS 7 installed. SSH login with keys should be working. + +Create a directory called **homelab**. This will be your work directory, and this tutorial will refer to it as **$PWD**. Create two other directories inside this directory: **roles** and **group_vars**: + + +``` +$ mkdir -p homelab/{roles,group_vars} +$ cd homelab +``` + +#### Version control + +The first best practice is to always keep track of everything: automation, configuration files, templates. Version-control systems like Git make it easy for users to collaborate by providing a centralized repository where all the code, configurations, templates, etc. can be found. It also lets users review or restore older versions of files. + +If you don't have one, create an account in GitHub or GitLab (or use any other version-control provider of your choice). + +Inside **$PWD**, initialize your Git repo: + + +``` +$ echo "# IaC example" >> README.md +$ git init +$ git add README.md +$ git commit -m "First commit" +$ git remote add origin <your Git URL> +$ git push -u origin master +``` + +#### Code everything + +The main idea of IaC is to manage—as much as possible—all your infrastructure with code. Any change required in a server, application, or configuration must be defined in the code. Configuration files can be converted into templates to enable greater flexibility and reusability. Settings specific to applications or servers must also be coded, usually in variable files. + +When creating the automation, it is crucial to remember idempotence: No matter how many times the code is executed, it should always have the same result. Same input, same result. For example, when writing a piece of code that modifies a file, you must ensure that if the same code is executed again, the file will look the same. + +The following steps are automated, and the code is idempotent. + +### Modularity + +When writing infrastructure as code, it is imperative to think about reusability. Most of the code you write should be reusable and scalable. + +When writing [Ansible][8] roles, the best approach is to follow the Unix philosophy: "Write programs that do one thing and do it well." Therefore, create multiple roles, one for each piece of software: 1) a "base" or "common" role that prepares each VM regardless of its purpose; 2) a role to install and configure Keepalived (for high availability); 3) a role to install and configure Nginx (web server). This method allows each role to be reused for different kinds of servers and will save a lot of coding in the future. + +#### Create the base role + +This role will prepare the VM with all the steps it needs after it is provisioned. Think about any configurations or software each server needs; they should go in this module. In this example, the base role will: + + * Change the hostname + * Install security updates + * Enable [EPEL][9] and install utilities + * Customize the welcome message + + + +Create the basic role skeleton inside **$PWD/roles**: + + +``` +`$ ansible-galaxy init --offline base` +``` + +The main file for the role is **$PWD/roles/base/tasks/main.yml**. Modify it with the following content: + + +``` +\--- +# We set the hostname to the value in the inventory +\- name: Change hostname +  hostname: +    name: "{{ inventory_hostname }}" + +\- name: Update the system +  yum: +    name: "*" +    state: latest + +\- name: Install basic utilities +  yum: +    name: ['epel-release', 'tmux', 'vim', 'wget', 'nfs-utils'] +    state: present + +\- name: Copy motd +  template: +    src: motd.j2 +    dest: /etc/motd +``` + +Create the template file that will replace **/etc/motd** by creating the file **$PWD/roles/base/templates/motd.j2** + + +``` +UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED + +You must have explicit, authorized permission to access or configure "{{ inventory_hostname }}". Unauthorized attempts and actions to access or use this system may result in civil and/or criminal penalties. All activities performed on this device are logged and monitored. +``` + +Every task in this code is idempotent. No matter how many times the code is executed, it will always yield exactly the same result. Notice how **/etc/motd** is modified; if the file were modified by adding or appending content (instead of using a template), it would have failed the idempotence rule, because a new line would be added every time it was executed. + +#### Create the Keepalived role + +You could create a role that includes both **Keepalived** and **Nginx**. But what would happen if you ever needed to install Keepalived without a web server? The code would have to be duplicated, wasting time, effort, and simplicity. Keeping roles minimal and straightforward is the way to go. + +The automation code should always handle configuration files so they can be tracked in your version-control system. But how do you handle configuration files when settings can have different values per host? Use templates! Templates allow you to use variables and facts, giving you flexibility with the benefits of uniformity. + +Create the Keepalived role skeleton within **$PWD/roles**: + + +``` +`$ ansible-galaxy init --offline keepalived` +``` + +Modify the main task file **$PWD/roles/keepalived/tasks/main.yml** as follows: + + +``` +\--- +\- name: Install keepalived +  yum: +    name: "keepalived" +    state: latest + +\- name: Configure keepalived with the right settings +  template: +    src: keepalived.j2 +    dest: /etc/keepalived/keepalived.conf +  notify: restart keepalived +``` + +**$PWD/roles/keepalived/handlers/main.yml**: + + +``` +\--- +# handlers file for keepalived +\- name: restart keepalived +  service: +    name: keepalived +    enabled: yes +    state: restarted +``` + +And create the configuration template file **$PWD/roles/keepalived/templates/keepalived.j2**: + + +``` +#### File handled by Ansible. + +vrrp_script chk_nginx { +  script "pidof nginx" # check the nginx process +  interval 2 # every 2 seconds +  weight 2 # add 2 points if OK +} + +vrrp_instance LAB { +  interface {{ keepalived_nic }} # interface to monitor +  state {{ keepalived_state }} +  virtual_router_id {{ keepalived_vri }} +  priority {{ keepalived_priority }} +  virtual_ipaddress { +    {{ keepalived_vip }} +  } +  track_script { +    chk_nginx +  } +} +``` + +The Keepalived configuration file was converted into a template. It is a typical Keepalived configuration file, but instead of hardcoding values, it is parameterized. + +When automating infrastructure and configuration files, it's vital to analyze application configuration files carefully, noting which values are the same across the environments and which settings are unique to each server. Again, every time the template is processed, it should yield the same result. Create variables, use Ansible facts; this adds up to modularity and flexibility. + +#### Create the Nginx role + +This simple role will install and configure Nginx using a template, following the same principles discussed above. A template will be used for this role to generate an **index.html** with the host's internet protocol (IP). [Other facts][10] can be used, too. + +Modify the main task file **$PWD/roles/nginx/tasks/main.yml** as follows: + + +``` +\--- +# tasks file for nginx +\- name: Install nginx +  yum: +    name: 'nginx' +    state: 'latest' +  notify: start nginx + +\- name: Create web directory +  file: +    path: /var/www +    state: directory +    mode: '0755' + +\- name: Create index.html +  template: +    src: index.html.j2 +    dest: /var/www/index.html + +\- name: Configure nginx +  template: +    src: lb.conf.j2 +    dest: /etc/nginx/conf.d/lb.conf +  notify: restart nginx +``` + +Modify the main task file **$PWD/roles/nginx/handlers/main.yml** as follows: + + +``` +\--- +\- name: start nginx +  systemd: +    name: 'nginx' +    state: 'started' +    enabled: yes + +\- name: restart nginx +  systemd: +    name: 'nginx' +    state: 'restarted' +``` + +And create the following two configuration template files:  + +**$PWD/roles/nginx/templates/site.conf.j2:** + + +``` +server { +  listen {{ keepalived_vip }}:80; +  root /var/www; +  location / { +  } +} +``` + +**$PWD/roles/nginx/templates/index.html.j2**: + + +``` +`Hello, my ip is {{ ansible_default_ipv4.address }}` +``` + +### Put it all together + +You've created several roles; they are ready to be used, so create a playbook to use them. + +Create a file called **$PWD/main.yml**: + + +``` +\--- +\- hosts: webservers +  become: yes +  roles: + - base +  - nginx +  - keepalived +``` + +This file defines what roles go where. If more roles are available, they can be included to create different combinations as needed. Some servers can be web servers only, for example. This flexibility is one of the main reasons it's so essential to write minimal functional units. + +The previous roles require variables to work. Ansible is really flexible and lets you define variable files. This example creates a file called **all inside group_vars** (**$PWD/group_vars/all**). If more flexibility is needed, variables can be defined per host inside a folder called **host_vars**: + + +``` +\--- +keepalived_nic: eth0 +keepalived_vri: 51 +keepalived_vip: 192.168.2.180 +``` + +Configure **keepalived_nic** with your preferred Keepalived interface, usually **eth0**. The variable **keepalived_vip** should have the IP needed to use as a virtual IP. + +And finally, define the inventory. This inventory should keep track of your entire infrastructure. It's best to use dynamic inventories that gather all the information directly from the hypervisor so it doesn't have to be updated manually. Create a file called **inventory** with a section called **webservers** containing information about the two VMs: + + +``` +[webservers] +webserver01  ansible_user=centos ansible_host=192.168.2.101 keepalived_state=MASTER keepalived_priority=101 +webserver02  ansible_user=centos ansible_host=192.168.2.102 keepalived_state=BACKUP keepalived_priority=100 +``` + +The variable **ansible_user** should have the user Ansible will use to connect to the server. The variable **keepalived_state** should indicate if the host will be configured as a Master or Backup (as required in the Keepalived template file). Finally, set the variable **keepalived_priority** here because the master should have a higher priority than the backup. + +And that's it; you've automated configuration of two VMs, installing Keepalived and Nginx. + +Now save your changes: + + +``` +$ git add . +$ git commit -m "IaC playbook" +$ git push -u origin master +``` + +and deploy: + + +``` +`$ ansible-playbook -i inventory main.yml` +``` + +This project investigated basic IaC concepts, but it doesn't end here. Learn more by exploring how to do automated server provisioning, unit testing, and integration with CI/CD tools and pipelines. It's a long process, but it's worth it, both technically and career-wise. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/infrastructure-code + +作者:[Michael Zamot][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/mzamot +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/find-file-linux-code_magnifying_glass_zero.png?itok=E2HoPDg0 (Magnifying glass on code) +[2]: https://opensource.com/article/19/3/home-lab +[3]: https://www.keepalived.org/ +[4]: https://www.nginx.com/ +[5]: https://github.com/mzamot/os-homelab-example +[6]: https://en.wikipedia.org/wiki/CI/CD +[7]: https://jenkins.io/ +[8]: https://www.ansible.com/ +[9]: https://fedoraproject.org/wiki/EPEL +[10]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variables-discovered-from-systems-facts From e03b6cdabe2ae1025bea478567a92625b73e5471 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 2 Jul 2019 00:57:21 +0800 Subject: [PATCH 223/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190701=20Temper?= =?UTF-8?q?ed=20Networks=20simplifies=20secure=20network=20connectivity=20?= =?UTF-8?q?and=20microsegmentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190701 Tempered Networks simplifies secure network connectivity and microsegmentation.md --- ...work connectivity and microsegmentation.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 sources/talk/20190701 Tempered Networks simplifies secure network connectivity and microsegmentation.md diff --git a/sources/talk/20190701 Tempered Networks simplifies secure network connectivity and microsegmentation.md b/sources/talk/20190701 Tempered Networks simplifies secure network connectivity and microsegmentation.md new file mode 100644 index 0000000000..5cf40e865d --- /dev/null +++ b/sources/talk/20190701 Tempered Networks simplifies secure network connectivity and microsegmentation.md @@ -0,0 +1,99 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Tempered Networks simplifies secure network connectivity and microsegmentation) +[#]: via: (https://www.networkworld.com/article/3405853/tempered-networks-simplifies-secure-network-connectivity-and-microsegmentation.html) +[#]: author: (Linda Musthaler https://www.networkworld.com/author/Linda-Musthaler/) + +Tempered Networks simplifies secure network connectivity and microsegmentation +====== +Tempered Networks’ Identity Defined Network platform uses the Host Identity Protocol to partition and isolate the network into trusted microsegments, providing an easy and cost-effective way to secure the network. +![Thinkstock][1] + +The TCP/IP protocol is the foundation of the internet and pretty much every single network out there. The protocol was designed 45 years ago and was originally only created for connectivity. There’s nothing in the protocol for security, mobility, or trusted authentication. + +The fundamental problem with TCP/IP is that the IP address within the protocol represents both the device location and the device identity on a network. This dual functionality of the address lacks the basic mechanisms for security and mobility of devices on a network. + +This is one of the reasons networks are so complicated today. To connect to things on a network or over the internet, you need VPNs, firewalls, routers, cell modems, etc. and you have all the configurations that come with ACLs, VLANs, certificates, and so on. The nightmare grows exponentially when you factor in internet of things (IoT) device connectivity and security. It’s all unsustainable at scale. + +Clearly, we need a more efficient and effective way to take on network connectivity, mobility, and security. + +**[ Also read: [What is microsegmentation? How getting granular improves network security][2] | Get regularly scheduled insights: [Sign up for Network World newsletters][3] ]** + +The Internet Engineering Task Force (IETF) tackled this problem with the Host Identity Protocol (HIP). It provides a method of separating the endpoint identifier and the locator roles of IP addresses. It introduces a new Host Identity (HI) name space, based on public keys, from which endpoint identifiers are taken. HIP uses existing IP addressing and forwarding for locators and packet delivery.The protocol is compatible with IPv4 and IPv6 applications and utilizes a customized IPsec tunnel mode for confidentiality, authentication, and integrity of network applications. + +Ratified by IETF in 2015, HIP represents a new security networking layer within the OSI stack. Think of it as Layer 3.5. It’s a flip of the trust model where TCP/IP is inherently promiscuous and will answer to anything that wants to talk to a device on that network. In contrast, HIP is a trust protocol that will not answer to anything on the network unless that connection has been authenticated and authorized based on its cryptographic identity. It is, in effect, a form of a [software-defined perimeter][4] around specific network resources. This is also known as [microsegmentation][5]. + +![][6] + +### Tempered Networks’ IDN platform creates segmented, encrypted network + +[Tempered Networks][7] has created a platform utilizing the HIP and a variety of technologies that partitions and isolates the network into trusted microsegments. Tempered Networks’ Identity Defined Networking (IDN) platform is deployed as an overlay technology that layers on top of any IP network. The HIP was designed to be both forward and backward compatible with any IP network without having to make any changes to the underlay network. The overlay network creates a direct tunnel between the two things you want to connect. + +**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][8] ]** + +The IDN platform uses three components to create a segmented and encrypted network: an orchestration engine called the Conductor, the HIPrelay identity-based router, and HIP Services enforcement points. + +The Conductor is a centralized orchestration and intelligence engine that connects, protects, and disconnects any resource globally through a single pane of glass. The Conductor is used to define and enforce policies for HIP Services. Policy configuration is done in a simple point-and-click manner. The Conductor is available as a physical or virtual appliance or in the Amazon Web Services (AWS) cloud. + +HIP Services provide software-based policy enforcement, enabling secure connectivity among IDN-protected devices, as well as cloaking, segmentation, identity-based routing, and IP mobility. They can be deployed on or in-line to any device or system and come in the form of HIPswitch hardware, HIPserver, HIPclient, Cloud HIPswitch, or Virtual HIPswitch. HIP Services also can be embedded in customer hardware or applications. + +Placing HIPswitches in front of any connected device renders the device HIP-enabled and immediately microsegments the traffic, isolating inbound and outbound traffic from the underlying network. HIPswitches deployed on the network automatically register with the Conductor using their cryptographic identity. + +HIPrelay works with the HIP Service-enabled endpoints to deliver peer-to-peer connectivity for any device or system across all networks and transport options. Rather than using Layer 3 or 4 rule sets or traditional routing protocols, HIPrelay routes and connects encrypted communications based on provable cryptographic identities traversing existing infrastructure. + +It sounds complicated, but it really isn’t. A use case example should demonstrate the ease and power of this solution. + +### Use case: Smart Ships + +An international cruise line recently installed Tempered Networks’ IDN solution to provide tighter security around its critical maritime systems. Prior to deployment, the systems for fuel, propulsion, navigation, ballast, weather, and incinerators were on a flat Layer 2 network, which basically allowed authorized users of the network to see everything. + +Given that vendors of the different maritime systems had access to their own system, the lack of microsegmentation allowed them to see the other systems as well. The cruise line needed a simple way to segment access to these different systems — isolating them from each other — and they wanted to do it without having to put the ships in dry dock for the network reconfiguration. + +The original configuration looked like this: + +![][9] + +The company implemented microsegmentation of the network based on the functionality of the systems. This isolated and segmented vendor access to only their own systems — everything else was hidden to them. The implementation involved installing HIPrelay identity routing in the cloud, several HIPswitch wireless devices onboard the ships, and HIPclient software on the vendors’ and crew members’ devices. The Conductor appliance that managed the entire deployment was installed in AWS. + +All of that was done without impacting the underlying network, and no dry dock time was required for the deployment. In addition, the cruise line was able to eliminate internal firewalls and VPNs that had previously been used for segmentation and remote access. The resulting configuration looks like this: + +![][10] + +The color coding of the illustration above indicates what systems are now able to directly see and communicate with their corresponding controllers and sensors. Everything else on the network is hidden from view of those systems. + +The acquisition cost of the Tempered Networks’ solution was one-tenth that of a traditional microsegmentation solution. The deployment time was 2 FTE days per ship compared to the 40 FTE days a traditional solution would have needed. No additional staffing was required to support the solution, and no changes were made to the underlying network. + +### A time-tested microsegmentation solution + +This technology came out of Boeing and was deployed for over 12 years within their manufacturing facilities until 2014, when Boeing allowed the technology to become commercialized. Tempered Networks took the HIP and developed the full platform with easy, centralized management. It was purpose-built to provide secure connectivity to networks. The solution has been successfully deployed in industrial domains such as the utilities sector, oil and gas, electricity generation, and aircraft manufacturing, as well as in enterprise domains and healthcare. + +Join the Network World communities on [Facebook][11] and [LinkedIn][12] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3405853/tempered-networks-simplifies-secure-network-connectivity-and-microsegmentation.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://images.idgesg.net/images/article/2018/01/network_security_hacker_virus_crime-100745979-large.jpg +[2]: https://www.networkworld.com/article/3236448/lan-wan/what-to-consider-when-deploying-a-next-generation-firewall.html +[3]: https://www.networkworld.com/newsletters/signup.html +[4]: https://www.networkworld.com/article/3359363/software-defined-perimeter-brings-trusted-access-to-multi-cloud-applications-network-resources.html +[5]: https://www.networkworld.com/article/3247672/what-is-microsegmentation-how-getting-granular-improves-network-security.html +[6]: https://images.idgesg.net/images/article/2019/07/hip-slide-100800735-large.jpg +[7]: https://www.temperednetworks.com/ +[8]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr +[9]: https://images.idgesg.net/images/article/2019/07/cruise-ship-before-100800736-large.jpg +[10]: https://images.idgesg.net/images/article/2019/07/cruise-ship-after-100800738-large.jpg +[11]: https://www.facebook.com/NetworkWorld/ +[12]: https://www.linkedin.com/company/network-world From b5fb98a086ec35dcfaa7f9b56e5dab536164142f Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 2 Jul 2019 08:51:30 +0800 Subject: [PATCH 224/336] translated --- ... Deluge 2.0 Released- Here-s What-s New.md | 88 ------------------- ... Deluge 2.0 Released- Here-s What-s New.md | 83 +++++++++++++++++ 2 files changed, 83 insertions(+), 88 deletions(-) delete mode 100644 sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md create mode 100644 translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md diff --git a/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md deleted file mode 100644 index 446bf11a92..0000000000 --- a/sources/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md +++ /dev/null @@ -1,88 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (BitTorrent Client Deluge 2.0 Released: Here’s What’s New) -[#]: via: (https://itsfoss.com/deluge-2-release/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -BitTorrent Client Deluge 2.0 Released: Here’s What’s New -====== - -You probably already know that [Deluge][1] is one of the [best Torrent clients available for Linux users][2]. However, the last stable release was almost two years back. - -Even though it was in active development, a major stable release wasn’t there – until recently. The latest version while we write this happens to be 2.0.2. So, if you haven’t downloaded the latest stable version – do try it out. - -In either case, if you’re curious, let us talk about what’s new. - -![Deluge][3] - -### Major improvements in Deluge 2.0 - -The new release introduces multi-user support – which was a much needed addition. - -In addition to that, there has been several performance improvements to handle more torrents with faster loading times. - -Also, with version 2.0, Deluge used Python 3 with minimal support for Python 2.7. Even for the user interface, they migrated from GTK UI to GTK3. - -As per the release notes, there are several more significant additions/improvements, which include: - - * Multi-user support. - * Performance updates to handle thousands of torrents with faster loading times. - * A New Console UI which emulates GTK/Web UIs. - * GTK UI migrated to GTK3 with UI improvements and additions. - * Magnet pre-fetching to allow file selection when adding torrent. - * Fully support libtorrent 1.2 release. - * Language switching support. - * Improved documentation hosted on ReadTheDocs. - * AutoAdd plugin replaces built-in functionality. - - - -### How to install or upgrade to Deluge 2.0 - -![][4] - -You should follow the official [installation guide][5] (using PPA or PyPi) for any Linux distro. However, if you are upgrading, you should go through the note mentioned in the release note: - -“_Deluge 2.0 is not compatible with Deluge 1.x clients or daemons so these will require upgrading too._ _Also_ _third-party Python scripts may not be compatible if they directly connect to the Deluge client and will need migrating._“ - -So, they insist to always make a backup of your [config][6] before a major version upgrade to guard against data loss. - -[][7] - -Suggested read  Ubuntu's Snap Apps Website Gets Much Needed Improvements - -And, if you are an author of a plugin, you need to upgrade it make it compatible with the new release. - -Direct download app packages not yet available for Windows and Mac OS. However, the release note mentions that they are being worked on. - -As an alternative, you can install them manually by following the [installation guide][5] in the updated official documentation. - -**Wrapping Up** - -What do you think about the latest stable release? Do you utilize Deluge as your BitTorrent client? Or do you find something else as a better alternative? - -Let us know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/deluge-2-release/ - -作者:[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://dev.deluge-torrent.org/ -[2]: https://itsfoss.com/best-torrent-ubuntu/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/deluge.jpg?fit=800%2C410&ssl=1 -[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/Deluge-2-release.png?resize=800%2C450&ssl=1 -[5]: https://deluge.readthedocs.io/en/latest/intro/01-install.html -[6]: https://dev.deluge-torrent.org/wiki/Faq#WheredoesDelugestoreitssettingsconfig -[7]: https://itsfoss.com/snap-store/ diff --git a/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md new file mode 100644 index 0000000000..7c04b906fc --- /dev/null +++ b/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @@ -0,0 +1,83 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (BitTorrent Client Deluge 2.0 Released: Here’s What’s New) +[#]: via: (https://itsfoss.com/deluge-2-release/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +BitTorrent 客户端 Deluge 2.0 发布:新功能介绍 +====== + +你可能已经知道 [Deluge][1] 是[最适合 Linux 用户的 Torrent 客户端][2]之一。然而,最近的稳定版本差不多是两年前的了。 + +尽管它在积极开发中,但直到最近才出了一个主要的稳定版本。我们写这篇文章时,最新版本恰好是 2.0.2。所以,如果你还没有下载最新的稳定版本,请尝试一下。 + +不管如何,如果你好奇的话,让我们谈下有哪些新的功能。 + +![Deluge][3] + +### Deluge 2.0 的主要改进 + +新版本引入了多用户支持,这是一个非常需要的功能。 + +除此之外,还有一些性能改进可以更快地加载更多的种子。 + +此外,在 2.0 版本中,Deluge 使用了 Python 3,对 Python 2.7 提供最低支持。即使是用户界面,他们也从 GTK UI 迁移到了 GTK3。 + +根据发行说明,还有一些更重要的补充/改进,包括: + + * 多用户支持。 +  * 性能提升,可以更快地加载数千个种子。 +  * 一个模拟 GTK/Web UI 的新控制台 UI。 +  * GTK UI 迁移到 GTK3,并伴随 UI 改进和补充。 +  * 磁链预获取功能以便在添加种子时选择文件。 +  * 完全支持 libtorrent 1.2。 +  * 语言切换支持。 +  * 改进了在 ReadTheDocs 托管的文档。 +  * AutoAdd 插件取代了内置功能。 + + + +### 如何安装或升级到 Deluge 2.0 + +![][4] + +对于任何 Linux 发行版,你都应该遵循官方[安装指南][5](使用 PPA 或 PyPi)。但是,如果你要升级,你应该留意发行说明中提到的: + +“_Deluge 2.0与 Deluge 1.x 客户端或守护进程不兼容,因此这些也需要升级。如果第三方脚本直接连接到 Deluge 客户端,那么可能也不兼容且需要迁移。_” + +因此,坚持在升级主版本之前备份你的[配置][6]以免数据丢失。 + +而且,如果你是插件作者,那么需要升级它以使其与新版本兼容。 + +直接下载的安装包尚不包含 Windows 和 Mac OS。但是,说明中提到他们正在进行中。 + +除此之外,你可以按照更新后的官方文档中的[安装指南][5]来手动安装它们。 + +**总结** + +你如何看待最新的稳定版本?你是否将 Deluge 用作 BitTorrent 客户端?或者你是否找到了其他更好的选择? + +请在下面的评论栏告诉我们你的想法。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/deluge-2-release/ + +作者:[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://dev.deluge-torrent.org/ +[2]: https://itsfoss.com/best-torrent-ubuntu/ +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/deluge.jpg?fit=800%2C410&ssl=1 +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/Deluge-2-release.png?resize=800%2C450&ssl=1 +[5]: https://deluge.readthedocs.io/en/latest/intro/01-install.html +[6]: https://dev.deluge-torrent.org/wiki/Faq#WheredoesDelugestoreitssettingsconfig From 56399b7bc8449adb0d6278e64c7ebbd9a52f45f2 Mon Sep 17 00:00:00 2001 From: chen ni Date: Tue, 2 Jul 2019 09:05:52 +0800 Subject: [PATCH 225/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=EF=BC=9A20190625=20The=20innovation=20delusion.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/20190625 The innovation delusion.md | 93 ------------------- .../tech/20190625 The innovation delusion.md | 88 ++++++++++++++++++ 2 files changed, 88 insertions(+), 93 deletions(-) delete mode 100644 sources/tech/20190625 The innovation delusion.md create mode 100644 translated/tech/20190625 The innovation delusion.md diff --git a/sources/tech/20190625 The innovation delusion.md b/sources/tech/20190625 The innovation delusion.md deleted file mode 100644 index 53f7ffb412..0000000000 --- a/sources/tech/20190625 The innovation delusion.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The innovation delusion) -[#]: via: (https://opensource.com/open-organization/19/6/innovation-delusion) -[#]: author: (Jim Whitehurst https://opensource.com/users/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans) - -The innovation delusion -====== -Innovation is a messy process. Our stories about it aren't. We shouldn't -confuse the two. -![gears and lightbulb to represent innovation][1] - -If [traditional planning is dead][2], then why do so many organizations still invest in planning techniques optimized for the Industrial Revolution? - -One reason might be that we trick ourselves into thinking innovation is the kind of thing we can accomplish with a structured, linear process. When we do this, I think we're confusing our _stories_ about innovation with the _process_ of innovation itself—and the two are very different. - -The _process_ of innovation is chaotic and unpredictable. It doesn't operate according to clean, regimented timelines. It's filled with iterative phases, sudden changes in direction, various starts and stops, dead ends, (hopefully productive) failures, and unknowable variables. It's messy. - -But the stories we tell ourselves about innovation, including the books and articles we read about great inventions and the tales we tell each other about our successes in the workplace, tidy that process up. Think about how many social media posts you've seen that feature nothing but the "high points." - -That's the nature of good storytelling. It takes a naturally scattered collection of moments and puts them neatly into a beginning, middle, and end. It smoothes out all the rough patches and makes a result seem inevitable from the start, despite whatever moments of uncertainty, panic, even despair we experienced along the way. - -We shouldn't confuse messy process with simplified story. When we do, we might mistakenly assume we can approach innovation challenges with the same practices we bring to neat and linear processes. In other words, we apply a set of management techniques appropriate for one set of activities (for more rote, mechanical, and prescriptive tasks) to a set of activities they aren't really suited for (more creative, non-linear work requiring autonomy and experimentation). - -If traditional planning is dead, then why do so many organizations still invest in planning techniques optimized for the Industrial Revolution? - -### An innovation story - -Here's [one of my favorite examples][2] of how this idea in action. - -In the 1970s, the British motorcycle industry was desperately trying to figure out why its U.S. market share was plummeting while Honda's was skyrocketing. The company hired my former employer, the Boston Consulting Group, to help them figure out what was going wrong. BCG gathered some historical data, reviewed a two-decade sequence of events, and developed a neat, linear story explaining Honda's success. - -Honda, [BCG concluded][3], had executed an ingenious strategy: enter the U.S market with smaller motorcycles it could sell at lower cost, use the economies of scale it had developed in the Japense market to set low prices and grow a market, then further leverage those economies of scale to grow their share in the States as demand grew. By all accounts, Honda had done it brilliantly, playing to its strengths while thoroughly and accurately assessing the new, target U.S. consumer. It had outsmarted, outflanked, and outperformed competitors with a well-executed plan. - -It _sounded_ great. But the reality was much less straightforward. - -Yes, Honda _did_ want to enter the U.S. motorcycle market. It initially attempted to [copy its competitors there][4], building the larger bikes Americans seemed to favor. But bikes like that weren't one of Honda's strengths, and their versions had reliability issues. To make matters worse, their models didn't look much different than other offerings already in the market, so they weren't standing out. Suffice it to say, sales were not booming. - -But in a happy coincidence, Honda's Japanese representatives visiting the States had brought their own motorcycles with them. Those bikes were different than the ones the company was attempting to sell to the American market. They were smaller, zippier, less bulky, more efficient, and generally less expensive. Sears took notice, contacted the reps, and the companies struck a deal that let Sears carry this new motorcycle—called the "Super Cub"—in its American stores. - -And the rest, as they say, is history. The Super Cub would go on to become the [best-selling motorized vehicle of all time][5], and Honda [continues to produce it today][6]. - -In hindsight, the events that brought the Super Cub to the U.S. seem logical, almost boring. But Honda owed its success less to an ingenious master plan and much more to serendipity and happenstance than most people care to admit. - -When success depends on things we don't or can't predict, is getting exactly what you've planned for good enough? - -### Open (and messy) innovation - -Organizations (and especially leaders) like to think that success is always planned—that they've become masters of chaos and can almost predict the future. But they're often making those assessments with the benefit of hindsight, telling the stories of their haphazard journey in a way that organizes the chaos, essentially reflecting on a period of uncertainty and saying "we meant to do that." - -But as I said, we shouldn't assume those stories are mirror reflections of the innovation process itself and build future initiatives or experiments on that mistaken assumption. - -Imagine another motorcycle manufacturer looking to replicate Honda's success with the Super Cub by following BCG's narrative to the letter. Because the _story_ of Honda's success seems so logical and linear, the new company might assume it could use similar processes and get the same results: plan objectives, prescribe behaviors, and execute against knowable outcomes. But we know that Honda didn't really win its market with that kind of "plan, prescribe, execute" mentality. It won through flexibility and a bit of blind luck—something more like "[try, learn, modify][7]." - -When we're able to appreciate and accept that the innovation process is messy, we allow ourselves to think differently about approaching innovation in our organizations. We can begin building the kinds of open and agile organizations capable of _responding to innovation as it happens_ instead of over-investing resources into pre-formed plans that try to _force_ innovation into a linear timeline. - -I saw this kind of approach several years ago, when Red Hat released a new version of a product that included a major technology update. [Version 5.4 of Red Hat Enterprise Linux][8] was the first to include full support for a technology called the Kernel-based Virtual Machine (or "KVM"). For us it was a significant innovation that promised to deliver immense value not only to customers and partners, but also to open source software communities. - -The technology was evolving quickly. Luckily, because we're an open organization, we were adaptable enough to respond to that innovation as it was happening and help our customers and partners take advantage of it. It was too important, and the competitive landscape too volatile, to justify withholding just so we could "save" it for a milestone moment like version 6.0. - -When you go back and review [the archived release notes][9] for Red Hat Enterprise Linux, you'll see that it doesn't "read" like a typical software innovation tale. A game-changing development pops up at an unpredicted and unremarkable moment (version 5.4), rather than a pre-planned blockbuster milestone (version 6.0). In hindsight, we now know that KVM _was_ the kind of "big bang" advancement that could have warranted a milestone release name like "6.0." But that's just not how the innovation process unfolded. - -Don't get me wrong, organizations still need to maintain operational excellence and perform execution-oriented tasks well. But [different kinds of challenges require different kinds of approaches][10], and we need to get better at building flexible organizations just as capable of [responding to the unforeseen or unknowable][11]. - -An organization great at planning (and executing against that plan) will quite likely get the results it planned for. But when success depends on things we _don't_ or _can't_ predict, is getting exactly what you've planned for good enough? - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/19/6/innovation-delusion - -作者:[Jim Whitehurst][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/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_lightbulb_gears_devops_ansible.png?itok=TSbmp3_M (gears and lightbulb to represent innovation) -[2]: https://www.youtube.com/watch?v=8MCbJmZQM9c -[3]: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/235319/0532.pdf -[4]: http://www.howardyu.org/the-revolutionary-approach-honda-took-to-rise-above-competition/ -[5]: https://autoweek.com/article/motorcycles/first-ride-honda-super-cub-c125-abs-all-new-and-still-super-cute -[6]: https://www.autoblog.com/2019/02/13/2019-honda-super-cub-first-ride-review/ -[7]: https://opensource.com/open-organization/18/3/try-learn-modify -[8]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.4_release_notes/index -[9]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.0_release_notes/index -[10]: https://opensource.com/open-organization/19/4/managed-enabled-empowered -[11]: https://www.linkedin.com/pulse/how-plan-world-full-unknowns-jim-whitehurst/ diff --git a/translated/tech/20190625 The innovation delusion.md b/translated/tech/20190625 The innovation delusion.md new file mode 100644 index 0000000000..8e20ad0d98 --- /dev/null +++ b/translated/tech/20190625 The innovation delusion.md @@ -0,0 +1,88 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The innovation delusion) +[#]: via: (https://opensource.com/open-organization/19/6/innovation-delusion) +[#]: author: (Jim Whitehurst https://opensource.com/users/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans) + +创新的幻觉 +====== +创新是一种混乱的过程,但是关于创新的故事却很有条理。我们不应该把两者搞混了。 +![gears and lightbulb to represent innovation][1] + +如果说 [传统的规划方法已经消亡了][2],为什么这么多机构还在孜孜不倦地运用那些针对工业革命所设计的规划方法呢? + +其中的一个原因是,我们错误地认为创新是可以通过结构化的、线性的过程实现的。我觉得这样做是在混淆关于创新的 **故事** 和创新这个 **过程** 本身 —— 两者是截然不同的东西。 + +创新的过程是混乱和不可预测的,并不遵循井然有序的时间线。过程中充满了重复迭代、突然的改变方向、各式各样的启动和终止、死胡同、失败(但愿是有用的失败),以及很多不可知的变量。创新是混乱的。 + +但是关于创新的故事却让事情显得很简单,从讲述伟大发明的书籍和文章,到我们(简化了整个过程之后)讲述自己在工作上的成功都是这样。想想你在社交媒体上读的帖子里,有多少都只写了最好的、最愉快的部分吧。 + +好故事就是这样。我们把一些原本分散的时间点干净利落地整理到一起,有开头、有发展、也有结尾。尽管我们一路上经历了很多没有把握、恐慌、甚至是绝望的时刻,在故事里这些坎坷却都被抹平了,让事情看起来像是从一开始就注定是成功的。 + +我们不应该把混乱的过程和简化了的故事搞混。否则,我们会错误地认为可以使用在简单线性过程中所使用的同样的方法迎接创新的挑战。换句话说,我们将适用于一种类型的活动(比较偏死记硬背、机械和规则性的任务)的管理技术应用在了并不适用的另一种类型的活动(更加有创造性的、非线性的工作,需要自主性和试验)上。 + +### 一个创新的故事 + +下面这个故事可以很好地说明这一点。这是我 [最喜欢举的例子][2] 之一。 + +在 1970 年代,英国的摩托车行业怎么也想不明白为什么他们在美国的市场份额急剧下降,而本田公司的市场份额却急速攀升。他们雇佣了波士顿咨询公司(刚好是我之前的雇主)帮助他们找出问题所在。波士顿咨询搜集了一些历史数据,回看了二十年的历史事件,总结出了一个井井有条的、线性的故事,可以很好地解释本田公司的成功。 + +[波士顿咨询的结论是][3],本田公司使用了一个巧妙的策略:通过一种可以以更低价格销售的偏小型摩托车进入美国市场,并且借助于他们在日本本土市场发展出来的规模经济,在美国市场使用低价策略发展市场份额,然后等到需求进一步增长的时候,再利用更大的规模经济发展他们在美国的市场份额。在所有人的眼中,本田公司都表现得非常出色,不仅发挥了自己的优势,还非常透彻和精准地理解了新的目标顾客:美国消费者。他们智胜一筹,通过一个执行得很好的计划占领了先机,胜过了竞争对手们。 + +这个故事 **听上去** 很厉害,但是实际情况没有这么简单。 + +没错,本田公司 **确实** 是想进入美国摩托车市场。他们最初是想 [效仿在美国的竞争对手][4],也制造美国人似乎更喜欢的大型摩托车。但是大型摩托车并不是本田公司的强项,他们生产的大型摩托车存在可靠性上的问题。更糟的是,他们的产品和市面上的其它产品没有什么差别,所以并不能脱颖而出。简单来说,他们的产品销售额表现平平。 + +但是在一次奇妙的巧合里,本田公司出访美国的日本代表们带了几辆自己开的摩托车。这些摩托车和本田公司试图在美国市场上销售的摩托车完全不同,它们更为小巧灵活、不那么笨重、更有效率,并且一般来说也更便宜。西尔斯公司(LCTT 译注:美国零售业巨头)注意到了这些小巧的摩托车,并且和日本代表达成了一项协议,让西尔斯公司可以在他们在美国的商店里出售这种被称为“超级幼兽”的新型摩托车。 + +剩下的故事已经载入史册。超级幼兽成为了 [史上最畅销的机动车][5],并且本田公司 [至今仍然在生产超级幼兽][6]。 + +事后看来,将超级幼兽带到美国的一连串事件似乎很有逻辑,近乎无聊了。但是本田公司的成功和“巧妙的计划”没有什么关系,而更应该归功于一些(大多数人不愿意承认的)机缘巧合。 + +### 开放(并且混乱的)创新 + +机构(特别是领导们)喜欢把成功说成是一件计划之内的事情 - 好像成功人士可以驾驭混乱,并且几乎可以预测未来。但是这些言论都是事后诸葛亮罢了,他们在讲述自己充满偶然性的经历的时候会刻意将无序的事情整理一番,对于毫无确定性的事情也会说“我们就是想要那么做的”。 + +但是正如我前面说的,我们不应该相信这些故事是创新过程的真实还原,也不应该在这种错误的假设的基础之上去构建未来的方案或者实验。 + +试想有另一家摩托车制造商想要复制本田公司在超级幼兽上的成功,就逐字逐句地照搬波士顿咨询总结的故事。由于本田公司成功的 **故事** 听上去是如此有逻辑,并且是线性的,这家新公司也许会假定他们可以通过类似的程序得到同样的结果:制定目标、谋划行动,然后针对可预期的结果进行执行。但是我们知道本田公司并不是真的靠这种“制定、谋划、执行”的方式赢得他们的市场份额的。他们是通过灵活性和一点运气获得成功的 - 更像是“尝试、学习、修改”。 + +当我们可以真正理解并且接受“创新过程是混乱的”这个事实的时候,我们就可以换种方式思考如何让我们的机构实现创新了。与其将资源浪费在预先制定的计划上,**强迫** 创新以一种线性时间线的方式发生,我们不如去构建一些开放并且敏捷的机构,可以 **在创新发生的时候做出及时的响应**。 + +几年前红帽公司发布一个包含了重大技术升级的产品的新版本的时候,我就看到了这样的方法。[红帽企业级 Linux 5.4 版本][8] 首次完全支持了一种被称为"基于内核的虚拟机"(KVM)的技术。这对于我们来说是一个重大的创新,不仅可以为顾客和合作伙伴带来巨大的价值,也有望为开源社区带来巨大的价值。 + +这项技术正在快速演进。幸运的事,因为我们是一个开放的机构,我们具有足够的适应能力,可以在这项创新发生的时候做出响应,从而帮助我们的顾客和合作伙伴可以更好地利用它。这项技术太重要了,并且竞争格局也太不稳定了,以至于我们没有理由要等到像 6.0 版本这样的里程碑时刻才出手。 + +如果你回看红帽企业级 Linux [已经存档的发行说明][9],你会发现它读起来并不像一个典型的软件创新的故事。一次改变游戏规则的进展突然出现在一个没有预测到的、并不起眼的时刻(5.4 版本),而不是一个事先计划好的重要里程碑时刻(6.0 版本)。事后看来,我们现在知道 KVM 这种“大爆炸”级别的进步是足够担得起 “6.0 版本”这样的里程碑式的名字的。但是创新并不是按照这样的剧本发生的。 + +不要误解我,机构仍然需要保持出色的运转,高效完成执行性的任务。但是 [不同的挑战需要不同的方法去应对][10],我们需要能够更好地建立灵活的机构,以及对 [意想不到和不可知的事情][11] 能够做出更好的响应。 + +一个在计划工作(以及按照计划执行)上做得很出色的公司很可能会得到他们计划要得到的结果。但是如果成功还取决于我们没有预测或者无法预测的的事情,那么仅仅精准地按照计划执行是不是就不够了? + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/19/6/innovation-delusion + +作者:[Jim Whitehurst][a] +选题:[lujun9972][b] +译者:[chen-ni](https://github.com/chen-ni) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jwhitehurst/users/jwhitehurst/users/n8chz/users/dhdeans +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_lightbulb_gears_devops_ansible.png?itok=TSbmp3_M (gears and lightbulb to represent innovation) +[2]: https://www.youtube.com/watch?v=8MCbJmZQM9c +[3]: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/235319/0532.pdf +[4]: http://www.howardyu.org/the-revolutionary-approach-honda-took-to-rise-above-competition/ +[5]: https://autoweek.com/article/motorcycles/first-ride-honda-super-cub-c125-abs-all-new-and-still-super-cute +[6]: https://www.autoblog.com/2019/02/13/2019-honda-super-cub-first-ride-review/ +[7]: https://opensource.com/open-organization/18/3/try-learn-modify +[8]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.4_release_notes/index +[9]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/5.0_release_notes/index +[10]: https://opensource.com/open-organization/19/4/managed-enabled-empowered +[11]: https://www.linkedin.com/pulse/how-plan-world-full-unknowns-jim-whitehurst/ From 81c92f9c411874564779d4be2a5a26cf41a76ab1 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 2 Jul 2019 09:14:39 +0800 Subject: [PATCH 226/336] translating --- ...and Open Source Trello Alternative OpenProject 9 Released.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md index 8c5c5decf9..35ba13853d 100644 --- a/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md +++ b/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 6064fdbd6b32553f9dd3cf147d64333e5316ce12 Mon Sep 17 00:00:00 2001 From: zionfuo Date: Tue, 2 Jul 2019 10:03:42 +0800 Subject: [PATCH 227/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=EF=BC=9A20190702=20Blockchain=202.0=20=E2=80=93=20Public=20Vs?= =?UTF-8?q?=20Private=20Blockchain=20Comparison=20[Part=207]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7] --- ...Vs Private Blockchain Comparison [Part 7].md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md diff --git a/translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md b/translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md new file mode 100644 index 0000000000..eba0bc472f --- /dev/null +++ b/translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md @@ -0,0 +1,69 @@ +# 区块链 2.0:公有链 Vs 私有链(七) + +![](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910255-ef5f4381-c3a0-4a43-bb6f-c6890b808d32.png) + +[区块链 2.0](https://www.ostechnix.com/blockchain-2-0-an-introduction/) 系列的前一篇文章探索了[智能合同的现状](https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/)。这篇文章旨在揭示可以创建的不同类型的区块链。每个协议都用于与众不同的应用程序,并且根据用例的不同,每个应用程序所遵循的协议也不同。现在,让我们比较一下公有链、开源软件与私有链、专有技术。 + +正如我们所知,基于区块链的分布式账本的基本三层结构如下: + +![图1 – 区块链分布式账本的基本结构](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910943-95ae93e1-6e34-40e7-bff5-0ffdb384c103.png#align=left&display=inline&height=389&originHeight=389&originWidth=744&size=0&status=done&width=744)](http://www.ostechnix.com/wp-content/uploads/2019/04/blockchain-architecture.png) +图1 – 区块链分布式账本的基本结构 + +这里提到的类型之间的差异主要是因为底层区块链的协议。该协议规定了参与者的规则和参与的方式。 + +阅读本文时,请记住以下几点事项: + +- 任何平台的产生都是为了解决需求而生。技术应该采取最好的方向。例如,区块链具有巨大的应用价值,其中一些可能需要丢弃在其他设置中看起来很重要的功能。在这方面,**分布式存储**就是最好的例子。 +- 区块链基本上是数据库系统,通过时间戳和区块的形式组织数据来跟踪信息。此类区块链的创建者可以选择谁有权产出这些区块并进行修改。 +- 区块链也可以“中心化”,设置不同的参与程度,可以得出那些参与者是符合条件的“中心”节点。 + +大多数区块链要么是公有的,要么是私有的。一般来说,公有链可以被认为是开源软件的等价物,大多数私有链可以被视为源自公有链的专有平台。下图应该会让大多数人明显地看出基本的区别。 + +![图2 – 公有链/私有链与开源/专有技术的对比](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910996-6cd845e3-22d7-4edd-b35e-bee59ffb99f8.png#align=left&display=inline&height=390&originHeight=358&originWidth=684&size=0&status=done&width=746)](http://www.ostechnix.com/wp-content/uploads/2019/04/Public-vs-Private-blockchain-comparison.png) +图2 – 公有链/私有链与开源/专有技术的对比 + +虽然这是最受欢迎的理解。但是这并不是说所有的私有链都是从公有链中衍生出来的。 + +## 公有链 + +公有链可以被视为是一个开放的平台或网络。任何拥有专业知识和计算资源的人都可以参与其中。这将产生以下影响: + +- 任何人都可以加入公有链网络并参与到其中。“参与者” 所需要的只是稳定的网络资源和计算资源。 +- 参与包括了读取、写入、验证和交易期间的共识。比特币矿工就是很好的例子。作为网络的参与者,矿工会得到比特币作为回报。 +- 平台完全去中心,完全冗余。 +- 由于去中心化,没有一个主体可以完全控制分类账中记录的数据。所有 (或大多数) 参与者都需要通过验证区块的方式检查数据。 +- 这意味着,一旦信息被验证和记录,就不能轻易改变。即使这样,也不可能留下痕迹。 +- 在比特币和莱特币等平台上,参与者的身份仍然是匿名的。设计这些平台的目的是保护和保护用户身份。这主要是由上层协议栈提供的功能。 +- 在BITCOIN和LITECOIN等平台上,参与者的身份仍然是匿名的。这些平台的设计旨在保护和保护用户身份。这主要是由上层协议栈提供的功能。 +- 公有链有比特币、莱特币、以太坊等不同的网络。 +- 广泛的去中心化意味着,区块链分布式网络与实现的交易相比,在交易上获得共识可能需要一段时间,并且吞吐量对于旨在每时刻推动大量交易的大型企业来说可能是一个挑战。 +- 开放式参与,使比特币等公有链中的大量参与者,往往会增加对计算设备和能源成本的初始投资。 + + +## 私有链 + +相比之下,私有链是被许可的区块链。含义: + +- 参与网络的许可受到限制,并由监督网络的所有者或机构主持。这意味着,即使个人能够存储数据并进行交易 (例如,发送和接收付款),这些交易的验证和存储也只能由选定的参与者来完成。 +- 参与者一旦获得中心机构的许可,将受到条款的限制。例如,在金融机构运营的私有链网络中,并不是每个客户都可以访问整个区块链的分布式账本,甚至在那些获得许可的客户中, 不是每个人都能访问所有的东西。在这种情况下,中心机构将授予访问选择服务的权限。这通常被称为 “通道”。 +- 与公有链相比,这种系统具有更大的吞吐量能力,也展示了更快的交易速度,因为区块只需要由少数几个人验证。 +- 公有链以设计安全著称。他们的实现依靠以下几点: + - 匿名参与者 + - 多个节点上的分布式和冗余的加密存储 + - 创建和更改数据需要大量的共识 + +私有链通常在其协议中没有任何特征。这使得该系统仅与目前使用的大多数基于云的数据库系统一样安全。 + +## 智者的观点 + +需要注意的一点是,它们被命名为 public 或 private (或 open 或 close) 的事实与底层代码库无关。在这两种情况下,平台所基于的代码或文字基础可能是公开的,也可能不是公开的。R3 是一家 DLT (**D**istributed **L**edger **T**echnology) 公司,领导着由 200 多家跨国机构组成的公有财团。他们的目标是在金融和商业领域进一步发展区块链和相关分布式账本技术。Corda 是这一共同努力的产物。R3 将 corda 定义为专门为企业构建的区块链平台。同样的代码库是开源的,鼓励世界各地的开发人员为这个项目做出贡献。然而,考虑到 corda 面临的业务性质和旨在满足的需求,corda 将被归类为许可的封闭区块链平台。这意味着企业可以在部署后选择网络的参与者,并通过使用本机可用的智能合约工具选择这些参与者可以访问的信息类型。 + +虽然像比特币和以太坊这样的公有链对这个领域的广泛认知和发展负有责任,这是一个现实, 仍然可以争辩说,为企业或商业环境中的特定用例设计的私有链将在短期内引领货币投资。这些都是我们大多数人在不久的将来会看到以实际方式运用起来的平台。 + +阅读本系列中写一篇文章是有关Hyperledger项目的。 + +- [**Blockchain 2.0 – An Introduction To Hyperledger Project (HLP)**](https://www.ostechnix.com/blockchain-2-0-an-introduction-to-hyperledger-project-hlp/) + +我们正在研究更多有趣的区块链技术话题。敬请期待! + +[https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/](https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/) From ed3da4f2aa96a8d1a837f09246ce6bf4804b7632 Mon Sep 17 00:00:00 2001 From: zionfuo Date: Tue, 2 Jul 2019 10:18:50 +0800 Subject: [PATCH 228/336] =?UTF-8?q?=E7=BF=BB=E8=AF=91=EF=BC=9A20190505=20B?= =?UTF-8?q?lockchain=202.0=20-=20Public=20Vs=20Private=20Blockchain=20Comp?= =?UTF-8?q?arison=20-Part=207.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md --- ...Vs Private Blockchain Comparison -Part 7.md} | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) rename translated/tech/{20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md => 20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md} (74%) diff --git a/translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md b/translated/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md similarity index 74% rename from translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md rename to translated/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md index eba0bc472f..51ab44b6c5 100644 --- a/translated/tech/20190702 Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7].md +++ b/translated/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md @@ -1,12 +1,22 @@ -# 区块链 2.0:公有链 Vs 私有链(七) +[#]: collector: (lujun9972) +[#]: translator: (zionfuo) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7]) +[#]: via: (https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/) +[#]: author: (editor https://www.ostechnix.com/author/editor/) -![](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910255-ef5f4381-c3a0-4a43-bb6f-c6890b808d32.png) +区块链 2.0:公有链 Vs 私有链(七) +====== -[区块链 2.0](https://www.ostechnix.com/blockchain-2-0-an-introduction/) 系列的前一篇文章探索了[智能合同的现状](https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/)。这篇文章旨在揭示可以创建的不同类型的区块链。每个协议都用于与众不同的应用程序,并且根据用例的不同,每个应用程序所遵循的协议也不同。现在,让我们比较一下公有链、开源软件与私有链、专有技术。 +![Public vs Private blockchain][1] + +[**区块链 2.0**][2]系列的前一篇文章探索了[**智能合同的现状**][3]。这篇文章旨在揭示可以创建的不同类型的区块链。每个协议都用于与众不同的应用程序,并且根据用例的不同,每个应用程序所遵循的协议也不同。现在,让我们比较一下公有链、开源软件与私有链、专有技术。 正如我们所知,基于区块链的分布式账本的基本三层结构如下: -![图1 – 区块链分布式账本的基本结构](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910943-95ae93e1-6e34-40e7-bff5-0ffdb384c103.png#align=left&display=inline&height=389&originHeight=389&originWidth=744&size=0&status=done&width=744)](http://www.ostechnix.com/wp-content/uploads/2019/04/blockchain-architecture.png) +![][4] 图1 – 区块链分布式账本的基本结构 这里提到的类型之间的差异主要是因为底层区块链的协议。该协议规定了参与者的规则和参与的方式。 @@ -19,12 +29,12 @@ 大多数区块链要么是公有的,要么是私有的。一般来说,公有链可以被认为是开源软件的等价物,大多数私有链可以被视为源自公有链的专有平台。下图应该会让大多数人明显地看出基本的区别。 -![图2 – 公有链/私有链与开源/专有技术的对比](https://cdn.nlark.com/yuque/0/2019/png/241708/1558488910996-6cd845e3-22d7-4edd-b35e-bee59ffb99f8.png#align=left&display=inline&height=390&originHeight=358&originWidth=684&size=0&status=done&width=746)](http://www.ostechnix.com/wp-content/uploads/2019/04/Public-vs-Private-blockchain-comparison.png) +![][5] 图2 – 公有链/私有链与开源/专有技术的对比 虽然这是最受欢迎的理解。但是这并不是说所有的私有链都是从公有链中衍生出来的。 -## 公有链 +### 公有链 公有链可以被视为是一个开放的平台或网络。任何拥有专业知识和计算资源的人都可以参与其中。这将产生以下影响: @@ -40,7 +50,7 @@ - 开放式参与,使比特币等公有链中的大量参与者,往往会增加对计算设备和能源成本的初始投资。 -## 私有链 +### 私有链 相比之下,私有链是被许可的区块链。含义: @@ -54,7 +64,7 @@ 私有链通常在其协议中没有任何特征。这使得该系统仅与目前使用的大多数基于云的数据库系统一样安全。 -## 智者的观点 +### 智者的观点 需要注意的一点是,它们被命名为 public 或 private (或 open 或 close) 的事实与底层代码库无关。在这两种情况下,平台所基于的代码或文字基础可能是公开的,也可能不是公开的。R3 是一家 DLT (**D**istributed **L**edger **T**echnology) 公司,领导着由 200 多家跨国机构组成的公有财团。他们的目标是在金融和商业领域进一步发展区块链和相关分布式账本技术。Corda 是这一共同努力的产物。R3 将 corda 定义为专门为企业构建的区块链平台。同样的代码库是开源的,鼓励世界各地的开发人员为这个项目做出贡献。然而,考虑到 corda 面临的业务性质和旨在满足的需求,corda 将被归类为许可的封闭区块链平台。这意味着企业可以在部署后选择网络的参与者,并通过使用本机可用的智能合约工具选择这些参与者可以访问的信息类型。 @@ -62,8 +72,25 @@ 阅读本系列中写一篇文章是有关Hyperledger项目的。 -- [**Blockchain 2.0 – An Introduction To Hyperledger Project (HLP)**](https://www.ostechnix.com/blockchain-2-0-an-introduction-to-hyperledger-project-hlp/) +- [**Blockchain 2.0 – An Introduction To Hyperledger Project (HLP)**][6] 我们正在研究更多有趣的区块链技术话题。敬请期待! +-------------------------------------------------------------------------------- -[https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/](https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/) +via: https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/ + +作者:[editor][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/editor/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2019/04/Public-Vs-Private-Blockchain-720x340.png +[2]: https://www.ostechnix.com/blockchain-2-0-an-introduction/ +[3]: https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/ +[4]: http://www.ostechnix.com/wp-content/uploads/2019/04/blockchain-architecture.png +[5]: http://www.ostechnix.com/wp-content/uploads/2019/04/Public-vs-Private-blockchain-comparison.png +[6]: https://www.ostechnix.com/blockchain-2-0-an-introduction-to-hyperledger-project-hlp/ From b0858b62f1240fd57acd2d99c145b77f02531cde Mon Sep 17 00:00:00 2001 From: LuMing <784315443@qq.com> Date: Tue, 2 Jul 2019 10:22:09 +0800 Subject: [PATCH 229/336] translated --- ...acking down library injections on Linux.md | 139 ------------------ ...acking down library injections on Linux.md | 131 +++++++++++++++++ 2 files changed, 131 insertions(+), 139 deletions(-) delete mode 100644 sources/tech/20190626 Tracking down library injections on Linux.md create mode 100644 translated/tech/20190626 Tracking down library injections on Linux.md diff --git a/sources/tech/20190626 Tracking down library injections on Linux.md b/sources/tech/20190626 Tracking down library injections on Linux.md deleted file mode 100644 index 14b93d7258..0000000000 --- a/sources/tech/20190626 Tracking down library injections on Linux.md +++ /dev/null @@ -1,139 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (LuuMing) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Tracking down library injections on Linux) -[#]: via: (https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Tracking down library injections on Linux -====== -Library injections are less common on Linux than they are on Windows, but they're still a problem. Here's a look at how they work and how to identify them. -![Sandra Henry-Stocker][1] - -While not nearly commonly seen on Linux systems, library (shared object files on Linux) injections are still a serious threat. On interviewing Jaime Blasco from AT&T's Alien Labs, I've become more aware of how easily some of these attacks are conducted. - -In this post, I'll cover one method of attack and some ways that it can be detected. I'll also provide some links that will provide more details on both attack methods and detection tools. First, a little background. - -**[ Two-Minute Linux Tips: [Learn how to master a host of Linux commands in these 2-minute video tutorials][2] ]** - -### Shared library vulnerability - -Both DLL and .so files are shared library files that allow code (and sometimes data) to be shared by various processes. Commonly used code might be put into one of these files so that it can be reused rather than rewritten many times over for each process that requires it. This also facilitates management of commonly used code. - -Linux processes often make use of many of these shared libraries. The **ldd** (display shared object dependencies) command can display these for any program file. Here are some examples: - -``` -$ ldd /bin/date - linux-vdso.so.1 (0x00007ffc5f179000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f02bea15000) - /lib64/ld-linux-x86-64.so.2 (0x00007f02bec3a000) -$ ldd /bin/netstat - linux-vdso.so.1 (0x00007ffcb67cd000) - libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f45e5d7b000) - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45e5b90000) - libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f45e5b1c000) - libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f45e5b16000) - /lib64/ld-linux-x86-64.so.2 (0x00007f45e5dec000) - libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f45e5af5000) -``` - -The **linux-vdso.so.1** file (which may have a different name on some systems) is one that the kernel automatically maps into the address space of every process. Its job is to find and locate other shared libraries that the process requires. - -One way that this library-loading mechanism is exploited is through the use of an environment variable called **LD_PRELOAD**. As Jaime Blasco explains in his research, "LD_PRELOAD is the easiest and most popular way to load a shared library in a process at startup. This environmental variable can be configured with a path to the shared library to be loaded before any other shared object." - -To illustrate how easily this is done, I created an extremely simple shared library and assigned it to my (formerly non-existent) LD_PRELOAD environment variable. Then I used the **ldd** command to see how this would affect a commonly used Linux command. - -**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][3] ]** - -``` -$ export LD_PRELOAD=/home/shs/shownum.so -$ ldd /bin/date - linux-vdso.so.1 (0x00007ffe005ce000) - /home/shs/shownum.so (0x00007f1e6b65f000) <== there it is - libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e6b458000) - /lib64/ld-linux-x86-64.so.2 (0x00007f1e6b682000) -``` - -Note that doing nothing more than assigning my new library to LD_PRELOAD now affects any process that I run. - -Since the libraries specified by the LD_PRELOAD setting are the first to load (following linux-vdso.so.1), those libraries could significantly change a process. They could, for example, redirect system calls to their own resources or make unexpected changes in how the process being run behaves. - -### The osquery tool can detect library injections - -The **osquery** tool (downloadable from [osquery.io][4] is a tool that provides a very unique way of looking at Linux systems. It basically represents the operating system as a high-performance relational database. And, as you probably suspect, that means it can be queried and SQL tables created that provide details on such things as: - - * Running processes - * Loaded kernel modules - * Open network connections - - - -One kernel table that provides information on running processes is called **process_envs**. It provides details on environment variables used by various processes. With a fairly complicated query provided by Jaime Blasco, you can get osquery to identify processes that are using LD_PRELOAD. - -Note that this query pulls data from the **process_envs** table. The attack ID (T1055) is a reference to [Mitre's explanation of the attack method][5]: - -``` -SELECT process_envs.pid as source_process_id, process_envs.key as environment_variable_key, process_envs.value as environment_variable_value, processes.name as source_process, processes.path as file_path, processes.cmdline as source_process_commandline, processes.cwd as current_working_directory, 'T1055' as event_attack_id, 'Process Injection' as event_attack_technique, 'Defense Evasion, Privilege Escalation' as event_attack_tactic FROM process_envs join processes USING (pid) WHERE key = 'LD_PRELOAD'; -``` - -Note that the LD_PRELOAD environment variable is at times used legitimately. Various security monitoring tools, for example, could use it, as might developers while they are troubleshooting, debugging or doing performance analysis. However, its use is still quite uncommon and should be viewed with some suspicion. - -It's also worth noting that osquery can be used interactively or be run as a daemon (osqueryd) for scheduled queries. See the reference at the bottom of this post for more on this. - -You might also be able to locate use of LD_PRELOAD by examining users' environment settings. If LD_PRELOAD is configured in a user account, you might determine that with a command like this (after asssuming the individual's identity): - -``` -$ env | grep PRELOAD -LD_PRELOAD=/home/username/userlib.so -``` - -If you've not previously heard of osquery, don't take it too hard. It's now in the process of becoming a more popular tool. Just last week, in fact, the Linux Foundation announced its intention to support the osquery commmunity with a brand-new [osquery foundation][6]. - -#### Wrap-up - -While library injection remains a serious threat, it's helpful to know that some excellent tools are available to help detect its use on your systems. - -#### Additional resources - -Links to important references and tools: - - * [Hunting for Linux library injection with osquery][7] from AT&T Cybersecurity - * [Linux: How's My Memory?][8] from TrustedSec - * [Download site for osquery][4] - * [osquery schema][9] - * [osqueryd (osquery deamon)][10] - * [Mitre's attack framework][11] - * [New osquery foundation announced][6] - - - -Join the Network World communities on [Facebook][12] and [LinkedIn][13] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.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://images.idgesg.net/images/article/2019/06/dll-injection-100800196-large.jpg -[2]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua -[3]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr -[4]: https://osquery.io/ -[5]: https://attack.mitre.org/techniques/T1055/ -[6]: https://www.linuxfoundation.org/press-release/2019/06/the-linux-foundation-announces-intent-to-form-new-foundation-to-support-osquery-community/ -[7]: https://www.alienvault.com/blogs/labs-research/hunting-for-linux-library-injection-with-osquery -[8]: https://www.trustedsec.com/2018/09/linux-hows-my-memory/ -[9]: https://osquery.io/schema/3.3.2 -[10]: https://osquery.readthedocs.io/en/stable/deployment/configuration/#schedule -[11]: https://attack.mitre.org/ -[12]: https://www.facebook.com/NetworkWorld/ -[13]: https://www.linkedin.com/company/network-world diff --git a/translated/tech/20190626 Tracking down library injections on Linux.md b/translated/tech/20190626 Tracking down library injections on Linux.md new file mode 100644 index 0000000000..b747c959bd --- /dev/null +++ b/translated/tech/20190626 Tracking down library injections on Linux.md @@ -0,0 +1,131 @@ +[#]: collector: (lujun9972) +[#]: translator: (LuuMing) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Tracking down library injections on Linux) +[#]: via: (https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +追溯 Linux 上的库注入 +====== +库注入Library injections在 Linux 上不如 Windows 上常见,但它仍然是一个问题。下来看看它们如何工作的,以及如何鉴别它们。 +![Sandra Henry-Stocker][1] + +尽管在 Linux 系统上几乎见不到,但库(Linux 上的共享目标文件)注入仍是一个严峻的威胁。在采访了来自 AT&T 公司 Alien 实验室的 Jaime Blasco 后,我更加意识到了其中一些攻击是多么的易实施。 + +在这篇文章中,我会介绍一种攻击方法和它的几种检测手段。我也会提供一些展示攻击细节的链接和一些检测工具。首先,引入一个小小的背景。 + +### 共享库漏洞 + +DLL 和 .so 文件都是允许代码(有时候是数据)被不同的进程共享的共享库文件。公用的代码可以放进一个文件中使得每个需要它的进程可以重新使用而不是多次被重写。这也促进了对公用代码的管理。 + +Linux 进程经常使用这些共享库。`ldd`(显示共享对象依赖)命令可以为任何程序显示共享库。这里有一些例子: + +``` +$ ldd /bin/date + linux-vdso.so.1 (0x00007ffc5f179000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f02bea15000) + /lib64/ld-linux-x86-64.so.2 (0x00007f02bec3a000) +$ ldd /bin/netstat + linux-vdso.so.1 (0x00007ffcb67cd000) + libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f45e5d7b000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45e5b90000) + libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f45e5b1c000) + libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f45e5b16000) + /lib64/ld-linux-x86-64.so.2 (0x00007f45e5dec000) + libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f45e5af5000) +``` + +`linux-vdso.so.1` (在一些系统上也许会有不同的名字)是内核自动映射到每个进程地址空间的文件。它的工作是找到并定位进程所需的其他共享库。 + +利用这种库加载机制的一种方法是通过使用 `LD_PRELOAD` 环境变量。正如 Jaime Blasco 在他的研究中所解释的那样,“`LD_PRELOAD` 是最简单且最受欢迎的方法来在进程启动时加载共享库。可以使用共享库的路径配置环境变量,以便在加载其他共享对象之前加载该共享库。” + +为了展示有多简单,我创建了一个极其简单的共享库并且赋值给我的(之前不存在) `LD_PRELOAD` 环境变量。之后我使用 `ldd` 命令查看它对于常用 Linux 命令的影响。 + +``` +$ export LD_PRELOAD=/home/shs/shownum.so +$ ldd /bin/date + linux-vdso.so.1 (0x00007ffe005ce000) + /home/shs/shownum.so (0x00007f1e6b65f000) <== there it is + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e6b458000) + /lib64/ld-linux-x86-64.so.2 (0x00007f1e6b682000) +``` + +注意,仅仅将新的库赋给 `LD_PRELOAD` 就影响到了运行的任何程序。 + +通过设置 `LD_PRELOAD` 指定的共享库首先被加载(紧随 linux-vdso.so.1),这些库可以极大程度上改变一个进程。例如,它们可以重定向系统调用到它们自己的资源,或对程序运行的行为方式进行意想不到的更改。 + +### osquery 工具可以检测库注入 + +`osquery` 工具(可以在 [osquery.io][4]下载)提供了一个非常独特的方式来照看 Linux 系统。它基本上将操作系统表示为高性能关系数据库。然后,也许你会猜到,这就意味着它可以用来查询并且生成 SQL 表,该表提供了诸如以下的详细信息: + + * 运行中的进程 + * 加载的内核模块 + * 进行的网络链接 + +一个提供了进程信息的内核表叫做 `process_envs`。它提供了各种进程使用环境变量的详细信息。Jaime Blasco 提供了一个相当复杂的查询,可以使用 `osquery` 标识使用 `LD_PRELOAD` 的进程。 + +注意,这个查询是从 `process_envs` 表中获取数据。攻击 ID(T1055)参考 [Mitre 对攻击方法的解释][5]。 + +``` +SELECT process_envs.pid as source_process_id, process_envs.key as environment_variable_key, process_envs.value as environment_variable_value, processes.name as source_process, processes.path as file_path, processes.cmdline as source_process_commandline, processes.cwd as current_working_directory, 'T1055' as event_attack_id, 'Process Injection' as event_attack_technique, 'Defense Evasion, Privilege Escalation' as event_attack_tactic FROM process_envs join processes USING (pid) WHERE key = 'LD_PRELOAD'; +``` + +注意 `LD_PRELOAD` 环境变量有时是合法使用的。例如,各种安全监控工具可能会使用到它,因为开发人员需要进行故障排除、调试或性能分析。然而,它的使用仍然很少见,应当加以防范。 + +同样值得注意的是 osquery 可以交互使用或是作为定期查询的守护进程去运行。了解更多请查阅文章末尾给出的参考。 + +你也能够通过查看用户的环境设置定位到 `LD_PRELOAD` 的使用。如果 `LD_PRELOAD` 使用用户账户配置,你可以使用这样的命令来查看(在认证了个人身法之后): + +``` +$ env | grep PRELOAD +LD_PRELOAD=/home/username/userlib.so +``` + +如果你之前没有听说过 osquery,别太在意。它正在成为一个更受欢迎的工具。事实上就在上周,Linux 基金会宣布用新的 [osquery 基金会][6]支持 osquery 社区。 + +#### 总结 + +尽管库注入是一个严重的威胁,但了解一些优秀的工具来帮助你检测它是否存在是很有帮助的。 + +#### 扩展阅读 + +重要的参考和工具的链接: + + * [用 osquery 追寻 Linux 库注入][7],AT&T 网络安全 + * [Linux:我的内存怎么了?][8],TrustedSec + * [osquery 下载网站][4] + * [osquery 关系模式][9] + * [osqueryd(osquery 守护进程)][10] + * [Mitre 的攻击框架][11] + * [新的 osquery 基金会宣布][6] + +在 [Facebook][12] 和 [LinkedIn][13] 上加入网络会议参与讨论。 + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[LuuMing](https://github.com/LuuMing) +校对:[校对者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://images.idgesg.net/images/article/2019/06/dll-injection-100800196-large.jpg +[2]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua +[3]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr +[4]: https://osquery.io/ +[5]: https://attack.mitre.org/techniques/T1055/ +[6]: https://www.linuxfoundation.org/press-release/2019/06/the-linux-foundation-announces-intent-to-form-new-foundation-to-support-osquery-community/ +[7]: https://www.alienvault.com/blogs/labs-research/hunting-for-linux-library-injection-with-osquery +[8]: https://www.trustedsec.com/2018/09/linux-hows-my-memory/ +[9]: https://osquery.io/schema/3.3.2 +[10]: https://osquery.readthedocs.io/en/stable/deployment/configuration/#schedule +[11]: https://attack.mitre.org/ +[12]: https://www.facebook.com/NetworkWorld/ +[13]: https://www.linkedin.com/company/network-world From 93f82ff8ea26adbaee6f76b4bfb288f0660fa0af Mon Sep 17 00:00:00 2001 From: zionfuo Date: Tue, 2 Jul 2019 10:46:41 +0800 Subject: [PATCH 230/336] =?UTF-8?q?=E7=BF=BB=E8=AF=91=EF=BC=9A20190505=20B?= =?UTF-8?q?lockchain=202.0=20-=20Public=20Vs=20Private=20Blockchain=20Comp?= =?UTF-8?q?arison=20-Part=207.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s Private Blockchain Comparison -Part 7.md | 106 ------------------ 1 file changed, 106 deletions(-) delete mode 100644 sources/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md diff --git a/sources/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md b/sources/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md deleted file mode 100644 index a954e8514e..0000000000 --- a/sources/tech/20190505 Blockchain 2.0 - Public Vs Private Blockchain Comparison -Part 7.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7]) -[#]: via: (https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/) -[#]: author: (editor https://www.ostechnix.com/author/editor/) - -Blockchain 2.0 – Public Vs Private Blockchain Comparison [Part 7] -====== - -![Public vs Private blockchain][1] - -The previous part of the [**Blockchain 2.0**][2] series explored the [**the state of Smart contracts**][3] now. This post intends to throw some light on the different types of blockchains that can be created. Each of these are used for vastly different applications and depending on the use cases, the protocol followed by each of these differ. Now let us go ahead and learn about **Public vs Private blockchain comparison** with Open source and proprietary technology. - -The fundamental three-layer structure of a blockchain based distributed ledger as we know is as follows: - -![][4] - -Figure 1 – Fundamental structure of Blockchain-based ledgers - -The differences between the types mentioned here is attributable primarily to the protocol that rests on the underlying blockchain. The protocol dictates rules for the participants and the behavior of the blockchain in response to the said participation. - -Remember to keep the following things in mind while reading through this article: - - * Platforms such as these are always created to solve a use-case requirement. There is no one direction that the technology should take that is best. Blockchains for instance have tremendous applications and some of these might require dropping features that seem significant in other settings. **Decentralized storage** is a major example in this regard. - * Blockchains are basically database systems keeping track of information by timestamping and organizing data in the form of blocks. Creators of such blockchains can choose who has the right to make these blocks and perform alterations. - * Blockchains can be “centralized” as well, and participation in varying extents can be limited to those who this “central authority” deems eligible. - - - -Most blockchains are either **public** or **private**. Broadly speaking, public blockchains can be considered as being the equivalent of open source software and most private blockchains can be seen as proprietary platforms deriving from the public ones. The figure below should make the basic difference obvious to most of you. - -![][5] - -Figure 2 – Public vs Private blockchain comparison with Open source and Proprietary Technology - -This is not to say that all private blockchains are derived from open public ones. The most popular ones however usually are though. - -### Public Blockchains - -A public blockchain can be considered as a **permission-less platform** or **network**. Anyone with the knowhow and computing resources can participate in it. This will have the following implications: - - * Anyone can join and participate in a public blockchain network. All the “participant” needs is a stable internet connection along with computing resources. - * Participation will include reading, writing, verifying, and providing consensus during transactions. An example for participating individuals would be **Bitcoin miners**. In exchange for participating in the network the miners are paid back in Bitcoins in this case. - * The platform is decentralized completely and fully redundant. - * Because of the decentralized nature, no one entity has complete control over the data recorded in the ledger. To validate a block all (or most) participants need to vet the data. - * This means that once information is verified and recorded, it cannot be altered easily. Even if it is, its impossible to not leave marks. - * The identity of participants remains anonymous by design in platforms such as **BITCOIN** and **LITECOIN**. These platforms by design aim for protecting and securing user identities. This is primarily a feature provided by the overlying protocol stack. - * Examples for public blockchain networks are **BITCOIN** , **LITECOIN** , **ETHEREUM** etc. - * Extensive decentralizations mean that gaining consensus on transactions might take a while compared to what is typically possible over blockchain ledger networks and throughput can be a challenge for large enterprises aiming for pushing a very high number of transactions every instant. - * The open participation and often the high number of such participants in open chains such as bitcoin add up to considerable initial investments in computing equipment and energy costs. - - - -### Private Blockchain - -In contrast, a private blockchain is a **permissioned blockchain**. Meaning: - - * Permission to participate in the network is restricted and is presided over by the owner or institution overseeing the network. Meaning even though an individual will be able to store data and transact (send and receive payments for example), the validation and storage of these transactions will be done only by select participants. - * Participation even once permission is given by the central authority will be limited by terms. For instance, in case of a private blockchain network run by a financial institution, not every customer will have access to the entire blockchain ledger, and even among those with the permission, not everyone will be able to access everything. Permissions to access select services will be given by the central figure in this case. This is often referred to as **“channeling”**. - * Such systems have significantly larger throughput capabilities and also showcase much faster transaction speeds compared to their public counterparts because a block of information only needs to be validated by a select few. - * Security by design is something the public blockchains are renowned for. They achieve this -by: - * Anonymizing participants, - * Distributed & redundant but encrypted storage on multiple nodes, - * Mass consensus required for creating and altering data. - - - -Private blockchains usually don’t feature any of these in their protocol. This makes the system only as secure as most cloud-based database systems currently in use. - -### A note for the wise - -An important point to note is this, the fact that they’re named public or private (or open or closed) has nothing to do with the underlying code base. The code or the literal foundations on which the platforms are based on may or may not be publicly available and or developed in either of these cases. **R3** is a **DLT** ( **D** istributed **L** edger **T** echnology) company that leads a public consortium of over 200 multinational institutions. Their aim is to further development of blockchain and related distributed ledger technology in the domain of finance and commerce. **Corda** is the product of this joint effort. R3 defines corda as a blockchain platform that is built specially for businesses. The codebase for the same is open source and developers all over the world are encouraged to contribute to the project. However, given its business facing nature and the needs it is meant to address, corda would be categorized as a permissioned closed blockchain platform. Meaning businesses can choose the participants of the network once it is deployed and choose the kind of information these participants can access through the use of natively available smart contract tools. - -While it is a reality that public platforms like Bitcoin and Ethereum are responsible for the widespread awareness and development going on in the space, it can still be argued that private blockchains designed for specific use cases in enterprise or business settings is what will lead monetary investments in the short run. These are the platforms most of us will see implemented the near future in practical ways. - -Read the next guide about Hyperledger project in this series. - - * [**Blockchain 2.0 – An Introduction To Hyperledger Project (HLP)**][6] - - - -We are working on many interesting topics on Blockchain technology. Stay tuned! - --------------------------------------------------------------------------------- - -via: https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/ - -作者:[editor][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.ostechnix.com/author/editor/ -[b]: https://github.com/lujun9972 -[1]: https://www.ostechnix.com/wp-content/uploads/2019/04/Public-Vs-Private-Blockchain-720x340.png -[2]: https://www.ostechnix.com/blockchain-2-0-an-introduction/ -[3]: https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/ -[4]: http://www.ostechnix.com/wp-content/uploads/2019/04/blockchain-architecture.png -[5]: http://www.ostechnix.com/wp-content/uploads/2019/04/Public-vs-Private-blockchain-comparison.png -[6]: https://www.ostechnix.com/blockchain-2-0-an-introduction-to-hyperledger-project-hlp/ From d0bdd710411a579644da8d633e02d7c06b5d84fa Mon Sep 17 00:00:00 2001 From: chen ni Date: Tue, 2 Jul 2019 10:57:07 +0800 Subject: [PATCH 231/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...190701 Ubuntu or Fedora- Which One Should You Use and Why.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md index 9b6b7727f3..e369693ea7 100644 --- a/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md +++ b/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 366b47982ce9eec4387d0808494ba7f5620bdce8 Mon Sep 17 00:00:00 2001 From: "qfzy1233@163.com" Date: Tue, 2 Jul 2019 11:14:36 +0800 Subject: [PATCH 232/336] Update 20190618 A beginner-s guide to Linux permissions.md --- ...A beginner-s guide to Linux permissions.md | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/sources/tech/20190618 A beginner-s guide to Linux permissions.md b/sources/tech/20190618 A beginner-s guide to Linux permissions.md index 5de5c372cb..e37ba4877e 100644 --- a/sources/tech/20190618 A beginner-s guide to Linux permissions.md +++ b/sources/tech/20190618 A beginner-s guide to Linux permissions.md @@ -7,84 +7,82 @@ [#]: via: (https://opensource.com/article/19/6/understanding-linux-permissions) [#]: author: (Bryant Son https://opensource.com/users/brson/users/greg-p/users/tj) -A beginner's guide to Linux permissions +Linux 权限入门指南 ====== -Linux security permissions designate who can do what with a file or -directory. +Linux安全权限能够指定谁可以对文件或目录执行什么操作。 ![Hand putting a Linux file folder into a drawer][1] -One of the main benefits of Linux systems is that they are known to be less prone to security vulnerabilities and exploits than other systems. Linux definitely gives users more flexibility and granular controls over its file systems' security permissions. This may imply that it's critical for Linux users to understand security permissions. That isn't necessarily true, but it's still wise for beginning users to understand the basics of Linux permissions. +与其他系统相比而言 Linux 系统的众多优点中最为主要一个便是Linux 系统有着更少的安全漏洞和被攻击的隐患。Linux无疑为用户提供了更为灵活和精细化的文件系统安全权限控制。这可能意味着Linux用户理解安全权限是至关重要的。虽然这并不一定是必要的,但是对于初学者来说,理解Linux权限的基本知识仍是一个明智之选。 -### View Linux security permissions +### 查看 Linux 安全权限 -To start learning about Linux permissions, imagine we have a newly created directory called **PermissionDemo**. Run **cd** inside the directory and use the **ls -l** command to view the Linux security permissions. If you want to sort them by time modified, add the **-t** option. +在开始 Linux 权限的相关学习之前,假设我们新建了一个名为 **PermissionDemo**的目录。使用 **cd** 命令进入这个目录,然后使用 **ls -l** 命令查看 Linux 安全管理权限信息。如果你想以时间为序排列,加上 **-t** 选项 ``` `ls -lt` ``` -Since there are no files inside this new directory, this command returns nothing. +因为这一目录下没有文件,所以这一命令执行不会返回结果。 ![No output from ls -l command][2] -To learn more about the **ls** option, access its man page by entering **man ls** on the command line. +要了解关于 **ls** 命令的更多信息,请通过在命令行中输入 **man ls** 来查看命令手册。 ![ls man page][3] -Now, let's create two files: **cat.txt** and **dog.txt** with empty content; this is easy to do using the **touch** command. Let's also create an empty directory called **Pets** with the **mkdir** command. We can use the **ls -l** command again to see the permissions for these new files. + 现在,让我们创建两个名为 **cat.txt** 和 **dog.txt** 的空白文件;这一步使用 **touch** 命令将更为简便。然后继续使用 **mkdir** 命令创建一个名为 **Pets** 的空目录。我们可以再次使用**ls -l**命令查看这些新文件的权限。 ![Creating new files and directory][4] -We need to pay attention to two sections of output from this command. +我们需要留意这个命令输出结果的两个部分。 -### Who has permission? +### 谁拥有权限? -The first thing to examine indicates _who_ has permission to access the file/directory. Note the section highlighted in the red box below. The first column refers to the _user_ who has access, while the second column refers to the _group_ that has access. +首先要注意的是 _who_ 具有访问文件/目录的权限。请注意下面红色框中突出显示的部分。第一列是指具有访问权限的 _user(用户)_ ,而第二列是指具有访问权限的 _group(组)_ 。 ![Output from -ls command][5] -There are three main types of users: **user** , **group** ; and **other** (essentially neither a user nor a group). There is one more: **all** , which means practically everyone. +用户的类型主要有三种:**user**、**group**;和**other**(本质上既不是用户也不是组)。还有一个**all**,意思是几乎所有人。 ![User types][6] -Because we are using **root** as the user, we can access any file or directory because **root** is the superuser. However, this is generally not the case, and you will probably be restricted to your username. A list of all users is stored in the **/etc/passwd** file. +由于我们使用 **root** 作为当前用户,所以我们可以访问任何文件或目录,因为 **root** 是超级用户。然而,通常情况并非如此,您可能会被限定使用您的普通用户登录。所有的用户都存储在 **/etc/passwd** 文件中。 ![/etc/passwd file][7] -Groups are maintained in the **/etc/group** file. + “组“的相关信息保存在 **/etc/group** 文件中。 ![/etc/passwd file][8] -### What permissions do they have? +### 他们有什么权限? -The other section of the output from **ls -l** that we need to pay attention to relates to enforcing permissions. Above, we confirmed that the owner and group permissions for the files dog.txt and cat.txt and the directory Pets we created belong to the **root** account. We can use that information about who owns what to enforce permissions for the different user ownership types, as highlighted in the red box below. +我们需要注意的是 **ls -l** 命令输出结果的另一部分与执行权限有关。以上,我们查看了创建的dog.txt 和 cat.txt文件以及Pets目录的所有者和组权限都属于 **root** 用户。我们可以通过这一信息了解到不同用户组所拥有的相应权限,如下面的红色框中的标示。 ![Enforcing permissions for different user ownership types][9] -We can dissect each line into five bits of information. The first part indicates whether it is a file or a directory; files are labeled with a **-** (hyphen), and directories are labeled with **d**. The next three parts refer to permissions for **user** , **group** , and **other** , respectively. The last part is a flag for the [**access-control list**][10] (ACL), a list of permissions for an object. +我们可以把每一行分解成五部分。第一部分标志着它是文件还是目录;文件用 **-** (连字符)标记,目录用 **d** 来标记。接下来的三个部分分别是**user**、**group**和**other**的对应权限。最后一部分是[**access-control list**][10] (ACL)(访问控制列表)的标志,是记录着特定用户或者用户组对该文件的操作权限的列表。 ![Different Linux permissions][11] -Linux permission levels can be identified with letters or numbers. There are three privilege types: - - * **read** : r or 4 - * **write:** w or 2 - * **executable:** e or 1 - +Linux 的权限级别可以用字母或数字标识。有三种权限类型: + * **read(读):** r or 4 + * **write(写):** w or 2 + * **executable(可执行):** x or 1 +(LCTT译注:原文此处对应的字母标示 **x** 误写为 **e** 已更正) ![Privilege types][12] -The presence of each letter symbol ( **r** , **w** , or **x** ) means that the permission exists, while **-** indicates it does not. In the example below, the file is readable and writeable by the owner, only readable if the user belongs to the group, and readable and executable by anyone else. Converted to numeric notation, this would be 645 (see the image below for an explanation of how this is calculated). +每个字母符号(**r**、**w**或**x**)表示有该项权限,而 **-** 表示无该项权限。在下面的示例中,文件的所有者可读可写,用户组成员仅可读,其他人可读可执行。转换成数字表示法,对应的是645(如何计算,请参见下图的图示)。 ![Permission type example][13] -Here are a few more examples: +以下是一些示例: ![Permission type examples][14] -Test your knowledge by going through the following exercises. +完成下面的测试,检查你是否掌握了权限管理相关的知识。 ![Permission type examples][15] @@ -94,7 +92,7 @@ via: https://opensource.com/article/19/6/understanding-linux-permissions 作者:[Bryant Son][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[译者ID](https://github.com/qfzy1233) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 4940b92cfaabdcaba2f6027f50dfee1602456bb1 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Tue, 2 Jul 2019 11:20:18 +0800 Subject: [PATCH 233/336] =?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 --- .../tech/20190618 A beginner-s guide to Linux permissions.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20190618 A beginner-s guide to Linux permissions.md (100%) diff --git a/sources/tech/20190618 A beginner-s guide to Linux permissions.md b/translated/tech/20190618 A beginner-s guide to Linux permissions.md similarity index 100% rename from sources/tech/20190618 A beginner-s guide to Linux permissions.md rename to translated/tech/20190618 A beginner-s guide to Linux permissions.md From df46a53ce9f18da3fae98793577471413dfcb412 Mon Sep 17 00:00:00 2001 From: guevaraya Date: Tue, 2 Jul 2019 12:23:31 +0800 Subject: [PATCH 234/336] translating by guevaraya MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 申请翻译 --- sources/tech/20190628 How to Install and Use R on Ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190628 How to Install and Use R on Ubuntu.md b/sources/tech/20190628 How to Install and Use R on Ubuntu.md index 84699fbc8e..abbbeef6a2 100644 --- a/sources/tech/20190628 How to Install and Use R on Ubuntu.md +++ b/sources/tech/20190628 How to Install and Use R on Ubuntu.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (guevaraya) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 7f65d0171584d59cfb3d2177aee7fc3ddc7ed8b3 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Tue, 2 Jul 2019 14:32:29 +0800 Subject: [PATCH 235/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E5=8E=9F=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index c7dc93c70a..42676f7a14 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,3 +1,4 @@ +qfzy1233 is translating [#]: collector: (lujun9972) [#]: translator: ( ) [#]: reviewer: ( ) From 951079d49d74956784a6e040dc503aad129f3cae Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Tue, 2 Jul 2019 14:34:13 +0800 Subject: [PATCH 236/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E5=8E=9F=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Zorin OS Becomes Even More Awesome With Zorin 15 Release.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index 42676f7a14..f5342383bc 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,6 +1,5 @@ -qfzy1233 is translating [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (qfzy1233) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a9c765250b384a1d779858e6937a11bb4749d7ae Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Tue, 2 Jul 2019 14:48:17 +0800 Subject: [PATCH 237/336] Update 20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md --- ... Zorin OS Becomes Even More Awesome With Zorin 15 Release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index f5342383bc..c7dc93c70a 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (qfzy1233) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 1f8574f16ba00f79bda2d4e317d6b84ef45b87d9 Mon Sep 17 00:00:00 2001 From: "qfzy1233@163.com" Date: Tue, 2 Jul 2019 14:55:39 +0800 Subject: [PATCH 238/336] =?UTF-8?q?Revert=20"=E7=BF=BB=E8=AF=91=E5=AE=8C?= =?UTF-8?q?=E6=88=90"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 4940b92cfaabdcaba2f6027f50dfee1602456bb1. --- .../tech/20190618 A beginner-s guide to Linux permissions.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated => sources}/tech/20190618 A beginner-s guide to Linux permissions.md (100%) diff --git a/translated/tech/20190618 A beginner-s guide to Linux permissions.md b/sources/tech/20190618 A beginner-s guide to Linux permissions.md similarity index 100% rename from translated/tech/20190618 A beginner-s guide to Linux permissions.md rename to sources/tech/20190618 A beginner-s guide to Linux permissions.md From 4098f2e740d924b6b8b7253f2b08ee2744ab7646 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Tue, 2 Jul 2019 15:09:17 +0800 Subject: [PATCH 239/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/20190618 A beginner-s guide to Linux permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename {sources => translated}/tech/20190618 A beginner-s guide to Linux permissions.md (99%) diff --git a/sources/tech/20190618 A beginner-s guide to Linux permissions.md b/translated/tech/20190618 A beginner-s guide to Linux permissions.md similarity index 99% rename from sources/tech/20190618 A beginner-s guide to Linux permissions.md rename to translated/tech/20190618 A beginner-s guide to Linux permissions.md index e37ba4877e..29154e0709 100644 --- a/sources/tech/20190618 A beginner-s guide to Linux permissions.md +++ b/translated/tech/20190618 A beginner-s guide to Linux permissions.md @@ -92,7 +92,7 @@ via: https://opensource.com/article/19/6/understanding-linux-permissions 作者:[Bryant Son][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/qfzy1233) +译者:[qfzy1233](https://github.com/qfzy1233) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 8455d8d0433510b06a5e47d73accdb1b8344ff4a Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:52:10 +0800 Subject: [PATCH 240/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190703=20How=20?= =?UTF-8?q?to=20Manually=20Install=20Security=20Updates=20on=20Debian/Ubun?= =?UTF-8?q?tu=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190703 How to Manually Install Security Updates on Debian-Ubuntu.md --- ...stall Security Updates on Debian-Ubuntu.md | 251 ++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 sources/tech/20190703 How to Manually Install Security Updates on Debian-Ubuntu.md diff --git a/sources/tech/20190703 How to Manually Install Security Updates on Debian-Ubuntu.md b/sources/tech/20190703 How to Manually Install Security Updates on Debian-Ubuntu.md new file mode 100644 index 0000000000..4dff50d061 --- /dev/null +++ b/sources/tech/20190703 How to Manually Install Security Updates on Debian-Ubuntu.md @@ -0,0 +1,251 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Manually Install Security Updates on Debian/Ubuntu?) +[#]: via: (https://www.2daygeek.com/manually-install-security-updates-ubuntu-debian/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + +How to Manually Install Security Updates on Debian/Ubuntu? +====== + +Installing a package in Linux from command line is a simple task. + +In a single command or combining of multiple commands could make you to complete your task easily. + +The same can be done for security updates as well. + +In this tutorial, we will show you how to check available security update and install them on Debian based systems such as Ubuntu, LinuxMint, etc,. + +It can be done using three methods. All these methods are described in this article in details. + +As a Linux administrator, you should keep your system up-to-date, that makes your system more secure. It protects your system against unwanted attack. + +If you are not able to patch entire system with all updates due to some application dependency. At-least, you should install only security patches to make your system 100% compliance. + +### How to Install unattended-upgrades package in Debian/Ubuntu? + +By default `unattended-upgrades` package should be installed on your system. But in case if it’s not installed use the following command to install it. + +Use **[APT-GET Command][1]** or **[APT Command][2]** to install unattended-upgrades package. + +``` +$ sudo apt-get install unattended-upgrades +or +$ sudo apt install unattended-upgrades +``` + +### Method-1: How to Check if any Security Updates are available in Debian/Ubuntu? + +It’s always a good practice to check list of available security updates before performing the patch installation. It will give you the list of packages that are going to be updated in your system. + +**What’s dry run?** Most of the Linux commands have a dry run option, which stimulate the actual output but nothing will be downloaded or installed. + +To do so, you need to add `--dry-run` option with unattended-upgrades command. + +``` +$ sudo unattended-upgrade --dry-run -d + +Initial blacklisted packages: +Initial whitelisted packages: +Starting unattended upgrades script +Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESM,a=bionic +Using (^linux-image-[0-9]+\.[0-9\.]+-.*|^linux-headers-[0-9]+\.[0-9\.]+-.*|^linux-image-extra-[0-9]+\.[0-9\.]+-.*|^linux-modules-[0-9]+\.[0-9\.]+-.*|^linux-modules-extra-[0-9]+\.[0-9\.]+-.*|^linux-signed-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-headers-[0-9]+\.[0-9\.]+-.*|^gnumach-image-[0-9]+\.[0-9\.]+-.*|^.*-modules-[0-9]+\.[0-9\.]+-.*|^.*-kernel-[0-9]+\.[0-9\.]+-.*|^linux-backports-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-tools-[0-9]+\.[0-9\.]+-.*|^linux-cloud-tools-[0-9]+\.[0-9\.]+-.*) regexp to find kernel packages +Using (^linux-image-4\.15\.0\-51\-generic$|^linux-headers-4\.15\.0\-51\-generic$|^linux-image-extra-4\.15\.0\-51\-generic$|^linux-modules-4\.15\.0\-51\-generic$|^linux-modules-extra-4\.15\.0\-51\-generic$|^linux-signed-image-4\.15\.0\-51\-generic$|^kfreebsd-image-4\.15\.0\-51\-generic$|^kfreebsd-headers-4\.15\.0\-51\-generic$|^gnumach-image-4\.15\.0\-51\-generic$|^.*-modules-4\.15\.0\-51\-generic$|^.*-kernel-4\.15\.0\-51\-generic$|^linux-backports-modules-.*-4\.15\.0\-51\-generic$|^linux-modules-.*-4\.15\.0\-51\-generic$|^linux-tools-4\.15\.0\-51\-generic$|^linux-cloud-tools-4\.15\.0\-51\-generic$) regexp to find running kernel packages +Checking: apt ([]) +adjusting candidate version: apt=1.6.6ubuntu0.1 +Checking: apt-utils ([]) +adjusting candidate version: apt-utils=1.6.6ubuntu0.1 +Checking: bash ([]) +. +. +Checking: xxd ([, ]) +pkgs that look like they should be upgraded: binutils +binutils-common +binutils-x86-64-linux-gnu +cpp +cpp-7 +dbus +dbus-user-session +dbus-x11 +firefox +firefox-locale-en +g++ +g++-7 +gcc +gcc-7 +gcc-7-base +gcc-8-base +libasan4 +libatomic1 +libbinutils +libcc1-0 +libcilkrts5 +libdbus-1-3 +libdbus-1-dev +libgcc-7-dev +libgcc1 +libgfortran4 +libgomp1 +libitm1 +liblsan0 +libmpx2 +libquadmath0 +libstdc++-7-dev +libstdc++6 +libtsan0 +libubsan0 +vim-common +vim-tiny +xxd +``` + +If the above command output says **“No packages found that can be upgraded unattended and no pending auto-removals”** in the Terminal, this implies your System is up-to-date. + +### How to Install available Security Updates in Debian/Ubuntu? + +If your got any package updates in the above command output. Then run the following command to install them. + +``` +$ sudo unattended-upgrade -d +``` + +Alternatively this can be done from apt-get command. It’s bit tricky. However, i would suggest users to go with first option. + +### Method-2: How to Check if any Security Updates are available in Debian/Ubuntu Using apt-get Command? + +Run the following command to check list of available security updates in your Debian/Ubuntu system + +``` +$ sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi + +Inst libquadmath0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libitm1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst gcc-8-base [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libmpx2:amd64 libgcc1:amd64 libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ] +Inst libgcc1 [1:8.2.0-1ubuntu2~18.04] (1:8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libmpx2:amd64 libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ] +Inst libmpx2 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ] +Inst liblsan0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libtsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ] +Inst libtsan0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ] +Inst libcc1-0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libatomic1:amd64 libstdc++6:amd64 ] +Inst libatomic1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libstdc++6:amd64 ] +Inst libgomp1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libstdc++6:amd64 ] +Inst libstdc++6 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst libdbus-1-dev [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst dbus-user-session [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst dbus-x11 [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst dbus [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libdbus-1-3 [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst xxd [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst vim-tiny [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst vim-common [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [all]) +Inst binutils-x86-64-linux-gnu [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [binutils:amd64 ] +Inst binutils-common [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [binutils:amd64 libbinutils:amd64 ] +Inst binutils [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libbinutils:amd64 ] +Inst libbinutils [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst libasan4 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libubsan0 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libcilkrts5 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst g++-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst gcc-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libstdc++-7-dev [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libgcc-7-dev [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst libgfortran4 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst cpp-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [] +Inst gcc-7-base [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst cpp [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst firefox [67.0.1+build1-0ubuntu0.18.04.1] (67.0.2+build2-0ubuntu0.18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst firefox-locale-en [67.0.1+build1-0ubuntu0.18.04.1] (67.0.2+build2-0ubuntu0.18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst gcc [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +Inst g++ [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) +``` + +### How to Install available Security Updates in Debian/Ubuntu Using apt-get Command? + +If you found any package updates in the above output. Finally run the following command to install them. + +``` +$ sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi | awk -F " " {'print $2'} | xargs apt-get install +``` + +Alternatively this can be done from apt command. It’s bit tricky. However, i would suggest users to go with first option. + +### Method-3: How to Check if any Security Updates are available in Debian/Ubuntu Using apt Command? + +Run the following command to check list of available security updates in your Debian/Ubuntu system + +``` +$ sudo apt list --upgradable | grep -e "-security" + +binutils/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04] +binutils-common/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04] +binutils-x86-64-linux-gnu/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04] +cpp/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1] +cpp-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +dbus/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1] +dbus-user-session/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1] +dbus-x11/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1] +firefox/bionic-updates,bionic-security 67.0.2+build2-0ubuntu0.18.04.1 amd64 [upgradable from: 67.0.1+build1-0ubuntu0.18.04.1] +firefox-locale-en/bionic-updates,bionic-security 67.0.2+build2-0ubuntu0.18.04.1 amd64 [upgradable from: 67.0.1+build1-0ubuntu0.18.04.1] +g++/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1] +g++-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +gcc/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1] +gcc-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +gcc-7-base/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +gcc-8-base/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libasan4/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +libatomic1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libbinutils/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04] +libcc1-0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libcilkrts5/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +libdbus-1-3/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1] +libdbus-1-dev/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1] +libgcc-7-dev/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +libgcc1/bionic-updates,bionic-security 1:8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 1:8.2.0-1ubuntu2~18.04] +libgfortran4/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +libgomp1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libitm1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +liblsan0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libmpx2/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libquadmath0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libstdc++-7-dev/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +libstdc++6/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libtsan0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04] +libubsan0/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04] +vim-common/bionic-updates,bionic-updates,bionic-security,bionic-security 2:8.0.1453-1ubuntu1.1 all [upgradable from: 2:8.0.1453-1ubuntu1] +vim-tiny/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64 [upgradable from: 2:8.0.1453-1ubuntu1] +xxd/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64 [upgradable from: 2:8.0.1453-1ubuntu1] +``` + +### How to Install available Security Updates in Debian/Ubuntu Using apt Command? + +If you found any package updates in the above output. Finally run the following command to install them. + +``` +$ sudo apt list --upgradable | grep -e "-security" | awk -F "/" '{print $1}' | xargs apt install +``` + +Also, the following file will give you the packages update count. + +``` +$ sudo cat /var/lib/update-notifier/updates-available + +190 packages can be updated. +39 updates are security updates. +``` + +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/manually-install-security-updates-ubuntu-debian/ + +作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ +[b]: https://github.com/lujun9972 +[1]: https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/ +[2]: https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/ From d7c6f580e4a2ef4fab43c372f6802a821e083ecd Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:52:51 +0800 Subject: [PATCH 241/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190702=20Jupyte?= =?UTF-8?q?r=20and=20data=20science=20in=20Fedora?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190702 Jupyter and data science in Fedora.md --- ...0702 Jupyter and data science in Fedora.md | 246 ++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 sources/tech/20190702 Jupyter and data science in Fedora.md diff --git a/sources/tech/20190702 Jupyter and data science in Fedora.md b/sources/tech/20190702 Jupyter and data science in Fedora.md new file mode 100644 index 0000000000..7126376617 --- /dev/null +++ b/sources/tech/20190702 Jupyter and data science in Fedora.md @@ -0,0 +1,246 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Jupyter and data science in Fedora) +[#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) +[#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) + +Jupyter and data science in Fedora +====== + +![][1] + +In the past, kings and leaders used oracles and magicians to help them predict the future — or at least get some good advice due to their supposed power to perceive hidden information. Nowadays, we live in a society obsessed with quantifying everything. So we have data scientists to do this job. + +Data scientists use statistical models, numerical techniques and advanced algorithms that didn’t come from statistical disciplines, along with the data that exist on databases, to find, to infer, to predict data that doesn’t exist yet. Sometimes this data is about the future. That is why we do a lot of predictive analytics and prescriptive analytics. + +Here are some questions to which data scientists help find answers: + + 1. Who are the students with high propensity to abandon the class? For each one, what are the reasons for leaving? + 2. Which house has a price above or below the fair price? What is the fair price for a certain house? + 3. What are the hidden groups that my clients classify themselves? + 4. Which future problems this premature child will develop? + 5. How many calls will I get in my call center tomorrow 11:43 AM? + 6. My bank should or should not lend money to this customer? + + + +Note how the answer to all these question is not sitting in any database waiting to be queried. These are all data that still doesn’t exist and has to be calculated. That is part of the job we data scientists do. + +Throughout this article you’ll learn how to prepare a Fedora system as a Data Scientist’s development environment and also a production system. Most of the basic software is RPM-packaged, but the most advanced parts can only be installed, nowadays, with Python’s _pip_ tool. + +### Jupyter — the IDE + +Most modern data scientists use Python. And an important part of their work is EDA (exploratory data analysis). EDA is a manual and interactive process that retrieves data, explores its features, searches for correlations, and uses plotted graphics to visualize and understand how data is shaped and prototypes predictive models. + +Jupyter is a web application perfect for this task. Jupyter works with Notebooks, documents that mix rich text including beautifully rendered math formulas (thanks to [mathjax][2]), blocks of code and code output, including graphics. + +Notebook files have extension _.ipynb_, which means Interactive Python Notebook. + +#### Setting up and running Jupyter + +First, install essential packages for Jupyter ([using][3] _[sudo][3]_): + +``` +$ sudo dnf install python3-notebook mathjax sscg +``` + +You might want to install additional and optional Python modules commonly used by data scientists: + +``` +$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk +``` + +Set a password to log into Notebook web interface and avoid those long tokens. Run the following command anywhere on your terminal: + +``` +$ mkdir -p $HOME/.jupyter +$ jupyter notebook password +``` + +Now, type a password for yourself. This will create the file _$HOME/.jupyter/jupyter_notebook_config.json_ with your encrypted password. + +Next, prepare for SSLby generating a self-signed HTTPS certificate for Jupyter’s web server: + +``` +$ cd $HOME/.jupyter; sscg +``` + +Finish configuring Jupyter by editing your _$HOME/.jupyter/jupyter_notebook_config.json_ file. Make it look like this: + +``` +{ + "NotebookApp": { + "password": "sha1:abf58...87b", + "ip": "*", + "allow_origin": "*", + "allow_remote_access": true, + "open_browser": false, + "websocket_compression_options": {}, + "certfile": "/home/aviram/.jupyter/service.pem", + "keyfile": "/home/aviram/.jupyter/service-key.pem", + "notebook_dir": "/home/aviram/Notebooks" + } +} +``` + +The parts in red must be changed to match your folders. Parts in blue were already there after you created your password. Parts in green are the crypto-related files generated by _sscg_. + +Create a folder for your notebook files, as configured in the _notebook_dir_ setting above: + +``` +$ mkdir $HOME/Notebooks +``` + +Now you are all set. Just run Jupyter Notebook from anywhere on your system by typing: + +``` +$ jupyter notebook +``` + +Or add this line to your _$HOME/.bashrc_ file to create a shortcut command called _jn_: + +``` +alias jn='jupyter notebook' +``` + +After running the command _jn_, access __ from any browser on the network to see the Jupyter user interface. You’ll need to use the password you set up earlier. Start typing some Python code and markup text. This is how it looks: + +![Jupyter with a simple notebook][4] + +In addition to the IPython environment, you’ll also get a web-based Unix terminal provided by _terminado_. Some people might find this useful, while others find this insecure. You can disable this feature in the config file. + +### JupyterLab — the next generation of Jupyter + +JupyterLab is the next generation of Jupyter, with a better interface and more control over your workspace. It’s currently not RPM-packaged for Fedora at the time of writing, but you can use _pip_ to get it installed easily: + +``` +$ pip3 install jupyterlab --user +$ jupyter serverextension enable --py jupyterlab +``` + +Then run your regular _jupiter notebook_ command or _jn_ alias. JupyterLab will be accessible from __**. + +### Tools used by data scientists + +In this section you can get to know some of these tools, and how to install them. Unless noted otherwise, the module is already packaged for Fedora and was installed as prerequisites for previous components. + +#### **Numpy** + +_Numpy_ is an advanced and C-optimized math library designed to work with large in-memory datasets. It provides advanced multidimensional matrix support and operations, including math functions as log(), exp(), trigonometry etc. + +#### Pandas + +In this author’s opinion, Python is THE platform for data science mostly because of Pandas. Built on top of numpy, Pandas makes easy the work of preparing and displaying data. You can think of it as a no-UI spreadsheet, but ready to work with much larger datasets. Pandas helps with data retrieval from a SQL database, CSV or other types of files, columns and rows manipulation, data filtering and, to some extent, data visualization with matplotlib. + +#### Matplotlib + +Matplotlib is a library to plot 2D and 3D data. It has great support for notations in graphics, labels and overlays + +![matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm][5] + +#### Seaborn + +Built on top of matplotlib, Seaborn’s graphics are optimized for a more statistical comprehension of data. It automatically displays regression lines or Gauss curve approximations of plotted data. + +![Linear regression visualised with SeaBorn][6] + +#### [StatsModels][7] + +StatsModels provides algorithms for statistical and econometrics data analysis such as linear and logistic regressions. Statsmodel is also home for the classical family of [time series algorithms][8] known as ARIMA. + +![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] + +#### Scikit-learn + +The central piece of the machine-learning ecosystem, [scikit][10] provides predictor algorithms for [regression][11] (Elasticnet, Gradient Boosting, Random Forest etc) and [classification][11] and clustering (K-means, DBSCAN etc). It features a very well designed API. Scikit also has classes for advanced data manipulation, dataset split into train and test parts, dimensionality reduction and data pipeline preparation. + +#### XGBoost + +XGBoost is the most advanced regressor and classifier used nowadays. It’s not part of scikit-learn, but it adheres to scikit’s API. [XGBoost][12] is not packaged for Fedora and should be installed with pip. [XGBoost can be accelerated with your nVidia GPU][13], but not through its _pip_ package. You can get this if you compile it yourself against CUDA. Get it with: + +``` +$ pip3 install xgboost --user +``` + +#### Imbalanced Learn + +[imbalanced-learn][14] provides ways for under-sampling and over-sampling data. It is useful in fraud detection scenarios where known fraud data is very small when compared to non-fraud data. In these cases data augmentation is needed for the known fraud data, to make it more relevant to train predictors. Install it with _pip_: + +``` +$ pip3 install imblearn --user +``` + +#### NLTK + +The [Natural Language toolkit][15], or NLTK, helps you work with human language data for the purpose of building chatbots (just to cite an example). + +#### SHAP + +Machine learning algorithms are very good on predicting, but aren’t good at explaining why they made a prediction. [SHAP][16] solves that, by analyzing trained models. + +![Where SHAP fits into the data analysis process][17] + +Install it with _pip_: + +``` +$ pip3 install shap --user +``` + +#### [Keras][18] + +Keras is a library for deep learning and neural networks. Install it with _pip_: + +``` +$ sudo dnf install python3-h5py +$ pip3 install keras --user +``` + +#### [TensorFlow][19] + +TensorFlow is a popular neural networks builder. Install it with _pip_: + +``` +$ pip3 install tensorflow --user +``` + +* * * + +_Photo courtesy of [FolsomNatural][20] on [Flickr][21] (CC BY-SA 2.0)._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ + +作者:[Avi Alkalay][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/aviram/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/jupyter-816x345.jpg +[2]: http://mathjax.org +[3]: https://fedoramagazine.org/howto-use-sudo/ +[4]: https://avi.alkalay.net/articlefiles/2018/07/jupyter-fedora.png +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/gradient-descent-cost-function-optimization.png +[6]: https://seaborn.pydata.org/_images/regression_marginals.png +[7]: https://www.statsmodels.org/ +[8]: https://www.statsmodels.org/stable/examples/index.html#stats +[9]: https://fedoramagazine.org/wp-content/uploads/2019/06/time-series.png +[10]: https://scikit-learn.org/stable/ +[11]: https://scikit-learn.org/stable/supervised_learning.html#supervised-learning +[12]: https://xgboost.ai +[13]: https://xgboost.readthedocs.io/en/latest/gpu/index.html +[14]: https://imbalanced-learn.readthedocs.io +[15]: https://www.nltk.org +[16]: https://github.com/slundberg/shap +[17]: https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_diagram.png +[18]: https://keras.io +[19]: https://www.tensorflow.org +[20]: https://www.flickr.com/photos/87249144@N08/ +[21]: https://www.flickr.com/photos/87249144@N08/45871861611/ From e28cdd627e93f24bff680bee41598808f1cc586d Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:54:38 +0800 Subject: [PATCH 242/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190702=20Make?= =?UTF-8?q?=20Linux=20stronger=20with=20firewalls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190702 Make Linux stronger with firewalls.md --- ...0702 Make Linux stronger with firewalls.md | 276 ++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 sources/tech/20190702 Make Linux stronger with firewalls.md diff --git a/sources/tech/20190702 Make Linux stronger with firewalls.md b/sources/tech/20190702 Make Linux stronger with firewalls.md new file mode 100644 index 0000000000..d558f16931 --- /dev/null +++ b/sources/tech/20190702 Make Linux stronger with firewalls.md @@ -0,0 +1,276 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Make Linux stronger with firewalls) +[#]: via: (https://opensource.com/article/19/7/make-linux-stronger-firewalls) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +Make Linux stronger with firewalls +====== +Learn how firewalls work and which settings to tweak for better Linux +security. +![People working together to build ][1] + +Everyone's heard of firewalls, even if only as a plot device in a TV cybercrime drama. Many people also know that their computer is (likely) running a firewall, but fewer people understand how to take control of their firewall when necessary. + +Firewalls block unwanted network traffic, but different networks have different threat levels. For instance, if you're at home, you probably trust the other computers and devices on your network a lot more than when you're out at the local café using public WiFi. You can hope your computer differentiates between a trusted network and an untrusted one, or you can learn to manage, or at least verify, your security settings yourself. + +### How firewalls work + +Communication between devices on a network happens through gateways called _ports_. Port, in this context, doesn't mean a physical connection like a USB port or an HDMI port. In network lingo, a port is an entirely virtual concept representing pathways for a specific type of data to either arrive at or depart from a computer. This system could have been called anything, like "connections" or "doorways," but they were named ports at least [as early as 1981][2], and that's the name in use today. The point is, there's nothing special about any port; they're just a way to designate an address where data transference may happen. + +Back in 1972, [a list of port numbers][3] (then called "sockets") was published, and this has since evolved into a set of well-known standard port numbers that help manage specific kinds of traffic. For instance, you access ports 80 and 443 on a daily basis when you visit a website, because most everyone on the internet has agreed, implicitly or explicitly, that data is transferred from web servers over those ports. You can test this theory by opening a web browser and navigating to a website with a nonstandard port appended to the URL. For instance, if you navigate to **example.com:42**, your request is denied because example.com does not serve a website at port 42. + +![Navigating to a nonstandard port produces an error][4] + +If you revisit the same website at port 80, you get a website, as expected. You can specify port 80 with **:80** at the end of the URL, but because port 80 is the standard port for HTTP traffic, your web browser assumes port 80 by default. + +When a computer, like a web server, expects traffic at a specific port, it's acceptable (and necessary) to have the port open for traffic. The danger is leaving ports open that you have no reason to expect traffic on, and that's exactly what a firewall is for. + +### Install firewalld + +There are many interfaces for firewall configuration. This article covers [**firewalld**][5], which integrates with Network Manager on the desktop and **firewall-cmd** in the terminal. Many Linux distributions ship with these tools installed. If yours doesn't, you can either take this article as general advice for firewall management and apply it to what you use, or you can install **firewalld**. + +On Ubuntu, for instance, you must enable the **universe** repository, deactivate the default **ufw** firewall, and then install **firewalld**: + + +``` +$ sudo systemctl disable ufw +$ sudo add-apt-repository universe +$ sudo apt install firewalld +``` + +Fedora, CentOS, RHEL, OpenSUSE, and many others include **firewalld** by default. + +Regardless of your distribution, for a firewall to be effective, it must be active and set to be loaded at boot. The less you have to think about firewall maintenance, the better. + + +``` +`$ sudo systemctl enable --now firewalld` +``` + +### Choose your zone with Network Manager + +You probably connect to many different networks every day. You're on one network at work, another at the café, and yet another at home. Your computer can detect which network you use more frequently than others, but it doesn't know which you trust. + +A firewall _zone_ contains presets deciding what ports to open and close. Using zones, you can choose a policy that makes the most sense for the network you're currently on. + +To see a list of available zones, open the Network Manager Connection Editor, found in your Applications menu, or with the **nm-connection-editor &** command. + +![Network Manager Connection Editor][6] + +From the list of network connections, double-click on your current network. + +In the network configuration window that appears, click the General tab. + +In the General panel, click the drop-down menu next to Firewall Zone for a list of all available zones. + +![Firewall zones][7] + +You can get this same list with this terminal command: + + +``` +`$ sudo firewall-cmd --get-zones` +``` + +The zone titles indicate what their designers had in mind when creating them, but you can get the specifics of any zone with this terminal command: + + +``` +$ sudo firewall-cmd --zone work --list-all +work +  target: default +  icmp-block-inversion: no +  interfaces: +  sources: +  services: ssh dhcpv6-client +  ports: +  protocols: +  [...] +``` + +In this example, the **work** zone is configured to permit SSH and DHCPv6-client incoming traffic but drops any other incoming traffic not explicitly requested by the user. (In other words, the **work** zone doesn't block HTTP response traffic when you visit a website, but it _does_ deny an HTTP request on your port 80.) + +View each zone to get familiar with the traffic each one allows. The most common ones are: + + * **Work:** Use this one when on a network you mostly trust. SSH, DHCPv6, and mDNS are permitted, and you can add more as needed. This zone is meant to be a starting point for a custom work environment based on your daily office requirements. + * **Public:** For networks you do not trust. This zone is the same as the work zone, but presumably, you would not add the same exceptions as your work zone. + * **Drop:** All incoming connections are dropped with no response given. This is as close to a stealth mode as you can get without shutting off networking entirely because only outgoing network connections are possible (even a casual port scanner could detect your computer from outgoing traffic, though, so don't mistake this zone for a cloaking device). This is arguably the safest zone when on public WiFi, and definitely the best when you have reason to believe a network is hostile. + * **Block:** All incoming connections are rejected with a message declaring that the requested port is prohibited. Only network connections you initiate are possible. This is a "friendly" version of the drop zone because, even though no port is open for incoming traffic, a port verbosely declines an uninitiated connection. + * **Home:** Use this when you trust other computers on the network. Only selected incoming connections are accepted, and you can add more as needed. + * **Internal:** Similar to the work zone, this is intended for internal networks where you mostly trust the other computers. You can open more ports and services as needed but still maintain a different rule set than you have on your work zone. + * **Trusted:** All network connections are accepted. Good for troubleshooting or on networks you absolutely trust. + + + +### Assigning a zone to a network + +You can assign a zone to any network connection you make. Furthermore, you can assign a different zone to each network interface (Ethernet cable, WiFi, and so on) that attaches to each network. + +Select the zone you want and click the Save button to commit the change. + +![Setting a new zone][8] + +The easiest way to get into the habit of assigning a zone to a network interface is to tend to the networks you use most often. Assign the home zone to your home network, the work zone to your work network, and the public network to your favorite library or café network. + +Once you have assigned a zone to all your usual networks, make an effort to assign a zone to the next new network you join, whether it's a new café or your mate's home network. Assigning zones is the best way to reinforce your own awareness that networks are not all equal and that you're not any more secure than anybody else just because you run Linux. + +### Default zone + +Rather than prompting you for a zone every time you join a new network, firewalld assigns any unknown network a default zone. Open a terminal and type this command to get your default zone: + + +``` +$ sudo firewall-cmd --get-default +public +``` + +In this example, the public zone is the default. It's expected that you will keep the public zone highly restrictive, so it's a pretty safe zone to assign unknown networks. However, you can set your own default instead. + +For instance, if you're more paranoid than most, or if you know that you frequent networks you have reason to distrust, you can assign a highly restrictive zone as default: + + +``` +$ sudo firewall-cmd --set-default-zone drop +success +$ sudo firewall-cmd --get-default +drop +``` + +Now any new network you join will be subject to the drop zone rules unless you manually change it to something less restrictive. + +### Customizing zones by opening ports and services + +Firewalld's developers don't intend for their zone definitions to satisfy the needs of all the different networks and levels of trust in existence. They're just starting points for you to use and customize. + +You don't have to know much about firewalls to be able to open and close ports based on the kinds of network activity you know you generate. + +#### Predefined services + +The simplest way to add permissions to your firewall is to add a predefined service. Strictly speaking, there's no such thing as a "service" as far as your firewall knows, because firewalls understand port numbers and protocol types. However, firewalld provides collections of ports and protocols based on standards and conventions. + +For example, if you're a web developer and want to open your computer up on your local network so your colleagues can see the website you're building, you would add the **http** and **https** services. If you're a gamer and you're running the open source [murmur][9] voice-chat server for your guild, then you'd add the **murmur** service. There are many other services available, which you can view with this command: + + +``` +$ sudo firewall-cmd --get-services +amanda-client amanda-k5-client bacula bacula-client \ +bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \ +ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \ +freeipa-ldap freeipa-ldaps ftp [...] +``` + +If you see a service you need, add it to your current firewall configuration, for example: + + +``` +`$ sudo firewall-cmd --add-service murmur` +``` + +This command opens all the ports and protocols needed for a particular service _within your default zone_, but only until you reboot your computer or restart your firewall. To make your changes permanent, use the **\--permanent** flag: + + +``` +`$ sudo firewall-cmd --add-service murmur --permanent` +``` + +You can also issue the command for a zone other than your default: + + +``` +`$ sudo firewall-cmd --add-service murmur --permanent --zone home` +``` + +#### Ports + +Sometimes you want to allow traffic for something that just isn't defined by firewalld's services. Maybe you're setting up a nonstandard port for a common service or you need to open an arbitrary port. + +For example, maybe you're running the open source [virtual tabletop][10] software [MapTool][11]. Since you're running the MapTool server and there's no industry standard governing which port MapTool runs on, you can decide what port it uses and then "poke a hole" in your firewall to allow traffic on that port. + +The process is basically the same as for services: + + +``` +`$ sudo firewall-cmd --add-port 51234/tcp` +``` + +This command opens port 51234 to incoming TCP connections _in your default zone_, but only until you reboot your computer or restart your firewall. To make your changes permanent, use the **\--permanent** flag: + + +``` +`$ sudo firewall-cmd --add-port 51234/tcp --permanent` +``` + +You can also issue the command for a zone other than your default: + + +``` +`$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home` +``` + +Allowing traffic through your computer is different from letting traffic through your router"s firewall. Your router probably has a different interface for its own embeded firewall (though the principle is the same), which is outside the scope of this article. + +### Removing ports and services + +If you decide a service or a port is no longer needed, you can restart your firewall to clear your changes, unless you use the **\--permanent** flag. + +If you made your changes permanent, use the **\--remove-port** or **\--remove-service** flag: + + +``` +`$ sudo firewall-cmd --remove-port 51234/tcp --permanent` +``` + +You can remove ports and services from a zone other than your default zone by specifying a zone in your command: + + +``` +`$ sudo firewall-cmd --remove-service murmur --permanent --zone home` +``` + +### Custom zones + +You can use and abuse the default zones provided by firewalld, but you also have the freedom to create your own. For instance, if it makes sense for you to have a zone specific to gaming, then you can create one and switch over to it only while gaming. + +To create a new, empty zone, create a new zone called **game** and reload the firewall rules so that your new zone becomes active: + + +``` +$ sudo firewall-cmd --new-zone game --permanent +success +$ sudo firewall-cmd --reload +``` + +Once it's created and active, you can customize it with all the services and ports you need to have open for game night. + +### Diligence + +Start thinking about your firewall strategy today. Start slow, and build up some sane defaults that make sense for you. It may take time before you make it a habit to think about your firewall and understand which network services you use, but with a little exploration, you can strengthen your Linux workstation no matter what your environment. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/make-linux-stronger-firewalls + +作者:[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/BUSINESS_buildtogether.png?itok=9Tvz64K5 (People working together to build ) +[2]: https://tools.ietf.org/html/rfc793 +[3]: https://tools.ietf.org/html/rfc433 +[4]: https://opensource.com/sites/default/files/uploads/web-port-nonstandard.png (Navigating to a nonstandard port produces an error) +[5]: https://firewalld.org/ +[6]: https://opensource.com/sites/default/files/uploads/nm-connection-editor.png (Network Manager Connection Editor) +[7]: https://opensource.com/sites/default/files/uploads/nm-zone.png (Firewall zones) +[8]: https://opensource.com/sites/default/files/uploads/nm-set.png (Setting a new zone) +[9]: https://www.mumble.com/ +[10]: https://opensource.com/article/18/5/maptool +[11]: https://github.com/RPTools From b6bdd979ee2755510d2a2ca3f4f3678d25abb636 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:55:47 +0800 Subject: [PATCH 243/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190702=20What?= =?UTF-8?q?=20makes=20a=20good=20code=20review=20in=20DevOps=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190702 What makes a good code review in DevOps.md --- ...What makes a good code review in DevOps.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sources/tech/20190702 What makes a good code review in DevOps.md diff --git a/sources/tech/20190702 What makes a good code review in DevOps.md b/sources/tech/20190702 What makes a good code review in DevOps.md new file mode 100644 index 0000000000..0979cf09b1 --- /dev/null +++ b/sources/tech/20190702 What makes a good code review in DevOps.md @@ -0,0 +1,84 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What makes a good code review in DevOps?) +[#]: via: (https://opensource.com/article/19/7/code-reviews-devops) +[#]: author: (Patrick Housley https://opensource.com/users/patrickhousley/users/juliegund/users/ghaff) + +What makes a good code review in DevOps? +====== +Well-run code reviews balance the freedom to innovate rapidly with code +quality and security. +![Pair programming][1] + +Improving the software development lifecycle, the speed we deliver software to customers, and the quality of that software are all great premises of [DevOps][2]. They are goals that the tools and techniques prescribed by the DevOps movement attempt to achieve. As a developer, I feel freer to make changes rapidly, not just to source code, but also to infrastructure and configuration code. As a DevOps practitioner, my goal is to balance that freedom with quality and security. How? One tool we can use is code reviews. + +Code reviews are not a new concept. They are often used as a manual gate-check for code changes before merging them to the trunk branch. This helps ensure quality and security by preventing developers from working in vacuums. It can also help ensure the entire team is aware of what's going on in their project. Much like anything in technology, there are many different ways to implement code reviews, and there can be some confusion around how to operate code reviews and what the goals of a code review are. Let's start by looking at who on the team should be doing the reviewing in code reviews. + +### Who should be reviewing code? + +It is easy to assume that the more senior developers on the team should be the ones reviewing code before it makes it to the trunk branch. That is only partly true. Everyone on the team should feel empowered and obligated to take time out of their day to review the code going into the repositories they work in most often. Why? It's all about perspective, and the more people we have engaging in code review, the more perspectives we can take advantage of. + +A developer's perspective when reviewing code is derived from a culmination of their years of experience as well as their _unique_ experiences. Unique experiences help diversify the team and can be a source of new, innovative solutions. Having more years of experience does not necessarily equate to having a diverse set of unique experiences. How does this fit into the junior-senior developer dynamic as applied to code reviews? Before we get too deep into the title war, let's first define what we mean by "code review." + +### Code review is a conversation + +Take a moment and think about what a code review means to you. Is it a manual gate to ensure the quality of the code making it to your trunk branch? Is it a chance to have the more senior developers, or maybe the developers more familiar with the area of the code base, review the code? These would all be good answers, but there is a better one. + +_Code reviews are a chance for you, the committer, and your peers to have a conversation about the changes being made before they are merged to the trunk branch._ + +Our goal should be simply to talk about the changes being made. It sounds simple, but, like any digital conversation, we simple humans always try to imply tone to the words we read. I have seen junior developers take seemingly innocuous questioning in a code review as a call to action. Instead of engaging in conversation, they immediately change the code. I think we all can say we have seen more senior developers use poor wording that implies improper tone in their code reviews and conversations around code changes. Many open source communities are trying to address this through Code of Conduct declarations. I have been privy to a solution for this issue that I still use today and recommend to all developers of every level: comment tagging. + +#### Comment tagging + +My previous example of a junior developer taking a question as a call to action doesn't come from thin air. I noticed this behavior some years ago when I would make comments or ask questions on pull requests as part of a code review. It really upset me at the time, because I was trying to have an honest conversation, not trying to imply the developer did anything wrong or needed to change the code. Luckily, I had great leadership that was able to help find the problem and come up with a solution. That solution was to start tagging our comments in the pull requests using the tags: _comment_, _question_, _blocker_, and _recommended_. It would look something like: + +> [comment] I think you meant to use the forEach prototype method here instead of map. +> [blocker] This constructor is too large and should be broken up into individual, specialized methods. +> [question] Is this method needed in this class with the merging of feature X? Feature x makes this a global utility method. +> [recommended] You could add a test case here to check for negative outcomes. This would help ensure future code changes do not break our expectations. + +It may seem simple, maybe even extreme, but it really helped spark conversations in our code reviews. Junior developers felt more empowered to have and stick to their opinions in the face of questioning from more senior developers. More importantly, they also felt empowered to question and comment in code reviews for changes made by more senior developers. + +### Leave your title at the door + +Through our discussion of who should be doing the reviewing in code reviews and what a code review is, one thing should be clear: the junior and senior titles mean very little. In fact, they can detract from the overall goal of code reviews, as was the case in the experience I described above. The concept is very simple: _No matter how senior you are, you can still make mistakes, and no matter how junior you are, you can still provide valuable and innovative solutions._ + +We will leave the comparison of what makes a junior and senior developer for another article. For now, let's get back to our code review conversation. We have covered the what and why of code reviews, but just as important is the when. When should you be doing code review? How often? + +### Code-review continuously + +I have seen code reviews performed in many ways over the past few years. Not long ago, I was on a team that did weekly, one-hour meetings for code review. Today, my team operates code reviews on an ongoing basis as part of our pull request process. In case you are not familiar with them, pull requests are a process commonly found in [Git][3] tooling like GitHub and GitLab where a developer makes a formal request to have the changes in their branch merged into another branch. + +How you and your team operate may be different, and you should always strive to find what works best for your team and project. My team and those around me use code reviews for two purposes: to formalize the code review process and to block merges to trunk based on automated code-quality checks. While we are having our conversation about the code changes in the pull request, our continuous integration pipeline is operating in the background to perform a sanity build of the project, run tests, linting, and static code analysis. The results are provided back to the pull request and help influence our code review. + +How often do we have these code reviews and pull requests? As often as possible. Complying with lean development practices indicates we make small commits and merges often. If that's the case, multiple pull requests happen daily, and many conversations happen continuously. This can become a little overwhelming but, if the changes being made are small, theoretically the conversations are also small, short, and sweet. + +### Put it all together + +Team dynamics will always play a substantial role in how practices like code reviews are performed. I typically like to start my day off by seeing what pull requests are open and what discussions are happening. It provides a nice, gradual start to my day, and I can catch up on what people are working on. I will typically go back throughout the day, as I take breaks from what I am working on, to check for more pull requests. This works great for me and might work well for you, so I encourage you to give it a try. + +No matter how you decide to conduct your code reviews, I typically discourage the one hour a week meeting. First, it can work counter to the lean development practice of committing small and often. Developers may wait to do any merging or open pull requests until code review. By that time, the code is not fresh in their mind, and things in the project may have changed that affect the changes they are making. Second, if your team is more than two developers, an hour meeting will probably not be long enough to adequately review all the changes from all the team members that need to go in. This could lead to changes being merged without code review, and that could be detrimental to code quality and security. + +Instead of using that one hour to dig through code changes, I find it better to talk higher-level. It's always good for a team to come together and discuss how they are architecting their code, how their features may affect or tie into each other, and what blockers they might be having. All in all, communication is key, and continuous code review should work to drive more communication. + +Is DevOps fundamentally about changing culture in an IT organization? That seemingly simple... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/code-reviews-devops + +作者:[Patrick Housley][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/patrickhousley/users/juliegund/users/ghaff +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/collab-team-pair-programming-code-keyboard.png?itok=kBeRTFL1 (Pair programming) +[2]: https://opensource.com/resources/devops +[3]: https://opensource.com/resources/what-is-git From 65b7b632c20fc57aa8f2dff476c961b6bf5e412f Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:56:48 +0800 Subject: [PATCH 244/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190702=20One=20?= =?UTF-8?q?CI/CD=20pipeline=20per=20product=20to=20rule=20them=20all?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190702 One CI-CD pipeline per product to rule them all.md --- ...D pipeline per product to rule them all.md | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 sources/tech/20190702 One CI-CD pipeline per product to rule them all.md 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 new file mode 100644 index 0000000000..2a7fcb31de --- /dev/null +++ b/sources/tech/20190702 One CI-CD pipeline per product to rule them all.md @@ -0,0 +1,136 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (One CI/CD pipeline per product to rule them all) +[#]: via: (https://opensource.com/article/19/7/cicd-pipeline-rule-them-all) +[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub/users/bclaster/users/matt-micene/users/barkerd427) + +One CI/CD pipeline per product to rule them all +====== +Is the idea of a unified continuous integration and delivery pipeline a +pipe dream? +![An intersection of pipes.][1] + +When I joined the cloud ops team, responsible for cloud operations and engineering process streamlining, at WorkSafeBC, I shared my dream for one instrumented pipeline, with one continuous integration build and continuous deliveries for every product. + +According to Lukas Klose, [flow][2] (within the context of software engineering) is "the state of when a system produces value at a steady and predictable rate." I think it is one of the greatest challenges and opportunities, especially in the complex domain of emergent solutions. Strive towards a continuous and incremental delivery model with consistent, efficient, and quality solutions, building the right things and delighting our users. Find ways to break down our systems into smaller pieces that are valuable on their own, enabling teams to deliver value incrementally. This requires a change of mindset for both business and engineering. + +### Continuous integration and delivery (CI/CD) pipeline + +The CI/CD pipeline is a DevOps practice for delivering code changes more often, consistently, and reliably. It enables agile teams to increase _deployment frequency_ and decrease _lead time for change_, _change-failure rate_, and _mean time to recovery_ key performance indicators (KPIs), thereby improving _quality_ and delivering _value_ faster. The only prerequisites are a solid development process, a mindset for quality and accountability for features from ideation to deprecation, and a comprehensive pipeline (as illustrated below). + +![Prerequisites for a solid development process][3] + +It streamlines the engineering process and products to stabilize infrastructure environments; optimize flow; and create consistent, repeatable, and automated tasks. This enables us to turn complex tasks into complicated tasks, as outlined by Dave Snowden's [Cynefin Sensemaking][4] model, reducing maintenance costs and increasing quality and reliability. + +Part of streamlining our flow is to minimize waste for the [wasteful practice types][5] Muri (overloaded), Mura (variation), and Muda (waste). + + * **Muri:** avoid over-engineering, features that do not link to business value, and excessive documentation + * **Mura:** improve approval and validation processes (e.g., security signoffs); drive the [shift-left][6] initiative to push unit testing, security vulnerability scanning, and code quality inspection; and improve risk assessment + * **Muda:** avoid waste such as technical debt, bugs, and upfront, detailed documentation + + + +It appears that 80% of the focus and intention is on products that provide an integrated and collaborative engineering system that can take an idea and plan, develop, test, and monitor your solutions. However, a successful transformation and engineering system is only 5% about products, 15% about process, and 80% about people. + +There are many products at our disposal. For example, Azure DevOps offers rich support for continuous integration (CI), continuous delivery (CD), extensibility, and integration with open source and commercial off-the-shelve (COTS) software as a service (SaaS) solutions such as Stryker, SonarQube, WhiteSource, Jenkins, and Octopus. For engineers, it is always a temptation to focus on products, but remember that they are only 5% of our journey. + +![5% about products, 15% about process, 80% about people][7] + +The biggest challenge is breaking down a process based on decades of rules, regulations, and frustrating areas of comfort: "_It is how we have always done it; why change?_"  + +The friction between people in development and operation results in a variety of fragmented, duplicated, and incessant integration and delivery pipelines. Development wants access to everything, to iterate continuously, to enable users, and to release continuously and fast. Operations wants to lock down everything to protect the business and users and drive quality. This inadvertently and often entails processes and governance that are hard to automate, which results in slower-than-expected release cycles. + +Let us explore the pipeline with snippets from a recent whiteboard discussion. + +The variation of pipelines is difficult and costly to support; the inconsistency of versioning and traceability complicates live site incidents, and continuous streamlining of the development process and pipelines is a challenge. + +![Improving quality and visibility of pipelines][8] + +I advocate a few principles that enable one universal pipeline per product: + + * Automate everything automatable + * Build once + * Maintain continuous integration and delivery + * Maintain continuous streamlining and improvement + * Maintain one build definition + * Maintain one release pipeline definition + * Scan for vulnerabilities early and often, and _fail fast_ + * Test early and often, and _fail fast_ + * Maintain traceability and observability of releases + + + +If I poke the hornet's nest, however, the most important principle is to _keep it simple_. If you cannot explain the reason (_what_, _why_) and the process (_how_) of your pipelines, you do not understand your engineering process. Most of us are not looking for the best, ultramodern, and revolutionary pipeline—we need one that is functional, valuable, and an enabler for engineering. Tackle the 80%—the culture, people, and their mindset—first. Ask your CI/CD knights in shining armor, with their TLA (two/three-lettered acronym) symbols on their shield, to join the might of practical and empirical engineering. + +### Unified pipeline + +Let us walk through one of our design practice whiteboard sessions. + +![CI build/CD release pipeline][9] + +Define one CI/CD pipeline with one build definition per application that is used to trigger _pull-request pre-merge validation_ and _continuous integration_ builds. Generate a _release_ build with debug information and upload to the [Symbol Server][10]. ****This enables developers to debug locally and remotely in production without having to worry which build and symbols they need to load—the symbol server performs that magic for us. + +![Breaking down the CI build pipeline][11] + +Perform as many validations as possible in the build—_shift left_—allowing feature teams to fail fast, continuously raise the overall product quality, and include invaluable evidence for the reviewers with every pull request. Do you prefer a pull request with a gazillion commits? Or a pull request with a couple of commits and supporting evidence such as security vulnerabilities, test coverage, code quality, and [Stryker][12] mutant remnants? Personally, I vote for the latter. + +![Breaking down the CD release pipeline][13] + +Do not use build transformation to generate multiple, environment-specific builds. Create one build and perform release-time _transformation_, _tokenization_, and/or XML/JSON _value replacement_. In other words, _shift-right_ the environment-specific configuration. + +![Shift-right the environment-specific configuration][14] + +Securely store release configuration data and make it available to both Dev and Ops teams based on the level of _trust_ and _sensitivity_ of the data. Use the open source Key Manager, Azure Key Vault, AWS Key Management Service, or one of many other products—remember, there are many hammers in your toolkit! + +![Dev-QA-production pipeline][15] + +Use _groups_ instead of _users_ to move approver management from multiple stages across multiple pipelines to simple group membership. + +![Move approver management to simple group membership][16] + +Instead of duplicating pipelines to give teams access to their _areas of interest_, create one pipeline and grant access to _specific stages_ of the delivery environments. + +![Pipeline with access to specific delivery stages][17] + +Last, but not least, embrace pull requests to help raise insight and transparency into your codebase, improve the overall quality, collaborate, and release pre-validation builds into selected environments; e.g., the Dev environment. + +Here is a more formal view of the whole whiteboard sketch. + +![The full pipeline][18] + +So, what are your thoughts and learnings with CI/CD pipelines? Is my dream of _one pipeline to rule them all_ a pipe dream? + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all + +作者:[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/users/bclaster/users/matt-micene/users/barkerd427 +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe (An intersection of pipes.) +[2]: https://continuingstudies.sauder.ubc.ca/courses/agile-delivery-methods/ii861 +[3]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-2.png (Prerequisites for a solid development process) +[4]: https://en.wikipedia.org/wiki/Cynefin_framework +[5]: https://www.lean.org/lexicon/muda-mura-muri +[6]: https://en.wikipedia.org/wiki/Shift_left_testing +[7]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-3.png (5% about products, 15% about process, 80% about people) +[8]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-4_0.png (Improving quality and visibility of pipelines) +[9]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-5_0.png (CI build/CD release pipeline) +[10]: https://en.wikipedia.org/wiki/Microsoft_Symbol_Server +[11]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-6.png (Breaking down the CI build pipeline) +[12]: https://stryker-mutator.io/ +[13]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-7.png (Breaking down the CD release pipeline) +[14]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-8.png (Shift-right the environment-specific configuration) +[15]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-9.png (Dev-QA-production pipeline) +[16]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-10.png (Move approver management to simple group membership) +[17]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-11.png (Pipeline with access to specific delivery stages) +[18]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-12.png (The full pipeline) From 11ad2e6bca129436ae5c3d5b088c41c1ed30c2c3 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 3 Jul 2019 00:58:05 +0800 Subject: [PATCH 245/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190702=20SD-WAN?= =?UTF-8?q?=20Buyers=20Should=20Think=20Application=20Performance=20as=20w?= =?UTF-8?q?ell=20as=20Resiliency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190702 SD-WAN Buyers Should Think Application Performance as well as Resiliency.md --- ...ation Performance as well as Resiliency.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sources/talk/20190702 SD-WAN Buyers Should Think Application Performance as well as Resiliency.md diff --git a/sources/talk/20190702 SD-WAN Buyers Should Think Application Performance as well as Resiliency.md b/sources/talk/20190702 SD-WAN Buyers Should Think Application Performance as well as Resiliency.md new file mode 100644 index 0000000000..3bddd4cdc3 --- /dev/null +++ b/sources/talk/20190702 SD-WAN Buyers Should Think Application Performance as well as Resiliency.md @@ -0,0 +1,49 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (SD-WAN Buyers Should Think Application Performance as well as Resiliency) +[#]: via: (https://www.networkworld.com/article/3406456/sd-wan-buyers-should-think-application-performance-as-well-as-resiliency.html) +[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) + +SD-WAN Buyers Should Think Application Performance as well as Resiliency +====== + +![istock][1] + +As an industry analyst, not since the days of WAN Optimization have I seen a technology gain as much interest as I am seeing with [SD-WANs][2] today. Although full deployments are still limited, nearly every network manager, and often many IT leaders I talk to, are interested in it. The reason for this is two-fold – the WAN has grown in importance for cloud-first enterprises and is badly in need of an overhaul. This hasn’t gone unnoticed by the vendor community as there has been an explosion of companies bringing a broad range of SD-WAN offerings to market. The great news for buyers is that there is no shortage of choices. The bad news is there are too many choices and making the right decision difficult. + +One area of differentiation for SD-WAN vendors is how they handle application performance.  I think of the SD-WAN market as being split into two categories – basic and advanced SD-WANs.  A good analogy is to think of the virtualization market.  There are many vendors that offer hypervisors – in fact there are a number of free ones.  So why do companies pay a premium for VMware? It’s because VMware offers many advanced features and capabilities that make its solution do more than just virtualize servers. + +Similarly, basic SD-WAN solutions do a great job of helping to lower costs and to increase application resiliency through path selection capabilities but do nothing to improve application performance. One myth that needs busting is that all SD-WANs make your applications perform better. That’s simply not true as application availability and performance are two different things. It’s possible to have great performance and poor availability or high availability with lackluster performance.  + +Consider the case where a business runs a hybrid WAN and voice and video traffic is sent over the MPLS connection and broadband is used for other traffic. If the MPLS link becomes congested, but doesn’t go down, most SD-WAN solutions will continue to send video and voice over it, which obviously degrades the performance. If multiple broadband connections are used, the chances of congestion related issues are even more likely.  + +This is an important point for IT professionals to understand. The business justification for SD-WAN was initially built around saving money but if application performance suffers, the entire return on investment (ROI) for the project might as well be tossed out the window.  For many companies, the network is the business, so a poor performing network means equally poor performing applications which results lost productivity, lower revenues and possibly brand damage from customer experience issues.  + +I’ve talked to many organizations that had digital initiatives fail because the network wasn’t transformed. For example, a luxury retailer implemented a tablet program for in store personnel to be able to show merchandise to customers. High end retail is almost wholly impulse purchases so the more inventory that can be shown to a customer, the larger the resulting sales. The WAN that was in place was causing the mobile application to perform poorly causing the digital initiative to have a negative effect. Instead of driving sales, the mobile initiative was chasing customers from the store.  The idea was right but the poor performing WAN caused the project to fail. + +SD-WAN decision makers need to look to suppliers that have specific technologies integrated into it that can act when congestion occurs.  A great example of this is the Silver Peak [Unity EdgeConnect™][3] SD-WAN edge platform with [path conditioning][4], [traffic shaping][5] and sub-second link failover. This ensures the best possible quality for all critical applications, even when an underlying link experiences congestion or an outage, even for [voice and video over broadband][6]. This is a foundational component of advanced SD-WAN providers as they offer the same resiliency and cost benefits as a basic SD-WAN but also ensure application performance remains high.  + +The SD-WAN era is here, and organizations should be aggressive with deployments as it will transform the WAN and make it a digital transformation enabler. Decision makers should choose their provider carefully and ensure the vendor also improves application performance.  Without it, the digital initiatives will likely fail and negate any ROI the company was hoping to realize. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3406456/sd-wan-buyers-should-think-application-performance-as-well-as-resiliency.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://images.idgesg.net/images/article/2019/07/istock-157647179-100800860-large.jpg +[2]: https://www.silver-peak.com/sd-wan/sd-wan-explained +[3]: https://www.silver-peak.com/products/unity-edge-connect +[4]: https://www.silver-peak.com/products/unity-edge-connect/path-conditioning +[5]: https://www.silver-peak.com/products-solutions/unity/traffic-shaping +[6]: https://www.silver-peak.com/sd-wan/voice-video-over-broadband From d229ce68e86719b8eec17386b80e3f3d6b1c0bdc Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 01:09:34 +0800 Subject: [PATCH 246/336] PRF:20180629 100 Best Ubuntu Apps.md PART 5 --- .../tech/20180629 100 Best Ubuntu Apps.md | 65 ++++++++++--------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index 9f55121d87..06b0db2c75 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -119,7 +119,7 @@ Skype 有一个优秀的用户图形界面,与 Windows 上的桌面客户端 $ sudo snap install skype ``` -### 13、VirtualBox +### 11、VirtualBox VirtualBox 是由 Oracle 公司开发的跨平台的虚拟化软件应用(LCTT 译注:实际上是由被 Oracle 公司收购的 Sun 公司开发的,包括 Java、Solaris 也是)。如果你喜欢尝试新的操作系统,那么 VirtualBox 是你必备的 Ubuntu 应用。你可以在 Windows 内尝试 Linux、Mac,也可以在 Linux 系统内尝试 Windows 和 Mac。 @@ -381,19 +381,19 @@ Ramme 是一个很酷的非官方的 Instagram 桌面客户端,给你带来 In ### 35、Thunderbird -Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默认邮件客户端。尽管在 2017 年与 Mozilla 分离,Thunderbird 仍然是 Linux 平台非常流行的最好的邮件客户端。它自带的功能包括垃圾邮件过滤、IMAP 和 POP 邮件同步、日历支持、通讯录集成和很多其它可以开箱即用的功能。 +Thunderbird 是一个开源的邮件客户端,是很多 Linux 发行版的默认邮件客户端。尽管在 2017 年与 Mozilla 分道扬镳(LCTT 译注: Thunderbird 现在由 Thunderbird 议会独立决策,只是将财务和法律关系留在 Mozilla 基金会),Thunderbird 仍然是 Linux 平台非常流行的最好的邮件客户端。它自带的功能包括垃圾邮件过滤、IMAP 和 POP 邮件同步、日历支持、通讯录集成和很多其它可以开箱即用的功能。 ![][41] -它是一个跨平台的邮件客户端,在所有支持的平台上完全由社区提供支持。多亏它的高度自定义特点,你总是可以改变它的外观和观感。 +它是一个跨平台的邮件客户端,由社区提供对所有平台提供支持。因其可以高度自定义,你可以改变它的外观和观感。 ### 36、Pidgin -Pidgin 是一个即时信息客户端,你能够在单个窗口下登录不同的即时网络。你可以登录到像 Google Talk、XMPP、AIM、Bonjour 等。 +Pidgin 是一个即时信息客户端,你能够在单个窗口下登录不同的即时通讯网络。你可以登录到像 Google Talk、XMPP、AIM、Bonjour 等即时通讯。 ![][42] -Pidgin 拥有你期待的即时通信的所有特点,你总是可以通过安装额外的插件来提升其表现。 +Pidgin 拥有你所期待的即时通信的所有特点,你总是可以通过安装额外的插件来提升其表现。 ``` $ sudo apt-get install pidgin @@ -401,7 +401,7 @@ $ sudo apt-get install pidgin ### 37、Krita -Krita 是由 KDE 开发的自由开源的数字绘制、编辑和动画应用。它有优秀的用户界面,每个组件都恰到好处,因此你可以轻松找到你所需要的。 +Krita 是由 KDE 开发的自由开源的数字绘制、编辑和动画的应用。它有优秀的用户界面,每个组件都恰到好处,因此你可以轻松找到你所需要的。 ![][43] @@ -413,7 +413,7 @@ Dropbox 是一个出色的云存储客户端,正确安装后,它在 Ubuntu ![][44] -它总是在后台运行,备份你系统上的新文件到云存储,持续保持你的电脑和云存储间的同步。 +它总是在后台运行,可以备份你系统上的新文件到云存储,持续保持你的电脑和云存储间的同步。 ``` $ sudo apt-get install nautilus-dropbox @@ -421,11 +421,11 @@ $ sudo apt-get install nautilus-dropbox ### 39、Kodi -Kodi 的前身是人们熟知的 Xbox 媒体中心(XBMC),是一个开源的媒体播放器。你可以在线或离线播放音乐、视频、播客、视频游戏等。这个软件最初是为第一代的 Xbox 游戏主机开发的,之后慢慢地移植到了个人电脑上。 +Kodi 的前身是人们所熟知的 Xbox 媒体中心(XBMC),它是一个开源的媒体播放器。你可以在线或离线播放音乐、视频、播客、视频游戏等。这个软件最初是为第一代的 Xbox 游戏主机开发的,之后慢慢地移植到了个人电脑上。 ![][45] -Kodi 有令人印象深刻的视频接口,快速而强大。它是可高度定制的媒体播放器,你可以通过安装插件,来获取在线流服务,如 Pandora、Spotify、Amazon Prime Video、Netflix 和 YouTube 等等。 +Kodi 有令人印象深刻的视频界面,快速而强大。它是可高度定制的媒体播放器,你可以通过安装插件,来获取在线流服务,如 Pandora、Spotify、Amazon Prime Video、Netflix 和 YouTube 等等。 ### 40、Spotify @@ -437,7 +437,7 @@ Spotify 是最好的在线媒体流站点之一。它提供免费和付费的音 ### 41、Brackets -Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来进行 web 开发和设计,例如 HTML、CSS 和 JavaScript。它带有的实时预览模式是一个很棒的特点,当你在脚本中修改时,你可以获得实时预览效果。 +Brackets 是一个由 Adobe 开发的开源的文本编辑器。它可以用来进行 web 开发和设计,例如 HTML、CSS 和 JavaScript。它带有的实时预览模式是一个很棒的特点,当你在脚本中修改时,你可以获得实时预览效果。 ![][47] @@ -445,7 +445,7 @@ Brackets 是一个有 Adobe 开发的开源的文本编辑器。它可被用来 ### 42、Bitwarden -现今,安全问题事件增加,用户密码被盗后,重要的数据受到连累,因此,账户安全性必须严肃对待。推荐你使用 Bitwarden,将你的所有账户和登录密码安全地存在一个地方。 +现今,账户安全是一个严重的问题,我们可以看到用户密码被盗和重要数据受到侵害的安全漏洞在不断增加。推荐你使用 Bitwarden,将你的所有账户和登录密码安全地存在一个地方。 ![][48] @@ -453,7 +453,7 @@ Bitwarden 使用 AES-256 加密技术来存储所有的登录细节,只有用 ### 43、Terminator -Terminator 是一个开源终端模拟器,是用 Java 语言开发的。它是一个跨平台的模拟器,允许你在单个窗口有多个终端,在 Linux 默认的终端模拟器中不是这样。 +Terminator 是一个开源的终端模拟器,是用 Java 语言开发的。它是一个跨平台的模拟器,允许你在单个窗口有多个终端,在 Linux 默认的终端模拟器中不是这样。 ![][49] @@ -465,11 +465,11 @@ $ sudo apt-get install terminator ### 44、Yak Yak -Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端。它可能是一个不错的 Microsort 的 Skype 的替代品,自身拥有很多让人吃惊的特点。你可以启用桌面通知,设置语言偏好,使用最小内存或功率就可以工作等。 +Yak Yak 是一个开源的非官方的 Google Hangouts 消息的桌面客户端。它可以作为 Microsort Skype 的一个不错的替代品,自身拥有很多让人吃惊的特点。你可以启用桌面通知、设置语言偏好,使用很少的内存和处理能力就可以工作。 ![][50] -Yak Yak 拥有你期待的所有任何即时消息应用的所有特点,例如输入指示、拖放媒体文件、音/视频电话。 +Yak Yak 拥有你期待的任何即时消息应用的所有特点,例如输入指示、拖放媒体文件、音/视频电话。 ### 45、Thonny @@ -477,7 +477,7 @@ Thonny 是一个简单和轻量级的 IDE,尤其是为编程的初学者设计 ![][51] -Thonny 同样是一个很棒的调试工具,它支持调试过程中的即时变量值显示,除此之外,它还提供了独立的窗口以执行函数调用,简易的用户界面的特点。 +Thonny 同样是一个很棒的调试工具,它支持调试过程中的变量值即时显示,除此之外,它还提供了独立的窗口以执行函数调用,简单的用户界面等等。 ``` $ sudo apt-get install thonny @@ -489,7 +489,7 @@ $ sudo apt-get install thonny ![][52] -Gtk+ 字体管理器不是为专业用户准备的,它有简单的用户界面,你会发现很容易使用。你只需要从网上下载字体文件,并使用字体管理器添加它们。 +这个 Gtk+ 字体管理器不是为专业用户准备的,它有简单的用户界面,你会发现很容易使用。你只需要从网上下载字体文件,并使用字体管理器添加它们。 ``` $ sudo add-apt-repository ppa:font-manager/staging @@ -511,11 +511,11 @@ $ sudo apt-get install atril ### 48、Notepadqq -如果你曾在 Windows 上用过 Notepad++,并且想在 Linux 上寻找相似的程序,别担心,开发者们已经将它移植到 Linux,叫 Notepadqq。它是一个简单且强大的文本编辑器,你可以在日常生活中用它,或用各种语言编程。 +如果你曾在 Windows 上用过 Notepad++,并且想在 Linux 上寻找相似的程序,别担心,开发者们已经将它移植到 Linux,名为 Notepadqq。它是一个简单而强大的文本编辑器,你可以在日常使用它,或用于各种语言进行编程。 ![][54] -尽管作为一个简单的文本编辑器,它有一些令人惊奇的特点,例如,你可以设置主题为暗黑或明亮模式、多选、正则搜索和实时高亮。 +尽管是作为一个简单的文本编辑器,它有一些令人惊奇的特点,例如,你可以设置主题为暗黑或明亮模式、多选、正则搜索和实时高亮。 ``` $ sudo add-apt-repository ppa:notpadqq-team/notepadqq @@ -525,7 +525,7 @@ $ sudo apt-get install notepadqq ### 49、Amarok -Amarok 是在 KDE 项目下开发的一个开源音乐播放器。它有直观的界面,让你感觉在家一样,因此你可以轻易的发现你最喜爱的音乐。除了 Clementine,当你在寻找 Ubuntu 上的完美的音乐播放器时,Amarok 是一个很棒的选择。 +Amarok 是在 KDE 项目下开发的一个开源音乐播放器。它有直观的界面,让你感觉在家一样,因此你可以轻易的发现你最喜爱的音乐。除了 Clementine,当你寻找 Ubuntu 上的完美的音乐播放器时,Amarok 是一个很棒的选择。 ![][55] @@ -561,11 +561,11 @@ Akregator 同样提供了桌面通知、自动摘要等功能。你会发现在 ### 54、Brave -Brave 是一个开源的 web 浏览器,拦截了广告和追踪,所以你可以快速和安全的浏览你的内容。它实际做的是代表你向网站和油管主播支付了费用。如果你宁可向网站和和油管主播做出支持而不是看广告,这个浏览器更适合你。 +Brave 是一个开源的 web 浏览器,拦截了广告和追踪,所以你可以快速和安全的浏览你的内容。它实际做的是代表你向网站和 Youtube 主播支付了费用。如果你宁可支持网站和 Youtube 主播也不愿意看广告,这个浏览器更适合你。 ![][60] -对于那些想要安全浏览但有不想错过互联网上重要数据的人来说,这是一个新概念,一个不错的浏览器。 +对于那些想要安全浏览,但又不想错过互联网上重要信息的人来说,这是一个新概念,一个不错的浏览器。 ### 55、Bitcoin Core @@ -583,7 +583,7 @@ $ sudo apt-get install bitcoin-qt ### 56、Speedy 重复查找工具 -Speedy 重复查找工具是一个跨平台的文件查找工具,用来帮助你查找你的系统上的重复文件,清理磁盘空间。它是一个智能工具,在整个硬盘上搜索重复文件,同样提供智能过滤功能,根据文件类型、扩展或大小帮你找到文件。 +Speedy 重复查找工具是一个跨平台的文件查找工具,用来帮助你查找你的系统上的重复文件,清理磁盘空间。它是一个智能工具,可以在整个硬盘上搜索重复文件,它同样提供了智能过滤功能,根据文件类型、扩展或大小帮你找到文件。 ![][62] @@ -607,7 +607,7 @@ Okular 是在 Ubuntu 上你应该尝试的最好的文件查看器之一,它 ### 59、FocusWriter -FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面屏幕,因此你能够专注写作。正如你看到的屏幕截图,整个 Ubuntu 屏幕被隐藏了,只有你和你的字处理工具。但你总是可以进入 Ubuntu 屏幕,当你需要的时候,只需要将光标移动到屏幕的边缘。 +FocusWriter 是一个集中注意力的字处理工具,隐藏了你的桌面屏幕,让你能够专注写作。正如你看到的屏幕截图,整个 Ubuntu 屏幕被隐藏了,只有你和你的字处理工具。但你总是可以进入 Ubuntu 屏幕,当你需要的时候,只需要将光标移动到屏幕的边缘即可。 ![][65] @@ -627,7 +627,7 @@ $ sudo apt-get install guake ### 61、KDE Connect -KDE Connect 是 Ubuntu 上的一个很棒的应用,我很想在这篇马拉松文章中将它提早列出来,但是竞争太激烈。总之 KDE Connect 可以将你的 Android 智能手机的通知直接转到 Ubuntu 桌面来。 +KDE Connect 是 Ubuntu 上的一个很棒的应用,我很想在这篇马拉松文章中将它提早列出来,但是竞争太激烈了。总之 KDE Connect 可以将你的 Android 智能手机的通知直接转到 Ubuntu 桌面来。 ![][67] @@ -641,7 +641,7 @@ $ sudo apt-get install kdeconnect indicator-kdeconnect ### 62、CopyQ -CopyQ 是一个简单但是非常有用的剪贴板管理器,它保存你的系统剪贴板内容,无论你做了什么改变,你都可以在你需要的时候恢复它。它是一个很棒的工具,支持文本、图像、HTML 和其它格式。 +CopyQ 是一个简单但是非常有用的剪贴板管理器,它保存你的系统剪贴板内容,无论你做了什么改变,你都可以在你需要的时候搜索和恢复它。它是一个很棒的工具,支持文本、图像、HTML 和其它格式。 ![][68] @@ -680,17 +680,22 @@ Anbox 是现代和功能丰富的模拟器之一,提供的功能包括无限 ``` $ sudo add-apt-repository ppa:morphis/anbox-support $ sudo apt-get update -$ sudo apt install anbox-modules-dkms Now install Anbox using snap +$ sudo apt install anbox-modules-dkms +``` + +然后你可以使用 snap 来安装 Anbox。 + +``` $ snap install --devmode -- beta anbox ``` ### 65、OpenShot -你会发现 OpenShot 是 Linux 发行版中最好的开源视频编辑器。它是跨平台的视频编辑器,易于使用,性能方面毫不逊色。它支持所有主流的音频、视频、图像格式。 +你会发现 OpenShot 是 Linux 发行版中最好的开源的视频编辑器。它是跨平台的视频编辑器,易于使用,性能方面毫不逊色。它支持所有主流的音频、视频、图像格式。 ![][71] -OpenShot 有干净的用户界面,功能有拖放、片段大小、大小缩放、裁剪、快照、实时预览、音频混合和编辑等多种功能。 +OpenShot 有干净的用户界面,功能有拖放、剪切缩放、尺寸缩放、裁剪、快照、实时预览、音频混合和编辑等多种功能。 ``` $ sudo add-apt-repository ppa:openshot.developers/ppa @@ -700,11 +705,11 @@ $ sudo apt-get install openshot -qt ### 66、Plank -如果你在为你的 Ubuntu 桌面寻找一个 Dock 导航栏,那 Plank 应该是一个选择。它是完美的,安装后你不需要任何的修改,除非你想这么做,它有内置的偏好面板,你可以自定义主题,Dock 大小和位置。 +如果你在为你的 Ubuntu 桌面寻找一个 Dock 导航栏,那 Plank 应该是一个选择。它是完美的,安装后你不需要任何的修改,除非你想这么做,它有内置的偏好面板,你可以自定义主题、Dock 大小和位置。 ![][72] -尽管是一个简单的导航栏,Plank 提供了通过拖放来重新摆放的功能,固定和运行应用图标,转换主题支持。 +尽管是一个简单的导航栏,Plank 提供了通过拖放来重新摆放,固定和运行应用图标,透明主题支持等功能。 ``` $ sudo add-apt-repository ppa:ricotz/docky From f52ab282610a4a5f92a4912ac054fc79120ae6d9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 3 Jul 2019 08:50:50 +0800 Subject: [PATCH 247/336] translated --- ...ello Alternative OpenProject 9 Released.md | 85 ------------------- ...ello Alternative OpenProject 9 Released.md | 80 +++++++++++++++++ 2 files changed, 80 insertions(+), 85 deletions(-) delete mode 100644 sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md create mode 100644 translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md diff --git a/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md deleted file mode 100644 index 35ba13853d..0000000000 --- a/sources/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Free and Open Source Trello Alternative OpenProject 9 Released) -[#]: via: (https://itsfoss.com/openproject-9-release/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Free and Open Source Trello Alternative OpenProject 9 Released -====== - -[OpenProject][1] is a collaborative open source project management software. It’s an alternative to proprietary solutions like [Trello][2] and [Jira][3]. - -You can use it for free if it’s for personal use and you set it up (and host it) on your own server. This way, you control your data. - -Of course, you get access to premium features and priority help if you are a [Cloud or Enterprise edition user][4]. - -The OpenProject 9 release emphasizes on new board views, package list view, and work templates. - -If you didn’t know about this, you can give it a try. But, if you are an existing user – you should know what’s new before migrating to OpenProject 9. - -### What’s New in OpenProject 9? - -Here are some of the major changes in the latest release of OpenProject. - -#### Scrum & Agile Boards - -![][5] - -For Cloud and Enterprise editions, there’s a new [scrum][6] and [agile][7] board view. You also get to showcase your work in a [kanban-style][8] fashion, making it easier to support your agile and scrum teams. - -The new board view makes it easy to know who’s assigned for the task and update the status in a jiffy. You also get different board view options like basic board, status board, and version boards. - -#### Work Package templates - -![Work Package Template][9] - -You don’t have to create everything from scratch for every unique work package. So, instead, you just keep a template – so that you can use it whenever you need to create a new work package. It will save a lot of time. - -#### New Work Package list view - -![Work Package View][10] - -In the work package list, there’s a subtle new addition that lets you view the avatars of the assigned people for a specific work. - -#### Customizable work package view for my page - -Your own page to display what you are working on (and the progress) shouldn’t be always boring. So, now you get the ability to customize it and even add a Gantt chart to visualize your work. - -[][11] - -Suggested read Ubuntu 12.04 Has Reached End of Life - -**Wrapping Up** - -For detailed instructions on migrating and installation, you should follow the [official announcement post][12] covering all the essential details for the users. - -Also, we would love to know about your experience with OpenProject 9, let us know about it in the comments section below! If you use some other project management software, feel free to suggest it to us and rest of your fellow It’s FOSS readers. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/openproject-9-release/ - -作者:[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.openproject.org/ -[2]: https://trello.com/ -[3]: https://www.atlassian.com/software/jira -[4]: https://www.openproject.org/pricing/ -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/open-project-9-scrum-agile.jpeg?fit=800%2C517&ssl=1 -[6]: https://en.wikipedia.org/wiki/Scrum_(software_development) -[7]: https://en.wikipedia.org/wiki/Agile_software_development -[8]: https://en.wikipedia.org/wiki/Kanban -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/work-package-template.jpg?ssl=1 -[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/work-package-view.jpg?fit=800%2C454&ssl=1 -[11]: https://itsfoss.com/ubuntu-12-04-end-of-life/ -[12]: https://www.openproject.org/openproject-9-new-scrum-agile-board-view/ diff --git a/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md new file mode 100644 index 0000000000..699331d982 --- /dev/null +++ b/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @@ -0,0 +1,80 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Free and Open Source Trello Alternative OpenProject 9 Released) +[#]: via: (https://itsfoss.com/openproject-9-release/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +替代 Trello 的免费开源 OpenProject 9 发布了 +====== + +[OpenProject][1] 是一个开源项目协作管理软件。它是 [Trello][2] 和 [Jira][3] 等专有方案的替代品。 + +如果个人使用,你可以免费使用它,并在你自己的服务器上进行设置(并托管它)。这样,你就可以控制数据。 + +当然,如果你是[云或企业版用户][4],那么你可以使用高级功能和更优先的帮助。 + +OpenProject 9 的重点是新的看板试图,包列表视图和工作模板。 + +如果你对此不了解,可以尝试一下。但是,如果你是现有用户 - 在迁移到 OpenProject 9 之前,你应该知道这些新功能。 + +### OpenProject 9 有什么新功能? + +以下是最新版 OpenProjec t的一些主要更改。 + +#### Scrum 和敏捷看板 + +![][5] + +对于云和企业版,有一个新的 [scrum][6] 和[敏捷][7]看板视图。你还可以 [kanban 风格][8]方式展示你的工作,从而更轻松地支持你的敏捷和 scrum 团队。 + +新的看板视图使你可以轻松了解为该任务分配的人员并快速更新状态。你还有不同的看板视图选项,如基本看板、状态看板和版本看板。 + +#### 工作包模板 + +![Work Package Template][9] + +你不必为每个独立的工作包从头开始创建所有内容。而是,你只需保留一个模板,这样你就可以在需要创建新工作包时使用它。这将节省大量时间。 + +#### 新的工作包列表视图 + +![Work Package View][10] + +在工作包列表中,有一个微小的新增功能,可让你查看特定工作的已分配人员的头像。 + +#### “我的”页面的可自定义工作包视图 + +“我的”页面显示你正在处理的内容(以及进度),它不应该一直很无聊。因此,现在你可以自定义它,甚至可以添加甘特图来可视化你的工作。 + +**总结** + +有关迁移和安装的详细说明,请参阅[官方的公告帖][12],其中包含了必要的细节。 + +另外,我们很想知道你使用 OpenProject 9 的经历,请在下面的评论栏告诉我们!如果你使用其他一些项目管理软件,请随时向我们和其他 FOSS 读者推荐。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/openproject-9-release/ + +作者:[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.openproject.org/ +[2]: https://trello.com/ +[3]: https://www.atlassian.com/software/jira +[4]: https://www.openproject.org/pricing/ +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/06/open-project-9-scrum-agile.jpeg?fit=800%2C517&ssl=1 +[6]: https://en.wikipedia.org/wiki/Scrum_(software_development) +[7]: https://en.wikipedia.org/wiki/Agile_software_development +[8]: https://en.wikipedia.org/wiki/Kanban +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/work-package-template.jpg?ssl=1 +[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/work-package-view.jpg?fit=800%2C454&ssl=1 +[12]: https://www.openproject.org/openproject-9-new-scrum-agile-board-view/ From 7742b8482e37f24a31dadcb1c06b87727d75c4f9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 3 Jul 2019 08:57:54 +0800 Subject: [PATCH 248/336] translating --- ...0180620 How To Find The Port Number Of A Service In Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md index 7004a4350a..d934e10782 100644 --- a/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md +++ b/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 1e295d466062aa2ed92d8b591ac097f65c915781 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Wed, 3 Jul 2019 11:19:39 +0800 Subject: [PATCH 249/336] translating by qfzy1233 translating by qfzy1233 --- ... Zorin OS Becomes Even More Awesome With Zorin 15 Release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index c7dc93c70a..f5342383bc 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (qfzy1233) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 7a16a401ae12b5ebb4d17230de460773030c4c37 Mon Sep 17 00:00:00 2001 From: chen ni Date: Wed, 3 Jul 2019 12:32:56 +0800 Subject: [PATCH 250/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...edora- Which One Should You Use and Why.md | 190 ------------------ ...edora- Which One Should You Use and Why.md | 182 +++++++++++++++++ 2 files changed, 182 insertions(+), 190 deletions(-) delete mode 100644 sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md create mode 100644 translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md diff --git a/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md deleted file mode 100644 index e369693ea7..0000000000 --- a/sources/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md +++ /dev/null @@ -1,190 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Ubuntu or Fedora: Which One Should You Use and Why) -[#]: via: (https://itsfoss.com/ubuntu-vs-fedora/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Ubuntu or Fedora: Which One Should You Use and Why -====== - -_**Brief: Ubuntu or Fedora? What’s the difference? Which is better? Which one should you use? Read this comparison of Ubuntu and Fedora.**_ - -[Ubuntu][1] and [Fedora][2] are one of the most popular Linux distributions out there. Making a decision to choose between using Ubuntu and Fedora is not an easy one. I’ll try to help you in making your decision by comparing various features of Ubuntu and Fedora. - -Do note that this comparison is primarily from the desktop point of view. I am not going to focus on the container specific versions of Fedora or Ubuntu. - -### Ubuntu vs Fedora: Which one is better? - -![Ubuntu Vs Fedora][3] - -Almost all Linux distributions differ from one another primarily on these points: - - * Base distribution (Debian, Red Hat, Arch or from scratch) - * Installation - * Supported desktop environments - * Package management, software support and updates - * Hardware support - * Development team (backed by corporate or created by hobbyists) - * Release cycle - * Community and support - - - -Let’s see how similar or how different are Ubuntu and Fedora from each other. Once you know that, it should be perhaps easier for you to make a choice. - -#### Installation - -Ubuntu’s Ubiquity installer is one of easiest installers out there. I believe that it played an important role in Ubuntu’s popularity because when Ubuntu was just created in 2004, installing Linux itself was considered a huge task. - -The Ubuntu installer allows you to install Ubuntu in around 10 minutes. In most cases, it can identify Windows installed on your system and allows you to dual boot Ubuntu and Windows in a matter of clicks. - -You can also install updates and third-party codecs while installing Ubuntu. That’s an added advantage. - -![Ubuntu Installer][4] - -Fedora uses Anaconda installer. This too simplifies the installation process with the easy to use interface. - -![Fedora Installer | Image Credit Fedora Magazine][5] - -Fedora also provides a media writer tool for downloading and creating the live USB of Fedora on Windows operating system. When I last tried to use it around two years ago, it didn’t work and I had to use the regular live USB creating software. - -In my experience, installing Ubuntu is easier than installing Fedora. That doesn’t mean installing Fedora is a complex process. Just that Ubuntu is simpler. - -#### Desktop environments - -Both Ubuntu and Fedora use GNOME desktop environment by default. - -![GNOME Desktop in Fedora][6] - -While Fedora uses the stock GNOME desktop, Ubuntu has customized it to look and behave like its previous Unity desktop. - -![GNOME desktop customized by Ubuntu][7] - -Apart from GNOME, both Ubuntu and Fedora offer several other desktop variants. - -Ubuntu has Kubuntu, Xubuntu, Lubuntu etc., offering various desktop flavors. While they are the official flavor of Ubuntu, they are not directly developed by Ubuntu team from Canonical. The teams are separate. - -Fedora offers various desktop choices in the form of [Fedora Spins][8]. Unlike Kubuntu, Lubuntu etc,. they are not created and maintained by separate team. They are from core Fedora team. - -#### Package management and software availability - -Ubuntu uses APT package manager to provide and manage software (applications, libraries and other required codes) while Fedora uses DNF package manager. - -[][9] - -Suggested read  System76 Galago Pro: Specs, Price And Release Date - -[Ubuntu has vast software repositories][10] allowing you to easily install thousands of programs, both FOSS and non-FOSS, easily. Fedora on the other hand focuses on providing only open source software. This is changing in the new versions but Fedora’s repositories are still not as big as that of Ubuntu. - -Some third party software developer also provide click-to-install, .exe like packages for Linux. In Ubuntu, these packages are in .deb format and while Fedora supports .rpm packages. - -Most software vendors provide both DEB and RPM files for Linux users but I have experienced that sometimes software vendor only provide DEB file. For example, SEO tool [Screaming Frog][11] has only DEB packages. It’s extremely rare that a software is available in RPM but not in DEB format. - -#### Hardware support - -Linux in general has its fair share of trouble with some WiFi adapters and graphics cards. Both Ubuntu and Fedora are impacted from that. Take the example of Nvidia. It’s [open source Nouveau driver often results in troubles like system hanging at boot][12]. - -Ubuntu provides an easy way of installing additional proprietary drivers. This results in better hardware support in many cases. - -![Installing proprietary driver is easier in Ubuntu][13] - -Fedora, on the other hand, sticks to open source software and thus installing proprietary drivers on Fedora becomes a difficult task. - -#### Support and userbase - -Both Ubuntu and Fedora provide support through community forums. Ubuntu has two main forums: [UbuntuForums][14] and [Ask Ubuntu][15]. Fedora has one main forum [Ask Fedora][16]. - -In terms of userbase, Fedora has a large following. However, Ubuntu is more popular and has a larger following than Fedora. - -The popularity of Ubuntu has prompted a number of websites and blogs focused primarily on Ubuntu. This way, you get more troubleshooting tips and learning material on Ubuntu than Fedora. - -#### Release cycle - -A new Fedora version is released every six months and each Fedora release is supported for nine months only. Which means that between six to nine months, you must perform an upgrade. Upgrading Fedora version is simple but it does require a good internet connection. Not everyone can be happy with 1.5 GB of version upgrades every nine months. - -Ubuntu has two versions: regular release and the long term support (LTS) release. Regular release is similar to Fedora. It’s released at the interval of six months and is supported for nine months. - -The LTS release comes at an interval of two years and is supported for five years. Regular releases bring new features, new software versions while the LTS release holds on to the older versions. This makes it a great choice for people who don’t like frequent changes and prefer stability. - -#### Solid base distributions - -Ubuntu is based on [Debian][17]. Debian is one of the biggest community project and one of the most respected project in the [free software][18] world. - -Fedora is a community project from Red Hat. Red Hat is an enterprise focused Linux distribution. Fedora works as a ‘testing ground’ ([upstream][19] in technical term) for new features before those features are included in Red Hat Enterprise Linux. - -[][20] - -Suggested read  How To Manage StartUp Applications In Ubuntu - -#### Backed by enterprises - -Both Ubuntu and Fedora are backed by their parent corporations. Ubuntu is from [Canonical][21] while Fedora is from [Red Hat][22] (now [part of IBM][23]). Enterprise backing is important because it ensures that the Linux distribution is well-maintained. - -Hobbyists distributions created by a group of individuals often crumble under workload. You might have seen reasonably popular distribution projects being shutdown for this sole reason. [Antergos][24], Korora are just some of the many such examples where distributions were discontinued because the developers couldn’t get enough free time to work on the project. - -The fact that both Ubuntu and Fedora are supported by a two Linux-based enterprises makes them a viable choice over other independent distributions. - -#### Ubuntu vs Fedora as server - -The comparison between Ubuntu and Fedora was primarily aimed at desktop users so far. But a discussion about Linux is not complete until you include servers. - -![Ubuntu Server][25] - -Ubuntu is not only popular on desktop, it also has a good presence on the server side. If you are familiar with Ubuntu as desktop, you might not feel uncomfortable with Ubuntu server edition. I started with Ubuntu desktop and now my websites are hosted on Linux servers running Ubuntu. - -Fedora too has server edition and some people use it as well. But most sysadmins won’t prefer a server that has to be upgraded and rebooted every nine months. - -Knowing Fedora helps you in using Red Hat Enterprise Linux (RHEL). RHEL is a paid product and you’ll have to purchase a subscription. If you want an operating system for running server that is close to Fedora/Red Hat, I advise using CentOS. [CentOS][26] is also a community project affiliated with Red Hat but this one is focused on servers. - -#### Conclusion - -As you can see, both Ubuntu and Fedora are similar to each other on several points. Ubuntu does take lead when it comes to software availability, driver installation and online support. And _**these are the points that make Ubuntu a better choice, specially for inexperienced Linux users.**_ - -If you want to get familiar with Red Hat, Fedora is a good starting point. If you have some experience with Linux or if you want to use only open source software, Fedora is an excellent choice. - -In the end, it is really up to you to decide if you want to use Fedora or Ubuntu. I would suggest creating live USB of both distributions or try them out in virtual machine. - -What’s your opinion on Ubuntu vs Fedora? Which distribution do you prefer and why? Do share your views in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/ubuntu-vs-fedora/ - -作者:[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://ubuntu.com/ -[2]: https://getfedora.org/ -[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-vs-fedora.png?resize=800%2C450&ssl=1 -[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2018/03/install-linux-inside-windows-10.jpg?resize=800%2C479&ssl=1 -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/fedora-installer.png?resize=800%2C598&ssl=1 -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/gnome-desktop-fedora.png?resize=800%2C450&ssl=1 -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/03/applications_menu.jpg?resize=800%2C450&ssl=1 -[8]: https://spins.fedoraproject.org/ -[9]: https://itsfoss.com/system-76-galago-pro/ -[10]: https://itsfoss.com/ubuntu-repositories/ -[11]: https://www.screamingfrog.co.uk/seo-spider/#download -[12]: https://itsfoss.com/fix-ubuntu-freezing/ -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/software_updates_additional_drivers_nvidia.png?resize=800%2C523&ssl=1 -[14]: https://ubuntuforums.org/ -[15]: https://askubuntu.com/ -[16]: https://ask.fedoraproject.org/ -[17]: https://www.debian.org/ -[18]: https://www.fsf.org/ -[19]: https://en.wikipedia.org/wiki/Upstream_(software_development) -[20]: https://itsfoss.com/manage-startup-applications-ubuntu/ -[21]: https://canonical.com/ -[22]: https://www.redhat.com/en -[23]: https://itsfoss.com/ibm-red-hat-acquisition/ -[24]: https://itsfoss.com/antergos-linux-discontinued/ -[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-server.png?resize=800%2C232&ssl=1 -[26]: https://centos.org/ diff --git a/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md new file mode 100644 index 0000000000..5850ac7963 --- /dev/null +++ b/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -0,0 +1,182 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Ubuntu or Fedora: Which One Should You Use and Why) +[#]: via: (https://itsfoss.com/ubuntu-vs-fedora/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +你应该选择 Ubuntu 还是 Fedora? +====== + +_**摘要:选择 Ubuntu 还是 Fedora?它们的区别是什么?哪一个更好?你应该使用哪一个?看看这篇对比 Ubuntu 和 Fedora 的文章吧。**_ + +Ubuntu 和 Fedora 都是最流行的 Linux 发行版之一,在两者之间做出选择实非易事。在这篇文章里,我会对比一下 Ubuntu 和 Fedora 的不同特点,帮助你进行决策。 + +请注意,这篇文章主要是从桌面版的角度进行对比的。Fedora 或者 Ubuntu 针对容器的特殊版本不会被考虑在内。 + +### Ubuntu vs Fedora: 哪一个更好? + +![Ubuntu Vs Fedora][3] + +不同 Linux 发行版之间的区别主要体现在以下几个方面: + + * 基础发行版(Debian、红帽、Arch,或者是从头做起) + * 安装方式 + * 支持的桌面环境 + * 软件包管理、软件支持和更新 + * 硬件支持 + * 开发团队(由企业支持,还是由业余爱好者创建) + * 发布周期 + * 社区和线上支持 + +下面我们来看一下 Ubuntu 和 Fedora 之间的相似之处和不同之处。掌握了这些信息之后,也许就更容易在两者之间做出选择了。 + +#### 安装方式 + +Ubuntu 的 Ubiquity 安装器是最好用的安装器之一。我认为这是让 Ubuntu 如此流行的重要原因之一,因为在 2004 年 Ubuntu 刚刚诞生的时候,安装 Linux 还是一个很庞大的工程。 + +Ubuntu 安装器可以让你在大约 10 分钟左右完成安装。大多数情况下,它还可以识别出机器里安装的 Windows 系统,并且只需要几下点击就可以实现 Ubuntu 和 Windows 的双系统启动。 + +锦上添花的是,在安装 Ubuntu 的过程中你还可以进行系统更新,或者是安装第三方编译码器。 + +![Ubuntu Installer][4] + +Fedora 使用的是 Anaconda 安装器,拥有简单易用的界面,同样简化了安装过程。 + +![Fedora Installer | Image Credit Fedora Magazine][5] + +Fodora 还提供了一个可以在 Windows 操作系统上下载并创建 Fedora live USB 的写入工具。不过我在大约两年前尝试使用它的时候并不成功,最后使用了一个常规的创建 live USB 的软件。 + +根据我的经验,安装 Ubuntu 要比安装 Fedora 容易一些。不过这并不是说安装 Fedora 有多困难,只是 Ubuntu 更简单而已。 + +#### 桌面环境 + +Ubuntu 和 Fedora 默认都使用 GNOME 桌面环境。 + +![GNOME Desktop in Fedora][6] + +Fedora 使用的是 stock GNOME 桌面,而 Ubuntu 则在此基础上做了个性化调整,让它看起来就像 Ubuntu 之前使用的 Unity 桌面环境。 + +![GNOME desktop customized by Ubuntu][7] + +除了 GNOME,Ubuntu 和 Fedora 都提供了一些其它桌面环境的版本。 + +Ubuntu 有 Kubuntu、Xubuntu、Lubuntu 等版本,分别提供不同的桌面环境。虽然它们都是 Ubuntu 的官方版本,但是却不是由 Canonical 的 Ubuntu 团队直接开发的,而是由另外的团队开发。 + +Fedora 通过 [Fedora Spins][8] 的方式提供了一些不同桌面环境的版本。和 Kubuntu、Lubuntu 等版本不同的是,这些版本并非由独立团队开发,而是由 Fedora 核心团队开发的。 + +#### 软件包管理和可用软件数量 + +Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用程序、库,以及其它所需代码),而 Fedora 使用 DNF 软件包管理器。 + +[][9] + +[Ubuntu 拥有庞大的软件仓库][10],能够让你轻松安装数以千计的程序,包括 FOSS(LCTT 译注:Free and Open-Source Software 的缩写,自由开源软件)和非 FOSS 的软件。Fedora 则只专注于提供开源软件。虽然这一点在最近的版本里有所转变,但是 Fedora 的软件仓库在规模上仍然比 Ubuntu 的要逊色一些。 + +一些第三方软件开发者为 Linux 提供像 .exe 文件一样可以点击安装的软件包。在 Ubuntu 里这些软件包是 .deb 格式的,在 Fedora 里是 .rpm 格式的。 + +大多数软件供应商都为 Linux 用户提供 DEM 和 RPM 文件,但是我也经历过供应商只提供 DEB 文件的情况。比如说 SEO 工具 [Screaming Frog][11] 就只提供 DEB 软件包。反过来,一个软件只有 RPM 格式但是没有 DEB 格式这种情况就极其罕见了。 + +#### 硬件支持 + +一般来说,Linux 在 WiFi 适配器和显卡的兼容性上容易出现问题,Ubuntu 和 Fedora 都受此影响。以 Nvidia 为例,它的 [开源驱动程序 Nouveau 经常会引发系统启动时假死机之类的问题][12]。 + +在 Ubuntu 上你可以轻松安装专有驱动程序作为补充。在很多情况下,这样可以获得对硬件更好的支持。 + +![Installing proprietary driver is easier in Ubuntu][13] + +Fedora 则坚持使用开源软件,所以在 Fedora 上安装专有驱动程序就比较困难了。 + +#### 线上支持和用户群 + +Ubuntu 和 Fedora 都通过社区论坛提供了很好的线上支持。Ubuntu 主要有两个论坛:[UbuntuForums][14] 和 [Ask Ubuntu][15]。Fedora 主要的论坛则是 [Ask Fedora][16]。 + +就用户群体而言,Fedora 有着庞大的用户数量。不过 Ubuntu 更为流行,用户数量甚至更为庞大。 + +Ubuntu 的流行催生了很多专注于 Ubuntu 的网站和博客。所以相比 Fedora,你可以得到更多关于 Ubuntu 的故障排除指导和学习材料。 + +#### 发布周期 + +Fedora 每六个月发布一个新版本,每个版本有九个月的支持周期。也就是说,你必须在六个月到九个月之间进行一次系统升级。进行 Fedora 版本升级并不是一件困难的事情,但是需要良好的网络连接。并非所有人都喜欢每九个月进行一次 1.5 GB 的版本升级。 + +Ubuntu 有两种版本:常规发布版本和长期支持(LTS)发布版本。常规版本和 Fedora 比较类似,每隔六个月发布一次,有九个月的支持周期。 + +而长期支持发布版本则每两年发布一次,有五年的支持周期。常规发布版本探索新功能特性和新的软件版本,而长期支持发布版本则支持旧版本软件。对于不喜欢经常改变、青睐稳定性的人来说,这是一个很好的选择。 + +#### 强大的基础发行版 + +Ubuntu 是基于 [Debian][17] 发行版的。Debian 是最大的社区项目之一,并且也是 [自由软件][18] 世界里最受尊敬的项目之一。 + +Fedora 则是红帽公司的一个社区项目。红帽公司是一个专注于 Linux 发行版的公司。Fedora 充当了一个“试验田”的角色(用技术术语来说叫做“上游”),用来在红帽企业级 Linux 发布新功能之前对这些新功能进行试验。 + +#### 在背后支持的企业 + +Ubuntu 和 Fedora 都有来自母公司的支持。Ubuntu 源自 [Canonical][21] 公司,而 Fedora 源自 [红帽公司][22](现在是 [IBM 的一部分][23])。背后企业的支持非常重要,因为可以确保 Linux 发行版良好的维护。 + +有一些发行版是由一群独立的业余爱好者们共同创建的,但是在工作负荷之下经常会崩溃。你也许见过一些还算比较流行的发行版项目仅仅是因为这个原因而终止了。很多这样的发行版由于开发者没有足够的业余时间可以投入到项目上而不得不终止,比如 [Antergos][24] 和 Korora。 + +Ubuntu 和 Fedora 的背后都有基于 Linux 的企业的支持,这让它们比其它独立的发行版更胜一筹。 + +#### Ubuntu vs Fedora:服务端 + +到目前为止,我们在 Ubuntu 和 Fedora 之间的对比主要都集中在桌面端。不过如果不考虑一下服务端的话,对 Linux 的讨论就不能算是完整的。 + +![Ubuntu Server][25] + +Ubuntu 不仅在桌面端很流行,在服务端也有很强的存在感。如果你能够在桌面端熟练使用 Ubuntu,那么也不会对 Ubuntu 服务器版本感到陌生。我就是从使用 Ubuntu 桌面端开始的,现在我的网站都运行在 Ubuntu 服务器上。 + +Fedora 同样有服务端版本,并且也有人在使用。但是大多数系统管理者不会喜欢一个每九个月就需要重启升级的服务器。 + +学习 Fedora 可以更好地帮助你使用红帽企业级 Linux(RHEL)。RHEL 是一个付费产品,你需要购买订阅才可以使用。如果你希望在服务器上运行一个和 Fedora 或者红帽类似的操作系统,我推荐使用 CentOS。[CentOS][26] 同样是红帽公司附属的一个社区项目,但是专注于服务端。 + +#### 结论 + +你可以看到,Ubuntu 和 Fedora 有很多相似之处。不过就可用软件数量、驱动安装和线上支持来说,Ubuntu 的确更有优势。**Ubuntu 也因此成为了一个更好的选择,尤其是对于没有经验的 Linux 新手而言。** + +如果你想要熟悉红帽的话,Fedora 是一个很好的开始。如果你对 Linux 有一定经验,或者是只想要使用开源软件,Fedora 就是一个很棒的选择。 + +最终还是需要你自己来决定是使用 Fedora 还是 Ubuntu。我会建议为两个发行版分别创建一个 live USB,并且在虚拟机上体验一下。 + +你对于 Ubuntu vs Fedora 的看法是什么呢?你更喜欢哪一个发行版,为什么?在评论里分享你的看法吧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ubuntu-vs-fedora/ + +作者:[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://ubuntu.com/ +[2]: https://getfedora.org/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-vs-fedora.png?resize=800%2C450&ssl=1 +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2018/03/install-linux-inside-windows-10.jpg?resize=800%2C479&ssl=1 +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/fedora-installer.png?resize=800%2C598&ssl=1 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/gnome-desktop-fedora.png?resize=800%2C450&ssl=1 +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/03/applications_menu.jpg?resize=800%2C450&ssl=1 +[8]: https://spins.fedoraproject.org/ +[9]: https://itsfoss.com/system-76-galago-pro/ +[10]: https://itsfoss.com/ubuntu-repositories/ +[11]: https://www.screamingfrog.co.uk/seo-spider/#download +[12]: https://itsfoss.com/fix-ubuntu-freezing/ +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/software_updates_additional_drivers_nvidia.png?resize=800%2C523&ssl=1 +[14]: https://ubuntuforums.org/ +[15]: https://askubuntu.com/ +[16]: https://ask.fedoraproject.org/ +[17]: https://www.debian.org/ +[18]: https://www.fsf.org/ +[19]: https://en.wikipedia.org/wiki/Upstream_(software_development) +[20]: https://itsfoss.com/manage-startup-applications-ubuntu/ +[21]: https://canonical.com/ +[22]: https://www.redhat.com/en +[23]: https://itsfoss.com/ibm-red-hat-acquisition/ +[24]: https://itsfoss.com/antergos-linux-discontinued/ +[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/ubuntu-server.png?resize=800%2C232&ssl=1 +[26]: https://centos.org/ From 0812bf69ec9e4bbd1e8d692dc877cfadf926d061 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Wed, 3 Jul 2019 15:21:49 +0800 Subject: [PATCH 251/336] Rename sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md to sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md --- ...0190628 Undo releases Live Recorder 5.0 for Linux debugging.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{talk => news}/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md (100%) diff --git a/sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md similarity index 100% rename from sources/talk/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md rename to sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md From 570b2e6414b832c36a6c7435d2e25963f5950d54 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 15:56:35 +0800 Subject: [PATCH 252/336] PRF:20190619 Leading in the Python community.md @chen-ni --- ...0190619 Leading in the Python community.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/translated/tech/20190619 Leading in the Python community.md b/translated/tech/20190619 Leading in the Python community.md index 69c82b8d4c..632f7938bb 100644 --- a/translated/tech/20190619 Leading in the Python community.md +++ b/translated/tech/20190619 Leading in the Python community.md @@ -1,43 +1,44 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Leading in the Python community) [#]: via: (https://opensource.com/article/19/6/naomi-ceder-python-software-foundation) [#]: author: (Don Watkins https://opensource.com/users/don-watkins) -Python 社区的领袖 +领导 Python 社区 ====== -对话现任 Python 软件基金会董事会主席 Naomi Ceder -![Hands together around the word trust][1] +> 对话现任 Python 软件基金会董事会主席 Naomi Ceder。 + +![](https://img.linux.net.cn/data/attachment/album/201907/03/155715vrhkvapiiia9i3zp.jpg) 和开源软件世界的很多其他领袖一样,[Python 软件基金会][3](PSF)的董事会主席 [Naomi Ceder][2] 通过一种不同寻常的方式走进了 Python 世界。正如她在 2017 年 PyCon España 大会上的 [keynote][4] 的标题所说,她是因为这个编程语言而来,因为这个社区而留下的。在我们和她的一次近期的交流中,她分享了自己成为 Python 社区领袖的历程,并且就“是什么让 Python 如此特别”这个问题提供了一些独到的见解。 ### 从授课到编程 -Naomi 的职业生涯是从古典文学开始的。她取得了拉丁文和古希腊文的博士学位,并且辅修了印欧语言学。在一家私立学校教授拉丁语的同时,她开始接触了计算机,学习如何编程、如何拆机进行升级或者维修。1995 年,她开始在 [Yggdrasil Linux][5] 系统上开发开源软件,并且帮助建立了印第安纳州韦恩堡的 [Linux 用户小组][6] +Naomi 的职业生涯是从古典文学开始的。她取得了拉丁文和古希腊文的博士学位,并且辅修了印欧语言学。在一家私立学校教授拉丁语的同时,她开始接触了计算机,学习如何编程、如何拆机进行升级或者维修。1995 年,她开始在 [Yggdrasil Linux][5] 系统上开发开源软件,并且帮助建立了印第安纳州韦恩堡的 [Linux 用户小组][6]。 作为一名教师,Naomi 相信在中学教授编程课程是非常重要的,因为等到大多数人上大学的时候,他们已经认为编程和科技相关的职业已经不是自己可以从事的了。她表示,更早地教授相关课程有助于增加科技人才的供给,提高人才的多元化和经验的广度,从而更好地满足行业需求。 -大约在 2001 年前后,她决定从学习人类语言转向研究计算机语言,并同时教授计算机课程和管理学校的 IT 系统。在 2001 年的 Linux World 大会上听了一整天 PSF 主席 Guido Van Rossum 关于 Python 的演讲之后,她对 Python 的热情被点燃了。在那个时候,Python 还只是一门晦涩难懂的语言,但是她是如此喜欢 Python,以至于在她的学校开始使用 Python 记录学生信息、进行系统管理。 +大约在 2001 年前后,她决定从学习人类语言转向研究计算机语言,并同时教授计算机课程和管理学校的 IT 系统。在 2001 年的 Linux World 大会上听了一整天时任 PSF 主席 Guido Van Rossum (LCTT 译注:也是 Python 创始人)关于 Python 的演讲之后,她对 Python 的热情被点燃了。在那个时候,Python 还只是一门晦涩难懂的语言,但是她是如此喜欢 Python,以至于在她的学校开始使用 Python 记录学生信息、进行系统管理。 ### 领导 Python 社区 Naomi 表示,“社区是 Python 成功背后的关键因素。开源软件的核心思想是分享,很少有人真的喜欢一个人坐在那儿盯着屏幕写代码。真正的满足来源于和别人交流想法,并且共同创造一些东西。” -她在第一届 [PyCon][7] 大会上发表了演讲,并且从此之后一直是一名参与者和领导者。她组织了一些 birds-of-a-feather 讨论会(LCTT 译注:一种在大会参与者之间进行的基于兴趣的小规模讨论活动)、PyCon 和 PyCon UK 大会的海报展示会、教育峰会,以及 PyCon 大会的西班牙语频道。 +她在第一届 [PyCon][7] 大会上发表了演讲,并且从此之后一直是一名参与者和领导者。她组织了一些 趣味相投birds-of-a-feather 讨论会(LCTT 译注:birds-of-a-feather,一种在大会参与者之间进行的基于兴趣的非正式小规模讨论活动)、PyCon 和 PyCon UK 大会的海报展示会、教育峰会,以及 PyCon 大会的西班牙语频道。 -她同时是 *[The Quick Python Book][9]* 一书的作者,并且联合创立了 [Trans\*Code][10],“英国唯一一个专注于变性者的问题和机遇的黑客节”(LCTT 译注:黑客节是一种让软件开发、设计、项目管理等相关人员相聚在一起,针对软件项目进行高强度合作的活动)。Naomi 表示,“随着科技能够提供越来越多的机遇,确保传统意义上的边缘化群体能够同等地享受到这些机遇成为了一件更为重要的事情。” +她同时是 《[The Quick Python Book][9]》一书的作者,并且联合创立了 [Trans*Code][10],“英国唯一一个专注于变性者的问题和机遇的黑客节”(LCTT 译注:黑客节hack event是一种让软件开发、设计、项目管理等相关人员相聚在一起,针对软件项目进行高强度合作的活动)。Naomi 表示,“随着科技能够提供越来越多的机遇,确保传统意义上的边缘化群体能够同等地享受到这些机遇成为了一件更为重要的事情。” ### 通过 PSF 进行贡献 作为 PSF 的董事会主席,Naomi 积极地参与着该组织对 Python 语言和其使用者的支持工作。除了赞助 PyCon 大会的举办之外,PSF 基金会还为世界各地的小型聚会、大型会议和研习会提供资助。2018 年,该组织发放的资助接近 335000 美元,其中大多数款项的金额都在 500 美元到 5000 美元之间。 -PSF 的短期目标是成为一个由专业员工维护的可持续的、稳定的、成熟的非盈利机构。它的长期目标包括发展可以提供对 Python 开发工作有效支持的各种资源,以及扩展该组织对全世界范围内 Python 教育工作的支持。 +PSF 的短期目标是成为一个由专业人员维护的可持续的、稳定的、成熟的非盈利机构。它的长期目标包括发展可以提供对 Python 开发工作有效支持的各种资源,以及扩展该组织对全世界范围内 Python 教育工作的支持。 -这些工作都需要来自社区的经济上的支持。Naomi 表示,PSF “最大的资金来源是 PyCon 大会。为了确保 PSF 的可持续性,我们同事也关注使用 Python 的企业的赞助,这是我们增长最快的部分。”会员价格是每年 99 美元,并且 [捐款和募捐人][12] 同样也在帮助维持该组织的工作。 +这些工作都需要来自社区的经济上的支持。Naomi 表示,PSF “最大的资金来源是 PyCon 大会。为了确保 PSF 的可持续性,我们同时也关注使用 Python 的企业的赞助,这是我们增长最快的部分。”会员费是每年 99 美元,并且 [捐款和募捐人][12] 同样也在帮助维持该组织的工作。 你可以在 PSF 的 [年度报告][13] 中了解该组织的更多工作情况。 @@ -48,7 +49,7 @@ via: https://opensource.com/article/19/6/naomi-ceder-python-software-foundation 作者:[Don Watkins][a] 选题:[lujun9972][b] 译者:[chen-ni](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 65c11b3f1d0f779b6cb96f6c0986957e00122700 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 15:57:24 +0800 Subject: [PATCH 253/336] PUB:20190619 Leading in the Python community.md @chen-ni https://linux.cn/article-11049-1.html --- .../20190619 Leading in the Python community.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190619 Leading in the Python community.md (98%) diff --git a/translated/tech/20190619 Leading in the Python community.md b/published/20190619 Leading in the Python community.md similarity index 98% rename from translated/tech/20190619 Leading in the Python community.md rename to published/20190619 Leading in the Python community.md index 632f7938bb..9e75b8db87 100644 --- a/translated/tech/20190619 Leading in the Python community.md +++ b/published/20190619 Leading in the Python community.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11049-1.html) [#]: subject: (Leading in the Python community) [#]: via: (https://opensource.com/article/19/6/naomi-ceder-python-software-foundation) [#]: author: (Don Watkins https://opensource.com/users/don-watkins) From dcd9a40b5437a92738b22dcdebb9afae05533709 Mon Sep 17 00:00:00 2001 From: chen ni Date: Wed, 3 Jul 2019 16:02:59 +0800 Subject: [PATCH 254/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190702 Jupyter and data science in Fedora.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190702 Jupyter and data science in Fedora.md b/sources/tech/20190702 Jupyter and data science in Fedora.md index 7126376617..a80c3b462f 100644 --- a/sources/tech/20190702 Jupyter and data science in Fedora.md +++ b/sources/tech/20190702 Jupyter and data science in Fedora.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 8659816c4a2aeaf8a940d4b3e90a663561117888 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 16:35:01 +0800 Subject: [PATCH 255/336] PRF:20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @geekpi --- ... Deluge 2.0 Released- Here-s What-s New.md | 42 ++++++++----------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md index 7c04b906fc..8e2e5ef13c 100644 --- a/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md +++ b/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (BitTorrent Client Deluge 2.0 Released: Here’s What’s New) @@ -12,33 +12,27 @@ BitTorrent 客户端 Deluge 2.0 发布:新功能介绍 你可能已经知道 [Deluge][1] 是[最适合 Linux 用户的 Torrent 客户端][2]之一。然而,最近的稳定版本差不多是两年前的了。 -尽管它在积极开发中,但直到最近才出了一个主要的稳定版本。我们写这篇文章时,最新版本恰好是 2.0.2。所以,如果你还没有下载最新的稳定版本,请尝试一下。 +尽管它仍在积极开发中,但直到最近才出了一个主要的稳定版本。我们写这篇文章时,最新版本恰好是 2.0.2。所以,如果你还没有下载最新的稳定版本,请尝试一下。 -不管如何,如果你好奇的话,让我们谈下有哪些新的功能。 - -![Deluge][3] +不管如何,如果你感兴趣的话,让我们看看有哪些新的功能。 ### Deluge 2.0 的主要改进 -新版本引入了多用户支持,这是一个非常需要的功能。 - -除此之外,还有一些性能改进可以更快地加载更多的种子。 +新版本引入了多用户支持,这是一个非常需要的功能。除此之外,还有一些性能改进可以更快地加载更多的种子。 此外,在 2.0 版本中,Deluge 使用了 Python 3,对 Python 2.7 提供最低支持。即使是用户界面,他们也从 GTK UI 迁移到了 GTK3。 根据发行说明,还有一些更重要的补充/改进,包括: - * 多用户支持。 -  * 性能提升,可以更快地加载数千个种子。 -  * 一个模拟 GTK/Web UI 的新控制台 UI。 -  * GTK UI 迁移到 GTK3,并伴随 UI 改进和补充。 -  * 磁链预获取功能以便在添加种子时选择文件。 -  * 完全支持 libtorrent 1.2。 -  * 语言切换支持。 -  * 改进了在 ReadTheDocs 托管的文档。 -  * AutoAdd 插件取代了内置功能。 - - +* 多用户支持。 +* 性能提升,可以更快地加载数千个种子。 +* 一个模拟 GTK/Web UI 的新控制台 UI。 +* GTK UI 迁移到 GTK3,并带有 UI 改进和补充。 +* 磁链预获取功能可以在添加种子时选择文件。 +* 完全支持 libtorrent 1.2。 +* 语言切换支持。 +* 改进了在 ReadTheDocs 托管的文档。 +* AutoAdd 插件取代了内置功能。 ### 如何安装或升级到 Deluge 2.0 @@ -46,17 +40,15 @@ BitTorrent 客户端 Deluge 2.0 发布:新功能介绍 对于任何 Linux 发行版,你都应该遵循官方[安装指南][5](使用 PPA 或 PyPi)。但是,如果你要升级,你应该留意发行说明中提到的: -“_Deluge 2.0与 Deluge 1.x 客户端或守护进程不兼容,因此这些也需要升级。如果第三方脚本直接连接到 Deluge 客户端,那么可能也不兼容且需要迁移。_” +> “_Deluge 2.0 与 Deluge 1.x 客户端或守护进程不兼容,因此这些也需要升级。如果第三方脚本直接连接到 Deluge 客户端,那么可能也不兼容且需要迁移。_” -因此,坚持在升级主版本之前备份你的[配置][6]以免数据丢失。 - -而且,如果你是插件作者,那么需要升级它以使其与新版本兼容。 +因此,坚持在升级主版本之前备份你的[配置][6]以免数据丢失。而且,如果你是插件作者,那么需要升级它以使其与新版本兼容。 直接下载的安装包尚不包含 Windows 和 Mac OS。但是,说明中提到他们正在进行中。 除此之外,你可以按照更新后的官方文档中的[安装指南][5]来手动安装它们。 -**总结** +### 总结 你如何看待最新的稳定版本?你是否将 Deluge 用作 BitTorrent 客户端?或者你是否找到了其他更好的选择? @@ -69,7 +61,7 @@ via: https://itsfoss.com/deluge-2-release/ 作者:[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 6c2325620202642910a5103edfeea00ca8d855d4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 16:35:37 +0800 Subject: [PATCH 256/336] PUB:20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @geekpi https://linux.cn/article-11050-1.html --- ...itTorrent Client Deluge 2.0 Released- Here-s What-s New.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md (97%) diff --git a/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md b/published/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md similarity index 97% rename from translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md rename to published/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md index 8e2e5ef13c..7f100cfc52 100644 --- a/translated/news/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md +++ b/published/20190612 BitTorrent Client Deluge 2.0 Released- Here-s What-s New.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11050-1.html) [#]: subject: (BitTorrent Client Deluge 2.0 Released: Here’s What’s New) [#]: via: (https://itsfoss.com/deluge-2-release/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From 9f153d2ba85c0311fb49f3d619a9798f5f17e678 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 16:56:43 +0800 Subject: [PATCH 257/336] PRF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @robsean 请翻译完自己读一遍是否通顺。有时候原文词不达意,我们应该根据理解补完和整理一下。 --- ...emove Unwanted or Junk Files) on Ubuntu.md | 69 ++++++++----------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md b/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md index c8ddd01d91..5b21251a8c 100644 --- a/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md +++ b/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md @@ -1,34 +1,30 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu) [#]: via: (https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-space-ubuntu-mint-debian/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -5种简单的方法来在 Ubuntu 上释放空间(移除不想要的或没有用的文件) +5 种在 Ubuntu 上释放空间的简单方法 ====== -我们中的大多数人可能在系统磁盘存储不足的情况下执行这个操作。 +![](https://img.linux.net.cn/data/attachment/album/201907/03/165641h0xy91x9109wz19w.jpg) -我们中的大多数人可能在 Linux 系统磁盘存储不足的情况下执行这个操作。 +大多数人可能在系统磁盘存储不足的情况下执行释放空间这个操作,也可能在 Linux 系统磁盘存储满了的情况下执行这个操作。 -它应该被经常执行,来为安装一个新的应用程序和处理其它文件弥补磁盘存储空间。 - -内务处理是 Linux 管理员的一个日常任务,管理员允许内务处理在阈值下维持磁盘利用率。 +它应该被经常执行,来为安装一个新的应用程序和处理其它文件弥补磁盘存储空间。保持可用空间是 Linux 管理员的一个日常任务,以允许磁盘利用率维持在阈值之下。 这里有一些我们可以清理我们系统空间的方法。 -当你有 TB 级存储容量时,不需要清理你的系统。 - -但是,如果你空间有限,那么释放磁盘空间,变的不可避免。 +当你有 TB 级存储容量时,可能不需要清理你的系统。但是,如果你空间有限,那么释放磁盘空间就变的不可避免。 在这篇文章中,我将向你展示一些最容易的或简单的方法来清理你的 Ubuntu 系统,获得更多空间。 ### 在 Ubuntu 系统上如何检查可用的空间? -在你的系统上使用 **[df 命令][1]** 来检查当前磁盘利用率。 +在你的系统上使用 [df 命令][1] 来检查当前磁盘利用率。 ``` $ df -h @@ -42,17 +38,12 @@ tmpfs 997M 0 997M 0% /sys/fs/cgroup ``` 图形界面用户可以使用“磁盘利用率分析器工具”来查看当前利用率。 -[![][2]![][2]][3] -### 1) 移除不再需要的软件包 +![][3] -下面的命令移除系统不再需要依赖的库和软件包。 +#### 1) 移除不再需要的软件包 -这些软件包自动地安装来使一个被安装软件包满足的依赖关系。 - -同样,它移除安装在系统中的旧的 Linux 内核。 - -它移除不再被系统需要的孤立的软件包,但是不清除它们。 +下面的命令移除系统不再需要的依赖库和软件包。这些软件包是自动安装的,以使一个安装的软件包满足依赖关系。同样,它也会移除安装在系统中的 Linux 旧内核。它会移除不再被系统需要的孤儿软件包,但是不会清除它们。 ``` $ sudo apt-get autoremove @@ -71,7 +62,7 @@ After this operation, 189 MB disk space will be freed. Do you want to continue? [Y/n] ``` -为清除它们,与命令一起使用 `--purge` 选项。 +为清除它们,可以与命令一起使用 `--purge` 选项。 ``` $ sudo apt-get autoremove --purge @@ -90,26 +81,21 @@ After this operation, 189 MB disk space will be freed. Do you want to continue? [Y/n] ``` -### 2) 清空回收站 +#### 2) 清空回收站 -这可能有风险,你可能有大量的无用数据存在于你的回收站中。 - -它占用你的系统空间。这是最好的一个方法来在你的系统上清理这些无用的数据,并获取一些可用的空间。 +有可能你的回收站里面有大量的无用数据。它会占用你的系统空间。最好解决方法之一是在你的系统上清理这些无用的数据,以获取一些可用的空间。 为清理这些,简单地使用文件管理器来清空你的回收站。 -[![][2]![][2]][4] -### 3) 清理 APT 缓存文件 +![][4] -Ubuntu 使用 **[APT 命令][5]** (高级软件包工具)用于软件包管理,像:安装,移除,搜索等等。 +#### 3) 清理 APT 缓存文件 -默认情况下,每个 Linux 操作系统在它们各自的命令保留下载和安装的软件包的缓冲。 +Ubuntu 使用 [APT 命令][5](高级软件包工具)用于软件包管理,如:安装、移除、搜索等等。 -Ubuntu 也做相同的事,它以缓冲的形式在你的磁盘上保留它下载和安装的每次更新。 +一般 Linux 操作系统会在各自的目录下保留下载和安装的软件包的缓冲文件。 -Ubuntu 在 /var/cache/apt/archives 目录中保留 DEB 软件包的缓冲文件。 - -随着时间推移,这些缓存可能快速增长,并在你的系统上占有很多空间。 +Ubuntu 也一样,它在你的磁盘上以缓冲的形式保留它下载和安装的每次更新。Ubuntu 在 `/var/cache/apt/archives` 目录中保留 DEB 软件包的缓冲文件。随着时间推移,这些缓存可能快速增长,并在你的系统上占有很多空间。 运行下面的命令来检查当前 APT 缓存文件的使用率。 @@ -118,30 +104,29 @@ $ sudo du -sh /var/cache/apt 147M /var/cache/apt ``` -它清理过时的 deb 软件包。我想说,一点都清理不干净。 +下面的命令会清理过时的 deb 软件包。我想说,一点都清理不干净。 ``` $ sudo apt-get autoclean ``` -它移除所有在 apt 缓存中的软件包。 +下面的命令会移除所有在 apt 缓存中的软件包。 ``` $ sudo apt-get clean ``` -### 4) 卸载不使用的应用程序 +#### 4) 卸载不使用的应用程序 -我可能要求你来检查在你的系统上安装的软件包和游戏,,删除它们,如果你很少使用。 +这需要你来检查在你的系统上安装的软件包和游戏,删除它们,如果你很少使用的话。 -这可以简单地完成,通过 “Ubuntu 软件中心”。 -[![][2]![][2]][6] +这可以通过 “Ubuntu 软件中心” 简单地做到。 -### 5) 清理缩略图缓存 +![][6] -缓存文件夹是程序存储它们可能再次需要的数据的地方,它是为速度保留的,而不是必需保留的。它可以被再次生成或再次下载。 +#### 5) 清理缩略图缓存 -假如它真的填满你的硬盘,那么你可以删除一些东西而不用担心。 +缓存文件夹是程序存储它们可能再次需要的数据的地方,它是为速度保留的,而不是必需保留的。它可以被再次生成或再次下载。假如它真的填满了你的硬盘,那么你可以删除一些东西而不用担心。 运行下面的命令来检查当前 APT 缓存的利用率。 @@ -163,7 +148,7 @@ via: https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-sp 作者:[Magesh Maruthamuthu][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 2a3890962ac2bdf2c49a42a4618b252446395fca Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 3 Jul 2019 16:57:56 +0800 Subject: [PATCH 258/336] PUB @robsean https://linux.cn/article-11051-1.html --- ...Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md (98%) diff --git a/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md b/published/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md similarity index 98% rename from translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md rename to published/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md index 5b21251a8c..530d71d66e 100644 --- a/translated/tech/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md +++ b/published/20190610 5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11051-1.html) [#]: subject: (5 Easy Ways To Free Up Space (Remove Unwanted or Junk Files) on Ubuntu) [#]: via: (https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-space-ubuntu-mint-debian/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From d97c01c8a806f517ac7092544bb2cd2e0c83b6f0 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 4 Jul 2019 00:53:47 +0800 Subject: [PATCH 259/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190703=20Parse?= =?UTF-8?q?=20arguments=20with=20Python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190703 Parse arguments with Python.md --- .../20190703 Parse arguments with Python.md | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 sources/tech/20190703 Parse arguments with Python.md diff --git a/sources/tech/20190703 Parse arguments with Python.md b/sources/tech/20190703 Parse arguments with Python.md new file mode 100644 index 0000000000..73933c53ed --- /dev/null +++ b/sources/tech/20190703 Parse arguments with Python.md @@ -0,0 +1,200 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Parse arguments with Python) +[#]: via: (https://opensource.com/article/19/7/parse-arguments-python) +[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/notsag) + +Parse arguments with Python +====== +Parse Python like a pro with the argparse module. +![COBOL punch card][1] + +If you're using [Python][2] for any amount of development, you have probably issued a command in a terminal, even if only to launch a Python script or install a Python module with [pip][3]. Commands may be simple and singular: + + +``` +`$ ls` +``` + +Commands also might take an argument: + + +``` +`$ ls example` +``` + +Commands can also have options or flags: + + +``` +`$ ls --color example` +``` + +Sometimes options also have arguments: + + +``` +`$ sudo firewall-cmd  --list-all --zone home` +``` + +### Arguments + +The POSIX shell automatically splits whatever you type as a command into an array. For instance, here is a simple command: + + +``` +`$ ls example` +``` + +The command **ls** is position **$0**, and the argument **example** is in position **$1**. + +You _could_ write a loop to iterate over each item; determine whether it is the command, an option, or an argument; and take action accordingly. Luckily, a module called [argparse][4] already exists for that. + +### Argparse + +The argparse module is easy to integrate into your Python programs and has several convenience features. For instance, if your user changes the order of options or uses one option that takes no arguments (called a _Boolean_, meaning the option toggles a setting on or off) and then another that requires an argument (such as **\--color red**, for example), argparse can handle the variety. If your user forgets an option that's required, the argparse module can provide a friendly error message. + +Using argparse in your application starts with defining what options you want to provide your user. There are several different kinds of arguments you can accept, but the syntax is consistent and simple. + +Here's a simple example: + + +``` +#!/usr/bin/env python +import argparse +import sys + +def getOptions(args=sys.argv[1:]): +    parser = argparse.ArgumentParser(description="Parses command.") +    parser.add_argument("-i", "--input", help="Your input file.") +    parser.add_argument("-o", "--output", help="Your destination output file.") +    parser.add_argument("-n", "--number", type=int, help="A number.") +    parser.add_argument("-v", "--verbose",dest='verbose',action='store_true', help="Verbose mode.") +    options = parser.parse_args(args) +    return options +``` + +This code sample creates a function called **getOptions** and tells Python to look at each potential argument preceded by some recognizable string (such as **\--input** or **-i**). Any option that Python finds is returned out of the function as an **options** object (**options** is an arbitrary name and has no special meaning; it's just a data object containing a summary of all the arguments that the function has parsed). + +By default, any argument given by the user is seen by Python as a string. If you need to ingest an integer (a number), you must specify that an option expects **type=int**, as in the **\--number** option in the sample code. + +If you have an argument that just turns a feature on or off, then you must use the **boolean** type, as with the **\--verbose** flag in the sample code. This style of option simply stores **True** or **False**, specifying whether or not the user used the flag. If the option is used, then **stored_true** is activated. + +Once the **getOptions** function runs, you can use the contents of the **options** object and have your program make decisions based on how the user invoked the command. You can see the contents of **options** with a test print statement. Add this to the bottom of your example file: + + +``` +`print(getOptions())` +``` + +Then run the code with some arguments: + + +``` +$ python3 ./example.py -i foo -n 4 +Namespace(input='foo', number=4, output=None, verbose=False) +``` + +### Retrieving values + +The **options** object in the sample code contains any value provided by the user (or a derived Boolean value) in keys named after the long option. In the sample code, for instance, the **\--number** option can be retrieved by looking at **options.number**. + + +``` +options = getOptions(sys.argv[1:]) + +if options.verbose: +    print("Verbose mode on") +else: +    print("Verbose mode off") + +print(options.input) +print(options.output) +print(options.number) + +# Insert Useful Python Code Here... +``` + +The Boolean option, **\--verbose** in the example, is determined by testing whether **options.verbose** is True (meaning the user did use the **\--verbose** flag) or False (the user did not use the **\--verbose** flag), and taking some action accordingly. + +### Help and feedback + +Argparse also includes a built-in **\--help** (**-h** for short) option that provides a helpful tip on how the command is used. This is derived from your code, so it takes no extra work to generate this help system: + + +``` +$ ./example.py --help +usage: example.py [-h] [-i INPUT] [-o OUTPUT] [-n NUMBER] [-v] + +Parses command. + +optional arguments: +  -h, --help            show this help message and exit +  -i INPUT, --input INPUT +                        Your input file. +  -o OUTPUT, --output OUTPUT +                        Your destination output file. +  -n NUMBER, --number NUMBER +                        A number. +  -v, --verbose         Verbose mode. +``` + +### Python parsing like a pro + +This a simple example that demonstrates how to deal with parsing arguments in a Python application and how to quickly and efficiently document their syntax. The next time you write a quick Python script, give it some options with argparse. You'll thank yourself later, and your command will feel less like a quick hack and more like a "real" Unix command! + +Here's the sample code, which you can use for testing: + + +``` +#!/usr/bin/env python3 +# GNU All-Permissive License +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved.  This file is offered as-is, +# without any warranty. + +import argparse +import sys + +def getOptions(args=sys.argv[1:]): +    parser = argparse.ArgumentParser(description="Parses command.") +    parser.add_argument("-i", "--input", help="Your input file.") +    parser.add_argument("-o", "--output", help="Your destination output file.") +    parser.add_argument("-n", "--number", type=int, help="A number.") +    parser.add_argument("-v", "--verbose",dest='verbose',action='store_true', help="Verbose mode.") +    options = parser.parse_args(args) +    return options + +options = getOptions(sys.argv[1:]) + +if options.verbose: +    print("Verbose mode on") +else: +    print("Verbose mode off") + +print(options.input) +print(options.output) +print(options.number) +``` + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/parse-arguments-python + +作者:[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/notsag +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cobol-card-punch-programming-code.png?itok=6W6PUqUi (COBOL punch card) +[2]: https://www.python.org/ +[3]: https://pip.pypa.io/en/stable/installing/ +[4]: https://pypi.org/project/argparse/ From eec74c28c8ccac117822cb11e8d45f8856cdc3c3 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 4 Jul 2019 00:54:24 +0800 Subject: [PATCH 260/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190703=206=20op?= =?UTF-8?q?en=20source=20web=20browser=20alternatives?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190703 6 open source web browser alternatives.md --- ... 6 open source web browser alternatives.md | 199 ++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 sources/tech/20190703 6 open source web browser alternatives.md diff --git a/sources/tech/20190703 6 open source web browser alternatives.md b/sources/tech/20190703 6 open source web browser alternatives.md new file mode 100644 index 0000000000..3a965cc74c --- /dev/null +++ b/sources/tech/20190703 6 open source web browser alternatives.md @@ -0,0 +1,199 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (6 open source web browser alternatives) +[#]: via: (https://opensource.com/article/19/7/open-source-browsers) +[#]: author: (Bryant Son https://opensource.com/users/brson/users/lauren-pritchett/users/scottnesbitt) + +6 open source web browser alternatives +====== +Chrome and Firefox are on the list, but you'll find some other +interesting options, too. +![web development and design, desktop and browser][1] + +Open source web browsers have come a long way since Microsoft dominated the web browser market with its closed source Internet Explorer (IE). For many years, IE was the standard browser for Microsoft's Windows operating system, while Safari (also closed source) was the default browser for MacOS. Then Mozilla's introduction of Firefox, followed by Google's release of Chrome, sparked a revolution in open source internet browsers. Those two are extremely well known but are not the only open source browsers available. + +This article introduces seven open source browsers, summarizes their features, and shares how you can contribute to them. + +Name / Link to Contribute | License | Supported OSes +---|---|--- +[Brave][2] | MPL 2.0 | All +[Chrome/Chromium][3] | BSD | All +[Firefox][4] | MPL 2.0 | All +[Konqueror][5] | GPL | Linux +[Lynx][6] | GPL | Linux, Windows, DOS +[Midori][7] | LGPL | Linux, Windows + +### Brave + +The [Brave browser][8] was created with the goal of blocking all but user-approved advertisements and website trackers. [Brendan Eich][9], the creator of JavaScript and a co-founder of the Mozilla Foundation, leads the Brave project as the CEO and a co-founder. + +**Pros of Brave:** + + * No ads or web trackers + * Speed + * Security + * Chromium [extension support][10] + * Bugs are tracked in [Brave QA central][11] + + + +**Cons of Brave:** + + * The opt-in micro-payment system to support content creators has an unclear pathway to get your payments to your intended recipient + + + +You can find Brave's source code (available under the Mozilla Public License) in its extensive [GitHub repositories][2] (there are 140 repos as of this writing). + +### Chrome/Chromium + +[Google Chrome][12], inarguably, is the most [widely used][13] internet browser—open source or otherwise. I remember when Google introduced the first version of Chrome. Mozilla Firefox, which came out much earlier, was riding a wave of popularity. The first version of Chrome was so slow, buggy, and disappointing, which led me to think it wouldn't be successful. But, boy, I was wrong. Chrome got better and better, and the browser eventually surpassed Firefox's browser market share. Google Chrome is still known as a "memory hog" due to its heavy random access memory (RAM) utilization. Regardless, Chrome is by far the most popular browser, and it's loved by many due to its simplicity and speed. + +**Pros of Google Chrome/Chromium:** + + * Simplicity + * Speed + * Many useful built-in features + + + +**Cons of Google Chrome/Chromium:** + + * Heavy memory usage + * Chrome (not Chromium) has proprietary code + + + +Chromium, which is the open source project behind the Chrome browser, is available under the Berkeley Software Distribution (BSD) license. Note that the Chrome browser also has some closed source code. To contribute, visit the [Contributing to Chromium][14] page. + +### Firefox + +Although Chrome is now the most popular browser, [Mozilla Firefox][15] is the one that started the whole open source web browser sensation. Before Mozilla Firefox, Internet Explorer seemed to be undefeatable. But the birth of Firefox shook that belief. One interesting bit of trivia is that its co-founder [Blake Ross][16] was only 19 years old when Firefox was released. + +**Pros of Mozilla Firefox:** + + * Security + * Many extensions are available + * Uniform user experience across different systems + + + +**Cons of Mozilla Firefox:** + + * Heavy memory usage + * Some HTML5 compatibility issue + + + +Firefox's source code is available under the Mozilla Public License (MPL), and it maintains comprehensive guidelines on [how to contribute][4]. + +### Konqueror + +[Konqueror][17] may not be the most well-known internet browser, and that is okay because it is responsible for KHTML, the browser engine forked by Apple and then Google for the Safari and Chrome browsers (and subsequently used by Brave, Vivaldi, and several other browsers). Today, Konqueror can use either its native KHTML engine or the Chromium fork. Konqueror is maintained by the international [KDE][18] free software community, and it's easy to find on most Linux desktops. + +**Pros of Konqueor:** + + * Pre-installed on many Linux desktops + * Fast and efficient + * Built-in ad-blocker and pop-up blocker + * Customizable URL shortcuts + * Doubles as a file manager, man page viewer, and much more + + + +**Cons of Konqueror:** + + * Primarily runs in Linux + * Requires several KDE libraries to be installed + + + +Konqueror's source code is available under the GNU Public License (GPL). You can find its detailed [documentation][19] and [source code][5] on the KDE website. + +### Lynx + +Ah, [Lynx][20]. Lynx is a unique browser as it is entirely text-based. It is also the oldest web browser still in use and still under development. You might think, "who would use a text-based browser?" But it works, and there is a big community supporting this special open source browser. + +**Pros of Lynx:** + + * Extremely lightweight + * Extremely minimal + * Extremely secure + * Supports DOS and Windows + * Ideal for testing and safe browsing + + + +**Cons of Lynx:** + + * Nothing but text + + + +Lynx's source code is available under the GNU Public License (GPL) and maintained on [GitHub][6]. + +### Midori + +If you hear "Midori," you might think of a green-hued cocktail. But the [Midori browser][21] is an open source, lightweight browser. If you want a simple and lightweight browser, Midori might be an interesting one to look at. But note that there is no stable release for this browser, and it is known to be quite buggy. + +**Pros of Midori:** + + * Simple + * Lightweight + + + +**Cons of Midori:** + + * Still no stable release + * Buggy + * Almost no extensions + * No process isolation + + + +Midori's source code is available under the GNU Lesser General Public License (LGPL) and maintained on [GitHub][7]. + +* * * + +Do you know another open source browser that I should have mentioned on this list? Please share it in the comments. + +Web browsers that run in a terminal window are alive and kicking. They're niche, but still get the... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/open-source-browsers + +作者:[Bryant Son][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/brson/users/lauren-pritchett/users/scottnesbitt +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/web_browser_desktop_devlopment_design_system_computer.jpg?itok=pfqRrJgh (web development and design, desktop and browser) +[2]: https://github.com/brave +[3]: https://www.chromium.org/Home +[4]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Introduction +[5]: https://kde.org/applications/internet/org.kde.konqueror/development +[6]: https://github.com/kurtchen/Lynx +[7]: https://github.com/midori-browser/core +[8]: https://brave.com +[9]: https://en.wikipedia.org/wiki/Brendan_Eich +[10]: https://support.brave.com/hc/en-us/articles/360017909112-How-can-I-add-extensions-to-Brave- +[11]: https://community.brave.com/c/legacy/qa +[12]: https://www.google.com/chrome/ +[13]: https://www.statista.com/statistics/544400/market-share-of-internet-browsers-desktop/ +[14]: https://chromium.googlesource.com/chromium/src/+/master/docs/contributing.md +[15]: https://www.mozilla.org/firefox/ +[16]: https://en.wikipedia.org/wiki/Blake_Ross +[17]: https://kde.org/applications/internet/org.kde.konqueror +[18]: https://kde.org +[19]: https://docs.kde.org/stable5/en/applications/konqueror/index.html +[20]: http://lynx.browser.org/ +[21]: https://www.midori-browser.org/ From 8b3fdcbfc0cc888d68f2ed046fa3829cb513ece7 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 4 Jul 2019 00:55:11 +0800 Subject: [PATCH 261/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190703=20An=20e?= =?UTF-8?q?co-friendly=20internet=20of=20disposable=20things=20is=20coming?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190703 An eco-friendly internet of disposable things is coming.md --- ...internet of disposable things is coming.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 sources/talk/20190703 An eco-friendly internet of disposable things is coming.md diff --git a/sources/talk/20190703 An eco-friendly internet of disposable things is coming.md b/sources/talk/20190703 An eco-friendly internet of disposable things is coming.md new file mode 100644 index 0000000000..8d1e827aa8 --- /dev/null +++ b/sources/talk/20190703 An eco-friendly internet of disposable things is coming.md @@ -0,0 +1,92 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (An eco-friendly internet of disposable things is coming) +[#]: via: (https://www.networkworld.com/article/3406462/an-eco-friendly-internet-of-disposable-things-is-coming.html) +[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) + +An eco-friendly internet of disposable things is coming +====== +Researchers are creating a non-hazardous, bacteria-powered miniature battery that can be implanted into shipping labels and packaging to monitor temperature and track packages in real time. +![Thinkstock][1] + +Get ready for a future of disposable of internet of things (IoT) devices, one that will mean everything is connected to networks. It will be particularly useful in logistics, being used in single-use plastics in retail packaging and throw-away shippers’ carboard boxes. + +How it will happen? The answer is when non-hazardous, disposable bio-batteries make it possible. And that moment might be approaching. Researchers say they’re closer to commercializing a bacteria-powered miniature battery that they say will propel the IoDT. + +**[ Learn more: [Download a PDF bundle of five essential articles about IoT in the enterprise][2] ]** + +The “internet of disposable things is a new paradigm for the rapid evolution of wireless sensor networks,” says Seokheun Choi, an associate professor at Binghamton University, [in an article on the school’s website][3]. + +“Current IoDTs are mostly powered by expensive and environmentally hazardous batteries,” he says. Those costs can be significant in any kind of large-scale deployment, he says. And furthermore, with exponential growth, the environmental concerns would escalate rapidly. + +The miniaturized battery that Choi’s team has come up with is uniquely charged through power created by bacteria. It doesn’t have metals and acids in it. And it’s designed specifically to provide energy to sensors and radios in single-use IoT devices. Those could be the kinds of sensors ideal for supply-chain logistics where the container is ultimately going to end up in a landfill, creating a hazard. + +Another use case is real-time analysis of packaged food, with sensors monitoring temperature and location, preventing spoilage and providing safer food handling. For example, a farm product could be tracked for on-time delivery, as well as have its temperature measured, all within the packaging, as it moves from packaging facility to consumer. In the event of a food-borne illness outbreak, say, one can quickly find out where the product originated—which apparently is hard to do now. + +Other use cases could be battery-impregnated shipping labels that send real-time data to the internet. Importantly, in both use cases, packaging can be discarded without added environmental concerns. + +### How the bacteria-powered batteries work + +A slow release of nutrients provide the energy to the bacteria-powered batteries, which the researchers say can last up to eight days. “Slow and continuous reactions” convert the microbial nutrients into “long standing power,” they say in [their paper's abstract][4]. + +“Our biobattery is low-cost, disposable, and environmentally-friendly,” Choi says. + +Origami, the Japanese paper-folding skill used to create objects, was an inspiration for a similar microbial-based battery project the group wrote about last year in a paper. This one is liquid-based and not as long lasting. A bacteria-containing liquid was absorbed along the porous creases in folded paper, creating the paper-delivered power source, perhaps to be used in a shipping label. + +“Low-cost microbial fuel cells (MFCs) can be done efficiently by using a paper substrate and origami techniques,” [the group wrote then][5]. + +Scientists, too, envisage electronics now printed on circuit boards (PCBs) and can be toxic on disposal being printed entirely on eco-friendly paper. Product cycles, such as those found now in mobile devices and likely in future IoT devices, are continually getting tighter—thus PCBs are increasingly being disposed. Solutions are needed, experts say. + +Put the battery in the paper, too, is the argument here. And while you’re at it, get the biodegradation of the used-up biobattery to help break-down the organic-matter paper. + +Ultimately, Choi believes that the power-creating bacteria could even be introduced naturally by the environment—right now it’s added on by the scientists. + +**More on IoT:** + + * [What is the IoT? How the internet of things works][6] + * [What is edge computing and how it’s changing the network][7] + * [Most powerful Internet of Things companies][8] + * [10 Hot IoT startups to watch][9] + * [The 6 ways to make money in IoT][10] + * [What is digital twin technology? [and why it matters]][11] + * [Blockchain, service-centric networking key to IoT success][12] + * [Getting grounded in IoT networking and security][2] + * [Building IoT-ready networks must become a priority][13] + * [What is the Industrial IoT? [And why the stakes are so high]][14] + + + +Join the Network World communities on [Facebook][15] and [LinkedIn][16] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3406462/an-eco-friendly-internet-of-disposable-things-is-coming.html + +作者:[Patrick Nelson][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/Patrick-Nelson/ +[b]: https://github.com/lujun9972 +[1]: https://images.techhive.com/images/article/2017/04/green-data-center-intro-100719502-large.jpg +[2]: https://www.networkworld.com/article/3269736/internet-of-things/getting-grounded-in-iot-networking-and-security.html +[3]: https://www.binghamton.edu/news/story/1867/everything-will-connect-to-the-internet-someday-and-this-biobattery-could-h +[4]: https://www.sciencedirect.com/science/article/abs/pii/S0378775319305580 +[5]: https://www.sciencedirect.com/science/article/pii/S0960148117311606 +[6]: https://www.networkworld.com/article/3207535/internet-of-things/what-is-the-iot-how-the-internet-of-things-works.html +[7]: https://www.networkworld.com/article/3224893/internet-of-things/what-is-edge-computing-and-how-it-s-changing-the-network.html +[8]: https://www.networkworld.com/article/2287045/internet-of-things/wireless-153629-10-most-powerful-internet-of-things-companies.html +[9]: https://www.networkworld.com/article/3270961/internet-of-things/10-hot-iot-startups-to-watch.html +[10]: https://www.networkworld.com/article/3279346/internet-of-things/the-6-ways-to-make-money-in-iot.html +[11]: https://www.networkworld.com/article/3280225/internet-of-things/what-is-digital-twin-technology-and-why-it-matters.html +[12]: https://www.networkworld.com/article/3276313/internet-of-things/blockchain-service-centric-networking-key-to-iot-success.html +[13]: https://www.networkworld.com/article/3276304/internet-of-things/building-iot-ready-networks-must-become-a-priority.html +[14]: https://www.networkworld.com/article/3243928/internet-of-things/what-is-the-industrial-iot-and-why-the-stakes-are-so-high.html +[15]: https://www.facebook.com/NetworkWorld/ +[16]: https://www.linkedin.com/company/network-world From 99d87b057b82e456e7321585aa25bdc5b094bbac Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 4 Jul 2019 08:51:24 +0800 Subject: [PATCH 262/336] translated --- ...d The Port Number Of A Service In Linux.md | 210 ------------------ ...d The Port Number Of A Service In Linux.md | 195 ++++++++++++++++ 2 files changed, 195 insertions(+), 210 deletions(-) delete mode 100644 sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md create mode 100644 translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md diff --git a/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md deleted file mode 100644 index d934e10782..0000000000 --- a/sources/tech/20180620 How To Find The Port Number Of A Service In Linux.md +++ /dev/null @@ -1,210 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How To Find The Port Number Of A Service In Linux) -[#]: via: (https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/) -[#]: author: (sk https://www.ostechnix.com/author/sk/) - -How To Find The Port Number Of A Service In Linux -====== - -![Find The Port Number Of A Service In Linux OS][1] - -You might often need to find the port names and numbers for some reasons. If so, you’re in luck. Today, in this brief tutorial, we are going to see the easiest and quickest ways to find the port number of a service in Linux operating system. There could be many methods to do it, but I am aware of the following three methods only at present. Read on. - -### Find The Port Number Of A Service In Linux - -**Method 1 – Using[Grep][2] command:** - -To find the default port number of a given service in Linux using grep command, just run: - -``` -$ grep /etc/services -``` - -For example, to find the default port of a SSH service, simply run: - -``` -$ grep ssh /etc/services -``` - -It’s that simple. This command should work on most Linux distributions. Here is the sample output from my Arch Linux test box: - -``` -ssh 22/tcp -ssh 22/udp -ssh 22/sctp -sshell 614/tcp -sshell 614/udp -netconf-ssh 830/tcp -netconf-ssh 830/udp -sdo-ssh 3897/tcp -sdo-ssh 3897/udp -netconf-ch-ssh 4334/tcp -snmpssh 5161/tcp -snmpssh-trap 5162/tcp -tl1-ssh 6252/tcp -tl1-ssh 6252/udp -ssh-mgmt 17235/tcp -ssh-mgmt 17235/udp -``` - -As you can see in the above output, the default port number of SSH service is 22. - -Let us find the port number of Apache web server. To do so, the command would be: - -``` -$ grep http /etc/services -# http://www.iana.org/assignments/port-numbers -http 80/tcp www www-http # WorldWideWeb HTTP -http 80/udp www www-http # HyperText Transfer Protocol -http 80/sctp # HyperText Transfer Protocol -https 443/tcp # http protocol over TLS/SSL -https 443/udp # http protocol over TLS/SSL -https 443/sctp # http protocol over TLS/SSL -gss-http 488/tcp -gss-http 488/udp -webcache 8080/tcp http-alt # WWW caching service -webcache 8080/udp http-alt # WWW caching service -[...] -``` - -How about FTP port number? That’s easy! - -``` -$ grep ftp /etc/services -ftp-data 20/tcp -ftp-data 20/udp -# 21 is registered to ftp, but also used by fsp -ftp 21/tcp -ftp 21/udp fsp fspd -tftp 69/tcp -[...] -``` - -**Method 2 – Using getent command** - -As you can see, the above commands shows all port names and numbers for the given search term “ssh”, “http” and “ftp”. That means, you will get a quite long output of all port names that matches with the given search term. - -You can, however, narrow down the result to exact output using “getent” command like below: - -``` -$ getent services ssh -ssh 22/tcp - -$ getent services http -http 80/tcp www www-http - -$ getent services ftp -ftp 21/tcp -``` - -If you don’t know the port name but the port number, simply replace the port name with number like below: - -``` -$ getent services 80 -http 80/tcp -``` - -To display all port names and numbers, simply run: - -``` -$ getent services -``` - -* * * - -**Suggested read:** - - * [**How To Change Apache Default Port To A Custom Port**][3] - * [**How To Change FTP Default Port To A Custom Port**][4] - * [**How To Change SSH Default Port To A Custom Port**][5] - - - -* * * - -**Method 3 – Using Whatportis Utility** - -The **Whatportis** is a simple python script used to find port names and numbers. Unlike the above commands, this utility displays the output in a nice tabular column format. - -Make sure you have installed PIP package manager. If not, refer the following link. - - * [**How To Manage Python Packages Using Pip**][6] - - - -Once installed PIP, run the following command to install Whatportis utility. - -``` -$ pip install whatportis -``` - -Now, you can find what port is associated with a service as shown below. - -``` -$ whatportis ssh - -$ whatportis ftp - -$ whatportis http -``` - -Sample output from my CentOS 7 server: - -![][7] - -Find The Port Number Of A Service In Linux - -If you don’t know the exact name of a service, use **–like** flag to display the relevant results. - -``` -$ whatportis mysql --like -``` - -The above commands helped you to find what port is associated with a service. You can also find what service is associated with a port number like below. - -``` -$ whatportis 993 -``` - -You can even display the results in **JSON** format. - -``` -$ whatportis 993 --json -``` - -![][8] - -For more details, refer the GitHub repository. - - * [**Whatportis GitHub Repository**][9] - - - -And, that’s all for now. You know now how to find the port names and numbers in Linux using three simple methods. If you know any other methods/commands, let me know in the comment section below. I will check and update this guide accordingly. - --------------------------------------------------------------------------------- - -via: https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/ - -作者:[sk][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.ostechnix.com/author/sk/ -[b]: https://github.com/lujun9972 -[1]: https://www.ostechnix.com/wp-content/uploads/2018/06/Find-The-Port-Number-720x340.png -[2]: https://www.ostechnix.com/the-grep-command-tutorial-with-examples-for-beginners/ -[3]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-1/ -[4]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-2/ -[5]: https://www.ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/ -[6]: https://www.ostechnix.com/manage-python-packages-using-pip/ -[7]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis.png -[8]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis-1.png -[9]: https://github.com/ncrocfer/whatportis diff --git a/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md new file mode 100644 index 0000000000..3f42a4cb4c --- /dev/null +++ b/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md @@ -0,0 +1,195 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How To Find The Port Number Of A Service In Linux) +[#]: via: (https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +如何在 Linux 中查找服务的端口号 +====== + +![Find The Port Number Of A Service In Linux OS][1] + +由于某些原因,你可能经常需要查找端口名称和端口号。如果是这样,你很幸运。今天,在这个简短的教程中,我们将看到在 Linux 系统中最简单、最快捷的查找服务端口号的方法。可能有很多方法可以做到,但我目前只知道以下三种方法。请继续阅读。 + +### 在 Linux 中查找服务的端口号 + +**方法1:使用 [grep][2] 命令** + +要使用 grep 命令在 Linux 中查找指定服务的默认端口号,只需运行: + +``` +$ grep /etc/services +``` + +例如,要查找 SSH 服务的默认端口,只需运行: + +``` +$ grep ssh /etc/services +``` + +就这么简单。此命令应该适用于大多数 Linux 发行版。以下是我的 Arch Linux 测试机中的示例输出: + +``` +ssh 22/tcp +ssh 22/udp +ssh 22/sctp +sshell 614/tcp +sshell 614/udp +netconf-ssh 830/tcp +netconf-ssh 830/udp +sdo-ssh 3897/tcp +sdo-ssh 3897/udp +netconf-ch-ssh 4334/tcp +snmpssh 5161/tcp +snmpssh-trap 5162/tcp +tl1-ssh 6252/tcp +tl1-ssh 6252/udp +ssh-mgmt 17235/tcp +ssh-mgmt 17235/udp +``` + +正如你在上面的输出中所看到的,SSH 服务的默认端口号是 22。 + +让我们找到 Apache Web 服务器的端口号。为此,命令是: + +``` +$ grep http /etc/services +# http://www.iana.org/assignments/port-numbers +http 80/tcp www www-http # WorldWideWeb HTTP +http 80/udp www www-http # HyperText Transfer Protocol +http 80/sctp # HyperText Transfer Protocol +https 443/tcp # http protocol over TLS/SSL +https 443/udp # http protocol over TLS/SSL +https 443/sctp # http protocol over TLS/SSL +gss-http 488/tcp +gss-http 488/udp +webcache 8080/tcp http-alt # WWW caching service +webcache 8080/udp http-alt # WWW caching service +[...] +``` + +FTP 端口号是什么?这很简单! + +``` +$ grep ftp /etc/services +ftp-data 20/tcp +ftp-data 20/udp +# 21 is registered to ftp, but also used by fsp +ftp 21/tcp +ftp 21/udp fsp fspd +tftp 69/tcp +[...] +``` + +**方法 2:使用 getent 命令** + +如你所见,上面的命令显示指定搜索词 “ssh”、“http” 和 “ftp” 的所有端口名称和数字。这意味着,你将获得与给定搜索词匹配的所有端口名称的相当长的输出。 + +但是,你可以使用 “getent” 命令精确输出结果,如下所示: + +``` +$ getent services ssh +ssh 22/tcp + +$ getent services http +http 80/tcp www www-http + +$ getent services ftp +ftp 21/tcp +``` + +如果你不知道端口名称,但是知道端口号,那么你只需将端口名称替换为数字: + +``` +$ getent services 80 +http 80/tcp +``` + +要显示所有端口名称和端口号,只需运行: + +``` +$ getent services +``` + +**方法 3:使用 Whatportis 程序** + +**Whatportis** 是一个简单的 python 脚本,来用于查找端口名称和端口号。与上述命令不同,此程序以漂亮的表格形式输出。 + +确保已安装 PIP 包管理器。如果没有,请参考以下链接。 + + * [**如何使用 Pip 管理 Python 包**][6] + + + +安装 PIP 后,运行以下命令安装 Whatportis 程序。 + +``` +$ pip install whatportis +``` + +现在,你可以找到与服务关联的端口,如下所示。 + +``` +$ whatportis ssh + +$ whatportis ftp + +$ whatportis http +``` + +我的 CentOS 7 服务器的示例输出: + +![][7] + +在 Linux 中查找服务的端口号 + +如果你不知道服务的确切名称,请使用 **–like** 标志来显示相关结果。 + +``` +$ whatportis mysql --like +``` + +上述命令帮助你查找与服务关联的端口。你还可以找到与端口号相关联的服务,如下所示。 + +``` +$ whatportis 993 +``` + +你甚至可以以 **JSON** 格式显示结果。 + +``` +$ whatportis 993 --json +``` + +![][8] + +有关更多详细信息,请参阅 GitHub 仓库。 + + * [**Whatportis GitHub 仓库**][9] + + + +就是这些了。你现在知道了如何使用三种简单方法在 Linux 中查找端口名称和端口号。如果你知道任何其他方法/命令,请在下面的评论栏告诉我。我会查看并更相应地更新本指南。 + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/ + +作者:[sk][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://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2018/06/Find-The-Port-Number-720x340.png +[2]: https://www.ostechnix.com/the-grep-command-tutorial-with-examples-for-beginners/ +[6]: https://www.ostechnix.com/manage-python-packages-using-pip/ +[7]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis.png +[8]: https://www.ostechnix.com/wp-content/uploads/2018/06/whatportis-1.png +[9]: https://github.com/ncrocfer/whatportis From 3ac8e27f3dcac296bb2c9193fdaf70a68a052371 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 4 Jul 2019 08:55:45 +0800 Subject: [PATCH 263/336] translating --- sources/tech/20190627 How to use Tig to browse Git logs.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sources/tech/20190627 How to use Tig to browse Git logs.md b/sources/tech/20190627 How to use Tig to browse Git logs.md index 1b0c88752e..e9dd941109 100644 --- a/sources/tech/20190627 How to use Tig to browse Git logs.md +++ b/sources/tech/20190627 How to use Tig to browse Git logs.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) @@ -9,8 +9,7 @@ How to use Tig to browse Git logs ====== -Tig is more than just a text-mode interface for Git. Here's how it can -enhance your daily workflow. +Tig is more than just a text-mode interface for Git. Here's how it can enhance your daily workflow. ![A person programming][1] If you work with Git as your version control system, you've likely already resigned yourself to the fact that Git is a complicated beast. It is a fantastic tool, but it can be cumbersome to navigate Git repositories. That's where a tool like [Tig][2] comes in. From fbe8b2d0192fcde10982e2c85ac947f514a8d504 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 12:51:26 +0800 Subject: [PATCH 264/336] PRF:20190320 4 cool terminal multiplexers.md @geekpi --- .../20190320 4 cool terminal multiplexers.md | 49 +++++++++---------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/translated/tech/20190320 4 cool terminal multiplexers.md b/translated/tech/20190320 4 cool terminal multiplexers.md index fd35fce491..b7bbcd914a 100644 --- a/translated/tech/20190320 4 cool terminal multiplexers.md +++ b/translated/tech/20190320 4 cool terminal multiplexers.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (4 cool terminal multiplexers) @@ -12,50 +12,49 @@ ![][1] -Fedora 系统对很多用户来说都很舒适。它有一个令人惊叹的桌面,可以轻松地完成日常任务。表面之下有 Linux 系统的全部功能,终端是高级用户使用它们的最简单的方法。默认的终端简单且功能有限。但是,_终端复用器_能让你的终端变得非常强大。本文展示了一些流行的终端多路复用器以及如何安装它们。 +Fedora 系统对很多用户来说都很舒适。它有一个令人惊叹的桌面,可以轻松地完成日常任务。而在这光鲜的表面之下是由 Linux 系统提供的支持,而终端是高级用户使用这些底层能力的最简单方法。默认的终端简单且功能有限。但是,*终端复用器*能让你的终端变得非常强大。本文展示了一些流行的终端多路复用器以及如何安装它们。 +为什么要用它?嗯,首先,它可以让你注销你的系统,而同时*让你的终端会话不受干扰*。退出你的控制台,这样安全,在其他地方旅行时通过远程登录 SSH 继续之前的操作是非常有用的。这里有一些工具可以看下。 -你为什么要用它?嗯,首先,它可以让你注销你的系统,同时_让你的终端会话不受干扰_。退出你的控制台,加密它,在其他地方旅行时通过远程登录 SSH 继续之前的操作是非常有用的。这里有一些工具可以看下。 - -最古老和最知名的终端多路复用器之一是 _screen_。但是,由于代码不再维护,本文将重点介绍最近的应用。 (“最近的”是相对的,其中一些已存在多年!) +最古老和最知名的终端多路复用器之一是 `screen`。但是,由于其代码不再维护,本文将重点介绍最近的应用。 (“最近的”是相对而言的,其中一些已存在多年!) ### Tmux -_tmux_ 是 _screen_ 的最广泛使用的替换之一。它有高度可配置的接口。你可以根据需要对 tmux 进行编程以启动特定类型的会话。在前面发表的这篇文章中你会发现更多关于 tmux 的信息: +`tmux` 是 `screen` 最广泛使用的替代品之一。它有高度可配置的接口。你可以根据需要对 `tmux` 进行编程以启动特定类型的会话。在前面发表的这篇文章中你会发现更多关于 tmux 的信息: -> [使用 tmux 实现更强大的终端][2] +- [使用 tmux 实现更强大的终端][2] -已经是 tmux 用户?你可能会喜欢[这篇使你的 tmux 会话更有效的文章][3]。 +已经是 `tmux` 用户?你可能会喜欢[这篇使你的 tmux 会话更有效的文章][3]。 -要安装 tmux,由于你可能已经在终端中,请使用 _dnf_ 并带上 _sudo_: +要安装 `tmux`,由于你可能已经在终端中,请带上 `sudo` 使用 `dnf`: ``` $ sudo dnf install tmux ``` -要开始学习,请运行 _tmux_ 命令。单窗格窗口以你的默认 shell 启动。tmux 使用_修饰键_来表示接下来会发出命令。默认情况下,此键为 **Ctrl+B**。如果输入 **Ctrl+B, C**,你将创建一个带有 shell 的新窗口。 +要开始学习,请运行 `tmux` 命令。单窗格窗口以你的默认 shell 启动。tmux 使用*修饰键*来表示接下来会发出命令。默认情况下,此键为 `Ctrl+B`。如果输入 `Ctrl+B, C`,你将创建一个带有 shell 的新窗口。 -提示:使用 **Ctrl+B, ?** 进入帮助模式,会列出你可以使用的所有键。为了简单起见,你先查看 _bind-key -T prefix_ 开头的行。这些是你可以在修饰键之后立即使用的键,可以用来配置你的 tmux 会话。你可以按 **Ctrl+C** 退出帮助模式回 tmux。 +提示:使用 `Ctrl+B, ?` 进入帮助模式,会列出你可以使用的所有键。为了简单起见,你先查看 `bind-key -T prefix` 开头的行。这些是你可以在修饰键之后立即使用的键,可以用来配置你的 `tmux` 会话。你可以按 `Ctrl+C` 退出帮助模式回 `tmux`。 -要完全退出 tmux,请使用标准 _exit_ 命令或 _Ctrl+D_ 退出所有 shell。 +要完全退出 `tmux`,请使用标准 `exit` 命令或 `Ctrl+D` 退出所有 shell。 ### Dvtm -你可能最近在 Fedroa Magzine上看到过一篇 [dwm,一个动态窗口管理器][4]的文章。像 dwm 一样,_dvtm_ 用于平铺窗口管理,但是用在终端中。它的设计坚持 UNIX 的“做好一件事”的理念,在这里是管理终端中的窗口。 +你可能最近在 Fedroa Magzine 上看到过一篇 [dwm,一个动态窗口管理器][4]的文章。像 `dwm` 一样,`dvtm` 用于平铺窗口管理,但是是用在终端中。它的设计坚持 UNIX 的“做好一件事”的理念,在这里是管理终端中的窗口。 -安装 dvtm 也很简单。但是,如果你想要前面提到的注销功能,你还需要 _abduco_ 包来处理 dvtm 的会话管理。 +安装 `dvtm` 也很简单。但是,如果你想要前面提到的注销功能,你还需要 `abduco` 包来处理 dvtm 的会话管理。 ``` $ sudo dnf install dvtm abduco ``` -dvtm 已经映射了许多管理终端窗口的按键。默认情况下,它使用 **Ctrl+G** 作为其修饰键。这个按键告诉 dvtm 接下来的字符将成为它应该处理的命令。例如, **Ctrl+G, C** 创建一个新窗口,**Ctrl+G, X** 将其关闭。 +`dvtm` 已经映射了许多管理终端窗口的按键。默认情况下,它使用 `Ctrl+G` 作为其修饰键。这个按键告诉 `dvtm` 接下来的字符将成为它应该处理的命令。例如, `Ctrl+G, C` 创建一个新窗口,`Ctrl+G, X` 将其关闭。 -有关使用 dvtm 的更多信息,请查看 dvtm 的[主页][5],其中包含大量提示和入门信息。 +有关使用 `dvtm` 的更多信息,请查看 `dvtm` 的[主页][5],其中包含大量提示和入门信息。 ### Byobu -虽然 _byobu_ 本身并不是真正的多路复用器 - 它封装了 _tmux_ 甚至更老的 _screen_ 来添加功能,但它也值得在这里一提。通过帮助菜单和窗口选项卡,以便更加容易地找到功能,Byobu 使终端复用器更适合初学者。 +虽然 `byobu` 本身并不是真正的多路复用器 —— 它封装了 `tmux` 甚至更老的 `screen` 来添加功能,但它也值得在这里一提。通过帮助菜单和窗口选项卡,以便更加容易地找到那些功能,`byobu` 使终端复用器更适合初学者。 当然它也可以在 Fedora 仓库中找到。要安装它,请使用以下命令: @@ -63,29 +62,29 @@ dvtm 已经映射了许多管理终端窗口的按键。默认情况下,它使 $ sudo dnf install byobu ``` -默认情况下,_byobu_ 会在内部运行 _screen_,因此你可能希望运行 _byobu-tmux_ 来封装 _tmux_。你可以使用 **F9** 键打开帮助菜单以获取更多信息,来帮助你入门。 +默认情况下,`byobu` 会在内部运行 `screen`,因此你可能希望运行 `byobu-tmux` 来封装 `tmux`。你可以使用 `F9` 键打开帮助菜单以获取更多信息,来帮助你入门。 ### Mtm -_mtm_ 是你可以找到的最小的复用器之一。事实上,它只有大约 1000 行代码!如果你处于受限的环境(例如旧硬件、最小容器等)中,你可能会发现它很有用。要开始使用,你需要安装一些包。 +`mtm` 是你可以找到的最小的复用器之一。事实上,它只有大约 1000 行代码!如果你处于受限的环境(例如旧硬件、最小容器等)中,你可能会发现它很有用。要开始使用,你需要安装一些包。 ``` $ sudo dnf install git ncurses-devel make gcc ``` -然后克隆 mtm 所在的仓库: +然后克隆 `mtm` 所在的仓库: ``` $ git clone https://github.com/deadpixi/mtm.git ``` -进入 _mtm_ 文件夹并构建程序: +进入 `mtm` 文件夹并构建程序: ``` $ make ``` -你可能会收到一些警告,但完成后,你将会有一个非常小的 _mtm_ 程序。使用以下命令运行它: +你可能会收到一些警告,但完成后,你将会有一个非常小的 `mtm` 程序。使用以下命令运行它: ``` $ ./mtm @@ -95,10 +94,6 @@ $ ./mtm 这里只是一些终端复用器。你有想推荐的么?请在下面留下你的评论,享受在终端中创建窗口吧! -* * * - -_由 _[ _Michael_][7]_ 拍摄,发布于 [Unsplash][8]。_ - -------------------------------------------------------------------------------- via: https://fedoramagazine.org/4-cool-terminal-multiplexers/ @@ -106,7 +101,7 @@ via: https://fedoramagazine.org/4-cool-terminal-multiplexers/ 作者:[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 99499a06ea5fdfa403ab05cd09ca2f01d3bb8f54 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 12:52:03 +0800 Subject: [PATCH 265/336] PUB:20190320 4 cool terminal multiplexers.md @geekpi https://linux.cn/article-11054-1.html --- .../20190320 4 cool terminal multiplexers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190320 4 cool terminal multiplexers.md (98%) diff --git a/translated/tech/20190320 4 cool terminal multiplexers.md b/published/20190320 4 cool terminal multiplexers.md similarity index 98% rename from translated/tech/20190320 4 cool terminal multiplexers.md rename to published/20190320 4 cool terminal multiplexers.md index b7bbcd914a..2b7ba72802 100644 --- a/translated/tech/20190320 4 cool terminal multiplexers.md +++ b/published/20190320 4 cool terminal multiplexers.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11054-1.html) [#]: subject: (4 cool terminal multiplexers) [#]: via: (https://fedoramagazine.org/4-cool-terminal-multiplexers/) [#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) From d5347c26a3cd0f08f21ccdb9b95afa5a2deb6dba Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 13:36:58 +0800 Subject: [PATCH 266/336] PRF --- ...A beginner-s guide to Linux permissions.md | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/translated/tech/20190618 A beginner-s guide to Linux permissions.md b/translated/tech/20190618 A beginner-s guide to Linux permissions.md index 29154e0709..d89061eb52 100644 --- a/translated/tech/20190618 A beginner-s guide to Linux permissions.md +++ b/translated/tech/20190618 A beginner-s guide to Linux permissions.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (qfzy1233) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (A beginner's guide to Linux permissions) @@ -9,14 +9,16 @@ Linux 权限入门指南 ====== -Linux安全权限能够指定谁可以对文件或目录执行什么操作。 -![Hand putting a Linux file folder into a drawer][1] -与其他系统相比而言 Linux 系统的众多优点中最为主要一个便是Linux 系统有着更少的安全漏洞和被攻击的隐患。Linux无疑为用户提供了更为灵活和精细化的文件系统安全权限控制。这可能意味着Linux用户理解安全权限是至关重要的。虽然这并不一定是必要的,但是对于初学者来说,理解Linux权限的基本知识仍是一个明智之选。 +> Linux 安全权限能够指定谁可以对文件或目录执行什么操作。 + +![](https://img.linux.net.cn/data/attachment/album/201907/04/133751argz0pp7hy5gvv7q.jpg) + +与其他系统相比而言 Linux 系统的众多优点中最为主要一个便是 Linux 系统有着更少的安全漏洞和被攻击的隐患。Linux 无疑为用户提供了更为灵活和精细化的文件系统安全权限控制。这可能意味着 Linux 用户理解安全权限是至关重要的。虽然这并不一定是必要的,但是对于初学者来说,理解 Linux 权限的基本知识仍是一个明智之选。 ### 查看 Linux 安全权限 -在开始 Linux 权限的相关学习之前,假设我们新建了一个名为 **PermissionDemo**的目录。使用 **cd** 命令进入这个目录,然后使用 **ls -l** 命令查看 Linux 安全管理权限信息。如果你想以时间为序排列,加上 **-t** 选项 +在开始 Linux 权限的相关学习之前,假设我们新建了一个名为 `PermissionDemo` 的目录。使用 `cd` 命令进入这个目录,然后使用 `ls -l` 命令查看 Linux 安全管理权限信息。如果你想以时间为序排列,加上 `-t` 选项 ``` @@ -27,11 +29,11 @@ Linux安全权限能够指定谁可以对文件或目录执行什么操作。 ![No output from ls -l command][2] -要了解关于 **ls** 命令的更多信息,请通过在命令行中输入 **man ls** 来查看命令手册。 +要了解关于 `ls` 命令的更多信息,请通过在命令行中输入 `man ls` 来查看命令手册。 ![ls man page][3] - 现在,让我们创建两个名为 **cat.txt** 和 **dog.txt** 的空白文件;这一步使用 **touch** 命令将更为简便。然后继续使用 **mkdir** 命令创建一个名为 **Pets** 的空目录。我们可以再次使用**ls -l**命令查看这些新文件的权限。 +现在,让我们创建两个名为 `cat.txt` 和 `dog.txt` 的空白文件;这一步使用 `touch` 命令将更为简便。然后继续使用 `mkdir` 命令创建一个名为 `Pets` 的空目录。我们可以再次使用`ls -l`命令查看这些新文件的权限。 ![Creating new files and directory][4] @@ -39,42 +41,43 @@ Linux安全权限能够指定谁可以对文件或目录执行什么操作。 ### 谁拥有权限? -首先要注意的是 _who_ 具有访问文件/目录的权限。请注意下面红色框中突出显示的部分。第一列是指具有访问权限的 _user(用户)_ ,而第二列是指具有访问权限的 _group(组)_ 。 +首先要注意的是*谁*具有访问文件/目录的权限。请注意下面红色框中突出显示的部分。第一列是指具有访问权限的*用户*,而第二列是指具有访问权限的*组*。 ![Output from -ls command][5] -用户的类型主要有三种:**user**、**group**;和**other**(本质上既不是用户也不是组)。还有一个**all**,意思是几乎所有人。 +用户的类型主要有三种:用户、组和其他人(本质上既不是用户也不是组)。还有一个*全部*,意思是几乎所有人。 ![User types][6] -由于我们使用 **root** 作为当前用户,所以我们可以访问任何文件或目录,因为 **root** 是超级用户。然而,通常情况并非如此,您可能会被限定使用您的普通用户登录。所有的用户都存储在 **/etc/passwd** 文件中。 +由于我们使用 `root` 作为当前用户,所以我们可以访问任何文件或目录,因为 `root` 是超级用户。然而,通常情况并非如此,你可能会被限定使用你的普通用户登录。所有的用户都存储在 `/etc/passwd` 文件中。 ![/etc/passwd file][7] - “组“的相关信息保存在 **/etc/group** 文件中。 +“组“的相关信息保存在 `/etc/group` 文件中。 ![/etc/passwd file][8] ### 他们有什么权限? -我们需要注意的是 **ls -l** 命令输出结果的另一部分与执行权限有关。以上,我们查看了创建的dog.txt 和 cat.txt文件以及Pets目录的所有者和组权限都属于 **root** 用户。我们可以通过这一信息了解到不同用户组所拥有的相应权限,如下面的红色框中的标示。 +我们需要注意的是 `ls -l` 命令输出结果的另一部分与执行权限有关。以上,我们查看了创建的 `dog.txt` 和 `cat.txt` 文件以及 `Pets` 目录的所有者和组权限都属于 `root` 用户。我们可以通过这一信息了解到不同用户组所拥有的相应权限,如下面的红色框中的标示。 ![Enforcing permissions for different user ownership types][9] -我们可以把每一行分解成五部分。第一部分标志着它是文件还是目录;文件用 **-** (连字符)标记,目录用 **d** 来标记。接下来的三个部分分别是**user**、**group**和**other**的对应权限。最后一部分是[**access-control list**][10] (ACL)(访问控制列表)的标志,是记录着特定用户或者用户组对该文件的操作权限的列表。 +我们可以把每一行分解成五部分。第一部分标志着它是文件还是目录:文件用 `-`(连字符)标记,目录用 `d` 来标记。接下来的三个部分分别是用户、组和其他人的对应权限。最后一部分是[访问控制列表][10] (ACL)的标志,是记录着特定用户或者用户组对该文件的操作权限的列表。 ![Different Linux permissions][11] Linux 的权限级别可以用字母或数字标识。有三种权限类型: - * **read(读):** r or 4 - * **write(写):** w or 2 - * **executable(可执行):** x or 1 -(LCTT译注:原文此处对应的字母标示 **x** 误写为 **e** 已更正) + * 可读取:`r` 或 `4` + * 可写入:`w` 或 `2` + * 可执行:`x` 或 `1` + +(LCTT 译注:原文此处对应的字母标示 `x` 误写为 `e`,已更正) ![Privilege types][12] -每个字母符号(**r**、**w**或**x**)表示有该项权限,而 **-** 表示无该项权限。在下面的示例中,文件的所有者可读可写,用户组成员仅可读,其他人可读可执行。转换成数字表示法,对应的是645(如何计算,请参见下图的图示)。 +每个字母符号(`r`、`w` 或 `x`)表示有该项权限,而 `-` 表示无该项权限。在下面的示例中,文件的所有者可读可写,用户组成员仅可读,其他人可读可执行。转换成数字表示法,对应的是 `645`(如何计算,请参见下图的图示)。 ![Permission type example][13] @@ -93,7 +96,7 @@ via: https://opensource.com/article/19/6/understanding-linux-permissions 作者:[Bryant Son][a] 选题:[lujun9972][b] 译者:[qfzy1233](https://github.com/qfzy1233) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 8f7af84e7e381c1cfd9f8f7544d3eb44e73f2c03 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 13:38:38 +0800 Subject: [PATCH 267/336] PUB @qfzy1233 https://linux.cn/article-11056-1.html --- .../20190618 A beginner-s guide to Linux permissions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190618 A beginner-s guide to Linux permissions.md (98%) diff --git a/translated/tech/20190618 A beginner-s guide to Linux permissions.md b/published/20190618 A beginner-s guide to Linux permissions.md similarity index 98% rename from translated/tech/20190618 A beginner-s guide to Linux permissions.md rename to published/20190618 A beginner-s guide to Linux permissions.md index d89061eb52..a8206c14d4 100644 --- a/translated/tech/20190618 A beginner-s guide to Linux permissions.md +++ b/published/20190618 A beginner-s guide to Linux permissions.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (qfzy1233) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11056-1.html) [#]: subject: (A beginner's guide to Linux permissions) [#]: via: (https://opensource.com/article/19/6/understanding-linux-permissions) [#]: author: (Bryant Son https://opensource.com/users/brson/users/greg-p/users/tj) From 81f526be0b2fd452f561966a40356640eb372522 Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 4 Jul 2019 14:56:16 +0800 Subject: [PATCH 268/336] =?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 --- ...0702 Jupyter and data science in Fedora.md | 246 ------------------ ...0702 Jupyter and data science in Fedora.md | 244 +++++++++++++++++ 2 files changed, 244 insertions(+), 246 deletions(-) delete mode 100644 sources/tech/20190702 Jupyter and data science in Fedora.md create mode 100644 translated/tech/20190702 Jupyter and data science in Fedora.md diff --git a/sources/tech/20190702 Jupyter and data science in Fedora.md b/sources/tech/20190702 Jupyter and data science in Fedora.md deleted file mode 100644 index a80c3b462f..0000000000 --- a/sources/tech/20190702 Jupyter and data science in Fedora.md +++ /dev/null @@ -1,246 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Jupyter and data science in Fedora) -[#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) -[#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) - -Jupyter and data science in Fedora -====== - -![][1] - -In the past, kings and leaders used oracles and magicians to help them predict the future — or at least get some good advice due to their supposed power to perceive hidden information. Nowadays, we live in a society obsessed with quantifying everything. So we have data scientists to do this job. - -Data scientists use statistical models, numerical techniques and advanced algorithms that didn’t come from statistical disciplines, along with the data that exist on databases, to find, to infer, to predict data that doesn’t exist yet. Sometimes this data is about the future. That is why we do a lot of predictive analytics and prescriptive analytics. - -Here are some questions to which data scientists help find answers: - - 1. Who are the students with high propensity to abandon the class? For each one, what are the reasons for leaving? - 2. Which house has a price above or below the fair price? What is the fair price for a certain house? - 3. What are the hidden groups that my clients classify themselves? - 4. Which future problems this premature child will develop? - 5. How many calls will I get in my call center tomorrow 11:43 AM? - 6. My bank should or should not lend money to this customer? - - - -Note how the answer to all these question is not sitting in any database waiting to be queried. These are all data that still doesn’t exist and has to be calculated. That is part of the job we data scientists do. - -Throughout this article you’ll learn how to prepare a Fedora system as a Data Scientist’s development environment and also a production system. Most of the basic software is RPM-packaged, but the most advanced parts can only be installed, nowadays, with Python’s _pip_ tool. - -### Jupyter — the IDE - -Most modern data scientists use Python. And an important part of their work is EDA (exploratory data analysis). EDA is a manual and interactive process that retrieves data, explores its features, searches for correlations, and uses plotted graphics to visualize and understand how data is shaped and prototypes predictive models. - -Jupyter is a web application perfect for this task. Jupyter works with Notebooks, documents that mix rich text including beautifully rendered math formulas (thanks to [mathjax][2]), blocks of code and code output, including graphics. - -Notebook files have extension _.ipynb_, which means Interactive Python Notebook. - -#### Setting up and running Jupyter - -First, install essential packages for Jupyter ([using][3] _[sudo][3]_): - -``` -$ sudo dnf install python3-notebook mathjax sscg -``` - -You might want to install additional and optional Python modules commonly used by data scientists: - -``` -$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk -``` - -Set a password to log into Notebook web interface and avoid those long tokens. Run the following command anywhere on your terminal: - -``` -$ mkdir -p $HOME/.jupyter -$ jupyter notebook password -``` - -Now, type a password for yourself. This will create the file _$HOME/.jupyter/jupyter_notebook_config.json_ with your encrypted password. - -Next, prepare for SSLby generating a self-signed HTTPS certificate for Jupyter’s web server: - -``` -$ cd $HOME/.jupyter; sscg -``` - -Finish configuring Jupyter by editing your _$HOME/.jupyter/jupyter_notebook_config.json_ file. Make it look like this: - -``` -{ - "NotebookApp": { - "password": "sha1:abf58...87b", - "ip": "*", - "allow_origin": "*", - "allow_remote_access": true, - "open_browser": false, - "websocket_compression_options": {}, - "certfile": "/home/aviram/.jupyter/service.pem", - "keyfile": "/home/aviram/.jupyter/service-key.pem", - "notebook_dir": "/home/aviram/Notebooks" - } -} -``` - -The parts in red must be changed to match your folders. Parts in blue were already there after you created your password. Parts in green are the crypto-related files generated by _sscg_. - -Create a folder for your notebook files, as configured in the _notebook_dir_ setting above: - -``` -$ mkdir $HOME/Notebooks -``` - -Now you are all set. Just run Jupyter Notebook from anywhere on your system by typing: - -``` -$ jupyter notebook -``` - -Or add this line to your _$HOME/.bashrc_ file to create a shortcut command called _jn_: - -``` -alias jn='jupyter notebook' -``` - -After running the command _jn_, access __ from any browser on the network to see the Jupyter user interface. You’ll need to use the password you set up earlier. Start typing some Python code and markup text. This is how it looks: - -![Jupyter with a simple notebook][4] - -In addition to the IPython environment, you’ll also get a web-based Unix terminal provided by _terminado_. Some people might find this useful, while others find this insecure. You can disable this feature in the config file. - -### JupyterLab — the next generation of Jupyter - -JupyterLab is the next generation of Jupyter, with a better interface and more control over your workspace. It’s currently not RPM-packaged for Fedora at the time of writing, but you can use _pip_ to get it installed easily: - -``` -$ pip3 install jupyterlab --user -$ jupyter serverextension enable --py jupyterlab -``` - -Then run your regular _jupiter notebook_ command or _jn_ alias. JupyterLab will be accessible from __**. - -### Tools used by data scientists - -In this section you can get to know some of these tools, and how to install them. Unless noted otherwise, the module is already packaged for Fedora and was installed as prerequisites for previous components. - -#### **Numpy** - -_Numpy_ is an advanced and C-optimized math library designed to work with large in-memory datasets. It provides advanced multidimensional matrix support and operations, including math functions as log(), exp(), trigonometry etc. - -#### Pandas - -In this author’s opinion, Python is THE platform for data science mostly because of Pandas. Built on top of numpy, Pandas makes easy the work of preparing and displaying data. You can think of it as a no-UI spreadsheet, but ready to work with much larger datasets. Pandas helps with data retrieval from a SQL database, CSV or other types of files, columns and rows manipulation, data filtering and, to some extent, data visualization with matplotlib. - -#### Matplotlib - -Matplotlib is a library to plot 2D and 3D data. It has great support for notations in graphics, labels and overlays - -![matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm][5] - -#### Seaborn - -Built on top of matplotlib, Seaborn’s graphics are optimized for a more statistical comprehension of data. It automatically displays regression lines or Gauss curve approximations of plotted data. - -![Linear regression visualised with SeaBorn][6] - -#### [StatsModels][7] - -StatsModels provides algorithms for statistical and econometrics data analysis such as linear and logistic regressions. Statsmodel is also home for the classical family of [time series algorithms][8] known as ARIMA. - -![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] - -#### Scikit-learn - -The central piece of the machine-learning ecosystem, [scikit][10] provides predictor algorithms for [regression][11] (Elasticnet, Gradient Boosting, Random Forest etc) and [classification][11] and clustering (K-means, DBSCAN etc). It features a very well designed API. Scikit also has classes for advanced data manipulation, dataset split into train and test parts, dimensionality reduction and data pipeline preparation. - -#### XGBoost - -XGBoost is the most advanced regressor and classifier used nowadays. It’s not part of scikit-learn, but it adheres to scikit’s API. [XGBoost][12] is not packaged for Fedora and should be installed with pip. [XGBoost can be accelerated with your nVidia GPU][13], but not through its _pip_ package. You can get this if you compile it yourself against CUDA. Get it with: - -``` -$ pip3 install xgboost --user -``` - -#### Imbalanced Learn - -[imbalanced-learn][14] provides ways for under-sampling and over-sampling data. It is useful in fraud detection scenarios where known fraud data is very small when compared to non-fraud data. In these cases data augmentation is needed for the known fraud data, to make it more relevant to train predictors. Install it with _pip_: - -``` -$ pip3 install imblearn --user -``` - -#### NLTK - -The [Natural Language toolkit][15], or NLTK, helps you work with human language data for the purpose of building chatbots (just to cite an example). - -#### SHAP - -Machine learning algorithms are very good on predicting, but aren’t good at explaining why they made a prediction. [SHAP][16] solves that, by analyzing trained models. - -![Where SHAP fits into the data analysis process][17] - -Install it with _pip_: - -``` -$ pip3 install shap --user -``` - -#### [Keras][18] - -Keras is a library for deep learning and neural networks. Install it with _pip_: - -``` -$ sudo dnf install python3-h5py -$ pip3 install keras --user -``` - -#### [TensorFlow][19] - -TensorFlow is a popular neural networks builder. Install it with _pip_: - -``` -$ pip3 install tensorflow --user -``` - -* * * - -_Photo courtesy of [FolsomNatural][20] on [Flickr][21] (CC BY-SA 2.0)._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ - -作者:[Avi Alkalay][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/aviram/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/jupyter-816x345.jpg -[2]: http://mathjax.org -[3]: https://fedoramagazine.org/howto-use-sudo/ -[4]: https://avi.alkalay.net/articlefiles/2018/07/jupyter-fedora.png -[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/gradient-descent-cost-function-optimization.png -[6]: https://seaborn.pydata.org/_images/regression_marginals.png -[7]: https://www.statsmodels.org/ -[8]: https://www.statsmodels.org/stable/examples/index.html#stats -[9]: https://fedoramagazine.org/wp-content/uploads/2019/06/time-series.png -[10]: https://scikit-learn.org/stable/ -[11]: https://scikit-learn.org/stable/supervised_learning.html#supervised-learning -[12]: https://xgboost.ai -[13]: https://xgboost.readthedocs.io/en/latest/gpu/index.html -[14]: https://imbalanced-learn.readthedocs.io -[15]: https://www.nltk.org -[16]: https://github.com/slundberg/shap -[17]: https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_diagram.png -[18]: https://keras.io -[19]: https://www.tensorflow.org -[20]: https://www.flickr.com/photos/87249144@N08/ -[21]: https://www.flickr.com/photos/87249144@N08/45871861611/ diff --git a/translated/tech/20190702 Jupyter and data science in Fedora.md b/translated/tech/20190702 Jupyter and data science in Fedora.md new file mode 100644 index 0000000000..43e2a498fe --- /dev/null +++ b/translated/tech/20190702 Jupyter and data science in Fedora.md @@ -0,0 +1,244 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Jupyter and data science in Fedora) +[#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) +[#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) + +在 Fedora 上搭建 Jupyter 和数据科学环境 +====== + +![][1] + +在过去,神谕和魔法师被认为拥有发现奥秘的力量,国王和统治者们会借助他们预测未来,或者至少是听取一些建议。如今我们生活在一个痴迷于将一切事情量化的社会里,这份工作就交给数据科学家了。 + +数据科学家通过使用统计模型、数值分析,以及统计学之外的高级算法,结合数据库里已经存在的数据,去发掘、推断和预测尚不存在的数据(有时是关于未来的数据)。这就是为什么我们要做这么多的预测分析和规划分析。 + +下面是一些可以借助数据科学家回答的问题: + + 1. 哪些学生有旷课倾向?每个人旷课的原因分别是什么? + 2. 哪栋房子的售价比合理价格要高或者低?一栋房子的合理价格是多少? + 3. 如何将我们的客户按照潜在的特质进行分组? + 4. 这个孩子的早熟可能会在未来引发什么问题? + 5. 我们的呼叫中心在明天早上 11 点 43 分会接收到多少次呼叫? + 6. 我们的银行是否应该向这位客户发放贷款? + +请注意,这些问题的答案是在任何数据库里都查询不到的,因为它们尚不存在,需要被计算出来才行。这就是我们数据科学家从事的工作。 + +在这篇文章中你会学习如何将 Fedora 系统打造成数据科学家的开发环境和生产系统。其中大多数基本软件都有 RPM 软件包,但是最先进的组件目前只能通过 Python 的 **pip** 工具安装。 + +### Jupyter IDE + +大多数现代数据科学家使用 Python 工作。他们工作中很重要的一部分是 探索性数据分析Exploratory Data Analysis(EDA)。EDA 是一种手动进行的、交互性的过程,包括提取数据、探索数据特征、寻找相关性、通过绘制图形进行数据可视化并理解数据的分布特征,以及实现简易的预测模型。 + +Jupyter 是能够完美胜任该工作的一个 web 应用。Jupyter 使用的 Notebook 文件支持丰富的文本,包括渲染精美的数学公式(得益于 [mathjax][2])、代码块和代码输出(包括图形输出)。 + +Notebook 文件的后缀是 **.ipynb**,意思是“交互式 Python Notebook”。 + +#### 搭建并运行 Jupyter + +首先,[使用 sudo][3] 安装 Jupyter 核心软件包: + +``` +$ sudo dnf install python3-notebook mathjax sscg +``` +你或许需要安装数据科学家常用的一些附加可选模块: + +``` +$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk +``` + +设置一个用来登陆 Notebook 的 web 界面的密码,从而避免使用冗长的令牌。你可以在终端里任何一个位置运行下面的命令: + +``` +$ mkdir -p $HOME/.jupyter +$ jupyter notebook password +``` + +然后输入你的密码,这时会自动创建 ** $HOME/.jupyter/jupyter_notebook_config.json ** 这个文件,包含了你的密码的加密后版本。 + +接下来,通过使用 SSLby 为 Jupyter 的 web 服务器生成一个自签名的 HTTPS 证书: + +``` +$ cd $HOME/.jupyter; sscg +``` + +配置 Jupyter 的最后一步是编辑 **$HOME/.jupyter/jupyter_notebook_config.json** 这个文件。按照下面的模版编辑该文件: + +``` +{ + "NotebookApp": { + "password": "sha1:abf58...87b", + "ip": "*", + "allow_origin": "*", + "allow_remote_access": true, + "open_browser": false, + "websocket_compression_options": {}, + "certfile": "/home/aviram/.jupyter/service.pem", + "keyfile": "/home/aviram/.jupyter/service-key.pem", + "notebook_dir": "/home/aviram/Notebooks" + } +} +``` + +红色的部分应该替换为你的文件夹。蓝色的部分在你创建完密码之后就已经自动生成了。绿色的部分是 **sscg** 生成的和加密相关的文件。 + +接下来创建一个用来存放 notebook 文件的文件夹,应该和上面配置里 **notebook_dir** 一致: + +``` +$ mkdir $HOME/Notebooks +``` + +你已经完成了配置。现在可以在系统里的任何一个地方通过以下命令启动 Jupyter Notebook: + +``` +$ jupyter notebook +``` + +或者是将下面这行代码添加到 **$HOME/.bashrc** 文件,创建一个叫做 **jn** 的快捷命令: + +``` +alias jn='jupyter notebook' +``` + +运行 **jn** 命令之后,你可以通过网络内部的任何一个浏览器访问 **** (LCTT 译注:将域名替换为服务器的域名),就可以看到 Jupyter 的用户界面了,需要使用前面设置的密码登录。你可以尝试键入一些 Python 代码和标记文本,看起来会像下面这样: + +![Jupyter with a simple notebook][4] + +除了 IPython 环境,安装过程还会生成一个由 **terminado** 提供的基于 web 的 Unix 终端。有人觉得这很实用,也有人觉得这样不是很安全。你可以在配置文件里禁用这个功能。 + +### JupyterLab — 下一代 Jupyter + +JupyterLab 是下一代的 Jupyter,拥有更好的用户界面和对工作空间更强的操控性。在写这篇文章的时候 JupyterLab 还没有可用的 RPM 软件包,但是你可以使用 **pip** 轻松完成安装: + +``` +$ pip3 install jupyterlab --user +$ jupyter serverextension enable --py jupyterlab +``` + +然后运行 **jupiter notebook** 命令或者 **jn** 快捷命令。访问 **** LCTT 译注:将域名替换为服务器的域名)就可以使用 JupyterLab 了。 + +### 数据科学家使用的工具 + +在下面这一节里,你将会了解到数据科学家使用的一些工具及其安装方法。除非另作说明,这些工具应该已经有 Fedora 软件包版本,并且已经作为前面组件所需要的软件包而被安装了。 + +#### **Numpy** + +**Numpy** 是一个针对 C 语言优化过的高级库,用来处理内存里的大型数据集。它支持高级多维矩阵及其运算,并且包含了 log()、exp()、三角函数等数学函数。 + +#### Pandas + +在我看来,正是 Pandas 成就了 Python 作为数据科学首选平台的地位。Pandas 构建在 numpy 之上,可以让数据准备和数据呈现工作变得简单很多。你可以把它想象成一个没有用户界面的电子表格程序,但是能够处理的数据集要大得多。Pandas 支持从 SQL 数据库或者 CSV 等格式的文件中提取数据、按列或者按行进行操作、数据筛选,以及通过 matplotlib 实现数据可视化的一部分功能。 + +#### Matplotlib + +Matplotlib 是一个用来绘制 2D 和 3D 数据图像的库,在图象注解、标签和叠加层方面都提供了相当不错的支持。 + +![matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm][5] + +#### Seaborn + +Seaborn 构建在 matplotlib 之上,它的绘图功能经过了优化,更加适合数据的统计学研究,比如说可以自动显示所绘制数据的近似回归线或者正态分布曲线。 + +![Linear regression visualised with SeaBorn][6] + +#### [StatsModels][7] + +StatsModels 为统计学和经济计量学的数据分析问题(例如线形回归和逻辑回归)提供算法支持,同时提供经典的 [时间序列算法][8] 家族:ARIMA。 + +![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] + +#### Scikit-learn + +作为机器学习生态系统的核心部件,[scikit][10] 为不同类型的问题提供预测算法,包括 [回归问题][11](算法包括 Elasticnet、Gradient Boosting、随机森林等等)、[分类问题][11] 和聚类问题(算法包括 K-means 和 DBSCAN 等等),并且拥有设计精良的 API。Scikit 还定义了一些专门的 Python 类,用来支持数据操作的高级技巧,比如将数据集拆分为训练集和测试集、降维算法、数据准备管道流程等等。 + +#### XGBoost + +XGBoost 是目前可以使用的最先进的回归器和分类器。它并不是 scikit-learn 的一部分,但是却遵循了 scikit 的 API。[XGBoost][12] 并没有针对 Fedora 的软件包,但可以使用 pip 安装。[使用英伟达显卡可以提升 XGBoost 算法的性能][13],但是这并不能通过 **pip** 软件包来实现。如果你希望使用这个功能,可以针对 CUDA (LCTT 译注:英伟达开发的并行计算平台)自己进行编译。使用下面这个命令安装 XGBoost: + +``` +$ pip3 install xgboost --user +``` + +#### Imbalanced Learn + +[imbalanced-learn][14] 是一个解决数据欠采样和过采样问题的工具。比如在反欺诈问题中,欺诈数据相对于正常数据来说数量非常小,这个时候就需要对欺诈数据进行数据增强,从而让预测器能够更好地适应数据集。使用 **pip** 安装: + +``` +$ pip3 install imblearn --user +``` + +#### NLTK + +[Natural Language toolkit][15](简称 NLTK)是一个处理人类语言数据的工具,举例来说,它可以被用来开发一个聊天机器人。 + + +#### SHAP + +机器学习算法拥有强大的预测能力,但并不能够很好地解释为什么做出这样或那样的预测。[SHAP][16] 可以通过分析训练后的模型来解决这个问题。 + +![Where SHAP fits into the data analysis process][17] + +使用 **pip** 安装: + +``` +$ pip3 install shap --user +``` + +#### [Keras][18] + +Keras 是一个深度学习和神经网络模型的库,使用 **pip** 安装: + +``` +$ sudo dnf install python3-h5py +$ pip3 install keras --user +``` + +#### [TensorFlow][19] + +TensorFlow 是一个非常流行的神经网络模型搭建工具,使用 **pip** 安装: + +``` +$ pip3 install tensorflow --user +``` + +* * * + +_Photo courtesy of [FolsomNatural][20] on [Flickr][21] (CC BY-SA 2.0)._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ + +作者:[Avi Alkalay][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/aviram/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/jupyter-816x345.jpg +[2]: http://mathjax.org +[3]: https://fedoramagazine.org/howto-use-sudo/ +[4]: https://avi.alkalay.net/articlefiles/2018/07/jupyter-fedora.png +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/gradient-descent-cost-function-optimization.png +[6]: https://seaborn.pydata.org/_images/regression_marginals.png +[7]: https://www.statsmodels.org/ +[8]: https://www.statsmodels.org/stable/examples/index.html#stats +[9]: https://fedoramagazine.org/wp-content/uploads/2019/06/time-series.png +[10]: https://scikit-learn.org/stable/ +[11]: https://scikit-learn.org/stable/supervised_learning.html#supervised-learning +[12]: https://xgboost.ai +[13]: https://xgboost.readthedocs.io/en/latest/gpu/index.html +[14]: https://imbalanced-learn.readthedocs.io +[15]: https://www.nltk.org +[16]: https://github.com/slundberg/shap +[17]: https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_diagram.png +[18]: https://keras.io +[19]: https://www.tensorflow.org +[20]: https://www.flickr.com/photos/87249144@N08/ +[21]: https://www.flickr.com/photos/87249144@N08/45871861611/ From dbc42f83f99989785e017f0826d42f8a73a1d0da Mon Sep 17 00:00:00 2001 From: Yuping Zhang Date: Thu, 4 Jul 2019 16:56:50 +0800 Subject: [PATCH 269/336] Translating by PandaWizard --- sources/talk/20191110 What is DevSecOps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20191110 What is DevSecOps.md b/sources/talk/20191110 What is DevSecOps.md index 007f8f0c76..693a583a6b 100644 --- a/sources/talk/20191110 What is DevSecOps.md +++ b/sources/talk/20191110 What is DevSecOps.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (PandaWizard ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 15f33195f2459bbeb69609f567b3479592425304 Mon Sep 17 00:00:00 2001 From: "qfzy1233@163.com" Date: Thu, 4 Jul 2019 16:59:50 +0800 Subject: [PATCH 270/336] Update 20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md --- ...Even More Awesome With Zorin 15 Release.md | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index f5342383bc..d2201433fe 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -7,44 +7,45 @@ [#]: via: (https://itsfoss.com/zorin-os-15-release/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -Zorin OS Becomes Even More Awesome With Zorin 15 Release +随着 Zorin 15 的发布,Zorin OS 变得更为强大 ====== -Zorin OS has always been known as one of the [beginner-focused Linux distros][1] out there. Yes, it may not be the most popular – but it sure is a good distribution specially for Windows migrants. +长久以来 Zorin OS 一直在 [初学者适用的Linux发行版排行][1] 中占有一席之地。的确,它可能不是最受欢迎的,但是对于从 Windows 阵营转向 Linux 的用户而言,它一定是最好的一个发行版。 -A few years back, I remember, a friend of mine always insisted me to install [Zorin OS][2]. Personally, I didn’t like the UI back then. But, now that Zorin OS 15 is here – I have more reasons to get it installed as my primary OS. +我还记得,在几年前,我的一位朋友一直坚持让我安装[Zorin OS][2]。就我个人而言,当时我并不喜欢它的 UI 风格。但是,现如今 Zorin OS 15 发布了,这也让我有了更多的理由安装并将它作为我日常的操作系统。 +不要担心,在这篇文章里,我会向你介绍你所需要了解的一切。 Fret not, in this article, we’ll talk about everything that you need to know. -### New Features in Zorin 15 +### Zorin 15 中的新特性 -Let’s see the major changes in the latest release of Zorin. Zorin 15 is based on Ubuntu 18.04.2 and thus it brings the performance improvement under the hood. Other than that, there are several UI (User Interface) improvements. +让我们来看一下最新版本的 Zorin 有哪些主要的改变。Zorin 15 以 Ubuntu 18.04.2 为底层,因此带来了许多性能上的提升。除此之外,也有许多的 UI (用户界面)得到了改进。 #### Zorin Connect ![Zorin Connect][3] -Zorin OS 15’s main highlight is – Zorin Connect. If you have an Android device, you are in for a treat. Similar to [PushBullet][4], [Zorin Connect][5] integrates your phone with the desktop experience. +Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的是安卓设备,那你一定会喜欢这一功能。类似于[PushBullet][4](LCTT译注:PushBullet-子弹推送,一款跨平台推送工具),[Zorin Connect][5]会提升你的手机和桌面一体化的体验。 -You get to sync your smartphone’s notifications on your desktop while also being able to reply to it. Heck, you can also reply to the SMS messages and view those conversations. +你可以在桌面上同步智能手机的通知,同时还可以回复它。最要命的是,你甚至可以回复短信并查看这部分对话。 -In addition to these, you get the following abilities: +总的来说,你可以体验到以下功能: - * Share files and web links between devices - * Use your phone as a remote control for your computer - * Control media playback on your computer from your phone, and pause playback automatically when a phone call arrives + * 在设备间分享文件或链接 + * 将你的手机作为电脑的遥控器 + * 使用手机控制电脑上媒体的播放,并且当有来电接入时自动停止播放 -As mentioned in their [official announcement post][6], the data transmission will be on your local network and no data will be transmitted to the cloud. To access Zorin Connect, navigate your way through – Zorin menu > System Tools > Zorin Connect. +正如他们在[官方公告][6]中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到 – Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。 -[Get ZORIN CONNECT ON PLAY STORE][5] +[在手机应用商店中获取 ZORIN CONNECT][5] -#### New Desktop Theme (with dark mode!) +#### 新的桌面主题(包含夜间模式!) -![Zorin Dark Mode][7] +![Zorin 夜间模式][7] -I’m all in when someone mentions “Dark Mode” or “Dark Theme”. For me, this is the best thing that comes baked in with Zorin OS 15. +一提到 “夜间模式” 时我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 [][8] @@ -54,7 +55,7 @@ It’s so pleasing to my eyes when I enable the dark mode on anything, you with Not just a dark theme, the UI is a lot cleaner and intuitive with subtle new animations. You can find all the settings from the Zorin Appearance app built-in. -#### Adaptive Background & Night Light +#### 自适应背景调整 & Dark Light You get an option to let the background adapt according to the brightness of the environment every hour of the day. Also, you can find the night mode if you don’t want the blue light to stress your eyes. @@ -70,7 +71,7 @@ Yes! Other major changes include the support for Flatpak, a touch layout for con If you want the detailed list of changes along with the minor improvements, you can follow the [announcement post][6]. If you are already a Zorin user, you would notice that they have refreshed their website with a new look as well. -### Download Zorin OS 15 +### 下载 Zorin OS 15 **Note** : _Direct upgrades from Zorin OS 12 to 15 – without needing to re-install the operating system – will be available later this year._ From 529abd5c64c3a50d6458fa2e5b58da36e900802b Mon Sep 17 00:00:00 2001 From: Yuping Zhang Date: Thu, 4 Jul 2019 17:02:15 +0800 Subject: [PATCH 271/336] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/talk/20191110 What is DevSecOps.md | 85 ------------------- translated/talk/20191110 What is DevSecOps.md | 85 +++++++++++++++++++ 2 files changed, 85 insertions(+), 85 deletions(-) delete mode 100644 sources/talk/20191110 What is DevSecOps.md create mode 100644 translated/talk/20191110 What is DevSecOps.md diff --git a/sources/talk/20191110 What is DevSecOps.md b/sources/talk/20191110 What is DevSecOps.md deleted file mode 100644 index 693a583a6b..0000000000 --- a/sources/talk/20191110 What is DevSecOps.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (PandaWizard ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is DevSecOps?) -[#]: via: (https://opensource.com/article/19/1/what-devsecops) -[#]: author: (Brett Hunoldt https://opensource.com/users/bretthunoldtcom) - -What is DevSecOps? -====== -The journey to DevSecOps begins with empowerment, enablement, and education. Here's how to get started. -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/devop.png?itok=Yicb2nnZ) - -> “DevSecOps enables organizations to deliver inherently secure software at DevOps speed.” -Stefan Streichsbier - -DevSecOps as a practice or an art form is an evolution on the concept of DevOps. To better understand DevSecOps, you should first have an understanding of what DevOps means. - -DevOps was born from merging the practices of development and operations, removing the silos, aligning the focus, and improving efficiency and performance of both the teams and the product. A new synergy was formed, with DevOps focused on building products and services that are easy to maintain and that automate typical operations functions. - -Security is a common silo in many organizations. Security’s core focus is protecting the organization, and sometimes this means creating barriers or policies that slow down the execution of new services or products to ensure that everything is well understood and done safely and that nothing introduces unnecessary risk to the organization. - -**[[Download the Getting started with DevSecOps guide]][1]** - -Because of the distinct nature of the security silo and the friction it can introduce, development and operations sometimes bypass or work around security to meet their objectives. At some firms, the silo creates an expectation that security is entirely the responsibility of the security team and it is up to them to figure out what security defects or issues may be introduced as a result of a product. - -DevSecOps looks at merging the security discipline within DevOps. By enhancing or building security into the developer and/or operational role, or including a security role within the product engineering team, security naturally finds itself in the product by design. - -This allows companies to release new products and updates more quickly and with full confidence that security is embedded into the product. - -### Where does rugged software fit into DevSecOps? - -Building rugged software is more an aspect of the DevOps culture than a distinct practice, and it complements and enhances a DevSecOps practice. Think of a rugged product as something that has been battle-hardened through experimentation or experience. - -It’s important to note that rugged software is not necessarily 100% secure (although it may have been at some point in time). However, it has been designed to handle most of what is thrown at it. - -The key tenets of a rugged software practice are fostering competition, experimentation, controlled failure, and cooperation. - -### How do you get started in DevSecOps? - -Gettings started with DevSecOps involves shifting security requirements and execution to the earliest possible stage in the development process. It ultimately creates a shift in culture where security becomes everyone’s responsibility, not only the security team’s. - -You may have heard teams talking about a "shift left." If you flatten the development pipeline into a horizontal line to include the key stages of the product evolution—from initiation to design, building, testing, and finally to operating—the goal of a security is to be involved as early as possible. This allows the risks to be better evaluated, socialized, and mitigated by design. The "shift-left" mentality is about moving this engagement far left in this pipeline. - -This journey begins with three key elements: - - * empowerment - * enablement - * education - - - -Empowerment, in my view, is about releasing control and allowing teams to make independent decisions without fear of failure or repercussion (within reason). The only caveat in this process is that information is critical to making informed decisions (more on that below). - -To achieve empowerment, business and executive support (which can be created through internal sales, presentations, and establishing metrics to show the return on this investment) is critical to break down the historic barriers and siloed teams. Integrating security into the development and operations teams and increasing both communication and transparency can help you begin the journey to DevSecOps. - -This integration and mobilization allows teams to focus on a single outcome: Building a product for which they share responsibility and collaborate on development and security in a reliable way. This will take you most of the way towards empowerment. It places the shared responsibility for the product with the teams building it and ensures that any part of the product can be taken apart and maintain its security. - -Enablement involves placing the right tools and resources in the hands of the teams. It’s about creating a culture of knowledge-sharing through forums, wikis, and informal gatherings. - -Creating a culture that focuses on automation and the concept that repetitive tasks should be coded will likely reduce operational overhead and strengthen security. This scenario is about more than providing knowledge; it is about making this knowledge highly accessible through multiple channels and mediums (which are enabled through tools) so that it can be consumed and shared in whatever way teams or individuals prefer. One medium might work best when team members are coding and another when they are on the road. Make the tools accessible and simple and let the team play with them. - -Different DevSecOp teams will have different preferences, so allow them to be independent whenever possible. This is a delicate balancing exercise because you do want economies of scale and the ability to share among products. Collaboration and involvement in the selection and renewal of these tools will help lower the barriers of adoption. - -Finally, and perhaps most importantly, DevSecOps is about training and awareness building. Meetups, social gatherings, or formal presentations within the organization are great ways for peers to teach and share their learnings. Sometimes these highlight shared challenges, concerns, or risks others may not have considered. Sharing and teaching are also effective ways to learn and to mentor teams. - -In my experience, each organization's culture is unique, so you can’t take a “one-size-fits-all” approach. Reach out to your teams and find out what tools they want to use. Test different forums and gatherings and see what works best for your culture. Seek feedback and ask the teams what is working, what they like, and why. Adapt and learn, be positive, and never stop trying, and you’ll almost always succeed. - -[Download the Getting started with DevSecOps guide][1] - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/1/what-devsecops - -作者:[Brett Hunoldt][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/bretthunoldtcom -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/downloads/devsecops diff --git a/translated/talk/20191110 What is DevSecOps.md b/translated/talk/20191110 What is DevSecOps.md new file mode 100644 index 0000000000..8d82d68cc7 --- /dev/null +++ b/translated/talk/20191110 What is DevSecOps.md @@ -0,0 +1,85 @@ +[#]: collector: (lujun9972) +[#]: translator: (PandaWizard) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What is DevSecOps?) +[#]: via: (https://opensource.com/article/19/1/what-devsecops) +[#]: author: (Brett Hunoldt https://opensource.com/users/bretthunoldtcom) + +什么是 DevSecOps? +====== +DevSecOps 的实践之旅开始于 DevSecOps 授权,启用和培养。下面就介绍如何开始学习使用 DevSecOps。 +![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/devop.png?itok=Yicb2nnZ) + +> Stephen Streichsbier 说过: DevSecOps 使得组织可以用 DevOps 的速度发布内在安全的软件。 + +DevSecOps 是一场关于 DevOps 概念实践或艺术形式的变革。为了更好理解 DevSecOps,你应该首先理解 DevOps 的含义。 + +DevOps 起源于通过合并开发和运维实践,消除隔离,统一关注点,提升团队和产品的效率和性能。它是一种注重构建容易维持和易于平常自动运营维护产品和服务的新型协作方式。 + +安全在很多团队中都是常见的隔离点。安全的核心关注点是保护团队,而有时这也意味着生成延缓新服务或是新产品发布的障碍或是策略,用于保障任何事都能被很好的理解和安全的执行,并且没有给团队带来不必要的风险。 + +**[[点击下载 DevSecOps 的引导手册]][1]** + +因为安全方面的明显特征和它可能带来的摩擦,开发和运维有时会避开或是满足客观的安全要求。在一些公司,这种隔离形成了一种产品安全完全是安全团队责任的期望,并取决于安全团队去寻找产品的安全缺陷或是可能带来的问题。 + +DevSecOps 看起来是通过给开发或是运维角色加强或是建立安全意识,或是在产品团队中引入一个安全工程师角色,在产品设计中找到安全问题,从而把安全要求汇聚在 Devops 中。 + +这样使得公司能更快发布和更新产品,并且充分相信安全已经嵌入产品中。 + +### 坚固的软件哪里适用 DevSecOps? + +建造坚固的软件是 DevOps 文化的一个层面而不是一个特别的实践,它完善和增强了 DevSecops 的实践。想想一款坚固的软件就像是某些经历过残酷战斗过程的事物。 + +有必要指出坚固的软件并不是 100% 安全可靠的(虽然它可能最终是在某些方面)。然而,它被设计成可以处理大部分被抛过来的问题。 + +践行坚固软件最重要的原则是促进竞争,实践,可控的失败与合作。 + +### 你如何开始学习 DevSecOps ? + +开始实践 DevSecOps 涉及提升安全需求和在开发过程中最早期可能的阶段实践。它最终在公司文化上提升了安全的重要性,使得安全成为所有人的责任,而并不只是安全团队的责任。 + +你可能在团队中听说过“左上升”这个词,如果你把开发周期包括产品变革的的关键时期线放平在一条横线上,从初始化到设计,建造,测试以及最终的运行。安全的目的就是今早的参与进来。这使得风险可以在设计中能更好的评估、交流和减轻。“左提升”的含义是指促使安全能在开发周期线上更往左走。 + +这篇入门文章有三个关键要素: + + * 授权 + * 启用 + * 培养 + + + +授权,在我看来,是关于释放控制权以及使得团队做出独立决定而不用害怕失败或影响(理性分析)。这个过程的唯一告诫信息就是要严格的做出明智的决定(不要比这更低要求)。 + +为了实现授权,商务和行政支持(通过内部销售,展示来建立,通过建立矩阵来 展示这项投资的回报)是打破历史障碍和分割的团队的关键。合并安全人员到开发和运维团队中,提升交流和透明度透明度有助于 DevSecOps 的开始之旅。 + +这次整合和移动使得团队只关注单一的结果:打造一个他们共同负责的产品,让开发和安全人员相互依赖合作。这将引领你们共同走向授权。这是产品研发团队的共同责任,并保证每个可分割的产品都保持其安全性。 + +启用涉及正确的使用掌握在团队手中的工具和资源。这是准备建立一种通过论坛、维基、信息聚合的知识分享文化。 + +打造一种注重自动化、重复任务应该编码来尽可能减少以后的操作并增强安全性。这种场景不仅仅是提供知识,而是让这种知识能够通过多种渠道和媒介(通过某些工具)可获取,以便它可以被团队或是个人以他喜欢的方式去消化和分享。一种工具可以更好的实现当团队成员正在编码而另一组成员正在来的路上。让工具简单可用和让团队可以使用它们。 + +不同的 DevSecOps 团队有不同的喜好,因此允许它们尽可能的保持独立。这是一种微笑平衡的练习,因为你真的很想在经济规模和能力中分享产品。在选择中协作参与并更新工具方法有助于减少使用中的障碍。 + +最后,也可能是最重要的, DevSecOps 是有关训练和兴趣打造。聚会、社交或是组织中通常的报告会都是很棒的方式让同事们教学和分享他们的知识。有时,这些高光的被分享的挑战、关注点或是一些其他人没有关注到的风险。分享和教学也是一种高效的学习和指导团队的方法。 + +在我个人经验中,每个团队的文化都是独一无二的,因此你不能用“一种尺寸适合所有”的方法。走进你的团队并找到他们想要使用的工具方法。尝试不同的论坛和聚会并找出最适用于你们文化的方式。寻找反馈并询问团队如何工作,他们喜欢什么以及对应的原因。适应和学习,保持乐观,不要停止尝试,你们将会有所收获。 + +[下载 DevSecOps 的入门手册][1] + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/1/what-devsecops + +作者:[Brett Hunoldt][a] +选题:[lujun9972][b] +译者:[PandaWizard](https://github.com/PandaWizard) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/bretthunoldtcom +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/downloads/devsecops From 2c257c89fe86f9cdb77e554f228bf309ac3f8bc5 Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 4 Jul 2019 17:42:09 +0800 Subject: [PATCH 272/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190702 Make Linux stronger with firewalls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190702 Make Linux stronger with firewalls.md b/sources/tech/20190702 Make Linux stronger with firewalls.md index d558f16931..da69e07f9f 100644 --- a/sources/tech/20190702 Make Linux stronger with firewalls.md +++ b/sources/tech/20190702 Make Linux stronger with firewalls.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 8c831b2f0f04c2ea53163322f72c44e01dce7f6b Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 4 Jul 2019 17:44:21 +0800 Subject: [PATCH 273/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190702 Make Linux stronger with firewalls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190702 Make Linux stronger with firewalls.md b/sources/tech/20190702 Make Linux stronger with firewalls.md index d558f16931..da69e07f9f 100644 --- a/sources/tech/20190702 Make Linux stronger with firewalls.md +++ b/sources/tech/20190702 Make Linux stronger with firewalls.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 19bb134e552808208fb101eb2c3e33966bfd25f4 Mon Sep 17 00:00:00 2001 From: chen ni Date: Thu, 4 Jul 2019 17:53:21 +0800 Subject: [PATCH 274/336] =?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 --- ...0702 Jupyter and data science in Fedora.md | 246 ------------------ ...0702 Jupyter and data science in Fedora.md | 244 +++++++++++++++++ 2 files changed, 244 insertions(+), 246 deletions(-) delete mode 100644 sources/tech/20190702 Jupyter and data science in Fedora.md create mode 100644 translated/tech/20190702 Jupyter and data science in Fedora.md diff --git a/sources/tech/20190702 Jupyter and data science in Fedora.md b/sources/tech/20190702 Jupyter and data science in Fedora.md deleted file mode 100644 index a80c3b462f..0000000000 --- a/sources/tech/20190702 Jupyter and data science in Fedora.md +++ /dev/null @@ -1,246 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Jupyter and data science in Fedora) -[#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) -[#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) - -Jupyter and data science in Fedora -====== - -![][1] - -In the past, kings and leaders used oracles and magicians to help them predict the future — or at least get some good advice due to their supposed power to perceive hidden information. Nowadays, we live in a society obsessed with quantifying everything. So we have data scientists to do this job. - -Data scientists use statistical models, numerical techniques and advanced algorithms that didn’t come from statistical disciplines, along with the data that exist on databases, to find, to infer, to predict data that doesn’t exist yet. Sometimes this data is about the future. That is why we do a lot of predictive analytics and prescriptive analytics. - -Here are some questions to which data scientists help find answers: - - 1. Who are the students with high propensity to abandon the class? For each one, what are the reasons for leaving? - 2. Which house has a price above or below the fair price? What is the fair price for a certain house? - 3. What are the hidden groups that my clients classify themselves? - 4. Which future problems this premature child will develop? - 5. How many calls will I get in my call center tomorrow 11:43 AM? - 6. My bank should or should not lend money to this customer? - - - -Note how the answer to all these question is not sitting in any database waiting to be queried. These are all data that still doesn’t exist and has to be calculated. That is part of the job we data scientists do. - -Throughout this article you’ll learn how to prepare a Fedora system as a Data Scientist’s development environment and also a production system. Most of the basic software is RPM-packaged, but the most advanced parts can only be installed, nowadays, with Python’s _pip_ tool. - -### Jupyter — the IDE - -Most modern data scientists use Python. And an important part of their work is EDA (exploratory data analysis). EDA is a manual and interactive process that retrieves data, explores its features, searches for correlations, and uses plotted graphics to visualize and understand how data is shaped and prototypes predictive models. - -Jupyter is a web application perfect for this task. Jupyter works with Notebooks, documents that mix rich text including beautifully rendered math formulas (thanks to [mathjax][2]), blocks of code and code output, including graphics. - -Notebook files have extension _.ipynb_, which means Interactive Python Notebook. - -#### Setting up and running Jupyter - -First, install essential packages for Jupyter ([using][3] _[sudo][3]_): - -``` -$ sudo dnf install python3-notebook mathjax sscg -``` - -You might want to install additional and optional Python modules commonly used by data scientists: - -``` -$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk -``` - -Set a password to log into Notebook web interface and avoid those long tokens. Run the following command anywhere on your terminal: - -``` -$ mkdir -p $HOME/.jupyter -$ jupyter notebook password -``` - -Now, type a password for yourself. This will create the file _$HOME/.jupyter/jupyter_notebook_config.json_ with your encrypted password. - -Next, prepare for SSLby generating a self-signed HTTPS certificate for Jupyter’s web server: - -``` -$ cd $HOME/.jupyter; sscg -``` - -Finish configuring Jupyter by editing your _$HOME/.jupyter/jupyter_notebook_config.json_ file. Make it look like this: - -``` -{ - "NotebookApp": { - "password": "sha1:abf58...87b", - "ip": "*", - "allow_origin": "*", - "allow_remote_access": true, - "open_browser": false, - "websocket_compression_options": {}, - "certfile": "/home/aviram/.jupyter/service.pem", - "keyfile": "/home/aviram/.jupyter/service-key.pem", - "notebook_dir": "/home/aviram/Notebooks" - } -} -``` - -The parts in red must be changed to match your folders. Parts in blue were already there after you created your password. Parts in green are the crypto-related files generated by _sscg_. - -Create a folder for your notebook files, as configured in the _notebook_dir_ setting above: - -``` -$ mkdir $HOME/Notebooks -``` - -Now you are all set. Just run Jupyter Notebook from anywhere on your system by typing: - -``` -$ jupyter notebook -``` - -Or add this line to your _$HOME/.bashrc_ file to create a shortcut command called _jn_: - -``` -alias jn='jupyter notebook' -``` - -After running the command _jn_, access __ from any browser on the network to see the Jupyter user interface. You’ll need to use the password you set up earlier. Start typing some Python code and markup text. This is how it looks: - -![Jupyter with a simple notebook][4] - -In addition to the IPython environment, you’ll also get a web-based Unix terminal provided by _terminado_. Some people might find this useful, while others find this insecure. You can disable this feature in the config file. - -### JupyterLab — the next generation of Jupyter - -JupyterLab is the next generation of Jupyter, with a better interface and more control over your workspace. It’s currently not RPM-packaged for Fedora at the time of writing, but you can use _pip_ to get it installed easily: - -``` -$ pip3 install jupyterlab --user -$ jupyter serverextension enable --py jupyterlab -``` - -Then run your regular _jupiter notebook_ command or _jn_ alias. JupyterLab will be accessible from __**. - -### Tools used by data scientists - -In this section you can get to know some of these tools, and how to install them. Unless noted otherwise, the module is already packaged for Fedora and was installed as prerequisites for previous components. - -#### **Numpy** - -_Numpy_ is an advanced and C-optimized math library designed to work with large in-memory datasets. It provides advanced multidimensional matrix support and operations, including math functions as log(), exp(), trigonometry etc. - -#### Pandas - -In this author’s opinion, Python is THE platform for data science mostly because of Pandas. Built on top of numpy, Pandas makes easy the work of preparing and displaying data. You can think of it as a no-UI spreadsheet, but ready to work with much larger datasets. Pandas helps with data retrieval from a SQL database, CSV or other types of files, columns and rows manipulation, data filtering and, to some extent, data visualization with matplotlib. - -#### Matplotlib - -Matplotlib is a library to plot 2D and 3D data. It has great support for notations in graphics, labels and overlays - -![matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm][5] - -#### Seaborn - -Built on top of matplotlib, Seaborn’s graphics are optimized for a more statistical comprehension of data. It automatically displays regression lines or Gauss curve approximations of plotted data. - -![Linear regression visualised with SeaBorn][6] - -#### [StatsModels][7] - -StatsModels provides algorithms for statistical and econometrics data analysis such as linear and logistic regressions. Statsmodel is also home for the classical family of [time series algorithms][8] known as ARIMA. - -![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] - -#### Scikit-learn - -The central piece of the machine-learning ecosystem, [scikit][10] provides predictor algorithms for [regression][11] (Elasticnet, Gradient Boosting, Random Forest etc) and [classification][11] and clustering (K-means, DBSCAN etc). It features a very well designed API. Scikit also has classes for advanced data manipulation, dataset split into train and test parts, dimensionality reduction and data pipeline preparation. - -#### XGBoost - -XGBoost is the most advanced regressor and classifier used nowadays. It’s not part of scikit-learn, but it adheres to scikit’s API. [XGBoost][12] is not packaged for Fedora and should be installed with pip. [XGBoost can be accelerated with your nVidia GPU][13], but not through its _pip_ package. You can get this if you compile it yourself against CUDA. Get it with: - -``` -$ pip3 install xgboost --user -``` - -#### Imbalanced Learn - -[imbalanced-learn][14] provides ways for under-sampling and over-sampling data. It is useful in fraud detection scenarios where known fraud data is very small when compared to non-fraud data. In these cases data augmentation is needed for the known fraud data, to make it more relevant to train predictors. Install it with _pip_: - -``` -$ pip3 install imblearn --user -``` - -#### NLTK - -The [Natural Language toolkit][15], or NLTK, helps you work with human language data for the purpose of building chatbots (just to cite an example). - -#### SHAP - -Machine learning algorithms are very good on predicting, but aren’t good at explaining why they made a prediction. [SHAP][16] solves that, by analyzing trained models. - -![Where SHAP fits into the data analysis process][17] - -Install it with _pip_: - -``` -$ pip3 install shap --user -``` - -#### [Keras][18] - -Keras is a library for deep learning and neural networks. Install it with _pip_: - -``` -$ sudo dnf install python3-h5py -$ pip3 install keras --user -``` - -#### [TensorFlow][19] - -TensorFlow is a popular neural networks builder. Install it with _pip_: - -``` -$ pip3 install tensorflow --user -``` - -* * * - -_Photo courtesy of [FolsomNatural][20] on [Flickr][21] (CC BY-SA 2.0)._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ - -作者:[Avi Alkalay][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/aviram/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/jupyter-816x345.jpg -[2]: http://mathjax.org -[3]: https://fedoramagazine.org/howto-use-sudo/ -[4]: https://avi.alkalay.net/articlefiles/2018/07/jupyter-fedora.png -[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/gradient-descent-cost-function-optimization.png -[6]: https://seaborn.pydata.org/_images/regression_marginals.png -[7]: https://www.statsmodels.org/ -[8]: https://www.statsmodels.org/stable/examples/index.html#stats -[9]: https://fedoramagazine.org/wp-content/uploads/2019/06/time-series.png -[10]: https://scikit-learn.org/stable/ -[11]: https://scikit-learn.org/stable/supervised_learning.html#supervised-learning -[12]: https://xgboost.ai -[13]: https://xgboost.readthedocs.io/en/latest/gpu/index.html -[14]: https://imbalanced-learn.readthedocs.io -[15]: https://www.nltk.org -[16]: https://github.com/slundberg/shap -[17]: https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_diagram.png -[18]: https://keras.io -[19]: https://www.tensorflow.org -[20]: https://www.flickr.com/photos/87249144@N08/ -[21]: https://www.flickr.com/photos/87249144@N08/45871861611/ diff --git a/translated/tech/20190702 Jupyter and data science in Fedora.md b/translated/tech/20190702 Jupyter and data science in Fedora.md new file mode 100644 index 0000000000..3956ad9a09 --- /dev/null +++ b/translated/tech/20190702 Jupyter and data science in Fedora.md @@ -0,0 +1,244 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Jupyter and data science in Fedora) +[#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) +[#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) + +在 Fedora 上搭建 Jupyter 和数据科学环境 +====== + +![][1] + +在过去,神谕和魔法师被认为拥有发现奥秘的力量,国王和统治者们会借助他们预测未来,或者至少是听取一些建议。如今我们生活在一个痴迷于将一切事情量化的社会里,这份工作就交给数据科学家了。 + +数据科学家通过使用统计模型、数值分析,以及统计学之外的高级算法,结合数据库里已经存在的数据,去发掘、推断和预测尚不存在的数据(有时是关于未来的数据)。这就是为什么我们要做这么多的预测分析和规划分析。 + +下面是一些可以借助数据科学家回答的问题: + + 1. 哪些学生有旷课倾向?每个人旷课的原因分别是什么? + 2. 哪栋房子的售价比合理价格要高或者低?一栋房子的合理价格是多少? + 3. 如何将我们的客户按照潜在的特质进行分组? + 4. 这个孩子的早熟可能会在未来引发什么问题? + 5. 我们的呼叫中心在明天早上 11 点 43 分会接收到多少次呼叫? + 6. 我们的银行是否应该向这位客户发放贷款? + +请注意,这些问题的答案是在任何数据库里都查询不到的,因为它们尚不存在,需要被计算出来才行。这就是我们数据科学家从事的工作。 + +在这篇文章中你会学习如何将 Fedora 系统打造成数据科学家的开发环境和生产系统。其中大多数基本软件都有 RPM 软件包,但是最先进的组件目前只能通过 Python 的 **pip** 工具安装。 + +### Jupyter IDE + +大多数现代数据科学家使用 Python 工作。他们工作中很重要的一部分是 探索性数据分析Exploratory Data Analysis(EDA)。EDA 是一种手动进行的、交互性的过程,包括提取数据、探索数据特征、寻找相关性、通过绘制图形进行数据可视化并理解数据的分布特征,以及实现简易的预测模型。 + +Jupyter 是能够完美胜任该工作的一个 web 应用。Jupyter 使用的 Notebook 文件支持丰富的文本,包括渲染精美的数学公式(得益于 [mathjax][2])、代码块和代码输出(包括图形输出)。 + +Notebook 文件的后缀是 **.ipynb**,意思是“交互式 Python Notebook”。 + +#### 搭建并运行 Jupyter + +首先,[使用 sudo][3] 安装 Jupyter 核心软件包: + +``` +$ sudo dnf install python3-notebook mathjax sscg +``` +你或许需要安装数据科学家常用的一些附加可选模块: + +``` +$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk +``` + +设置一个用来登陆 Notebook 的 web 界面的密码,从而避免使用冗长的令牌。你可以在终端里任何一个位置运行下面的命令: + +``` +$ mkdir -p $HOME/.jupyter +$ jupyter notebook password +``` + +然后输入你的密码,这时会自动创建 ** $HOME/.jupyter/jupyter_notebook_config.json ** 这个文件,包含了你的密码的加密后版本。 + +接下来,通过使用 SSLby 为 Jupyter 的 web 服务器生成一个自签名的 HTTPS 证书: + +``` +$ cd $HOME/.jupyter; sscg +``` + +配置 Jupyter 的最后一步是编辑 **$HOME/.jupyter/jupyter_notebook_config.json** 这个文件。按照下面的模版编辑该文件: + +``` +{ + "NotebookApp": { + "password": "sha1:abf58...87b", + "ip": "*", + "allow_origin": "*", + "allow_remote_access": true, + "open_browser": false, + "websocket_compression_options": {}, + "certfile": "/home/aviram/.jupyter/service.pem", + "keyfile": "/home/aviram/.jupyter/service-key.pem", + "notebook_dir": "/home/aviram/Notebooks" + } +} +``` + +红色的部分应该替换为你的文件夹。蓝色的部分在你创建完密码之后就已经自动生成了。绿色的部分是 **sscg** 生成的和加密相关的文件。 + +接下来创建一个用来存放 notebook 文件的文件夹,应该和上面配置里 **notebook_dir** 一致: + +``` +$ mkdir $HOME/Notebooks +``` + +你已经完成了配置。现在可以在系统里的任何一个地方通过以下命令启动 Jupyter Notebook: + +``` +$ jupyter notebook +``` + +或者是将下面这行代码添加到 **$HOME/.bashrc** 文件,创建一个叫做 **jn** 的快捷命令: + +``` +alias jn='jupyter notebook' +``` + +运行 **jn** 命令之后,你可以通过网络内部的任何一个浏览器访问 **** (LCTT 译注:将域名替换为服务器的域名),就可以看到 Jupyter 的用户界面了,需要使用前面设置的密码登录。你可以尝试键入一些 Python 代码和标记文本,看起来会像下面这样: + +![Jupyter with a simple notebook][4] + +除了 IPython 环境,安装过程还会生成一个由 **terminado** 提供的基于 web 的 Unix 终端。有人觉得这很实用,也有人觉得这样不是很安全。你可以在配置文件里禁用这个功能。 + +### JupyterLab — 下一代 Jupyter + +JupyterLab 是下一代的 Jupyter,拥有更好的用户界面和对工作空间更强的操控性。在写这篇文章的时候 JupyterLab 还没有可用的 RPM 软件包,但是你可以使用 **pip** 轻松完成安装: + +``` +$ pip3 install jupyterlab --user +$ jupyter serverextension enable --py jupyterlab +``` + +然后运行 **jupiter notebook** 命令或者 **jn** 快捷命令。访问 **** LCTT 译注:将域名替换为服务器的域名)就可以使用 JupyterLab 了。 + +### 数据科学家使用的工具 + +在下面这一节里,你将会了解到数据科学家使用的一些工具及其安装方法。除非另作说明,这些工具应该已经有 Fedora 软件包版本,并且已经作为前面组件所需要的软件包而被安装了。 + +#### **Numpy** + +**Numpy** 是一个针对 C 语言优化过的高级库,用来处理内存里的大型数据集。它支持高级多维矩阵及其运算,并且包含了 log()、exp()、三角函数等数学函数。 + +#### Pandas + +在我看来,正是 Pandas 成就了 Python 作为数据科学首选平台的地位。Pandas 构建在 numpy 之上,可以让数据准备和数据呈现工作变得简单很多。你可以把它想象成一个没有用户界面的电子表格程序,但是能够处理的数据集要大得多。Pandas 支持从 SQL 数据库或者 CSV 等格式的文件中提取数据、按列或者按行进行操作、数据筛选,以及通过 matplotlib 实现数据可视化的一部分功能。 + +#### Matplotlib + +Matplotlib 是一个用来绘制 2D 和 3D 数据图像的库,在图象注解、标签和叠加层方面都提供了相当不错的支持。 + +![matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm][5] + +#### Seaborn + +Seaborn 构建在 matplotlib 之上,它的绘图功能经过了优化,更加适合数据的统计学研究,比如说可以自动显示所绘制数据的近似回归线或者正态分布曲线。 + +![Linear regression visualised with SeaBorn][6] + +#### [StatsModels][7] + +StatsModels 为统计学和经济计量学的数据分析问题(例如线形回归和逻辑回归)提供算法支持,同时提供经典的 [时间序列算法][8] 家族:ARIMA。 + +![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] + +#### Scikit-learn + +作为机器学习生态系统的核心部件,[scikit][10] 为不同类型的问题提供预测算法,包括 [回归问题][11](算法包括 Elasticnet、Gradient Boosting、随机森林等等)、[分类问题][11] 和聚类问题(算法包括 K-means 和 DBSCAN 等等),并且拥有设计精良的 API。Scikit 还定义了一些专门的 Python 类,用来支持数据操作的高级技巧,比如将数据集拆分为训练集和测试集、降维算法、数据准备管道流程等等。 + +#### XGBoost + +XGBoost 是目前可以使用的最先进的回归器和分类器。它并不是 scikit-learn 的一部分,但是却遵循了 scikit 的 API。[XGBoost][12] 并没有针对 Fedora 的软件包,但可以使用 pip 安装。[使用英伟达显卡可以提升 XGBoost 算法的性能][13],但是这并不能通过 **pip** 软件包来实现。如果你希望使用这个功能,可以针对 CUDA (LCTT 译注:英伟达开发的并行计算平台)自己进行编译。使用下面这个命令安装 XGBoost: + +``` +$ pip3 install xgboost --user +``` + +#### Imbalanced Learn + +[imbalanced-learn][14] 是一个解决数据欠采样和过采样问题的工具。比如在反欺诈问题中,欺诈数据相对于正常数据来说数量非常小,这个时候就需要对欺诈数据进行数据增强,从而让预测器能够更好地适应数据集。使用 **pip** 安装: + +``` +$ pip3 install imblearn --user +``` + +#### NLTK + +[Natural Language toolkit][15](简称 NLTK)是一个处理人类语言数据的工具,举例来说,它可以被用来开发一个聊天机器人。 + + +#### SHAP + +机器学习算法拥有强大的预测能力,但并不能够很好地解释为什么做出这样或那样的预测。[SHAP][16] 可以通过分析训练后的模型来解决这个问题。 + +![Where SHAP fits into the data analysis process][17] + +使用 **pip** 安装: + +``` +$ pip3 install shap --user +``` + +#### [Keras][18] + +Keras 是一个深度学习和神经网络模型的库,使用 **pip** 安装: + +``` +$ sudo dnf install python3-h5py +$ pip3 install keras --user +``` + +#### [TensorFlow][19] + +TensorFlow 是一个非常流行的神经网络模型搭建工具,使用 **pip** 安装: + +``` +$ pip3 install tensorflow --user +``` + +* * * + +_Photo courtesy of [FolsomNatural][20] on [Flickr][21] (CC BY-SA 2.0)._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ + +作者:[Avi Alkalay][a] +选题:[lujun9972][b] +译者:[chen-ni](https://github.com/chen-ni) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/aviram/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/06/jupyter-816x345.jpg +[2]: http://mathjax.org +[3]: https://fedoramagazine.org/howto-use-sudo/ +[4]: https://avi.alkalay.net/articlefiles/2018/07/jupyter-fedora.png +[5]: https://fedoramagazine.org/wp-content/uploads/2019/06/gradient-descent-cost-function-optimization.png +[6]: https://seaborn.pydata.org/_images/regression_marginals.png +[7]: https://www.statsmodels.org/ +[8]: https://www.statsmodels.org/stable/examples/index.html#stats +[9]: https://fedoramagazine.org/wp-content/uploads/2019/06/time-series.png +[10]: https://scikit-learn.org/stable/ +[11]: https://scikit-learn.org/stable/supervised_learning.html#supervised-learning +[12]: https://xgboost.ai +[13]: https://xgboost.readthedocs.io/en/latest/gpu/index.html +[14]: https://imbalanced-learn.readthedocs.io +[15]: https://www.nltk.org +[16]: https://github.com/slundberg/shap +[17]: https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_diagram.png +[18]: https://keras.io +[19]: https://www.tensorflow.org +[20]: https://www.flickr.com/photos/87249144@N08/ +[21]: https://www.flickr.com/photos/87249144@N08/45871861611/ From 3eb6c8ef1eb632532d49a75d6150a8e254c3fe5e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 21:59:09 +0800 Subject: [PATCH 275/336] PRF:20180629 100 Best Ubuntu Apps.md PART 6 --- .../tech/20180629 100 Best Ubuntu Apps.md | 139 +++++++++--------- 1 file changed, 73 insertions(+), 66 deletions(-) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/translated/tech/20180629 100 Best Ubuntu Apps.md index 06b0db2c75..d5c3505d10 100644 --- a/translated/tech/20180629 100 Best Ubuntu Apps.md +++ b/translated/tech/20180629 100 Best Ubuntu Apps.md @@ -719,19 +719,19 @@ $ sudo apt-get install plank ### 67、Filezilla -Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端和服务器。它让你使用 FTP 和加密的 FTP 像 FTPS 和 SFTP 传输文件,支持 IPv6 网络协议。 +Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端和服务器。它让你使用 FTP 和加密的 FTP,如 FTPS 和 SFTP 传输文件,支持 IPv6 网络协议。 ![][73] -它是一个简单的文件传输应用,支持拖放,支持世界范围的各种语言,多任务的强大用户界面,控制和配置传输速度。 +它是一个简单的文件传输应用,支持拖放,支持世界范围的各种语言,多任务的强大用户界面,可以控制和配置传输速度。 ### 68、Stacer -Stacer 是一个开源的系统诊断和优化工具,使用 Electron 开发框架开发的。它有一个优秀的用户界面,你可以清理缓存内存,启动应用,卸载不需要的应用,掌控后台系统进程。 +Stacer 是一个开源的系统诊断和优化工具,使用 Electron 开发框架开发。它有一个优秀的用户界面,你可以清理缓存内存、启动应用、卸载不需要的应用、掌控后台系统进程。 ![][74] -它同样让你检查磁盘,内存和 CPU 使用情况,给你下载和上传的实时状态。它看起来像 Ubuntu clener 的强力竞争者,但是两者都有独特的特点。 +它也可以让你检查磁盘、内存和 CPU 使用情况,给你下载和上传的实时状态。它看起来像 Ubuntu clener 的强力竞争者,但是两者都有独特的特点。 ``` $ sudo add-apt-repository ppa:oguzhaninan/stacer @@ -739,30 +739,29 @@ $ sudo apt-get update $ sudo apt-get install stacer ``` -### 69、4K Video Downloader +### 69、4K 视频下载器 -4K Video Downloader 是一个简单的视频下载工具,你可以用来从 Vimeo、Facebook、YouTube 和其它在线视频流站点下载视频,播放列表,频道。它支持下载 YouTuBe 播放列表和频道,以 MP4, MKV, M4A, 3GP 和很多其它 音/视频格式。 +4K 视频下载器是一个简单的视频下载工具,你可以用来从 Vimeo、Facebook、YouTube 和其它在线视频流站点下载视频、播放列表、频道。它支持下载 YouTuBe 播放列表和频道,可以采用 MP4、MKV、M4A、3GP 和很多其它音/视频格式。 ![][75] -4K Video Downloader 不是你想的那么简单,除了正常的视频下载,它支持 3D 和 360 度 视频下载。它同样提供内置应用协议链接,直连 iTunes。你可以从[这里][76]下载。 +4K 视频下载器不是你想的那么简单,除了正常的视频下载,它支持 3D 和 360 度视频下载。它同样提供应用内代理设置、直连 iTunes 等功能。你可以从[这里][76]下载。 -### 70、Qalculate +### 70、Qalculate -Qalculate 是一个多目的、跨平台的桌面计算器,简单但是强大。它可以用来解决复杂的数学问题和等式,货币汇率转换和很多其它日常计算。 +Qalculate 是一个多用途、跨平台的桌面计算器,简单而强大。它可以用来解决复杂的数学问题和等式、货币汇率转换和很多其它日常计算。 ![][77] -它有优秀的用户界面,提供了自定义功能,单元计算,符号计算,算数,画图,和很多你可以在科学计算器上发现的功能。 +它有优秀的用户界面,提供了自定义功能、单位计算、符号计算、四则运算、画图和很多你可以在科学计算器上发现的功能。 ### 71、Hiri -Hiri 是一个跨平台的邮件客户端,使用 Python 语言开发的。它有平滑的用户界面,就它的功能和服务而言,是 Micorsoft Outlook 的很好的替代品。这是很棒的邮件客户端,可以用来发送和接收邮件,管理通讯录,日历和任务。 +Hiri 是一个跨平台的邮件客户端,使用 Python 语言开发的。它有平滑的用户界面,就它的功能和服务而言,是 Micorsoft Outlook 的很好的替代品。这是很棒的邮件客户端,可以用来发送和接收邮件,管理通讯录、日历和任务。 ![][78] -它是一个丰富特点的邮件客户端,提供的功能有集成的任务管理器,邮件同步,邮件评分,邮件过滤等多种功能。 - +它是一个具有丰富特点的邮件客户端,提供的功能有集成的任务管理器、邮件同步、邮件评分、邮件过滤等多种功能。 ``` $ sudo snap install hiri @@ -770,11 +769,11 @@ $ sudo snap install hiri ### 72、Sublime Text -Sublime Text 是一个跨平台的源代码编辑器,用 C++ 和 Python 写的。它有 Python 语言编程接口(API),支持所有主流的编程语言和标记语言。它是简单轻量级的文本编辑器,可被用作 IDE,包含自动补全,语法高亮,分窗口编辑等功能。 +Sublime Text 是一个跨平台的源代码编辑器,用 C++ 和 Python 写的。它有 Python 语言编程接口(API),支持所有主流的编程语言和标记语言。它是简单轻量级的文本编辑器,可被用作 IDE,包含自动补全、语法高亮、分窗口编辑等功能。 ![][79] -这个文本编辑器包括一些额外特点:去任何地方、去定义、多选、命令模板和完全定制的用户界面。 +这个文本编辑器包括一些额外特点:任意跳转、跳转定义、多选、命令模式和可完全定制的用户界面。 ``` $ sudo apt-get install sublime-text @@ -782,11 +781,11 @@ $ sudo apt-get install sublime-text ### 73、TeXstudio -Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成查看、交互式拼写检查、代码折叠、拖放等特点。 +Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成的查看器、交互式拼写检查、代码折叠、拖放等特点。 ![][80] -它是跨平台的编辑器,有简单轻量级的用户界面,易于使用。它集成了 BibTex和 BibLatex 目录管理器,同样有集成的 PDF 查看器。你可以从[官网][81]和 Ubuntu 软件中心下载 Texstudio。 +它是跨平台的编辑器,有简单轻量级的用户界面,易于使用。它集成了 BibTex 和 BibLatex 目录管理器,同样有集成的 PDF 查看器。你可以从[官网][81]和 Ubuntu 软件中心下载 Texstudio。 ### 74、QtQR @@ -794,7 +793,7 @@ QtQR 是一个基于 Qt 的应用,让你在 Ubuntu 中创建和读取二维码 ![][82] -如果你经常处理产品销售和服务,QtQR 会证明是有用的工具,但是我不认为在最小硬件要求下有和 QtQR 这样相似并顺畅运行的应用了。 +如果你经常处理产品销售和服务,QtQR 会证明是有用的工具,我觉得没有能在如此低硬件的要求下能和 QtQR 一样提供类似功能顺畅运行的应用了。 ``` $ sudo add-apt-repository ppa: qr-tools-developers/qr-tools-stable @@ -804,11 +803,11 @@ $ sudo apt-get install qtqr ### 75、Kontact -Kontact 是一个由 KDE 为 KDE 桌面环境开发的集成的个人信息管理器(PIM)。它集成了多个软件到一个集合中,集成了 KMail、KOrganizer和 KAddressBook 到一个用户界面,你可以管理所有的邮件、通讯录、日程表等。 +Kontact 是一个为 KDE 桌面环境开发的集成的个人信息管理器(PIM)。它集成了多个软件到一个集合中,在一个用户界面集成了 KMail、KOrganizer和 KAddressBook,你可以管理所有的邮件、通讯录、日程表等。 ![][83] -它可能是 Microsoft Outlook 的非常好的替代,因为它快速且高度高配置的消息管理工具。它有很好的用户界面,你会发现很容易上手。 +它可能是 Microsoft Outlook 的非常好的替代品,因为它是快速且高度高配置的消息管理工具。它有很好的用户界面,你会发现很容易上手。 ``` $ sudo apt-get install kontact @@ -820,7 +819,7 @@ NitroShare 是一个跨平台、开源的网络文件共享应用。它让你轻 ![][84] -文件传输速度让 NitroShare 称为一个杰出的文件共享应用,它在能够胜任的硬件中能够达到 GB 级的传输速度。没有必要额外配置,安装完成后你就可以开始文件传输。 +文件传输速度让 NitroShare 成为一个杰出的文件共享应用,它在能够胜任的硬件中能够达到 GB 级的传输速度。没有必要额外配置,安装完成后你就可以开始文件传输。 ``` $ sudo apt-add-repository ppa:george-edison55/nitroshare @@ -830,11 +829,11 @@ $ sudo apt-get install nitroshare ### 77、Konversation -Konversation 是一个为 KDE 桌面环境开发的开源的网络中继聊天(IRC)客户端。它给了到 Freenode 网络平岛的快速入口,你可以为大多数发行版找到支持。 +Konversation 是一个为 KDE 桌面环境开发的开源的网络中继聊天(IRC)客户端。它给了你到 Freenode 网络频道的快速入口,你可以为大多数发行版找到支持。 ![][85] -它是一个简单的聊天客户端,支持 IPv6 链接, SSL 服务器支持,书签,屏幕通知,UTF-8 检测和另外的主题。它易于使用的 GUI 是高度可配置的。 +它是一个简单的聊天客户端,支持 IPv6 链接、SSL 服务器支持、书签、屏幕通知、UTF-8 检测和另外的主题。它易于使用的 GUI 是高度可配置的。 ``` $ sudo apt-get install konversation @@ -846,15 +845,15 @@ $ sudo apt-get install konversation ![][86] -Discord 是一个非常流行的语音通话应用游戏社区,因为它是完全免费的,它是 Skype,Ventrilo,Teamspeak 的很好的竞争者。它同样提供清晰的语音质量,现代的文本聊天,你可以共享图片,视频和链接。 +Discord 是一个非常流行的语音通话应用游戏社区,因为它是完全免费的,它是 Skype、Ventrilo、Teamspeak 的很好的竞争者。它同样提供清晰的语音质量、现代的文本聊天,你可以共享图片、视频和链接。 ### 79、QuiteRSS -QuiteRSS是一个开源的 RSS 的新闻聚合和 Atom 新闻要点应用。它是跨平台的要点阅读器,用 Qt 和 C++ 写的。它有简单的用户界面,你可以改变为经典或者报纸模式。它集成了 webkit 浏览器,因此,你可以在单个窗口执行所有任务。 +QuiteRSS是一个开源的 RSS 和 Atom 新闻摘要的聚合应用。它是跨平台的摘要阅读器,用 Qt 和 C++ 写的。它有简单的用户界面,你可以改变为经典或者报纸模式。它集成了 webkit 浏览器,因此,你可以在单个窗口执行所有任务。 ![][87] -QuiteRSS 自带了很多功能,像内容过滤,自动规划摘要,导入/到处 OPML,系统托盘集成和很多其它你期待任何要点阅读器有的特点。 +QuiteRSS 自带了很多功能,像内容过滤、自动规划摘要、导入/导出 OPML、系统托盘集成了很多其它摘要阅读器有的特点。 ``` $ sudo apt-get install quiterss @@ -862,11 +861,11 @@ $ sudo apt-get install quiterss ### 80、MPV Media Player -MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户之需要拖放音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 +MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户只需要拖放音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。 ![][88] -关于 MPV 的一件事是它可以轻松播放 4K 视频,Linux 发行版中的其它媒体播放器可能不是这样。它同样给了用户播放在线视频流站点像 YouTube 和 Dailymotion 的能力。 +关于 MPV 的一件事是它可以轻松播放 4K 视频,Linux 发行版中的其它媒体播放器可能做不到。它同样给了用户播放在线视频流站点如 YouTube 和 Dailymotion 的能力。 ``` $ sudo add-apt-repository ppa:mc3man/mpv-tests @@ -880,48 +879,51 @@ $ sudo apt-get install -y mpv ![][89] -它是一个开源的应用,拥有最小的用户界面,开始你可能觉得困惑,但不久你就会习惯的。它提供的功能有:编辑笔记,摘要,导出 HTML 和 ODT 格式支持,富文本编辑。 +它是一个开源的应用,拥有精简的用户界面,开始你可能觉得困惑,但不久你就会习惯的。它提供的功能有:编辑笔记、摘要、导出 HTML 和 ODT 格式、富文本编辑。 ``` $ sudo apt-get install plume-creator ``` -### 82、Chromium Web Browser +### 82、Chromium Web 浏览器 -Chromium 是一个由 Google 开发和发布的开源 web 浏览器。Chromium 就其外观和特点而言,很容易被误认为是 Chrome。它是轻量级和快速的网络浏览器,拥有最小用户界面。 +Chromium 是一个由 Google 开发和发布的开源 Web 浏览器。Chromium 就其外观和特点而言,很容易被误认为是 Chrome。它是轻量级和快速的网络浏览器,拥有最小用户界面。 -### 83、Simple Weather Indicator +![][90] -Simple Weather Indicator 是用 Python 开发的开源天气提示应用。它自动侦查你的位置,并显示你天气信息像温度,下雨的可能性,湿度,风速和可见度。 +如果你经常在 Windows 上使用 Google Chrome,而想在 Linux 上寻找一个类似的浏览器,那么 Chromium 就是你的最佳选择,你可以登录到你的 Google 账户以访问包括 Gmail 在内的所有 Google 服务。 + +### 83、简单天气指示器 + +简单天气指示器是用 Python 开发的开源天气提示应用。它自动侦查你的位置,并显示你天气信息像温度,下雨的可能性,湿度,风速和可见度。 ![][91] -Weather indicator 自带一些可配置项,例如位置检测,温度 SI 单元,位置可见度开关等等。它是一个酷应用,可以根据你的桌面来调整舒服。 +简单天气指示器自带一些可配置项,例如位置检测、温度单位、位置可见度开关等等。它是一个还酷的应用,可以根据你的桌面来调整。 ### 84、SpeedCrunch -SpeedCrunch 是一个快速和高精度的科学计算器。它预置了数学函数,用户定义函数,复数和单位转换支持。它有简单的用户界面并易于使用。 +SpeedCrunch 是一个快速和高精度的科学计算器。它预置了数学函数、用户定义函数、复数和单位转换支持。它有简单的用户界面并易于使用。 ![][92] -这个科学计算器有令人吃惊的特点像结果预览,语法高亮和自动补全。它是跨平台的,并有多语言支持。 - +这个科学计算器有令人吃惊的特点,如结果预览、语法高亮和自动补全。它是跨平台的,并有多语言支持。 ### 85、Scribus -Scribus 是一个自由开源的桌面出版应用,允许你创建宣传海报,杂志和图书。它是基于 Qt 工具器的跨平台英语,在 GNU 通用公共证书下发布。它是一个专业的应用,拥有 CMYK 和 ICC 颜色管理的功能,基于 Python 的脚本引擎,和 PDF 创建。 +Scribus 是一个自由开源的桌面出版应用,允许你创建宣传海报、杂志和图书。它是基于 Qt 工具器的跨平台应用,在 GNU 通用公共许可证下发布。它是一个专业的应用,拥有 CMYK 和 ICC 颜色管理的功能、基于 Python 的脚本引擎,和 PDF 创建功能。 ![][93] -Scribus 有相当好的用户界面,易于使用,轻松在低配置下使用。在所有的最新的 Linux 发行版的软件中心可以下载它。 +Scribus 有相当好的用户界面,易于使用,可以在低配置下轻松使用。在所有的最新的 Linux 发行版的软件中心可以下载它。 ### 86. Cura -Cura 是一个由 David Braam 开发的开源的 3D 打印应用。Ultimaker Cura 是 3D 打印世界最流行的软件,并世界范围的百万用户使用。它遵守 3D 打印模型的 3 步:设计,准备,打印。 +Cura 是一个由 David Braam 开发的开源的 3D 打印应用。Ultimaker Cura 是 3D 打印世界最流行的软件,世界范围有百万用户在使用。它遵守 3D 打印模型的 3 步:设计、准备、打印。 ![][94] -它是功能丰富的 3D 打印应用,为 CAD 插件和扩展提供了无缝支持。它是一款简单易于使用的工具,新手艺术家可以马上开始了。它支持主流的文件格式像 STL,3MF,和 OBJ。 +它是功能丰富的 3D 打印应用,为 CAD 插件和扩展提供了无缝支持。它是一款简单易于使用的工具,新手艺术家可以马上开始了。它支持主流的文件格式像 STL、3MF 和 OBJ。 ### 87、Nomacs @@ -929,7 +931,7 @@ Nomacs 是一款开源、跨平台的图像浏览器,支持所有主流的图 ![][95] -Nomacs 拥有非常简单的用户界面,图像缩略图在顶部,它提供了一些基本的图像操作特点像修改,调整大小,旋转,颜色纠正等。 +Nomacs 拥有非常简单的用户界面,图像缩略图在顶部,它提供了一些基本的图像操作特点像修改、调整大小、旋转、颜色纠正等。 ``` $ sudo add-apt-repository ppa:nomacs/stable @@ -939,7 +941,7 @@ $ sudo apt-get install nomacs ### 88、BitTicker -BitTicker 是一个 Ubuntu 上的在线比特币-USDT 收报。它是一个简单的工具,能够连接到 bittrex.com 市场,提取最新的 BTC-USDT 并在系统托盘显示 Ubuntu 时钟。 +BitTicker 是一个 Ubuntu 上的在线的 BTC-USDT 价格接收器。它是一个简单的工具,能够连接到 bittrex.com 市场,提取最新的 BTC-USDT 价格,并在系统托盘显示 Ubuntu 时钟。 ![][96] @@ -947,59 +949,59 @@ BitTicker 是一个 Ubuntu 上的在线比特币-USDT 收报。它是一个简 ### 89、Organize My Files -Organize My Files 是一个跨平台的一键点击文件组织工具,它在 Ubuntu 中以 Snap 包的形式获得。它简单但是强大,帮助你找到未组织的文件,通过简单点击来掌控它们。 +Organize My Files 是一个跨平台的一键点击文件组织工具,它在 Ubuntu 中以 Snap 包的形式获得。它简单而强大,可以帮助你找到未组织的文件,通过简单点击来掌控它们。 ![][97] -它有易于理解的用户界面,强大且快速。它提供了很多功能:自动组织,递归组织,智能过滤和多层文件夹组织等。 +它有易于理解的用户界面,强大且快速。它提供了很多功能:自动组织、递归组织、智能过滤和多层文件夹组织等。 ### 90、GnuCash -GnuCash 是一个金融账户软件,在 GNU 公共证书下免费使用。它是个人和商业账户的理想软件。它有简单的用户界面允许你追踪银行账户,股票,收入和花费。 +GnuCash 是一个金融账户软件,在 GNU 公共证书下自由使用。它是个人和商业账户的理想软件。它有简单的用户界面允许你追踪银行账户、股票、收入和花费。 ![][98] GnuCash 实现了双入口记账系统,基于专业的账户原则来确保帐薄的平衡和报告的精确。 -v### 91、Calibre +### 91、Calibre -Calibre 是一个跨平台开源的面向你所有电子书需要的解决方案。它是一个简单的电子书管理器,提供显示、创建、编辑电子书、组织已存在的电子书到虚拟书库、同步和其它更多。 +Calibre 是一个跨平台的开源的面向电子书需求的解决方案。它是一个简单的电子书管理器,提供显示、创建、编辑电子书、组织已存在的电子书到虚拟书库、同步和其它更多功能。 ![][99] -Calibre 同样帮你转换电子书到你需要的格式并发送到你的电子书阅读设备。Calibre 是一个很棒的工具,如果你经常阅读和管理电子书的话。 +Calibre 同样可以帮你转换电子书到你需要的格式并发送到你的电子书阅读设备。Calibre 是一个很棒的工具,如果你经常阅读和管理电子书的话。 -### 92、MATE Dictionary +### 92、MATE 词典 -MATE Dictionary 是一个简单的词典,基本上是为 MATE 桌面环境开发的。你可以仅仅输入字然后这个字典会显示意思和引用。 +MATE 词典是一个简单的词典,基本上是为 MATE 桌面环境开发的。你可以仅仅输入字然后这个字典会显示意思和引用。 ![][100] -它简单和轻量级的在线词典,有最小的用户接口。 +它是简单和轻量级的在线词典,有极简的用户界面。 ### 93、Converseen -Converseen 是免费的跨平台的批量图片处理应用,允许你转换、编辑、调整、旋转、裁剪大量图像,仅仅一次鼠标调集。它提供了图像批量重命名的功能,使用前缀或后缀,从一个 Windows 图标文件提取图像等。 +Converseen 是免费的跨平台的批量图片处理应用,允许你转换、编辑、调整、旋转、裁剪大量图像,而仅仅需要一次鼠标点击。它提供了使用前缀或后缀图像批量重命名和从一个 Windows 图标文件提取图像等功能。 ![][101] 它有很好的用户界面,易于使用,即时你是一个新手。它也能够转换整个 PDF 文件为图像集合。 -### 94、Tiled Map Editor +### 94、贴片地图编辑器 -Tiled 是一个免费的水平映射图编辑器,允许你编辑各种形式的投影映射图,例如正交、等轴、和六角的。这个工具对于游戏开发者在游戏引擎开发周期内可能非常有用。 +贴片地图编辑器是一个免费的关卡地图编辑器,允许你以正交、等轴、和六角等方向编辑地图。这个工具对于游戏开发者在游戏引擎开发阶段内可能非常有用。 ![][102] -Tiled 是一个通用的映射图编辑器,让你创建强大的促进位置,图布局,碰撞区域和敌人位置。它保存所有的数据为 tmx 格式。 +它是一个通用的地图编辑器,让你创建升级位置、地图布局、碰撞区域和敌人位置。它保存所有的数据为 tmx 格式。 ### 95. Qmmp -Qmmp 是一个自由开源的音频播放器,用 C++ 和 Qt 开发的。它是跨平台的音频播放器,界面与 Winamp 很相似。 它有简单的直观的用户界面,Winamp 皮肤可替代默认的 UI。 +Qmmp 是一个自由开源的音频播放器,用 C++ 和 Qt 开发的。它是跨平台的音频播放器,界面与 Winamp 很相似。 它有简单的直观的用户界面,可以用 Winamp 皮肤替代默认的 UI。 ![][103] -它提供了自动唱片集封面获取,多艺术家支持,另外的插件和扩展支持和其它与 Winamp 相似的特点。 +它提供了自动唱片集封面获取、支持多艺术家,另外的插件和扩展支持和其它与 Winamp 相似的特点。 ``` $ sudo add-apt-repository ppa:forkotov02/ppa @@ -1009,7 +1011,7 @@ $ sudo apt-get install qmmp qmmp-q4 qmmp-plugin-pack-qt4 ### 96、Arora -Arora 是一个免费开源的 web 浏览器,提供了专有的下载管理器,书签,私密模式,选项卡式浏览。 +Arora 是一个免费开源的 web 浏览器,提供了专有的下载管理器、书签、私密模式、选项卡式浏览。 ![][104] @@ -1017,15 +1019,20 @@ Arora web 浏览器由 Benjamin C. Meyer 开发,它由于它的轻量自然灵 ### 97、XnSketch -XnSketch 是一个 Ubuntu 上的酷应用,只需要几次点击,就能帮你转换你的图片为卡通或素描图。它展现了 18 个不同的效果例如:锐化、白描、铅笔画和其它的。 +XnSketch 是一个 Ubuntu 上的酷应用,只需要几次点击,就能帮你转换你的图片为卡通或素描图。它展现了 18 个不同的效果,例如:锐化、白描、铅笔画等等。 ![][105] -它有优秀的用户界面,易于使用。一些额外的特点包括容量和边缘强度调整,对比,亮度,饱和度调整。 +它有优秀的用户界面,易于使用。一些额外的特点包括透明度和边缘锐化调整、对比度、亮度、饱和度调整。 ### 98、Geany -Geany 是一个简单轻量级的文本编辑器,像一个集成开发环境。它是跨平台的文本编辑器,支持所有主流编程语言包括Python、C++、LaTex、Pascal、 C#、 etc。 +Geany 是一个简单而轻量级的文本编辑器,像一个集成开发环境。它是跨平台的文本编辑器,支持所有主流编程语言包括 Python、C++、LaTex、Pascal、C#、etc。 + + +![][106] + +Geany 有个类似于 Notepad++ 编程编辑器的简单用户界面。它提供了 IDE 的功能,如代码导航、自动补完、格式高亮,并支持扩展。 ``` $ sudo apt-get install geany @@ -1033,7 +1040,7 @@ $ sudo apt-get install geany ### 99、Mumble -Mumble 是另一个 IP 上的语音应用相似与 Discord。Mumble 同样最初是为在线游戏者使用的,在端到端的聊天上用了客户端-服务器架构。声音质量在 Mumble 上非常好,它提供了端到端的加密来确保私密性。 +Mumble 是又一个 VoIP 应用,与 Discord 类似。Mumble 同样最初是为在线游戏玩家设计的,使用客户端-服务器架构提供了端到端的聊天。在 Mumble 上的声音质量非常好,它提供了端到端的加密来确保私密性。 ![][107] @@ -1045,11 +1052,11 @@ $ sudo apt-get install mumble-server ### 100、Deluge -Deluge 是一个跨平台的轻量级的 BitTorrent 客户端,能够用来在 Ubuntu 上下载文件。BitTorrent 客户端与很多 Linux 发行版一起发行,但 Deluge 是最好的 BitTorrent 客户端,界面简单,易于使用。 +Deluge 是一个跨平台的轻量级的 BitTorrent 客户端,能够用来在 Ubuntu 上下载文件。BitTorrent 客户端与很多 Linux 发行版一起发行,但 Deluge 是最好的 BitTorrent 客户端,界面简单、易于使用。 ![][108] -Deluge 拥有你发现的其它 BitTorrent 客户端有的所有功能,但是一个功能特别突出,它给了用户从其它设备进入客户端的能力,这样你可以远程下载文件了。 +Deluge 拥有你可以在其它 BitTorrent 客户端上发现的所有功能,但是一个功能特别突出,它给了用户从其它设备访问客户端的能力,这样你可以远程下载文件了。 ``` $ sudo add-apt-repository ppa:deluge-team/ppa @@ -1057,7 +1064,7 @@ $ sudo apt-get update $ sudo apt-get install deluge ``` -所以这些就是 2018 年我为大家选择的 Ubuntu 上最好的 100 个应用了。所有列出的应用都在 Ubuntu 18.04 上测试了,肯定在老版本上也能运行。请在 [@LinuxHint][109] 和 [@SwapTirthakar][110] 自由分享你的观点。 +所以这些就是 2018 年我为大家选择的 Ubuntu 上最好的 100 个应用了。所有列出的应用都在 Ubuntu 18.04 上测试了,肯定在老版本上也能运行。 -------------------------------------------------------------------------------- From f8bbf167d1851af69ed293c42278967eb572406d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 4 Jul 2019 22:01:10 +0800 Subject: [PATCH 276/336] PUB:20180629 100 Best Ubuntu Apps.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @warmfrog 这确实是一篇很长的文章,辛苦了,不过要是能更用心翻译和校对的话,这篇肯定是一篇精品了。 --- {translated/tech => published}/20180629 100 Best Ubuntu Apps.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20180629 100 Best Ubuntu Apps.md (100%) diff --git a/translated/tech/20180629 100 Best Ubuntu Apps.md b/published/20180629 100 Best Ubuntu Apps.md similarity index 100% rename from translated/tech/20180629 100 Best Ubuntu Apps.md rename to published/20180629 100 Best Ubuntu Apps.md From 12376d732c210c3032f5ac867b2ae5a8dcb594f4 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 4 Jul 2019 22:55:06 +0800 Subject: [PATCH 277/336] Update 20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md --- ...Even More Awesome With Zorin 15 Release.md | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index d2201433fe..ac11a72915 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -15,7 +15,7 @@ 我还记得,在几年前,我的一位朋友一直坚持让我安装[Zorin OS][2]。就我个人而言,当时我并不喜欢它的 UI 风格。但是,现如今 Zorin OS 15 发布了,这也让我有了更多的理由安装并将它作为我日常的操作系统。 不要担心,在这篇文章里,我会向你介绍你所需要了解的一切。 -Fret not, in this article, we’ll talk about everything that you need to know. + ### Zorin 15 中的新特性 @@ -45,51 +45,47 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 ![Zorin 夜间模式][7] -一提到 “夜间模式” 时我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 +一提到 “夜间模式” 我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 -[][8] +[推荐阅读 : Necuno 是一款新的智能手机开源 KDE][8] -Suggested read Necuno is a New Open Source Smartphone Running KDE +当我在任意界面深色模式时,我的眼睛都舒适,你不想来试试么? -It’s so pleasing to my eyes when I enable the dark mode on anything, you with me? +它不单单是一个深色的主题,而是 UI 更干净直观,并且带有恰到好处的新动画。你可以从Zorin 内置的外观应用程序里找到所有的相关内建的所有设置。 -Not just a dark theme, the UI is a lot cleaner and intuitive with subtle new animations. You can find all the settings from the Zorin Appearance app built-in. +#### 自适应背景调整 & 深色浅色模式 -#### 自适应背景调整 & Dark Light - -You get an option to let the background adapt according to the brightness of the environment every hour of the day. Also, you can find the night mode if you don’t want the blue light to stress your eyes. +你可以选择让桌面背景根据一天中每小时的环境亮度进行自动调整。此外,如果你想避免蓝光给眼睛带来伤害,你可以使用夜间模式。 #### To do app ![Todo][9] -I always wanted this to happen so that I don’t have to use a separate service that offers a Linux client to add my tasks. It’s good to see a built-in app with integration support for Google Tasks and Todoist. +我一直希望支持这个功能,这样我就不必使用其他 Linux 客户端程序来添加任务。很高兴看到内置的应用程序集成并支持谷歌任务和 Todoist。 -#### There’s More? +#### 还有更多么? -Yes! Other major changes include the support for Flatpak, a touch layout for convertible laptops, a DND mode, and some redesigned apps (Settings, Libre Office) to give you better user experience. +是的!其他主要的变化包括对 Flatpak 的支持,支持平板笔记本二合一电脑的触摸布局,DND 模式,以及一些重新设计的应用程序(设置,Libre Office),以此来给你更好的用户体验。 -If you want the detailed list of changes along with the minor improvements, you can follow the [announcement post][6]. If you are already a Zorin user, you would notice that they have refreshed their website with a new look as well. +如果你想要了解所有更新和改动的详细信息,你可以查看[官方公告][6]。如果你已经是Zorin的用户,你应该已经注意到他们他们的网站已经启用了一个全新的外观。 ### 下载 Zorin OS 15 -**Note** : _Direct upgrades from Zorin OS 12 to 15 – without needing to re-install the operating system – will be available later this year._ +**注释** : _今年的晚些时候将会推出从 Zorin OS 12 直升 15 版本而不需要重新安装的升级包。_ -In case you didn’t know, there are three versions of Zorin OS – Ultimate, Core, and the Lite version. +为了防止您不够了解,Zorin OS有三个版本—旗舰版本、核心板和轻量版。 -If you want to support the devs and the project while unlocking the full potential of Zorin OS, you should get the ultimate edition for $39. +如果你想支持开发者和项目,同时解锁 Zorin OS 全部的功能,你可以花39美元购买旗舰版本。 -If you just want the essentials, the core edition will do just fine (which you can download for free). In either case, if you have an old computer, the lite version is the one to go with. +如果你只是想要一些基本功能,核心版就可以了(你可以免费下载)。如果是情况下,比如如果你有一台旧电脑,那么你可以使用轻量版。 -[DOWNLOAD ZORIN OS 15][10] +[下载 ZORIN OS 15][10] -**What do you think of Zorin 15?** +**你觉得 Zorin 15 怎么样?** -[][11] +[推荐阅读 Ubuntu 14.04 代号为值得信赖的塔尔羊][11] -Suggested read Ubuntu 14.04 Codenamed Trusty Tahr - -I’m definitely going to give it a try as my primary OS – fingers crossed. What about you? What do you think about the latest release? Feel free to let us know in the comments below. +我肯定会尝试一下,将 Zorin OS 作为我的主要操作系统-(手动狗头)。你呢?你觉得最新的版本怎么样?欢迎在下面的评论中告诉我们。 -------------------------------------------------------------------------------- From de786ac2df256ab4b89c69b369b40068e23697ad Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 4 Jul 2019 22:57:32 +0800 Subject: [PATCH 278/336] Update 20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md --- ...in OS Becomes Even More Awesome With Zorin 15 Release.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index ac11a72915..540214606f 100644 --- a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -39,7 +39,7 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 正如他们在[官方公告][6]中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到 – Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。 -[在手机应用商店中获取 ZORIN CONNECT][5] +[][5] #### 新的桌面主题(包含夜间模式!) @@ -47,7 +47,7 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 一提到 “夜间模式” 我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 -[推荐阅读 : Necuno 是一款新的智能手机开源 KDE][8] +[][8] 当我在任意界面深色模式时,我的眼睛都舒适,你不想来试试么? @@ -83,8 +83,6 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 **你觉得 Zorin 15 怎么样?** -[推荐阅读 Ubuntu 14.04 代号为值得信赖的塔尔羊][11] - 我肯定会尝试一下,将 Zorin OS 作为我的主要操作系统-(手动狗头)。你呢?你觉得最新的版本怎么样?欢迎在下面的评论中告诉我们。 -------------------------------------------------------------------------------- From ecf563d98535d8a8bc3795aac3289aba831cedea Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Thu, 4 Jul 2019 23:00:49 +0800 Subject: [PATCH 279/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=91=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原文中推广阅读的链接和文本已经删除 --- ...06 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md (100%) diff --git a/sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md similarity index 100% rename from sources/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md rename to translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md From 68ebf4060899f6ab98ec80db95483f27467de9cf Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 5 Jul 2019 00:51:42 +0800 Subject: [PATCH 280/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Bash?= =?UTF-8?q?=20Script=20to=20Monitor=20Messages=20Log=20(Warning,=20Error?= =?UTF-8?q?=20and=20Critical)=20on=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190705 Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux.md --- ... (Warning, Error and Critical) on Linux.md | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 sources/tech/20190705 Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux.md diff --git a/sources/tech/20190705 Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux.md b/sources/tech/20190705 Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux.md new file mode 100644 index 0000000000..d7799311d6 --- /dev/null +++ b/sources/tech/20190705 Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux.md @@ -0,0 +1,127 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux) +[#]: via: (https://www.2daygeek.com/linux-bash-script-to-monitor-messages-log-warning-error-critical-send-email/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + +Bash Script to Monitor Messages Log (Warning, Error and Critical) on Linux +====== + +There are many open source monitoring tools are currently available in market to monitor Linux systems performance. + +It will send an email alert when the system reaches the specified threshold limit. + +It monitors everything such as CPU utilization, Memory utilization, swap utilization, disk space utilization and much more. + +If you only have few systems and want to monitor them then writing a small shell script can make your task very easy. + +In this tutorial we have added a shell script to monitor Messages Log on Linux system. + +We had added many useful shell scripts in the past. If you want to check those, navigate to the below link. + + * **[How to automate day to day activities using shell scripts?][1]** + + + +This script will check **“warning, error and critical”** in the `/var/log/messages` file and trigger a mail to given email id, if it’s found anything related it. + +We can’t run this script frequently that may fill up your inbox if the server has many matching strings, instead we can run once in a day. + +To overcome this issue, i made the script to trigger an email in a different manner. + +If any given strings are found in the **“/var/log/messages”** file for yesterday’s date then the script will send an email alert to given email id. + +**Note:** You need to change the email id instead of ours. Also, you can change the Memory utilization threshold value as per your requirement. + +``` +# vi /opt/scripts/os-log-alert.sh + +#!/bin/bash + +#Set the variable which equal to zero + +prev_count=0 + +count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l) + +if [ "$prev_count" -lt "$count" ] ; then + +# Send a mail to given email id when errors found in log + +SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`"" + +# This is a temp file, which is created to store the email message. + +MESSAGE="/tmp/logs.txt" + +TO="[email protected]" + +echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE + +echo "Hostname: `hostname`" >> $MESSAGE + +echo -e "\n" >> $MESSAGE + +echo "+------------------------------------------------------------------------------------+" >> $MESSAGE + +echo "Error messages in the log file as below" >> $MESSAGE + +echo "+------------------------------------------------------------------------------------+" >> $MESSAGE + +grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE + +mail -s "$SUBJECT" "$TO" < $MESSAGE + +#rm $MESSAGE + +fi +``` + +Set an executable permission to `os-log-alert.sh` file. + +``` +$ chmod +x /opt/scripts/os-log-alert.sh +``` + +Finally add a cronjob to automate this. It will run everyday at 7'o clock. + +``` +# crontab -e +0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh +``` + +**Note:** You will be getting an email alert everyday at 7 o'clock, which is for yesterday's log. + +**Output:** You will be getting an email alert similar to below. + +``` +ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin. + ++-----------------------------------------------------+ +Error messages in the log file as below ++-----------------------------------------------------+ +Jul 3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000] +Jul 3 02:50:14 ns1 kernel: lmtp[8249]: segfault at 20 ip 00007f9cc05295e4 sp 00007ffc57bca1a0 error 4 in libdovecot-storage.so.0.0.0[7f9cc04df000+148000] +Jul 3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000] +Jul 3 15:45:54 ns1 pure-ftpd: ([email protected]) [WARNING] Authentication failed for user [daygeek] +Jul 3 16:25:36 ns1 pure-ftpd: ([email protected]) [WARNING] Sorry, cleartext sessions and weak ciphers are not accepted on this server.#012Please reconnect using TLS security mechanisms. +Jul 3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000] +``` + +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/linux-bash-script-to-monitor-messages-log-warning-error-critical-send-email/ + +作者:[Magesh Maruthamuthu][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.2daygeek.com/author/magesh/ +[b]: https://github.com/lujun9972 +[1]: https://www.2daygeek.com/category/shell-script/ From 73c7f2291379eff464642476114fcb6c55f7e3c0 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 5 Jul 2019 00:52:34 +0800 Subject: [PATCH 281/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Enable?= =?UTF-8?q?=20=E2=80=98Tap=20to=20click=E2=80=99=20on=20Ubuntu=20Login=20S?= =?UTF-8?q?creen=20[Quick=20Tip]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190705 Enable ‘Tap to click- on Ubuntu Login Screen -Quick Tip.md --- ... click- on Ubuntu Login Screen -Quick Tip.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 sources/tech/20190705 Enable ‘Tap to click- on Ubuntu Login Screen -Quick Tip.md diff --git a/sources/tech/20190705 Enable ‘Tap to click- on Ubuntu Login Screen -Quick Tip.md b/sources/tech/20190705 Enable ‘Tap to click- on Ubuntu Login Screen -Quick Tip.md new file mode 100644 index 0000000000..8c62453ef7 --- /dev/null +++ b/sources/tech/20190705 Enable ‘Tap to click- on Ubuntu Login Screen -Quick Tip.md @@ -0,0 +1,100 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Enable ‘Tap to click’ on Ubuntu Login Screen [Quick Tip]) +[#]: via: (https://itsfoss.com/enable-tap-to-click-on-ubuntu-login-screen/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +Enable ‘Tap to click’ on Ubuntu Login Screen [Quick Tip] +====== + +_**Brief: The tap to click option doesn’t work on the login screen in Ubuntu 18.04 GNOME desktop. In this tutorial, you’ll learn to enable the ‘tap to click’ on the Ubuntu login screen.**_ + +One of the first few things I do after installing Ubuntu is to make sure that tap to click has been enabled. As a laptop user, I prefer to tap the touchpad for making a left click. This is more convenient than using the left click button on the touchpad all the time. + +This is what happens when I have logged in and using the operating system. But if you are at the login screen, the tap to click doesn’t work and that’s an annoyance. + +On the [GDM login screen][1] in Ubuntu (or other distributions using GNOME desktop), you have to click the username in order to bring the password field. Now if you are habitual of tap to click, it doesn’t work on the login screen even if you have it enabled and use it after logging into the system. + +This is a minor annoyance but an annoyance nonetheless. The good news is that you can fix this annoyance.Let me show you how to do that in this quick tip. + +### Enabling tap to click on Ubuntu login screen + +![][2] + +You’ll have to use the terminal and a few commands here. I hope you are comfortable with it. + +[Open a terminal using Ctrl+Alt+T shortcut in Ubuntu][3]. Since Ubuntu 18.04 is still using X server, you need to enable it to connect to the [x server][4]. For that, you can add gdm to access control list. + +Switch to root user first. It’s required because you have to switch as gdm user later and you cannot do that as a non-root user. + +``` +sudo -i +``` + +[There is no password set for root user in Ubuntu][5]. You access it with your admin user account. So when asked for password, use your own password. You won’t see anything being typed on the screen when you type in your password. + +``` +xhost +SI:localuser:gdm +``` + +Here’s the output for me: + +``` +xhost +SI:localuser:gdm +localuser:gdm being added to access control list +``` + +Now run this command so that the the ‘user gdm’ has the correct tap to click setting. + +``` +gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true +``` + +If you see a warning like this: (process:6339): dconf-WARNING **: 19:52:21.217: Unable to open /root/.local/share/flatpak/exports/share/dconf/profile/user: Permission denied . Don’t worry. Just ignore it. + +[][6] + +Suggested read  How To Change Hostname on Ubuntu & Other Linux Distributions + +This will enable you to perform a tap to click on the login screen. Why were you not able to use tap to click when you made the changes in the system settings before? It’s because at the login screen, you haven’t selected your username yet. You get to use your account only when you select the user on the screen. This is why you had to use the user gdm and add the correct settings with it. + +Restart Ubuntu and you’ll see that you can now use the tap to select your user account now. + +#### Revert the changes + +If you are not happy with the tap to click on the Ubuntu login screen for some reason, you can revert the changes. + +You’ll have to perform all the steps you did in the previous section: switch to root, connect gdm with x server, switch to gdm user. But instead of the last command, you need to run this command: + +``` +gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click false +``` + +That’s it. + +As I said, it’s a tiny thing. I mean you can easily do a left click instead of the tap to click. It’s just a matter of one single click.However, it breaks the ‘continuity’ when you are forced to use the left click after a few taps. + +I hope you liked this quick little tweak. If you know some other cool tweaks, do share it with us. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/enable-tap-to-click-on-ubuntu-login-screen/ + +作者:[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://wiki.archlinux.org/index.php/GDM +[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/07/tap-to-click-on-ubuntu-login.jpg?ssl=1 +[3]: https://itsfoss.com/ubuntu-shortcuts/ +[4]: https://en.wikipedia.org/wiki/X.Org_Server +[5]: https://itsfoss.com/change-password-ubuntu/ +[6]: https://itsfoss.com/change-hostname-ubuntu/ From 64b07f8db1002b7288edd2ce0be3d23ebb90dbba Mon Sep 17 00:00:00 2001 From: DarkSun Date: Fri, 5 Jul 2019 00:56:42 +0800 Subject: [PATCH 282/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190704=20How=20?= =?UTF-8?q?to=20be=20good=20at=20creating=20and=20maintaining=20systems=20?= =?UTF-8?q?at-large?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190704 How to be good at creating and maintaining systems at-large.md --- ...eating and maintaining systems at-large.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/tech/20190704 How to be good at creating and maintaining systems at-large.md diff --git a/sources/tech/20190704 How to be good at creating and maintaining systems at-large.md b/sources/tech/20190704 How to be good at creating and maintaining systems at-large.md new file mode 100644 index 0000000000..f26b85e30f --- /dev/null +++ b/sources/tech/20190704 How to be good at creating and maintaining systems at-large.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to be good at creating and maintaining systems at-large) +[#]: via: (https://opensource.com/article/19/7/book-review-building-evolutionary-architectures) +[#]: author: (Mike Bursell https://opensource.com/users/mikecamel) + +How to be good at creating and maintaining systems at-large +====== +A book review of "Building Evolutionary Architectures: Support Constant +Change" for open source and security folks +![An open book][1] + +Initially, this article was simply a review of the book, but as I got into it, I realised that I wanted to talk about how the approach it describes is applicable to a couple of different groups (security folks and open source projects), and so I’ve gone with it. + +How, then, did I come across the book? I was attending a conference a few months ago (DeveloperWeek San Diego), and decided to go to one of the sessions because it looked interesting. The speaker was Dr. Rebecca Parsons, and I liked what she was talking about so much that I ordered this book, whose subject was the topic of her talk, to arrive at home by the time I would return a couple of days later. + +![Building Evolutionary Architectures: Support Constant Change][2] + +[_Building Evolutionary Architectures: Support Constant Change_][3] is not a book about securitym, and I'm a security guy, but it deals with security as one application of its approach, and very convincingly. The central issue that the authors—all employees of ThoughtWorks—identify is, simplified, that although we’re good at creating features for applications, we’re less good at creating, and then maintaining, broader properties of systems. This problem is compounded, they suggest, by the fast and ever-changing nature of modern development practices, where "enterprise architects can no longer rely on static planning". + +The alternative that they propose is to consider "fitness functions", "objectives you want your architecture to exhibit or move towards". Crucially, these are properties of the architecture—or system—rather than features or specific functionality. Tests should be created to monitor the specific functions, but they won’t be your standard unit tests, nor will they necessarily be "point in time" tests. Instead, they will measure a variety of issues, possibly over a period of time, to let you know whether your system is meeting the particular fitness functions you are measuring. There’s a lot of discussion of how to measure these fitness functions, but I would have liked even more. From my point of view, it was one of the most valuable topics covered. + +Frankly, the above might be enough to recommend the book, but there’s more. They advocate strongly for creating incremental change to meet your requirements (gradual, rather than major changes) and "evolvable architectures", encouraging you to realise that: + + 1. you may not meet all your fitness functions at the beginning; + 2. applications which may have met the fitness functions at one point may _cease_ to meet them later on, for various reasons; + 3. your architecture is likely to change over time; + 4. your requirements, and therefore the priority that you give to each fitness function, will change over time; + 5. even if your fitness functions remain the same, the ways in which you need to monitor them may change. + + + +All of these are, in my view, extremely useful insights for anybody designing and building a system. Combining them with architectural thinking is even more valuable. + +As is standard for modern O’Reilly books, there are examples throughout, including a worked fake consultancy journey of a particular company with specific needs, leading you through some of the practices in the book. At times, this felt a little contrived, but the mechanism is generally helpful. There were times when the book seemed to stray from its core approach—which is architectural, as per the title—into explanations through pseudo code, but these support one of the useful aspects of the book, which is giving examples of what architectures are more or less suited to the principles expounded in the more theoretical parts. Some readers may feel more at home with the theoretical, others with the more example-based approach (I lean towards the former), but all in all, it seems like an appropriate balance. Relating these to the impact of "architectural coupling" was particularly helpful, in my view. + +There is a useful grounding in some of the advice in Conway’s Law ("Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.") which led me to wonder how we could model open source projects—and their architectures—based on this perspective. There are also (as is also standard these days) patterns and anti-patterns: I would generally consider these a useful part of any book on design and architecture. + +### Why is this a book for security folks? + +The most important thing about this book, from my point of view as a security systems architect, is that it _isn’t_ about security. Security is mentioned, but is not considered core enough to the book to merit a mention in the appendix. The point, though, is that the security of a system—an embodiment of an architecture—is a perfect example of a fitness function. Taking this as a starting point for a project will help you do two things. + +First, you will avoid focussing on features and functionality, and look at the bigger picture. Second, you will consider what you _really_ need from security in the system, and how that translates into issues such as the security posture to be adopted, and the measurements you will take to validate it through the lifecycle. + +Possibly even more important than those two points is that it will force you to consider the priority of security in relation to other fitness functions (resilience, maybe, or ease of use?) and how the relative priorities will—and should—change over time. A realisation that we don’t live in a bubble, and that our priorities are not always that same as those of other stakeholders in a project, is always useful. + +### Why is this a book for open source folks? + +Very often—and for quite understandable and forgiveable reasons—the architectures of open source projects grow organically at first, needing major overhauls and refactoring at various stages of their lifecycles. This is not to say that this doesn’t happen in proprietary software projects as well, of course, but the sometimes frequent changes in open source projects' emphasis and requirements, the ebb and flow of contributors and contributions and the sometimes, um, reduced levels of documentation aimed at end users can mean that features are significantly prioritised over what we could think of as the core vision of the project. One way to remedy this would be to consider the appropriate fitness functions of the project, to state them upfront, and to have a regular cadence of review by the community, to ensure that they are: + + * still relevant; + * correctly prioritised at this stage in the project; + * actually being met. + + + +If any of the above come into question, it’s a good time to consider a wider review by the community, and maybe a refactoring or partial redesign of the project. + +Open source projects have—quite rightly—various different models of use and intended users. One of the happenstances that can negatively affect a project is when it is identified as a possible fit for a use case for which it was not originally intended. Academic software which is designed for accuracy over performance might not be a good fit for corporate research, for instance, in the same way that a project aimed at home users which prioritises minimal computing resources might not be appropriate for a high-availability enterprise roll-out. One of the ways of making this clear is by being very clear up-front about the fitness functions that you expect your project to meet—and, vice versa, about the fitness functions you are looking to fulfil when you are looking to select a project. It is easy to focus on features and functionality, and to overlook the more non-functional aspects of a system, and fitness functions allow us to make some informed choices about how to balance these decisions. + +_This article was originally posted on [Alice, Eve and Bob - a security blog][4]._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/book-review-building-evolutionary-architectures + +作者:[Mike Bursell][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/mikecamel +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/open_book_color.jpg?itok=I-8tNQOP (An open book) +[2]: https://opensource.com/sites/default/files/styles/medium/public/uploads/building-evolutionary-architectures.jpg?itok=UlyKLSxV (Building Evolutionary Architectures: Support Constant Change) +[3]: https://www.oreilly.com/library/view/building-evolutionary-architectures/9781491986356/ +[4]: https://aliceevebob.com/2019/06/25/building-evolutionary-architectures-for-security-and-for-open-source/ From e6fe1f36ba77a1f9cf6cb838bdd4789762056e08 Mon Sep 17 00:00:00 2001 From: lctt-bot Date: Thu, 4 Jul 2019 17:00:56 +0000 Subject: [PATCH 283/336] =?UTF-8?q?Revert=20"=E7=BF=BB=E8=AF=91=E8=AE=A4?= =?UTF-8?q?=E9=A2=86"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 191253c815756f842a783dd6f24d4dc082c225eb. --- .../20190523 Run your blog on GitHub Pages with Python.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 4763e5e215..1e3634a327 100644 --- 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 @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (QiaoN) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) @@ -213,7 +213,7 @@ via: https://opensource.com/article/19/5/run-your-blog-github-pages-python 作者:[Erik O'Shaughnessy][a] 选题:[lujun9972][b] -译者:[QiaoN](https://github.com/QiaoN) +译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 8398cc85a6cd2b981fb08ce61cf339847ecdcef6 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 5 Jul 2019 08:52:05 +0800 Subject: [PATCH 284/336] translated --- ...90627 How to use Tig to browse Git logs.md | 215 ----------------- ...90627 How to use Tig to browse Git logs.md | 216 ++++++++++++++++++ 2 files changed, 216 insertions(+), 215 deletions(-) delete mode 100644 sources/tech/20190627 How to use Tig to browse Git logs.md create mode 100644 translated/tech/20190627 How to use Tig to browse Git logs.md diff --git a/sources/tech/20190627 How to use Tig to browse Git logs.md b/sources/tech/20190627 How to use Tig to browse Git logs.md deleted file mode 100644 index e9dd941109..0000000000 --- a/sources/tech/20190627 How to use Tig to browse Git logs.md +++ /dev/null @@ -1,215 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to use Tig to browse Git logs) -[#]: via: (https://opensource.com/article/19/6/what-tig) -[#]: author: (Olaf Alders https://opensource.com/users/oalders/users/mbbroberg/users/marcobravo) - -How to use Tig to browse Git logs -====== -Tig is more than just a text-mode interface for Git. Here's how it can enhance your daily workflow. -![A person programming][1] - -If you work with Git as your version control system, you've likely already resigned yourself to the fact that Git is a complicated beast. It is a fantastic tool, but it can be cumbersome to navigate Git repositories. That's where a tool like [Tig][2] comes in. - -From the [Tig man page][3]: - -> Tig is an ncurses-based text-mode interface for git(1). It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands. - -This basically means that Tig provides a text-based user interface you can run in your terminal. Tig makes it easy to browse your Git logs, but it can do much more than just bounce you around from your last commit to a previous one. - -![Tig screenshot][4] - -Many of the examples in this quick introduction to Tig have been poached directly from its excellent man page. I highly recommend reading it to learn more. - -### Install Tig - - * Fedora and RHEL: **sudo dnf install tig** - * Ubuntu and Debian: **sudo apt install tig** - * MacOS: **brew install tig** - - - -See the official [installation instructions][5] for even more options. - -### Browse commits in your current branch - -If you want to browse the latest commits in your branch, enter: - - -``` -`tig` -``` - -That's it. This three-character command will launch a browser where you can navigate the commits in your current branch. You can think of it as a wrapper around **git log**. - -To navigate the output, you can use the Up and Down arrow keys to move from one commit to another. Pressing the Return/Enter key will open a vertical split with the contents of the chosen commit on the right-hand side. You can continue to browse up and down in your commit history on the left-hand side, and your changes will appear on the right. Use **k** and **j** to navigate up and down by line and **-** and the Space Bar to page up and down on the right-hand side. Use **q** to exit the right-hand pane. - -Searching on **tig** output is simple as well. Use **/** to search forward and **?** to search backward on both the left and right panes. - -![Searching Tig][6] - -That's enough to get you started navigating your commits. There are too many key bindings to cover here, but clicking **h** will display a Help menu where you can discover its navigation and command options. You can also use **/** and **?** to search the Help menu. Use **q** to exit Help. - -![Tig Help][7] - -### Browse revisions for a single file - -Since Tig is a wrapper around **git log**, it conveniently accepts the same arguments that can be passed to **git log**. For instance, to browse the commit history for a single file, enter: - - -``` -`tig README.md` -``` - -Compare this with the output of the Git command being wrapped to get a clearer view of how Tig enhances the output. - - -``` -`git log README.md` -``` - -To include the patches in the raw Git output, you can add a **-p** option: - - -``` -`git log -p README.md` -``` - -If you want to narrow the commits down to a specific date range, try something like this: - - -``` -`tig --after="2017-01-01" --before="2018-05-16" -- README.md` -``` - -Again, you can compare this with the raw Git version: - - -``` -`git log --after="2017-01-01" --before="2018-05-16" -- README.md` -``` - -### Browse who changed a file - -Sometimes you want to find out who made a change to a file and why. The command: - - -``` -`tig blame README.md` -``` - -is essentially a wrapper around **git blame**. As you would expect, it allows you to see who the last person was to edit a given line, and it also allows you to navigate to the commit that introduced the line. This is somewhat like the **:Gblame** command Vim's **vim-fugitive** plugin provides. - -### Browse your stash - -If you're like me, you may have a pile of edits in your stash. It's easy to lose track of them. You can view the latest item in your stash via:  - - -``` -`git stash show -p stash@{0}` -``` - -You can find the second most recent item via: - - -``` -`git stash show -p stash@{1}` -``` - -and so on. If you can recall these commands whenever you need them, you have a much sharper memory than I do. - -As with the Git commands above, Tig makes it easy to enhance your Git output with a simple invocation: - - -``` -`tig stash` -``` - -Try issuing this command in a repository with a populated stash. You'll be able to browse _and search_ your stash items, giving you a quick overview of everything you saved for a rainy day. - -### Browse your refs - -A Git ref is the hash of something you have committed. This includes files as well as branches. Using the **tig refs** command allows you to browse all of your refs and drill down to specific commits. - - -``` -`tig refs` -``` - -When you're finished, use **q** to return to a previous menu. - -### Browse git status - -If you want to view which files have been staged and which are untracked, use **tig status**, a wrapper around **git status**. - -![Tig status][8] - -### Browse git grep - -You can use the **grep** command to search for expressions in text files. The command **tig grep** allows you to navigate the output of **git grep**. For example: - - -``` -`tig grep -i foo lib/Bar` -``` - -will navigate the output of a case-insensitive search for **foo** in the **lib/Bar** directory. - -### Pipe output to Tig via STDIN - -If you are piping a list of commit IDs to Tig, you must use the **\--stdin** flag so that **tig show** reads from stdin. Otherwise, **tig show** launches without input (rendering an empty screen). - - -``` -`git rev-list --author=olaf HEAD | tig show --stdin` -``` - -### Add custom bindings - -You can customize Tig with an [rc][9] file. Here's how you can configure Tig to your liking, using the example of adding some helpful custom key bindings. - -Create a file in your home directory called **.tigrc**. Open **~/.tigrc** in your favorite editor and add: - - -``` -# Apply the selected stash -bind stash a !?git stash apply %(stash) - -# Drop the selected stash item -bind stash x !?git stash drop %(stash) -``` - -Run **tig stash** to browse your stash, as above. However, with these bindings in place, you can press **a** to apply an item from the stash to your repository and **x** to drop an item from the stash. Keep in mind that you'll need to perform these commands when browsing the stash _list_. If you're browsing a stash _item_, enter **q** to exit that view and press **a** or **x** to get the effect you want. - -For more information, you can read more about [Tig key bindings][10]. - -### Wrapping up - -I hope this has been a helpful demonstration of how Tig can enhance your daily workflow. Tig can do even more powerful things (such as staging lines of code), but that's outside the scope of this introductory article. There's enough information here to make you dangerous, but there's still more to explore. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/what-tig - -作者:[Olaf Alders][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/oalders/users/mbbroberg/users/marcobravo -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_keyboard_laptop_development_code_woman.png?itok=vbYz6jjb (A person programming) -[2]: https://jonas.github.io/tig/ -[3]: http://manpages.ubuntu.com/manpages/bionic/man1/tig.1.html -[4]: https://opensource.com/sites/default/files/uploads/tig.jpg (Tig screenshot) -[5]: https://jonas.github.io/tig/INSTALL.html -[6]: https://opensource.com/sites/default/files/uploads/tig-search.png (Searching Tig) -[7]: https://opensource.com/sites/default/files/uploads/tig-help.png (Tig Help) -[8]: https://opensource.com/sites/default/files/uploads/tig-status.png (Tig status) -[9]: https://en.wikipedia.org/wiki/Run_commands -[10]: https://github.com/jonas/tig/wiki/Bindings diff --git a/translated/tech/20190627 How to use Tig to browse Git logs.md b/translated/tech/20190627 How to use Tig to browse Git logs.md new file mode 100644 index 0000000000..16993a0012 --- /dev/null +++ b/translated/tech/20190627 How to use Tig to browse Git logs.md @@ -0,0 +1,216 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use Tig to browse Git logs) +[#]: via: (https://opensource.com/article/19/6/what-tig) +[#]: author: (Olaf Alders https://opensource.com/users/oalders/users/mbbroberg/users/marcobravo) + +如何使用 Tig 浏览 Git 日志 +====== +Tig不仅仅是 Git 的文本界面。以下是它如何增强你的日常工作流程。 +![A person programming][1] + +如果你使用 Git 作为你的版本控制系统,你可能已经让自己接受 Git 是一个复杂的野兽。它是一个很棒的工具,但在 Git 仓库查找可能很麻烦。因此像 [Tig][2] 这样的工具出现了。 + +来自 [Tig 手册页][3]: + +> Tig 是 git(1) 的基于 ncurses 的文本界面。它主要用作 Git 仓库浏览器,但也有助于在块级别暂存提交更改,并显示各种 Git 命令的输出。 + +这基本上意味着 Tig 提供了一个可以在终端中运行的基于文本的用户界面。Tig 可以让你轻松浏览你的 Git 日志,但它可以做的远不止让你从最后的提交跳到前一个提交。 + +![Tig screenshot][4] + +这篇快速入门的 Tig 中的许多例子都是直接从其出色的手册页中拿出来的。我强烈建议你阅读它以了解更多信息。 + +### 安装 Tig + + * Fedora 和 RHEL: **sudo dnf install tig** + * Ubuntu 和 Debian: **sudo apt install tig** + * MacOS:**:brew install tig** + + + +有关更多选项,请参阅官方[安装说明][5]。 + +### 浏览当前分支中的提交 + +如果要浏览分支中的最新提交,请输入: + + +``` +`tig` +``` + +这是这样。这个三字符命令将启动一个浏览器,你可以在其中导航当前分支中的提交。你可以将其视为 **git log** 的封装器。 + +要浏览输出,可以使用向上和向下箭头键从一个提交移动到另一个提交。按回车键将会垂直分割窗口,右侧包含所选提交的内容。你可以继续在左侧的提交历史记录中上下浏览,你的更改将显示在右侧。使用 **k** 和 **j** 逐行上下浏览,**-** 和空格键在右侧上下翻页。使用 **q** 退出右侧窗格。 + +搜索 **tig** 输出也很简单。使用 **/** 向前搜索,使用 **?** 在左右窗格中向后搜索。 + +![Searching Tig][6] + +这足以让你开始浏览你的提交。这里有很多的键绑定,但单击 **h** 将显示“帮助”菜单,你可以在其中发现其导航和命令选项。你还可以使用 **/** 和 **?** 来搜索“帮助”菜单。使用 **q** 退出帮助。 + +![Tig Help][7] + +### 浏览单个文件的修改 + +由于 Tig 是 **git log** 的封装器,它可以方便地接受可以传递给 **git log** 的相同参数。例如,要浏览单个文件的提交历史记录,请输入: + + +``` +`tig README.md` +``` + +将其与被封装的 Git 命令的输出进行比较,以便更清楚地了解 Tig 如何增强输出。 + + +``` +`git log README.md` +``` + +要在原始 Git 输出中包含补丁,你可以添加 **-p** 选项: + + +``` +`git log -p README.md` +``` + +如果要将提交范围缩小到特定日期范围,请尝试以下操作: + + +``` +`tig --after="2017-01-01" --before="2018-05-16" -- README.md` +``` + +再一次,你可以将其与原始的 Git 版本进行比较: + + +``` +`git log --after="2017-01-01" --before="2018-05-16" -- README.md` +``` + +### 浏览谁更改了文件 + +有时你想知道谁对文件进行了更改以及原因。命令: + + +``` +`tig blame README.md` +``` + +本质上是 **git blame** 的封装。正如你 所期望的那样,它允许你查看谁是编辑指定行的最后一人,它还允许你查看到引入该行的提交。这有点像 vim 的 **vim-fugitive**插件提供的**:Gblame**命令。 + +### 浏览你的暂存 + +如果你像我一样,你可能会在你的暂存处有许多编辑。你很容易忘记它们。你可以通过以下方式查看暂存处中的最新项目: + + +``` +`git stash show -p stash@{0}` +``` + +你可以通过以下方式找到第二个最新项目: + + +``` +`git stash show -p stash@{1}` +``` + +以此类推。如果你在需要它们时调用这些命令,那么你会有比我更清晰的内存。 + + +与上面的 Git 命令一样,Tig 可以通过简单的调用轻松增强你的 Git 输出: + + +``` +`tig stash` +``` + +尝试在有暂存的仓库中执行此命令。你将能够浏览_并搜索_你的暂存项,快速浏览你的那些修改。 + +### 浏览你的引用 + +git ref 是你提交的东西的哈希值。这包括文件和分支。使用 **tig refs** 命令可以浏览所有引用并深入查看特定提交。 + + +``` +`tig refs` +``` + +完成后,使用 **q** 回到前面的菜单。 + +### 浏览 git 状态 + +如果要查看哪些文件已被暂存,哪些文件未被跟踪,请使用 **tig status**,它是 **git status** 的封装。 + +![Tig status][8] + +### 浏览 git grep + +你可以使用 **grep** 命令在文本文件中搜索表达式。命令 **tig grep** 允许你导览 **git grep** 的输出。例如: + + +``` +`tig grep -i foo lib/Bar` +``` + +它会导览 **lib/Bar** 目录中以大小写敏感的方式搜索 **foo** 的输出。 + +### 通过标准输入管道输出给 Tig + +如果要将提交 ID 列表传递给 Tig,那么必须使用 **\--stdin** 标志,以便 **tig show** 从标准输入读取。否则,**tig show** 会在没有输入的情况下启动(出现空白屏幕)。 + + +``` +`git rev-list --author=olaf HEAD | tig show --stdin` +``` + +### 添加自定义绑定 + +你可以使用 [rc][9] 文件自定义 Tig。以下是如何根据自己的喜好添加一些有用的自定义键绑定的示例。 + +在主目录中创建一个名为 **.tigrc** 的文件。在你喜欢的编辑器中打开 **~/.tigrc** 并添加: + + +``` +# Apply the selected stash +bind stash a !?git stash apply %(stash) + +# Drop the selected stash item +bind stash x !?git stash drop %(stash) +``` + +如上所述,运行 **tig stash** 以浏览你的暂存。但是,通过这些绑定,你可以按 **a**将暂存中的项目应用到仓库,并按 **x** 从暂存中删除项目。请记住,你要在浏览暂存_列表_时,才能执行这些命令。如果你正在浏览暂存_项_,请输入 **q** 退出该视图,然后按 **a** 或 **x** 以获得所需效果。 + +有关更多信息,你可以阅读有关 [Tig 键绑定][10]。 + +### 总结 + +我希望这有助于演示 Tig 如何增强你的日常工作流程。Tig 可以做更强大的事情(比如暂存代码行),但这超出了这篇介绍性文章的范围。这里有足够的让你危险的信息,但还有更多值得探索的地方。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/what-tig + +作者:[Olaf Alders][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/oalders/users/mbbroberg/users/marcobravo +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_keyboard_laptop_development_code_woman.png?itok=vbYz6jjb (A person programming) +[2]: https://jonas.github.io/tig/ +[3]: http://manpages.ubuntu.com/manpages/bionic/man1/tig.1.html +[4]: https://opensource.com/sites/default/files/uploads/tig.jpg (Tig screenshot) +[5]: https://jonas.github.io/tig/INSTALL.html +[6]: https://opensource.com/sites/default/files/uploads/tig-search.png (Searching Tig) +[7]: https://opensource.com/sites/default/files/uploads/tig-help.png (Tig Help) +[8]: https://opensource.com/sites/default/files/uploads/tig-status.png (Tig status) +[9]: https://en.wikipedia.org/wiki/Run_commands +[10]: https://github.com/jonas/tig/wiki/Bindings From 25fa9ebea3a93d24407a0ffb757204a744f52174 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 5 Jul 2019 08:59:33 +0800 Subject: [PATCH 285/336] translating --- ...90628 Undo releases Live Recorder 5.0 for Linux debugging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md index 4e383f1fe6..2954e5fac5 100644 --- a/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md +++ b/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 510a419e5ef1fc31095a40a302de3f366bbe0d57 Mon Sep 17 00:00:00 2001 From: qfzy1233 Date: Fri, 5 Jul 2019 11:05:14 +0800 Subject: [PATCH 286/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E5=8E=9F=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...80406 MX Linux- A Mid-Weight Distro Focused on Simplicity.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20180406 MX Linux- A Mid-Weight Distro Focused on Simplicity.md b/sources/tech/20180406 MX Linux- A Mid-Weight Distro Focused on Simplicity.md index 8cf35ea8bf..046bf9f0e8 100644 --- a/sources/tech/20180406 MX Linux- A Mid-Weight Distro Focused on Simplicity.md +++ b/sources/tech/20180406 MX Linux- A Mid-Weight Distro Focused on Simplicity.md @@ -1,3 +1,5 @@ +translating by qfzy1233 + MX Linux: A Mid-Weight Distro Focused on Simplicity ====== From 204aa080a10a627340186b24790b1e27ab93b1b7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 11:21:19 +0800 Subject: [PATCH 287/336] PRF @qfzy1223 --- ...Even More Awesome With Zorin 15 Release.md | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index 540214606f..f81f9a2238 100644 --- a/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (qfzy1233) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Zorin OS Becomes Even More Awesome With Zorin 15 Release) @@ -10,24 +10,25 @@ 随着 Zorin 15 的发布,Zorin OS 变得更为强大 ====== +![](https://img.linux.net.cn/data/attachment/album/201907/05/112128zmz2n2csi6h7y6s2.png) + 长久以来 Zorin OS 一直在 [初学者适用的Linux发行版排行][1] 中占有一席之地。的确,它可能不是最受欢迎的,但是对于从 Windows 阵营转向 Linux 的用户而言,它一定是最好的一个发行版。 -我还记得,在几年前,我的一位朋友一直坚持让我安装[Zorin OS][2]。就我个人而言,当时我并不喜欢它的 UI 风格。但是,现如今 Zorin OS 15 发布了,这也让我有了更多的理由安装并将它作为我日常的操作系统。 +我还记得,在几年前,我的一位朋友一直坚持让我安装 [Zorin OS][2]。就我个人而言,当时我并不喜欢它的 UI 风格。但是,现如今 Zorin OS 15 发布了,这也让我有了更多的理由安装并将它作为我日常的操作系统。 不要担心,在这篇文章里,我会向你介绍你所需要了解的一切。 - ### Zorin 15 中的新特性 -让我们来看一下最新版本的 Zorin 有哪些主要的改变。Zorin 15 以 Ubuntu 18.04.2 为底层,因此带来了许多性能上的提升。除此之外,也有许多的 UI (用户界面)得到了改进。 +让我们来看一下最新版本的 Zorin 有哪些主要的改变。Zorin 15 是基于 Ubuntu 18.04.2 的,因此带来了许多性能上的提升。除此之外,也有许多 UI(用户界面)的改进。 #### Zorin Connect ![Zorin Connect][3] -Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的是安卓设备,那你一定会喜欢这一功能。类似于[PushBullet][4](LCTT译注:PushBullet-子弹推送,一款跨平台推送工具),[Zorin Connect][5]会提升你的手机和桌面一体化的体验。 +Zorin OS 15 最主要的一个亮点就是 —— Zorin Connect。如果你使用的是安卓设备,那你一定会喜欢这一功能。类似于 [PushBullet][4](LCTT 译注:PushBullet,子弹推送,一款跨平台推送工具), [Zorin Connect][5] 会提升你的手机和桌面一体化的体验。 -你可以在桌面上同步智能手机的通知,同时还可以回复它。最要命的是,你甚至可以回复短信并查看这部分对话。 +你可以在桌面上同步智能手机的通知,同时还可以回复它。甚至,你可以回复短信并查看对话。 总的来说,你可以体验到以下功能: @@ -35,13 +36,11 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 * 将你的手机作为电脑的遥控器 * 使用手机控制电脑上媒体的播放,并且当有来电接入时自动停止播放 - - -正如他们在[官方公告][6]中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到 – Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。 +正如他们在[官方公告][6]中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到:Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。 [][5] -#### 新的桌面主题(包含夜间模式!) +#### 新的桌面主题(包含夜间模式!) ![Zorin 夜间模式][7] @@ -49,15 +48,15 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 [][8] -当我在任意界面深色模式时,我的眼睛都舒适,你不想来试试么? +当我启用了界面的深色模式时,我的眼睛感到如此舒适,你不想来试试么? -它不单单是一个深色的主题,而是 UI 更干净直观,并且带有恰到好处的新动画。你可以从Zorin 内置的外观应用程序里找到所有的相关内建的所有设置。 +它不单单是一个深色的主题,而是 UI 更干净直观,并且带有恰到好处的新动画。你可以从 Zorin 内置的外观应用程序里找到所有的相关设置。 #### 自适应背景调整 & 深色浅色模式 你可以选择让桌面背景根据一天中每小时的环境亮度进行自动调整。此外,如果你想避免蓝光给眼睛带来伤害,你可以使用夜间模式。 -#### To do app +#### 代办事项应用 ![Todo][9] @@ -65,25 +64,25 @@ Zorin OS 15 最主要的一个亮点就是 - Zorin Connect。如果你使用的 #### 还有更多么? -是的!其他主要的变化包括对 Flatpak 的支持,支持平板笔记本二合一电脑的触摸布局,DND 模式,以及一些重新设计的应用程序(设置,Libre Office),以此来给你更好的用户体验。 +是的!其他主要的变化包括对 Flatpak 的支持,支持平板笔记本二合一电脑的触摸布局,DND 模式,以及一些重新设计的应用程序(设置、Libre Office),以此来给你更好的用户体验。 -如果你想要了解所有更新和改动的详细信息,你可以查看[官方公告][6]。如果你已经是Zorin的用户,你应该已经注意到他们他们的网站已经启用了一个全新的外观。 +如果你想要了解所有更新和改动的详细信息,你可以查看[官方公告][6]。如果你已经是 Zorin 的用户,你应该已经注意到他们的网站也已经启用了一个全新的外观。 ### 下载 Zorin OS 15 -**注释** : _今年的晚些时候将会推出从 Zorin OS 12 直升 15 版本而不需要重新安装的升级包。_ +**注释** : 今年的晚些时候将会推出从 Zorin OS 12 直升 15 版本而不需要重新安装的升级包。 -为了防止您不够了解,Zorin OS有三个版本—旗舰版本、核心板和轻量版。 +提示一下,Zorin OS 有三个版本:旗舰版本、核心板和轻量版。 -如果你想支持开发者和项目,同时解锁 Zorin OS 全部的功能,你可以花39美元购买旗舰版本。 +如果你想支持开发者和项目,同时解锁 Zorin OS 全部的功能,你可以花 39 美元购买旗舰版本。 -如果你只是想要一些基本功能,核心版就可以了(你可以免费下载)。如果是情况下,比如如果你有一台旧电脑,那么你可以使用轻量版。 +如果你只是想要一些基本功能,核心版就可以了(你可以免费下载)。如果是这种情况,比如你有一台旧电脑,那么你可以使用轻量版。 -[下载 ZORIN OS 15][10] +- [下载 ZORIN OS 15][10] -**你觉得 Zorin 15 怎么样?** +你觉得 Zorin 15 怎么样? -我肯定会尝试一下,将 Zorin OS 作为我的主要操作系统-(手动狗头)。你呢?你觉得最新的版本怎么样?欢迎在下面的评论中告诉我们。 +我肯定会尝试一下,将 Zorin OS 作为我的主要操作系统 -(手动狗头)。你呢?你觉得最新的版本怎么样?欢迎在下面的评论中告诉我们。 -------------------------------------------------------------------------------- @@ -91,8 +90,8 @@ via: https://itsfoss.com/zorin-os-15-release/ 作者:[Ankush Das][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[qfzy1233](https://github.com/qfzy1233) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -100,12 +99,12 @@ via: https://itsfoss.com/zorin-os-15-release/ [b]: https://github.com/lujun9972 [1]: https://itsfoss.com/best-linux-beginners/ [2]: https://zorinos.com/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/zorin-connect.jpg?fit=800%2C473&ssl=1 +[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/zorin-connect.jpg [4]: https://www.pushbullet.com/ [5]: https://play.google.com/store/apps/details?id=com.zorinos.zorin_connect&hl=en_IN [6]: https://zoringroup.com/blog/2019/06/05/zorin-os-15-is-here-faster-easier-more-connected/ -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/zorin-dark-mode.jpg?fit=722%2C800&ssl=1 +[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/zorin-dark-mode.jpg [8]: https://itsfoss.com/necunos-linux-smartphone/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/Todo.jpg?fit=800%2C652&ssl=1 +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/06/Todo.jpg [10]: https://zorinos.com/download/ [11]: https://itsfoss.com/ubuntu-1404-codenamed-trusty-tahr/ From 7e752fdab9cb2288eadc1add925d933cb801cba8 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 11:22:01 +0800 Subject: [PATCH 288/336] PUB @qfzy1223 https://linux.cn/article-11058-1.html --- ...orin OS Becomes Even More Awesome With Zorin 15 Release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md (98%) diff --git a/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md similarity index 98% rename from translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md rename to published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index f81f9a2238..0d24af1b7f 100644 --- a/translated/news/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (qfzy1233) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11058-1.html) [#]: subject: (Zorin OS Becomes Even More Awesome With Zorin 15 Release) [#]: via: (https://itsfoss.com/zorin-os-15-release/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From 497680a1afa63537e9d6dd1c4e74857d6b381eea Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 12:14:36 +0800 Subject: [PATCH 289/336] PRF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @chen-ni 翻译的很好 --- ...edora- Which One Should You Use and Why.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md index 5850ac7963..910b14a3fb 100644 --- a/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md +++ b/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Ubuntu or Fedora: Which One Should You Use and Why) @@ -10,9 +10,9 @@ 你应该选择 Ubuntu 还是 Fedora? ====== -_**摘要:选择 Ubuntu 还是 Fedora?它们的区别是什么?哪一个更好?你应该使用哪一个?看看这篇对比 Ubuntu 和 Fedora 的文章吧。**_ +> 选择 Ubuntu 还是 Fedora?它们的区别是什么?哪一个更好?你应该使用哪一个?看看这篇对比 Ubuntu 和 Fedora 的文章吧。 -Ubuntu 和 Fedora 都是最流行的 Linux 发行版之一,在两者之间做出选择实非易事。在这篇文章里,我会对比一下 Ubuntu 和 Fedora 的不同特点,帮助你进行决策。 +[Ubuntu][1] 和 [Fedora][2] 都是最流行的 Linux 发行版之一,在两者之间做出选择实非易事。在这篇文章里,我会对比一下 Ubuntu 和 Fedora 的不同特点,帮助你进行决策。 请注意,这篇文章主要是从桌面版的角度进行对比的。Fedora 或者 Ubuntu 针对容器的特殊版本不会被考虑在内。 @@ -57,7 +57,7 @@ Ubuntu 和 Fedora 默认都使用 GNOME 桌面环境。 ![GNOME Desktop in Fedora][6] -Fedora 使用的是 stock GNOME 桌面,而 Ubuntu 则在此基础上做了个性化调整,让它看起来就像 Ubuntu 之前使用的 Unity 桌面环境。 +Fedora 使用的是原装的 GNOME 桌面,而 Ubuntu 则在此基础上做了个性化调整,让它看起来就像 Ubuntu 之前使用的 Unity 桌面环境。 ![GNOME desktop customized by Ubuntu][7] @@ -69,7 +69,7 @@ Fedora 通过 [Fedora Spins][8] 的方式提供了一些不同桌面环境的版 #### 软件包管理和可用软件数量 -Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用程序、库,以及其它所需代码),而 Fedora 使用 DNF 软件包管理器。 +Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用程序、库,以及其它所需编解码器),而 Fedora 使用 DNF 软件包管理器。 [][9] @@ -77,7 +77,7 @@ Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用 一些第三方软件开发者为 Linux 提供像 .exe 文件一样可以点击安装的软件包。在 Ubuntu 里这些软件包是 .deb 格式的,在 Fedora 里是 .rpm 格式的。 -大多数软件供应商都为 Linux 用户提供 DEM 和 RPM 文件,但是我也经历过供应商只提供 DEB 文件的情况。比如说 SEO 工具 [Screaming Frog][11] 就只提供 DEB 软件包。反过来,一个软件只有 RPM 格式但是没有 DEB 格式这种情况就极其罕见了。 +大多数软件供应商都为 Linux 用户提供 DEB 和 RPM 文件,但是我也经历过供应商只提供 DEB 文件的情况。比如说 SEO 工具 [Screaming Frog][11] 就只提供 DEB 软件包。反过来,一个软件只有 RPM 格式但是没有 DEB 格式这种情况就极其罕见了。 #### 硬件支持 @@ -113,9 +113,9 @@ Fedora 则是红帽公司的一个社区项目。红帽公司是一个专注于 #### 在背后支持的企业 -Ubuntu 和 Fedora 都有来自母公司的支持。Ubuntu 源自 [Canonical][21] 公司,而 Fedora 源自 [红帽公司][22](现在是 [IBM 的一部分][23])。背后企业的支持非常重要,因为可以确保 Linux 发行版良好的维护。 +Ubuntu 和 Fedora 都有来自母公司的支持。Ubuntu 源自 [Canonical][21] 公司,而 Fedora 源自 [红帽公司][22](现在是 [IBM 的一部分][23])。背后企业的支持非常重要,因为可以确保 Linux 发行版良好的维护。 -有一些发行版是由一群独立的业余爱好者们共同创建的,但是在工作负荷之下经常会崩溃。你也许见过一些还算比较流行的发行版项目仅仅是因为这个原因而终止了。很多这样的发行版由于开发者没有足够的业余时间可以投入到项目上而不得不终止,比如 [Antergos][24] 和 Korora。 +有一些发行版是由一群独立的业余爱好者们共同创建的,但是在工作压力之下经常会结束。你也许见过一些还算比较流行的发行版项目仅仅是因为这个原因而终止了。很多这样的发行版由于开发者没有足够的业余时间可以投入到项目上而不得不终止,比如 [Antergos][24] 和 Korora。 Ubuntu 和 Fedora 的背后都有基于 Linux 的企业的支持,这让它们比其它独立的发行版更胜一筹。 @@ -131,7 +131,7 @@ Fedora 同样有服务端版本,并且也有人在使用。但是大多数系 学习 Fedora 可以更好地帮助你使用红帽企业级 Linux(RHEL)。RHEL 是一个付费产品,你需要购买订阅才可以使用。如果你希望在服务器上运行一个和 Fedora 或者红帽类似的操作系统,我推荐使用 CentOS。[CentOS][26] 同样是红帽公司附属的一个社区项目,但是专注于服务端。 -#### 结论 +### 结论 你可以看到,Ubuntu 和 Fedora 有很多相似之处。不过就可用软件数量、驱动安装和线上支持来说,Ubuntu 的确更有优势。**Ubuntu 也因此成为了一个更好的选择,尤其是对于没有经验的 Linux 新手而言。** @@ -147,8 +147,8 @@ via: https://itsfoss.com/ubuntu-vs-fedora/ 作者:[Abhishek Prakash][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[chen-ni](https://github.com/chen-ni) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From b074a0a727a912ca20a934b7b9c0ccce9302a307 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 12:15:05 +0800 Subject: [PATCH 290/336] PUB @chen-ni https://linux.cn/article-11059-1.html --- ...0701 Ubuntu or Fedora- Which One Should You Use and Why.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md (99%) diff --git a/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md similarity index 99% rename from translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md rename to published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md index 910b14a3fb..af00aa2e34 100644 --- a/translated/tech/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md +++ b/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11059-1.html) [#]: subject: (Ubuntu or Fedora: Which One Should You Use and Why) [#]: via: (https://itsfoss.com/ubuntu-vs-fedora/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) From 1b426dd98f8dca4800e7083f198bee570bc958ac Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 13:12:31 +0800 Subject: [PATCH 291/336] PRF @lujun9972 --- ... Tray Indicator For Your Tasks on Linux.md | 114 ++++++++---------- 1 file changed, 49 insertions(+), 65 deletions(-) diff --git a/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md b/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md index a3efed0db0..3d746e39fd 100644 --- a/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md +++ b/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (lujun9972) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Create a Custom System Tray Indicator For Your Tasks on Linux) @@ -10,17 +10,17 @@ 在 Linux 上为你的任务创建一个自定义的系统托盘指示器 ====== -时至今日系统托盘图标依然很有用。只需要右击图标,然后选择想要的动作即可,你可以大幅简化你的生活并且减少日常行为中的大量无用的点击。 +系统托盘图标如今仍是一个很神奇的功能。只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击。 -一说到有用的系统托盘图标,我们很容易就想到 Skype,Dropbox 和 VLC: +一说到有用的系统托盘图标,我们很容易就想到 Skype、Dropbox 和 VLC: -![Create a Custom System Tray Indicator For Your Tasks on Linux 11][1] +![Create a Custom System Tray Indicator For Your Tasks on Linux][1] -然而系统托盘图标实际上要更有用得多; 你可以根据自己的需求创建自己的系统托盘图标。本指导将会教你通过简单的几个步骤来实现这一目的。 +然而系统托盘图标实际上要更有用得多;你可以根据自己的需求创建自己的系统托盘图标。本指导将会教你通过简单的几个步骤来实现这一目的。 ### 前置条件 -我们将要用 Python 来实现一个自定义的系统托盘指示器。Python 默认在所有主流的 Linux 发行版中都有安装,因此你只需要确定一下它已经确实被安装好了(版本为 2.7)。另外,我们还需要安装好 gir1.2-appindicator3 包。该库能够让我们很容易就能创建系统图标指示器。 +我们将要用 Python 来实现一个自定义的系统托盘指示器。Python 可能已经默安装在所有主流的 Linux 发行版中了,因此你只需要确定一下它已经被安装好了(此处使用版本为 2.7)。另外,我们还需要安装好 `gir1.2-appindicator3` 包。该库能够让我们很容易就能创建系统图标指示器。 在 Ubuntu/Mint/Debian 上安装: @@ -34,50 +34,45 @@ sudo apt-get install gir1.2-appindicator3 sudo dnf install libappindicator-gtk3 ``` -对于其他发行版,只需要搜索包含 appindicator 的包就行了。 +对于其他发行版,只需要搜索包含 “appindicator” 的包就行了。 -在 GNOME Shell 3.26 开始,系统托盘图标被删除了。你需要安装 [这个扩展 ][2] (或者其他扩展) 来为桌面启用该功能。否则你无法看到我们创建的指示器。 +在 GNOME Shell 3.26 开始,系统托盘图标被删除了。你需要安装 [这个扩展][2](或者其他扩展)来为桌面启用该功能。否则你无法看到我们创建的指示器。 ### 基础代码 -下面是指示器的基础代码: +下面是该指示器的基础代码: ``` #!/usr/bin/python import os from gi.repository import Gtk as gtk, AppIndicator3 as appindicator - def main(): - indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) - indicator.set_status(appindicator.IndicatorStatus.ACTIVE) - indicator.set_menu(menu()) - gtk.main() - + indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) + indicator.set_status(appindicator.IndicatorStatus.ACTIVE) + indicator.set_menu(menu()) + gtk.main() def menu(): - menu = gtk.Menu() - - command_one = gtk.MenuItem('My Notes') - command_one.connect('activate', note) - menu.append(command_one) - - exittray = gtk.MenuItem('Exit Tray') - exittray.connect('activate', quit) - menu.append(exittray) - - menu.show_all() - return menu - + menu = gtk.Menu() + + command_one = gtk.MenuItem('My Notes') + command_one.connect('activate', note) + menu.append(command_one) + exittray = gtk.MenuItem('Exit Tray') + exittray.connect('activate', quit) + menu.append(exittray) + + menu.show_all() + return menu + def note(_): - os.system("gedit $HOME/Documents/notes.txt") - + os.system("gedit $HOME/Documents/notes.txt") def quit(_): - gtk.main_quit() - + gtk.main_quit() if __name__ == "__main__": - main() + main() ``` -我们待会会解释一下代码是怎么工作的。但是现在,让我们将该文本保存为 tray.py,然后使用 Python 运行之: +我们待会会解释一下代码是怎么工作的。但是现在,让我们将该文本保存为 `tray.py`,然后使用 Python 运行之: ``` python tray.py @@ -87,38 +82,27 @@ python tray.py ![Create a Custom System Tray Indicator For Your Tasks on Linux 13][3] -现在,让我们解释一下魔术的原理: +现在,让我们解释一下这个魔法的原理: * 前三行代码仅仅用来指明 Python 的路径并且导入需要的库。 - - * def main() : 此为指示器的主函数。该函数的代码用来初始化并创建指示器。 - - * indicator = appindicator.Indicator.new(“customtray”,“semi-starred-symbolic”,appindicator.IndicatorCategory.APPLICATION_STATUS) : 这里我们指明创建一个名为 `customtray` 的指示器。这是指示器的唯一名称这样系统就不会与其他运行中的指示器搞混了。同时我们使用名为 `semi-starred-symbolic` 的图标作为指示器的默认图标。你可以将之改成任何其他值; 比如 `firefox` (如果你希望该指示器使用 FireFox 的图标),或任何其他希望的图标名。最后与 `APPLICATION_STATUS` 相关的部分是指明指示器类别/范围的常规代码。 - - * `indicator.set_status(appindicator.IndicatorStatus.ACTIVE)` : 这一行激活指示器。 - - * `indicator.set_menu(menu())` : 这里我的是我们想使用 `menu()` 函数 (我们会在后面定义) 来为我们的指示器创建菜单项。这很重要,可以让你右击指示器后看到一个可以实施行为的列别。 - - * `gtk.main()` : 运行 GTK 主循环。 - - * 在 `menu()` 中我们定义了想要指示器提供的行为或项目。`command_one = gtk.MenuItem(‘My Notes’)` 仅仅使用文本 “My notes” 来初始化第一个菜单项,接下来 `command_one.connect(‘activate’,note)` 将菜单的 `activate` 信号与后面定义的 `note()` 函数相连接; 换句话说,我们告诉我们的系统:“当该菜单项被点击,运行 note() 函数”。最后,`menu.append(command_one)` 将菜单项添加到列表中。 - - * `exittray` 相关的行是为了创建一个退出的菜单项让你在想要的时候关闭指示器。 - + * `def main()` :此为指示器的主函数。该函数的代码用来初始化并创建指示器。 + * `indicator = appindicator.Indicator.new("customtray","semi-starred-symbolic",appindicator.IndicatorCategory.APPLICATION_STATUS)` :这里我们指明创建一个名为 `customtray` 的新指示器。这是指示器的唯一名称,这样系统就不会与其他运行中的指示器搞混了。同时我们使用名为 `semi-starred-symbolic` 的图标作为指示器的默认图标。你可以将之改成任何其他值;比如 `firefox` (如果你希望该指示器使用 FireFox 的图标),或任何其他你想用的图标名。最后与 `APPLICATION_STATUS` 相关的部分是指明指示器类别/范围的常规代码。 + * `indicator.set_status(appindicator.IndicatorStatus.ACTIVE)`:这一行激活指示器。 + * `indicator.set_menu(menu())`:这里说的是我们想使用 `menu()` 函数(我们会在后面定义) 来为我们的指示器创建菜单项。这很重要,可以让你右击指示器后看到一个可以实施行为的列表。 + * `gtk.main()`:运行 GTK 主循环。 + * 在 `menu()` 中我们定义了想要指示器提供的行为或项目。`command_one = gtk.MenuItem('My Notes')` 仅仅使用文本 “My notes” 来初始化第一个菜单项,接下来 `command_one.connect('activate',note)` 将菜单的 `activate` 信号与后面定义的 `note()` 函数相连接;换句话说,我们告诉我们的系统:“当该菜单项被点击,运行 `note()` 函数”。最后,`menu.append(command_one)` 将菜单项添加到列表中。 + * `exittray` 相关的行是为了创建一个退出的菜单项,以便让你在想要的时候关闭指示器。 * `menu.show_all()` 以及 `return menu` 只是返回菜单项给指示器的常规代码。 - - * 在 `note(_)` 下面是点击 “My Notes” 菜单项时需要执行的代码。这里只是 `os.system(“gedit $HOME/Documents/notes.txt”)` 这一句话; `os.system` 函数允许你在 Python 中运行 shell 命令,因此这里我们写了一行命令来使用 `gedit` 打开 home 目录下 `Documents` 目录中名为 `notes.txt` 的文件。例如,这个可以称为你今后的日常笔记程序了! + * 在 `note(_)` 下面是点击 “My Notes” 菜单项时需要执行的代码。这里只是 `os.system("gedit $HOME/Documents/notes.txt")` 这一句话;`os.system` 函数允许你在 Python 中运行 shell 命令,因此这里我们写了一行命令来使用 `gedit` 打开家目录下 `Documents` 目录中名为 `notes.txt` 的文件。例如,这个可以称为你今后的日常笔记程序了! ### 添加你所需要的任务 你只需要修改代码中的两块地方: - 1。在 `menu()` 中为你想要的任务定义新的菜单项。 + 1. 在 `menu()` 中为你想要的任务定义新的菜单项。 + 2. 创建一个新的函数让给该菜单项被点击时执行特定的行为。 - 2。创建一个新的函数让给该菜单项被点击时执行特定的行为。 - - -所以,比如说你想要创建一个新菜单项,在点击后,会使用 VLC 播放硬盘中某个特定的视频/音频文件?要做到这一点,只需要在地 17 行处添加下面三行内容: +所以,比如说你想要创建一个新菜单项,在点击后,会使用 VLC 播放硬盘中某个特定的视频/音频文件?要做到这一点,只需要在第 17 行处添加下面三行内容: ``` command_two = gtk.MenuItem('Play video/audio') @@ -126,14 +110,14 @@ command_two.connect('activate', play) menu.append(command_two) ``` -然后在地 30 行添加下面内容: +然后在第 30 行添加下面内容: ``` def play(_): - os.system("vlc /home//Videos/somevideo.mp4") + os.system("vlc /home//Videos/somevideo.mp4") ``` -将 /home//Videos/somevideo.mp4 替换成你想要播放的视频/音频文件路径。现在保存该文件然后再次运行该指示器: +将` `/home//Videos/somevideo.mp4` 替换成你想要播放的视频/音频文件路径。现在保存该文件然后再次运行该指示器: ``` python tray.py @@ -145,15 +129,15 @@ python tray.py 而且当你点击新创建的菜单项时,VLC 会开始播放! -要创建其他项目/任务,只需要重复上面步骤即可。但是要小心,需要用其他命令来为 command_two 改名,比如 command_three,这样在变量之间才不会产生冲突。然后定义新函数,就像 play(_) 函数那样。 +要创建其他项目/任务,只需要重复上面步骤即可。但是要小心,需要用其他命令来替换 `command_two`,比如 `command_three`,这样在变量之间才不会产生冲突。然后定义新函数,就像 `play(_)` 函数那样。 -从这里开始的可能性是无穷的; 比如我用这种方法来从网上获取数据(使用 urllib2 库) 并显示出来。我也用它来在后台使用 mpg123 命令播放 mp3 文件,而且我还定义了另一个菜单项来杀掉所有的 mpg123 来随时停止播放音频。比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 killall -9 csgo_linux64 命令。 +可能性是无穷的;比如我用这种方法来从网上获取数据(使用 urllib2 库)并显示出来。我也用它来在后台使用 `mpg123` 命令播放 mp3 文件,而且我还定义了另一个菜单项来 `killall mpg123` 以随时停止播放音频。比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 `killall -9 csgo_linux64` 命令。 -你可以使用这个指示器来做任何事情:升级系统包,运行其他脚本。字面上的任何事情。 +你可以使用这个指示器来做任何事情:升级系统包、运行其他脚本——字面上的任何事情。 ### 自动启动 -我们希望系统托盘指示器能在系统启动后自动启动,而不用每次都手工运行。要做到这一点,只需要在自启动应用程序中添加下面命令即可(但是你需要将 tray.py 的路径替换成你自己的路径): +我们希望系统托盘指示器能在系统启动后自动启动,而不用每次都手工运行。要做到这一点,只需要在自启动应用程序中添加下面命令即可(但是你需要将 `tray.py` 的路径替换成你自己的路径): ``` nohup python /home//tray.py & @@ -175,7 +159,7 @@ via: https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux 作者:[M.Hanny Sabbagh][a] 选题:[lujun9972][b] 译者:[lujun9972](https://github.com/lujun9972) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From f17836ec2ffba385a6539d013b478a8ab0fe7cf5 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 13:13:26 +0800 Subject: [PATCH 292/336] PUB @lujun9972 https://linux.cn/article-11061-1.html --- ... a Custom System Tray Indicator For Your Tasks on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md (99%) diff --git a/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md b/published/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md similarity index 99% rename from translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md rename to published/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md index 3d746e39fd..9940c0e049 100644 --- a/translated/tech/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md +++ b/published/20190302 Create a Custom System Tray Indicator For Your Tasks on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (lujun9972) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11061-1.html) [#]: subject: (Create a Custom System Tray Indicator For Your Tasks on Linux) [#]: via: (https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux) [#]: author: (M.Hanny Sabbagh https://fosspost.org/author/mhsabbagh) From 17a65c075175bc17a9670b96722d231f2555aeb2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 5 Jul 2019 13:36:32 +0800 Subject: [PATCH 293/336] PRF --- ...orin OS Becomes Even More Awesome With Zorin 15 Release.md | 4 ---- ...0701 Ubuntu or Fedora- Which One Should You Use and Why.md | 2 -- 2 files changed, 6 deletions(-) diff --git a/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md b/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md index 0d24af1b7f..28a906fbdb 100644 --- a/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md +++ b/published/20190606 Zorin OS Becomes Even More Awesome With Zorin 15 Release.md @@ -38,16 +38,12 @@ Zorin OS 15 最主要的一个亮点就是 —— Zorin Connect。如果你使 正如他们在[官方公告][6]中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到:Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。 -[][5] - #### 新的桌面主题(包含夜间模式!) ![Zorin 夜间模式][7] 一提到 “夜间模式” 我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 -[][8] - 当我启用了界面的深色模式时,我的眼睛感到如此舒适,你不想来试试么? 它不单单是一个深色的主题,而是 UI 更干净直观,并且带有恰到好处的新动画。你可以从 Zorin 内置的外观应用程序里找到所有的相关设置。 diff --git a/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md b/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md index af00aa2e34..e4251ec54e 100644 --- a/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md +++ b/published/20190701 Ubuntu or Fedora- Which One Should You Use and Why.md @@ -71,8 +71,6 @@ Fedora 通过 [Fedora Spins][8] 的方式提供了一些不同桌面环境的版 Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用程序、库,以及其它所需编解码器),而 Fedora 使用 DNF 软件包管理器。 -[][9] - [Ubuntu 拥有庞大的软件仓库][10],能够让你轻松安装数以千计的程序,包括 FOSS(LCTT 译注:Free and Open-Source Software 的缩写,自由开源软件)和非 FOSS 的软件。Fedora 则只专注于提供开源软件。虽然这一点在最近的版本里有所转变,但是 Fedora 的软件仓库在规模上仍然比 Ubuntu 的要逊色一些。 一些第三方软件开发者为 Linux 提供像 .exe 文件一样可以点击安装的软件包。在 Ubuntu 里这些软件包是 .deb 格式的,在 Fedora 里是 .rpm 格式的。 From 339a54def1795a9ee0b401f19caf3f59889bba41 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 6 Jul 2019 00:51:28 +0800 Subject: [PATCH 294/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Manage?= =?UTF-8?q?=20your=20shell=20environment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190705 Manage your shell environment.md --- .../20190705 Manage your shell environment.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 sources/tech/20190705 Manage your shell environment.md diff --git a/sources/tech/20190705 Manage your shell environment.md b/sources/tech/20190705 Manage your shell environment.md new file mode 100644 index 0000000000..c9a4c94bac --- /dev/null +++ b/sources/tech/20190705 Manage your shell environment.md @@ -0,0 +1,121 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Manage your shell environment) +[#]: via: (https://fedoramagazine.org/manage-your-shell-environment/) +[#]: author: (Eduard Lucena https://fedoramagazine.org/author/x3mboy/) + +Manage your shell environment +====== + +![][1] + +Some time ago, the Fedora Magazine has published an [article introducing ZSH][2] — an alternative shell to Fedora’s default, bash. This time, we’re going to look into customizing it to use it in a more effective way. All of the concepts shown in this article also work in other shells such as bash. + +### Alias + +Aliases are shortcuts for commands. This is useful for creating short commands for actions that are performed often, but require a long command that would take too much time to type. The syntax is: + +``` +$ alias yourAlias='complex command with arguments' +``` + +They don’t always need to be used for shortening long commands. Important is that you use them for tasks that you do often. An example could be: + +``` +$ alias dnfUpgrade='dnf -y upgrade' +``` + +That way, to do a system upgrade, I just type dnfUpgrade instead of the whole dnf command. + +The problem of setting aliases right in the console is that once the terminal session is closed, the alias would be lost. To set them permanently, resource files are used. + +### Resource Files + +Resource files (or rc files) are configuration files that are loaded per user in the beginning of a session or a process (when a new terminal window is opened, or a new program like vim is started). In the case of ZSH, the resource file is _.zshrc_, and for bash it’s _.bashrc_. + +To make the aliases permanent, you can either put them in your resource. You can edit your resource file with a text editor of your choice. This example uses vim: + +``` +$ vim $HOME/.zshrc +``` + +Or for bash: + +``` +$ vim $HOME/.bashrc +``` + +Note that the location of the resource file is specified relatively to a home directory — and that’s where ZSH (or bash) are going to look for the file by default for each user. + +Other option is to put your configuration in any other file, and then source it: + +``` +$ source /path/to/your/rc/file +``` + +Again, sourcing it right in your session will only apply it to the session, so to make it permanent, add the source command to your resource file. The advantage of having your source file in a different location is that you can source it any time. Or anywhere which is especially useful in shared environments. + +### Environment Variables + +Environment variables are values assigned to a specific name which can be then called in scripts and commands. They start with the $ dollar sign. One of the most common is $HOME that references the home directory. + +As the name suggests, environment variables are a part of your environment. Set a variable using the following syntax: + +``` +$ http_proxy="http://your.proxy" +``` + +And to make it an environment variable, export it with the following command: + +``` +$ export $http_proxy +``` + +To see all the environment variables that are currently set, use the _env_ command: + +``` +$ env +``` + +The command outputs all the variables available in your session. To demonstrate how to use them in a command, try running the following echo commands: + +``` +$ echo $PWD +/home/fedora +$ echo $USER +fedora +``` + +What happens here is variable expansion — the value stored in the variable is used in your command. + +Another useful variable is _$PATH_, that defines directories that your shell uses to look for binaries. + +### The $PATH variable + +There are many directories, or folders (the way they are called in graphical environments) that are important to the OS. Some directories are set to hold binaries you can use directly in your shell. And these directories are defined in the $PATH variable. + +``` +$ echo $PATH +/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/usr/libexec/sdcc:/usr/libexec/sdcc:/usr/bin:/bin:/sbin:/usr/sbin:/opt/FortiClient +``` + +This will help you when you want to have your own binaries (or scripts) accessible in the shell. + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/manage-your-shell-environment/ + +作者:[Eduard Lucena][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/x3mboy/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2018/05/manage-shell-env-816x345.jpg +[2]: https://fedoramagazine.org/set-zsh-fedora-system/ From 652f90d3733258f69a5b3e1a136f01e4c1232c8c Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 6 Jul 2019 00:52:07 +0800 Subject: [PATCH 295/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190706=20Say=20?= =?UTF-8?q?WHAAAT=3F=20Mozilla=20has=20Been=20Nominated=20for=20the=20?= =?UTF-8?q?=E2=80=9CInternet=20Villain=E2=80=9D=20Award=20in=20the=20UK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md --- ... the -Internet Villain- Award in the UK.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md diff --git a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md new file mode 100644 index 0000000000..253eae7967 --- /dev/null +++ b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -0,0 +1,102 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK) +[#]: via: (https://itsfoss.com/mozilla-internet-villain/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK +====== + +Mozilla Firefox is one of the most popular browsers available out there. A lot of users prefer it over Chrome just because it encourages privacy protection and features options to keep your Internet activity as private as possible. + +But, one of the recently proposed features – **[DoH (DNS-over-HTTPS)][1]** which is still in the testing phase didn’t receive a good response from the UK’s ISPs trade association. + +So, the ISPA (Internet Services Providers Association) of UK decided to [nominate][2] Mozilla as one of the “Internet Villains” among the nominees for 2019. This is for an award ceremony to be held on 11th July in London by the ISP trade association of the UK. + +![][3] + +### Why “Mozilla” is the “Internet Villain” here? + +In their announcement, the ISPA mentioned that Mozilla is one of the Internet Villains for supporting **DoH** (DNS-over-HTTPS). + +> [@mozilla][4] is nominated for the [#ISPAs][5] [#InternetVillain][6] for their proposed approach to introduce DNS-over-HTTPS in such a way as to bypass UK filtering obligations and parental controls, undermining [#internet][7] safety standards in the UK. [pic.twitter.com/WeZhLq2uvi][8] +> +> — Internet Services Providers Association (ISPAUK) (@ISPAUK) [July 4, 2019][9] + +Along with Mozilla, Article 13 Copyright Directive and President Donald Trump also appear in the list. Here’s how ISPA explained in their announcement: + +_**Mozilla**_ _– for their proposed approach to introduce DNS-over-HTTPS in such a way as to bypass UK filtering obligations and parental controls, undermining internet safety standards in the UK_. + +**_Article_ _13 Copyright Directive_** _– for threatening freedom of expression online by requiring ‘content recognition technologies’ across platforms_ + +_**President Donald Trump**_ _– for causing a huge amount of uncertainty across the complex, global telecommunications supply chain in the course of trying to protect national security_ + +### What is DNS-over-HTTPS? + +DoH basically means that your DNS requests will be encrypted over an HTTPS connection. + +Traditionally, the DNS requests are unencrypted and your DNS provider or the ISP can monitor/control your browsing activity. Without DoH, you can easily enforce blocking/content filtering through your DNS provider or the ISP can do that when they want. + +[][10] + +Suggested read  Firefox: The Internet's Knight in Shining Armor + +However, DoH completely takes that out of the equation and hence, you get a private browsing experience. + +You can explore [how Mozilla implements this partnering with Cloudflare][11] and set it up for yourself if you want. + +### Is DoH helpful? + +Yes and no. + +Of course, on one side of the coin, it lets user bypass any content filters enforced by the DNS or the ISPs. So, it is a good thing that we want to put a stop to Internet censorship and DoH helps us with that. + +But, on the other side, if you are a parent, you can no longer [set content filters][12] if your kid utilizes DoH on Mozilla Firefox. It depends on how good/bad the [firewall is configured][13]. + +But potentially DoH is a solution for some to bypass parental controls, which could be a bad thing. + +Correct me if I’m wrong here – in the comments below. + +Also, using DoH means that you can no longer use the local host file (in case you are using it for ad blocking or something else) + +### Wrapping Up + +What do you think about DoH in general? Is it good enough? + +And, what’s your take on ISPA’s decision? Do you think that they are encouraging Internet censorship and government monitoring on netizens with this kind of announcement? + +Personally, I find it hilarious. Even if DoH isn’t the ultimate feature that everyone wants, it is always good to have an option to protect your privacy in some way. + +Let us know your thoughts in the comments below. Meanwhile, I’ll just put this quote here: + +> In a time of universal deceit, telling the truth is a revolutionary act + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/mozilla-internet-villain/ + +作者:[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://en.wikipedia.org/wiki/DNS_over_HTTPS +[2]: https://www.ispa.org.uk/ispa-announces-finalists-for-2019-internet-heroes-and-villains-trump-and-mozilla-lead-the-way-as-villain-nominees/ +[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/mozilla-internet-villain.jpg?resize=800%2C450&ssl=1 +[4]: https://twitter.com/mozilla?ref_src=twsrc%5Etfw +[5]: https://twitter.com/hashtag/ISPAs?src=hash&ref_src=twsrc%5Etfw +[6]: https://twitter.com/hashtag/InternetVillain?src=hash&ref_src=twsrc%5Etfw +[7]: https://twitter.com/hashtag/internet?src=hash&ref_src=twsrc%5Etfw +[8]: https://t.co/WeZhLq2uvi +[9]: https://twitter.com/ISPAUK/status/1146725374455373824?ref_src=twsrc%5Etfw +[10]: https://itsfoss.com/why-firefox/ +[11]: https://blog.nightly.mozilla.org/2018/06/01/improving-dns-privacy-in-firefox/ +[12]: https://itsfoss.com/how-to-block-porn-by-content-filtering-on-ubuntu/ +[13]: https://itsfoss.com/set-up-firewall-gufw/ From 754a4de7b65f38210bfbf541faae1a1db30059d5 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 6 Jul 2019 00:53:22 +0800 Subject: [PATCH 296/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Learn?= =?UTF-8?q?=20object-oriented=20programming=20with=20Python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190705 Learn object-oriented programming with Python.md --- ...object-oriented programming with Python.md | 311 ++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100644 sources/tech/20190705 Learn object-oriented programming with Python.md diff --git a/sources/tech/20190705 Learn object-oriented programming with Python.md b/sources/tech/20190705 Learn object-oriented programming with Python.md new file mode 100644 index 0000000000..b617517526 --- /dev/null +++ b/sources/tech/20190705 Learn object-oriented programming with Python.md @@ -0,0 +1,311 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Learn object-oriented programming with Python) +[#]: via: (https://opensource.com/article/19/7/get-modular-python-classes) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +Learn object-oriented programming with Python +====== +Make your code more modular with Python classes. +![Developing code.][1] + +In my previous article, I explained how to [make Python modular][2] by using functions, creating modules, or both. Functions are invaluable to avoid repeating code you intend to use several times, and modules ensure that you can use your code across different projects. But there's another component to modularity: the class. + +If you've heard the term _object-oriented programming_, then you may have some notion of the purpose classes serve. Programmers tend to consider a class as a virtual object, sometimes with a direct correlation to something in the physical world, and other times as a manifestation of some programming concept. Either way, the idea is that you can create a class when you want to create "objects" within a program for you or other parts of the program to interact with. + +### Templates without classes + +Assume you're writing a game set in a fantasy world, and you need this application to be able to drum up a variety of baddies to bring some excitement into your players' lives. Knowing quite a lot about functions, you might think this sounds like a textbook case for functions: code that needs to be repeated often but is written once with allowance for variations when called. + +Here's an example of a purely function-based implementation of an enemy generator: + + +``` +#!/usr/bin/env python3 + +import random + +def enemy(ancestry,gear): +    enemy=ancestry +    weapon=gear +    hp=random.randrange(0,20) +    ac=random.randrange(0,20) +    return [enemy,weapon,hp,ac] + +def fight(tgt): +    print("You take a swing at the " + tgt[0] + ".") +    hit=random.randrange(0,20) +    if hit > tgt[3]: +        print("You hit the " + tgt[0] + " for " + str(hit) + " damage!") +        tgt[2] = tgt[2] - hit +    else: +        print("You missed.") + +foe=enemy("troll","great axe") +print("You meet a " + foe[0] + " wielding a " + foe[1]) +print("Type the a key and then RETURN to attack.") + +while True: +    action=input() + +    if action.lower() == "a": +        fight(foe) + +    if foe[2] < 1: +        print("You killed your foe!") +    else: +        print("The " + foe[0] + " has " + str(foe[2]) + " HP remaining") +``` + +The **enemy** function creates an enemy with several attributes, such as ancestry, a weapon, health points, and a defense rating. It returns a list of each attribute, representing the sum total of the enemy. + +In a sense, this code has created an object, even though it's not using a class yet. Programmers call this "enemy" an _object_ because the result (a list of strings and integers, in this case) of the function represents a singular but complex _thing_ in the game. That is, the strings and integers in the list aren't arbitrary: together, they describe a virtual object. + +When writing a collection of descriptors, you use variables so you can use them any time you want to generate an enemy. It's a little like a template. + +In the example code, when an attribute of the object is needed, the corresponding list item is retrieved. For instance, to get the ancestry of an enemy, the code looks at **foe[0]**, for health points, it looks at **foe[2]** for health points, and so on. + +There's nothing necessarily wrong with this approach. The code runs as expected. You could add more enemies of different types, you could create a list of enemy types and randomly select from the list during enemy creation, and so on. It works well enough, and in fact [Lua][3] uses this principle very effectively to approximate an object-oriented model. + +However, there's sometimes more to an object than just a list of attributes. + +### The way of the object + +In Python, everything is an object. Anything you create in Python is an _instance_ of some predefined template. Even basic strings and integers are derivatives of the Python **type** class. You can witness this for yourself an interactive Python shell: + + +``` +>>> foo=3 +>>> type(foo) +<class 'int'> +>>> foo="bar" +>>> type(foo) +<class 'str'> +``` + +When an object is defined by a class, it is more than just a collection of attributes. Python classes have functions all their own. This is convenient, logically, because actions that pertain only to a certain class of objects are contained within that object's class. + +In the example code, the fight code is a function of the main application. That works fine for a simple game, but in a complex one, there would be more than just players and enemies in the game world. There might be townsfolk, livestock, buildings, forests, and so on, and none of them ever need access to a fight function. Placing code for combat in an enemy class means your code is better organized; and in a complex application, that's a significant advantage. + +Furthermore, each class has privileged access to its own local variables. An enemy's health points, for instance, isn't data that should ever change except by some function of the enemy class. A random butterfly in the game should not accidentally reduce an enemy's health to 0. Ideally, even without classes, that would never happen, but in a complex application with lots of moving parts, it's a powerful trick of the trade to ensure that parts that don't need to interact with one another never do. + +Python classes are also subject to garbage collection. When an instance of a class is no longer used, it is moved out of memory. You may never know when this happens, but you tend to notice when it doesn't happen because your application takes up more memory and runs slower than it should. Isolating data sets into classes helps Python track what is in use and what is no longer needed. + +### Classy Python + +Here's the same simple combat game using a class for the enemy: + + +``` +#!/usr/bin/env python3 + +import random + +class Enemy(): +    def __init__(self,ancestry,gear): +        self.enemy=ancestry +        self.weapon=gear +        self.hp=random.randrange(10,20) +        self.ac=random.randrange(12,20) +        self.alive=True + +    def fight(self,tgt): +        print("You take a swing at the " + self.enemy + ".") +        hit=random.randrange(0,20) + +        if self.alive and hit > self.ac: +            print("You hit the " + self.enemy + " for " + str(hit) + " damage!") +            self.hp = self.hp - hit +            print("The " + self.enemy + " has " + str(self.hp) + " HP remaining") +        else: +            print("You missed.") + +        if self.hp < 1: +            self.alive=False + +# game start +foe=Enemy("troll","great axe") +print("You meet a " + foe.enemy + " wielding a " + foe.weapon) + +# main loop +while True: +    +    print("Type the a key and then RETURN to attack.") +        +    action=input() + +    if action.lower() == "a": +        foe.fight(foe) +                +    if foe.alive == False: +        print("You have won...this time.") +        exit() +``` + +This version of the game handles the enemy as an object containing the same attributes (ancestry, weapon, health, and defense), plus a new attribute measuring whether the enemy has been vanquished yet, as well as a function for combat. + +The first function of a class is a special function called (in Python) an _init_, or initialization, function. This is similar to a [constructor][4] in other languages; it creates an instance of the class, which is identifiable to you by its attributes and to whatever variable you use when invoking the class (**foe** in the example code). + +### Self and class instances + +The class' functions accept a new form of input you don't see outside of classes: **self**. If you don't include **self**, then Python has no way of knowing _which_ instance of the class to use when you call a class function. It's like challenging a single orc to a duel by saying "I'll fight the orc" in a room full of orcs; nobody knows which one you're referring to, and so bad things happen. + +![Image of an Orc, CC-BY-SA by Buch on opengameart.org][5] + +CC-BY-SA by Buch on opengameart.org + +Each attribute created within a class is prepended with the **self** notation, which identifies that variable as an attribute of the class. Once an instance of a class is spawned, you swap out the **self** prefix with the variable representing that instance. Using this technique, you could challenge just one orc to a duel in a room full of orcs by saying "I'll fight the gorblar.orc"; when Gorblar the Orc hears **gorblar.orc**, he knows which orc you're referring to (him_self_), and so you get a fair fight instead of a brawl. In Python: + + +``` +gorblar=Enemy("orc","sword") +print("The " + gorblar.enemy + " has " + str(gorblar.hp) + " remaining.") +``` + +Instead of looking to **foe[0]** (as in the functional example) or **gorblar[0]** for the enemy type, you retrieve the class attribute (**gorblar.enemy** or **gorblar.hp** or whatever value for whatever object you need). + +### Local variables + +If a variable in a class is not prepended with the **self** keyword, then it is a local variable, just as in any function. For instance, no matter what you do, you cannot access the **hit** variable outside the **Enemy.fight** class: + + +``` +>>> print(foe.hit) +Traceback (most recent call last): +  File "./enclass.py", line 38, in <module> +    print(foe.hit) +AttributeError: 'Enemy' object has no attribute 'hit' + +>>> print(foe.fight.hit) +Traceback (most recent call last): +  File "./enclass.py", line 38, in <module> +    print(foe.fight.hit) +AttributeError: 'function' object has no attribute 'hit' +``` + +The **hit** variable is contained within the Enemy class, and only "lives" long enough to serve its purpose in combat. + +### More modularity + +This example uses a class in the same text document as your main application. In a complex game, it's easier to treat each class almost as if it were its own self-standing application. You see this when multiple developers work on the same application: one developer works on a class, and the other works on the main program, and as long as they communicate with one another about what attributes the class must have, the two code bases can be developed in parallel. + +To make this example game modular, split it into two files: one for the main application and one for the class. Were it a more complex application, you might have one file per class, or one file per logical groups of classes (for instance, a file for buildings, a file for natural surroundings, a file for enemies and NPCs, and so on). + +Save one file containing just the Enemy class as **enemy.py** and another file containing everything else as **main.py**. + +Here's **enemy.py**: + + +``` +import random + +class Enemy(): +    def __init__(self,ancestry,gear): +        self.enemy=ancestry +        self.weapon=gear +        self.hp=random.randrange(10,20) +        self.stg=random.randrange(0,20) +        self.ac=random.randrange(0,20) +        self.alive=True + +    def fight(self,tgt): +        print("You take a swing at the " + self.enemy + ".") +        hit=random.randrange(0,20) + +        if self.alive and hit > self.ac: +            print("You hit the " + self.enemy + " for " + str(hit) + " damage!") +            self.hp = self.hp - hit +            print("The " + self.enemy + " has " + str(self.hp) + " HP remaining") +        else: +            print("You missed.") + +        if self.hp < 1: +            self.alive=False +``` + +Here's **main.py**: + + +``` +#!/usr/bin/env python3 + +import enemy as en + +# game start +foe=en.Enemy("troll","great axe") +print("You meet a " + foe.enemy + " wielding a " + foe.weapon) + +# main loop +while True: +    +    print("Type the a key and then RETURN to attack.") + +    action=input() + +    if action.lower() == "a": +        foe.fight(foe) + +    if foe.alive == False: +        print("You have won...this time.") +        exit() +``` + +Importing the module **enemy.py** is done very specifically with a statement that refers to the file of classes as its name without the **.py** extension, followed by a namespace designator of your choosing (for example, **import enemy as en**). This designator is what you use in the code when invoking a class. Instead of just using **Enemy()**, you preface the class with the designator of what you imported, such as **en.Enemy**. + +All of these file names are entirely arbitrary, although not uncommon in principle. It's a common convention to name the part of the application that serves as the central hub **main.py**, and a file full of classes is often named in lowercase with the classes inside it, each beginning with a capital letter. Whether you follow these conventions doesn't affect how the application runs, but it does make it easier for experienced Python programmers to quickly decipher how your application works. + +There's some flexibility in how you structure your code. For instance, using the code sample, both files must be in the same directory. If you want to package just your classes as a module, then you must create a directory called, for instance, **mybad** and move your classes into it. In **main.py**, your import statement changes a little: + + +``` +`from mybad import enemy as en` +``` + +Both systems produce the same results, but the latter is best if the classes you have created are generic enough that you think other developers could use them in their projects. + +Regardless of which you choose, launch the modular version of the game: + + +``` +$ python3 ./main.py +You meet a troll wielding a great axe +Type the a key and then RETURN to attack. +a +You take a swing at the troll. +You missed. +Type the a key and then RETURN to attack. +a +You take a swing at the troll. +You hit the troll for 8 damage! +The troll has 4 HP remaining +Type the a key and then RETURN to attack. +a +You take a swing at the troll. +You hit the troll for 11 damage! +The troll has -7 HP remaining +You have won...this time. +``` + +The game works. It's modular. And now you know what it means for an application to be object-oriented. But most importantly, you know to be specific when challenging an orc to a duel. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/get-modular-python-classes + +作者:[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/code_development_programming.png?itok=M_QDcgz5 (Developing code.) +[2]: https://opensource.com/article/19/6/get-modular-python-functions +[3]: https://opensource.com/article/17/4/how-program-games-raspberry-pi +[4]: https://opensource.com/article/19/6/what-java-constructor +[5]: https://opensource.com/sites/default/files/images/orc-buch-opengameart_cc-by-sa.jpg (CC-BY-SA by Buch on opengameart.org) From e443b53c41a2122a4dd0e10de449fca5dcc688de Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 6 Jul 2019 00:53:58 +0800 Subject: [PATCH 297/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Copy?= =?UTF-8?q?=20and=20paste=20at=20the=20Linux=20command=20line=20with=20xcl?= =?UTF-8?q?ip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190705 Copy and paste at the Linux command line with xclip.md --- ...te at the Linux command line with xclip.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 sources/tech/20190705 Copy and paste at the Linux command line with xclip.md diff --git a/sources/tech/20190705 Copy and paste at the Linux command line with xclip.md b/sources/tech/20190705 Copy and paste at the Linux command line with xclip.md new file mode 100644 index 0000000000..f13bfe6479 --- /dev/null +++ b/sources/tech/20190705 Copy and paste at the Linux command line with xclip.md @@ -0,0 +1,99 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Copy and paste at the Linux command line with xclip) +[#]: via: (https://opensource.com/article/19/7/xclip) +[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) + +Copy and paste at the Linux command line with xclip +====== +Learn how to get started with the Linux xclip utility. +![Green paperclips][1] + +How do you usually copy all or part of a text file when working on the Linux desktop? Chances are you open the file in a text editor, select all or just the text you want to copy, and paste it somewhere else. + +That works. But you can do the job a bit more efficiently at the command line using the [xclip][2] utility. xclip provides a conduit between commands you run in a terminal window and the clipboard in a Linux graphical desktop environment. + +### Installing xclip + +xclip isn't standard kit with many Linux distributions. To see if it's installed on your computer, open a terminal window and type **which xclip**. If that command returns output like _/usr/bin/xclip_, then you're ready to go. Otherwise, you need to install xclip. + +To do that, use your distribution's package manager. Or, if you're adventurous, [grab the source code][2] from GitHub and compile it yourself. + +### Doing the basics + +Let's say you want to copy the contents of a file to the clipboard. There are two ways to do that with xclip. Type either: + + +``` +`xclip file_name` +``` + +or + + +``` +`xclip -sel clip file_name` +``` + +What's the difference between the two commands (aside from the second one being longer)? The first command works if you use the middle button on the mouse to paste text. However, not everyone does. Many people are conditioned to use a right-click menu or to press Ctrl+V to paste text. If you're one of those people (I am!), using the **-sel clip** option ensures you can paste what you want to paste. + +### Using xclip with other applications + +Copying the contents of a file directly to the clipboard is a neat parlor trick. Chances are, you won't be doing that very often. There are other ways you can use xclip, and those involve pairing it with another command-line application. + +That pairing is done with a _pipe_ (|). The pipe redirects the output of one command line application to another. Doing that opens several possibilities. Let's take a look at three of them. + +Say you're a system administrator and you need to copy the last 30 lines of a log file into a bug report. Opening the file in a text editor, scrolling down to the end, and copying and pasting is a bit of work. Why not use xclip and the [tail][3] utility to quickly and easily do the deed? Run this command to copy those last 30 lines: + + +``` +`tail -n 30 logfile.log | xclip -sel clip` +``` + +Quite a bit of my writing goes into some content management system (CMS) or another for publishing on the web. However, I never use a CMS's WYSIWYG editor to write—I write offline in [plain text][4] formatted with [Markdown][5]. That said, many of those editors have an HTML mode. By using this command, I can convert a Markdown-formatted file to HTML using [Pandoc][6] and copy it to the clipboard in one fell swoop: + + +``` +`pandoc -t html file.md | xclip -sel clip` +``` + +From there, I paste away. + +Two of my websites are hosted using [GitLab Pages][7]. I generate the HTTPS certificates for those sites using a tool called [Certbot][8], and I need to copy the certificate for each site to GitLab whenever I renew it. Combining the [cat][9] command and xclip is faster and more efficient than using an editor. For example: + + +``` +`cat /etc/letsencrypt/live/website/fullchain.pem | xclip -sel clip` +``` + +Is that all you can do with xclip? Definitely not. I'm sure you can find more uses to fit your needs. + +### Final thoughts + +Not everyone will use xclip. That's fine. It is, however, one of those little utilities that really comes in handy when you need it. And, as I've discovered on a few occasions, you don't know when you'll need it. When that time comes, you'll be glad xclip is there. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/xclip + +作者:[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/lead-images/life_paperclips.png?itok=j48op49T (Green paperclips) +[2]: https://github.com/astrand/xclip +[3]: https://en.wikipedia.org/wiki/Tail_(Unix) +[4]: https://plaintextproject.online +[5]: https://gumroad.com/l/learnmarkdown +[6]: https://pandoc.org +[7]: https://docs.gitlab.com/ee/user/project/pages/ +[8]: https://certbot.eff.org/ +[9]: https://en.wikipedia.org/wiki/Cat_(Unix) From c1a96a3ec5a23e6fc5672a52e66a119d216cdf47 Mon Sep 17 00:00:00 2001 From: lctt-bot Date: Fri, 5 Jul 2019 17:00:20 +0000 Subject: [PATCH 298/336] Revert "translating by zhang5788" This reverts commit f8822176e4fda3349910a685430fcb064bd309cc. --- .../tech/20190510 Learn to change history with git rebase.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190510 Learn to change history with git rebase.md b/sources/tech/20190510 Learn to change history with git rebase.md index be1d265d8a..cf8f9351d9 100644 --- a/sources/tech/20190510 Learn to change history with git rebase.md +++ b/sources/tech/20190510 Learn to change history with git rebase.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (zhang5788) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 0f2a00c828808a278f3df1b25c10989633ced232 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:01:40 +0800 Subject: [PATCH 299/336] PRF:20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @geekpi --- ...ello Alternative OpenProject 9 Released.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md index 699331d982..bd4ddf109e 100644 --- a/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md +++ b/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @@ -1,36 +1,37 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Free and Open Source Trello Alternative OpenProject 9 Released) [#]: via: (https://itsfoss.com/openproject-9-release/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -替代 Trello 的免费开源 OpenProject 9 发布了 +替代 Trello 的 OpenProject 9 发布了 ====== +![](https://img.linux.net.cn/data/attachment/album/201907/06/130201r9g70u01uuvvvvu7.jpg) [OpenProject][1] 是一个开源项目协作管理软件。它是 [Trello][2] 和 [Jira][3] 等专有方案的替代品。 如果个人使用,你可以免费使用它,并在你自己的服务器上进行设置(并托管它)。这样,你就可以控制数据。 -当然,如果你是[云或企业版用户][4],那么你可以使用高级功能和更优先的帮助。 +当然,如果你是[企业云版的用户][4],那么你可以使用高级功能和更优先的帮助。 -OpenProject 9 的重点是新的看板试图,包列表视图和工作模板。 +OpenProject 9 的重点是新的面板视图,包列表视图和工作模板。 -如果你对此不了解,可以尝试一下。但是,如果你是现有用户 - 在迁移到 OpenProject 9 之前,你应该知道这些新功能。 +如果你对此不了解,可以尝试一下。但是,如果你是已有用户 —— 在迁移到 OpenProject 9 之前,你应该知道这些新功能。 ### OpenProject 9 有什么新功能? -以下是最新版 OpenProjec t的一些主要更改。 +以下是最新版 OpenProject 的一些主要更改。 #### Scrum 和敏捷看板 ![][5] -对于云和企业版,有一个新的 [scrum][6] 和[敏捷][7]看板视图。你还可以 [kanban 风格][8]方式展示你的工作,从而更轻松地支持你的敏捷和 scrum 团队。 +对于企业云版,有了一个新的 [scrum][6] 和[敏捷][7]面板视图。你还可以[看板风格][8]方式展示你的工作,从而更轻松地支持你的敏捷和 scrum 团队。 -新的看板视图使你可以轻松了解为该任务分配的人员并快速更新状态。你还有不同的看板视图选项,如基本看板、状态看板和版本看板。 +新的面板视图使你可以轻松了解为该任务分配的人员并快速更新状态。你还有不同的面板视图选项,如基本面板、状态面板和版本面板。 #### 工作包模板 @@ -46,9 +47,9 @@ OpenProject 9 的重点是新的看板试图,包列表视图和工作模板。 #### “我的”页面的可自定义工作包视图 -“我的”页面显示你正在处理的内容(以及进度),它不应该一直很无聊。因此,现在你可以自定义它,甚至可以添加甘特图来可视化你的工作。 +“我的”页面显示你正在处理的内容(以及进度),它不应该一直那么呆板。因此,现在你可以自定义它,甚至可以添加甘特图来可视化你的工作。 -**总结** +### 总结 有关迁移和安装的详细说明,请参阅[官方的公告帖][12],其中包含了必要的细节。 @@ -61,7 +62,7 @@ via: https://itsfoss.com/openproject-9-release/ 作者:[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 0f8b3c0ea662d51efeb4cd2e5c2d881d16edac93 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:02:41 +0800 Subject: [PATCH 300/336] PUB @geekpi https://linux.cn/article-11063-1.html --- ...d Open Source Trello Alternative OpenProject 9 Released.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md (98%) diff --git a/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md similarity index 98% rename from translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md rename to published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md index bd4ddf109e..59d8fa3be4 100644 --- a/translated/news/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md +++ b/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11063-1.html) [#]: subject: (Free and Open Source Trello Alternative OpenProject 9 Released) [#]: via: (https://itsfoss.com/openproject-9-release/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From b7855c36c4de3e26470ca8f30b03105fa521c3f5 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:03:47 +0800 Subject: [PATCH 301/336] PRF:20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md --- ...and Open Source Trello Alternative OpenProject 9 Released.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md b/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md index 59d8fa3be4..213044032e 100644 --- a/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md +++ b/published/20190607 Free and Open Source Trello Alternative OpenProject 9 Released.md @@ -25,7 +25,7 @@ OpenProject 9 的重点是新的面板视图,包列表视图和工作模板。 以下是最新版 OpenProject 的一些主要更改。 -#### Scrum 和敏捷看板 +#### Scrum 和敏捷面板 ![][5] From 37187e24594fce5be57ce6ac9892e0c916a6d915 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:16:26 +0800 Subject: [PATCH 302/336] PRF @chen-ni --- ...Jupyter Notebooks for Python developers.md | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md b/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md index 6153a838f8..4aa354ae91 100644 --- a/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md +++ b/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (IPython is still the heart of Jupyter Notebooks for Python developers) @@ -9,8 +9,10 @@ 对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心 ====== -Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 -![I love Free Software FSFE celebration][1] + +> Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 + +![](https://img.linux.net.cn/data/attachment/album/201907/06/131704z1lsfssamfxrrliq.jpg) 最近刚刚写过我为什么觉得觉得 Jupyter 项目(特别是 JupyterLab)提供了一种 [魔法般的 Python 开发体验][2]。在研究这些不同项目之间的关联的时候,我回顾了一下 Jupyter 最初从 IPython 分支出来的这段历史。正如 Jupyter 项目的 [大拆分™ 声明][3] 所说: @@ -34,7 +36,7 @@ Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IP ### IPython 如今的作用 -IPython 提供了一个强大的、交互性的 Python shell,以及 Jupyter 的内核。安装完成之后,我可以在任何命令行运行 **ipython** 本身,将它当作一个(比默认 Python shell 好太多的)Python shell 来使用: +IPython 提供了一个强大的、交互性的 Python shell,以及 Jupyter 的内核。安装完成之后,我可以在任何命令行运行 `ipython` 本身,将它当作一个(比默认 Python shell 好太多的)Python shell 来使用: ``` @@ -50,15 +52,15 @@ In [4]: print(average) 6.571428571428571 ``` -这就让我们发现了一个更为重要的问题:是IPython 让 JupyterLab 可以在项目中执行代码,并且支持了一系列被称为 *magic*的功能(感谢 Nicholas Reith 在我上一篇文章的评论里提到这点)。 +这就让我们发现了一个更为重要的问题:是 IPython 让 JupyterLab 可以在项目中执行代码,并且支持了一系列被称为 *Magic* 的功能(感谢 Nicholas Reith 在我上一篇文章的评论里提到这点)。 ### IPython 让魔法成为现实 -JupyterLab 和其它使用 IPython 的前端工具可以让你感觉像是在最喜欢的 IDE 或者是终端模拟器的环境下工作。我非常喜欢 [dotfiles][5] 快捷键功能,magic 也有类似 dotfile 的特征。比如说,可以试一下 **[%bookmark][6]** 这个命令。我把默认开发文件夹 **~/Develop** 关联到了一个可以在任何时候直接跳转的快捷方式上。 +JupyterLab 和其它使用 IPython 的前端工具可以让你感觉像是在最喜欢的 IDE 或者是终端模拟器的环境下工作。我非常喜欢 [点文件][5] 快捷键功能,Magic 也有类似点文件的特征。比如说,可以试一下 [%bookmark][6] 这个命令。我把默认开发文件夹 `~/Develop` 关联到了一个可以在任何时候直接跳转的快捷方式上。 ![Screenshot of commands from JupyterLab][7] -**%bookmark**、**%cd**,以及我在前一篇文章里介绍过的 **!** 操作符,都是由 IPython 支持的。正如这篇 [文档][8] 所说: +`%bookmark`、`%cd`,以及我在前一篇文章里介绍过的 `!` 操作符,都是由 IPython 支持的。正如这篇 [文档][8] 所说: > Jupyter 用户你们好:Magic 功能是 IPython 内核提供的专属功能。一个内核是否支持 Magic 功能是由该内核的开发者针对该内核所决定的。 @@ -66,7 +68,7 @@ JupyterLab 和其它使用 IPython 的前端工具可以让你感觉像是在最 作为一个好奇的新手,我之前并不是特别确定 IPython 是否仍然和 Jupyter 生态还有任何联系。现在我对 IPython 的持续开发有了新的认识和,并且意识到它正是 JupyterLab 强大的用户体验的来源。这也是相当有才华的一批贡献者进行最前沿研究的成果,所以如果你在学术论文中使用到了 Jupyter 项目的话别忘了引用他们。为了方便引用,他们还提供了一个 [现成的引文][9]。 -如果你在考虑参与哪个开源项目的贡献的话,一定不要忘了 IPython 哦。记得看看 [最新发布说明][10],在这里可以找到 magic 功能的完整列表。 +如果你在考虑参与哪个开源项目的贡献的话,一定不要忘了 IPython 哦。记得看看 [最新发布说明][10],在这里可以找到 Magic 功能的完整列表。 -------------------------------------------------------------------------------- @@ -74,8 +76,8 @@ via: https://opensource.com/article/19/6/ipython-still-heart-jupyterlab 作者:[Matthew Broberg][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[chen-ni](https://github.com/chen-ni) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 12b36ef85fd791776589145f70c0de569fe2c6d4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:17:08 +0800 Subject: [PATCH 303/336] PUB @chen-ni https://linux.cn/article-11064-1.html --- ...ll the heart of Jupyter Notebooks for Python developers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md (98%) diff --git a/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md b/published/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md similarity index 98% rename from translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md rename to published/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md index 4aa354ae91..c3e147d434 100644 --- a/translated/tech/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md +++ b/published/20190613 IPython is still the heart of Jupyter Notebooks for Python developers.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11064-1.html) [#]: subject: (IPython is still the heart of Jupyter Notebooks for Python developers) [#]: via: (https://opensource.com/article/19/6/ipython-still-heart-jupyterlab) [#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg/users/marcobravo) From fac6d58f34e11c82c4a9bf6004ea30795251cb6f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:35:08 +0800 Subject: [PATCH 304/336] PRF @geekpi --- ...d The Port Number Of A Service In Linux.md | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md index 3f42a4cb4c..d0ad022769 100644 --- a/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md +++ b/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How To Find The Port Number Of A Service In Linux) @@ -16,9 +16,9 @@ ### 在 Linux 中查找服务的端口号 -**方法1:使用 [grep][2] 命令** +#### 方法1:使用 grep 命令 -要使用 grep 命令在 Linux 中查找指定服务的默认端口号,只需运行: +要使用 `grep` 命令在 Linux 中查找指定服务的默认端口号,只需运行: ``` $ grep /etc/services @@ -84,11 +84,11 @@ tftp 69/tcp [...] ``` -**方法 2:使用 getent 命令** +#### 方法 2:使用 getent 命令 如你所见,上面的命令显示指定搜索词 “ssh”、“http” 和 “ftp” 的所有端口名称和数字。这意味着,你将获得与给定搜索词匹配的所有端口名称的相当长的输出。 -但是,你可以使用 “getent” 命令精确输出结果,如下所示: +但是,你可以使用 `getent` 命令精确输出结果,如下所示: ``` $ getent services ssh @@ -114,17 +114,15 @@ http 80/tcp $ getent services ``` -**方法 3:使用 Whatportis 程序** +#### 方法 3:使用 Whatportis 程序 -**Whatportis** 是一个简单的 python 脚本,来用于查找端口名称和端口号。与上述命令不同,此程序以漂亮的表格形式输出。 +Whatportis 是一个简单的 Python 脚本,来用于查找端口名称和端口号。与上述命令不同,此程序以漂亮的表格形式输出。 -确保已安装 PIP 包管理器。如果没有,请参考以下链接。 +确保已安装 pip 包管理器。如果没有,请参考以下链接。 - * [**如何使用 Pip 管理 Python 包**][6] +- [如何使用 pip 管理 Python 包][6] - - -安装 PIP 后,运行以下命令安装 Whatportis 程序。 +安装 pip 后,运行以下命令安装 Whatportis 程序。 ``` $ pip install whatportis @@ -144,9 +142,9 @@ $ whatportis http ![][7] -在 Linux 中查找服务的端口号 +*在 Linux 中查找服务的端口号* -如果你不知道服务的确切名称,请使用 **–like** 标志来显示相关结果。 +如果你不知道服务的确切名称,请使用 `–like` 标志来显示相关结果。 ``` $ whatportis mysql --like @@ -158,7 +156,7 @@ $ whatportis mysql --like $ whatportis 993 ``` -你甚至可以以 **JSON** 格式显示结果。 +你甚至可以以 JSON 格式显示结果。 ``` $ whatportis 993 --json @@ -168,9 +166,7 @@ $ whatportis 993 --json 有关更多详细信息,请参阅 GitHub 仓库。 - * [**Whatportis GitHub 仓库**][9] - - +* [Whatportis GitHub 仓库][9] 就是这些了。你现在知道了如何使用三种简单方法在 Linux 中查找端口名称和端口号。如果你知道任何其他方法/命令,请在下面的评论栏告诉我。我会查看并更相应地更新本指南。 @@ -181,7 +177,7 @@ via: https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux 作者:[sk][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 8c90f140faabd47b4c5e3a43d76a4a1b546b359d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 13:35:38 +0800 Subject: [PATCH 305/336] PUB @geekpi https://linux.cn/article-11066-1.html --- ...80620 How To Find The Port Number Of A Service In Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20180620 How To Find The Port Number Of A Service In Linux.md (98%) diff --git a/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md b/published/20180620 How To Find The Port Number Of A Service In Linux.md similarity index 98% rename from translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md rename to published/20180620 How To Find The Port Number Of A Service In Linux.md index d0ad022769..d3e1f04e62 100644 --- a/translated/tech/20180620 How To Find The Port Number Of A Service In Linux.md +++ b/published/20180620 How To Find The Port Number Of A Service In Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11066-1.html) [#]: subject: (How To Find The Port Number Of A Service In Linux) [#]: via: (https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/) [#]: author: (sk https://www.ostechnix.com/author/sk/) From 558efa4b4ad387349ba9bf6e62bb1c5df96c6bcb Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 6 Jul 2019 16:07:37 +0800 Subject: [PATCH 306/336] =?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 --- ...0702 Make Linux stronger with firewalls.md | 276 ------------------ ...0702 Make Linux stronger with firewalls.md | 261 +++++++++++++++++ 2 files changed, 261 insertions(+), 276 deletions(-) delete mode 100644 sources/tech/20190702 Make Linux stronger with firewalls.md create mode 100644 translated/tech/20190702 Make Linux stronger with firewalls.md diff --git a/sources/tech/20190702 Make Linux stronger with firewalls.md b/sources/tech/20190702 Make Linux stronger with firewalls.md deleted file mode 100644 index da69e07f9f..0000000000 --- a/sources/tech/20190702 Make Linux stronger with firewalls.md +++ /dev/null @@ -1,276 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Make Linux stronger with firewalls) -[#]: via: (https://opensource.com/article/19/7/make-linux-stronger-firewalls) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Make Linux stronger with firewalls -====== -Learn how firewalls work and which settings to tweak for better Linux -security. -![People working together to build ][1] - -Everyone's heard of firewalls, even if only as a plot device in a TV cybercrime drama. Many people also know that their computer is (likely) running a firewall, but fewer people understand how to take control of their firewall when necessary. - -Firewalls block unwanted network traffic, but different networks have different threat levels. For instance, if you're at home, you probably trust the other computers and devices on your network a lot more than when you're out at the local café using public WiFi. You can hope your computer differentiates between a trusted network and an untrusted one, or you can learn to manage, or at least verify, your security settings yourself. - -### How firewalls work - -Communication between devices on a network happens through gateways called _ports_. Port, in this context, doesn't mean a physical connection like a USB port or an HDMI port. In network lingo, a port is an entirely virtual concept representing pathways for a specific type of data to either arrive at or depart from a computer. This system could have been called anything, like "connections" or "doorways," but they were named ports at least [as early as 1981][2], and that's the name in use today. The point is, there's nothing special about any port; they're just a way to designate an address where data transference may happen. - -Back in 1972, [a list of port numbers][3] (then called "sockets") was published, and this has since evolved into a set of well-known standard port numbers that help manage specific kinds of traffic. For instance, you access ports 80 and 443 on a daily basis when you visit a website, because most everyone on the internet has agreed, implicitly or explicitly, that data is transferred from web servers over those ports. You can test this theory by opening a web browser and navigating to a website with a nonstandard port appended to the URL. For instance, if you navigate to **example.com:42**, your request is denied because example.com does not serve a website at port 42. - -![Navigating to a nonstandard port produces an error][4] - -If you revisit the same website at port 80, you get a website, as expected. You can specify port 80 with **:80** at the end of the URL, but because port 80 is the standard port for HTTP traffic, your web browser assumes port 80 by default. - -When a computer, like a web server, expects traffic at a specific port, it's acceptable (and necessary) to have the port open for traffic. The danger is leaving ports open that you have no reason to expect traffic on, and that's exactly what a firewall is for. - -### Install firewalld - -There are many interfaces for firewall configuration. This article covers [**firewalld**][5], which integrates with Network Manager on the desktop and **firewall-cmd** in the terminal. Many Linux distributions ship with these tools installed. If yours doesn't, you can either take this article as general advice for firewall management and apply it to what you use, or you can install **firewalld**. - -On Ubuntu, for instance, you must enable the **universe** repository, deactivate the default **ufw** firewall, and then install **firewalld**: - - -``` -$ sudo systemctl disable ufw -$ sudo add-apt-repository universe -$ sudo apt install firewalld -``` - -Fedora, CentOS, RHEL, OpenSUSE, and many others include **firewalld** by default. - -Regardless of your distribution, for a firewall to be effective, it must be active and set to be loaded at boot. The less you have to think about firewall maintenance, the better. - - -``` -`$ sudo systemctl enable --now firewalld` -``` - -### Choose your zone with Network Manager - -You probably connect to many different networks every day. You're on one network at work, another at the café, and yet another at home. Your computer can detect which network you use more frequently than others, but it doesn't know which you trust. - -A firewall _zone_ contains presets deciding what ports to open and close. Using zones, you can choose a policy that makes the most sense for the network you're currently on. - -To see a list of available zones, open the Network Manager Connection Editor, found in your Applications menu, or with the **nm-connection-editor &** command. - -![Network Manager Connection Editor][6] - -From the list of network connections, double-click on your current network. - -In the network configuration window that appears, click the General tab. - -In the General panel, click the drop-down menu next to Firewall Zone for a list of all available zones. - -![Firewall zones][7] - -You can get this same list with this terminal command: - - -``` -`$ sudo firewall-cmd --get-zones` -``` - -The zone titles indicate what their designers had in mind when creating them, but you can get the specifics of any zone with this terminal command: - - -``` -$ sudo firewall-cmd --zone work --list-all -work -  target: default -  icmp-block-inversion: no -  interfaces: -  sources: -  services: ssh dhcpv6-client -  ports: -  protocols: -  [...] -``` - -In this example, the **work** zone is configured to permit SSH and DHCPv6-client incoming traffic but drops any other incoming traffic not explicitly requested by the user. (In other words, the **work** zone doesn't block HTTP response traffic when you visit a website, but it _does_ deny an HTTP request on your port 80.) - -View each zone to get familiar with the traffic each one allows. The most common ones are: - - * **Work:** Use this one when on a network you mostly trust. SSH, DHCPv6, and mDNS are permitted, and you can add more as needed. This zone is meant to be a starting point for a custom work environment based on your daily office requirements. - * **Public:** For networks you do not trust. This zone is the same as the work zone, but presumably, you would not add the same exceptions as your work zone. - * **Drop:** All incoming connections are dropped with no response given. This is as close to a stealth mode as you can get without shutting off networking entirely because only outgoing network connections are possible (even a casual port scanner could detect your computer from outgoing traffic, though, so don't mistake this zone for a cloaking device). This is arguably the safest zone when on public WiFi, and definitely the best when you have reason to believe a network is hostile. - * **Block:** All incoming connections are rejected with a message declaring that the requested port is prohibited. Only network connections you initiate are possible. This is a "friendly" version of the drop zone because, even though no port is open for incoming traffic, a port verbosely declines an uninitiated connection. - * **Home:** Use this when you trust other computers on the network. Only selected incoming connections are accepted, and you can add more as needed. - * **Internal:** Similar to the work zone, this is intended for internal networks where you mostly trust the other computers. You can open more ports and services as needed but still maintain a different rule set than you have on your work zone. - * **Trusted:** All network connections are accepted. Good for troubleshooting or on networks you absolutely trust. - - - -### Assigning a zone to a network - -You can assign a zone to any network connection you make. Furthermore, you can assign a different zone to each network interface (Ethernet cable, WiFi, and so on) that attaches to each network. - -Select the zone you want and click the Save button to commit the change. - -![Setting a new zone][8] - -The easiest way to get into the habit of assigning a zone to a network interface is to tend to the networks you use most often. Assign the home zone to your home network, the work zone to your work network, and the public network to your favorite library or café network. - -Once you have assigned a zone to all your usual networks, make an effort to assign a zone to the next new network you join, whether it's a new café or your mate's home network. Assigning zones is the best way to reinforce your own awareness that networks are not all equal and that you're not any more secure than anybody else just because you run Linux. - -### Default zone - -Rather than prompting you for a zone every time you join a new network, firewalld assigns any unknown network a default zone. Open a terminal and type this command to get your default zone: - - -``` -$ sudo firewall-cmd --get-default -public -``` - -In this example, the public zone is the default. It's expected that you will keep the public zone highly restrictive, so it's a pretty safe zone to assign unknown networks. However, you can set your own default instead. - -For instance, if you're more paranoid than most, or if you know that you frequent networks you have reason to distrust, you can assign a highly restrictive zone as default: - - -``` -$ sudo firewall-cmd --set-default-zone drop -success -$ sudo firewall-cmd --get-default -drop -``` - -Now any new network you join will be subject to the drop zone rules unless you manually change it to something less restrictive. - -### Customizing zones by opening ports and services - -Firewalld's developers don't intend for their zone definitions to satisfy the needs of all the different networks and levels of trust in existence. They're just starting points for you to use and customize. - -You don't have to know much about firewalls to be able to open and close ports based on the kinds of network activity you know you generate. - -#### Predefined services - -The simplest way to add permissions to your firewall is to add a predefined service. Strictly speaking, there's no such thing as a "service" as far as your firewall knows, because firewalls understand port numbers and protocol types. However, firewalld provides collections of ports and protocols based on standards and conventions. - -For example, if you're a web developer and want to open your computer up on your local network so your colleagues can see the website you're building, you would add the **http** and **https** services. If you're a gamer and you're running the open source [murmur][9] voice-chat server for your guild, then you'd add the **murmur** service. There are many other services available, which you can view with this command: - - -``` -$ sudo firewall-cmd --get-services -amanda-client amanda-k5-client bacula bacula-client \ -bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \ -ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \ -freeipa-ldap freeipa-ldaps ftp [...] -``` - -If you see a service you need, add it to your current firewall configuration, for example: - - -``` -`$ sudo firewall-cmd --add-service murmur` -``` - -This command opens all the ports and protocols needed for a particular service _within your default zone_, but only until you reboot your computer or restart your firewall. To make your changes permanent, use the **\--permanent** flag: - - -``` -`$ sudo firewall-cmd --add-service murmur --permanent` -``` - -You can also issue the command for a zone other than your default: - - -``` -`$ sudo firewall-cmd --add-service murmur --permanent --zone home` -``` - -#### Ports - -Sometimes you want to allow traffic for something that just isn't defined by firewalld's services. Maybe you're setting up a nonstandard port for a common service or you need to open an arbitrary port. - -For example, maybe you're running the open source [virtual tabletop][10] software [MapTool][11]. Since you're running the MapTool server and there's no industry standard governing which port MapTool runs on, you can decide what port it uses and then "poke a hole" in your firewall to allow traffic on that port. - -The process is basically the same as for services: - - -``` -`$ sudo firewall-cmd --add-port 51234/tcp` -``` - -This command opens port 51234 to incoming TCP connections _in your default zone_, but only until you reboot your computer or restart your firewall. To make your changes permanent, use the **\--permanent** flag: - - -``` -`$ sudo firewall-cmd --add-port 51234/tcp --permanent` -``` - -You can also issue the command for a zone other than your default: - - -``` -`$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home` -``` - -Allowing traffic through your computer is different from letting traffic through your router"s firewall. Your router probably has a different interface for its own embeded firewall (though the principle is the same), which is outside the scope of this article. - -### Removing ports and services - -If you decide a service or a port is no longer needed, you can restart your firewall to clear your changes, unless you use the **\--permanent** flag. - -If you made your changes permanent, use the **\--remove-port** or **\--remove-service** flag: - - -``` -`$ sudo firewall-cmd --remove-port 51234/tcp --permanent` -``` - -You can remove ports and services from a zone other than your default zone by specifying a zone in your command: - - -``` -`$ sudo firewall-cmd --remove-service murmur --permanent --zone home` -``` - -### Custom zones - -You can use and abuse the default zones provided by firewalld, but you also have the freedom to create your own. For instance, if it makes sense for you to have a zone specific to gaming, then you can create one and switch over to it only while gaming. - -To create a new, empty zone, create a new zone called **game** and reload the firewall rules so that your new zone becomes active: - - -``` -$ sudo firewall-cmd --new-zone game --permanent -success -$ sudo firewall-cmd --reload -``` - -Once it's created and active, you can customize it with all the services and ports you need to have open for game night. - -### Diligence - -Start thinking about your firewall strategy today. Start slow, and build up some sane defaults that make sense for you. It may take time before you make it a habit to think about your firewall and understand which network services you use, but with a little exploration, you can strengthen your Linux workstation no matter what your environment. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/7/make-linux-stronger-firewalls - -作者:[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/BUSINESS_buildtogether.png?itok=9Tvz64K5 (People working together to build ) -[2]: https://tools.ietf.org/html/rfc793 -[3]: https://tools.ietf.org/html/rfc433 -[4]: https://opensource.com/sites/default/files/uploads/web-port-nonstandard.png (Navigating to a nonstandard port produces an error) -[5]: https://firewalld.org/ -[6]: https://opensource.com/sites/default/files/uploads/nm-connection-editor.png (Network Manager Connection Editor) -[7]: https://opensource.com/sites/default/files/uploads/nm-zone.png (Firewall zones) -[8]: https://opensource.com/sites/default/files/uploads/nm-set.png (Setting a new zone) -[9]: https://www.mumble.com/ -[10]: https://opensource.com/article/18/5/maptool -[11]: https://github.com/RPTools diff --git a/translated/tech/20190702 Make Linux stronger with firewalls.md b/translated/tech/20190702 Make Linux stronger with firewalls.md new file mode 100644 index 0000000000..3561166c97 --- /dev/null +++ b/translated/tech/20190702 Make Linux stronger with firewalls.md @@ -0,0 +1,261 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Make Linux stronger with firewalls) +[#]: via: (https://opensource.com/article/19/7/make-linux-stronger-firewalls) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +使用防火墙让你的 Linux 更加强大 +====== +掌握防火墙的工作原理,以及如何设置防火墙来提高 Linux 的安全性 +![People working together to build ][1] + +所有人都听说过防火墙(哪怕仅仅是在网络犯罪片里看到过相关的情节设定),很多人也知道他们的计算机里很可能正运行着防火墙,但是很少有人明白在必要的时候如何驾驭防火墙。 + +防火墙被用来拦截那些不请自来的网络流量,然而不同网络需要的安全级别也不尽相同。比如说,和在外面一家咖啡馆里使用公共 WiFi 相比,你在家里的时候可以更加信任网络里的其它计算机和设备。你或许希望计算机能够区分可以信任和不可信任的网络,不过最好还是应该学会自己去管理(或者至少是核实)你的安全设置。 + +### 防火墙的工作原理 + +网络里不同设备之间的通信是通过一种叫做 **端口** 的网关实现的。这里的端口指的并不是像 USB 端口 或者 HDMI 端口这样的物理连接。在网络术语中,端口是一个纯粹的虚拟概念,用来表示某种类型的数据到达或离开一台计算机时候所走的路径。其实也可以换个名字来称呼,比如叫“连接”或者“门道”,不过 [早在 1981 年的时候][2] 它们就被称作端口了,这个叫法也沿用至今。其实端口这个东西没有任何特别之处,只是一种用来指代一个可能会发生数据传输的地址的方式。 + +1972 年,一份 [端口数字清单][3](那时候的端口被称为“套接字”)被发布了,并且从此演化为一组众所周知的标准端口号,帮助管理特定类型的网络流量。比如说,你每天访问网站的时候都会使用 80 和 443 端口,因为互联网上的绝大多数人都同意(或者是默认)数据从 web 服务器上传输的时候是通过这两个端口的。如果想要验证这一点,你可以在使用浏览器访问网站的时候在 URL 后面加上一个非标准的端口号码。比如说,访问 **example.com:42** 的请求会被拒绝,因为 example.com 在 42 端口上并不提供网站服务。 + + +![Navigating to a nonstandard port produces an error][4] + +如果你是通过 80 端口访问同一个网站,就可以(不出所料地)正常访问了。你可以在 URL 后面加上 **:80** 来指定使用 80 端口,不过由于 80 端口是 HTTP 访问的标准端口,所以你的浏览器其实已经默认在使用 80 端口了。 + +当一台计算机(比如说 web 服务器)准备在指定端口接收网络流量的时候,保持该端口向网络流量开放是一种可以接受的(也是必要的)行为。但是不需要接收流量的端口如果也处在开放状态就比较危险了,这就是需要用防火墙解决的问题。 + +#### 安装 firewalld + +有很多种配置防火墙的方式,这篇文章介绍 [**firewalld**][5]。在桌面环境下它被集成在网络管理器(Network Manager)里,在终端里则是集成在 **firewall-cmd** 里。很多 Linux 发行版都预装了这些工具。如果你的发行版里没有,你可以把这篇文章当成是管理防火墙的通用性建议,在你所使用的防火墙软件里使用类似的方法,或者你也可以选择安装 **firewalld**。 + +比如说在 Ubuntu 上,你必须启用 **universe** 软件仓库,关闭默认的 **ufw** 防火墙,然后再安装 **firewalld**: + + +``` +$ sudo systemctl disable ufw +$ sudo add-apt-repository universe +$ sudo apt install firewalld +``` + +Fedora、CentOS、RHEL、OpenSUSE,以及其它很多发行版默认就包含了 **firewalld**。 + +无论你使用哪个发行版,如果希望防火墙发挥作用,就必须保持它在开启状态,并且设置成开机自动加载。你应该尽可能减少在防火墙维护工作上所花费的精力。 + +``` +`$ sudo systemctl enable --now firewalld` +``` + +### 使用网络管理器选择区域 + +或许你每天都会连接到很多不同的网络。在工作的时候使用的是一个网络,在咖啡馆里是另一个,在家里又是另一个。你的计算机可以判断出哪一个网络的使用频率比较高,但是它并不知道哪一个是你信任的网络。 + +一个防火墙的 **区域** 里包含了端口开放和关闭的预设规则。你可以通过使用区域来选择一个对当前网络最适用的策略。 + +你可以打开网络管理器里的连接编辑器(可以在应用菜单里找到),或者是使用 **nm-connection-editor &** 命令以获取所有可用区域的列表。 + +![Network Manager Connection Editor][6] + +在网络连接列表中,双击你现在所使用的网络。 + +在出现的网络配置窗口中,点击“通用”标签页。 + +在“通用”面板中,点击“防火墙区域”旁边的下拉菜单以获取所有可用区域的列表。 + +![Firewall zones][7] + +也可以使用下面的终端命令以获取同样的列表: + +``` +`$ sudo firewall-cmd --get-zones` +``` + +每个区域的名称已经可以透露出设计者创建这个区域的意图,不过你也可以使用下面这个终端命令获取任何一个区域的详细信息: + +``` +$ sudo firewall-cmd --zone work --list-all +work +  target: default +  icmp-block-inversion: no +  interfaces: +  sources: +  services: ssh dhcpv6-client +  ports: +  protocols: +  [...] +``` + +在这个例子中,**工作**区域的配置是允许接收 SSH 和 DHCPv6-client 的流量,但是拒绝接收其他任何用户没有明确请求的流量。(换句话说,**工作**区域并不会在你浏览网站的时候拦截 HTTP 响应流量,但是 **会** 拦截一个针对你计算机上 80 端口的 HTTP 请求。) + +你可以依次查看每一个区域,弄清楚它们分别都允许什么样的流量。比较常见的有: + + * **工作:** 这个区域应该在你非常信任的网络上使用。它允许 SSH、DHCPv6 和 mDNS,并且还可以添加更多允许的项目。该区域非常适合作为一个基础配置,然后在此之上根据日常办公的需求自定义一个工作环境。 + * **公共:** 用在你不信任的网络上。这个区域的配置和工作区域是一样的,但是你不应该再继续添加其它任何允许项目。 + * **丢弃:** 所有传入连接都会被丢弃,并且不会有任何响应。在不彻底关闭网络的条件下,这已经是最接近隐形模式的配置了,因为只允许传出网络连接(不过随便一个端口扫描器就可以通过传出流量检测到你的计算机,所以这个区域并不是一个隐形装置)。如果你在使用公共 WiFi,这个区域可以说是最安全的选择;如果你觉得当前的网络比较危险,这个区域也一定是最好的选择。 + * **拦截:** 所有传入连接都会被拒绝,但是会返回一个消息说明所请求的端口被禁用了。只有你主动发起的网络连接是被允许的。这是一个友好版的 **丢弃** 区域,因为虽然还是没有任何一个端口允许传入流量,但是说明了会拒绝接收任何不是本机主动发起的连接。 + * **家庭:** 在你信任网络里的其它计算机的情况下使用这个区域。该区域只会允许你所选择的传入连接,但是你可以根据需求添加更多的允许项目。 + * **内部:** 和工作区域类似,该区域适用于内部网络,你应该在基本信任网络里的计算机的情况下使用。你可以根据需求开放更多的端口和服务,同时保持和工作区域不同的一套规则。 + * **信任:** 接受所有的网络连接。适合在故障排除的情况下或者是在你绝对信任的网络上使用。 + + +### 为网络指定一个区域 + +你可以为你的任何一个网络连接都指定一个区域,并且对于同一个网络的不同连接方式(比如以太网、WiFi 等等)也可以指定不同的区域。 + +选择你想要的区域,点击“保存”按钮提交修改。 + +![Setting a new zone][8] + +养成为网络连接指定区域的习惯的最好办法是从你最常用的网络开始。为你的家庭网络指定家庭区域,为工作网络指定工作区域,为你最喜欢的图书馆或者咖啡馆的网络指定公关区域。 + +一旦你为所有常用的网络都指定了一个区域,在之后加入新的网络的时候(无论是一个新的咖啡馆还是你朋友家的网络),试图也为它指定一个区域吧。这样可以很好地让你意识到不同的网络的安全性是不一样的,你并不会仅仅因为使用了 Linux 而比任何人更加安全。 + +### 默认区域 + +每次你加入一个新的网络的时候,firewalld 并不会提示你进行选择,而是会指定一个默认区域。你可以在终端里输入下面这个命令来获取你的默认区域: + +``` +$ sudo firewall-cmd --get-default +public +``` + +在这个例子里,默认区域是公共区域。你应该保证公共区域有非常严格的限制规则,这样在将它指定到未知网络中的时候才比较安全。或者你也可以设置你自己的默认区域。 + +比如说,如果你是一个比较多疑的人,或者需要经常接触不可信任的网络的话,你可以设置一个非常严格的默认区域: + +``` +$ sudo firewall-cmd --set-default-zone drop +success +$ sudo firewall-cmd --get-default +drop +``` + +这样一来,任何你新加入的网络都会被指定使用丢弃区域,除非你手动将它制定为另一个没有这么严格的区域。 + +### 通过开放端口和服务实现自定义区域 + +Firewalld 的开发者们并不是想让他们设定的区域能够适应世界上所有不同的网络和所有级别的信任程度。你可以直接使用这些区域,也可以在它们基础上进行个性化配置。 + +你可以根据自己所需要进行的网络活动决定开放或关闭哪些端口,这并不需要对防火墙有多深的理解。 + +#### 预设服务 + +在你的防火墙上添加许可的最简单的方式就是添加预设服务。严格来讲,你的防火墙并不懂什么是“服务”,因为它只知道端口号码和使用协议的类型。不过在标准和传统的基础之上,防火墙可以为你提供一套端口和协议的组合。 + +比如说,如果你是一个 web 开发者并且希望你的计算机对本地网络开放(这样你的同事就可以看到你正在搭建的网站了),可以添加 **http** 和 **https** 服务。如果你是一名游戏玩家,并且在为你的游戏公会运行开源的 [murmur][9] 语音聊天服务器,那么你可以添加 **murmur** 服务。还有其它很多可用的服务,你可以使用下面这个命令查看: + +``` +$ sudo firewall-cmd --get-services +amanda-client amanda-k5-client bacula bacula-client \ +bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \ +ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \ +freeipa-ldap freeipa-ldaps ftp [...] +``` + +如果你找到了一个自己需要的服务,可以将它添加到当前的防火墙配置中,比如说: + +``` +`$ sudo firewall-cmd --add-service murmur` +``` + +这个命令 **在你的默认区域里** 添加了指定服务所需要的所有端口和协议,不过在重启计算机或者防火墙之后就会失效。如果想让你的修改永久有效,可以使用 **\--permanent** 标志: + +``` +`$ sudo firewall-cmd --add-service murmur --permanent` +``` + +你也可以将这个命令用于一个非默认区域: + +``` +`$ sudo firewall-cmd --add-service murmur --permanent --zone home` +``` + +#### 端口 + +有时候你希望允许的流量并不在 firewalld 定义的服务之中。也许你想在一个非标准的端口上运行一个常规服务,或者就是想随意开放一个端口。 + +举例来说,也许你正在运行开源的 [虚拟桌游][10] 软件 [MapTool][11]。由于 MapTool 服务器应该使用哪个端口这件事情并没有一个行业标准,所以你可以自行决定使用哪个端口,然后在防火墙上“开一个洞”,让它允许该端口上的流量。 + +实现方式和添加服务差不多: + +``` +`$ sudo firewall-cmd --add-port 51234/tcp` +``` + +这个命令 **在你的默认区域** 里将 51234 端口向 TCP 传入连接开放,不过在重启计算机或者防火墙之后就会失效。如果想让你的修改永久有效,可以使用 **\--permanent** 标志: + +``` +`$ sudo firewall-cmd --add-port 51234/tcp --permanent` +``` + +你也可以将这个命令用于一个非默认区域: + +``` +`$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home` +``` + +在路由器的防火墙上设置允许流量和在本机上设置的方式是不同的。你的路由器可能会为它的内嵌防火墙提供一个不同的配置界面(原理上是相同的),不过这就超出本文范围了。 + +### 移除端口和服务 + +如果你不再需要某项服务或者某个端口了,并且设置的时候没有使用 **\--permanent** 标志的话,那么可以通过重启防火墙来清除修改。 + +如果你已经将修改设置为永久生效了,可以使用 **\--remove-port** 或者 **\--remove-service** 标志来清除: + +``` +`$ sudo firewall-cmd --remove-port 51234/tcp --permanent` +``` + +你可以通过在命令中指定一个区域以将端口或者服务从一个非默认区域中移除。 + +``` +`$ sudo firewall-cmd --remove-service murmur --permanent --zone home` +``` + +### 自定义区域 + +你可以随意使用 firewalld 默认提供的这些区域,不过也完全可以创建自己的区域。比如如果希望有一个针对游戏的特别区域,你可以创建一个,然后只有在玩儿游戏的时候切换到该区域。 + +如果想要创建一个新的空白区域,你可以创建一个名为 **game** 的新区域,然后重新加载 firewall 规则,这样你的新区域就启用了: + +``` +$ sudo firewall-cmd --new-zone game --permanent +success +$ sudo firewall-cmd --reload +``` + +一旦创建好并且处于启用状态,你就可以通过添加玩游戏时所需要的服务和端口来实现个性化定制了。 + +### 勤勉 + +从今天起开始思考你的防火墙策略吧。不用着急,可以试着慢慢搭建一些合理的默认规则。你也许需要花上一段时间才能习惯于思考防火墙的配置问题,以及弄清楚你使用了哪些网络服务,不过无论是处在什么样的环境里,只要稍加探索你就可以让自己的 Linux 工作站变得更为强大。 + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/7/make-linux-stronger-firewalls + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chen-ni](https://github.com/chen-ni) +校对:[校对者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/BUSINESS_buildtogether.png?itok=9Tvz64K5 (People working together to build ) +[2]: https://tools.ietf.org/html/rfc793 +[3]: https://tools.ietf.org/html/rfc433 +[4]: https://opensource.com/sites/default/files/uploads/web-port-nonstandard.png (Navigating to a nonstandard port produces an error) +[5]: https://firewalld.org/ +[6]: https://opensource.com/sites/default/files/uploads/nm-connection-editor.png (Network Manager Connection Editor) +[7]: https://opensource.com/sites/default/files/uploads/nm-zone.png (Firewall zones) +[8]: https://opensource.com/sites/default/files/uploads/nm-set.png (Setting a new zone) +[9]: https://www.mumble.com/ +[10]: https://opensource.com/article/18/5/maptool +[11]: https://github.com/RPTools From f28885261fe6362bcfce35bfd81d7b2703047afc Mon Sep 17 00:00:00 2001 From: chen ni Date: Sat, 6 Jul 2019 16:47:04 +0800 Subject: [PATCH 307/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Been Nominated for the -Internet Villain- Award in the UK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md index 253eae7967..7466550f25 100644 --- a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 6b966eedf0768e2d0d6eeb15baddb388b2dac40c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 17:38:36 +0800 Subject: [PATCH 308/336] PRF @LuuMing --- ... concerned about memory levels on Linux.md | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/translated/tech/20190513 When to be concerned about memory levels on Linux.md b/translated/tech/20190513 When to be concerned about memory levels on Linux.md index 3a985290d2..406f78da4e 100644 --- a/translated/tech/20190513 When to be concerned about memory levels on Linux.md +++ b/translated/tech/20190513 When to be concerned about memory levels on Linux.md @@ -1,30 +1,32 @@ [#]: collector: (lujun9972) [#]: translator: (luuming) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (When to be concerned about memory levels on Linux) [#]: via: (https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) -何时需要关注 linux 的内存层面? +何时需要关注 Linux 的内存用量? ====== -Linux 上的内存管理很复杂。尽管使用率高但未必存在问题。你也应当关注一些其他的事情。 -![Qfamily \(CC BY 2.0\)][1] + +> Linux 上的内存管理很复杂。尽管使用率高但未必存在问题。你也应当关注一些其他的事情。 + +![](https://img.linux.net.cn/data/attachment/album/201907/06/173913n6rjbxwj6bfrjxwx.jpg) 在 Linux 上用光内存通常并不意味着存在严重的问题。为什么?因为健康的 Linux 系统会在内存中缓存磁盘活动,基本上占用掉了未被使用的内存,这显然是一件好事情。 -换句话说,它不让内存浪费掉。使用空闲的内存增加磁盘访问速度,并且不占用运行中应用程序的内存。你也能够想到,使用这种内存缓存比起直接访问硬盘驱动(HDD)快上数百倍,也比明显快于直接访问固态硬盘驱动。内存占满或几乎占满通常意味着系统正在尽可能高效地运行当中——并不是运行中遇到了问题。 +换句话说,它不让内存浪费掉。使用空闲的内存增加磁盘访问速度,并且不占用运行中应用程序的内存。你也能够想到,使用这种内存缓存比起直接访问硬盘驱动器(HDD)快上数百倍,也比明显快于直接访问固态硬盘驱动。内存占满或几乎占满通常意味着系统正在尽可能高效地运行当中 —— 并不是运行中遇到了问题。 ### 缓存如何工作 -磁盘缓存简单地意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读取与写入。应用程序不会失去任何东西,并且大多数时间里能够按需求获得更多的内存。此外,磁盘缓存不会导致应用程序使用交换分区。反而,用作磁盘缓存的内存空间当被需要时会立即归还,并且磁盘内容会被更新。 +磁盘缓存简单地意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读取与写入。应用程序不会失去任何东西,并且大多数时间里能够按需求获得更多的内存。此外,磁盘缓存不会导致应用程序转而使用交换分区。反而,用作磁盘缓存的内存空间当被需要时会立即归还,并且磁盘内容会被更新。 ### 主要和次要的页故障 -Linux 系统通过分割物理内存为进程分配空间,将分割成的块称为“页”,并且映射这些页到每个进程的虚拟内存上。不再会用到的页也许会从内存中移除,尽管相关的进程还在运行。当进程需要一个没有被映射或没在内存中页时,故障便会产生。所以,“故障fault”并不意味着“错误error”而是“不可用unavailables”,并且故障在内存管理中扮演者一个重要的角色。 +Linux 系统通过分割物理内存来为进程分配空间,将分割成的块称为“页”,并且映射这些页到每个进程的虚拟内存上。不再会用到的页也许会从内存中移除,尽管相关的进程还在运行。当进程需要一个没有被映射或没在内存中页时,故障便会产生。所以,这个“故障fault”并不意味着“错误error”而是“不可用unavailables”,并且故障在内存管理中扮演者一个重要的角色。 -次要故障意味着在内存中的页未分配给请求的进程或未在内存管理单元中标记为出现。主要故障意味着页不保留在内存中。 +次要故障意味着在内存中的页未分配给请求的进程,或未在内存管理单元中标记为出现。主要故障意味着页没有保留在内存中。 如果你想切身感受一下次要页故障和主要页故障出现的频率,像这样试一下 `ps` 命令。注意我们要的是与页故障和产生它的命令相关的项。输出中省略了很多行。`MINFL` 显示出次要故障的数目,而 `MAJFL` 表示了主要故障的数目。 @@ -45,7 +47,7 @@ $ ps -eo min_flt,maj_flt,cmd 927 0 gdm-session-worker [pam/gdm-password] ``` -汇报单一进程,你可以尝试这样的命令: +汇报单一进程,你可以尝试这样的命令(LCTT 译注:参数里面的 `1` 是要查看的进程的 PID): ``` $ ps -o min_flt,maj_flt 1 @@ -53,7 +55,7 @@ $ ps -o min_flt,maj_flt 1 230064 150 ``` -你也可以添加其他的项,例如进程所有者的 UID 和 GID。 +你也可以添加其他的显示字段,例如进程所有者的 UID 和 GID。 ``` $ ps -o min_flt,maj_flt,cmd,args,uid,gid 1 @@ -63,7 +65,7 @@ $ ps -o min_flt,maj_flt,cmd,args,uid,gid 1 ### 多少才算满? -一种较好的方法来掌握内存究竟使用了多少是用 `free -m` 命令。`-m` 选项指定了数字的单位是 MiBsmebibytes 而不是字节。 +一种较好的方法来掌握内存究竟使用了多少是用 `free -m` 命令。`-m` 选项指定了数字的单位是 MiBmebibyte 而不是字节。 ``` $ free -m @@ -76,7 +78,7 @@ Swap: 3535 0 3535 ### 什么时候要担心 -如果 Linux 系统上的性能表现良好——应用程序响应度高,命令行没有显示出问题——很可能系统状况良好。记住,一些应用也许会出于某种原因而变慢,但它不影响整个系统。 +如果 Linux 系统上的性能表现良好 —— 应用程序响应度高,命令行没有显示出问题 —— 很可能系统状况良好。记住,一些应用也许会出于某种原因而变慢,但它不影响整个系统。 过多的硬故障也许表明确实存在问题,但要将其与观察到的性能相比较。 @@ -91,11 +93,10 @@ Swap: 3535 0 3535 ### Linux 性能很复杂 -把所有的放在一边,Linux 系统上的内存可能会变满,并且性能可能会降低。当系统出现问题时不要仅将单一的内存使用报告作为指标。 +抛开这些不说,Linux 系统上的内存可能会变满,并且性能可能会降低。当系统出现问题时不要仅将单一的内存使用报告作为指标。 Linux 系统的内存管理很复杂,因为它采取的措施需要确保系统资源得到最好的利用。不要受到一开始内存占满的欺骗,使你认为系统存在问题,但实际上并没有。 -在 [Facebook][4] 和 [LinkedIn][5] 上加入网络研讨会发表你的评论。 -------------------------------------------------------------------------------- @@ -104,7 +105,7 @@ via: https://www.networkworld.com/article/3394603/when-to-be-concerned-about-mem 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] 译者:[LuuMing](https://github.com/LuuMing) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From d8b1fa038a8081e2745cd2212955e49e24715288 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 17:39:12 +0800 Subject: [PATCH 309/336] PUB @LuuMing https://linux.cn/article-11067-1.html --- ...90513 When to be concerned about memory levels on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190513 When to be concerned about memory levels on Linux.md (98%) diff --git a/translated/tech/20190513 When to be concerned about memory levels on Linux.md b/published/20190513 When to be concerned about memory levels on Linux.md similarity index 98% rename from translated/tech/20190513 When to be concerned about memory levels on Linux.md rename to published/20190513 When to be concerned about memory levels on Linux.md index 406f78da4e..dc63f7089f 100644 --- a/translated/tech/20190513 When to be concerned about memory levels on Linux.md +++ b/published/20190513 When to be concerned about memory levels on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (luuming) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11067-1.html) [#]: subject: (When to be concerned about memory levels on Linux) [#]: via: (https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From 43d38730bd600e343012618b312c9e58baed1f0e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 6 Jul 2019 17:40:43 +0800 Subject: [PATCH 310/336] APL:20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK --- ...Been Nominated for the -Internet Villain- Award in the UK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md index 253eae7967..9663b50bf0 100644 --- a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From eadadbd151f0800e609a538619e6f71b2b6b9a03 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sat, 6 Jul 2019 18:30:23 +0800 Subject: [PATCH 311/336] Revert "APL:20190706 Say WHAAAT Mozilla has Been Nominated for the Internet Villain Award in the UK" --- ...Been Nominated for the -Internet Villain- Award in the UK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md index 9663b50bf0..253eae7967 100644 --- a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (wxy) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 41af5e1cee6b92224c15a589dfa75f8f3cce1671 Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 6 Jul 2019 18:45:37 +0800 Subject: [PATCH 312/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190518=20Best?= =?UTF-8?q?=20Linux=20Distributions=20for=20Beginners?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190518 Best Linux Distributions for Beginners.md --- ... Best Linux Distributions for Beginners.md | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 sources/tech/20190518 Best Linux Distributions for Beginners.md diff --git a/sources/tech/20190518 Best Linux Distributions for Beginners.md b/sources/tech/20190518 Best Linux Distributions for Beginners.md new file mode 100644 index 0000000000..afe9581280 --- /dev/null +++ b/sources/tech/20190518 Best Linux Distributions for Beginners.md @@ -0,0 +1,206 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Best Linux Distributions for Beginners) +[#]: via: (https://itsfoss.com/best-linux-beginners/) +[#]: author: (Aquil Roshan https://itsfoss.com/author/aquil/) + +Best Linux Distributions for Beginners +====== + +_**Brief** : In this article, we will see the **best Linux distro for beginners**_. This will help new Linux users to pick their first distribution. + +Let’s face it, [Linux][1] can pose an overwhelming complexity to new users. But then, it’s not Linux itself that brings this complexity. Rather, it’s the “newness” factor that causes this. Not getting nostalgic, but remembering my first time with Linux, I didn’t even know what to expect. I liked it. But it was an upstream swim for me initially. + +Not knowing where to start can be a downer. Especially for someone who does not have the concept of something else running on their PC in place of Windows. + +Linux is more than an OS. It’s an idea where everybody grows together and there’s something for everybody. We have already covered: + + * [Best Linux distributions for Windows users][2] + * [Best lightweight Linux distros][3] + * [Best Linux distributions for hacking][4] + * [Best Linux distributions for gaming][5] + * [Best Linux distributions for privacy and anonymity][6] + * [Best Linux distributions that look like MacOS][7] + + + +In addition to that, there are distributions that cater to the needs of newcomers especially. So here are a few such Linux distros for beginners. You can watch it in a video and [subscribe to our YouTube channel][8] for more Linux related videos. + +### Best Linux Distros for Beginners + +Please remember that this list is no particular order. The main criteria for compiling this list is ease of installation, out of the box hardware software, ease of use and availability of software packages. + +#### 1\. Ubuntu + +If you’ve researched Linux on the internet, it’s highly probable that you have come across Ubuntu. Ubuntu is one of the leading Linux distributions. It is also the perfect path to begin your Linux journey. + +![][9] + +Ubuntu has been tagged as Linux for human beings. Now, this is because Ubuntu has put in a lot of effort on universal usability. Ubuntu does not require you to be technically sound for you to use it. It breaks the notion of Linux=Command line hassle. This is one of the major plus points that rocketed Ubuntu to where it is today. + +Ubuntu offers a very convenient installation procedure. The installer speaks plain English (or any major language you want). You can even try out Ubuntu before actually going through the installation procedure. The installer provides simple options to: + + * Install Ubuntu removing the older OS + * [Install Ubuntu alongside Windows][10] or any other existing OS (A choice is given at every startup to select the OS to boot). + * Configure partitions for users who know what they are doing. + + + +_Beginner tip: Select the second option if you are not sure about what to do._ + +Ubuntu’s user interface is called GNOME. It is as simple as well as productive as it gets. You can search anything from applications to files by pressing the Windows key. Is there any way you can make this simpler? + +There are no driver installation issues as Ubuntu comes with a hardware detector which detects, downloads and installs optimal drivers for your PC. Also, the installation comes with all the basic software like a music player, video player, an office suite and games for some time killing. + +Ubuntu has a great documentation and community support. [Ubuntu forums ][11]and [Ask Ubuntu][12] provide an appreciable quality support in almost all aspects regarding Ubuntu. It’s highly probable that any question you might have will already be answered. And the answers are beginner friendly. + +Do check out and download [Ubuntu][13] at the [official site.][13] + +#### 2\. Linux Mint Cinnamon + +For years, Linux Mint has been the **number one** Linux distribution on [Distrowatch][14]. Well deserved throne I must say. Linux mint is one of my personal favorites. It is elegant, graceful and provides a superior computing experience (out of the box). + +![][15] + +Linux Mint features the Cinnamon desktop environment. New Linux users who are still in the process of familiarizing themselves with Linux software will find Cinnamon very useful. All the software are very accessibly grouped under categories. Although this is nothing of a mind-blowing feature, to new users who do not know the names of Linux software, this is a huge bonus. + +[][16] + +Suggested read Installing Microsoft Visual Studio Code on Linux + +Linux Mint is fast. Runs fine on older computers. Linux Mint is built upon the rock-solid Ubuntu base. It uses the same software repository as Ubuntu. About the Ubuntu software repository, Ubuntu pushes software for general only use after extensive testing. This means users will not have to deal with unexpected crashes and glitches that some new software are prone to, which can be a real no-no for new Linux users. + +![][17] + +Windows 7 lovers who are really not into where Microsoft if heading with Windows 10 will find Linux Mint lovable. Linux Mint desktop is pretty similar to Windows 7 desktop. Similar toolbar, similar menu, similar tray icons are all set to make Windows users feel absolutely at home. + +Personally, I’m more likely to suggest Linux Mint to someone who is new to Linux world as Linux Mint does impress users enough for them to accept it. To me, Linux Mint should be the first among the list of Linux for beginners. + +Do check out [Linux Mint here][18]. Go for the Cinnamon version. + +#### 3\. Zorin OS + +A majority of computer users are Windows users. And when a [Windows user gets a Linux][2], there’s a fair amount of ‘unlearning process’ that user must go through. A huge amount of operations have been fixed in our muscle memory. For example, the mouse reaching to the lower left corner of the screen (Start) everytime you want to launch an application. So if we could find something that eases these issues on Linux, it’s half a battle won. Enter Zorin OS. + +![][19] + +Zorin OS is an Ubuntu-based, highly polished Linux distribution, entirely made for Windows refugees. Although pretty much every Linux distro is usable by everybody, some people might tend to be reluctant when the desktop looks too alien. Zorin OS dodges past this obstacle because of its similarities with Windows appearance wise. + +Package managers are something of a new concept to Linux newcomers. That’s why Zorin OS comes with a huge (I mean really huge) list of pre-installed software. Anything you need, there’s good chance it’s already installed on Zorin OS. As if that was not enough, [Wine and PlayOnLinux][20] come pre-installed so you can run your loved Windows software and [games][21] here too. + +![][22] + +Zorin OS comes with an amazing theme engine called the ‘Zorin look changer’. It offers some heavy customization options with presets to make your OS look like Windows 7, XP, 2000 or even a Mac for that matter. You’re going to feel home. + +![][23] + +These features make Zorin OS the _**best Linux distro for beginners**_ , isn’t it? Do check out the [Zorin OS website][24] to know more and download the OS. + +#### 4\. Elementary OS + +Since we have taken a look at Linux distros for Windows users, let’s swing by something for MacOS users too. Elementary OS very quickly rose to fame and now is always included in the list of top distros, all thanks to its aesthetic essence. Inspired by MacOS looks, Elementary OS is one of the most beautiful Linux distros. + +![][25] + +Elementary OS is another Ubuntu-based operating system which means the operating system itself is unquestionably stable. Elementary OS features the Pantheon desktop environment. You can immediately notice the resemblance to MacOS desktop. This is an advantage to MacOS users switching to Linux as they will much comfortable with the desktop and this really eases the process of coping to this change. + +![][26] + +The menu is simple and customizable according to user preferences. The operating system is zero intrusive so you can really focus on your work. It comes with a very small number of pre-installed software. So, any new user will not be repulsed by huge bloat. But hey, it’s got everything you need out of the box. For more software, Elementary OS provides a neat AppCenter. It is highly accessible and simple. Everything at one place. You can get all the software you want and perform upgrades in clicks. + +[][27] + +Suggested read How to Install and Use Slack in Linux + +Experience wise, [Elementary OS][28] is really a great piece of software. Definitely give [it a try.][28] + +#### 5\. Linux Mint Mate + +A good number of people who come to Linux are looking to revive older computers. With Windows 10, many computers that had decent specs just some years ago have become incompetent. A quick google will suggest you install Linux on such computers. In that way, you can keep them running up to the mark for the near future. Linux Mint Mate is a great Linux distro if you are looking for something to run your older computers. + +![][29] + +Linux Mint Mate is very light, resource efficient but still a polished distro. It can run smoothly on computers with less muscle power. The desktop environment does not come with bells and jingles. But in no way is it functionally inferior to any other desktop environments. The operating system is non-intrusive and allows you to have a productive computing experience without getting in your way. + +Again, the Linux Mint Mate is based on Ubuntu and has the advantage of huge base solid Ubuntu software repository. It comes with a minimum number of necessities pre-installed. Easy driver installation and setting management are made available. + +You can run Linux Mint Mate even if you have 512 MB RAM and 9 GB hard disk space (the more the merrier). + +The Mate desktop environment is really simple to use with no twists in the tale. This is really a huge plus point for Linux beginners. All the more reason to [try out Linux Mint Mate][30]. + +#### 6\. Manjaro Linux + +Ok. Any long time Linux user will say guiding a newcomer even in the general direction of Arch Linux is a sin. But hear me out. + +Arch is considered experts-only Linux because of it’s highly complex installation procedure. Manajro and Arch Linux have a common origin. But they differ extensively in everything else. + +![][31] + +Manajro Linux has an extremely beginner friendly installation procedure. A lot of things are automated like driver installation using ‘Hardware detection’. Manjaro hugely negates the hardware driver hassles that torments a lot of other Linux distros. And even if you face any issues, Manjaro has an amazing community support. + +Manjaro has its own software repository which maintains the latest of software. While providing up to date software to users is a priority, guaranteed stability is not at all compromised. This is one of the prime differences between Arch and Manjaro. Manjaro delays package releases to make sure they are absolutely stable and no regression will be caused. You can also access the Arch User Repository on Manjaro, so anything and everything you need, is always available. + +If you want to know more about Manjaro features, do read my colleague [John’s experience with Manjaro Linux and why he is hooked][32] to it. + +![][33] + +Manjaro Linux comes in XFCE, KDE, Gnome, Cinnamon and a host of more desktop environments. Do check out the [official website][34]. + +To install any of the above 6 operating systems, you need to create a bootable USB stick. If you are currently using Windows [use this guide to do so][35]. Mac OS users may [follow this guide][36]. + +**Your choice for the best Linux distro for beginners?** + +Linux might come with a learning curve, but that’s not something anybody ever regretted. Go ahead get an ISO and check out Linux. If you are already a Linux user, do share this article and help someone fall in love with Linux in this season of love. Cheers. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/best-linux-beginners/ + +作者:[Aquil Roshan][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/aquil/ +[b]: https://github.com/lujun9972 +[1]: https://www.linux.com/what-is-linux +[2]: https://itsfoss.com/windows-like-linux-distributions/ +[3]: https://itsfoss.com/lightweight-linux-beginners/ +[4]: https://itsfoss.com/linux-hacking-penetration-testing/ +[5]: https://itsfoss.com/linux-gaming-distributions/ +[6]: https://itsfoss.com/privacy-focused-linux-distributions/ +[7]: https://itsfoss.com/macos-like-linux-distros/ +[8]: https://www.youtube.com/c/itsfoss +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2018/06/ubuntu-18-04-desktop.jpeg?resize=800%2C450&ssl=1 +[10]: https://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/ +[11]: https://ubuntuforums.org/ +[12]: http://askubuntu.com/ +[13]: https://www.ubuntu.com/ +[14]: https://distrowatch.com/ +[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/02/LM_Home.jpg?ssl=1 +[16]: https://itsfoss.com/install-visual-studio-code-ubuntu/ +[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/02/LM_SS.jpg?ssl=1 +[18]: https://linuxmint.com/ +[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/02/Zorin.jpg?ssl=1 +[20]: https://itsfoss.com/use-windows-applications-linux/ +[21]: https://itsfoss.com/linux-gaming-guide/ +[22]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/02/Zorin-office.jpg?ssl=1 +[23]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/02/OSX.jpg?ssl=1 +[24]: https://zorinos.com/ +[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2017/02/Pantheon-Desktop.jpg?resize=800%2C500&ssl=1 +[26]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/02/Application-Menu.jpg?ssl=1 +[27]: https://itsfoss.com/slack-use-linux/ +[28]: https://elementary.io/ +[29]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/02/mate.jpg?ssl=1 +[30]: http://blog.linuxmint.com/?p=3182 +[31]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/02/manajro.jpg?ssl=1 +[32]: https://itsfoss.com/why-use-manjaro-linux/ +[33]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/02/manjaro-kde.jpg?ssl=1 +[34]: https://manjaro.org/ +[35]: https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-windows +[36]: https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-macos From 8027211e524a6990e5ac247e32cf097234ef3537 Mon Sep 17 00:00:00 2001 From: zgj Date: Sat, 6 Jul 2019 21:30:24 +0800 Subject: [PATCH 313/336] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=BF=BB=E8=AF=91=20?= =?UTF-8?q?20190609=20How=20to=20set=20ulimit=20and=20file=20descriptors?= =?UTF-8?q?=20limit=20on=20Linux=20Servers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...file descriptors limit on Linux Servers.md | 68 ++++++++++--------- 1 file changed, 35 insertions(+), 33 deletions(-) rename {sources => translated}/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md (55%) diff --git a/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md b/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md similarity index 55% rename from sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md rename to translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md index d7dab7ce06..59e818426a 100644 --- a/sources/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md +++ b/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md @@ -7,25 +7,26 @@ [#]: via: (https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/) [#]: author: (Shashidhar Soppin https://www.linuxtechi.com/author/shashidhar/) +如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 How to set ulimit and file descriptors limit on Linux Servers ====== - -**Introduction: ** Challenges like number of open files in any of the production environment has become common now a day. Since many applications which are Java based and Apache based, are getting installed and configured, which may lead to too many open files, file descriptors etc. If this exceeds the default limit that is set, then one may face access control problems and file opening challenges. Many production environments come to standstill kind of situations because of this. +
**简介**:如今每天(遇到的)像是打开文件数这类的挑战在任何生产环境已经变得司空见惯了。因为许多基于 Java 和 Apache 的应用程序的正在安装和配置,可能会导致打开过多的文件、文件描述符等。如果(文件描述符等)超过默认设置限制,就可能会面临访问控制问题和打开文件的挑战。许多生产环境因此而陷入停滞状态。 -Luckily, we have “ **ulimit** ” command in any of the Linux based server, by which one can see/set/get number of files open status/configuration details. This command is equipped with many options and with this combination one can set number of open files. Following are step-by-step commands with examples explained in detail. +幸运的是,在任何基于 Linux 的服务器上,都有 “**ulimit**”命令,通过它可以查看/设置/获取文件打开的状态/配置详情的数量。此命令配备了许多选项,通过此组合可以设置打开文件的数量。下面是分步命令,并用示例详细说明。 -### To see what is the present open file limit in any Linux System -To get open file limit on any Linux server, execute the following command, +### 查看任何 Linux 系统中当前打开文件数的限制 + +要在任何 Linux 服务器上获得打开文件数限制,请执行以下命令, ``` [root@linuxtechi ~]# cat /proc/sys/fs/file-max 146013 ``` -The above number shows that user can open ‘146013’ file per user login session. +上面的数字表明用户可以在每个用户登录会话中打开 ‘146013’ 个文件。 ``` [root@linuxtechi ~]# cat /proc/sys/fs/file-max @@ -34,11 +35,12 @@ The above number shows that user can open ‘146013’ file per user login sessi 73906 ``` -This clearly indicates that individual Linux operating systems have different number of open files. This is based on dependencies and applications which are running in respective systems. +这清楚地表明,各个 Linux 操作系统具有不同数量的打开文件。这基于各自系统中运行的依赖关系和应用程序。 -### ulimit command : +### ulimit 命令 : + +顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit 命令时,它将打印登录用户的所有资源限制。现在让我们在Ubuntu/Debian 和 CentOS 系统上运行 “**ulimit-a**”, -As the name suggests, ulimit (user limit) is used to display and set resources limit for logged in user.When we run ulimit command with -a option then it will print all resources’ limit for the logged in user. Now let’s run “ **ulimit -a** ” on Ubuntu / Debian and CentOS systems, **Ubuntu / Debian System** , @@ -84,9 +86,9 @@ virtual memory (kbytes, -v) unlimited file locks (-x) unlimited ``` -As we can be seen here different OS have different limits set. All these limits can be configured/changed using “ulimit” command. +正如我们可以在这里看到的,不同的操作系统有不同的限制设置。所有这些限制都可以使用 “ulimit” 命令进行配置/更改。 -To display the individual resource limit then pass the individual parameter in ulimit command, some of parameters are listed below: +要显示单个资源限制可以在 ulimit 命令中传递特定的参数,下面列出了一些参数: * ulimit -n –> It will display number of open files limit * ulimit -c –> It display the size of core file @@ -96,8 +98,7 @@ To display the individual resource limit then pass the individual parameter in u * ulimit -v –> It will display the maximum memory size limit - -Use below commands check hard and soft limits for number of open file for the logged in user +使用以下命令检查登录用户打开文件数量的硬限制和软限制 ``` root@linuxtechi ~}$ ulimit -Hn @@ -106,53 +107,54 @@ root@linuxtechi ~}$ ulimit -Sn 1024 ``` -### How to fix the problem when limit on number of Maximum Files was reached ? +### 如何修复达到最大文件数限制的问题 ? Let’s assume our Linux server has reached the limit of maximum number of open files and want to extend that limit system wide, for example we want to set 100000 as limit of number of open files. -Use sysctl command to pass fs.file-max parameter to kernel on the fly, execute beneath command as root user, +让我们假设我们的 Linux 服务器已经达到了打开文件的最大数量限制,并希望将该限制扩展到整个系统,例如,我们希望将 100000 设置为打开文件数量的限制。 ``` root@linuxtechi~]# sysctl -w fs.file-max=100000 fs.file-max = 100000 ``` -Above changes will be active until the next reboot, so to make these changes persistent across the reboot, edit the file **/etc/sysctl.conf** and add same parameter, +上述更改只会在下次重启之前有效,因此要使这些更改在重启后仍存在,请编辑文件 **/etc/sysctl.conf** 并添加相同的参数, ``` root@linuxtechi~]# vi /etc/sysctl.conf fs.file-max = 100000 ``` -save and exit file, +保存并推出文件 -Run the beneath command to make above changes into effect immediately without logout and reboot. +运行下面命令,使上述更改立即生效,而无需注销和重新启动。 ``` root@linuxtechi~]# sysctl -p ``` -Now verify whether new changes are in effect or not. + +现在验证新的更改是否生效。 ``` root@linuxtechi~]# cat /proc/sys/fs/file-max 100000 ``` -Use below command to find out how many file descriptors are currently being utilized: + +使用以下命令找出当前正在使用的文件描述符数量: ``` [root@linuxtechi ~]# more /proc/sys/fs/file-nr 1216 0 100000 ``` -Note:- Command “ **sysctl -p** ” is used to commit the changes without reboot and logout. +注意:-命令 “**sysctl-p**” 用于在不重新启动和注销的情况下提交更改。 +### 通过 limit.conf 文件设置用户级资源限制 -### Set User level resource limit via limit.conf file +“**/etc/sysctl.conf**” 文件用于设置系统范围的资源限制,但如果要为 Oracle、MariaDB 和 Apache 等特定用户设置资源限制,则可以通过 “**/etc/security/limits.conf**” 文件去实现。 -“ **/etc/sysctl.conf** ” file is used to set resource limit system wide but if you want to set resource limit for specific user like Oracle, MariaDB and Apache then this can be achieved via “ **/etc/security/limits.conf** ” file. - -Sample Limit.conf is shown below, +示例 Limit.conf 如下所示, ``` root@linuxtechi~]# cat /proc/sys/fs/file-max @@ -162,7 +164,7 @@ root@linuxtechi~]# cat /proc/sys/fs/file-max ![Limits-conf-linux-part2][2] -Let’s assume we want to set hard and soft limit on number of open files for linuxtechi user and for oracle user set hard and soft limit on number of open process, edit the file “/etc/security/limits.conf” and add the following lines +假设我们要为 linuxtechi 用户设置打开文件数量的硬限制和软限制,而对于 oracle 用户设置打开进程数量的硬限制和软限制,编辑文件 “/etc/security/limits.conf” 并添加以下行 ``` # hard limit for max opened files for linuxtechi user @@ -176,9 +178,9 @@ oracle hard nproc 8096 oracle soft nproc 4096 ``` -Save & exit the file. +保存并退出文件 -**Note:** In case you want to put resource limit on a group instead of users, then it can also be possible via limit.conf file, in place of user name , type **@ ** and rest of the items will be same, example is shown below, +**注意:** 如果你想对一个组而不是用户进行资源限制,那么也可以通过limit.conf文件,输入 **@** 代替用户名,其余项都是相同的,示例如下, ``` # hard limit for max opened files for sysadmin group @@ -187,7 +189,7 @@ Save & exit the file. @sysadmin soft nofile 1024 ``` -Verify whether new changes are in effect or not, +验证新的更改是否生效 ``` ~]# su - linuxtechi @@ -203,11 +205,11 @@ Verify whether new changes are in effect or not, 4096 ``` -Note: Other majorly used command is “[ **lsof**][3]” which is used for finding out “how many files are opened currently”. This command is very helpful for admins. +注:其他主要使用的命令是 “[ **lsof**][3]” 用于找出“当前打开了多少个文件”,这命令对管理员非常有帮助。 -**Conclusion:** +**结尾:** -As mentioned in the introduction section “ulimit” command is very powerful and helps one to configure and make sure application installations are smoother without any bottlenecks. This command helps in fixing many of the number of file limitations in Linux based servers. +正如在介绍部分提到的,“ulimit” 命令非常强大,可以帮助用户配置并确保应用程序安装更加流畅,没有任何瓶颈。此命令有助于修复基于 Linux 的服务器中的(打开)大量文件的限制。 -------------------------------------------------------------------------------- @@ -215,7 +217,7 @@ via: https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/ 作者:[Shashidhar Soppin][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[zgj1024](https://github.com/zgj1024) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From a310b6bc73529e6708311de2c08b76958619d562 Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 6 Jul 2019 22:06:50 +0800 Subject: [PATCH 314/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190703=20Newsbo?= =?UTF-8?q?at=20=E2=80=93=20A=20Command=20line=20RSS/Atom=20Feed=20Reader?= =?UTF-8?q?=20For=20Text=20Consoles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190703 Newsboat - A Command line RSS-Atom Feed Reader For Text Consoles.md --- ... RSS-Atom Feed Reader For Text Consoles.md | 262 ++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 sources/tech/20190703 Newsboat - A Command line RSS-Atom Feed Reader For Text Consoles.md diff --git a/sources/tech/20190703 Newsboat - A Command line RSS-Atom Feed Reader For Text Consoles.md b/sources/tech/20190703 Newsboat - A Command line RSS-Atom Feed Reader For Text Consoles.md new file mode 100644 index 0000000000..dbca5db557 --- /dev/null +++ b/sources/tech/20190703 Newsboat - A Command line RSS-Atom Feed Reader For Text Consoles.md @@ -0,0 +1,262 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Newsboat – A Command line RSS/Atom Feed Reader For Text Consoles) +[#]: via: (https://www.ostechnix.com/newsbeuter-command-line-rssatom-feed-reader-unix-like-systems/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +Newsboat – A Command line RSS/Atom Feed Reader For Text Consoles +====== + +![Newsboat RSS/Atom Feed reader][1] + +**Newsboat** , a fork of Newsbeuter, is a free, open source RSS/Atom feed reader for text consoles. It supports GNU/Linux, FreeBSD, Mac OS X, and other Unix-like operating systems. Compared to other slow and huge amount of memory consumed RSS feed readers, Newsboat is the best choice for anyone who are looking for a simple, slick and fast feed reader that can be completely managed via keyboard. + +Concerning about the features, we can list the following: + + * Subscribe to RSS 0.9x, 1.0, 2.0 and Atom feeds. + * Download podcasts. + * Configure your keyboard shortcuts as per your wish. + * Search through all downloaded articles. + * Categorize and query your subscriptions with a flexible tag system. + * Integrate any data source through a flexible filter and plugin system. + * Automatically remove unwanted articles through a “killfile”. + * Define “meta feeds” using a powerful query language. + * Synchronize newsboatr with your bloglines.com account. + * Import and exporting your subscriptions with the widely used OPML format. + * Customize the look and feel of Newsboat as per your liking. + * Keep all your feeds in sync with Google Reader. + * And many. + + + +In this brief guide, let us see how to install and use Newsboat in Linux. + +### Newsboat – A Command line RSS/Atom Feed Reader + +##### Installation + +**On Arch Linux and derivatives:** + +Newsboat is available in the [Community] repository of Arch Linux. So, you can install it using [**Pacman**][2] command as shown below. + +``` +$ sudo pacman -S newsboat +``` + +**On Debian, Ubuntu, Linux Mint:** + +It is also available in the default repositories of DEB based systems such as Ubuntu, Linux Mint. To install it, run the following command: + +``` +$ sudo apt-get install newsboat +``` + +**On Fedora:** + +Newsboat is available in the official repositories of Fedora. To install it, run: + +``` +$ sudo dnf install newsboat +``` + +Newsboat is also available as [**Snap**][3], so you can install it using command: + +``` +$ sudo snap install newsboat +``` + +Once installed, launch it using command: + +``` +$ newsboat +``` + +**Sample output:** + +``` +Starting newsboat 2.10.2... +Loading configuration...done. +Opening cache...done. +Loading URLs from /home/sk/.newsboat/urls...done. +Error: no URLs configured. Please fill the file /home/sk/.newsboat/urls with RSS feed URLs or import an OPML file. + +newsboat 2.10.2 +usage: newsboat [-i |-e] [-u ] [-c ] [-x ...] [-h] +-e, --export-to-opml export OPML feed to stdout +-r, --refresh-on-start refresh feeds on start +-i, --import-from-opml= import OPML file +-u, --url-file= read RSS feed URLs from +-c, --cache-file= use as cache file +-C, --config-file= read configuration from +-X, --vacuum compact the cache +-x, --execute=... execute list of commands +-q, --quiet quiet startup +-v, --version get version information +-l, --log-level= write a log with a certain loglevel (valid values: 1 to 6) +-d, --log-file= use as output log file +-E, --export-to-file= export list of read articles to +-I, --import-from-file= import list of read articles from +-h, --help this help +``` + +As you see in the above screenshot, we haven’t added any URLs yet in Newsboat. + +##### Managing Feeds + +We can add, edit, tag, and delete feeds by editing the **urls** file. The default urls file is **~/.newsboat/urls**. If it is not available, just create it. + +**Add feeds** + +To add a feed, edit this file + +``` +$ vi ~/.newsboat/urls +``` + +Then, add the feed URLs one by one. + +``` +http://feeds.feedburner.com/Ostechnix +``` + +If the feed URL has protected with user name and password, you need to mention the username and password as shown below. + +``` +http://username:[email protected]/feed.rss +``` + +After adding all urls, save and close the file. + +**Add tags to the feeds** + +You can add one or more tags to categorize the feeds as per your liking. Specify the tags separated by space if you want to add more than one tags to a single feed. If you want to specify a single tag that contains a space, just mention it within double quotes like below. + +``` +http://feeds.feedburner.com/Ostechnix "All Linux news" +https://www.archlinux.org/feeds/packages/ "Only Arch Linux related news" +``` + +**Read feeds** + +To read feeds, just launch the Newsboat utility from the Terminal using command: + +``` +$ newsboat +``` + +Sample output: + +![][4] + +Newsboat Rss feed reader + +As you see in the above screenshot, I have added two RSS feeds. You can now start downloading the feeds, either by pressing **“R”** to download all feeds, or by pressing **“r”** to download the currently selected feed. + +Now, you will see the list of recent items in each feed. + +![][5] + +Alternatively, you can run the following command to refresh feeds on start: + +``` +$ newsboat -r +``` + +Use **Up/Down** arrows to choose a feed and hit **ENTER** key to open the currently selected feed. + +![][6] + +Press ENTER key to open the selected entry: + +![][7] + +To open the entry in your default web browser, simply press **o**. + +Here is the list of keyboard controls to manage your feeds. + + * Press **n** to go the next unread entry. + * Press **o** to open the selected entry in default web browser. + * Press **r** (small letter) to reload the currently selected feed. + * Press **R** (capital) to reload all feeds. + * Press **A** to mark as read. + * Press **/** to search for a specific entry. + * Press **s** to save single entry or all entries. + * Press **e** to enqueue. + * Press **?** (question mark) to open the help window at any time. + * And press **q** to go back and exit. + + + +**Remove feeds** + +To remove the feeds, just delete the URL in the urls file. + +**Useful tip for Arch Linux users** + +If you’re using a Arch based Linux distribution, I know a good way to read the Arch news page before updating your system. The reason for doing this is you can read the Arch news about current updating issues before actually updating your Arch Linux. + +Add the Arch news link in **~/.newsboat/urls** file: + +``` +$ https://www.archlinux.org/feeds/news/ +``` + +Open your **~/.bashrc** file and add the following line: + +``` +alias update='newsboat -r && sudo pacman -Syu' +``` + +Replace ‘update’ with any alias name of your choice. + +Now, run the following command to update your Arch Linux system. + +``` +$ update +``` + +Whenever you run the above command, it will load the Arch news feed in your Terminal. You can simply read about current issues and then update the Arch Linux system. + +For more details, refer the Newsboat help section using command: + +``` +$ newsboat -h +``` + +Also, refer the [**official documentation**][8] page for more detailed information. + +And, that’s all. Hope this helps. I will be soon here with another useful guide. If you find this article helpful, please take a moment to share it on your social, professional networks and support OSTechNix. + +**Resources:** + + * [**Newsboat website**][9] + * [**Newsboat GtiHub Repository**][10] + + + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/newsbeuter-command-line-rssatom-feed-reader-unix-like-systems/ + +作者:[sk][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2017/07/Newsboat-RSS-Atom-Feed-reader-720x340.png +[2]: https://www.ostechnix.com/getting-started-pacman/ +[3]: https://www.ostechnix.com/introduction-ubuntus-snap-packages/ +[4]: https://www.ostechnix.com/wp-content/uploads/2017/07/Newsboat.png +[5]: https://www.ostechnix.com/wp-content/uploads/2017/07/Load-new-feeds.png +[6]: https://www.ostechnix.com/wp-content/uploads/2017/07/Newboat1.png +[7]: https://www.ostechnix.com/wp-content/uploads/2017/07/Open-Rss-feed-entry.png +[8]: https://newsboat.org/releases/2.16.1/docs/newsboat.html +[9]: https://newsboat.org/ +[10]: https://github.com/newsboat/newsboat From eedacc87e1530e2530e37e545d04578a1fecb025 Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 6 Jul 2019 22:17:00 +0800 Subject: [PATCH 315/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190706=20How=20?= =?UTF-8?q?To=20Delete=20A=20Repository=20And=20GPG=20Key=20In=20Ubuntu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190706 How To Delete A Repository And GPG Key In Ubuntu.md --- ...lete A Repository And GPG Key In Ubuntu.md | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 sources/tech/20190706 How To Delete A Repository And GPG Key In Ubuntu.md diff --git a/sources/tech/20190706 How To Delete A Repository And GPG Key In Ubuntu.md b/sources/tech/20190706 How To Delete A Repository And GPG Key In Ubuntu.md new file mode 100644 index 0000000000..beb69ab1e8 --- /dev/null +++ b/sources/tech/20190706 How To Delete A Repository And GPG Key In Ubuntu.md @@ -0,0 +1,134 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How To Delete A Repository And GPG Key In Ubuntu) +[#]: via: (https://www.ostechnix.com/how-to-delete-a-repository-and-gpg-key-in-ubuntu/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +How To Delete A Repository And GPG Key In Ubuntu +====== + +![Delete A Repository And GPG Key In Ubuntu][1] + +The other day we discussed how to [**list the installed repositories**][2] in RPM and DEB-based systems. Today, we are going to learn how to delete a repository along with its GPG key in Ubuntu. For those wondering, a repository (shortly **repo** ) is a central place where the developers keep the software packages. The packages in the repositories are thoroughly tested and built specifically for each version by Ubuntu developers. The users can download and install these packages on their Ubuntu system using **Apt** **package manager**. Ubuntu has four official repositories namely **Main** , **Universe** , **Restricted** and **Multiverse**. + +Apart from the official repositories, there are many unofficial repositories maintained by developers (or package maintainers). The unofficial repositories usually have the packages which are not available in the official repositories. All packages are signed with pair of keys, a public and private key, by the package maintainer. As you already know, the public key is given out to the users and the private must be kept secret. Whenever you add a new repository in the sources list, you should also add the repository key if Apt package manager wants to trust the newly added repository. Using the repository keys, you can ensure that you’re getting the packages from the right person. Hope you got a basic idea about software repositories and repository keys. Now let us go ahead and see how to delete the repository and its key if it is no longer necessary in Ubuntu systems. + +### Delete A Repository In Ubuntu + +Whenever you add a repository using “add-apt-repository” command, it will be stored in **/etc/apt/sources.list** file. + +To delete a software repository from Ubuntu and its derivatives, just open the /etc/apt/sources.list file and look for the repository entry and delete it. + +``` +$ sudo nano /etc/apt/sources.list +``` + +As you can see in the below screenshot, I have added [**Oracle Virtualbox**][3] repository in my Ubuntu system. + +![][4] + +virtualbox repository + +To delete this repository, simply remove the entry. Save and close the file. + +If you have added PPA repositories, look into **/etc/apt/sources.list.d/** directory and delete the respective entry. + +Alternatively, you can delete the repository using “add-apt-repository” command. For example, I am deleting the [**Systemback**][5] repository like below. + +``` +$ sudo add-apt-repository -r ppa:nemh/systemback +``` + +Finally, update the software sources list using command: + +``` +$ sudo apt update +``` + +### Delete Repository keys + +We use “apt-key” command to add the repository keys. First, let us list the added keys using command: + +``` +$ sudo apt-key list +``` + +This command will list all added repository keys. + +``` +/etc/apt/trusted.gpg +-------------------- +pub rsa1024 2010-10-31 [SC] +3820 03C2 C8B7 B4AB 813E 915B 14E4 9429 73C6 2A1B +uid [ unknown] Launchpad PPA for Kendek + +pub rsa4096 2016-04-22 [SC] +B9F8 D658 297A F3EF C18D 5CDF A2F6 83C5 2980 AECF +uid [ unknown] Oracle Corporation (VirtualBox archive signing key) <[email protected]> +sub rsa4096 2016-04-22 [E] + +/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg +------------------------------------------------------ +pub rsa4096 2012-05-11 [SC] +790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32 +uid [ unknown] Ubuntu Archive Automatic Signing Key (2012) <[email protected]> + +/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg +------------------------------------------------------ +pub rsa4096 2012-05-11 [SC] +8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092 +uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <[email protected]> + +/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg +------------------------------------------------------ +pub rsa4096 2018-09-17 [SC] +F6EC B376 2474 EDA9 D21B 7022 8719 20D1 991B C93C +uid [ unknown] Ubuntu Archive Automatic Signing Key (2018) <[email protected]> +``` + +As you can see in the above output, the long (40 characters) hex value is the repository key. If you want APT package manager to stop trusting the key, simply delete it using command: + +``` +$ sudo apt-key del "3820 03C2 C8B7 B4AB 813E 915B 14E4 9429 73C6 2A1B" +``` + +Or, specify the last 8 characters only: + +``` +$ sudo apt-key del 73C62A1B +``` + +Done! The repository key has been deleted. Run the following command to update the repository lists: + +``` +$ sudo apt update +``` + +**Resource:** + + * [**Software repositories – Ubuntu Community Wiki**][6] + + + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/how-to-delete-a-repository-and-gpg-key-in-ubuntu/ + +作者:[sk][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2019/07/Delete-a-repository-in-ubuntu-720x340.png +[2]: https://www.ostechnix.com/find-list-installed-repositories-commandline-linux/ +[3]: https://www.ostechnix.com/install-oracle-virtualbox-ubuntu-16-04-headless-server/ +[4]: https://www.ostechnix.com/wp-content/uploads/2019/07/virtualbox-repository.png +[5]: https://www.ostechnix.com/systemback-restore-ubuntu-desktop-and-server-to-previous-state/ +[6]: https://help.ubuntu.com/community/Repositories/Ubuntu From 67341b949762eb7e693488c563c0c6db8b5d30c9 Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 6 Jul 2019 22:24:42 +0800 Subject: [PATCH 316/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190706=20Youtub?= =?UTF-8?q?e-dl=20Tutorial=20With=20Examples=20For=20Beginners?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190706 Youtube-dl Tutorial With Examples For Beginners.md --- ...dl Tutorial With Examples For Beginners.md | 446 ++++++++++++++++++ 1 file changed, 446 insertions(+) create mode 100644 sources/tech/20190706 Youtube-dl Tutorial With Examples For Beginners.md diff --git a/sources/tech/20190706 Youtube-dl Tutorial With Examples For Beginners.md b/sources/tech/20190706 Youtube-dl Tutorial With Examples For Beginners.md new file mode 100644 index 0000000000..578804041a --- /dev/null +++ b/sources/tech/20190706 Youtube-dl Tutorial With Examples For Beginners.md @@ -0,0 +1,446 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Youtube-dl Tutorial With Examples For Beginners) +[#]: via: (https://www.ostechnix.com/youtube-dl-tutorial-with-examples-for-beginners/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +Youtube-dl Tutorial With Examples For Beginners +====== + +![Youtube-dl Tutorial With Examples For Beginners][1] + +There are numerous applications available to Download Youtube videos. We have covered such applications, namely [**ClipGrab**][2], and [**Mps-youtube**][3] etc., in the past. Today, we are going to learn about yet another Youtube downloader called **Youtube-dl**. Like Mps-youtube, Youtube-dl is also a command line program to download videos from Youtube and a lot of other websites listed [**here**][4]. Youtube-dl can be able to download a single track or entire playlist in one go. It is a free and open source command line program written in **Python**. It supports GNU/Linux, Mac OS X and Microsoft Windows. + +### Installing Youtube-dl + +The easiest and officially recommended way to install Youtube-dl is just download it, save it in your PATH, make it executable and start using it right away. + +``` +$ sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl +``` + +If you don’t have curl, use **wget** instead: + +``` +$ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl + +$ sudo chmod a+rx /usr/local/bin/youtube-dl +``` + +Alternatively, you can install it using [**Pip**][5] as shown below. + +``` +$ sudo -H pip install --upgrade youtube-dl +``` + +Youtube-dl is also available in the official repositories of some Linux distributions. For example, you can install it in Arch Linux using command: + +``` +$ sudo pacman -S youtube-dl +``` + +On Debian, Ubuntu, Linux mint: + +``` +$ sudo apt install youtube-dl +``` + +On Fedora: + +``` +$ sudo dnf install youtube-dl +``` + +FFmpeg is also required to download 720p videos from YouTube and convert videos to other formats. To install FFmpeg, refer the following guide. + + * [**How to install FFmpeg on Linux**][6] + + + +### Update Youtube-dl + +If you’ve manually installed Youtube-dl using curl or wget, run the following command to update it: + +``` +$ sudo youtube-dl -U +``` + +If you installed it using pip, do: + +``` +$ sudo pip install -U youtube-dl +``` + +Those who installed Youtube-dl using the distribution’s package manager, just use the appropriate update command. For example, on Arch Linux, you can update Youtube-dl by simply running the following command: + +``` +$ sudo pacman -Syu +``` + +On Debian, Ubuntu: + +``` +$ sudo apt update +``` + +Now, let us see some examples to learn to use Youtube-dl. + +### Youtube-dl Tutorial With Examples + +Here, I have compiled most commonly used Youtube-dl commands to download a video or playlist from youtube. + +####### **1\. Download video or playlist** + +To download a video or the entire playlist from Youtube, just mention the URL like below: + +``` +$ youtube-dl https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +If you want to download video or playlist with a custom name of your choice, the command would be: + +``` +$ youtube-dl -o 'abdul kalam inspirational speech' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Replace “abdul kalam inspirational speech” with your own name. + +You can also include additional details, such as the title, the uploader name (channel name) and upload date etc., in the file name by using the following command: + +``` +$ youtube-dl -o '%(title)s by %(uploader)s on %(upload_date)s in %(playlist)s.%(ext)s' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +####### **2\. Download multiple videos** + +Sometimes, you might want to download multiple videos from or any other site. If so, just mention the URL of the videos with space-separated like below: + +``` +$ youtube-dl +``` + +Alternatively, you can put them all in a text file and pass it to Youtube-dl as an argument like below. + +``` +$ youtube-dl -a url.txt +``` + +This command will download all videos mentioned in the url.txt file. + +####### **3\. Download audio-only from a video** + +Youtube-dl allows us to download audio only from a Youtube video. If you ever been in a situation to download only the audio, run: + +``` +$ youtube-dl -x https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +By default, Youtube-dl will save the audio in **Ogg** (opus) format. + +If you prefer to download any other formats, for example **mp3** , run: + +``` +$ youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +This command will download the audio from the given video/playlist, convert it to an MP3 and save it in the current directory. Please note that you should install either [**ffmpeg**][7] or **avconv** to convert the file to mp3 format. + +####### **4\. Download video with description, metadata, annotations, subtitles and thumbnail** + +To download a video along with its other details such as description, metadata, annotations, subtitles, and thumbnail etc., use the following command: + +``` +$ youtube-dl --write-description --write-info-json --write-annotations --write-sub --write-thumbnail https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +####### **5\. List all available formats of video or playlist** + +To list all available formats that a video or playlist is available in, use the following command: + +``` +$ youtube-dl --list-formats https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Or + +``` +$ youtube-dl -F https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Sample output: + +![][8] + +List all available formats of a youtube video using youtube-dl + +As you can see in the above screenshot, Youtube-dl lists all available formats of the given video. From left to right, it displays the video format code, extension and resolution note of the respective video. This can be helpful when you want to download a video at a specific quality or format. + +####### **6\. Download videos in certain quality and/or format** + +By default, Youtube-dl will download the best available quality video. However, it is also possible to download a video or playlist at a specific quality or format. + +Youtube is capable of downloading videos in the following qualities: + + * **best** – Select the best quality format of the given file with video and audio. + * **worst** – Select the worst quality format (both video and audio). + * **bestvideo** – Select the best quality video-only format (e.g. DASH video). Please note that it may not be available. + * **worstvideo** – Select the worst quality video-only format. May not be available. + * **bestaudio** – Select the best quality audio only-format. May not be available. + * **worstaudio** – Select the worst quality audio only-format. May not be available. + + + +For example, if you want to download **best quality** format (both audio and video), just use the following command: + +``` +$ youtube-dl -f best https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Similarly, to download audio-only with best quality: + +``` +$ youtube-dl -f bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +To download worst quality video-only format, use the following command: + +``` +$ youtube-dl -f worstvideo https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +You also combine different format options like below. + +``` +$ youtube-dl -f bestvideo+bestaudio https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +The above command will download best quality video-only and best quality audio-only formats and merge them together with ffmpeg or avconv. Make sure you have installed any one of these tools on your system. + +If you don’t want to merge, replace **+** (plus) operator with **,** (comma) like below: + +``` +$ youtube-dl -f 'bestvideo,bestaudio' https://www.youtube.com/watch?v=7E-cwdnsiow -o '%(title)s.f%(format_id)s.%(ext)s' +``` + +This command will download best quality video and best quality audio and **will not mix them**. In this case, you will get two files, one is audio and another is video. In this example, an output template ( **-o** option) is recommended as bestvideo and bestaudio may have the same file name. + +We can even download a video or playlist at a specific quality with **specific resolution**. + +For instance, the following command will download the **best quality** video in **480 pixel resolution** (less than or equal to 480p). + +``` +$ youtube-dl -f "best[height<=480]" https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Like already said, we can group the format selectors to get a specific quality video. The following command will download best format available(both audio and video) but **no better than 480p**. + +``` +$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +####### **7. Download videos using format code + +** + +All videos have format codes which we can use to download a video at specific quality. To find the format code, just list the available formats using any one of the following commands: + +``` +$ youtube-dl --list-formats https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Or + +``` +$ youtube-dl -F https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +![][9] + +As you can see in the above screenshot, all format codes of the given video are listed in the first column. The best quality format is given at the end (the format code is **22** ). So, the command to download best quality format is: + +``` +$ youtube-dl -f 22 https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Some videos may not have the same formats available while you download videos from playlist. In such cases, you can specify multiple format codes in any preferred order of your choice. Take a look at the following example: + +``` +$ youtube-dl -f 22/17/18 +``` + +As per the above example, Youtube-dl will download the videos in format 22 if it is available. If the format 22 is not available, it will then download format 17 if it is available. If both 22 and 17 formats are not available, it will finally try to download format 18. If none of the specified formats are available, Youtube-dl will complain that no suitable formats are available for download. + +Please note that that slash is left-associative, i.e. formats on the left hand side are preferred. + +####### **8. Download videos by file extension + +** + +Download video(s) in your preferred format, say for example MP4, just run: + +``` +$ youtube-dl --format mp4 https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Or, + +``` +$ youtube-dl -f mp4 https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +Like I already mentioned in the previous section, some videos may not available in your preferred formats. In such cases, Youtube-dl will download any other best available formats. For instance, this command will download best quality MP4 format file. If MP4 format is not available, then it will download any other best available format. + +``` +$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +If you want to download them with custom filename, do: + +``` +$ youtube-dl -f mp4 -o '%(title)s.f%(format_id)s.%(ext)s' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +####### **9. Set size limit for videos + +** + +When you download multiple videos from a playlist, you might want to download videos within a certain size only. + +For example, this command will not download any videos smaller than the given size, say **100MB** : + +``` +$ youtube-dl --min-filesize 100M +``` + +If you don’t want to download videos larger than the given size, do: + +``` +$ youtube-dl --max-filesize 100M +``` + +We can also combine format selection operators to download certain size videos. + +The following command will download best video-only format but **not bigger than 100 MB**. + +``` +$ youtube-dl -f 'best[filesize<100M]' https://www.youtube.com/watch?v=7E-cwdnsiow +``` + +####### **10. Download videos by date-wise + +** + +Youtube-dl allows us to filter and download video or playlist by their upload date. This will be very helpful when you want to download videos from a playlist that contains 100s of videos. + +For instance, to download videos uploaded at an exact date, for example October 01, 2018, the command would be: + +``` +$ youtube-dl --date 20181001 +``` + +Download videos uploaded on or before a specific date: + +``` +$ youtube-dl --datebefore 20180101 +``` + +Download videos uploaded on or after a specific date: + +``` +$ youtube-dl --dateafter 20180101 +``` + +Download only the videos uploaded in the last 6 months: + +``` +$ youtube-dl --dateafter now-6months +``` + +To download videos between a specific date, for example January 01, 2018 to January 01, 2019, use the following command: + +``` +$ youtube-dl --dateafter 20180101 --datebefore 20190101 +``` + +####### **11. Download specific videos from playlist + +** + +This is yet another useful feature of Youtube-dl. It allows us to download a specific song(s) from a playlist that contains 100s of songs. + +For example, to download the 10th file from a playlist, run: + +``` +$ youtube-dl --playlist-items 10 +``` + +Similarly, to download multiple random files, just specify indices of the videos in the playlist separated by commas like below:: + +``` +$ youtube-dl --playlist-items 2,3,7,10 +``` + +You can also specify the range of songs. To download a video playlist starting from a certain video, say 10, to end: + +``` +$ youtube-dl --playlist-start 10 +``` + +To download only the files starting from 2nd to 5th in a playlist, use: + +``` +$ youtube-dl --playlist-start 2 --playlist-end 5 +``` + +####### 12\. Download only videos suitable for specific age + +This is another notable feature of Youtube-dl. It allows us to download only videos suitable for the given age. + +Say for example, to download all “Let’s Play” videos that aren’t marked “NSFW” or age-restricted for 7 year-olds from a playlist, run: + +``` +$ youtube-dl --match-title "let's play" --age-limit 7 --reject-title "nsfw" +``` + +Youtube-dl has a lot more options. I guess these 12 examples are just enough to use Youtube-dl to download videos from online. For more details, refer Youtube-dl help section. + +``` +$ youtube-dl --help +``` + +**Resources:** + + * [**Youtube-dl website**][10] + * [**Youtube-dl GitHub Repository**][11] + * [**https://jonlabelle.com/snippets/view/shell/youtube-dl-command**][12] + + + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/youtube-dl-tutorial-with-examples-for-beginners/ + +作者:[sk][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2019/06/youtube-dl-720x340.png +[2]: https://www.ostechnix.com/clipgrab-youtube-downloader-converter/ +[3]: https://www.ostechnix.com/mps-youtube-commandline-youtube-player-downloader/ +[4]: https://ytdl-org.github.io/youtube-dl/supportedsites.html +[5]: https://www.ostechnix.com/manage-python-packages-using-pip/ +[6]: https://www.ostechnix.com/install-ffmpeg-linux/ +[7]: https://www.ostechnix.com/20-ffmpeg-commands-beginners/ +[8]: https://www.ostechnix.com/wp-content/uploads/2019/06/List-all-available-formats-youtube-dl.png +[9]: https://www.ostechnix.com/wp-content/uploads/2019/06/List-all-available-formats-youtube-dl-1.png +[10]: https://ytdl-org.github.io/youtube-dl/index.html +[11]: https://github.com/ytdl-org/youtube-dl +[12]: https://jonlabelle.com/snippets/view/shell/youtube-dl-command From 36da19c4f4e7f33fb6ab26f802d6c616f95037bd Mon Sep 17 00:00:00 2001 From: darksun Date: Sat, 6 Jul 2019 22:25:27 +0800 Subject: [PATCH 317/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190706=20Instal?= =?UTF-8?q?l=20NetData=20Performance=20Monitoring=20Tool=20On=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190706 Install NetData Performance Monitoring Tool On Linux.md --- ...ta Performance Monitoring Tool On Linux.md | 312 ++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 sources/tech/20190706 Install NetData Performance Monitoring Tool On Linux.md diff --git a/sources/tech/20190706 Install NetData Performance Monitoring Tool On Linux.md b/sources/tech/20190706 Install NetData Performance Monitoring Tool On Linux.md new file mode 100644 index 0000000000..a0fa775728 --- /dev/null +++ b/sources/tech/20190706 Install NetData Performance Monitoring Tool On Linux.md @@ -0,0 +1,312 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Install NetData Performance Monitoring Tool On Linux) +[#]: via: (https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/) +[#]: author: (sk https://www.ostechnix.com/author/sk/) + +Install NetData Performance Monitoring Tool On Linux +====== + +![][1] + +**NetData** is a distributed, real-time, performance and health monitoring tool for systems and applications. It provides unparalleled insights of everything happening on a system in real-time. You can view the results in a highly interactive web-dashboard. Using Netdata, you can get a clear idea of what is happening now, and what happened before in your systems and applications. You don’t need to be an expert to deploy this tool in your Linux systems. NetData just works fine out of the box with zero configuration, and zero dependencies. Just install this utility and sit back, NetData will take care of the rest. + +It has its own built-in webserver to display the result in graphical format. NetData is quite fast and efficient, and it will immediately start to analyze the performance of your system in no time after installing it. It is written using **C** programming language, so it is extremely light weight. It consumes less than 3% of a single core CPU usage and a 10-15MB of RAM. We can easily embed the charts on any existing web pages, and also it has a plugin API, so that you can monitor any application. + +Here is the list of things that will be monitored by NetData utility in your Linux system. + + * CPU usage, + * RAM Usage, + * Swap memory usage, + * Kernel memory usage, + * Hard disks and its usage, + * Network interfaces, + * IPtables, + * Netfilter, + * DDoS protection, + * Processes, + * Applications, + * NFS server, + * Web server (Apache & Nginx), + * Database servers (MySQL), + * DHCP server, + * DNS server, + * Email serve,r + * Proxy server, + * Tomcat, + * PHP, + * SNP devices, + * And many more. + + + +NetData is free, open source tool and it supports Linux, FreeBSD and Mac OS. + +### Install NetData On Linux + +Netdata can be installed on any Linux distributions that have **Bash** installed. + +The easiest way to install Netdata is to run the following one-liner command from the Terminal: + +``` +$ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh) +``` + +This will download and install everything needed to up and run Netdata. + +Some users may not want to inject something directly into Bash without investigating it. If you don’t like this method, you can follow the steps below to install it on your system. + +**On Arch Linux:** + +The latest version is available in the Arch Linux default repositories. So, we can install it with [**pacman**][2] using command: + +``` +$ sudo pacman -S netdata +``` + +**On DEB and RPM-based systems** + +NetData is not available in the default repositories of DEB based (Ubuntu / Debian) or RPM based (RHEL / CentOS / Fedora) systems. We need to install NetData manually from its Git repository. + +First install the required dependencies: + +``` +# Debian / Ubuntu +$ sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libjudy-dev libssl-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl + +# Fedora +$ sudo dnf install zlib-devel libuuid-devel libuv-devel lz4-devel Judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils + +# CentOS / Red Hat Enterprise Linux +$ sudo yum install epel-release +$ sudo yum install autoconf automake curl gcc git libmnl-devel libuuid-devel openssl-devel libuv-devel lz4-devel Judy-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel + +# openSUSE +$ sudo zypper install zlib-devel libuuid-devel libuv-devel liblz4-devel judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils +``` + +After installing the required dependencies, install NetData on DEB or RPM based systems as shown below. + +Git clone the NetData repository: + +``` +$ git clone https://github.com/netdata/netdata.git --depth=100 +``` + +The above command will create a directory called **‘netdata’** in the current working directory. + +Change to the ‘netdata’ directory: + +``` +$ cd netdata/ +``` + +Finally, install and start NetData using command: + +``` +$ sudo ./netdata-installer.sh +``` + +**Sample output:** + +``` +Welcome to netdata! +Nice to see you are giving it a try! + +You are about to build and install netdata to your system. + +It will be installed at these locations: + +- the daemon at /usr/sbin/netdata + - config files at /etc/netdata + - web files at /usr/share/netdata + - plugins at /usr/libexec/netdata + - cache files at /var/cache/netdata + - db files at /var/lib/netdata + - log files at /var/log/netdata + - pid file at /var/run + +This installer allows you to change the installation path. +Press Control-C and run the same command with --help for help. + +Press ENTER to build and install netdata to your system > ## Press ENTER key +``` + +After installing NetData, you will see the following output at the end: + +``` +------------------------------------------------------------------------------- + +OK. NetData is installed and it is running (listening to *:19999). + +------------------------------------------------------------------------------- + +INFO: Command line options changed. -pidfile, -nd and -ch are deprecated. +If you use custom startup scripts, please run netdata -h to see the +corresponding options and update your scripts. + +Hit http://localhost:19999/ from your browser. + +To stop netdata, just kill it, with: + +killall netdata + +To start it, just run it: + +/usr/sbin/netdata + + +Enjoy! + +Uninstall script generated: ./netdata-uninstaller.sh +``` + +![][3] + +Install NetData + +NetData has been installed and started. + +To install Netdata on other Linux distributions, refer the [**official installation instructions page**][4]. + +##### Allow NetData default port via Firewall or Router + +If your system stays behind any firewall or router, you must allow the default port **19999** to access the NetData web interface from any remote systems on the network,. + +**On Ubuntu / Debian:** + +``` +$ sudo ufw allow 19999 +``` + +**On CentOS / RHEL / Fedora:** + +``` +$ sudo firewall-cmd --permanent --add-port=19999/tcp + +$ sudo firewall-cmd --reload +``` + +### Starting / Stopping NetData + +To enable and start Netdata service on systems that use **Systemd** , run: + +``` +$ sudo systemctl enable netdata + +$ sudo systemctl start netdata +``` + +To stop: + +``` +$ sudo systemctl stop netdata +``` + +To enable and start Netdata service on systems that use **Init** , run: + +``` +$ sudo service netdata start + +$ sudo chkconfig netdata on +``` + +To stop it: + +``` +$ sudo service netdata stop +``` + +### Access NetData via Web browser + +Open your web browser, and navigate to **** or **** or ****. You should see a screen something like below. + +![][5] + +Netdata dashboard + +From the dashboard, you will find the complete statistics of your Linux system. Scroll down to view each section. + +You can download and/or view NetData default configuration file at any time by simply navigating to ****. + +![][6] + +Netdata configuration file + +### Updating NetData + +In Arch Linux, just run the following command to update NetData. If the updated version is available in the repository, it will be automatically installed. + +``` +$ sudo pacman -Syyu +``` + +In DEB or RPM based systems, just go to the directory where you have cloned it (In our case it’s netdata). + +``` +$ cd netdata +``` + +Pull the latest update: + +``` +$ git pull +``` + +Then, rebuild and update it using command: + +``` +$ sudo ./netdata-installer.sh +``` + +### Uninstalling NetData + +Go to the location where you have cloned NetData. + +``` +$ cd netdata +``` + +Then, uninstall it using command: + +``` +$ sudo ./netdata-uninstaller.sh --force +``` + +In Arch Linux, the following command will uninstall it. + +``` +$ sudo pacman -Rns netdata +``` + +**Resources:** + + * [**NetData website**][7] + * [**NetData GitHub page**][8] + + + +-------------------------------------------------------------------------------- + +via: https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/ + +作者:[sk][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.ostechnix.com/author/sk/ +[b]: https://github.com/lujun9972 +[1]: https://www.ostechnix.com/wp-content/uploads/2016/06/Install-netdata-720x340.png +[2]: https://www.ostechnix.com/getting-started-pacman/ +[3]: https://www.ostechnix.com/wp-content/uploads/2016/06/Deepin-Terminal_002-6.png +[4]: https://docs.netdata.cloud/packaging/installer/ +[5]: https://www.ostechnix.com/wp-content/uploads/2016/06/Netdata-dashboard.png +[6]: https://www.ostechnix.com/wp-content/uploads/2016/06/Netdata-config-file.png +[7]: http://netdata.firehol.org/ +[8]: https://github.com/firehol/netdata From f2ee58b43ff875604fd315330096eebe03e243b1 Mon Sep 17 00:00:00 2001 From: darksun Date: Sun, 7 Jul 2019 08:28:41 +0800 Subject: [PATCH 318/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190630=20Donald?= =?UTF-8?q?=20Trump=20Now=20Wants=20to=20Ban=20End-to-End=20Encryption?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/news/20190630 Donald Trump Now Wants to Ban End-to-End Encryption.md --- ... Now Wants to Ban End-to-End Encryption.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sources/news/20190630 Donald Trump Now Wants to Ban End-to-End Encryption.md diff --git a/sources/news/20190630 Donald Trump Now Wants to Ban End-to-End Encryption.md b/sources/news/20190630 Donald Trump Now Wants to Ban End-to-End Encryption.md new file mode 100644 index 0000000000..f4fadd248e --- /dev/null +++ b/sources/news/20190630 Donald Trump Now Wants to Ban End-to-End Encryption.md @@ -0,0 +1,49 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Donald Trump Now Wants to Ban End-to-End Encryption) +[#]: via: (https://news.softpedia.com/news/donald-trump-now-wants-to-ban-end-to-end-encryption-526567.shtml) +[#]: author: (Bogdan Popa https://news.softpedia.com/editors/browse/bogdan-popa) + +Donald Trump Now Wants to Ban End-to-End Encryption +====== + +**After[banning][1] and [unbanning][2] Huawei, United States President Donald Trump is now planning to go after end-to-end encryption, with a new report claiming that senior White House officials met this week to discuss the first step the administration could make in this regard.** + +[Politico][3] notes, citing three people familiar with the matter, that number two officials from several key agencies discussed a potential offensive against end-to-end encryption. + +“The two paths were to either put out a statement or a general position on encryption, and [say] that they would continue to work on a solution, or to ask Congress for legislation,” one source was quoted as saying by the cited publication. + +While the White House administration wants to kill off end-to-end encryption in software developed by American companies, this proposal was received with mixed reactions from representatives of various agencies in the country. + +For example, the DHS “is internally divided,” Politico notes, as the agency is aware of the security implications that banning end-to-end encryption could generate. + +### The encryption dispute + +Pushing for regulations against end-to-end encryption is described as a decisive step in the efforts of intelligence agencies and law enforcement in the United States to access devices and data belonging to criminals and terrorists. + +The encryption, which the majority of American companies have already bundled into their products, including here Apple and Google, blocks investigators from accessing suspects’ data. Tech companies position end-to-end encryption as a key privacy feature, and several of them have warned that any regulation against it could even affect national security. + +Apple, in particular, is one of the biggest companies fighting against anti-encryption regulation. The company [**refused to unlock an iPhone used by the San Bernardino terrorist**][4], explaining that breaking into the device would have compromised the security of all customers. + +The FBI eventually unlocked the device using software developed by a third-party. + +-------------------------------------------------------------------------------- + +via: https://news.softpedia.com/news/donald-trump-now-wants-to-ban-end-to-end-encryption-526567.shtml + +作者:[Bogdan Popa;Jun][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://news.softpedia.com/editors/browse/bogdan-popa +[b]: https://github.com/lujun9972 +[1]: https://news.softpedia.com/news/google-bans-huawei-from-using-android-google-play-gmail-other-services-526083.shtml +[2]: https://news.softpedia.com/news/breaking-donald-trump-says-huawei-can-buy-american-products-again-526564.shtml +[3]: https://www.politico.com/story/2019/06/27/trump-officials-weigh-encryption-crackdown-1385306 +[4]: https://news.softpedia.com/news/judge-orders-apple-to-help-the-fbi-hack-san-bernardino-shooter-s-iphone-500517.shtml From d19e69ac905e89aeb654789bdb5caa8813eb91e0 Mon Sep 17 00:00:00 2001 From: darksun Date: Sun, 7 Jul 2019 08:30:31 +0800 Subject: [PATCH 319/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190705=20Lesson?= =?UTF-8?q?s=20in=20Vendor=20Lock-in:=20Google=20and=20Huawei?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190705 Lessons in Vendor Lock-in- Google and Huawei.md --- ...ns in Vendor Lock-in- Google and Huawei.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sources/talk/20190705 Lessons in Vendor Lock-in- Google and Huawei.md diff --git a/sources/talk/20190705 Lessons in Vendor Lock-in- Google and Huawei.md b/sources/talk/20190705 Lessons in Vendor Lock-in- Google and Huawei.md new file mode 100644 index 0000000000..fef21470c9 --- /dev/null +++ b/sources/talk/20190705 Lessons in Vendor Lock-in- Google and Huawei.md @@ -0,0 +1,59 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Lessons in Vendor Lock-in: Google and Huawei) +[#]: via: (https://www.linuxjournal.com/content/lessons-vendor-lock-google-and-huawei) +[#]: author: (Kyle Rankin https://www.linuxjournal.com/users/kyle-rankin) + +Lessons in Vendor Lock-in: Google and Huawei +====== +![](https://www.linuxjournal.com/sites/default/files/styles/850x500/public/nodeimage/story/bigstock-Us--China-Trade-War-Boxing-F-252887971_1.jpg?itok=oZBwXDrP) + +What happens when you're locked in to a vendor that's too big to fail, but is on the opposite end of a trade war? + +The story of Google no longer giving Huawei access to Android updates is still developing, so by the time you read this, the situation may have changed. At the moment, Google has granted Huawei a 90-day window whereby it will have access to Android OS updates, the Google Play store and other Google-owned Android assets. After that point, due to trade negotiations between the US and China, Huawei no longer will have that access. + +Whether or not this new policy between Google and Huawei is still in place when this article is published, this article isn't about trade policy or politics. Instead, I'm going to examine this as a new lesson in vendor lock-in that I don't think many have considered before: what happens when the vendor you rely on is forced by its government to stop you from being a customer? + +### Too Big to Fail + +Vendor lock-in isn't new, but until the last decade or so, it generally was thought of by engineers as a bad thing. Companies would take advantage the fact that you used one of their products that was legitimately good to use the rest of their products that may or may not be as good as those from their competitors. People felt the pain of being stuck with inferior products and rebelled. + +These days, a lot of engineers have entered the industry in a world where the new giants of lock-in are still growing and have only flexed their lock-in powers a bit. Many engineers shrug off worries about choosing a solution that requires you to use only products from one vendor, in particular if that vendor is a large enough company. There is an assumption that those companies are too big ever to fail, so why would it matter that you rely on them (as many companies in the cloud do) for every aspect of their technology stack? + +Many people who justify lock-in with companies who are too big to fail point to all of the even more important companies who use that vendor who would have even bigger problems should that vendor have a major bug, outage or go out of business. It would take so much effort to use cross-platform technologies, the thinking goes, when the risk of going all-in with a single vendor seems so small. + +Huawei also probably figured (rightly) that Google and Android were too big to fail. Why worry about the risks of being beholden to a single vendor for your OS when that vendor was used by other large companies and would have even bigger problems if the vendor went away? + +### The Power of Updates + +Google held a particularly interesting and subtle bit of lock-in power over Huawei (and any phone manufacturer who uses Android)—the power of software updates. This form of lock-in isn't new. Microsoft famously used the fact that software updates in Microsoft Office cost money (naturally, as it was selling that software) along with the fact that new versions of Office had this tendency to break backward compatibility with older document formats to encourage everyone to upgrade. The common scenario was that the upper-level folks in the office would get brand-new, cutting-edge computers with the latest version of Office on them. They would start saving new documents and sharing them, and everyone else wouldn't be able to open them. It ended up being easier to upgrade everyone's version of Office than to have the bosses remember to save new documents in old formats every time. + +The main difference with Android is that updates are critical not because of compatibility, but for security. Without OS updates, your phone ultimately will become vulnerable to exploits that attackers continue to find in your software. The Android OS that ships on phones is proprietary and therefore requires permission from Google to get those updates. + +Many people still don't think of the Android OS as proprietary software. Although people talk about the FOSS underpinnings in Android, only people who go to the extra effort of getting a pure-FOSS version of Android, like LineageOS, on their phones actually experience it. The version of Android most people tend to use has a bit of FOSS in the center, surrounded by proprietary Google Apps code. + +It's this Google Apps code that gives Google the kind of powerful leverage over a company like Huawei. With traditional Android releases, Google controls access to OS updates including security updates. All of this software is signed with Google's signing keys. This system is built with security in mind—attackers can't easily build their own OS update to install on your phone—but it also has a convenient side effect of giving Google control over the updates. + +What's more, the Google Apps suite isn't just a convenient way to load Gmail or Google Docs, it also includes the tight integration with your Google account and the Google Play store. Without those hooks, you don't have access to the giant library of applications that everyone expects to use on their phones. As anyone with a LineageOS phone that uses F-Droid can attest, while a large number of applications are available in the F-Droid market, you can't expect to see those same apps as on Google Play. Although you can side-load some Google Play apps, many applications, such as Google Maps, behave differently without a Google account. Note that this control isn't unique to Google. Apple uses similar code-signing features with similar restrictions on its own phones and app updates. + +### Conclusion + +Without access to these OS updates, Huawei now will have to decide whether to create its own LineageOS-style Android fork or a whole new phone OS of its own. In either case, it will have to abandon the Google Play Store ecosystem and use F-Droid-style app repositories, or if it goes 100% alone, it will need to create a completely new app ecosystem. If its engineers planned for this situation, then they likely are working on this plan right now; otherwise, they are all presumably scrambling to address an event that "should never happen". Here's hoping that if you find yourself in a similar case of vendor lock-in with an overseas company that's too big to fail, you never get caught in the middle of a trade war. + + +-------------------------------------------------------------------------------- + +via: https://www.linuxjournal.com/content/lessons-vendor-lock-google-and-huawei + +作者:[Kyle Rankin][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.linuxjournal.com/users/kyle-rankin +[b]: https://github.com/lujun9972 From c1117bc7392ced553c4012c3e1cf5ae34fb758f1 Mon Sep 17 00:00:00 2001 From: chen ni Date: Sun, 7 Jul 2019 08:51:10 +0800 Subject: [PATCH 320/336] =?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 --- ... the -Internet Villain- Award in the UK.md | 102 ------------------ ... the -Internet Villain- Award in the UK.md | 101 +++++++++++++++++ 2 files changed, 101 insertions(+), 102 deletions(-) delete mode 100644 sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md create mode 100644 translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md diff --git a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md deleted file mode 100644 index 7466550f25..0000000000 --- a/sources/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chen-ni) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK) -[#]: via: (https://itsfoss.com/mozilla-internet-villain/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK -====== - -Mozilla Firefox is one of the most popular browsers available out there. A lot of users prefer it over Chrome just because it encourages privacy protection and features options to keep your Internet activity as private as possible. - -But, one of the recently proposed features – **[DoH (DNS-over-HTTPS)][1]** which is still in the testing phase didn’t receive a good response from the UK’s ISPs trade association. - -So, the ISPA (Internet Services Providers Association) of UK decided to [nominate][2] Mozilla as one of the “Internet Villains” among the nominees for 2019. This is for an award ceremony to be held on 11th July in London by the ISP trade association of the UK. - -![][3] - -### Why “Mozilla” is the “Internet Villain” here? - -In their announcement, the ISPA mentioned that Mozilla is one of the Internet Villains for supporting **DoH** (DNS-over-HTTPS). - -> [@mozilla][4] is nominated for the [#ISPAs][5] [#InternetVillain][6] for their proposed approach to introduce DNS-over-HTTPS in such a way as to bypass UK filtering obligations and parental controls, undermining [#internet][7] safety standards in the UK. [pic.twitter.com/WeZhLq2uvi][8] -> -> — Internet Services Providers Association (ISPAUK) (@ISPAUK) [July 4, 2019][9] - -Along with Mozilla, Article 13 Copyright Directive and President Donald Trump also appear in the list. Here’s how ISPA explained in their announcement: - -_**Mozilla**_ _– for their proposed approach to introduce DNS-over-HTTPS in such a way as to bypass UK filtering obligations and parental controls, undermining internet safety standards in the UK_. - -**_Article_ _13 Copyright Directive_** _– for threatening freedom of expression online by requiring ‘content recognition technologies’ across platforms_ - -_**President Donald Trump**_ _– for causing a huge amount of uncertainty across the complex, global telecommunications supply chain in the course of trying to protect national security_ - -### What is DNS-over-HTTPS? - -DoH basically means that your DNS requests will be encrypted over an HTTPS connection. - -Traditionally, the DNS requests are unencrypted and your DNS provider or the ISP can monitor/control your browsing activity. Without DoH, you can easily enforce blocking/content filtering through your DNS provider or the ISP can do that when they want. - -[][10] - -Suggested read  Firefox: The Internet's Knight in Shining Armor - -However, DoH completely takes that out of the equation and hence, you get a private browsing experience. - -You can explore [how Mozilla implements this partnering with Cloudflare][11] and set it up for yourself if you want. - -### Is DoH helpful? - -Yes and no. - -Of course, on one side of the coin, it lets user bypass any content filters enforced by the DNS or the ISPs. So, it is a good thing that we want to put a stop to Internet censorship and DoH helps us with that. - -But, on the other side, if you are a parent, you can no longer [set content filters][12] if your kid utilizes DoH on Mozilla Firefox. It depends on how good/bad the [firewall is configured][13]. - -But potentially DoH is a solution for some to bypass parental controls, which could be a bad thing. - -Correct me if I’m wrong here – in the comments below. - -Also, using DoH means that you can no longer use the local host file (in case you are using it for ad blocking or something else) - -### Wrapping Up - -What do you think about DoH in general? Is it good enough? - -And, what’s your take on ISPA’s decision? Do you think that they are encouraging Internet censorship and government monitoring on netizens with this kind of announcement? - -Personally, I find it hilarious. Even if DoH isn’t the ultimate feature that everyone wants, it is always good to have an option to protect your privacy in some way. - -Let us know your thoughts in the comments below. Meanwhile, I’ll just put this quote here: - -> In a time of universal deceit, telling the truth is a revolutionary act - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/mozilla-internet-villain/ - -作者:[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://en.wikipedia.org/wiki/DNS_over_HTTPS -[2]: https://www.ispa.org.uk/ispa-announces-finalists-for-2019-internet-heroes-and-villains-trump-and-mozilla-lead-the-way-as-villain-nominees/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/mozilla-internet-villain.jpg?resize=800%2C450&ssl=1 -[4]: https://twitter.com/mozilla?ref_src=twsrc%5Etfw -[5]: https://twitter.com/hashtag/ISPAs?src=hash&ref_src=twsrc%5Etfw -[6]: https://twitter.com/hashtag/InternetVillain?src=hash&ref_src=twsrc%5Etfw -[7]: https://twitter.com/hashtag/internet?src=hash&ref_src=twsrc%5Etfw -[8]: https://t.co/WeZhLq2uvi -[9]: https://twitter.com/ISPAUK/status/1146725374455373824?ref_src=twsrc%5Etfw -[10]: https://itsfoss.com/why-firefox/ -[11]: https://blog.nightly.mozilla.org/2018/06/01/improving-dns-privacy-in-firefox/ -[12]: https://itsfoss.com/how-to-block-porn-by-content-filtering-on-ubuntu/ -[13]: https://itsfoss.com/set-up-firewall-gufw/ diff --git a/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md new file mode 100644 index 0000000000..281ba28d9f --- /dev/null +++ b/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -0,0 +1,101 @@ +[#]: collector: (lujun9972) +[#]: translator: (chen-ni) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK) +[#]: via: (https://itsfoss.com/mozilla-internet-villain/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +什么?Mozilla 被提名英国“互联网恶棍”奖 +====== + +Mozilla Firefox 是目前最流行的浏览器之一。很多用户喜欢它胜过 Chrome 就是因为它鼓励隐私保护,并且可以通过一些选项设置让你的互联网活动尽可能地私密。 + +不过最近推出的功能之一 —— 仍然处于测试阶段的 **[DoH (DNS-over-HTTPS)][1]** 功能却受到了英国互联网服务提供商行业协会的负面评价。 + +英国互联网服务提供商行业协会(Internet Services Providers Association,简称 ISPA)决定将 Mozilla 列入 2019 年“互联网恶棍”奖的最终入围者名单。该奖项将在 ISPA 于 7 月 11 日在伦敦举行的颁奖典礼上进行颁发。 + +![][3] + +### 为什么说 “Mozilla” 是 “互联网恶棍”? + +ISPA 在他们的声明中表示,Mozilla 因为支持了 **DoH**(DNS-over-HTTPS)而被视为“互联网恶棍”。 + +> [@mozilla][4] 被提名为 [#ISPA][5] 的 [#互联网恶棍][6] 是因为他们试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国 [#互联网][7] 安全准则。 [pic.twitter.com/WeZhLq2uvi][8] +> +> — 英国互联网提供商行业协会 (ISPAUK) (@ISPAUK) [2019 年 7 月 4 日][9] + + +和 Mozilla 一同被列入最终入围者名单的还有欧盟版权指令第 13 条和美国总统特朗普。ISPA 在他们的声明里是这样解释的: + +**Mozilla**:因为试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国互联网安全准则。 + +**欧盟版权指令第 13 条**:因为要求各平台使用“内容识别技术”,威胁到了线上言论自由。 + +**美国总统特朗普**:因为在试图保护国家安全的过程中,为复杂的全球通信供应链带来了巨大的不确定性。 + +### 什么是 DNS-over-HTTPS? + +你可以将 DoH 理解为,域名解析服务(DNS)的请求在 HTTPS 连接中会被加密。 + +传统意义上的 DNS 请求是不会被加密的,因此你的 DNS 提供商或者是互联网服务提供商可以监视或者是控制你的浏览行为。如果没有 DoH,你很容易被 DNS 提供商强制推行拦截和内容过滤系统,并且你的互联网服务提供商也同样可以做到。 + +[][10] + +然而 DoH 颠覆了这一点,可以让你得到一个私密的浏览体验。 + +你可以研究一下 [Mozilla 是如何开展和 Cloudflare 的合作的][11],并且可以自己配置一下 DoH(如果需要的话)。 + +### DoH 有用吗? + +既有用又没有用。 + +当然了,从事情的一方面来看,DoH 可以帮助用户绕过 DNS 或者互联网服务提供商推行的内容过滤系统。如果说 DoH 有助于满足我们避开互联网审查的需求,那么它是一件好事情。 + +不过从事情的另一方面来看,如果你是一位家长,而你的孩子在 Mozilla Firefox 上使用了 DoH 的话,你就无法 [设置内容过滤器][12] 了。这取决于 [防火墙配置][13] 的好坏。 + +DoH 可能会成为一些人绕过家长监护的手段,这可能不是一件好事。 + +如果我这样的说法有问题,你可以在下面的评论区纠正我。 + +并且,使用 DoH 就意味着你没办法使用本地 host 文件了(如果你正用它作为广告拦截或者是其它用途的话)。 + +### 总结 + +你是如何看待 DoH 的呢?它足够好吗? + +你又是如何看待 ISPA 的决定的呢?你觉得他们这样的声明是不是在鼓励互联网审查和政府对网民的监控呢? + +我个人觉得这个决定非常可笑。即使 DoH 并不是所有人都需要的那个终极功能,能够有一种保护个人隐私的选择也总不是件坏事。 + +在下面的评论区里发表你的看法吧。最后我想引用这么一句话: + +> 在谎言遍地的时代,说真话是一种革命行为。(LCTT 译注:引自乔治奥威尔) + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/mozilla-internet-villain/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[chen-ni](https://github.com/chen-ni) +校对:[校对者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://en.wikipedia.org/wiki/DNS_over_HTTPS +[2]: https://www.ispa.org.uk/ispa-announces-finalists-for-2019-internet-heroes-and-villains-trump-and-mozilla-lead-the-way-as-villain-nominees/ +[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/mozilla-internet-villain.jpg?resize=800%2C450&ssl=1 +[4]: https://twitter.com/mozilla?ref_src=twsrc%5Etfw +[5]: https://twitter.com/hashtag/ISPAs?src=hash&ref_src=twsrc%5Etfw +[6]: https://twitter.com/hashtag/InternetVillain?src=hash&ref_src=twsrc%5Etfw +[7]: https://twitter.com/hashtag/internet?src=hash&ref_src=twsrc%5Etfw +[8]: https://t.co/WeZhLq2uvi +[9]: https://twitter.com/ISPAUK/status/1146725374455373824?ref_src=twsrc%5Etfw +[10]: https://itsfoss.com/why-firefox/ +[11]: https://blog.nightly.mozilla.org/2018/06/01/improving-dns-privacy-in-firefox/ +[12]: https://itsfoss.com/how-to-block-porn-by-content-filtering-on-ubuntu/ +[13]: https://itsfoss.com/set-up-firewall-gufw/ From f0fbeff57673a584e1fe162efefd67ff429bc850 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 7 Jul 2019 10:38:10 +0800 Subject: [PATCH 321/336] PRF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @chen-ni 翻译的很好 --- ... the -Internet Villain- Award in the UK.md | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md index 281ba28d9f..60d85ab16a 100644 --- a/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ b/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -1,47 +1,46 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK) [#]: via: (https://itsfoss.com/mozilla-internet-villain/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -什么?Mozilla 被提名英国“互联网恶棍”奖 +什么?!Mozilla 被提名英国“互联网恶棍”奖 ====== Mozilla Firefox 是目前最流行的浏览器之一。很多用户喜欢它胜过 Chrome 就是因为它鼓励隐私保护,并且可以通过一些选项设置让你的互联网活动尽可能地私密。 -不过最近推出的功能之一 —— 仍然处于测试阶段的 **[DoH (DNS-over-HTTPS)][1]** 功能却受到了英国互联网服务提供商行业协会的负面评价。 +不过最近推出的功能之一 —— 仍然处于测试阶段的 [DoH (DNS-over-HTTPS)][1] 功能却受到了英国互联网服务提供商行业协会的负面评价。 -英国互联网服务提供商行业协会(Internet Services Providers Association,简称 ISPA)决定将 Mozilla 列入 2019 年“互联网恶棍”奖的最终入围者名单。该奖项将在 ISPA 于 7 月 11 日在伦敦举行的颁奖典礼上进行颁发。 +英国互联网服务提供商行业协会Internet Services Providers Association(ISPA)决定将 Mozilla 列入 2019 年“互联网恶棍”奖的最终入围者名单。该奖项将在 ISPA 于 7 月 11 日在伦敦举行的颁奖典礼上进行颁发。 ![][3] ### 为什么说 “Mozilla” 是 “互联网恶棍”? -ISPA 在他们的声明中表示,Mozilla 因为支持了 **DoH**(DNS-over-HTTPS)而被视为“互联网恶棍”。 +ISPA 在他们的声明中表示,Mozilla 因为支持了 DoH(DNS-over-HTTPS)而被视为“互联网恶棍”。 > [@mozilla][4] 被提名为 [#ISPA][5] 的 [#互联网恶棍][6] 是因为他们试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国 [#互联网][7] 安全准则。 [pic.twitter.com/WeZhLq2uvi][8] > > — 英国互联网提供商行业协会 (ISPAUK) (@ISPAUK) [2019 年 7 月 4 日][9] +![](https://pbs.twimg.com/media/D-n8WlvX4AAnWIW.jpg) -和 Mozilla 一同被列入最终入围者名单的还有欧盟版权指令第 13 条和美国总统特朗普。ISPA 在他们的声明里是这样解释的: +和 Mozilla 一同被列入最终入围者名单的还有欧盟《版权法第 13 条》和美国总统特朗普。ISPA 在他们的声明里是这样解释的: **Mozilla**:因为试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国互联网安全准则。 -**欧盟版权指令第 13 条**:因为要求各平台使用“内容识别技术”,威胁到了线上言论自由。 +**欧盟《版权法第 13 条》**:因为要求各平台使用“内容识别技术”,威胁到了线上言论自由。 -**美国总统特朗普**:因为在试图保护国家安全的过程中,为复杂的全球通信供应链带来了巨大的不确定性。 +**美国总统特朗普**:因为在试图保护其国家安全的过程中,为复杂的全球通信供应链带来了巨大的不确定性。 ### 什么是 DNS-over-HTTPS? -你可以将 DoH 理解为,域名解析服务(DNS)的请求在 HTTPS 连接中会被加密。 +你可以将 DoH 理解为,域名解析服务(DNS)的请求通过 HTTPS 连接加密传输。 -传统意义上的 DNS 请求是不会被加密的,因此你的 DNS 提供商或者是互联网服务提供商可以监视或者是控制你的浏览行为。如果没有 DoH,你很容易被 DNS 提供商强制推行拦截和内容过滤系统,并且你的互联网服务提供商也同样可以做到。 - -[][10] +传统意义上的 DNS 请求是不会被加密的,因此你的 DNS 提供商或者是互联网服务提供商(ISP)可以监视或者是控制你的浏览行为。如果没有 DoH,你很容易被 DNS 提供商强制拦截和进行内容过滤,并且你的互联网服务提供商也同样可以做到。 然而 DoH 颠覆了这一点,可以让你得到一个私密的浏览体验。 @@ -51,7 +50,7 @@ ISPA 在他们的声明中表示,Mozilla 因为支持了 **DoH**(DNS-over-HT 既有用又没有用。 -当然了,从事情的一方面来看,DoH 可以帮助用户绕过 DNS 或者互联网服务提供商推行的内容过滤系统。如果说 DoH 有助于满足我们避开互联网审查的需求,那么它是一件好事情。 +当然了,从事情的一方面来看,DoH 可以帮助用户绕过 DNS 或者互联网服务提供商强制的内容过滤系统。如果说 DoH 有助于满足我们避开互联网审查的需求,那么它是一件好事情。 不过从事情的另一方面来看,如果你是一位家长,而你的孩子在 Mozilla Firefox 上使用了 DoH 的话,你就无法 [设置内容过滤器][12] 了。这取决于 [防火墙配置][13] 的好坏。 @@ -67,7 +66,7 @@ DoH 可能会成为一些人绕过家长监护的手段,这可能不是一件 你又是如何看待 ISPA 的决定的呢?你觉得他们这样的声明是不是在鼓励互联网审查和政府对网民的监控呢? -我个人觉得这个决定非常可笑。即使 DoH 并不是所有人都需要的那个终极功能,能够有一种保护个人隐私的选择也总不是件坏事。 +我个人觉得这个提名决定非常可笑。即使 DoH 并不是所有人都需要的那个终极功能,能够有一种保护个人隐私的选择也总不是件坏事。 在下面的评论区里发表你的看法吧。最后我想引用这么一句话: @@ -80,7 +79,7 @@ via: https://itsfoss.com/mozilla-internet-villain/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[chen-ni](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 0af8654ac7a91c46f4c391adafe49c7ccaf65d4c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 7 Jul 2019 10:39:13 +0800 Subject: [PATCH 322/336] PUB @chen-ni https://linux.cn/article-11068-1.html --- ...en Nominated for the -Internet Villain- Award in the UK.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md (98%) diff --git a/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md b/published/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md similarity index 98% rename from translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md rename to published/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md index 60d85ab16a..feddddee95 100644 --- a/translated/tech/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md +++ b/published/20190706 Say WHAAAT- Mozilla has Been Nominated for the -Internet Villain- Award in the UK.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11068-1.html) [#]: subject: (Say WHAAAT? Mozilla has Been Nominated for the “Internet Villain” Award in the UK) [#]: via: (https://itsfoss.com/mozilla-internet-villain/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From e14be5c440e679a06245aa14ea96175a5ed2c415 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 7 Jul 2019 11:18:05 +0800 Subject: [PATCH 323/336] PRF --- ...90627 How to use Tig to browse Git logs.md | 108 ++++++++---------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/translated/tech/20190627 How to use Tig to browse Git logs.md b/translated/tech/20190627 How to use Tig to browse Git logs.md index 16993a0012..59fe3efea7 100644 --- a/translated/tech/20190627 How to use Tig to browse Git logs.md +++ b/translated/tech/20190627 How to use Tig to browse Git logs.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to use Tig to browse Git logs) @@ -9,14 +9,16 @@ 如何使用 Tig 浏览 Git 日志 ====== -Tig不仅仅是 Git 的文本界面。以下是它如何增强你的日常工作流程。 -![A person programming][1] -如果你使用 Git 作为你的版本控制系统,你可能已经让自己接受 Git 是一个复杂的野兽。它是一个很棒的工具,但在 Git 仓库查找可能很麻烦。因此像 [Tig][2] 这样的工具出现了。 +> Tig 可不仅仅是 Git 的文本界面。以下是它如何增强你的日常工作流程。 + +![](https://img.linux.net.cn/data/attachment/album/201907/07/111847v1zx3qk5qqhklyjp.png) + +如果你使用 Git 作为你的版本控制系统,你可能已经让自己接受了 Git 是一个复杂的野兽的事实。它是一个很棒的工具,但浏览 Git 仓库可能很麻烦。因此像 [Tig][2] 这样的工具出现了。 来自 [Tig 手册页][3]: -> Tig 是 git(1) 的基于 ncurses 的文本界面。它主要用作 Git 仓库浏览器,但也有助于在块级别暂存提交更改,并显示各种 Git 命令的输出。 +> Tig 是 `git`(1) 的基于 ncurses 的文本界面。它主要用作 Git 仓库浏览器,但也有助于在块级别暂存提交更改,并作为各种 Git 命令的输出分页器。 这基本上意味着 Tig 提供了一个可以在终端中运行的基于文本的用户界面。Tig 可以让你轻松浏览你的 Git 日志,但它可以做的远不止让你从最后的提交跳到前一个提交。 @@ -26,170 +28,154 @@ Tig不仅仅是 Git 的文本界面。以下是它如何增强你的日常工作 ### 安装 Tig - * Fedora 和 RHEL: **sudo dnf install tig** - * Ubuntu 和 Debian: **sudo apt install tig** - * MacOS:**:brew install tig** +* Fedora 和 RHEL: `sudo dnf install tig` +* Ubuntu 和 Debian: `sudo apt install tig` +* MacOS: `:brew install tig` - - -有关更多选项,请参阅官方[安装说明][5]。 +有关更多方式,请参阅官方[安装说明][5]。 ### 浏览当前分支中的提交 如果要浏览分支中的最新提交,请输入: - ``` -`tig` +tig ``` -这是这样。这个三字符命令将启动一个浏览器,你可以在其中导航当前分支中的提交。你可以将其视为 **git log** 的封装器。 +就是这样。这个三字符命令将启动一个浏览器,你可以在其中浏览当前分支中的提交。你可以将其视为 `git log` 的封装器。 -要浏览输出,可以使用向上和向下箭头键从一个提交移动到另一个提交。按回车键将会垂直分割窗口,右侧包含所选提交的内容。你可以继续在左侧的提交历史记录中上下浏览,你的更改将显示在右侧。使用 **k** 和 **j** 逐行上下浏览,**-** 和空格键在右侧上下翻页。使用 **q** 退出右侧窗格。 +要浏览这些输出,可以使用向上和向下箭头键从一个提交移动到另一个提交。按回车键将会垂直分割窗口,右侧包含所选提交的内容。你可以继续在左侧的提交历史记录中上下浏览,你的更改将显示在右侧。使用 `k` 和 `j` 可以逐行上下浏览,`-` 和空格键可以在右侧上下翻页。使用 `q` 退出右侧窗格。 -搜索 **tig** 输出也很简单。使用 **/** 向前搜索,使用 **?** 在左右窗格中向后搜索。 +搜索 `tig` 输出也很简单。使用 `/` (向前)或 `?` (向后)在左右窗格中搜索。 ![Searching Tig][6] -这足以让你开始浏览你的提交。这里有很多的键绑定,但单击 **h** 将显示“帮助”菜单,你可以在其中发现其导航和命令选项。你还可以使用 **/** 和 **?** 来搜索“帮助”菜单。使用 **q** 退出帮助。 +这些就足以让你浏览你的提交信息了。这里有很多的键绑定,但单击 `h` 将显示“帮助”菜单,你可以在其中发现其导航和命令选项。你还可以使用 `/` 和 `?` 来搜索“帮助”菜单。使用 `q` 退出帮助。 ![Tig Help][7] ### 浏览单个文件的修改 -由于 Tig 是 **git log** 的封装器,它可以方便地接受可以传递给 **git log** 的相同参数。例如,要浏览单个文件的提交历史记录,请输入: - +由于 Tig 是 `git log` 的封装器,它可以方便地接受可以传递给 `git log` 的相同参数。例如,要浏览单个文件的提交历史记录,请输入: ``` -`tig README.md` +tig README.md ``` 将其与被封装的 Git 命令的输出进行比较,以便更清楚地了解 Tig 如何增强输出。 - ``` -`git log README.md` +git log README.md ``` -要在原始 Git 输出中包含补丁,你可以添加 **-p** 选项: - +要在原始 Git 输出中包含补丁,你可以添加 `-p` 选项: ``` -`git log -p README.md` +git log -p README.md ``` 如果要将提交范围缩小到特定日期范围,请尝试以下操作: - ``` -`tig --after="2017-01-01" --before="2018-05-16" -- README.md` +tig --after="2017-01-01" --before="2018-05-16" -- README.md ``` 再一次,你可以将其与原始的 Git 版本进行比较: ``` -`git log --after="2017-01-01" --before="2018-05-16" -- README.md` +git log --after="2017-01-01" --before="2018-05-16" -- README.md ``` ### 浏览谁更改了文件 有时你想知道谁对文件进行了更改以及原因。命令: - ``` -`tig blame README.md` +tig blame README.md ``` -本质上是 **git blame** 的封装。正如你 所期望的那样,它允许你查看谁是编辑指定行的最后一人,它还允许你查看到引入该行的提交。这有点像 vim 的 **vim-fugitive**插件提供的**:Gblame**命令。 +器本质上是 `git blame` 的封装。正如你所期望的那样,它允许你查看谁是编辑指定行的最后一人,它还允许你查看到引入该行的提交。这有点像 vim 的 `vim-fugitive` 插件提供的 `:Gblame` 命令。 -### 浏览你的暂存 - -如果你像我一样,你可能会在你的暂存处有许多编辑。你很容易忘记它们。你可以通过以下方式查看暂存处中的最新项目: +### 浏览你的暂存区 +如果你像我一样,你可能会在你的暂存区做了许多修改。你很容易忘记它们。你可以通过以下方式查看暂存处中的最新项目: ``` -`git stash show -p stash@{0}` +git stash show -p stash@{0} ``` 你可以通过以下方式找到第二个最新项目: - ``` -`git stash show -p stash@{1}` +git stash show -p stash@{1} ``` -以此类推。如果你在需要它们时调用这些命令,那么你会有比我更清晰的内存。 - +以此类推。如果你在需要它们时调用这些命令,那么你会有比我更清晰的记忆。 与上面的 Git 命令一样,Tig 可以通过简单的调用轻松增强你的 Git 输出: - ``` -`tig stash` +tig stash ``` -尝试在有暂存的仓库中执行此命令。你将能够浏览_并搜索_你的暂存项,快速浏览你的那些修改。 +尝试在有暂存的仓库中执行此命令。你将能够浏览*并搜索*你的暂存项,快速浏览你的那些修改。 ### 浏览你的引用 -git ref 是你提交的东西的哈希值。这包括文件和分支。使用 **tig refs** 命令可以浏览所有引用并深入查看特定提交。 - +Git ref 是指你提交的东西的哈希值。这包括文件和分支。使用 `tig refs` 命令可以浏览所有的 ref 并深入查看特定提交。 ``` -`tig refs` +tig refs ``` -完成后,使用 **q** 回到前面的菜单。 +完成后,使用 `q` 回到前面的菜单。 ### 浏览 git 状态 -如果要查看哪些文件已被暂存,哪些文件未被跟踪,请使用 **tig status**,它是 **git status** 的封装。 +如果要查看哪些文件已被暂存,哪些文件未被跟踪,请使用 `tig status`,它是 `git status` 的封装。 ![Tig status][8] ### 浏览 git grep -你可以使用 **grep** 命令在文本文件中搜索表达式。命令 **tig grep** 允许你导览 **git grep** 的输出。例如: - +你可以使用 `grep` 命令在文本文件中搜索表达式。命令 `tig grep` 允许你浏览 `git grep` 的输出。例如: ``` -`tig grep -i foo lib/Bar` +tig grep -i foo lib/Bar ``` -它会导览 **lib/Bar** 目录中以大小写敏感的方式搜索 **foo** 的输出。 +它会让你浏览 `lib/Bar` 目录中以大小写敏感的方式搜索 `foo` 的输出。 ### 通过标准输入管道输出给 Tig -如果要将提交 ID 列表传递给 Tig,那么必须使用 **\--stdin** 标志,以便 **tig show** 从标准输入读取。否则,**tig show** 会在没有输入的情况下启动(出现空白屏幕)。 - +如果要将提交 ID 列表传递给 Tig,那么必须使用 `--stdin` 标志,以便 `tig show` 从标准输入读取。否则,`tig show` 会在没有输入的情况下启动(出现空白屏幕)。 ``` -`git rev-list --author=olaf HEAD | tig show --stdin` +git rev-list --author=olaf HEAD | tig show --stdin ``` ### 添加自定义绑定 你可以使用 [rc][9] 文件自定义 Tig。以下是如何根据自己的喜好添加一些有用的自定义键绑定的示例。 -在主目录中创建一个名为 **.tigrc** 的文件。在你喜欢的编辑器中打开 **~/.tigrc** 并添加: - +在主目录中创建一个名为 `.tigrc` 的文件。在你喜欢的编辑器中打开 `~/.tigrc` 并添加: ``` -# Apply the selected stash +# 应用选定的暂存内容 bind stash a !?git stash apply %(stash) -# Drop the selected stash item +# 丢弃选定的暂存内容 bind stash x !?git stash drop %(stash) ``` -如上所述,运行 **tig stash** 以浏览你的暂存。但是,通过这些绑定,你可以按 **a**将暂存中的项目应用到仓库,并按 **x** 从暂存中删除项目。请记住,你要在浏览暂存_列表_时,才能执行这些命令。如果你正在浏览暂存_项_,请输入 **q** 退出该视图,然后按 **a** 或 **x** 以获得所需效果。 +如上所述,运行 `tig stash` 以浏览你的暂存。但是,通过这些绑定,你可以按 `a` 将暂存中的项目应用到仓库,并按 `x` 从暂存中删除项目。请记住,你要在浏览暂存*列表*时,才能执行这些命令。如果你正在浏览暂存*项*,请输入 `q` 退出该视图,然后按 `a` 或 `x` 以获得所需效果。 有关更多信息,你可以阅读有关 [Tig 键绑定][10]。 ### 总结 -我希望这有助于演示 Tig 如何增强你的日常工作流程。Tig 可以做更强大的事情(比如暂存代码行),但这超出了这篇介绍性文章的范围。这里有足够的让你危险的信息,但还有更多值得探索的地方。 +我希望这有助于演示 Tig 如何增强你的日常工作流程。Tig 可以做更强大的事情(比如暂存代码行),但这超出了这篇介绍性文章的范围。这里有足够的让你置身于危险的信息,但还有更多值得探索的地方。 -------------------------------------------------------------------------------- @@ -198,7 +184,7 @@ via: https://opensource.com/article/19/6/what-tig 作者:[Olaf Alders][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 578c9f8067030e408c66b3132bc4e255becb6b71 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 7 Jul 2019 11:19:03 +0800 Subject: [PATCH 324/336] PUB @geekpi https://linux.cn/article-11069-1.html --- .../20190627 How to use Tig to browse Git logs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190627 How to use Tig to browse Git logs.md (99%) diff --git a/translated/tech/20190627 How to use Tig to browse Git logs.md b/published/20190627 How to use Tig to browse Git logs.md similarity index 99% rename from translated/tech/20190627 How to use Tig to browse Git logs.md rename to published/20190627 How to use Tig to browse Git logs.md index 59fe3efea7..53629b1d19 100644 --- a/translated/tech/20190627 How to use Tig to browse Git logs.md +++ b/published/20190627 How to use Tig to browse Git logs.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11069-1.html) [#]: subject: (How to use Tig to browse Git logs) [#]: via: (https://opensource.com/article/19/6/what-tig) [#]: author: (Olaf Alders https://opensource.com/users/oalders/users/mbbroberg/users/marcobravo) From 518e2884afdf488ef05702d227a932daf20d6ae9 Mon Sep 17 00:00:00 2001 From: zgj Date: Sun, 7 Jul 2019 16:00:19 +0800 Subject: [PATCH 325/336] remove the english title --- ...t ulimit and file descriptors limit on Linux Servers.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md b/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md index 59e818426a..5c18371c9b 100644 --- a/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md +++ b/translated/tech/20190609 How to set ulimit and file descriptors limit on Linux Servers.md @@ -8,7 +8,6 @@ [#]: author: (Shashidhar Soppin https://www.linuxtechi.com/author/shashidhar/) 如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 -How to set ulimit and file descriptors limit on Linux Servers ====== 
**简介**:如今每天(遇到的)像是打开文件数这类的挑战在任何生产环境已经变得司空见惯了。因为许多基于 Java 和 Apache 的应用程序的正在安装和配置,可能会导致打开过多的文件、文件描述符等。如果(文件描述符等)超过默认设置限制,就可能会面临访问控制问题和打开文件的挑战。许多生产环境因此而陷入停滞状态。 @@ -39,10 +38,10 @@ How to set ulimit and file descriptors limit on Linux Servers ### ulimit 命令 : -顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit 命令时,它将打印登录用户的所有资源限制。现在让我们在Ubuntu/Debian 和 CentOS 系统上运行 “**ulimit-a**”, +顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit 命令时,它将打印登录用户的所有资源限制。现在让我们在Ubuntu/Debian 和 CentOS 系统上运行 “**ulimit -a**”, -**Ubuntu / Debian System** , +**Ubuntu / Debian 系统** , ``` root@linuxtechi ~}$ ulimit -a @@ -64,7 +63,7 @@ virtual memory (kbytes, -v) unlimited file locks (-x) unlimited ``` -**CentOS System** +**CentOS 系统** ``` root@linuxtechi ~}$ ulimit -a From 449243eb88d8a4d081a183a96c61623ffe200039 Mon Sep 17 00:00:00 2001 From: LazyWolf Lin Date: Sun, 7 Jul 2019 17:10:19 +0800 Subject: [PATCH 326/336] Translated Looking into Linux modules. --- .../20190501 Looking into Linux modules.md | 219 ------------------ .../20190501 Looking into Linux modules.md | 28 +-- 2 files changed, 14 insertions(+), 233 deletions(-) delete mode 100644 sources/tech/20190501 Looking into Linux modules.md diff --git a/sources/tech/20190501 Looking into Linux modules.md b/sources/tech/20190501 Looking into Linux modules.md deleted file mode 100644 index b49618fc2b..0000000000 --- a/sources/tech/20190501 Looking into Linux modules.md +++ /dev/null @@ -1,219 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (LazyWolfLin) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Looking into Linux modules) -[#]: via: (https://www.networkworld.com/article/3391362/looking-into-linux-modules.html#tk.rss_all) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Looking into Linux modules -====== -The lsmod command can tell you which kernel modules are currently loaded on your system, along with some interesting details about their use. -![Rob Oo \(CC BY 2.0\)][1] - -### What are Linux modules? - -Kernel modules are chunks of code that are loaded and unloaded into the kernel as needed, thus extending the functionality of the kernel without requiring a reboot. In fact, unless users inquire about modules using commands like **lsmod** , they won't likely know that anything has changed. - -One important thing to understand is that there are _lots_ of modules that will be in use on your Linux system at all times and that a lot of details are available if you're tempted to dive into the details. - -One of the prime ways that lsmod is used is to examine modules when a system isn't working properly. However, most of the time, modules load as needed and users don't need to be aware of how they are working. - -**[ Also see:[Must-know Linux Commands][2] ]** - -### Listing modules - -The easiest way to list modules is with the **lsmod** command. While this command provides a lot of detail, this is the most user-friendly output. - -``` -$ lsmod -Module Size Used by -snd_hda_codec_realtek 114688 1 -snd_hda_codec_generic 77824 1 snd_hda_codec_realtek -ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek -snd_hda_codec_hdmi 53248 1 -snd_hda_intel 40960 2 -snd_hda_codec 131072 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel - ,snd_hda_codec_realtek -snd_hda_core 86016 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel - ,snd_hda_codec,snd_hda_codec_realtek -snd_hwdep 20480 1 snd_hda_codec -snd_pcm 102400 4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda - _core -snd_seq_midi 20480 0 -snd_seq_midi_event 16384 1 snd_seq_midi -dcdbas 20480 0 -snd_rawmidi 36864 1 snd_seq_midi -snd_seq 69632 2 snd_seq_midi,snd_seq_midi_event -coretemp 20480 0 -snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi -snd_timer 36864 2 snd_seq,snd_pcm -kvm_intel 241664 0 -kvm 626688 1 kvm_intel -radeon 1454080 10 -irqbypass 16384 1 kvm -joydev 24576 0 -input_leds 16384 0 -ttm 102400 1 radeon -drm_kms_helper 180224 1 radeon -drm 475136 13 drm_kms_helper,radeon,ttm -snd 81920 15 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda - _codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd - _hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi -i2c_algo_bit 16384 1 radeon -fb_sys_fops 16384 1 drm_kms_helper -syscopyarea 16384 1 drm_kms_helper -serio_raw 20480 0 -sysfillrect 16384 1 drm_kms_helper -sysimgblt 16384 1 drm_kms_helper -soundcore 16384 1 snd -mac_hid 16384 0 -sch_fq_codel 20480 2 -parport_pc 40960 0 -ppdev 24576 0 -lp 20480 0 -parport 53248 3 parport_pc,lp,ppdev -ip_tables 28672 0 -x_tables 40960 1 ip_tables -autofs4 45056 2 -raid10 57344 0 -raid456 155648 0 -async_raid6_recov 24576 1 raid456 -async_memcpy 20480 2 raid456,async_raid6_recov -async_pq 24576 2 raid456,async_raid6_recov -async_xor 20480 3 async_pq,raid456,async_raid6_recov -async_tx 20480 5 async_pq,async_memcpy,async_xor,raid456,async_raid6_re - cov -xor 24576 1 async_xor -raid6_pq 114688 3 async_pq,raid456,async_raid6_recov -libcrc32c 16384 1 raid456 -raid1 45056 0 -raid0 24576 0 -multipath 20480 0 -linear 20480 0 -hid_generic 16384 0 -psmouse 151552 0 -i2c_i801 32768 0 -pata_acpi 16384 0 -lpc_ich 24576 0 -usbhid 53248 0 -hid 126976 2 usbhid,hid_generic -e1000e 245760 0 -floppy 81920 0 -``` - -In the output above: - - * "Module" shows the name of each module - * "Size" shows the module size (not how much memory it is using) - * "Used by" shows each module's usage count and the referring modules - - - -Clearly, that's a _lot_ of modules. The number of modules loaded will depend on your system and distribution and what's running. We can count them like this: - -``` -$ lsmod | wc -l -67 -``` - -To see the number of modules available on the system (not just running), try this command: - -``` -$ modprobe -c | wc -l -41272 -``` - -### Other commands for examining modules - -Linux provides several commands for listing, loading and unloading, examining, and checking the status of modules. - - * depmod -- generates modules.dep and map files - * insmod -- a simple program to insert a module into the Linux Kernel - * lsmod -- show the status of modules in the Linux Kernel - * modinfo -- show information about a Linux Kernel module - * modprobe -- add and remove modules from the Linux Kernel - * rmmod -- a simple program to remove a module from the Linux Kernel - - - -### Listing modules that are built in - -As mentioned above, the **lsmod** command is the most convenient command for listing modules. There are, however, other ways to examine them. The modules.builtin file lists all modules that are built into the kernel and is used by modprobe when trying to load one of these modules. Note that **$(uname -r)** in the commands below provides the name of the kernel release. - -``` -$ more /lib/modules/$(uname -r)/modules.builtin | head -10 -kernel/arch/x86/crypto/crc32c-intel.ko -kernel/arch/x86/events/intel/intel-uncore.ko -kernel/arch/x86/platform/intel/iosf_mbi.ko -kernel/mm/zpool.ko -kernel/mm/zbud.ko -kernel/mm/zsmalloc.ko -kernel/fs/binfmt_script.ko -kernel/fs/mbcache.ko -kernel/fs/configfs/configfs.ko -kernel/fs/crypto/fscrypto.ko -``` - -You can get some additional detail on a module by using the **modinfo** command, though nothing that qualifies as an easy explanation of what service the module provides. The omitted details from the output below include a lengthy signature. - -``` -$ modinfo floppy | head -16 -filename: /lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko -alias: block-major-2-* -license: GPL -author: Alain L. Knaff -srcversion: EBEAA26742DF61790588FD9 -alias: acpi*:PNP0700:* -alias: pnp:dPNP0700* -depends: -retpoline: Y -intree: Y -name: floppy -vermagic: 5.0.0-13-generic SMP mod_unload -sig_id: PKCS#7 -signer: -sig_key: -sig_hashalgo: md4 -``` - -You can load or unload a module using the **modprobe** command. Using a command like the one below, you can locate the kernel object associated with a particular module: - -``` -$ find /lib/modules/$(uname -r) -name floppy* -/lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko -``` - -If you needed to load the module, you could use a command like this one: - -``` -$ sudo modprobe floppy -``` - -### Wrap-up - -Clearly the loading and unloading of modules is a big deal. It makes Linux systems considerably more flexible and efficient than if they ran with a one-size-fits-all kernel. It also means you can make significant changes — including adding hardware — without rebooting. - -**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][3] ]** - -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/3391362/looking-into-linux-modules.html#tk.rss_all - -作者:[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://images.idgesg.net/images/article/2019/04/modules-100794941-large.jpg -[2]: https://www.networkworld.com/article/3391029/must-know-linux-commands.html -[3]: https://www.youtube.com/playlist?list=PL7D2RMSmRO9J8OTpjFECi8DJiTQdd4hua -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/translated/tech/20190501 Looking into Linux modules.md b/translated/tech/20190501 Looking into Linux modules.md index 0f3a1e317a..39a0195b0d 100644 --- a/translated/tech/20190501 Looking into Linux modules.md +++ b/translated/tech/20190501 Looking into Linux modules.md @@ -14,17 +14,17 @@ lsmod 命令能够告诉你当前系统上加载了哪些内核模块,以及 ### 什么是 Linux 内核模块? -内核模块是根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似 **lsmod** 这样的命令来查询模块,否则用户不太可能知道内核发生的任何变化。 +内核模块是根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似 **lsmod** 这样的命令来查询模块信息,否则用户不太可能知道内核发生的任何变化。 -需要理解的重要一点是,在你的 Linux 系统上总会有_很多_模块可用,并且如果你想深入了解细节,那么有很多细节可以获得。 +需要知道的重要一点是,在你的 Linux 系统上总会有*很多*可用的模块,并且如果你想深入了解细节,那么可以获得很多细节。 -lsmod 的主要用途之一是在系统不能正常工作时检查模块。然而,大多数情况下,模块是根据需要加载的,而且用户不需要知道它们如何工作。 +lsmod 的主要用途之一是在系统不能正常工作时检查模块。然而,大多数情况下,模块会根据需要加载的,而且用户不需要知道它们如何运作。 -**[ Also see:[Must-know Linux Commands][2] ]** +**[ 扩展阅读:[必知的 Linux 命令][2] ]** ### 显示内核模块 -显示内核模块最简单的方法是使用 **lsmod** 命令。虽然这个命令包含了很多细节,但输出却是最用户友好。 +显示内核模块最简单的方法是使用 **lsmod** 命令。虽然这个命令包含了很多细节,但输出却是非常用户友好。 ``` $ lsmod @@ -111,7 +111,7 @@ floppy 81920 0 -显然,这有_很多_模块。加载的模块数取决于你的系统和版本以及正在运行的内容。我们可以这样计数: +显然,这里有*很多*模块。加载的模块数量取决于你的系统和版本以及正在运行的内容。我们可以这样计数: ``` $ lsmod | wc -l @@ -138,9 +138,9 @@ Linux 提供了几条用于罗列,加载及卸载,测试,以及检查模 -### 列出内置的内核模块 +### 显示内置的内核模块 -As mentioned above, the **lsmod** command is the most convenient command for listing modules. There are, however, other ways to examine them. The modules.builtin file lists all modules that are built into the kernel and is used by modprobe when trying to load one of these modules. Note that **$(uname -r)** in the commands below provides the name of the kernel release. +正如前文所说,**lsmod** 命令是显示内核模块最方便的命令。然而,也有其他方式可以显示它们。modules.builtin 文件中列出了所有构建在内核中的模块,并被 modprobe 命令尝试添加文件中的模块时使用。注意,以下命令中的 **$(uname -r)** 提供了内核版本的名称。 ``` $ more /lib/modules/$(uname -r)/modules.builtin | head -10 @@ -156,7 +156,7 @@ kernel/fs/configfs/configfs.ko kernel/fs/crypto/fscrypto.ko ``` -You can get some additional detail on a module by using the **modinfo** command, though nothing that qualifies as an easy explanation of what service the module provides. The omitted details from the output below include a lengthy signature. +你可以使用 **modinfo** 获得一个模块的更多细节,虽然没有对模块提供的服务的简单说明。下面输出内容中省略了冗长的签名。 ``` $ modinfo floppy | head -16 @@ -178,14 +178,14 @@ sig_key: sig_hashalgo: md4 ``` -You can load or unload a module using the **modprobe** command. Using a command like the one below, you can locate the kernel object associated with a particular module: +你可以使用 **modprobe** 命令加载或卸载模块。使用下面这条命令,你可以找到特定模块关联的内核对象: ``` $ find /lib/modules/$(uname -r) -name floppy* /lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko ``` -If you needed to load the module, you could use a command like this one: +如果你想要加载模块,你可以使用这个命令: ``` $ sudo modprobe floppy @@ -193,11 +193,11 @@ $ sudo modprobe floppy ### 总结一下 -Clearly the loading and unloading of modules is a big deal. It makes Linux systems considerably more flexible and efficient than if they ran with a one-size-fits-all kernel. It also means you can make significant changes — including adding hardware — without rebooting. +很明显,内核模块的加载和卸载非常重要。它使得 Linux 系统比使用通用内核运行时更加灵活和高效。这同样意味着你可以进行重大更改而无需重启,例如添加硬件。 -**[ Two-Minute Linux Tips:[Learn how to master a host of Linux commands in these 2-minute video tutorials][3] ]** +**[ 两分钟学 Linux:[在这些两分钟视频教程中掌握大量 Linux 命令][3] ]** -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. +在 [Facebook][4] 和 [LinkedIn][5] 上关注我们并添加评论。 -------------------------------------------------------------------------------- From f4a0b6c32c2cc63db59fdad9af4ae58ca78c4afe Mon Sep 17 00:00:00 2001 From: runningwater Date: Sun, 7 Jul 2019 18:04:05 +0800 Subject: [PATCH 327/336] =?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 --- ...irtual environments for Python on MacOS.md | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) rename {sources => translated}/tech/20190603 How to set up virtual environments for Python on MacOS.md (50%) diff --git a/sources/tech/20190603 How to set up virtual environments for Python on MacOS.md b/translated/tech/20190603 How to set up virtual environments for Python on MacOS.md similarity index 50% rename from sources/tech/20190603 How to set up virtual environments for Python on MacOS.md rename to translated/tech/20190603 How to set up virtual environments for Python on MacOS.md index db01ada8d4..2dfcd9832c 100644 --- a/sources/tech/20190603 How to set up virtual environments for Python on MacOS.md +++ b/translated/tech/20190603 How to set up virtual environments for Python on MacOS.md @@ -7,35 +7,34 @@ [#]: via: (https://opensource.com/article/19/6/virtual-environments-python-macos) [#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg/users/moshez/users/mbbroberg/users/moshez) -How to set up virtual environments for Python on MacOS +MacOS 系统中如何设置 Python 虚拟环境 ====== -Save yourself a lot of confusion by managing your virtual environments -with pyenv and virtualwrapper. +使用 pyenv 和 virtualwrapper 来管理你的虚拟环境,可以避免很多困惑。 ![][1] -If you're a Python developer and a MacOS user, one of your first tasks upon getting a new computer is to set up your Python development environment. Here is the best way to do it (although we have written about [other ways to manage Python environments on MacOS][2]). +作为 Python 开发者和 MacOS 用户,拿到新机器首先要做的就是设置 Python 开发环境。下面是最佳实践(虽然我们已经写过 [在 MacOS 上管理 Python 的其它方法][2])。 -### Preparation +### 预备 -First, open a terminal and enter **xcode-select --install** at its cold, uncaring prompt. Click to confirm, and you'll be all set with a basic development environment. This step is required on MacOS to set up local development utilities, including "many commonly used tools, utilities, and compilers, including make, GCC, clang, perl, svn, git, size, strip, strings, libtool, cpp, what, and many other useful commands that are usually found in default Linux installations," according to [OS X Daily][3]. +首先,打开终端,在其冰冷毫无提示的窗口输入 **xcode-select --install** 命令。点击确认后,基本的开发环境就会被配置上。MacOS 上需要此步骤来设置本地开发实用工具库,根据 [OS X Daily][3] 的说法,其包括 ”许多常用的工具、实用程序和编译器,如 make、GCC、clang、perl、svn、git、size、strip、strings、libtool、cpp、what 及许多在 Linux 中系统默认安装的有用命令“。 -Next, install [Homebrew][4] by executing the following Ruby script from the internet: +接下来,安装 [Homebrew][4], 执行如下的 Ruby 脚本。 ``` -`ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` +ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` -If you, like me, have trust issues with arbitrarily running scripts from the internet, click on the script above and take a longer look to see what it does. +如果你像我一样,对随意就运行的来源于 internet 的脚本心存顾虑的话,可以点击上面的脚本去仔细看看其具体功能。 -Once this is done, congratulations, you have an excellent package management tool in Homebrew. Naively, you might think that you next **brew install python** or something. No, haha. Homebrew will give you a version of Python, but the version you get will be out of your control if you let the tool manage your environment for you. You want [pyenv][5], "a tool for simple Python version management," that can be installed on [many operating systems][6]. Run: +一旦安装完成后,就恭喜了,你拥有了一个优秀的包管理工具。自然的,你可能接下来会执行 **brew install python** 或其他的命令。不要这样,哈哈!Homebrew 是为我们提供了一个 Python 的管理版本,但让此工具来管理我们的 Python 环境话,很快会失控的。我们需要 [pyenv][5],一款简单的 Python 版本管理工具,它可以安装运行在 [许多操作系统][6] 上。运行如下命令: ``` -`$ brew install pyenv` +$ brew install pyenv ``` -You want pyenv to run every time you open your prompt, so include the following in your configuration files (by default on MacOS, this is **.bash_profile** in your home directory): +想要每次打开命令提示框时 pyenv 都会运行的话,需要把下面的内容加入你的配置文件中(MacOS 中默认为 **.bash_profile**,位于家目录下): ``` @@ -43,16 +42,16 @@ $ cd ~/ $ echo 'eval "$(pyenv init -)"' >> .bash_profile ``` -By adding this line, every new terminal will initiate pyenv to manage the **PATH** environment variable in your terminal and insert the version of Python you want to run (as opposed to the first one that shows up in the environment. For more information, read "[How to set your $PATH variable in Linux][7].") Open a new terminal for the updated **.bash_profile** to take effect. +添加此行内容后,每个终端都会启动 pyenv 来管理其 **PATH** 环境变量,并插入你想要运行的 Python 版本(而不是在环境变量里面设置的初始版本。更详细的信息,请阅读 “[如何给 Linux 系统设置 PATH 变量][7]”)。打开新的终端以使修改的 **.bash_profile** 文件生效。 -Before installing your favorite version of Python, you'll want to install a couple of helpful tools: +在安装你中意的 Python 版本前,需要先安装一些有用的工具,如下示: ``` -`$ brew install zlib sqlite` +$ brew install zlib sqlite ``` -The [zlib][8] compression algorithm and the [SQLite][9] database are dependencies for pyenv and often [cause build problems][10] when not configured correctly. Add these exports to your current terminal window to ensure the installation completes: +Pyenv 依赖于 [zlib][8] 压缩算法和 [SQLite][9] 数据库,如果未正确配置,往往会[导致构建问题][10]。将这些导出配置命令加入当前的终端窗口执行,确保它们安装完成。 ``` @@ -60,18 +59,18 @@ $ export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib" $ export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include" ``` -Now that the preliminaries are done, it's time to install a version of Python that is fit for a modern person in the modern age: +现在准备工作已经完成,是时候安装一个适合于现代人的 Python 版本了: ``` -`$ pyenv install 3.7.3` +$ pyenv install 3.7.3 ``` -Go have a cup of coffee. From beans you hand-roast. After you pick them. What I'm saying here is it's going to take some time. +去喝杯咖啡吧,挑些豆类,亲自烧烤,然后品尝。说这些的意思是上面的安装过程需要一段时间。 -### Adding virtual environments +### 添加虚拟环境 -Once it's finished, it's time to make your virtual environments pleasant to use. Without this next step, you will effectively be sharing one Python development environment for every project you work on. Using virtual environments to isolate dependency management on a per-project basis will give us more certainty and reproducibility than Python offers out of the box. For these reasons, install **virtualenvwrapper** into the Python environment: +一旦完成,就可以愉快地使用虚拟环境了。如没有接下来的步骤的话,你只能在你所有的工作项目中共享同一个 Python 开发环境。使用虚拟环境来隔离每个项目的依赖关系的管理方式,比起 Python 自身提供的开箱即用功能来说,更加清晰明确和更具有重用性。基于这些原因,把 **virtualenvwrapper** 安装到 Python 环境中吧: ``` @@ -80,7 +79,7 @@ $ pyenv global 3.7.3 $ $(pyenv which python3) -m pip install virtualenvwrapper ``` -Open your **.bash_profile** again and add the following to be sure it works each time you open a new terminal: +再次打开 **.bash_profile** 文件,把下面内容添加进去,使得每次打开新终端时它都有效: ``` @@ -94,7 +93,7 @@ $ echo 'mkdir -p $WORKON_HOME' >> .bash_profile $ echo '. ~/.pyenv/versions/3.7.3/bin/virtualenvwrapper.sh' >> .bash_profile ``` -Close the terminal and open a new one (or run **exec /bin/bash -l** to refresh the current terminal session), and you'll see **virtualenvwrapper** initializing the environment: +关掉终端再重新打开(或者运行 **exec /bin/bash -l** 来刷新当前的终端会话),你会看到 **virtualenvwrapper** 正在初始化环境配置: ``` @@ -113,7 +112,7 @@ virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postactivate virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/get_env_details ``` -From now on, all your work should be in a virtual environment, allowing you to use temporary environments to play around with development safely. With this toolchain, you can set up multiple projects and switch between them, depending upon what you're working on at that moment: +从此刻开始,你的所有工作都是在虚拟环境中的,其允许你使用临时环境来安全地开发。使用此工具链,你可以根据工作所需,设置多个项目并在它们之间切换: ``` @@ -149,11 +148,11 @@ postmkproject premkproject (test1)$ ``` -The **deactivate** command exits you from the current environment. +此处, **deactivate** 命令可以退出当前环境。 -### Recommended practices +### 推荐实践 -You may already set up your long-term projects in a directory like **~/src**. When you start working on a new project, go into this directory, add a subdirectory for the project, then use the power of Bash interpretation to name the virtual environment based on your directory name. For example, for a project named "pyfun": +你可能已经在比如 **~/src** 这样的目录中添加了长期的项目。当要开始了一个新项目时,进入此目录,为此项目增加子文件夹,然后使用强大的 Bash 解释程序自动根据你的目录名来命令虚拟环境。例如,名称为 “pyfun” 的项目: ``` @@ -168,7 +167,7 @@ test2 $ ``` -Whenever you want to work on this project, go back to that directory and reconnect to the virtual environment by entering: +当需要处理此项目时,只要进入该目录,输入如下命令重新连接虚拟环境: ``` @@ -176,7 +175,7 @@ $ cd ~/src/pyfun (pyfun)$ workon . ``` -Since initializing a virtual environment means taking a point-in-time copy of your Python version and the modules that are loaded, you will occasionally want to refresh the project's virtual environment, as dependencies can change dramatically. You can do this safely by deleting the virtual environment because the source code will remain unscathed: +初始化虚拟环境意味着对 Python 版本和所加载的模块的时间点的拷贝。由于依赖关系会发生很大的改变,所以偶尔需要刷新项目的虚拟环境。这种情况,你可以通过删除虚拟环境来安全的执行此操作,源代码是不受影响的,如下所示: ``` @@ -185,9 +184,9 @@ $ rmvirtualenv $(basename $(pwd)) $ mkvirtualenv $(basename $(pwd)) ``` -This method of managing virtual environments with pyenv and virtualwrapper will save you from uncertainty about which version of Python you are running as you develop code locally. This is the simplest way to avoid confusion—especially when you're working with a larger team. +这种使用 pyenv 和 virtualwrapper 管理虚拟环境的方法可以避免开发环境和运行环境中 Python 版本的不一致出现的苦恼。这是避免混淆的最简单方法 - 尤其是你工作的团队很大的时候。 -If you are just beginning to configure your Python environment, read up on how to use [Python 3 on MacOS][2]. Do you have other beginner or intermediate Python questions? Leave a comment and we will consider them for the next article. +如果你是初学者,正准备配置 Python 环境,可以阅读下 [MacOS 中使用 Python 3][2] 文章。 你们有关于 Python 相关的问题吗,不管是初学者的还是中级使用者的?给我们留下评论信息,我们在下篇文章中会考虑讲解。 -------------------------------------------------------------------------------- From 4ea656d4665829c6c58f6a5a3533594822418fd3 Mon Sep 17 00:00:00 2001 From: chen ni Date: Sun, 7 Jul 2019 20:46:21 +0800 Subject: [PATCH 328/336] =?UTF-8?q?=E7=94=B3=E9=A2=86=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20190518 Best Linux Distributions for Beginners.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190518 Best Linux Distributions for Beginners.md b/sources/tech/20190518 Best Linux Distributions for Beginners.md index afe9581280..7a60eddded 100644 --- a/sources/tech/20190518 Best Linux Distributions for Beginners.md +++ b/sources/tech/20190518 Best Linux Distributions for Beginners.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chen-ni) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 69da8e55c3279c193d2bdd8e929d8bcdba29f8ca Mon Sep 17 00:00:00 2001 From: DarkSun Date: Mon, 8 Jul 2019 00:51:59 +0800 Subject: [PATCH 329/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190708=20Linux?= =?UTF-8?q?=20Games=20Get=20A=20Performance=20Boost=20for=20AMD=20GPUs=20T?= =?UTF-8?q?hanks=20to=20Valve=E2=80=99s=20New=20Compiler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190708 Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve-s New Compiler.md --- ...AMD GPUs Thanks to Valve-s New Compiler.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/tech/20190708 Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve-s New Compiler.md diff --git a/sources/tech/20190708 Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve-s New Compiler.md b/sources/tech/20190708 Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve-s New Compiler.md new file mode 100644 index 0000000000..be3aa49c65 --- /dev/null +++ b/sources/tech/20190708 Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve-s New Compiler.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve’s New Compiler) +[#]: via: (https://itsfoss.com/linux-games-performance-boost-amd-gpu/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Linux Games Get A Performance Boost for AMD GPUs Thanks to Valve’s New Compiler +====== + +It has been a few days since Steam asked for the public feedback in order to test ACO (a new Mesa [shader][1] compiler) for AMD GPUs. + +Currently, the AMD drivers use a shader compiler utilizing LLVM. However, [Mesa][2] is an open source alternative to [LLVM][3]. + +So, in this case, Valve wants to support AMD graphics to improve the performance of Linux games on various Linux distros. + +![][4] + +For gaming performance improvement, the compile time is critical and with the new ACO compiler, it reduces the time by almost 50%. Valve explained more about it in its [Steam community][5] post: + +> The AMD OpenGL and Vulkan drivers currently use a shader compiler that is part of the upstream LLVM project. That project is massive, and has many different goals, with online compilation of game shaders only being one of them. That can result in development tradeoffs, where improving gaming-specific functionality is harder than it otherwise would, or where gaming-specific features would often accidentally get broken by LLVM developers working on other things. In particular, shader compilation speed is one such example: it’s not really a critical factor in most other scenarios, just a nice-to-have. But for gaming, compile time is critical, and slow shader compilation can result in near-unplayable stutter. + +### Is there really a performance boost for Linux games? + +Yes, there is. + +The primary highlight here is the compile time. If the shader compilation time reduces dramatically, it should theoretically improve the performance of the game. + +And, as per the [initial benchmark reports][6], we really do see some significant improvements. + +![][7] + +Of course, the in-game FPS improvement isn’t huge. But, it is still a good progress in its early stage. + +If you’re curious about the compile time improvement, then here it is: + +![][8] + +Yes, even a big compile time reduction did not affect the in-game FPS by a large margin. But, it is still a big deal because currently, it is a work in progress. So, we can expect even more. + +[][9] + +Suggested read  Chrome OS Look-Alike Linux Distro Chromixium Released + +But, what more can be done? + +Well, the ACO compiler isn’t complete yet. Here’s why (as Valve mentioned): + +> Right now, ACO only handles pixel and compute shader stages. When the rest of the stages are implemented, we expect the compile times will be reduced even further. + +#### Wrapping Up + +Even though I don’t have an AMD GPU on board, it is actually interesting to see improvements for the Linux gaming scene in general. + +Also, we shall be expecting more benchmarks and reports as this progresses. + +What do you think? Let us know your thoughts in the comments below. If you have a benchmark report to share, do let us know about it. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/linux-games-performance-boost-amd-gpu/ + +作者:[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://en.wikipedia.org/wiki/Shader +[2]: https://en.wikipedia.org/wiki/Mesa_(computer_graphics) +[3]: https://en.wikipedia.org/wiki/LLVM +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/Improved-Linux-Gaming.png?resize=800%2C450&ssl=1 +[5]: https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 +[6]: https://gist.github.com/pendingchaos/aba1e4c238cf039d17089f29a8c6aa63 +[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/07/fps-improvement-amd.png?fit=800%2C412&ssl=1 +[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/07/compile-time-amd-gpu-linux.png?ssl=1 +[9]: https://itsfoss.com/chromixiumos-released/ From 54ccc75fffbd83291f4542b16f9a041391e74a97 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 8 Jul 2019 08:52:32 +0800 Subject: [PATCH 330/336] translated --- ...s Live Recorder 5.0 for Linux debugging.md | 55 ------------------- ...s Live Recorder 5.0 for Linux debugging.md | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+), 55 deletions(-) delete mode 100644 sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md create mode 100644 translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md diff --git a/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md deleted file mode 100644 index 2954e5fac5..0000000000 --- a/sources/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md +++ /dev/null @@ -1,55 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Undo releases Live Recorder 5.0 for Linux debugging) -[#]: via: (https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Undo releases Live Recorder 5.0 for Linux debugging -====== - -![André Gustavo Stumpf \(CC BY 2.0\)][1] - -Linux debugging has taken a giant step forward with the release of Live Recorder 5.0 from Undo. Just released on Wednesday, this product makes debugging on multi-process systems significantly easier. Based on flight recorder technology, it delves more deeply into processes to provide insight into what’s going on within each process. This includes memory, threads, program flow, service calls and more. To make this possible, Live Recorder 5.0's record, replay and debugging capabilities have been enhanced with the ability to: - - * Record the exact order in which processes altered shared memory variables. It is even possible to zero in on specific variables and skip backward to the last line of code in any process that altered the variable. - * Expose potential defects by randomizing thread execution to help reveal race conditions, crashes and other multi-threading defects. - * Record and replay the execution of individual Kubernetes and Docker containers to help resolve defects faster in microservices environments - - - -The Undo Live Recorder enables engineering teams to record and replay the execution of any software program -- no matter how complex -- and to diagnose and fix the root cause of any issue in test or production. - -Depending on your license, Live Recorder can be used on the command line with the **live-record** command that is somewhat similar to strace though, instead of printing system calls and signals, it creates an "Undo recording". Captured failings in recordings can then be debugged (far more effective than grappling with core dumps!). These recordings can also be can be shared with other members of the staff and can be replayed with the reversible debugger to further investigate the cause of the crash or other problem. - -The Undo Engine is supported on the following Linux distributions: - - * Red Hat Enterprise Linux 6.8, 6.9, 6.10, 7.4, 7.5, 7.6 and 8.0 - * Fedora 28, 29 and 30 - * SuSE Linux Enterprise Server 12.3, 12.4 and 15 - * Ubuntu 16.04 LTS, 18.04 LTS, 18.10 and 19.04 - - - -Undo is a fast-growing, venture-backed technology start-up based in San Francisco and Cambridge, UK. They claim that the Live Recorder provides 100% certainty about the factors that led to any software failure -- even in the most complex software environments. - -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/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.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://images.idgesg.net/images/article/2019/06/flight_data_recorder-100800552-large.jpg -[2]: https://www.facebook.com/NetworkWorld/ -[3]: https://www.linkedin.com/company/network-world diff --git a/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md new file mode 100644 index 0000000000..b5a9d288f7 --- /dev/null +++ b/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md @@ -0,0 +1,55 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Undo releases Live Recorder 5.0 for Linux debugging) +[#]: via: (https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Undo 发布用于 Linux 调试的 Live Recorder 5.0 +====== + +![André Gustavo Stumpf \(CC BY 2.0\)][1] + +随着 Undo 发布 Live Recorder 5.0,Linux 调试迈出了一大步。该产品刚于周三发布,这使得在多进程系统上的调试变得更加容易。它基于软件飞行记录仪技术,它更加深入进程,以深入了解每个进程的情况。这包括内存、线程、程序流,服务调用等。为了实现这一目标,Live Recorder 5.0 的记录,重放和调试功能都得到了增强,能够: + + * 记录进程更改共享内存变量的确切顺序。甚至可以针对特定变量并在任何进程中跳转到最后修改该变量的一行 + * 通过随机化线程执行来暴露潜在缺陷,以帮助揭示竞态,崩溃和其他多线程缺陷。 + * 记录并重放单个 Kubernetes 和 Docker 容器的执行,以帮助在微服务环境中更快地解决缺陷 + + + +Undo Live Recorder 使工程团队能够记录和重放任何软件程序的执行,而无论软件多么复杂。并且可以诊断和修复测试或生产中问题的根本原因。 + +根据你的许可证,Live Recorder 可以在命令行中使用 **live-record**命令,但有点类似于 strace,它不会打印系统调用和信号,而是创建一个“Undo 录制”。然后你可以调试录制中捕获的失败(远比分析核心转储高效!)。这些录制也可以与其他工作人员共享,并可以使用可逆调试器进行重放,以进一步调查崩溃原因或其他问题。 + +Undo 引擎支持以下 Linux 发行版: + + * Red Hat Enterprise Linux 6.8、6.9、6.10、7.4、7.5、7.6 和 8.0 + * Fedora 28、29 和 30 + * SuSE Linux Enterprise Server 12.3、12.4 和 15 + * Ubuntu 16.04 LTS、18.04 LTS、18.10 和 19.04 + + + +Undo 是一家快速发展的,有风险投资支持的技术初创公司,它的总部位于旧金山和英国剑桥。他们称 Live Recorder 可以 100% 确定导致任何软件故障的因素 - 即使在最复杂的软件环境中也是如此。 + +在 [Facebook][2] 和 [LinkedIn][3] 上加入 Network World 社区,评论你想说的话题。 + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html + +作者:[Sandra Henry-Stocker][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://www.networkworld.com/author/Sandra-Henry_Stocker/ +[b]: https://github.com/lujun9972 +[1]: https://images.idgesg.net/images/article/2019/06/flight_data_recorder-100800552-large.jpg +[2]: https://www.facebook.com/NetworkWorld/ +[3]: https://www.linkedin.com/company/network-world From cfc553fda8344c65d748da787ee1648c8fcbf27e Mon Sep 17 00:00:00 2001 From: LazyWolf Lin Date: Mon, 8 Jul 2019 11:26:47 +0800 Subject: [PATCH 331/336] Translating. --- ...613 Continuous integration testing for the Linux kernel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20190613 Continuous integration testing for the Linux kernel.md b/sources/tech/20190613 Continuous integration testing for the Linux kernel.md index baf8f9f51b..d837cd9e67 100644 --- a/sources/tech/20190613 Continuous integration testing for the Linux kernel.md +++ b/sources/tech/20190613 Continuous integration testing for the Linux kernel.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (LazyWolfLin) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) @@ -68,7 +68,7 @@ via: https://opensource.com/article/19/6/continuous-kernel-integration-linux 作者:[Major Hayden][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[LazyWolfLin](https://github.com/LazyWolfLin) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 36e9ff86b495ac4f93047b159d913ac3e2146662 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 8 Jul 2019 13:02:12 +0800 Subject: [PATCH 332/336] PRF @chen-ni --- ...0702 Jupyter and data science in Fedora.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/translated/tech/20190702 Jupyter and data science in Fedora.md b/translated/tech/20190702 Jupyter and data science in Fedora.md index 3956ad9a09..3d86aa902d 100644 --- a/translated/tech/20190702 Jupyter and data science in Fedora.md +++ b/translated/tech/20190702 Jupyter and data science in Fedora.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Jupyter and data science in Fedora) @@ -27,15 +27,15 @@ 请注意,这些问题的答案是在任何数据库里都查询不到的,因为它们尚不存在,需要被计算出来才行。这就是我们数据科学家从事的工作。 -在这篇文章中你会学习如何将 Fedora 系统打造成数据科学家的开发环境和生产系统。其中大多数基本软件都有 RPM 软件包,但是最先进的组件目前只能通过 Python 的 **pip** 工具安装。 +在这篇文章中你会学习如何将 Fedora 系统打造成数据科学家的开发环境和生产系统。其中大多数基本软件都有 RPM 软件包,但是最先进的组件目前只能通过 Python 的 `pip` 工具安装。 ### Jupyter IDE -大多数现代数据科学家使用 Python 工作。他们工作中很重要的一部分是 探索性数据分析Exploratory Data Analysis(EDA)。EDA 是一种手动进行的、交互性的过程,包括提取数据、探索数据特征、寻找相关性、通过绘制图形进行数据可视化并理解数据的分布特征,以及实现简易的预测模型。 +大多数现代数据科学家使用 Python 工作。他们工作中很重要的一部分是 探索性数据分析Exploratory Data Analysis(EDA)。EDA 是一种手动进行的、交互性的过程,包括提取数据、探索数据特征、寻找相关性、通过绘制图形进行数据可视化并理解数据的分布特征,以及实现原型预测模型。 -Jupyter 是能够完美胜任该工作的一个 web 应用。Jupyter 使用的 Notebook 文件支持丰富的文本,包括渲染精美的数学公式(得益于 [mathjax][2])、代码块和代码输出(包括图形输出)。 +Jupyter 是能够完美胜任该工作的一个 web 应用。Jupyter 使用的 Notebook 文件支持富文本,包括渲染精美的数学公式(得益于 [mathjax][2])、代码块和代码输出(包括图形输出)。 -Notebook 文件的后缀是 **.ipynb**,意思是“交互式 Python Notebook”。 +Notebook 文件的后缀是 `.ipynb`,意思是“交互式 Python Notebook”。 #### 搭建并运行 Jupyter @@ -44,20 +44,21 @@ Notebook 文件的后缀是 **.ipynb**,意思是“交互式 Python Notebook ``` $ sudo dnf install python3-notebook mathjax sscg ``` + 你或许需要安装数据科学家常用的一些附加可选模块: ``` $ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk ``` -设置一个用来登陆 Notebook 的 web 界面的密码,从而避免使用冗长的令牌。你可以在终端里任何一个位置运行下面的命令: +设置一个用来登录 Notebook 的 web 界面的密码,从而避免使用冗长的令牌。你可以在终端里任何一个位置运行下面的命令: ``` $ mkdir -p $HOME/.jupyter $ jupyter notebook password ``` -然后输入你的密码,这时会自动创建 ** $HOME/.jupyter/jupyter_notebook_config.json ** 这个文件,包含了你的密码的加密后版本。 +然后输入你的密码,这时会自动创建 `$HOME/.jupyter/jupyter_notebook_config.json` 这个文件,包含了你的密码的加密后版本。 接下来,通过使用 SSLby 为 Jupyter 的 web 服务器生成一个自签名的 HTTPS 证书: @@ -65,7 +66,7 @@ $ jupyter notebook password $ cd $HOME/.jupyter; sscg ``` -配置 Jupyter 的最后一步是编辑 **$HOME/.jupyter/jupyter_notebook_config.json** 这个文件。按照下面的模版编辑该文件: +配置 Jupyter 的最后一步是编辑 `$HOME/.jupyter/jupyter_notebook_config.json` 这个文件。按照下面的模版编辑该文件: ``` { @@ -83,9 +84,9 @@ $ cd $HOME/.jupyter; sscg } ``` -红色的部分应该替换为你的文件夹。蓝色的部分在你创建完密码之后就已经自动生成了。绿色的部分是 **sscg** 生成的和加密相关的文件。 +`/home/aviram/` 应该替换为你的文件夹。`sha1:abf58...87b` 这个部分在你创建完密码之后就已经自动生成了。`service.pem` 和 `service-key.pem` 是 `sscg` 生成的和加密相关的文件。 -接下来创建一个用来存放 notebook 文件的文件夹,应该和上面配置里 **notebook_dir** 一致: +接下来创建一个用来存放 Notebook 文件的文件夹,应该和上面配置里 `notebook_dir` 一致: ``` $ mkdir $HOME/Notebooks @@ -97,40 +98,40 @@ $ mkdir $HOME/Notebooks $ jupyter notebook ``` -或者是将下面这行代码添加到 **$HOME/.bashrc** 文件,创建一个叫做 **jn** 的快捷命令: +或者是将下面这行代码添加到 `$HOME/.bashrc` 文件,创建一个叫做 `jn` 的快捷命令: ``` alias jn='jupyter notebook' ``` -运行 **jn** 命令之后,你可以通过网络内部的任何一个浏览器访问 **** (LCTT 译注:将域名替换为服务器的域名),就可以看到 Jupyter 的用户界面了,需要使用前面设置的密码登录。你可以尝试键入一些 Python 代码和标记文本,看起来会像下面这样: +运行 `jn` 命令之后,你可以通过网络内部的任何一个浏览器访问 `` (LCTT 译注:请将域名替换为服务器的域名),就可以看到 Jupyter 的用户界面了,需要使用前面设置的密码登录。你可以尝试键入一些 Python 代码和标记文本,看起来会像下面这样: ![Jupyter with a simple notebook][4] -除了 IPython 环境,安装过程还会生成一个由 **terminado** 提供的基于 web 的 Unix 终端。有人觉得这很实用,也有人觉得这样不是很安全。你可以在配置文件里禁用这个功能。 +除了 IPython 环境,安装过程还会生成一个由 `terminado` 提供的基于 web 的 Unix 终端。有人觉得这很实用,也有人觉得这样不是很安全。你可以在配置文件里禁用这个功能。 -### JupyterLab — 下一代 Jupyter +### JupyterLab:下一代 Jupyter -JupyterLab 是下一代的 Jupyter,拥有更好的用户界面和对工作空间更强的操控性。在写这篇文章的时候 JupyterLab 还没有可用的 RPM 软件包,但是你可以使用 **pip** 轻松完成安装: +JupyterLab 是下一代的 Jupyter,拥有更好的用户界面和对工作空间更强的操控性。在写这篇文章的时候 JupyterLab 还没有可用的 RPM 软件包,但是你可以使用 `pip` 轻松完成安装: ``` $ pip3 install jupyterlab --user $ jupyter serverextension enable --py jupyterlab ``` -然后运行 **jupiter notebook** 命令或者 **jn** 快捷命令。访问 **** LCTT 译注:将域名替换为服务器的域名)就可以使用 JupyterLab 了。 +然后运行 `jupiter notebook` 命令或者 `jn` 快捷命令。访问 `` (LCTT 译注:将域名替换为服务器的域名)就可以使用 JupyterLab 了。 ### 数据科学家使用的工具 在下面这一节里,你将会了解到数据科学家使用的一些工具及其安装方法。除非另作说明,这些工具应该已经有 Fedora 软件包版本,并且已经作为前面组件所需要的软件包而被安装了。 -#### **Numpy** +#### Numpy -**Numpy** 是一个针对 C 语言优化过的高级库,用来处理内存里的大型数据集。它支持高级多维矩阵及其运算,并且包含了 log()、exp()、三角函数等数学函数。 +Numpy 是一个针对 C 语言优化过的高级库,用来处理大型的内存数据集。它支持高级多维矩阵及其运算,并且包含了 `log()`、`exp()`、三角函数等数学函数。 #### Pandas -在我看来,正是 Pandas 成就了 Python 作为数据科学首选平台的地位。Pandas 构建在 numpy 之上,可以让数据准备和数据呈现工作变得简单很多。你可以把它想象成一个没有用户界面的电子表格程序,但是能够处理的数据集要大得多。Pandas 支持从 SQL 数据库或者 CSV 等格式的文件中提取数据、按列或者按行进行操作、数据筛选,以及通过 matplotlib 实现数据可视化的一部分功能。 +在我看来,正是 Pandas 成就了 Python 作为数据科学首选平台的地位。Pandas 构建在 Numpy 之上,可以让数据准备和数据呈现工作变得简单很多。你可以把它想象成一个没有用户界面的电子表格程序,但是能够处理的数据集要大得多。Pandas 支持从 SQL 数据库或者 CSV 等格式的文件中提取数据、按列或者按行进行操作、数据筛选,以及通过 Matplotlib 实现数据可视化的一部分功能。 #### Matplotlib @@ -140,23 +141,23 @@ Matplotlib 是一个用来绘制 2D 和 3D 数据图像的库,在图象注解 #### Seaborn -Seaborn 构建在 matplotlib 之上,它的绘图功能经过了优化,更加适合数据的统计学研究,比如说可以自动显示所绘制数据的近似回归线或者正态分布曲线。 +Seaborn 构建在 Matplotlib 之上,它的绘图功能经过了优化,更加适合数据的统计学研究,比如说可以自动显示所绘制数据的近似回归线或者正态分布曲线。 ![Linear regression visualised with SeaBorn][6] -#### [StatsModels][7] +#### StatsModels -StatsModels 为统计学和经济计量学的数据分析问题(例如线形回归和逻辑回归)提供算法支持,同时提供经典的 [时间序列算法][8] 家族:ARIMA。 +[StatsModels][7] 为统计学和经济计量学的数据分析问题(例如线形回归和逻辑回归)提供算法支持,同时提供经典的 [时间序列算法][8] 家族 ARIMA。 ![Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)][9] #### Scikit-learn -作为机器学习生态系统的核心部件,[scikit][10] 为不同类型的问题提供预测算法,包括 [回归问题][11](算法包括 Elasticnet、Gradient Boosting、随机森林等等)、[分类问题][11] 和聚类问题(算法包括 K-means 和 DBSCAN 等等),并且拥有设计精良的 API。Scikit 还定义了一些专门的 Python 类,用来支持数据操作的高级技巧,比如将数据集拆分为训练集和测试集、降维算法、数据准备管道流程等等。 +作为机器学习生态系统的核心部件,[Scikit][10] 为不同类型的问题提供预测算法,包括 [回归问题][11](算法包括 Elasticnet、Gradient Boosting、随机森林等等)、[分类问题][11] 和聚类问题(算法包括 K-means 和 DBSCAN 等等),并且拥有设计精良的 API。Scikit 还定义了一些专门的 Python 类,用来支持数据操作的高级技巧,比如将数据集拆分为训练集和测试集、降维算法、数据准备管道流程等等。 #### XGBoost -XGBoost 是目前可以使用的最先进的回归器和分类器。它并不是 scikit-learn 的一部分,但是却遵循了 scikit 的 API。[XGBoost][12] 并没有针对 Fedora 的软件包,但可以使用 pip 安装。[使用英伟达显卡可以提升 XGBoost 算法的性能][13],但是这并不能通过 **pip** 软件包来实现。如果你希望使用这个功能,可以针对 CUDA (LCTT 译注:英伟达开发的并行计算平台)自己进行编译。使用下面这个命令安装 XGBoost: +XGBoost 是目前可以使用的最先进的回归器和分类器。它并不是 Scikit-learn 的一部分,但是却遵循了 Scikit 的 API。[XGBoost][12] 并没有针对 Fedora 的软件包,但可以使用 `pip` 安装。[使用英伟达显卡可以提升 XGBoost 算法的性能][13],但是这并不能通过 `pip` 软件包来实现。如果你希望使用这个功能,可以针对 CUDA (LCTT 译注:英伟达开发的并行计算平台)自己进行编译。使用下面这个命令安装 XGBoost: ``` $ pip3 install xgboost --user @@ -164,7 +165,7 @@ $ pip3 install xgboost --user #### Imbalanced Learn -[imbalanced-learn][14] 是一个解决数据欠采样和过采样问题的工具。比如在反欺诈问题中,欺诈数据相对于正常数据来说数量非常小,这个时候就需要对欺诈数据进行数据增强,从而让预测器能够更好地适应数据集。使用 **pip** 安装: +[Imbalanced-learn][14] 是一个解决数据欠采样和过采样问题的工具。比如在反欺诈问题中,欺诈数据相对于正常数据来说数量非常小,这个时候就需要对欺诈数据进行数据增强,从而让预测器能够更好地适应数据集。使用 `pip` 安装: ``` $ pip3 install imblearn --user @@ -174,31 +175,30 @@ $ pip3 install imblearn --user [Natural Language toolkit][15](简称 NLTK)是一个处理人类语言数据的工具,举例来说,它可以被用来开发一个聊天机器人。 - #### SHAP 机器学习算法拥有强大的预测能力,但并不能够很好地解释为什么做出这样或那样的预测。[SHAP][16] 可以通过分析训练后的模型来解决这个问题。 ![Where SHAP fits into the data analysis process][17] -使用 **pip** 安装: +使用 `pip` 安装: ``` $ pip3 install shap --user ``` -#### [Keras][18] +#### Keras -Keras 是一个深度学习和神经网络模型的库,使用 **pip** 安装: +[Keras][18] 是一个深度学习和神经网络模型的库,使用 `pip` 安装: ``` $ sudo dnf install python3-h5py $ pip3 install keras --user ``` -#### [TensorFlow][19] +#### TensorFlow -TensorFlow 是一个非常流行的神经网络模型搭建工具,使用 **pip** 安装: +[TensorFlow][19] 是一个非常流行的神经网络模型搭建工具,使用 `pip` 安装: ``` $ pip3 install tensorflow --user @@ -215,7 +215,7 @@ via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/ 作者:[Avi Alkalay][a] 选题:[lujun9972][b] 译者:[chen-ni](https://github.com/chen-ni) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From ad2eafb1fe712627a4ca65c38b8e69c004175156 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 8 Jul 2019 13:03:11 +0800 Subject: [PATCH 333/336] PUB @chen-ni https://linux.cn/article-11072-1.html --- .../20190702 Jupyter and data science in Fedora.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190702 Jupyter and data science in Fedora.md (99%) diff --git a/translated/tech/20190702 Jupyter and data science in Fedora.md b/published/20190702 Jupyter and data science in Fedora.md similarity index 99% rename from translated/tech/20190702 Jupyter and data science in Fedora.md rename to published/20190702 Jupyter and data science in Fedora.md index 3d86aa902d..00448d68bc 100644 --- a/translated/tech/20190702 Jupyter and data science in Fedora.md +++ b/published/20190702 Jupyter and data science in Fedora.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (chen-ni) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11072-1.html) [#]: subject: (Jupyter and data science in Fedora) [#]: via: (https://fedoramagazine.org/jupyter-and-data-science-in-fedora/) [#]: author: (Avi Alkalay https://fedoramagazine.org/author/aviram/) From a045b20ebe76ce151d7fe8d0bea56692291755a3 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 8 Jul 2019 13:33:56 +0800 Subject: [PATCH 334/336] PRF @geekpi --- ...s Live Recorder 5.0 for Linux debugging.md | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md index b5a9d288f7..2e49dcdf14 100644 --- a/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md +++ b/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Undo releases Live Recorder 5.0 for Linux debugging) @@ -9,20 +9,19 @@ Undo 发布用于 Linux 调试的 Live Recorder 5.0 ====== +> 随着 Undo 发布 Live Recorder 5.0,这使得在多进程系统上的调试变得更加轻松。 -![André Gustavo Stumpf \(CC BY 2.0\)][1] - -随着 Undo 发布 Live Recorder 5.0,Linux 调试迈出了一大步。该产品刚于周三发布,这使得在多进程系统上的调试变得更加容易。它基于软件飞行记录仪技术,它更加深入进程,以深入了解每个进程的情况。这包括内存、线程、程序流,服务调用等。为了实现这一目标,Live Recorder 5.0 的记录,重放和调试功能都得到了增强,能够: - - * 记录进程更改共享内存变量的确切顺序。甚至可以针对特定变量并在任何进程中跳转到最后修改该变量的一行 - * 通过随机化线程执行来暴露潜在缺陷,以帮助揭示竞态,崩溃和其他多线程缺陷。 - * 记录并重放单个 Kubernetes 和 Docker 容器的执行,以帮助在微服务环境中更快地解决缺陷 +![](https://img.linux.net.cn/data/attachment/album/201907/08/133450i18fp2p011bs5pu6.jpg) +随着 Undo 发布 Live Recorder 5.0,Linux 调试迈出了一大步。该产品于上个月发布,这使得在多进程系统上的调试变得更加轻松。它基于飞行记录仪技术flight recorder technology,它更加深入进程之中,以深入了解每个进程的情况。这包括内存、线程、程序流,服务调用等。为了实现这一目标,Live Recorder 5.0 的记录、重放和调试功能都得到了增强,能够: + * 记录进程更改共享内存变量的确切顺序。甚至可以针对特定变量并在任何进程中跳转到最后修改该变量的一行。 + * 通过随机化线程执行来暴露潜在缺陷,以帮助揭示竞态、崩溃和其他多线程缺陷。 + * 记录并重放单个 Kubernetes 和 Docker 容器的执行,以帮助在微服务环境中更快地解决缺陷。 Undo Live Recorder 使工程团队能够记录和重放任何软件程序的执行,而无论软件多么复杂。并且可以诊断和修复测试或生产中问题的根本原因。 -根据你的许可证,Live Recorder 可以在命令行中使用 **live-record**命令,但有点类似于 strace,它不会打印系统调用和信号,而是创建一个“Undo 录制”。然后你可以调试录制中捕获的失败(远比分析核心转储高效!)。这些录制也可以与其他工作人员共享,并可以使用可逆调试器进行重放,以进一步调查崩溃原因或其他问题。 +根据你的许可证,Live Recorder 可以在命令行中使用 `live-record` 命令,但有点类似于 `strace`,但它不会打印系统调用和信号,而是创建一个“Undo 录制”。然后你可以调试录制中捕获的失败(远比分析核心转储高效!)。这些录制也可以与其他工作人员共享,并可以使用可逆调试器进行重放,以进一步调查崩溃原因或其他问题。 Undo 引擎支持以下 Linux 发行版: @@ -31,9 +30,7 @@ Undo 引擎支持以下 Linux 发行版: * SuSE Linux Enterprise Server 12.3、12.4 和 15 * Ubuntu 16.04 LTS、18.04 LTS、18.10 和 19.04 - - -Undo 是一家快速发展的,有风险投资支持的技术初创公司,它的总部位于旧金山和英国剑桥。他们称 Live Recorder 可以 100% 确定导致任何软件故障的因素 - 即使在最复杂的软件环境中也是如此。 +Undo 是一家快速发展的,有风险投资支持的技术初创公司,它的总部位于旧金山和英国剑桥。他们称 Live Recorder 可以 100% 确定导致任何软件故障的因素 —— 即使在最复杂的软件环境中也是如此。 在 [Facebook][2] 和 [LinkedIn][3] 上加入 Network World 社区,评论你想说的话题。 @@ -44,7 +41,7 @@ via: https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5- 作者:[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 646ac6bfa983d930d0a7144bce8d9e7f588ad48f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 8 Jul 2019 13:34:53 +0800 Subject: [PATCH 335/336] PUB @geekpi https://linux.cn/article-11073-1.html --- ...628 Undo releases Live Recorder 5.0 for Linux debugging.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md (97%) diff --git a/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md b/published/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md similarity index 97% rename from translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md rename to published/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md index 2e49dcdf14..41aa3fa172 100644 --- a/translated/news/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md +++ b/published/20190628 Undo releases Live Recorder 5.0 for Linux debugging.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11073-1.html) [#]: subject: (Undo releases Live Recorder 5.0 for Linux debugging) [#]: via: (https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From c2414a2cac01bbb270cf1ad73b8c1891700236ad Mon Sep 17 00:00:00 2001 From: darksun Date: Mon, 8 Jul 2019 14:53:59 +0800 Subject: [PATCH 336/336] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190706=20How=20?= =?UTF-8?q?to=20enable=20DNS-over-HTTPS=20(DoH)=20in=20Firefox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190706 How to enable DNS-over-HTTPS (DoH) in Firefox.md --- ... enable DNS-over-HTTPS (DoH) in Firefox.md | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 sources/tech/20190706 How to enable DNS-over-HTTPS (DoH) in Firefox.md diff --git a/sources/tech/20190706 How to enable DNS-over-HTTPS (DoH) in Firefox.md b/sources/tech/20190706 How to enable DNS-over-HTTPS (DoH) in Firefox.md new file mode 100644 index 0000000000..f2440f0fb7 --- /dev/null +++ b/sources/tech/20190706 How to enable DNS-over-HTTPS (DoH) in Firefox.md @@ -0,0 +1,117 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to enable DNS-over-HTTPS (DoH) in Firefox) +[#]: via: (https://www.zdnet.com/article/how-to-enable-dns-over-https-doh-in-firefox/) +[#]: author: (Catalin Cimpanu https://www.zdnet.com/meet-the-team/us/catalin.cimpanu/) + +How to enable DNS-over-HTTPS (DoH) in Firefox +====== + +The DNS-over-HTTPS (DoH) protocol is currently the talk of the town, and the Firefox browser is the only one to support it. + +However, the feature is not enabled by default for Firefox users, who will have to go through many hoops and modify multiple settings before they can get the DoH up and running. + +But before we go into a step-by-step tutorial on how someone can enable DoH support in Firefox, let's describe what it does first. + +### How DNS-over-HTTPS works + +The DNS-over-HTTPS protocol works by taking a domain name that a user has typed in their browser and sending a query to a DNS server to learn the numerical IP address of the web server that hosts that specific site. + +This is how normal DNS works, too. However, DoH takes the DNS query and sends it to a DoH-compatible DNS server (resolver) via an encrypted HTTPS connection on port 443, rather than plaintext on port 53. + +This way, DoH hides DNS queries inside regular HTTPS traffic, so third-party observers won't be able to sniff traffic and tell what DNS queries users have run and infer what websites they are about to access. + +Further, a secondary feature of DNS-over-HTTPS is that the protocol works at the app level. Apps can come with internally hardcoded lists of DoH-compatible DNS resolvers where they can send DoH queries. + +This mode of operation bypasses the default DNS settings that exist at the OS level, which, in most cases are the ones set by local internet service providers (ISPs). + +This also means that apps that support DoH can effectively bypass local ISPs traffic filters and access content that may be blocked by a local telco or local government -- and a reason why DoH is currently hailed as a boon for users' privacy and security. + +This is one of the reasons that DoH has gained quite the popularity in less than two years after it launched, and a reason why a group of [UK ISPs nominated Mozilla for the award of 2019 Internet Vilain][1] for its plans to support the DoH protocol, which they said would thwart their efforts in filtering bad traffic. + +As a response, and due to the complex situation in the UK where the government blocks access to copyright-infringing content, and where ISPs voluntarily block access to child abuse website, [Mozilla has decided not to enable this feature by default for British users][2]. + +The below step-by-step guide will show Firefox users in the UK and Firefox users all over the world how to enable the feature right now, and not wait until Mozilla enables it later down the road -- if it will ever do. There are two methods of enabling DoH support in Firefox. + +### Method 1 - via the Firefox settings + +**Step 1:** Go to the Firefox menu, choose **Tools** , and then **Preferences**. Optionally type **about:preferences** in the URL bar and press enter. This will open the Firefox prerences section. + +**Step 2:** In the **General** section, scroll down to the **Network Settings** panel, and press the **Settings** button. + +![DoH section in Firefox settings][3] + +Image: ZDNet + +**Step 3:** In the popup, scroll down and select " **Enable DNS over HTTPS** ," then configure your desired DoH resolver. You can use the built in Cloudflare resolver (a company with which Mozilla has [reached an agreement][4] to log less data about Firefox users), or use one of your choice, [from this list][4]. + +![DoH section in Firefox settings][5]![DoH section in Firefox settings][6] + +Image: ZDNet + +### Method 2 - via about:config + +**Step 1:** Type **about:config** in the URL bar and press Enter to access Firefox's hidden configuration panel. Here users will need to enable and modify three settings. + +**Step 2:** The first setting is **network.trr.mode**. This turns on DoH support. This setting supports four values: + + * 0 - Default value in standard Firefox installations (currently is 5, which means DoH is disabled) + * 1 - DoH is enabled, but Firefox picks if it uses DoH or regular DNS based on which returns faster query responses + * 2 - DoH is enabled, and regular DNS works as a backup + * 3 - DoH is enabled, and regular DNS is disabled + * 5 - DoH is disabled + + + +A value of 2 works best. + +![DoH in Firefox][5]![DoH in Firefox][7] + +Image: ZDNet + +**Step 3:** The second setting that needs to be modified is **network.trr.uri**. This is the URL of the DoH-compatible DNS server where Firefox will send DoH DNS queries. By default, Firefox uses Cloudflare's DoH service located at . However, users can use their own DoH server URL. They can select one from the many available servers, [from this list, here][8]. The reason why Mozilla uses Cloudflare in Firefox is because the companies [reached an agreement][4] following which Cloudflare would collect very little data on DoH queries coming from Firefox users. + +![DoH in Firefox][5]![DoH in Firefox][9] + +Image: ZDNet + +**Step 4:** The third setting is optional and you can skip this one. But if things don't work, you can use this one as a backup for Step 3. The option is called **network.trr.bootstrapAddress** and is an input field where users can enter the numerical IP address of the DoH-compatible DNS resolver they entered in Step 3. For Cloudflare, that would be 1.1.1.1. For Google's service, that would be 8.8.8.8. If you used another DoH resolver's URL, you'll need to track down that server's IP and enter it here, if ever necesarry. + +![DoH in Firefox][5]![DoH in Firefox][10] + +Image: ZDNet + +Normally, the URL entered in Step 3 should be enough, though. + +Settings should apply right away, but in case they don't work, give Firefox a restart. + +Article source: [Mozilla Wiki][11] + + +-------------------------------------------------------------------------------- + +via: https://www.zdnet.com/article/how-to-enable-dns-over-https-doh-in-firefox/ + +作者:[Catalin Cimpanu][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.zdnet.com/meet-the-team/us/catalin.cimpanu/ +[b]: https://github.com/lujun9972 +[1]: https://www.zdnet.com/article/uk-isp-group-names-mozilla-internet-villain-for-supporting-dns-over-https/ +[2]: https://www.zdnet.com/article/mozilla-no-plans-to-enable-dns-over-https-by-default-in-the-uk/ +[3]: https://zdnet1.cbsistatic.com/hub/i/2019/07/07/df30c7b0-3a20-4de7-8640-3dea6d249a49/121bd379b6232e1e2a97c35ea8c7764e/doh-settings-1.png +[4]: https://developers.cloudflare.com/1.1.1.1/commitment-to-privacy/privacy-policy/firefox/ +[5]: +[6]: https://zdnet3.cbsistatic.com/hub/i/2019/07/07/8608af28-2a28-4ff1-952b-9b6d2deb1ea6/b1fc322caaa2c955b1a2fb285daf0e42/doh-settings-2.png +[7]: https://zdnet1.cbsistatic.com/hub/i/2019/07/06/0232b3a7-82c6-4a6f-90c1-faf0c090254c/6db9b36509021c460fcc7fe825bb74c5/doh-1.png +[8]: https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servers +[9]: https://zdnet2.cbsistatic.com/hub/i/2019/07/06/4dd1d5c1-6fa7-4f5b-b7cd-b544748edfed/baa7a70ac084861d94a744a57a3147ad/doh-2.png +[10]: https://zdnet1.cbsistatic.com/hub/i/2019/07/06/8ec20a28-673c-4a17-8195-16579398e90a/538fe8420f9b24724aeb4a6c8d4f0f0f/doh-3.png +[11]: https://wiki.mozilla.org/Trusted_Recursive_Resolver