安装

  1. 需要一个google 账号
  2. 需要创建一个 google api project, 创建项目
  3. 安装类库
  4. 一个 laravel 项目

授权

理解 api 认证 和 如何认证是非常重要的. 所有的 API 或者是简易访问或者认证访问. 大多数 API 调用都需要经过认证. 这些需要差看相关文档.

简单 API 访问

这些API调用不会访问任何私有用户数据。您的应用程序必须将自己身份验证为属于您的Google API控制台项目的应用程序。这是衡量项目使用情况以进行统计目的所必需的。

API key 是用来认证身份的重要依据, 没一个 简单 API 认证的请求都需要携带 key.

认证 API 访问(Oauth2.0)

这些API调用访问私有用户数据。在您可以调用它们之前,有权访问私有数据的用户必须授予您的应用程序访问权限。因此,必须对您的应用程序进行身份验证,用户必须为您的应用程序授予访问权限,并且必须对用户进行身份验证才能授予该访问权限。所有这一切都是通过 OAuth 2.0 和为其编写的库来完成的。

几个重要概念:

Scope

每个API都定义了一个或多个声明允许一组操作的作用域。例如,API可能具有只读和读写范围。当您的应用程序请求访问用户数据时,该请求必须包含一个或多个范围。用户需要批准您的应用程序请求的访问范围。

refresh and access tokens

刷新和访问令牌:当用户授予您的应用程序访问权限时,OAuth 2.0 授权服务器会为您的应用程序提供刷新和访问令牌。这些令牌仅对请求的范围有效。您的应用程序使用访问令牌来授权API 调用。访问令牌过期,但刷新令牌不会。您的应用程序可以使用刷新令牌来获取新的访问令牌。

client ID and client secret

客户端 ID 和客户端密钥:这些字符串唯一标识您的应用程序并用于获取令牌。它们是在Google API控制台的 API 访问面板上为您的 Google API 控制台项目创建的。有三种类型的客户端ID,因此请确保为您的应用程序获取正确的类型:

  • Web application client IDs
  • Installed application client IDs
  • Service Account client IDs

Building and calling a service

这一节描述了如和运行 一个具体的 API 服务, 向服务端发起请求, 并获取回复.

Build the client object

客户端对象是库中类和配置的主要容器。


$client = new Google_Client();
$client->setApplicationName("My Application");
$client->setDeveloperKey("MY_SIMPLE_API_KEY");

Build the service object

通过查询来调用服务以服务特定对象。这些是通过构造服务对象并将Google_Client实例传递给它来创建的。Google_Client包含服务所需的IO,身份验证和其他类,并且该服务会通知客户端在对用户进行身份验证时使用哪些范围来提供默认值。

$service = new Google_Service_Books($client);
Calling an API

每个 API 都提供资源和方法,通常在链中。这些可以通过$ service-> resource-> method(args)形式从服务对象访问。大多数方法需要一些参数,然后接受包含可选参数的数组的最终参数。例如,使用 Google Books API,我们可以调用列出与特定字符串匹配的卷,并添加可选的过滤器参数。

$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
  
处理结果

有两种主要类型的响应 - 项目和项目集合。每个都可以作为对象或数组进行访问。集合实现了Iterator接口,因此可以在foreach和其他构造中使用。

foreach ($results as $item) {
  echo $item['volumeInfo']['title'], "<br /> \n";
}

使用 Oauth2.0 处理 服务端应用

适用于PHP的Google API客户端库支持使用OAuth 2.0进行服务器到服务器的交互,例如Web应用程序和Google服务之间的交互。对于此方案,您需要一个服务帐户,该帐户属于您的应用程序而不是单个最终用户。您的应用程序代表服务帐户调用 Google API,因此用户不会直接参与。此方案有时称为“两条腿 OAuth ”或“2LO”。(相关术语“三足OAuth”是指您的应用程序代表最终用户调用Google API并且有时需要用户同意的情况。)

如果您有Google Apps域 - 例如,如果您使用G Suite,则Google Apps域管理员可以授权应用程序代表Google Apps域中的用户访问用户数据。例如,使用Google Calendar API将事件添加到Google Apps域中所有用户的日历的应用程序将使用服务帐户代表用户访问Google Calendar API。授权服务帐户代表域中的用户访问数据有时被称为“将域范围授权”委托给服务帐户。

概览

要支持服务器到服务器的交互,请首先在API控制台中为项目创建服务帐户。如果您要访问 Google Apps 域中用户的用户数据,请将域范围内的访问权委托给该服务帐户。然后,您的应用程序准备使用服务帐户的凭据进行授权的API调用,以从 OAuth 2.0 auth服务器请求访问令牌。最后,您的应用程序可以使用访问令牌来调用Google API。

创建一个服务账号

