<?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" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Nature Pi]]></title><description><![CDATA[Talk is cheap, show me the code.]]></description><link>https://naturepi.com/</link><image><url>https://naturepi.com/favicon.png</url><title>Nature Pi</title><link>https://naturepi.com/</link></image><generator>Ghost 5.76</generator><lastBuildDate>Mon, 06 Apr 2026 20:26:19 GMT</lastBuildDate><atom:link href="https://naturepi.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[使用Python调用ChatGPT]]></title><description><![CDATA[<h3 id="%E6%B3%A8%E5%86%8Copenai%E8%B4%A6%E5%8F%B7">&#x6CE8;&#x518C;openai&#x8D26;&#x53F7;</h3>
<p><a href="https://juejin.cn/post/7175917144025071673?ref=naturepi.com">&#x6CE8;&#x518C;&#x53C2;&#x8003;</a></p>
<h3 id="%E7%94%B3%E8%AF%B7apikey">&#x7533;&#x8BF7;ApiKey</h3>
<p>&#x767B;&#x9646;openai&#x540E;&#xFF0C;&#x53BB;<a href="https://platform.openai.com/account/api-keys?ref=naturepi.com">Api Keys&#x7BA1;&#x7406;</a>&#x7533;&#x8BF7;key</p>
<h3 id="pip%E5%AE%89%E8%A3%85openai">Pip&#x5B89;&#x88C5;Openai</h3>
<pre><code class="language-sh">pip install openai
</code></pre>
<h3 id="%E7%BC%96%E5%86%99python%E7%A8%8B%E5%BA%8F">&#x7F16;&#x5199;Python&#x7A0B;&#x5E8F;</h3>
<pre><code class="language-python">import os
import openai
openai.api_key = &quot;sk-xxxxxx&quot; ## apikeys

question=&quot;</code></pre>]]></description><link>https://naturepi.com/2023/02/chatgpt-python/</link><guid isPermaLink="false">63e9f6afaa56b400014962b9</guid><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Mon, 13 Feb 2023 08:46:26 GMT</pubDate><content:encoded><![CDATA[<h3 id="%E6%B3%A8%E5%86%8Copenai%E8%B4%A6%E5%8F%B7">&#x6CE8;&#x518C;openai&#x8D26;&#x53F7;</h3>
<p><a href="https://juejin.cn/post/7175917144025071673?ref=naturepi.com">&#x6CE8;&#x518C;&#x53C2;&#x8003;</a></p>
<h3 id="%E7%94%B3%E8%AF%B7apikey">&#x7533;&#x8BF7;ApiKey</h3>
<p>&#x767B;&#x9646;openai&#x540E;&#xFF0C;&#x53BB;<a href="https://platform.openai.com/account/api-keys?ref=naturepi.com">Api Keys&#x7BA1;&#x7406;</a>&#x7533;&#x8BF7;key</p>
<h3 id="pip%E5%AE%89%E8%A3%85openai">Pip&#x5B89;&#x88C5;Openai</h3>
<pre><code class="language-sh">pip install openai
</code></pre>
<h3 id="%E7%BC%96%E5%86%99python%E7%A8%8B%E5%BA%8F">&#x7F16;&#x5199;Python&#x7A0B;&#x5E8F;</h3>
<pre><code class="language-python">import os
import openai
openai.api_key = &quot;sk-xxxxxx&quot; ## apikeys

question=&quot;How to earn billions?&quot;

print(f&apos;Question : {question}&apos;)
response = openai.Completion.create(
    model=&quot;text-davinci-003&quot;,
    prompt=question,
    temperature=1,
    max_tokens=1024,
    top_p=1,
    n=1,
    frequency_penalty=0.0,
    presence_penalty=0.0
)
if &apos;choices&apos; in response:
    if len(response[&apos;choices&apos;]) &gt; 0:
        answer = response[&apos;choices&apos;][0][&apos;text&apos;]
    else:
        answer = &apos;Sorry!&apos;
else:
    answer = &apos;Sorry!&apos;
        
print(f&apos;Answer : {answer}&apos;)
</code></pre>
]]></content:encoded></item><item><title><![CDATA[元宇宙技术调研报告]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E5%AE%9A%E4%B9%89%E8%99%9A%E6%8B%9F%E4%B8%96%E7%95%8C">&#x5B9A;&#x4E49;&#x865A;&#x62DF;&#x4E16;&#x754C;</h2>
<h3 id="3d%E5%BB%BA%E6%A8%A1">3D&#x5EFA;&#x6A21;</h3>
<h4 id="%E5%B8%B8%E8%A7%84%E5%BB%BA%E6%A8%A1">&#x5E38;&#x89C4;&#x5EFA;&#x6A21;</h4>
<p>&#x901A;&#x8FC7;&#x5BF9;&#x6A21;&#x578B;&#x7684;&#x77E2;&#x91CF;&#x5B9A;&#x4E49;&#x5EFA;&#x6A21;</p>
<h4 id="%E6%A0%87%E5%87%86%E5%8C%96%E5%BB%BA%E6%A8%A1">&#x6807;&#x51C6;&#x5316;&#x5EFA;&#x6A21;</h4>
<p>&#x5C06;&#x90E8;&#x5206;&#x7EC4;&#x4EF6;&#x6807;&#x51C6;&#x5316;&#xFF0C;&#x901A;&#x8FC7;&#x7B80;&#x5355;&#x7684;&#x62FC;&#x88C5;&#x5B9E;&#x73B0;&#x590D;&#x6742;</p>]]></description><link>https://naturepi.com/2022/10/report-metaverse/</link><guid isPermaLink="false">635639caaa56b400014960f8</guid><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Mon, 24 Oct 2022 10:02:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E5%AE%9A%E4%B9%89%E8%99%9A%E6%8B%9F%E4%B8%96%E7%95%8C">&#x5B9A;&#x4E49;&#x865A;&#x62DF;&#x4E16;&#x754C;</h2>
<h3 id="3d%E5%BB%BA%E6%A8%A1">3D&#x5EFA;&#x6A21;</h3>
<h4 id="%E5%B8%B8%E8%A7%84%E5%BB%BA%E6%A8%A1">&#x5E38;&#x89C4;&#x5EFA;&#x6A21;</h4>
<p>&#x901A;&#x8FC7;&#x5BF9;&#x6A21;&#x578B;&#x7684;&#x77E2;&#x91CF;&#x5B9A;&#x4E49;&#x5EFA;&#x6A21;</p>
<h4 id="%E6%A0%87%E5%87%86%E5%8C%96%E5%BB%BA%E6%A8%A1">&#x6807;&#x51C6;&#x5316;&#x5EFA;&#x6A21;</h4>
<p>&#x5C06;&#x90E8;&#x5206;&#x7EC4;&#x4EF6;&#x6807;&#x51C6;&#x5316;&#xFF0C;&#x901A;&#x8FC7;&#x7B80;&#x5355;&#x7684;&#x62FC;&#x88C5;&#x5B9E;&#x73B0;&#x590D;&#x6742;&#x4E16;&#x754C;&#x7684;&#x5EFA;&#x6A21;&#xFF1B;</p>
<p>&#x76EE;&#x524D;&#x4E3B;&#x8981;&#x7684;&#x5EFA;&#x6A21;&#x7EC4;&#x4EF6;&#xFF0C;&#x53EF;&#x4EE5;&#x5728;10&#x5206;&#x949F;&#x5185;&#x6784;&#x5EFA;&#x4E00;&#x4E2A;&#x5927;&#x7EA6;20&#x5E73;&#x7C73;&#x7684;&#x53EF;&#x4EA4;&#x4E92;&#x7A7A;&#x95F4;</p>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;4</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;</p>
<ul>
<li>&#x6C99;&#x76D2;&#x5EFA;&#x6A21;&#x6E38;&#x620F;&#xFF1A;&#x5982;Roblox&#x3001;Minecraft</li>
<li>3D&#x5F15;&#x64CE;&#xFF1A;Unreal Engine&#x3001;Unity</li>
</ul>
<h3 id="%E6%B8%B2%E6%9F%93">&#x6E32;&#x67D3;</h3>
<h4 id="%E5%9F%BA%E6%9C%AC%E8%A7%86%E9%87%8E%E6%B8%B2%E6%9F%93">&#x57FA;&#x672C;&#x89C6;&#x91CE;&#x6E32;&#x67D3;</h4>
<p>&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x5C06;&#x7A7A;&#x95F4;&#x76F4;&#x89D2;&#x5750;&#x6807;&#x7CFB;&#x7684;&#x5EFA;&#x6A21;&#xFF0C;&#x6E32;&#x67D3;&#x4E3A;&#x4EE5;&#x53CC;&#x773C;&#x4E3A;&#x539F;&#x70B9;&#x7684;&#x6781;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x518D;&#x5408;&#x5E76;&#x89D2;&#x5EA6;&#x91C7;&#x6837;&#x5E76;&#x8F93;&#x51FA;&#x4E3A;&#x5E73;&#x9762;&#x5750;&#x6807;&#x3002;</p>
<h4 id="%E9%AB%98%E7%BA%A7%E6%B8%B2%E6%9F%93%E8%AE%A9%E4%B8%96%E7%95%8C%E6%9B%B4%E7%9C%9F%E5%AE%9E">&#x9AD8;&#x7EA7;&#x6E32;&#x67D3;&#x8BA9;&#x4E16;&#x754C;&#x66F4;&#x771F;&#x5B9E;</h4>
<p>&#x57FA;&#x672C;&#x89C6;&#x91CE;&#x6E32;&#x67D3;&#x662F;&#x4EE5;&#x773C;&#x775B;&#x4E3A;&#x51FA;&#x53D1;&#x70B9;&#xFF0C;&#x5411;&#x5916;&#x76F4;&#x7EBF;&#x6269;&#x6563;&#xFF0C;&#x5C06;&#x76F4;&#x7EBF;&#x78B0;&#x5230;&#x7684;&#x5B9E;&#x4F53;&#x50CF;&#x7D20;&#x4FE1;&#x606F;&#x8F6C;&#x5316;&#x4E3A;&#x53EF;&#x89C1;&#x7684;&#x50CF;&#x7D20;&#xFF0C;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#x7B80;&#x5355;&#x7684;&#x8BA4;&#x4E3A;&#x662F;&#x6BCF;&#x4E2A;&#x7269;&#x4F53;&#x90FD;&#x5728;&#x53D1;&#x5149;&#xFF0C;&#x5149;&#x6CBF;&#x7740;&#x76F4;&#x7EBF;&#x4F20;&#x9012;&#x5230;&#x4EBA;&#x7684;&#x773C;&#x775B;&#x3002;&#x4F46;&#x771F;&#x5B9E;&#x4E16;&#x754C;&#xFF0C;&#x773C;&#x775B;&#x7684;&#x6210;&#x50CF;&#x662F;&#x7531;&#x5149;&#x6E90;&#x53D1;&#x51FA;&#x7684;&#x5149;&#xFF0C;&#x7ECF;&#x8FC7;&#x4E0D;&#x540C;&#x7269;&#x4F53;&#x8868;&#x9762;&#x7684;&#x53CD;&#x5C04;&#xFF0C;&#x6700;&#x7EC8;&#x4F20;&#x5165;&#x5230;&#x4EBA;&#x7684;&#x773C;&#x775B;&#x7684;&#xFF0C;&#x975E;&#x5149;&#x6E90;&#x53EA;&#x4F1A;&#x53CD;&#x5C04;&#x81EA;&#x8EAB;&#x4E0D;&#x4F1A;&#x53D1;&#x5149;&#xFF0C;&#x8FD9;&#x5C31;&#x9020;&#x6210;&#x4E86;&#x76F4;&#x6781;&#x5750;&#x6807;&#x8F6C;&#x5316;&#x7684;&#x65B9;&#x5F0F;&#x65E0;&#x6CD5;&#x8868;&#x8FBE;&#x5F88;&#x591A;&#x771F;&#x5B9E;&#x4E16;&#x754C;&#x7684;&#x7EC6;&#x8282;&#xFF0C;&#x5982;&#x7269;&#x54C1;&#x7684;&#x9634;&#x5F71;&#xFF0C;&#x6C34;&#x7684;&#x5012;&#x5F71;&#xFF0C;&#x6C34;&#x5E95;&#x7684;&#x6298;&#x5C04;&#x7B49;&#x7B49;&#xFF0C;&#x9020;&#x6210;&#x4EBA;&#x5F88;&#x5BB9;&#x6613;&#x7684;&#x533A;&#x5206;&#x51FA;&#x771F;&#x5B9E;&#x4E16;&#x754C;&#x548C;&#x6A21;&#x62DF;&#x4E16;&#x754C;</p>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;2</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;<br>
&#x5149;&#x7EBF;&#x8FFD;&#x8E2A;&#xFF1A;&#x662F;&#x8BB0;&#x5F55;&#x5149;&#x7684;&#x8F68;&#x8FF9;&#x53C2;&#x4E0E;3D&#x8FD8;&#x539F;&#x6E32;&#x67D3;&#x7684;&#x6280;&#x672F;&#xFF0C;&#x8FD9;&#x9700;&#x8981;&#x7ECF;&#x8FC7;&#x65E0;&#x6BD4;&#x5E9E;&#x5927;&#x7684;&#x8BA1;&#x7B97;&#xFF0C;&#x76EE;&#x524D;&#x7684;&#x8BA1;&#x7B97;&#x80FD;&#x529B;&#x4E5F;&#x53EA;&#x80FD;&#x8FFD;&#x8E2A;&#x4E2A;&#x4F4D;&#x6570;&#x7684;&#x5149;&#x6E90;&#x548C;&#x6709;&#x9650;&#x4E2A;&#x53CD;&#x5C04;&#x6570;&#x91CF;&#x7684;&#x5149;&#x3002;&#x8FD9;&#x662F;&#x76EE;&#x524D;&#x7684;VR&#x8D70;&#x5411;&#x771F;&#x5B9E;&#x74F6;&#x9888;&#x4E4B;&#x4E00;</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="%E4%BA%BA%E4%B8%8E%E8%99%9A%E6%8B%9F%E7%9A%84%E9%93%BE%E6%8E%A5">&#x4EBA;&#x4E0E;&#x865A;&#x62DF;&#x7684;&#x94FE;&#x63A5;</h2>
<h3 id="%E8%A7%86%E8%A7%89%E8%BF%9E%E6%8E%A5">&#x89C6;&#x89C9;&#x8FDE;&#x63A5;</h3>
<h4 id="%E6%B8%85%E6%99%B0%E5%BA%A6">&#x6E05;&#x6670;&#x5EA6;</h4>
<p>PPD (Pixels Per Degree) &#x89D2;&#x5206;&#x8FA8;&#x7387;&#xFF0C;&#x6307;&#x89C6;&#x573A;&#x89D2;&#x4E2D;&#x7684;&#x5E73;&#x5747;&#x6BCF; 1&#xB0; &#x5939;&#x89D2;&#x5185;&#x586B;&#x5145;&#x7684;&#x50CF;&#x7D20;&#x70B9;&#x7684;&#x6570;&#x91CF;&#x3002;<br>
PPD = &#x5355;&#x773C;&#x6210;&#x50CF;&#x5916;&#x63A5;&#x5706;&#x7684;&#x76F4;&#x5F84;&#x50CF;&#x7D20;&#x70B9;&#x6570;&#x91CF; &#xF7;&#x5355;&#x773C;&#x6210;&#x50CF;&#x7684;&#x5BF9;&#x89D2;&#x7EBF;&#x7684;&#x89C6;&#x573A;&#x89D2; FOV&#x3002;<br>
<img src="https://naturepi.com/content/images/2022/10/3BFD6D36-C6EB-4908-97F9-99CEEA058593.png" alt="3BFD6D36-C6EB-4908-97F9-99CEEA058593" loading="lazy"></p>
<p><strong>&#x4EBA;&#x7C7B;&#x89C6;&#x7F51;&#x819C;&#x6A21;PPD&#x7684;&#x6781;&#x9650;&#x4E3A;70&#xFF0C;&#x901A;&#x5E38;&#x5728;50</strong></p>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;3</p>
<p>&#x4F46;&#x662F;&#x76EE;&#x524D;&#x4E3B;&#x6D41;&#x7684;&#x6280;&#x672F;&#x79BB;&#x8FD9;&#x4E2A;&#x76EE;&#x6807;&#x76F8;&#x5DEE;&#x751A;&#x8FDC;&#xFF0C;&#x4EE5;4K&#x7684;VR&#x663E;&#x793A;&#x5668;&#x6765;&#x8BB2;&#xFF0C;&#x5047;&#x5982;FOV=110&#x5EA6;&#xFF0C;PPD&#x53EA;&#x6709;19.6&#xFF0C;&#x751A;&#x81F3;&#x4E0D;&#x5982;&#x4E24;&#x5757;1080P&#x7684;&#x7535;&#x8111;&#x663E;&#x793A;&#x5668;&#x3002;<br>
<img src="https://naturepi.com/content/images/2022/10/C884F372-4BAE-4466-A021-369B139DC57D.png" alt="C884F372-4BAE-4466-A021-369B139DC57D" loading="lazy"></p>
<p>&#x76F8;&#x4FE1;&#x968F;&#x7740;&#x5DE5;&#x827A;&#x7684;&#x63D0;&#x5347;&#xFF0C;&#x672A;&#x6765;&#x4E00;&#x5B9A;&#x4F1A;&#x6709;&#x89C6;&#x7F51;&#x819C;VR&#x4EA7;&#x751F;</p>
<blockquote>
<p>&#x53C2;&#x8003;https://m.paoka.com/info/478</p>
</blockquote>
<h4 id="%E6%99%AF%E6%B7%B1">&#x666F;&#x6DF1;</h4>
<p>&#x666F;&#x6DF1;&#x662F;&#x6307;&#x5F53;&#x7126;&#x8DDD;&#x5BF9;&#x51C6;&#x67D0;&#x4E00;&#x70B9;&#x65F6;&#xFF0C;&#x5176;&#x524D;&#x540E;&#x90FD;&#x4ECD;&#x53EF;&#x6E05;&#x6670;&#x7684;&#x8303;&#x56F4;&#xFF1B;&#x6839;&#x636E;&#x51F8;&#x900F;&#x955C;&#x539F;&#x7406;&#xFF0C;&#x56FA;&#x5B9A;&#x7684;&#x7126;&#x8DDD;&#x51B3;&#x5B9A;&#x4E86;&#x80FD;&#x6210;&#x5B9E;&#x50CF;&#x7684;&#x8DDD;&#x79BB;&#xFF0C;&#x7531;&#x4E8E;&#x4EBA;&#x7C7B;&#x7684;&#x89C6;&#x89C9;&#x5904;&#x7406;&#x7684;&#x5BBD;&#x5BB9;&#x5EA6;&#xFF0C;&#x524D;&#x540E;&#x4E00;&#x5B9A;&#x8303;&#x56F4;&#x4ECD;&#x7136;&#x662F;&#x201C;&#x611F;&#x89C9;&#x6E05;&#x6670;&#x201D;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x5C31;&#x662F;&#x666F;&#x6DF1;&#xFF0C;&#x666F;&#x6DF1;&#x540C;&#x6837;&#x53D7;&#x77B3;&#x5B54;&#x5927;&#x5C0F;&#x7B49;&#x5F71;&#x54CD;&#x3002;<br>
&#x6240;&#x4EE5;&#x666F;&#x6DF1;&#x662F;&#x51B3;&#x5B9A;&#x89C6;&#x89C9;&#x771F;&#x5B9E;&#x5EA6;&#x7684;&#x5173;&#x952E;&#x56E0;&#x7D20;&#xFF0C;&#x73B0;&#x5728;&#x4E3B;&#x6D41;VR&#x7684;&#x5E73;&#x9762;&#x663E;&#x793A;&#x5668;&#x7C7B;&#x4F3C;&#x4E8E;&#x7167;&#x7247;&#xFF0C;&#x53EA;&#x80FD;&#x73B0;&#x5B9E;&#x51FA;&#x4E00;&#x4E2A;&#x56FA;&#x5B9A;&#x666F;&#x6DF1;&#x7684;&#x89C6;&#x89C9;&#x4FE1;&#x53F7;&#xFF0C;&#x773C;&#x7403;&#x7684;&#x6676;&#x72B6;&#x4F53;&#x662F;&#x52A8;&#x6001;&#x7684;&#x8C03;&#x6574;&#x7126;&#x8DDD;&#x7684;&#xFF0C;&#x8FD9;&#x6837;&#x5C31;&#x4F1A;&#x4EA7;&#x751F;&#x771F;&#x5B9E;&#x4E0E;&#x865A;&#x62DF;&#x7684;&#x5DEE;&#x5F02;<br>
<img src="https://naturepi.com/content/images/2022/10/1261E1A0-BAAE-4300-B60F-E1229B0F75E2.png" alt="1261E1A0-BAAE-4300-B60F-E1229B0F75E2" loading="lazy"></p>
<blockquote>
<p>&#x56FE;&#x7247;&#x6765;&#x81EA;&#x7F51;&#x7EDC;</p>
</blockquote>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;2</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;</p>
<ul>
<li>&#x6A21;&#x62DF;&#x666F;&#x6DF1;&#xFF1A;&#x901A;&#x8FC7;&#x6355;&#x83B7;&#x4EBA;&#x773C;&#x775B;&#x7126;&#x70B9;&#xFF0C;&#x52A8;&#x6001;&#x8BA1;&#x7B97;&#x666F;&#x6DF1;&#x7684;&#x6210;&#x50CF;&#xFF0C;&#x8F6C;&#x5316;&#x4E3A;&#x5E73;&#x9762;&#x663E;&#x793A;&#x5668;&#x50CF;&#x7D20;&#x70B9;
<ul>
<li>Oculus&#x6B63;&#x5728;&#x7814;&#x53D1;&#x4E2D;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x5373;&#x5C06;&#x4F1A;&#x5728;Siggraph&#x5927;&#x4F1A;&#x4E0A;&#x5C55;&#x793A;&#xFF0C;&#x540D;&#x4E3A;&#x201C;focal surface display&#xFF08;&#x7126;&#x5E73;&#x9762;&#x663E;&#x793A;&#xFF09;&#x201D;&#x3002;&#x8FD9;&#x9879;&#x6280;&#x672F;&#x65E8;&#x5728;&#x66F4;&#x51C6;&#x786E;&#x5730;&#x6A21;&#x62DF;&#x6211;&#x4EEC;&#x4EBA;&#x7C7B;&#x773C;&#x775B;&#x7684;&#x5DE5;&#x4F5C;&#x539F;&#x7406;</li>
</ul>
</li>
<li>&#x5149;&#x573A;&#xFF1A;&#x901A;&#x8FC7;&#x5149;&#x7EA4;&#x77E9;&#x9635;&#x66FF;&#x4EE3;&#x5E73;&#x9762;&#x663E;&#x793A;&#x5668;&#x7D20;&#x70B9;&#x77E9;&#x9635;&#xFF0C;&#x6295;&#x5F71;&#x5B8C;&#x6574;&#x5149;&#x573A;</li>
</ul>
<p>&#x65E0;&#x8BBA;&#x54EA;&#x79CD;&#x6280;&#x672F;&#xFF0C;&#x90FD;&#x9700;&#x8981;&#x5E9E;&#x5927;&#x7684;&#x8BA1;&#x7B97;&#x91CF;&#xFF0C;&#x5C24;&#x5176;&#x662F;&#x5149;&#x573A;&#x6280;&#x672F;&#xFF0C;&#x8FD9;&#x540C;&#x6837;&#x4E5F;&#x662F;&#x76EE;&#x524D;&#x7684;VR&#x8D70;&#x5411;&#x771F;&#x5B9E;&#x74F6;&#x9888;&#x4E4B;&#x4E00;</p>
<h3 id="%E4%B8%8D%E5%8F%AA%E6%9C%89%E8%A7%86%E8%A7%89">&#x4E0D;&#x53EA;&#x6709;&#x89C6;&#x89C9;</h3>
<h4 id="%E6%96%B9%E4%BD%8D%E6%84%9F">&#x65B9;&#x4F4D;&#x611F;</h4>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;4</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;</p>
<ul>
<li>&#x76F8;&#x5BF9;&#x5B9A;&#x4F4D;&#xFF1A;&#x5C06;&#x6807;&#x8BB0;&#x7269;&#x653E;&#x5728;&#x6D3B;&#x52A8;&#x533A;&#x7684;&#x5468;&#x56F4;&#xFF0C;&#x53D1;&#x51FA;&#x7535;&#x6CE2;&#x6216;&#x8D85;&#x58F0;&#x6CE2;&#xFF0C;&#x7531;&#x4EBA;&#x4F69;&#x6234;&#x7684;&#x8BBE;&#x5907;&#x68C0;&#x6D4B;&#x8DDD;&#x79BB;&#x800C;&#x8BA1;&#x7B97;&#x51FA;&#x4F4D;&#x7F6E;&#xFF0C;&#x7ED3;&#x5408;&#x9640;&#x87BA;&#x4EEA;&#xFF0C;&#x7CBE;&#x786E;&#x5B9A;&#x4F4D;&#xFF1B;</li>
<li>&#x89C6;&#x89C9;&#x5B9A;&#x4F4D;&#xFF1A;&#x7531;&#x4EBA;&#x4F69;&#x6234;&#x7684;&#x6444;&#x50CF;&#x5934;&#x6216;&#x56FA;&#x5B9A;&#x7684;&#x6444;&#x50CF;&#x5934;&#xFF0C;&#x901A;&#x8FC7;&#x89C6;&#x89C9;&#x8BA1;&#x7B97;&#x5B9A;&#x4F4D;&#xFF0C;&#x8FD9;&#x79CD;&#x6280;&#x672F;&#x7684;&#x7CBE;&#x5EA6;&#x5BF9;&#x7B97;&#x6CD5;&#x6709;&#x8981;&#x6C42;&#xFF0C;&#x4F46;&#x53EF;&#x8BC6;&#x522B;&#x4E0A;&#x9650;&#x66F4;&#x9AD8;&#xFF0C;&#x4E0D;&#x4F9D;&#x8D56;&#x4F69;&#x6234;&#x7684;&#x8BBE;&#x5907;&#xFF0C;&#x53EF;&#x4EE5;&#x7CBE;&#x786E;&#x8BC6;&#x522B;&#x4EBA;&#x7684;&#x6BCF;&#x4E00;&#x5757;&#x808C;&#x8089;&#x7684;&#x52A8;&#x4F5C;&#xFF0C;&#x5305;&#x62EC;&#x8868;&#x60C5;&#x3002;</li>
<li>&#x6DF7;&#x5408;&#x5B9A;&#x4F4D;</li>
</ul>
<h4 id="%E5%90%AC%E8%A7%89">&#x542C;&#x89C9;</h4>
<p>&#x901A;&#x8FC7;&#x58F0;&#x97F3;&#x5728;&#x7A7A;&#x95F4;&#x7684;&#x4F20;&#x64AD;&#xFF0C;&#x7ED3;&#x5408;&#x7A7A;&#x95F4;&#x5B9A;&#x4F4D;&#x7684;&#x4EBA;&#x8033;&#x7684;&#x671D;&#x5411;&#x548C;&#x8DDD;&#x79BB;&#xFF0C;&#x6A21;&#x62DF;&#x8033;&#x6735;&#x542C;&#x5230;&#x7684;&#x58F0;&#x97F3;&#x548C;&#x65F6;&#x95F4;&#x5DEE;&#xFF0C;&#x5206;&#x522B;&#x5411;&#x53CC;&#x8033;&#x6735;&#x4F20;&#x9012;&#xFF0C;&#x8FD8;&#x539F;&#x771F;&#x5B9E;&#x58F0;&#x97F3;&#x3002;</p>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;5</p>
<p>&#x7A7A;&#x95F4;&#x58F0;&#x5B66;&#x5DF2;&#x975E;&#x5E38;&#x6210;&#x719F;&#x3002;</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;</p>
<ul>
<li>Dolby</li>
<li>DTS:X</li>
</ul>
<h4 id="%E8%A7%A6%E8%A7%89%E5%8F%8A%E5%8A%9B%E5%9B%9E%E9%A6%88">&#x89E6;&#x89C9;&#x53CA;&#x529B;&#x56DE;&#x9988;</h4>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;1</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;<br>
&#x529B;&#x53CD;&#x9988;&#x624B;&#x5957;&#xFF1A;<a href="https://www.dextarobotics.com/?ref=naturepi.com">Dexmo</a><br>
Dexmo&#x662F;&#x4E16;&#x754C;&#x4E0A;&#x6700;&#x4FBF;&#x643A;&#x7684;&#x529B;&#x53CD;&#x9988;&#x624B;&#x5957;&#xFF0C;&#x4E3A;&#x7814;&#x7A76;&#x8005;&#xFF0C;&#x4F01;&#x4E1A;&#x548C;&#x6D88;&#x8D39;&#x8005;&#x800C;&#x751F;&#x3002;&#x5B83;&#x6240;&#x63D0;&#x4F9B;&#x7684;&#x81EA;&#x7136;&#x3001;&#x76F4;&#x89C9;&#x7684;&#x89E6;&#x611F;&#x53EF;&#x4EE5;&#x8BA9;&#x6BCF;&#x4E00;&#x4E2A;&#x4EBA;&#x90FD;&#x80FD;&#x4EB2;&#x5BC6;&#x5730;&#x89E6;&#x78B0;&#x771F;&#x6B63;&#x7684;&#x6C89;&#x6D78;&#x5F0F;VR&#x4E16;&#x754C;&#x3002;<br>
<img src="https://naturepi.com/content/images/2022/10/75716826-4A01-4DF6-8C4E-56A6C5641A75.png" alt="75716826-4A01-4DF6-8C4E-56A6C5641A75" loading="lazy"></p>
<h4 id="%E5%97%85%E8%A7%89">&#x55C5;&#x89C9;</h4>
<p>&#x6210;&#x719F;&#x5EA6;&#xFF1A;1</p>
<p>&#x4E3B;&#x8981;&#x7684;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#xFF1A;<br>
&#x6C14;&#x5473;&#x6A21;&#x62DF;&#xFF1A;<a href="https://ovrtechnology.com/the-science/?ref=naturepi.com">Architecture of Scent</a><br>
OVR Technology&#x5DE5;&#x4F5C;&#x5BA4;&#x63A8;&#x51FA;&#x540D;&#x4E3A;Architecture of Scent&#xFF08;AOS&#xFF09;&#x7684;VR&#x6C14;&#x5473;&#x6A21;&#x62DF;&#x7CFB;&#x7EDF;&#x91CD;&#x4E3A;130g&#xFF0C;&#x53EF;&#x6A21;&#x62DF;250&#x79CD;&#x6C14;&#x5473;&#xFF0C;&#x4ECE;&#x800C;&#x5927;&#x5927;&#x63D0;&#x5347;VR&#x4F53;&#x9A8C;&#x7684;&#x6C89;&#x6D78;&#x611F; &#xFF1B;Architecture of Scent&#x7ED3;&#x5408;&#x4E86;&#x786C;&#x4EF6;&#x3001;&#x8F6F;&#x4EF6;&#x548C;&#x6C14;&#x5473;&#x5957;&#x4EF6;&#xFF0C;&#x5E76;&#x65E8;&#x5728;&#x7CBE;&#x786E;&#x590D;&#x5236;&#x6570;&#x5B57;&#x4E16;&#x754C;&#x4E2D;&#x7684;&#x590D;&#x6742;&#x611F;&#x5B98;&#x4F53;&#x9A8C;</p>
<p><img src="https://naturepi.com/content/images/2022/10/1F19D2DF-08DD-4FB4-888E-9B318688B6BB.png" alt="1F19D2DF-08DD-4FB4-888E-9B318688B6BB" loading="lazy"></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><blockquote>
<p>&#x90E8;&#x5206;&#x8D44;&#x6599;&#x6765;&#x81EA;&#x7F51;&#x7EDC;&#xFF0C;</p>
</blockquote>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Ghost 集成Kroki]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h3 id="%E5%AE%89%E8%A3%85kroki">&#x5B89;&#x88C5;Kroki</h3>
<p>&#x4F7F;&#x7528;Docker&#x5B89;&#x88C5;Kroki</p>
<pre><code class="language-yaml">version: &apos;3&apos;
services:
  kroki:
    image: &apos;yuzutech/kroki:latest&apos;
    container_name: kroki
    restart: always
    ports:
      - &apos;8000:8000&apos;
