<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[A Nomad]]></title><description><![CDATA[just a soul nomad]]></description><link>https://a-nomad.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1658902125300/bFzlCLoUI.png</url><title>A Nomad</title><link>https://a-nomad.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 30 Oct 2026 21:14:22 GMT</lastBuildDate><atom:link href="https://a-nomad.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[硬核Clash 配置教程，终极分流规则防配置覆盖]]></title><description><![CDATA[clash分流策略,配置文件详解,自动更新订阅,proxy-providers,proxy-groups,rule-providers,代理集,策略组,规则集,规则,new bing chat]]></description><link>https://a-nomad.hashnode.dev/clash</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/clash</guid><category><![CDATA[clash ]]></category><category><![CDATA[科学上网]]></category><category><![CDATA[翻墙]]></category><category><![CDATA[分流规则]]></category><category><![CDATA[策略组]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Sat, 29 Apr 2023 10:03:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682762561836/8b02d1c0-ef41-448d-9577-b85f3ce11d0a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>最近发现使用香港代理访问new bing貌似被封禁了，于是就要修改一下家里软路由的代理分流规则，因为手上的主力机是MacBook，好用的代理软件最常用的也是Clash X，那索性就一起搞了，正好有小伙伴问我想自定义Clash的分流规则，网上查了资料改是改了，结果一更新订阅链接，自己的辛辛苦亏写的配置就被无情的覆盖了，问我怎么避免这个问题。那就借此机会简单整理一个硬核一点的教程吧。</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/E86j-EwWKuM">https://youtu.be/E86j-EwWKuM</a></div>
<p> </p>
<p>很多同学看到一大坨的配置文件就头疼，其实大可不必，Clash的配置文件非常简单，简单理解基本规则后就属于有手就能配的。</p>
<p>开始之前简单理解一下几个基本概念。</p>
<h2 id="heading-1proxy">1.代理（proxy）</h2>
<p>代理一般代理指的是我们的代理服务节点，比如自建或者机场提供的可以访问“互联网”的节点。</p>
<h3 id="heading-11-proxy-providers">1.1 代理集（proxy-providers）</h3>
<p>如果你购买了机场，那么一般机场都会提供给你一堆的代理节点，此时我们就可以对这些节点按照一定的规则进行归类，这些个归类后的节点称之为代理集（proxy-providers）。</p>
<pre><code class="lang-yaml"><span class="hljs-attr">proxy-providers:</span>
  <span class="hljs-attr">FlyingBird-HongKong:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/HongKong.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Hong Kong'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-TaiWan:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/TaiWan.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Taiwan'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
</code></pre>
<p>代理集中归类的节点可以是本地配置节点也可以是机场订阅节点，可以是一个机场亦或者是多个机场，甚至也可以是符合自定义筛选规则的部分节点。</p>
<p>我们可以为代理集配置健康检查，定时检查并更新代理集中的代理节点。</p>
<h3 id="heading-12-proxy-groups">1.2 策略组（proxy-groups）</h3>
<p>策略组这个名字有点让人望而却步，个人认为译为“代理组”会更好理解一点。策略组的作用就是对代理集进行自由组合使用，当然它还提供了定时测速选择最优节点或者手动选择节点等功能。</p>
<pre><code class="lang-yaml"><span class="hljs-attr">proxy-groups:</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">PROXY</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">use:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-HongKong</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-TaiWan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Singapore</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Malaysia</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Japan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-USA</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-UK</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Turkey</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Argentina</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">非香港</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">use:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-TaiWan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Singapore</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Malaysia</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Japan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-USA</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-UK</span>
</code></pre>
<h2 id="heading-2rules">2.规则（rules）</h2>
<p>规则决定了访问指定地址时使用哪个代理，也就是我们说的分流规则。</p>
<h3 id="heading-21-rule-providers">2.1 规则集（rule-providers）</h3>
<p>规则负责将指定网络请求丢给指定的的代理去处理，仿佛左手请求，右手代理。那么首先要确定的就是网络请求，网络请求的界定既可以是一个特定的域名或者IP，也可以是特定域名结尾或者开头，亦或者是进程名称。我们一般将一组特定相关的请求归类到一起，称为规则集。这些规则往往都是爱好者们整理好开源在Github上并定期维护的，我们直接拿来用就可以了。</p>
<pre><code class="lang-yaml"><span class="hljs-attr">rule-providers:</span>
  <span class="hljs-attr">apple:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/apple.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">google:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/google.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
</code></pre>
<h3 id="heading-22-rules">2.2 规则（rules）</h3>
<p>最后我们来看下代理如何分流。一行分流策略包含两部分，请求+代理。请求可以来自于规则集匹配，代理则可以来自于策略组。没有匹配到规则的网路请求如果使用代理访问则称为白名单模式，直接请求不经过代理则是黑名单模式。</p>
<p>我们自定义的分流策略也一般定义在此处。</p>
<h2 id="heading-3">3.示例配置文件</h2>
<pre><code class="lang-yaml"><span class="hljs-comment">#---------------------------------------------------#</span>
<span class="hljs-comment">## 自定义Clash配置</span>
<span class="hljs-comment">## 作者： Colin Chang</span>
<span class="hljs-comment">## 更新：2023-04-13 </span>
<span class="hljs-comment">#---------------------------------------------------#</span>


<span class="hljs-attr">mixed-port:</span> <span class="hljs-number">7890</span>
<span class="hljs-attr">allow-lan:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">mode:</span> <span class="hljs-string">Rule</span>
<span class="hljs-attr">log-level:</span> <span class="hljs-string">error</span>
<span class="hljs-attr">external-controller:</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span><span class="hljs-string">:60000</span>

<span class="hljs-attr">proxy-providers:</span>
  <span class="hljs-attr">FlyingBird-HongKong:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/HongKong.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Hong Kong'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-TaiWan:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/TaiWan.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Taiwan'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-Singapore:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/Singapore.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Singapore'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-Malaysia:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/Malaysia.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Malaysia'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-Japan:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/Japan.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Japan'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-USA:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/USA.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'USA'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-UK:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/USA.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'USA'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-Turkey:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/Turkey.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Turkey'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
  <span class="hljs-attr">FlyingBird-Argentina:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./ProxySet/FlyingBird/Argentina.yaml</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"机场订阅地址"</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">1800</span>
    <span class="hljs-attr">filter:</span> <span class="hljs-string">'Argentina'</span>
    <span class="hljs-attr">health-check:</span>
      <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
      <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
      <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>

<span class="hljs-attr">proxy-groups:</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">PROXY</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">use:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-HongKong</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-TaiWan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Singapore</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Malaysia</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Japan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-USA</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-UK</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Turkey</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Argentina</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">直接连接</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">境外流量</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">use:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-HongKong</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-TaiWan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Singapore</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Malaysia</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Japan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-USA</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-UK</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Youtube</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Netflix</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Telegram</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Apple</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">直接连接</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Non-HK</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">url-test</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">http://www.gstatic.com/generate_204</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">use:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-TaiWan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Singapore</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Malaysia</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-Japan</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-USA</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">FlyingBird-UK</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Colin</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">select</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">300</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">直接连接</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">直接连接</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">select</span>
    <span class="hljs-attr">proxies:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">DIRECT</span>

<span class="hljs-attr">rule-providers:</span>
  <span class="hljs-attr">reject:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/reject.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">icloud:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/icloud.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">apple:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/apple.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">google:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/google.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">proxy:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/proxy.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">direct:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/direct.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">private:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/private.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">gfw:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/gfw.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">greatfire:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/greatfire.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">tld-not-cn:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">domain</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/tld-not-cn.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">telegramcidr:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">ipcidr</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/telegramcidr.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">cncidr:</span>
    <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
    <span class="hljs-attr">behavior:</span> <span class="hljs-string">ipcidr</span>
    <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"</span>
    <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/cncidr.yaml</span>
    <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>
  <span class="hljs-attr">lancidr:</span>
     <span class="hljs-attr">type:</span> <span class="hljs-string">http</span>
     <span class="hljs-attr">behavior:</span> <span class="hljs-string">ipcidr</span>
     <span class="hljs-attr">url:</span> <span class="hljs-string">"https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"</span>
     <span class="hljs-attr">path:</span> <span class="hljs-string">./RuleSet/lancidr.yaml</span>
     <span class="hljs-attr">interval:</span> <span class="hljs-number">86400</span>

<span class="hljs-attr">rules:</span>
  <span class="hljs-comment"># 自定义规则</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,openai.com,境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,bing.com,Non-HK</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,a-nomad.com,直接连接</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,api2d.net,直接连接</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,appstorrent.ru,Colin</span>

  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-KEYWORD,youtube,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN,youtubei.googleapis.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN,yt3.ggpht.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,googlevideo.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,gvt2.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,withyoutube.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtu.be,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtube-nocookie.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtube.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtubeeducation.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtubegaming.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,youtubekids.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,yt.be,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,ytimg.com,Youtube</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-KEYWORD,netflixdnstest,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN,netflix.com.edgesuite.net,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,fast.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflix.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflix.net,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest0.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest1.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest2.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest3.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest4.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest5.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest6.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest7.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest8.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,netflixdnstest9.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,nflxext.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,nflximg.com,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,nflximg.net,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,nflxso.net,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN-SUFFIX,nflxvideo.net,Netflix</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,8.41.4.0/24,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,23.246.0.0/18,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,37.77.184.0/21,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,38.72.126.0/24,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,45.57.0.0/17,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,64.120.128.0/17,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,66.197.128.0/17,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,69.53.224.0/19,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,103.87.204.0/22,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,108.175.32.0/20,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,185.2.220.0/22,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,185.9.188.0/22,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,192.173.64.0/18,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,198.38.96.0/19,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,198.45.48.0/20,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,207.45.72.0/22,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">IP-CIDR,208.75.76.0/22,Netflix,no-resolve</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,v2ray,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,xray,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,naive,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,trojan,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,trojan-go,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,ss-local,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,privoxy,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,leaf,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,v2ray.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,xray.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,naive.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,trojan.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,trojan-go.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,ss-local.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,privoxy.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,leaf.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge</span> <span class="hljs-number">2</span><span class="hljs-string">,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge</span> <span class="hljs-number">3</span><span class="hljs-string">,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge</span> <span class="hljs-number">4</span><span class="hljs-string">,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge%202,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge%203,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Surge%204,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Thunder,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,DownloadService,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,qBittorrent,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Transmission,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,fdm,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,aria2c,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Folx,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,NetTransport,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,uTorrent,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,WebTorrent,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,aria2c.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,BitComet.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,fdm.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,NetTransport.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,qbittorrent.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,Thunder.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,ThunderVIP.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,transmission-daemon.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,transmission-qt.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,uTorrent.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">PROCESS-NAME,WebTorrent.exe,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN,clash.razord.top,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">DOMAIN,yacd.haishan.me,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,private,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,reject,REJECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,direct,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,icloud,Apple</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,apple,Apple</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,google,境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,proxy,境外流量</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">RULE-SET,telegramcidr,Telegram</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">GEOIP,LAN,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">GEOIP,CN,DIRECT</span>
  <span class="hljs-bullet">-</span> <span class="hljs-string">MATCH,PROXY</span>
</code></pre>
]]></content:encoded></item><item><title><![CDATA[利用闲置带宽,24小时下载资源]]></title><description><![CDATA[软路由下载工具集：百度云/迅雷/qBittorrent/Chrome]]></description><link>https://a-nomad.hashnode.dev/download</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/download</guid><category><![CDATA[文件下载]]></category><category><![CDATA[百度网盘]]></category><category><![CDATA[迅雷]]></category><category><![CDATA[qBittorrent]]></category><category><![CDATA[软路由]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 25 Apr 2023 02:26:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682389024820/deed9b4e-2d81-4e11-bce6-9b5cf4edaa1b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>今天老婆突然心血来潮买了一个在线课程，准备假装开始学习了。课程是录制好的加密视频，不出所料的直接给了一个百度网盘的下载链接。好家伙又是几十个GB的资源，于是老婆大人安排我在她学习热情消退之前给她下载完课程资料。想着家里软路由几乎天天闲置的带宽，遂决定在软路由上搞个百度网盘24小时下载就完了，虽然穷人的百度网盘只有几百K的下载速度，但连续下载个两天也就down完了，而且跑在软路由上眼不见心不烦，也不会有速度焦虑。</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/5teutTC-yEk">https://youtu.be/5teutTC-yEk</a></div>
<p> </p>
<p>说干就干，于是简单Google了下在软路由上可以使百度网盘的一个Web版插件<code>BaiPCS-Web</code>，折腾了一会儿发现不怎么好用。不禁想到了前段时间折腾的Docker工作空间——Kasm。简单查了下百度网盘官方也提供了Linux安装包，既然折腾一顿，不妨也看下相关的其它常用的下载工具，qBittorrent毫无疑问友好的支持Linux，准备开干，整个下载包合集吧。正准备动手，老婆上来就是一句：“你这玩意儿连迅雷都没有，不行啊。”，这不能忍，Google了下，果然迅雷还出了一个Linux客户端，迅雷官网上没有找到但在某论坛找到了安装包，那就一起嗨吧。</p>
<p>这里简单介绍几句Kasm吧，这玩意是一个牛逼的神器，它提供过了一个界面话的Linux系统，同时把各种大大小小的工具装到了里面，然后以Docker镜像方式提供给使用者。这就意味着你可以将各种复杂的工具包甚至是开发运维环境带在身边，在任何一个可以运行Docker的机器上运行一个容器即可得到你的工作环境。仿佛就是儿时动画片《龙珠》中的万能胶囊啊，任何庞杂的都是全部封装到一个万能胶囊中，任何时间地点需要时，取出胶囊一丢，东西就有了。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682391440442/7e95dafc-f549-47e7-8ef9-d2eb7d166ea8.png" alt class="image--center mx-auto" /></p>
<p>当然虽然Kasm非常nice的为我们提供了一些安装了类似Chrome/Telegram/VsCode等工具的镜像，但显示它不可能提供百度网盘、迅雷等具有中国特色的下载工具。那我们就自己动手封装一个，我们可以基于现在的镜像如<code>kasmweb/chrome</code>去扩展即可，但是现有镜像基本都是基于Ubuntu 20.04，而且工具版本也不是最新的。既然我们打算自己封装镜像了，那不妨粗暴一点，基于一个最新的Ubuntu 22.04来一一安装我们需要的各种工具。简单找了下发现了目标镜像——<code>kasmweb/core-ubuntu-jammy</code>,这是一个带UI的Ubuntu 22.04的干净的镜像，不废话直接上Dockerfile：</p>
<pre><code class="lang-bash">FROM kasmweb/core-ubuntu-jammy:develop

LABEL version=<span class="hljs-string">"1.0"</span> maintainer=<span class="hljs-string">"colinchang&lt;zhangcheng5468@gmail.com&gt;"</span>

USER root

<span class="hljs-comment"># 替换阿里云系统源</span>
COPY <span class="hljs-variable">$PWD</span>/sources.list /etc/apt/sources.list
COPY <span class="hljs-variable">$PWD</span>/xunlei_1.0.0.1-myubuntu_amd64.deb /home/kasm-user
RUN apt update &amp;&amp; mkdir -p /home/kasm-user/Desktop \

<span class="hljs-comment"># Chrome</span>
&amp;&amp; apt install -y xdg-utils fonts-liberation libu2f-udev \
&amp;&amp; wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
&amp;&amp; dpkg -i google-chrome-stable_current_amd64.deb \
&amp;&amp; sed -i <span class="hljs-string">'s/Exec=\/usr\/bin\/google-chrome-stable/Exec=\/usr\/bin\/google-chrome-stable --no-sandbox/g'</span> /usr/share/applications/google-chrome.desktop \
&amp;&amp; ln -s /usr/share/applications/google-chrome.desktop /home/kasm-user/Desktop/google-chrome.desktop \

<span class="hljs-comment"># BaiduNetDisk</span>
&amp;&amp; wget https://issuepcdn.baidupcs.com/issue/netdisk/LinuxGuanjia/4.17.7/baidunetdisk_4.17.7_amd64.deb \
&amp;&amp; dpkg -i baidunetdisk_4.17.7_amd64.deb \
&amp;&amp; ln -s /usr/share/applications/baidunetdisk.desktop /home/kasm-user/Desktop/baidunetdisk.desktop \

<span class="hljs-comment"># Thunder</span>
&amp;&amp; apt install -y libgtk2.0-0 libdbus-glib-1-2 \
&amp;&amp; dpkg -i xunlei_1.0.0.1-myubuntu_amd64.deb \
&amp;&amp; sed -i <span class="hljs-string">'s/Exec=\/opt\/thunder\/xunlei\/start.sh/Exec=\/opt\/thunder\/xunlei\/start.sh --no-sandbox/g'</span> /usr/share/applications/xunlei.desktop \
&amp;&amp; ln -s /usr/share/applications/xunlei.desktop /home/kasm-user/Desktop/xunlei.desktop \

<span class="hljs-comment"># qBittorrent</span>
&amp;&amp; add-apt-repository -y ppa:qbittorrent-team/qbittorrent-stable \
&amp;&amp; apt update \
&amp;&amp; apt install -y qbittorrent \
&amp;&amp; ln -s /usr/share/applications/org.qbittorrent.qBittorrent.desktop /home/kasm-user/Desktop/org.qbittorrent.qBittorrent.desktop \

<span class="hljs-comment"># Visual Studio Code</span>
&amp;&amp; wget https://az764295.vo.msecnd.net/stable/704ed70d4fd1c6bd6342c436f1ede30d1cff4710/code_1.77.3-1681292746_amd64.deb \
&amp;&amp; dpkg -i code_1.77.3-1681292746_amd64.deb \
&amp;&amp; sed -i <span class="hljs-string">'s/Exec=\/usr\/share\/code\/code/Exec=\/usr\/share\/code\/code --no-sandbox/g'</span> /usr/share/applications/code.desktop \
&amp;&amp; sed -i <span class="hljs-string">'s/Icon=com.visualstudio.code/Icon=\/usr\/share\/code\/resources\/app\/resources\/linux\/code.png/g'</span> /usr/share/applications/code.desktop \
&amp;&amp; ln -s /usr/share/applications/code.desktop /home/kasm-user/Desktop/code.desktop \

&amp;&amp; apt autoremove -y \
&amp;&amp; apt clean \
&amp;&amp; rm -rf *.deb
</code></pre>
<p>需要注意的是，除了常规的下载安装包并安装依赖工具包之外，要将工具包软链接（相当于Windows中的快捷方式）放到桌面上，还需要修改一些个配置，每个软件各不相同。当然相关指令我已经放到<code>Dockerfile</code>中了，你要为我怎么知道的，当然是跑一个裸容器，然后进容器界面操作一番后对比软链接文件内容总结出来的啦，有读者有兴许的可以在留言告诉我出一期教程。下面就是编译镜像运行容器，shutup and show me the code！😎</p>
<pre><code class="lang-bash"><span class="hljs-comment"># build </span>
docker build -t colinchang/ubuntu-desktop .  
<span class="hljs-comment"># run </span>
docker run -d \
    --name ubuntu \
    --shm-size=512m \
    -p 443:6901 \
    -e VNC_PW=password \
    -u root \
    --restart always \
    colinchang/ubuntu-desktop
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682386583257/7ef5771a-b9c2-4600-9872-202f5a46664b.png" alt class="image--center mx-auto" /></p>
<p>除了下载工具外我还顺手打包了VsCode（方便修改各种配置文件）和Chrome（访问资源网站）。</p>
<p>当然需要特别注意的一点是<strong>务必要记得在运行容器时，将下载目录映射到宿主机</strong>，不然容器一重启，千辛万苦下载的资料就灰飞烟灭了。另外通过浏览器访问时协议类型务必确认是<code>https</code>，默认用户名是<code>kasm_user</code>，密码是运行容器时设定的。</p>
<p>到这里我们的下载工具包就搞定了，可以让我们的软路由24小时为我们下载各种资源了，欧耶！</p>
<p>其实在某些软路由系统中如小宝的iStore OS，已经为我们提供了Kasm的插件，也可以直接使用插件运行Kasm容器，然后进行定制，只是我更喜欢自己定制的快乐和折腾的乐趣。当然基于Kasm只是安装几个下载工具其实是大材小用了，如果如果你是一个会玩的人，你甚至可以将任意想要的工具乃至开发运维环境都打包到一个镜像中。Kasm只是基础设施，它为使用者提供了一个容器化的带UI界面的Linux系统，你可以基于它进行各种丰富的扩展和自定义。</p>
<p>OK，牛逼就吹到这里吧~</p>
<p>文中相关代码已共享到<a target="_blank" href="https://github.com/colin-chang/ubuntu-desktop">GitHub</a>，各位自取！</p>
]]></content:encoded></item><item><title><![CDATA[2023最新iPhone刷运动步数教程（非小米运动）]]></title><description><![CDATA[如果您正在寻找一种快速、简单的方法来提高您的运动步数，那么您来对地方了！本文将介绍一种最新的 iPhone 刷运动步数方法，让您可以轻松、自动地增加您的运动步数。此外，我们还提供了详细的步骤和技巧，让您可以在短时间内达到自己的目标。不管您是想要减肥、保持健康，还是仅仅想要更频繁地进行运动，这种方法都可以为您提…]]></description><link>https://a-nomad.hashnode.dev/sports-steps</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/sports-steps</guid><category><![CDATA[刷步数]]></category><category><![CDATA[刷运动步数]]></category><category><![CDATA[微信运动步数]]></category><category><![CDATA[运动步数]]></category><category><![CDATA[小米运动]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Thu, 20 Apr 2023 07:05:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1681970898540/2024a019-6db4-4790-80f2-121a69f1d996.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>在现代社会，我们的生活方式越来越习惯于久坐不动，这对于我们的健康非常不利。而步数是衡量我们运动量的一种重要指标，为了更好地掌握自己的运动状态，很多人都在寻找一些方法来刷步数。</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/wR333Zn91rw">https://youtu.be/wR333Zn91rw</a></div>
<p> </p>
<p>本文将介绍如何使用iPhone刷运动步数的方法。关于这个话题网络上的提供的方法大多都是使用<code>小米运动(zeep life)</code>APP，通过相关网站或者一些爱好者开发的应用程序（本质上都是通过发送API请求）修改其运动步数，然后再同步到iOS系统中进而修改iPhone中的运动步数信息，我之前也是一直使用这种简单的方式给老婆刷运动步数的，但就在前段时间突然发现这种方式虽然可以实现修改APP中的运动步数，但却无法自动同步到iOS系统中，也就无法实现刷运动步数了。老婆竟然提出到某宝购买物理摇步器，这简直是太侮辱智慧了，遂决定按照小米运动刷步数的原理，找一款替代APP来实现同步运动步数，当然最好还有一个手动同步步数的功能，在自动同步无效时手动刷步数，简单搜索了一下便发现了本文下面要介绍的APP。</p>
<p>在本文中，我们将介绍如何利用名为“运动”的APP与苹果健康中心同步步数。首先，用户需要到App Store搜索并下载“运动”应用程序。该应用程序的原理类似于小米运动，但唯一的区别是它可以手动同步步数到苹果健康中心。</p>
<p>在“运动”应用程序中，用户需要找到最左下角的“我”并打开“设置”。在“设置”中，用户将看到一个名为“与苹果健康中心同步数据”的选项。通过关闭该选项，用户可以在修改步数后再次开启该功能，以确保步数得到同步。 在“运动”应用程序中，用户将看到一个鞋子图标，用户可以通过点击该图标选择要记录的运动方式，如走路、慢跑、跑步等。值得注意的是，记录运动并同步步数到苹果健康中心会导致一些公里数、卡路里和步数的差异，因为苹果健康中心会重新计算这些数值。用户可以使用“自动”选项来估算卡路里消耗，然后手动输入步数和公里数。</p>
<p>在录入步数后，用户需要授权让该应用程序同步数据到苹果健康中心。在苹果健康中心中，用户将看到“共享”选项，其中包括一个“APP”选项，用户应该选择“运动”并将所有健康信息设置为“共享”。通过这种方式，用户可以授权“运动”应用程序直接写入他们的步数数据到苹果健康中心。 如果用户第一次使用该应用程序，他们需要在操作系统设置中找到“健康”选项，然后在健康信息下启用该选项。 在完成以上步骤后，用户可以手动同步数据到苹果健康中心。打开“设置”并找到“与苹果健康同步”，用户可以通过点击“手动同步”来手动同步数据。一旦同步成功，用户可以在苹果健康中心中检查他们的步数是否已同步。 这种方法比小米运动或Zeep Life有一个优点，即它有一个手动同步的机制。这意味着用户可以直接手动将其步数数据写入iOS的苹果健康应用程序。同步成功后，用户可以关闭“与苹果健康同步”功能，下次再刷步数之前记得将其重新打开。</p>
<p>总之，运动与苹果健康中心的结合是一个方便的方法，让用户可以记录其步数和其他运动数据，并将其同步到他们的苹果健康应用程序中。手动同步机制也非常方便，虽然需要一些额外的步骤，但它确保了步数的准确性。 通过这种方法，用户可以更好地跟踪其健康状况并记录其日常运动量，这对于长期保持健康非常重要。我们希望这篇文章能够帮助您更好地使用“运动”应用程序并与苹果健康中心同步您的步数数据。</p>
]]></content:encoded></item><item><title><![CDATA[Google Voice简单保号教程]]></title><description><![CDATA[想要长期使用Google Voice吗？阅读这篇教程，了解如何保持账号活跃，避免被回收。掌握Google Voice账号保留技巧，确保您的通讯数据安全。]]></description><link>https://a-nomad.hashnode.dev/google-voice</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/google-voice</guid><category><![CDATA[google voice]]></category><category><![CDATA[keep google voice]]></category><category><![CDATA[google voice active]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Sun, 16 Apr 2023 13:00:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1681803745872/74ce7d14-531d-4fa5-be02-05f79d52f5b1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Google Voice 是由 Google 提供的一项语音通信服务，它允许用户使用一个电话号码来接收和发送电话、短信和语音邮件等信息。Google Voice 提供了许多方便实用的功能，例如语音信箱转录、呼叫转移、呼叫筛选、呼叫记录等，同时还提供了许多免费或低成本的通信服务选项，例如国际长途、语音会议和互联网电话等。此外，Google Voice 还可以通过桌面和移动应用程序进行访问和管理，使其非常易于使用和管理。</p>
<p>Google Voice 有以下主要的优点：</p>
<ol>
<li><p>一号多用：用户可以将自己的 Google Voice 号码与多个电话号码绑定，这样就可以使用同一个号码来接收和发送电话、短信等信息，不需要再为每个号码单独支付费用。</p>
</li>
<li><p>免费或低成本：Google Voice 提供了许多免费或低成本的通信服务选项，例如国际长途、语音会议和互联网电话等，这些服务通常比传统电话公司的服务更便宜。</p>
</li>
<li><p>便捷实用：Google Voice 提供了许多方便实用的功能，例如语音信箱转录、呼叫转移、呼叫筛选、呼叫记录等，这些功能可以帮助用户更轻松地管理和控制自己的通信。</p>
</li>
<li><p>集成性强：Google Voice 可以与其他 Google 服务集成，例如 Gmail、Google Calendar 等，这样用户就可以更方便地管理自己的通信和日程安排。</p>
</li>
<li><p>多平台支持：Google Voice 可以通过桌面和移动应用程序进行访问和管理，这样用户就可以随时随地使用和管理自己的通信。同时，Google Voice 还支持多种语言，包括中文，为使用者提供了更加便捷的体验。</p>
</li>
</ol>
<p>因为一些众所周知的原因，很多国际服务都对中国大陆手机号存在诸多限制，那么拥有一个Google Voice虚拟手机号便成为了遨游互联网的必备之选。关于如何申请Google Voice还是存在一定的技术要求，如果读者需要了解的话，我们可以专门开辟一篇博客来专门讨论，这里推荐大家到某宝搜索购买转让即可，简单粗暴。</p>
<p>Google Voice 在账号长期未被使用的情况下，会进行账号回收。根据 Google Voice 的规则，如果用户的 Google Voice 账号在一年内没有任何通话、短信、语音邮件或其他活动，Google 将有权回收该账号。账号回收后，该账号中存储的所有通信数据、语音邮件等信息都将被永久删除，且无法恢复。</p>
<p>为了避免账号被回收，用户需要定期使用 Google Voice 进行通话、短信或语音邮件等活动。那么拥有一个Google Voice之后，如果长期不使用，那么如何保持活跃以保留号码便成了一个关键问题。</p>
<p>其实Google Voice保号也是一项简单的任务，我们只需要定期使用Google Voice拨打电话或者接发短信即可。拨打电话的话我们可以尝试与其他Google Voice好友互拨电话，亦或者直接使用Google Voice拨打一些平台的客户电话。如果使用短信保号的话，则更简单便利，我们可以将Google Voice绑定到各大平台认证手机号，进行短信验证等操作即可收到短信。亦或者我们也可以使用Google Voice订阅一些公司或平台的广告推送服务，这样我们便可以定期接收到一些推销或广告通知以保证账号活跃，这也是我们最推荐的一种方式。比如我们可以使用Google Voice编辑短信内容<code>JOIN</code>发送到<code>22122‬</code>以订阅星巴克的广告推销短信，订阅成功后会收到类似如下回复：</p>
<pre><code class="lang-plaintext">Starbucks: This is a test. Thanks for participating.  