服务帐户的凭证包括生成的唯一电子邮件地址,客户端ID和至少一个公钥/私钥对。如果您的应用程序在 Google App Engine 上运行,则在您创建项目时会自动设置服务帐户。如果您的应用程序未在 Google App Engine 或 Google Compute Engine 上运行,则必须在 Google API 控制台中获取这些凭据。要生成服务帐户凭据,或查看已生成的公用凭证,请执行以下操作:

  1. Service accounts 页面.选择项目.
  2. 创建一个服务账户
  3. 在 Create service account 弹窗, 输入服务账户名称, 选择装设新的私钥.点击创建.

您的新公钥/私钥对会生成并下载到您的计算机上;它是此密钥的唯一副本。您有责任安全地存储它。

您可以随时返回 API 控制台查看客户端 ID,电子邮件地址和公钥指纹,或生成其他公钥/私钥对。有关 API 控制台中服务帐户凭据的更多详细信息,请参阅API控制台帮助文件中的服务帐户。记下服务帐户的电子邮件地址,并将服务帐户的私钥文件存储在应用程序可访问的位置。您的应用程序需要它们进行授权的API调用。

需要在 webmaster 应用中增加账户权限

网线和电源线放一起,影响信号么

网线和电线挨着,不会影响网络信号传输。

家用网线叫做“双绞线”,外部有绝缘皮,内部由8根细线组成,可以有效屏蔽电磁波或者其他干扰,因此和电线挨着,不会影响网络信号的传输。

双绞线(twisted pair,TP)是一种综合布线工程中最常用的传输介质,是由两根具有绝缘保护层的铜导线组成的。把两根绝缘的铜导线按一定密度互相绞在一起,每一根导线在传输中辐射出来的电波会被另一根线上发出的电波抵消,有效降低信号干扰的程度。

超五类与超六类线的区别

数据传输速率区别:

超五类网线的宽度速度为100M适用于百兆宽带,基本在上日常生活中的实际下载速度为10M左右。

2、线径区别:

超五类网线跟六类网线的线径也有一定区别,超五类网线的线径一般不会高于0.51mm,超六类网线一般要高于0.55mm

3、抗干扰的性能区别:

抗干扰的性能的不同,超五类就是百兆网,超六类就是千兆网,带个超字说明就是改进的版本,优化了抗干扰,传输稳定性等。

超五类线用途:主要用于千兆位以太网(1000Mbps)。具有衰减小,串扰少,并且具有更高的衰减与串扰的比值(ACR)和信噪比(StructuralReturn Loss)、更小的时延误差,性能得到很大提高。

超六类线用途:主要应用于千兆位网络中。传输频率是200~250 MHz,最大传输速度也可达到1000 Mbps,超六类线是六类线的改进版,同样是ANSI/EIA/TIA-568B.2和ISO 6类/E级标准中规定的一种非屏蔽双绞线电缆,在串扰、衰减和信噪比等方面有较大改善。

什么是双屏蔽网线,非屏蔽网线,单屏蔽网线

屏蔽网线(STP、FTP)相对抗干扰性要强,造价也高,但必须全程屏蔽,且要做好接地。
非屏蔽网线(UTP)相对布线简单,造价便宜,对于普通电磁环境足够用了。

双绞线是自绞屏蔽,会向外散射杂波,如果屏蔽起来,杂波会在屏蔽层内来回震荡,形成串扰,近了影响不明显,远了会严重影响传输,所以同样的线,加了屏蔽信号到不行了,所以屏蔽线并不能增加传输带宽,相反因为串扰的影响,到是会影响信号的传输,屏蔽线只有用在外部环境有非常大的辐射的情况下,不得以而用之。屏蔽水晶头也最好别用。

地暖可以使用实木地板么?

创建虚拟环境

$ python -m venv projectname

进入虚拟环境

$ source projectname/bin/activate

安装 kernel

(venv) $ pip install ipykernel

创建 kernel

(venv) $ ipython kernel install --user --name=projectname

使用 conda 安装 kernel

conda install ipykernel

conda env 下

python -m ipykernel install --user --name myenv 

参考

https://anbasile.github.io/programming/2017/06/25/jupyter-venv/
https://ipython.readthedocs.io/en/stable/install/kernel_install.html

有时候从服务器上传输大文件到本地,会遇到 scp 莫名其妙停止,显示 stalled

When transferring large files using scp through a firewall, the scp connection stalls.

解决方法为

This happens because scp is trying to grab as much bandwidth as possible, and any delay (by a firewall, etc.) can stall it. Limiting the bandwidth (with -l option) will fix it.

发生这种情况是因为scp试图获取尽可能多的带宽,并且任何延迟(通过防火墙等)都可以阻止它。 限制带宽(使用-l选项)可以修复它。

For example, you might want to limit the bandwidth to 1 MB/s (= 8192 Kbits/s):

scp -l 8192 <file> <destination>