</code></pre>
<h3 id="%E9%85%8D%E7%BD%AEghost%E7%9A%84nginx">&#x914D;&#x7F6E;Ghost&#x7684;Nginx</h3>
<pre><code class="language-nginx">location /kroki/ {
        proxy_pass http://kroki:8000/;
}
</code></pre>
<h3 id="ghost%E9%85%8D%E7%BD%AE">Ghost&#x914D;&#x7F6E;</h3>
<p>&#x5728;<a href="https://naturepi.com/ghost/#/settings/code-injection">code-injection</a> &#x7684;</p>]]></description><link>https://naturepi.com/2022/05/ghost-integration-kroki/</link><guid isPermaLink="false">6291fe86d07d0b00013949fb</guid><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Sun, 22 May 2022 17:42:55 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h3 id="%E5%AE%89%E8%A3%85kroki">&#x5B89;&#x88C5;Kroki</h3>
<p>&#x4F7F;&#x7528;Docker&#x5B89;&#x88C5;Kroki</p>
<pre><code class="language-yaml">version: &apos;3&apos;
services:
  kroki:
    image: &apos;yuzutech/kroki:latest&apos;
    container_name: kroki
    restart: always
    ports:
      - &apos;8000:8000&apos;
</code></pre>
<h3 id="%E9%85%8D%E7%BD%AEghost%E7%9A%84nginx">&#x914D;&#x7F6E;Ghost&#x7684;Nginx</h3>
<pre><code class="language-nginx">location /kroki/ {
        proxy_pass http://kroki:8000/;
}
</code></pre>
<h3 id="ghost%E9%85%8D%E7%BD%AE">Ghost&#x914D;&#x7F6E;</h3>
<p>&#x5728;<a href="https://naturepi.com/ghost/#/settings/code-injection">code-injection</a> &#x7684;Site Footer&#x4E2D;&#x52A0;&#x5165;&#x4EE5;&#x4E0B;&#x811A;&#x672C;</p>
<pre><code class="language-html">&lt;script&gt;
let plantumlCodes=$(&quot;code.language-plantuml&quot;)
plantumlCodes.each(function(index,element){
    let _this=$(this);
    let renderBody=_this.parent()
    $.ajax({
        url: &quot;/kroki/plantuml/svg&quot;,
        headers: {          
            Accept: &quot;image/svg+xml&quot;,
            &quot;Content-Type&quot;: &quot;text/plain; charset=utf-8&quot;   
        },
        data: _this.html(),
        method: &quot;POST&quot;,
        success: function (result) {
            renderBody.empty();
            renderBody.get(0).appendChild(result.children[0]);
        }
    })
})
&lt;/script&gt;
</code></pre>
<h3 id="%E9%AA%8C%E8%AF%81">&#x9A8C;&#x8BC1;</h3>
<pre><code class="language-plantuml">class A
class B extends A
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Dell U3219Q 闪屏(Flicker)的非专业测试]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="overall">Overall</h2>
<p>&#x5173;&#x4E8E;Dell U3219Q&#x662F;&#x5426;&#x95EA;&#x5C4F;</p>
<h3 id>&#x6743;&#x5A01;</h3>
<p>TUV&#x786E;&#x5B9E;&#x53EF;&#x4EE5;&#x67E5;&#x5230;U329Q&#x7684;Flicker Free&#x8BC1;&#x4E66;<br>
<a href="https://www.certipedia.com/quality_marks/1419058750?locale=en&amp;certificate_number=50501761&amp;ref=naturepi.com">https://www.certipedia.com/quality_marks/1419058750?locale=en&amp;certificate_number=50501761</a></p>
<p>TUV&#x7684;Flicker Free&#x7684;&#x6807;&#x51C6;&#x4E5F;&#x6709;&#x5B98;&#x65B9;&#x7684;&#x89E3;</p>]]></description><link>https://naturepi.com/2021/10/dell-u3219-flicker-test/</link><guid isPermaLink="false">6291fe86d07d0b00013949f9</guid><category><![CDATA[Geek]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Thu, 07 Oct 2021 16:01:30 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="overall">Overall</h2>
<p>&#x5173;&#x4E8E;Dell U3219Q&#x662F;&#x5426;&#x95EA;&#x5C4F;</p>
<h3 id>&#x6743;&#x5A01;</h3>
<p>TUV&#x786E;&#x5B9E;&#x53EF;&#x4EE5;&#x67E5;&#x5230;U329Q&#x7684;Flicker Free&#x8BC1;&#x4E66;<br>
<a href="https://www.certipedia.com/quality_marks/1419058750?locale=en&amp;certificate_number=50501761&amp;ref=naturepi.com">https://www.certipedia.com/quality_marks/1419058750?locale=en&amp;certificate_number=50501761</a></p>
<p>TUV&#x7684;Flicker Free&#x7684;&#x6807;&#x51C6;&#x4E5F;&#x6709;&#x5B98;&#x65B9;&#x7684;&#x89E3;&#x91CA;</p>
<blockquote>
<p>Flicker Free</p>
<ul>
<li>T&#xDC;V Rheinland has tested this product to ascertain whether the display produces visibly and invisible flicker for the human eye and therefore strains the eye of the user.</li>
<li>T&#xDC;V Rheinland has defined a catalogue of tests, which sets out minimum standards at various frequency ranges. The test catalogue is based on internationally applicable standards or standards common within the industry and exceeds these requirements.</li>
<li>The product has been tested in the laboratory according to these criteria.</li>
<li>The keyword &quot;Flicker Free&quot; confirms that the device has no visible and invisible flicker defined in this standard within the range of 0 - 3000 Hz under various brightness settings.</li>
</ul>
</blockquote>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;TUV&#x7684;&#x8BA4;&#x8BC1;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x95EE;&#x9898;&#xFF0C;&#x90A3;&#x5E94;&#x8BE5;&#x662F;&#x6CA1;&#x6709;3000hz&#x4EE5;&#x4E0B;&#x7684;&#x95EA;&#x70C1;&#x7684;&#x3002;</p>
<p>&#x4F46;&#x4ECE;rtings&#x7684;&#x6D4B;&#x8BD5;&#x770B;&#xFF0C;&#x5B83;&#x786E;&#x662F;&#x4E00;&#x5757;PWM&#x5C4F;&#xFF0C;<a href="https://www.rtings.com/monitor/reviews/dell/u3219q?ref=naturepi.com">https://www.rtings.com/monitor/reviews/dell/u3219q</a></p>
<blockquote>
<p>Flicker-Free No<br>
PWM Dimming Frequency 200 Hz<br>
Unfortunately, this Dell monitor is not flicker-free. There is a very high-frequency flicker, as well as a 200Hz wobble. The high-frequency flicker isn&apos;t noticeable, but the 200Hz wobble can be noticed on our moving RTINGS logo pattern when the backlight is turned down. If you find that flicker is bothering you then set the backlight to 100% where there is no noticeable flicker.</p>
</blockquote>
<p>&#x6309;rtings&#x7684;&#x8BF4;&#x6CD5;&#xFF0C;&#x5B83;&#x7528;&#x4E86;&#x4E00;&#x4E2A;&#x975E;&#x5E38;&#x9AD8;&#x7684;&#x9891;&#x7387;&#xFF0C;&#x4F46;&#x4F1A;&#x51FA;&#x73B0;&#x4E00;&#x4E2A;200hz&#x7684;&#x6296;&#x52A8;&#x3002;</p>
<h2 id>&#x6D4B;&#x8BD5;</h2>
<p>&#x521A;&#x597D;&#x624B;&#x4E0A;&#x6709;&#x51E0;&#x4E2A;&#x8BBE;&#x5907;&#x505A;&#x4E3A;&#x5BF9;&#x6BD4;&#xFF0C;&#x4E00;&#x4E2A;&#x662F;&#x6BD4;&#x8F83;&#x8001;&#x7684;&#x4E09;&#x661F;U28D590&#xFF0C;&#x8FD9;&#x4E2A;&#x663E;&#x793A;&#x5668;&#x5728;30&#x4EAE;&#x5EA6;&#x4EE5;&#x4E0A;&#x662F;DC&#x8C03;&#x5149;&#xFF0C;30&#x4EE5;&#x4E0B;&#x662F;240hz&#x7684;PWM&#x8C03;&#x5149;&#xFF0C;&#x53E6;&#x4E00;&#x53F0;&#x662F;&#x7D22;&#x5C3C;&#x7684;85x95j&#x7535;&#x89C6;&#xFF0C;&#x8FD9;&#x4E2A;&#x662F;720hz&#x7684;PWM&#x8C03;&#x5149;</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id>&#x6162;&#x955C;&#x5934;&#x6D4B;&#x8BD5;</h2>
<p>&#x624B;&#x4E0A;&#x53EA;&#x6709;&#x6BD4;&#x8F83;&#x8001;&#x7684;iPhone XS Max&#xFF0C;&#x652F;&#x6301;240&#x7684;&#x5F55;&#x5236;&#xFF0C;&#x5206;&#x522B;&#x5BF9;U28D590&#xFF0C;85x95j&#xFF0C;U3219Q&#x5F55;&#x5236;&#x56DE;&#x653E;&#x3002;</p>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;U28D590&#x5728;&#x9AD8;&#x4EAE;&#x5EA6;&#x4E0B;&#x662F;&#x770B;&#x4E0D;&#x5230;&#x95EA;&#x70C1;&#x7684;&#xFF0C;&#x800C;&#x5728;&#x4F4E;&#x4EAE;&#x5EA6;&#x5207;&#x6362;&#x4E3A;PWM&#x8C03;&#x5149;&#x540E;&#x53EF;&#x4EE5;&#x660E;&#x663E;&#x6355;&#x6349;&#x5230;&#x5237;&#x65B0;&#x7684;&#x6761;&#x7EB9;&#x3002;</p>
<p>&#x4F7F;&#x7528;PWM&#x8C03;&#x5149;&#x7684;85x95j&#x7531;&#x4E8E;&#x9891;&#x7387;&#x6BD4;&#x8F83;&#x9AD8;&#xFF0C;240&#x7684;&#x6162;&#x955C;&#x5934;&#x4E0B;&#x662F;&#x770B;&#x4E0D;&#x5230;&#x95EA;&#x70C1;&#x7684;&#x3002;</p>
<p>&#x800C;U3219Q&#x975E;&#x5E38;&#x7279;&#x522B;&#xFF0C;&#x9996;&#x5148;&#x5B83;&#x5728;&#x9ED1;&#x767D;&#x4EE5;&#x53CA;&#x7EAF;&#x8272;&#x4E0B;&#x662F;&#x770B;&#x4E0D;&#x5230;&#x95EA;&#x70C1;&#x7684;&#xFF0C;&#x800C;&#x5728;&#x7070;&#x8272;&#x4E0B;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x95EA;&#x70C1;&#xFF0C;&#x8FD9;&#x79CD;&#x95EA;&#x70C1;&#x53C8;&#x4E0D;&#x50CF;U28D590&#x7684;PWM&#x8C03;&#x5149;&#x4E00;&#x6837;&#xFF0C;&#x80FD;&#x6355;&#x6349;&#x5230;&#x5237;&#x65B0;&#x6761;&#x7EB9;&#xFF0C;&#x66F4;&#x795E;&#x5947;&#x7684;&#x53EA;&#x6709;&#x7070;&#x8272;&#x4E0B;&#x53EF;&#x4EE5;&#x62CD;&#x51FA;&#x95EA;&#x70C1;&#xFF0C;&#x7EAF;&#x767D;&#x7EAF;&#x9ED1;&#x90FD;&#x4E0D;&#x4F1A;&#x3002;&#x6240;&#x4EE5;rtings&#x7684;200hz&#x7684;&#x6296;&#x52A8;&#x7684;&#x8BF4;&#x6CD5;&#x5F88;&#x53EF;&#x80FD;&#x6210;&#x7ACB;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x95EA;&#x70C1;&#x4E0D;&#x4EC5;&#x4EC5;&#x5728;&#x4F4E;&#x4EAE;&#x5EA6;&#x4E0B;&#x80FD;&#x6355;&#x83B7;&#xFF0C;&#x5728;&#x6700;&#x9AD8;&#x4EAE;&#x5EA6;&#xFF0C;&#x6309;rtings&#x7684;&#x6D4B;&#x8BD5;&#x5E94;&#x8BE5;&#x662F;&#x65E0;&#x95EA;&#x70C1;&#x7684;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x6355;&#x6349;&#x5230;&#x3002;</p>
<p>&#x5B83;&#x592A;&#x7279;&#x6B8A;&#x4E86;&#xFF0C;&#x8FD8;&#x662F;&#x8981;&#x8FDB;&#x4E00;&#x6B65;&#x9A8C;&#x8BC1;</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id>&#x76F8;&#x673A;&#x5FEB;&#x95E8;</h2>
<p>tftcentral&#x5173;&#x4E8E;PWM&#x89E3;&#x91CA;(<a href="http://tftcentral.co.uk/articles/pulse_width_modulation?ref=naturepi.com">http://tftcentral.co.uk/articles/pulse_width_modulation</a>)&#x91CC;&#x4E5F;&#x63D0;&#x5230;&#x4E86;&#x4E00;&#x79CD;&#x65B9;&#x6CD5;&#xFF0C;&#x4F7F;&#x7528;&#x76F8;&#x673A;&#x5FEB;&#x95E8;&#x62CD;&#x6444;&#x79FB;&#x52A8;&#x7684;&#x7269;&#x4F53;&#xFF0C;&#x624B;&#x4E0A;&#x521A;&#x597D;&#x6709;5D3&#x7684;&#x5355;&#x53CD;&#xFF0C;&#x6211;&#x4E13;&#x95E8;&#x5236;&#x4F5C;&#x4E86;&#x4E00;&#x6761;3px&#x7684;&#x7070;&#x8272;&#x7EBF;&#x6761;</p>
<p>&#x4F7F;&#x7528;1/10&#x7684;&#x5FEB;&#x95E8;&#x5300;&#x901F;&#x79FB;&#x52A8;&#x62CD;&#x6444;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;<br>
U28D590&#x5728;DC&#x8C03;&#x5149;&#x4E0B;&#x5448;&#x73B0;&#x51FA;&#x4E00;&#x4E2A;&#x5747;&#x5300;&#x7684;&#x957F;&#x65B9;&#x4F53;<br>
<img src="https://naturepi.com/content/images/2021/10/u28d590-dc-10.jpg" alt="u28d590-dc-10" loading="lazy"><br>
&#x800C;&#x5728;PWM&#x8C03;&#x5149;&#x4E0B;&#x5448;&#x73B0;&#x51FA;&#x6765;&#x662F;&#x4E00;&#x6392;&#x7EBF;&#xFF0C;&#x7EBF;&#x7684;&#x6570;&#x91CF;&#x4E58;&#x4EE5;&#x5FEB;&#x95E8;&#x521A;&#x597D;&#x662F;240<br>
<img src="https://naturepi.com/content/images/2021/10/u28d590-pwm-10.jpg" alt="u28d590-pwm-10" loading="lazy"></p>
<p>85x95j&#x7531;&#x4E8E;&#x662F;PWM&#x8C03;&#x5149;&#x540C;&#x6837;&#x662F;&#x4E00;&#x6392;&#x7EBF;&#xFF0C;&#x6570;&#x91CF;&#x4E58;&#x4EE5;&#x5FEB;&#x95E8;&#x662F;720&#xFF0C;&#x4E5F;&#x8BF4;&#x660E;&#x81F3;&#x5C11;720&#x4EE5;&#x4E0B;&#x7684;PWM&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x8FD9;&#x79CD;&#x65B9;&#x6CD5;&#x6355;&#x83B7;&#x7684;&#x3002;<br>
<img src="https://naturepi.com/content/images/2021/10/85x95j-pwm-10.jpg" alt="85x95j-pwm-10" loading="lazy"></p>
<p>U3219Q&#x65E0;&#x8BBA;&#x5728;&#x9AD8;&#x4EAE;&#x5EA6;&#x8FD8;&#x662F;&#x4F4E;&#x4EAE;&#x5EA6;&#x4E0B;&#x5747;&#x4E3A;&#x957F;&#x65B9;&#x4F53;<br>
<img src="https://naturepi.com/content/images/2021/10/u3219q-b100-10.jpg" alt="u3219q-b100-10" loading="lazy"><br>
<img src="https://naturepi.com/content/images/2021/10/u3219q-b1-10.jpg" alt="u3219q-b1-10" loading="lazy"><br>
&#x751A;&#x81F3;&#x4E5F;&#x770B;&#x4E0D;&#x51FA;&#x6765;&#x6709;&#x4EAE;&#x5EA6;&#x7684;&#x53D8;&#x5316;&#xFF0C;&#x7406;&#x8BBA;&#x4E0A;200hz&#x7684;&#x6296;&#x52A8;&#x5728;&#x8FD9;&#x79CD;&#x62CD;&#x6444;&#x4E0B;&#x5E94;&#x8BE5;&#x4F1A;&#x5448;&#x73B0;&#x51FA;&#x6709;&#x6E10;&#x53D8;&#x6761;&#x7EB9;&#x7684;&#x65B9;&#x5757;&#xFF0C;&#x4F46;&#x5B83;&#x5C45;&#x7136;&#x975E;&#x5E38;&#x7684;&#x5747;&#x5300;</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id>&#x603B;&#x7ED3;</h2>
<p>&#x53EF;&#x4EE5;&#x786E;&#x5B9A;&#x4E00;&#x70B9;&#xFF0C;U3219Q&#x80AF;&#x5B9A;&#x4E0D;&#x4F1A;&#x662F;720hz&#x4EE5;&#x4E0B;&#x7684;PWM&#x8C03;&#x5149;&#xFF0C;&#x8FD9;&#x4E5F;&#x662F;&#x5B83;&#x4E3A;&#x4EC0;&#x4E48;&#x80FD;&#x83B7;&#x5F97;TUV&#x8BA4;&#x8BC1;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x81F3;&#x4E8E;&#x6709;&#x6CA1;&#x6709;200hz&#x7684;&#x6296;&#x52A8;&#xFF0C;&#x6211;&#x4E5F;&#x5F88;&#x96BE;&#x786E;&#x5B9A;&#xFF0C;&#x4F46;&#x4ECE;&#x6162;&#x955C;&#x5934;&#x770B;&#xFF0C;&#x5E94;&#x8BE5;&#x662F;&#x6709;&#x4E00;&#x5B9A;&#x7684;&#x4E0D;&#x7A33;&#x5B9A;&#x5B58;&#x5728;&#x7684;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48;&#x53EA;&#x5728;&#x7070;&#x8272;&#x4E0B;&#x9762;&#x6355;&#x6349;&#x5230;&#xFF0C;&#x4EE5;&#x53CA;&#x4E3A;&#x4EC0;&#x4E48;&#x5728;&#x6700;&#x9AD8;&#x4EAE;&#x5EA6;&#x6309;rtings&#x7684;&#x6D4B;&#x8BD5;&#x5E94;&#x8BE5;&#x662F;&#x65E0;&#x95EA;&#x70C1;&#x7684;&#x4E5F;&#x80FD;&#x6355;&#x6349;&#x5230;&#xFF0C;&#x8FD9;&#x4E2A;&#x8FF7;&#x9898;&#x8D85;&#x51FA;&#x6211;&#x7684;&#x8BA4;&#x77E5;&#x4E86;&#x3002;</p>
<p>&#x603B;&#x4F53;&#x4E0A;&#x8BF4;&#xFF0C;U3219Q&#x80AF;&#x5B9A;&#x7528;&#x4E86;&#x4E00;&#x79CD;&#x975E;&#x5E38;&#x7279;&#x522B;&#x7684;&#x8C03;&#x5149;&#x65B9;&#x5F0F;&#xFF0C;&#x548C;&#x5B83;&#x540C;&#x9762;&#x677F;&#x7684;LG 32UN99&#x4F7F;&#x7528;DC&#x8C03;&#x5149;&#x660E;&#x663E;&#x70E7;&#x5C4F;&#xFF0C;&#x800C;&#x540E;&#x7EE7;&#x578B;&#x53F7;32UL950&#x6362;&#x6210;&#x4E86;PWM 240hz&#x8C03;&#x5149;&#xFF0C;U3219Q&#x7684;&#x8C03;&#x5149;&#x6216;&#x8BB8;&#x662F;&#x8FD9;&#x5757;&#x9762;&#x677F;&#x7684;&#x6700;&#x4F73;&#x9009;&#x62E9;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[解决module 'luci.cbi' not found:]]></title><description><![CDATA[<pre><code class="language-sh">opkg update
opkg install luci-compat</code></pre>]]></description><link>https://naturepi.com/2020/12/module-luci-cbi-not-found/</link><guid isPermaLink="false">6291fe86d07d0b00013949f8</guid><category><![CDATA[Geek]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Fri, 25 Dec 2020 15:05:52 GMT</pubDate><content:encoded><![CDATA[<pre><code class="language-sh">opkg update
opkg install luci-compat</code></pre>]]></content:encoded></item><item><title><![CDATA[Ubnt ER-X 安装配置]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x57FA;&#x7840;&#x5B89;&#x88C5;&#x914D;&#x7F6E;</h2>
<h3 id>&#x521D;&#x59CB;&#x5316;</h3>
<p>&#x7F51;&#x7EBF;&#x63A5;&#x5165;&#x7B2C;&#x4E00;&#x4E2A;&#x7F51;&#x53E3;&#xFF08;&#x53EA;&#x80FD;&#x7B2C;&#x4E00;&#x4E2A;&#x7F51;&#x53E3;&#xFF09;&#xFF0C;&#x901A;&#x8FC7;&#x6D4F;&#x89C8;&#x5668;&#x8BBF;&#x95EE;&#x63A7;&#x5236;&#x53F0;&#xFF0C;&#x521D;&#x59CB;&#x5316;&#x914D;&#x7F6E;</p>
<h3 id="nat">&#x5F00;&#x542F;&#x786C;&#x4EF6;NAT</h3>
<p>&#x5F00;</p>]]></description><link>https://naturepi.com/2020/12/ubnt-erx-guide/</link><guid isPermaLink="false">6291fe86d07d0b00013949f7</guid><category><![CDATA[Geek]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Mon, 21 Dec 2020 02:40:05 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x57FA;&#x7840;&#x5B89;&#x88C5;&#x914D;&#x7F6E;</h2>
<h3 id>&#x521D;&#x59CB;&#x5316;</h3>
<p>&#x7F51;&#x7EBF;&#x63A5;&#x5165;&#x7B2C;&#x4E00;&#x4E2A;&#x7F51;&#x53E3;&#xFF08;&#x53EA;&#x80FD;&#x7B2C;&#x4E00;&#x4E2A;&#x7F51;&#x53E3;&#xFF09;&#xFF0C;&#x901A;&#x8FC7;&#x6D4F;&#x89C8;&#x5668;&#x8BBF;&#x95EE;&#x63A7;&#x5236;&#x53F0;&#xFF0C;&#x521D;&#x59CB;&#x5316;&#x914D;&#x7F6E;</p>
<h3 id="nat">&#x5F00;&#x542F;&#x786C;&#x4EF6;NAT</h3>
<p>&#x5F00;&#x542F;NAT&#x9700;&#x8981;&#x4F7F;&#x7528;SSH&#x767B;&#x9646;&#xFF0C;&#x5E10;&#x6237;&#x4E3A;&#x5728;&#x521D;&#x59CB;&#x5316;&#x8BBE;&#x7F6E;&#x7684;&#x7BA1;&#x7406;&#x5458;&#x8D26;&#x6237;</p>
<pre><code>show ubnt offload
</code></pre>
<pre><code>configure
set system offload hwnat enable
commit
save
</code></pre>
<pre><code>sudo reboot
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id>&#x9AD8;&#x7EA7;&#x914D;&#x7F6E;</h2>
<h3 id="upnp">UPNP</h3>
<p>UPNP&#x53EF;&#x4EE5;&#x8BA9;&#x4F60;&#x7684;&#x8BBE;&#x5907;&#x70B9;&#x5BF9;&#x70B9;&#x901A;&#x4FE1;&#xFF0C;&#x4EE5;&#x53CA;&#x81EA;&#x52A8;&#x7684;NAT&#x7A7F;&#x900F;</p>
<blockquote>
<p>&#x4EE5;&#x4E0B;&#x914D;&#x7F6E;&#x4EC5;&#x9002;&#x914D;PPPOE&#x6A21;&#x5F0F;&#xFF0C;&#x4E0D;&#x9002;&#x914D;DHCP&#x6A21;&#x5F0F;</p>
</blockquote>
<pre><code>show ubnt offload
</code></pre>
<pre><code class="language-sh">sudo su
configure
set service upnp2 wan pppoe0
set service upnp2 listen-on switch0
set service upnp2 nat-pmp enable
set service upnp2 secure-mode enable
commit
save
exit
</code></pre>
<pre><code>sudo reboot
</code></pre>
<h3 id="ddns">DDNS</h3>
<h4 id="ddns">&#x914D;&#x7F6E;DDNS</h4>
<p><code>vi /config/scripts/aliddns/aliddns_erx.sh</code></p>
<pre><code class="language-bash">#!/bin/sh

aliddns_ak=ak  #ak
aliddns_sk=sk #sk
aliddns_name=home
aliddns_domain=xxx.online
aliddns_type=A
aliddns_dns=223.5.5.5
aliddns_record_id=&quot;&quot;
aliddns_ttl=600
aliddns_version=1.0


now=`date`

die () {
    echo $1

}

file_name=&quot;/tmp/aliddns_$aliddns_name.$aliddns_domain.$aliddns_type.id&quot;;

if [ -f &quot;$file_name&quot; ];then
aliddns_record_id=`cat $file_name`;
else
aliddns_record_id=&quot;&quot;
fi

ip=`ip addr show dev pppoe0 |awk -F&quot; &quot; &apos;NR==3 {print $2}&apos;`

current_ip=`host $aliddns_name.$aliddns_domain $aliddns_dns |grep &apos;has address&apos; 2&gt;&amp;1`


echo &quot;curl_ip: $ip   dns_ip:$current_ip&quot; 

if [ &quot;$?&quot; -eq &quot;0&quot; ]
then
    current_ip=`echo &quot;$current_ip&quot; | tail -n1|awk -F &apos; &apos; &apos;{print $4}&apos;`
     echo &quot;dns_ip:$current_ip&quot; 
    if [ &quot;$ip&quot; = &quot;$current_ip&quot; ]
    then
        echo &quot;skipping&quot;
        exit 0
    fi 
fi


timestamp=`date -u &quot;+%Y-%m-%dT%H%%3A%M%%3A%SZ&quot;`

urlencode() {
    # urlencode &lt;string&gt;
    out=&quot;&quot;
    while read -n1 c
    do
        case $c in
            [a-zA-Z0-9._-]) out=&quot;$out$c&quot; ;;
            *) out=&quot;$out`printf &apos;%%%02X&apos; &quot;&apos;$c&quot;`&quot; ;;
        esac
    done
    echo -n $out
}

