Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2019-08-12 07:42:46 +08:00
commit 477e767160
5 changed files with 61 additions and 72 deletions

View File

@ -1,15 +1,15 @@
当你在本地开发如何测试 Webhooks
本地开发如何测试 Webhook
===================
![](https://cdn-images-1.medium.com/max/1000/1*0HNQmPw5yXva6powvVwn5Q.jpeg)
![](https://img.linux.net.cn/data/attachment/album/201908/11/090540wipp5c65iinyyf63.jpg)
[Webhooks][10] 可用于外部系统通知你的系统发生了某个事件或更新。可能最知名的 [Webhooks][10] 是支付服务提供商PSP通知你的系统支付状态有了更新。
[Webhook][10] 可用于外部系统通知你的系统发生了某个事件或更新。可能最知名的 [Webhook][10] 类型是支付服务提供商PSP通知你的系统支付状态有了更新。
它们通常以你在监听预定义 URL 的形式出现,例如 `http://example.com/webhooks/payment-update` 同时,另一个系统向该 URL 发送具有特定有效载荷的 POST 请求(例如支付 ID。一旦请求进入你就会获取支付 ID可以通过它们的 API 用这个支付 ID 向 PSP 询问最新状态,然后更新你的数据库。
它们通常以监听预定义 URL 的形式出现,例如 `http://example.com/webhooks/payment-update`。同时,另一个系统向该 URL 发送具有特定有效载荷的 POST 请求(例如支付 ID。一旦请求进入你就会获得支付 ID可以通过 PSP 的 API 用这个支付 ID 向它们询问最新状态,然后更新你的数据库。
其他例子可以在这个对 Webhook 的出色的解释中找到:[https://sendgrid.com/blog/whats-webhook/][12]。
只要系统可通过互联网公开访问(这可能是你的生产环境或可公开访问的临时环境),测试这些 webhook 就相当顺利。而当你在笔记本电脑上或虚拟机内部进行本地开发例如Vagrant 虚拟机)时,它变得困难了。在这些情况下,发送 webhook 的一方无法公开访问本地 URL。此外监视发送的请求也很困难这可能使开发和调试变得困难。
只要系统可通过互联网公开访问(这可能是你的生产环境或可公开访问的临时环境),测试这些 webhook 就相当顺利。而当你在笔记本电脑上或虚拟机内部例如Vagrant 虚拟机)进行本地开发时,它变得困难了。在这些情况下,发送 webhook 的一方无法公开访问你的本地 URL。此外监视发送的请求也很困难这可能使开发和调试变得困难。
因此,这个例子将解决:
@ -19,20 +19,19 @@
前置需求:
* *可选*如果你使用虚拟机VM进行开发请确保它正在运行并确保在 VM 中完成后续步骤。
* 对于本教程,我们假设你定义了一个 vhost`webhook.example.vagrant`。我在本教程中使用了 Vagrant VM但你可以自由选择 vhost 的名称
* 按照[安装说明][3]安装 `ngrok` 在 VM 中,我发现它的 Node 版本也很有用:[https://www.npmjs.com/package/ngrok][4],但你可以随意使用其他方法。
* 对于本教程,我们假设你定义了一个 vhost`webhook.example.vagrant`。我在本教程中使用了 Vagrant VM但你可以自由选择 vhost。
* 按照这个[安装说明][3]安装 `ngrok`。在 VM 中,我发现它的 Node 版本也很有用:[https://www.npmjs.com/package/ngrok][4],但你可以随意使用其他方法。
我假设你没有在你的环境中运行 SSL但如果你这样做了,请将在下面的示例中的端口 80 替换为端口 433`http://` 替换为 `https://`
我假设你没有在你的环境中运行 SSL但如果你使用了,请将在下面的示例中的端口 80 替换为端口 433`http://` 替换为 `https://`
### 使 webhook 可测试
我们假设以下示例代码。我将使用 PHP但将其视作伪代码因为我留下了一些关键部分例如 API 密钥、输入验证等)没有编写。
我们假设以下示例代码。我将使用 PHP将其视作伪代码,因为我留下了一些关键部分(例如 API 密钥、输入验证等)没有编写。
第一个文件:`payment.php`。此文件创建一个 `$payment` 对象,将其注册到 PSP。然后它获取客户需要访问的 URL以便支付并将用户重定向到客户那里。
请注意,此示例中的 `webhook.example.vagrant` 是我们为开发设置定义的本地虚拟主机。它无法从外部世界进入。
```
<?php
/*
@ -73,7 +72,7 @@ elseif ($status === 'cancelled') {
}
```
我们的 webhook URL 无法通过互联网访问(请记住它:`webhook.example.vagrant`。因此PSP 永远不可能调用文件 `webhook.php`。 你的系统将永远不会知道付款状态。这最终导致订单永远不会被运送给客户。
我们的 webhook URL 无法通过互联网访问(请记住它:`webhook.example.vagrant`。因此PSP 永远不可能调用文件 `webhook.php`,你的系统将永远不会知道付款状态,这最终导致订单永远不会被运送给客户。
幸运的是,`ngrok` 可以解决这个问题。 [ngrok][13] 将自己描述为:
@ -93,9 +92,9 @@ ngrok http -host-header=rewrite webhook.example.vagrant:80
*ngrok 输出*
我们刚刚做了什么?基本上,我们指示 `ngrok` 在端口 80 建立了一个到 `http://webhook.example.vagrant` 的隧道。同一个 URL 也可以通过 `http://39741ffc.ngrok.io``https://39741ffc.ngrok.io` 访问它们能被任何知道此 URL 的人通过互联网公开访问。
我们刚刚做了什么?基本上,我们指示 `ngrok` 在端口 80 建立了一个到 `http://webhook.example.vagrant` 的隧道。同一个 URL 也可以通过 `http://39741ffc.ngrok.io``https://39741ffc.ngrok.io` 访问它们能被任何知道此 URL 的人通过互联网公开访问。
请注意,你可以同时获得 HTTP 和 HTTPS 两个服务。该文档提供了如何仅将此限制为 HTTPS 的示例:[https://ngrok.com/docs#bind-tls][16]。
请注意,你可以同时获得 HTTP 和 HTTPS 两个服务。这个文档提供了如何将此限制为 HTTPS 的示例:[https://ngrok.com/docs#bind-tls][16]。
那么,我们如何让我们的 webhook 现在工作起来?将 `payment.php` 更新为以下代码:
@ -121,7 +120,7 @@ header("Location: " . $payment->getPaymentUrl());
### 如何监控对 webhook 的调用?
你在上面看到的屏幕截图概述了对隧道主机的调用这些数据相当有限。幸运的是,`ngrok` 提供了一个非常好的仪表板,允许你检查所有调用:
你在上面看到的屏幕截图概述了对隧道主机的调用这些数据相当有限。幸运的是,`ngrok` 提供了一个非常好的仪表板,允许你检查所有调用:
![](https://cdn-images-1.medium.com/max/1000/1*qZw9GRTnG1sMgEUmsJPz3g.png)
@ -155,7 +154,7 @@ ngrok http -config=/path/to/config/ngrok.conf -host-header=rewrite webhook.examp
现在将浏览器指向 `http://webhook.example.vagrant:4040` 以访问仪表板。另外,对 `https://e65642b5.ngrok.io/webhook.php` 做个调用。这可能会导致你的浏览器出错,但仪表板应显示正有一个请求。
#### 最后的评论
### 最后的备注
上面的例子是伪代码。原因是每个外部系统都以不同的方式使用 webhook。我试图基于一个虚构的 PSP 实现给出一个例子,因为可能很多开发人员在某个时刻肯定会处理付款。
@ -173,7 +172,7 @@ via: https://medium.freecodecamp.org/testing-webhooks-while-using-vagrant-for-de
作者:[Stefan Doorn][a]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,40 +1,38 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11211-1.html)
[#]: subject: (GameMode A Tool To Improve Gaming Performance On Linux)
[#]: via: (https://www.ostechnix.com/gamemode-a-tool-to-improve-gaming-performance-on-linux/)
[#]: author: (sk https://www.ostechnix.com/author/sk/)
GameMode - 提高 Linux 游戏性能的工具
GameMode提高 Linux 游戏性能的工具
======
![Gamemmode improve gaming performance on Linux][1]
去问一些 Linux 用户为什么他们仍然坚持 Windows 双启动,他们的答案可能是 - “游戏!”。这是真的!幸运的是,开源游戏平台如 [**Lutris**][2] 和专有游戏平台 **Steam** 已经为 Linux 平台带来了许多游戏,并且近几年来显著改善了 Linux 的游戏体验。今天,我偶然发现了另一款名为 **GameMode** 的 Linux 游戏相关开源工具,它能让用户提高 Linux 上的游戏性能。
去问一些 Linux 用户为什么他们仍然坚持 Windows 双启动,他们的答案可能是 - “游戏!”。这是真的!幸运的是,开源游戏平台如 [Lutris][2] 和专有游戏平台 Steam 已经为 Linux 平台带来了许多游戏,并且近几年来显著改善了 Linux 的游戏体验。今天,我偶然发现了另一款名为 GameMode 的 Linux 游戏相关开源工具,它能让用户提高 Linux 上的游戏性能。
GameMode 基本上是一组守护进程/lib,它可以按需优化 Linux 系统的游戏性能。我以为 GameMode 是一个杀死在后台运行的对资源消耗大进程的工具。但它并不是。它实际上只是让 CPU **自动运行在高性能模式下**并帮助 Linux 用户从游戏中获得最佳性能。
GameMode 基本上是一组守护进程/,它可以按需优化 Linux 系统的游戏性能。我以为 GameMode 是一个杀死在后台运行的对资源消耗大进程的工具。但它并不是。它实际上只是让 CPU **在用户玩游戏时自动运行在高性能模式下**并帮助 Linux 用户从游戏中获得最佳性能。
在玩游戏时GameMode 通过请求一组优化临时应用于宿主机来显著提升游戏性能。目前,它支持下面这些优化:
在玩游戏时GameMode 通过对宿主机请求临时应用一组优化来显著提升游戏性能。目前,它支持下面这些优化:
* CPU 调控器,
  * I/O 优先级,
  * 进程 nice 值
  * 内核调度器SCHED_ISO
  * 进制屏幕保护,
  * GPU 高性能模式NVIDIA 和 AMDGPU 超频NVIDIA
  * 自定义脚本。
* CPU 调控器,
* I/O 优先级,
* 进程 nice 值
* 内核调度器SCHED_ISO
* 禁止屏幕保护,
* GPU 高性能模式NVIDIA 和 AMDGPU 超频NVIDIA
* 自定义脚本。
GameMode 是由世界领先的游戏发行商 [**Feral Interactive**][3] 开发的免费开源系统工具。
GameMode 是由世界领先的游戏发行商 [Feral Interactive][3] 开发的自由开源的系统工具。
### 安装 GameMode
GameMode 适用于许多 Linux 发行版。
在 Arch Linux 及其变体上,你可以使用任何 AUR 助手程序,如 [**Yay**][5] 从 [**AUR**][4] 安装它。
在 Arch Linux 及其变体上,你可以使用任何 AUR 助手程序,如 [Yay][5] 从 [AUR][4] 安装它。
```
$ yay -S gamemode
@ -50,7 +48,7 @@ $ sudo apt install gamemode
### 激活 GameMode 支持以改善 Linux 上的游戏性能
以下是 GameMode 集成支持的游戏列表,因此我们无需进行任何其他配置即可激活 GameMode 支持。
以下是集成支持了 GameMode 的游戏列表,因此我们无需进行任何其他配置即可激活 GameMode 支持。
* 古墓丽影:崛起
* 全面战争传奇:不列颠尼亚王座
@ -58,8 +56,6 @@ $ sudo apt install gamemode
* 尘埃 4
* 全面战争:三国
只需运行这些游戏,就会自动启用 GameMode 支持。
这里还有将 GameMode 与 GNOME shell 集成的的[扩展][6]。它会在顶部指示 GameMode 何时处于活跃。
@ -72,24 +68,16 @@ gamemoderun ./game
我不喜欢游戏,并且我已经很多年没玩游戏了。所以,我无法分享一些实际的基准测试。
但是,我在 Youtube 上找到了一个简短的视频教程,以便为 Lutris 游戏启用 GameMode 支持。对于那些想要第一次尝试 GameMode 的人来说,这是个不错的开始。
<https://youtu.be/4gyRyYfyGJw>
但是,我在 Youtube 上找到了一个简短的[视频教程](https://youtu.be/4gyRyYfyGJw),以便为 Lutris 游戏启用 GameMode 支持。对于那些想要第一次尝试 GameMode 的人来说,这是个不错的开始。
通过浏览视频中的评论,我可以说 GameMode 确实提高了 Linux 上的游戏性能。
对于更多细节,请参阅 [**GameMode 的 GitHub 仓库**][7]。
对于更多细节,请参阅 [GameMode 的 GitHub 仓库][7]。
* * *
相关阅读:
**相关阅读:**
* [**GameHub 将所有游戏集合在一起的仓库**][8]
* [**如何在 Linux 中运行 MS-DOS 游戏和程序**][9]
* * *
* [GameHub 将所有游戏集合在一起的仓库][8]
* [如何在 Linux 中运行 MS-DOS 游戏和程序][9]
你用过 GameMode 吗?它真的有改善 Linux 上的游戏性能吗?请在下面的评论栏分享你的想法。
@ -100,7 +88,7 @@ via: https://www.ostechnix.com/gamemode-a-tool-to-improve-gaming-performance-on-
作者:[sk][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,8 +1,8 @@
[#]: collector: "lujun9972"
[#]: translator: "FSSlc"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-11212-1.html"
[#]: subject: "How To Verify ISO Images In Linux"
[#]: via: "https://www.ostechnix.com/how-to-verify-iso-images-in-linux/"
[#]: author: "sk https://www.ostechnix.com/author/sk/"
@ -12,32 +12,34 @@
![如何在 Linux 中校验 ISO 镜像][1]
刚才为了你最为喜爱的 Linux 发行版,你从它的官方网站或第三方网站下载了它的 ISO 镜像,接下来做啥呢?是[**创建可启动介质**][2]并开始安装系统吗?并不是,请稍等一下。在开始使用它之前,强烈建议你检查一下你刚下载到本地系统中的 ISO 文件是否是下载镜像站点中 ISO 文件的一个精确拷贝。因为在前几年 [Linux Mint 的网站被攻破了][3],并且攻击者创建了一个包含后门的经过修改的 Linux Mint ISO 文件。 所以验证下载的 Linux ISO 镜像的可靠性和完整性是非常重要的一件事儿。假如你不知道如何在 Linux 中验证 ISO 镜像,本次的简要介绍将给予你帮助,请接着往下看!
你从喜爱的 Linux 发行版的官方网站或第三方网站下载了它的 ISO 镜像之后,接下来要做什么呢?是[创建可启动介质][2]并开始安装系统吗?并不是,请稍等一下。在开始使用它之前,强烈建议你检查一下你刚下载到本地系统中的 ISO 文件是否是下载镜像站点中 ISO 文件的一个精确拷贝。因为在前几年 [Linux Mint 的网站被攻破了][3],并且攻击者创建了一个包含后门的经过修改的 Linux Mint ISO 文件。 所以验证下载的 Linux ISO 镜像的可靠性和完整性是非常重要的一件事儿。假如你不知道如何在 Linux 中验证 ISO 镜像,本次的简要介绍将给予你帮助,请接着往下看!
### 在 Linux 中验证 ISO 镜像
我们可以使用 ISO 镜像的校验和来验证 ISO 镜像。校验和是一系列字母和数字的组合,用来检验下载文件的数据是否有错以及验证其可靠性和完整性。当前存在不同类型的校验和,例如 SHA-0、SHA-1、SHA-2224、256、384、512和 MD5。MD5 校验和最为常用,但对于现代的 Linux 发行版SHA-256 最常被使用。
我们可以使用 ISO 镜像的校验和来验证 ISO 镜像。校验和是一系列字母和数字的组合,用来检验下载文件的数据是否有错以及验证其可靠性和完整性。当前存在不同类型的校验和,例如 SHA-0、SHA-1、SHA-2224、256、384、512和 MD5。MD5 校验和最为常用,但对于现代的 Linux 发行版SHA-256 最常被使用。
我们将使用名为 `gpg``sha256` 的两个工具来验证 ISO 镜像的可靠性和完整性。
##### 下载校验和及签名
#### 下载校验和及签名
针对本篇指南的目的,我将使用 Ubuntu 18.04 LTS 服务器 ISO 镜像来做验证,但对于其他的 Linux 发行版应该也是适用的。
在靠近 Ubuntu 下载页的最上端,你将看到一些额外的文件(校验和及签名),正如下面展示的图片那样:
![Ubuntu 18.04 的校验和及签名][4]
其中名为 **SHA256SUMS** 的文件包含了这里所有可获取镜像的校验和,而 **SHA256SUMS.gpg** 文件则是这个文件的 GnuPG 签名。在下面的步骤中,我们将使用这个签名文件来 **验证** 校验和文件。
其中名为 `SHA256SUMS` 的文件包含了这里所有可获取镜像的校验和,而 `SHA256SUMS.gpg` 文件则是这个文件的 GnuPG 签名。在下面的步骤中,我们将使用这个签名文件来 **验证** 校验和文件。
下载 Ubuntu 的 ISO 镜像文件以及刚才提到的那两个文件,然后将它们放到同一目录下,例如这里的 **ISO** 目录:
下载 Ubuntu 的 ISO 镜像文件以及刚才提到的那两个文件,然后将它们放到同一目录下,例如这里的 `ISO` 目录:
```
$ ls ISO/
SHA256SUMS SHA256SUMS.gpg ubuntu-18.04.2-live-server-amd64.iso
```
如你所见,我已经下载了 Ubuntu 18.04.2 LTS 服务器版本的镜像,以及对应的校验和文件和签名文件。
##### 下载有效的签名秘钥
#### 下载有效的签名秘钥
现在,使用下面的命令来下载正确的签名秘钥:
@ -57,7 +59,7 @@ gpg: Total number processed: 2
gpg: imported: 2
```
##### 验证 SHA-256 校验和
#### 验证 SHA-256 校验和
接下来我们将使用签名来验证校验和文件:
@ -84,7 +86,7 @@ Primary key fingerprint: 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
假如你在输出中看到 `Good signature` 字样,那么该校验和文件便是由 Ubuntu 开发者制作的,并且由秘钥文件的所属者签名认证。
##### 检验下载的 ISO 文件
#### 检验下载的 ISO 文件
下面让我们继续检查下载的 ISO 文件是否和所给的校验和相匹配。为了达到该目的,只需要运行:
@ -93,12 +95,11 @@ $ sha256sum -c SHA256SUMS 2>&1 | grep OK
ubuntu-18.04.2-live-server-amd64.iso: OK
```
假如校验和是匹配的,你讲看到 **OK** 字样,这意味着下载的文件是合法的,没有被改变或篡改过。
假如校验和是匹配的,你将看到 `OK` 字样,这意味着下载的文件是合法的,没有被改变或篡改过。
假如你没有获得类似的输出,或者看到不同的输出,则该 ISO 文件可能已经被修改过或者没有被正确地下载。你必须从一个更好的下载源重新下载该文件。
某些 Linux 发行版已经在它的下载页面中包含了校验和。例如 **Pop!_os** 的开发者在他们的下载页面中提供了所有 ISO 镜像的 SHA-256 校验和,这样你就可以快速地验证这些 ISO 镜像。
某些 Linux 发行版已经在它的下载页面中包含了校验和。例如 Pop!_os 的开发者在他们的下载页面中提供了所有 ISO 镜像的 SHA-256 校验和,这样你就可以快速地验证这些 ISO 镜像。
![Pop os 位于其下载页面中的 SHA256 校验和][5]
@ -115,13 +116,14 @@ $ sha256sum Soft_backup/ISOs/pop-os_18.04_amd64_intel_54.iso
```
![Pop os 的 SHA256 校验和的值][6]
在上面的输出中,以 **680elaa…** 开头的部分为 SHA-256 校验和的值。请将该值与位于下载页面中提供的 SHA-256 校验和的值进行比较,如果这两个值相同,那说明这个下载的 ISO 文件是合法的,与它的原有状态相比没有经过更改或者篡改。万事俱备,你可以进行下一步了!
在上面的输出中,以 `680elaa` 开头的部分为 SHA-256 校验和的值。请将该值与位于下载页面中提供的 SHA-256 校验和的值进行比较,如果这两个值相同,那说明这个下载的 ISO 文件是合法的,与它的原有状态相比没有经过更改或者篡改。万事俱备,你可以进行下一步了!
上面的内容便是我们如何在 Linux 中验证一个 ISO 文件的可靠性和完整性的方法。无论你是从官方站点或者第三方站点下载 ISO 文件,我们总是推荐你在使用它们之前做一次简单的快速验证。希望本篇的内容对你有所帮助。
**参考文献:**
参考文献:
* [**https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu**][7]
* [https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu][7]
--------------------------------------------------------------------------------
@ -130,7 +132,7 @@ via: https://www.ostechnix.com/how-to-verify-iso-images-in-linux/
作者:[sk][a]
选题:[lujun9972][b]
译者:[FSSlc](https://github.com/FSSlc)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (MjSeven)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (MjSeven)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
@ -157,7 +157,7 @@ via: https://fedoramagazine.org/use-postfix-to-get-email-from-your-fedora-system
作者:[Gregory Bartholomew][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
译者:[MjSeven](https://github.com/MjSeven)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出