Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2019-05-27 23:04:44 +08:00
commit 027a043719
10 changed files with 1166 additions and 19 deletions

View File

@ -1,27 +1,28 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-10906-1.html)
[#]: subject: (Querying 10 years of GitHub data with GHTorrent and Libraries.io)
[#]: via: (https://opensource.com/article/19/5/chaossearch-github-ghtorrent)
[#]: author: (Pete Cheslock https://opensource.com/users/petecheslock/users/ghaff/users/payalsingh/users/davidmstokes)
用 GHTorrent 和 Libraries.io 查询 10 年的 GitHub 数据
======
> 有一种方法可以在没有任何本地基础设施的情况下使用开源数据集探索 GitHub 数据.
![magnifying glass on computer screen][1]
我一直在寻找新的数据集,以用它们来展示我团队工作的力量。[CHAOSSEARCH][2] 可以将你的 [Amazon S3][3] 对象存储数据转换为完全可搜索的 [Elasticsearch][4] 式集群。使用 Elasticsearch API 或 [Kibana][5] 等工具,你可以查询你找的任何数据。
> 有一种方法可以在没有任何本地基础设施的情况下使用开源数据集探索 GitHub 数据。
![magnifying glass on computer screen](https://img.linux.net.cn/data/attachment/album/201905/27/220200jlzrlz333vkfl8ok.jpg)
我一直在寻找新的数据集,以用它们来展示我们团队工作的力量。[CHAOSSEARCH][2] 可以将你的 [Amazon S3][3] 对象存储数据转换为完全可搜索的 [Elasticsearch][4] 式集群。使用 Elasticsearch API 或 [Kibana][5] 等工具,你可以查询你所要找的任何数据。
当我找到 [GHTorrent][6] 项目进行探索时我很兴奋。GHTorrent 旨在通过 GitHub API 构建所有可用数据的离线版本。如果你喜欢数据集,这是一个值得一看的项目,甚至你可以考虑[捐赠一个 GitHub API 密钥][7]。
### 访问 GHTorrent 数据
有许多方法可以访问和使用 [GHTorrent 的数据][8],它以 [NDJSON][9] 格式提供。这个项目可以以多种形式提供数据,包括用于恢复到 [MySQL][11] 数据库的 [CSV][10],可以转储所有对象的 [MongoDB][12],以及用于将数据直接导出到 Google 对象存储中的 Google Big Query免费。 有一点需要注意:这个数据集有从 2008 年到 2017 年几乎完整的数据集,但从 2017 年到现在的数据还不完整。这将影响我们确定性查询的能力,但它仍然是一个令人兴奋的信息量。
有许多方法可以访问和使用 [GHTorrent 的数据][8],它以 [NDJSON][9] 格式提供。这个项目可以以多种形式提供数据,包括用于恢复到 [MySQL][11] 数据库的 [CSV][10],可以转储所有对象的 [MongoDB][12],以及用于将数据直接导出到 Google 对象存储中的 Google Big Query免费。 有一点需要注意:这个数据集有从 2008 年到 2017 年几乎完整的数据集,但从 2017 年到现在的数据还不完整。这将影响我们确定性查询的能力,但它仍然是一个令人兴奋的信息量。
我选择 Google Big Query 来避免自己运行任何数据库,那么我就可以很快下载包括用户和项目在内的完整数据库。 CHAOSSEARCH 可以原生分析 NDJSON 格式,因此在将数据上传到 Amazon S3 之后,我能够在几分钟内对其进行索引。 CHAOSSEARCH 平台不要求用户设置索引模式或定义其数据的映射,它可以发现所有字段本身(字符串、整数等)。
我选择 Google Big Query 来避免自己运行任何数据库那么我就可以很快下载包括用户和项目在内的完整数据库。CHAOSSEARCH 可以原生分析 NDJSON 格式,因此在将数据上传到 Amazon S3 之后我能够在几分钟内对其进行索引。CHAOSSEARCH 平台不要求用户设置索引模式或定义其数据的映射,它可以发现所有字段本身(字符串、整数等)。
随着我的数据完全索引并准备好进行搜索和聚合,我想深入了解看看我们可以发现什么,比如哪些软件语言是 GitHub 项目最受欢迎的。
@ -49,11 +50,10 @@
![The rate at which new projects are created on GitHub.][20]
既然我知道了创建项目的速度以及用于创建这些项目的最流行的语言,我还想知道这些项目选择的开源许可证。遗憾的是,这个 GitHub 项目数据集中并不存在这些数据,但是 [Tidelift][21] 的精彩团队在 [Libraries.io][22] [数据][23] 里发布了一个 GitHub 项目的详细列表,包括使用的许可证以及其中有关开源软件状态的其他详细信息。将此数据集导入 CHAOSSEARCH 只花了几分钟,让我看看哪些开源软件许可证在 GitHub 上最受欢迎:
既然我知道了创建项目的速度以及用于创建这些项目的最流行的语言,我还想知道这些项目选择的开源许可证。遗憾的是,这个 GitHub 项目数据集中并不存在这些数据,但是 [Tidelift][21] 的精彩团队在 [Libraries.io][22] [数据][23] 里发布了一个 GitHub 项目的详细列表,包括使用的许可证以及其中有关开源软件状态的其他详细信息。将此数据集导入 CHAOSSEARCH 只花了几分钟,让我看看哪些开源软件许可证在 GitHub 上最受欢迎:
(提醒:这是为了便于阅读而合并的有效 JSON。
```
{"aggs":{"2":{"terms":{"field":"Repository License","size":10,"order":{"_count":"desc"}}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["Created Timestamp","Last synced Timestamp","Latest Release Publish Timestamp","Updated Timestamp"],"query":{"bool":{"must":[],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"Repository License":{"query":""}}}]}}}
```
@ -62,9 +62,9 @@
![Which open source software licenses are the most popular on GitHub.][24]
如你所见,[MIT 许可证][25] 和 [Apache 2.0 许可证][26] 的开源项目远远超过了其他大多数开源许可证,而 [各种 BSD 和 GPL 许可证][27] 则差得很远。鉴于 GitHub 的开放模式,我不能说我对这些结果感到惊讶。我猜想用户(而不是公司)创建了大多数项目,并且他们使用 MIT 许可证可以使其他人轻松使用、共享和贡献。而鉴于有不少公司希望确保其商标得到尊重并为其业务提供开源组件,那么 Apache 2.0 许可证数量高企的背后也是有道理的。
如你所见,[MIT 许可证][25] 和 [Apache 2.0 许可证][26] 的开源项目远远超过了其他大多数开源许可证,而 [各种 BSD 和 GPL 许可证][27] 则差得很远。鉴于 GitHub 的开放模式,我不能说我对这些结果感到惊讶。我猜想用户(而不是公司)创建了大多数项目,并且他们使用 MIT 许可证可以使其他人轻松使用、共享和贡献。而鉴于有不少公司希望确保其商标得到尊重并为其业务提供开源组件,那么 Apache 2.0 许可证数量高企的背后也是有道理的。
现在我确定了最受欢迎的许可证,我很想看看最少使用的许可证。通过调整我的上一个查询,我将前 10 名逆转为最后 10 名,并且只找到了两个使用 [伊利诺伊大学 - NCSA 开源许可证][28] 的项目。我之前从未听说过这个许可证,但它与 Apache 2.0 非常接近。看到所有 GitHub 项目中使用了多少个不同的软件许可证,这很有意思。
现在我确定了最受欢迎的许可证,我很想看看最少使用的许可证。通过调整我的上一个查询,我将前 10 名逆转为最后 10 名,并且只找到了两个使用 [伊利诺伊大学 - NCSA 开源许可证][28] 的项目。我之前从未听说过这个许可证,但它与 Apache 2.0 非常接近。看到所有 GitHub 项目中使用了多少个不同的软件许可证,这很有意思。
![The University of Illinois/NCSA open source license.][29]
@ -78,7 +78,7 @@
![The most popular open source licenses used for GitHub JavaScript projects.][30]
尽管使用 `npm init` 创建的 [NPM][31] 模块的默认许可证是 [Internet Systems ConsortiumISC][32] 的许可证,但你可以看到相当多的这些项目使用 MIT 以及 Apache 2.0 的开源许可证。
尽管使用 `npm init` 创建的 [NPM][31] 模块的默认许可证是来自 [Internet Systems ConsortiumISC][32] 的许可证,但你可以看到相当多的这些项目使用 MIT 以及 Apache 2.0 的开源许可证。
由于 Libraries.io 数据集中包含丰富的开源项目内容,并且由于 GHTorrent 数据缺少最近几年的数据(因此缺少有关 Golang 项目的任何细节),因此我决定运行类似的查询来查看 Golang 项目是如何许可他们的代码的。
@ -94,7 +94,7 @@
Golang 项目与 JavaScript 项目惊人逆转 —— 使用 Apache 2.0 的 Golang 项目几乎是 MIT 许可证的三倍。虽然很难准确地解释为什么会出现这种情况但在过去的几年中Golang 已经出现了大规模的增长,特别是在开源和商业化的项目和软件产品公司中。
正如我们上面所了解的,这些公司中的许多公司都希望强制执行其商标,因此转向 Apache 2.0 许可证是有道理的。
正如我们上面所了解的,这些公司中的许多公司都希望强制执行其商标策略,因此转向 Apache 2.0 许可证是有道理的。
#### 总结
@ -104,7 +104,7 @@ Golang 项目与 JavaScript 项目惊人逆转 —— 使用 Apache 2.0 的 Gola
你对数据提出了哪些其他问题,以及你使用了哪些数据集?请在评论或推特上告诉我 [@petecheslock] [34]。
本文的一个版本最初发布在 [CHAOSSEARCH][35]。
本文的一个版本最初发布在 [CHAOSSEARCH][35],有更多结果可供发现
--------------------------------------------------------------------------------
@ -113,7 +113,7 @@ via: https://opensource.com/article/19/5/chaossearch-github-ghtorrent
作者:[Pete Cheslock][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/) 荣誉推出

View File

@ -0,0 +1,66 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (French IT giant Atos enters the edge-computing business)
[#]: via: (https://www.networkworld.com/article/3397139/atos-is-the-latest-to-enter-the-edge-computing-business.html)
[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/)
French IT giant Atos enters the edge-computing business
======
Atos takes a different approach to edge computing with a device called BullSequana Edge that's the size of a suitcase.
![iStock][1]
French IT giant Atos is the latest to jump into the edge computing business with a small device called BullSequana Edge. Unlike devices from its competitors that are the size of a shipping container, including those from Vapor IO and Schneider Electronics, Atos' edge device can sit in a closet.
Atos says the device uses artificial intelligence (AI) applications to offer fast response times that are needed in areas such as manufacturing 4.0, autonomous vehicles, healthcare and retail/airport security where data needs to be processed and analyzed at the edge in real time.
**[ Also see:[What is edge computing?][2] and [How edge networking and IoT will reshape data centers][3].]**
The BullSequana Edge can be purchased as standalone infrastructure or bundled with Atos software edge software, and that software is pretty impressive. Atos says the BullSequana Edge supports three main categories of use cases:
* AI: Atos Edge Computer Vision software for surveillance cameras provide advanced extraction and analysis of features such as people, faces, emotions, and behaviors so that automatic actions can be carried out based on that analysis.
* Big data: Atos Edge Data Analytics enables organizations to improve their business models with predictive and prescriptive solutions. It utilizes data lake capabilities to make data trustworthy and useable.
* Containers: Atos Edge Data Container (EDC) is an all-in-one container solution that is ready to run at the edge and serves as a decentralized IT system that can run autonomously in non-data center environments with no need for local on-site operation.
Because of its small size, the BullSequana Edge doesnt pack a lot of processing power. It comes with a 16-core Intel Xeon CPU and can hold up to two Nvidia Tesla T4 GPUs or optional FPGAs. Atos says that is enough to handle the inference of complex AI models with low latency at the edge.
Because it handles sensitive data, BullSequana Edge also comes with an intrusion sensor that will disable the machine in case of physical attacks.
Most edge devices are placed near cell towers, but since the edge system can be placed anywhere, it can communicate via radio, Global System for Mobile Communications (GSM), or Wi-Fi.
Atos may not be a household name in the U.S., but its on par with IBM in Europe, having acquired IT giants Bull SA, Xerox IT Outsourcing, and Siemens IT all in this past decade.
**More about edge networking:**
* [How edge networking and IoT will reshape data centers][3]
* [Edge computing best practices][4]
* [How edge computing can help secure the IoT][5]
Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3397139/atos-is-the-latest-to-enter-the-edge-computing-business.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/01/huawei-18501-edge-gartner-100786331-large.jpg
[2]: https://www.networkworld.com/article/3224893/internet-of-things/what-is-edge-computing-and-how-it-s-changing-the-network.html
[3]: https://www.networkworld.com/article/3291790/data-center/how-edge-networking-and-iot-will-reshape-data-centers.html
[4]: https://www.networkworld.com/article/3331978/lan-wan/edge-computing-best-practices.html
[5]: https://www.networkworld.com/article/3331905/internet-of-things/how-edge-computing-can-help-secure-the-iot.html
[6]: https://www.facebook.com/NetworkWorld/
[7]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,97 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (The Traffic Jam Whopper project may be the coolest/dumbest IoT idea ever)
[#]: via: (https://www.networkworld.com/article/3396188/the-traffic-jam-whopper-project-may-be-the-coolestdumbest-iot-idea-ever.html)
[#]: author: (Fredric Paul https://www.networkworld.com/author/Fredric-Paul/)
The Traffic Jam Whopper project may be the coolest/dumbest IoT idea ever
======
Burger King uses real-time IoT data to deliver burgers to drivers stuck in traffic — and it seems to be working.
![Mike Mozart \(CC BY 2.0\)][1]
People love to eat in their cars. Thats why we invented the drive-in and the drive-thru.
But despite a fast-food outlet on the corner of every major intersection, it turns out we were only scratching the surface of this idea. Burger King is taking this concept to the next logical step with its new IoT-powered Traffic Jam Whopper project.
I have to admit, when I first heard about this, I thought it was a joke, but apparently the [Traffic Jam Whopper project is totally real][2] and has already passed a month-long test in Mexico City. While the company hasnt specified a timeline, it plans to roll out the Traffic Jam Whopper project in Los Angeles (where else?) and other traffic-plagued megacities such as São Paulo and Shanghai.
**[ Also read:[Is IoT in the enterprise about making money or saving money?][3] | Get regularly scheduled insights: [Sign up for Network World newsletters][4] ]**
### How Burger King's Traffic Jam Whopper project works
According to [Nations Restaurant News][5], this is how Burger King's Traffic Jam Whopper project works:
The project uses real-time data to target hungry drivers along congested roads and highways for food delivery by couriers on motorcycles.
The system leverages push notifications to the Burger King app and personalized messaging on digital billboards positioned along busy roads close to a Burger King restaurant.
[According to the We Believers agency][6] that put it all together, “By leveraging traffic and drivers real-time data [location and speed], we adjusted our billboards location and content, displaying information about the remaining time in traffic to order, and personalized updates about deliveries in progress.” The menu is limited to Whopper Combos to speed preparation (though the company plans to offer a wider menu as it works out the kinks).
**[[Become a Microsoft Office 365 administrator in record time with this quick start course from PluralSight.][7] ]**
The company said orders in Mexico City were delivered in an average of 15 minutes. Fortunately (or unfortunately, depending on how you look at it) many traffic jams hold drivers captive for far longer than that.
Once the order is ready, the motorcyclist uses Google maps and GPS technology embedded into the app to locate the car that made the order. The delivery person then weaves through traffic to hand over the Whopper. (Lane-splitting is legal in California, but I have no idea if there are other potential safety or law-enforcement issues involved here. For drivers ordering burgers, at least, the Burger King app supports voice ordering. I also dont know what happens if traffic somehow clears up before the burger arrives.)
Heres a video of the pilot program in Mexico City:
#### **New technology = > new opportunities**
Even more amazing, this is not _just_ a publicity stunt. NRN quotes Bruno Cardinali, head of marketing for Burger King Latin America and Caribbean, claiming the project boosted sales during rush hour, when app orders are normally slow:
“Thanks to The Traffic Jam Whopper campaign, weve increased deliveries by 63% in selected locations across the month of April, adding a significant amount of orders per restaurant per day, just during rush hours."
If nothing else, this project shows that creative thinking really can leverage IoT technology into new businesses. In this case, its turning notoriously bad traffic—pretty much required for this process to work—from a problem into an opportunity to generate additional sales during slow periods.
**More on IoT:**
* [What is the IoT? How the internet of things works][8]
* [What is edge computing and how its changing the network][9]
* [Most powerful Internet of Things companies][10]
* [10 Hot IoT startups to watch][11]
* [The 6 ways to make money in IoT][12]
* [What is digital twin technology? [and why it matters]][13]
* [Blockchain, service-centric networking key to IoT success][14]
* [Getting grounded in IoT networking and security][15]
* [Building IoT-ready networks must become a priority][16]
* [What is the Industrial IoT? [And why the stakes are so high]][17]
Join the Network World communities on [Facebook][18] and [LinkedIn][19] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3396188/the-traffic-jam-whopper-project-may-be-the-coolestdumbest-iot-idea-ever.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/05/burger-king-gift-card-100797164-large.jpg
[2]: https://abc7news.com/food/burger-king-to-deliver-to-drivers-stuck-in-traffic/5299073/
[3]: https://www.networkworld.com/article/3343917/the-big-picture-is-iot-in-the-enterprise-about-making-money-or-saving-money.html
[4]: https://www.networkworld.com/newsletters/signup.html
[5]: https://www.nrn.com/technology/tech-tracker-burger-king-deliver-la-motorists-stuck-traffic?cid=
[6]: https://www.youtube.com/watch?v=LXNgEZV7lNg
[7]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fadministering-office-365-quick-start
[8]: https://www.networkworld.com/article/3207535/internet-of-things/what-is-the-iot-how-the-internet-of-things-works.html
[9]: https://www.networkworld.com/article/3224893/internet-of-things/what-is-edge-computing-and-how-it-s-changing-the-network.html
[10]: https://www.networkworld.com/article/2287045/internet-of-things/wireless-153629-10-most-powerful-internet-of-things-companies.html
[11]: https://www.networkworld.com/article/3270961/internet-of-things/10-hot-iot-startups-to-watch.html
[12]: https://www.networkworld.com/article/3279346/internet-of-things/the-6-ways-to-make-money-in-iot.html
[13]: https://www.networkworld.com/article/3280225/internet-of-things/what-is-digital-twin-technology-and-why-it-matters.html
[14]: https://www.networkworld.com/article/3276313/internet-of-things/blockchain-service-centric-networking-key-to-iot-success.html
[15]: https://www.networkworld.com/article/3269736/internet-of-things/getting-grounded-in-iot-networking-and-security.html
[16]: https://www.networkworld.com/article/3276304/internet-of-things/building-iot-ready-networks-must-become-a-priority.html
[17]: https://www.networkworld.com/article/3243928/internet-of-things/what-is-the-industrial-iot-and-why-the-stakes-are-so-high.html
[18]: https://www.facebook.com/NetworkWorld/
[19]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,173 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Blockchain 2.0 Explaining Smart Contracts And Its Types [Part 5])
[#]: via: (https://www.ostechnix.com/blockchain-2-0-explaining-smart-contracts-and-its-types/)
[#]: author: (editor https://www.ostechnix.com/author/editor/)
Blockchain 2.0 Explaining Smart Contracts And Its Types [Part 5]
======
![Explaining Smart Contracts And Its Types][1]
This is the 5th article in **Blockchain 2.0** series. The previous article of this series explored how can we implement [**Blockchain in real estate**][2]. This post briefly explores the topic of **Smart Contracts** within the domain of Blockchains and related technology. Smart Contracts, which are basic protocols to verify and create new “blocks” of data on the blockchain, are touted to be a focal point for future developments and applications of the system. However, like all “cure-all” medications, it is not the answer to everything. We explore the concept from the basics to understand what “smart contracts” are and what theyre not.
### Evolving Contracts
The world is built on contracts. No individual or firm on earth can function in current society without the use and reuse of contracts. The task of creating, maintaining, and enforcing contracts have become so complicated that entire judicial and legal systems have had to be setup in the name of **“contract law”** to support it. Most of all contracts are in fact overseen by a “trusted” third party to make sure the stakeholders at the ends are taken care of as per the conditions arrived. There are contracts that even talk about a third-party beneficiary. Such contracts are intended to have an effect on a third party who is not an active (or participating) party to the contract. Settling and arguing over contractual obligations takes up the bulk of most legal battles that civil lawsuits are involved in. Surely enough a better way to take care of contracts would be a godsend for individuals and enterprises alike. Not to mention the enormous paperwork it would save the government in the name of verifications and attestations[1][2].
Most posts in this series have looked at how existing blockchain tech is being leveraged today. In contrast, this post will be more about what to expect in the coming years. A natural discussion about “smart contracts” evolve from the property discussions presented in the previous post. The current post aims to provide an overview of the capabilities of blockchain to automate and carry out “smart” executable programs. Dealing with this issue pragmatically means well first have to define and explore what these “smart contracts” are and how they fit into the existing system of contracts. We look at major present-day applications and projects going on in the field in the next post titled, **“Blockchain 2.0: Ongoing Projects”**.
### Defining Smart Contracts
The [**first article of this series**][3] looked at blockchain from a fundamental point of view as a **“distributed ledger”** consisting of blocks of data that were:
* Tamper-proof
* Non-repudiable (Meaning every block of data is explicitly created by someone and that someone cannot deny any accountability of the same)
* Secure and is resilient to traditional methods of cyber attack
* Almost permanent (of course this depends on the blockchain protocol overlay)
* Highly redundant, by existing on multiple network nodes or participant systems, the failure of one of these nodes will not affect the capabilities of the system in any way, and,
* Offers faster processing depending on application.
Because every instance of data is securely stored and accessible by suitable credentials, a blockchain network can provide easy basis for precise verification of facts and information without the need for third party oversight. blockchain 2.0 developments also allow for **“distributed applications”** (a term which well be looking at in detail in coming posts). Such distributed applications exist and run on the network as per requirements. Theyre called when a user needs them and executed by making use of information that has already been vetted and stored on the blockchain.
The last paragraph provides a foundation for defining smart contracts. _**The Chamber for Digital Commerce**_ , provides a definition for smart contracts which many experts agree on.
_**“Computer code that, upon the occurrence of a specified condition or conditions, is capable of running automatically according to prespecified functions. The code can be stored and processed on a distributed ledger and would write any resulting change into the distributed ledger”[1].**_
Smart contracts are as mentioned above simple computer programs working like “if-then” or “if-else if” statements. The “smart” aspect about the same comes from the fact that the predefined inputs for the program comes from the blockchain ledger, which as proven above, is a secure and reliable source of recorded information. The program can call upon external services or sources to get information as well, if need be, to verify the terms of operation and will only execute once all the predefined conditions are met.
It has to be kept in mind that unlike what the name implies, smart contracts are not usually autonomous entities nor are they strictly speaking contracts. A very early mention of smart contracts was made by **Nick Szabo** in 1996, where he compared the same with a vending machine accepting payment and delivering the product chosen by the user[3]. The full text can be accessed **[here][4]**. Furthermore, Legal frameworks allowing the entry of smart contracts into mainstream contract use are still being developed and as such the use of the technology currently is limited to areas where legal oversight is less explicit and stringent[4].
### Major types of smart contracts
Assuming the reader has a basic understanding of contracts and computer programming, and building on from our definition of smart contracts, we can roughly classify smart contracts and protocols into the following major categories.
##### 1\. Smart legal contracts
These are presumably the most obvious kind. Most, if not, all contracts are legally enforceable. Without going into much technicalities, a smart legal contact is one that involves strict legal recourses in case parties involved in the same were to not fulfill their end of the bargain. As previously mentioned, the current legal framework in different countries and contexts lack sufficient support for smart and automated contracts on the blockchain and their legal status is unclear. However, once the laws are made, smart contracts can be made to simplify processes which currently involve strict regulatory oversight such as transactions in the financial and real estate market, government subsidies, international trade etc.
##### 2\. DAOs
**Decentralized Autonomous Organizations** , shortly DAO, can be loosely defined as communities that exist on the blockchain. The community may be defined by a set of rules arrived at and put into code via smart contracts. Every action by every participant would then be subject to these sets of rules with the task of enforcing and reaching at recourse in case of a break being left to the program. Multitudes of smart contracts make up these rules and they work in tandem policing and watching over participants.
A DAO called the **Genesis DAO** was created by **Ethereum** participants in may of 2016. The community was meant to be a crowdfunding and venture capital platform. In a surprisingly short period of time they managed to raise an astounding **$150 million**. However, hacker(s) found loopholes in the system and managed to steal about **$50 million** dollars worth of Ethers from the crowdfund investors. The hack and its fallout resulted in a fork of the Ethereum blockchain into two, **Ethereum** and **Ethereum Classic** [5].
##### 3\. Application logic contracts (ALCs)
If youve heard about the internet of things in conjunction with the blockchain, chances are that the matter talked about **Application logic contacts** , shortly ALC. Such smart contracts contain application specific code that work in conjunction with other smart contracts and programs on the blockchain. They aid in communicating with and validating communication between devices (while in the domain of IoT). ALCs are a pivotal piece of every multi-function smart contract and mostly always work under a managing program. They find applications everywhere in most examples cited here[6][7].
_Since development is ongoing in the area, any definition or standard so to speak of will be fluidic and vague at best currently._
### How smart contracts work**
To simplify things, lets proceed by taking an example.
John and Peter are two individuals debating about the scores in a football match. They have conflicting views about the outcome with both of them supporting different teams (context). Since both of them need to go elsewhere and wont be able to finish the match then, John bets that team A will beat team B in the match and _offers_ Peter $100 in that case. Peter _considers_ and _accepts_ the bet while making it clear that they are _bound_ to the terms. However, neither of them _trusts_ each other to honour the bet and they dont have the time nor the money to appoint a _third party_ to oversee the same.
Assuming both John and Peter were to use a smart contract platform such as **[Etherparty][5]** , to automatically settle the bet at the time of the contract negotiation, theyll both link their blockchain based identities to the contract and set the terms, making it clear that as soon as the match is over, the program will find out who the winning side is and automatically credit the amount to the winners bank account from the losers. As soon as the match ends and media outlets report the same, the program will scour the internet for the prescribed sources, identify which team won, relate it to the terms of the contract, in this case since B won Peter gets the money from John and after intimating both the parties transfers $100 from Johns to Peters account. After having executed, the smart contract will terminate and be inactive for all the time to come unless otherwise mentioned.
The simplicity of the example aside, the situation involved a classic contract (paying attention to the italicized words) and the participants chose to implement the same using a smart contract. All smart contracts basically work on a similar principle, with the program being coded to execute on predefined parameters and spitting out expected outputs only. The outside sources the smart contract consults for information is may a times referred to as the _Oracle_ in the IT world. Oracles are a common part of many smart contract systems worldwide today.
The use of a smart contract in this situation allowed the participants the following benefits:
* It was faster than getting together and settling the bet manually.
* Removed the issue of trust from the equation.
* Eliminated the need for a trusted third party to handle the settlement on behalf of the parties involved.
* Costed nothing to execute.
* Is secure in how it handles parameters and sensitive data.
* The associated data will remain in the blockchain platform they ran it on permanently and future bets can be placed on by calling the same function and giving it added inputs.
* Gradually over time, assuming John and Peter develop gambling addictions, the program will help them develop reliable statistics to gauge their winning streaks.
Now that we know **what smart contracts are** and **how they work** , were still yet to address **why we need them**.
### The need for smart contracts
As the previous example we visited highlights we need smart contracts for a variety of reasons.
##### **Transparency**
The terms and conditions involved are very clear to the counterparties. Furthermore, since the execution of the program or the smart contract involves certain explicit inputs, users have a very direct way of verifying the factors that would impact them and the contract beneficiaries.
##### Time Efficient
As mentioned, smart contracts go to work immediately once theyre triggered by a control variable or a user call. Since data is made available to the system instantaneously by the blockchain and from other sources in the network, the execution does not take any time at all to verify and process information and settle the transaction. Transferring land title deeds for instance, a process which involved manual verification of tons of paperwork and takes weeks on normal can be processed in a matter of minutes or even seconds with the help of smart contract programs working to vet the documents and the parties involved.
##### Precision
Since the platform is basically just computer code and everything predefined, there can be no subjective errors and all the results will be precise and completely free of human errors.
##### Safety
An inherent feature of the blockchain is that every block of data is cryptographically encrypted. Meaning even though the data is stored on a multitude of nodes on the network for redundancy, **only the owner of the data has access to see and use the data**. Similarly, all process will be completely secure and tamper proof with the execution utilizing the blockchain for storing important variables and outcomes in the process. The same also simplifies auditing and regulatory affairs by providing auditors with a native, un-changed and non-repudiable version of the data chronologically.
##### Trust
The article series started by saying that blockchain adds a much-needed layer of trust to the internet and the services that run on it. The fact that smart contracts will under no circumstances show bias or subjectivity in executing the agreement means that parties involved are fully bound the outcomes and can trust the system with no strings attached. This also means that the **“trusted third-party”** required in conventional contracts of significant value is not required here. Foul play between the parties involved and oversight will be issues of the past.
##### Cost effective
As highlighted in the example, utilizing a smart contract involves minimal costs. Enterprises usually have administrative staff who work exclusively for making that transactions they undertake are legitimate and comply with regulations. If the deal involved multiple parties, duplication of the effort is unavoidable. Smart contracts essentially make the former irrelevant and duplication is eliminated since both the parties can simultaneously have their due diligence done.
### Applications of Smart Contracts
Basically, if two or more parties use a common blockchain platform and agree on a set of principles or business logic, they can come together to create a smart contract on the blockchain and it is executed with no human intervention at all. No one can tamper with the conditions set and, any changes, if the original code allows for it, is timestamped and carries the editors fingerprint increasing accountability. Imagine a similar situation at a much larger enterprise scale and you understand what smart contracts are capable of and in fact a **Capgemini study** from 2016 found that smart contracts could actually be commercially mainstream **“in the early years of the next decade”** [8]. Commercial applications involve uses in Insurance, Financial Markets, IoT, Loans, Identity Management systems, Escrow Accounts, Employment contracts, and Patent & Royalty contracts among others. Platforms such as Ethereum, a blockchain designed keeping smart contracts in mind, allow for individual private users to utilize smart contracts free of cost as well.
A more comprehensive overview of the applications of smart contracts on current technological problems will be presented in the next article of the series by exploring the companies that deal with it.
### So, what are the drawbacks?
This is not to say that smart contracts come with no concerns regarding their use whatsoever. Such concerns have actually slowed down development in this aspect as well. The tamper-proof nature of everything blockchain essentially makes it next to impossible to modify or add new clauses to existing clauses if the parties involved need to without major overhaul or legal recourse.
Secondly, even though activity on a public blockchain is open for all to see and observe. The personal identities of the parties involved in a transaction are not always known. This anonymity raises question regarding legal impunity in case either party defaults especially since current laws and lawmakers are not exactly accommodative of modern technology.
Thirdly, blockchains and smart contracts are still subject to security flaws in many ways because the technology for all the interest in it is still in a very nascent stage of development. This inexperience with the code and platform is what ultimately led to the DAO incident in 2016.
All of this is keeping aside the significant initial investment that might be needed in case an enterprise or firm needs to adapt a blockchain for its use. The fact that these are initial one-time investments and come with potential savings down the road however is what interests people.
### Conclusion
Current legal frameworks dont really support a full-on smart contract enabled society and wont in the near future due to obvious reasons. A solution is to opt for **“hybrid” contracts** that combine traditional legal texts and documents with smart contract code running on blockchains designed for the purpose[4]. However, even hybrid contracts remain largely unexplored as innovative legislature is required to bring them into fruition. The applications briefly mentioned here and many more are explored in detail in the [**next post of the series**][6].
**References:**
* **[1] S. C. A. Chamber of Digital Commerce, “Smart contracts Is the law ready,” no. September, 2018.**
* **[2] [Legal Definition of ius quaesitum tertio][7].
**
* **[3][N. Szabo, “Nick Szabo — Smart Contracts: Building Blocks for Digital Markets,” 1996.][4]**
* **[4] Cardozo Blockchain Project, “Smart Contracts & Legal Enforceability,” vol. 2, p. 28, 2018.**
* **[5][The DAO Heist Undone: 97% of ETH Holders Vote for the Hard Fork.][8]**
* **[6] F. Idelberger, G. Governatori, R. Riveret, and G. Sartor, “Evaluation of Logic-Based Smart Contracts for Blockchain Systems,” 2016, pp. 167183.**
* **[7][Types of Smart Contracts Based on Applications | Market InsightsTM Everest Group.][9]**
* **[8] B. Cant et al., “Smart Contracts in Financial Services : Getting from Hype to Reality,” Capgemini Consult., pp. 124, 2016.**
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/blockchain-2-0-explaining-smart-contracts-and-its-types/
作者:[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/03/smart-contracts-720x340.png
[2]: https://www.ostechnix.com/blockchain-2-0-blockchain-in-real-estate/
[3]: https://www.ostechnix.com/blockchain-2-0-an-introduction/
[4]: http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html
[5]: https://etherparty.com/
[6]: https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/
[7]: http://www.legal-glossary.org/
[8]: https://futurism.com/the-dao-heist-undone-97-of-eth-holders-vote-for-the-hard-fork/
[9]: https://www.everestgrp.com/2016-10-types-smart-contracts-based-applications-market-insights-36573.html/

View File

@ -0,0 +1,120 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: 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/)
Blockchain 2.0 Ongoing Projects (The State Of Smart Contracts Now) [Part 6]
======
![The State Of Smart Contracts Now][1]
Continuing from our [**earlier post on smart contracts**][2], this post aims to discuss the state of Smart contracts, highlight some current projects and companies currently undertaking developments in the area. Smart contracts as discussed in the previous article of the series are programs that exist and execute themselves on a blockchain network. We explored how smart contracts work and why they are superior to traditional digital platforms. Companies described here operate in a wide variety of industries however most of them deal with identity management systems, financial services, crowd funding systems etc., as these are the areas thought to be most suitable for switching to blockchain based data base systems.
### Open platforms
Platforms such as **Counterparty** [1] and **Solidity(Ethereum)** are fully public building blocks for developers to create their own smart contracts. Wide spread developer participation in such projects have allowed these to become de facto standards for developing smart contracts, designing your own cryptocurrency token systems, and creating protocols for the blockchains to function. Many commendable projects have derived from them. **Quorum** , by JP Morgan, derived from Ethereum, is an example. **Ripple** is another example for the same.
### Managing financial transactions
Transferring cryptocurrencies over the internet is touted to be the norm in the coming years. The shortfalls with the same are:
* Identities and wallet addresses are anonymous. The payer doesnt have any first recourse if the receiver does not honor the transaction.
* Erroneous transactions if any will cannot be traced.
* Cryptographically generated hash keys are difficult to work with for humans and human errors are a prime concern.
Having someone else take in the transaction momentarily and settle it with the receiver after due diligence is preferred in this case.
**EscrowMyEther** [3] and **PAYFAIR** [4] are two such escrow platforms. Basically, the escrow company takes the agreed upon amount and sends a token to the receiver. Once the receiver delivers what the payer wants via the same escrow platform, both confirm and the final payment is released. These are used extensively by freelancers and hobbyist collectors online.
### Financial services
Developments in micro-financing and micro-insurance projects will improve the banking infrastructure for much of the worlds poor and unbanked. Involving the poorer “unbanked” sections of the society is estimated to increase revenues for banks and institutions involved by **$380 billion** [5]. This amount supersedes the savings in operational expenses that can be expected by switching to blockchain DLT for banks.
**BankQu Inc.** based in Midwest United States goes by the slogan “Dignity through identity”. Their platform allows for individuals to setup their own digital identity record where all their transactions will be vetted and processed real time on the blockchain. Overtime the underlying code records and builds a unique online identity for its users allowing for ultra-quick transactions and settlements. The BankQu case studies exploring more about how theyre helping individuals and companies this way is available [here][3].
**Stratumn** is helping insurance companies offer better insurance services by automating tasks which were earlier micromanaged by humans. By automation, end to end traceability, and efficient data privacy methods theyve radically changed how insurance claims are settled. Improved customer experience along with significant cost reductions present a win-win situation for clients as well as firms involved[6].
A similar endeavor is being run on a trial basis currently by the French Insurance firm, **AXA**. The product _**“fizzy”**_ allows users to subscribe to its service for a small fee and enter their flight details. In case, the flight gets delayed or comes across some other issue, the program automatically scours online databases, checks with the insurance terms and credits the insurance amount to the users account. This eliminates the need for the user or the customer to file a claim after checking with the terms manually and in the long-run once such systems become mainstream, increase accountability from airlines[7][8].
### Keeping track of ownership rights
It is theoretically possible to track media from creation to end user consumption utilizing timestamped blocks of data in a DLT. Companies **Peertracks** and **Mycelia** are currently helping musicians publish content without worrying about their content being stolen or misused. They help artists sell directly to fans and clients while getting paid for their work without having to go through rights and record labels[9].
### Identity management platforms
Blockchain based identity management platforms store your identity on a distributed ledger. Once an account is setup, it is securely encrypted and sent to all the participating nodes after. However, as the owner of the data block only the user has access to the data. Once your identity is established on the network and you begin transactions, an automated program within the network will verify all previous transactions associated with your account, send it for regulatory filings after checking requirements and execute the settlement automatically provided the program deems the transaction legitimate. The upside here being that since the data on the blockchain is tamper-proof and the smart contract checks the input with zero bias (or subjectivity), the transaction doesnt, as previously mentioned, require oversight or approval from anyone and is taken care of instantaneously.
Start-ups like **ShoCard** , **Credits** , and **OneName** are currently rolling out similar services and are currently in talks with government and social institutions for integrating them into mainstream use.
Other independent projects by developers like **Chris Ellis** and **David Duccini** have respectively developed or proposed alternative identity management systems such as **“[World Citizenship][4]”** , and **[IDCoin][5]** , respectively. Mr Ellis even demonstrated the capabilities of his work by creating passports on the a blockchain network[10][11] [12][5].
### Resource sharing
**Share & Charge (Slock.It)** is a European blockchain start-up. Their mobile app allows homeowners and other individuals whove invested their money in setting up a charging station share their resource with other individuals whore looking for a quick. This not only allows owners to get back some of their investment, but also allows EV drivers to access significantly more charging points in their near-by geographical area allowing for suppliers to meet demands in a convenient manner. Once a “customer” is done charging their vehicle, the hardware associated creates a secure time stamped block consisting of the data and a smart contract working on the platform automatically credits the corresponding amount of money into the owners account. A track of all such transactions is recorded and proper security verifications kept in place. Interested readers can take a look [here][6], to know the technical angle behind their product[13][14]. The companys platforms will gradually enable users to share other products and services with individuals in need and earn a passive income from the same.
The companies weve looked at here, comprise a very short list of ongoing projects that make use of smart contracts and blockchain database systems. Platform such as these help in building a secure “box” full of information to be accessed only by the users themselves and the overlying code or the smart contract. The information is vetted in real time based on a trigger, examined, and the algorithm is executed by the system. Such platforms with minimal human oversight, a much-needed step in the right direction with respect to secure digital automation, something which has never been thought of at this scale previously.
The next post will shed some light on the **different types of blockchains**. Click the following link to know more about this topic.
* [**Blockchain 2.0 Public Vs Private Blockchain Comparison**][7]
**References:**
* **[1][About | Counterparty][8]**
* **[2] [Quorum | J.P. Morgan][9]
**
* **[3][Escrow My Ether][10]**
* **[4][PayFair][11]**
* **[5] B. Pani, “Blockchain Powered Financial Inclusion,” 2016.**
* **[6][STRATUMN | Insurance Claim Automation Across Europe][12]**
* **[7][fizzy][13]**
* **[8][AXA goes blockchain with fizzy | AXA][14]**
* **[9] M. Gates, “Blockchain. Ultimate guide to understanding blockchain bitcoin cryptocurrencies smart-contracts and the future of money.pdf.” 2017.**
* **[10][ShoCard Is A Digital Identity Card On The Blockchain | TechCrunch][15]**
* **[11][J. Biggs, “Your Next Passport Could Be On The Blockchain | TechCrunch][16]**
* **[12][OneName Namecoin Wiki][17]**
* **[13][Share&Charge launches its app, on-boards over 1,000 charging stations on the blockchain][18]**
* **[14][slock.it Landing][19]**
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/blockchain-2-0-ongoing-projects-the-state-of-smart-contracts-now/
作者:[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/State-Of-Smart-Contracts-720x340.png
[2]: https://www.ostechnix.com/blockchain-2-0-explaining-smart-contracts-and-its-types/
[3]: https://banqu.co/case-study/
[4]: https://github.com/MrChrisJ/World-Citizenship
[5]: https://github.com/IDCoin/IDCoin
[6]: https://blog.slock.it/share-charge-smart-contracts-the-technical-angle-58b93ce80f15
[7]: https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/
[8]: https://counterparty.io/platform/
[9]: https://www.jpmorgan.com/global/Quorum
[10]: http://escrowmyether.com/
[11]: https://payfair.io/
[12]: https://stratumn.com/business-case/insurance-claim-automation-across-europe/
[13]: https://fizzy.axa/en-gb/
[14]: https://group.axa.com/en/newsroom/news/axa-goes-blockchain-with-fizzy
[15]: https://techcrunch.com/2015/05/05/shocard-is-a-digital-identity-card-on-the-blockchain/
[16]: https://techcrunch.com/2014/10/31/your-next-passport-could-be-on-the-blockchain/
[17]: https://wiki.namecoin.org/index.php?title=OneName
[18]: https://blog.slock.it/share-charge-launches-its-app-on-boards-over-1-000-charging-stations-on-the-blockchain-ba8275390309
[19]: https://slock.it/

View File

@ -0,0 +1,103 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Damn! Antergos Linux has been Discontinued)
[#]: via: (https://itsfoss.com/antergos-linux-discontinued/)
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
Damn! Antergos Linux has been Discontinued
======
_**Beginner-friendly Arch Linux based distribution Antergos has announced that the project is being discontinued.**_
Arch Linux has always been considered a no-go zone for the beginners. Antergos challenged this status quo and made Arch Linux accessible to everyone by providing easier installation method. People who wouldnt dare [installing Arch Linux][1], opted for Antergos.
![Antergos provided easy access to Arch with its easy to use GUI tools][2]
The project started in 2012-13 and started gaining popularity around 2014. I used Antergos, liked it and covered it here on Its FOSS and perhaps (slightly) contributed to its popularity. In last five years, Antergos was downloaded close to a million times.
But for past year or so, I felt that this project was stagnating. Antergos hardly made any news. Neither the forum nor the social media handles were active. The community around Antergos grew thinner though a few dedicated users still remain.
### The end of Antergos Linux project
![][3]
On May 21, 2019, Antergos [announced][4] its discontinuation. Lack of free time cited as the main reason behind this decision.
> Today, we are announcing the end of this project. As many of you probably noticed over the past several months, we no longer have enough free time to properly maintain Antergos. We came to this decision because we believe that continuing to neglect the project would be a huge disservice to the community.
>
> Antergos Team
Antergos developers also mentioned that since the projects code still works, its an opportunity for interested developers to take what they find useful and start their own projects.
#### What happens to Existing Antergos users?
If you are an Antergos user, you dont have to worry a lot. Its not that your system will be unusable from today. Your system will continue to get updates directly from Arch Linux.
Antergos team plans to release an update to remove the Antergos repositories from your system along with any Antergos-specific packages that no longer serve a purpose as the project is ending. After that any packages installed from the Antergos repo that are in the AUR will begin to receive updates from [AUR][5].
[][6]
Suggested read Peppermint 8 Released. Download Now!
The Antergos forum and wiki will be functional but only for some time.
If you think using an unmaintained project is not a good idea, you should switch your distribution. The most appropriate choice would be [Manjaro Linux][7].
Manjaro Linux started around the same time as Antergos. Both Antergos and Manjaro were sort of competitors as both of them tried to make Arch Linux accessible for everyone.
Manjaro gained a huge userbase in the last few years and its community is thriving. If you want to remain in Arch domain but dont want to install Arch Linux itself, Manjaro is the best choice for you.
Just note that Manjaro Linux doesnt provide all the updates immediately as Arch or Antergos. It is a rolling release but with stability in mind. So the updates are tested first.
#### Inevitable fate for smaller distributions?
_Heres my opinion on the discontinuation on Antergos and other similar open source projects._
Antergos was a niche distribution. It had a smaller but dedicated userbase. The developers cited lack of free time as the main reason for their decision. However, I believe that lack of motivation plays a bigger role in such cases.
What motivates the people behind a project? They start it mostly as a side project and if the project is good, they start gaining users. This growth of userbase drives their motivation to work on the project.
If the userbase starts declining or gets stagnated, the motivation takes a hit.
If the userbase keeps on growing, the motivation increases but only to a certain point. More users require more effort in various tasks around the project. Keeping the wiki and forum along with social media itself is a challenging part, leave aside the actual code development. The situation becomes overwhelming.
When a project grows in considerable size, project owners have two choices. First choice is to form a community of volunteers and start delegating tasks that could be delegated. Having volunteers dedicated to project is not easy but it can surely be achieved as Debian and Manjaro have done it already.
[][8]
Suggested read Lightweight Distribution Linux Lite 4.0 Released With Brand New Look
Second choice is to create some revenue generation channel around the project. The additional revenue may justify those extra hours and in some cases, it could drive the developer to work full time on the project. [elementary OS][9] is trying to achieve something similar by developing an ecosystem of payable apps in their software center.
You may argue that money should not be a factor in Free and Open Source Software culture but the unfortunate truth is that money is always a factor, in every aspect of our life. I am not saying that a project should be purely driven by money but a project must be sustainable in every aspect.
We have see how other smaller but moderately popular Linux distributions like Korora has been discontinued due to lack of free time. [Solus creator Ikey Doherty had to leave the project][10] to focus on his personal life. Developing and maintaining a successful open source project is not an easy task.
Thats just my opinion. Please feel free to disagree with it and voice your opinion in the comment section.
--------------------------------------------------------------------------------
via: https://itsfoss.com/antergos-linux-discontinued/
作者:[Abhishek Prakash][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/install-arch-linux/
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2015/08/Installing_Antergos_Linux_7.png?ssl=1
[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/05/antergos-linux-dead.jpg?resize=800%2C450&ssl=1
[4]: https://antergos.com/blog/antergos-linux-project-ends/
[5]: https://itsfoss.com/best-aur-helpers/
[6]: https://itsfoss.com/peppermint-8-released/
[7]: https://manjaro.org/
[8]: https://itsfoss.com/linux-lite-4/
[9]: https://elementary.io/
[10]: https://itsfoss.com/ikey-leaves-solus/

View File

@ -0,0 +1,202 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Securing telnet connections with stunnel)
[#]: via: (https://fedoramagazine.org/securing-telnet-connections-with-stunnel/)
[#]: author: (Curt Warfield https://fedoramagazine.org/author/rcurtiswarfield/)
Securing telnet connections with stunnel
======
![][1]
Telnet is a client-server protocol that connects to a remote server through TCP over port 23. Telnet does not encrypt data and is considered insecure and passwords can be easily sniffed because data is sent in the clear. However there are still legacy systems that need to use it. This is where **stunnel** comes to the rescue.
Stunnel is designed to add SSL encryption to programs that have insecure connection protocols. This article shows you how to use it, with telnet as an example.
### Server Installation
Install stunnel along with the telnet server and client [using sudo][2]:
```
sudo dnf -y install stunnel telnet-server telnet
```
Add a firewall rule, entering your password when prompted:
```
firewall-cmd --add-service=telnet --perm
firewall-cmd --reload
```
Next, generate an RSA private key and an SSL certificate:
```
openssl genrsa 2048 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 90 -out stunnel.crt
```
You will be prompted for the following information one line at a time. When asked for _Common Name_ you must enter the correct host name or IP address, but everything else you can skip through by hitting the **Enter** key.
```
You are about to be asked to enter information that will be
incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []
```
Merge the RSA key and SSL certificate into a single _.pem_ file, and copy that to the SSL certificate directory:
```
cat stunnel.crt stunnel.key > stunnel.pem
sudo cp stunnel.pem /etc/pki/tls/certs/
```
Now its time to define the service and the ports to use for encrypting your connection. Choose a port that is not already in use. This example uses port 450 for tunneling telnet. Edit or create the _/etc/stunnel/telnet.conf_ file:
```
cert = /etc/pki/tls/certs/stunnel.pem
sslVersion = TLSv1
chroot = /var/run/stunnel
setuid = nobody
setgid = nobody
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[telnet]
accept = 450
connect = 23
```
The **accept** option is the port the server will listen to for incoming telnet requests. The **connect** option is the internal port the telnet server listens to.
Next, make a copy of the systemd unit file that allows you to override the packaged version:
```
sudo cp /usr/lib/systemd/system/stunnel.service /etc/systemd/system
```
Edit the _/etc/systemd/system/stunnel.service_ file to add two lines. These lines create a chroot jail for the service when it starts.
```
[Unit]
Description=TLS tunnel for network daemons
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/stunnel
Type=forking
PrivateTmp=true
ExecStartPre=-/usr/bin/mkdir /var/run/stunnel
ExecStartPre=/usr/bin/chown -R nobody:nobody /var/run/stunnel
[Install]
WantedBy=multi-user.target
```
Next, configure SELinux to listen to telnet on the new port you just specified:
```
sudo semanage port -a -t telnetd_port_t -p tcp 450
```
Finally, add a new firewall rule:
```
firewall-cmd --add-port=450/tcp --perm
firewall-cmd --reload
```
Now you can enable and start telnet and stunnel.
```
systemctl enable telnet.socket stunnel@telnet.service --now
```
A note on the _systemctl_ command is in order. Systemd and the stunnel package provide an additional [template unit file][3] by default. The template lets you drop multiple configuration files for stunnel into _/etc/stunnel_ , and use the filename to start the service. For instance, if you had a _foobar.conf_ file, you could start that instance of stunnel with _systemctl start[stunnel@foobar.service][4]_ , without having to write any unit files yourself.
If you want, you can set this stunnel template service to start on boot:
```
systemctl enable stunnel@telnet.service
```
### Client Installation
This part of the article assumes you are logged in as a normal user ([with sudo privileges][2]) on the client system. Install stunnel and the telnet client:
```
dnf -y install stunnel telnet
```
Copy the _stunnel.pem_ file from the remote server to your client _/etc/pki/tls/certs_ directory. In this example, the IP address of the remote telnet server is 192.168.1.143.
```
sudo scp myuser@192.168.1.143:/etc/pki/tls/certs/stunnel.pem
/etc/pki/tls/certs/
```
Create the _/etc/stunnel/telnet.conf_ file:
```
cert = /etc/pki/tls/certs/stunnel.pem
client=yes
[telnet]
accept=450
connect=192.168.1.143:450
```
The **accept** option is the port that will be used for telnet sessions. The **connect** option is the IP address of your remote server and the port its listening on.
Next, enable and start stunnel:
```
systemctl enable stunnel@telnet.service --now
```
Test your connection. Since you have a connection established, you will telnet to _localhost_ instead of the hostname or IP address of the remote telnet server:
```
[user@client ~]$ telnet localhost 450
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Kernel 5.0.9-301.fc30.x86_64 on an x86_64 (0)
server login: myuser
Password: XXXXXXX
Last login: Sun May 5 14:28:22 from localhost
[myuser@server ~]$
```
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/securing-telnet-connections-with-stunnel/
作者:[Curt Warfield][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/rcurtiswarfield/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2019/05/stunnel-816x345.jpg
[2]: https://fedoramagazine.org/howto-use-sudo/
[3]: https://fedoramagazine.org/systemd-template-unit-files/
[4]: mailto:stunnel@foobar.service

View File

@ -0,0 +1,86 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (5 GNOME keyboard shortcuts to be more productive)
[#]: via: (https://fedoramagazine.org/5-gnome-keyboard-shortcuts-to-be-more-productive/)
[#]: author: (Clément Verna https://fedoramagazine.org/author/cverna/)
5 GNOME keyboard shortcuts to be more productive
======
![][1]
For some people, using GNOME Shell as a traditional desktop manager may be frustrating since it often requires more action of the mouse. In fact, GNOME Shell is also a [desktop manager][2] designed for and meant to be driven by the keyboard. Learn how to be more efficient with GNOME Shell with these 5 ways to use the keyboard instead of the mouse.
### GNOME activities overview
The activities overview can be easily opened using the **Super** key from the keyboard. (The **Super** key usually has a logo on it.) This is really useful when it comes to start an application. For example, its easy to start the Firefox web browser with the following key sequence **Super + f i r + Enter.**
![][3]
### Message tray
In GNOME, notifications are available in the message tray. This is also the place where the calendar and world clocks are available. To open the message tray using the keyboard use the **Super+m** shortcut. To close the message tray simply use the same shortcut again.
* ![][4]
### Managing workspaces in GNOME
Gnome Shell uses dynamic workspaces, meaning it creates additional workspaces as they are needed. A great way to be more productive using Gnome is to use one workspace per application or per dedicated activity, and then use the keyboard to navigate between these workspaces.
Lets look at a practical example. To open a Terminal in the current workspace press the following keys: **Super + t e r + Enter.** Then, to open a new workspace press **Super + PgDn**. Open Firefox ( **Super + f i r + Enter)**. To come back to the terminal, use **Super + PgUp**.
![][5]
### Managing an application window
Using the keyboard it is also easy to manage the size of an application window. Minimizing, maximizing and moving the application to the left or the right of the screen can be done with only a few key strokes. Use **Super+**🠝 to maximize, **Super+**🠟 to minimize, **Super+**🠜 and **Super+**🠞 to move the window left and right.
![][6]
### Multiple windows from the same application
Using the activities overview to start an application is very efficient. But trying to open a new window from an application already running only results in focusing on the open window. To create a new window, instead of simply hitting **Enter** to start the application, use **Ctrl+Enter**.
So for example, to start a second instance of the terminal using the application overview, **Super + t e r + (Ctrl+Enter)**.
![][7]
Then you can use **Super+`** to switch between windows of the same application.
![][8]
As shown, GNOME Shell is a really powerful desktop environment when controlled from the keyboard. Learning to use these shortcuts and train your muscle memory to not use the mouse will give you a better user experience, and make you more productive when using GNOME. For other useful shortcuts, check out [this page on the GNOME wiki][9].
* * *
_Photo by _[ _1AmFcS_][10]_ on _[_Unsplash_][11]_._
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/5-gnome-keyboard-shortcuts-to-be-more-productive/
作者:[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/2019/05/5-gnome-keycombos-816x345.jpg
[2]: https://fedoramagazine.org/gnome-3-32-released-coming-to-fedora-30/
[3]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-10-50.gif
[4]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-11-01.gif
[5]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-12-57.gif
[6]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-13-06.gif
[7]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-13-19.gif
[8]: https://fedoramagazine.org/wp-content/uploads/2019/05/Peek-2019-05-23-13-22.gif
[9]: https://wiki.gnome.org/Design/OS/KeyboardShortcuts
[10]: https://unsplash.com/photos/MuTWth_RnEs?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[11]: https://unsplash.com/search/photos/keyboard?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText

View File

@ -0,0 +1,300 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Enable Or Disable SSH Access For A Particular User Or Group In Linux?)
[#]: via: (https://www.2daygeek.com/allow-deny-enable-disable-ssh-access-user-group-in-linux/)
[#]: author: (2daygeek http://www.2daygeek.com/author/2daygeek/)
How To Enable Or Disable SSH Access For A Particular User Or Group In Linux?
======
As per your organization standard policy, you may need to allow only the list of users that are allowed to access the Linux system.
Or you may need to allow only few groups, which are allowed to access the Linux system.
How to achieve this? What is the best way? How to achieve this in a simple way?
Yes, there are many ways are available to perform this.
However, we need to go with simple and easy method.
If so, it can be done by making the necessary changes in `/etc/ssh/sshd_config` file.
In this article we will show you, how to perform this in details.
Why are we doing this? due to security reason. Navigate to the following URL to know more about **[openSSH][1]** usage.
### What Is SSH?
openssh stands for OpenBSD Secure Shell. Secure Shell (ssh) is a free open source networking tool which allow us to access remote system over an unsecured network using Secure Shell (SSH) protocol.
Its a client-server architecture. It handles user authentication, encryption, transferring files between computers and tunneling.
These can be accomplished via traditional tools such as telnet or rcp, these are insecure and use transfer password in cleartext format while performing any action.
### How To Allow A User To Access SSH In Linux?
We can allow/enable the ssh access for a particular user or list of the users using the following method.
If you would like to allow more than one user then you have to add the users with space in the same line.
To do so, just append the following value into `/etc/ssh/sshd_config` file. In this example, we are going to allow ssh access for `user3`.
```
# echo "AllowUsers user3" >> /etc/ssh/sshd_config
```
You can double check this by running the following command.
```
# cat /etc/ssh/sshd_config | grep -i allowusers
AllowUsers user3
```
Thats it. Just bounce the ssh service and see the magic.
```
# systemctl restart sshd
# service restart sshd
```
Simple open a new terminal or session and try to access the Linux system with different user. Yes, `user2` isnt allowed for SSH login and will be getting an error message as shown below.
```
# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
```
Output:
```
Mar 29 02:00:35 CentOS7 sshd[4900]: User user2 from 192.168.1.6 not allowed because not listed in AllowUsers
Mar 29 02:00:35 CentOS7 sshd[4900]: input_userauth_request: invalid user user2 [preauth]
Mar 29 02:00:40 CentOS7 unix_chkpwd[4902]: password check failed for user (user2)
Mar 29 02:00:40 CentOS7 sshd[4900]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=user2
Mar 29 02:00:43 CentOS7 sshd[4900]: Failed password for invalid user user2 from 192.168.1.6 port 42568 ssh2
```
At the same time `user3` is allowed to login into the system because its in allowed users list.
```
# ssh [email protected]
[email protected]'s password:
[[email protected] ~]$
```
Output:
```
Mar 29 02:01:13 CentOS7 sshd[4939]: Accepted password for user3 from 192.168.1.6 port 42590 ssh2
Mar 29 02:01:13 CentOS7 sshd[4939]: pam_unix(sshd:session): session opened for user user3 by (uid=0)
```
### How To Deny Users To Access SSH In Linux?
We can deny/disable the ssh access for a particular user or list of the users using the following method.
If you would like to disable more than one user then you have to add the users with space in the same line.
To do so, just append the following value into `/etc/ssh/sshd_config` file. In this example, we are going to disable ssh access for `user1`.
```
# echo "DenyUsers user1" >> /etc/ssh/sshd_config
```
You can double check this by running the following command.
```
# cat /etc/ssh/sshd_config | grep -i denyusers
DenyUsers user1
```
Thats it. Just bounce the ssh service and see the magic.
```
# systemctl restart sshd
# service restart sshd
```
Simple open a new terminal or session and try to access the Linux system with Deny user. Yes, `user1` is in denyusers list. So, you will be getting an error message as shown below when you are try to login.
```
# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
```
Output:
```
Mar 29 01:53:42 CentOS7 sshd[4753]: User user1 from 192.168.1.6 not allowed because listed in DenyUsers
Mar 29 01:53:42 CentOS7 sshd[4753]: input_userauth_request: invalid user user1 [preauth]
Mar 29 01:53:46 CentOS7 unix_chkpwd[4755]: password check failed for user (user1)
Mar 29 01:53:46 CentOS7 sshd[4753]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=user1
Mar 29 01:53:48 CentOS7 sshd[4753]: Failed password for invalid user user1 from 192.168.1.6 port 42522 ssh2
```
### How To Allow Groups To Access SSH In Linux?
We can allow/enable the ssh access for a particular group or groups using the following method.
If you would like to allow more than one group then you have to add the groups with space in the same line.
To do so, just append the following value into `/etc/ssh/sshd_config` file. In this example, we are going to disable ssh access for `2g-admin` group.
```
# echo "AllowGroups 2g-admin" >> /etc/ssh/sshd_config
```
You can double check this by running the following command.
```
# cat /etc/ssh/sshd_config | grep -i allowgroups
AllowGroups 2g-admin
```
Run the following command to know the list of the users are belongs to this group.
```
# getent group 2g-admin
2g-admin:x:1005:user1,user2,user3
```
Thats it. Just bounce the ssh service and see the magic.
```
# systemctl restart sshd
# service restart sshd
```
Yes, `user3` is allowed to login into the system because user3 is belongs to `2g-admin` group.
```
# ssh [email protected]
[email protected]'s password:
[[email protected] ~]$
```
Output:
```
Mar 29 02:10:21 CentOS7 sshd[5165]: Accepted password for user1 from 192.168.1.6 port 42640 ssh2
Mar 29 02:10:22 CentOS7 sshd[5165]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
```
Yes, `user2` is allowed to login into the system because user2 is belongs to `2g-admin` group.
```
# ssh [email protected]
[email protected]'s password:
[[email protected] ~]$
```
Output:
```
Mar 29 02:10:38 CentOS7 sshd[5225]: Accepted password for user2 from 192.168.1.6 port 42642 ssh2
Mar 29 02:10:38 CentOS7 sshd[5225]: pam_unix(sshd:session): session opened for user user2 by (uid=0)
```
When you are try to login into the system with other users which are not part of this group then you will be getting an error message as shown below.
```
# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
```
Output:
```
Mar 29 02:12:36 CentOS7 sshd[5306]: User ladmin from 192.168.1.6 not allowed because none of user's groups are listed in AllowGroups
Mar 29 02:12:36 CentOS7 sshd[5306]: input_userauth_request: invalid user ladmin [preauth]
Mar 29 02:12:56 CentOS7 unix_chkpwd[5310]: password check failed for user (ladmin)
Mar 29 02:12:56 CentOS7 sshd[5306]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=ladmin
Mar 29 02:12:58 CentOS7 sshd[5306]: Failed password for invalid user ladmin from 192.168.1.6 port 42674 ssh2
```
### How To Deny Group To Access SSH In Linux?
We can deny/disable the ssh access for a particular group or groups using the following method.
If you would like to disable more than one group then you need to add the group with space in the same line.
To do so, just append the following value into `/etc/ssh/sshd_config` file.
```
# echo "DenyGroups 2g-admin" >> /etc/ssh/sshd_config
```
You can double check this by running the following command.
```
# # cat /etc/ssh/sshd_config | grep -i denygroups
DenyGroups 2g-admin
# getent group 2g-admin
2g-admin:x:1005:user1,user2,user3
```
Thats it. Just bounce the ssh service and see the magic.
```
# systemctl restart sshd
# service restart sshd
```
Yes `user3` isnt allowed to login into the system because its not part of `2g-admin` group. Its in Denygroups.
```
# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
```
Output:
```
Mar 29 02:17:32 CentOS7 sshd[5400]: User user1 from 192.168.1.6 not allowed because a group is listed in DenyGroups
Mar 29 02:17:32 CentOS7 sshd[5400]: input_userauth_request: invalid user user1 [preauth]
Mar 29 02:17:38 CentOS7 unix_chkpwd[5402]: password check failed for user (user1)
Mar 29 02:17:38 CentOS7 sshd[5400]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=user1
Mar 29 02:17:41 CentOS7 sshd[5400]: Failed password for invalid user user1 from 192.168.1.6 port 42710 ssh2
```
Anyone can login into the system except `2g-admin` group. Hence, `ladmin` user is allowed to login into the system.
```
# ssh [email protected]
[email protected]'s password:
[[email protected] ~]$
```
Output:
```
Mar 29 02:19:13 CentOS7 sshd[5432]: Accepted password for ladmin from 192.168.1.6 port 42716 ssh2
Mar 29 02:19:13 CentOS7 sshd[5432]: pam_unix(sshd:session): session opened for user ladmin by (uid=0)
```
--------------------------------------------------------------------------------
via: https://www.2daygeek.com/allow-deny-enable-disable-ssh-access-user-group-in-linux/
作者:[2daygeek][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://www.2daygeek.com/author/2daygeek/
[b]: https://github.com/lujun9972
[1]: https://www.2daygeek.com/category/ssh-tutorials/

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (MjSeven)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
@ -471,7 +471,7 @@ via: https://opensource.com/article/19/5/how-write-good-c-main-function
作者:[Erik O'Shaughnessy][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
译者:[MjSeven](https://github.com/MjSeven)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出