enc() {
    echo -n &quot;$1&quot; | urlencode
}

send_request() {
    local args=&quot;AccessKeyId=$aliddns_ak&amp;Action=$1&amp;Format=json&amp;$2&amp;Version=2015-01-09&quot;
    local hash=$(echo -n &quot;GET&amp;%2F&amp;$(enc &quot;$args&quot;)&quot; | openssl dgst -sha1 -hmac &quot;$aliddns_sk&amp;&quot; -binary | openssl base64)
	#echo  &quot;http://alidns.aliyuncs.com/?$args&amp;Signature=$(enc &quot;$hash&quot;)&quot;
    curl -s &quot;http://alidns.aliyuncs.com/?$args&amp;Signature=$(enc &quot;$hash&quot;)&quot;
}

get_recordid() {
    grep -Eo &apos;&quot;RecordId&quot;:&quot;[0-9]+&quot;&apos; | cut -d&apos;:&apos; -f2 | tr -d &apos;&quot;&apos;
}

query_recordid() {
    send_request &quot;DescribeSubDomainRecords&quot; &quot;SignatureMethod=HMAC-SHA1&amp;SignatureNonce=$timestamp&amp;SignatureVersion=1.0&amp;SubDomain=$aliddns_name.$aliddns_domain&amp;Timestamp=$timestamp&amp;Type=$aliddns_type&quot;
}

