mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
8c19e402d7
@ -0,0 +1,89 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (10 moments that shaped Linux history)
|
||||
[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history)
|
||||
[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss)
|
||||
|
||||
10 moments that shaped Linux history
|
||||
======
|
||||
Linux has come a long way since 1991. These events mark its evolution.
|
||||
![Penguin with green background][1]
|
||||
|
||||
In August 2018, Opensource.com posted a poll with seven options asking readers: _[What was the most important moment in the history of Linux?][2]_ I thought I would expand on the list and present 10 moments that I think have played an important part in shaping the history of Linux.
|
||||
|
||||
### 1\. Linus releases Linux
|
||||
|
||||
Linus Torvalds initially released Linux to the world in 1991 as a hobby. It didn't remain a hobby for long!
|
||||
|
||||
### 2\. Linux distributions
|
||||
|
||||
In 1993, several Linux distributions were founded, notably [Debian][3], [Red Hat][4], and [Slackware][5]. These were important because they demonstrated Linux's gains in market acceptance and development that enabled it to survive the tumultuous OS wars, browser wars, and protocol wars of the 1990s. In contrast, many established, commercial, and proprietary products did not make it past the turn of the millennium!
|
||||
|
||||
### 3\. IBM's big investment in Linux
|
||||
|
||||
In 2000, IBM announced it would invest US$1 billion dollars in Linux. In his CNN Money [article about the investment][6], Richard Richtmyer wrote: "The announcement underscores Big Blue's commitment to Linux and marks significant progress in moving the alternative operating system into the mainstream commercial market."
|
||||
|
||||
### 4\. Hollywood adopts Linux
|
||||
|
||||
In 2002, it seemed the entire Hollywood movie industry adopted Linux. [Disney][7], [Dreamworks][8], and [Industrial Light & Magic][9] all began making movies with Linux that year.
|
||||
|
||||
### 5\. Linux for national security
|
||||
|
||||
In 2003, another big moment came with the US government's acceptance of Linux. Red Hat Linux was [awarded][10] the Department of Defense Common Operating Environment (COE) certification. This is significant because the government—intelligence and military agencies in particular—have very strict requirements for computing systems to prevent attacks and support national security. This opened the door for other agencies to use Linux. Later that year, the [National Weather Service announced][11] it would replace outdated systems with new computers running Linux.
|
||||
|
||||
### 6\. The systems I managed
|
||||
|
||||
This "moment" is really a collection of my personal experiences. As my career progressed in the 2000s, I discovered several types of systems and devices that I managed were all running Linux. Some of the places I found Linux were VMware ESX, F5 Big-IP, Check Point UTM Edge, Cisco ASA, and PIX. This made me realize that Linux was truly viable and here to stay.
|
||||
|
||||
### 7\. Ubuntu
|
||||
|
||||
In 2004, Canonical was founded by Mark Shuttleworth to provide an easy-to-use Linux desktop—[Ubuntu Linux][12]—based on the Debian distribution. I think Ubuntu Linux helped to expand the desktop Linux install base. It put Linux in front of many more people, from casual home users to professional software developers.
|
||||
|
||||
### 8\. Google Linux
|
||||
|
||||
Google released two operating systems based on the Linux kernel: the Android mobile operating system in mid-2008 and Chrome OS, running on a Chromebook, in 2011. Since then, millions of Android mobile phones and Chromebooks have been sold.
|
||||
|
||||
### 9\. The cloud is Linux
|
||||
|
||||
In the past 10 years or so, cloud computing has gone from a grandiose vision of computing on the internet to a reinvention of how we use computers personally and professionally. The big players in the cloud space are built on Linux, including [Amazon Web Services][13], [Google Cloud Services][14], and [Linode][15]. Even in cases where we aren't certain, such as Microsoft Azure, running Linux workloads is well supported.
|
||||
|
||||
### 10\. My car runs Linux
|
||||
|
||||
And so will yours! Many automakers began introducing Linux a few years ago. This led to the formation of the collaborative open source project called [Automotive Grade Linux][16]. Major car makers, such as Toyota and Subaru, have joined together to develop Linux-based automotive entertainment, navigation, and engine-management systems.
|
||||
|
||||
#### Share your favorite
|
||||
|
||||
This is my subjective list pulled from archives of Linux articles and events throughout my career, so there may be other more notable moments that I am overlooking. Share in the comments. Also, the [Linux history poll][2] is still open for voting if you're interested.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/4/top-moments-linux-history
|
||||
|
||||
作者:[Alan Formy-Duval][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/alanfdoss
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background)
|
||||
[2]: https://opensource.com/article/18/8/linux-history
|
||||
[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html
|
||||
[4]: https://brand.redhat.com/foundations/history
|
||||
[5]: https://opensource.com/article/18/7/stackware-turns-25
|
||||
[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux
|
||||
[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html
|
||||
[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film
|
||||
[9]: https://www.linuxjournal.com/article/6011
|
||||
[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat
|
||||
[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html
|
||||
[12]: https://www.ubuntu.com/about
|
||||
[13]: https://aws.amazon.com/amazon-linux-2
|
||||
[14]: https://cloud.google.com
|
||||
[15]: https://www.linode.com/docs/getting-started
|
||||
[16]: https://www.automotivelinux.org
|
129
sources/tech/20190605 What is GraphQL.md
Normal file
129
sources/tech/20190605 What is GraphQL.md
Normal file
@ -0,0 +1,129 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (What is GraphQL?)
|
||||
[#]: via: (https://opensource.com/article/19/6/what-is-graphql)
|
||||
[#]: author: (Zach Lendon https://opensource.com/users/zachlendon)
|
||||
|
||||
What is GraphQL?
|
||||
======
|
||||
GraphQL is a query language, an execution engine, and a specification,
|
||||
and it's leading developers to rethink how they build client and API
|
||||
applications.
|
||||
![Analytics: Charts and Graphs][1]
|
||||
|
||||
GraphQL is one of the biggest buzzwords in software tech today. But _what is it_ _actually_? Is it a query language like [SQL][2]? An execution engine like the [JVM][3]? A specification like [XML][4]?
|
||||
|
||||
If you answered all of the above, you are correct! [GraphQL][5] is a query language syntax, a programming language-agnostic execution engine, and a continuously evolving specification.
|
||||
|
||||
Let's dive into how GraphQL can be all of these things and get a glimpse of why people are excited about it.
|
||||
|
||||
### Query language
|
||||
|
||||
GraphQL as a query language seems reasonable—"QL" seemed important enough to be in the name, after all. But what are we querying? It probably helps to look at a sample query request and the corresponding response.
|
||||
|
||||
The following user query:
|
||||
|
||||
|
||||
```
|
||||
{
|
||||
user(id: 4) {
|
||||
name
|
||||
email
|
||||
phoneNumber
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
might return the following JSON response:
|
||||
|
||||
|
||||
```
|
||||
{
|
||||
"user": {
|
||||
"name": "Zach Lendon"
|
||||
“email”: “[zach@hydrate.io][6]”
|
||||
“phoneNumber”: “867-5309”
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Imagine a client application querying for user details, taking the result, and using it to populate a profile screen. As a query language, one of GraphQL's core benefits is that a client application can request _only the data it needs_ and expect it to be returned in a consistent manner.
|
||||
|
||||
_What_ is returning the GraphQL response, though? This is where the execution engine, typically in the form of a GraphQL server, comes into play.
|
||||
|
||||
### Execution engine
|
||||
|
||||
![GraphQL execution engine][7]
|
||||
|
||||
The GraphQL execution engine is what is responsible for processing a GraphQL query and returning a JSON response. All GraphQL servers are made up of two core components that define the structure and behavior of the execution engine: a schema and resolvers, respectively.
|
||||
|
||||
A GraphQL schema is a custom typed language that exposes which queries are both permitted (valid) and handled by a GraphQL server implementation. The schema for our user example query above might look like:
|
||||
|
||||
|
||||
```
|
||||
type User {
|
||||
name: String
|
||||
email: String
|
||||
phoneNumber: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
user: User
|
||||
}
|
||||
```
|
||||
|
||||
This schema defines a user query that returns a user. Clients can request any of the fields on a user via the user query, and the GraphQL server will return only those fields in its response. By using the strongly typed schema, a GraphQL server can validate incoming queries to ensure they are valid based on the defined schema.
|
||||
|
||||
Once a query is determined to be valid, it is processed by a GraphQL server by resolvers. A resolver function backs each field of each GraphQL type. An example resolver for our user query might look like:
|
||||
|
||||
|
||||
```
|
||||
Query: {
|
||||
user(obj, args, context, info) {
|
||||
return context.db.loadUserById(args.id).then(
|
||||
userData => new User(userData)
|
||||
)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
While the above example is in JavaScript, GraphQL servers can be written in any number of languages. This is due to the fact that GraphQL is _also_ a specification!
|
||||
|
||||
### Specification
|
||||
|
||||
The GraphQL specification defines the capabilities and characteristics that GraphQL implementations must follow. As an open specification available under the Open Web Foundation Final Specification Agreement ([OWFa 1.0][8]), the technology community has the opportunity to both review what a GraphQL implementation must do to be spec-compliant and help craft the future of the language.
|
||||
|
||||
While the specification is very specific about GraphQL's syntax, what is a valid query, and how a schema works, it provides no direction on how to store data or what implementation programming languages GraphQL servers should use. This is incredibly powerful and relatively unique in the software space—it allows GraphQL servers to be created in any number of programming languages, and clients will know exactly how they function since they are spec-compliant. And GraphQL server implementations have been created across many programming languages, not just ones folks might expect like JavaScript, Java, and C#, but languages like Go, Elixir, and Haskell. The language a server is implemented in will not be a barrier to adoption—not only are there implementations in many languages, but they are all open source. If there isn't an implementation in your language of choice, you are free to create your own.
|
||||
|
||||
### Conclusion
|
||||
|
||||
GraphQL is an exciting, relatively new entrant into the open source API space. It couples a query language and execution engine with an open source specification that defines how GraphQL implementations should look and function.
|
||||
|
||||
GraphQL has already started to change how companies think about building both client and API applications. With GraphQL as part of a technology stack, front-end developers are freed to query for the data they want, and back-end developers can decouple client application needs from their back-end system architectures. Often companies journey into GraphQL by first building a GraphQL API "layer" that sits on top of their existing back-end services. This allows the client applications to begin to gain the performance and operational efficiencies they seek, while allowing the back-end teams an opportunity to determine what, if any, changes they might want to make "under the hood," behind their GraphQL layer. Often, those changes will be geared towards optimizations that will help ensure that applications using GraphQL can operate as performantly as possible. Because of the abstraction GraphQL provides, systems teams can make those changes while continuing to honor the GraphQL "contract" at their GraphQL API level.
|
||||
|
||||
Because GraphQL is relatively new, developers are still finding new and exciting ways to leverage it to build better software solutions. How will GraphQL change how you build applications, and does it live up to the hype? There's only one way to find out—go out there and build something with GraphQL!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/what-is-graphql
|
||||
|
||||
作者:[Zach Lendon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/zachlendon
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/analytics-graphs-charts.png?itok=sersoqbV (Analytics: Charts and Graphs)
|
||||
[2]: https://opensource.com/article/18/2/getting-started-sql
|
||||
[3]: https://www.cubrid.org/blog/understanding-jvm-internals/
|
||||
[4]: https://www.w3.org/TR/xml/
|
||||
[5]: http://graphql.org/
|
||||
[6]: mailto:zach@hydrate.io
|
||||
[7]: https://opensource.com/sites/default/files/pictures/graphql-execution-engine.png (GraphQL execution engine)
|
||||
[8]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0---patent-only
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
Loading…
Reference in New Issue
Block a user