(2msg/mo). Text STOP to end, HELP for help + T&amp;C's. Msg&amp;Data rates may apply.
</code></pre>
<p>这意味着每个月我们会收到星巴克的两条推销短信，就可以自动实现保号。</p>
<p>当然除了以上方式我们也可以自己动手编写定时任务实现定时短信发送或者使用其它诸如`IFTTT`等第三方平台定期发送短信。关于如何保号Google Voice您有什么更好的方式，也欢迎读者在文章下方评论留言，互相交流。</p>
]]></content:encoded></item><item><title><![CDATA[加速阿里云服务器文件上传下载]]></title><description><![CDATA[通过文件存储服务加速VPS文件下载,OSS提速ECS文件上传下载]]></description><link>https://a-nomad.hashnode.dev/5yqg6ycf6zi6yem5lqr5pyn5yqh5zmo5pah5lu25lik5lyg5lil6l29</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/5yqg6ycf6zi6yem5lqr5pyn5yqh5zmo5pah5lu25lik5lyg5lil6l29</guid><category><![CDATA[OSS]]></category><category><![CDATA[ECS]]></category><category><![CDATA[文件下载]]></category><category><![CDATA[网络加速]]></category><category><![CDATA[文件上传]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Fri, 03 Feb 2023 16:16:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1675440820015/afa8246c-316e-4f2b-9eb1-91e3594efacf.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>在系统规模不大的情况下我们经常会将所有系统服务部署在一台服务器上，此时就经常需要在本地与服务器之间互传文件，如，下载服务器端程序运行日志，本地上传Docker镜像文件到服务器端等。</p>
<p>如果是较小的文件传输我们可以使用<code>scp</code>命令或搭建FTP服务使用各种FTP命令或工具进行文件传输，但如果传输文件较大时，将占用大量服务器带宽，且传输速度往往也被约束。下面笔者通过FTP下载阿里云VPS上一个1.78G的示例文件，下载速度仅有1.4M/s，耗时约25分钟。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675438089768/41f7816b-f24d-46c3-86ce-b1363764eaf9.png" alt class="image--center mx-auto" /></p>
<p>类似于阿里云等知名服务器提供商除了提供基础的VPS外一般也会提供相应的文件存储服务，而同一平台下的相同地域的VPS与文件存储服务之间走的都是网络专线，访问速度极快，我们可以此加速VPS大文件网络传输。下面我们以阿里云为例，使用阿里云OSS加速ECS网络传输。</p>
<ol>
<li><p><a target="_blank" href="https://help.aliyun.com/document_detail/120075.html">安装ossutil</a></p>
<pre><code class="lang-bash"> <span class="hljs-comment"># 安装</span>
 curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
 <span class="hljs-comment"># 配置鉴权信息</span>
 ossutil config
</code></pre>
</li>
<li><p><a target="_blank" href="https://help.aliyun.com/document_detail/179388.html?spm=a2c4g.11186623.0.0.2aeb51f9LqNBmu">上传文件至oss</a></p>
<pre><code class="lang-bash"> ossutil64 cp bigfile.tgz oss://bucket_name/
</code></pre>
<p> 可以看到1.78G的文件仅用了5s中就上传完毕了。</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675438935713/25fc6dcc-e00a-436d-82ed-fe60614267a1.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>下载文件到本地</p>
<p> 使用OSS命令行或客户端进行文件下载即可，可以看到下载速度为38.45M/s，下载耗时45秒。</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675439266755/df5e868a-8530-4eaf-a88e-17a874837521.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
<p>简单回顾一下，直接从阿里云ECS服务器上下载一个1.78G的文件耗时25分钟，而经过OSS加速之后，文件下载时间缩短为了50秒，提速近30倍，效果非常明显。当然这里我们是以阿里云平台为例，其它平台思路也类似，这里不再演示，相信聪明的读者朋友可以肆意DIY。</p>
]]></content:encoded></item><item><title><![CDATA[MySQL命令行常用命令速查]]></title><description><![CDATA[最近公司有为客户提供公司产品的私有化部署，部署完毕之后客户要求修改系统数据库中相关内容，客户选择临时使用Docker容器部署MySQL，且无法提供公网访问。那此时我们只能通过远程工具连接到客户服务器并进入MySQL容器在控制台上执行相关命令。 这里简单列出一些常用指令供大家参考并作备忘。 进入MySQL容器…]]></description><link>https://a-nomad.hashnode.dev/mysql</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/mysql</guid><category><![CDATA[MySQL]]></category><category><![CDATA[mysqlcli]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Fri, 03 Feb 2023 06:46:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1675406685851/7b28af30-2898-4973-92e1-2a8e3d638aae.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>最近公司有为客户提供公司产品的私有化部署，部署完毕之后客户要求修改系统数据库中相关内容，客户选择临时使用Docker容器部署MySQL，且无法提供公网访问。那此时我们只能通过远程工具连接到客户服务器并进入MySQL容器在控制台上执行相关命令。</p>
<p>这里简单列出一些常用指令供大家参考并作备忘。</p>
<ol>
<li><p>进入MySQL容器</p>
<pre><code class="lang-bash"> <span class="hljs-comment"># 命令</span>
 docker <span class="hljs-built_in">exec</span> -it mysql_container bash
 <span class="hljs-comment"># 示例</span>
 docker <span class="hljs-built_in">exec</span> -it measurement-mysql bash
</code></pre>
</li>
<li><p>连接到MySQL服务</p>
<pre><code class="lang-bash"> <span class="hljs-comment"># 命令</span>
 mysql -h host -P port -u user -p
 <span class="hljs-comment"># 示例</span>
 mysql -h 127.0.0.1 -P 3306 -u root -p
</code></pre>
</li>
<li><p>查询数据库/表</p>
<pre><code class="lang-bash"> <span class="hljs-comment"># 展示当前实例的数据库列表</span>
 show databases;
 <span class="hljs-comment"># 切换数据库</span>
 use database;
 <span class="hljs-comment"># 展示当前数据库表</span>
 show tables;

 <span class="hljs-comment"># 执行SQL语句</span>
 select * from table
 insert into table values (xxx)
 update table <span class="hljs-built_in">set</span> x0=x1 <span class="hljs-built_in">where</span> condition=xx
 delete from table
</code></pre>
</li>
<li><p>执行数据库脚本</p>
<pre><code class="lang-bash"> <span class="hljs-built_in">source</span> script.sql
</code></pre>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[深度学习模型，下载部署efficientnet.h5]]></title><description><![CDATA[在调用与efficientnet相关的深度学习模型的时候，keras会自动下载网络模型h5文件。如果没有配置好URL就会报类似如下的错误： 这时两种选择，一种是配好URL，另一种是直接替keras下载h5文件。有些企业内部服务器是不允许访问公网，所以这里我们推荐使用第二种方式，即先下载好keras的h5文件。]]></description><link>https://a-nomad.hashnode.dev/efficientneth5</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/efficientneth5</guid><category><![CDATA[EfficientNet]]></category><category><![CDATA[keras]]></category><category><![CDATA[efficientnet.h5]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 31 Jan 2023 16:27:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1681817873930/db29b006-fb3d-49a5-8ba8-c0ad12b91360.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>在调用与<code>efficientnet</code>相关的深度学习模型的时候，<code>keras</code>会自动下载网络模型h5文件。如果没有配置好URL就会报类似如下的错误：</p>
<pre><code class="lang-plaintext">Downloading data from https://storage.googleapis.com/keras-applications/efficientnet.h5
Exception: URL fetch failure on https://storage.googleapis.com/keras-applications/efficientnetb3_notop.h5: None -- [Errno -2] Name or service not known
</code></pre>
<p>这时两种选择，一种是配好URL，另一种是直接替<code>keras</code>下载h5文件。有些企业内部服务器是不允许访问公网，所以这里我们推荐使用第二种方式，即先下载好<code>keras</code>的h5文件。</p>
<p>我们在可以访问公网的机器上部署程序时发现程序会自动下载<code>keras</code>的h5文件并默认存储为<code>~/.keras/models/efficientnetb3_notop.h5</code> 。</p>
<p>这样一来，我们将本地的<code>~/.keras</code> 目录拷贝到最终部署程序的服务器上，程序检测到本地已有的<code>keras</code>配置后就可以绕过<code>efficientnet.h5</code>文件的下载。建议将<code>~/.keras</code> 目录拷贝定义在Docker基础镜像文件中。</p>
<p><strong>注意一定要完整复制</strong><code>~/.keras</code> <strong>目录而不是仅</strong><code>efficientnet.h5</code><strong>文件，否则仍会下载</strong><code>efficientnet.h5</code><strong>文件且会因为</strong><code>~/.keras</code> <strong>目录非空报错。</strong></p>
]]></content:encoded></item><item><title><![CDATA[Google One 土耳其换区省钱全攻略]]></title><description><![CDATA[Google系产品覆盖了互联网生活中的方方面面，如流行的邮件服务Gamil，出色的相册管理平台Google Photos，常在墙外活动的小伙伴多半会遇到很多资料分享都通过Google Drive等等。相信本文的读者朋友多多少少都会使用过上述Google产品，每个 Google 帐号均享有 15 GB…]]></description><link>https://a-nomad.hashnode.dev/google-one</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/google-one</guid><category><![CDATA[Google Drive]]></category><category><![CDATA[Google One]]></category><category><![CDATA[Google Photos]]></category><category><![CDATA[Google]]></category><category><![CDATA[土耳其]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Wed, 31 Aug 2022 04:35:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661920375849/p5Yz3GgDn9.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/Htp6BoP9aZs">https://youtu.be/Htp6BoP9aZs</a></div>
<h2 id="heading-google">Google 存储空间</h2>
<p>Google系产品覆盖了互联网生活中的方方面面，如流行的邮件服务Gamil，出色的相册管理平台Google Photos，常在墙外活动的小伙伴多半会遇到很多资料分享都通过Google Drive等等。相信本文的读者朋友多多少少都会使用过上述Google产品，每个 Google 帐号均享有 15 GB 的免费存储空间，且该存储空间是在 Google 云端硬盘、Google 相册和 Gmail 中共用的。</p>
<p>对于Google系产品重度用户来说15G免费空间显然是不足的，尤其是在前几年Google突然宣布Google相册不在免费为用户提供无限图像存储后，15GB的空间光存储高清的照片和视频都有些捉襟见肘了，更别说还有Google Drive等共享存储空间。</p>
<h2 id="heading-google-vs-icloud">Google相册 VS  iCloud相册</h2>
<p>说起Google相册作为7年老用户这里还是要多聊几句，Google在承诺用户可永久免费存储高画质照片吸引了大量用户入坑后，却突然宣布于2021年6月1日相册资源占用空间，不再提供免费无限空间。作为国际大厂Google这一商业行为虽说可以理解但也确实有点不讲武德了。很多小伙伴在Google相册收费后开始寻找替代方案的，后来发现除了自建NAS外（适合有动手能力爱折腾的小伙伴），好用的同类竞品也只有Apple家的iCloud相册了。iCloud相册与Google相册价格基本持平，使用体验上也各有千秋，但iCloud相册仅对苹果生态用户使用友好，跨平台性较差，还有比较重要的一点是因为大家都懂的政策原因苹果在中国大陆区的iCloud数据交由云上贵州托管了，中国境内的政府数据审查力度和数据安全情况实在令人担忧，懂的都懂，抬杠的话就是你说的都对。出于数据安全性考虑和多生态协作考虑，作者作为一个资深苹果全家桶用户也毅然选择了Google相册。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661878010579/54bwZhIFt.jpg" alt="Google Photos VS iCloud Photos" /></p>
<h2 id="heading-google-one">Google One</h2>
<p>既然15G免费空间不够用，那选择升级到Google One就成了必然，Google One 是一种订阅方案，可为订阅用户提供100GB到30TB不等的存储空间，供 Google Drive、Gmail 和 Google Photos共用。此外，加入 Google One 后，用于还可以获享额外福利，如Google Play Store折扣、Google Photos高级编辑、移动端专用VPN等，并可与家人共享自己的会员资格。</p>
<h2 id="heading-5lu35qc85a55qu">价格对比</h2>
<p>Google One在中国大陆区显然是用不了的，相信大多数小伙伴都是选择美区服务，但美区的价格并不美丽。适合个人使用的几套方案价格如下表：</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>方案</td><td>容量</td><td>价格/月</td><td>价格/年</td></tr>
</thead>
<tbody>
<tr>
<td>基本版</td><td>100G</td><td>$ 1.99/￥13.75</td><td>$ 19.99 / ￥138.17</td></tr>
<tr>
<td>标准版</td><td>200G</td><td>$ 2.99/￥20.67</td><td>$ 29.99 / ￥207.29</td></tr>
<tr>
<td>付费版</td><td>2T</td><td>$ 9.99/￥69.05</td><td>$ 99.99 / ￥691.12</td></tr>
</tbody>
</table>
</div><p>相信美区的Google One的价格劝退了一大波的小伙伴，但是不要着急，相信常看Netflix的小伙伴都清楚土耳其的价格优势，因为通货膨胀和债务危机等原因导致土耳其里拉自2007年以来一路走低，甚至一度导致苹果在土耳其停售其产品。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661879717770/TeM8963XT.png" alt="土耳其里拉汇率走势" /></p>
<p>既然如此，我们就不妨来看下土区的Google One价格如何。</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>方案</td><td>容量</td><td>价格/月</td><td>价格/年</td></tr>
</thead>
<tbody>
<tr>
<td>基本版</td><td>100G</td><td>₺ 5.79/￥2.2</td><td>₺ 57.99 / ￥22.05</td></tr>
<tr>
<td>标准版</td><td>200G</td><td>₺ 11.59/￥4.41</td><td>₺ 115.99 / ￥43.95</td></tr>
<tr>
<td>付费版</td><td>2T</td><td>₺ 28.99/￥11.02</td><td>₺ 289.99 / ￥110.25</td></tr>
</tbody>
</table>
</div><p>果然不负众望，土区的网络服务价格简直不要太香，直接来一个一年2T的套餐每个月下来也才9.18人民币。</p>
<h2 id="heading-google-one">土区Google One</h2>
<p>既然土区价格这么香，下面我们就准备动手薅一波羊毛吧。</p>
<p>使用土区Google One需要以下基本物料：</p>
<ul>
<li>Google账号（现有老账号或新注册均可）</li>
<li>土耳其地址（Google一下即可）</li>
<li>国际信用卡或储蓄卡（必需）</li>
<li>土耳其原生IP（梯子或VPS）</li>
<li>土耳其手机号（非必需）</li>
</ul>
<p>Google账号是基本条件，我们既可以使用现有Google账号换区到土耳其或者新注册一个土耳其的Google账号都是可以，网上教程大多数注册一个土区的新账号会容易一些，但我亲自都尝试下来发现现有Google账号换区反而更简单些，果然实践是检验真理的唯一标准。</p>
<h3 id="heading-ip">土耳其IP</h3>
<p>特别需要注意的是不管选择哪种账号，都最好在土耳其本地网路环境下进行，<strong>至少要保证定语Google One付款是在土耳其网络环境下，否则大概率会出现最后一步付款失败的问题</strong>，那就需要你联系Google客服进行说明了，客服沟通流程和结果各异不能保证成功。</p>
<p>关于如何设置土耳其网络环境，大家可以使用土区梯子或者土区VPS等，网上有人推荐PureVPN的土区VPN，我亲测是不行的，挂土区线路后并不能获得土耳其原生IP在付款时会失败， PureVPN在苹果商店购买的可以获得7天试用，有兴趣的小伙伴也可以自行尝试。小编手里正好有伊斯坦布尔机房的独立原生IP的VPS，在VPS上操作肯定是没有任何问题。</p>
<p>这里也为找不到土区梯子的小伙伴安利下小编手上的土耳其VPS提供商 <a target="_blank" href="https://www.lightnode.com/zh-CN/home">LightNode</a>(麻烦厂商把广告费交一下😌)。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661915786421/c1klBu_3C.png" alt="LightNode VPS" /></p>
<p>VPS是可以选择按量付费，选择伊斯坦布尔节点基本上一小时0.2美刀就能搞定了。LightNode提供中文支持，操作异常简单，这里不做赘述。建立土区VPS后远程连接可能会比较慢，建议小伙伴挂梯子操作，我挂梯子连接有个1秒钟左右延迟，只是注册或修改个Google账号是没有任何问题的。</p>
<h3 id="heading-google">Google老账号换区（推荐）</h3>
<p>使用Google老账号换区到土耳其不仅操作简单且不需要迁移账号数据。</p>
<p>用户登录Google账号后通过<a target="_blank" href="https://pay.google.com/gp/w/home/paymentmethods">修改Google Pay中支付方式</a>来实现Google账号换区即可。如果现有账户中已存在付款资料可以创建新的付款资料选择土区即可。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661909514892/rYehoL91P.png" alt="创建土耳其付款资料" /></p>
<p>绑定准备好的国际信用卡，这里小编选择的是招行Visa全币种国际信用卡，也可以使用其它国际储蓄卡（亲测英国Wise银行的MasterCard也是可以的），银行卡绑定完成后会收到一笔2土耳其里拉的扣款，稍后会自动退款，。需要注意账号地区一定要选择土耳其，姓名处填写信用卡持有人的姓名，地址直接在Google地图上找一个真实存在的土耳其地址即可，小编填写的是伊斯坦布尔大学的地址。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661910018998/fbofsxzM8.png" alt="Google账号姓名和地址填写" /></p>
<p>付款资料创建完毕后将其设为默认付款方式，此时查看<a target="_blank" href="https://one.google.com/plans">Google One</a>等产品计价方式已经自动显示土耳其里拉了。下面就可以愉快的购买Google One服务了，这里推荐大家直接选择2T一年的方案。</p>
<h3 id="heading-google">新注册Google账号</h3>
<p><a target="_blank" href="https://accounts.google.com/signup">新注册土耳其地区的Google账号</a>是比较稳妥的一种方式，但操作起来略繁琐。</p>
<p>注册Google账号流程比较简单，这里只说明一点，如果在土区注册需要绑定土耳其的手机号接收验证码。网上免费的接码平台基本都是没戏的，这里也顺带安利一下小编使用的付费接码平台<a target="_blank" href="https://sms-man.com/cn?#">SMS@MAN</a>，可以选择土耳其提取注册Google账号，验证码收取0.34$。当然大家也可以注册国区，然后按照上面步骤付费资料到土区可以避免购买验证码。</p>
<p>账号注册完后跟上面步骤一致创建付款资料绑定信用卡，然后就可以愉快的购买Google One服务。</p>
<h3 id="heading-5l255so5lio5ywx5lqr">使用与共享</h3>
<p>当你购买了Google One之后就可以在全球任何地区使用Google One服务，无需土耳其网络。当然 你也可以与家人或小伙伴<a target="_blank" href="https://families.google.com/families">分享会员资格</a>，需要注意的是家庭当中的人账号也必须是土耳其地区的。账号地区修改方式也是通过修改付款资料地区来实现，步骤与前面相同不再赘述，如果你的家人朋友没有国际信用卡也不用担心，一张信用卡可以绑定多个Google账号，可以使用你手上的信用卡修改Google账号地区后再<a target="_blank" href="https://pay.google.com/gp/w/home/settings">移除付款资料</a>即可。</p>
<h3 id="heading-6lst5lmw5yw25a6d5pyn5yqh">购买其它服务</h3>
<p>通过上面的骚操作你现在已经拥有了土耳其地区的Google Pay，除了Google One之外，小伙伴们也可以土区低价购买其它服务，如YouTube Premium，YouTube频道会员，Google Play Store内的APP等。</p>
<p>当然推而广之，我们也可以通过土区账号购买其它平台服务，如Netflix等。</p>
<h3 id="heading-5ywz5lqo57ut6ls5">关于续费</h3>
<p>以上购买Google One的方式使用的是自己的信用卡，且这是走谷歌官方渠道，可以正常稳定使用，并且Google会到期自动扣费。你只需要保证信用卡状态正常即可。</p>
<p>当然你也可以随时在<a target="_blank" href="https://one.google.com/settings?expand=upgrade">Google One设置</a>中随时变更或取消订阅资格。</p>
<p>订阅Google One后如果不喜欢，理论上48小时内是可以申请退款的，但需要有正常理由联系客服申请，当然也有很多小伙伴退款失败的。订阅到期后如果不续费，Google会在半年内仍保留你的数据资料，提供用户备份下载。</p>
<blockquote>
<p>Google 兑换码</p>
</blockquote>
<p>建议大家不要使用Google兑换码购买Google One等服务。为防止网络诈骗，在使用Google兑换码时<strong>即使是全新注册的账号完全本地网络环境，依然需要提供兑换码正反面照片和兑换码购买渠道等补充信息</strong>，淘宝上购买的兑换码无法提供以上信息，成功兑换概率极低。</p>
<p>以上为小编在2022年8月折腾Google One的经历实录，当然除了Google One之外还有更多土区服务等待小伙伴们发现和分享，欢迎小伙伴们在文章下方留言讨论！</p>
<p>推荐大家按照视频讲解逐步操作，中间遇到任何问题可以在文末留言。完整视频内容可访问 <a target="_blank" href="https://youtu.be/Htp6BoP9aZs">YouTube</a> 查看，也欢迎加入 <a target="_blank" href="https://t.me/colinchang">TG群</a> 讨论交流。</p>
]]></content:encoded></item><item><title><![CDATA[Redis CLI 常用命令速查]]></title><description><![CDATA[昨天正在与老婆愉快的过着周末，突然客户电话打来： 客户：“喂，那个谁啊，我这登录设备受限，需要手机验证码进行二次校验啊” 我：“那你收个验证码不就得了” 客户：“公司账号绑定的是那个某某的手机号，他联系不上了呀” 我：“莫慌，我查一下阿里云短信服务后台的记录” 。。。…]]></description><link>https://a-nomad.hashnode.dev/redis-cli</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/redis-cli</guid><category><![CDATA[Redis]]></category><category><![CDATA[Redis Key]]></category><category><![CDATA[Redis String]]></category><category><![CDATA[Redis Hash]]></category><category><![CDATA[Redis List]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Mon, 15 Aug 2022 04:49:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1660471472292/AXzTlA9ac.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>昨天正在与老婆愉快的过着周末，突然客户电话打来：</p>
<p>客户：“喂，那个谁啊，我这登录设备受限，需要手机验证码进行二次校验啊”
我：“那你收个验证码不就得了”
客户：“公司账号绑定的是那个某某的手机号，他联系不上了呀”
我：“莫慌，我查一下阿里云短信服务后台的记录”
。。。
一查，阿里云后台贴心的将短信验证码内容优雅的表达为了<em>*</em>，那好吧，联系客户更换绑定手机，客户果断决绝且表示着急使用，务必尽快解决。</p>
<p>虽然周末度假的心情不再美丽，但客户既然提出了问题还得解决。问了下公司开发同事，短信验证码发送之后会将验证码内容临时写到 Redis 中，而 Redis 又是跑在了一个 Docker 容器中。那这问题就简单起来了，让客户正常发送下验证码，我进Redis容器通过Redis CLI 查看下验证码内容发给客户就得了，问题迎刃而解，继续美丽的周末。</p>
<p>废话说完，下面简单整理下进入 Redis 容器并通过控制台客户端查询数据的过程， shut up and just show the code.</p>
<pre><code class="lang-sh"><span class="hljs-comment"># 运行 Reids 容器</span>
docker run -it --rm -p 6379:6379 --name redis redis:alpine redis-server --requirepass 123456

