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
26eef96c52
91
published/20190612 Why use GraphQL.md
Normal file
91
published/20190612 Why use GraphQL.md
Normal file
@ -0,0 +1,91 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12075-1.html)
|
||||
[#]: subject: (Why use GraphQL?)
|
||||
[#]: via: (https://opensource.com/article/19/6/why-use-graphql)
|
||||
[#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley)
|
||||
|
||||
为什么使用 GraphQL?
|
||||
======
|
||||
|
||||
> 以下是 GraphQL 在标准 REST API 技术上获得发展的原因。
|
||||
|
||||
[](https://img.linux.net.cn/data/attachment/album/202004/05/105820rdnjrppprjdjddfd.jpg)
|
||||
|
||||
正如我[以前][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 设计师不甘心不战而退,他们试图通过以下几种方式来应对移动应用程序性能问题:
|
||||
|
||||
* “包含”和“排除”查询参数,允许客户端应用程序通过可能较长的查询格式来指定所需的字段。
|
||||
* “复合”服务,将多个端点组合在一起,以使客户端应用程序在其发出的请求数量和接收到的数据方面更高效。
|
||||
|
||||
尽管这些模式是 [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 在过去几年中被企业采纳的数量激增。但是,与 API 设计的 RESTful 生态系统相比,它确实还需要更成熟一些。
|
||||
|
||||
GraphQL 的一大优点是,它并不是作为替代 API 解决方案的批发替代品而设计的。相反,GraphQL 可以用来补充或增强现有的 API。因此,鼓励企业探索在 GraphQL 对其最有意义的地方逐步采用 GraphQL —— 在他们发现它对应用程序性能和组织敏捷性具有最大的积极影响的地方。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/6/why-use-graphql
|
||||
|
||||
作者:[Zach Lendon][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/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://linux.cn/article-12070-1.html
|
||||
[4]: https://en.wikipedia.org/wiki/Representational_state_transfer
|
@ -1,24 +1,26 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12072-1.html)
|
||||
[#]: subject: (3 open source tools for sticking to a budget)
|
||||
[#]: via: (https://opensource.com/article/20/3/open-source-budget)
|
||||
[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
|
||||
|
||||
3 个控制预算的开源工具
|
||||
======
|
||||
在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源税收准备软件。
|
||||
![A dollar sign in a network][1]
|
||||
|
||||
鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想修改或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你不是一个人。
|
||||
> 在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源的备税务软件。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202004/05/092735ni323vgji9sbigq9.jpg)
|
||||
|
||||
鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想改造或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你并不孤单。
|
||||
|
||||
坚持该决心的最佳方法是定期跟踪你的支出和收入。问题是,许多流行的个人理财应用都是专有的。你是否正在寻找 Quicken、Mint 或 You Need a Budget 的开源替代方案?无论你是开源软件新手,还是预算新手,这些工具之一都将满足你的需求和舒适度。
|
||||
|
||||
### LibreOffice Calc
|
||||
|
||||
我建议希望做预算的任何开源新手使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。
|
||||
我向希望做预算的任何开源新手推荐使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。
|
||||
|
||||
### HomeBank
|
||||
|
||||
@ -28,9 +30,9 @@
|
||||
|
||||
就像这里提到的其他预算工具一样,GnuCash 可以在 Windows、macOS 和 Linux 上使用。它提供了大量文档,但 Don Watkins 会在[此教程][5]中指导你在 Linux 上设置 GnuCash。GnuCash 不仅是控制个人财务的绝佳选择,而且还有开发票等功能来帮助你管理小型企业。
|
||||
|
||||
### 额外一个:OpenTaxSolver
|
||||
### 赠品:OpenTaxSolver
|
||||
|
||||
对许多美国人来说,可怕的税收季可能是一个压力大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,存在开源的税务准备软件!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。
|
||||
对许多美国人来说,可怕的税收季可能是一个压力很大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,开源的备税务软件是存在的!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。
|
||||
|
||||
你会尝试使用哪个开源预算应用?你是否有我在此列表中未提及的最喜欢的工具?请在评论区分享你的观点。
|
||||
|
||||
@ -41,7 +43,7 @@ via: https://opensource.com/article/20/3/open-source-budget
|
||||
作者:[Lauren Pritchett][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,107 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12074-1.html)
|
||||
[#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions)
|
||||
[#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/)
|
||||
[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/itsfoss/)
|
||||
|
||||
如何在基于 Ubuntu 的发行版上安装微软 TrueType 字体
|
||||
======
|
||||
|
||||
如果你在 Linux 上用 LibreOffice 打开一些微软文档,你会发现字体看起来有一点不同。你也将注意到有些常用字体找不到,如 [Times New Roman][1]、Arial 等等。
|
||||
|
||||
不用担心。我将向你展示如何在 Ubuntu 上和其它基于 Ubuntu 的 Linux 发行版上安装这些字体。但是在此之前,让我告诉你为什么这些字体没有被默认安装。
|
||||
|
||||
### 为什么微软字体不被默认安装在 Linux 中?
|
||||
|
||||
![][2]
|
||||
|
||||
Times New Roman、Arial 等字体都是微软的,并且这些字体不是开源的。很多 Linux 发行版默认不提供专有软件,以避免授权问题。
|
||||
|
||||
这就是为什么在默认情况下 Ubuntu 和其它 Linux 发行版使用开源字体 “Liberation” 字体来替代微软字体的原因。[Red Hat][4] 创建 [Liberation 字体][3] 来代替 Arial、Arial Narrow、 Times New Roman 和 Courier New,因为这些字体的宽度一样。当你打开一个使用 Times New Roman 字体书写的文档时,会使用对应的 Liberation 字体来保持文档不被破坏。
|
||||
|
||||
不过,Liberation 字体与微软的字体并不是完全相同的,在一些情况下,你可能需要使用 Arial 或 Times New Roman。一个非常常见的情况是,在学校、大学和其他公共或私人机构中,微软的字体是唯一的选择。他们要求你使用这些字体之一来提交文档。
|
||||
|
||||
好在,你可以在 Ubuntu 和其它发行版上很容易地安装微软字体。以这种方式,你将增强 LibreOffice 的兼容性,并可以自由选择开源办公软件。
|
||||
|
||||
### 在基于 Ubuntu 的 Linux 发行版上安装微软字体
|
||||
|
||||
你可以自行下载字体,并[在 Ubuntu 中安装新的字体][5]。但是由于微软字体非常受欢迎(并且是免费提供的),所以 Ubuntu 提供了一种简单的方法来安装它们。
|
||||
|
||||
要知道尽管微软已经免费发布了其核心字体,在其它操作系统中使用该字体依然是受到限制的。在 Ubuntu 中安装微软字体前,你必须阅读并接受 EULA (最终用户许可协议) 。
|
||||
|
||||
这些字体 [可在 multiverse 存储库中获得,首先要确保启用它][6]:
|
||||
|
||||
```
|
||||
sudo add-apt-repository multiverse
|
||||
```
|
||||
|
||||
在此之后,你可以更新你的 Ubuntu 存储库缓存,并像这样安装微软字体:
|
||||
|
||||
```
|
||||
sudo apt update && sudo apt install ttf-mscorefonts-installer
|
||||
```
|
||||
|
||||
当微软的最终用户协议出现时,按 `tab` 键来选择 “OK” ,并按回车键。
|
||||
|
||||
![按 tab 键来高亮选择][7]
|
||||
|
||||
单击 “Yes” 来接受微软的协议:
|
||||
|
||||
![使用 tab 键来作出选择,并按回车键][8]
|
||||
|
||||
当安装完成后,你应该使用下面的命令来更新字体缓存:
|
||||
|
||||
```
|
||||
sudo fc-cache -f -v
|
||||
```
|
||||
|
||||
![][9]
|
||||
|
||||
如果你现在打开 LibreOffice ,你将看到微软 [TrueType 字体][10] 。
|
||||
|
||||
![][11]
|
||||
|
||||
如果意外地拒绝了许可协议,你可以使用这个命令来重新安装安装程序:
|
||||
|
||||
```
|
||||
sudo apt install –reinstall ttf-mscorefonts-installer
|
||||
```
|
||||
|
||||
微软的 TrueType 字体也可以通过 [Ubuntu Restricted Extras package][12] 获得,其包含用来播放 MP3 等文件的其它专有的多媒体编解码器。
|
||||
|
||||
> 不要轻视专有字体。
|
||||
>
|
||||
> 你可能认为字体有什么大不了的呢?毕竟,它只是一款字体,而不是软件的一个关键部分,对吧?但是你知道,这些年来 [Netflix 为其使用的专有字体支付了数百万美元][13]吗?最后,他们创建了自己的自定义字体,这为他们节省了一大笔钱。
|
||||
|
||||
希望这个快速教程有用。更多的生产力教程即将上线,请在下面留下你的评论,了解更多信息请订阅我们的社交媒体!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-microsoft-fonts-ubuntu/
|
||||
|
||||
作者:[Dimitrios Savvopoulos][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/itsfoss/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://en.wikipedia.org/wiki/Times_New_Roman
|
||||
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-fonts-ubuntu.png?ssl=1
|
||||
[3]: https://en.wikipedia.org/wiki/Liberation_fonts
|
||||
[4]: https://en.wikipedia.org/wiki/Red_Hat
|
||||
[5]: https://itsfoss.com/install-fonts-ubuntu/
|
||||
[6]: https://itsfoss.com/ubuntu-repositories/
|
||||
[7]: https://i1.wp.com/i.imgur.com/JoEJp5w.png?ssl=1
|
||||
[8]: https://i0.wp.com/i.imgur.com/M8zTc7f.png?ssl=1
|
||||
[9]: https://i0.wp.com/i.imgur.com/Cshle6S.png?ssl=1
|
||||
[10]: https://en.wikipedia.org/wiki/TrueType
|
||||
[11]: https://i1.wp.com/i.imgur.com/9oIu3oj.png?ssl=1
|
||||
[12]: https://itsfoss.com/install-media-codecs-ubuntu/
|
||||
[13]: https://thehustle.co/nextflix-sans-custom-font/
|
||||
[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1
|
@ -1,91 +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)
|
||||
|
||||
为什么使用 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
|
@ -1,115 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions)
|
||||
[#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/)
|
||||
[#]: author: (Community https://itsfoss.com/author/itsfoss/)
|
||||
|
||||
如何在基于 Ubuntu 的发行版上安装微软 TrueType 字体
|
||||
======
|
||||
|
||||
如果你在 Linux 上打开一些微软文档,你将注意到字体会看起来有一点不同。你也将注意到你不能找到一些常见的字体,像 [Times New Roman][1], Arial 等等。
|
||||
|
||||
不用担心。我将向你展示如何在 Ubuntu 上和其它基于 Ubuntu 的 Linux 发行版上安装这些字体。但是在此之前,让我告诉你为什么这些字体没有被默认安装。
|
||||
|
||||
### 为什么微软字体不被默认安装在 Linux 中?
|
||||
|
||||
![][2]
|
||||
|
||||
Times New Roman, Arial 和其它此类字体归微软所有,并且这些字体不是开源的。很多 Linux 发行版默认不提供专有软件来避免许可证问题。
|
||||
|
||||
这就是为什么在默认情况下 Ubuntu 和其它 Linux 发行版使用开源字体 “Liberation fonts” 来替代微软字体的原因。[Red Hat][4] 创建 [Liberation Fonts][3]来代替 Arial, Arial Narrow, Times New Roman 和 Courier New ,如同这些字体的宽度一样。当你打开一个使用 Times New Roman 字体的文档时, 对应的 Liberation Font 将被用来保持文档文字间间隔等距连续。
|
||||
|
||||
不过,Liberation fonts 与微软的字体并不是完全相同的,在一些情况下,你可能需要使用 Arial 或 Times New Roman 。一个非常常见的情况是,在学校,大学和其他公共和私人组织中,微软的字体是唯一的选择。他们要求你使用微软字体中的其中一种字体来提交文档。
|
||||
|
||||
你可以在 Ubuntu 和其它发行版上很容易地安装微软字体的一件很好的事。以这种方式,你将增强 LibreOffice 的兼容性,并将有选择开源办公软件的自由。
|
||||
|
||||
### 在基于 Ubuntu 的 Linux 发行版上安装微软字体
|
||||
|
||||
你可以自己下载字体,并 [在 Ubuntu 中安装新的字体][5] 。但是自从微软字体变得非常流行(并且免费提供),Ubuntu 提供了一种简单的方法来安装它们。
|
||||
|
||||
要知道尽管微软已经免费发布了其核心字体,在其它操作系统中使用字体依然受到限制。在 Ubuntu 中安装微软字体前,你必须阅读并接受 EULA (最终用户许可协议) 。
|
||||
|
||||
这些字体 [在 multiverse 存储库中可获得,首先要确保启用它][6] :
|
||||
|
||||
```
|
||||
sudo add-apt-repository multiverse
|
||||
```
|
||||
|
||||
在此之后,你可以更新你的 Ubuntu 存储库缓存,并像这样安装微软字体:
|
||||
|
||||
```
|
||||
sudo apt update && sudo apt install ttf-mscorefonts-installer
|
||||
```
|
||||
|
||||
当微软的最终用户协议出现时,按 tab 键来选择 **OK** ,并按回车键。
|
||||
|
||||
![按 tab 键来高亮选择][7]
|
||||
|
||||
单击 **Yes** 来接受微软的协议:
|
||||
|
||||
![使用 tab 键来作出选择,并按回车键][8]
|
||||
|
||||
当安装完成后,你应该使用下面的命令来更新字体缓存:
|
||||
|
||||
```
|
||||
sudo fc-cache -f -v
|
||||
```
|
||||
|
||||
![][9]
|
||||
|
||||
如果你现在打开 LibreOffice ,你将看到微软 [TrueType 字体][10] 。
|
||||
|
||||
![][11]
|
||||
|
||||
如果意外地拒绝许可协议,你可以使用这个命令来重新安装安装程序:
|
||||
|
||||
```
|
||||
sudo apt install –reinstall ttf-mscorefonts-installer
|
||||
```
|
||||
|
||||
微软的 TrueType 字体也可以通过 [Ubuntu Restricted Extras package][12] 获得,其包含用来播放 MP3 等文件的其它专有的多媒体编解码器。
|
||||
|
||||
不要轻视专有字体。
|
||||
|
||||
你可能认为字体有什么大不了的呢?毕竟,它只是一款字体,而不是软件的一个关键部分,对吧?
|
||||
但是你知道,这些年来 [Netflix 为其使用的专有字体支付了数百万美元][13] 吗?最后,他们创建了自己的自定义字体,这为他们节省了一大笔钱。
|
||||
|
||||
我希望你发现这个快速教程是有用的。更多的创造性的教程已下线,请在下面留下你的评论,了解更多信息请订阅我们的社交媒体!
|
||||
|
||||
![][14]
|
||||
|
||||
### Dimitrios Savvopoulos
|
||||
|
||||
Dimitrios 是一名机械工程师理学硕士,但是在内心深处是一名 Linux 狂热爱好者。他习惯于使用 Solus 操作系统,但好奇心驱使者他不断测试其它的发行版。
|
||||
挑战是他魅力的一部分,他的爱好是自5公里到马拉松的长距离比赛。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/install-microsoft-fonts-ubuntu/
|
||||
|
||||
作者:[Community][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/itsfoss/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://en.wikipedia.org/wiki/Times_New_Roman
|
||||
[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-fonts-ubuntu.png?ssl=1
|
||||
[3]: https://en.wikipedia.org/wiki/Liberation_fonts
|
||||
[4]: https://en.wikipedia.org/wiki/Red_Hat
|
||||
[5]: https://itsfoss.com/install-fonts-ubuntu/
|
||||
[6]: https://itsfoss.com/ubuntu-repositories/
|
||||
[7]: https://i1.wp.com/i.imgur.com/JoEJp5w.png?ssl=1
|
||||
[8]: https://i0.wp.com/i.imgur.com/M8zTc7f.png?ssl=1
|
||||
[9]: https://i0.wp.com/i.imgur.com/Cshle6S.png?ssl=1
|
||||
[10]: https://en.wikipedia.org/wiki/TrueType
|
||||
[11]: https://i1.wp.com/i.imgur.com/9oIu3oj.png?ssl=1
|
||||
[12]: https://itsfoss.com/install-media-codecs-ubuntu/
|
||||
[13]: https://thehustle.co/nextflix-sans-custom-font/
|
||||
[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1
|
Loading…
Reference in New Issue
Block a user