update_record() {
    send_request &quot;UpdateDomainRecord&quot; &quot;RR=$aliddns_name&amp;RecordId=$1&amp;SignatureMethod=HMAC-SHA1&amp;SignatureNonce=$timestamp&amp;SignatureVersion=1.0&amp;TTL=$aliddns_ttl&amp;Timestamp=$timestamp&amp;Type=$aliddns_type&amp;Value=$(enc &quot;$ip&quot;)&quot;
}

add_record() {
    send_request &quot;AddDomainRecord&amp;DomainName=$aliddns_domain&quot; &quot;RR=$aliddns_name&amp;SignatureMethod=HMAC-SHA1&amp;SignatureNonce=$timestamp&amp;SignatureVersion=1.0&amp;TTL=$aliddns_ttl&amp;Timestamp=$timestamp&amp;Type=$aliddns_type&amp;Value=$(enc &quot;$ip&quot;)&quot;
}

if [ &quot;$aliddns_record_id&quot; = &quot;&quot; ]
then
    aliddns_record_id=`query_recordid | get_recordid`
fi
if [ &quot;$aliddns_record_id&quot; = &quot;&quot; ]
then
    aliddns_record_id=`add_record | get_recordid`
    echo &quot;added record $aliddns_record_id&quot;
else
    update_record $aliddns_record_id
    echo &quot;updated record $aliddns_record_id&quot;
fi

# save to file
if [ &quot;$aliddns_record_id&quot; = &quot;&quot; ]; then
    # failed
    echo &quot;aliddns_record_id null&quot;
else
    #dbus ram aliddns_record_id=$aliddns_record_id
    echo $aliddns_record_id &gt; $file_name
