mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-03 23:40:14 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
f88b101c39
91
published/20190429 10 moments that shaped Linux history.md
Normal file
91
published/20190429 10 moments that shaped Linux history.md
Normal file
@ -0,0 +1,91 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12060-1.html)
|
||||
[#]: subject: (10 moments that shaped Linux history)
|
||||
[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history)
|
||||
[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss)
|
||||
|
||||
塑造 Linux 历史的 10 个时刻
|
||||
======
|
||||
|
||||
> 自 1991 年诞生以来,Linux 已经走了漫长的一段路,而这些事件标志着它的发展。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202004/01/093243wukmsiwdkkwfrg00.jpg)
|
||||
|
||||
在 2018 年 8 月,Opensource.com 发布了一项包含七个选项的民意测验,询问读者:[Linux 历史上最重要的时刻是什么?][2]我觉得我需要扩大这个清单,并提出我认为的 10 个在塑造 Linux 历史上发挥了重要作用的时刻。
|
||||
|
||||
### 1、Linus 发布 Linux
|
||||
|
||||
Linus Torvalds 最初是在 1991 年将 Linux 当成一个业余爱好发布到世上的。结果这个业余爱好成了他的职业!
|
||||
|
||||
### 2、出现 Linux 发行版
|
||||
|
||||
1993 年,出现了几个 Linux 发行版,需要特别指出的有 [Debian][3]、[Red Hat][4] 和 [Slackware][5]。这个时刻之所以重要是因为它们证明了 Linux 在市场认可度和开发水平方面的成就,使其能够在 1990 年代动荡的操作系统战争、浏览器战争和协议战争中生存下来。相反,那时许多成熟的、商业的和专有的产品并没有活过千禧年之交!
|
||||
|
||||
### 3、IBM 斥巨资投注 Linux
|
||||
|
||||
2000 年,IBM 宣布将在 Linux 上投资 10 亿美元。Richard Richtmyer 在他的 CNN Money [有关投资的文章][6] 中写道:“这一声明强调了蓝色巨人对 Linux 的承诺,标志着将这个替代操作系统推向主流商业市场的重大进展。”
|
||||
|
||||
### 4、好莱坞接纳 Linux
|
||||
|
||||
在 2002 年,整个好莱坞电影业似乎都采用了 Linux。[迪尼斯][7]、[梦工厂][8] 和 [工业光魔][9] 都在那一年开始用 Linux 制作电影。
|
||||
|
||||
### 5、Linux 得到政府认可
|
||||
|
||||
2003 年,美国政府对 Linux 的接受是它的又一个重要时刻。红帽 Linux 被[授予][10]美国防部通用操作环境(COE)认证。这很重要,因为政府(特别是情报和军事机构)对计算机系统有非常严格的要求,以防止攻击和支持国家安全。这为其他机构使用 Linux 打开了大门。在那年晚些时候,[美国国家气象局宣布][11],它将用运行 Linux 的新计算机代替过时的系统。
|
||||
|
||||
### 6、我管理的系统
|
||||
|
||||
这个“时刻”确实是我个人经历的集合。随着在 2000 年代我的职业发展,我发现自己管理的几种类型的系统和设备都运行着 Linux。我在 VMware ESX、F5 Big-IP、Check Point UTM Edge、Cisco ASA 和 PIX 这些地方发现了 Linux。这使我意识到 Linux 确实可行并且可以继续存在下去。
|
||||
|
||||
### 7、Ubuntu
|
||||
|
||||
2004 年,Mark Shuttleworth 创立了 Canonical,该公司基于 Debian 发行版提供了易于使用的 Linux 桌面:[Ubuntu Linux][12]。我认为 Ubuntu Linux 帮助扩展了桌面 Linux 安装基数。从休闲的家庭用户到专业软件开发人员,它使 Linux 出现在更多人面前。
|
||||
|
||||
### 8、Google 的 Linux
|
||||
|
||||
Google 发行了两种基于 Linux 内核的操作系统:2008 年中期的 Android 移动操作系统和 2011 年在 Chromebook 上运行的 Chrome OS。在那之后,已经售出了数百万部 Android 手机和 Chromebook。
|
||||
|
||||
### 9、云计算即 Linux
|
||||
|
||||
在过去这十年左右的时间里,云计算已经从互联网计算的宏伟愿景变成了我们如何个人和专业地使用计算机的全新方式。云计算领域中的主要参与者都是构建于 Linux 之上的,包括 [Amazon Web Services(AWS)][13]、[Google Cloud Services(GCS)][14] 和 [Linode][15]。即使在一些我们不能确信的地方(例如 Microsoft Azure),也很好地支持运行 Linux 工作负载。
|
||||
|
||||
### 10、我的汽车运行着 Linux
|
||||
|
||||
你的也一样!许多汽车制造商几年前开始引入 Linux。这导致了名为 [汽车级 Linux(AGL)][16] 的协作开源项目的形成。丰田和斯巴鲁等主要汽车制造商已经联合开发基于 Linux 的汽车娱乐、导航和引擎管理系统。
|
||||
|
||||
### 分享你的最爱
|
||||
|
||||
这是我从贯穿我的职业生涯的 Linux 文章和事件的档案库中提取出来的主观清单,因此可能还有其他更值得注意的时刻。请分享你的评论吧。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/4/top-moments-linux-history
|
||||
|
||||
作者:[Alan Formy-Duval][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/alanfdoss
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background)
|
||||
[2]: https://opensource.com/article/18/8/linux-history
|
||||
[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html
|
||||
[4]: https://brand.redhat.com/foundations/history
|
||||
[5]: https://opensource.com/article/18/7/stackware-turns-25
|
||||
[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux
|
||||
[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html
|
||||
[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film
|
||||
[9]: https://www.linuxjournal.com/article/6011
|
||||
[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat
|
||||
[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html
|
||||
[12]: https://www.ubuntu.com/about
|
||||
[13]: https://aws.amazon.com/amazon-linux-2
|
||||
[14]: https://cloud.google.com
|
||||
[15]: https://www.linode.com/docs/getting-started
|
||||
[16]: https://www.automotivelinux.org
|
@ -0,0 +1,93 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (IEEE Standards Association Launches an Open Source Collaboration Platform)
|
||||
[#]: via: (https://itsfoss.com/ieee-open-source-collaboration-platform/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
IEEE Standards Association Launches an Open Source Collaboration Platform
|
||||
======
|
||||
|
||||
_**Brief: IEEE Standards Association has announced a GitLab-based open source collaboration platform. Read how is it different and what advantages it has.**_
|
||||
|
||||
[IEEE][1] is the world’s largest technical professional organization dedicated to advancing technology. The IEEE Standards Association (IEEE SA) is an organization within IEEE that develops global standards in a broad range of industries.
|
||||
|
||||
The IEEE Standards Association (SA) has come up with an open-source collaboration platform i.e [IEEE SA Open][2].
|
||||
|
||||
It is technically a self-hosted GitLab instance combined with [Mattermost][3] (a [slack alternative][4]) and [GitLab Pages][5]. To describe it further, the [official blog post][6] mentioned:
|
||||
|
||||
> The platform enables independent software developers, startups, industry, academic institutions, and others to create, test, manage, and deploy innovative projects in a collaborative, safe, and responsible environment.
|
||||
|
||||
### How is it different or useful?
|
||||
|
||||
The main key attraction for this platform would be IEEE’s members’ network, technical expertise, and resources.
|
||||
|
||||
IEEE President, [Robert Fish][7], also mentions in brief (during an interview with Radio Kan) how it’s different and why IEEE wanted to go with it:
|
||||
|
||||
> Today, much of the world’s infrastructure is run by software, and that software needs to comply with standards in communications networking, electrical grids, agriculture, and the like.
|
||||
|
||||
It makes sense – if we want to improve standardizing technologies, it highly depends on the software. So, this definitely sounds like something to standardize innovative open-source projects to gear them up for potential capital opportunities as well.
|
||||
|
||||
IEEE also clarified that:
|
||||
|
||||
> As software becomes increasingly prevalent in the world today, ethical alignment, reliability, transparency, and democratic governance become must-haves. IEEE is uniquely positioned to endow open-source projects with these attributes.
|
||||
|
||||
While this sounds good, what exactly the open-source platform by the IEEE offer? Let’s take a look at that:
|
||||
|
||||
### IEEE SA Open: Quick overview
|
||||
|
||||
![][8]
|
||||
|
||||
To start with, it is open to all and completely free to use. You just need to create an [IEEE account][9] and then [sign in to the open-source platform][10] to get started.
|
||||
|
||||
Along with the benefits associated with IEEE’s extensive network of Members, you can also expect guidance support from their open-source community managers or community members.
|
||||
|
||||
![Ieee Gitlab][11]
|
||||
|
||||
The platform presents use cases for both standard and non-standard projects, so you can give it a try.
|
||||
|
||||
For its choice to go with GitLab combined with Mattermost and Pages, you get a couple of useful features, they are:
|
||||
|
||||
* Project planning and management features
|
||||
* Source code management
|
||||
* Testing, code quality, and continuous integration features
|
||||
* Docker container registry and Kubernetes integration
|
||||
* Application release and delivery features
|
||||
* Integrated Mattermost chat forum w/slash commands; (Android and iPhone apps are fully supported)
|
||||
* Capable of bridging the gap between Standards development and open source communities to allow for the advancement of nimble and creative technical solutions at a faster pace
|
||||
* A safe open space with an enforced code of conduct
|
||||
|
||||
|
||||
|
||||
### Wrapping Up
|
||||
|
||||
It’s obviously a good thing to have more platforms to potentially amplify the exposure of open-source projects – hence, IEEE’s initiative sounds promising to start with.
|
||||
|
||||
What do you think about it? Let me know your thoughts!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/ieee-open-source-collaboration-platform/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.ieee.org/about/index.html
|
||||
[2]: https://standards.ieee.org/content/ieee-standards/en/initiatives/opensource/
|
||||
[3]: https://mattermost.com/
|
||||
[4]: https://itsfoss.com/open-source-slack-alternative/
|
||||
[5]: https://docs.gitlab.com/ee/user/project/pages/
|
||||
[6]: https://spectrum.ieee.org/the-institute/ieee-products-services/ieee-standards-association-launches-a-platform-for-open-source-collaboration
|
||||
[7]: https://www.linkedin.com/in/robertsfish/
|
||||
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/ieee-opensource.jpg?ssl=1
|
||||
[9]: https://www.ieee.org/profile/public/createwebaccount/showRegister.html
|
||||
[10]: https://opensource.ieee.org/
|
||||
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ieee-gitlab.jpg?ssl=1
|
@ -1,89 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (10 moments that shaped Linux history)
|
||||
[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history)
|
||||
[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss)
|
||||
|
||||
10 moments that shaped Linux history
|
||||
======
|
||||
Linux has come a long way since 1991. These events mark its evolution.
|
||||
![Penguin with green background][1]
|
||||
|
||||
In August 2018, Opensource.com posted a poll with seven options asking readers: _[What was the most important moment in the history of Linux?][2]_ I thought I would expand on the list and present 10 moments that I think have played an important part in shaping the history of Linux.
|
||||
|
||||
### 1\. Linus releases Linux
|
||||
|
||||
Linus Torvalds initially released Linux to the world in 1991 as a hobby. It didn't remain a hobby for long!
|
||||
|
||||
### 2\. Linux distributions
|
||||
|
||||
In 1993, several Linux distributions were founded, notably [Debian][3], [Red Hat][4], and [Slackware][5]. These were important because they demonstrated Linux's gains in market acceptance and development that enabled it to survive the tumultuous OS wars, browser wars, and protocol wars of the 1990s. In contrast, many established, commercial, and proprietary products did not make it past the turn of the millennium!
|
||||
|
||||
### 3\. IBM's big investment in Linux
|
||||
|
||||
In 2000, IBM announced it would invest US$1 billion dollars in Linux. In his CNN Money [article about the investment][6], Richard Richtmyer wrote: "The announcement underscores Big Blue's commitment to Linux and marks significant progress in moving the alternative operating system into the mainstream commercial market."
|
||||
|
||||
### 4\. Hollywood adopts Linux
|
||||
|
||||
In 2002, it seemed the entire Hollywood movie industry adopted Linux. [Disney][7], [Dreamworks][8], and [Industrial Light & Magic][9] all began making movies with Linux that year.
|
||||
|
||||
### 5\. Linux for national security
|
||||
|
||||
In 2003, another big moment came with the US government's acceptance of Linux. Red Hat Linux was [awarded][10] the Department of Defense Common Operating Environment (COE) certification. This is significant because the government—intelligence and military agencies in particular—have very strict requirements for computing systems to prevent attacks and support national security. This opened the door for other agencies to use Linux. Later that year, the [National Weather Service announced][11] it would replace outdated systems with new computers running Linux.
|
||||
|
||||
### 6\. The systems I managed
|
||||
|
||||
This "moment" is really a collection of my personal experiences. As my career progressed in the 2000s, I discovered several types of systems and devices that I managed were all running Linux. Some of the places I found Linux were VMware ESX, F5 Big-IP, Check Point UTM Edge, Cisco ASA, and PIX. This made me realize that Linux was truly viable and here to stay.
|
||||
|
||||
### 7\. Ubuntu
|
||||
|
||||
In 2004, Canonical was founded by Mark Shuttleworth to provide an easy-to-use Linux desktop—[Ubuntu Linux][12]—based on the Debian distribution. I think Ubuntu Linux helped to expand the desktop Linux install base. It put Linux in front of many more people, from casual home users to professional software developers.
|
||||
|
||||
### 8\. Google Linux
|
||||
|
||||
Google released two operating systems based on the Linux kernel: the Android mobile operating system in mid-2008 and Chrome OS, running on a Chromebook, in 2011. Since then, millions of Android mobile phones and Chromebooks have been sold.
|
||||
|
||||
### 9\. The cloud is Linux
|
||||
|
||||
In the past 10 years or so, cloud computing has gone from a grandiose vision of computing on the internet to a reinvention of how we use computers personally and professionally. The big players in the cloud space are built on Linux, including [Amazon Web Services][13], [Google Cloud Services][14], and [Linode][15]. Even in cases where we aren't certain, such as Microsoft Azure, running Linux workloads is well supported.
|
||||
|
||||
### 10\. My car runs Linux
|
||||
|
||||
And so will yours! Many automakers began introducing Linux a few years ago. This led to the formation of the collaborative open source project called [Automotive Grade Linux][16]. Major car makers, such as Toyota and Subaru, have joined together to develop Linux-based automotive entertainment, navigation, and engine-management systems.
|
||||
|
||||
#### Share your favorite
|
||||
|
||||
This is my subjective list pulled from archives of Linux articles and events throughout my career, so there may be other more notable moments that I am overlooking. Share in the comments. Also, the [Linux history poll][2] is still open for voting if you're interested.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/4/top-moments-linux-history
|
||||
|
||||
作者:[Alan Formy-Duval][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/alanfdoss
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background)
|
||||
[2]: https://opensource.com/article/18/8/linux-history
|
||||
[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html
|
||||
[4]: https://brand.redhat.com/foundations/history
|
||||
[5]: https://opensource.com/article/18/7/stackware-turns-25
|
||||
[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux
|
||||
[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html
|
||||
[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film
|
||||
[9]: https://www.linuxjournal.com/article/6011
|
||||
[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat
|
||||
[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html
|
||||
[12]: https://www.ubuntu.com/about
|
||||
[13]: https://aws.amazon.com/amazon-linux-2
|
||||
[14]: https://cloud.google.com
|
||||
[15]: https://www.linode.com/docs/getting-started
|
||||
[16]: https://www.automotivelinux.org
|
@ -0,0 +1,63 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How failure-driven development makes you successful)
|
||||
[#]: via: (https://opensource.com/article/20/3/failure-driven-development)
|
||||
[#]: author: (Jessica Cherry https://opensource.com/users/jrepka)
|
||||
|
||||
How failure-driven development makes you successful
|
||||
======
|
||||
I'm the picture in the dictionary next to the word "failure"—and that's
|
||||
why I'm good at my job.
|
||||
![failure sign at a party, celebrating failure][1]
|
||||
|
||||
My job title is senior software engineer, but that's not what my closest co-workers call me. They call me "Cherrybomb" because of all the things I blow up. My regularly scheduled failures have been tracked down to our quarterly earnings and outage times. Literally, I am the production disaster you read about that says, "what not to do ever, in any case, at any time."
|
||||
|
||||
I started my career at a helpdesk where I wrote loops that wrecked servers in high-end companies. I have taken production applications down for up to eight hours without warning, and I have destroyed endless numbers of clusters in an attempt to make things better—and a couple just because I mistyped something.
|
||||
|
||||
I am the reason we have disaster recovery (DR) clusters in [Kubernetes][2]. I am the chaos engineer that, without warning, teaches people how to act and troubleshoot quickly when we have an application that has never been tested for an outage recovery plan. I exist as the best example of failure possible, and it's actually the coolest thing ever.
|
||||
|
||||
### Jess and the disappearing K8s clusters
|
||||
|
||||
One of my official responsibilities involves our application architecture. For any sort of architectural change, I get to make and test the code and see what is possible. Recently, this has been an epic pain in my bosses' side, to put it gently.
|
||||
|
||||
We run most of our infrastructure on Kubernetes, which is known for its resiliency. Despite that reputation, I managed to make two clusters just, well, disappear. You may be wondering how I could do that; it's pretty easy: **terraform destroy**. We manage our infrastructure as code through [Terraform][3], and it won't take any knowledge of the software to know that **destroy** can do something bad. Before you panic, it was the dev clusters, so life went on.
|
||||
|
||||
In light of this, it's reasonable to ask why I am still employed—and why am I writing about this. Those are easy to answer: I'm still employed because my infrastructure code updates work better and faster than the code we started with. And am I writing about this because everyone fails regularly; it is so very, very normal. If you're not failing regularly, I don't think you're trying hard enough to learn.
|
||||
|
||||
### Break things and train people
|
||||
|
||||
You'd also think no one would let me train anyone ever; that it's the worst idea ever because (as my team jokes) you should never, ever do the things I do. However, my boss has me train anyone walking in the door pretty regularly. I even provide training for entire teams using our infrastructure or code to teach people how to build their own infrastructure.
|
||||
|
||||
Here's why: Failure is your first step to success. Failure's lesson isn't just "backups are a fantastic idea." No, from failure, you learn to recover faster, troubleshoot quicker, and get amazingly better at your job. When you get amazing at your job, you can train others about what not to do and help them understand how everything works. Because of your experience, they will be a step ahead of you were when you started—and they, too, will most likely fail in new, amazing, epic ways that everyone can learn from.
|
||||
|
||||
### You are only as good as your failures
|
||||
|
||||
Nobody is born with talent in software engineering and cloud infrastructure, just like no one is born walking. We all start by rolling and bumping into things. From there, we learn to crawl and then stand for a moment or two. When we start walking, we fall and scratch our knees, bump our elbows, and—at least in my brother's case—walk right into a table's sharp corner and get stitches in the center of your eyebrow.
|
||||
|
||||
Things take time to learn. Read everything you can get your hands on to help you along your way—but that is always the beginning. Perfection is some fantasy that's impossible to achieve; you must fail to reach success.
|
||||
|
||||
Every step of the way, my failures teach me how to do things better.
|
||||
|
||||
Ultimately, you are only as good as the sum of your failures, because that's what shows you how successful you are.
|
||||
|
||||
Open source is about more than the code, it’s about the culture. The open culture that many open...
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/failure-driven-development
|
||||
|
||||
作者:[Jessica Cherry][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/jrepka
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_failure_celebrate.png?itok=LbvDAEZF (failure sign at a party, celebrating failure)
|
||||
[2]: https://www.redhat.com/en/topics/containers/what-is-kubernetes
|
||||
[3]: https://github.com/hashicorp/terraform
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -1,97 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Why use GraphQL?)
|
||||
[#]: via: (https://opensource.com/article/19/6/why-use-graphql)
|
||||
[#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley)
|
||||
|
||||
Why use GraphQL?
|
||||
======
|
||||
Here's why GraphQL is gaining ground on standard REST API technology.
|
||||
![][1]
|
||||
|
||||
[GraphQL][2], as I wrote [previously][3], is a next-generation API technology that is transforming both how client applications communicate with backend systems and how backend systems are designed.
|
||||
|
||||
As a result of the support that began with the organization that founded it, Facebook, and continues with the backing of other technology giants such as Github, Twitter, and AirBnB, GraphQL's place as a linchpin technology for application systems seems secure; both now and long into the future.
|
||||
|
||||
### GraphQL's ascent
|
||||
|
||||
The rise in importance of mobile application performance and organizational agility has provided booster rockets for GraphQL's ascent to the top of modern enterprise architectures.
|
||||
|
||||
Given that [REST][4] is a wildly popular architectural style that already allows mechanisms for data interaction, what advantages does this new technology provide over [REST][4]? The ‘QL’ in GraphQL stands for query language, and that is a great place to start.
|
||||
|
||||
The ease at which different client applications within an organization can query only the data they need with GraphQL usurps alternative REST approaches and delivers real-world application performance boosts. With traditional [REST][4] API endpoints, client applications interrogate a server resource, and receive a response containing all the data that matches the request. If a successful response from a [REST][4] API endpoint returns 35 fields, the client application receives 35 fields
|
||||
|
||||
### Fetching problems
|
||||
|
||||
[REST][4] APIs traditionally provide no clean way for client applications to retrieve or update only the data they care about. This is often described as the “over-fetching” problem. With the prevalence of mobile applications in people’s day to day lives, the over-fetching problem has real world consequences. Every request a mobile application needs to make, every byte it has to send and receive, has an increasingly negative performance impact for end users. Users with slower data connections are particularly affected by suboptimal API design choices. Customers who experience poor performance using mobile applications are more likely to not purchase products and use services. Inefficient API designs cost companies money.
|
||||
|
||||
“Over-fetching” isn’t alone - it has a partner in crime - “under-fetching”. Endpoints that, by default, return only a portion of the data a client actually needs require clients to make additional calls to satisfy their data needs - which requires additional HTTP requests. Because of the over and under fetching problems and their impact on client application performance, an API technology that facilitates efficient fetching has a chance to catch fire in the marketplace - and GraphQL has boldly jumped in and filled that void.
|
||||
|
||||
### REST's response
|
||||
|
||||
[REST][4] API designers, not willing to go down without a fight, have attempted to counter the mobile application performance problem through a mix of:
|
||||
|
||||
* “include” and “exclude” query parameters, allowing client applications to specify which fields they want through a potentially long query format.
|
||||
* “Composite” services, which combine multiple endpoints in a way that allow client applications to be more efficient in the number of requests they make and the data they receive.
|
||||
|
||||
|
||||
|
||||
While these patterns are a valiant attempt by the [REST][4] API community to address challenges mobile clients face, they fall short in a few key regards, namely:
|
||||
|
||||
* Include and exclude query key/value pairs quickly get messy, in particular for deeper object graphs that require a nested dot notation syntax (or similar) to target data to include and exclude. Additionally, debugging issues with the query string in this model often requires manually breaking up a URL.
|
||||
* Server implementations for include and exclude queries are often custom, as there is no standard way for server-based applications to handle the use of include and exclude queries, just as there is no standard way for include and exclude queries to be defined.
|
||||
* The rise of composite services creates more tightly coupled back-end and front-end systems, requiring increasing coordination to deliver projects and turning once agile projects back to waterfall. This coordination and coupling has the painful side effect of slowing organizational agility. Additionally, composite services are by definition, not RESTful.
|
||||
|
||||
|
||||
|
||||
### GraphQL's genesis
|
||||
|
||||
For Facebook, GraphQL’s genesis was a response to pain felt and experiences learned from an HTML5-based version of their flagship mobile application back in 2011-2012. Understanding that improved performance was paramount, Facebook engineers realized that they needed a new API design to ensure peak performance. Likely taking the above [REST][4] limitations into consideration, and with needing to support different needs of a number of API clients, one can begin to understand the early seeds of what led co-creators Lee Byron and Dan Schaeffer, Facebook employees at the time, to create what has become known as GraphQL.
|
||||
|
||||
With what is often a single GraphQL endpoint, through the GraphQL query language, client applications are able to reduce, often significantly, the number of network calls they need to make, and ensure that they only are retrieving the data they need. In many ways, this harkens back to earlier models of web programming, where client application code would directly query back-end systems - some might remember writing SQL queries with JSTL on JSPs 10-15 years ago for example!
|
||||
|
||||
The biggest difference now is with GraphQL, we have a specification that is implemented across a variety of client and server languages and libraries. And with GraphQL being an API technology, we have decoupled the back-end and front-end application systems by introducing an intermediary GraphQL application layer that provides a mechanism to access organizational data in a manner that aligns with an organization’s business domain(s).
|
||||
|
||||
Beyond solving technical challenges experienced by software engineering teams, GraphQL has also been a boost to organizational agility, in particular in the enterprise. GraphQL-enabled organizational agility increases are commonly attributable to the following:
|
||||
|
||||
* Rather than creating new endpoints when 1 or more new fields are needed by clients, GraphQL API designers and developers are able to include those fields in existing graph implementations, exposing new capabilities in a fashion that requires less development effort and less change across application systems.
|
||||
* By encouraging API design teams to focus more on defining their object graph and be less focused on what client applications are delivering, the speed at which front-end and back-end software teams deliver solutions for customers has increasingly decoupled.
|
||||
|
||||
|
||||
|
||||
### Considerations before adoption
|
||||
|
||||
Despite GraphQL’s compelling benefits, GraphQL is not without its implementation challenges. A few examples include:
|
||||
|
||||
* Caching mechanisms around [REST][4] APIs are much more mature.
|
||||
* The patterns used to build APIs using [REST][4] are much more well established.
|
||||
* While engineers may be more attracted to newer technologies like GraphQL, the talent pool in the marketplace is much broader for building [REST][4]-based solutions vs. GraphQL.
|
||||
|
||||
|
||||
|
||||
### Conclusion
|
||||
|
||||
By providing both a boost to performance and organizational agility, GraphQL's adoption by companies has skyrocketed in the past few years. It does, however, have some maturing to do in comparison to the RESTful ecosystem of API design.
|
||||
|
||||
One of the great benefits of GraphQL is that it’s not designed as a wholesale replacement for alternative API solutions. Instead, GraphQL can be implemented to complement or enhance existing APIs. As a result, companies are encouraged to explore incrementally adopting GraphQL where it makes the most sense for them - where they find it has the greatest positive impact on application performance and organizational agility.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/why-use-graphql
|
||||
|
||||
作者:[Zach Lendon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D
|
||||
[2]: https://graphql.org/
|
||||
[3]: https://opensource.com/article/19/6/what-is-graphql
|
||||
[4]: https://en.wikipedia.org/wiki/Representational_state_transfer
|
@ -1,56 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (3 open source tools for sticking to a budget)
|
||||
[#]: via: (https://opensource.com/article/20/3/open-source-budget)
|
||||
[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
|
||||
|
||||
3 open source tools for sticking to a budget
|
||||
======
|
||||
Find the right solution for you in this roundup of open source budgeting
|
||||
tools. Plus, learn about an open source tax preparation software.
|
||||
![A dollar sign in a network][1]
|
||||
|
||||
In light of changing economical times in many countries around the world right now, you may find yourself wanting to revamp or improve your financial situation and your understanding of it. Or, perhaps one of your New Year's resolutions was to start budgeting? You are not alone.
|
||||
|
||||
The best way to stick to that resolution is to keep track of the money you are spending and making on a regular basis. The problem is, many popular personal finance apps out there are proprietary. Are you looking for an open source alternative to Quicken, Mint, or You Need a Budget? Whether you are new to open source software or new to budgeting in general, one of these tools will suit your needs and comfort level.
|
||||
|
||||
### LibreOffice Calc
|
||||
|
||||
I recommend using LibreOffice Calc to any open source newcomer who wants to start budgeting. If you've used proprietary spreadsheets like Google Sheets or Microsoft Excel, the LibreOffice Calc template will be very familiar. In this [budgeting tutorial][2], author Jess Weichler has done a lot of the work for you by including a handy, downloadable template. The template already has expense categories like utility bills, groceries, dining out, and more, but you have the freedom to customize it to your lifestyle. In a second article, she shows you how to [create your own templates][3].
|
||||
|
||||
### HomeBank
|
||||
|
||||
HomeBank is another great option for open source users of all levels. HomeBank is free, yet it has plenty of analysis and transaction features like its proprietary counterparts. In fact, you can export and import Quicken files to HomeBank, which makes transitioning to this open source app a breeze. Finally, you can use a tool to help you make wise decisions about your money without spending more money. Learn how to get started in Jessica Cherry's [tutorial][4].
|
||||
|
||||
### GnuCash
|
||||
|
||||
Like the other budgeting tools mentioned here, GnuCash can be used on Windows, macOS, and Linux. There is a slew of documentation available, but our very own Don Watkins guides you through the steps of setting up GnuCash on Linux in [this tutorial][5]. Not only is GnuCash a great option for taking control of your personal finances, but it also has features like invoicing to help you manage your small business.
|
||||
|
||||
### Bonus: OpenTaxSolver
|
||||
|
||||
The dreaded tax season can be a stressful time for many Americans. Many folks purchase TurboTax or use an accountant or tax service to do their taxes. Contrary to popular belief, open source tax preparation software exists! Author Jessica Cherry did the belaboring research and introduces our readers to OpenTaxSolver in [this article][6]. To use OpenTaxSolver successfully, you'll need keen attention to detail, but you won't have to worry about doing the complicated math.
|
||||
|
||||
Which open source budgeting app will you try? Do you have a favorite tool that I didn't mention in this list? Share your thoughts in the comments.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/open-source-budget
|
||||
|
||||
作者:[Lauren Pritchett][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/lauren-pritchett
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network)
|
||||
[2]: https://opensource.com/article/20/3/libreoffice-open-source-budget
|
||||
[3]: https://opensource.com/article/20/3/libreoffice-templates
|
||||
[4]: https://opensource.com/article/20/2/open-source-homebank
|
||||
[5]: https://opensource.com/article/20/2/gnucash
|
||||
[6]: https://opensource.com/article/20/2/open-source-taxes
|
161
sources/tech/20200331 5 ways to level up your Vim skills.md
Normal file
161
sources/tech/20200331 5 ways to level up your Vim skills.md
Normal file
@ -0,0 +1,161 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (5 ways to level up your Vim skills)
|
||||
[#]: via: (https://opensource.com/article/20/3/vim-skills)
|
||||
[#]: author: (Detlef Johnson https://opensource.com/users/deckart)
|
||||
|
||||
5 ways to level up your Vim skills
|
||||
======
|
||||
Kick your text editor up a notch with a few fun tricks.
|
||||
![Computer keyboard typing][1]
|
||||
|
||||
Vim is one of the most popular text editors out there, so it is definitely worth taking time to learn how to use it. If the only things you learn how to do with the ubiquitous [Vi(m)][2] command-line text editor are to open a file, enter and edit some text, save the edited files, and exit the program, you will be much better off for it.
|
||||
|
||||
Circumstances where you will find it extremely convenient to know Vim nearly always involve tasks running remote shell operations. If you regularly use secure shell:
|
||||
|
||||
|
||||
```
|
||||
`$ ssh user@hostname.provider.com`
|
||||
```
|
||||
|
||||
and work with virtual private servers (VPS) or local virtualization containers, for that matter, you could benefit greatly from strong Vim skills.
|
||||
|
||||
### Set Vim as your default text editor
|
||||
|
||||
Vim is readily available in nearly all modern Linux (or BSD) distributions at the terminal emulator shell-command prompt. Once you've defined Vim as your default editor in your user shell, then you can navigate built-in utilities like **$ man** using familiar Vim key bindings. I'll explain how to do that with both Bash and Z shell (zsh), which is now the default shell for macOS users (since Catalina).
|
||||
|
||||
#### Set Vim as default in Bash
|
||||
|
||||
Bash manages settings through a combination of dotfiles. It's most common to add your preferred editor to your **.bashrc** file in your home directory, but it can be added to **.bash_profile** as well. (Read the [GNU Bash documentation][3] to understand the difference).
|
||||
|
||||
Set Vim as your default editor by adding the following to **~/.bashrc**:
|
||||
|
||||
|
||||
```
|
||||
# set default editor to Vim
|
||||
export EDITOR=vim
|
||||
```
|
||||
|
||||
A line starting with a **#** is an optional comment, which is a good way to remind yourself what a command does.
|
||||
|
||||
#### Set Vim as default in Zsh
|
||||
|
||||
Zsh is an increasingly popular terminal emulator, especially since Apple's FreeBSD-based Darwin system recently switched from Bash to zsh.
|
||||
|
||||
The zsh dotfile parallels Bash's, so you can choose between **~/.zshrc** or **~/.zprofile**. See [the zsh documentation][4] for details on when to use which one.
|
||||
|
||||
Set it as default with:
|
||||
|
||||
|
||||
```
|
||||
# set default editor to Vim
|
||||
export EDITOR=vim
|
||||
```
|
||||
|
||||
### Optimize your Vim configuration
|
||||
|
||||
Vim, much like a terminal emulator shell, uses dotfiles to set personal preferences. If you spotted the pattern, you might have guessed it's **~/.vimrc**.
|
||||
|
||||
The first setting you may want to change is switching legacy Vi compatibility mode to Off. Since Vim is a superset of Vi, everything in Vi is available and vastly improved in Vim, and you get many advanced features. The latest version (8.2) allows you to open a terminal as a subprocess shell running in a split window.
|
||||
|
||||
As an aside, setting legacy compatibility off might not seem like it's doing anything ([and in fact, it might not be][5]). Vim automatically switches the mode to Off by implication when it encounters a **.vimrc** file. It can still be important at times to explicitly turn it off. The shorthand "nocp" is synonymous with "nocompatible," which also works. There are many "[TIMTOWTDI][6]" conveniences for switching preferences as you work.
|
||||
|
||||
Lines that begin with **"** are comments in **.vimrc** syntax (just like **#** in **.bashrc** files). They can help you remember things like why you chose a cryptic setting name.
|
||||
|
||||
To turn off Vi compatibility, add the following to your **~/.vimrc** file:
|
||||
|
||||
|
||||
```
|
||||
" ensure that legacy compatibility mode is off
|
||||
" documentation: <http://vimdoc.sourceforge.net/htmldoc/options.html\#'compatible>'
|
||||
set nocp
|
||||
```
|
||||
|
||||
### Understand modes
|
||||
|
||||
The notion of Vim's "modes" is very important to learn about, especially the difference between the very distinct **Normal** and **Insert** modes. Confusion about modes is what trips up most new users. Modes aren't unique to Vim, nor were they introduced by Vi. Command mode is so old that it predates the invention of [copy and paste][7] functionality in the 1970s.
|
||||
|
||||
#### Important modes
|
||||
|
||||
Vim depends on different modes to define keyboard-stroke behavior. The important modes to know are:
|
||||
|
||||
* **Normal mode**: Default mode used primarily for navigation and opening files
|
||||
* **Insert mode** (includes Replace): Where Vim allows for text input to an open file
|
||||
* **Visual mode**: Where Vim acts similar to mouse-based input, such as copying, editing, replacing, and more
|
||||
* **Command mode** (including Line, Ex command, and Last-line mode): A powerful way to do more in Vim
|
||||
|
||||
|
||||
|
||||
Each mode has a great deal to explore. Use [Vimtutor][8] (**$ vimtutor**) to interactively learn about movement, modes, and running Ex commands in "Last Line" mode. Some indispensable productivity operators include:
|
||||
|
||||
**:E** | Opens explorer for locating files and directories
|
||||
---|---
|
||||
**.** | Repeats the last edit action
|
||||
**;** | Repeats the last motion or movement forward
|
||||
**,** | Repeats the last motion or movement backward
|
||||
**/** | Searches document forward
|
||||
**?** | Searches document backward
|
||||
***** | Finds next occurrence of the word under the cursor
|
||||
**#** | Finds the previous occurrence of the word under the cursor
|
||||
**~** | Toggles case
|
||||
**%** | Toggles between opening and closing **()**, **[]**, and **{}**; highly useful for coding
|
||||
**z=** | Makes spelling suggestions
|
||||
|
||||
### Play Vim like a piano
|
||||
|
||||
While it's important to commit Vim's operator "language" to memory, the challenge to gaining mastery is to learn to think like a musician and combine operators and movements into "key chords in harmony" so that you can play Vim like a piano. That's where the power of text manipulation with Vim rivals that of the other notable command-line editor, Emacs. (While one of these editors will wear down your **Esc** key, using the other will wear down your **Ctrl** key.)
|
||||
|
||||
When describing key chords, it's conventional in Vim to designate the **Ctrl** key using the capital letter C, followed by a hyphen (**C-**). It's not universal, but I will follow that convention from here onward and clarify when there is any potential for confusion.
|
||||
|
||||
If you type long lines in Vim, you'll want to set it to wrap your text. To start personalizing Vim for the way you work, think about that setting: How would you like Vim to handle text wrapping by default when it starts? On or off? I like it turned off and leave it out of the runtime commands file. When I want text to wrap, I simply set it in command-line mode with **:set wrap**.
|
||||
|
||||
There's nothing wrong with having Vim set to wrap text by default. It's simply a matter of preference—which can change over time. The same goes for handling paste, code language indent syntax, and the **Tab** key (tabs or spaces? and how many spaces then? Dive into these options [here][9]). All these options for default behavior are entirely configurable and changeable in real time as you work with command-line mode operations.
|
||||
|
||||
You will find many suggestions for setting Vim defaults in community forums, on Vim wikis, and in articles (like this one). Setting preferences for your personal computing environment should be fairly familiar to you, and Vim is no different. I highly recommend that you start by making very small changes to your settings, and make additional changes slowly so that you can easily revert settings. This way, you might avoid the use of plugins for years—or entirely.
|
||||
|
||||
### Splits, tabs, and terminals in Vim 8.2
|
||||
|
||||
There are two ways to split your working files into different views: they can appear side-by-side, or you can switch between them with full (window) screens using application tabs. These changes to your application window are initiated from command-line mode, which requires a colon (**:**) to call up the prompt.
|
||||
|
||||
Each window split can host a file for editing, and you can arrange tabs to switch between additional files as much as you like. There is limited screen space for splits, so tabs are handy when you want to split more screens. How you decide to work is purely a matter of preference. To split a window horizontally, use **:sp**, and use **:vs** for vertical splits.
|
||||
|
||||
As of [Vim 8.2][10], you can open a terminal shell sub-process in a vertical split with **:vert term** to run operations on the command line right alongside your code. You need to type **exit** to close your terminal process, just like you would end a shell session, but you close splits and tabs the same way you would close any ordinary Vim window, with **:q**.
|
||||
|
||||
To initialize a tab, use a special edit command: **:tabedit**, which automatically switches you to the new open tab. If you give the command a file name as an argument, that file will open for editing. If you neglect to give it a file name as an argument, the command-line mode edit **:e filename.txt** works just like it would in any ordinary Vim window. Navigate tabs with the next (**:tabn**) and previous (**:tabp**) commands.
|
||||
|
||||
To use splits, you need to know how to navigate among them using the key-chord combination **C-w** plus a movement key in the direction you want to move, such as left (**h**), down (**j**), up (**k**), or right (**l**). When you want to learn more key chords specific to splits and tabs, read the **:help split** and **:help tabpage** for the Vim manual entries.
|
||||
|
||||
### Get help
|
||||
|
||||
While the Vim manual is referenced in Vimtutor, opening Vim help with **:help** will let you spend time with the editor on your own and get more productive without wholly relying on articles like this one. Experience is key to Vim mastery. The experience contributes to your overall computing intuition since so much of what has gone into Vim is drawn from the Unix universe.
|
||||
|
||||
Have fun exploring the beauty of Vim, and share any questions you have in the comments.
|
||||
|
||||
Want to become a master of text editing in the terminal, and beyond? These tips for getting started...
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/vim-skills
|
||||
|
||||
作者:[Detlef Johnson][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/deckart
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing)
|
||||
[2]: https://www.vim.org/
|
||||
[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
|
||||
[4]: http://zsh.sourceforge.net/Intro/intro_3.html
|
||||
[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default
|
||||
[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it
|
||||
[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions
|
||||
[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor
|
||||
[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse
|
||||
[10]: https://www.vim.org/vim-8.2-released.php
|
@ -0,0 +1,102 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Find Which Graphics Card do You Have in Linux?)
|
||||
[#]: via: (https://itsfoss.com/check-graphics-card-linux/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
How to Find Which Graphics Card do You Have in Linux?
|
||||
======
|
||||
|
||||
Be it [Nvidia][1] or [Radeon][2] or Intel, they all may have some issues with Linux. When you are on your way to troubleshoot the graphics problem, the first thing you want to know is which graphics card do you have in your system.
|
||||
|
||||
Linux has several commands to check hardware information. You can use them to check what graphics card (also refer to as video card) do you have. Let me show you a couple of commands to get GPU information in Linux.
|
||||
|
||||
### Check graphics card details in Linux command line
|
||||
|
||||
![][3]
|
||||
|
||||
#### Use lspci command to find graphics card
|
||||
|
||||
The lspci command displays the information about devices connected through [PCI][4] (peripheral Component Interconnect) buses. Basically, this command gives you the detail about all the peripheral devices to your system from keyboard and mouse to sound, network and graphics cards.
|
||||
|
||||
By default, you’ll have a huge list of such peripheral devices. This is why you need to filter the output for graphics card with grep command in this manner:
|
||||
|
||||
```
|
||||
lspci | grep VGA
|
||||
```
|
||||
|
||||
This should show a one line information about your graphics card:
|
||||
|
||||
```
|
||||
[email protected]:~$ lspci | grep VGA
|
||||
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
|
||||
```
|
||||
|
||||
As you can see, my system has Intel HD 620 video card.
|
||||
|
||||
#### Get detailed graphics card information with lshw command in Linux
|
||||
|
||||
The lspci command is good enough to see what graphics card you have but it doesn’t tell you a lot. You can use lshw command to get more information on it.
|
||||
|
||||
This command requires you to have root access. You need to specify that you are looking for video card (graphics card) information in this fashion:
|
||||
|
||||
```
|
||||
sudo lshw -C video
|
||||
```
|
||||
|
||||
And as you can see in the output below, this command gives more information on the graphics card such as clock rate, width, driver etc.
|
||||
|
||||
```
|
||||
[email protected]:~$ sudo lshw -C video
|
||||
[sudo] password for abhishek:
|
||||
*-display
|
||||
description: VGA compatible controller
|
||||
product: HD Graphics 620
|
||||
vendor: Intel Corporation
|
||||
physical id: 2
|
||||
bus info: [email protected]:00:02.0
|
||||
version: 02
|
||||
width: 64 bits
|
||||
clock: 33MHz
|
||||
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
|
||||
configuration: driver=i915 latency=0
|
||||
resources: irq:139 memory:db000000-dbffffff memory:90000000-9fffffff ioport:f000(size=64) memory:c0000-dffff
|
||||
```
|
||||
|
||||
#### Bonus Tip: Check graphics card details graphically
|
||||
|
||||
It’s not that you must use the command line to find graphics card details in Linux. Most Linux distributions (or should I say desktop environments) provide essential details in the settings application.
|
||||
|
||||
For example, if you are using [GNOME desktop environment][5], you can check the details by going to About section of Settings. Here’s what it looks like in [Ubuntu 20.04][6]:
|
||||
|
||||
![Graphics card information check graphically][7]
|
||||
|
||||
I hope you find this quick tip helpful. You can also use the same commands to [find your network adapter][8] and [CPU information in Linux][9].
|
||||
|
||||
If you have questions or suggestions, don’t hesitate to write a comment.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/check-graphics-card-linux/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.nvidia.com/en-us/
|
||||
[2]: https://www.amd.com/en/graphics/radeon-rx-graphics
|
||||
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/check-gpu-info-linux.jpg?ssl=1
|
||||
[4]: https://en.wikipedia.org/wiki/Conventional_PCI
|
||||
[5]: https://www.gnome.org/
|
||||
[6]: https://itsfoss.com/ubuntu-20-04-release-features/
|
||||
[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-gpu-check.jpg?ssl=1
|
||||
[8]: https://itsfoss.com/find-network-adapter-ubuntu-linux/
|
||||
[9]: https://linuxhandbook.com/check-cpu-info-linux/
|
91
translated/tech/20190612 Why use GraphQL.md
Normal file
91
translated/tech/20190612 Why use GraphQL.md
Normal file
@ -0,0 +1,91 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Why use GraphQL?)
|
||||
[#]: via: (https://opensource.com/article/19/6/why-use-graphql)
|
||||
[#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley)
|
||||
|
||||
为什么使用 GraphQL?
|
||||
======
|
||||
|
||||
> 这就是 GraphQL 在标准 REST API 技术上获得发展的原因。
|
||||
|
||||
[][1]
|
||||
|
||||
正如我[以前][3]所写,[GraphQL][2] 是下一代 API 技术,它正在改变客户端应用程序与后端系统的通信方式以及后端系统的设计方式。
|
||||
|
||||
由于一开始就从创建它的组织 Facebook 获得了支持,并得到了其他技术巨头(如 Github、Twitter 和 AirBnB)的支持,因此 GraphQL 作为应用程序系统的关键技术的地位似乎是可靠的 —— 无论现在还是将来。
|
||||
|
||||
### GraphQL 在崛起
|
||||
|
||||
移动应用程序性能和组织敏捷性重要性的提高为 GraphQL 登上现代企业体系结构的顶端提供了助推器。
|
||||
|
||||
鉴于 [REST][4] 是一种非常流行的体系结构风格,早已提供了数据交互机制,与 [REST][4] 相比,GraphQL 这项新技术具有哪些优势?GraphQL 中的 “QL” 代表查询语言,而这是一个很好的起点。
|
||||
|
||||
借助 GraphQL,组织内的不同客户端应用程序可以轻松地仅查询所需数据,从而取代了其他 REST 方法,并提高了实际应用程序的性能。 使用传统的 [REST][4] API 端点,客户端应用程序将详询服务器资源,并接收包含了与请求匹配的所有数据的响应。如果来自 [REST][4] API 端点的成功响应返回 35 个字段,那么客户端应用程序就会接收 35 个字段。
|
||||
|
||||
### 提取的问题
|
||||
|
||||
传统上,[REST][4] API 无法为客户端应用程序提供简便的方法来仅检索或更新它们关心的数据。这通常被描述为“<ruby>过度获取<rt>over-fetching</rt></ruby>”的问题。随着移动应用程序在人们的日常生活中的普遍使用,过度获取问题会给现实世界带来不良后果。移动应用程序需要发出的每个请求都必须发送和接收的每个字节,对最终用户的性能造成的负面影响越来越大。数据连接速度较慢的用户尤其会受到不太好的 API 设计方案的影响。在性能体验不佳时,使用移动应用程序的客户更有可能不购买产品或不使用服务。低效的 API 设计只会浪费公司的钱。
|
||||
|
||||
并非只有“过度获取”是问题,“欠缺获取”同样也是问题。默认情况下,仅返回客户端实际需要的部分数据的端点或许会要求客户端进行其他调用以满足其数据需求,这就需要其他的 HTTP 请求。由于过度和欠缺的获取问题及其对客户端应用程序性能的影响,促进有效获取的 API 技术才有机会在市场上引起轰动 —— GraphQL 大胆地介入并填补了这一空白。
|
||||
|
||||
### REST 的应对
|
||||
|
||||
[REST][4] API 设计师不战而退,他们尝试通过以下几种方式来应对移动应用程序性能问题:
|
||||
|
||||
* “include” 和 “exclude” 查询参数,允许客户端应用程序通过可能较长的查询格式来指定所需的字段。
|
||||
* “复合”服务,组合了多个端点,以使客户端应用程序在其发出的请求数量和接收到的数据方面更高效。
|
||||
|
||||
尽管这些模式是 [REST][4] API 社区为解决移动客户端所面临的挑战而做出的英勇尝试,但它们在以下几个关键方面仍存在不足:
|
||||
|
||||
* 包含和排除查询的键/值对很快变得混乱,特别是对于需要嵌套“点表示法”语法(或类似方法)以包含和排除更深的目标数据的对象图而言。此外,在此模型中调试查询字符串的问题通常需要手动分解 URL。
|
||||
* 包含和排除查询的服务器实现通常是自定义的,因为基于服务器的应用程序没有标准的方式来处理包含和排除查询的使用,就像没有定义包含和排除查询的标准方式一样。
|
||||
* 复合服务的兴起创建了更加紧密耦合的后端和前端系统,需要加强协调以交付项目,并且一旦将敏捷项目转回瀑布式。这种协调和耦合顺便还能稍减组织敏捷性的痛苦。此外,根据定义,组合服务不是 RESTful。
|
||||
|
||||
### GraphQL 的起源
|
||||
|
||||
对于 Facebook 来说,从其 2011-2012 年基于 HTML5 版本的旗舰移动应用程序中感受到的痛点和体验,才造就了 GraphQL。Facebook 工程师意识到提高性能至关重要,因此意识到他们需要一种新的 API 设计来确保最佳性能。可能考虑到以上 [REST][4] 的局限性,并且需要支持许多 API 客户端的不同需求,因此人们开始去了解其共同创建者 Lee Byron 和 Dan Schaeffer(那时尚是 Facebook 员工)撒播下的早期种子,创建了后来被称之为 GraphQL 的技术。
|
||||
|
||||
通过 GraphQL 查询语言,客户端(通常是单个 GraphQL 端点)应用程序通常可以显著减少所需的网络调用数量,并确保仅检索所需的数据。在许多方面,这可以追溯到早期的 Web 编程模型,在该模型中,客户端应用程序代码将直接查询后端系统,有些人可能还记得 10 到 15 年前在 JSP 上用 JSTL 编写 SQL 查询吧!
|
||||
|
||||
现在最大的区别是使用 GraphQL,我们有了一个跨多种客户端和服务器语言和库实现的规范。借助 GraphQL 这样一种 API 技术,我们通过引入 GraphQL 应用程序中间层来分离后端和前端应用程序系统,该层提供了一种以与组织的业务领域相一致的方式来访问组织数据的机制。
|
||||
|
||||
除了解决软件工程团队遇到的技术挑战之外,GraphQL 还促进了组织敏捷性的提高,特别是在企业中。启用 GraphQL 的组织敏捷性通常归因于以下因素:
|
||||
|
||||
* GraphQL API 设计人员和开发人员无需在客户端需要一个或多个新字段时创建新的端点,而是能够将这些字段包含在现有的图形实现中,从而以较少的开发工作量和跨应用程序系统的较少更改的方式公开新功能。
|
||||
* 通过鼓励 API 设计团队将更多的精力放在定义对象图上,而不是在专注于客户端应用程序交付上,前端和后端软件团队为客户交付解决方案的速度日益解耦。
|
||||
|
||||
### 采纳之前的注意事项
|
||||
|
||||
尽管 GraphQL 具有引人注目的优势,但 GraphQL 并非没有实施挑战。一些例子包括:
|
||||
|
||||
* 为 [REST][4] API 建立的缓存机制更加成熟。
|
||||
* 用于使用 [REST][4] 来构建 API 的模式已经非常完善。
|
||||
* 尽管工程师可能更喜欢 GraphQL 等新技术,但与 GraphQL 相比,市场上的人才库更多是从事于构建基于 [REST][4] 的解决方案。
|
||||
|
||||
### 结论
|
||||
|
||||
通过同时提高性能和组织敏捷性,GraphQL 在公司中的采纳在过去几年中猛增。但是,与 RESTful API 设计生态系统相比,它确实还需要更成熟一些。
|
||||
|
||||
GraphQL 的一大优点是,它并不是作为替代 API 解决方案的批发替代品而设计的。相反,可以实现 GraphQL 来补充或增强现有的 API。因此,鼓励公司探索逐步采用 GraphQL 的方法,这对他们来说最有意义,他们发现它对应用程序性能和组织敏捷性具有最大的积极影响。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/why-use-graphql
|
||||
|
||||
作者:[Zach Lendon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D
|
||||
[2]: https://graphql.org/
|
||||
[3]: https://opensource.com/article/19/6/what-is-graphql
|
||||
[4]: https://en.wikipedia.org/wiki/Representational_state_transfer
|
@ -0,0 +1,55 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (3 open source tools for sticking to a budget)
|
||||
[#]: via: (https://opensource.com/article/20/3/open-source-budget)
|
||||
[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
|
||||
|
||||
3 个控制预算的开源工具
|
||||
======
|
||||
在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源税收准备软件。
|
||||
![A dollar sign in a network][1]
|
||||
|
||||
鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想修改或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你不是一个人。
|
||||
|
||||
坚持该决心的最佳方法是定期跟踪你的支出和收入。问题是,许多流行的个人理财应用都是专有的。你是否正在寻找 Quicken、Mint 或 You Need a Budget 的开源替代方案?无论你是开源软件新手,还是预算新手,这些工具之一都将满足你的需求和舒适度。
|
||||
|
||||
### LibreOffice Calc
|
||||
|
||||
我建议希望做预算的任何开源新手使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。
|
||||
|
||||
### HomeBank
|
||||
|
||||
对于所有的开源用户来说,HomeBank 都是另一个不错的选择。HomeBank 是免费的,但它拥有许多它同类专有软件的分析和交易功能。实际上,你可以将 Quicken 文件导入到 HomeBank 中,这使得转换到它变得轻而易举。最后,你可以使用一种工具来帮助你明智地做出有关资金的决定,而无需花费更多的钱。在 Jessica Cherry 的[教程][4]中学习如何入门。
|
||||
|
||||
### GnuCash
|
||||
|
||||
就像这里提到的其他预算工具一样,GnuCash 可以在 Windows、macOS 和 Linux 上使用。它提供了大量文档,但 Don Watkins 会在[此教程][5]中指导你在 Linux 上设置 GnuCash。GnuCash 不仅是控制个人财务的绝佳选择,而且还有开发票等功能来帮助你管理小型企业。
|
||||
|
||||
### 额外一个:OpenTaxSolver
|
||||
|
||||
对许多美国人来说,可怕的税收季可能是一个压力大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,存在开源的税务准备软件!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。
|
||||
|
||||
你会尝试使用哪个开源预算应用?你是否有我在此列表中未提及的最喜欢的工具?请在评论区分享你的观点。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/3/open-source-budget
|
||||
|
||||
作者:[Lauren Pritchett][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/lauren-pritchett
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network)
|
||||
[2]: https://opensource.com/article/20/3/libreoffice-open-source-budget
|
||||
[3]: https://opensource.com/article/20/3/libreoffice-templates
|
||||
[4]: https://opensource.com/article/20/2/open-source-homebank
|
||||
[5]: https://opensource.com/article/20/2/gnucash
|
||||
[6]: https://opensource.com/article/20/2/open-source-taxes
|
Loading…
Reference in New Issue
Block a user