<span class="hljs-comment"># 进入 Redis 容器</span>
docker <span class="hljs-built_in">exec</span> -it redis sh
</code></pre>
<p>通过上面指令先把模拟环境搞起来，随便运行个 Redis 容器，设置个 123456 的密码，完了进入容器内部。</p>
<p>下面我们通过控制台来连接Redis服务器。</p>
<pre><code class="lang-sh"><span class="hljs-comment"># 连接 redis 服务器  -h -p -a 参数分别指定 主机、端口、密码，可按需填写或省略</span>
redis-cli -h 127.0.0.1 -p 6379 -a 123456
</code></pre>
<h4 id="heading-key">Key</h4>
<pre><code class="lang-sh"><span class="hljs-comment"># 模糊搜索 key</span>
keys pattern

<span class="hljs-comment"># 判断 key 是否存在</span>
exists key

<span class="hljs-comment"># 返回 key所存值的类型</span>
<span class="hljs-built_in">type</span> key

<span class="hljs-comment"># 删除制定 key</span>
del key

<span class="hljs-comment"># 设置 key 过期时间</span>
expire key seconds
</code></pre>
<h4 id="heading-string">String</h4>
<pre><code class="lang-sh"><span class="hljs-comment"># 设置指定的key</span>
<span class="hljs-built_in">set</span> key value

<span class="hljs-comment"># 获取指定key的值</span>
get key

<span class="hljs-comment"># 将给定 key 的值设为 value ，并返回 key 的旧值(old value)</span>
getset key value

<span class="hljs-comment"># 返回 key 中字符串值的子字符</span>
getrange key start end

<span class="hljs-comment"># 只有在 key 不存在时设置 key 的值</span>
setnx key value

<span class="hljs-comment"># 返回 key 所储存的字符串值的长度</span>
strlen key

<span class="hljs-comment"># 如果 key 已经存在并且是一个字符串， append命令将指定的value追加到该key原来值（value）的末尾</span>
append key value
</code></pre>
<h4 id="heading-hash">Hash</h4>
<pre><code class="lang-sh"><span class="hljs-comment"># 获取在哈希表中指定 key 的所有字段和值</span>
hgetall key

<span class="hljs-comment">#    获取存储在哈希表中指定字段的值</span>
hget key field

<span class="hljs-comment"># 将哈希表 key 中的字段 field 的值设为 value</span>
hset key field value

<span class="hljs-comment"># 获取所有哈希表中的字段</span>
hkeys key

<span class="hljs-comment"># 获取哈希表中所有值</span>
hvals key

<span class="hljs-comment"># 查看哈希表 key 中，指定的字段是否存在</span>
hexists key field

<span class="hljs-comment"># 删除一个或多个哈希表字段</span>
hdel key field1 field2
</code></pre>
<h4 id="heading-list">List</h4>
<pre><code class="lang-sh"><span class="hljs-comment">#     通过索引获取列表中的元素</span>
lindex key index

<span class="hljs-comment"># 获取列表长度</span>
llen key

<span class="hljs-comment"># 移出并获取列表的第一个元素</span>
lpop key

<span class="hljs-comment"># 移除列表的最后一个元素，返回值为移除的元素</span>
rpop key

<span class="hljs-comment"># 将一个或多个值插入到列表头部</span>
lpush key value1 [value2]

<span class="hljs-comment"># 获取列表指定范围内的元素</span>
lrange key start stop

<span class="hljs-comment"># 通过索引设置列表元素的值</span>
lset key index value
</code></pre>
<h4 id="heading-set">Set</h4>
<pre><code class="lang-sh"><span class="hljs-comment"># 返回集合中的所有成员</span>
smembers key

<span class="hljs-comment"># 移除集合中一个或多个成员</span>
srem key member1 [member2]

<span class="hljs-comment"># 获取集合的成员数</span>
scard key

<span class="hljs-comment"># 判断 member 元素是否是集合 key 的成员</span>
sismember key member

<span class="hljs-comment"># 向集合添加一个或多个成员</span>
sadd key member1 [member2]

<span class="hljs-comment"># 返回集合之间的差集</span>
sdiff key1 [key2]

<span class="hljs-comment"># 返回给定集合的交集</span>
sinter key1 [key2]

<span class="hljs-comment"># 返回所有给定集合的并集</span>
sunion key1 [key2]
</code></pre>
<h4 id="heading-sorted-set">Sorted Set</h4>
<pre><code class="lang-sh"><span class="hljs-comment"># 向有序集合添加一个或多个成员，或者更新已存在成员的分数</span>
zadd key score1 member1 [score2 member2]

<span class="hljs-comment">#  获取有序集合的成员数</span>
zcard key

<span class="hljs-comment"># 计算在有序集合中指定区间分数的成员数</span>
zcount key min max

<span class="hljs-comment"># 在有序集合中计算指定字典区间内成员数量</span>
zlexcount key min max

<span class="hljs-comment"># 在有序集合中计算指定字典区间内成员数量</span>
zrange key start stop [WITHSCORES]

<span class="hljs-comment"># 通过字典区间返回有序集合的成员</span>
zrangebylex key min max [LIMIT offset count]

<span class="hljs-comment"># 通过分数返回有序集合指定区间内的成员</span>
zrangebyscore key min max [WITHSCORES] [LIMIT]

<span class="hljs-comment"># 返回有序集合中指定成员的索引</span>
zrank key member

<span class="hljs-comment"># 移除有序集合中的一个或多个成员</span>
zrem key member [member ...]

<span class="hljs-comment"># 移除有序集合中给定的字典区间的所有成员</span>
zremrangebylex key min max

<span class="hljs-comment"># 移除有序集合中给定的排名区间的所有成员</span>
zremrangebyrank key start stop

<span class="hljs-comment"># 移除有序集合中给定的分数区间的所有成员</span>
zremrangebyscore key min max

<span class="hljs-comment"># 返回有序集中指定区间内的成员，通过索引，分数从高到低</span>
zrevrange key start stop [WITHSCORES]

<span class="hljs-comment"># 返回有序集中指定分数区间内的成员，分数从高到低排序</span>
zrevrangebyscore key max min [WITHSCORES]

<span class="hljs-comment"># 返回有序集合中指定成员的排名，有序集成员按分数值递减(从大到小)排序</span>
zrevrank key member

<span class="hljs-comment"># 返回有序集中，成员的分数值</span>
zscore key member
</code></pre>
]]></content:encoded></item><item><title><![CDATA[不装了，摊牌了，我们去见家长了]]></title><description><![CDATA[经历了相识、相知、相爱的甜蜜旅程之后，终于我们去见家长了 👩‍❤️‍💋‍👩。 经过两周左右紧张痛苦的思想建设之后，终于在上周跟女友飞去了重庆拜访了她的家人。因为一些不可描述（自行脑补）的原因，去重庆之前我还是无比忐忑的，虽然心里也知道这一切终将是要面对的。虽是如此，但每每想到以后的跟老婆的甜蜜生活，心理…]]></description><link>https://a-nomad.hashnode.dev/meet-parents-in-law</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/meet-parents-in-law</guid><category><![CDATA[见父母]]></category><category><![CDATA[谈恋爱]]></category><category><![CDATA[岳父母]]></category><category><![CDATA[回娘家]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Sat, 13 Aug 2022 18:39:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1659500001537/RR_iSDVje.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>经历了相识、相知、相爱的甜蜜旅程之后，终于我们去见家长了 👩‍❤️‍💋‍👩。</p>
<p>经过两周左右紧张痛苦的思想建设之后，终于在上周跟女友飞去了重庆拜访了她的家人。因为一些不可描述（自行脑补）的原因，去重庆之前我还是无比忐忑的，虽然心里也知道这一切终将是要面对的。虽是如此，但每每想到以后的跟老婆的甜蜜生活，心理竟然平静了很多，甚至脸上还总是不自觉的挂着姨母笑😏。</p>
<p>决定要去见女友家人时，我特地买了下午的机票，算好了傍晚抵达再精心挑选好礼物去见家长，不至于白天到了大家坐在一起尴尬，没想到飞机延误了近四个小时，抵达重庆时已是晚上又打车到女友家人处已是晚上10 点左右。本来想好的去买礼物，万没想到女友家在城郊，附近也不熟悉，索性也没买礼物就两手空空与未来的岳父母进行了初次会晤，（作为一个来自礼仪之邦孔孟之乡的青年，我对不起家乡的名声啊）尴了尬了呀。</p>
<p>女友是川妹子，但父母家人大都在重庆工作生活，加上疫情管控（damn it），最终大家相约在女友小姨家。说来奇妙，虽然去重庆前心情有些忐忑，但真的见到女友家人的时候内心反而很平静。大家打过招呼，到家丈母娘为我们煮了水饺（感谢女友和丈母娘照顾我一个不吃辣的北方人🙏）。没想到晚饭后才是尴尬时刻，因为大家是初次见面，彼此都不熟悉，气氛逐渐转向尴尬😰，大家有一句没一句的闲聊，基本都是一来一回的 short conversation。幸好时间也晚了，大家就决定睡了。出于礼仪和体面考虑，丈母娘没让我跟女友一起睡。我独自一间房，也好，一夜无话。</p>
<p>第二天一早 5 点多丈母娘就起来为大家准备了早点。早饭后女友家人集体相约核酸（damn CCP），我终于得到喘息机会，趁此赶紧拉上女友去买礼物，没想到附近只有聊聊几个小超市而已，没办法，选了一个一头扎进去，哐哐填满了三个购物车，超市售货员也乐意为财神服务，帮我们送货上门。礼物搬回家也算是亡羊补牢了，保留最后一丝体面🤣。</p>
<p>大家核酸回来，丈母娘安排了大家一起去拜访外婆。听说外婆是家里的大家长，从小看大了女友这代人。老丈人开车载我们，路上一个小时，女友适时的靠在我肩头，让我内心稍平静了些，大家一路闲聊几句，我内心盘算着找个什么时机跟家长谈一下跟女友的事情比较合适呢，纠结中😫。</p>
<p>到外婆家，见到外婆、舅妈和两个小孩子，大家寒暄闲聊。外婆不苟言笑，看上去甚至有些严肃，后来发现外婆一向如此，即便是在自己生日宴上跟家人一起亦是如此（偷看了丈母娘的朋友圈🤐）。中午舅妈安排在餐馆午饭，舅妈点了一桌辣乎乎的饭菜（川渝人民谓之微辣），该来的总会来，不吃辣的我还是硬着头皮吃了几口，第二天嘴角就喜提了四个水泡。午餐间，大家闲聊，主要都是舅妈在分享育儿经，我看丈母娘和老丈人没有提我跟女友的事情，也就安心吃饭了。</p>
<p>席间我多少还是有些惶恐，一是因为第一次来见家长就要面对这么一大家子人且又几乎都是长辈，初来乍到的我实难融入；其次我又不碰烟酒（作为山东人的我因为某些历史原因已经戒酒6年了），这就意味着少了一个与烟酒不离的长辈们交流的渠道，人常说烟酒其实是与人沟通的一种方式，现在多少有点体悟了。不知道是否是因为我不喝酒的缘故，又或者是因为他们晚上还要开车，老丈人与作陪的姨夫也只是象征性的喝了几瓶啤酒而已。因为不能喝酒，席间我只能殷勤的为长辈们添点茶水。</p>
<p>好在时间不久午饭就结束了，午饭后大家又回到外婆家里。因为早上时间有限，来看望外婆时也只是简单带了一点礼物，本想着趁晚餐前的时间赶紧出去给老人和家里的小朋友买些礼物，顺带取些现金给外婆包个红包（听说是惯例，幸好丈母娘特意让女友转告，不然大概会失礼了）。到家放下东西就要出门，外婆赶紧阻拦说重庆这个天气，现在出去大概是要热死人的。好吧，既然如此，也只能宅家了，在沙发上百无聊赖的跟小朋友看着喜洋洋与灰太狼。因为早上起的太早，午饭后大家也都乏了，我也开始犯困，怎奈在外婆家也不好去休息就只能看着动画片强撑一会儿。女友也困的不行，但为了不让我一人尴尬，她愣说不困但又扛不住睡意，索性靠在我肩上睡着了。</p>
<p>终于熬到下午四点多钟，太阳也没那么晒了。我赶紧跟长辈们告假，带上女友出门shopping。午饭时正好看到附近有一家银行，就赶紧去取了些现金。但想到直接给长辈一叠现金略显唐突，包个红包会更好看一些吧，于是就决定买个🧧，谁曾想逛了附近几个大大小小的商场超市竟然都没有买到。想到之前在国外浪荡时常去711买各种小物件，于是找了附近最近的一家711便利店，电话确认了一下，不负所望店员说有的，赶紧打车前往。打车这一趟给我惊着了，地图显示骑行距离只有1.6公里，结果好家伙打车走了20分钟，全是弯弯绕绕的各种奇奇怪怪小路，不仅感叹山城名号果然名不虚传，幸好我没有选择步行或者骑共享单车，不然恐怕早就阵亡在重庆的烈日下了。</p>
<p>包好红包又给小朋友买了些小礼物后就赶紧往回走。因为约了大家晚上一起去逛洪崖洞，期间丈母娘也打了几通电话催我们赶紧回去。回到家，就看到丈母娘脸色不太美丽了，大概不太好跟我发作，就对着女友嘟囔了一句“什么事情这么重要，让一家人都在家等着”🥹。因为时间确实有些晚了，长辈们就商量取消了洪崖洞的行程。差不多也到了晚饭时间，在舅妈的建议下大家就移步了到小区楼下一家火锅店。不得不说重庆这座城市啊，遍地都是火锅店。有了中午的预热之后，晚饭气氛也缓和了许多，我也更加从容了。考虑到我不能吃辣，大家点了一个鸳鸯锅（据说是重庆人最后的倔强），不得不说重庆的火锅果然吃的巴适😎。</p>
<p>愉快的晚饭结束之后一家人开始三三两两的散步回家，我跟女友也打算在小区中溜达一会儿消消食。不一会儿，我刚跟女友打算回家，迎面就遇到了舅妈带着小朋友还有小姨和姨夫，一行人正要去洪崖洞，正好遇到了就邀请我们一起。初来乍到的我也是盛情难却，索性就跟着一起去了。本想着也不过就是去逛下夜市，一会儿也就回来了。轻轨行进走了好一会儿眼看还没到，直觉告诉我情况好像不太妙了。我就开始问家里都谁在家，不出所料，家里剩下外婆、丈母娘和老丈人三人。听到这，我瞬间脑子一热，这是要闹那样啊，家里这阵容明显是丈母娘为我坦白从宽精心准备的呀，我这儿还忐忑的找时机呢，没想到丈母娘早就为我准备好了，可惜没收到信号啊，此时的我满心悔恨，心想着来一趟重庆，关键的事情还没处理，结果就跑出来耍，丈母娘和老丈人该怎么看我呀，这是来旅行的嘛！此刻也只能期待这洪崖洞之旅能快点结束了。</p>
<p>不出意料，事情多半是朝着相反的方向发展。一行人到了洪崖洞，才发现这里就如同北京的南锣鼓巷，成都的春熙路。如果说重庆是一座火炉，那洪崖洞就是火炉Plus。来都来了没得办法，硬着头皮走进人潮，不知道在人声鼎沸中穿行了多久，终于挤进了洞中，草草的拍了几张打卡照，就想着能早点结束回家。没想到舅妈兴致还挺高的，一会儿买奶茶，一会儿买糕点。许久后大家终于走出来，本想着能回家了，没想到舅妈要带我们去解放碑打卡。兜兜转转来到解放碑，心中可谓是五味杂陈。路上女友告诉我，丈母娘在我们刚出门的时候就发消息给她说“洪崖洞不想去就不要去了”。听到这话，我瞬间无语了，不但错误过了丈母娘煞费苦心的安排，在女友的完美“助攻”下，又错过了丈母娘的“信号”，这下怕是要凉凉了。</p>
<p>伴随着内心的无奈和愧疚，最后我们终于结束了洪崖洞之行，乘坐轻轨回到家，真不知该以何脸面面对二老。回到外婆家已经快10点了，开门明显看到丈母娘脸上不悦，我也没话说，毕竟是自己作的，女友为了维护我也及时站出来跟丈母娘解释了几句。到家坐定，大家商量着要回小姨家，听说明天一家人要在小姨家聚餐，外婆也要搭姨夫的车一并过去。事不宜迟，大家说着就开始动身了。</p>
<p>跟来时一样，我和女友与丈母娘和老丈人一车。车子刚上高速没一会儿，我这儿正纠结要不要在车上就交代了跟女友的事，虽然场合并不优雅，但怎奈在重庆剩下的时间也不多了。女友也怂恿我不如在车上聊一下，反正也就我们四个人。正纠结呢就听老丈人说话了：“你俩这次回来就没什么要跟我们说的的吗？”。我一听这话，不说暗示了，这就赤裸裸是明示了，既然老丈人都开口了，我再扭扭捏捏就不合适了，我也就开门见山的说了：“叔叔阿姨，这次来拜访二老是一早就该做的，无奈疫情反复时间也不好安排就拖到了现在。我俩这次回来也想跟二老好好聊一下我们的事情，blah blah…”。从我跟女友怎么在一起聊到我俩未来怎么打算，车程一个多小时，我基本也聊了一个多小时。虽然期间女友跟丈母娘还顶了几句嘴，但整体还是比较顺畅的，大家把话也基本聊开了。果然困难的不是怎么表达，而是怎么开始，这里还是要感谢老丈人的助攻🤜。</p>
<p>讲真，虽然我事先做了各种设想，但还是没想到丈母娘和老丈人能够这么宽容。聊天过程中我强烈的感受到了丈母娘身上那种坚韧隐忍深沉的力量，还有老丈人的包容与无奈。写到这里，还是忍不住要在此感谢丈母娘与老丈人的包容，让我感受到被接受与被照顾的同时，也放下了心里的不安。果然父母终究不会与自己的孩子计较，他们要的也不过是你能回家，跟他们谈谈心罢了。</p>
<p>很快，大家来到小姨家，时间也到了凌晨。大家按部就班的洗刷完毕，各自安歇，一夜无话。</p>
<p>第二天，丈母娘还是一大清早的起来为一家人准备了早餐。因为周一早上要飞回深圳，早饭后我跟女友又去做了核酸。这里必须得无厘头的吐槽一下核酸检测了。在全世界各国都纷纷放开疫情管控的的今天，我党还在核心同志的亲自指挥亲自部署下，依然坚持为这么一个致死率甚至低于流感的大号感冒儿劳民伤财，“动态清零”，而且亲自操刀捏造了一堆莫名奇妙的神仙词汇，诸如“动态清零”、“社会面清零”、“全域静态管理”。后世闻知，贻笑大方。重庆核酸更甚，检测人员在玻璃窗里恨不得把棉签捅到喉咙里，而且竟然还要自费，政府强行要求核酸，强制公民为此买单，恐怕放到世界上任何一个地方都说不通吧，哀民生之多艰啊！牢骚完毕，核酸完成回到家后发现丈母娘已经在忙着做午饭了，本想着作为新姑爷的我应该主动帮忙打个下手，可多年不做饭的我基本也就是废柴一个就没去添乱了。</p>
<p>不多时，午饭时间到了，舅妈带着小朋友也赶了过来，终于一家人又坐在一起开始了happy的午餐。因为昨晚已经把跟女友的事情跟丈母娘和老丈人交代完了，心里没了包袱做什么也更加从容了。整体来说这次午餐是在愉快的氛围中进行的，这也是本次来拜访老丈人的重头戏。这次午饭从中午十二点多开始到结束时已是下午四点多钟，持续了四个多小时。酒过三巡后，老丈人开始真情流露：“我们含辛茹苦地把女儿养大了，刚读完书开始工作赚钱了，就被人给拐走了，去了别人家”，虽是句玩笑话，但也明显感受到了老丈人语气里的哽咽，说着老丈人端起酒杯朝我说到，“小张你一定要好好照顾好我女儿”，我赶紧起身举起酒杯，也许是被老丈人情绪感染，我感性的说：“叔叔您不要伤心，您不仅女儿没被拐走人还在，而且您从此还多了个女婿，咱们是一家人”。小姨夫也结果话茬说到，“一个女婿半个儿，咱们家又添人了”。老丈人回道：“冲你这句话，我得喝了这杯酒”，说罢一饮而尽。</p>
<p>也许是氛围到了，大家纷纷感性起来。席间姨夫聊到多年前自己没能花时间照顾儿子，没参与到孩子的成长过程，为此悔恨不已，说着也哽咽起来就赶紧离席去跟小朋友玩笑去了。席间，我跟女友也逐一为各位长辈们敬了酒表达了感谢，长辈们也纷纷表达了对我们的期许与叮嘱。</p>
<p>席间丈母娘表达很少，保持了隐忍与极大的情绪克制，只是默默的将我喜欢的菜放到我面前，而且为了照顾我几乎所有菜都没放辣（我猜这应该所算在重庆的最高礼遇了吧🙏），情绪表达于无声，反而更是强烈厚重，我心底不仅更多了一份对丈母娘的敬重与钦佩。老丈人呢，情绪和感情的表达更加外放一些，也许是感情到了，酒不醉人人自醉吧，老丈人明显的醉意朦胧，我们搀扶着他去休息了，主人离席，宴席很快也就结束了。饭后，大家都累了纷纷去休息，我跟女友便也小憩了一会儿。</p>
<p>不一会儿，天色渐晚，大家就着中午剩下的饭餐简单吃了一口。晚饭后在沙发上跟丈母娘闲聊了一会儿，顺带明确了一下昨晚聊的一些疑惑。聊到将来结婚的人员安排等问题时，丈母娘的安排既考虑到男方，又照顾到老丈人家人和外婆这边的家人，可谓是知世故而不世故。虽时间不长，但这次聊天却让我切身感受到了丈母娘的关怀，话语柔软而坚韧，沉稳而有力。</p>
<p>时间很快来到了周一早上，丈母娘还是一大早起来为大家准备了早餐。早饭后小姨夫开车送我们去机场，丈母娘和老丈人也要去上班，大家来到停车场告别。临别我拥抱了丈母娘和老丈人说了些道别的话，女友先是愣了下但后来也还是跟着拥抱了爸妈（车上听她说从来没有这么跟父母道别），车上她还是没绷住，热泪充盈了眼眶。来到机场，跟小姨夫道别后，我们也踏上了返回深圳的旅程。</p>
<p>在写下这些文字时已是回到深圳半月有余了，回想起这场特殊的旅程，已没有了当初的忐忑与不安，剩下的只是当时与家人相聚时的欢愉和快乐。现在每跟女友聊起，依然会感叹老丈人豁达的人生态度，当然更多的还是对丈母娘的宽容与照顾仍然心存感激，也希望我们可以很快成为真正的家人！</p>
<p>终于，现在我可以挺直腰杆对全世界宣布：摊牌了，不装了，我们见过父母了。咱也是老丈人钦定的驸马了，长公主要被咱娶回家了！🎇</p>
]]></content:encoded></item><item><title><![CDATA[Mac设置16:9屏幕显示比例修改分辨率,SwitchResX破解版下载]]></title><description><![CDATA[macOS屏幕比例默认为16:10,录屏1920 x 1080 等主流16:9主流分辨率会出现黑边.视频黑边出现的原因与分辨率显示效果原理,介绍了macOS HiDPI显示技术.提供macbook分辨率调整与消除视频黑边的几种方法]]></description><link>https://a-nomad.hashnode.dev/mac-resolution</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/mac-resolution</guid><category><![CDATA[mac]]></category><category><![CDATA[显示比例]]></category><category><![CDATA[分辨率]]></category><category><![CDATA[SwitchResX]]></category><category><![CDATA[resolution]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 26 Jul 2022 13:23:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658837207038/Ww-8UOkOQ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/Tur1OPpP6AY">https://youtu.be/Tur1OPpP6AY</a></div>
<p>这篇文章来给大家分享一下如何修改macOS的屏幕分辨率和显示比例，及 macOS的视网膜屏显示的<code>HiDPI</code>的相关知识。</p>
<p>文末有本文对应的视频教程，不喜欢读文字的朋友可以直接观看视频教程。</p>
<h2 id="heading-5yig6l6o546h5lio5bgp5bmv5pi56s65qu5l6l">分辨率与屏幕显示比例</h2>
<p>macOS屏幕比例默认大多为16:10（非严格）,录屏1920 x 1080等主流16:9主流分辨率便会在视频两侧出现较大的两条黑边。</p>
<p>如果你也是一个视频制作者或者自媒体人并且使用MacBook录制屏幕的话，想必也会被MacBook的屏幕显示比例所困扰。目前主流的视频平台支持的宽屏比例是16:9,如我们说的1080P分辨率为 1920 x 1080,而一贯特立独行的苹果公司也没在屏幕显示比例上的问题上也没有让我们失望，果断来了一个16:10。</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>MacBook 屏幕尺寸</td><td>分辨率</td></tr>
</thead>
<tbody>
<tr>
<td>13.3英寸 MacBook Pro</td><td>2560 x 1600</td></tr>
<tr>
<td>14.2英寸 MacBook Pro</td><td>3024 x 1964</td></tr>
<tr>
<td>15.6英寸 MacBook Pro</td><td>2880 x 1800</td></tr>
<tr>
<td>16.2 英寸 MacBook Pro</td><td>3456 x 2234</td></tr>
</tbody>
</table>
</div><p>16:10的屏幕显示比例会导致同等宽度下的视频内容比16:9更高，而为了让视频所有内容全部显示在屏幕当中，一般会有两种解决方案。第一种就是裁切视频内容，把16:10的内容裁切为16:9，这样会导致纵向部分视频内容被裁切掉。第二种是进行视频缩放，把纵向上视频内容缩放至占满屏幕，这样会导致视频宽度无法占满屏幕而在两侧出现黑边。</p>
<p>当然除了以上提到的两种解决方案，还要更粗暴的一种方式：外接一块16:9的屏幕进行录制。当然并不是所有朋友都有扩展显示器，那我们还可以通过纯软件的方式来修改MacBook的屏幕显示比例，比较流行的方式是使用 SwitchResX 修改屏幕分辨率和显示比例。</p>
<h2 id="heading-switchresx">SwitchResX 设置</h2>
<p>如下图所示，SwitchResX为我们提供了很多可选的屏幕分辨率。使用15寸的MacBook Pro(2880 x 1800)录制屏幕时我一般会选择 <code>1440 x 810 HiDPI</code> 的分辨率。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658836315232/2_C3LSSAw.jpg" alt="设置 mac分辨率" /></p>
<p>macOS中通过以下方式启动SwitchResX: <code>系统偏好设置</code> -&gt; <code>SwitchResX</code> -&gt; <code>About SwitchResX</code> -&gt; <code>SwitchResX Daemon</code> -&gt; <code>Launch Daemon</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658836411150/SSHMAKe03.jpg" alt="SwitchResX" /></p>
<p>SwitchResX在其官网提供了Single User和Site两种License售价分别为￥116.48和￥1,844.38，一般使用购买单用户版就足够了，土豪随意。</p>
<p>神马，你不想买，问我要破解版，好吧，那小编就勉为其难的把软件破解版链接给双手奉上。</p>
<p><a target="_blank" href="https://appstorrent.ru/1472-switchresx.html">点击下载SwitchResX破解版</a></p>
<p><em>本站所发布的视频、资源、软件以及其它内容均来自网络，版权争议与本站无关。仅限用于学习和研究目的，不得将上述内容用于商业或者非法用途，请务必在下载24个小时内删除。如果喜欢该内容，请支持正版内容，如有侵权请邮件与我们联系处理。</em></p>
<h2 id="heading-hidpi">HiDPI 技术</h2>
<p>可能有读者会疑问选择16:9的分辨率没问题，但是为什么不选择 2880 x 1620 高分辨率而选择了1440 x 810 HiDPI 。如果我们把分辨率设置为 2880 x 1620 全分辨率，所有的内容都会变得非常小，非常不便于用户使用。那读者朋友是不是又会疑问为什么把默认的 2880 x 1800 分辨率调低到 2880 x 1620 反而显示的内容更小了呢，这其实是苹果的HiDPI技术导致的。</p>
<p>HiDPI可以简单的理解为苹果公司专门为Retina显示器研发的一种显示技术，它可以把实际分辨率非常高的内容显示调整到非常适合用户观看的程度，可以简单的理解为把屏幕显示的内容作了一次等比缩放。比如15英寸的MacBook Pro的默认分辨率为2880x1400，而实际其效果相当于1440x900 HiDPI，这就相当于把屏幕的显示内容压缩到了原来的1/2的空间之内。这样一来就把更高分辨率更多内容更密集的像素点压缩到更小的空间当中，除了显示的内容不变之外，会让画面显示效果更加的细腻。</p>
<p>HiDPI也是黑白苹果的重要区别，黑苹果和白苹果最大的区别其实在显示效果上。同样一个网页，白苹果的显示就会细腻很多，而黑苹果颗粒感非常严重。</p>
<p>既然HiDPI如此牛X，那在macOS当中如何开启HiDPI呢？<code>系统偏好设置</code>-&gt;<code>显示器分辨率</code>-&gt;<code>缩放(默认)</code>。显示器默认或缩放默认两个选项都会开启HiDPI。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658836522705/Z8OfYc0Eh.jpg" alt="macOS HiDPI" /></p>
<h2 id="heading-6keg6akr5pwz56il">视频教程</h2>
<iframe src="//player.bilibili.com/player.html?aid=83710837&amp;bvid=BV1QJ41177AY&amp;cid=143201629&amp;page=1" style="zoom:280%;max-width:100%;max-height:100%"></iframe>