</code></pre>
<h3 id>&#x914D;&#x7F6E;&#x8BA1;&#x5212;&#x4EFB;&#x52A1;</h3>
<pre><code class="language-bash">sudo crontab -e
</code></pre>
<pre><code class="language-sh">*/10 * * * * sh /config/scripts/aliddns/aliddns_erx.sh
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Raspberry Pi 傻瓜教程]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="raspberrypi">&#x51C6;&#x5907;Raspberry Pi</h2>
<p>&#x62FF;&#x5230;RPI&#x540E;&#x7B2C;&#x4E00;&#x4EF6;&#x4E8B;&#x5C31;&#x662F;&#x8981;&#x5B89;&#x88C5;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x6BEB;&#x65E0;&#x7591;&#x95EE;&#xFF0C;Raspbian&#x4F5C;&#x4E3A;RPI&#x7684;&#x5B98;&#x65B9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x53EF;&#x4EE5;&#x4ECE;<a href="https://www.raspberrypi.org/downloads/raspbian/?ref=naturepi.com">&#x5B98;&#x65B9;&#x4E0B;&#x8F7D;&#x94FE;&#x63A5;</a>&#x83B7;&#x5F97;</p>]]></description><link>https://naturepi.com/2020/09/raspberry-pi-sha-gua-jiao-cheng/</link><guid isPermaLink="false">6291fe86d07d0b00013949f5</guid><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Fri, 04 Sep 2020 14:09:43 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="raspberrypi">&#x51C6;&#x5907;Raspberry Pi</h2>
<p>&#x62FF;&#x5230;RPI&#x540E;&#x7B2C;&#x4E00;&#x4EF6;&#x4E8B;&#x5C31;&#x662F;&#x8981;&#x5B89;&#x88C5;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x6BEB;&#x65E0;&#x7591;&#x95EE;&#xFF0C;Raspbian&#x4F5C;&#x4E3A;RPI&#x7684;&#x5B98;&#x65B9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x53EF;&#x4EE5;&#x4ECE;<a href="https://www.raspberrypi.org/downloads/raspbian/?ref=naturepi.com">&#x5B98;&#x65B9;&#x4E0B;&#x8F7D;&#x94FE;&#x63A5;</a>&#x83B7;&#x5F97;&#x3002;</p>
<p>&#x4E0B;&#x8F7D;&#x597D;&#x955C;&#x50CF;&#x540E;&#x901A;&#x8FC7;&#x5DE5;&#x5177;flash&#x4E00;&#x5F20;SD&#x5361;&#xFF08;&#x4E5F;&#x5C31;&#x662F;RPI&#x7684;&#x786C;&#x76D8;&#xFF09;&#x3002;&#x63A8;&#x8350;&#x4F7F;&#x7528;&#x5B98;&#x65B9;&#x7684;&#x70E7;&#x5F55;&#x5DE5;&#x5177;<a href="https://www.raspberrypi.org/downloads/?ref=naturepi.com">Raspberry Pi Imager</a>&#xFF0C;&#x5F53;&#x7136;<br>
Linux&#x4E0B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x4F7F;&#x7528;<code>dd</code>&#x547D;&#x4EE4;&#xFF0C;Mac&#x4E0B;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<a href="https://www.balena.io/etcher/?ref=naturepi.com">balenaEtcher</a></p>
<p>&#x70E7;&#x5F55;&#x5B8C;&#x6210;&#xFF0C;&#x5148;&#x4E0D;&#x8981;&#x6025;&#x7740;&#x5C06;SD&#x5361;&#x653E;&#x5165;&#x6811;&#x8393;&#x6D3E;&#xFF0C;&#x9664;&#x975E;&#x4F60;&#x5DF2;&#x7ECF;&#x51C6;&#x5907;&#x597D;&#x4E86;&#x5916;&#x63A5;&#x952E;&#x76D8;&#x548C;&#x663E;&#x793A;&#x5668;&#xFF0C;&#x4EE5;&#x4E0B;&#x64CD;&#x4F5C;&#x53EF;&#x4EE5;&#x5728;&#x6CA1;&#x6709;&#x989D;&#x5916;&#x7684;&#x5916;&#x8BBE;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x4F7F;&#x7528;SSH&#x8FDE;&#x63A5;</p>
<h3 id="ssh">&#x6253;&#x5F00;SSH</h3>
<p>&#x6309;&#x5B98;&#x65B9;&#x7684;&#x65B9;&#x6CD5;&#x53EA;&#x8981;&#x68C0;&#x6D4B;SD&#x5361;&#x6839;&#x76EE;&#x5F55;&#x4E0B;&#x6709;<code>ssh</code>&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x5C31;&#x4F1A;&#x81EA;&#x52A8;&#x6253;&#x5F00;SSH&#x3002;</p>
<pre><code class="language-shell">touch /Volumes/boot/ssh
</code></pre>
<h3 id="wifi">&#x914D;&#x7F6E;WIFI&#x7F51;&#x7EDC;</h3>
<p>&#x5982;&#x679C;&#x4F60;&#x4F7F;&#x7528;&#x65E0;&#x7EBF;&#x8FDE;&#x63A5;&#xFF0C;&#x90A3;&#x4E48;&#x4F60;&#x9700;&#x8981;&#x9884;&#x8BBE;&#x597D;</p>
<p>&#x5728;SD&#x5361;&#x7684;&#x6839;&#x76EE;&#x5F55;&#x4E0B;&#x6DFB;&#x52A0;&#x4E00;&#x4E2A;&#x540D;&#x4E3A; wpa_supplicant.conf&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x7136;&#x540E;&#x5728;&#x8BE5;&#x6587;&#x4EF6;&#x5185;&#x6DFB;&#x52A0;&#x4EE5;&#x4E0B;&#x7684;&#x5185;&#x5BB9;</p>
<pre><code>ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
  ssid=&quot;$ssid&quot;
  psk=&quot;$password&quot;
}
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="raspberrypi">&#x521D;&#x59CB;&#x5316;Raspberry Pi</h2>
<p>&#x5C06;SD&#x5361;&#x63D2;&#x5165;&#x6811;&#x8393;&#x6D3E;&#x5361;&#x69FD;&#xFF0C;&#x63A5;&#x901A;&#x7535;&#x6E90;&#xFF0C;&#x5982;&#x679C;&#x4F7F;&#x7528;WIFI&#x8FDE;&#x63A5;&#x786E;&#x4FDD;&#x5728;WIFI&#x7684;&#x8986;&#x76D6;&#x8303;&#x56F4;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x952E;&#x76D8;&#x548C;&#x663E;&#x793A;&#x5668;&#xFF0C;&#x8FDE;&#x63A5;&#x597D;&#x5916;&#x8BBE;&#x3002;&#x5982;&#x679C;&#x4F7F;&#x7528;SSH&#xFF0C;&#x4F7F;&#x7528;&#x4E0B;&#x9762;&#x7684;&#x65B9;&#x6CD5;</p>
<h3 id="ssh">&#x4F7F;&#x7528;SSH&#x767B;&#x5F55;</h3>
<p>&#x9ED8;&#x8BA4;&#x4E3B;&#x673A;&#x540D;&#x4E3A;<code>raspberrypi</code>&#xFF0C;&#x53EF;&#x4EE5;&#x5C1D;&#x8BD5;ping&#xFF0C;&#x68C0;&#x67E5;&#x542F;&#x52A8;&#x72B6;&#x6001;</p>
<pre><code class="language-shell">ping raspberrypi.local
</code></pre>
<p>&#x8FD9;&#x65F6;&#x4F60;&#x5DF2;&#x7ECF;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x7528;&#x6237;&#x540D;&#xFF1A;<code>pi</code>&#x548C;&#x5BC6;&#x7801;&#xFF1A;<code>raspberry</code>&#x767B;&#x5F55;&#xFF0C;&#x5F53;&#x7136;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x5148;&#x5C06;&#x4F60;&#x7684;&#x516C;&#x94A5;&#x52A0;&#x5165;&#x5230;pi&#x7528;&#x6237;&#x7684;<code>/home/pi/.ssh/authorized_keys</code>&#x4E2D;&#xFF0C;&#x5F00;&#x542F;&#x514D;&#x5BC6;SSH</p>
<pre><code class="language-shell">ssh-copy-id -i ~/.ssh/id_rsa.pub pi@respberrypi.local
</code></pre>
<p>&#x7B2C;&#x4E00;&#x6B21;&#x9700;&#x8981;&#x5BC6;&#x7801;</p>
<p>SSH&#x767B;&#x5F55;</p>
<pre><code class="language-shell">ssh pi@respberrypi.local
</code></pre>
<h3 id>&#x8BBE;&#x7F6E;</h3>
<pre><code class="language-shell">ssh pi@respberrypi.local
</code></pre>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>s</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id>&#x5B89;&#x88C5;&#x5FC5;&#x8981;&#x8F6F;&#x4EF6;</h2>
<h3 id>&#x4F7F;&#x7528;&#x6E05;&#x534E;&#x955C;&#x50CF;&#x52A0;&#x901F;</h3>
<pre><code class="language-shell">sudo vi /etc/apt/sources.list
</code></pre>
<p>&#x6CE8;&#x91CA;&#x6389;&#x4E4B;&#x524D;&#x7684;&#x6E90;&#xFF0C;&#x52A0;&#x5165;&#x4EE5;&#x4E0B;&#x914D;&#x7F6E;</p>
<pre><code class="language-shell">deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
</code></pre>
<pre><code class="language-shell">sudo vi /etc/apt/sources.list.d/raspi.list
</code></pre>
<p>&#x6CE8;&#x91CA;&#x6389;&#x4E4B;&#x524D;&#x7684;&#x6E90;&#xFF0C;&#x52A0;&#x5165;&#x4EE5;&#x4E0B;&#x914D;&#x7F6E;</p>
<pre><code class="language-shell">deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
</code></pre>
<h3 id>&#x66F4;&#x65B0;&#x7CFB;&#x7EDF;&#x4FDD;&#x6301;&#x6700;&#x65B0;</h3>
<pre><code class="language-shell">sudo apt-get update &amp;&amp; sudo apt-get upgrade
</code></pre>
<h3 id="vim">&#x5B89;&#x88C5;vim</h3>
<pre><code class="language-shell">sudo apt-get install vim
</code></pre>
<h3 id="fish">&#x5B89;&#x88C5;fish</h3>
<pre><code class="language-shell">sudo apt-get install fish
</code></pre>
<p>&#x7F16;&#x8F91;<code>/etc/passwd</code>&#x6587;&#x4EF6;<br>
&#x5C06;pi&#x7684;&#x9ED8;&#x8BA4;shell&#x4FEE;&#x6539;&#x4E3A;<code>/usr/bin/fish</code></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="docker">&#x5B89;&#x88C5;Docker</h2>
<pre><code class="language-shell">sudo apt-get install docker.io
sudo apt-get install docker-compose
sudo usermod -aG docker pi
</code></pre>
<p>&#x914D;&#x7F6E;&#x955C;&#x50CF;&#x52A0;&#x901F;</p>
<pre><code class="language-shell">sudo mkdir -p /etc/docker
echo &apos;{
    &quot;registry-mirrors&quot;: [ 
        &quot;https://1nj0zren.mirror.aliyuncs.com&quot;,
        &quot;https://docker.mirrors.ustc.edu.cn&quot;,
        &quot;http://f1361db2.m.daocloud.io&quot;,
        &quot;https://registry.docker-cn.com&quot;
    ]
}&apos; | sudo tee -a /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Mac开启aptX]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x968F;&#x7740;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#x7684;&#x8BBE;&#x5907;&#x53D6;&#x6D88;&#x4E86;&#x8033;&#x673A;&#x5B54;&#xFF0C;&#x84DD;&#x7259;&#x5C31;&#x6210;&#x4E3A;&#x4E86;&#x6D88;&#x8D39;&#x7EA7;&#x97F3;&#x9891;&#x9886;&#x57DF;&#x7684;&#x4E3B;&#x6D41;&#x4F20;&#x8F93;&#x65B9;&#x6848;&#xFF0C;&#x7136;&#x800C;&#x4F60;&#x53EF;&#x80FD;&#x4E0D;&#x77E5;&#x9053;&#xFF0C;&#x84DD;&#x7259;&#x97F3;&#x9891;</p>]]></description><link>https://naturepi.com/2018/12/enable-aptx-on-mac/</link><guid isPermaLink="false">6291fe86d07d0b00013949f0</guid><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Tue, 18 Dec 2018 11:45:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x968F;&#x7740;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#x7684;&#x8BBE;&#x5907;&#x53D6;&#x6D88;&#x4E86;&#x8033;&#x673A;&#x5B54;&#xFF0C;&#x84DD;&#x7259;&#x5C31;&#x6210;&#x4E3A;&#x4E86;&#x6D88;&#x8D39;&#x7EA7;&#x97F3;&#x9891;&#x9886;&#x57DF;&#x7684;&#x4E3B;&#x6D41;&#x4F20;&#x8F93;&#x65B9;&#x6848;&#xFF0C;&#x7136;&#x800C;&#x4F60;&#x53EF;&#x80FD;&#x4E0D;&#x77E5;&#x9053;&#xFF0C;&#x84DD;&#x7259;&#x97F3;&#x9891;&#x5C45;&#x7136;&#x8FD8;&#x6709;&#x8FD9;&#x4E48;&#x591A;&#x7684;&#x7F16;&#x7801;&#x4F20;&#x8F93;&#x534F;&#x8BAE;&#xFF0C;&#x800C;&#x8FD9;&#x4E9B;&#x534F;&#x8BAE;&#x7684;&#x97F3;&#x8D28;&#x6548;&#x679C;&#x4E5F;&#x662F;&#x5929;&#x5DEE;&#x5730;&#x522B;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x4E9B;&#x4E3B;&#x6D41;&#x7684;&#x534F;&#x8BAE;&#xFF1A;&#x505A;&#x4E3A;&#x5BF9;&#x6BD4;&#xFF0C;&#x6D88;&#x8D39;&#x7EA7;&#x7684;CD&#x673A;&#x7684;&#x97F3;&#x8D28;&#x4E5F;&#x5C31;&#x662F;&#x901A;&#x5E38;&#x6211;&#x4EEC;&#x8BA4;&#x4E3A;&#x7684;&#x65E0;&#x635F;&#x7684;&#x6700;&#x4F4E;&#x6807;&#x51C6;&#x4E3A;44.1kHz/16bit</p>
<ul>
<li><code>SBC</code>&#xFF1A;A2DP&#x7684;&#x5F3A;&#x5236;&#x534F;&#x8BAE;&#xFF0C;&#x6240;&#x6709;&#x8BBE;&#x5907;&#x90FD;&#x4F1A;&#x652F;&#x6301;&#xFF0C;&#x84DD;&#x7259;&#x901A;&#x8BDD;&#x901A;&#x5E38;&#x5C31;&#x662F;&#x7528;&#x7684;&#x8FD9;&#x4E2A;&#x534F;&#x8BAE;&#xFF0C;&#x4F46;&#x662F;&#x97F3;&#x8D28;&#x4E00;&#x822C;&#xFF0C;&#x4F20;&#x8F93;&#x7801;&#x7387;&#x4E3A;328kbps&#xFF0C;&#x5EF6;&#x65F6;&#x901A;&#x5E38;&#x4E3A;120ms</li>
<li><code>AAC</code>&#xFF1A;&#x675C;&#x6BD4;&#x5B9E;&#x9A8C;&#x5BA4;&#x63D0;&#x4F9B;&#x7684;&#x9AD8;&#x538B;&#x7F29;&#x97F3;&#x9891;&#x6280;&#x672F;&#xFF0C;Apple Music&#x9ED8;&#x8BA4;&#x5C31;&#x662F;&#x8FD9;&#x79CD;&#x683C;&#x5F0F;&#xFF0C;&#x4E0E;SBC&#x7801;&#x7387;&#x5DEE;&#x4E0D;&#x591A;&#xFF0C;&#x53EF;&#x60F3;&#x800C;&#x77E5;&#x6548;&#x679C;&#x8981;&#x597D;&#x4E8E;SBC&#xFF0C;&#x4F46;&#x4E5F;&#x6709;&#x9650;</li>
<li><code>aptX</code>&#xFF1A;CSR&#x7684;&#x63D0;&#x4F9B;&#x4E13;&#x5229;&#x6280;&#x672F;&#xFF08;&#x73B0;&#x5728;&#x88AB;&#x9AD8;&#x901A;&#x6536;&#x8D2D;&#x4E86;&#xFF09;&#xFF0C;&#x66F4;&#x9AD8;&#x7684;&#x538B;&#x7F29;&#x7B97;&#x6CD5;(4:1)&#x548C;&#x4F4E;&#x5EF6;&#x65F6;(40ms)&#xFF0C;&#x662F;&#x4E13;&#x4E1A;&#x7684;&#x65E0;&#x7EBF;&#x97F3;&#x9891;&#x4F20;&#x8F93;&#x65B9;&#x6848;&#xFF0C;aptX&#x8FD8;&#x6709;&#x591A;&#x4E2A;&#x7248;&#x672C;
<ul>
<li>&#x9ED8;&#x8BA4;&#xFF1A;aptX&#xFF0C;&#x4F20;&#x8F93;&#x7801;&#x7387;352kbps&#xFF0C;&#x521A;&#x597D;&#x53EF;&#x4EE5;&#x4F20;&#x8F93;CD&#x7684;&#x97F3;&#x8D28;(44.1kHz x 16bit x 2&#x58F0;&#x9053; / 4&#x538B;&#x7F29;&#x7387; = 352.8kbps)</li>
<li>&#x9AD8;&#x6E05;&#x97F3;&#x9891;&#xFF1A;aptX HD&#xFF0C;&#x4F20;&#x8F93;&#x7801;&#x7387;576kbps&#xFF0C;&#x7531;&#x4E8E;&#x4F7F;&#x7528;&#x66F4;&#x9AD8;&#x6548;&#x7684;&#x7F16;&#x7801;&#x7B97;&#x6CD5;&#xFF0C;&#x652F;&#x6301;48kHz/24bit&#x7684;&#x97F3;&#x9891;</li>
<li>&#x591A;&#x58F0;&#x9053;&#xFF1A;Enhanced aptX</li>
<li>&#x4F4E;&#x590D;&#x6742;&#x7A0B;&#x5EA6;&#xFF08;&#x4F4E;&#x5E26;&#x5BBD;&#xFF09;&#xFF1A;aptX Live</li>
<li>&#x4F4E;&#x5EF6;&#x8FDF;&#xFF1A;aptX Low Latency</li>
<li>&#x65E0;&#x635F;&#x538B;&#x7F29;&#xFF1A;aptX Lossless</li>
</ul>
</li>
<li><code>LDAC</code>&#xFF1A;Sony&#x7684;&#x65E0;&#x7EBF;&#x97F3;&#x9891;&#x7F16;&#x7801;&#x6280;&#x672F;&#xFF0C;&#x4F20;&#x8F93;&#x7801;&#x7387;&#x8FBE;&#x5230;990kbps&#xFF0C;&#x540C;&#x6837;&#x9AD8;&#x538B;&#x7F29;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x652F;&#x6301;96kHz/24bit&#x97F3;&#x9891;(&#x901A;&#x5E38;FLAC&#x6280;&#x672F;&#x538B;&#x7F29;&#x7684;96kHz/24bit&#x97F3;&#x9891;&#x9700;&#x8981;2350kbps&#x4F20;&#x8F93;&#x7801;&#x7387;)&#xFF0C;&#x7136;&#x800C;&#x5230;&#x76EE;&#x524D;&#x4E3A;&#x6B62;&#x652F;&#x6301;&#x7684;&#x8BBE;&#x5907;&#x975E;&#x5E38;&#x6709;&#x9650;</li>
</ul>
<p>&#x6240;&#x4EE5;&#x5728;Mac&#x4E0B;&#xFF0C;aptX&#x662F;&#x76EE;&#x524D;&#x97F3;&#x8D28;&#x6700;&#x4F18;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x7684;&#x84DD;&#x7259;&#x97F3;&#x9891;&#x8BBE;&#x5907;&#x652F;&#x6301;&#x4E86;aptX&#x5C31;&#x53EF;&#x4EE5;&#x65E0;&#x675F;&#x7F1A;&#x4EAB;&#x53D7;CD&#x54C1;&#x8D28;&#x7684;&#x97F3;&#x4E50;</p>
<h2 id>&#x67E5;&#x770B;&#x97F3;&#x9891;&#x7F16;&#x7801;&#x7C7B;&#x578B;</h2>
<ul>
<li>&#x8BA9;Mac&#x914D;&#x5BF9;&#x5E76;&#x8FDE;&#x63A5;&#x84DD;&#x7259;&#x8BBE;&#x5907;</li>
<li>&#x6309;&#x4F4F;&#x952E;&#x76D8;&#x4E0A;&#x7684;<code>Option</code>&#x952E;&#x7136;&#x540E;&#x70B9;&#x51FB;Mac&#x7684;&#x9876;&#x90E8;&#x5BFC;&#x822A;&#x83DC;&#x5355;&#x6761;&#x4E0A;&#x84DD;&#x7259;&#x56FE;&#x6807;</li>
<li>&#x60AC;&#x6D6E;&#x5230;&#x4F60;&#x7684;&#x84DD;&#x7259;&#x97F3;&#x9891;&#x8BBE;&#x5907;&#x4E0A;&#xFF0C;&#x5F39;&#x51FA;&#x7684;&#x6D6E;&#x5C42;&#x4F1A;&#x6709;&#x8BE6;&#x7EC6;&#x4FE1;&#x606F;&#xFF0C;&#x5176;&#x4E2D;<code>Active Codec</code>&#x5C31;&#x662F;&#x7F16;&#x7801;&#x7C7B;&#x578B;</li>
</ul>
<p>&#x5982;&#x679C;&#x4E0D;&#x662F;aptX&#x90A3;&#x4E48;&#x5C31;&#x9700;&#x8981;&#x7528;&#x4E0B;&#x9762;&#x7684;&#x65B9;&#x6CD5;&#x5F00;&#x542F;aptX</p>
<h2 id="aptxaac">&#x5F00;&#x542F;aptX&#x548C;AAC</h2>
<p>&#x7531;&#x4E8E;aptX&#x662F;&#x6709;&#x4E13;&#x5229;&#x7684;&#xFF0C;Mac&#x9ED8;&#x8BA4;&#x6CA1;&#x6709;&#x652F;&#x6301;&#xFF0C;&#x4F46;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>Additional Tools for Xcode</code>&#x6253;&#x5F00;&#xFF0C;&#x65B9;&#x6CD5;&#x5982;&#x4E0B;&#xFF1A;</p>
<ul>
<li>&#x4E0B;&#x8F7D;<a href="https://developer.apple.com/download/more/?name=Additional+Tools&amp;ref=naturepi.com">Additional Tools for Xcode</a></li>
<li>&#x8FD0;&#x884C;<code>Additional Tools for Xcode</code>&#x6253;&#x5F00;<code>Hardware/Bluetooth Explorer</code></li>
<li>Bluetooth Explorer&#x6CA1;&#x6709;&#x7A97;&#x53E3;&#xFF0C;&#x53EA;&#x6709;&#x5BFC;&#x822A;&#x83DC;&#x5355;&#x6761;&#xFF0C;&#x5728;&#x5BFC;&#x822A;&#x83DC;&#x5355;&#x6761;&#x6253;&#x5F00;<code>Tools &gt; Audio Options</code></li>
<li>&#x5728;&#x5F39;&#x51FA;&#x7684;<code>Audio Options</code>&#x7A97;&#x53E3;&#x4E2D;&#x52FE;&#x9009;<code>Force use of aptX</code>&#x548C;<code>Enable AAC</code>(&#x6709;&#x4E9B;&#x7248;&#x672C;&#x6CA1;&#x6709;&#x8FD9;&#x4E2A;&#x9009;&#x9879;&#xFF0C;&#x5FFD;&#x7565;)&#xFF0C;&#x5E76;&#x4E14;&#x786E;&#x4FDD;<code>Disable AAC</code>&#x548C;<code>Disable aptX</code>&#x6CA1;&#x6709;&#x52FE;&#x9009;</li>
<li>&#x5173;&#x95ED;&#x7A97;&#x53E3;&#x548C;Bluetooth Explorer</li>
</ul>
<p>&#x7136;&#x540E;&#x91CD;&#x65B0;&#x8FDE;&#x63A5;&#x84DD;&#x7259;&#x97F3;&#x9891;&#x8BBE;&#x5907;&#xFF08;&#x6709;&#x7684;Mac&#x9700;&#x8981;&#x91CD;&#x542F;&#xFF09;&#xFF0C;&#x518D;&#x7528;&#x4E0A;&#x9762;&#x7684;&#x65B9;&#x6CD5;&#x67E5;&#x770B;&#x7F16;&#x7801;&#x7C7B;&#x578B;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x5DF2;&#x7ECF;&#x53D8;&#x6210;aptX&#x4E86;&#xFF08;&#x524D;&#x63D0;&#x662F;&#x4F60;&#x7684;&#x97F3;&#x9891;&#x8BBE;&#x5907;&#x652F;&#x6301;aptX&#xFF09;&#xFF1F;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Linksys WRT1900ACS折腾OpenWRT]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Linksys&#x4F5C;&#x4E3A;WRT&#x7684;&#x53D1;&#x660E;&#x8005;&#xFF0C;Linksys WRT1900ACS&#xFF08;&#x7B80;&#x79F0;1900ACS&#xFF09;&#x53C8;&#x662F;WRT&#x7CFB;&#x5217;&#x6027;&#x4EF7;&#x6BD4;&#x6781;&#x9AD8;&#x7684;&#x4EA7;&#x54C1;&#xFF0C;&#x800C;OpenWRT&#x662F;WRT&#x5F00;&#x6E90;&#x7248;&#x672C;&#xFF0C;&#x8FD9;&#x4E24;&#x8005;&#x7EC4;&#x5408;&#x53EF;&#x73A9;&#x6027;&#x975E;&#x5E38;&#x9AD8;</p>]]></description><link>https://naturepi.com/2018/12/linksys-wrt1900acs-openwrt/</link><guid isPermaLink="false">6291fe86d07d0b00013949ea</guid><category><![CDATA[Geek]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Sat, 15 Dec 2018 20:33:14 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Linksys&#x4F5C;&#x4E3A;WRT&#x7684;&#x53D1;&#x660E;&#x8005;&#xFF0C;Linksys WRT1900ACS&#xFF08;&#x7B80;&#x79F0;1900ACS&#xFF09;&#x53C8;&#x662F;WRT&#x7CFB;&#x5217;&#x6027;&#x4EF7;&#x6BD4;&#x6781;&#x9AD8;&#x7684;&#x4EA7;&#x54C1;&#xFF0C;&#x800C;OpenWRT&#x662F;WRT&#x5F00;&#x6E90;&#x7248;&#x672C;&#xFF0C;&#x8FD9;&#x4E24;&#x8005;&#x7EC4;&#x5408;&#x53EF;&#x73A9;&#x6027;&#x975E;&#x5E38;&#x9AD8;&#xFF0C;&#x6700;&#x9002;&#x5408;&#x7528;&#x6765;&#x6298;&#x817E;&#x3002;&#x4EE5;&#x4E0B;&#x5C31;&#x662F;&#x4ECB;&#x7ECD;&#x5982;&#x4F55;&#x5728;1900ACS&#x4E0A;&#x5B89;&#x88C5;OpenWRT&#x4EE5;&#x53CA;&#x4E00;&#x4E9B;&#x5E38;&#x7528;&#x7684;&#x73A9;&#x6CD5;&#x3002;</p>
<h2 id>&#x5B89;&#x88C5;</h2>
<h3 id>&#x786E;&#x5B9A;&#x786C;&#x4EF6;&#x89C4;&#x683C;</h3>
<p>Openwrt&#x5B98;&#x7F51;&#x5C31;&#x63D0;&#x4F9B;&#x4E86;<a href="https://openwrt.org/toh/hwdata/linksys/linksys_wrt1900acs_v1?ref=naturepi.com">1900ACS&#x7684;&#x786C;&#x4EF6;&#x89C4;&#x683C;</a>&#xFF0C;&#x67E5;&#x8BE2;&#x53EF;&#x77E5;1900ACS&#x7684;CPU&#x662F;<code>Marvell-cortexa9</code></p>
<h3 id>&#x4E0B;&#x8F7D;&#x955C;&#x50CF;</h3>
<p>&#x5230;<a href="https://downloads.openwrt.org/releases?ref=naturepi.com">OpenWRT&#x5B98;&#x65B9;Releases&#x4ED3;&#x5E93;</a>&#x9009;&#x62E9;&#x6307;&#x5B9A;&#x7248;&#x672C;&#xFF0C;&#x7136;&#x540E;&#x6309;&#x786C;&#x4EF6;&#x7D22;&#x5F15;&#x5230;1900ACS&#x955C;&#x50CF;&#xFF08;&#x901A;&#x5E38;&#x8DEF;&#x5F84;&#x4E3A;<code>/targets/mvebu/cortexa9/</code>&#xFF0C;&#x955C;&#x50CF;&#x7684;&#x6587;&#x4EF6;&#x540D;&#x4E3A;<code>linksys-wrt1900acs-squashfs-factory.img</code>&#xFF09;&#xFF1B;</p>
<blockquote>
<p>(&#x622A;&#x6B62;&#x5230;&#x5F53;&#x524D;&#x65F6;&#x95F4;<code>2018-12-16</code>&#x6700;&#x65B0;&#x7248;&#x672C;&#x4E3A;<a href="https://downloads.openwrt.org/releases/18.06.1/targets/mvebu/cortexa9/?ref=naturepi.com">18.06.1</a>)</p>
</blockquote>
<h3 id>&#x4ECE;&#x539F;&#x751F;&#x7CFB;&#x7EDF;&#x5B89;&#x88C5;</h3>
<p>&#x50BB;&#x74DC;&#x5B89;&#x88C5;&#xFF0C;&#x767B;&#x5F55;<a href="https://www.linksyssmartwifi.com/?ref=naturepi.com">Web&#x63A7;&#x5236;&#x53F0;</a>&#xFF0C;&#x4E0A;&#x4F20;&#x4E0B;&#x8F7D;&#x597D;&#x7684;&#x955C;&#x50CF;&#xFF0C;&#x542F;&#x52A8;&#x5B89;&#x88C5;&#x5C31;&#x53EF;&#x4EE5;&#xFF1B;</p>
<h2 id>&#x5E38;&#x7528;&#x914D;&#x7F6E;</h2>
<h3 id>&#x521D;&#x59CB;&#x5316;</h3>
<p>&#x9ED8;&#x8BA4;IP&#x4E3A;192.168.1.1&#xFF0C;&#x4F7F;&#x7528;IP&#x767B;&#x5F55;<a href="http://192.168.1.1/?ref=naturepi.com">Web&#x63A7;&#x5236;&#x53F0;</a>&#x521D;&#x59CB;&#x5316;&#xFF0C;&#x7B2C;&#x4E00;&#x6B21;&#x767B;&#x5F55;&#x4F1A;&#x63D0;&#x793A;&#x8BBE;&#x7F6E;&#x5BC6;&#x7801;&#xFF0C;&#x540C;&#x65F6;&#x8BB0;&#x5F97;&#x628A;SSH&#x7684;&#x516C;&#x94A5;&#x653E;&#x4E0A;&#x53BB;&#xFF0C;&#x5173;&#x95ED;&#x5BC6;&#x7801;&#x767B;&#x5F55;&#xFF0C;&#x63D0;&#x5347;&#x5B89;&#x5168;&#x6027;</p>
<h3 id>&#x7F51;&#x7EDC;&#x8FDE;&#x63A5;</h3>
<p>&#x76F8;&#x4FE1;&#x8FD9;&#x5757;&#x5E94;&#x8BE5;&#x96BE;&#x4E0D;&#x5012;&#x5927;&#x5BB6;</p>
<h3 id>&#x6D4B;&#x901F;</h3>
<h4 id="speedtestcli">&#x516C;&#x7F51;&#xFF08;speedtest-cli&#xFF09;</h4>
<p>&#x4E0B;&#x8F7D;speedtest&#xFF1A;</p>
<pre><code class="language-shell">wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod u+x speedtest.py
</code></pre>
<blockquote>
<p>&#x5982;&#x679C;&#x6CA1;&#x6709;&#x641E;&#x5B9A;SSL&#x5EFA;&#x8BAE;&#x672C;&#x5730;&#x4E0B;&#x8F7D;&#x4E00;&#x4E0B;&#x7136;&#x540E;SCP&#x4E0A;&#x53BB;&#xFF1B;<br>
&#x5982;&#x679C;&#x6CA1;&#x6709;Python&#x9700;&#x8981;&#x5B89;&#x88C5;Python&#xFF0C;&#x5EFA;&#x8BAE;&#x7528;&#x4E0B;&#x9762;&#x7684;&#x65B9;&#x5F0F;&#x6700;&#x5C0F;&#x5B89;&#x88C5;&#xFF1A;</p>
</blockquote>
<pre><code class="language-shell">opkg install python3-light
opkg install python3-xml
opkg install python3-email
opkg install python3-codecs
</code></pre>
<p>&#x6267;&#x884C;&#x6D4B;&#x8BD5;&#xFF1A;</p>
<pre><code class="language-shell">python3 speedtest.py
</code></pre>
<p>&#x7ED3;&#x679C;&#x7C7B;&#x4F3C;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code class="language-language">Retrieving speedtest.net configuration...
Testing from China Telecom Zhejiang (***.***.***.***)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by China Telecom ZheJiang Branch (Hangzhou) [4.87 km]: 3.9940000000000002 ms
Testing download speed................................................................................
Download: 384.20 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.24 Mbit/s
</code></pre>
<h4 id="iperf3">&#x5185;&#x7F51;&#xFF08;iperf3&#xFF09;</h4>
<p>&#x5B89;&#x88C5;&#xFF1A;</p>
<pre><code class="language-shell">opkg install iperf3
</code></pre>
<p>&#x542F;&#x52A8;Server&#xFF1A;</p>
<pre><code class="language-shell">iperf3 -s
</code></pre>
<p>&#x9700;&#x8981;&#x6D4B;&#x8BD5;&#x7684;&#x7EC8;&#x7AEF;&#x5728;<a href="https://iperf.fr/iperf-download.php?ref=naturepi.com">&#x5B98;&#x7F51;&#x4E0B;&#x8F7D;&#x5730;&#x5740;</a>&#x4E0B;&#x8F7D;&#x5BF9;&#x5E94;&#x7248;&#x672C;&#x5B89;&#x88C5;&#xFF08;ARM&#x5E73;&#x53F0;&#x5B98;&#x65B9;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;&#xFF0C;&#x53EF;&#x4EE5;&#x4E0B;&#x8F7D;&#x6E90;&#x7801;&#x7F16;&#x8BD1;&#xFF09;&#xFF1B;&#x5B89;&#x88C5;&#x597D;&#x6267;&#x884C;&#xFF1A;</p>
<pre><code class="language-shell">iperf3 -c 192.168.1.1
</code></pre>
<blockquote>
<p>&#x662F;&#x8981;&#x662F;&#x80FD;&#x7528;IP&#x8054;&#x901A;&#x7684;&#x4E24;&#x4E2A;&#x8282;&#x70B9;&#x90FD;&#x53EF;&#x4EE5;&#x7528;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#x6D4B;&#x8BD5;&#xFF0C;&#x4E00;&#x7AEF;&#x542F;&#x52A8;Server&#x53E6;&#x4E00;&#x7AEF;&#x542F;&#x52A8;Client&#x6D4B;&#x8BD5;&#x3002;<em>&#x6CE8;&#x610F;&#xFF1A;iperf&#x6709;iperf&#x548C;iperf3&#x4E24;&#x4E2A;&#x7248;&#x672C;&#xFF0C;&#x5FC5;&#x987B;&#x4E24;&#x7AEF;&#x7248;&#x672C;&#x4E00;&#x81F4;</em></p>
</blockquote>
<p><strong>&#x6301;&#x7EED;&#x66F4;&#x65B0;...</strong></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[使用Docker创建Let‘s Encrypt SSL证书]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x5982;&#x679C;&#x4F60;&#x7684;&#x7F51;&#x7AD9;&#x8FD8;&#x5728;&#x975E;https&#x4E0B;&#x88F8;&#x5954;&#xFF0C;&#x90A3;&#x4F60;&#x80AF;&#x5B9A;out&#x4E86;&#xFF0C;&#x8FC7;&#x53BB;SSL&#x8BC1;&#x4E66;&#x4EF7;&#x683C;&#x6602;&#x8D35;&#xFF0C;&#x4F46;&#x4ECA;&#x5929;&#x6211;&#x4EEC;&#x5F88;&#x5E78;&#x8FD0;Let&#x2018;s Encrypt&#x4E3A;&#x6211;&#x4EEC;&#x63D0;&#x4F9B;&#x4E86;&#x514D;</p>]]></description><link>https://naturepi.com/2018/08/ssl-cert-letsencrypt/</link><guid isPermaLink="false">6291fe86d07d0b00013949e8</guid><category><![CDATA[Devops]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Sat, 25 Aug 2018 17:19:24 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x5982;&#x679C;&#x4F60;&#x7684;&#x7F51;&#x7AD9;&#x8FD8;&#x5728;&#x975E;https&#x4E0B;&#x88F8;&#x5954;&#xFF0C;&#x90A3;&#x4F60;&#x80AF;&#x5B9A;out&#x4E86;&#xFF0C;&#x8FC7;&#x53BB;SSL&#x8BC1;&#x4E66;&#x4EF7;&#x683C;&#x6602;&#x8D35;&#xFF0C;&#x4F46;&#x4ECA;&#x5929;&#x6211;&#x4EEC;&#x5F88;&#x5E78;&#x8FD0;Let&#x2018;s Encrypt&#x4E3A;&#x6211;&#x4EEC;&#x63D0;&#x4F9B;&#x4E86;&#x514D;&#x8D39;&#x7684;&#x8BC1;&#x4E66;&#x670D;&#x52A1;&#xFF0C;&#x672C;&#x6587;&#x4E3B;&#x8981;&#x4ECB;&#x7ECD;&#x5982;&#x4F55;&#x5229;&#x7528;docker-compose&#x8FD0;&#x884C;certbot&#x514D;&#x6C61;&#x67D3;&#x4E3B;&#x673A;&#x73AF;&#x5883;&#x7684;&#x7533;&#x8BF7;SSL&#x8BC1;&#x4E66;&#x3001;Nginx&#x4E0B;&#x8BC1;&#x4E66;&#x7684;&#x5B89;&#x88C5;&#x4EE5;&#x53CA;&#x8BC1;&#x4E66;&#x66F4;&#x65B0;&#x3002;</p>
<h2 id="https">&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x4F7F;&#x7528;https</h2>
<p>&#x4ECA;&#x5929;&#x518D;&#x8BA8;&#x8BBA;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x4F7F;&#x7528;https&#x611F;&#x89C9;&#x6709;&#x4E9B;&#x591A;&#x4F59;&#xFF0C;&#x7B80;&#x5355;&#x8BF4;&#x65E0;&#x975E;&#x5C31;&#x662F;&#x4EE5;&#x4E0B;&#x51E0;&#x70B9;</p>
<ul>
<li>&#x53BB;&#x6389;&#x6D4F;&#x89C8;&#x5668;&#x4E0A;&#x8BA8;&#x538C;&#x7684;&#x4E0D;&#x5B89;&#x5168;&#x63D0;&#x793A;</li>
<li>&#x9632;&#x6B62;&#x7F51;&#x7AD9;&#x88AB;&#x52AB;&#x6301;</li>
<li>&#x4E3A;&#x4E86;&#x4F7F;&#x7528;http2</li>
</ul>
<h2 id="letsencrypt">Let&#x2018;s Encrypt&#x662F;&#x4EC0;&#x4E48;</h2>
<p>Let&#x2018;s Encrypt&#x662F;&#x4E00;&#x4E2A;&#x514D;&#x8D39;&#x7684;SSL&#x8BC1;&#x4E66;&#x8BA4;&#x8BC1;&#x673A;&#x6784;</p>
<blockquote>
<p>Let&apos;s Encrypt&#x662F;&#x4E00;&#x4E2A;&#x4E8E;2015&#x5E74;&#x4E09;&#x5B63;&#x5EA6;&#x63A8;&#x51FA;&#x7684;&#x6570;&#x5B57;&#x8BC1;&#x4E66;&#x8BA4;&#x8BC1;&#x673A;&#x6784;&#xFF0C;&#x65E8;&#x5728;&#x4EE5;&#x81EA;&#x52A8;&#x5316;&#x6D41;&#x7A0B;&#x6D88;&#x9664;&#x624B;&#x52A8;&#x521B;&#x5EFA;&#x548C;&#x5B89;&#x88C5;&#x8BC1;&#x4E66;&#x7684;&#x590D;&#x6742;&#x6D41;&#x7A0B;&#xFF0C;&#x5E76;&#x63A8;&#x5E7F;&#x4F7F;&#x4E07;&#x7EF4;&#x7F51;&#x670D;&#x52A1;&#x5668;&#x7684;&#x52A0;&#x5BC6;&#x8FDE;&#x63A5;&#x65E0;&#x6240;&#x4E0D;&#x5728;&#xFF0C;&#x4E3A;&#x5B89;&#x5168;&#x7F51;&#x7AD9;&#x63D0;&#x4F9B;&#x514D;&#x8D39;&#x7684;SSL/TLS&#x8BC1;&#x4E66;&#x3002; &#x6765;&#x81EA;<a href="https://zh.wikipedia.org/wiki/Let%27s_Encrypt?ref=naturepi.com">&#x7EF4;&#x57FA;&#x767E;&#x79D1;</a></p>
</blockquote>
<h2 id="getstarted">Get Started</h2>
<p>Let&#x2018;s Encrypt&#x4F7F;&#x7528;ACME&#x534F;&#x8BAE;&#x9A8C;&#x8BC1;&#x57DF;&#x540D;&#x53CA;&#x7B7E;&#x53D1;&#x8BC1;&#x4E66;&#xFF0C;&#x5B98;&#x65B9;&#x63A8;&#x8350;&#x4F7F;&#x7528;Certbot&#x505A;&#x4E3A;ACME Client&#x5BA2;&#x6237;&#x7AEF;&#xFF0C;&#x53EF;&#x4EE5;&#x5728; <a href="https://certbot.eff.org/?ref=naturepi.com">Certbot&#x5B98;&#x7F51;&#x9996;&#x9875;</a>&#x83B7;&#x53D6;&#x5230;&#x5B89;&#x88C5;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x65E2;&#x7136;&#x662F;&#x5B89;&#x88C5;&#xFF0C;&#x5C11;&#x4E0D;&#x4E86;&#x5404;&#x79CD;&#x4F9D;&#x8D56;&#xFF0C;&#x4F5C;&#x4E3A;&#x6709;&#x6D01;&#x7656;&#x7684;&#x5DE5;&#x7A0B;&#x5E08;&#xFF0C;&#x6211;&#x4EEC;&#x80AF;&#x5B9A;&#x4E0D;&#x5E0C;&#x671B;&#x8FD9;&#x4E9B;&#x4F9D;&#x8D56;&#x6C61;&#x67D3;&#x4E86;&#x6211;&#x4EEC;&#x670D;&#x52A1;&#x5668;&#x7684;&#x7EAF;&#x6D01;&#x5EA6;&#xFF0C;&#x8FD9;&#x65F6;docker&#x7684;&#x4EF7;&#x503C;&#x5C31;&#x51F8;&#x663E;&#x51FA;&#x6765;&#x4E86;&#xFF0C;&#x5E76;&#x4E14;&#x4E3B;&#x8981;&#x7684;docker&#x4ED3;&#x5E93;&#x90FD;&#x5DF2;&#x7ECF;&#x96C6;&#x6210;&#x4E86;certbot/certbot&#x955C;&#x50CF;&#x3002;</p>
<h3 id="applyforcertificate">Apply for Certificate</h3>
<p>Docker&#x5982;&#x4F55;&#x5B89;&#x88C5;&#x5C31;&#x4E0D;&#x591A;&#x8BF4;&#x4E86;&#xFF0C;&#x6559;&#x7A0B;&#x5DF2;&#x7ECF;&#x6CDB;&#x6EE5;&#x4E86;&#xFF0C;&#x5728;docker&#x4E0B;&#x4F7F;&#x7528;Certbot&#x975E;&#x5E38;&#x7B80;&#x5355;&#xFF0C;&#x6267;&#x884C;&#x5982;&#x4E0B;shell&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF1A;</p>
<pre><code class="language-shell">sudo docker run -it --rm --name certbot \
 -v &quot;/etc/letsencrypt:/etc/letsencrypt&quot; \
 -v &quot;/var/lib/letsencrypt:/var/lib/letsencrypt&quot; \
 certbot/certbot certonly
</code></pre>
<p>&#x5F53;&#x7136;&#x4E3A;&#x4E86;&#x540E;&#x7EED;&#x7684;&#x7BA1;&#x7406;&#xFF0C;&#x4F7F;&#x7528;docker-compose&#x5C06;&#x4F1A;&#x66F4;&#x65B9;&#x4FBF;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4EE5;&#x4E0B;&#x65B9;&#x5F0F;&#x66FF;&#x4EE3;&#x4E0A;&#x9762;&#x7684;shell&#xFF1A;</p>
<p>&#x9996;&#x5148;&#x5728;&#x4E00;&#x4E2A;&#x7A7A;&#x76EE;&#x5F55;&#x65B0;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;docker-compose.yml&#x6587;&#x4EF6;&#xFF0C;&#x5185;&#x5BB9;&#x5982;&#x4E0B;</p>
<pre><code class="language-yaml">version: &apos;3&apos;
services:
  certbot:
    container_name: certbot
    image: certbot/certbot
    volumes:
      - ./letsencrypt/etc:/etc/letsencrypt
      - ./letsencrypt/lib:/var/lib/letsencrypt
      - ./letsencrypt/log:/var/log/letsencrypt
      - ./webroot/www:/var/www
</code></pre>
<p>&#x7136;&#x540E;&#x8FD0;&#x884C;</p>
<pre><code class="language-shell">docker-compose run certbot certonly
</code></pre>
<p>&#x6839;&#x636E;&#x63D0;&#x793A;&#x64CD;&#x4F5C;&#xFF0C;&#x4EE5;&#x4E0B;&#x793A;&#x4F8B;&#x4F7F;&#x7528;webroot&#x65B9;&#x5F0F;&#xFF0C;&#x901A;&#x5E38;&#x670D;&#x52A1;&#x5668;80&#x548C;443&#x5DF2;&#x6709;&#x670D;&#x52A1;&#x5728;&#x4F7F;&#x7528;&#xFF0C;standalone&#x9002;&#x5408;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;&#x670D;&#x52A1;&#x7684;&#x65B0;&#x670D;&#x52A1;&#x5668;&#x3002;</p>
<pre><code class="language-language">Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &apos;c&apos; to cancel): 2
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter &apos;c&apos; to
cancel): yourmail@mail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let&apos;s Encrypt project and the non-profit
organization that develops Certbot? We&apos;d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Please enter in your domain name(s) (comma and/or space separated)  (Enter &apos;c&apos;
to cancel): yourdomain.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for yourdomain.com
Input the webroot for yourdomain.com: (Enter &apos;c&apos; to cancel): /var/www/html