<p>推荐大家按照视频讲解逐步操作，中间遇到任何问题可以在文末留言。完整视频内容可访问 <a target="_blank" href="https://www.bilibili.com/video/av83710837/">B站</a> 查看，也欢迎加入 <a target="_blank" href="https://t.me/colinchang">TG群</a> 讨论交流。</p>
]]></content:encoded></item><item><title><![CDATA[Final Cut Pro X中文破解版免费下载安装视频教程，中英文切换与多语言设置]]></title><description><![CDATA[Final Cut Pro X 10.6.3 中文破解版免费下载激活,中英文语言设置与语言切换视频教程]]></description><link>https://a-nomad.hashnode.dev/fcpx</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/fcpx</guid><category><![CDATA[final cut pro]]></category><category><![CDATA[中文破解版]]></category><category><![CDATA[语言设置]]></category><category><![CDATA[language settings]]></category><category><![CDATA[破解版下载]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 26 Jul 2022 11:17:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658834010872/gra9gphqJ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>这篇文章给大家分享一下最新版Final Cut Pro X 多语言破解版的免费下载和语言切换设置。</p>
<p>经常做视频的朋友应给非常熟悉，Final Cut Pro 是 Mac OS X 平台上最好的视频剪辑软件，基于<code>Cocoa</code>编写，支持多路多核心处理器，支持GPU加速，支持后台渲染，可编辑从标清到4K的各种分辨率视频。</p>
<p>新版软件依然是1998大洋，这里我们分享的是著名的来自俄罗斯的免费破解版。这里我们也不向某些水站一样搞登录评论或者要买积分才给资源了，这就给观众老爷们附上免费下载链接和保姆级的视频教程，包教包会哦。</p>
<p><a target="_blank" href="https://appstorrent.ru/48-final-cut-pro.html">点击下载Final Cut Pro 10.6.3</a></p>
<p><em>本站所发布的视频、资源、软件以及其它内容均来自网络，版权争议与本站无关。仅限用于学习和研究目的，不得将上述内容用于商业或者非法用途，请务必在下载24个小时内删除。如果喜欢该内容，请支持正版内容，如有侵权请邮件与我们联系处理。</em></p>
<p>本以为到此就结束了，怎奈小编的观众老爷遍布世界，这不在YouTube上就有国外的粉丝问如何把软件默认的简体中文语言设置切换为英文或其它任意自定义语言，于是小编便不遗余力地操着一口小学英语录制了下面的视频教程，还请各位看官轻喷!</p>
<p>好吧，我知道有些人实在受不了小编的小学英文，那我就四句话总结下Final Cut Pro X的语言设定。</p>
<ul>
<li>打开<code>系统偏好设置</code>(open <code>system preference</code>)</li>
<li>选择<code>语言和地区</code>(click <code>language and area</code>)</li>
<li>点击 <code>App</code> 标签页(click <code>App</code> tab button)</li>
<li>点击左下角 <code>➕</code>添加新项，应用程序选择 Final Cut Pro,语言根据需要选择即可，如设置为英文。(click the <code>➕</code> button at the left bottom corner to add a new item, and choose "Final Cut Pro" for Application. As for the language, you can set it as any custom languages you like)</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658831875137/5kfDJDLID.jpg" alt="Final Cut Pro语言设置" /></p>
<p>下面为读者朋友附上视频操作教程。</p>
<iframe src="//player.bilibili.com/player.html?aid=83456076&amp;bvid=BV15J411J7gX&amp;cid=142772498&amp;page=1" style="zoom:280%;max-width:100%;max-height:100%"></iframe>

<p>推荐大家按照视频讲解逐步操作，中间遇到任何问题可以在文末留言。完整视频内容可访问 YouTube / B站 查看，也欢迎加入 TG群 讨论交流。</p>
]]></content:encoded></item><item><title><![CDATA[macOS微信多开,免认证登录,还能看到朋友撤回的信息]]></title><description><![CDATA[相信很多使用mac的小伙伴经常会遇到这样的问题，我有两个微信账户，但是微信却只能同时登录一个，这该如何是好呢？ 相信很多小伙伴也曾一度为iPhone/iPad不支持应用双开甚至多开功能而头疼不已，有的小伙伴为此以牺牲安全性为代价给心爱的iPhone进行了越狱，有的小伙伴干脆上了Android备用机了事。那同样…]]></description><link>https://a-nomad.hashnode.dev/macos</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/macos</guid><category><![CDATA[macOS]]></category><category><![CDATA[WeChat]]></category><category><![CDATA[微信多开]]></category><category><![CDATA[nohup]]></category><category><![CDATA[WeChatTweak]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Sat, 30 May 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658850868783/7dVTqAWCN.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/XW_hOcFOih4">https://youtu.be/XW_hOcFOih4</a></div>
<p>相信很多使用mac的小伙伴经常会遇到这样的问题，我有两个微信账户，但是微信却只能同时登录一个，这该如何是好呢？</p>
<p>相信很多小伙伴也曾一度为iPhone/iPad不支持应用双开甚至多开功能而头疼不已，有的小伙伴为此以牺牲安全性为代价给心爱的iPhone进行了越狱，有的小伙伴干脆上了Android备用机了事。那同样面对此问题，mac又当如何解决呢？</p>
<p>稍微深度一点的mac用户都知道，我们日常使用的很多App是直接支持双开的，比如QQ，只需要在QQ应用中使用 <code>Ctrl+N</code> 键就可以打开一个新的QQ应用登录多个账号，但为腾讯旗下产品的微信却不支持此方式进行双开，那爱折腾的小伙伴们当然就不能惯它这毛病了，下面我们就来搞微信多开。</p>
<h2 id="heading-1-nohup">1. nohup命令多开</h2>
<p>如果你不想同时安装多个微信App造成磁盘浪费，那也可以考虑使用<code>nohup</code>命令实现微信多开。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 微信多开</span>
nohup /Applications/WeChat.app/Contents/MacOS/WeChat &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>打开终端并执行以上命令就可以打开任意多个微信，执行命令后可以关闭终端，如想关闭时，直接退出微信程序即可。</p>
<p>下面我们简单介绍一下上述命令，如果读者对Linux命令不熟悉可以跳过以下内容。</p>
<p><code>nohup</code>命令含义为 <code>no hang up</code>, 表示不挂起，可以在系统后台运行指定命令。常用格式为：<code>nohup command [arguments] [ &amp;]</code> 。命令会忽略所有挂断(<code>SIGHUP</code>)信号。保持命令在后台运行，常以<code>&amp;</code>结尾，即使terminal（终端）关闭，或者电脑死机程序依然运行。</p>
<p>无论是否将 <code>nohup</code> 命令的输出重定向到终端，输出都将附加到当前目录的 <code>nohup.out</code> 文件中。如果当前目录的 <code>nohup.out</code> 文件不可写，输出重定向到 <code>$HOME/nohup.out</code> 文件中。如果没有文件能创建或打开以用于追加，那么<code>command</code> 参数指定的命令不可调用而退出。常见退出码有以下三种：</p>
<p><code>126</code>：可以查找但不能调用 <code>command</code> 参数指定的命令
<code>127</code>：<code>nohup</code> 命令发生错误或不能查找由 <code>command</code> 参数指定的命令
其他：<code>nohup</code> 命令的退出状态是 <code>command</code> 参数指定命令的退出状态
Unix内核系统中有如下三个常用的流：</p>
<pre><code class="lang-bash">  0：标准输入流 stdin
  1：标准输出流 stdout
  2：标准错误流 stderr
</code></pre>
<p>一般当我们用 <code>&gt; console.txt</code>，实际是 <code>1&gt;console.txt</code>的省略用法；<code>&lt; console.txt</code>，实际是 <code>0 &lt; console.txt</code>的省略用法。</p>
<p>多开命令中<code>2&gt;&amp;1</code>的意思是把标准错误(2)重定向到标准输出中(1)，而标准输出又导入文件<code>/dev/null</code>里面，所以结果是标准错误和标准输出都导入<code>/dev/null</code>里面了。 之所以将标准错误重定向到标准输出，是因为标准输出有缓冲区而标准错误则没有。</p>
<p><code>/dev/null</code>文件是一个无底洞但无法打开，任何东西都可以重定向到这里。一般存在大量<code>stdou</code>和<code>stderr</code>而又不关系其内容时，就可以定向到这里。</p>
<p>掌握了<code>nohup</code>命令，你不仅可以实现微信多开，还可以在后台运行任意想要的命令或应用程序。</p>
<h2 id="heading-2">2. 微信插件多开</h2>
<p>如果你既不想安装多个微信，又不想每次都执行复杂无感的命令，那接下来介绍的<a target="_blank" href="https://github.com/Sunnyyoung/WeChatTweak-macOS">WeChatTweak</a>就非常适合你了。</p>
<p>WeChatTweak是第三方爱好者为mac用户开发的微信插件，目前版本为1.1.3，其为微信扩展了如下功能：</p>
<ul>
<li>阻止消息撤回<ul>
<li>消息列表通知</li>
<li>系统通知</li>
<li>正常撤回自己发出的消息</li>
</ul>
</li>
<li>客户端无限多开<ul>
<li>右键 <code>Dock icon</code> 登录新的微信账号</li>
<li>命令行执行：<code>open -n /Applications/WeChat.app</code></li>
</ul>
</li>
<li>消息处理增强<ul>
<li>支持任意表情导出</li>
<li>支持二维码识别</li>
<li>支持右键直接复制链接</li>
<li>支持由系统默认浏览器直接打开</li>
</ul>
</li>
<li>UI界面设置面板</li>
<li>支持 <code>Alfred workflow</code></li>
<li>支持 <code>Launchbar action</code></li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># 安装</span>
git <span class="hljs-built_in">clone</span> https://github.com/Sunnyyoung/WeChatTweak-macOS.git &amp;&amp; <span class="hljs-built_in">cd</span> WeChatTweak-macOS &amp;&amp; sudo make install &amp;&amp; <span class="hljs-built_in">cd</span> .. &amp;&amp; rm -rf WeChatTweak-macOS

<span class="hljs-comment"># 卸载</span>
sudo make uninstallgit <span class="hljs-built_in">clone</span> https://github.com/Sunnyyoung/WeChatTweak-macOS.git &amp;&amp; <span class="hljs-built_in">cd</span> WeChatTweak-macOS &amp;&amp; sudo make install &amp;&amp; <span class="hljs-built_in">cd</span> .. &amp;&amp; rm -rf WeChatTweak-macOS<span class="hljs-comment"># 安装</span>
git <span class="hljs-built_in">clone</span> https://github.com/Sunnyyoung/WeChatTweak-macOS.git &amp;&amp; <span class="hljs-built_in">cd</span> WeChatTweak-macOS &amp;&amp; sudo make install &amp;&amp; <span class="hljs-built_in">cd</span> .. &amp;&amp; rm -rf WeChatTweak-macOS

<span class="hljs-comment"># 卸载</span>
sudo make uninstall
</code></pre>
<p>插件设置和使用如下图所示。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658851569811/lq8xyU6w2.jpg" alt="微信多开" />
需要注意的是微信更新或重装后此插件需要重装。</p>
<h2 id="heading-3">3. 视频教程</h2>
<iframe src="//player.bilibili.com/player.html?aid=200850075&amp;bvid=BV1fz411v7b9&amp;cid=197370173&amp;page=1" style="zoom:280%;max-width:100%;max-height:100%"></iframe>]]></content:encoded></item><item><title><![CDATA[基于Docker一键部署Atlassian Jira和Confluence环境,快速构建企业敏捷项目管理和知识共享系统]]></title><description><![CDATA[基于docker快速安装并破解jira和confluence系统,一键破解biggantt等付费插件]]></description><link>https://a-nomad.hashnode.dev/jira-confluence</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/jira-confluence</guid><category><![CDATA[JIRA]]></category><category><![CDATA[Confluence]]></category><category><![CDATA[Docker]]></category><category><![CDATA[atlassian]]></category><category><![CDATA[项目管理]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Wed, 13 May 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658850558332/mmTWKtW8M.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-1-jira">1. Jira——全球流行的项目管理系统</h2>
<p>JIRA是Atlassian公司出品的项目与事务跟踪工具，被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA中配置灵活、功能全面、部署简单、扩展丰富，其超过150项特性得到了全球115个国家超过19,000家客户的认可。</p>
<p>由于Jira各种优秀的特性使其在全球范围内流行，在国内有一些代理公司负责推广和运行Jira、Confluence等系统，代理公司一般会出售Jira授权，负责为客户公司安装部署系统，和对客户公司进行系统的技术培训。</p>
<p>以上的情况一定程度上导致了市面上鲜少有免费且系统体系的Jira系统培训教程，加之Jira安装部署过程较为繁琐，而且需要付费购买授权，导致了很多小规模的公司团队望而却步。</p>
<p>笔者曾在国内外多家企业供职期间使用Jira进行敏捷项目管理和软件缺陷跟踪，习惯于Jira的灵活易用，笔者也毫不犹豫地将Jira系统引进到了目前就职的公司。</p>
<p>随着以Docker为代表的容器化技术的兴起，使得运维工作变得异常简单高效，搭建各种环境也愈发的轻松自如。下面笔者就分享下如何基于Docker快速搭建Jira和Confluence环境，快速破解系统授权和常用付费扩展插件，希望这些分享可以一定程度上降低系统使用门槛，帮助到规模较小的公司或团队。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 克隆代码库</span>
git <span class="hljs-built_in">clone</span> -b jira https://github.com/colin-chang/jira-confluence.git

<span class="hljs-comment"># 创建挂载卷目录</span>
<span class="hljs-built_in">cd</span> jira-confluence &amp;&amp; sudo mkdir jira mysql &amp;&amp; sudo chmod -R 777 jira

<span class="hljs-comment"># 启动Jira+Mysql服务栈</span>
docker-compose up -d
</code></pre>
<p>当然在执行以上操作的前提是需要已经安装好了docker和docker-compose环境，常规安装参考docker官方文档安装即可，这里不再赘述。</p>
<p>在启动<code>Jira+Mysql</code>服务栈之前读者也可以根据自身需要修改<code>docker-compose.yml</code>配置文件，如修改数据库密码，设定容器挂载卷目录等。</p>
<p>服务栈启动完成后稍等片刻，就可以使用浏览器访问 <code>http://localhost:8080</code> 进行Jira系统初始化配置了。</p>
<p>首先切换语言为中文，并按照如下图所示的内容配置Jira数据库连接。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658849872449/NGh_qi_Wy.jpg" alt="Jira数据库配置" />
数据库连接信息要与<code>docker-compose.yml</code>中一致，如果没有任何修改则按照图中配置内容填写即可。配置过程中需要填写License时，可以执行以下命令获取。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 破解获取Jira License</span>
docker <span class="hljs-built_in">exec</span> atlassian-jira java -jar /var/agent/atlassian-agent.jar \
    -p jira \
    -m zhangcheng5468@gmail.com \
    -n zhangcheng5468@gmail.com \
    -o http://192.168.0.202 \
    -s 202
</code></pre>
<p>命令中<code>-m -n -o -s</code>信息可以根据实际情况修改。命令执行完成在终端中会输出相应的License，直接拷贝填入Web配置界面完成Jira系统破解。</p>
<h2 id="heading-2-confluence">2. Confluence——方便易用的知识共享系统</h2>
<p>Confluence是Atlassian公司出品的企业知识共享系统。借助Confluence系统可以减少电话交流、邮件沟通、文件传递、记录会议纪要等日常工作。Confluence常常扮演着团队协同平台、文档中心、知识库、问答平台、企业内部门户等角色。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658849995146/3L1n_khFA.png" alt="Confluence特征" /></p>
<h4 id="heading-5omt56c05zui6zif5a2k5bkb">打破团队孤岛</h4>
<p>开放、连接的结构使信息可以在企业所有人之间自由流动。</p>
<h4 id="heading-5bcg5a56kd6l2s5yyw5li66kgm5yqo">将对话转化为行动</h4>
<p>建立持久性知识，因此您永远不会在瞬态通知或聊天中失去出色的想法或情境。</p>
<h4 id="heading-5oma5pyj5yaf5a655zyo5zcm5lia5l2n572u">所有内容在同一位置</h4>
<p>从季度计划文档到新员工博客，Confluence 应有尽有。</p>
<h4 id="heading-5bu656ul5bya5ps5byp5zui6zif5zci5l2c55qe5pah5yyw">建立开放式团队合作的文化</h4>
<p>借助社交功能，每个级别的员工都可以发声进行表达、分享并接收反馈。 </p>
<p>了解了Confluence的强大和易用之后，我们来看如何快速安装部署Confluence系统。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 克隆代码库 </span>
git <span class="hljs-built_in">clone</span> -b confluence https://github.com/colin-chang/jira-confluence.git 

<span class="hljs-comment"># 创建挂载卷目录</span>
<span class="hljs-built_in">cd</span> jira-confluence &amp;&amp; sudo mkdir confluence mysql &amp;&amp; sudo chmod -R 777 confluence 

<span class="hljs-comment"># 启动Confluence+Mysql服务栈</span>
docker-compose up -d
</code></pre>
<p>在启动<code>Jira+Mysql</code>服务栈之前读者也可以根据自身需要修改<code>docker-compose.yml</code>配置文件，如修改数据库密码，设定容器挂载卷目录等。服务栈启动完成后稍等片刻，就可以使用浏览器访问 <code>http://localhost:8090</code> 进行Confluence系统初始化配置了。 首先切换语言为中文，并按照上一节图示内容配置Confluence数据库连接。</p>
<p>配置过程中需要填写License时，可以执行以下命令获取。</p>
<pre><code class="lang-bash">docker <span class="hljs-built_in">exec</span> atlassian-confluence java -jar /var/agent/atlassian-agent.jar \
    -p conf \
    -m zhangcheng5468@gmail.com \
    -n zhangcheng5468@gmail.com \
    -o http://192.168.0.202 \
    -s 202
</code></pre>
<h2 id="heading-3-jira-confluence">3. Jira + Confluence——强强联手，珠联璧合</h2>
<p>Jira和Confluence都是Atlassian公司的优秀产品，两者也经常配合使用，而且两套系统可以方便的无缝集成。下面我们来演示下如何一键部署两套系统并共享数据库服务。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 克隆代码库 </span>
git <span class="hljs-built_in">clone</span> https://github.com/colin-chang/jira-confluence.git

<span class="hljs-comment"># 创建挂载卷目录</span>
<span class="hljs-built_in">cd</span> jira-confluence &amp;&amp; sudo mkdir jira confluence mysql &amp;&amp; sudo chmod -R 777 jira confluence

<span class="hljs-comment"># 启动Confluence+Mysql服务栈</span>
docker-compose up -d
</code></pre>
<p>Jira和Confluence的License获取方式参见前面破解方式。</p>
<h2 id="heading-4">4. 付费插件破解</h2>
<p>Jira和Confluence除了自身强大功能外，还支持安装第三方插件，在其应用商店中有大量实用的插件，大部分好用的插件都是需要付费购买的，且一般都价格不菲。这对规模较小的团队和公司来说还是有一定门槛的，下面我们来看下如何简单快速的破解付费插件。</p>
<p>下面我们以流行的甘特图插件biggantt为例演示License获取过程。</p>
<pre><code class="lang-bash">docker <span class="hljs-built_in">exec</span> atlassian-jira java -jar /var/agent/atlassian-agent.jar \
    -p eu.softwareplant.biggantt \
    -m zhangcheng5468@gmail.com \
    -n zhangcheng5468@gmail.com \
    -o http://192.168.0.202 \
    -s 202
</code></pre>
<p>以上命令 <code>-p</code> 指定的参数为要破解软件的应用密钥，根据不同插接修改即可，不同插件的密钥获取方式如下图所示。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658850473224/52JIgh_D0.jpg" alt="Jira插件破解" /></p>
]]></content:encoded></item><item><title><![CDATA[替代简陋的Linux FTP命令,使用免费开源的Linux FTP客户端LFTP,快速同步目录,多线程断点续传]]></title><description><![CDATA[免费开源的linux ftp客户端lftp使用教程,常用命令和功能介绍]]></description><link>https://a-nomad.hashnode.dev/linux-ftplinux-ftplftp</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/linux-ftplinux-ftplftp</guid><category><![CDATA[ftp]]></category><category><![CDATA[Linux]]></category><category><![CDATA[lftp]]></category><category><![CDATA[多线程下载]]></category><category><![CDATA[断点续传]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 05 May 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658849182761/aTDwhcs0e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>最近由于公司业务需要迁移两台Linux服务器，而服务器上存储着大量的Docker挂载卷，迁移时就需要对这些重要数据进行备份。刚好手上有一台几个T的FTP服务器，于是决定将数据备份到FTP服务器。</p>
<p>由于要备份的文件体积有几十个GB之巨，不方便进行打包压缩，最理想的是直接将本地目录同步到FTP服务器。</p>
<p>尝试使用Linux默认的<code>ftp</code>命令发现此命令功能较弱，仅支持文件上传下载等简单操作，并不能支持目录上传下载，经过一番Google后，我们发现<code>lftp</code>是一个不错的替代选项。</p>
<p><code>lftp</code> 是一个免费开源且功能强大的Linux FTP客户端工具，它支持<code>ftp, http, sftp, fish, torrent</code>等网路协议，它支持命令补全，历史记录，允许多个后台任务执行等功能，它还有书签、排队、镜像、断点续传、多进程下载等功能，使用起来非常方便。</p>
<h3 id="heading-1">1. 安装</h3>
<p>可以直接使用Linux包管理工具安装即可，如：</p>
<pre><code class="lang-bash">sudo yum install lftp -y <span class="hljs-comment"># CentOS</span>
sudo apt install lftp -y <span class="hljs-comment"># Ubuntu</span>
</code></pre>
<h3 id="heading-2">2. 基本使用</h3>
<pre><code class="lang-bash">lftp [options] &lt;site&gt;
options:
 -f &lt;file&gt;           执行文件中的命令后退出
 -c &lt;cmd&gt;            执行命令后退出
 -e &lt;cmd&gt;            登录后后执行命令
 -u &lt;user&gt;[,&lt;pass&gt;]  用户名密码鉴权
 -p &lt;port&gt;           连接端口,默认21
site:                FTP服务器地址

<span class="hljs-comment"># 使用 Colin用户登录到192.168.0.211 FTP服务器</span>
lftp -u Colin,123123 192.168.0.211
</code></pre>
<h3 id="heading-3">3. 常用命令</h3>
<p><code>lftp</code>支持常见Shell命令，命令默认在服务端运行，多数情况下在命令前使用<code>!</code>则可以在本地执行。</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>命令</td><td>功能</td><td>备注</td></tr>
</thead>
<tbody>
<tr>
<td><code>ls</code></td><td>显示服务器文件列表</td><td><code>!ls</code>显示本地文件列表</td></tr>
<tr>
<td><code>cd</code></td><td>切换服务器目录</td><td></td></tr>
<tr>
<td><code>lcd</code></td><td>切换本地目录</td><td><code>!cd</code>不可用</td></tr>
<tr>
<td><code>pwd</code></td><td>显示服务器当前目录</td><td><code>lpwd</code>与<code>!pwd</code>均可显示当前本地目录</td></tr>
<tr>
<td><code>mkdir</code></td><td>创建服务端目录</td><td></td></tr>
<tr>
<td><code>mv</code></td><td>移动文件或目录</td><td></td></tr>
<tr>
<td><code>rm</code></td><td>删除服务端文件或目录</td><td><code>!rm</code>删除本地文件或目录</td></tr>
<tr>
<td><code>get</code></td><td>下载文件</td><td><code>get -c init.sql</code> #断点下载init.sql</td></tr>
<tr>
<td><code>mget</code></td><td>下载多个文件</td><td><code>mget -c *.txt</code> #下载当前目录所有txt文件</td></tr>
<tr>
<td><code>put</code></td><td>上传文件</td><td><code>put -c init.sql</code> #断点上传init.sql</td></tr>
<tr>
<td><code>mput</code></td><td>上传多个文件</td><td><code>mput -c *.txt</code> #上传当前目录所有txt文件</td></tr>
<tr>
<td><code>mirror</code></td><td>同步目录</td><td>上传或下载目录</td></tr>
</tbody>
</table>
</div><p>上传下载文件(<code>get/put/mget/mput</code>)可选参数：</p>
<pre><code class="lang-bash">-c      <span class="hljs-comment">#支持断点续传</span>
-E      <span class="hljs-comment">#传输后删除源文件</span>
-e      <span class="hljs-comment">#传输前删除目标文件</span>
-a      <span class="hljs-comment">#指定传输为 ascii 模式，默认为二进制模式</span>
-P N    <span class="hljs-comment">#最大同时传输文件</span>
-O      <span class="hljs-comment">#指定本地或远程存放目录</span>
</code></pre>
<p>同步目录(<code>mirror</code>)常用参数:</p>
<pre><code class="lang-bash">-c  <span class="hljs-comment">#支持断点续传</span>
-R  <span class="hljs-comment">#默认为下载远程到本地，使用 -R 参数则会上传本地到远程，两者任一缺省则使用同名。</span>
-n  <span class="hljs-comment">#只下载较新的档案，可用于增量备份</span>
-r  <span class="hljs-comment">#只下载当前目录，不递归目录</span>

<span class="hljs-comment"># 断点下载服务端jira目录到到当前目录</span>
mirror -c jira
<span class="hljs-comment"># 断点上传本地confluence目录到服务器</span>
mirror -c -R confluence
</code></pre>
<h3 id="heading-4">4.书签管理</h3>
<pre><code class="lang-bash">bookmark list       <span class="hljs-comment">#显示书签列表</span>
bookmark add name   <span class="hljs-comment">#保存当前连接为书签名字 name,下次打开可直接使用 lftp name</span>
bookmark edit name  <span class="hljs-comment">#编辑书签</span>
bookmark del name   <span class="hljs-comment">#删除书签</span>
</code></pre>
<h3 id="heading-5">5.高级配置</h3>
<p><code>lftp</code>全局配置文件默认为<code>/etc/lftp.conf</code>，我们可以按需修改其全局设置，如修改编码，设置主动模式，忽略SSL错误等。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 忽略SSL错误，可修复 Fatal Error: Certificate Verification: Not Trusted </span>
<span class="hljs-built_in">set</span> ssl:verify-certificate no

<span class="hljs-comment"># 启用主动模式，默认为被动模式。主动模式客户端开启数据传输端口，被动模式服务端开启数据传输端口</span>
<span class="hljs-built_in">set</span>  ftp:passive-mode  no