Select the webroot for yourdomain.com:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Enter a new webroot
2: /var/www/html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &apos;c&apos; to cancel): 2
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/yourdomain.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/yourdomain.com/privkey.pem
   Your cert will expire on 2018-**-**. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let&apos;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
</code></pre>
<p>&#x770B;&#x5230;Congratulations&#x5C31;&#x8BF4;&#x660E;&#x6210;&#x529F;&#x4E86;&#xFF0C;&#x5982;&#x679C;&#x51FA;&#x9519;&#x4E86;&#x4E5F;&#x6CA1;&#x5173;&#x7CFB;&#xFF0C;&#x4E00;&#x822C;/var/log/letsencrypt/letsencrypt.log&#x65E5;&#x5FD7;&#x90FD;&#x6709;&#x8BB0;&#x5F55;&#x539F;&#x56E0;</p>
<p>&#x751F;&#x6210;&#x7684;&#x8BC1;&#x4E66;&#x5728;/etc/letsencrypt/live&#x91CC;&#x9762;&#x6309;&#x57DF;&#x540D;&#x5206;&#x7C7B;&#xFF0C;<strong>&#x6CE8;&#x610F;/etc/letsencrypt/live&#x91CC;&#x7684;&#x8BC1;&#x4E66;&#x90FD;&#x662F;&#x6307;&#x5411;&#x5230;/etc/letsencrypt/archive/&#x91CC;&#x7684;&#x8F6F;&#x8FDE;&#x63A5;&#xFF0C;&#x5982;&#x679C;&#x8981;&#x6302;&#x8F7D;&#x5230;&#x53E6;&#x4E00;&#x4E2A;docker&#x5BB9;&#x5668;&#x5FC5;&#x987B;&#x4E24;&#x4E2A;&#x76EE;&#x5F55;&#x4E00;&#x8D77;&#x6302;&#x8F7D;&#x3002;</strong></p>
<h3 id="setupnginx">Setup Nginx</h3>
<p>&#x5728;&#x5BF9;&#x5E94;server&#x914D;&#x7F6E;&#x4E2D;&#x589E;&#x52A0;&#x5982;&#x4E0B;&#x914D;&#x7F6E;&#x5F00;&#x542F;ssl</p>
<pre><code class="language-nginx">ssl on;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
</code></pre>
<p>&#x8FD8;&#x53EF;&#x4EE5;&#x987A;&#x4FBF;&#x5F00;&#x542F;http2</p>
<pre><code class="language-nginx">listen 443 ssl http2;
</code></pre>
<p>&#x901A;&#x8FC7;&#x4EE3;&#x7406;&#x53EF;&#x4EE5;&#x5C06;http&#x7F51;&#x7AD9;&#x5305;&#x88C5;&#x6210;https&#x7F51;&#x7AD9;</p>
<pre><code class="language-nginx">location / {
	proxy_pass http://localhost:8080;
	proxy_redirect   off;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Host $server_name;
	proxy_set_header X-Forwarded-Proto https;
}
</code></pre>
<p>&#x901A;&#x8FC7;&#x914D;&#x7F6E;<code>error_page 497</code>&#xFF0C;&#x4ECE;&#x6B64;&#x8DDF;http&#x8BF4;&#x518D;&#x89C1;&#x5427;&#xFF0C;&#x8BB0;&#x5F97;.well-known&#x865A;&#x62DF;&#x76EE;&#x5F55;&#x6307;&#x5411;&#x5230;&#x5728;&#x751F;&#x6210;&#x8BC1;&#x4E66;&#x65F6;<code>Input the webroot for yourdomain.com:</code>&#x8FD9;&#x4E00;&#x6B65;&#x7684;&#x76EE;&#x5F55;&#xFF0C;&#x540E;&#x7EED;&#x66F4;&#x65B0;&#x8FD8;&#x9700;&#x8981;&#x9A8C;&#x8BC1;&#x57DF;&#x540D;&#xFF0C;&#x53C2;&#x8003;&#x5982;&#x4E0B;&#x914D;&#x7F6E;</p>
<pre><code class="language-nginx">server {
	listen 80;
	listen 443 http2;
	ssl on;
	ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
	error_page 497 https://$host$request_uri;
	location /.well-known/ {
		root /var/www/html/;
	}
}
</code></pre>
<h3 id="renewal">Renewal</h3>
<p>&#x6267;&#x884C;&#x5982;&#x4E0B;shell&#x81EA;&#x52A8;&#x66F4;&#x65B0;</p>
<pre><code class="language-shell">docker-compose run certbot renew
</code></pre>
<p>&#x5F53;&#x7136;&#x53EF;&#x4EE5;&#x914D;&#x7F6E;&#x4E3A;cron&#x4EFB;&#x52A1;&#x5B9A;&#x65F6;&#x6267;&#x884C;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[基本架构原则]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x6211;&#x4EEC;&#x90FD;&#x7ECF;&#x5386;&#x8FC7;&#x8BB8;&#x591A;&#x67B6;&#x6784;&#x7684;&#x9009;&#x62E9;&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x4E00;&#x5B9A;&#x4E5F;&#x77E5;&#x9053;&#xFF0C;&#x6CA1;&#x6709;&#x6700;&#x597D;&#x7684;&#x67B6;&#x6784;&#xFF0C;&#x53EA;&#x6709;&#x6700;&#x5408;&#x9002;&#x7684;&#x67B6;&#x6784;&#x3002;&#x9762;&#x5BF9;&#x8FD9;&#x4E48;&#x591A;&#x9009;&#x62E9;&#xFF0C;&#x6211;</p>]]></description><link>https://naturepi.com/2018/08/basic-principle-of-architecture/</link><guid isPermaLink="false">6291fe86d07d0b00013949e6</guid><category><![CDATA[Architecture]]></category><dc:creator><![CDATA[Nature Pi]]></dc:creator><pubDate>Wed, 15 Aug 2018 12:23:23 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x6211;&#x4EEC;&#x90FD;&#x7ECF;&#x5386;&#x8FC7;&#x8BB8;&#x591A;&#x67B6;&#x6784;&#x7684;&#x9009;&#x62E9;&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x4E00;&#x5B9A;&#x4E5F;&#x77E5;&#x9053;&#xFF0C;&#x6CA1;&#x6709;&#x6700;&#x597D;&#x7684;&#x67B6;&#x6784;&#xFF0C;&#x53EA;&#x6709;&#x6700;&#x5408;&#x9002;&#x7684;&#x67B6;&#x6784;&#x3002;&#x9762;&#x5BF9;&#x8FD9;&#x4E48;&#x591A;&#x9009;&#x62E9;&#xFF0C;&#x6211;&#x4EEC;&#x5E94;&#x5F53;&#x9075;&#x5FAA;&#x4EC0;&#x4E48;&#x6837;&#x7684;&#x539F;&#x5219;&#xFF1F;&#x4ECE;&#x8BBE;&#x8BA1;&#x6A21;&#x5F0F;&#x5230;DDD&#xFF0C;&#x6709;&#x4E00;&#x7CFB;&#x5217;&#x7684;&#x65B9;&#x6CD5;&#x8BBA;&#xFF0C;&#x4F46;&#x6211;&#x8BA4;&#x4E3A;&#x6709;&#x4E00;&#x4E9B;&#x601D;&#x60F3;&#x662F;&#x901A;&#x7528;&#x7684;&#xFF0C;&#x4EE5;&#x4E0B;&#x662F;&#x6211;&#x7684;&#x4E00;&#x4E9B;&#x7406;&#x89E3;&#x3002;</p>
<h3 id>&#x9884;&#x6D4B;&#x4E0E;&#x5FEB;&#x901F;&#x54CD;&#x5E94;</h3>
<p>&#x6211;&#x4EEC;&#x5E38;&#x5E38;&#x4FE1;&#x8A93;&#x65E6;&#x65E6;&#x7684;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x7CFB;&#x7EDF;&#x662F;&#x4E3A;&#x672A;&#x6765;&#x591A;&#x5C11;&#x5E74;&#x8BBE;&#x8BA1;&#x7684;&#xFF0C;&#x90A3;&#x8FD9;&#x662F;&#x5982;&#x4F55;&#x652F;&#x6491;&#x7684;&#x5462;&#xFF1F;</p>
<p>&#x5982;&#x679C;&#x80FD;&#x63D0;&#x524D;&#x4E00;&#x6B65;&#x9884;&#x6D4B;&#x5230;&#x672A;&#x6765;&#xFF0C;&#x672A;&#x6765;&#x7684;&#x6280;&#x672F;&#x8D8B;&#x52BF;&#xFF0C;&#x672A;&#x6765;&#x7684;&#x4E1A;&#x52A1;&#x53D8;&#x5316;&#xFF0C;&#x672A;&#x6765;&#x7684;&#x6D41;&#x91CF;&#xFF0C;&#x54EA;&#x6015;&#x5C31;&#x662F;&#x773C;&#x4E0B;&#x7684;&#x672A;&#x6765;&#xFF0C;&#x5BF9;&#x6280;&#x672F;&#x4EBA;&#x5458;&#x6765;&#x8BF4;&#xFF0C;&#x5E94;&#x5BF9;&#x8D77;&#x6765;&#x5C31;&#x53D8;&#x7684;&#x6E38;&#x5203;&#x6709;&#x4F59;&#x3002;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x7684;&#x67B6;&#x6784;&#x5E38;&#x5E38;&#x4F1A;&#x4E3A;&#x8FD9;&#x79CD;&#x9884;&#x6D4B;&#x63D0;&#x524D;&#x505A;&#x51FA;&#x8BBE;&#x8BA1;&#xFF0C;&#x9884;&#x6D4B;&#x4EC0;&#x4E48;&#x975E;&#x5E38;&#x91CD;&#x8981;&#xFF0C;&#x9884;&#x6D4B;&#x5546;&#x4E1A;&#x7684;&#x53D8;&#x5316;&#x4E0D;&#x4EC5;&#x5BF9;&#x80FD;&#x529B;&#x7684;&#x6311;&#x6218;&#x975E;&#x5E38;&#x9AD8;&#x800C;&#x4E14;&#x51C6;&#x786E;&#x6027;&#x4F4E;&#xFF0C;&#x6240;&#x4EE5;&#x524D;&#x77BB;&#x9996;&#x5148;&#x8003;&#x8651;&#x7684;&#x4E0D;&#x662F;&#x5546;&#x4E1A;&#x672A;&#x6765;&#x7684;&#x53D8;&#x5316;&#xFF0C;&#x800C;&#x662F;&#x672A;&#x6765;&#x4E1A;&#x52A1;&#x5B8C;&#x6574;&#x7684;&#x5F62;&#x6001;&#xFF0C;&#x56E0;&#x4E3A;&#x4ECE;&#x53E6;&#x4E00;&#x4E2A;&#x89C6;&#x89D2;&#x770B;&#x5546;&#x4E1A;&#x7684;&#x53D8;&#x5316;&#xFF0C;&#x5176;&#x5B9E;&#x5B83;&#x662F;&#x4E00;&#x4E2A;&#x4E1A;&#x52A1;&#x5B8C;&#x5584;&#x7684;&#x8FC7;&#x7A0B;&#x3002;&#x5B8C;&#x6574;&#x7684;&#x89C6;&#x89D2;&#x518D;&#x770B;&#x5F53;&#x4E0B;&#x7684;&#x4E1A;&#x52A1;&#xFF0C;&#x4E5F;&#x8BB8;&#x5F53;&#x4E0B;&#x7684;&#x4E1A;&#x52A1;&#x5F62;&#x6001;&#x521A;&#x521A;&#x8D77;&#x6B65;&#xFF0C;&#x4F46;&#x5B83;&#x4E00;&#x5B9A;&#x662F;&#x672A;&#x6765;&#x7684;&#x57FA;&#x7840;&#xFF0C;&#x800C;&#x6709;&#x4E9B;&#x672A;&#x6765;&#x7684;&#x91CD;&#x8981;&#x6A21;&#x5757;&#x4E5F;&#x53EF;&#x80FD;&#x63D0;&#x524D;&#x88AB;&#x62BD;&#x8C61;&#x51FA;&#x6765;&#xFF0C;&#x4F46;&#x5F53;&#x4E0B;&#x53EF;&#x80FD;&#x4EC5;&#x4EC5;&#x662F;&#x7A7A;&#x5B9E;&#x73B0;&#x3002;</p>
<p>&#x4F46;&#x662F;&#xFF0C;&#x672A;&#x6765;&#x771F;&#x7684;&#x4F1A;&#x5EF6;&#x7EED;&#x8FD9;&#x79CD;&#x65B9;&#x5411;&#x53D1;&#x5C55;&#x5417;&#xFF1F;&#x8FD9;&#x5C31;&#x662F;&#x4E0A;&#x9762;&#x63D0;&#x5230;&#x7684;&#xFF0C;&#x5BF9;&#x6280;&#x672F;&#x548C;&#x4E1A;&#x52A1;&#x7684;&#x7406;&#x89E3;&#x662F;&#x4E3B;&#x89C2;&#x7684;&#xFF0C;&#x4E3B;&#x89C2;&#x5C31;&#x5B58;&#x5728;&#x4E0D;&#x786E;&#x5B9A;&#x6027;&#xFF0C;&#x5982;&#x4F55;&#x5E94;&#x5BF9;&#x8FD9;&#x79CD;&#x4E0D;&#x786E;&#x5B9A;&#x6027;&#xFF1F;&#x4ECE;&#x53E6;&#x4E00;&#x4E2A;&#x89D2;&#x5EA6;&#x601D;&#x8003;&#xFF0C;&#x652F;&#x6491;&#x524D;&#x77BB;&#x7684;&#x53E6;&#x4E00;&#x4E2A;&#x91CD;&#x8981;&#x7684;&#x539F;&#x5219;&#x5C31;&#x662F;&#x5FEB;&#x901F;&#x54CD;&#x5E94;&#x3002;&#x5FEB;&#x901F;&#x54CD;&#x5E94;&#x7684;&#x67B6;&#x6784;&#x7684;&#x57FA;&#x672C;&#x5F62;&#x6001;&#x5C31;&#x662F;&#x539F;&#x5B50;&#x6027;&#x548C;&#x914D;&#x7F6E;&#x6027;&#x3002;&#x539F;&#x5B50;&#x662F;&#x5BF9;&#x4E1A;&#x52A1;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x4EE3;&#x8868;&#x66F4;&#x7A33;&#x5B9A;&#x4E1A;&#x52A1;&#x5F62;&#x6001;&#xFF0C;&#x800C;&#x914D;&#x7F6E;&#x6027;&#x662F;&#x5BF9;&#x5546;&#x4E1A;&#x89C4;&#x5219;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x662F;&#x5BF9;&#x539F;&#x5B50;&#x80FD;&#x529B;&#x7684;&#x7F16;&#x6392;&#x3002;&#x539F;&#x5B50;&#x80FD;&#x529B;&#x5F88;&#x5C11;&#x53D8;&#x5316;&#xFF0C;&#x4E1A;&#x52A1;&#x53D8;&#x5316;&#x7684;&#x662F;&#x5546;&#x4E1A;&#x89C4;&#x5219;&#xFF0C;&#x590D;&#x7528;&#x539F;&#x5B50;&#x4E1A;&#x52A1;&#x5E76;&#x5229;&#x7528;&#x7F16;&#x6392;&#x80FD;&#x529B;&#x5FEB;&#x901F;&#x8C03;&#x6574;&#x5546;&#x4E1A;&#x89C4;&#x5219;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x5FEB;&#x901F;&#x54CD;&#x5E94;&#x7684;&#x539F;&#x7406;&#x3002;&#x8FD9;&#x79CD;&#x67B6;&#x6784;&#x6700;&#x5173;&#x952E;&#x7684;&#x5728;&#x4E8E;&#x539F;&#x5B50;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x54CD;&#x5E94;&#x672A;&#x6765;&#x7684;&#x53D8;&#x5316;&#x66F4;&#x591A;&#x7684;&#x5374;&#x662F;&#x6765;&#x81EA;&#x5BF9;&#x8FC7;&#x53BB;&#x7684;&#x601D;&#x8003;&#xFF0C;&#x66F4;&#x7A33;&#x5B9A;&#x53CA;&#x590D;&#x7528;&#x7684;&#x62BD;&#x8C61;&#x5C31;&#x662F;&#x4E1A;&#x52A1;&#x672C;&#x8D28;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x5265;&#x79BB;&#x5546;&#x4E1A;&#x89C4;&#x5219;&#xFF0C;&#x56DE;&#x5F52;&#x5230;&#x50CF;&#x6559;&#x79D1;&#x4E66;&#x4E0A;&#x7684;&#x539F;&#x7406;&#x4E00;&#x6837;&#x7684;&#x672C;&#x8D28;&#x3002;</p>
<h3 id>&#x56FE;&#x7075;&#x5B8C;&#x5907;</h3>
<p>&#x6211;&#x4EEC;&#x5E38;&#x5E38;&#x4F1A;&#x7528;&#x4E0D;&#x591F;&#x7075;&#x6D3B;&#xFF0C;&#x4E0D;&#x652F;&#x6301;&#x6211;&#x4EEC;&#x7684;&#x573A;&#x666F;&#x6765;&#x6279;&#x8BC4;&#x4E00;&#x4E9B;&#x67B6;&#x6784;&#xFF0C;&#x800C;&#x4E3A;&#x4F55;&#x6211;&#x4EEC;&#x5F88;&#x5C11;&#x8FD9;&#x6837;&#x6279;&#x8BC4;&#x6211;&#x4EEC;&#x7684;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#x5462;&#xFF1F;&#x4E0D;&#x540C;&#x7684;&#x8BED;&#x8A00;&#x6709;&#x4E0D;&#x540C;&#x7684;&#x8BED;&#x6CD5;&#xFF0C;&#x4F46;&#x6211;&#x4EEC;&#x4EFB;&#x4F55;&#x903B;&#x8F91;&#x90FD;&#x53EF;&#x4EE5;&#x7528;&#x8FD9;&#x4E9B;&#x8BED;&#x6CD5;&#x5B9E;&#x73B0;&#x3002;&#x8FD9;&#x4E9B;&#x8BED;&#x8A00;&#x7684;&#x57FA;&#x672C;&#x539F;&#x5219;&#x5F88;&#x7C7B;&#x4F3C;&#xFF0C;&#x4ED6;&#x4EEC;&#x90FD;&#x6709;&#x4E00;&#x4E2A;&#x975E;&#x5E38;&#x4F4E;&#x7EA7;&#x7684;&#x6307;&#x4EE4;&#x96C6;&#xFF0C;&#x4F46;&#x4ED6;&#x662F;&#x56FE;&#x7075;&#x5B8C;&#x5907;&#x7684;&#xFF0C;&#x6362;&#x53E5;&#x8BDD;&#x8BF4;&#x4E5F;&#x8BB8;&#x5B83;&#x4F7F;&#x7528;&#x8D77;&#x6765;&#x4E0D;&#x65B9;&#x4FBF;&#xFF0C;&#x4F46;&#x6CA1;&#x6709;&#x5C4F;&#x853D;&#x4F60;&#x548C;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x4EA4;&#x4E92;&#x80FD;&#x529B;&#xFF1B;&#x5728;&#x8FD9;&#x4E9B;&#x6307;&#x4EE4;&#x4E4B;&#x4E0A;&#x6784;&#x5EFA;&#x4E86;&#x9AD8;&#x7EA7;&#x8BED;&#x6CD5;&#xFF0C;&#x4F7F;&#x7528;&#x8005;&#x66F4;&#x76F4;&#x89C2;&#x548C;&#x4FBF;&#x6377;&#x3002;</p>
<p>&#x518D;&#x56DE;&#x8FC7;&#x6765;&#x770B;&#x67B6;&#x6784;&#xFF0C;&#x7F3A;&#x4E4F;&#x7075;&#x6D3B;&#x6027;&#x7684;&#x67B6;&#x6784;&#x5F80;&#x5F80;&#x662F;&#x4ECE;&#x4E1A;&#x52A1;&#x573A;&#x666F;&#x5F00;&#x59CB;&#x5206;&#x89E3;&#x4EA7;&#x751F;&#x7684;&#xFF0C;&#x5148;&#x5BF9;&#x573A;&#x666F;&#x5EFA;&#x6A21;&#xFF0C;&#x518D;&#x63D0;&#x53D6;&#x53EF;&#x590D;&#x7528;&#x6027;&#x4EA7;&#x751F;&#x5E95;&#x5C42;&#x6A21;&#x578B;&#x3002;&#x800C;&#x6211;&#x8BA4;&#x4E3A;&#x9AD8;&#x6269;&#x5C55;&#x7684;&#x67B6;&#x6784;&#x7684;&#x8BBE;&#x8BA1;&#x5E94;&#x5F53;&#x662F;&#x76F8;&#x53CD;&#x7684;&#xFF0C;&#x6700;&#x5148;&#x8981;&#x8BBE;&#x8BA1;&#x7684;&#x662F;&#x5BF9;&#x4E1A;&#x52A1;&#x4E9A;&#x539F;&#x5B50;&#x6A21;&#x578B;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x6240;&#x8C13;&#x4E9A;&#x539F;&#x5B50;&#x6A21;&#x578B;&#xFF0C;&#x5C31;&#x662F;&#x6BD4;&#x4E1A;&#x52A1;&#x6700;&#x5C0F;&#x5355;&#x5143;&#x66F4;&#x5C0F;&#x66F4;&#x7EAF;&#x7CB9;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x8981;&#x5177;&#x5907;&#x53E6;&#x4E00;&#x4E2A;&#x7279;&#x6027;&#xFF0C;&#x5C31;&#x662F;&#x903B;&#x8F91;&#x7684;&#x5B8C;&#x5907;&#x6027;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x79CD;&#x62BD;&#x8C61;&#x8981;&#x80FD;&#x652F;&#x6491;&#x5BF9;&#x903B;&#x8F91;&#x8BED;&#x6CD5;&#x7684;&#x8868;&#x8FBE;&#xFF0C;&#x5B83;&#x4E0D;&#x4E00;&#x5B9A;&#x8981;&#x5177;&#x5907;&#x56FE;&#x7075;&#x5B8C;&#x5907;&#xFF0C;&#x4F46;&#x81F3;&#x5C11;&#x5728;&#x8FD9;&#x4E2A;&#x4E1A;&#x52A1;&#x9886;&#x57DF;&#x662F;&#x5B8C;&#x5907;&#x7684;&#xFF0C;&#x4E8B;&#x5B9E;&#x4E0A;&#x8D8A;&#x5E95;&#x5C42;&#x7684;&#x62BD;&#x8C61;&#x4E5F;&#x8D8A;&#x5BB9;&#x6613;&#x63A5;&#x8FD1;&#x56FE;&#x7075;&#x5B8C;&#x5907;&#x3002;&#x4E1A;&#x52A1;&#x7684;&#x6A21;&#x578B;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E9B;&#x539F;&#x5B50;&#x6A21;&#x578B;&#x7684;&#x7EC4;&#x88C5;&#x6216;&#x91CD;&#x8F7D;&#xFF0C;&#x800C;&#x5546;&#x4E1A;&#x53C8;&#x662F;&#x5BF9;&#x4E1A;&#x52A1;&#x6A21;&#x578B;&#x7684;&#x7EC4;&#x88C5;&#x6216;&#x91CD;&#x8F7D;&#xFF0C;&#x5546;&#x4E1A;&#x7684;&#x53D8;&#x5316;&#x4E00;&#x90E8;&#x5206;&#x662F;&#x590D;&#x7528;&#x4E1A;&#x52A1;&#x6A21;&#x578B;&#x5B9E;&#x73B0;&#x7684;&#xFF0C;&#x800C;&#x73B0;&#x6709;&#x4E1A;&#x52A1;&#x6A21;&#x578B;&#x4E0D;&#x652F;&#x6301;&#x90E8;&#x5206;&#x53EF;&#x4EE5;&#x6269;&#x5C55;&#x4E1A;&#x52A1;&#x6A21;&#x578B;&#x5B9E;&#x73B0;&#xFF0C;&#x7531;&#x4E8E;&#x6700;&#x5E95;&#x5C42;&#x7684;&#x6A21;&#x578B;&#x5177;&#x5907;&#x5B8C;&#x5907;&#x6027;&#xFF0C;&#x8FD9;&#x4E9B;&#x6269;&#x5C55;&#x662F;&#x5EFA;&#x7ACB;&#x5728;&#x4E0D;&#x6539;&#x53D8;&#x6574;&#x4F53;&#x67B6;&#x6784;&#x4E0A;&#x7684;&#x3002;</p>
<p>&#x7528;&#x4E00;&#x4E2A;&#x4F8B;&#x5B50;&#x6765;&#x89E3;&#x91CA;&#xFF0C;&#x6BD4;&#x5982;&#x5BF9;&#x6D41;&#x7A0B;&#x5F15;&#x64CE;&#x7684;&#x6A21;&#x578B;&#x62BD;&#x8C61;&#xFF0C;&#x8FD9;&#x4E2A;&#x6A21;&#x578B;&#x4E0D;&#x662F;&#x4E1A;&#x52A1;&#x4E0A;&#x7684;&#x4EFB;&#x52A1;&#x3001;&#x670D;&#x52A1;&#x3001;&#x5206;&#x652F;&#x3001;&#x5E76;&#x884C;&#xFF0C;&#x800C;&#x662F;&#x66F4;&#x7EAF;&#x7CB9;&#x7684;&#x8282;&#x70B9;&#x548C;&#x8FDE;&#x63A5;&#xFF0C;&#x57FA;&#x4E8E;&#x8282;&#x70B9;&#x548C;&#x8FDE;&#x63A5;&#x7684;&#x6A21;&#x578B;&#xFF0C;&#x6269;&#x5C55;&#x51FA;&#x4EE5;&#x4E0A;&#x7684;&#x4E1A;&#x52A1;&#x6A21;&#x578B;&#xFF0C;&#x518D;&#x63D0;&#x4F9B;&#x7F16;&#x6392;&#x80FD;&#x529B;&#x3002;</p>
<p>&#x603B;&#x7ED3;&#x4E00;&#x4E0B;&#x5C31;&#x662F;&#xFF0C;&#x9AD8;&#x6269;&#x5C55;&#x7684;&#x67B6;&#x6784;&#x5C31;&#x662F;&#x67B6;&#x6784;&#x7684;&#x672C;&#x8EAB;&#x5C31;&#x662F;&#x7531;&#x5177;&#x5907;&#x903B;&#x8F91;&#x5B8C;&#x5907;&#x6027;&#x7684;&#x5185;&#x6838;&#x6269;&#x5C55;&#x51FA;&#x7684;&#x3002;</p>
<h3 id>&#x76D1;&#x63A7;&#x4E0E;&#x5BB9;&#x9519;</h3>
<p>&#x6211;&#x4EEC;&#x5728;&#x4E0A;&#x7EBF;&#x4E4B;&#x95F4;&#x6709;&#x8BB8;&#x591A;&#x4FDD;&#x969C;&#x63AA;&#x65BD;&#xFF0C;Code Review&#xFF0C;&#x4E25;&#x683C;&#x7684;&#x6D4B;&#x8BD5;&#xFF0C;&#x81EA;&#x52A8;&#x5316;&#x56DE;&#x5F52;&#xFF0C;&#x6211;&#x4EEC;&#x5C3D;&#x53EF;&#x80FD;&#x7684;&#x8BA9;&#x6211;&#x4EEC;&#x7684;&#x7CFB;&#x7EDF;&#x7A33;&#x5B9A;&#x7684;&#x8FD0;&#x884C;&#xFF0C;&#x4F46;&#x6C38;&#x8FDC;&#x6CA1;&#x6709;&#x767E;&#x5206;&#x4E4B;&#x767E;&#x7684;&#x7A33;&#x5B9A;&#xFF0C;&#x67B6;&#x6784;&#x53EF;&#x4EE5;&#x66F4;&#x5927;&#x7A0B;&#x5EA6;&#x7684;&#x63D0;&#x5347;&#x548C;&#x5E94;&#x5BF9;&#x8FD9;&#x4E9B;&#x95EE;&#x9898;&#x3002;</p>
<p>&#x9996;&#x5148;&#x8981;&#x8003;&#x8651;&#x7684;&#x5C31;&#x662F;&#x5E94;&#x5BF9;&#x73AF;&#x5883;&#x6545;&#x969C;&#x7684;&#x53EF;&#x6062;&#x590D;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x91CD;&#x542F;&#x548C;&#x56DE;&#x6EDA;&#x662F;&#x6700;&#x5E38;&#x7528;&#x7684;&#x4E24;&#x79CD;&#x65B9;&#x5F0F;&#xFF0C;&#x4F46;&#x5B83;&#x5E76;&#x4E0D;&#x50CF;&#x8868;&#x9762;&#x770B;&#x4E0A;&#x53BB;&#x90A3;&#x4E48;&#x8F7B;&#x677E;&#xFF0C;&#x5E94;&#x7528;&#x6570;&#x91CF;&#x8D8A;&#x591A;&#xFF0C;&#x7406;&#x8BBA;&#x7684;&#x96BE;&#x5EA6;&#x8D8A;&#x5927;&#x3002;&#x73AF;&#x5883;&#x6545;&#x969C;&#x7684;&#x53EF;&#x6062;&#x590D;&#x7684;&#x80FD;&#x529B;&#x5F71;&#x54CD;&#x6700;&#x5927;&#x7684;&#x56E0;&#x7D20;&#x5E94;&#x8BE5;&#x662F;&#x5E94;&#x7528;&#x7684;&#x4F9D;&#x8D56;&#x590D;&#x6742;&#x5EA6;&#xFF0C;&#x5206;&#x5C42;&#x7684;&#x8BBE;&#x8BA1;&#x53EF;&#x80FD;&#x89E3;&#x51B3;&#x4E00;&#x90E8;&#x5206;&#x5FAA;&#x73AF;&#x4F9D;&#x8D56;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x8FD8;&#x6709;&#x4E00;&#x4E2A;&#x539F;&#x5219;&#x9700;&#x8981;&#x8003;&#x8651;&#x7684;&#x5C31;&#x662F;&#x5E94;&#x7528;&#x7684;&#x72EC;&#x7ACB;&#x6027;&#x3002;&#x72EC;&#x7ACB;&#x6027;&#x5E76;&#x4E0D;&#x4EE3;&#x8868;&#x6CA1;&#x6709;&#x4F9D;&#x8D56;&#xFF0C;&#x800C;&#x662F;&#x5BF9;&#x4F9D;&#x8D56;&#x7684;&#x5BB9;&#x5FCD;&#x5EA6;&#xFF0C;Lazy-Load&#x662F;&#x5E38;&#x7528;&#x7684;&#x4E00;&#x79CD;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;</p>
<p>&#x9664;&#x4E86;&#x574F;&#x5883;&#x6545;&#x969C;&#xFF0C;&#x6211;&#x8BA4;&#x4E3A;&#x4F18;&#x5316;&#x8981;&#x8003;&#x8651;&#x7684;&#x5C31;&#x662F;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x4E0E;&#x6392;&#x67E5;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x65E5;&#x5FD7;&#x662F;&#x4E00;&#x79CD;&#x5DE5;&#x5177;&#xFF0C;&#x800C;&#x67B6;&#x6784;&#x4E0A;&#x8BBE;&#x8BA1;&#x7684;&#x5E94;&#x8BE5;&#x662F;&#x6570;&#x636E;&#x53EF;&#x56DE;&#x6EAF;&#x7684;&#x80FD;&#x529B;&#x3002;&#x4ECE;&#x4E1A;&#x52A1;&#x6570;&#x636E;&#x4E0A;&#x770B;&#x6709;&#x4E24;&#x7C7B;&#x6570;&#x636E;&#xFF0C;&#x4E00;&#x7C7B;&#x662F;&#x4EE3;&#x8868;&#x73B0;&#x5728;&#x7684;&#x5F53;&#x524D;&#x6001;&#x6570;&#x636E;&#xFF0C;&#x5982;&#xFF0C;&#x5546;&#x54C1;&#xFF0C;&#x5E93;&#x5B58;&#xFF0C;&#x8BA2;&#x5355;&#xFF0C;&#x8FD8;&#x6709;&#x4E00;&#x7C7B;&#x662F;&#x8BB0;&#x5F55;&#x8FC7;&#x7A0B;&#x7684;&#x8FC7;&#x7A0B;&#x6570;&#x636E;&#xFF0C;&#x5982;&#xFF0C;&#x64CD;&#x4F5C;&#x8BB0;&#x5F55;&#xFF0C;&#x8D44;&#x91D1;&#x6D41;&#x6C34;&#x3002;&#x5F88;&#x591A;&#x4E1A;&#x52A1;&#x6A21;&#x5F0F;&#x5176;&#x5B9E;&#x53EA;&#x9700;&#x8981;&#x5F53;&#x524D;&#x6001;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x6240;&#x4EE5;&#x5F88;&#x591A;&#x67B6;&#x6784;&#x4E5F;&#x53EA;&#x8BBE;&#x8BA1;&#x4E86;&#x5BF9;&#x5F53;&#x524D;&#x6001;&#x6570;&#x636E;&#x7684;&#x6301;&#x4E45;&#x5316;&#xFF0C;&#x4F46;&#x6211;&#x8BA4;&#x4E3A;&#x53EF;&#x56DE;&#x6EAF;&#x7684;&#x67B6;&#x6784;&#x66F4;&#x5E94;&#x8BE5;&#x6301;&#x4E45;&#x5316;&#x7684;&#x5E94;&#x8BE5;&#x662F;&#x8FC7;&#x7A0B;&#x6570;&#x636E;&#xFF0C;&#x5F53;&#x524D;&#x6001;&#x7684;&#x6570;&#x636E;&#x672C;&#x8D28;&#x662F;&#x8FC7;&#x7A0B;&#x7684;&#x63A8;&#x5012;&#x3002;&#x8FD9;&#x7A0B;&#x8FC7;&#x7A0B;&#x6570;&#x636E;&#x7684;&#x4EF7;&#x503C;&#x5728;&#x4E8E;&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x4F60;&#x968F;&#x65F6;&#x7684;&#x590D;&#x73B0;&#x6BCF;&#x4E00;&#x4E2A;&#x65F6;&#x523B;&#x3002;</p>
<p>&#x7136;&#x540E;&#x8003;&#x8651;&#x7684;&#x662F;&#x5BB9;&#x9519;&#x80FD;&#x529B;&#xFF0C;&#x5BB9;&#x9519;&#x80FD;&#x529B;&#x4E0D;&#x4EC5;&#x4EC5;&#x662F;&#x6307;&#x51FA;&#x73B0;&#x5F02;&#x5E38;&#x540E;&#x53EF;&#x4EE5;&#x7EE7;&#x7EED;&#x8FDB;&#x884C;&#xFF0C;&#x8FD8;&#x8981;&#x8003;&#x8651;&#x5F02;&#x5E38;&#x5BF9;&#x6570;&#x636E;&#x7684;&#x6C61;&#x67D3;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x53EF;&#x80FD;&#x4F1A;&#x5C06;&#x5F02;&#x5E38;&#x8D70;&#x5411;&#x5230;&#x4E0D;&#x53EF;&#x6062;&#x590D;&#x5F02;&#x5E38;&#x3002;&#x5BB9;&#x9519;&#x4E0D;&#x662F;&#x5728;&#x907F;&#x514D;&#x5F02;&#x5E38;&#xFF0C;&#x800C;&#x662F;&#x5BF9;&#x5DF2;&#x77E5;&#x7684;&#x4F46;&#x4E0D;&#x53EF;&#x907F;&#x514D;&#x7684;&#x5F02;&#x5E38;&#x7684;&#x517C;&#x5BB9;&#x5904;&#x7406;&#x3002;&#x6700;&#x5E38;&#x89C1;&#x4E5F;&#x662F;&#x6700;&#x88AB;&#x5FFD;&#x7565;&#x7684;&#x5C31;&#x662F;&#x8D85;&#x65F6;&#x4E0E;&#x5E76;&#x53D1;&#x3002;</p>
<h3 id>&#x4F18;&#x5316;&#x7A7A;&#x95F4;</h3>
<p>&#x4F18;&#x5316;&#x65E0;&#x6B62;&#x5883;&#x662F;&#x4EFB;&#x4F55;&#x6280;&#x672F;&#x4EBA;&#x5458;&#x7684;&#x8FFD;&#x6C42;&#xFF0C;&#x4F46;&#x6027;&#x80FD;&#x662F;&#x4E2A;&#x65E0;&#x5E95;&#x6D1E;&#xFF0C;&#x67B6;&#x6784;&#x4E0D;&#x4E00;&#x5B9A;&#x80FD;&#x89E3;&#x51B3;&#x6240;&#x6709;&#x6027;&#x80FD;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x5408;&#x7406;&#x7684;&#x67B6;&#x6784;&#x8BBE;&#x8BA1;&#xFF0C;&#x6027;&#x80FD;&#x5E94;&#x8BE5;&#x4E0D;&#x4F1A;&#x6210;&#x4E3A;&#x74F6;&#x9888;&#x3002;&#x6392;&#x9664;&#x4EE3;&#x7801;&#x7684;Bug&#xFF0C;&#x6211;&#x8BA4;&#x4E3A;&#x6027;&#x80FD;&#x6700;&#x4E3B;&#x8981;&#x7684;&#x95EE;&#x9898;&#x96C6;&#x4E2D;&#x5728;&#x4E24;&#x70B9;&#xFF1A;</p>
<p>&#x9996;&#x5148;&#x662F;&#x91CD;&#x590D;&#x8C03;&#x7528;&#xFF0C;&#x6211;&#x8BA4;&#x4E3A;&#x5927;&#x90E8;&#x5206;&#x7684;&#x6027;&#x80FD;&#x5F00;&#x9500;&#x53EF;&#x80FD;&#x5C31;&#x662F;&#x91CD;&#x590D;&#x7684;&#x5F00;&#x9500;&#xFF0C;&#x800C;&#x67E5;&#x8BE2;&#x7684;&#x91CD;&#x590D;&#x5F00;&#x9500;&#x53C8;&#x662F;&#x6700;&#x5E38;&#x9047;&#x5230;&#x7684;&#xFF0C;&#x66F4;&#x7EC6;&#x7C92;&#x5EA6;&#x7684;&#x6A21;&#x5757;&#x5212;&#x5206;&#x548C;&#x5FAE;&#x670D;&#x52A1;&#x53EF;&#x80FD;&#x5C06;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#x653E;&#x5927;&#x5316;&#x3002;&#x67B6;&#x6784;&#x4E0A;&#x89C4;&#x907F;&#x91CD;&#x590D;&#x67E5;&#x8BE2;&#x5F00;&#x9500;&#x7684;&#x65B9;&#x5F0F;&#x662F;&#x5BF9;&#x4F1A;&#x8BDD;&#x7EA7;&#x522B;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#xFF08;Context&#xFF09;&#x7684;&#x8BBE;&#x8BA1;&#xFF0C;&#x5408;&#x7406;&#x7684;&#x4F7F;&#x7528;&#x4E0A;&#x4E0B;&#x6587;&#x4F20;&#x9012;&#x91CD;&#x590D;&#x67E5;&#x8BE2;&#x7684;&#x7ED3;&#x679C;&#x3002;</p>
<p>&#x7136;&#x540E;&#x662F;&#x4E0D;&#x5408;&#x7406;&#x7684;&#x8D44;&#x6E90;&#x5206;&#x914D;&#xFF0C;&#x6027;&#x80FD;&#x7684;&#x5F00;&#x9500;&#x662F;&#x4E00;&#x79CD;&#x52A8;&#x6001;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x548C;&#x4EE3;&#x7801;&#x4E0D;&#x540C;&#x65E0;&#x6CD5;&#x5728;&#x5F00;&#x53D1;&#x671F;&#x5C31;&#x80FD;&#x8BA1;&#x7B97;&#x51FA;&#x6765;&#x3002;&#x6D41;&#x5F0F;&#x8BA1;&#x7B97;&#x3001;&#x865A;&#x62DF;&#x5316;&#x3001;&#x5F39;&#x6027;&#x3001;&#x53CD;&#x5E94;&#x5F0F;&#x8FD9;&#x4E9B;&#x90FD;&#x662F;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#xFF0C;&#x67B6;&#x6784;&#x4E0A;&#x8981;&#x8003;&#x8651;&#x7684;&#x6211;&#x8BA4;&#x4E3A;&#x662F;&#x51CF;&#x5C11;&#x538B;&#x529B;&#x4F20;&#x9012;&#xFF0C;RPC&#x4E00;&#x79CD;&#x5178;&#x578B;&#x7684;&#x538B;&#x529B;&#x4F20;&#x9012;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x6574;&#x6761;&#x8C03;&#x7528;&#x94FE;&#x662F;&#x540C;&#x6BD4;&#x5206;&#x538B;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x67D0;&#x4E9B;&#x8C03;&#x7528;&#x4E0A;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5F15;&#x5165;&#x53E6;&#x5916;&#x4E00;&#x4E9B;&#x975E;&#x963B;&#x585E;&#x6A21;&#x5F0F;&#x5374;&#x65AD;&#x538B;&#x529B;&#x7684;&#x4F20;&#x9012;&#xFF0C;&#x8FD9;&#x6837;&#x624D;&#x80FD;&#x4E3A;&#x5F39;&#x6027;&#x6269;&#x5BB9;&#x7559;&#x4E0B;&#x7A7A;&#x95F4;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>