<span class="hljs-comment"># 设置服务端编码</span>
<span class="hljs-built_in">set</span>  ftp:charset  <span class="hljs-string">"gbk"</span>
<span class="hljs-comment"># 设置客户端编码</span>
<span class="hljs-built_in">set</span>  file:charset  <span class="hljs-string">"UTF-8"</span>
</code></pre>
]]></content:encoded></item><item><title><![CDATA[北美(美国/加拿大)电话区号一览表]]></title><description><![CDATA[最新北美(美国加拿大)手机电话区号一览表,方便查询美国加拿大电话归属地和选择Google Voice等手机号]]></description><link>https://a-nomad.hashnode.dev/5yyx576okoejuwbvsliqdmi7lpkcp55s16kd5yy65y35lia6kei6kgo</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/5yyx576okoejuwbvsliqdmi7lpkcp55s16kd5yy65y35lia6kei6kgo</guid><category><![CDATA[北美区号]]></category><category><![CDATA[美国区号]]></category><category><![CDATA[手机归属地]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Wed, 18 Mar 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658843548788/ycT5CZvG7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-2xx">2XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>201</td><td>新泽西州（过去曾包括全州，如今仍涵盖哈肯萨克、泽西市、霍博肯 以及新泽西州东北部，2001 年与551重叠）</td></tr>
<tr>
<td>202</td><td>华盛顿哥伦比亚特区</td></tr>
<tr>
<td>203</td><td>康涅狄格州（过去曾包括全州，如今仍涵盖布里奇波特、纽黑文、沃特伯里以及康涅狄格州西南部，2009 年 12 月与475重叠）</td></tr>
<tr>
<td>204</td><td>马尼托巴（2012 年 11 月与431重叠）</td></tr>
<tr>
<td>205</td><td>亚拉巴马州（过去曾包括全州，如今仍涵盖其最大城市伯明翰、塔斯卡卢萨以及亚拉巴马州的中部和西部）</td></tr>
<tr>
<td>206</td><td>华盛顿州（过去曾包括全州，如今仍涵盖班布里奇岛、默瑟岛和瓦雄岛的全部部分，以及布里恩、得梅因、莱克福里斯特帕克、诺曼底帕克、西雅图、西塔科、海岸线和塔克威勒；还有城市周围一些尚未组织的地区，另外还包括 Woodway 和埃德蒙兹的一部分）</td></tr>
<tr>
<td>207</td><td>缅因州（除埃斯特科特站）</td></tr>
<tr>
<td>208</td><td>爱达荷州</td></tr>
<tr>
<td>209</td><td>加利福尼亚州（斯托克顿、美熹德、莫德斯托、圣安的列斯以及加利福尼亚州中部，延伸至约塞米蒂国家公园）</td></tr>
<tr>
<td>210</td><td>得克萨斯州（圣安东尼奥地区）</td></tr>
<tr>
<td>211</td><td>社区服务电话</td></tr>
<tr>
<td>212</td><td>纽约州（纽约市,仅限于曼哈顿地区，大理石山除外，1992 年和 1999 年分别与646和917重叠）</td></tr>
<tr>
<td>213</td><td>加利福尼亚州（过去曾包括全州南部的三分之一，如今仅限于洛杉矶市中心部分）</td></tr>
<tr>
<td>214</td><td>得克萨斯州（达拉斯地区，与972合并，1999 年与469重叠）</td></tr>
<tr>
<td>215</td><td>宾夕法尼亚州（费城地区，蒙哥马利县东部，巴克斯县大部和伯克县部分地区，1997 年与267重叠，但445仍未执行）</td></tr>
<tr>
<td>216</td><td>俄亥俄州（克利夫兰地区）</td></tr>
<tr>
<td>217</td><td>伊利诺州（尚佩恩、迪凯特、厄巴纳、斯普林菲尔德 以及伊利诺州中部）</td></tr>
<tr>
<td>218</td><td>明尼苏达州（杜鲁斯、Thief River Falls、雷纳、穆尔黑德、伯米吉、国际瀑普特拉贾亚以及明尼苏达州北部）</td></tr>
<tr>
<td>219</td><td>印第安纳州（加里、芝加哥东部、哈蒙德、霍巴特、密歇根市、波蒂奇、瓦尔帕莱索以及印第安纳州西北部地区）</td></tr>
<tr>
<td>224</td><td>伊利诺州东北部，2002 年与847重叠</td></tr>
<tr>
<td>225</td><td>路易斯安那州（巴吞鲁日、唐纳森威尔、以及路易斯安那州中东部地区）</td></tr>
<tr>
<td>226</td><td>安大略（伦敦、温莎以及安大略省西南部，2006 年与519重叠）</td></tr>
<tr>
<td>227</td><td>马里兰州紧急区号，但尚未计划。</td></tr>
<tr>
<td>228</td><td>密西西比州（格尔夫波特、帕斯卡古拉、比洛克西、贝圣路易斯和密西西比州南部大多数地区）</td></tr>
<tr>
<td>229</td><td>佐治亚州（奥尔巴尼、瓦尔多斯塔、班布里奇、阿梅利克斯、菲兹杰拉德以及佐治亚州西南部）</td></tr>
<tr>
<td>231</td><td>密歇根州（特拉弗斯城、勒丁顿、马斯基根、佩托斯基以及密歇根州西北部）</td></tr>
<tr>
<td>234</td><td>俄亥俄州（扬斯敦、沃伦、阿克伦、坎顿以及俄亥俄州东北部，2000 年与330重叠）</td></tr>
<tr>
<td>236</td><td>不列颠哥伦比亚紧急区号，2013 年 6 月 1 日起执行。</td></tr>
<tr>
<td>239</td><td>佛罗里达州（开普科勒尔、麦尔兹堡、那不勒斯、大沼泽地市以及佛罗里达州西南部）</td></tr>
<tr>
<td>240</td><td>马里兰州（Hagerstown、罗克维尔、Cumberland 以及马里兰州西部，与301重叠）</td></tr>
<tr>
<td>242</td><td>巴哈马</td></tr>
<tr>
<td>246</td><td>巴巴多斯</td></tr>
<tr>
<td>248</td><td>密歇根州（奥克兰县以及底特律西北市郊，2002 年与947重叠）</td></tr>
<tr>
<td>250</td><td>不列颠哥伦比亚（大温地区除外，2008 年与778重叠）</td></tr>
<tr>
<td>251</td><td>亚拉巴马州（莫比尔、杰克逊以及亚拉巴马州西南部）</td></tr>
<tr>
<td>252</td><td>北卡罗莱那州（绿村、小鹰、落基山以及北卡罗莱那州东北部）</td></tr>
<tr>
<td>253</td><td>华盛顿州（塔科马、奥本、皮阿拉普、伊纳姆克洛、Spanaway 以及西雅图南部市郊）</td></tr>
<tr>
<td>254</td><td>得克萨斯州（韦科、基林、贝尔顿、斯蒂芬维尔和得克萨斯州中北部）</td></tr>
<tr>
<td>256</td><td>亚拉巴马州（弗洛伦斯、亨茨维尔、加兹登、安尼斯敦和亚拉巴马州北部及东部，2010 年与938重叠）</td></tr>
<tr>
<td>260</td><td>印第安纳州（韦恩堡、迪凯特、安哥拉、沃巴什和印第安纳州东北部）</td></tr>
<tr>
<td>262</td><td>威斯康星州（Menomonee Falls 瀑布、沃基肖、Racine、基诺莎和威斯康星州东南部除了密尔沃基地区，包括一部分的芝加哥都会区）</td></tr>
<tr>
<td>264</td><td>安圭拉</td></tr>
<tr>
<td>267</td><td>宾夕法尼亚州（费城地区，1997 年与215重叠，但445仍未执行）</td></tr>
<tr>
<td>268</td><td>安提瓜和巴布达</td></tr>
<tr>
<td>269</td><td>密歇根州 （巴特尔克里克、本顿港、阿勒冈、黑斯廷斯、卡拉马祖、圣约瑟夫和密歇根州西南部）</td></tr>
<tr>
<td>270</td><td>肯塔基州（帕迪尤卡、鲍灵格林、霍普金斯维尔、欧文斯伯勒、亨德森、伊丽莎白敦和肯塔基州西部）</td></tr>
<tr>
<td>276</td><td>弗吉尼亚州（阿宾登、威斯维尔、马丁斯维尔、布鲁菲尔和弗吉尼亚州西南部）</td></tr>
<tr>
<td>281</td><td>得克萨斯州（休斯敦地区，1999 年与713和832重叠）</td></tr>
<tr>
<td>283</td><td>拟议与俄亥俄州西南部的513重叠。</td></tr>
<tr>
<td>284</td><td>英属维尔京群岛</td></tr>
<tr>
<td>289</td><td>安大略省（哈密尔顿、多伦多郊区和安大略省中东南部，2001 年与905重叠）</td></tr>
</tbody>
</table>
</div><h3 id="heading-3xx">3XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>301</td><td>马里兰州（黑格斯顿、罗克维尔、坎伯兰和马里兰州西部，1997 年与240重叠，未来与227重叠）</td></tr>
<tr>
<td>302</td><td>特拉华州</td></tr>
<tr>
<td>303</td><td>科罗拉多州 （博尔德、朗蒙特、奥罗拉、丹佛和科罗拉多州中部，1998 年与720重叠）</td></tr>
<tr>
<td>304</td><td>西弗吉尼亚州（2009 年与681重叠）</td></tr>
<tr>
<td>305</td><td>佛罗里达州（过去曾包括全州，如今仍涵盖迈阿密-戴德县和门罗县、迈阿密、Homestead、Coral Gables、基韦斯特和佛罗利达礁岛群，1998 年与786重叠）</td></tr>
<tr>
<td>306</td><td>萨斯喀彻温（2013 年 5 月与639重叠）</td></tr>
<tr>
<td>307</td><td>怀俄明州</td></tr>
<tr>
<td>308</td><td>内布拉斯加州（北普拉特、斯科兹布拉夫、麦库克、格兰德艾兰和内布拉斯加州西部）</td></tr>
<tr>
<td>309</td><td>伊利诺州（皮奥里亚、莫林、岩岛、盖尔斯堡和伊利诺州中西部）</td></tr>
<tr>
<td>310</td><td>加利福尼亚州（马利布、托伦斯、比佛利山庄、圣塔莫尼卡、圣卡塔利娜岛 与西洛杉矶郊区，2006 年与424重叠）</td></tr>
<tr>
<td>311</td><td>本地或非紧急电话</td></tr>
<tr>
<td>312</td><td>伊利诺州（芝加哥市中心）</td></tr>
<tr>
<td>313</td><td>密歇根州（迪尔伯尔尼、底特律和底特律内部郊区）</td></tr>
<tr>
<td>314</td><td>密苏里州（圣路易斯、弗洛里亚、Crestwood、Affton、Granite City 和其郊区）</td></tr>
<tr>
<td>315</td><td>纽约州（锡拉丘兹、由提卡、沃特敦、和纽约州中北部）</td></tr>
<tr>
<td>316</td><td>堪萨斯州（威奇托、奥古斯塔、艾尔多拉多、马尔文和威奇托周边地区）</td></tr>
<tr>
<td>317</td><td>印第安纳州（印第安纳波利斯、格林伍德、Mooresville、Beech Grove 和印第安纳州中部）</td></tr>
<tr>
<td>318</td><td>路易斯安那州（什里夫波特、门罗、亚历山德里亚、菲舍尔、他鲁拉和路易斯安那州北部）</td></tr>
<tr>
<td>319</td><td>爱荷华州（伯灵顿、艾奥瓦城、锡达拉皮兹、滑铁卢和爱荷华州中东部及东南部）</td></tr>
<tr>
<td>320</td><td>明尼苏达州（圣云、莫里斯、哈钦森、砂岩、阿普尔顿和明尼苏达州中部）</td></tr>
<tr>
<td>321</td><td>佛罗里达州（奥兰多、可可比奇、佛罗里达州中东部与407部分重叠，同时也是太空海岸的专属号码，包括 Cape Canaveral、墨尔本、泰特斯维尔、可可比奇）</td></tr>
<tr>
<td>323</td><td>加利福尼亚州（佛罗伦萨和除了中心商务区以外的洛杉矶）</td></tr>
<tr>
<td>325</td><td>得克萨斯州（阿比林、斯威特沃特、斯奈德、圣安吉罗）</td></tr>
<tr>
<td>327</td><td>阿肯色州（东北部，2013 年与870重叠）</td></tr>
<tr>
<td>330</td><td>俄亥俄州（扬斯敦、沃伦、阿克伦、坎顿以及俄亥俄州东北部，2000 年与234重叠）</td></tr>
<tr>
<td>331</td><td>伊利诺伊州（芝加哥西部郊区，2007 年与630重叠）</td></tr>
<tr>
<td>334</td><td>亚拉巴马州（蒙哥马利、奥本、多森、塞尔玛和亚拉巴马州东南部）</td></tr>
<tr>
<td>336</td><td>北卡罗莱那州（温斯顿-赛伦、格林斯伯勒、威尔克斯伯勒和北卡罗莱那州西北部）</td></tr>
<tr>
<td>337</td><td>路易斯安那州（里斯维尔、查尔斯湖、拉法叶、DeRidder 和路易斯安那州西南部）</td></tr>
<tr>
<td>339</td><td>马萨诸塞州（Saugus、Norwood 和马萨诸塞州中东部，2001 年与781重叠）</td></tr>
<tr>
<td>340</td><td>美属维尔京群岛</td></tr>
<tr>
<td>341</td><td>旧金山湾区东岸紧急区号，但尚未计划。</td></tr>
<tr>
<td>343</td><td>安大略（渥太华和安大略东南部，2010 年与613重叠）</td></tr>
<tr>
<td>345</td><td>开曼群岛</td></tr>
<tr>
<td>347</td><td>纽约州（纽约市，1999 年与718和917（部分）重叠，2011 年与929重叠）</td></tr>
<tr>
<td>351</td><td>马萨诸塞州（菲奇堡、Peabody 和马萨诸塞州东北部，2001 年与978重叠）</td></tr>
<tr>
<td>352</td><td>佛罗里达州（盖恩斯维尔、奥卡拉、因弗内斯、邓内伦和佛罗里达州中部）</td></tr>
<tr>
<td>360</td><td>华盛顿州（贝灵厄姆、温哥华、阿伯丁、奥林匹亚和华盛顿州西部，而西雅图都会则是使用206，253及425）</td></tr>
<tr>
<td>361</td><td>得克萨斯州（科珀斯克里斯蒂、维多利亚、乔治西和得克萨斯州东南部）</td></tr>
<tr>
<td>364</td><td>肯塔基州紧急区号，2010 年 12 月取消拆分，今后会有重叠。</td></tr>
<tr>
<td>365</td><td>安大略（2013 年 3 月 25 日与905和289重叠）</td></tr>
<tr>
<td>369</td><td>加利福利亚州西北部紧急区号，但尚未计划。</td></tr>
<tr>
<td>380</td><td>俄亥俄州紧急区号，但尚未计划。</td></tr>
<tr>
<td>385</td><td>犹他州（2009 年与801重叠）</td></tr>
<tr>
<td>386</td><td>佛罗里达州（代托纳比奇、湖市、Live Oak、新月市和佛罗里达州北部及东部）</td></tr>
<tr>
<td>387</td><td>安大略紧急区号（大多地区），但未有计划。</td></tr>
</tbody>
</table>
</div><h3 id="heading-4xx">4XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>401</td><td>罗得岛州</td></tr>
<tr>
<td>402</td><td>内布拉斯加州（Valentine、林肯、Norfolk、奥马哈、Superior、Crofton 和内布拉斯加州东部，2011 年与531重叠）</td></tr>
<tr>
<td>403</td><td>亚伯达（卡加利、班夫、红鹿市、梅迪辛哈特、莱斯布里奇和亚伯达省南部，与587重叠）</td></tr>
<tr>
<td>404</td><td>佐治亚州（285 号州际公路内圈周围的亚特兰大地区，1998 年与678重叠）</td></tr>
<tr>
<td>405</td><td>俄克拉荷马州（俄克拉荷马城、埃德蒙、诺曼、Shawnee、Chickasha 和俄克拉荷马州中部）</td></tr>
<tr>
<td>406</td><td>蒙大拿州</td></tr>
<tr>
<td>407</td><td>佛罗里达州（奥兰多、可可比奇、St Cloud 佛罗里达州中东部，1999 年与321部分重叠）</td></tr>
<tr>
<td>408</td><td>加利福尼亚州（Los Gatos、米尔皮塔斯、森尼韦尔、库比蒂诺和圣何塞地区，2012 年 11 月 20 日与669重叠）</td></tr>
<tr>
<td>409</td><td>得克萨斯州（博蒙特、加尔维斯敦、阿瑟港、Jasper 和得克萨斯州东南部）</td></tr>
<tr>
<td>410</td><td>马里兰州（安那波利斯、巴尔的摩和马里兰州东部，1997 年和 2012 年分别与443和667重叠）</td></tr>
<tr>
<td>411</td><td>查号；1-区号-555-1212 亦可提供查号服务。</td></tr>
<tr>
<td>412</td><td>宾夕法尼亚州（匹兹堡地区，2001 年与878重叠）</td></tr>
<tr>
<td>413</td><td>马萨诸塞州（皮茨菲尔德、斯普林菲尔德、霍利奥克, 格林菲尔德和马萨诸塞州中部）</td></tr>
<tr>
<td>414</td><td>威斯康星州（密尔沃基、Greenfield、Oak Creek 和密尔沃基郊区）</td></tr>
<tr>
<td>415</td><td>加利福尼亚州（旧金山和马林县大多数地区）</td></tr>
<tr>
<td>416</td><td>安大略（多伦多，2001 年和 2013 年分别与647和437重叠）</td></tr>
<tr>
<td>417</td><td>密苏里州（乔普林、斯普林菲尔德、West Plains、拉马尔、勒布朗和密苏里州西南部）</td></tr>
<tr>
<td>418</td><td>魁北克（魁北克市、萨格奈 (魁北克)、加斯佩半岛、北科特迪瓦、Chibougamau、圣乔治，2008 年与581重叠）</td></tr>
<tr>
<td>419</td><td>俄亥俄州 （托莱多、Mansfield、Lima、Bryan、桑达斯基、鲍灵格林和俄亥俄州西北部，与567重叠）</td></tr>
<tr>
<td>423</td><td>田纳西州（布里斯托尔、Sweetwater、查塔努加和田纳西州东南部及东北部）</td></tr>
<tr>
<td>424</td><td>加利福尼亚州（洛杉矶县2006 年与310重叠）</td></tr>
<tr>
<td>425</td><td>华盛顿州（西雅图北部及东部郊区包括埃弗里特、贝尔维尤、雷德蒙德、Renton 和伊瑟阔）</td></tr>
<tr>
<td>430</td><td>得克萨斯州（得克萨斯州东北部 2003 年与903重叠）</td></tr>
<tr>
<td>431</td><td>马尼托巴（2012 年 11 月与204重叠）</td></tr>
<tr>
<td>432</td><td>得克萨斯州（得克萨斯州西部、大泉、米德兰、敖德萨）</td></tr>
<tr>
<td>434</td><td>维吉尼亚州（林奇堡、丹维尔、南山、夏律第镇和弗吉尼亚州中南部及南部边缘）</td></tr>
<tr>
<td>435</td><td>犹他州（洛根、圣乔治、摩押和整个犹他州除盐湖城、奥格登、普若佛和犹他州中部）</td></tr>
<tr>
<td>437</td><td>安大略（多伦多，2013 年 3 月 25 日与416和647重叠）</td></tr>
<tr>
<td>438</td><td>魁北克（蒙特利尔，2006 年与514重叠）</td></tr>
<tr>
<td>440</td><td>俄亥俄州（伊利里亚、洛兰、奥伯林、威灵顿和俄亥俄州中北部）</td></tr>
<tr>
<td>441</td><td>百慕大</td></tr>
<tr>
<td>443</td><td>马里兰州（安那波利斯、巴尔的摩和马里兰州东部，1997 年与410重叠）</td></tr>
<tr>
<td>445</td><td>宾夕法尼亚州（费城地区，原计划与215和467重叠，但仍未执行）</td></tr>
<tr>
<td>447</td><td>伊利诺州（拟议与217重叠）</td></tr>
<tr>
<td>450</td><td>魁北克（除了蒙特利尔以外的魁北克省中南部，2010 年与579重叠）</td></tr>
<tr>
<td>456</td><td>国际电话呼入</td></tr>
<tr>
<td>458</td><td>俄勒冈州（西北部，2010 年与541重叠）</td></tr>
<tr>
<td>464</td><td>伊利诺州（拟议与708重叠）</td></tr>
<tr>
<td>469</td><td>得克萨斯州（达拉斯地区，1999 年与214和972重叠）</td></tr>
<tr>
<td>470</td><td>佐治亚州（亚特兰大、Gainesville 和佐治亚州中北部，2010 年与404、678和770重叠）</td></tr>
<tr>
<td>473</td><td>格林纳达</td></tr>
<tr>
<td>475</td><td>康涅狄格州（布里奇波特、纽黑文、沃特伯里以及康涅狄格州西南部，2009 年与203重叠）</td></tr>
<tr>
<td>478</td><td>佐治亚州（梅肯、沃纳罗宾斯、Swainsboro、Wadley、米利奇维尔、Perry 和佐治亚州中部）</td></tr>
<tr>
<td>479</td><td>阿肯色州（史密斯堡、费耶特维尔和阿肯色州西北部）</td></tr>
<tr>
<td>480</td><td>亚利桑那州（钱德勒、吉尔伯特、坦佩、斯科茨代尔、菲尼克斯东部和菲尼克斯东部郊区）</td></tr>
<tr>
<td>484</td><td>宾夕法尼亚州（雷丁、阿伦敦、Chester 和宾夕法尼亚州东南部，1999 年与610重叠，后原计划与835重叠，2008 年取消）</td></tr>
</tbody>
</table>
</div><h3 id="heading-5xx">5XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>501</td><td>阿肯色州（过去曾包括全州，如今仍涵盖小石城、温泉城和阿肯色州中部）</td></tr>
<tr>
<td>502</td><td>肯塔基州（过去曾包括全州，如今仍涵盖路易维尔、法兰克福、Shelbyville、Bardstown 和中北肯塔基州部）</td></tr>
<tr>
<td>503</td><td>俄勒冈州 （过去曾包括全州，如今仍涵盖波特兰、赛伦、Tillamook、Astoria 和俄勒冈州西北部，2000 年与971重叠但不包括沿海地区，2008 年完成全面覆盖）</td></tr>
<tr>
<td>504</td><td>路易斯安那州 （过去曾包括全州，如今仍涵盖新奥尔良、Kenner、Metairie 和周边地区）</td></tr>
<tr>
<td>505</td><td>新墨西哥州（过去曾包括全州，如今仍涵盖该州的中部地区）</td></tr>
<tr>
<td>506</td><td>新伯伦瑞克</td></tr>
<tr>
<td>507</td><td>明尼苏达州（罗彻斯特、曼卡托、Worthington、马歇尔和明尼苏达州南部）</td></tr>
<tr>
<td>508</td><td>马萨诸塞州（伍斯特、新贝德福德和马萨诸塞州东南部，2001 年与774重叠）</td></tr>
<tr>
<td>509</td><td>华盛顿州（华盛顿州，包括斯波坎、雅基马、沃拉沃拉、Moses Lake 和埃伦斯堡）</td></tr>
<tr>
<td>510</td><td>加利福尼亚州 （海沃德、伯克利、奥克兰、里士满和费利蒙地区）</td></tr>
<tr>
<td>511</td><td>交换枢纽</td></tr>
<tr>
<td>512</td><td>得克萨斯州（奥斯汀、Lampasas、Bastrop、Milam 和得克萨斯州中部）</td></tr>
<tr>
<td>513</td><td>俄亥俄州（辛辛那提、Middletown、汉密尔顿、Norwood、Lebanon 和俄亥俄州西南部，原拟议与283重叠，后推迟）</td></tr>
<tr>
<td>514</td><td>魁北克（蒙特利尔岛，2006 年与438重叠）</td></tr>
<tr>
<td>515</td><td>爱荷华州（得梅因、艾姆斯、Fort Dodge、杰弗逊、Algona、印第安诺拉和爱荷华州中北部）</td></tr>
<tr>
<td>516</td><td>纽约州（纳苏县）</td></tr>
<tr>
<td>517</td><td>密歇根州（杰克逊、兰辛、Howell、Deerfield、Addison 和密歇根州中南部）</td></tr>
<tr>
<td>518</td><td>纽约州（普拉兹堡、萨拉拉克湖、奥本尼和纽约州东北部）</td></tr>
<tr>
<td>519</td><td>安大略（伦敦、温莎以及安大略省西南部，2006 年与226重叠）</td></tr>
<tr>
<td>520</td><td>亚历桑那州（图森和亚历桑那东南部）</td></tr>
<tr>
<td>521-529</td><td>个人通讯服务</td></tr>
<tr>
<td>530</td><td>加利福尼亚州（Alturas、奇科、雷丁、普拉塞维尔、特拉吉和加利福尼亚州东北部）</td></tr>
<tr>
<td>531</td><td>内布拉斯加州（Valentine、林肯、诺福克、奥马哈、Superior、Crofton 和内布拉斯加州东部，2011 年与402重叠）</td></tr>
<tr>
<td>532-533</td><td>个人通讯服务</td></tr>
<tr>
<td>534</td><td>威斯康星州（2011 年与402重叠）</td></tr>
<tr>
<td>538</td><td>个人通讯服务</td></tr>
<tr>
<td>539</td><td>俄克拉荷马州 （图尔萨、Bartlesville、McAlester、马斯科吉、Henrietta 和俄克拉荷马州东北部，2011 年与918重叠）</td></tr>
<tr>
<td>540</td><td>弗吉尼亚州（罗阿诺克、黑堡、哈里森堡、温彻斯特、弗雷德里克斯堡和弗吉尼亚州中北部）</td></tr>
<tr>
<td>541</td><td>俄勒冈州（梅德福、尤金、Burns 和除了西北部以外的俄勒冈州，2010 年与458重叠）</td></tr>
<tr>
<td>542-545、547、549</td><td>个人通讯服务</td></tr>
<tr>
<td>551</td><td>新泽西州（2001 年与551重叠）</td></tr>
<tr>
<td>552-554、556</td><td>个人通讯服务</td></tr>
<tr>
<td>555</td><td>查号台－555-1212 （其它号码通常是作为戏剧的号码来使用 [1]，如电影、电视等等）</td></tr>
<tr>
<td>557</td><td>密苏里州（计划与314重叠）</td></tr>
<tr>
<td>559</td><td>加利福尼亚州（佛雷斯诺、Madera、Hanford、维塞利亚和加利福尼亚州中部）</td></tr>
<tr>
<td>561</td><td>佛罗里达州（西棕榈滩、博卡拉顿、Boynton Beach、Delray Beach、Belle Glade 和佛罗里达州中东部）</td></tr>
<tr>
<td>562</td><td>加利福尼亚州（长滩 (加利福尼亚州)、Lakewood、Bellflower 和洛杉矶西南部郊区）</td></tr>
<tr>
<td>563</td><td>爱荷华州（Decorah、迪比克、柯灵顿、达文波特和爱荷华州东部及东北部）</td></tr>
<tr>
<td>564</td><td>华盛顿州（华盛顿州西部）（已取消）</td></tr>
<tr>
<td>566、569</td><td>个人通讯服务</td></tr>
<tr>
<td>567</td><td>俄亥俄州（托莱多、Mansfield、Lima、Bryan、桑达斯基、鲍灵格林和俄亥俄州西北部，2002 年与419重叠）</td></tr>
<tr>
<td>570</td><td>宾夕法尼亚州（斯克兰顿、威廉斯波特、威尔克斯-巴里、Susquehanna 和宾夕法尼亚州东北部，2013 年与272重叠）</td></tr>
<tr>
<td>571</td><td>弗吉尼亚州（弗吉尼亚州北部、亚历山大港、阿灵顿县、费尔法克斯县、威廉王子县和劳登县东部，2000 年与703重叠）</td></tr>
<tr>
<td>573</td><td>密苏里州（哥伦比亚、杰佛逊市、汉尼伯、普吉、Poplar Bluff 和除了圣路易斯的密苏里州东部）</td></tr>
<tr>
<td>574</td><td>印第安纳州（南本德、Logansport、埃尔克哈特、Warsaw、Nappanee 和印第安纳州中北部）</td></tr>
<tr>
<td>575</td><td>新墨西哥州</td></tr>
<tr>
<td>577-578</td><td>个人通讯服务</td></tr>
<tr>
<td>579</td><td>魁北克（除了蒙特利尔以外的魁北克省中南部，2010 年与450重叠）</td></tr>
<tr>
<td>580</td><td>俄克拉荷马州（Guymon、Hugo、伊尼德、劳顿、Ardmore、埃尔克城和俄克拉荷马州的南部及西部）</td></tr>
<tr>
<td>581</td><td>魁北克（魁北克市、萨格奈 (魁北克)、加斯佩半岛、北科特迪瓦、Chibougamau、圣乔治，2008 年与418重叠）</td></tr>
<tr>
<td>582</td><td>宾夕法尼亚州</td></tr>
<tr>
<td>585</td><td>纽约州（罗彻斯特、Wellsville、巴尔维亚、Olean 和纽约州西部）</td></tr>
<tr>
<td>586</td><td>密歇根州（Port Huron、弗林特、Flushing、沃伦和密歇根州东部，与810重叠）</td></tr>
<tr>
<td>587</td><td>艾伯塔（2008 年与403和780重叠）</td></tr>
<tr>
<td>588-589</td><td>个人通讯服务</td></tr>
</tbody>
</table>
</div><h3 id="heading-6xx">6XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>601</td><td>密西西比州（过去曾包括全州，如今仍涵盖杰克逊、Meridian、纳奇兹、麦库姆、哈蒂斯堡和密西西比州中部，2005 年与769重叠）</td></tr>
<tr>
<td>602</td><td>亚利桑那州（过去曾包括菲尼克斯全市，如今仍涵盖菲尼克斯中部）</td></tr>
<tr>
<td>603</td><td>新罕布什尔州</td></tr>
<tr>
<td>604</td><td>不列颠哥伦比亚（过去曾包括全省，如今仍涵盖大温地区、惠斯勒和不列颠哥伦比亚西南部，2001 年与778重叠，2008 年778全省覆盖，2013 年 6 月 1 日与236重叠）</td></tr>
<tr>
<td>605</td><td>南达科塔州</td></tr>
<tr>
<td>606</td><td>肯塔基州（阿世兰、哈扎德、萨默塞特、伦敦、科尔宾、Pikeville、Maysville 和肯塔基州东部）</td></tr>
<tr>
<td>607</td><td>纽约州（宾汉顿、埃尔迈拉市、巴斯、Norwich 和纽约州中南部）</td></tr>
<tr>
<td>608</td><td>威斯康星州（麦迪逊、La Crosse、普拉特维尔、Janesville 和威斯康星州西南部）</td></tr>
<tr>
<td>609</td><td>新泽西州（大西洋城、Brown Mills、特伦顿和新泽西州中部及东南部）</td></tr>
<tr>
<td>610</td><td>宾夕法尼亚州（雷丁、阿伦敦、Chester 和宾夕法尼亚州东南部，1999 年与484重叠，835于 2008 年取消）</td></tr>
<tr>
<td>611</td><td>固定电话报修和大多数移动电话运营商服务</td></tr>
<tr>
<td>612</td><td>明尼苏达州（明尼阿波利斯中央、斯内林堡、圣安东尼和 Richfield）</td></tr>
<tr>
<td>613</td><td>安大略（渥太华和安大略省东南部，2010 年与343重叠）</td></tr>
<tr>
<td>614</td><td>俄亥俄州（哥伦布地区）</td></tr>
<tr>
<td>615</td><td>田纳西州（纳许维尔、默弗里斯伯勒、斯普林菲尔德、黎巴嫩、狄克逊和田纳西州中北部）</td></tr>
<tr>
<td>616</td><td>密歇根州（大急流城、荷兰、格林维尔、Grand haven、Zeeland 和密歇根州中南部）</td></tr>
<tr>
<td>617</td><td>马萨诸塞州（波士顿、剑桥和邻近的波士顿郊区，2001 年与857重叠）</td></tr>
<tr>
<td>618</td><td>伊利诺州（卡本代尔、阿尔顿、森特勒林亚、Mount Vernon 和伊利诺州南部）</td></tr>
<tr>
<td>619</td><td>加利福尼亚州（National City、丘拉维斯塔、帝国湾、Otay 和圣迭戈地区）</td></tr>
<tr>
<td>620</td><td>堪萨斯州（Dodge City、Great Bend、Parsons、Liberal 和堪萨斯州南部）</td></tr>
<tr>
<td>623</td><td>亚利桑那州（格兰岱尔、博凯、皮奥里亚、菲尼克斯西部地区与西部郊区）</td></tr>
<tr>
<td>626</td><td>加利福尼亚州（亚凯迪亚、坦普尔市、柯汶那、帕沙第纳和洛杉矶东部郊区）</td></tr>
<tr>
<td>627</td><td>加利福尼亚州中北部紧急区号，但未有计划。</td></tr>
<tr>
<td>628</td><td>旧金山紧急区号，但未有计划。</td></tr>
<tr>
<td>630</td><td>伊利诺州（奥罗拉、Batavia、Geneva 和芝加哥西部郊区，2007 年与331重叠）</td></tr>
<tr>
<td>631</td><td>纽约州（苏福克县）</td></tr>
<tr>
<td>636</td><td>密苏里州（切斯特菲尔德、联盟、De Soto、特洛伊和密苏里州中东部）</td></tr>
<tr>
<td>639</td><td>萨斯喀彻温（2013 年 5 月与306重叠）</td></tr>
<tr>
<td>641</td><td>爱荷华州（梅森、奥斯卡卢萨、克雷斯顿、培拉、奥塔姆瓦、布里特、清湖、费尔菲尔德和爱荷华州中部）</td></tr>
<tr>
<td>646</td><td>纽约州（纽约，只限曼哈顿，1999 年与212及917重叠）</td></tr>
<tr>
<td>647</td><td>安大略（多伦多；2001 年与416重叠）</td></tr>
<tr>
<td>649</td><td>特克斯和凯科斯群岛</td></tr>
<tr>
<td>650</td><td>加利福尼亚州（圣马特奥、帕罗奥多、红木城、门洛帕克、以及一些在旧金山南部的郊区）</td></tr>
<tr>
<td>651</td><td>明尼苏达州（圣保罗、特罗姆、红翼、黑斯廷斯和明尼苏达州中东部）</td></tr>
<tr>
<td>657</td><td>加利福尼亚州（亨廷顿比奇、橙市、园林市、Tustin、阿纳海姆和橙县北部，2008 年与714重叠）</td></tr>
<tr>
<td>658</td><td>牙买加（未有计划）</td></tr>
<tr>
<td>659</td><td>亚拉巴马州（未有计划）</td></tr>
<tr>
<td>660</td><td>密苏里州（马绍尔、Sedalia、梅肯、Trenton、Maryville 和密苏里州中北部）</td></tr>
<tr>
<td>661</td><td>加利福尼亚州（贝克斯菲尔德、Mojave、圣塔克拉利塔、棕榈谷和加利福尼亚州中南部）</td></tr>
<tr>
<td>662</td><td>密西西比州（Greenville、图珀洛、Winona、哥伦布、Holly Springs 和密西西比州北部）</td></tr>
<tr>
<td>664</td><td>蒙塞拉特岛</td></tr>
<tr>
<td>667</td><td>马里兰州（2012 年 3 月与410和443重叠）</td></tr>
<tr>
<td>669</td><td>加利福利亚州（2012 年 11 月 20 日与408重叠）</td></tr>
<tr>
<td>670</td><td>北马里亚纳群岛</td></tr>
<tr>
<td>671</td><td>关岛</td></tr>
<tr>
<td>672</td><td>不列颠哥伦比亚（未有计划）</td></tr>
<tr>
<td>678</td><td>佐治亚州（亚特兰大、Gainesville 和佐治亚州中北部，1998 年与404、470重叠，2010 年770重叠）</td></tr>
<tr>
<td>679</td><td>密歇根州（未有计划）</td></tr>
<tr>
<td>681</td><td>西弗吉尼亚州（2009 年与304重叠）</td></tr>
<tr>
<td>682</td><td>得克萨斯州 （沃斯堡、阿灵顿、Grandview、Weatherford、Rhome，2000 年与817重叠）</td></tr>
<tr>
<td>684</td><td>美属萨摩亚</td></tr>
<tr>
<td>689</td><td>佛罗里达州（未有计划）</td></tr>
</tbody>
</table>
</div><h3 id="heading-7xx">7XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>701</td><td>北达科他州</td></tr>
<tr>
<td>702</td><td>内华达州（过去曾包括全州，如今仍涵盖几乎是克拉克县和拉斯维加斯地区的全部）</td></tr>
<tr>
<td>703</td><td>弗吉尼亚州（弗吉尼亚州北部，亚历山大港、阿灵顿县、费尔法克斯县、威廉王子县和劳登县东部，2000 年与571重叠）</td></tr>
<tr>
<td>704</td><td>北卡罗莱那州（过去曾包括全州，如今仍涵盖夏洛特、Kingstown 和北卡罗莱那州中南部，2001 年与980重叠）</td></tr>
<tr>
<td>705</td><td>安大略省（安大略省东北部和西部，北湾、大萨德伯里、苏圣玛丽、Timmins、Barrie，2011 年与249重叠）</td></tr>
<tr>
<td>706</td><td>佐治亚州（奥古斯塔、哥伦布、拉格兰奇、罗马、道尔顿和佐治亚州北部及中西部，与762重叠，1990 年前也是下加利福尼亚州的区号，也是北美地区几个非毗连区号之一。）</td></tr>
<tr>
<td>707</td><td>加利福尼亚州（圣罗莎、Fort Bragg、Crescent City、Eureka、Ukiah 和加利福尼亚州中北部）</td></tr>
<tr>
<td>708</td><td>伊利诺州（芝加哥高地、Tinley Park、西塞罗、奥克帕克、伯温、和芝加哥南部及内西部郊区）</td></tr>
<tr>
<td>709</td><td>纽芬兰与拉布拉多</td></tr>
<tr>
<td>710</td><td>美国政府服务</td></tr>
<tr>
<td>711</td><td>听障人士专用电话</td></tr>
<tr>
<td>712</td><td>爱荷华州（Estherville、康瑟尔布拉夫斯、苏城、希尔顿、丹尼森和爱荷华州西部，是美国没有变动的区号。）</td></tr>
<tr>
<td>713</td><td>得克萨斯州（休斯敦地区，与281和832重叠）</td></tr>
<tr>
<td>714</td><td>加利福尼亚州（亨廷顿比奇、橙市、园林市、图斯丁、阿纳海姆和橙县北部，2008 年与657重叠）</td></tr>
<tr>
<td>715</td><td>威斯康星州（莱茵兰德、沃索、Eau Claire、Rice Lake、Ashland 和威斯康星州北部，2010 年与534重叠）</td></tr>
<tr>
<td>716</td><td>纽约州（布法罗、Jamestown、尼亚加拉瀑普特拉贾亚、Tonawanda 和纽约州西部）</td></tr>
<tr>
<td>717</td><td>宾夕法尼亚州（哈里斯堡、盖茨堡、兰开斯特、约克和宾夕法尼亚州中南部）</td></tr>
<tr>
<td>718</td><td>纽约州（除了曼哈顿以外的纽约市，与347，917和929重叠）</td></tr>
<tr>
<td>719</td><td>科罗拉多州（莱德维尔、普韦布洛、科罗拉多斯普林斯、特里林达和罗拉多州东南部）</td></tr>
<tr>
<td>720</td><td>科罗拉多州（博尔德、朗蒙特、奥罗拉、丹佛和科罗拉多州中部，1998 年与303重叠）</td></tr>
<tr>
<td>721</td><td>荷属圣马丁（2011 年 9 月 30 日启用，原为+599。）</td></tr>
<tr>
<td>724</td><td>宾夕法尼亚州 （新城堡、华盛顿、尤宁敦和宾夕法尼亚州西南部，2001 年与878重叠）</td></tr>
<tr>
<td>727</td><td>佛罗里达州 （克利尔沃特、圣彼德斯堡、达尼丁和佛罗里达州中西部）</td></tr>
<tr>
<td>730</td><td>伊利诺州（计划与618重叠）</td></tr>
<tr>
<td>731</td><td>田纳西州（除了孟菲斯都会区以外的田纳西州西部，联合城、杰克逊、代尔斯堡、马丁、布朗斯维尔、巴黎、Bolivar）</td></tr>
<tr>
<td>732</td><td>新泽西州（新布朗斯维克、Neptune、Lakewood 和新泽西州中东部，2001 年与848重叠）</td></tr>
<tr>
<td>734</td><td>密歇根州（安娜堡、蒙罗、韦恩、伊浦希尔蒂和底特律西南部郊区）</td></tr>
<tr>
<td>737</td><td>得克萨斯州（2013 年 7 月与512重叠）</td></tr>
<tr>
<td>740</td><td>俄亥俄州（杰克逊、拉切斯特、玛丽埃塔、剑桥、曾斯维尔和俄亥俄州东南部）</td></tr>
<tr>
<td>742</td><td>安大略（计划与289和905重叠）</td></tr>
<tr>
<td>747</td><td>加利福尼亚州（格伦代尔、圣费尔南多、伯班克和洛杉矶北部郊区，2009 年 5 月 18 日与818重叠）</td></tr>
<tr>
<td>754</td><td>佛罗里达州（布劳沃德县的全部，罗德岱堡、好莱坞、科勒尔斯普林斯，2001 年与954重叠）</td></tr>
<tr>
<td>757</td><td>弗吉尼亚州（汉普顿锚地地区和弗吉尼亚州东岸）</td></tr>
<tr>
<td>758</td><td>圣卢西亚</td></tr>
<tr>
<td>760</td><td>加利福尼亚州（毕晓普、Ridgecrest、印第奥、巴斯托、埃尔森特罗、棕榈泉、圣迭戈县北部和加利福尼亚州东南部，2009 年与442重叠）</td></tr>
<tr>
<td>761</td><td>拟议与佛罗里达州棕榈滩县（561）重叠</td></tr>
<tr>
<td>762</td><td>乔治亚州（与706重叠）</td></tr>
<tr>
<td>763</td><td>明尼苏达州（Maple Grove、蒙蒂塞罗、爱尔克河、弗雷德里、布莱恩和明尼阿波利斯西北方地区）</td></tr>
<tr>
<td>764</td><td>旧金山湾区（含康特拉科斯塔县）紧急区号，但未有计划。</td></tr>
<tr>
<td>765</td><td>印第安纳州（拉法叶、马里恩、曼西、里士满和除了印地安那波利斯的印第安纳州中部）</td></tr>
<tr>
<td>767</td><td>多米尼克</td></tr>
<tr>
<td>769</td><td>密西西比州（杰克逊、Meridian、纳奇兹、麦库姆、哈蒂斯堡和密西西比州中部，2005 年与601重叠）</td></tr>
<tr>
<td>770</td><td>佐治亚州（玛丽埃塔、Cedartown 和285 号州际公路外围的佐治亚州中北部，2010 年和 1998 年分别与470及678重叠）</td></tr>
<tr>
<td>772</td><td>佛罗里达州（Vero Beach、圣露西港、匹尔斯堡、塞巴斯蒂安、斯图尔特和佛罗里达州中东部）</td></tr>
<tr>
<td>773</td><td>伊利诺州（除了商业区以外的芝加哥，2009 年与872重叠）</td></tr>
<tr>
<td>774</td><td>马萨诸塞州（伍斯特、新贝德福德和马萨诸塞州东南部，2001 年与508重叠）</td></tr>
<tr>
<td>775</td><td>内华达州（雷诺、埃尔科、伊利和除了拉斯维加斯以外的内华达州）</td></tr>
<tr>
<td>778</td><td>不列颠哥伦比亚（全省，2008 年前只覆盖大温地区、惠斯勒和西南部，2001 年与604重叠）</td></tr>
<tr>
<td>779</td><td>伊利诺州（2007 年与815重叠）</td></tr>
<tr>
<td>780</td><td>亚伯达（艾德蒙顿、贾斯珀、大草原、皮斯里弗和亚伯达省北部）</td></tr>
<tr>
<td>781</td><td>马萨诸塞州（索戈斯、诺伍德、沃尔瑟姆、沃本和其它沿着马萨诸塞州道 128的波士顿郊区，与339重叠）</td></tr>
<tr>
<td>782</td><td>新斯科舍和爱德华王子岛（分别于 2012 年和 2014 年与902重叠）</td></tr>
<tr>
<td>784</td><td>圣文森特和格林纳丁斯</td></tr>
<tr>
<td>785</td><td>堪萨斯州（Colby、托皮卡、Salina、曼哈顿、劳伦斯和堪萨斯州北部）</td></tr>
<tr>
<td>786</td><td>佛罗里达州（迈阿密-戴德县和门罗县，迈阿密、Homestead、Coral Gables、基韦斯特和佛罗利达礁岛群，1998 年与305重叠）</td></tr>
<tr>
<td>787</td><td>波多黎各 （2001 年与939重叠）</td></tr>
</tbody>
</table>
</div><h3 id="heading-8xx">8XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>800</td><td>免费电话</td></tr>
<tr>
<td>801</td><td>犹他州（过去曾包括全州，如今仍涵盖盐湖城、奥格登、普若佛、Payson、Bountiful 和犹他州中部，2009 年与385重叠）</td></tr>
<tr>
<td>802</td><td>佛蒙特州</td></tr>
<tr>
<td>803</td><td>南卡罗来纳州（过去曾包括全州，如今仍涵盖哥伦比亚、石头山、萨姆特、艾肯和南卡罗来纳州中部）</td></tr>
<tr>
<td>804</td><td>弗吉尼亚州（里士满、彼得斯堡、西点、Chester；弗吉尼亚州中东部、Northern Neck 和 Middle Peninsula）</td></tr>
<tr>
<td>805</td><td>加利福尼亚州（圣路易斯-奥比斯保、圣塔芭芭拉、文图拉和和加利福尼亚州中西南部海滨）</td></tr>
<tr>
<td>806</td><td>得克萨斯州（阿马里洛、拉巴克、加拿大、Perryton、Shamrock、达尔哈特和得克萨斯州魏兹曼）</td></tr>
<tr>
<td>807</td><td>安大略西北部（雷湾、凯诺拉、德莱顿、Geraldton、Fort William）</td></tr>
<tr>
<td>808</td><td>夏威夷州</td></tr>
<tr>
<td>809</td><td>多米尼加共和国（过去曾包括加勒比海大多数地区，2005 年和 2009 年与829和849重叠）</td></tr>
<tr>
<td>810</td><td>密歇根州（伦港、Flint、Flushing、沃伦和密歇根州东部）</td></tr>
<tr>
<td>811</td><td>原为大多数移动电话运营商服务，后独立使用。美国为“地下公用事业援助服务”；加拿大为“非紧急保健服务”。</td></tr>
<tr>
<td>812</td><td>印第安纳州（埃文斯维尔、新奥尔巴尼、特雷霍特、布卢明顿和印第安纳州南部）</td></tr>
<tr>
<td>813</td><td>佛罗里达州（坦帕、普兰特城、坦帕港和佛罗里达州中西部）</td></tr>
<tr>
<td>814</td><td>宾夕法尼亚州（伊利、沃伦、阿尔图纳、约翰斯敦、Meyersdale 和宾夕法尼亚州中部及西北部）</td></tr>
<tr>
<td>815</td><td>伊利诺州（LaSalle、迪卡尔布、罗克福德、自由港和伊利诺州北部，包括芝加哥地区的一部分，例如乔利埃特、Romeoville 和普兰菲尔德，2007 年 3 月 17 日与779重叠）</td></tr>
<tr>
<td>816</td><td>密苏里州（堪萨斯城、圣约瑟夫、独立城、哈里森维尔和密苏里州中西部）</td></tr>
<tr>
<td>817</td><td>得克萨斯州（沃斯堡、阿灵顿、格兰德、Weatherford、Rhome，2000 年与682重叠）</td></tr>
<tr>
<td>818</td><td>加利福尼亚州（格伦代尔、圣费尔南多、伯班克和洛杉矶北部郊区，2009 年与747重叠）</td></tr>
<tr>
<td>819</td><td>魁北克（魁北克省西部）</td></tr>
<tr>
<td>822</td><td>免费电话（扩展使用号码）</td></tr>
<tr>
<td>825</td><td>艾伯塔（未来计划）</td></tr>
<tr>
<td>828</td><td>北卡罗莱那州（阿什维尔、Brevard、Morganton、墨菲和北卡罗莱那州西部）</td></tr>
<tr>
<td>829</td><td>多米尼加共和国（2005 年与809重叠）</td></tr>
<tr>
<td>830</td><td>得克萨斯州（尤瓦尔迪、新布朗菲尔斯、克尔维尔、Eagle Pass 和得克萨斯州西南部）</td></tr>
<tr>
<td>831</td><td>加利福尼亚州（萨利纳斯、霍尼斯特、蒙特雷、圣塔克鲁兹和加利福尼亚州中西部海滨）</td></tr>
<tr>
<td>832</td><td>得克萨斯州（休斯敦地区，1999 年与281和713重叠）</td></tr>
<tr>
<td>833</td><td>免费电话（扩展使用号码）</td></tr>
<tr>
<td>835</td><td>宾夕法尼亚州 （雷丁、阿伦敦和宾夕法尼亚州东南部，原与484和610重叠，后于 2008 年取消）</td></tr>
<tr>
<td>843</td><td>南卡罗来纳州（佛罗伦萨、麦尔托海滩、查尔斯顿、希尔顿头岛和南卡罗来纳州东部）</td></tr>
<tr>
<td>844</td><td>免费电话（扩展使用号码）</td></tr>
<tr>
<td>845</td><td>纽约州（波启浦夕市、米德尔顿、西点、纽堡和纽约州东南部）</td></tr>
<tr>
<td>847</td><td>伊利诺州（Wauconda、沃基根、Des Plaines、芝加哥西北市郊以及伊利诺州东北部，1998 年与224重叠）</td></tr>
<tr>
<td>850</td><td>佛罗里达州（彭萨科拉、塔拉哈西、巴拿马城和佛罗里达魏兹曼）</td></tr>
<tr>
<td>855</td><td>免费电话</td></tr>
<tr>
<td>856</td><td>新泽西州（文兰、樱桃山、肯顿、米尔维尔和新泽西州中南部）</td></tr>
<tr>
<td>857</td><td>马萨诸塞州（波士顿、剑桥和邻近的波士顿郊区，2001 年与617重叠）</td></tr>
<tr>
<td>858</td><td>加利福尼亚州（德尔马尔、拉霍亚和圣迭戈北部郊区）</td></tr>
<tr>
<td>859</td><td>肯塔基州（列克星敦、里士满、丹维尔、卡温顿、佛罗伦萨、Mount Sterling 和肯塔基州中北部）</td></tr>
<tr>
<td>860</td><td>康涅狄格州（布里斯托尔、哈特福德、诺威奇和康涅狄格州北部及东部，2011 年与959重叠）</td></tr>
<tr>
<td>862</td><td>新泽西州（2001 年与973重叠）</td></tr>
<tr>
<td>863</td><td>佛罗里达州（Avon Park、Clewiston、莱克兰、巴托、Sebring、Winter Haven 和佛罗里达州中南部）</td></tr>
<tr>
<td>864</td><td>南卡罗来纳州（格林维尔、斯帕坦堡、Anderson 和南卡罗来纳州西部）</td></tr>
<tr>
<td>865</td><td>田纳西州（诺克斯维尔、波多诺伏、Jefferson City、橡树岭和田纳西州东部中部）</td></tr>
<tr>
<td>866</td><td>免费电话</td></tr>
<tr>
<td>867</td><td>育空、西北地区和努纳武特</td></tr>
<tr>
<td>868</td><td>特立尼达和多巴哥</td></tr>
<tr>
<td>869</td><td>圣基茨和尼维斯</td></tr>
<tr>
<td>870</td><td>阿肯色州（特克萨卡纳、Mountain Home、派恩布拉斯和阿肯色州南部、东部及东北部，2013 年与327重叠）</td></tr>
<tr>
<td>872</td><td>伊利诺州（2009 年 11 月 7 日与312和773重叠）</td></tr>
<tr>
<td>873</td><td>魁北克（2013 年 6 月 1 日与819重叠）</td></tr>
<tr>
<td>876</td><td>牙买加</td></tr>
<tr>
<td>877</td><td>免费电话</td></tr>
<tr>
<td>878</td><td>宾夕法尼亚州 （匹兹堡、新城堡和宾夕法尼亚州西南部，2001 年与412和724重叠）</td></tr>
<tr>
<td>888</td><td>免费电话</td></tr>
</tbody>
</table>
</div><h3 id="heading-9xx">9XX</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>区号</td><td>地区</td></tr>
</thead>
<tbody>
<tr>
<td>900</td><td>特别区号</td></tr>
<tr>
<td>901</td><td>田纳西州（过去曾包括全州，如今仍涵盖孟菲斯、卡文顿、塞默维尔和田纳西州西南部）</td></tr>
<tr>
<td>902</td><td>新斯科舍和爱德华王子岛（过去曾包括新不伦斯维克，2012 年和 2014 年分别与782重叠）</td></tr>
<tr>
<td>903</td><td>得克萨斯州（泰勒、谢尔曼、长景、马歇尔、帕勒斯坦、杰克逊维尔、克泰基和得克萨斯州东北部，2003 年与430重叠，1990 年前亦在墨西哥使用）</td></tr>
<tr>
<td>904</td><td>佛罗里达州（杰克逊维尔、圣奥古斯丁、Starke、Green Cove Springs 和佛罗里达州东北部）</td></tr>
<tr>
<td>905</td><td>安大略（哈密尔顿、大多伦多地区和安大略省中东南部，2001 年和 2013 年分别与289和365重叠，1991 年前亦在墨西哥使用）</td></tr>
<tr>
<td>906</td><td>密歇根州（密歇根上半岛）</td></tr>
<tr>
<td>907</td><td>阿拉斯加州</td></tr>
<tr>
<td>908</td><td>新泽西州（华盛顿、伊丽莎白、沃伦、普兰菲尔德和新泽西州中西部）</td></tr>
<tr>
<td>909</td><td>加利福尼亚州（圣贝纳迪诺、安大略、波莫纳、奇诺和里弗赛德县)</td></tr>
<tr>
<td>910</td><td>北卡罗莱那州（费耶特维尔、威尔明顿、兰伯顿和北卡罗莱那州东南部）</td></tr>
<tr>
<td>911</td><td>紧急电话</td></tr>
<tr>
<td>912</td><td>佐治亚州（萨凡纳、Vidalia、维克罗斯、布伦斯维克、道格拉斯和佐治亚州东南部）</td></tr>
<tr>
<td>913</td><td>堪萨斯州（堪萨斯城、欧弗兰帕克、Paola、莱温沃斯和堪萨斯州东端）</td></tr>
<tr>
<td>914</td><td>纽约州（西彻斯特县）</td></tr>
<tr>
<td>915</td><td>得克萨斯州（厄尔巴索县的全部和一部分的哈得斯佩斯县）</td></tr>
<tr>
<td>916</td><td>加利福尼亚州（过去曾包括该州的三分之一，如今仍涵盖萨克拉门托地区）</td></tr>
<tr>
<td>917</td><td>纽约州（纽约市（限手机用户），与212和718重叠）</td></tr>
<tr>
<td>918</td><td>俄克拉荷马州（图尔萨、巴托斯维、麦卡莱斯特、马斯科吉、Henrietta 和俄克拉荷马州东北部，2011 年与539重叠）</td></tr>
<tr>
<td>919</td><td>北卡罗莱那州（罗利、达勒姆、教堂山、牛津和北卡罗莱那州中北部）</td></tr>
<tr>
<td>920</td><td>威斯康星州（希波干、奥什克什、格林贝、马尼托沃克、Fond Du Lac 和威斯康星州东部，2010 年与274重叠）</td></tr>
<tr>
<td>925</td><td>加利福尼亚州（普莱森顿、马丁内兹、康科德、利弗莫尔、Walnut Creek 和都柏林地区）</td></tr>
<tr>
<td>928</td><td>亚利桑那州（旗杆市、金曼、普雷斯科特、尤马和亚利桑那州北部及西部）</td></tr>
<tr>
<td>929</td><td>纽约州（2011 年与347，718和917重叠）</td></tr>
<tr>
<td>931</td><td>田纳西州（田纳西州中部（纳什维尔都会区除外，区号615），克拉克斯维尔、哥伦比亚、曼切斯特、库克维尔）</td></tr>
<tr>
<td>935</td><td>圣迭戈紧急区号，但未有计划。</td></tr>
<tr>
<td>936</td><td>得克萨斯州（Nacogdoches、拉夫金、Conroe、Huntsville、Center 和得克萨斯州东南部）</td></tr>
<tr>
<td>937</td><td>俄亥俄州（Marysville、斯普林菲尔德、代顿、西尔斯伯勒和除了辛辛那提地区以外的俄亥俄州西南部）</td></tr>
<tr>
<td>938</td><td>亚拉巴马州（2010 年与256重叠）</td></tr>
<tr>
<td>939</td><td>波多黎各（2001 年与787重叠）</td></tr>
<tr>
<td>940</td><td>得克萨斯州（弗农、威奇塔瀑布市、登顿、盖恩斯维尔、迪凯特和得克萨斯州中部）</td></tr>
<tr>
<td>941</td><td>佛罗里达州（布雷登顿、夏洛蒂港、萨拉索塔、Punta Gorda 和坦帕湾以南的墨西哥湾区）</td></tr>
<tr>
<td>947</td><td>密歇根州（2002 年与248重叠）</td></tr>
<tr>
<td>949</td><td>加利福尼亚州（Laguna Niguel、欧文、El Toro、纽波特比奇、Corona Del Mar 和橙县南部）</td></tr>
<tr>
<td>950</td><td>运营商特别号码</td></tr>
<tr>
<td>951</td><td>加利福尼亚州（科洛纳、里弗赛德、Temescal Canyon、Woodcrest、Arlington、Mira Loma、莫雷诺谷、Perris、太阳城、Murrieta、蒂梅丘拉、Hemet、Lakeview、Nuevo、Banning、爱德怀-松树湾）</td></tr>
<tr>
<td>952</td><td>明尼苏达州（布鲁明顿、明内通卡、查斯卡和明尼阿波利斯地区东南部）</td></tr>
<tr>
<td>954</td><td>佛罗里达州（布劳沃德县的全部，罗德岱堡、好莱坞、科勒尔斯普林斯，2002 年与754重叠）</td></tr>
<tr>
<td>956</td><td>得克萨斯州（拉雷多、布朗斯维尔、麦卡伦、哈林根和得克萨斯州南部）</td></tr>
<tr>
<td>959</td><td>康涅狄格州（布里斯托尔、哈特福德、诺威奇和康涅狄格州北部及东部，2011 年与860重叠）</td></tr>
<tr>
<td>970</td><td>科罗拉多州（阿斯本、杜兰戈、大章克申、科林斯堡和科罗拉多州北部及中部）</td></tr>
<tr>
<td>971</td><td>俄勒冈州（波特兰、赛伦、西尔斯伯勒、比弗顿和俄勒冈州西北部，与503重叠）</td></tr>
<tr>
<td>972</td><td>得克萨斯州（达拉斯地区，与469重叠）</td></tr>
<tr>
<td>973</td><td>新泽西州（纽瓦克、帕特森和新泽西州西北部，与862重叠）</td></tr>
<tr>
<td>975</td><td>密西西里州紧急区号，但未有计划。</td></tr>
<tr>
<td>978</td><td>马萨诸塞州（菲奇堡、皮博迪和马萨诸塞州东北部，2001 年与351重叠）</td></tr>
<tr>
<td>979</td><td>得克萨斯州（沃顿、布赖恩、海湾城、大学城、杰克逊湖和得克萨斯州东南部）</td></tr>
<tr>
<td>980</td><td>北卡罗莱那州 （夏洛特、金斯敦和北卡罗莱那州中南部，2001 年与704重叠）</td></tr>
<tr>
<td>984</td><td>北卡罗莱那州紧急区号，但未有计划。</td></tr>
<tr>
<td>985</td><td>路易斯安那州（霍玛、斯莱德尔和路易斯安那州东南部，新奥尔良除外）</td></tr>
<tr>
<td>989</td><td>密歇根州（阿尔皮纳、愉快山、贝城、沙基诺、米德兰、奥沃索和密歇根州中部）</td></tr>
</tbody>
</table>
</div>]]></content:encoded></item><item><title><![CDATA[零门槛注册美国银行账户，免费申请visa储蓄卡、美国信用卡，无需美国手机号美国地址]]></title><description><![CDATA[在线注册华美银行Velo账户,免费获得美国银行账户和担保信用卡攻略.总结Velo担保信用卡申请攻略]]></description><link>https://a-nomad.hashnode.dev/visa</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/visa</guid><category><![CDATA[美国银行账户]]></category><category><![CDATA[Velo华美银行]]></category><category><![CDATA[美国信用卡]]></category><category><![CDATA[免费美国账户]]></category><category><![CDATA[在线支付]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Thu, 12 Mar 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658853272599/UAf3h_uSF.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Velo华美银行是美国华美银行2019年推出了一个提供全球银行服务的数字化在线平台.用户只需要下载华美银行开发的“Velo华美银行”的APP,便可在数分钟内完成在线开设美国银行账户.无需护照美签、更不用美国地址和电话，没有开户费和最低资金要求，手机APP即可免费办理.</p>
</blockquote>
<p>对于网络创业者来说，网络支付永远都是重要的一环。众所周知，由于中国特殊的金融管控体制，给跨境美元收付款造成了诸多不便，这也导致了很多小伙伴(非土豪)无奈亲赴美国香港等金融环境相对宽松的国家和地区开始银行账户。</p>
<p>近些年出现了非常多的跨境收款服务公司，但这些收款公司几乎都有一个共同的特点，它们所提供的美国银行账户大都是二级虚拟美国银行账户。不同于传统美国银行账户，这种虚拟账户会有各种各样的限制。比如无法接收来自个人的汇款，无法电汇给其他公司或个人，通常只接收电商平台或者美国公司的付款，有的只能提现到国内银行账号上等等，而今天给大家分享的方法则是真正零门槛注册美国银行账户，VISA储蓄卡、支票账户、美国担保信用卡，无需美国手机号美国地址。这就是2019年华美银开设的旗下Velo银行账户。</p>
<p>Velo银行想必很多小伙伴都或多或少的有所耳闻，小编也是去年在YouTube通过某金融频道主了解到的，但至今才动手写这篇文章也主要是考虑到其真实性的问题，目前小编已经正常使用此账户几个月时间，也看到很多博主UP主们纷纷推出了相关的内容，这才想起着手写这边文章。废话至此，下面我们就开始扒一扒这个神奇的Velo 银行。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658852384441/V_kqtcjMi.jpg" alt="Velo华美银行" /></p>
<h3 id="heading-andampvelo">华美银行&amp;Velo</h3>
<p>相信很多小伙伴都了解或听说过华美银行(EastWestBank),华美银行（纳斯达克股票代码 EWBC）是总部位于南加州的最大的独立商业银行，总资产433亿美元，位列美国前30大上市银行。华美银行自2010年起，连年入选“福布斯全美百强银行榜”前15名，且六度跻身“福布斯全美百强银行榜”前十。</p>
<p>华美银行的服务网络已遍布美国和大中华地区。在美国的洛杉矶、旧金山、圣地亚哥、拉斯维加斯、西雅图、休斯顿、达拉斯、纽约、波士顿和亚特兰大均设有分行。在大中华地区，我们在上海、深圳、汕头、香港设有全方位服务的分行，在北京、广州、重庆和厦门设有办事处。</p>
<p>华美银行（中国）有限公司是由美国华美银行在中国上海设立的外商独资法人银行，总行位于上海金融中心陆家嘴地标性建筑金茂大厦33层。华美中国将母行成熟的业务经验和商业成果引进国内，更好地满足客户多元化的金融需求。</p>
<p>华美银行在2019年推出了提供全球银行服务的数字化在线平台“Velo华美银行”。华美银行将美国银行账户注册整个流程数字化，用户只需下载华美银行开发的名为“Velo华美银行”的APP，便可在短短几分钟内完成手机在线开户。“Velo华美银行”的APP里设置了国际转账功能，用户不需要通过实体网点或电话便可实现繁琐的国际转账。</p>
<ul>
<li>华美银行旗下产品, 由联邦存款保险公司（FDIC）担保，FDIC对存款人账户保险金额上限为25万美元</li>
<li>全程APP端开户，无需赴美、无需护照美签、更不用美国地址和电话，没有开户费和最低资金要求，手机APP上免费办理</li>
<li>Velo提供全天24小时双语客户服务，在国内北京、上海、广州、深圳等8个城市设有办事处</li>
<li>可签发一张与Velo账户共享资金的Visa储蓄卡，支持寄到中国大陆($20快递费),邮寄到美国本土地址免费</li>
<li>Visa储蓄卡无年费，每个账单周期前两笔ATM机取现免费，超过两笔每笔收费1美元，国内取人民币，按汇率自动兑换</li>
<li>银行账户余额超过2500美元，免除10美元/月的账号管理费</li>
<li>美国支票账户，支持ACH转账，电汇转账，支持提现到支付宝</li>
<li>可以绑定各大电商平台、入账美国各大券商、绑定美区PayPal、Apple ID验证等各类ACH绑定</li>
</ul>
<blockquote>
<p>华美银行是FDIC保险的银行。FDIC (美国联邦存款保险公司) 是美国政府的一個独立机构，可保护您的存款免遭因银行破产而帶來的损失。FDIC对每家被保险银行每个存款人的每个账户所有权类別的保险金额上限为250,000美元。 凡参加存款保险公司的银行都会标注“FDIC”的字样，说明居民存入的支票、储蓄等账户都受到美国政府的声誉和信用的保障。即使发生银行倒闭的情况，联邦存款保险公司也按规定保证储户获得补偿，目前单一账户的补偿金额最高为250,000美元。 事实上，大多数传统的美国银行都加入了FDIC保险，账户资金得到有效保障。这一点是美国银行与跨境收款公司的一个显著区别。显然， 获得FDIC保险的账户资金更加安全。这也是不建议将资金长时间存放在第三方收款公司的主要原因。</p>
</blockquote>
<h3 id="heading-5bya5oi35p2h5lu2">开户条件</h3>
<p>在Velo华美银行开设美国银行账户几乎没有任何门槛。2019年底，Velo华美银行全面开放了用户注册，现在中国大陆用户只需一个身份证和一个国内的手机号码即可完成开户。</p>
<p>虽然开户时并没有要求必须存入固定的资金，但开户30天内，账户无余额将会被自动关闭。您需要在Velo Checking账户开户后30日内注入资金。</p>
<h3 id="heading-5ps26ls55qch5yeg">收费标准</h3>
<p>国内有一些美国的银行可以提供见证开户服务，繁琐不说，门槛也不低。为了搞定美国银行账户，有的人甚至通过中介花费5000元去开设美国银行账户，相比之下Velo账户基本上算是免费的。</p>
<p>Velo银行账户有账户管理费，每月$10美元。账户余额超过平均每月$2500美元的，可以免除10美元/月的账号管理费。</p>
<p>Velo华美银行可以签发Visa借记卡。邮寄到中国大陆地址的借记卡，收取20美元快递费，国内段由顺丰快递投递。邮寄到美国境内地址的借记卡，不收取任何费用。</p>
<p>华美银行对于每个账单周期的最先两笔非华美银行ATM的取现交易不收费，之后毎笔交易会收取1美元的费用。Velo华美银行目前不对通过ACH方式转账收取手续费</p>
<p>Velo华美银行目前不对通过ACH方式转账收取手续费。对通过转入和转出的电汇转账收取一定的手续费：</p>
<ul>
<li>电汇转入：每笔10美元手续费(近期有优惠免除了$10的入金手续费)</li>
<li>美国国内转出：每笔30美元手续费</li>
<li>国际转出：每笔40美元手续费</li>
<li>推荐使用Paysend和Wise两种费用低至免费的方案进行转账汇款。</li>
</ul>
<h3 id="heading-55sz6k35pa55byp">申请方式</h3>
<p>Velo华美银行全程通过手机App方式申请，整个申请过程通常需要5分钟即可完成。中国大陆的用户也可以在苹果App Store或者应用宝中直接下载Velo华美银行App，进行银行账户申请与转账汇款操作。</p>
<p>提交成功后，几分钟后即可收到审批通知结果。然后，再重新登陆到App账户中，即可看到一个由Velo华美银行签发的美国银行账号了。</p>
<h3 id="heading-visa">Visa实体储蓄卡</h3>
<p>Velo账户持有人可以根据自身需要申请签发Visa借记卡。用户可以在Velo手机应用App的【菜单】栏中，会看到【Velo借记卡】这一个选项。点开后您会看到一个【立即申请】的按键，点此按键即可申请。支付$20的国际运费后，大约3~4周可收到卡片，卡片从美国寄到北京，然后从北京（华美品钛联合创新中心）发往你的国内地址。
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658852729532/QpAr_bEwx.jpg" alt="Velo实体卡" />
国内可以在任何具有以下网络标志的ATM上使用Velo 借记卡(Visa®, Plus®, STAR®, NYCE®, PULSE®, Interlink®, Allpoint® 和MoneyPass®)。在ATM取现，Visa会自动把美元折合成人民币，取出人民币现钞，提现每日上限$2000，刷卡消费上限每日$10000。、</p>
<p>下面我们来对比一下Velo的Visa储蓄卡与另一款比较流行的Payoneer所签发的万事达实体卡进行一个简单的对比。</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>对比项</td><td>Payoneer MasterCard借记卡</td><td>Velo Visa借记卡</td></tr>
</thead>
<tbody>
<tr>
<td>卡片激活费</td><td>$29.95</td><td>免费</td></tr>
<tr>
<td>帐户维护费</td><td>$29.95</td><td>免费</td></tr>
<tr>
<td>快递费</td><td>平邮免费，DHL邮寄$40</td><td>美国免费，中国 $20</td></tr>
<tr>
<td>申请门槛</td><td>指定平台收款达到$40</td><td>账户余额达到$20</td></tr>
<tr>
<td>ATM机取现</td><td>$3.15，3%-5%的货币转换费</td><td>每个账单周期的前两笔免费,之后每笔$1,无货币转换费</td></tr>
</tbody>
</table>
</div><p>可以看到Velo Visa借记卡在各方面都优于Payoneer MasterCard借记卡，对于经常涉及跨境支付收款的小伙伴，还是推荐入手一张。</p>
<p>另外，有小伙伴发现Velo提供了定期存款(Velo CD)的功能，问是否可以通过定期存款来减免Velo账户的管理费，经过与客服沟通我们得知，如果想规避月管理费有两种方式。第一种，支票账户每天的余额保持在2500美金。第二种，您的支票账户+您的CD定存账户总额在10000美金或以上，可以免除10美金的月管理费。</p>
<h3 id="heading-6leo5akd5ps25qy">跨境收款</h3>
<p>Velo华美银行可以用来接收几乎所有通过ACH方式进行资金下发的跨境电商平台，同时可绑定Apple Developer Program，GoogleAdsense，同时支持绑定支付网关Stripe实现在线收款，也包括投资美股(BBAE及微牛证券可直接ACH方式绑定Velo的银行账户)、绑定PayPal进行余额提现。</p>
<p>当然Velo账户也支持美区PayPal。众所周知，国内申请的PayPal在进行账户提现时，会有35美元手续费，但如果是美国版的PayPal，使用ACH则是完全免费的。没错，我们可以用Velo华美银行账号来验证美版PayPal。比起国内PayPal，美版PayPal不仅手续费低，而且限制也少，可以用来激活很多第三方产品或服务。当然，也能收款。</p>
<p>不过，美国国家税务局（IRS）要求PayPal报告与接收商品和服务付款超出特定交易笔数和付款金额阈值的账户持有人有关的信息。收集对象包括：所有美国PayPal账户持有人和部分非美国账户的持有人。如果客户超出了美国国家税务局规定的申报阈值（20,000美元和200笔交易），则会被要求验证其美国纳税人身份。如果您不是美国公民或美国实体，则需要填写在线表格，证明您没有向美国缴纳所得税的义务。更多纤细内容可以参考 为什么需要验证我的美国纳税人身份？</p>
<p>多啰嗦一点，注册美区PayPal时尽量让美国地址、IP地址以及美国电话匹配在同一个州，以免触发风控。全程保证美国IP，记住开启全局模式。注册完后，在后台完成添加华美银行账户。然后，会提示验证激活。PayPal向你的华美银行账户发送了2笔不到0.5美元的小额存款，在完成验证后会进行回收。输入PayPal的确认表中，完成美国银行账户的核验。</p>
<h3 id="heading-6l2s6lsm5rgh5qy">转账汇款</h3>
<p>很多小伙伴也需要将收益的外币转回国内，这里有以下几种常见方式：</p>
<ul>
<li>Velo Visa储蓄卡ATM提现。每个账单周期的前两笔免费,之后每笔$1,无货币转换费
Paysend。直接转到银联卡，秒到，使用推荐码可首次转账免费，转账固定费用，1英镑，1.5欧元，2美元，取决于账户注册地</li>
<li>TransferWise。相比银行的SWIFT/国际电汇动辄100~400的手续费，TransferWise只需要十几，几十块的手续费，转到银联卡6小时到账。</li>
<li>支付宝国际转账。Velo将收取15美金每笔作为支付宝转账的手续费。到达时间可从1小时到4天不等。每笔收款限额为5万元人民币，每年收款限额为50万元人民币</li>
<li>电汇转账。每笔$40手续费，收款银行可能会收取额外手续费。</li>
</ul>
<h3 id="heading-5ouf5ld5lh55so5y2h">担保信用卡</h3>
<p>Velo担保信用卡是华美银行的一个特色产品。担保信用卡是信用卡的一种，使用、还款都和其他信用卡一样，不同的是，在申请时，您需要向银行先交付一定的保证金，保证金在关闭账户后可以退还。留存在银行账户中的保证金和存放在同一银行账户中的其他资金适用同样的利息。事实上，这也是一种过渡期的美国信用卡，除了可以像美国普通的信用卡一样刷卡消费外，积累美国信用是其最大的特色功能。</p>
<p>不同于国内银行签发的信用卡，美国信用卡有一套自己的申请方式和审核条件。对国内用户来说，美国的信用卡申请难度要高出很多。比如申请信用卡的一些基础条件，多数国内用户都无法轻松达到。比如SSN社会安全号、美国地址、美国电话、美国信用等等。当然，美国地址和电话这些东西都比较容易搞定，但SSN却几无可能。那么，有没有办法不去美国、没有SSN、没有美国信用也能办下正儿八经的美国信用卡呢？Velo担保信用卡就是小白用户的不二之选了。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658852970603/fqVMqSt7K.jpg" alt="Velo担保信用卡" /></p>
<p>美国是一个信用社会，信用记录与个人生活息息相关，是否拥有一个良好的信用记录直接影响能否贷款买房、买车、支付学费等大额消费以及贷款利息的高低。无论你是否有美国社会保障号SSN，华美银行都会向美国三大征信机构之一的Experian上报您的信用卡消费、还款等信息。</p>
<p>您需要满足以下条件，以申请Velo担保信用卡：</p>
<ul>
<li>年满18周岁</li>
<li>在美国以下七个州之一拥有住址：加利福尼亚州、华盛顿州、内华达州、德克萨斯州、纽约州、马萨诸塞州、乔治亚州</li>
<li>拥有美国手机号</li>
</ul>
<p>在提交申请时，我们会在您的Velo银行账户中冻结一笔与所选信用额度等额的保证金。因此，请确保您的Velo银行账户有足够的余额。</p>
<p>如何获得一个限定的美国七个州之一的地址呢，这个既可以找美国的朋友代收，也可以付费购买美国地址服务公司的服务，如提供德克萨斯州地址的 USGlobalMail.</p>
<p>至于美国手机号，推荐使用Google Voice美国免费电话号码(不知道如何获取的朋友，出门右转去淘宝搜索)，也可以购买一张实体美国SIM卡，如当下比较流行的仅需$9.9的KnowRoaming(支持邮寄到中国大陆)。</p>
<p>Visa担保信用卡额度根据银行账户余额自行设定，500-10000美元不等，最低冻结500美元。</p>
<p>下面是此卡的相关费用，费用可能会有变动，下表仅供参考。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658853126704/hh0ZJ9W-U.jpg" alt="担保信用卡费用" /></p>
<p>了解了上述内容之后，你就可以开始申请担保信用卡了。申请成功后，您将在大约10天内收到Velo担保信用卡，信用卡将寄到您在申请时填写的地址。你可以再找朋友转发，或者由美国地址服务公司转运到国内。从申请到拿到手上，差不多15天左右。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658853152976/Txu7zUyCa.jpg" alt="信用卡申请" /></p>
<p>收到卡后，激活使用。保持正常消费使用6-9个月后，再查询自己的美国信用记录报告，一般650-700分+6个月及以上算是信用良好750+算是信用非常好，可以尝试申请高端卡种。</p>
<h3 id="heading-5yaz5zyo5pya5zco">写在最后</h3>
<p>对于跨境创业者来说，Velo华美银行签发的VISA借记卡和担保信用卡是由美国的银行签发的，所以可以用来在速卖通上进行Dropshipping采购，也可以解决那些用国内信用卡在海外网站下单后总被拒绝和砍单的情况。</p>
<p>Velo华美银行是国内第一个完全开放，超低门槛开设美国银行账户的公司，这种开放可能存在一定的政策风险，安全起见，不建议将大量资金存入到这个账户，毕竟这是一个2019年才在国内推出的银行账户，需要用时间积累信用。但作为第一个美国银行账户和申请第一张美国信用卡绝对是不错的选择。</p>
<p>鉴于小编能力有限，文章难免出现错误，如果读者朋友发现望不吝斧正，最后希望大家都能申请顺利，在跨境创业的路上一往无前。</p>
]]></content:encoded></item><item><title><![CDATA[手把手教你使用Google Container-Optimized OS定制系统]]></title><description><![CDATA[谷歌云(GCP)Docker使用保姆级教程,Container-Optimized OS 视频教程.]]></description><link>https://a-nomad.hashnode.dev/docker-gcp</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/docker-gcp</guid><category><![CDATA[GCP]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Google Container-Optimized OS]]></category><category><![CDATA[toolbox]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Thu, 27 Feb 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658770774598/qvllkBisT.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/Mhz9rXUw1lo">https://youtu.be/Mhz9rXUw1lo</a></div>
<p>这篇文章我们来详细介绍如何在谷歌云服务器(GCP)上运行使用Docker。
文末有本文对应的视频教程，不喜欢读文字的朋友可以直接观看视频教程。</p>
<p>首先我们几句话聊下Docker。Docker是时下比较流行的容器化技术的代表，Docker 是一个开源的应用容器引擎。实际Docker技术自2013年以来都在逐步流行，只是近些年随着互联网技术从传统架构向云架构到容器化、微服务化的过度过程，Docker技术也随之愈发的流行。</p>
<p>Docker作为容器化技术的代表，具有轻量、安全、标准、可伸缩、即抛等诸多优秀的特点。关于Docker的知识还有很多，这里不再展开，有兴趣的同学可以自行了解学习。</p>
<p>闲话至此，下面我们来为大家介绍如何在谷歌云(GCP)服务器运行Docker。谷歌云为每个新用户提供了300美金的为期一年的试用额度，通通各种方式基本基本可以无限重置，是众多羊毛党乐此不疲的项目，如果有新手同学不熟悉或者感兴趣，后期我会制作一期详细的视频教程。</p>
<p>谷歌云使用Docker有两种方式，原生Linux安装运行Docker和使用<code>Container-Optimized OS</code>。</p>
<h2 id="heading-1-linuxdocker">1. 原生Linux运行Docker</h2>
<p>最常用的方式就是在<code>Computer-Engine</code>中创建VM实例并安装诸如CentOS等常见的发行版Linux系统，然后在原生Linux系统中按照常规方式安装Docker，此方式简单易行，直接参考Docker官方文档即可，新手同学可以参考 CentOS 8安装Docker 这篇的文档，下面为不喜欢读文字的观众老爷们送上视频教程。</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/Mhz9rXUw1lo">https://youtu.be/Mhz9rXUw1lo</a></div>
<p>下面为国内无法访问YouTube的朋友放上B站视频。</p>
<iframe src="//player.bilibili.com/player.html?aid=82645178&amp;bvid=BV1YJ411G7Ze&amp;cid=141402586&amp;page=1" style="zoom:280%;max-width:100%;max-height:100%"></iframe>

<h2 id="heading-2-container-optimized-os">2. Container-Optimized OS</h2>
<p>本文的重点就是为大家介绍在谷歌云(GCP)上这种更妥帖的Docker运行使用方式。</p>
<p><code>Container-Optimized OS</code> 是适用于 <code>Compute Engine</code> 虚拟机的操作系统映像，专为运行 Docker 容器而优化。<code>Container-Optimized OS</code> 由 Google 维护，基于 <code>Chromium OS</code> 开放源代码项目。一句话概括，<code>Container-Optimized OS</code>就是Google为运行Docker而定制优化的Linux操作系统，以让Docker使用更加简洁高效。</p>
<h3 id="heading-21">2.1 系统安装</h3>
<p>要使用<code>Container-Optimized OS</code>只需要在新建VM实例时，选择启动磁盘的时候选择<code>Container-Optimized OS</code>系统即可，过程如下图所示：</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658770018616/smc6Obaax.jpg" alt="GCP操作系统选择" /></p>
<p>VM实例默认已经为我们安装好了最新版的Docker并做好了参数调优配置，实例创建完成之后，就可以直接在系统中查看和使用Docker，可以通过以下指令进行简单测试。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 查看docker版本信息</span>
docker --version

<span class="hljs-comment"># 运行hello-world实例程序</span>
docker run hello-world
</code></pre>
<h3 id="heading-22">2.2 安装扩展应用</h3>
<p><code>Container-Optimized OS</code>默认已经帮我们安装了少量的常用应用，如 <code>git/vim/ssh</code>等，但很多情况下这不足以满足我们的个性化需求，如运维人员喜欢使用 <code>htop</code> 来检测系统资源使用情况，此时就需要我们手动安装 <code>htop</code> 。</p>
<p>作为定制化系统，<code>Container-Optimized OS</code> 并不包含程序包管理器，但我们可以使用预先安装的<code>CoreOS</code> 工具箱(<code>/usr/bin/toolbox</code>)实用程序来安装所需的其他任何程序包或工具。</p>
<p>首次在命令行执行 <code>toolbox</code> 命令，可以看到系统会首先去拉取<code>toolbox</code>镜像，然后创建一个特殊的<code>toolbox</code>容器。<code>toolbox</code>容器内部为了提供了一个类似于 <code>Debian shell</code> 的环境，我们可以在<code>toolbox</code>容器肆意妄为了，比如通过下面的命令安装 <code>htop</code>。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 安装htop</span>
apt-get update &amp;&amp; apt-get install -y htop

<span class="hljs-comment"># 运行htop</span>
htop
</code></pre>
<p>除了以上方式我们还可以使用简写表示法来调用工具箱中的工具。如：</p>
<pre><code class="lang-bash">toolbox apt-get update &amp;&amp; apt-get install -y htop
toolbox htop
</code></pre>
<h3 id="heading-23">2.3 数据共享</h3>
<p><code>toolbox</code>是一个特殊定制容器，通过 <code>docker ps -a</code> 看不到其信息，容器退出之后其资源也不会被释放，再次进入容器其资源依然可以正常访问。如果要共享数据，我们也不能使用普通容器一样挂载卷。</p>
<p>默认情况下，<code>toolbox</code>容器与宿主机存在以下路径映射关系，<code>/ : /media/root</code> 。宿主机的更路径会默认映射到<code>toolbox</code>容器的 <code>/media/root</code> 目录。借由此映射关系我们就可以在<code>toolbox</code>与宿主机之间共享数据。</p>
<iframe src="//player.bilibili.com/player.html?aid=83273851&amp;bvid=BV1MJ411H7pG&amp;cid=142464001&amp;page=1" style="zoom:280%;max-width:100%;max-height:100%"></iframe>

<p>推荐大家按照视频讲解逐步操作，中间遇到任何问题可以在文末留言。完整视频内容可访问 <a target="_blank" href="https://youtu.be/JM27l8SWCDQ">YouTube</a> / <a target="_blank" href="https://www.bilibili.com/video/av83273851/">B站</a> 查看，也欢迎加入 <a target="_blank" href="https://t.me/colinchang">TG群</a> 讨论交流。</p>
]]></content:encoded></item><item><title><![CDATA[Ssh小白入门教程一次弄懂ssh入门到精通]]></title><description><![CDATA[SSH基础应用与高级配置，免密登录远程服务器]]></description><link>https://a-nomad.hashnode.dev/ssh</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/ssh</guid><category><![CDATA[ssh]]></category><category><![CDATA[openssh]]></category><category><![CDATA[scp]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Wed, 26 Feb 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658766245523/4lbUJQJLw.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/o5aYC6E2G-g">https://youtu.be/o5aYC6E2G-g</a></div>
<p>SSH 为 Secure Shell 的缩写，它是建立在应用层基础上的安全协议。SSH 是较可靠，专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序，后来又迅速扩展到其他操作平台，目前SSH在几乎所有 UNIX 平台上受到支持。</p>
<p>SSH 协议存在以下特征：</p>
<ul>
<li>有效防止远程管理过程中的信息泄漏</li>
<li>传输 <strong>数据加密</strong>，能够防止DNS和IP欺骗</li>
<li>传输 <strong>数据压缩</strong>，加快传输速度</li>
</ul>
<h2 id="heading-1">1.  基础使用</h2>
<p><code>OpenSSH</code> 是 SSH协议的流行的免费开源实现。<code>OpenSSH</code>提供了服务端程序(<code>openssh-server</code>)和客户端工具(<code>openssh-client</code>)。</p>
<p>UNIX 平台系统（Linux/MacOS）等一般都默认安装了 SSH 客户端，直接在终端中使用SSH命令即可，Windows 等其它平台则需要手动安装 SSH 客户端，较常用的Windows SSH客户端有<code>Putty</code>和<code>XShell</code>等。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 安装服务端/客户端(Ubuntu/Debian)</span>
$ sudo apt install openssh-server/openssh-client

<span class="hljs-comment"># 查看ssh服务是否开启</span>
$ netstat -tlp | grep ssh

<span class="hljs-comment"># 启动/停止/重启 ssh服务</span>
$ sudo /etc/init.d/ssh start/stop/restart
</code></pre>
<p>SSH服务端配置文件默认为<code>/etc/ssh/sshd_config</code>，可以按需修改默认<code>22</code>端口等配置。</p>
<pre><code class="lang-bash"><span class="hljs-comment"># 命令格式</span>
$ ssh [-options] [user@hostname]
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>options</td><td>含义</td></tr>
</thead>
<tbody>
<tr>
<td><code>-p</code></td><td>指定ssh端口号,默认端口为<code>22</code></td></tr>
<tr>
<td><code>-i</code></td><td>使用指定私钥文件连接服务器免密登录</td></tr>
</tbody>
</table>
</div><ul>
<li><code>user</code>远程服务器登录的用户名，默认为当前用户</li>
<li><code>hostname</code>远程服务器地址。可以是IP/域名/别名</li>
<li><code>exit</code>或<code>logout</code>命令均可退出当前登录</li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># 以colin用户登录192.168.1.196的到ssh服务器</span>
$ ssh colin@192.168.1.196

<span class="hljs-comment"># 以colin用户登录到192.168.1.198的ssh服务器，使用2222端口</span>
$ ssh -p 2222 colin@192.168.1.198
</code></pre>
<h2 id="heading-2-ssh">2. SSH高级配置</h2>
<p>SSH配置信息一般保存在<code>~/.ssh</code> 目录下。</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>配置文件</td><td>作用</td></tr>
</thead>
<tbody>
<tr>
<td><code>known_hosts</code></td><td>作为客户端。记录曾连接服务器授权。SSH第一次连接一台服务器会有一个授权提示，确认授权后会记录在此文件中，下次连接记录中的服务器时则不再需要进行授权确认提示</td></tr>
<tr>
<td><code>authorized_keys</code></td><td>作为服务端。客户端的免密连接公钥文件</td></tr>
<tr>
<td><code>config</code></td><td>作为客户端。记录连接服务器配置的别名</td></tr>
</tbody>
</table>
</div><h3 id="heading-21">2.1 服务器别名</h3>
<p>远程管理命令(如<code>ssh</code>,<code>scp</code>等)连接一台服务器时一般都需要提供 服务器地址、端口、用户名 ，每次输入比较繁琐，我们可以把经常使用的服务器连接参数打包记录到配置文件中并为其设置一个简单易记的别名。这样我们就可以通过别名方便的访问服务器，而不需要提供地址、端口、用户名等信息了。</p>
<p>配置方法如下：</p>
<ul>
<li>创建或打开 <code>~/.ssh/config</code>，在文件追加服务器配置信息</li>
<li>一台服务器配置格式如下<pre><code class="lang-json">Host ColinMac
  HostName <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.196</span>
  User colin
  Port <span class="hljs-number">22</span>
</code></pre>
<em>以上配置中只有<code>HostName</code>是必选项，其他都可按需省略。</em></li>
</ul>
<p>配置完成后远程管理命令中就可以直接使用别名访问了。</p>
<pre><code class="lang-sh">$ ssh ColinMac
$ scp abc.txt ColinMac:Desktop
</code></pre>
<h3 id="heading-22">2.2 免密登录</h3>
<pre><code><span class="hljs-comment"># 命令格式</span>
$ ssh-keygen [-options]
</code></pre><div class="hn-table">
<table>
<thead>
<tr>
<td>options</td><td>含义</td></tr>
</thead>
<tbody>
<tr>
<td><code>-t</code></td><td>指定加密类型,默认为非对称加密(<code>rsa</code>), 所有可选项<code>[dsa,ecdsa,ed25519,rsa]</code></td></tr>
<tr>
<td><code>-f</code></td><td>密钥文件名。</td></tr>
<tr>
<td><code>-C</code></td><td>注释，将附加在密钥文件尾部</td></tr>
</tbody>
</table>
</div><ul>
<li>远程管理命令(如<code>ssh</code>,<code>scp</code>等)每次都需要提供用户密码保证安全。除此之外，我们也可配置使指定加密算法验证密钥文件的方式，避免每次输入密码</li>
<li>配置免密登录后，<code>ssh</code>连接和<code>scp</code>等远程管理命令都不需要再输密码</li>
<li>生成密钥时若指定了文件名，连接服务器时需要通过<code>-i</code>指定要验证的密钥文件,形如：<code>ssh -i file user@host</code>。默认文件名则可省略</li>
<li>默认配置只需以下两步：</li>
</ul>
<pre><code class="lang-sh"><span class="hljs-comment"># 客户端生成密钥对</span>
$ ssh-keygen

<span class="hljs-comment"># 上传公钥到服务器</span>
$ ssh-copy-id user@hostname   <span class="hljs-comment"># 文件会自动上传为服务器特定文件 ～/.ssh/authorized_keys</span>
</code></pre>
<p>完成以上步骤后直接使用<code>ssh ColinUbuntu</code>即可登录，服务器地址和密码均不用录入。</p>
<h3 id="heading-23">2.3 免密钥文件登录</h3>
<p>出于安全考虑，大部分服务器提供商如要求使用密钥文件进行远程登录，如<code>GCP</code>和<code>AWS</code>。下面我们以<code>GCP</code>为例来看如何简化连接操作,这搞起来吧...</p>
<h4 id="heading-231">2.3.1 生成密钥对</h4>
<pre><code class="lang-sh">$ ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
$ chmod 400 ~/.ssh/[KEY_FILENAME]
</code></pre>
<p>https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#createsshkeys</p>
<h4 id="heading-232">2.3.2 上传公钥</h4>
<p>在<code>Compute Engine</code>页面左侧菜单找到<code>元数据</code>,将上一步生成的公钥文件(<code>KEY_FILENAME_pub</code>)内容添加到SSH密钥中即可。</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658765499770/lKWhgchbf.jpg" alt="GCP上传密钥" /></p>
<h4 id="heading-233-gcp">2.3.3 连接GCP</h4>
<p>使用以下命令登录即可</p>
<pre><code class="lang-sh">$ ssh -i ~/.ssh/KEY_FILENAME [USERNAME]@[IP_ADDRESS]
</code></pre>
<h4 id="heading-234">2.3.4 简化登录</h4>
<p>以上是<code>GCP</code>官方步骤，使用<code>IdentityFile</code>方式进行登录，每次登录都要通过<code>-i</code>选项指定私钥路径比较繁琐，我们可以将密钥文件添加到<code>ssh</code>客户端<code>config</code>中以简化连接命令。</p>
<pre><code class="lang-json">Host *
 AddKeysToAgent yes
 UseKeychain yes  # only for mac

Host tu
   HostName IP_ADDRESS
   Port <span class="hljs-number">22</span>
   User USERNAME
   IdentityFile ~/.ssh/gcp
</code></pre>
<p>按照以上配置添加到<code>～/.ssh/config</code>中</p>
<pre><code class="lang-sh"><span class="hljs-comment"># 后台运行ssh-agent</span>
$ <span class="hljs-built_in">eval</span> <span class="hljs-string">"<span class="hljs-subst">$(ssh-agent -s)</span>"</span>
<span class="hljs-comment"># 添加密钥到ssh-agent</span>
$ ssh-add -K ~/.ssh/gcp
</code></pre>
<p>完成以上配置后，连接服务器只需使用 <code>ssh tu</code>即可。</p>
<blockquote>
<p>除了连接云服务器，<code>GitHub</code>等服务也可是通过以上方式连接</p>
</blockquote>
<h2 id="heading-3-scp">3. SCP命令</h2>
<p><code>scp</code>是<code>secure copy</code>缩写，它基于SSH实现远程文件拷贝。<code>scp</code>命令只能在UNIX内核系统(如Linux/mac OS) 中运行。在Windows中文件传输推荐使用FTP工具，如<code>FileZilla</code>等。</p>
<pre><code class="lang-sh"><span class="hljs-comment"># 命令格式</span>
$ scp [-options] [[user@]host1:]file1 [[user@]host2:]file2
</code></pre>
<div class="hn-table">
<table>
<thead>
<tr>
<td>options</td><td>含义</td></tr>
</thead>
<tbody>
<tr>
<td><code>-r</code></td><td>远程拷贝文件或递归拷贝目录</td></tr>
<tr>
<td><code>-P</code></td><td>指定远程服务器端口号，默认22端口可以省略</td></tr>
</tbody>
</table>
</div><pre><code class="lang-sh"><span class="hljs-comment"># 将本地123.txt远程拷贝到192.168.1.196服务器的colin用户的Desktop目录并重命名为test.txt</span>
$ scp 123.txt colin@192.168.1.196:Desktop/test.txt

<span class="hljs-comment"># 将192.168.1.196服务器的colin用户的Desktop/test.txt远程拷贝到本地当前目录并重命名为123.txt</span>
$ scp conlin@192.168.1.196:Desktop/test.txt 123.txt

<span class="hljs-comment"># 将本地~/Desktop/Python拷贝到192.168.1.196服务器的colin用户的Desktop目录下</span>
$ scp -r ~/Desktop/Python colin@192.168.1.196:Desktop
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Docker部署WordPress解决“上传的文件尺寸超过php.ini中定义的upload_max_filesize值”问题]]></title><description><![CDATA[解决Docker部署WordPress主题或插件大尺寸文件上传问题,解决nginx代理服务器文件上传限制。]]></description><link>https://a-nomad.hashnode.dev/wordpress-upload</link><guid isPermaLink="true">https://a-nomad.hashnode.dev/wordpress-upload</guid><category><![CDATA[WordPress]]></category><category><![CDATA[File Upload]]></category><category><![CDATA[Docker]]></category><category><![CDATA[nginx]]></category><category><![CDATA[413]]></category><dc:creator><![CDATA[Colin Chang]]></dc:creator><pubDate>Tue, 25 Feb 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658767550969/tG8CKREPw.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>随着以Docker为代表的容器化技术的普及，越来越多的环境搭建服务部署都逐步走向容器化。当下基本上所有流行的系统都有对应的Docker版本，当然最流行的CMS——WordPress也不例外。</p>
<p>在为WordPress安装第三方主题或者插件时需要用户在后台手动进行文件上传，但如果文件体积较大时就会遇到如下常见的问题。</p>
<ul>
<li><code>413 Request Entity Too Large</code></li>
<li><code>上传的文件尺寸超过php.ini中定义的upload_max_filesize值</code></li>
</ul>
<h3 id="heading-413-request-entity-too-large">413 Request Entity Too Large</h3>
<p>如果使用了<code>nginx</code>服务器可能会遇到这个问题，这是由于<code>nginx</code>服务器默认限制上传文件尺寸不能超过<code>2M</code>，可以通过修改<code>nginx</code>配置文件(<code>nginx:alpine</code> 默认配置文件为<code>/etc/nginx/conf.d/default.conf</code>)修复此问题。修改内容形如：</p>
<pre><code>server {
    <span class="hljs-keyword">...</span>
    location / {
        <span class="hljs-keyword">...</span>
        client_max_body_size 10m; <span class="hljs-comment"># 设置客户端上传内容尺寸最大为10M</span>
    }
}
</code></pre><p>修改完成后需要重启<code>nginx</code>服务。</p>
<h3 id="heading-phpiniuploadmaxfilesize">上传的文件尺寸超过php.ini中定义的upload_max_filesize值</h3>
<p>此问题是WordPress中<code>php.ini</code>默认允许上传的文件大小为<code>2M</code>，可以通过挂载配置文件修复此问题。</p>
<p>自定义<code>uploads.ini</code>文件，内容如下(尺寸限制可按需修改)：</p>
<pre><code><span class="hljs-attr">file_uploads</span> = <span class="hljs-literal">On</span>
<span class="hljs-attr">memory_limit</span> = <span class="hljs-number">256</span>M
<span class="hljs-attr">upload_max_filesize</span> = <span class="hljs-number">10</span>M
<span class="hljs-attr">post_max_size</span> = <span class="hljs-number">10</span>M
<span class="hljs-attr">max_execution_time</span> = <span class="hljs-number">600</span>
</code></pre><p>将刚创建的配置文件挂载为WordPress容器的<code>/usr/local/etc/php/conf.d/uploads.ini</code>即可。下面以<code>docker-compose.yml</code>为例，配置形如：</p>
<pre><code>  wordpress:
     volumes:
      <span class="hljs-operator">-</span> ./uploads.ini:<span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>php<span class="hljs-operator">/</span>conf.d/uploads.ini
</code></pre><p>修改完成后重启docker compose服务栈即可。</p>
<pre><code>docker-compose restart <span class="hljs-comment"># 重启服务栈</span>
</code></pre><p>此时再次尝试，就可以上传大文件了。出于安全考虑，建议主题或插件配置完成后，关闭大文件上传功能，注释到上述配置重启服务即可。</p>
]]></content:encoded></item></channel></rss>