<?xml version="1.0" encoding="utf-8"?>
<search>
  <entry>
    <title>2022.08.09 雨中静听</title>
    <url>/posts/20220809a1/</url>
    <content><![CDATA[<div class="note "><p>2022.08.09 暴雨倾盆 雨中静听小记</p>
</div>
<span id="more"></span>
<p>本还是阳光明媚的天气，霎时云渐聚拢来，午后两点，不偏不倚，雨幕骤然落了下来。<br />
雨很大，雨水直泻而下，风一推，如浪般往前荡去。<br />
密密麻麻的雨珠敲打地面的声音，屋檐雨水成股流下的声音，不时有车破开雨幕划过地面的声音。雨声更加喧嚣了。<br />
下雨天，对我来说，大抵是最适合听歌的。</p>
<hr />
<center>
<p><strong>《这世界有那么多人》</strong><br />
<strong>莫文蔚</strong><br />
<strong>covered by 韩红、林志炫</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
晚风中闪过 几帧从前啊 飞驰中旋转 已不见了吗<br />
这世界 有那么个人 活在我 飞扬的青春<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《阴天》</strong><br />
<strong>莫文蔚</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
阴天 在不开灯的房间 让所有思绪都一点一点沉淀<br />
开始总是分分钟 都妙不可言 谁都以为热情它永不会减<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《盛夏的果实》</strong><br />
<strong>莫文蔚</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
你曾说过 会永远爱我 也许承诺 不过因为没把握<br />
当看尽潮起潮落 只要你记得我 如果你会梦见我 请你再抱紧我<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《路过人间》</strong><br />
<strong>郁可唯</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
世上唯一不变 是人都善变 路过人间 爱都有期限<br />
快快抹干眼泪 看昙花多美<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《一生中最爱》</strong><br />
<strong>左麟右李</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
如真 如假 如可分身饰演自己<br />
会将心中的温柔 献出给你 唯有的知己<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《蒙娜丽莎的眼泪》</strong><br />
<strong>林志炫</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
她的微笑 那么神秘 那么美 或许她也走过感情的千山万水<br />
才发现 爱你的人 不会让他的蒙娜丽莎流眼泪<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《我是一只鱼》</strong><br />
<strong>covered by 许茹芸、落日飞车</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
需要你 我是一只鱼 水里的空气 是你小心眼和坏脾气<br />
没有你 像离开水的鱼 快要活不下去 不能在一起游来游去<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《漠河舞厅》</strong><br />
<strong>柳爽</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
你什么都没有说 野风惊扰我<br />
看大雪如何衰老的 我的眼睛如何融化<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<p><strong>《贝加尔湖畔》</strong><br />
<strong>李健</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
这一生一世 有多少你我 被吞没在月光如水的夜里<br />
这一生一世 这时间太少 不够证明融化冰雪的深情<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br></p>
<strong>《绵绵》</strong><br />
<strong>谢安琪 &amp; 陈奕迅</strong><br />
<i class="fa fa-quote-left fa-2x fa-pull-left fa-border" aria-hidden="true"></i>
前尘就似轻于鸿毛 提及心底苦恼 就像自言自语说他人是非 多么好<br />
从来没细心数清楚 一个下雨天 一次愉快的睡眠 断多少发线<br />
<i class="fa fa-quote-right fa-pull-right fa-border" aria-hidden="true"></i><br>
</center>
]]></content>
      <categories>
        <category>杂记</category>
      </categories>
  </entry>
  <entry>
    <title>Clash for Linux</title>
    <url>/posts/20220726a1/</url>
    <content><![CDATA[<div class="note "><p>配置 Clash for Linux，并设置开机自启动。<br />
Linux 系统版本：Ubuntu 20.04.1</p>
</div>
<span id="more"></span>
<h2 id="下载解压-clash-linux-amd64">下载解压 clash-linux-amd64</h2>
<p>从 <a href="https://github.com/Dreamacro/clash/releases">GitHub</a>
上下载任意版本的 clash-linux-amd64-vx.x.x.gz。<br />
在下载目录打开终端，输入如下命令：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">gunzip clash-linux-amd64-vx.x.x.gz	#文件解压</span><br><span class="line">mv clash-linux-amd64-vx.x.x clash	#文件改名</span><br></pre></td></tr></table></figure> 我在 /home/username 目录下创建了 clash
文件夹，将解压后的文件移动到里面：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">mkdir Clash			#创建名为 clash 的文件夹  </span><br><span class="line">mv clash /home/username/clash	#将解压改名后的 clash 文件移入 clash 文件夹  </span><br></pre></td></tr></table></figure></p>
<h2 id="配置-clash">配置 clash</h2>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">chmod +x clash		#首先授权可执行权限  </span><br><span class="line">./clash -d .		#初始化执行 clash  </span><br></pre></td></tr></table></figure>
<p>在初始化执行 clash 后会默认在当前目录下生成配置文件
config.yaml和全球IP地址库 Country.mmdb。<br />
<img src="https://pic.imgdb.cn/item/6300822516f2c2beb1b73d40.png" />
从代理商那获得配置文件 config.yaml，替换默认生成的配置文件。<br />
再次初始化执行 clash：<code>./clash -d .</code>。<br />
出现如下初始化显示：<br />
<img src="https://pic.imgdb.cn/item/6300823d16f2c2beb1b748f5.png" />
接下来进行系统网络代理设置，打开系统设置-网络-网络代理，选择手动，填写
HTTP 和 HTTPS 代理为 127.0.0.1:7890，填写 Socks 主机为
127.0.0.1:7891，即可启用系统代理。<br />
<img src="https://pic.imgdb.cn/item/6300825816f2c2beb1b753ff.png" />
浏览器访问 <a href="https://google.cn/">Google</a> 验证网络。</p>
<h2 id="设置开机自启动">设置开机自启动</h2>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo touch /etc/systemd/system/clash.service	#创建 service 文件  </span><br><span class="line">vi /etc/systemd/system/clash.service 	#编辑 service 文件  </span><br></pre></td></tr></table></figure>
<p>输入如下文本（记得修改 ExecStart 为自己的路径）：<br />
<figure class="highlight vim"><table><tr><td class="code"><pre><span class="line">[Unit] </span><br><span class="line">Description=clash daemon  </span><br><span class="line">[Service] </span><br><span class="line">Type=simple </span><br><span class="line">User=root </span><br><span class="line">ExecStart=/home/username/clash/clash -d /home/username/clash/ </span><br><span class="line">Restart=<span class="keyword">on</span>-failure  </span><br><span class="line">[Install] </span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure> 使用的 vim 命令参考：<br />
<figure class="highlight vim"><table><tr><td class="code"><pre><span class="line">i    在当前光标的前面插入字符</span><br><span class="line">A    在一行的结尾处添加文本</span><br><span class="line"><span class="keyword">x</span>    删除当前光标所在处的字符</span><br><span class="line">dw   删除一个单词(从光标处到空格)</span><br><span class="line"><span class="keyword">u</span>    撤销上一步的操作。</span><br><span class="line">:q   若文件没有修改，直接退出</span><br><span class="line">:q!  文件已经被修改，放弃修改退出</span><br><span class="line">:<span class="keyword">wq</span>  文件已经被修改，保存修改并退出</span><br></pre></td></tr></table></figure> 编辑后查看文件内容如下图：<br />
<img src="https://pic.imgdb.cn/item/6300826f16f2c2beb1b75c16.png" />
接着依次执行下面四个命令：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo systemctl daemon-reload </span><br><span class="line">sudo systemctl enable clash </span><br><span class="line">sudo systemctl start clash </span><br><span class="line">sudo systemctl status clash</span><br></pre></td></tr></table></figure> 成功后出现如下内容：<br />
<img src="https://pic.imgdb.cn/item/6300828116f2c2beb1b763ca.png" /></p>
<h2 id="参考文章">参考文章</h2>
<p><a href="https://zhuanlan.zhihu.com/p/430035973">配置 clash for linux
，适用于ubuntu 20.04（更新于2021.11.6）</a></p>
]]></content>
      <categories>
        <category>Linux</category>
      </categories>
      <tags>
        <tag>Linux</tag>
      </tags>
  </entry>
  <entry>
    <title>CNAME 记录影响 CAA 记录致 SSL 证书无法签发问题</title>
    <url>/posts/20220811a1/</url>
    <content><![CDATA[<div class="note "><p>在重新申请 SSL 证书时，遇到 CNAME 记录影响 CAA 记录致 SSL
证书无法签发的问题及其解决。</p>
</div>
<span id="more"></span>
<p>博客不知不觉也已近一年，搭建完成后由于学习生活忙碌，一直搁置一旁，等到假期才得以学学写写。<br />
不过都是借口罢了，只是还未养成记录的习惯，希望在这个暑假（可能是最后一个暑假）能将习惯培养起来。<br />
域名和 SSL 证书也相继到期，不管怎样，我还是想继续运维下去。</p>
<h2 id="问题">问题</h2>
<p>在申请 SSL 证书时，显示：您的域名进行了 cname 操作，指向
x.github.io，域名配置了 CAA 信息，该 CAA 信息会导致证书签发失败。<br />
<img src="https://s2.loli.net/2022/08/11/FTpR6eEGQs4S9dM.png" /></p>
<h2 id="解决方法">解决方法</h2>
<p>先暂停解析该 cname 解析记录，添加 SSL 证书签发所需的 CAA
记录（所申请的机构记录类型已由 TXT 更改为
CNAME），待证书签发成功后，删除证书签发所需的 CAA 记录，重新开启 GitHub
Pages 的 cname 解析即可。</p>
<h2 id="原因">原因</h2>
<p>CAA 记录检查继续对指向不同域的 CNAME 记录进行，因而阻止了 CA
颁发证书，证书颁发机构无法为对应域名颁发证书。<br />
<div class="note info"><p>CAA(Certificate Authority
Authorization)，即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录，可以限定域名颁发的证书和CA（证书颁发机构）之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。<br />
域名设置 CAA
记录，使网站所有者，可授权指定CA机构为自己的域名颁发证书，以防止HTTPS证书错误签发，从而提高网站安全性。</p>
</div></p>
<h2 id="参考">参考</h2>
<p><a
href="https://chziq.com/posts/3655275721/">CNAME记录指向vercel影响了CAA记录导致的SSL证书无法签发的问题</a></p>
]]></content>
      <categories>
        <category>维护日志</category>
      </categories>
      <tags>
        <tag>搭建博客</tag>
      </tags>
  </entry>
  <entry>
    <title>DELL G3 安装 Ubuntu 遇到的问题</title>
    <url>/posts/20220904a1/</url>
    <content><![CDATA[<div class="note "><p>关于去年在我的 Dell G3 笔记本上安装 Ubuntu
系统时遇到的问题，由于之后不时有人问我，而我却忘记改了什么，今天偶然进入
UEFI 才突然想起来当时遇到的是 SATA 模式的问题，在此记录一下。</p>
</div>
<span id="more"></span>
<h2 id="问题原因">问题原因</h2>
<p>Dell 笔记本默认的 SATA 硬盘模式是 Raid on,而 Ubuntu 系统需要的是
AHCI，因此导致 Ubuntu 系统无法安装。</p>
<h2 id="解决方法">解决方法</h2>
<p>解决方法自然是将 SATA Operation 更改为 ACHI，但是看很多人更改完后
Windows 系统蓝屏无法进入，继续检索发现可以在 Windows
安全模式下更改，在此简记一下：</p>
<ul>
<li>Win + R，输入 <code>msconfig</code><br />
</li>
<li>选择“引导”并勾选“安全引导”项(或在 CMD 输入
<code>bcdedit/set safeboot</code>)<br />
</li>
<li>确定后重新启动<br />
</li>
<li>重启时不断连续按 F2 进入 BIOS，将 SATA Operation 改为 AHCI<br />
</li>
<li>Apply，Exit<br />
</li>
<li>系统进入安全模式<br />
</li>
<li>取消勾选“安全引导”项(或在 CMD 输入
<code>bcdedit/deletevalue safeboot</code>)<br />
</li>
<li>重启</li>
</ul>
<h2 id="参考文章">参考文章</h2>
<p><a
href="https://www.dell.com/support/kbdoc/zh-cn/000138544/%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E4%BF%AE%E5%A4%8D%E7%94%B1%E6%9B%B4%E6%94%B9-sata-%E6%A8%A1%E5%BC%8F%E5%AF%BC%E8%87%B4%E7%9A%84-windows-%E8%93%9D%E5%B1%8F%E9%94%99%E8%AF%AF">如何快速修复由更改
SATA 模式导致的 Windows 蓝屏错误</a></p>
]]></content>
      <categories>
        <category>Linux</category>
      </categories>
      <tags>
        <tag>Linux</tag>
        <tag>Ubuntu</tag>
      </tags>
  </entry>
  <entry>
    <title>DokuWiki 学习使用记录</title>
    <url>/posts/20221102a1/</url>
    <content><![CDATA[<div class="note "><p>本文为学习使用 DokuWiki
的过程记录包括基本使用、插件体验及所遇问题的解决。</p>
</div>
<span id="more"></span>
<h2 id="安装">安装</h2>
<p>下载地址：<a href="https://www.dokuwiki.org/zh:install"
class="uri">https://www.dokuwiki.org/zh:install</a>。推荐下载官方建议的
Stable 版本。<br />
解压后打开目录下的 run.cmd，填写相关信息后安装完毕，将目录下的
install.php 文件删除。</p>
<p>更多安装相关详见官方文档：<a
href="https://www.dokuwiki.org/zh:install">DokuWiki安装指南</a></p>
<h2 id="解决中文文件名乱码问题">解决中文文件名乱码问题</h2>
<p>1.在 dokuwiki/conf/local.php 最后一行添加</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">$conf[&#x27;fnencode&#x27;] = &#x27;utf-8&#x27;;</span><br></pre></td></tr></table></figure>
<p>2.在 dokuwiki/inc/pageutils.php 找到如下两个函数，并进行修改</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">function utf8_encodeFN($file,$safe=true)&#123;</span><br><span class="line">    global $conf;</span><br><span class="line">    if($conf[&#x27;fnencode&#x27;] == &#x27;utf-8&#x27;) return $file;</span><br><span class="line"></span><br><span class="line">    if($safe &amp;&amp; preg_match(&#x27;#^[a-zA-Z0-9/_\-\.%]+$#&#x27;,$file))&#123;</span><br><span class="line">        return $file;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    if($conf[&#x27;fnencode&#x27;] == &#x27;safe&#x27;)&#123;</span><br><span class="line">        return SafeFN::encode($file);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    // 删除下面两行</span><br><span class="line">    - $file = urlencode($file);</span><br><span class="line">    - $file = str_replace(&#x27;%2F&#x27;,&#x27;/&#x27;,$file);</span><br><span class="line"></span><br><span class="line">    return $file;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">function utf8_decodeFN($file)&#123;</span><br><span class="line">    global $conf;</span><br><span class="line">    if($conf[&#x27;fnencode&#x27;] == &#x27;utf-8&#x27;) return $file;</span><br><span class="line"></span><br><span class="line">    if($conf[&#x27;fnencode&#x27;] == &#x27;safe&#x27;)&#123;</span><br><span class="line">        return SafeFN::decode($file);</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    // 删除下面一行</span><br><span class="line">    - return urldecode($file);</span><br><span class="line">    // 加上下面这行</span><br><span class="line">    + return $file;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
]]></content>
      <categories>
        <category>学习笔记</category>
        <category>DokuWiki</category>
        <category>记录归纳</category>
      </categories>
      <tags>
        <tag>DokuWiki</tag>
      </tags>
  </entry>
  <entry>
    <title>Hexo &amp; Next 标签使用说明</title>
    <url>/posts/20220816a1/</url>
    <content><![CDATA[<div class="note "><p>本文为在 Hexo &amp; Next
使用标签的说明，使用标签可在文章中快速插入特定内容，使文章更加美观易读。<br />
本文内容主要搬运至 <a href="https://hexo.io/zh-cn/docs">Hexo
文档</a>的标签插件使用样例。</p>
</div>
<span id="more"></span>
<h2 id="hexo-标签插件">Hexo 标签插件</h2>
<h3 id="引用块-blockquote">引用块 blockquote</h3>
<p>在文章中插入引言，可包含作者、来源和标题。<br />
使用方式： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% blockquote [author[, source]] [link] [source_link_title] %&#125;</span><br><span class="line">content</span><br><span class="line">&#123;% endblockquote %&#125;</span><br></pre></td></tr></table></figure></p>
<h4 id="普通的-blockquote">普通的 blockquote</h4>
<p>没有提供参数，则只输出普通的 blockquote： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% blockquote %&#125;</span><br><span class="line">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.</span><br><span class="line">&#123;% endblockquote %&#125;</span><br></pre></td></tr></table></figure>
<blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis
aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu
lorem.</p>
</blockquote></p>
<h4 id="引用书上的句子">引用书上的句子</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% blockquote David Levithan, Wide Awake %&#125;</span><br><span class="line">Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.</span><br><span class="line">&#123;% endblockquote %&#125;</span><br></pre></td></tr></table></figure>
<blockquote><p>Do not just seek happiness for yourself. Seek happiness for all.
Through kindness. Through mercy.</p>
<footer><strong>David Levithan</strong><cite>Wide Awake</cite></footer></blockquote>
<h4 id="引用-twitter">引用 Twitter</h4>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %&#125;</span><br><span class="line">NEW: DevDocs now comes with syntax highlighting. http://devdocs.io</span><br><span class="line">&#123;% endblockquote %&#125;</span><br></pre></td></tr></table></figure>
<blockquote><p>NEW: DevDocs now comes with syntax highlighting.
http://devdocs.io</p>
<footer><strong>@DevDocs</strong><cite><a href="https://twitter.com/devdocs/status/356095192085962752">twitter.com/devdocs/status/356095192085962752</a></cite></footer></blockquote>
<h4 id="引用网络上的文章">引用网络上的文章</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %&#125;</span><br><span class="line">Every interaction is both precious and an opportunity to delight.</span><br><span class="line">&#123;% endblockquote %&#125;</span><br></pre></td></tr></table></figure>
<blockquote><p>Every interaction is both precious and an opportunity to delight.</p>
<footer><strong>Seth Godin</strong><cite><a href="http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html">Welcome to Island Marketing</a></cite></footer></blockquote>
<h4 id="markdown-的引用块">Markdown 的引用块</h4>
<p>详见 <a href="https://zcw-blog.top/posts/20210819a1/">Markdown
语法详解及使用技巧——引用块</a>。</p>
<h3 id="代码块-codeblock">代码块 codeblock</h3>
<p>在文章中插入代码。<br />
使用方式： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% codeblock [title] [lang:language] [url] [link text] [additional options] %&#125;</span><br><span class="line">code snippet</span><br><span class="line">&#123;% endcodeblock %&#125;</span><br></pre></td></tr></table></figure></p>
<h4 id="普通的代码块">普通的代码块</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% codeblock %&#125;</span><br><span class="line">alert(&#x27;Hello World!&#x27;);</span><br><span class="line">&#123;% endcodeblock %&#125;</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">alert(&#x27;Hello World!&#x27;);</span><br></pre></td></tr></table></figure>
<h4 id="指定语言">指定语言</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% codeblock lang:objc %&#125;</span><br><span class="line">[rectangle setX: 10 y: 10 width: 20 height: 20];</span><br><span class="line">&#123;% endcodeblock %&#125;</span><br></pre></td></tr></table></figure>
<figure class="highlight objc"><table><tr><td class="code"><pre><span class="line">[rectangle setX: <span class="number">10</span> y: <span class="number">10</span> width: <span class="number">20</span> height: <span class="number">20</span>];</span><br></pre></td></tr></table></figure>
<h4 id="附加说明">附加说明</h4>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% codeblock Array.map %&#125;</span><br><span class="line">array.map(callback[, thisArg])</span><br><span class="line">&#123;% endcodeblock %&#125;</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><figcaption><span>Array.map</span></figcaption><table><tr><td class="code"><pre><span class="line">array.map(callback[, thisArg])</span><br></pre></td></tr></table></figure>
<h4 id="附加说明和网址">附加说明和网址</h4>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% codeblock _.compact http://underscorejs.org/#compact Underscore.js %&#125;</span><br><span class="line">_.compact([0, 1, false, 2, &#x27;&#x27;, 3]);</span><br><span class="line">=&gt; [1, 2, 3]</span><br><span class="line">&#123;% endcodeblock %&#125;</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><figcaption><span>_.compact</span><a href="http://underscorejs.org/#compact">Underscore.js</a></figcaption><table><tr><td class="code"><pre><span class="line">_.compact([0, 1, false, 2, &#x27;&#x27;, 3]);</span><br><span class="line">=&gt; [1, 2, 3]</span><br></pre></td></tr></table></figure>
<h4 id="markdown-的围栏代码块">Markdown 的围栏代码块</h4>
<p>详见 <a href="https://zcw-blog.top/posts/20210819a1/">Markdown
语法详解及使用技巧——围栏代码块</a>。</p>
<h3 id="插入代码文件">插入代码文件</h3>
<p>插入 source/downloads/code 文件夹内的代码文件。路径
source/downloads/code 不是固定的，取决于你在配置文件中 code_dir
的配置。<br />
使用方式： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% include_code [title] [lang:language] [from:line] [to:line] path/to/file %&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="youtube">Youtube</h3>
<p>在文章中插入 Youtube 视频。<br />
使用方式： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% youtube video_id [type] [cookie] %&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="mathjax">MathJax</h3>
<p>插入利用 MathJax 显示的数学公式，需要安装 hexo-renderer-mathjax
并更换 Pandoc 渲染器。<br />
详见 <a href="https://zcw-blog.top/posts/20220424a1/">Hexo + NexT
配置优化指南——渲染 mathjax</a>。</p>
<h2 id="next-内建标签的使用">Next 内建标签的使用</h2>
<h3 id="文本居中引用">文本居中引用</h3>
调用方法： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- HTML方式: 直接在 Markdown 文件中编写 HTML 来调用 --&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 其中 class=&quot;blockquote-center&quot; 是必须的 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">blockquote</span> <span class="attr">class</span>=<span class="string">&quot;blockquote-center&quot;</span>&gt;</span>blah blah blah<span class="tag">&lt;/<span class="name">blockquote</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 标签 方式，要求版本在0.4.5或以上 --&gt;</span></span><br><span class="line">&#123;% centerquote %&#125;blah blah blah&#123;% endcenterquote %&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 标签别名 --&gt;</span></span><br><span class="line">&#123;% cq %&#125; blah blah blah &#123;% endcq %&#125;</span><br></pre></td></tr></table></figure> 示例： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">blockquote</span> <span class="attr">class</span>=<span class="string">&quot;blockquote-center&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>人的一切痛苦 本质上是对自己无能的愤怒<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span>&gt;</span>**王小波**<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">blockquote</span>&gt;</span></span><br></pre></td></tr></table></figure>
<blockquote class="blockquote-center">
<p>
人的一切痛苦 本质上是对自己无能的愤怒
</p>
<p>
<strong>王小波</strong>
</p>
</blockquote>
<h3 id="note-标签">Note 标签</h3>
<p>调用方法： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- HTML方式: 直接在 Markdown 文件中编写 HTML 来调用 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;note class_name&quot;</span>&gt;</span>blah blah blah<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 标签 方式 --&gt;</span></span><br><span class="line">&#123;% note class_name %&#125;</span><br><span class="line">blah blah blah</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure> 示例：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note %&#125;</span><br><span class="line">#### Header</span><br><span class="line">(without define class style)</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure> <div class="note "><h4 id="header">Header</h4>
<p>content</p>
</div></p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note default %&#125;</span><br><span class="line">#### Default Header</span><br><span class="line">Default content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note default"><h4 id="default-header">Default Header</h4>
<p>Default content</p>
</div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note primary %&#125;</span><br><span class="line">#### Primary Header</span><br><span class="line">Primary content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note primary"><h4 id="primary-header">Primary Header</h4>
<p>Primary content</p>
</div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note info %&#125;</span><br><span class="line">#### Info Header</span><br><span class="line">Info content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note info"><h4 id="info-header">Info Header</h4>
<p>Info content</p>
</div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note success %&#125;</span><br><span class="line">#### Success Header</span><br><span class="line">Success content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note success"><h4 id="success-header">Success Header</h4>
<p>Success content</p>
</div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note warning %&#125;</span><br><span class="line">#### Warning Header</span><br><span class="line">Warning content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note warning"><h4 id="warning-header">Warning Header</h4>
<p>Warning content</p>
</div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note danger %&#125;</span><br><span class="line">#### Danger Header</span><br><span class="line">Danger content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<div class="note danger"><h4 id="danger-header">Danger Header</h4>
<p>Danger content</p>
</div>
<p>可用<code>no-icon</code>取消图标： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note info no-icon %&#125;</span><br><span class="line">#### No icon note</span><br><span class="line">content</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure> <div class="note info no-icon"><h4 id="no-icon-note">No icon note</h4>
<p>content</p>
</div></p>
<p>标签内容可折叠： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note primary This is a summary %&#125;</span><br><span class="line">#### Details and summary</span><br><span class="line">Note with summary: `note primary This is a summary`</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure> <details class="note primary"><summary><p>This is a summary</p>
</summary>
<h4 id="details-and-summary">Details and summary</h4>
<p>Note with summary: <code>note primary This is a summary</code></p>

</details></p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% note info no-icon This is a summary %&#125;</span><br><span class="line">#### Details and summary (No icon)</span><br><span class="line">Note with summary: `note info no-icon This is a summary`</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure>
<details class="note info no-icon"><summary><p>This is a summary</p>
</summary>
<h4 id="details-and-summary-no-icon">Details and summary (No icon)</h4>
<p>Note with summary:
<code>note info no-icon This is a summary</code></p>

</details>
<h3 id="label-标签">Label 标签</h3>
<p>调用方法：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% label [class_name] @blah blah blah %&#125;</span><br></pre></td></tr></table></figure> <code>class_name</code>取值同 Note 标签。 示例：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">我坐在床前，望着窗外，&#123;% label @回忆满天 %&#125;。生命是&#123;% label primary @华丽错觉 %&#125;，时间是贼偷走一切。  </span><br><span class="line">七岁的那一年，抓住那只&#123;% label success @蝉 %&#125;，以为能抓住夏天。十七岁的那年，吻过他的脸，就以为和他能&#123;% label info @永远 %&#125;。   </span><br><span class="line">有没有那么一种永远，&#123;% label warning @永远不改变 %&#125;，拥抱过的美丽，都再也不破碎。   </span><br><span class="line">让险峻岁月不能，在脸上撒野，让&#123;% label danger @生离和死别都遥远 %&#125;，有谁能听见。   </span><br></pre></td></tr></table></figure>
我坐在床前，望着窗外，<mark class="label ">回忆满天</mark>。生命是<mark class="label primary">华丽错觉</mark>，时间是贼偷走一切。<br />
七岁的那一年，抓住那只<mark class="label success">蝉</mark>，以为能抓住夏天。十七岁的那年，吻过他的脸，就以为和他能<mark class="label info">永远</mark>。<br />
有没有那么一种永远，<mark class="label warning">永远不改变</mark>，拥抱过的美丽，都再也不破碎。<br />
让险峻岁月不能，在脸上撒野，让<mark class="label danger">生离和死别都遥远</mark>，有谁能听见。</p>
<h3 id="tab-标签">Tab 标签</h3>
<p>调用方法：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% tabs [Unique name], [index] %&#125;</span><br><span class="line"><span class="comment">&lt;!-- tab [Tab caption]@[icon] --&gt;</span></span><br><span class="line">Any content (support inline tags too).</span><br><span class="line"><span class="comment">&lt;!-- endtab --&gt;</span></span><br><span class="line">&#123;% endtabs %&#125;</span><br></pre></td></tr></table></figure> <div class="note info"><p><code>Unique name</code>为每个标签页组唯一的名称<br />
<code>index</code>为初始激活的标签页<br />
<code>Tab caption</code>为标签页名称，不指定时为所属标签页组名称加索引<br />
<code>icon</code>为 Font awesome 图标</p>
</div> 示例：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% tabs 选项卡, 3 %&#125;</span><br><span class="line"><span class="comment">&lt;!-- tab --&gt;</span></span><br><span class="line">这是选项卡 1</span><br><span class="line"><span class="comment">&lt;!-- endtab --&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- tab --&gt;</span></span><br><span class="line">这是选项卡 2</span><br><span class="line"><span class="comment">&lt;!-- endtab --&gt;</span></span><br><span class="line">&#123;% endtabs %&#125;</span><br></pre></td></tr></table></figure> <div class="tabs" id="选项卡"><ul class="nav-tabs"><li class="tab"><a href="#选项卡-1">选项卡 1</a></li><li class="tab"><a href="#选项卡-2">选项卡 2</a></li></ul><div class="tab-content"><div class="tab-pane" id="选项卡-1"><p>这是选项卡 1</p></div><div class="tab-pane" id="选项卡-2"><p>这是选项卡 2</p></div></div></div> <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% tabs 选项卡 2 %&#125;</span><br><span class="line">&lt;!-- tab 自定义名称1 --&gt;</span><br><span class="line">这是选项卡 1</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&lt;!-- tab 自定义名称2 --&gt;</span><br><span class="line">这是选项卡 2</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&#123;% endtabs %&#125;</span><br></pre></td></tr></table></figure> <div class="tabs" id="选项卡-2"><ul class="nav-tabs"><li class="tab active"><a href="#选项卡-2-1">自定义名称1</a></li><li class="tab"><a href="#选项卡-2-2">自定义名称2</a></li></ul><div class="tab-content"><div class="tab-pane active" id="选项卡-2-1"><p>这是选项卡 1</p></div><div class="tab-pane" id="选项卡-2-2"><p>这是选项卡 2</p></div></div></div>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;% tabs 选项卡 2 %&#125;</span><br><span class="line">&lt;!-- tab 自定义名称1@text-width --&gt;</span><br><span class="line">这是选项卡 1</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&lt;!-- tab 自定义名称2@amazon --&gt;</span><br><span class="line">这是选项卡 2</span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line">&#123;% endtabs %&#125;</span><br></pre></td></tr></table></figure> <div class="tabs" id="选项卡-2"><ul class="nav-tabs"><li class="tab active"><a href="#选项卡-2-1"><i class="fa fa-text-width"></i>自定义名称1</a></li><li class="tab"><a href="#选项卡-2-2"><i class="fa fa-amazon"></i>自定义名称2</a></li></ul><div class="tab-content"><div class="tab-pane active" id="选项卡-2-1"><p>这是选项卡 1</p></div><div class="tab-pane" id="选项卡-2-2"><p>这是选项卡 2</p></div></div></div></p>
]]></content>
      <categories>
        <category>维护日志</category>
        <category>创作</category>
      </categories>
      <tags>
        <tag>Hexo</tag>
        <tag>NexT</tag>
      </tags>
  </entry>
  <entry>
    <title>Hexo + NexT 配置优化指南</title>
    <url>/posts/20220424a1/</url>
    <content><![CDATA[<div class="note warning"><p>超长文警告！</p>
</div>
<div class="note "><p>记录 Hexo + NexT 的配置优化过程，以便后续更改和维护。</p>
</div>
<span id="more"></span>
<div class="note primary"><p>写在前面：</p>
<ul>
<li><strong>Hexo version：5.4.0</strong>，<strong>NexT
version：8.11.0</strong>，查看命令为<code>hexo -v</code>。<br />
</li>
<li><span id="inline-blue">站点配置文件</span>都是指博客根目录下的
_config.yml 文件，路径为 root/_config.yml。<br />
</li>
<li><span id="inline-purple">主题配置文件</span>都是指主题文件里的
_config.yml 文件，路径为 root/theme/next/_config.yml。<br />
</li>
<li>修改配置文件时“:”后面一定要有空格。<br />
</li>
<li>配置完成可通过<code>hexo clean</code> <code>hexo g</code>
<code>hexo s</code>预览。</li>
</ul>
</div>
<h2 id="全局配置">全局配置</h2>
<h3 id="设置菜单">设置菜单</h3>
<p>在<span id="inline-purple">主题配置文件</span>里查找 menu
，将注释取消。<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">menu:</span></span><br><span class="line">  <span class="attr">home:</span> <span class="string">/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-home</span>				<span class="comment">#首页</span></span><br><span class="line">  <span class="attr">about:</span> <span class="string">/about/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-user</span>			<span class="comment">#关于</span></span><br><span class="line">  <span class="comment">#tags: /tags/ || fa fa-tags			#标签</span></span><br><span class="line">  <span class="attr">categories:</span> <span class="string">/categories/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-th</span>		<span class="comment">#分类</span></span><br><span class="line">  <span class="attr">archives:</span> <span class="string">/archives/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-archive</span>		<span class="comment">#归档</span></span><br><span class="line">  <span class="attr">album:</span> <span class="string">/album/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-camera-retro</span>		<span class="comment">#相册</span></span><br><span class="line">  <span class="attr">gallery:</span> <span class="string">/gallery/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-paint-brush</span>	<span class="comment">#画廊</span></span><br><span class="line">  <span class="attr">tools:</span> <span class="string">/tools/</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-square</span>			<span class="comment">#工具</span></span><br><span class="line">  <span class="comment">#schedule: /schedule/ || fa fa-calendar	#日历</span></span><br><span class="line">  <span class="comment">#sitemap: /sitemap.xml || fa fa-sitemap	#站点地图</span></span><br><span class="line">  <span class="comment">#commonweal: /404/ || fa fa-heartbeat		#腾讯公益404</span></span><br></pre></td></tr></table></figure> <div class="note info"><p>“||”前面是对应路径，后面是图标名称。NexT 使用的图标库为 <a
href="http://www.fontawesome.com.cn/faicons/#web-application">Font
Awesome</a>，可自行添加或更换心仪的图标。</p>
</div>
若想添加新的菜单，则仿照其添加对应的元素、路径和图标，同时在
theme/next/languages/zh-CN.yml 里的 menu 下添加相对应的中文。<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">menu:</span></span><br><span class="line">  <span class="attr">home:</span> <span class="string">首页</span></span><br><span class="line">  <span class="attr">archives:</span> <span class="string">归档</span></span><br><span class="line">  <span class="attr">categories:</span> <span class="string">分类</span></span><br><span class="line">  <span class="attr">tags:</span> <span class="string">标签</span></span><br><span class="line">  <span class="attr">about:</span> <span class="string">关于</span></span><br><span class="line">  <span class="attr">search:</span> <span class="string">搜索</span></span><br><span class="line">  <span class="attr">schedule:</span> <span class="string">日程表</span></span><br><span class="line">  <span class="attr">sitemap:</span> <span class="string">站点地图</span></span><br><span class="line">  <span class="attr">commonweal:</span> <span class="string">公益</span> <span class="number">404</span></span><br><span class="line">  <span class="attr">gallery:</span> <span class="string">画廊</span></span><br><span class="line">  <span class="attr">album:</span> <span class="string">相册</span></span><br><span class="line">  <span class="attr">tools:</span> <span class="string">工具</span></span><br></pre></td></tr></table></figure> 然后在博客根目录下打开 Git
Bash，输入相应代码：<code>hexo new page "菜单名称"</code>。<br />
此时在博客根目录的 sources
文件夹下会生成对应的文件夹，每个文件夹中都有一个 index.md
文件，对文件内容进行修改，categories 的 index.md 修改如下，其他类推：
<figure class="highlight md"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: 分类</span><br><span class="line">date: 2021-08-11 16:47:10</span><br><span class="line">type: categories</span><br><span class="line"><span class="section">comments: false</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure> 如有添加评论，则页面默认开启评论，要关闭评论将 comment
的值置为 false 即可。</p>
<h3 id="更换网站图标">更换网站图标</h3>
<p>图标素材：<a href="https://icons8.com/icons/new">icons</a><br />
下载 16x16 和 32x32 的图标后，打开<span
id="inline-purple">主题配置文件</span>，修改 favicon 的 small 和 medium
的路径：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">favicon:</span></span><br><span class="line">  <span class="attr">small:</span> <span class="string">/images/favicon-16x16-iceberg.png</span></span><br><span class="line">  <span class="attr">medium:</span> <span class="string">/images/favicon-32x32-iceberg.png</span></span><br><span class="line">  <span class="attr">apple_touch_icon:</span> <span class="string">/images/apple-touch-icon-next.png</span></span><br><span class="line">  <span class="attr">safari_pinned_tab:</span> <span class="string">/images/logo.svg</span></span><br><span class="line">  <span class="comment">#android_manifest: /manifest.json</span></span><br></pre></td></tr></table></figure></p>
<h3 id="网站背景">网站背景</h3>
<h4 id="动态背景">动态背景</h4>
<h5 id="canvas-nest">Canvas nest</h5>
<p>1.在 root/themes/next 目录下打开 Git Bash ，输入命令：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git clone https://github.com/theme-next/theme-next-canvas-nest source/lib/canvas-nest</span><br></pre></td></tr></table></figure> 2.打开<span
id="inline-purple">主题配置文件</span>，添加如下代码： <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Canvas nest</span></span><br><span class="line"><span class="comment"># Dependencies: https://github.com/theme-next/theme-next-canvas nest</span></span><br><span class="line"><span class="comment"># For more information: https://github.com/hustcc/canvas-nest.js</span></span><br><span class="line"><span class="attr">canvas_nest:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">onmobile:</span> <span class="literal">true</span> <span class="comment"># Display on mobile or not</span></span><br><span class="line">  <span class="attr">color:</span> <span class="string">&quot;0,0,255&quot;</span> <span class="comment"># RGB values, use `,` to separate</span></span><br><span class="line">  <span class="attr">opacity:</span> <span class="number">0.5</span> <span class="comment"># The opacity of line: 0~1</span></span><br><span class="line">  <span class="attr">zIndex:</span> <span class="number">-1</span> <span class="comment"># z-index property of the background</span></span><br><span class="line">  <span class="attr">count:</span> <span class="number">99</span> <span class="comment"># The number of lines</span></span><br></pre></td></tr></table></figure></p>
<h5 id="canvas-ribbon">Canvas ribbon</h5>
<p>打开<span id="inline-purple">主题配置文件</span>，将 canvas_ribbon 的
enable 置为 true：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Canvas ribbon</span></span><br><span class="line"><span class="comment"># For more information: https://github.com/hustcc/ribbon.js</span></span><br><span class="line"><span class="attr">canvas_ribbon:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">size:</span> <span class="number">300</span> <span class="comment"># The width of the ribbon</span></span><br><span class="line">  <span class="attr">alpha:</span> <span class="number">0.6</span> <span class="comment"># The transparency of the ribbon</span></span><br><span class="line">  <span class="attr">zIndex:</span> <span class="number">-1</span> <span class="comment"># The display level of the ribbon</span></span><br></pre></td></tr></table></figure></p>
<h5 id="雪花飘飘">雪花飘飘</h5>
<p>1.在 root/themes/next/source/js/src 目录下新建 snow.js
文件，添加以下代码。 <figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="comment">/*样式一*/</span></span><br><span class="line">(<span class="function"><span class="keyword">function</span>(<span class="params">$</span>)</span>&#123;</span><br><span class="line">	$.fn.snow = <span class="function"><span class="keyword">function</span>(<span class="params">options</span>)</span>&#123;</span><br><span class="line">	<span class="keyword">var</span> $flake = $(<span class="string">&#x27;&lt;div id=&quot;snowbox&quot; /&gt;&#x27;</span>).css(&#123;<span class="string">&#x27;position&#x27;</span>: <span class="string">&#x27;absolute&#x27;</span>,<span class="string">&#x27;z-index&#x27;</span>:<span class="string">&#x27;9999&#x27;</span>, <span class="string">&#x27;top&#x27;</span>: <span class="string">&#x27;-50px&#x27;</span>&#125;).html(<span class="string">&#x27;&amp;#10052;&#x27;</span>),</span><br><span class="line">	documentHeight 	= $(<span class="built_in">document</span>).height(),</span><br><span class="line">	documentWidth	= $(<span class="built_in">document</span>).width(),</span><br><span class="line">	defaults = &#123;</span><br><span class="line">		<span class="attr">minSize</span>		: <span class="number">10</span>,</span><br><span class="line">		<span class="attr">maxSize</span>		: <span class="number">20</span>,</span><br><span class="line">		<span class="attr">newOn</span>		: <span class="number">1000</span>,</span><br><span class="line">		<span class="attr">flakeColor</span>	: <span class="string">&quot;#AFDAEF&quot;</span> <span class="comment">/* 此处可以定义雪花颜色，若要白色可以改为#FFFFFF */</span></span><br><span class="line">	&#125;,</span><br><span class="line">	options	= $.extend(&#123;&#125;, defaults, options);</span><br><span class="line">	<span class="keyword">var</span> interval= <span class="built_in">setInterval</span>( <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">	<span class="keyword">var</span> startPositionLeft = <span class="built_in">Math</span>.random() * documentWidth - <span class="number">100</span>,</span><br><span class="line">	startOpacity = <span class="number">0.5</span> + <span class="built_in">Math</span>.random(),</span><br><span class="line">	sizeFlake = options.minSize + <span class="built_in">Math</span>.random() * options.maxSize,</span><br><span class="line">	endPositionTop = documentHeight - <span class="number">200</span>,</span><br><span class="line">	endPositionLeft = startPositionLeft - <span class="number">500</span> + <span class="built_in">Math</span>.random() * <span class="number">500</span>,</span><br><span class="line">	durationFall = documentHeight * <span class="number">10</span> + <span class="built_in">Math</span>.random() * <span class="number">5000</span>;</span><br><span class="line">	$flake.clone().appendTo(<span class="string">&#x27;body&#x27;</span>).css(&#123;</span><br><span class="line">		<span class="attr">left</span>: startPositionLeft,</span><br><span class="line">		<span class="attr">opacity</span>: startOpacity,</span><br><span class="line">		<span class="string">&#x27;font-size&#x27;</span>: sizeFlake,</span><br><span class="line">		<span class="attr">color</span>: options.flakeColor</span><br><span class="line">	&#125;).animate(&#123;</span><br><span class="line">		<span class="attr">top</span>: endPositionTop,</span><br><span class="line">		<span class="attr">left</span>: endPositionLeft,</span><br><span class="line">		<span class="attr">opacity</span>: <span class="number">0.2</span></span><br><span class="line">	&#125;,durationFall,<span class="string">&#x27;linear&#x27;</span>,<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">		$(<span class="built_in">this</span>).remove()</span><br><span class="line">	&#125;);</span><br><span class="line">	&#125;, options.newOn);</span><br><span class="line">    &#125;;</span><br><span class="line">&#125;)(jQuery);</span><br><span class="line">$(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    $.fn.snow(&#123; </span><br><span class="line">	    <span class="attr">minSize</span>: <span class="number">5</span>, <span class="comment">/* 定义雪花最小尺寸 */</span></span><br><span class="line">	    <span class="attr">maxSize</span>: <span class="number">50</span>,<span class="comment">/* 定义雪花最大尺寸 */</span></span><br><span class="line">	    <span class="attr">newOn</span>: <span class="number">300</span>  <span class="comment">/* 定义密集程度，数字越小越密集 */</span></span><br><span class="line">    &#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure> 2.接下来在
root/themes/next/layout/_layout.njk 引入 jQuery，如果之前已经引入了
jQuery，则忽略这一步： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 引入jQuery --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;//libs.baidu.com/jquery/1.8.3/jquery.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure> 3.再在后面添加如下代码：
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 雪花特效 --&gt;</span></span><br><span class="line">&#123;% if theme.snow.enable %&#125;</span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;/js/src/snow.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure> 4.最后在<span
id="inline-purple">主题配置文件</span>加入配置代码： <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 雪花特效</span></span><br><span class="line"><span class="attr">snow:</span> </span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure></p>
<h4 id="背景图片">背景图片</h4>
<p>1.将背景图片放到 root/themes/next/source/images 下。<br />
2.打开<span id="inline-purple">主题配置文件</span>，将 style:
source/_data/styles.styl 取消注释：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">custom_file_path:</span></span><br><span class="line">  <span class="attr">style:</span> <span class="string">source/_data/styles.styl</span></span><br></pre></td></tr></table></figure> 3.在 root/source 下创建文件
_data/styles.styl，添加以下内容：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="comment">// 添加背景图片</span></span><br><span class="line"><span class="comment">// 添加背景图片</span></span><br><span class="line"><span class="selector-tag">body</span> &#123;</span><br><span class="line">      <span class="attribute">background</span>: url(/images/background.jpg);	<span class="comment">// 可以是路径也可以是链接</span></span><br><span class="line">      <span class="attribute">background-size</span>: cover			// 设置保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小</span><br><span class="line">      <span class="attribute">background-repeat</span>: no-repeat;		<span class="comment">// 设定背景图片非重复填充</span></span><br><span class="line">      <span class="attribute">background-attachment</span>: fixed;		<span class="comment">// 设置背景图片不随页面滚动</span></span><br><span class="line">      <span class="attribute">background-position</span>: <span class="number">50%</span> <span class="number">50%</span>;		<span class="comment">// 图片位置：居中</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="添加-fork-me-on-github">添加 Fork me on Github</h3>
<p>打开 <a href="https://tholman.com/github-corners/">Github Corners</a>
，选择喜欢的样式，复制相应代码到 root/themes/next/layout/_layout.njk
文件中，放在<code>&lt;div class="headband"&gt;&lt;/div&gt;</code>后面，并修改<code>href="https://your-url"</code>里的网址为自己
GitHub 主页的网址。<br />
如图： <img
src="https://s2.loli.net/2022/07/19/AU5ILo8v3jDc4iH.png" /></p>
<h3
id="更改博客主标题背景颜色gemini主题">更改博客主标题背景颜色（Gemini主题）</h3>
<p>博客主标题背景默认为黑色，相关代码在
root/themes/next/source/css/_schemes/Pisces/_header.styl 里：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.site-brand-container</span> &#123;</span><br><span class="line">  <span class="comment">//background: var(--theme-color);</span></span><br></pre></td></tr></table></figure> 可以更改为主题提供的基础颜色，见
root/themes/next/source/css/_variables/base.styl ： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">// Color system</span><br><span class="line">// --------------------------------------------------</span><br><span class="line">$whitesmoke   = #f5f5f5;</span><br><span class="line">$gainsboro    = #eee;</span><br><span class="line">$grey-lighter = #ddd;</span><br><span class="line">$grey-light   = #ccc;</span><br><span class="line">$grey         = #bbb;</span><br><span class="line">$grey-dark    = #999;</span><br><span class="line">$grey-dim     = #666;</span><br><span class="line">$black-light  = #555;</span><br><span class="line">$black-dim    = #333;</span><br><span class="line">$black-deep   = #222;</span><br><span class="line">$red          = #ff2a2a;</span><br><span class="line">$blue-bright  = #87daff;</span><br><span class="line">$blue         = #0684bd;</span><br><span class="line">$blue-deep    = #262a30;</span><br><span class="line">$orange       = #fc6423;</span><br></pre></td></tr></table></figure>
也可以直接更改为自己想要的颜色的十六进制代码，<a href="#fn1"
class="footnote-ref" id="fnref1"
role="doc-noteref"><sup>1</sup></a>如：</p>
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.site-brand-container</span> &#123;</span><br><span class="line">  <span class="comment">//background: var(--theme-color);</span></span><br><span class="line">  <span class="attribute">background</span>: <span class="number">#475164</span>;</span><br></pre></td></tr></table></figure>
<p>还可以改为渐变色，如： <figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.site-brand-container</span> &#123;</span><br><span class="line">  <span class="comment">//background: var(--theme-color);</span></span><br><span class="line">  <span class="attribute">background</span>: linear-gradient(<span class="number">200deg</span>, <span class="number">#2e80a5</span>, <span class="number">#0c0c0b</span>);</span><br></pre></td></tr></table></figure></p>
<h3 id="调整页面宽度gemini">调整页面宽度（Gemini）</h3>
<p>修改文件
root/themes/next/source/css/_variables/Pisces.styl，调整如下：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">$content-desktop              = &#x27;calc(100% - %s)&#x27; % unit($content-desktop-padding / 2, &#x27;px&#x27;);</span><br><span class="line">// $content-desktop-large        = 1160px;</span><br><span class="line">// $content-desktop-largest      = 73%;</span><br><span class="line"></span><br><span class="line">$content-desktop-large   = 85em</span><br><span class="line">$content-desktop-largest = 85%</span><br><span class="line"></span><br></pre></td></tr></table></figure></p>
<h3 id="安装rss插件">安装RSS插件</h3>
<p>1.在根目录打开 Git Bash 执行指令安装插件：<a href="#fn2"
class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a></p>
<p><code>npm install hexo-generator-feed --save</code><br />
2.在<span id="inline-blue">站点配置文件</span>末尾加上如下代码：
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">feed:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">atom</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">atom.xml</span></span><br><span class="line">  <span class="attr">limit:</span> <span class="number">20</span></span><br><span class="line">  <span class="attr">hub:</span></span><br><span class="line">  <span class="attr">content:</span></span><br><span class="line">  <span class="attr">content_limit:</span> <span class="number">140</span></span><br><span class="line">  <span class="attr">content_limit_delim:</span> <span class="string">&#x27; &#x27;</span></span><br><span class="line">  <span class="attr">order_by:</span> <span class="string">-date</span></span><br><span class="line">  <span class="attr">icon:</span> <span class="string">icon.png</span></span><br><span class="line">  <span class="attr">autodiscovery:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">template:</span></span><br></pre></td></tr></table></figure></p>
<h3 id="添加进度显示和回到顶部按钮">添加进度显示和回到顶部按钮</h3>
<h4 id="next主题自带">NexT主题自带</h4>
<p>在<span id="inline-purple">主题配置文件</span>里找到 back2top
项进行修改 <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">back2top:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span>			<span class="comment">#页面右下角显示回到顶部按钮</span></span><br><span class="line">  <span class="comment"># Back to top in sidebar.</span></span><br><span class="line">  <span class="attr">sidebar:</span> <span class="literal">false</span>		<span class="comment">#为true时按钮位置变为侧边栏底部</span></span><br><span class="line">  <span class="comment"># Scroll percent label in b2t button.</span></span><br><span class="line">  <span class="attr">scrollpercent:</span> <span class="literal">true</span>	<span class="comment">#显示浏览进度百分比</span></span><br></pre></td></tr></table></figure></p>
<h4 id="moon-cake样式">moon-cake样式</h4>
<p>1.输入如下命令下载插件：<br />
<code>npm install hexo-cake-moon-menu</code><br />
2.在<span id="inline-purple">主题配置文件</span>里添加下面代码：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">moon_menu:</span></span><br><span class="line">  <span class="attr">back2top:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">icon:</span> <span class="string">fas</span> <span class="string">fa-chevron-up</span></span><br><span class="line">    <span class="attr">order:</span> <span class="number">-1</span></span><br><span class="line">  <span class="attr">back2bottom:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">icon:</span> <span class="string">fas</span> <span class="string">fa-chevron-down</span></span><br><span class="line">    <span class="attr">order:</span> <span class="number">-2</span></span><br></pre></td></tr></table></figure></p>
<h3 id="添加可切换的夜间模式">添加可切换的夜间模式</h3>
<p>1.参考 <a href="https://www.techgrow.cn/posts/abf4aee1.html">Hexo
Next 8.x 主题添加可切换的暗黑模式</a><br />
2.输入命令<code>npm install hexo-next-darkmode --save</code>安装插件，注意安装前先关闭自带的黑暗模式。<br />
2.安装完成后在<span
id="inline-purple">主题配置文件</span>里添加以下代码：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Darkmode JS</span></span><br><span class="line"><span class="comment"># For more information: https://github.com/rqh656418510/hexo-next-darkmode, https://github.com/sandoche/Darkmode.js</span></span><br><span class="line"><span class="attr">darkmode_js:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">bottom:</span> <span class="string">&#x27;64px&#x27;</span> <span class="comment"># default: &#x27;32px&#x27;</span></span><br><span class="line">  <span class="attr">right:</span> <span class="string">&#x27;unset&#x27;</span> <span class="comment"># default: &#x27;32px&#x27;</span></span><br><span class="line">  <span class="attr">left:</span> <span class="string">&#x27;32px&#x27;</span> <span class="comment"># default: &#x27;unset&#x27;</span></span><br><span class="line">  <span class="attr">time:</span> <span class="string">&#x27;0.5s&#x27;</span> <span class="comment"># default: &#x27;0.3s&#x27;</span></span><br><span class="line">  <span class="attr">mixColor:</span> <span class="string">&#x27;transparent&#x27;</span> <span class="comment"># default: &#x27;#fff&#x27;</span></span><br><span class="line">  <span class="attr">backgroundColor:</span> <span class="string">&#x27;transparent&#x27;</span> <span class="comment"># default: &#x27;#fff&#x27;</span></span><br><span class="line">  <span class="attr">buttonColorDark:</span> <span class="string">&#x27;#100f2c&#x27;</span> <span class="comment"># default: &#x27;#100f2c&#x27;</span></span><br><span class="line">  <span class="attr">buttonColorLight:</span> <span class="string">&#x27;#fff&#x27;</span> <span class="comment"># default: &#x27;#fff&#x27;</span></span><br><span class="line">  <span class="attr">isActivated:</span> <span class="literal">true</span> <span class="comment"># default false</span></span><br><span class="line">  <span class="attr">saveInCookies:</span> <span class="literal">true</span> <span class="comment"># default: true</span></span><br><span class="line">  <span class="attr">label:</span> <span class="string">&#x27;🌓&#x27;</span> <span class="comment"># default: &#x27;&#x27;</span></span><br><span class="line">  <span class="attr">autoMatchOsTheme:</span> <span class="literal">true</span> <span class="comment"># default: true</span></span><br><span class="line">  <span class="attr">libUrl:</span> <span class="comment"># Set custom library cdn url for Darkmode.js</span></span><br></pre></td></tr></table></figure></p>
<h3 id="开启本地搜索">开启本地搜索</h3>
<p>1.执行命令<code>npm install hexo-generator-search --save</code>安装插件。<br />
2.安装完成后在<span
id="inline-blue">站点配置文件</span>内添加以下内容：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment">#本地搜索</span></span><br><span class="line"><span class="attr">search:</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">search.xml</span></span><br><span class="line">  <span class="attr">field:</span> <span class="string">post</span></span><br><span class="line">  <span class="attr">format:</span> <span class="string">html</span></span><br><span class="line">  <span class="attr">limit:</span> <span class="number">10000</span></span><br></pre></td></tr></table></figure> 3.修改<span id="inline-purple">主题配置文件</span>里
local_search 的 enable 值为 true ，启用本地搜索。<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">local_search:</span><br><span class="line">  enable: true</span><br><span class="line">  # If auto, trigger search by changing input.</span><br><span class="line">  # If manual, trigger search by pressing enter key or search button.</span><br><span class="line">  trigger: auto</span><br><span class="line">  # Show top n results per article, show all results by setting to -1</span><br><span class="line">  top_n_per_article: 1</span><br><span class="line">  # Unescape html strings to the readable one.</span><br><span class="line">  unescape: false</span><br><span class="line">  # Preload the search data when the page loads.</span><br><span class="line">  preload: false</span><br></pre></td></tr></table></figure></p>
<h3 id="点击放大图片">点击放大图片</h3>
<p>将<span id="inline-purple">主题配置文件</span>内 fancybox 的值置为
true 即可。</p>
<h3 id="添加评论系统-waline">添加评论系统 waline</h3>
<p>1.按照 <a
href="https://waline.js.org/guide/get-started.html#leancloud-%E8%AE%BE%E7%BD%AE-%E6%95%B0%E6%8D%AE%E5%BA%93">waline
快速上手</a>进行配置，注意 LeanCloud
注册时左上角选择国际版，后续添加环境变量时不用绑定域名，比较方便。<br />
2.执行命令<code>npm install @waline/hexo-next</code>安装官方插件。<br />
3.然后在<span id="inline-purple">主题配置文件</span>添加如下内容：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Waline</span></span><br><span class="line"><span class="comment"># For more information: https://waline.js.org, https://github.com/walinejs/waline</span></span><br><span class="line"><span class="attr">waline:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment">#是否开启</span></span><br><span class="line">  <span class="attr">serverURL:</span>  <span class="comment"># Waline #服务端地址，就是上面部署的 Vercel 地址</span></span><br><span class="line">  <span class="attr">placeholder:</span> <span class="string">请文明评论呀</span> <span class="comment">#评论框的默认文字</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">mm</span> <span class="comment"># 头像风格</span></span><br><span class="line">  <span class="attr">meta:</span> [<span class="string">nick</span>, <span class="string">mail</span>, <span class="string">link</span>] <span class="comment"># 自定义评论框上面的三个输入框的内容</span></span><br><span class="line">  <span class="attr">pageSize:</span> <span class="number">10</span> <span class="comment"># 评论数量多少时显示分页</span></span><br><span class="line">  <span class="attr">lang:</span> <span class="string">zh-cn</span> <span class="comment"># 语言, 可选值: en, zh-cn</span></span><br><span class="line">  <span class="attr">visitor:</span> <span class="literal">false</span> <span class="comment"># 文章阅读统计</span></span><br><span class="line">  <span class="attr">comment_count:</span> <span class="literal">true</span> <span class="comment"># 如果为 false , 评论数量只会在当前评论页面显示, 主页则不显示</span></span><br><span class="line">  <span class="attr">requiredFields:</span> [] <span class="comment"># 设置用户评论时必填的信息，[nick,mail]: [nick] | [nick, mail]</span></span><br><span class="line">  <span class="attr">libUrl:</span> <span class="comment"># Set custom library cdn url</span></span><br></pre></td></tr></table></figure></p>
<h3 id="边框圆角">边框圆角</h3>
<p>1.在<span id="inline-purple">主题配置文件</span>里将 variable
的注释取消：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">custom_file_path:</span></span><br><span class="line">  <span class="attr">variable:</span> <span class="string">source/_data/variables.styl</span></span><br></pre></td></tr></table></figure> 2.在 root/source/_data 下新建 variables.styl
，添加如下内容：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="comment">// 圆角设置</span></span><br><span class="line"><span class="variable">$border</span>-radius-inner     = <span class="number">20px</span> <span class="number">20px</span> <span class="number">20px</span> <span class="number">20px</span>;</span><br><span class="line"><span class="variable">$border</span>-radius           = <span class="number">20px</span>;</span><br></pre></td></tr></table></figure></p>
<h3 id="繁简体切换fanjian">繁简体切换<a href="#fn3" class="footnote-ref"
id="fnref3" role="doc-noteref"><sup>3</sup></a></h3>
<p>1.下载简繁字体切换所需的 <a
href="https://tding.top/js/tw_cn.js">tw_cn.js</a> 文件放到
root/themes/source/js/src/ 下。<br />
2.在想要显示简繁转换按钮的地方添加如下代码： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;translate-style&quot;</span>&gt;</span></span><br><span class="line">繁/简：<span class="tag">&lt;<span class="name">a</span> <span class="attr">id</span>=<span class="string">&quot;translateLink&quot;</span> <span class="attr">href</span>=<span class="string">&quot;javascript:translatePage();&quot;</span>&gt;</span>繁体</span><br><span class="line"><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;/js/src/tw_cn.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="javascript"></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> defaultEncoding = <span class="number">2</span>; <span class="comment">//网站编写字体是否繁体，1-繁体，2-简体</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> translateDelay = <span class="number">0</span>; <span class="comment">//延迟时间,若不在前, 要设定延迟翻译时间, 如100表示100ms,默认为0</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> cookieDomain = <span class="string">&quot;https://tding.top/&quot;</span>; <span class="comment">//Cookie地址, 一定要设定, 通常为你的网址</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> msgToTraditionalChinese = <span class="string">&quot;繁体&quot;</span>; <span class="comment">//此处可以更改为你想要显示的文字</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> msgToSimplifiedChinese = <span class="string">&quot;简体&quot;</span>; <span class="comment">//同上，但两处均不建议更改</span></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> translateButtonId = <span class="string">&quot;translateLink&quot;</span>; <span class="comment">//默认互换id</span></span></span><br><span class="line"><span class="javascript">translateInitilization();</span></span><br><span class="line"><span class="javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure></p>
<h3 id="更换字体">更换字体</h3>
<p>host 使用<a
href="https://u.sb/css-cdn/">烧饼博客</a>提供的镜像。<br />
在主题配置文件对 font 进行如下修改： <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">font:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Uri of fonts host, e.g. https://fonts.googleapis.com (Default).</span></span><br><span class="line">  <span class="comment"># 使用烧饼博客的CDN</span></span><br><span class="line">  <span class="attr">host:</span> <span class="string">https://fonts.loli.net</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Font options:</span></span><br><span class="line">  <span class="comment"># `external: true` will load this font family from `host` above.</span></span><br><span class="line">  <span class="comment"># `family: Times New Roman`. Without any quotes.</span></span><br><span class="line">  <span class="comment"># `size: x.x`. Use `em` as unit. Default: 1 (16px)</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Global font settings used for all elements inside &lt;body&gt;.</span></span><br><span class="line">  <span class="comment"># 全局字体设置</span></span><br><span class="line">  <span class="attr">global:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line">    <span class="comment">#family: EB Garamond</span></span><br><span class="line">    <span class="attr">family:</span> <span class="string">Noto</span> <span class="string">Serif</span> <span class="string">SC</span></span><br><span class="line">    <span class="attr">size:</span> <span class="number">0.9</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Font settings for site title (.site-title).</span></span><br><span class="line">  <span class="comment"># .site-title 站点标题字体设置</span></span><br><span class="line">  <span class="attr">title:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">family:</span> <span class="string">EB</span> <span class="string">Garamond</span></span><br><span class="line">    <span class="attr">size:</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Font settings for headlines (&lt;h1&gt; to &lt;h6&gt;).</span></span><br><span class="line">  <span class="comment"># 文章标题字体设置</span></span><br><span class="line">  <span class="attr">headings:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line">    <span class="comment">#family: Roboto Slab</span></span><br><span class="line">    <span class="attr">family:</span> <span class="string">EB</span> <span class="string">Garamond</span></span><br><span class="line">    <span class="attr">size:</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Font settings for posts (.post-body).</span></span><br><span class="line">  <span class="comment"># 文章页面字体设置</span></span><br><span class="line">  <span class="attr">posts:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line">    <span class="comment">#family: Roboto Slab</span></span><br><span class="line"> </span><br><span class="line">  <span class="comment"># Font settings for &lt;code&gt; and code blocks.</span></span><br><span class="line">  <span class="comment"># 代码块字体设置</span></span><br><span class="line">  <span class="attr">codes:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">family:</span> <span class="string">Source</span> <span class="string">Code</span> <span class="string">Pro</span></span><br></pre></td></tr></table></figure></p>
<h3 id="首页顶部留白">首页顶部留白</h3>
<p>在 root/source/_data/styles.styl 里添加如下内容：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="comment">//首页顶部留白</span></span><br><span class="line">.main&#123;<span class="attribute">margin-top</span>:<span class="number">10px</span>;&#125; </span><br></pre></td></tr></table></figure></p>
<h3 id="鼠标样式">鼠标样式</h3>
<p>1.在 root/source/_data/styles.styl 里添加样式： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">// 鼠标样式</span><br><span class="line">  * &#123;</span><br><span class="line">      cursor: url(/images/default.cur),auto!important</span><br><span class="line">  &#125;</span><br><span class="line">  :link &#123;</span><br><span class="line">      cursor: url(/images/pointer.cur),auto!important</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure>
2.将下面两个文件放在 root/themes/next/source/images/ 下。<br />
<a id="download" href="https://zcw-blog.top/images/default.cur"><i class="fa fa-download"></i><span>
default.cur</span></a>
<a id="download" href="https://zcw-blog.top/images/pointer.cur"><i class="fa fa-download"></i><span>
pointer.cur</span></a></p>
<h3 id="鼠标点击烟花效果">鼠标点击烟花效果</h3>
<p>1.下载 <a
href="https://aliyun-oss-pic-bucket.oss-cn-beijing.aliyuncs.com/file/fireworks.js">JavaScript
脚本</a>，放在 root/themes/next/source/js/cursor/ 下。<br />
2.在 root/themes/next/layout/_custom/custom.njk 中添加如下内容：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;# 鼠标点击烟花特效 #&#125;</span><br><span class="line">&#123;% if theme.cursor_effect == &quot;fireworks&quot; %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">async</span> <span class="attr">src</span>=<span class="string">&quot;/js/cursor/fireworks.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% elseif theme.cursor_effect == &quot;explosion&quot; %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">canvas</span> <span class="attr">class</span>=<span class="string">&quot;fireworks&quot;</span> <span class="attr">style</span>=<span class="string">&quot;position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;&quot;</span> &gt;</span><span class="tag">&lt;/<span class="name">canvas</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;//cdn.bootcss.com/animejs/2.2.0/anime.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">async</span> <span class="attr">src</span>=<span class="string">&quot;/js/cursor/explosion.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% elseif theme.cursor_effect == &quot;love&quot; %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">async</span> <span class="attr">src</span>=<span class="string">&quot;/js/cursor/love.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% elseif theme.cursor_effect == &quot;text&quot; %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">async</span> <span class="attr">src</span>=<span class="string">&quot;/js/cursor/text.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure> 3.在 root/themes/next/layout/_layout.njk
中添加<code>&#123;% include '_custom/custom.swig' %&#125;</code>。位置如下：<br />
<img src="https://s2.loli.net/2022/07/19/iG3yMC6tPvgAoIp.png" />
4.在<span id="inline-purple">主题配置文件</span>加入以下内容：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 鼠标点击烟花特效</span></span><br><span class="line"><span class="attr">cursor_effect:</span> <span class="string">fireworks</span></span><br></pre></td></tr></table></figure></p>
<h3 id="渲染-mathjax">渲染 mathjax</h3>
<p>1.卸载 hexo-math，使用 hexo-renderer-mathjax：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm uninstall hexo-math --save</span><br><span class="line">npm install hexo-renderer-mathjax --save</span><br></pre></td></tr></table></figure> 2.卸载原来的渲染器 hexo-renderer-marked，使用
hexo-renderer-pandoc 作为 Hexo 的 Markdown 渲染器：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm un hexo-renderer-marked</span><br><span class="line">npm i hexo-renderer-pandoc</span><br></pre></td></tr></table></figure> 3.在<a href="https://www.pandoc.org/">Pandoc 官网</a>下载
Pandoc，安装后重启电脑。</p>
<h3 id="文件跳过渲染">文件跳过渲染</h3>
<p>修改<span id="inline-blue">站点配置文件</span>中的 skip_render
配置项。 <div class="note info"><p>只有 source 目录下的文件才会发布，因此 Hexo 只渲染 source
目录下的文件。skip_render 参数设置的路径是相对于 source 目录的路径。</p>
</div> <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment">#单个文件</span></span><br><span class="line"><span class="attr">skip_render:</span> <span class="string">hello.html</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#单个文件夹下全部文件</span></span><br><span class="line"><span class="attr">skip_render:</span> <span class="string">test/*</span> </span><br><span class="line"></span><br><span class="line"><span class="comment">#单个文件夹下指定类型文件</span></span><br><span class="line"><span class="attr">skip_render:</span> <span class="string">test/*.md</span>  </span><br><span class="line"></span><br><span class="line"><span class="comment">#单个文件夹下全部文件以及子目录</span></span><br><span class="line"><span class="attr">skip_render:</span> <span class="string">test/**</span>  </span><br><span class="line"></span><br><span class="line"><span class="comment">#跳过多个目录，或者多个文件</span></span><br><span class="line"><span class="attr">skip_render:</span> [<span class="string">&#x27;*.html&#x27;</span>, <span class="string">demo/**</span>, <span class="string">test/*</span>]</span><br></pre></td></tr></table></figure></p>
<h3 id="配置主题加载动画">配置主题加载动画</h3>
<p>在<span id="inline-purple">主题配置文件</span>中找到 motion
项进行配置。<br />
Next 主题支持的动画可在<a
href="https://theme-next.js.org/animate/">这里</a>查看。<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">motion:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">async:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">transition:</span></span><br><span class="line">    <span class="comment"># All available transition variants: https://theme-next.js.org/animate/</span></span><br><span class="line">    <span class="attr">post_block:</span> <span class="string">fadeIn</span>		<span class="comment"># 文章板块动画</span></span><br><span class="line">    <span class="attr">post_header:</span> <span class="string">fadeInDown</span>	<span class="comment"># 文章标题动画</span></span><br><span class="line">    <span class="attr">post_body:</span> <span class="string">fadeInDown</span>	<span class="comment"># 文章内容动画</span></span><br><span class="line">    <span class="attr">coll_header:</span> <span class="string">fadeInLeft</span></span><br><span class="line">    <span class="comment"># Only for Pisces | Gemini.</span></span><br><span class="line">    <span class="attr">sidebar:</span> <span class="string">fadeInUp</span>		<span class="comment"># 侧边栏动画</span></span><br></pre></td></tr></table></figure> 配置 post-header 和 post-body 的 visibility 属性为
inherit，使其继承父元素的 visibility
属性的值，可让文章标题和内容与其他元素同步加载。<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">.use-motion .post-header, .use-motion .post-body&#123;</span><br><span class="line">	visibility: inherit</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h2 id="侧边栏配置">侧边栏配置</h2>
<h3 id="侧边栏头像">侧边栏头像</h3>
<p>将头像（jpg、gif）放到 root/themes/next/source/images 下，打开<span
id="inline-purple">主题配置文件</span>，修改 avatar 的 url：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Sidebar Avatar</span></span><br><span class="line"><span class="attr">avatar:</span></span><br><span class="line">  <span class="comment"># Replace the default image and set the url here.</span></span><br><span class="line">  <span class="attr">url:</span> <span class="string">/images/avatar.gif</span>	<span class="comment">#图片的位置，也可以是链接：http://xxx.com/avatar.png</span></span><br><span class="line">  <span class="comment"># If true, the avatar will be displayed in circle.</span></span><br><span class="line">  <span class="attr">rounded:</span> <span class="literal">true</span>		<span class="comment">#头像展示在圆框里</span></span><br><span class="line">  <span class="comment"># If true, the avatar will be rotated with the cursor.</span></span><br><span class="line">  <span class="attr">rotated:</span> <span class="literal">false</span>		<span class="comment">#头像随光标旋转</span></span><br></pre></td></tr></table></figure></p>
<h3 id="添加-social-链接">添加 social 链接</h3>
<p>打开<span id="inline-purple">主题配置文件</span>，在 social
下添加链接：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">social:</span></span><br><span class="line">  <span class="attr">GitHub:</span> <span class="string">https://github.com/reman2021</span> <span class="string">||</span> <span class="string">fab</span> <span class="string">fa-github</span></span><br><span class="line">  <span class="attr">CSDN:</span> <span class="string">https://blog.csdn.net/m0_55420671?spm=1010.2135.3001.5343</span> <span class="string">||</span> <span class="string">fab</span> <span class="string">fa-codiepie</span></span><br><span class="line">  <span class="attr">RSS:</span> <span class="string">/atom.xml</span> <span class="string">||</span> <span class="string">fa</span> <span class="string">fa-rss</span></span><br></pre></td></tr></table></figure></p>
<h3 id="更改侧边栏和菜单栏透明度">更改侧边栏和菜单栏透明度</h3>
<div class="note warning"><p>在更改菜单栏透明度后，本地搜索出现了问题，暂未解决</p>
</div>
<p>在 root/source/_data/styles.styl 里添加如下内容： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">//侧边框的透明度设置</span><br><span class="line">.sidebar &#123;</span><br><span class="line">  opacity: 0.9;</span><br><span class="line">&#125;</span><br><span class="line">​</span><br><span class="line">//菜单栏的透明度设置</span><br><span class="line">.header-inner &#123;</span><br><span class="line">  opacity: 0.9;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="侧边栏添加-canvas-粒子时钟">侧边栏添加 canvas 粒子时钟</h3>
<p>1.在 root/themes/next/layout/_custom/ 目录下新建 clock.njk
文件，添加如下内容： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">style</span>=<span class="string">&quot;&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">canvas</span> <span class="attr">id</span>=<span class="string">&quot;canvas&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width:60%;&quot;</span>&gt;</span>当前浏览器不支持canvas，请更换浏览器后再试<span class="tag">&lt;/<span class="name">canvas</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="javascript"></span></span><br><span class="line"><span class="javascript">(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">   <span class="keyword">var</span> digit=</span></span><br><span class="line"><span class="javascript">    [</span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//0</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//1</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//2</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//3</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//4</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//5</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//6</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//7</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//8</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ],<span class="comment">//9</span></span></span><br><span class="line"><span class="javascript">        [</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>,<span class="number">0</span>,<span class="number">0</span>],</span></span><br><span class="line"><span class="javascript">            [<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>,<span class="number">0</span>]</span></span><br><span class="line"><span class="javascript">        ]<span class="comment">//:</span></span></span><br><span class="line"><span class="javascript">    ];</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript"><span class="keyword">var</span> canvas = <span class="built_in">document</span>.getElementById(<span class="string">&#x27;canvas&#x27;</span>);</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript"><span class="keyword">if</span>(canvas.getContext)&#123;</span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> cxt = canvas.getContext(<span class="string">&#x27;2d&#x27;</span>);</span></span><br><span class="line"><span class="javascript">    <span class="comment">//声明canvas的宽高</span></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> H = <span class="number">100</span>,W = <span class="number">700</span>;</span></span><br><span class="line"><span class="javascript">    canvas.height = H;</span></span><br><span class="line"><span class="javascript">    canvas.width = W;</span></span><br><span class="line"><span class="javascript">    cxt.fillStyle = <span class="string">&#x27;#f00&#x27;</span>;</span></span><br><span class="line"><span class="javascript">    cxt.fillRect(<span class="number">10</span>,<span class="number">10</span>,<span class="number">50</span>,<span class="number">50</span>);</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">//存储时间数据</span></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> data = [];</span></span><br><span class="line"><span class="javascript">    <span class="comment">//存储运动的小球</span></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> balls = [];</span></span><br><span class="line"><span class="javascript">    <span class="comment">//设置粒子半径</span></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> R = canvas.height/<span class="number">20</span>-<span class="number">1</span>;</span></span><br><span class="line"><span class="javascript">    (<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> temp = <span class="regexp">/(\d)(\d):(\d)(\d):(\d)(\d)/</span>.exec(<span class="keyword">new</span> <span class="built_in">Date</span>());</span></span><br><span class="line"><span class="javascript">        <span class="comment">//存储时间数字，由十位小时、个位小时、冒号、十位分钟、个位分钟、冒号、十位秒钟、个位秒钟这7个数字组成</span></span></span><br><span class="line"><span class="javascript">        data.push(temp[<span class="number">1</span>],temp[<span class="number">2</span>],<span class="number">10</span>,temp[<span class="number">3</span>],temp[<span class="number">4</span>],<span class="number">10</span>,temp[<span class="number">5</span>],temp[<span class="number">6</span>]);</span></span><br><span class="line"><span class="javascript">    &#125;)();</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">/*生成点阵数字*/</span></span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">renderDigit</span>(<span class="params">index,num</span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; digit[num].length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            <span class="keyword">for</span>(<span class="keyword">var</span> j = <span class="number">0</span>; j &lt; digit[num][i].length; j++)&#123;</span></span><br><span class="line"><span class="javascript">                <span class="keyword">if</span>(digit[num][i][j] == <span class="number">1</span>)&#123;</span></span><br><span class="line"><span class="javascript">                    cxt.beginPath();</span></span><br><span class="line"><span class="javascript">                    cxt.arc(<span class="number">14</span>*(R+<span class="number">2</span>)*index + j*<span class="number">2</span>*(R+<span class="number">1</span>)+(R+<span class="number">1</span>),i*<span class="number">2</span>*(R+<span class="number">1</span>)+(R+<span class="number">1</span>),R,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI);</span></span><br><span class="line"><span class="javascript">                    cxt.closePath();</span></span><br><span class="line"><span class="javascript">                    cxt.fill();</span></span><br><span class="line"><span class="javascript">                &#125;</span></span><br><span class="line"><span class="javascript">            &#125;</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">    &#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">/*更新时钟*/</span></span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">updateDigitTime</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> changeNumArray = [];</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> temp = <span class="regexp">/(\d)(\d):(\d)(\d):(\d)(\d)/</span>.exec(<span class="keyword">new</span> <span class="built_in">Date</span>());</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> NewData = [];</span></span><br><span class="line"><span class="javascript">        NewData.push(temp[<span class="number">1</span>],temp[<span class="number">2</span>],<span class="number">10</span>,temp[<span class="number">3</span>],temp[<span class="number">4</span>],<span class="number">10</span>,temp[<span class="number">5</span>],temp[<span class="number">6</span>]);</span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = data.length-<span class="number">1</span>; i &gt;=<span class="number">0</span> ; i--)&#123;</span></span><br><span class="line"><span class="javascript">            <span class="comment">//时间发生变化</span></span></span><br><span class="line"><span class="javascript">            <span class="keyword">if</span>(NewData[i] !== data[i])&#123;</span></span><br><span class="line"><span class="javascript">                <span class="comment">//将变化的数字值和在data数组中的索引存储在changeNumArray数组中</span></span></span><br><span class="line"><span class="javascript">                changeNumArray.push(i+<span class="string">&#x27;_&#x27;</span>+(<span class="built_in">Number</span>(data[i])+<span class="number">1</span>)%<span class="number">10</span>);</span></span><br><span class="line"><span class="javascript">            &#125;</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">        <span class="comment">//增加小球</span></span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i&lt; changeNumArray.length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            addBalls.apply(<span class="built_in">this</span>,changeNumArray[i].split(<span class="string">&#x27;_&#x27;</span>));</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">        data = NewData.concat();</span></span><br><span class="line"><span class="javascript">    &#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">/*更新小球状态*/</span></span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">updateBalls</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; balls.length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            balls[i].stepY += balls[i].disY;</span></span><br><span class="line"><span class="javascript">            balls[i].x += balls[i].stepX;</span></span><br><span class="line"><span class="javascript">            balls[i].y += balls[i].stepY;</span></span><br><span class="line"><span class="javascript">            <span class="keyword">if</span>(balls[i].x &gt; W + R || balls[i].y &gt; H + R)&#123;</span></span><br><span class="line"><span class="javascript">                balls.splice(i,<span class="number">1</span>);</span></span><br><span class="line"><span class="javascript">                i--;</span></span><br><span class="line"><span class="javascript">            &#125;</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">    &#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">/*增加要运动的小球*/</span></span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">addBalls</span>(<span class="params">index,num</span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> numArray = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>];</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> colorArray =  [<span class="string">&quot;#3BE&quot;</span>,<span class="string">&quot;#09C&quot;</span>,<span class="string">&quot;#A6C&quot;</span>,<span class="string">&quot;#93C&quot;</span>,<span class="string">&quot;#9C0&quot;</span>,<span class="string">&quot;#690&quot;</span>,<span class="string">&quot;#FB3&quot;</span>,<span class="string">&quot;#F80&quot;</span>,<span class="string">&quot;#F44&quot;</span>,<span class="string">&quot;#C00&quot;</span>];</span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; digit[num].length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            <span class="keyword">for</span>(<span class="keyword">var</span> j = <span class="number">0</span>; j &lt; digit[num][i].length; j++)&#123;</span></span><br><span class="line"><span class="javascript">                <span class="keyword">if</span>(digit[num][i][j] == <span class="number">1</span>)&#123;</span></span><br><span class="line"><span class="javascript">                    <span class="keyword">var</span> ball = &#123;</span></span><br><span class="line"><span class="javascript">                        <span class="attr">x</span>:<span class="number">14</span>*(R+<span class="number">2</span>)*index + j*<span class="number">2</span>*(R+<span class="number">1</span>)+(R+<span class="number">1</span>),</span></span><br><span class="line"><span class="javascript">                        <span class="attr">y</span>:i*<span class="number">2</span>*(R+<span class="number">1</span>)+(R+<span class="number">1</span>),</span></span><br><span class="line"><span class="javascript">                        <span class="attr">stepX</span>:<span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random() * <span class="number">4</span> -<span class="number">2</span>),</span></span><br><span class="line"><span class="javascript">                        <span class="attr">stepY</span>:-<span class="number">2</span>*numArray[<span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random()*numArray.length)],</span></span><br><span class="line"><span class="javascript">                        <span class="attr">color</span>:colorArray[<span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random()*colorArray.length)],</span></span><br><span class="line"><span class="javascript">                        <span class="attr">disY</span>:<span class="number">1</span></span></span><br><span class="line"><span class="javascript">                    &#125;;</span></span><br><span class="line"><span class="javascript">                    balls.push(ball);</span></span><br><span class="line"><span class="javascript">                &#125;</span></span><br><span class="line"><span class="javascript">            &#125;</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">    &#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="comment">/*渲染*/</span></span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">render</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="comment">//重置画布宽度，达到清空画布的效果</span></span></span><br><span class="line"><span class="javascript">        canvas.height = <span class="number">100</span>;</span></span><br><span class="line"><span class="javascript">        <span class="comment">//渲染时钟</span></span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; data.length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            renderDigit(i,data[i]);</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">        <span class="comment">//渲染小球</span></span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span>(<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; balls.length; i++)&#123;</span></span><br><span class="line"><span class="javascript">            cxt.beginPath();</span></span><br><span class="line"><span class="javascript">            cxt.arc(balls[i].x,balls[i].y,R,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI);</span></span><br><span class="line"><span class="javascript">            cxt.fillStyle = balls[i].color;</span></span><br><span class="line"><span class="javascript">            cxt.closePath();</span></span><br><span class="line"><span class="javascript">            cxt.fill();</span></span><br><span class="line"><span class="javascript">        &#125;</span></span><br><span class="line"><span class="javascript">    &#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">    <span class="built_in">clearInterval</span>(oTimer);</span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> oTimer = <span class="built_in">setInterval</span>(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="comment">//更新时钟</span></span></span><br><span class="line"><span class="javascript">        updateDigitTime();</span></span><br><span class="line"><span class="javascript">        <span class="comment">//更新小球状态</span></span></span><br><span class="line"><span class="javascript">        updateBalls();</span></span><br><span class="line"><span class="javascript">        <span class="comment">//渲染</span></span></span><br><span class="line"><span class="javascript">        render();</span></span><br><span class="line"><span class="javascript">    &#125;,<span class="number">50</span>);</span></span><br><span class="line"><span class="javascript">&#125;</span></span><br><span class="line"><span class="javascript"></span></span><br><span class="line"><span class="javascript">&#125;)();</span></span><br><span class="line"><span class="javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure> 2.在 root_macro.njk 中引入如下代码<a
href="#fn4" class="footnote-ref" id="fnref4"
role="doc-noteref"><sup>4</sup></a>：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% if theme.diy_time.clock %&#125;</span><br><span class="line">  <span class="comment">&lt;!-- canvas粒子时钟 --&gt;</span></span><br><span class="line">  &#123;% include &#x27;../_custom/clock.swig&#x27; %&#125;</span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure>
<p>3.在<span id="inline-purple">主题配置文件</span>中加入应用代码：
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 侧栏粒子时钟</span></span><br><span class="line"><span class="attr">diy_time:</span></span><br><span class="line">  <span class="attr">runtime:</span> <span class="literal">true</span> </span><br><span class="line">  <span class="attr">clock:</span> <span class="literal">true</span> <span class="comment"># 粒子时钟</span></span><br><span class="line"></span><br></pre></td></tr></table></figure></p>
<h3 id="侧边栏添加日历云">侧边栏添加日历云</h3>
<p>1.安装 theme-next-calendar 插件<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install --save git://github.com/icecory/theme-next-calendar#hexo</span><br></pre></td></tr></table></figure> 2.在<a
href="https://github.com/icecory/theme-next-calendar">theme-next-calendar</a>下载相关文件后解压放到
root/themes/next/source/lib/ 目录下，文件夹命名为 calendar。<br />
3.将 calendar.styl 中的代码直接复制到 root/source/_data/styles.styl
中。<br />
<div class="note info"><p>为适应夜间模式，可将日历云背景色改为背板颜色 <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">/*全句背景色*/</span><br><span class="line">//background-color #EEEEEE</span><br><span class="line">background-color var(--content-bg-color);</span><br></pre></td></tr></table></figure></p>
</div> 4.在 root/themes/next/layout 下新建 calendar.njk
文件，将下载的 calendar.swig 文件里的代码复制到里面。<br />
5.然后在 themes/next/layout/_layout.njk 里加入下面代码：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% include &#x27;calendar.njk&#x27; %&#125;</span><br></pre></td></tr></table></figure> 6.在<span
id="inline-purple">主题配置文件</span>最后加入下面代码，并找到
custom_file_path 取消 sidebar 的注释： <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">custom_file_path:</span></span><br><span class="line">  <span class="attr">sidebar:</span> <span class="string">source/_data/sidebar.njk</span></span><br><span class="line"></span><br><span class="line"><span class="attr">CloudCalendar:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">language:</span> <span class="string">zh-CN</span> <span class="comment">#设置语言</span></span><br><span class="line">  <span class="attr">single:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">root:</span> <span class="string">/calendar/</span></span><br></pre></td></tr></table></figure> 7.在
root/source/_data/sidebar.njk 添加如下代码：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;!-- CloudCalendar --&gt;</span><br><span class="line">&lt;div class=&quot;widget-wrap&quot; style=&quot;width: 90%;margin-left: auto;margin-right: auto; opacity: 0.97;&quot;&gt;</span><br><span class="line">&lt;div class=&quot;widget&quot; id=&quot;CloudCalendar&quot;&gt;&lt;/div&gt;</span><br><span class="line">&lt;/div&gt;</span><br></pre></td></tr></table></figure>
<div class="note warning"><p>与雪花背景一起添加在 _layout.njk
里时，应都放在<code>&lt;body&gt;&lt;/body&gt;</code>外，且雪花背景代码在前，不然会发生冲突导致日历云消失，原因不明。</p>
</div>
<h3 id="添加标签云">添加标签云</h3>
<p>1.执行命令<code>npm install hexo-tag-cloud@^2.1.* --save</code>安装标签云插件。<br />
2.在 root/theme/next/layout/_macro/sidebar.njk 文件添加如下代码：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% if site.tags.length &gt; 1 %&#125;</span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span> <span class="attr">src</span>=<span class="string">&quot;/js/tagcloud.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span> <span class="attr">src</span>=<span class="string">&quot;/js/tagcanvas.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;widget-wrap&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">h3</span> <span class="attr">class</span>=<span class="string">&quot;widget-title&quot;</span>&gt;</span>Tag Cloud<span class="tag">&lt;/<span class="name">h3</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;myCanvasContainer&quot;</span> <span class="attr">class</span>=<span class="string">&quot;widget tagcloud&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">canvas</span> <span class="attr">width</span>=<span class="string">&quot;240&quot;</span> <span class="attr">height</span>=<span class="string">&quot;180&quot;</span> <span class="attr">id</span>=<span class="string">&quot;resCanvas&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width=100%&quot;</span>&gt;</span></span><br><span class="line">            &#123;&#123; list_tags() &#125;&#125;</span><br><span class="line">        <span class="tag">&lt;/<span class="name">canvas</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure> 3.在<span
id="inline-blue">站点配置文件</span>添加相应的配置项 <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># hexo-tag-cloud</span></span><br><span class="line"><span class="attr">tag_cloud:</span></span><br><span class="line">    <span class="attr">textFont:</span> <span class="string">Trebuchet</span> <span class="string">MS,</span> <span class="string">Helvetica</span></span><br><span class="line">    <span class="attr">textColor:</span> <span class="string">&#x27;#621d34&#x27;</span></span><br><span class="line">    <span class="attr">textHeight:</span> <span class="number">18</span></span><br><span class="line">    <span class="attr">outlineColor:</span> <span class="string">&#x27;#e9d7df&#x27;</span></span><br><span class="line">    <span class="attr">maxSpeed:</span> <span class="number">0.05</span> <span class="comment"># range from [0.01 ~ 1]</span></span><br><span class="line">    <span class="attr">pauseOnSelected:</span> <span class="literal">false</span> <span class="comment"># true means pause the cloud tag movement when highlight a tag</span></span><br></pre></td></tr></table></figure></p>
<h2 id="页脚配置">页脚配置</h2>
<h3 id="设置建站时间和网站运行时间">设置建站时间和网站运行时间</h3>
<h4 id="设置建站时间">设置建站时间</h4>
<p>打开<span id="inline-purple">主题配置文件</span>，在 since
后添加建站时间：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">footer:</span></span><br><span class="line">  <span class="comment"># Specify the year when the site was setup. If not defined, current year will be used.</span></span><br><span class="line">  <span class="attr">since:</span> <span class="number">2021-08-11</span>		<span class="comment">#建站时间</span></span><br></pre></td></tr></table></figure></p>
<h4 id="页脚添加网站运行时间">页脚添加网站运行时间</h4>
<p>将下面代码添加到 root/themes/next/layout/_partials/footer.njk
文件的合适位置，修改<code>var t1 = Date.UTC(2021,08,11,00,00,00);</code>为自己的建站时间。<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;sitetime&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">language</span>=<span class="string">javascript</span>&gt;</span><span class="javascript"></span></span><br><span class="line"><span class="javascript">	<span class="function"><span class="keyword">function</span> <span class="title">siteTime</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">		<span class="built_in">window</span>.setTimeout(<span class="string">&quot;siteTime()&quot;</span>, <span class="number">1000</span>);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> seconds = <span class="number">1000</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> minutes = seconds * <span class="number">60</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> hours = minutes * <span class="number">60</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> days = hours * <span class="number">24</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> years = days * <span class="number">365</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> today = <span class="keyword">new</span> <span class="built_in">Date</span>();</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todayYear = today.getFullYear();</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todayMonth = today.getMonth()+<span class="number">1</span>;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todayDate = today.getDate();</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todayHour = today.getHours();</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todayMinute = today.getMinutes();</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> todaySecond = today.getSeconds();</span></span><br><span class="line"><span class="javascript">		<span class="comment">/* </span></span></span><br><span class="line"><span class="comment"><span class="javascript">		Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		year - 作为date对象的年份，为4位年份值</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		month - 0-11之间的整数，做为date对象的月份</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		day - 1-31之间的整数，做为date对象的天数</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		hours - 0(午夜24点)-23之间的整数，做为date对象的小时数</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		minutes - 0-59之间的整数，做为date对象的分钟数</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		seconds - 0-59之间的整数，做为date对象的秒数</span></span></span><br><span class="line"><span class="comment"><span class="javascript">		microseconds - 0-999之间的整数，做为date对象的毫秒数</span></span></span><br><span class="line"><span class="comment"><span class="javascript">        */</span></span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> t1 = <span class="built_in">Date</span>.UTC(<span class="number">2021</span>,<span class="number">08</span>,<span class="number">11</span>,<span class="number">00</span>,<span class="number">00</span>,<span class="number">00</span>); <span class="comment">//北京时间2021-8-11 00:00:00</span></span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> t2 = <span class="built_in">Date</span>.UTC(todayYear,todayMonth,todayDate,todayHour,todayMinute,todaySecond);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diff = t2-t1;</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diffYears = <span class="built_in">Math</span>.floor(diff/years);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diffDays = <span class="built_in">Math</span>.floor((diff/days)-diffYears*<span class="number">365</span>);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diffHours = <span class="built_in">Math</span>.floor((diff-(diffYears*<span class="number">365</span>+diffDays)*days)/hours);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diffMinutes = <span class="built_in">Math</span>.floor((diff-(diffYears*<span class="number">365</span>+diffDays)*days-diffHours*hours)/minutes);</span></span><br><span class="line"><span class="javascript">		<span class="keyword">var</span> diffSeconds = <span class="built_in">Math</span>.floor((diff-(diffYears*<span class="number">365</span>+diffDays)*days-diffHours*hours-diffMinutes*minutes)/seconds);</span></span><br><span class="line"><span class="javascript">		<span class="built_in">document</span>.getElementById(<span class="string">&quot;sitetime&quot;</span>).innerHTML=<span class="string">&quot; 本站已悄悄运行&quot;</span>+<span class="comment">/*diffYears+&quot; 年 &quot;+*/</span>diffDays+<span class="string">&quot; 天 &quot;</span>+diffHours+<span class="string">&quot; 小时 &quot;</span>+diffMinutes+<span class="string">&quot; 分钟 &quot;</span>+diffSeconds+<span class="string">&quot; 秒&quot;</span>;</span></span><br><span class="line"><span class="javascript">	&#125;</span></span><br><span class="line"><span class="javascript">	siteTime();</span></span><br><span class="line"><span class="javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure></p>
<h3 id="底部图标配置">底部图标配置</h3>
<p>在<span id="inline-purple">主题配置文件</span>里找到 footer 下的 icon
配置项进行修改 <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Icon between year and copyright info.</span></span><br><span class="line"><span class="attr">icon:</span></span><br><span class="line">  <span class="comment"># Icon name in Font Awesome. See: https://fontawesome.com/icons</span></span><br><span class="line">  <span class="attr">name:</span> <span class="string">fa</span> <span class="string">fa-heart</span>	<span class="comment">#图标名称，来源Font Awesome图标库</span></span><br><span class="line">  <span class="comment"># If you want to animate the icon, set it to true.</span></span><br><span class="line">  <span class="attr">animated:</span> <span class="literal">true</span>		<span class="comment">#图标跳动</span></span><br><span class="line">  <span class="comment"># Change the color of icon, using Hex Code.</span></span><br><span class="line">  <span class="attr">color:</span> <span class="string">&quot;#ff0000&quot;</span>	<span class="comment">#图标颜色</span></span><br></pre></td></tr></table></figure></p>
<h2 id="文章配置">文章配置</h2>
<h3 id="修改首页分页文章数">修改首页分页文章数</h3>
<p>在<span id="inline-blue">站点配置文件</span>中找到
index_generator，修改 per_page 项：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">index_generator:</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line">  <span class="attr">per_page:</span> <span class="number">5</span></span><br><span class="line">  <span class="attr">order_by:</span> <span class="string">-date</span></span><br></pre></td></tr></table></figure></p>
<h3 id="关闭首页阅读更多按钮">关闭首页“阅读更多”按钮</h3>
<p>在<span id="inline-purple">主题配置文件</span>中找到
read_more_btn，修改其值为 false，即可关闭。</p>
<h3 id="显示文章字数和阅读时长">显示文章字数和阅读时长</h3>
<p>1.根目录打开 Git Bash ，执行下面的命令，安装插件：</p>
<p><code>npm install hexo-wordcount --save</code><br />
2.然后在<span
id="inline-blue">站点配置文件</span>末尾加上下面的代码：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">symbols_count_time:</span></span><br><span class="line">  <span class="attr">symbols:</span> <span class="literal">true</span>                <span class="comment"># 文章字数统计</span></span><br><span class="line">  <span class="attr">time:</span> <span class="literal">true</span>                   <span class="comment"># 文章阅读时长</span></span><br><span class="line">  <span class="attr">total_symbols:</span> <span class="literal">true</span>          <span class="comment"># 站点总字数统计</span></span><br><span class="line">  <span class="attr">total_time:</span> <span class="literal">true</span>             <span class="comment"># 站点总阅读时长</span></span><br><span class="line">  <span class="attr">exclude_codeblock:</span> <span class="literal">false</span>     <span class="comment"># 排除代码字数统计</span></span><br></pre></td></tr></table></figure></p>
<h3 id="自定义博文内链接颜色">自定义博文内链接颜色</h3>
<p>在 root/themes/next/source/css/_common/components/post/post.styl
文件里添加如下代码：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.post-body</span> <span class="selector-tag">p</span> a&#123;</span><br><span class="line">     <span class="attribute">color</span>: <span class="number">#ba2f7b</span>;		<span class="comment">//链接颜色</span></span><br><span class="line">     <span class="attribute">border-bottom</span>: none;</span><br><span class="line">     <span class="selector-pseudo">&amp;:hover</span> &#123;</span><br><span class="line">       <span class="attribute">color</span>: <span class="number">#815c94</span>;		<span class="comment">//光标悬停时链接颜色</span></span><br><span class="line">       <span class="attribute">text-decoration</span>: underline;</span><br><span class="line">     &#125;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="文章末尾添加结束标记">文章末尾添加结束标记</h3>
<p>1.在 root/themes/next/layout/_macro 中新建 passage-end-tag.njk
文件,并添加以下内容，分割线中间内容可自定义：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">    &#123;% if not is_index %&#125;</span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">style</span>=<span class="string">&quot;text-align:center;color: #ccc;font-size:24px;&quot;</span>&gt;</span>--------------------------  <span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&quot;fa fa-battery-full&quot;</span> <span class="attr">aria-hidden</span>=<span class="string">&quot;true&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span>  --------------------------<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    &#123;% endif %&#125;</span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure> 2.打开 root/themes/next/layout/_macro/post.njk 文件，在
END POST BODY 后添加代码：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% if not is_index and theme.passage_end_tag.enabled %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">    &#123;% include &#x27;passage-end-tag.swig&#x27; %&#125;</span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure> 具体位置如图：<br />
<img src="https://s2.loli.net/2022/07/19/PZaCzIh1SktEReg.png" /></p>
<h3 id="文章添加版权说明">文章添加版权说明</h3>
<p>在<span id="inline-purple">主题配置文件</span>中找到 creative_commons
进行修改： <figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">creative_commons:</span></span><br><span class="line">  <span class="attr">license:</span> <span class="string">by-nc-sa</span></span><br><span class="line">  <span class="attr">sidebar:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">post:</span> <span class="literal">true</span>  		<span class="comment"># 将false改为true即可显示版权信息</span></span><br><span class="line">  <span class="attr">language:</span></span><br></pre></td></tr></table></figure></p>
<h3 id="文章版权样式自定义">文章版权样式自定义</h3>
<p>1.在目录 root/themes/next/layout/_macro/ 下添加
my-copyright.njk，内容如下：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% if page.copyright %&#125;</span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;my_post_copyright&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;//cdn.bootcss.com/clipboard.js/1.5.10/clipboard.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  </span><br><span class="line">  <span class="comment">&lt;!-- JS库 sweetalert 可修改路径 --&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;http://jslibs.wuxubj.cn/sweetalert_mini/jquery-1.7.1.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;http://jslibs.wuxubj.cn/sweetalert_mini/sweetalert.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">type</span>=<span class="string">&quot;text/css&quot;</span> <span class="attr">href</span>=<span class="string">&quot;http://jslibs.wuxubj.cn/sweetalert_mini/sweetalert.mini.css&quot;</span>&gt;</span></span><br><span class="line"></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>本文标题:<span class="tag">&lt;/<span class="name">span</span>&gt;</span>&#123;&#123; page.title &#125;&#125;<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>文章作者:<span class="tag">&lt;/<span class="name">span</span>&gt;</span>&#123;&#123; author &#125;&#125;<span class="tag">&lt;/<span class="name">a</span>&gt;</span><span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>发布时间:<span class="tag">&lt;/<span class="name">span</span>&gt;</span>&#123;&#123; page.date.format(&quot;YYYY年MM月DD日 - HH:mm:ss&quot;) &#125;&#125;<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>最后更新:<span class="tag">&lt;/<span class="name">span</span>&gt;</span>&#123;&#123; page.updated.format(&quot;YYYY年MM月DD日 - HH:mm:ss&quot;) &#125;&#125;<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>原始链接:<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;&#123;&#123; url_for(page.path) &#125;&#125;&quot;</span> <span class="attr">title</span>=<span class="string">&quot;&#123;&#123; page.title &#125;&#125;&quot;</span>&gt;</span>&#123;&#123; page.permalink &#125;&#125;<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">&quot;copy-path&quot;</span>  <span class="attr">title</span>=<span class="string">&quot;点击复制文章链接&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&quot;fa fa-clipboard&quot;</span> <span class="attr">data-clipboard-text</span>=<span class="string">&quot;&#123;&#123; page.permalink &#125;&#125;&quot;</span>  <span class="attr">aria-label</span>=<span class="string">&quot;复制成功！&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">p</span>&gt;</span><span class="tag">&lt;<span class="name">span</span>&gt;</span>许可协议:<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&quot;fa fa-creative-commons&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span> <span class="tag">&lt;<span class="name">a</span> <span class="attr">rel</span>=<span class="string">&quot;license&quot;</span> <span class="attr">href</span>=<span class="string">&quot;https://creativecommons.org/licenses/by-nc-nd/4.0/&quot;</span> <span class="attr">target</span>=<span class="string">&quot;_blank&quot;</span> <span class="attr">title</span>=<span class="string">&quot;Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)&quot;</span>&gt;</span>署名-非商业性使用-禁止演绎 4.0 国际<span class="tag">&lt;/<span class="name">a</span>&gt;</span> 转载请保留原文链接及作者。<span class="tag">&lt;/<span class="name">p</span>&gt;</span>  </span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="javascript"> </span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> clipboard = <span class="keyword">new</span> Clipboard(<span class="string">&#x27;.fa-clipboard&#x27;</span>);</span></span><br><span class="line"><span class="javascript">    clipboard.on(<span class="string">&#x27;success&#x27;</span>, $(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">      $(<span class="string">&quot;.fa-clipboard&quot;</span>).click(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span></span><br><span class="line"><span class="javascript">        swal(&#123;   </span></span><br><span class="line"><span class="javascript">          <span class="attr">title</span>: <span class="string">&quot;&quot;</span>,   </span></span><br><span class="line"><span class="javascript">          <span class="attr">text</span>: <span class="string">&#x27;复制成功&#x27;</span>,   </span></span><br><span class="line"><span class="javascript">          <span class="attr">html</span>: <span class="literal">false</span>,</span></span><br><span class="line"><span class="javascript">          <span class="attr">timer</span>: <span class="number">500</span>,   </span></span><br><span class="line"><span class="javascript">          <span class="attr">showConfirmButton</span>: <span class="literal">false</span></span></span><br><span class="line"><span class="javascript">        &#125;);</span></span><br><span class="line"><span class="javascript">      &#125;);</span></span><br><span class="line"><span class="javascript">    &#125;));  </span></span><br><span class="line"><span class="javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure> 2.在目录
root/themes/next/source/css/_common/components/post/ 下添加
my-post-copyright.styl，内容如下:<br />
<figure class="highlight css"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.my_post_copyright</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">85%</span>;</span><br><span class="line">  <span class="attribute">max-width</span>: <span class="number">45em</span>;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">2.8em</span> auto <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">0.5em</span> <span class="number">1.0em</span>;</span><br><span class="line">  <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="number">#d3d3d3</span>;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">0.93rem</span>;</span><br><span class="line">  <span class="attribute">line-height</span>: <span class="number">1.6em</span>;</span><br><span class="line">  <span class="attribute">word-break</span>: break-all;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,<span class="number">0.4</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-tag">p</span>&#123;<span class="attribute">margin</span>:<span class="number">0</span>;&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-tag">span</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: inline-block;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">5.2em</span>;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#333333</span>; // title <span class="attribute">color</span></span><br><span class="line">  <span class="attribute">font-weight</span>: bold;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-class">.raw</span> &#123;</span><br><span class="line">  <span class="attribute">margin-left</span>: <span class="number">1em</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">5em</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#808080</span>;</span><br><span class="line">  <span class="attribute">border-bottom</span>:<span class="number">0</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#0593d3</span>; // link <span class="attribute">color</span></span><br><span class="line">  <span class="attribute">text-decoration</span>: underline;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.fa-clipboard</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#000</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-class">.post-url</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">font-weight</span>: normal;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-class">.copy-path</span> &#123;</span><br><span class="line">  <span class="attribute">margin-left</span>: <span class="number">1em</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">1em</span>;</span><br><span class="line">  +mobile()&#123;<span class="attribute">display</span>:none;&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.my_post_copyright</span> <span class="selector-class">.copy-path</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#808080</span>;</span><br><span class="line">  <span class="attribute">cursor</span>: pointer;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> 3.在 root/themes/next/layout/_macro/post.njk
添加如下代码：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;#####################&#125;</span><br><span class="line">&#123;### END POST BODY ###&#125;</span><br><span class="line">&#123;#####################&#125;</span><br><span class="line"></span><br><span class="line">&#123;% if not is_index %&#125;</span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span>&gt;</span></span><br><span class="line">    &#123;% include &#x27;my-copyright.njk&#x27; %&#125;</span><br><span class="line">  <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">&#123;% endif %&#125;</span><br></pre></td></tr></table></figure> 4.打开
root/themes/next/source/css/_common/components/post/index.styl
文件，在最后一行增加代码：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="keyword">@import</span> <span class="string">&quot;my-post-copyright&quot;</span></span><br></pre></td></tr></table></figure> 5.设置新建文章自动开启 copyright
，即新建文章自动显示自定义的版权声明，打开 root/scaffolds/post.md
文件，设置如下：<br />
<figure class="highlight md"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: &#123;&#123; title &#125;&#125;</span><br><span class="line">date: &#123;&#123; date &#125;&#125;</span><br><span class="line"><span class="section">copyright: true </span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure></p>
<ul>
<li>注：之前发布的文章需在文章配置内添加属性 copyright: true。</li>
</ul>
<h3 id="代码样式自定义">代码样式自定义</h3>
<p>在 root/source/_data/styles.styl 添加以下内容： <figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="comment">// Custom styles.</span></span><br><span class="line"><span class="selector-tag">code</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#B22222</span>;			<span class="comment">//代码颜色</span></span><br><span class="line">    <span class="attribute">background</span>: <span class="number">#fbf7f8</span>;	<span class="comment">//代码背景颜色</span></span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">5px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="代码块样式更改">代码块样式更改</h3>
<p>在<span id="inline-purple">主题配置文件</span>里找到 codeblock
进行修改，代码块主题可到 <a
href="https://theme-next.js.org/highlight/">NexT Highlight Theme
Preview</a> 预览。<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">codeblock:</span></span><br><span class="line">  <span class="comment"># Code Highlight theme</span></span><br><span class="line">  <span class="comment"># All available themes: https://theme-next.js.org/highlight/</span></span><br><span class="line">  <span class="attr">theme:</span></span><br><span class="line">    <span class="attr">light:</span> <span class="string">default</span></span><br><span class="line">    <span class="attr">dark:</span> <span class="string">stackoverflow-dark</span></span><br><span class="line">  <span class="attr">prism:</span></span><br><span class="line">    <span class="attr">light:</span> <span class="string">prism</span></span><br><span class="line">    <span class="attr">dark:</span> <span class="string">prism-dark</span></span><br><span class="line">  <span class="comment"># Add copy button on codeblock</span></span><br><span class="line">  <span class="attr">copy_button:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="comment"># Available values: default | flat | mac</span></span><br><span class="line">    <span class="attr">style:</span> <span class="string">mac</span></span><br></pre></td></tr></table></figure></p>
<h3 id="文章目录默认展开">文章目录默认展开</h3>
<p>如果文章内容是多级目录，默认二级目录是合并的。可更改<span
id="inline-purple">主题配置文件</span>中 toc 的 expand_all 为 true
来让文章目录默认展开。<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">toc:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="comment"># Automatically add list number to toc.</span></span><br><span class="line">  <span class="attr">number:</span> <span class="literal">true</span></span><br><span class="line">  <span class="comment"># If true, all words will placed on next lines if header width longer then sidebar width.</span></span><br><span class="line">  <span class="attr">wrap:</span> <span class="literal">false</span></span><br><span class="line">  <span class="comment"># If true, all level of TOC in a post will be displayed, rather than the activated part of it.</span></span><br><span class="line">  <span class="attr">expand_all:</span> <span class="literal">true</span></span><br><span class="line">  <span class="comment"># Maximum heading depth of generated toc.</span></span><br><span class="line">  <span class="attr">max_depth:</span> <span class="number">6</span></span><br></pre></td></tr></table></figure></p>
<h3 id="更改背板透明度touming">更改背板透明度[^touming]</h3>
<p>在 root/source/_data/styles.styl 里添加如下内容：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="comment">//文章背板透明度</span></span><br><span class="line">.post-block&#123;</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0.9</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="修改标题下文章描述文字的颜色">修改标题下文章描述文字的颜色</h3>
<p>在 root/source/_data/styles.styl 里添加如下内容：<br />
<figure class="highlight styl"><table><tr><td class="code"><pre><span class="line"><span class="selector-class">.posts-expand</span> <span class="selector-class">.post-meta-container</span> &#123;	<span class="comment">//标题下的文字颜色</span></span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#346c9c</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="设置文章永久链接">设置文章永久链接</h3>
<p>这里介绍两种方法：</p>
<ul>
<li>配置自定义 permalink 的属性</li>
<li>使用 hexo-abbrlink 插件生成链接</li>
</ul>
<h4 id="自定义-permalink-属性">自定义 permalink 属性</h4>
<p>1.在<span id="inline-blue">站点配置文件</span>找到
permalink，设置如下：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">permalink:</span> <span class="string">posts/:year:month:day:id.html</span></span><br></pre></td></tr></table></figure> 2.在 md 文件里给文章添加一个 id
属性以区分同一天发表的文章： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: </span><br><span class="line">date: </span><br><span class="line">id: a1</span><br><span class="line">tags: </span><br><span class="line">---</span><br></pre></td></tr></table></figure></p>
<h4 id="使用-hexo-abbrlink-插件">使用 hexo-abbrlink 插件</h4>
<p>1.插件下载：<br />
<code>npm install hexo-abbrlink --save</code><br />
2.在<span id="inline-blue">站点配置文件</span>找到
permalink，设置如下：<br />
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">permalink:</span> <span class="string">posts/abbrlink.html</span></span><br><span class="line"></span><br><span class="line"><span class="attr">abbrlink:</span> </span><br><span class="line">	<span class="attr">alg:</span> <span class="string">crc32</span>	<span class="comment">#算法 crc16(defualt) and crc32</span></span><br><span class="line">	<span class="attr">rep:</span> <span class="string">hex</span>	<span class="comment">#进制 dec(default) and hex</span></span><br></pre></td></tr></table></figure></p>
<h3 id="更改文章底部标签图标">更改文章底部标签图标</h3>
<p>修改<span id="inline-purple">主题配置文件</span>的 tag_icon：
<figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">tag_icon:</span> <span class="string">fa-tag</span></span><br></pre></td></tr></table></figure></p>
<h3 id="使用-mermaid-绘图">使用 mermaid 绘图</h3>
<p>1.安装插件：<br />
<code>npm install hexo-filter-mermaid-diagrams --save</code><br />
2.修改<span id="inline-purple">主题配置文件</span>： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># Mermaid tag</span><br><span class="line">mermaid:</span><br><span class="line">  enable: true</span><br></pre></td></tr></table></figure></p>
<h3 id="其他自定义样式">其他自定义样式</h3>
<p>先在 themes/next/source/css/_custom/custom.styl 中添加以下样式：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">// 下载样式</span><br><span class="line">a#download &#123;</span><br><span class="line">display: inline-block;</span><br><span class="line">padding: 0 10px;</span><br><span class="line">color: #000;</span><br><span class="line">background: transparent;</span><br><span class="line">border: 2px solid #000;</span><br><span class="line">border-radius: 2px;</span><br><span class="line">transition: all .5s ease;</span><br><span class="line">font-weight: bold;</span><br><span class="line">&amp;:hover &#123;</span><br><span class="line">background: #000;</span><br><span class="line">color: #fff;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line">//颜色块-黄</span><br><span class="line">span#inline-yellow &#123;</span><br><span class="line">display:inline;</span><br><span class="line">padding:.2em .6em .3em;</span><br><span class="line">font-size:80%;</span><br><span class="line">font-weight:bold;</span><br><span class="line">line-height:1;</span><br><span class="line">color:#fff;</span><br><span class="line">text-align:center;</span><br><span class="line">white-space:nowrap;</span><br><span class="line">vertical-align:baseline;</span><br><span class="line">border-radius:0;</span><br><span class="line">background-color: #f0ad4e;</span><br><span class="line">&#125;</span><br><span class="line">// 颜色块-绿</span><br><span class="line">span#inline-green &#123;</span><br><span class="line">display:inline;</span><br><span class="line">padding:.2em .6em .3em;</span><br><span class="line">font-size:80%;</span><br><span class="line">font-weight:bold;</span><br><span class="line">line-height:1;</span><br><span class="line">color:#fff;</span><br><span class="line">text-align:center;</span><br><span class="line">white-space:nowrap;</span><br><span class="line">vertical-align:baseline;</span><br><span class="line">border-radius:0;</span><br><span class="line">background-color: #5cb85c;</span><br><span class="line">&#125;</span><br><span class="line">// 颜色块-蓝</span><br><span class="line">span#inline-blue &#123;</span><br><span class="line">display:inline;</span><br><span class="line">padding:.2em .6em .3em;</span><br><span class="line">font-size:80%;</span><br><span class="line">font-weight:bold;</span><br><span class="line">line-height:1;</span><br><span class="line">color:#fff;</span><br><span class="line">text-align:center;</span><br><span class="line">white-space:nowrap;</span><br><span class="line">vertical-align:baseline;</span><br><span class="line">border-radius:0;</span><br><span class="line">background-color: #2780e3;</span><br><span class="line">&#125;</span><br><span class="line">// 颜色块-紫</span><br><span class="line">span#inline-purple &#123;</span><br><span class="line">display:inline;</span><br><span class="line">padding:.2em .6em .3em;</span><br><span class="line">font-size:80%;</span><br><span class="line">font-weight:bold;</span><br><span class="line">line-height:1;</span><br><span class="line">color:#fff;</span><br><span class="line">text-align:center;</span><br><span class="line">white-space:nowrap;</span><br><span class="line">vertical-align:baseline;</span><br><span class="line">border-radius:0;</span><br><span class="line">background-color: #9954bb;</span><br><span class="line">&#125;</span><br><span class="line">// 右侧边框红色块级</span><br><span class="line">p#div-border-right-red &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-right-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-right-color: #df3e3e;</span><br><span class="line">&#125;</span><br><span class="line">// 右侧边框黄色块级</span><br><span class="line">p#div-border-right-yellow &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-right-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-right-color: #f0ad4e;</span><br><span class="line">&#125;</span><br><span class="line">// 右侧边框绿色块级</span><br><span class="line">p#div-border-right-green &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-right-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-right-color: #5cb85c;</span><br><span class="line">&#125;</span><br><span class="line">// 右侧边框蓝色块级</span><br><span class="line">p#div-border-right-blue &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-right-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-right-color: #2780e3;</span><br><span class="line">&#125;</span><br><span class="line">// 右侧边框紫色块级</span><br><span class="line">p#div-border-right-purple &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-right-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-right-color: #9954bb;</span><br><span class="line">&#125;</span><br><span class="line">// 上侧边框红色</span><br><span class="line">p#div-border-top-red &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-top-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-top-color: #df3e3e;</span><br><span class="line">&#125;</span><br><span class="line">// 上侧边框黄色</span><br><span class="line">p#div-border-top-yellow &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-top-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-top-color: #f0ad4e;</span><br><span class="line">&#125;</span><br><span class="line">// 上侧边框绿色</span><br><span class="line">p#div-border-top-green &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-top-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-top-color: #5cb85c;</span><br><span class="line">&#125;</span><br><span class="line">// 上侧边框蓝色</span><br><span class="line">p#div-border-top-blue &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-top-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-top-color: #2780e3;</span><br><span class="line">&#125;</span><br><span class="line">// 上侧边框紫色</span><br><span class="line">p#div-border-top-purple &#123;</span><br><span class="line">display: block;</span><br><span class="line">padding: 10px;</span><br><span class="line">margin: 10px 0;</span><br><span class="line">border: 1px solid #ccc;</span><br><span class="line">border-top-width: 5px;</span><br><span class="line">border-radius: 3px;</span><br><span class="line">border-top-color: #9954bb;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h4 id="文字背景色块">文字背景色块</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;inline-blue&quot;</span>&gt;</span>站点配置文件<span class="tag">&lt;/<span class="name">span</span>&gt;</span>，</span><br><span class="line"><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;inline-purple&quot;</span>&gt;</span>主题配置文件<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br></pre></td></tr></table></figure>
<p><span id="inline-blue">站点配置文件</span>， <span
id="inline-purple">主题配置文件</span></p>
<h4 id="引用边框变色">引用边框变色</h4>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">p</span> <span class="attr">id</span>=<span class="string">&quot;div-border-right-red&quot;</span>&gt;</span>div-border-right-red <span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">p</span> <span class="attr">id</span>=<span class="string">&quot;div-border-top-blue&quot;</span>&gt;</span>div-border-top-blue<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span><br></pre></td></tr></table></figure>
<p id="div-border-right-red">
div-border-right-red
</p>
<p id="div-border-top-blue">
div-border-top-blue
</p>
<h4 id="图形边框效果">图形边框效果</h4>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;a id=&quot;download&quot; href=&quot;https://git-scm.com/download/win&quot;&gt;&lt;i class=&quot;fa fa-download&quot;&gt;&lt;/i&gt;&lt;span&gt; Download Now&lt;/span&gt;</span><br><span class="line">&lt;/a&gt;</span><br></pre></td></tr></table></figure>
<p><a id="download" href="https://git-scm.com/download/win"><i class="fa fa-download"></i><span>
Download Now</span> </a></p>
<h3 id="使用-hexo-next-支持的标签">使用 Hexo &amp; Next 支持的标签</h3>
<p>详见 <a href="https://zcw-blog.top/posts/20220816a1/">Hexo &amp; Next
标签使用说明</a></p>
<h2 id="seo搜索引擎优化">SEO(搜索引擎优化)</h2>
<div class="note info"><p>搜索引擎提交入口：<br />
- <a
href="https://www.google.com/webmasters/tools/home?hl=zh-CN">Google提交入口</a><br />
- <a href="https://ziyuan.baidu.com/linksubmit/url">百度提交入口</a></p>
</div>
<h3 id="google-验证网站">Google 验证网站</h3>
<p>1.打开 <a
href="https://search.google.com/search-console/welcome">Google Search
Console</a>，添加网域资源。<br />
2.通过 TXT 记录验证。 <img
src="https://s2.loli.net/2022/08/17/kAgVSLKsMfqJlPO.png" />
3.按照提示添加解析记录<br />
<img src="https://pic.imgdb.cn/item/6300816d16f2c2beb1b6c7a4.png" />
4.完成验证。 <img
src="https://pic.imgdb.cn/item/6300819b16f2c2beb1b6edf6.png" /></p>
<h3 id="百度验证网站">百度验证网站</h3>
<p>1.登录<a
href="http://zhanzhang.baidu.com/linksubmit/url">百度站长</a>添加网站域名。<br />
2.选择 CNAME 验证。<br />
3.按照提示把地址解析到 ziyuan.baidu.com。<br />
<img src="https://s2.loli.net/2022/08/17/1HnMxEykT76uz8o.png" />
4.完成验证。</p>
<h3 id="添加并提交sitemap">添加并提交sitemap</h3>
<p>1.安装 hexo 的 sitemap 网站地图生成插件： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install hexo-generator-sitemap --save</span><br><span class="line">npm install hexo-generator-baidu-sitemap --save</span><br></pre></td></tr></table></figure>
2.在站点配置文件中添加如下代码： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># hexo sitemap</span><br><span class="line">sitemap:</span><br><span class="line">  path: sitemap.xml</span><br><span class="line"></span><br><span class="line">baidusitemap:</span><br><span class="line">  path: baidusitemap.xml</span><br></pre></td></tr></table></figure> 配置成功后，会生成
sitemap.xml 和 baidusitemap.xml，前者适合提交给谷歌搜素引擎,
后者适合提交百度搜索引擎。<br />
3.提交百度 sitemap，如下： <img
src="https://s2.loli.net/2022/08/17/BhsVvN7L5bd6yAI.png" /> 4.提交
Google sitemap</p>
<h3 id="添加蜘蛛协议">添加蜘蛛协议</h3>
<p>1.在 /source 目录下新建一个 robots.txt 文件，添加代码：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#hexo robots.txt</span><br><span class="line">User-agent: *</span><br><span class="line"></span><br><span class="line">Allow: /</span><br><span class="line">Allow: /archives/</span><br><span class="line">Allow: /about/</span><br><span class="line">Allow: /categories/</span><br><span class="line">Allow: /bookmarks/</span><br><span class="line">Allow: /gallery/</span><br><span class="line"></span><br><span class="line">Disallow: /vendors/</span><br><span class="line">Disallow: /js/</span><br><span class="line">Disallow: /css/</span><br><span class="line">Disallow: /fonts/</span><br><span class="line">Disallow: /vendors/</span><br><span class="line">Disallow: /fancybox/</span><br><span class="line"></span><br><span class="line">Sitemap: http://zcw-blog.top/search.xml</span><br><span class="line">Sitemap: http://zcw-blog.top/sitemap.xml</span><br><span class="line">Sitemap: http://zcw-blog.top/baidusitemap.xml</span><br></pre></td></tr></table></figure> Allow
字段的值即为允许搜索引擎爬取的内容，可以对应到主题配置文件中的 menu
目录配置，如果菜单栏还有其他选项都可以按照格式自行添加。同时还需将
Sitemap 的值改成自己的域名。<br />
2.然后到百度站长更新一下：<br />
<img src="https://s2.loli.net/2022/08/17/so7TkVdXtfUENIc.png" /> 3.在
Google 更新一下</p>
<h3 id="主动推送">主动推送</h3>
<p>1.安装主动推送插件： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install hexo-baidu-url-submit --save</span><br></pre></td></tr></table></figure> 2.在站点配置文件中添加如下代码：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">baidu_url_submit:</span><br><span class="line">  count: 3 ## 比如3, 代表提交最新的三个链接</span><br><span class="line">  host: www.henvyluk.com ## 在百度站长平台中注册的域名</span><br><span class="line">  token: your_token ## 请注意这是您的秘钥, 请不要发布在公众仓库里!</span><br><span class="line">  path: baidu_urls.txt ## 文本文档的地址, 新链接会保存在此文本文档里</span><br></pre></td></tr></table></figure> 3.your_token 可在百度站长如下位置找到 <img
src="https://s2.loli.net/2022/08/17/GkDhedsTFzRt8pr.png" />
4.记得查看站点配置文件中 url 的值，必须是百度站长平台注册的域名，如：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># URL</span><br><span class="line">## Set your site url here. For example, if you use GitHub Page, set url as &#x27;https://username.github.io/project&#x27;</span><br><span class="line">url: https://zcw-blog.top</span><br></pre></td></tr></table></figure> 5.接下来添加一个新的 deploy 的类型 baidu_url_submitter：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># Deployment</span><br><span class="line">## Docs: https://hexo.io/docs/one-command-deployment</span><br><span class="line">deploy:</span><br><span class="line">- type: git</span><br><span class="line">  repository: </span><br><span class="line">    github: git@github.com:reman2021/reman2021.github.io.git,main	#github的仓库地址</span><br><span class="line">    coding: git@e.coding.net:reman/reman/reman.git,master		#coding的仓库地址</span><br><span class="line"> # branch: </span><br><span class="line">    #github: main</span><br><span class="line">   # coding: master</span><br><span class="line">- type: baidu_url_submitter</span><br></pre></td></tr></table></figure> 执行<code>hexo deploy</code>的时候,
新的连接就会被推送了。 <div class="note info"><p>原理：<br />
-
新链接的产生：<code>hexo generate</code>会产生一个文本文件，里面包含最新的链接<br />
-
新链接的提交：<code>hexo deploy</code>会从上述文件中读取链接，提交至百度搜索引擎</p>
</div></p>
<h3 id="自动推送">自动推送</h3>
<p>把主题配置文件中的 baidu_push 设置为 true 即可。</p>
<h3 id="自动给所有外部链接添加-nofollow">自动给所有外部链接添加
nofollow</h3>
<p>1.安装 hexo-autonofollow：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install hexo-autonofollow --save</span><br></pre></td></tr></table></figure> 2.新增以下内容到站点配置文件： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># 外部链接优化</span><br><span class="line">nofollow:</span><br><span class="line">    enable: true</span><br><span class="line">    exclude:     # 例外的链接，可将友情链接放置此处</span><br><span class="line">    - &#x27;yousite&#x27;</span><br></pre></td></tr></table></figure>
<div class="note info"><p>网络爬虫会在当前页面搜索所有的链接，然后一个个查看，所以就很有可能跳到别的网站就不回来了。这个时候就需要
nofollow 起作用了。 nofollow
标签是由谷歌领头创新的一个反垃圾链接的标签，并被百度、yahoo
等各大搜索引擎广泛支持，引用 nofollow
标签的目的是：用于指示搜索引擎不要追踪（即抓取）网页上的带有 nofollow
属性的任何出站链接，以减少垃圾链接的分散网站权重。</p>
</div></p>
<h2 id="参考文章">参考文章</h2>
<p><a href="http://theme-next.iissnan.com/">NexT使用文档</a><br />
<a
href="https://blog.csdn.net/Aoman_Hao/article/details/102906556">Hexo博客Next主题添加粒子时钟特效</a><br />
<a
href="https://www.heson10.com/posts/19246.html">Next7.8主题更换思源宋体</a><br />
<a
href="https://blog.csdn.net/yangguang_98/article/details/105004466">Hexo设置永久链接</a><br />
<a href="https://tding.top/archives/3cdfe265.html">Hexo-NexT
支持简体繁体一键切换</a><br />
<a
href="https://yangbingdong.com/2017/build-blog-hexo-advanced/">基于Hexo搭建个人博客——进阶篇(从入门到入土)</a><br />
<a href="https://www.liaofuzhan.com/posts/2114475547.html"
class="uri">https://www.liaofuzhan.com/posts/2114475547.html</a><br />
<a
href="https://www.cnblogs.com/aoguai/p/11239182.html">2019Hexo博客Next主题深度美化
打造一个炫酷博客(2)</a></p>
<section class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
<li id="fn1"
role="doc-endnote"><p>发光体的颜色模式为“加色模式”，即“RGB模式”，而在网页上要指定一种颜色，就要使用“RGB模式”来确定，方法是分别指定
R/G/B，也就是红/绿/蓝三种基色的强度，通常规定，每一种颜色强度最低为
0，最高为 255，并通常都以 16 进制数值表示，那么 255 对应于十六进制就是
FF，并把三个数值依次并列起来，以 # 开头就是颜色的十六进制代码。<a
href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn2" role="doc-endnote"><p>RSS 需要有一个 Feed
链接，而这个链接需要靠 hexo-generator-feed 插件来生成。<a href="#fnref2"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn3"
role="doc-endnote"><p>简体繁体切换的原理：首先建立一个简体字与繁体字相对应的映射表，然后遍历整个界面，把相应的简体字或者是繁体字映射为对应的字体。<a
href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn4" role="doc-endnote"><p>代码块要放置在 sider-inner 的 div
块中，放在 div 块的位置决定了时钟样式的展示位置。<a href="#fnref4"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
]]></content>
      <categories>
        <category>维护日志</category>
      </categories>
      <tags>
        <tag>搭建博客</tag>
        <tag>NexT</tag>
      </tags>
  </entry>
  <entry>
    <title>Markdown 语法详解及使用技巧</title>
    <url>/posts/20210819a1/</url>
    <content><![CDATA[<div class="note "><p>Markdown
是一种轻量级的标记语言，可用于在纯文本文档中添加格式化元素。Markdown 由
John Gruber 于 2004
年创建，如今已成为世界上最受欢迎的标记语言之一。<br />
本文详细记录了 Markdown 常用语法及使用技巧。</p>
</div>
<span id="more"></span>
<h2 id="markdown简介">Markdown简介</h2>
<p>Markdown
是一种轻量级标记语言，排版语法简洁，让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档，可与
HTML 混编，可导出 HTML、PDF 以及本身的 .md 格式的文件。且 Markdown
的语法十分简单，常用的标记符号不超过十个，用于日常写作记录绰绰有余，不到半小时就能完全掌握。但就是这十个不到的标记符号，却能让人优雅地沉浸式记录，专注内容而不是纠结排版，达到「心中无尘，码字入神」的境界。</p>
<h2 id="markdown基本语法速查表">Markdown基本语法速查表</h2>
<p>这些是 John Gruber 的原始设计文档中列出的元素。所有 Markdown
应用程序都支持这些元素。</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">元素</th>
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">MarkdownPad2快捷键</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">标题（Heading）</td>
<td style="text-align: center;"><code># H</code></td>
<td style="text-align: center;"><code>Ctrl+1</code></td>
</tr>
<tr class="even">
<td style="text-align: center;">粗体（Bold）</td>
<td style="text-align: center;"><code>**bold text**</code></td>
<td style="text-align: center;"><code>Ctrl+B</code></td>
</tr>
<tr class="odd">
<td style="text-align: center;">斜体（Italic）</td>
<td style="text-align: center;"><code>*italicized text*</code></td>
<td style="text-align: center;"><code>Ctrl+I</code></td>
</tr>
<tr class="even">
<td style="text-align: center;">引用块（Blockquote）</td>
<td style="text-align: center;"><code>&gt; blockquote</code></td>
<td style="text-align: center;"><code>Ctrl+Q</code></td>
</tr>
<tr class="odd">
<td style="text-align: center;">有序列表（Ordered List）</td>
<td style="text-align: center;"><code>1. First item</code></td>
<td style="text-align: center;"><code>Ctrl+Shift+O</code></td>
</tr>
<tr class="even">
<td style="text-align: center;">无序列表（Unordered List）</td>
<td style="text-align: center;"><code>- First item</code></td>
<td style="text-align: center;"><code>Ctrl+U</code></td>
</tr>
<tr class="odd">
<td style="text-align: center;">代码（Code）</td>
<td style="text-align: center;"><code>`code`</code></td>
<td style="text-align: center;"><code>Ctrl+K</code></td>
</tr>
<tr class="even">
<td style="text-align: center;">分隔线（Horizontal Rule）</td>
<td style="text-align: center;"><code>---</code></td>
<td style="text-align: center;"><code>Ctrl+R</code></td>
</tr>
<tr class="odd">
<td style="text-align: center;">链接（Link）</td>
<td
style="text-align: center;"><code>[title](https://www.example.com)</code></td>
<td style="text-align: center;"><code>Ctrl+L</code></td>
</tr>
<tr class="even">
<td style="text-align: center;">图片（Image）</td>
<td style="text-align: center;"><code>![alt text](image.jpg)</code></td>
<td style="text-align: center;"><code>Ctrl+G</code></td>
</tr>
</tbody>
</table>
<h2 id="基本语法">基本语法</h2>
<h3 id="标题heading">标题（Heading）</h3>
<p>创建标题：在单词或短语前面添加井号 (#) 。#
的数量代表了标题的级别。例如，添加三个 # 表示创建一个三级标题
(<code>&lt;h3&gt;</code>)： <code>### My Header</code>
<strong>注意用一个空格在 # 和标题之间进行分隔。</strong></p>
<p>标题的Markdown语法与HTML的对应关系如下：</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">HTML</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;"><code># Heading level 1</code></td>
<td
style="text-align: center;"><code>&lt;h1&gt;Heading level 1&lt;/h1&gt;</code></td>
</tr>
<tr class="even">
<td style="text-align: center;"><code>## Heading level 2</code></td>
<td
style="text-align: center;"><code>&lt;h2&gt;Heading level 2&lt;/h2&gt;</code></td>
</tr>
<tr class="odd">
<td style="text-align: center;"><code>### Heading level 3</code></td>
<td
style="text-align: center;"><code>&lt;h3&gt;Heading level 3&lt;/h3&gt;</code></td>
</tr>
</tbody>
</table>
<p>注：最多只能添加六个 # ，即只能到六级标题，无七级标题。</p>
<p>也可以在文本下方添加任意数量的 == 号来标识一级标题，或者 --
号来标识二级标题。<br />
一级标题：<br />
<code>Heading level 1</code> <code>===============</code>
二级标题：<br />
<code>Heading level 2</code> <code>---------------</code></p>
<h3 id="段落paragraph">段落（Paragraph）</h3>
<p>创建段落：使用空白行将一行或多行文本进行分隔。<strong>注意不要用空格（spaces）或制表符（
tabs）缩进段落。</strong><br />
实现效果如下：</p>
<p>I really like using Markdown.</p>
<p>I think I'll use it to format all of my documents from now on</p>
<h3 id="换行line-break">换行（Line Break）</h3>
<p>在一行的末尾添加两个或多个空格，然后按回车键,即可换行(<code>&lt;br&gt;</code>)。<br />
几乎每个 Markdown
应用程序都支持两个或多个空格进行换行，称为<em>结尾空格（trailing
whitespace)</em>
，但因为很难在编辑器中直接看到空格所以颇有争议，且很多人都会有意或无意地在每个句子后面添加两个空格。因此，我们可以使用另一种换行方式：HTML
的<code>&lt;br&gt;</code>标签。<br />
其实还有还有两种其他方式，但是为了确保兼容性，建议就使用行尾添加“结尾空格”或
HTML 的<code>&lt;br&gt;</code>标签的方式来实现换行。</p>
<h3
id="强调语法粗体bold斜体italic">强调语法：粗体（Bold）、斜体（Italic）</h3>
<h4 id="粗体bold">粗体（Bold）</h4>
<p>加粗文本：在单词或短语的前后各添加两个星号（asterisks）或下划线（underscores）。<br />
加粗一个单词或短语的中间部分：在要加粗部分的两侧各添加两个星号（asterisks）。</p>
<p>如下表：</p>
<table>
<colgroup>
<col style="width: 54%" />
<col style="width: 22%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">HTML</th>
<th style="text-align: center;">效果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;"><code>I love **bold text**.</code></td>
<td
style="text-align: center;"><code>I love &lt;strong&gt;bold text&lt;/strong&gt;.</code></td>
<td style="text-align: center;">I love <strong>bold text</strong>.</td>
</tr>
<tr class="even">
<td style="text-align: center;"><code>I love __bold text__ .</code></td>
<td
style="text-align: center;"><code>I love &lt;strong&gt;bold text&lt;/strong&gt;.</code></td>
<td style="text-align: center;">I love <strong>bold text</strong>.</td>
</tr>
<tr class="odd">
<td style="text-align: center;"><code>tobe**or**nottobe</code></td>
<td
style="text-align: center;"><code>tobe&lt;strong&gt;or&lt;/strong&gt;nottobe</code></td>
<td style="text-align: center;">tobe<strong>or</strong>nottobe</td>
</tr>
</tbody>
</table>
<h4 id="斜体italic">斜体（Italic）</h4>
<p>斜体显示文本：在单词或短语前后添加一个星号（asterisk）或下划线（underscore）。<br />
斜体突出单词的中间部分：在字母前后各添加一个星号，中间不要带空格。</p>
<p>如下表：</p>
<table>
<colgroup>
<col style="width: 54%" />
<col style="width: 22%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">HTML</th>
<th style="text-align: center;">效果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td
style="text-align: center;"><code>Italicized text is the *cat's meow*.</code></td>
<td
style="text-align: center;"><code>Italicized text is the &lt;em&gt;cat's meow&lt;/em&gt;.</code></td>
<td style="text-align: center;">Italicized text is the <em>cat's
meow</em>.</td>
</tr>
<tr class="even">
<td
style="text-align: center;"><code>Italicized text is the _cat's meow_.</code></td>
<td
style="text-align: center;"><code>Italicized text is the &lt;em&gt;cat's meow&lt;/em&gt;.</code></td>
<td style="text-align: center;">Italicized text is the <em>cat's
meow</em>.</td>
</tr>
<tr class="odd">
<td style="text-align: center;"><code>*tobe*or*nottobe*</code></td>
<td
style="text-align: center;"><code>&lt;em&gt;tobe&lt;/em&gt;or&lt;em&gt;nottobe&lt;/em&gt;</code></td>
<td style="text-align: center;"><em>tobe</em>or<em>nottobe</em></td>
</tr>
</tbody>
</table>
<h4 id="粗体bold-斜体italic">粗体（Bold）&amp; 斜体（Italic）</h4>
<p>要让文本又粗又斜，只需在单词或短语的前后各添加三个星号或下划线。要加粗并用斜体显示单词或短语的中间部分，则在要突出显示的部分前后各添加三个星号，中间不要带空格。</p>
<p>如下表：</p>
<table>
<colgroup>
<col style="width: 54%" />
<col style="width: 22%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">HTML</th>
<th style="text-align: center;">效果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td
style="text-align: center;"><code>This text is ***really important***.</code></td>
<td
style="text-align: center;"><code>This text is &lt;strong&gt;&lt;em&gt;really important&lt;/em&gt;&lt;/strong&gt;.</code></td>
<td style="text-align: center;">This text is <strong><em>really
important</em></strong>.</td>
</tr>
<tr class="even">
<td
style="text-align: center;"><code>This text is ___really important___.</code></td>
<td
style="text-align: center;"><code>This text is &lt;strong&gt;&lt;em&gt;really important&lt;/em&gt;&lt;/strong&gt;.</code></td>
<td style="text-align: center;">This text is <strong><em>really
important</em></strong>.</td>
</tr>
<tr class="odd">
<td
style="text-align: center;"><code>This text is __*really important*__.</code></td>
<td
style="text-align: center;"><code>This text is &lt;strong&gt;&lt;em&gt;really important&lt;/em&gt;&lt;/strong&gt;.</code></td>
<td style="text-align: center;">This text is <strong><em>really
important</em></strong>.</td>
</tr>
<tr class="even">
<td
style="text-align: center;"><code>This text is **_really important_**.</code></td>
<td
style="text-align: center;"><code>This text is &lt;strong&gt;&lt;em&gt;really important&lt;/em&gt;&lt;/strong&gt;.</code></td>
<td style="text-align: center;">This text is <strong><em>really
important</em></strong>.</td>
</tr>
<tr class="odd">
<td
style="text-align: center;"><code>This text is very***very***important.</code></td>
<td
style="text-align: center;"><code>This text is very&lt;strong&gt;&lt;em&gt;very&lt;/em&gt;&lt;/strong&gt;important.</code></td>
<td style="text-align: center;">This text is
very<strong><em>very</em></strong>important.</td>
</tr>
</tbody>
</table>
<h3 id="引用块blockquote">引用块（Blockquote）</h3>
<h4 id="单段落">单段落</h4>
<p>创建引用块：在段落前添加一个 &gt; 符号。 <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&gt; To be or not to be</span><br><span class="line"></span><br></pre></td></tr></table></figure>
渲染效果如下：</p>
<blockquote>
<p>To be or not to be</p>
</blockquote>
<h4 id="多段落">多段落</h4>
<p>创建多个段落的块引用：除了在段落前添加一个 &gt;
符号，还要在段落之间的空白行添加一个 &gt; 符号<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&gt; &quot;Il n&#x27;ya qu&#x27;un héroïsme au monde : c&#x27;est de voir le monde tel qu&#x27;il est et de l&#x27;aimer.&quot;</span><br><span class="line">&gt; </span><br><span class="line">&gt;  Romain Rolland</span><br></pre></td></tr></table></figure></p>
<p>渲染效果如下：</p>
<blockquote>
<p>"Il n'ya qu'un héroïsme au monde : c'est de voir le monde tel qu'il
est et de l'aimer."</p>
<p>Romain Rolland</p>
</blockquote>
<h4 id="嵌套">嵌套</h4>
<p>引用还可以嵌套：在要嵌套的段落前添加一个 &gt;&gt; 符号即可。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&gt; Romain Rolland</span><br><span class="line">&gt; </span><br><span class="line">&gt;&gt;  &quot;Il n&#x27;ya qu&#x27;un héroïsme au monde : c&#x27;est de voir le monde tel qu&#x27;il est et de l&#x27;aimer.&quot; </span><br></pre></td></tr></table></figure></p>
<p>渲染效果如下：</p>
<blockquote>
<p>Romain Rolland</p>
<blockquote>
<p>"Il n'ya qu'un héroïsme au monde : c'est de voir le monde tel qu'il
est et de l'aimer."</p>
</blockquote>
</blockquote>
<h4 id="带有其它元素的块引用">带有其它元素的块引用</h4>
<p>块引用可以包含其他 Markdown
格式的元素。并非所有元素都能生效，可以自行实验哪些元素有效。<br />
例如： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&gt; #### The quarterly results look great!</span><br><span class="line">&gt;</span><br><span class="line">&gt; - Revenue was off the chart.</span><br><span class="line">&gt; - Profits were higher than ever.</span><br><span class="line">&gt;</span><br><span class="line">&gt;  *Everything* is going according to **plan**.</span><br></pre></td></tr></table></figure></p>
<p>效果如下：</p>
<blockquote>
<h4 id="the-quarterly-results-look-great">The quarterly results look
great!</h4>
<ul>
<li>Revenue was off the chart.</li>
<li>Profits were higher than ever.</li>
</ul>
<p><em>Everything</em> is going according to <strong>plan</strong>.</p>
</blockquote>
<p><strong>注：引用块最好与上下文各隔一个空行</strong></p>
<h3 id="列表list">列表（List）</h3>
<p>列表包括有序列表和无序列表。</p>
<h4 id="有序列表">有序列表</h4>
<p>创建有序列表：在每个列表项前添加数字并紧跟一个英文句点和<strong>空格</strong>。数字无须按数学顺序排列，但是应当以数字
1 起始。<br />
例如下面三个有序列表是等价的： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1. First item</span><br><span class="line">2. Second item</span><br><span class="line">3. Third item</span><br><span class="line">4. Fourth item</span><br></pre></td></tr></table></figure> <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1. First item</span><br><span class="line">8. Second item</span><br><span class="line">3. Third item</span><br><span class="line">5. Fourth item</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1. First item</span><br><span class="line">1. Second item</span><br><span class="line">1. Third item</span><br><span class="line">1. Fourth item</span><br></pre></td></tr></table></figure></p>
<p>效果如下：</p>
<ol type="1">
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
<li>Fourth item</li>
</ol>
<p>有序列表可进行嵌套： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1. First item</span><br><span class="line">2. Second item</span><br><span class="line">3. Third item</span><br><span class="line">    1. Indented item</span><br><span class="line">    2. Indented item</span><br><span class="line">4. Fourth item</span><br></pre></td></tr></table></figure></p>
<p>效果如下：</p>
<ol type="1">
<li>First item</li>
<li>Second item</li>
<li>Third item
<ol type="1">
<li>Indented item</li>
<li>Indented item</li>
</ol></li>
<li>Fourth item</li>
</ol>
<h4 id="无序列表">无序列表</h4>
<p>要创建无序列表，请在每个列表项前面添加破折号 (-)、星号 (*) 或加号 (+)
，同时不要忘记加上空格。<br />
如下三个无序列表也是等价的： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">- First item</span><br><span class="line">- Second item</span><br><span class="line">- Third item</span><br><span class="line">- Fourth item</span><br></pre></td></tr></table></figure> <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">* First item</span><br><span class="line">* Second item</span><br><span class="line">* Third item</span><br><span class="line">* Fourth item</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">+ First item</span><br><span class="line">+ Second item</span><br><span class="line">+ Third item</span><br><span class="line">+ Fourth item</span><br></pre></td></tr></table></figure></p>
<p>效果如下：</p>
<ul>
<li>First item<br />
</li>
<li>Second item<br />
</li>
<li>Third item<br />
</li>
<li>Fourth item</li>
</ul>
<p>无序列表同样可进行嵌套： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">- First item</span><br><span class="line">- Second item</span><br><span class="line">- Third item</span><br><span class="line">    - Indented item</span><br><span class="line">    - Indented item</span><br><span class="line">- Fourth item</span><br></pre></td></tr></table></figure></p>
<p>效果：</p>
<ul>
<li>First item</li>
<li>Second item</li>
<li>Third item
<ul>
<li>Indented item</li>
<li>Indented item</li>
</ul></li>
<li>Fourth item</li>
</ul>
<h4 id="在列表中嵌套其他元素">在列表中嵌套其他元素</h4>
<p>要在保留列表连续性的同时添加其他元素，要将该元素缩进四个空格或一个制表符（Tab），如下所示：</p>
<h5 id="段落">段落</h5>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">*   This is the first list item.</span><br><span class="line">*   Here&#x27;s the second list item.</span><br><span class="line"></span><br><span class="line">    I need to add another paragraph below the second list item.</span><br><span class="line"></span><br><span class="line">*   And here&#x27;s the third list item.</span><br></pre></td></tr></table></figure>
<p>渲染效果如下：</p>
<ul>
<li><p>This is the first list item.</p></li>
<li><p>Here's the second list item.</p>
<p>I need to add another paragraph below the second list item.</p></li>
<li><p>And here's the third list item.</p></li>
</ul>
<h5 id="引用块">引用块</h5>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">*   This is the first list item.</span><br><span class="line">*   Here&#x27;s the second list item.</span><br><span class="line"></span><br><span class="line">    &gt; A blockquote would look great below the second list item.</span><br><span class="line"></span><br><span class="line">*   And here&#x27;s the third list item.</span><br></pre></td></tr></table></figure>
<p>渲染效果如下：</p>
<ul>
<li><p>This is the first list item.</p></li>
<li><p>Here's the second list item.</p>
<blockquote>
<p>A blockquote would look great below the second list item.</p>
</blockquote></li>
<li><p>And here's the third list item.</p></li>
</ul>
<h5 id="代码块">代码块</h5>
<p>代码块通常采用四个空格或一个制表符缩进。当把它们被放入列表中，则要将它们缩进八个空格或两个制表符。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1.  Open the file.</span><br><span class="line">2.  Find the following code block on line 21:</span><br><span class="line"></span><br><span class="line">        &lt;html&gt;</span><br><span class="line">          &lt;head&gt;</span><br><span class="line">            &lt;title&gt;Test&lt;/title&gt;</span><br><span class="line">          &lt;/head&gt;</span><br><span class="line"></span><br><span class="line">3.  Update the title to match the name of your website.</span><br></pre></td></tr></table></figure></p>
<p>渲染效果如下：</p>
<ol type="1">
<li><p>Open the file.</p></li>
<li><p>Find the following code block on line 21:</p>
<pre><code>&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Test&lt;/title&gt;
  &lt;/head&gt;</code></pre></li>
<li><p>Update the title to match the name of your website.</p></li>
</ol>
<h5 id="图片">图片</h5>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1.  Open the file containing the Linux mascot.</span><br><span class="line">2.  Marvel at its beauty.</span><br><span class="line"></span><br><span class="line">    ![](https://fastly.jsdelivr.net/gh/reman2021/ImageHosting@main/zcw-blog-picture/linux.png)</span><br><span class="line"></span><br><span class="line">3.  Close the file.</span><br></pre></td></tr></table></figure>
<p>渲染效果如下：</p>
<ol type="1">
<li>Open the file containing the Linux mascot.</li>
<li>Marvel at its beauty.</li>
</ol>
<p><img
src="https://fastly.jsdelivr.net/gh/reman2021/ImageHosting@main/zcw-blog-picture/linux.png" /></p>
<ol start="3" type="1">
<li>Close the file.</li>
</ol>
<h5 id="列表">列表</h5>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1. First item</span><br><span class="line">2. Second item</span><br><span class="line">3. Third item</span><br><span class="line">    - Indented item</span><br><span class="line">    - Indented item</span><br><span class="line">4. Fourth item</span><br></pre></td></tr></table></figure>
<p>渲染效果如下： 1. First item 2. Second item 3. Third item - Indented
item - Indented item 4. Fourth item</p>
<h3 id="代码">代码</h3>
<p>将代码放在在反引号 (<code>`</code>)
中，如果代码包含一个或多个反引号，则将其包裹在双反引号中：</p>
<table>
<colgroup>
<col style="width: 54%" />
<col style="width: 22%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="header">
<th style="text-align: center;">Markdown语法</th>
<th style="text-align: center;">HTML</th>
<th style="text-align: center;">效果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td
style="text-align: center;"><code>At the command prompt, type `nano`.</code></td>
<td
style="text-align: center;"><code>At the command prompt, type &lt;code&gt;nano&lt;/code&gt;.</code></td>
<td style="text-align: center;">At the command prompt, type
<code>nano</code>.</td>
</tr>
<tr class="even">
<td
style="text-align: center;"><code>``Use `code` in your Markdown file.``</code></td>
<td
style="text-align: center;"><code>&lt;code&gt;Use `code` in your Markdown file.&lt;/code&gt;</code></td>
<td
style="text-align: center;"><code>Use `code` in your Markdown file.</code></td>
</tr>
</tbody>
</table>
<p><strong>代码块</strong><br />
创建代码块：将代码块的每一行缩进至少四个空格或一个制表符，效果如下：</p>
<pre><code>&lt;html&gt;
  &lt;head&gt;
  &lt;/head&gt;
&lt;/html&gt;</code></pre>
<p>个人觉得不如围栏代码块好看，且不用缩进，在拓展语法中会讲到。</p>
<h3 id="分隔线horizontal-rule">分隔线（Horizontal Rule）</h3>
<p>创建分隔线：在单独一行上使用三个及三个以上星号 (***)、破折号 (---)
或下划线 (___) 且不包含其他内容： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">***</span><br><span class="line"></span><br><span class="line">---</span><br><span class="line"></span><br><span class="line">_________________</span><br></pre></td></tr></table></figure></p>
<p>渲染效果：</p>
<hr />
<p><strong>注意在分隔线的前后均添加空白行</strong></p>
<h3 id="链接link">链接（Link）</h3>
<h4 id="超链接">超链接</h4>
<p>超链接Markdown语法：<code>[超链接显示名](超链接地址 "超链接title")</code><br />
对应的HTML代码：<code>&lt;a href="超链接地址" title="超链接title"&gt;超链接显示名&lt;/a&gt;</code><br />
链接title是当鼠标悬停在链接上时会出现的文字，可以自行修改，它放在圆括号中链接地址的后面，跟链接地址之间以空格分隔。<br />
例如： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">我的博客链接：[ZCW_Blog](http://zcw-blog.top &quot;不来看看吗&quot;)</span><br></pre></td></tr></table></figure></p>
<p>渲染效果如下：<br />
我的博客链接：<a href="http://zcw-blog.top"
title="不来看看吗">ZCW_Blog</a></p>
<h4 id="超链接居中">超链接居中</h4>
Markdown 本身并没有居中语法，不过我们可以利用 HTML
语法来实现超链接居中，只需将超链接放在<code>&lt;center&gt;&lt;/center&gt;</code>之间，需要注意的是在
MarkdownPad2
中要将链接与<code>&lt;center&gt;&lt;/center&gt;</code>各隔一个空行，否则链接会失效。<br />
例如： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;center&gt;</span><br><span class="line"></span><br><span class="line">[ZCW_Blog](http://zcw-blog.top &quot;不来看看吗&quot;)</span><br><span class="line"></span><br><span class="line">&lt;/center&gt;</span><br></pre></td></tr></table></figure> 效果如下：
<center>
<p><a href="http://zcw-blog.top" title="不来看看吗">ZCW_Blog</a></p>
</center>
<h4 id="网址和-email-地址">网址和 Email 地址</h4>
<p>使用尖括号可以把 URL 或者 email 地址变成可点击的链接：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;http://zcw-blog.top&gt;</span><br><span class="line">&lt;a@example.com&gt;</span><br></pre></td></tr></table></figure></p>
<h4 id="带格式化的链接">带格式化的链接</h4>
<p>强调链接：在链接语法前后增加星号（*）。<br />
将链接表示为代码：在方括号中添加反引号（`）。 <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">我的博客链接： **[ZCW_Blog](http://zcw-blog.top &quot;不来看看吗&quot;)**</span><br><span class="line">我的博客链接： *[ZCW_Blog](http://zcw-blog.top &quot;不来看看吗&quot;)*</span><br><span class="line">我的博客链接：[`ZCW_Blog`](http://zcw-blog.top &quot;不来看看吗&quot;)</span><br></pre></td></tr></table></figure></p>
<p>渲染效果如下：<br />
我的博客链接： <strong><a href="http://zcw-blog.top"
title="不来看看吗">ZCW_Blog</a></strong><br />
我的博客链接： <em><a href="http://zcw-blog.top"
title="不来看看吗">ZCW_Blog</a></em><br />
我的博客链接：<a href="http://zcw-blog.top"
title="不来看看吗"><code>ZCW_Blog</code></a></p>
<h3 id="引用链接">引用链接</h3>
<p>引用样式链接是一种特殊的链接,作用是使 URL 在 Markdown
中更易于显示和阅读，它分为两个部分：</p>
<p><strong>第一部分</strong></p>
<p>使用两组括号进行格式设置。第一组方括号内显示为链接的文本。第二组括号包含一个标签，该标签用于指向存储在文档其他位置的链接。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">[ZCW_Blog1][1]</span><br><span class="line">[ZCW_Blog2][2]</span><br><span class="line">[ZCW_Blog3][3]</span><br></pre></td></tr></table></figure></p>
<p><strong>第二部分</strong></p>
<p>第二部分使用以下属性设置格式：<br />
1.
放在括号中的标签，其后紧跟一个冒号和至少一个空格（例如[label]:）。<br />
2. 链接的 URL ，可以选择将其括在尖括号中。<br />
3. 链接的可选标题，可以将其括在双引号，单引号或括号中。<br />
如下： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">[1]: http://zcw-blog.top &quot;不来看看吗&quot;</span><br><span class="line">[2]: &lt;http://zcw-blog.top&gt; &#x27;来看看吧&#x27;</span><br><span class="line">[3]: http://zcw-blog.top （快来看！）</span><br></pre></td></tr></table></figure></p>
<p>然后将以上标签放在文章的任意位置，如文末，这样在 Markdown
编辑文章的时候链接的显示就会变得更加简洁。<br />
渲染效果如下： <a href="http://zcw-blog.top"
title="不来看看吗">ZCW_Blog1</a><br />
<a href="http://zcw-blog.top" title="来看看吧">ZCW_Blog2</a><br />
<a href="http://zcw-blog.top" title="快来看！">ZCW_Blog3</a></p>
<h3 id="图片image">图片（Image）</h3>
<p>插入图片 Markdown
语法：<code>![图片alt](图片链接或路径 "图片title")</code><br />
对应的HTML代码：<code>&lt;img src="图片链接或路径" alt="图片alt" title="图片title"&gt;</code><br />
插入图片建议使用图床生成图片链接，再直接复制粘贴即可。<br />
我使用的是 Github + jsDelivr + PicGo 搭建的免费图床，详情可见</p>
<h3 id="转义字符语法">转义字符语法</h3>
<p>如果要显示原本用于格式化 Markdown
文档的字符，请在字符前面添加反斜杠字符 () 。<br />
以下列出的字符都可以通过使用反斜杠字符进行转义：</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">Character</th>
<th style="text-align: center;">Name</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">\</td>
<td style="text-align: center;">backslash</td>
</tr>
<tr class="even">
<td style="text-align: center;">`</td>
<td style="text-align: center;">backtick</td>
</tr>
<tr class="odd">
<td style="text-align: center;">*</td>
<td style="text-align: center;">asterisk</td>
</tr>
<tr class="even">
<td style="text-align: center;">_</td>
<td style="text-align: center;">underscore</td>
</tr>
<tr class="odd">
<td style="text-align: center;">{}</td>
<td style="text-align: center;">curly braces</td>
</tr>
<tr class="even">
<td style="text-align: center;">[]</td>
<td style="text-align: center;">brackets</td>
</tr>
<tr class="odd">
<td style="text-align: center;">()</td>
<td style="text-align: center;">parentheses</td>
</tr>
<tr class="even">
<td style="text-align: center;">#</td>
<td style="text-align: center;">pound sign</td>
</tr>
<tr class="odd">
<td style="text-align: center;">+</td>
<td style="text-align: center;">plus sign</td>
</tr>
<tr class="even">
<td style="text-align: center;">-</td>
<td style="text-align: center;">minus sign (hyphen)</td>
</tr>
<tr class="odd">
<td style="text-align: center;">.</td>
<td style="text-align: center;">dot</td>
</tr>
<tr class="even">
<td style="text-align: center;">!</td>
<td style="text-align: center;">exclamation mark</td>
</tr>
<tr class="odd">
<td style="text-align: center;">|</td>
<td style="text-align: center;">pipe</td>
</tr>
</tbody>
</table>
<p>文章编辑常用的基本语法差不多就以上这些，掌握之后就可以开始创作啦。
如果想了解拓展语法可以接着往下看：</p>
<h2 id="拓展语法">拓展语法</h2>
<p>注意免费版 MarkdownPads2 是不支持拓展语法的，需要升级为
Markdown（Extra），详见<a
href="http://zcw-blog.top/2021/08/17/%E5%9C%A8hexo%E5%8D%9A%E5%AE%A2%E4%B8%8A%E8%BF%9B%E8%A1%8C%E5%88%9B%E4%BD%9C/#more"
title="就在-安装Markdown编辑器-部分哦">在Hexo博客上进行创作</a>。拓展语法没有相应快捷键哦。</p>
<h3 id="表格">表格</h3>
<p>添加表格：使用三个或多个连字符（---）创建每列的标题，并使用管道（|）分隔每列。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">| Syntax      | Description |</span><br><span class="line">| ----------- | ----------- |</span><br><span class="line">| Header      | Title       |</span><br><span class="line">| Paragraph   | Text        |</span><br></pre></td></tr></table></figure></p>
<p>呈现的输出如下所示：</p>
<table>
<thead>
<tr class="header">
<th>Syntax</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Header</td>
<td>Title</td>
</tr>
<tr class="even">
<td>Paragraph</td>
<td>Text</td>
</tr>
</tbody>
</table>
<p>单元格宽度可以变化，但是呈现的输出不变： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">| Syntax | Description |</span><br><span class="line">| --- | ----------- |</span><br><span class="line">| Header | Title |</span><br><span class="line">| Paragraph | Text |</span><br></pre></td></tr></table></figure></p>
<table>
<thead>
<tr class="header">
<th>Syntax</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Header</td>
<td>Title</td>
</tr>
<tr class="even">
<td>Paragraph</td>
<td>Text</td>
</tr>
</tbody>
</table>
<p><em>Tip: 使用连字符和管道创建表可能很麻烦。可以尝试使用<a
href="https://www.tablesgenerator.com/markdown_tables">Markdown Tables
Generator</a>，通过图形界面构建表格，然后将生成的 Markdown
格式的文本复制到文件中。</em></p>
<h4 id="对齐">对齐</h4>
<p>可以通过在标题行中的连字符的左侧，右侧或两侧添加冒号（:），将列中的文本对齐到左侧，右侧或中心。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">| Syntax      | Description | Test Text     |</span><br><span class="line">| :---        |    :----:   |          ---: |</span><br><span class="line">| Header      | Title       | Here&#x27;s this   |</span><br><span class="line">| Paragraph   | Text        | And more      |</span><br></pre></td></tr></table></figure></p>
<p>呈现的输出如下所示：</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Syntax</th>
<th style="text-align: center;">Description</th>
<th style="text-align: right;">Test Text</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Header</td>
<td style="text-align: center;">Title</td>
<td style="text-align: right;">Here's this</td>
</tr>
<tr class="even">
<td style="text-align: left;">Paragraph</td>
<td style="text-align: center;">Text</td>
<td style="text-align: right;">And more</td>
</tr>
</tbody>
</table>
<h4 id="表格中可使用的文本格式">表格中可使用的文本格式</h4>
<p>可以添加链接，代码（仅反引号（`）中的单词或短语，而不是代码块）和强调，但不能添加标题，块引用，列表，水平规则，图像或
HTML 标签。</p>
<h4 id="合并单元格">合并单元格</h4>
<p>Markdown 并没有合并单元格的相关语法，但是 Markdown 是兼容 HTML
的，因此可以通过 HTML 的方式实现单元格合并。相关内容可以参考<a
href="https://blog.csdn.net/qq_32042527/article/details/88084130">Markdown表格合并单元格</a>，于此不再赘述。</p>
<h3 id="围栏代码块">围栏代码块</h3>
<p>创建围栏代码块：在代码块之前和之后的行上使用三个反引号（```）或三个波浪号（~~~）。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">```</span><br><span class="line">	&#123;</span><br><span class="line">	  &quot;firstName&quot;: &quot;John&quot;,</span><br><span class="line">	  &quot;lastName&quot;: &quot;Smith&quot;,</span><br><span class="line">	  &quot;age&quot;: 25</span><br><span class="line">	&#125;</span><br><span class="line">``` </span><br></pre></td></tr></table></figure></p>
<p>呈现的输出如下所示： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;firstName&quot;: &quot;John&quot;,</span><br><span class="line">  &quot;lastName&quot;: &quot;Smith&quot;,</span><br><span class="line">  &quot;age&quot;: 25</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
要在代码块中显示反引号，只需要用更多的反引号包裹就好了，跟套娃一样，例如：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">```` </span><br><span class="line">```</span><br><span class="line">	&#123;</span><br><span class="line">	  &quot;firstName&quot;: &quot;John&quot;,</span><br><span class="line">	  &quot;lastName&quot;: &quot;Smith&quot;,</span><br><span class="line">	  &quot;age&quot;: 25</span><br><span class="line">	&#125;</span><br><span class="line">``` </span><br><span class="line">````</span><br></pre></td></tr></table></figure> 呈现的输出就是这样： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">```</span><br><span class="line">	&#123;</span><br><span class="line">	  &quot;firstName&quot;: &quot;John&quot;,</span><br><span class="line">	  &quot;lastName&quot;: &quot;Smith&quot;,</span><br><span class="line">	  &quot;age&quot;: 25</span><br><span class="line">	&#125;</span><br><span class="line">``` </span><br></pre></td></tr></table></figure></p>
<h4 id="语法高亮">语法高亮</h4>
<p>使用此功能可以为编写代码的任何语言添加颜色突出显示，只要在受防护的代码块之前的反引号旁边指定一种语言即可。
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">``` json</span><br><span class="line">	&#123;</span><br><span class="line">	  &quot;firstName&quot;: &quot;John&quot;,</span><br><span class="line">	  &quot;lastName&quot;: &quot;Smith&quot;,</span><br><span class="line">	  &quot;age&quot;: 25</span><br><span class="line">	&#125;</span><br><span class="line">```</span><br></pre></td></tr></table></figure> 呈现的输出如下所示： <figure class="highlight json"><table><tr><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">&quot;firstName&quot;</span>: <span class="string">&quot;John&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;lastName&quot;</span>: <span class="string">&quot;Smith&quot;</span>,</span><br><span class="line">  <span class="attr">&quot;age&quot;</span>: <span class="number">25</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="脚注">脚注</h3>
<p>脚注可以添加注释和参考。当创建脚注时，点击带有脚注的上标数字可以跳至页面底部的脚注内容。示例如下：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">Here&#x27;s a simple footnote.[^1] </span><br><span class="line"></span><br><span class="line">Here&#x27;s a long footnote.[^bignote]</span><br><span class="line"></span><br><span class="line">And here&#x27;s a reduplicate one.[^bignote]</span><br><span class="line"></span><br><span class="line">[^1]: This is the first footnote.</span><br><span class="line"></span><br><span class="line">[^bignote]: Here&#x27;s one with multiple paragraphs and code.</span><br><span class="line"></span><br><span class="line">    Indent paragraphs to include them in the footnote.</span><br><span class="line"></span><br><span class="line">    `&#123; my code &#125;`</span><br><span class="line"></span><br><span class="line">    Add as many paragraphs as you like.</span><br></pre></td></tr></table></figure> Here's a simple footnote.<a href="#fn1"
class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a></p>
<p>Here's a long footnote.<a href="#fn2" class="footnote-ref"
id="fnref2" role="doc-noteref"><sup>2</sup></a></p>
<p>And here's a reduplicate one.<a href="#fn3" class="footnote-ref"
id="fnref3" role="doc-noteref"><sup>3</sup></a></p>
<h3 id="删除线">删除线</h3>
<p>删除线功能可以指示某些错误。在要删除的词语前后使用两个波浪号（~）即可，如下：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">~~地球是方的。~~地球是圆的。</span><br></pre></td></tr></table></figure> <del>地球是方的。</del>地球是圆的。</p>
<h3 id="任务列表">任务列表</h3>
<p>创建任务列表：在任务列表项之前添加破折号（-）和方括号，注意 - 和 [ ]
之间要加上空格，如下： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">- [x] Write the press release</span><br><span class="line">- [ ] Update the website</span><br><span class="line">- [ ] Contact the media</span><br></pre></td></tr></table></figure></p>
<ul class="task-list">
<li><input type="checkbox" disabled="" checked="" />
Write the press release</li>
<li><input type="checkbox" disabled="" />
Update the website</li>
<li><input type="checkbox" disabled="" />
Contact the media</li>
</ul>
<h3 id="使用-emoji-表情">使用 Emoji 表情</h3>
<p>有两种方法将表情符号添加到 Markdown 文件中：将表情符号复制并粘贴到
Markdown 格式的文本中，或者键入 emoji shortcodes（表情简码）。我在
MarkdownPad2
上使用表情简码没有成功，应该是不支持，所以只能使用复制粘贴的方法。</p>
<h4 id="复制和粘贴表情符号">复制和粘贴表情符号</h4>
<p>大多数情况下可以简单地从 <a
href="https://emojipedia.org/">Emojipedia</a>
等来源复制表情符号并粘贴到文档中。 Markdown 编辑器会自动以 Markdown
格式的文本显示表情符号💡。</p>
<h3 id="自动网址链接">自动网址链接</h3>
<p>MarkdownPad2 会自动将 URL 转换为链接。也就是说如果输入
http://www.example.com ，即使未使用方括号，MarkdownPad2
也会自动将其转换为链接。<br />
如果不希望 MarkdownPad2 自动链接 URL ，则可以通过将 URL
表示为带反引号的代码来删除该链接。</p>
<h2 id="常用技巧">常用技巧</h2>
<p>这里主要是利用 Markdown 支持基本的 HTML
语法的特性，满足一些编辑排版的需要。</p>
<h3 id="居中左对齐右对齐">居中、左对齐、右对齐</h3>
在超链接居中部分已经提及，Markdown 本身并没有居中语法，但我们可以使用
HTML 语法来实现居中、左对齐和右对齐。<br />
示例如下： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;center&gt;居中&lt;/center&gt;</span><br><span class="line">&lt;p align=&quot;left&quot;&gt;左对齐&lt;/p&gt;</span><br><span class="line">&lt;p align=&quot;right&quot;&gt;右对齐&lt;/p&gt;</span><br></pre></td></tr></table></figure> 实现效果：
<center>
居中
</center>
<p align="left">
左对齐
</p>
<p align="right">
右对齐
</p>
<h2 id="高级技巧">高级技巧</h2>
<h3 id="显示数学公式">显示数学公式</h3>
<p>typora 本身支持 mathjax 公式。 MarkdownPad
2中需要自定义头文件,依次点击 Tools &gt; Option &gt; Advanced &gt; HTML
Head Editor ，添加如下代码：<br />
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/x-mathjax-config&quot;</span>&gt;</span><span class="javascript"></span></span><br><span class="line"><span class="javascript">  MathJax.Hub.Config(&#123;</span></span><br><span class="line"><span class="javascript">    <span class="attr">extensions</span>: [<span class="string">&quot;tex2jax.js&quot;</span>],</span></span><br><span class="line"><span class="javascript">    <span class="attr">jax</span>: [<span class="string">&quot;input/TeX&quot;</span>, <span class="string">&quot;output/HTML-CSS&quot;</span>],</span></span><br><span class="line"><span class="javascript">    <span class="attr">tex2jax</span>: &#123;</span></span><br><span class="line"><span class="javascript">      <span class="attr">inlineMath</span>: [ [<span class="string">&#x27;$&#x27;</span>,<span class="string">&#x27;$&#x27;</span>], [<span class="string">&quot;\\(&quot;</span>,<span class="string">&quot;\\)&quot;</span>] ],</span></span><br><span class="line"><span class="javascript">      <span class="attr">displayMath</span>: [ [<span class="string">&#x27;$$&#x27;</span>,<span class="string">&#x27;$$&#x27;</span>], [<span class="string">&quot;\\[&quot;</span>,<span class="string">&quot;\\]&quot;</span>] ],</span></span><br><span class="line"><span class="javascript">      <span class="attr">processEscapes</span>: <span class="literal">true</span></span></span><br><span class="line"><span class="javascript">    &#125;,</span></span><br><span class="line"><span class="javascript">    <span class="string">&quot;HTML-CSS&quot;</span>: &#123; <span class="attr">fonts</span>: [<span class="string">&quot;TeX&quot;</span>] &#125;</span></span><br><span class="line"><span class="javascript">  &#125;);</span></span><br><span class="line"><span class="javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure> 如图 <img
src="https://s2.loli.net/2022/07/19/CPDGkWQcw5z7r6f.png" /> 再在 md
文件里添加如下代码进行测试：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">When $( a \ne 0 )$, there are two solutions to $(ax^2 + bx + c = 0)$ and they are:</span><br><span class="line">$$ x = &#123;-b \pm \sqrt&#123;b^2-4ac&#125; \over 2a&#125; $$</span><br><span class="line">	</span><br><span class="line">$$</span><br><span class="line">\begin&#123;aligned&#125;</span><br><span class="line">\dot&#123;x&#125; &amp; = \sigma(y-x) \\</span><br><span class="line">\dot&#123;y&#125; &amp; = \rho x - y - xz \\</span><br><span class="line">\dot&#123;z&#125; &amp; = -\beta z + xy</span><br><span class="line">\end&#123;aligned&#125;</span><br><span class="line">$$</span><br><span class="line"></span><br></pre></td></tr></table></figure> 按F6查看结果如下： <img
src="https://s2.loli.net/2022/07/19/PuOYtDEXQV1Gqyx.png" /><br />
注：假如要让 Hexo 渲染 mathjax 数学公式，还需更换渲染器，详见<a
href="http://zcw-blog.top/posts/20220424a1/#%E6%B8%B2%E6%9F%93-mathjax">这里</a>。</p>
<h3 id="mermaid-绘图">mermaid 绘图</h3>
<p>typora 默认支持 mermaid 语法。</p>
<h4 id="mermaid-语法">mermaid 语法</h4>
<h5 id="饼状图">饼状图</h5>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;pre class=&quot;mermaid&quot;&gt;pie</span><br><span class="line">	title 如果没有报销是否还会坚持参加科创比赛</span><br><span class="line">	&quot;会&quot; : 5</span><br><span class="line">	&quot;不会&quot; : 95&lt;/pre&gt;</span><br></pre></td></tr></table></figure>
<pre class="mermaid">pie
    title 如果没有报销是否还会坚持参加科创比赛
    "会" : 5
    "不会" : 95</pre>
<hr />
<p>自此，有关 Markdown
语法的学习就暂时告一段落啦，现在就将所学用于实践，去编辑你的第一个
Markdown 文件吧。你也可以在<a
href="https://markdown.com.cn/editor/">Markdown
在线编辑器</a>上小试牛刀。<br />
如果要让你的 Markdown
文件更加易读，改善你的排版，让你的网页更有气质，可以学习 Markdown
的一些编写规范：<a
href="https://github.com/sparanoid/chinese-copywriting-guidelines">Markdown
编写规范</a></p>
<h2 id="参考文章">参考文章</h2>
<p><a href="https://markdown.com.cn/">Markdown 语法教程</a><br />
<a
href="https://pinlyu.com/post/30/#5-%E6%8F%90%E7%A4%BA%E5%8D%A1%E7%89%87">个人主页与
Hexo 博客搭建记录-提示卡片</a></p>
<section class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
<li id="fn1" role="doc-endnote"><p>This is the first footnote.<a
href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn2" role="doc-endnote"><p>Here's one with multiple paragraphs
and code.</p>
<p>Indent paragraphs to include them in the footnote.</p>
<p><code>&#123; my code &#125;</code></p>
<p>Add as many paragraphs as you like.<a href="#fnref2"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn3" role="doc-endnote"><p>Here's one with multiple paragraphs
and code.</p>
<p>Indent paragraphs to include them in the footnote.</p>
<p><code>&#123; my code &#125;</code></p>
<p>Add as many paragraphs as you like.<a href="#fnref3"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
]]></content>
      <categories>
        <category>学习笔记</category>
        <category>Markdown</category>
      </categories>
      <tags>
        <tag>Markdown</tag>
      </tags>
  </entry>
  <entry>
    <title>ROS 学习记录1</title>
    <url>/posts/20220728a1/</url>
    <content><![CDATA[<div class="note "><p>记录 ROS 学习过程 Part1。<br />
主要内容：ROS 安装。</p>
</div>
<span id="more"></span>
<h2 id="学习参考课程">学习参考课程</h2>
<p><a
href="https://www.bilibili.com/video/BV1zt411G7Vn?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click&amp;vd_source=2986b70c538b1a31836b82311d90b18a">【古月居】古月·ROS入门21讲
| 一学就会的ROS机器人入门教程</a><br />
<strong>强烈推荐</strong>：<a
href="https://www.bilibili.com/video/BV1Ci4y1L7ZZ?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&amp;vd_source=2986b70c538b1a31836b82311d90b18a">【Autolabor初级教程】ROS机器人入门</a></p>
<h2 id="ros-安装">ROS 安装</h2>
<p>Linux 系统版本：Ubuntu 20.04.1，ROS 版本为 ROS1 的终极版本:
noetic，支持 Python3。<br />
<img src="https://s2.loli.net/2022/07/28/3H8dPUoR26BNWmi.png" /></p>
<h3 id="配置ubuntu的软件和更新">配置ubuntu的软件和更新</h3>
<p>打开“软件和更新”对话框，确保勾选了"restricted"， "universe"， 和
"multiverse"。</p>
<h3 id="设置安装源">设置安装源</h3>
<p>官方安装源：<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo sh -c &#x27;echo &quot;deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main&quot; &gt; /etc/apt/sources.list.d/ros-latest.list&#x27;</span><br></pre></td></tr></table></figure> 国内清华镜像：<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo sh -c &#x27;. /etc/lsb-release &amp;&amp; echo &quot;deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main&quot; &gt; /etc/apt/sources.list.d/ros-latest.list&#x27;</span><br></pre></td></tr></table></figure> 国内中科大镜像： <figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo sh -c &#x27;. /etc/lsb-release &amp;&amp; echo &quot;deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main&quot; &gt; /etc/apt/sources.list.d/ros-latest.list&#x27;</span><br></pre></td></tr></table></figure></p>
<h3 id="设置-key">设置 key</h3>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo apt-key adv --keyserver &#x27;hkp://keyserver.ubuntu.com:80&#x27; --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654</span><br></pre></td></tr></table></figure>
<h3 id="安装">安装</h3>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo apt update		#更新 apt</span><br><span class="line">sudo apt install ros-noetic-desktop-full	#安装 Desktop-Full</span><br></pre></td></tr></table></figure>
<h4
id="出现n-忽略ros-latest.listsudo于目录etcaptsources.list.d鉴于它的文件扩展名无效">出现“N:
忽略‘ros-latest.listsudo’(于目录‘/etc/apt/sources.list.d/’)，鉴于它的文件扩展名无效”</h4>
<p>解决方法： <figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo rm -f /etc/apt/sources.list.d/ros-latest.listsudo</span><br></pre></td></tr></table></figure></p>
<h4 id="终端配置代理">终端配置代理</h4>
<p>我在系统中设置了代理，于是直接使用官方源，结果不管怎么 update
和install 都因为连接超时卡在了
96%。于是我直接访问对应网址，轻松连上，便考虑是否是终端未代理的问题。<br />
搜了一下，确实如此：SS/Clash 等一般是 web
代理，终端无法使用，需要单独配置代理。<br />
方法如下： <figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo gedit ~/.bashrc		#编辑 .bashrc 文件</span><br></pre></td></tr></table></figure> 在最后加上： <figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">alias proxy-on=&#x27;export http_proxy=127.0.0.1:7890;export https_proxy=$http_proxy&#x27;</span><br><span class="line">alias proxy-off=&#x27;unset http_proxy;unset https_proxy&#x27; </span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/28/ybUAM4NdRt9mSwr.png" />
保存退出后执行下面命令使文件生效：<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">source ~/.bashrc</span><br></pre></td></tr></table></figure>
现在使用命令<code>proxy-on</code>和<code>proxy-off</code>便可开关代理。</p>
<div class="note info"><p>该命令只在当前终端生效，重新打开终端需要重新执行 proxy-on。</p>
</div>
<p>使用<code>curl -L www.google.com</code>可以检查代理是否开启，从下图可看出，我们本次请求网站页面成功返回了谷歌起始页的
HTML 代码。<br />
也可以使用<code>curl cip.cc</code>查看 IP 来检查。<br />
<img src="https://s2.loli.net/2022/07/29/67KpCwHzgj1aRXd.png" /></p>
<div class="note info"><p>访问 google.com 时会自动将地址重定向到
google.com.hk，故执行<code>curl www.google.com</code>会出现 302 Moved
提示。</p>
</div>
<h4 id="apt-配置代理">apt 配置代理</h4>
<p>终端配置代理后，还是卡在了 96%。<br />
查找发现 export 中 http_proxy 和 https_proxy 方式只是修改终端中的 http
与 https 的代理方式，而 apt install 有自己独立的配置文件，配置终端代理后
apt 也是直接连接。 所以要进行 apt 代理配置：<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo touch /etc/apt/apt.conf.d/proxy.conf	#创建新的配置文件 proxy.conf</span><br></pre></td></tr></table></figure> 在 proxy.conf 文件里添加：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">Acquire &#123;</span><br><span class="line">  HTTP::proxy &quot;http://127.0.0.1:7890&quot;;</span><br><span class="line">  HTTPS::proxy &quot;http://127.0.0.1:7890&quot;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> 记得将 7890 改为自己的端口。<br />
<img src="https://s2.loli.net/2022/07/29/uqUaGJQL5BgXK84.png" />
保存关闭后重新 apt install，顺利下载安装完成。<br />
<img src="https://s2.loli.net/2022/07/29/JqWxSpHofRUFuVZ.png" /></p>
<h3 id="配置环境变量">配置环境变量</h3>
<p>配置环境变量，方便在任意终端中使用 ROS。<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">echo &quot;source /opt/ros/noetic/setup.bash&quot; &gt;&gt; ~/.bashrc</span><br><span class="line">source ~/.bashrc</span><br></pre></td></tr></table></figure> 至此便可运行<code>roscore</code>进行测试。</p>
<h3 id="安装构建依赖">安装构建依赖</h3>
<p>noetic
最初发布时，和其他历史版本稍有差异的是:没有安装构建依赖这一步骤。随着
noetic 不断完善，官方补齐了这一操作。<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash">安装构建依赖的相关工具</span></span><br><span class="line">sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential</span><br><span class="line">sudo apt install python3-rosdep</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="bash">初始化 rosdep</span></span><br><span class="line">sudo rosdep init</span><br><span class="line">rosdep update</span><br></pre></td></tr></table></figure></p>
<h4 id="rosdep-init-时出现-website-may-be-down">rosdep init 时出现
Website may be down</h4>
<p><a
href="https://ping.chinaz.com/raw.githubusercontent.com">点此</a>找到
raw.githubusercontent.com 对应 IP。<br />
接下来修改 hosts 文件：<br />
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo gedit /etc/hosts</span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">#</span><span class="bash">添加如下内容</span></span><br><span class="line">185.199.108.133 raw.githubusercontent.com</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/29/Yfa87V1inDFlBtq.png" />
重新执行<code>rosdep init</code>即可。<br />
执行成功：<br />
<img src="https://s2.loli.net/2022/07/29/GtfWnew8HdsuMXP.png" /> <img
src="https://s2.loli.net/2022/07/29/jgaKLenRwI6oxPd.png" /></p>
<h2 id="参考文章">参考文章</h2>
<p><a href="http://wiki.ros.org/noetic/Installation/Ubuntu">Ubuntu
install of ROS Noetic</a><br />
<a
href="http://www.autolabor.com.cn/book/ROSTutorials/">【Autolabor初级教程】ROS机器人入门课程文档</a><br />
<a
href="https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-set-the-proxy-for-apt-for-ubuntu-18-04/">How
to Set the Proxy for APT on Ubuntu 18.04</a><br />
<a
href="https://juejin.cn/post/7070003235934715940">Terminal（终端）使用代理进行连接</a><br />
<a
href="https://blog.csdn.net/tjy199610_10/article/details/120621676">最详细的ros安装（包含所有相关依赖文件）</a></p>
]]></content>
      <categories>
        <category>学习笔记</category>
        <category>ROS</category>
      </categories>
      <tags>
        <tag>ROS</tag>
      </tags>
  </entry>
  <entry>
    <title>ROS 学习记录2</title>
    <url>/posts/20220731a1/</url>
    <content><![CDATA[<div class="note "><p>记录 ROS 学习过程 Part2。<br />
主要内容：ROS 测试、快速体验、开发环境搭建、架构认识。</p>
</div>
<span id="more"></span>
<h2 id="测试-ros">测试 ROS</h2>
<p>开启三个终端，分别运行： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">roscore</span><br><span class="line">rosrun turtlesim turtlesim_node		#运行后弹出图形化界面</span><br><span class="line">rosrun turtlesim turtle_teleop_key	#运行后可以通过方向键控制海龟的运动</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/31/vd9mzgxcJNfYUkr.png" /></p>
<h2 id="创建工作空间及初始化">创建工作空间及初始化</h2>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#创建工作空间并初始化</span><br><span class="line">mkdir -p 自定义空间名称/src</span><br><span class="line">cd 自定义空间名称</span><br><span class="line">catkin_make</span><br><span class="line"></span><br><span class="line">#进入 src 创建 ros 包并添加依赖</span><br><span class="line">cd src</span><br><span class="line">catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs</span><br></pre></td></tr></table></figure>
<h2 id="helloworld-的-cpython-实现">HelloWorld 的 C++/Python 实现</h2>
<h3 id="c-实现">C++ 实现</h3>
<p>1、创建 ROS 工作空间 <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#创建工作空间 demo01 并初始化</span><br><span class="line">mkdir -p demo01/src</span><br><span class="line">cd demo01</span><br><span class="line">catkin_make</span><br><span class="line"></span><br><span class="line">#进入 src 创建 名为 helloworld 的 ros 包并添加依赖</span><br><span class="line">cd src</span><br><span class="line">catkin_create_pkg helloworld roscpp rospy std_msgs</span><br><span class="line"></span><br><span class="line">#进入创建的 ros 包</span><br><span class="line">cd helloworld</span><br><span class="line"></span><br><span class="line">#创建 helloworld_c.cpp</span><br><span class="line">gedit helloworld_c.cpp</span><br></pre></td></tr></table></figure> 2、编辑 cpp 文件：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#include &quot;ros/ros.h&quot;</span><br><span class="line"></span><br><span class="line">int main(int argc, char *argv[])</span><br><span class="line">&#123;</span><br><span class="line">    //执行 ros 节点初始化</span><br><span class="line">    ros::init(argc,argv,&quot;hello&quot;);</span><br><span class="line">    //创建 ros 节点句柄</span><br><span class="line">    ros::NodeHandle n;</span><br><span class="line">    //控制台输出 hello world</span><br><span class="line">    ROS_INFO(&quot;hello world!&quot;);</span><br><span class="line"></span><br><span class="line">    return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> 3、编辑 helloworld 包下的 Cmakelist.txt 文件<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">add_executable(任取节点名</span><br><span class="line">  src/helloworld_c.cpp</span><br><span class="line">)</span><br><span class="line">target_link_libraries(任取节点名</span><br><span class="line">  $&#123;catkin_LIBRARIES&#125;</span><br><span class="line">)</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/LYAtxeNwcy3KpEU.png" /> 4、编译
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#进入工作空间</span><br><span class="line">cd demo01</span><br><span class="line">#编译</span><br><span class="line">catkin_make</span><br></pre></td></tr></table></figure> 编译成功： <img
src="https://s2.loli.net/2022/08/04/VsPtDkCfbmodKLi.png" /> 5、执行
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#在终端 1 执行</span><br><span class="line">roscore</span><br><span class="line"></span><br><span class="line">#在终端 2 执行</span><br><span class="line">#进入工作空间</span><br><span class="line">cd demo01</span><br><span class="line">#刷新环境变量</span><br><span class="line">source ./devel/setup.bash</span><br><span class="line">#rosrun 包名 节点名</span><br><span class="line">rosrun helloworld hellow_node</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/UrDkCiqh9u4vAGR.png" />
<div class="note info"><p>如果没有执行<code>source ./devel/setup.bash</code>在当前终端刷新环境变量，则会报错，另开一个终端也要再执行一次。<br />
<img src="https://s2.loli.net/2022/08/04/9zmVsfr7YwKQ3yg.png" />
若嫌太麻烦，可以执行<code>echo "source ~/工作空间名/devel/setup.bash" &gt;&gt; ~/.bashrc</code>，之后就不用每次打开都执行一次。</p>
</div></p>
<h3 id="python-实现">Python 实现</h3>
<p>1、创建 py 文件<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#进入 helloworld 功能包</span><br><span class="line">cd demo01/src/helloworld</span><br><span class="line">#创建 scripts 文件夹</span><br><span class="line">mkdir scripts</span><br><span class="line">#进入 scripts 文件夹</span><br><span class="line">cd ./scripts</span><br><span class="line">#创建 py 文件</span><br><span class="line">gedit hw_py.py</span><br></pre></td></tr></table></figure> 2、编辑 py 文件<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#! /usr/bin/env python</span><br><span class="line">#导入 rospy 包</span><br><span class="line">import rospy</span><br><span class="line">#编写主入口</span><br><span class="line">if __name__ == &quot;__main__&quot;:</span><br><span class="line">	#初始化 ros 节点</span><br><span class="line">    rospy.init_node(&quot;hello_py&quot;)</span><br><span class="line">	#输出日志</span><br><span class="line">    rospy.loginfo(&quot;hello world! by python&quot;)</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/Lf5hdrOG4waDBSF.png" /> 3、为 python
文件添加可执行权限<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">chmod +x hw_py.py</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/gXEufcCbhNdpjIT.png" /> 4、编辑
helloworld 下的 CamkeList.txt 文件<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">catkin_install_python(PROGRAMS scripts/hw_py.py</span><br><span class="line">  DESTINATION $&#123;CATKIN_PACKAGE_BIN_DESTINATION&#125;</span><br><span class="line">)</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/GqkamehDbtMy2Ac.png" />
5、编译<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#进入工作空间</span><br><span class="line">cd demo01</span><br><span class="line">#编译</span><br><span class="line">catkin_make</span><br></pre></td></tr></table></figure> 6、执行<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#在终端 1 执行</span><br><span class="line">roscore</span><br><span class="line"></span><br><span class="line">#在终端 2 执行</span><br><span class="line">#进入工作空间</span><br><span class="line">cd demo01</span><br><span class="line">#刷新环境变量</span><br><span class="line">source ./devel/setup.bash</span><br><span class="line">#rosrun 包名 py 文件名</span><br><span class="line">rosrun helloworld hw_py.py</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/04/QgXBErxh6e4ZbtD.png" /></p>
<h2 id="安装并使用-vscode">安装并使用 VScode</h2>
<h3 id="下载安装包">下载安装包</h3>
<p>下载地址：<a href="https://code.visualstudio.com/docs?start=true"
class="uri">https://code.visualstudio.com/docs?start=true</a><br />
历史版本下载：<a href="https://code.visualstudio.com/updates"
class="uri">https://code.visualstudio.com/updates</a><br />
<img src="https://s2.loli.net/2022/08/04/pEJ6UgYwBx928iR.png" /></p>
<h3 id="安装">安装</h3>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#在下载目录打开终端，执行</span><br><span class="line">sudo dpkg -i xxxx.deb</span><br></pre></td></tr></table></figure>
<p><img src="https://s2.loli.net/2022/08/04/r2yRB4hIEwjNDkK.png" /></p>
<h3 id="卸载">卸载</h3>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo dpkg --purge  code</span><br></pre></td></tr></table></figure>
<h3 id="添加插件">添加插件</h3>
<p>在插件里搜索并下载 C/C++、CMake Tools、Python、ROS。<br />
<img src="https://s2.loli.net/2022/08/05/Iuiypt8q5jFCL7Y.png" /></p>
<h3 id="vscode-基本使用">vscode 基本使用</h3>
<p>1、创建 ROS 工作空间并启动 vscode<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#创建工作空间 demo02 并初始化</span><br><span class="line">mkdir -p demo02/src</span><br><span class="line">cd demo02</span><br><span class="line">catkin_make</span><br><span class="line"></span><br><span class="line">#启动 vscode</span><br><span class="line">code .</span><br></pre></td></tr></table></figure> 2、配置默认编译选项<br />
快捷键：Ctrl + Shift + B，选择 catkin_make:build 的设置选项，进入
.vscode/tasks.json 文件。<br />
<img src="https://s2.loli.net/2022/08/05/bQv5RXesH6LxINd.png" /> <img
src="https://s2.loli.net/2022/08/05/Cz9Tnpbdcq7oEIV.png" />
将文件内容修改如下：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;</span><br><span class="line">    &quot;version&quot;: &quot;2.0.0&quot;,</span><br><span class="line">    &quot;tasks&quot;: [</span><br><span class="line">        &#123;</span><br><span class="line">            &quot;label&quot;: &quot;catkin_make:debug&quot;, //代表提示的描述性信息</span><br><span class="line">            &quot;type&quot;: &quot;shell&quot;,  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令，如果是process代表作为一个进程来运行</span><br><span class="line">            &quot;command&quot;: &quot;catkin_make&quot;,//这个是我们需要运行的命令</span><br><span class="line">            &quot;args&quot;: [],//如果需要在命令后面加一些后缀，可以写在这里，比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”</span><br><span class="line">            &quot;group&quot;: &#123;&quot;kind&quot;:&quot;build&quot;,&quot;isDefault&quot;:true&#125;,</span><br><span class="line">            &quot;presentation&quot;: &#123;</span><br><span class="line">                &quot;reveal&quot;: &quot;always&quot;//可选always或者silence，代表是否输出信息</span><br><span class="line">            &#125;,</span><br><span class="line">            &quot;problemMatcher&quot;: &quot;$msCompile&quot;</span><br><span class="line">        &#125;</span><br><span class="line">    ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/08/05/priIPRXJo7q9zmW.png" />
之后使用快捷键 Ctrl + Shift + B 即默认使用 catkin_make:build
进行编译。<br />
3、创建 ROS 功能包<br />
右键 src，选择 create catkin package，然后依次设置包名、添加依赖。<br />
<img src="https://s2.loli.net/2022/08/05/dze24Qp1HjNfaSO.png" /> <img
src="https://s2.loli.net/2022/08/05/DRPNVquGb2hgAJ8.png" /> 4、C++
源文件<br />
在<strong>功能包</strong>的 src 下创建 cpp 文件。<br />
<img src="https://s2.loli.net/2022/08/05/E3jqZQgRPVwGKm2.png" /> 编写
C++ 源文件： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#include &quot;ros/ros.h&quot;</span><br><span class="line"></span><br><span class="line">int main(int argc, char *argv[])</span><br><span class="line">&#123;</span><br><span class="line">    ros::init(argc,argv,&quot;hello&quot;);</span><br><span class="line">    ROS_INFO(&quot;hello&quot;);</span><br><span class="line">	</span><br><span class="line">    return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <div class="note info"><p><i class="fa fa-circle" aria-hidden="true"></i>如果没有代码提示，则修改
.vscode/c_cpp_properties.json 中 cppStandard 的值为 c++17。<br />
<img src="https://s2.loli.net/2022/08/05/IcGZeUvTH4YARir.png" />
<i class="fa fa-circle" aria-hidden="true"></i>当ROS_INFO
终端输出有中文时，会出现乱码，解决办法为在函数开头加入下面的任意一句代码。<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">setlocale(LC_CTYPE, &quot;zh_CN.utf8&quot;);</span><br><span class="line">setlocale(LC_ALL, &quot;&quot;);</span><br></pre></td></tr></table></figure></p>
</div> 5、py 文件<br />
在<strong>功能包</strong>下新建 scripts 文件夹，添加 py
文件，并添加可执行权限。<br />
<img src="https://s2.loli.net/2022/08/05/kS5TbaosRIGLQ3A.png" /></p>
<p>编写 py 文件： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">#! /usr/bin/env python</span><br><span class="line"></span><br><span class="line">import rospy</span><br><span class="line"></span><br><span class="line">if __name__ == &quot;__main__&quot;:</span><br><span class="line"></span><br><span class="line">    rospy.init_node(&quot;hello&quot;)</span><br><span class="line">    rospy.loginfo(&quot;hello vscode by python&quot;)</span><br></pre></td></tr></table></figure> 6、配置 CMakeLists.txt<br />
C++ 配置:<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">add_executable(节点名称</span><br><span class="line">  src/C++源文件名.cpp</span><br><span class="line">)</span><br><span class="line">target_link_libraries(节点名称</span><br><span class="line">  $&#123;catkin_LIBRARIES&#125;</span><br><span class="line">)</span><br></pre></td></tr></table></figure> Python 配置:<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">catkin_install_python(PROGRAMS scripts/py文件名.py</span><br><span class="line">  DESTINATION $&#123;CATKIN_PACKAGE_BIN_DESTINATION&#125;</span><br><span class="line">)</span><br></pre></td></tr></table></figure> 7、编译执行<br />
编译：Ctrl + Shift + B。<br />
<img src="https://s2.loli.net/2022/08/05/lALT5QJvbVPjcs9.png" /> <img
src="https://s2.loli.net/2022/08/05/aVphjCtLmxRdwDJ.png" /> 执行：可以在
VScode 中添加终端，命令与之前一致。<br />
<img src="https://s2.loli.net/2022/08/05/5tgroTYdFfynGlk.png" /> <img
src="https://s2.loli.net/2022/08/05/1HxpgAyMPwYehu6.png" /> <img
src="https://s2.loli.net/2022/08/05/pkGVR9fvoqTHiZU.png" /></p>
<h2 id="参考">参考</h2>
<p><a
href="http://www.autolabor.com.cn/book/ROSTutorials/">【Autolabor初级教程】ROS机器人入门课程文档</a></p>
]]></content>
      <categories>
        <category>学习笔记</category>
        <category>ROS</category>
      </categories>
      <tags>
        <tag>ROS</tag>
      </tags>
  </entry>
  <entry>
    <title>Ubuntu 优化</title>
    <url>/posts/20220801a1/</url>
    <content><![CDATA[<div class="note "><p>Ubuntu 使用优化（20.04.1）。</p>
</div>
<span id="more"></span>
<h2 id="模板-template">模板| Template</h2>
<p>Ubuntu 20.04 鼠标右击没有新建文本文档选项。进入/home
下的模板（Template）目录，使用<code>sudo gedit 新建文本文档.txt</code>创建一个空文本文档，保存退出后，鼠标右击即可添加新建文本文档，且创建的文档与自定义的文档名称一致。</p>
<h2 id="解决-firefox-无法播放-bilibili-视频">解决 Firefox 无法播放
bilibili 视频</h2>
<p>在 Firefox 打开 bilibili 发现无法播放视频，显示没有 flash
插件。<br />
在终端输入<code>sudo apt install ubuntu-restricted-extras</code>安装相应解码器即可。<br />
中间需要选择“确定”，按 Tab 即可选择。<br />
<img src="https://s2.loli.net/2022/08/05/PmJx1ducGlgkTOh.png" />
安装成功：<br />
<img src="https://s2.loli.net/2022/08/05/J6G4AkMDqjTmdKC.png" />
再次使用 Firefox 打开 bilibili 已经可以播放视频了。</p>
<h2 id="蓝牙配置">蓝牙配置</h2>
<p>检查蓝牙服务是否正在运行：<br />
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">sudo systemctl status bluetooth.service</span><br></pre></td></tr></table></figure> 启用蓝牙服务：<br />
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">sudo systemctl <span class="built_in">enable</span> bluetooth.service</span><br></pre></td></tr></table></figure> 使用 systemctl 重新启动该服务：<br />
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">sudo systemctl start bluetooth.service</span><br></pre></td></tr></table></figure> 编辑配置文件：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo gedit /etc/bluetooth/main.conf</span><br></pre></td></tr></table></figure>
<strong>自动启用</strong>：自动启用可确保在设备重启时启用蓝牙模块，并允许蓝牙适配器识别周围新连接的蓝牙设备。<br />
<img src="https://s2.loli.net/2022/08/09/PmRaYzTNSlB1QtI.png" />
<strong>启用重新连接尝试</strong>：配置后每当蓝牙设备和计算机断开连接时，它都会尝试重新连接。只需取消注释配置文件中的
ReconnectAttempts = 7 行。<br />
<img src="https://s2.loli.net/2022/08/09/xsTJODdfFGMn6uw.png" />
<strong>启用快速连接</strong>：通过将 FastConnectable 的值设置为
true，可以确保在重启或休眠时，蓝牙设备能够更快地连接到 PC。<br />
<img src="https://s2.loli.net/2022/08/09/2RoOpZ4y9IgkneP.png" /></p>
<h2 id="终端工具">终端工具</h2>
<h3 id="terminator-终端模拟器">Terminator 终端模拟器</h3>
<p>下载：<code>sudo apt install terminator</code></p>
<h4 id="快捷键">快捷键</h4>
<p>同一窗口内操作： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">Alt+Up                          //移动到上面的终端</span><br><span class="line">Alt+Down                        //移动到下面的终端</span><br><span class="line">Alt+Left                        //移动到左边的终端</span><br><span class="line">Alt+Right                       //移动到右边的终端</span><br><span class="line">Ctrl+Shift+O                    //水平分割终端</span><br><span class="line">Ctrl+Shift+E                    //垂直分割终端</span><br><span class="line">Ctrl+Shift+Right                //在垂直分割的终端中将分割条向右移动</span><br><span class="line">Ctrl+Shift+Left                 //在垂直分割的终端中将分割条向左移动</span><br><span class="line">Ctrl+Shift+Up                   //在水平分割的终端中将分割条向上移动</span><br><span class="line">Ctrl+Shift+Down                 //在水平分割的终端中将分割条向下移动</span><br><span class="line">Ctrl+Shift+S                    //隐藏/显示滚动条</span><br><span class="line">Ctrl+Shift+F                    //搜索</span><br><span class="line">Ctrl+Shift+C                    //复制选中的内容到剪贴板</span><br><span class="line">Ctrl+Shift+V                    //粘贴剪贴板的内容到此处</span><br><span class="line">Ctrl+Shift+W                    //关闭当前终端</span><br><span class="line">Ctrl+Shift+Q                    //退出当前窗口，当前窗口的所有终端都将被关闭</span><br><span class="line">Ctrl+Shift+X                    //最大化显示当前终端</span><br><span class="line">Ctrl+Shift+Z                    //最大化显示当前终端并使字体放大</span><br><span class="line">Ctrl+Shift+N or Ctrl+Tab        //移动到下一个终端</span><br><span class="line">Ctrl+Shift+P or Ctrl+Shift+Tab  //Crtl+Shift+Tab 移动到之前的一个终端</span><br></pre></td></tr></table></figure></p>
<p>各个窗口间操作： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">F11                             //全屏开关</span><br><span class="line">Ctrl+Shift+T                    //打开一个新的标签</span><br><span class="line">Ctrl+PageDown                   //移动到下一个标签</span><br><span class="line">Ctrl+PageUp                     //移动到上一个标签</span><br><span class="line">Ctrl+Shift+PageDown             //将当前标签与其后一个标签交换位置</span><br><span class="line">Ctrl+Shift+PageUp               //将当前标签与其前一个标签交换位置</span><br><span class="line">Ctrl+Plus (+)                   //增大字体</span><br><span class="line">Ctrl+Minus (-)                  //减小字体</span><br><span class="line">Ctrl+Zero (0)                   //恢复字体到原始大小</span><br><span class="line">Ctrl+Shift+R                    //重置终端状态</span><br><span class="line">Ctrl+Shift+G                    //重置终端状态并clear屏幕</span><br><span class="line">Super+g                         //绑定所有的终端，以便向一个输入能够输入到所有的终端</span><br><span class="line">Super+Shift+G                   //解除绑定</span><br><span class="line">Super+t                         //绑定当前标签的所有终端，向一个终端输入的内容会自动输入到其他终端</span><br><span class="line">Super+Shift+T                   //解除绑定</span><br><span class="line">Ctrl+Shift+I                    //打开一个窗口，新窗口与原来的窗口使用同一个进程</span><br><span class="line">Super+i                         //打开一个新窗口，新窗口与原来的窗口使用不同的进程</span><br></pre></td></tr></table></figure></p>
<h3 id="gnu-screen">GNU Screen</h3>
<p>下载：<code>sudo apt install screen</code></p>
<h4 id="gnu-screen-简介">GNU Screen 简介</h4>
<p>screen 是一款由 GNU
计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话，并在其间自由切换。GNU
Screen
可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。<br />
在 screen
环境下，所有的会话都独立的运行，并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换，并可以自由的重定向各个窗口的输入和输出。</p>
<h4 id="功能">功能</h4>
<ul>
<li>可以创建一个session（会话），实现不同终端之间的交互。<br />
</li>
<li>可以实现多人观看同一终端等功能。</li>
<li>在工作中，如遇突发情况（例如断电，蓝屏等），终端断开，服务器端所有收到信号的前台任务将全部终止，各种工作环境将全部丢失。若在
screen 里操作，终端意外关闭之后，下次登录到服务器上，进入 screen，之前在
screen 上运行的任务还在继续运行。screen
的功能可以大概理解为它将前台任务放入了后台进行，并且不受终端关闭或其它意外事故的影响。</li>
</ul>
<h3 id="tmuxterminal-multiplexer类似-gnu-screen">Tmux（terminal
multiplexer,类似 GNU Screen）</h3>
<p>下载：<code>sudo apt install tmux</code></p>
<h4 id="功能-1">功能</h4>
<ul>
<li>允许在单个窗口中，同时访问多个会话。这对于同时运行多个命令行程序很有用。<br />
</li>
<li>可以让新窗口"接入"已经存在的会话。<br />
</li>
<li>允许每个会话有多个连接窗口，因此可以多人实时共享会话。<br />
</li>
<li>支持窗口任意的垂直和水平拆分。</li>
</ul>
<h2 id="参考文章">参考文章</h2>
<p><a href="https://www.ruanyifeng.com/blog/2019/10/tmux.html">Tmux
使用教程</a><br />
<a
href="https://www.homedt.net/40644.html">Linux中的screen命令的使用</a><br />
<a
href="https://cloud.tencent.com/developer/article/1844735">Linux终端命令神器--Screen命令详解。助力Linux使用和管理</a><br />
<a
href="https://zhongguo.eskere.club/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8Dubuntu-linux%E4%B8%AD%E7%9A%84%E8%93%9D%E7%89%99%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/2021-05-12/?__cf_chl_tk=UCmaDe_SWYb41eIhI0dKuadHk0.rGbm7YcRyUkdjQMM-1660017919-0-gaNycGzNCH0">如何修复Ubuntu
Linux中的蓝牙连接问题</a></p>
]]></content>
      <categories>
        <category>Linux</category>
      </categories>
      <tags>
        <tag>Linux</tag>
        <tag>Ubuntu</tag>
      </tags>
  </entry>
  <entry>
    <title>SWITCH 网络问题解决</title>
    <url>/posts/20230128a1/</url>
    <content><![CDATA[<div class="note "><p>解决 switch 无法连接手机热点和代理设置问题。</p>
</div>
<span id="more"></span>
<h2 id="switch-连接手机热点">switch 连接手机热点</h2>
<p>由于试遍了网上的设置方法仍无法连接手机热点（错误代码
2110-2101），故改换思路，使用笨方法：<br />
使用电脑连接手机热点后开启网络共享。</p>
<h2 id="switch-网络代理">switch 网络代理</h2>
<p>通过电脑 clash 实现：</p>
<ul>
<li>电脑与 switch 连接同一网络<br />
</li>
<li>开启 clash 代理<br />
</li>
<li>开启 clash 首页 Allow LAN 按钮<br />
</li>
<li>光标停留在 Allow LAN 按钮上查看主机 IP<br />
</li>
<li>更改 switch 所连接网络的设定，开启代理伺服器<br />
</li>
<li>伺服器填写主机 IP，通讯埠对应填写 clash 首页 Port（端口）<br />
</li>
<li>储存连接即可，通过连接测试便可看到switch的全球 IP
位址已经变为代理位置</li>
</ul>
]]></content>
      <categories>
        <category>游戏</category>
        <category>switch</category>
      </categories>
      <tags>
        <tag>switch</tag>
      </tags>
  </entry>
  <entry>
    <title>Ubuntu 硬盘分区</title>
    <url>/posts/20230708a1/</url>
    <content><![CDATA[<div class="note "><p>Ubuntu 硬盘分区相关概念和推荐配置。</p>
</div>
<span id="more"></span>
<h2 id="常见分区及作用">常见分区及作用</h2>
<p>和 Windows 使用盘符定义分区的方式不同，Linux
系统使用树状目录的方式来定义分区，这也被称为<strong>挂载点</strong>。<br />
常见分区及作用如下：</p>
<table>
<colgroup>
<col style="width: 6%" />
<col style="width: 6%" />
<col style="width: 86%" />
</colgroup>
<thead>
<tr class="header">
<th>分区名称</th>
<th>类型</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>/</td>
<td>主分区</td>
<td>根分区，即root分区，其他所有分区目录都位于其下。</td>
</tr>
<tr class="even">
<td>/boot/</td>
<td>主分区</td>
<td>存放系统启动时所需的各种文件。</td>
</tr>
<tr class="odd">
<td>/home/</td>
<td>逻辑分区</td>
<td>普通用户的主目录。</td>
</tr>
<tr class="even">
<td>/etc/</td>
<td>逻辑分区</td>
<td>配置文件的目录。平常通过系统包管理命令安装的各种软件，它们的配置文件默认都在此目录下。</td>
</tr>
<tr class="odd">
<td>/bin/</td>
<td>逻辑分区</td>
<td>系统核心命令的存放目录。</td>
</tr>
<tr class="even">
<td>/usr/</td>
<td>逻辑分区</td>
<td>系统默认软件的安装目录和共享资源目录。通过系统包管理命令安装的软件，大多都位于这里。</td>
</tr>
<tr class="odd">
<td>/var/</td>
<td>逻辑分区</td>
<td>存放软件运行时生成的一些文件，比如日志，运行中的进程 ID
文件等。</td>
</tr>
<tr class="even">
<td>/opt/</td>
<td>逻辑分区</td>
<td>用户软件的安装目录。</td>
</tr>
<tr class="odd">
<td>/tmp/</td>
<td>逻辑分区</td>
<td>存放临时文件的目录。每次系统关机时，此目录中的所有文件都会清除。</td>
</tr>
<tr class="even">
<td>Swap</td>
<td>逻辑分区</td>
<td>交换分区，通过文件系统的方式模拟物理内存，以应对物理内存使用时的不足。</td>
</tr>
</tbody>
</table>
<h2 id="分区参考">分区参考</h2>
<p>安装系统时需要对分区空间进行分配，这里以 100GB 为例：</p>
<table>
<colgroup>
<col style="width: 26%" />
<col style="width: 26%" />
<col style="width: 23%" />
<col style="width: 23%" />
</colgroup>
<thead>
<tr class="header">
<th>分区名称</th>
<th>类型</th>
<th>用于</th>
<th>大小</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>/</td>
<td>主分区</td>
<td>Ext4</td>
<td>15GB</td>
</tr>
<tr class="even">
<td>/boot/</td>
<td>主分区</td>
<td>Ext4</td>
<td>500MB</td>
</tr>
<tr class="odd">
<td>/home/</td>
<td>逻辑分区</td>
<td>Ext4</td>
<td>35GB</td>
</tr>
<tr class="even">
<td>/usr/</td>
<td>逻辑分区</td>
<td>Ext4</td>
<td>35GB</td>
</tr>
<tr class="odd">
<td>/var/</td>
<td>逻辑分区</td>
<td>Ext4</td>
<td>3GB</td>
</tr>
<tr class="even">
<td>/tmp/</td>
<td>逻辑分区</td>
<td>Ext4</td>
<td>3GB</td>
</tr>
<tr class="odd">
<td>Swap</td>
<td>逻辑分区</td>
<td>Ext4</td>
<td>8GB</td>
</tr>
</tbody>
</table>
]]></content>
      <categories>
        <category>Linux</category>
      </categories>
      <tags>
        <tag>Linux</tag>
        <tag>Ubuntu</tag>
      </tags>
  </entry>
  <entry>
    <title>Windows 软件使用分享</title>
    <url>/posts/20220719a1/</url>
    <content><![CDATA[<div class="note "><p>分享个人使用的 Windows 软件。</p>
</div>
<span id="more"></span>
<h2 id="福昕高级pdf编辑器">福昕高级PDF编辑器</h2>
<p>PDF 是 Portable Document Format 的简称，意为“可携带文档格式”，是由
Adobe 公司开发的一种通用的文档格式，具有通用性好、保真性强等优点。<br />
但是由于 PDF
本身的特点，选择一款稳定、快速的软件用以阅读编辑显得尤为重要。<br />
目前较为推荐的有国内福昕和 Adobe 公司的软件，分别是福昕高级PDF编辑器和
Adobe Acrobat Reader DC。如果只有阅读需求，Microsoft Edge 的 PDF
阅读体验也是可以的。
在尝试过两个之后，个人还是更喜欢福昕高级PDF编辑器。<br />
<img src="https://s2.loli.net/2022/07/19/5vtSUKqVi3ENRxd.png" /><br />
<img src="https://s2.loli.net/2022/07/19/9abxiS2NT17k5rw.png" /><br />
这里附上 9.7.1
版本的安装文件和来自<strong>胡萝卜周</strong>的补丁：<br />
链接：https://pan.baidu.com/s/12zbUdP_Bsz65t1omdXKdLA<br />
提取码：w899</p>
<h2 id="知云文献翻译">知云文献翻译</h2>
<p>外文论文文献翻译利器。<br />
官网下载：<a href="https://www.zhiyunwenxian.cn/"
class="uri">https://www.zhiyunwenxian.cn/</a><br />
<img src="https://s2.loli.net/2022/07/19/tF3whGmuzoIsZWk.png" /></p>
<h2 id="小绿鲸英文文献阅读器">小绿鲸英文文献阅读器</h2>
<p>好用的外文文献阅读器，界面美观且功能强大，还有移动端可供下载<br />
官网下载：<a href="https://www.xljsci.com/"
class="uri">https://www.xljsci.com/</a></p>
<h2 id="ev录屏">EV录屏</h2>
<p>官网下载：<a href="https://www.ieway.cn/evcapture.html"
class="uri">https://www.ieway.cn/evcapture.html</a><br />
<img src="https://s2.loli.net/2022/07/19/JDzuTnXlq2oMS36.png" /><br />
<img src="https://s2.loli.net/2022/07/19/oXYdGM9cJaKu4VI.png" /></p>
<h2 id="mathpix-snipping-tool">Mathpix Snipping Tool</h2>
<p>识别公式并生成相应代码，非常好用。（每个月只能免费使用10次）<br />
官网下载：<a href="https://mathpix.com/"
class="uri">https://mathpix.com/</a><br />
<img src="https://s2.loli.net/2022/07/19/Z5IELwFAXuW1kiv.png" /><br />
<img src="https://s2.loli.net/2022/07/19/CAnMGTyzx1DlBjX.png" /></p>
<h2 id="snipaste">Snipaste</h2>
<p>个人最常用的截图工具，小巧好用。<br />
官网下载：<a href="https://www.snipaste.com/"
class="uri">https://www.snipaste.com/</a><br />
<img src="https://s2.loli.net/2022/07/19/CqKFAOUXkczMsV8.png" /><br />
它还可以将截图贴在屏幕上，并支持放大缩小。<br />
<img src="https://s2.loli.net/2022/07/19/tzD4pxUdQ2ZT837.png" /><br />
<img src="https://s2.loli.net/2022/07/19/uKkegcS5hFosLwE.png" /><br />
<img src="https://s2.loli.net/2022/07/19/ypBJm5TxzfriGwD.png" /></p>
<h2 id="faststone-capture">Faststone Capture</h2>
<p>支持屏幕录制、<strong>滚动截图</strong>、高清长图、图片编辑、图片转PDF格式、屏幕取色等功能。
官网下载：<a href="https://www.faststonecapture.cn/"
class="uri">https://www.faststonecapture.cn/</a></p>
<h2 id="bandizip">Bandizip</h2>
<p>压缩解压缩软件，没有 WinRAR 烦人的广告。<br />
官网下载：<a href="https://www.bandisoft.com/bandizip/"
class="uri">https://www.bandisoft.com/bandizip/</a><br />
<img src="https://s2.loli.net/2022/07/19/P1mKs5MZorLd2AS.png" /><br />
<img src="https://s2.loli.net/2022/07/19/oADFHTQzOPmbBIx.png" /></p>
<h2 id="wox-everything">Wox + Everything</h2>
<p>高效办公好助手。（用惯的话）<br />
具体参考：<a
href="https://blog.csdn.net/weixin_46098577/article/details/121489645">Wox
+ Everything = 效率神器（附下载链接）</a><br />
<img src="https://s2.loli.net/2022/07/19/xf4bI1aCoFkvGlK.png" /><img
src="https://s2.loli.net/2022/07/19/rdIiUW7hN1b5RXL.png" /> <img
src="https://s2.loli.net/2022/07/31/EVkcWijDqBdgNRv.png" /></p>
<h2 id="向日葵远程控制">向日葵远程控制</h2>
<p>可用手机平板远程控制电脑，进行文件传输，免费版功能基本满足所需。<br />
官网下载：<a href="https://sunlogin.oray.com/"
class="uri">https://sunlogin.oray.com/</a><br />
<img src="https://s2.loli.net/2022/07/19/vXCISpwyTstoLMq.png" /><br />
<img src="https://s2.loli.net/2022/07/19/EXLG9bSNlIOutdy.png" /></p>
<h2 id="todesk">ToDesk</h2>
<p>远程控制软件。 官网下载：<a href="https://www.todesk.com/"
class="uri">https://www.todesk.com/</a></p>
<h2 id="linux-reader">Linux Reader</h2>
<p>适用于双系统，可在 Windows 下访问 Linux 的文件。<br />
官网下载：<a href="https://www.diskinternals.com/download/"
class="uri">https://www.diskinternals.com/download/</a><br />
<img src="https://s2.loli.net/2022/07/31/Bs79aMTrGgF4kYI.png" /><br />
<img src="https://s2.loli.net/2022/07/31/XfsjBr39zb7JHNl.png" /></p>
<h2 id="toastfish">ToastFish</h2>
<p>轻巧的电脑桌面背单词工具，适合学习工作游戏之余增加词汇量，实现碎片化背单词。<br />
官网下载：<a href="https://lab.magiconch.com/toast-fish/"
class="uri">https://lab.magiconch.com/toast-fish/</a></p>
<h2 id="fadetop">FadeTop</h2>
<p>定时提醒休息，爱护眼睛。<br />
官网下载：<a href="http://www.fadetop.com/"
class="uri">http://www.fadetop.com/</a><br />
更换背景图片：<br />
1.找到 Settings.xml 文件<br />
2.在<code>bg_image_file=" "</code>的双引号中间写入自定义图片的路径,图片支持
jpg, bmp, png 格式。</p>
<h2 id="f.lux">f.lux</h2>
<p>随一天时间改变屏幕色彩，有助于护眼及休息。<br />
官网下载：<a href="https://justgetflux.com/"
class="uri">https://justgetflux.com/</a></p>
]]></content>
      <categories>
        <category>Windows</category>
      </categories>
      <tags>
        <tag>Windows</tag>
      </tags>
  </entry>
  <entry>
    <title>Hello World</title>
    <url>/posts/20210811clvgvrshm001efsf956rmf7ju/</url>
    <content><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very
first post. Check <a href="https://hexo.io/docs/">documentation</a> for
more info. If you get any problems when using Hexo, you can find the
answer in <a
href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or
you can ask me on <a
href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<p><span id="more"></span></p>
<h2 id="quick-start">Quick Start</h2>
<h3 id="create-a-new-post">Create a new post</h3>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo new <span class="string">&quot;My New Post&quot;</span></span><br></pre></td></tr></table></figure>
<p>More info: <a
href="https://hexo.io/docs/writing.html">Writing</a></p>
<h3 id="run-server">Run server</h3>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p>
<h3 id="generate-static-files">Generate static files</h3>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>
<p>More info: <a
href="https://hexo.io/docs/generating.html">Generating</a></p>
<h3 id="deploy-to-remote-sites">Deploy to remote sites</h3>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>
<p>More info: <a
href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>
]]></content>
  </entry>
  <entry>
    <title>使用 Jetson Nano 向 PX4 提供 t265 位置信息，实现室内定点飞行</title>
    <url>/posts/20210907a1/</url>
    <content><![CDATA[<div class="note "><p>本文作者：南京航空航天大学 科技中心 陈思祺<br />
主要内容：详细阐述如何使用 Jetson Nano 向 PX4 提供 t265
位置信息，从而实现室内定点飞行。</p>
</div>
<p><span id="more"></span></p>
<p>使用的 Jetson Nano 镜像版本：4.6（2021-08-04 发布）</p>
<p><a
href="https://developer.nvidia.com/zh-cn/embedded/downloads">NVIDIA官方镜像下载链接</a></p>
<p><img src="https://s2.loli.net/2022/07/19/d6PRHu7trEnLG2l.jpg" /></p>
<p>下载好镜像，烧录进 TF
卡，初次开机简单配置后进入系统，建议系统语言选择英语，正式开始本次教程。</p>
<h2 id="更新软件列表更新软件">更新软件列表，更新软件</h2>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo apt-get update </span><br><span class="line">sudo apt-get upgrade </span><br></pre></td></tr></table></figure>
<h2 id="安装-ros-melodic">安装 ROS Melodic</h2>
<p>参考<a
href="http://wiki.ros.org/melodic/Installation/Ubuntu">官网安装教程</a></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 设置sources.list</span></span><br><span class="line">sudo sh -c &#x27;echo &quot;deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main&quot; &gt; /etc/apt/sources.list.d/ros-latest.list&#x27;</span><br><span class="line"><span class="meta">#</span><span class="bash"> 设置密钥</span></span><br><span class="line">sudo apt install curl</span><br><span class="line">curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -</span><br><span class="line"><span class="meta">#</span><span class="bash"> 确保 Debian 包索引是最新的</span></span><br><span class="line">sudo apt update</span><br><span class="line"><span class="meta">#</span><span class="bash"> 安装桌面完整版（推荐）</span></span><br><span class="line">sudo apt install ros-melodic-desktop-full</span><br><span class="line"><span class="meta">#</span><span class="bash"> 设置环境</span></span><br><span class="line">echo &quot;source /opt/ros/melodic/setup.bash&quot; &gt;&gt; ~/.bashrc</span><br><span class="line">source ~/.bashrc</span><br><span class="line"><span class="meta">#</span><span class="bash"> 安装 rosdep</span></span><br><span class="line">sudo apt install python-rosdep</span><br><span class="line"><span class="meta">#</span><span class="bash"> 初始化 rosdep</span></span><br><span class="line">sudo rosdep init</span><br><span class="line">rosdep update</span><br><span class="line"><span class="meta">#</span><span class="bash"> 试一下效果</span></span><br><span class="line">roscore</span><br></pre></td></tr></table></figure>
<h2 id="安装realsense">安装realsense</h2>
<p>参考<a
href="https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md">官网安装教程</a></p>
<p>安装过程中请拔下摄像头</p>
<h3 id="安装realsense-sdk">安装Realsense SDK</h3>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 下载<span class="built_in">source</span></span> </span><br><span class="line"><span class="meta">#</span><span class="bash"> 可使用Proxy代理加速下载。详见：https://ghproxy.com/</span></span><br><span class="line">git clone https://github.com/IntelRealSense/librealsense</span><br><span class="line">cd librealsense</span><br><span class="line"><span class="meta">#</span><span class="bash"> 安装依赖项</span> </span><br><span class="line">sudo apt-get install libudev-dev pkg-config libgtk-3-dev</span><br><span class="line">sudo apt-get install libusb-1.0-0-dev pkg-config</span><br><span class="line">sudo apt-get install libglfw3-dev</span><br><span class="line">sudo apt-get install libssl-dev</span><br><span class="line"><span class="meta">#</span><span class="bash"> 安装位于 librealsense 源目录中的 Intel Realsense 权限脚本</span></span><br><span class="line">sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/</span><br><span class="line">sudo udevadm control --reload-rules &amp;&amp; udevadm trigger </span><br><span class="line"><span class="meta">#</span><span class="bash"> 编译</span></span><br><span class="line">mkdir build</span><br><span class="line">cd build</span><br><span class="line">cmake ../ -DBUILD_EXAMPLES=true</span><br><span class="line">make</span><br><span class="line">sudo make install</span><br><span class="line"><span class="meta">#</span><span class="bash"> 试一下效果</span></span><br><span class="line">realsense-viewer</span><br></pre></td></tr></table></figure>
<h3 id="安装realsense-ros">安装realsense-ros</h3>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 下载<span class="built_in">source</span></span></span><br><span class="line">mkdir -p ~/catkin_ws/src</span><br><span class="line">cd ~/catkin_ws/src/</span><br><span class="line">git clone https://github.com/IntelRealSense/realsense-ros.git</span><br><span class="line">git clone https://github.com/pal-robotics/ddynamic_reconfigure</span><br><span class="line">cd realsense-ros/</span><br><span class="line">git checkout `git tag | sort -V | grep -P &quot;^\d+\.\d+\.\d+&quot; | tail -1`</span><br><span class="line"><span class="meta">#</span><span class="bash"> 更改cv_bridgeConfig.cmake中opencv4路径</span></span><br><span class="line">sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake</span><br></pre></td></tr></table></figure>
<p>如图</p>
<p><img src="https://s2.loli.net/2022/07/19/QFk1VvcSTZz8xWU.png" /></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 编译</span></span><br><span class="line">cd ~/catkin_ws</span><br><span class="line">catkin_make</span><br><span class="line"><span class="meta">#</span><span class="bash"> 设置环境</span></span><br><span class="line">echo &quot;source ~/catkin_ws/devel/setup.bash&quot;&gt;&gt;~/.bashrc </span><br><span class="line">source ~/.bashrc</span><br><span class="line"><span class="meta">#</span><span class="bash">试一下效果</span></span><br><span class="line">roslaunch realsense2_camera rs_t265.launch</span><br></pre></td></tr></table></figure>
<h2 id="px4配置">PX4配置</h2>
<p>下载 <em>QGroundControl</em></p>
<p><a
href="https://github.com/mavlink/qgroundcontrol/releases/">GitHub链接</a></p>
<p><a href="https://docs.qgroundcontrol.com/master/en/">使用说明</a></p>
<ul>
<li><p><code>MAV_1_CONFIG</code>= <code>TELEM 2</code></p></li>
<li><p><code>MAV_1_MODE</code> = <code>Onboard</code></p></li>
<li><p><code>SER_TEL2_BAUD</code> = <code>57600 8N1</code></p></li>
<li><p><code>EKF2_AID_MASK</code> 勾选
<code>vision position fusion</code>和<code>vision yaw fusion</code></p></li>
<li><p><code>EKF2_HGT_MODE</code> 设置为 <code>Vision</code></p></li>
<li><p><code>MAV_ODOM_LP</code>设置为<code>1</code></p></li>
</ul>
<h2 id="mavros-和vio">MAVROS 和VIO</h2>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> MAVROS</span></span><br><span class="line">sudo apt install python-catkin-tools</span><br><span class="line">sudo apt install ros-melodic-mavros ros-melodic-mavros-extras</span><br><span class="line">sudo apt-get install ros-indigo-mavros ros-indigo-mavros-extras ros‐indigo‐control‐toolbox</span><br><span class="line"><span class="meta">#</span><span class="bash"> VIO</span></span><br><span class="line">cd ~/catkin_ws/src</span><br><span class="line">git clone https://github.com/Auterion/VIO.git</span><br><span class="line">cd ..</span><br><span class="line">catkin_make</span><br></pre></td></tr></table></figure>
<p>更改以下配置</p>
<ol type="1">
<li>T265 相对位置及朝向</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">gedit ~/catkin_ws/src/VIO/launch/bridge.launch</span><br></pre></td></tr></table></figure>
<p>修改</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">&lt;node pkg=&quot;tf&quot; type=&quot;static_transform_publisher&quot; name=&quot;tf_baseLink_cameraPose&quot;args=&quot;0 0 0 0 1.5708 0 base_link camera_pose_frame 1000&quot;/&gt;</span><br></pre></td></tr></table></figure>
<p><code>args</code>中</p>
<ul>
<li><p>开头三个参数为飞控中心指向 T265 中心的向量。例如 T265 在飞控前方
10 cm，上方 4 cm, 则前三个参数为：<code>[0.1, 0, -0.04]</code></p></li>
<li><p>中间三个参数为旋转角(偏航, 俯仰, 横滚)。默认 T265
朝地，则参数为<code>[0, 1.5708, 0]</code>；T265
照射飞机机头方向，则参数为 <code>[0 0 0]</code></p></li>
</ul>
<ol start="2" type="1">
<li>如果 TTL 的速度异常</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo gedit /opt/ros/melodic/share/mavros/launch/px4_config.yaml</span><br></pre></td></tr></table></figure>
<p>第 12 行改为</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">timesync_rate: 0.0</span><br></pre></td></tr></table></figure>
<ol start="3" type="1">
<li>如果使用 USB 连接</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">sudo gedit /opt/ros/melodic/share/mavros/launch/px4.launch</span><br></pre></td></tr></table></figure>
<p>修改第 5 行为</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">&lt;arg name=&quot;fcu_url&quot; default=&quot;/dev/ttyUSB0:57600&quot; /&gt;</span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">gedit ~/catkin_ws/src/VIO/launch/bridge_mavros.launch</span><br></pre></td></tr></table></figure>
<p>修改第 3 行为</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">&lt;arg name=&quot;fcu_url&quot; default=&quot;/dev/ttyUSB0:57600&quot; /&gt;</span><br></pre></td></tr></table></figure>
<ol start="4" type="1">
<li>放开串口权限</li>
</ol>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 用你自己的用户名替代下面的&lt;username&gt;</span></span><br><span class="line">sudo usermod -a -G dialout &lt;username&gt;</span><br><span class="line"><span class="meta">#</span><span class="bash"> 修改后需重启生效</span></span><br><span class="line">reboot now</span><br></pre></td></tr></table></figure>
<h2 id="起飞前检查">起飞前检查</h2>
<p>详情请看<a
href="https://docs.px4.io/master/en/computer_vision/visual_inertial_odometry.html#verify_estimate">官网说明</a></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> 开启VIO</span></span><br><span class="line">roslaunch px4_realsense_bridge bridge_mavros.launch</span><br></pre></td></tr></table></figure>
<ul>
<li><p>连接好摄像头、USB、PX4，可暂不接电池，查看 MAVLink
Inspector</p></li>
<li><p>偏航机身，直到<code>ODOMETRY</code>消息的四元数非常接近单位四元数（w
= 1，x = y = z = 0）</p></li>
<li><p>向前移动无人机，x 坐标应增大</p></li>
<li><p>向右移动无人机，y 坐标应增大</p></li>
<li><p>向上移动无人机，z 坐标应减小</p></li>
<li><p>遥控器切换到 Position Flight Mode，若切换成功，应闪绿灯</p></li>
</ul>
<p>然后可以接上电池，尝试定点飞行</p>
<h2 id="参考文章">参考文章</h2>
<p><a href="https://docs.px4.io/master/en/">PX4 User Guide</a></p>
<p><a href="http://wiki.ros.org/">ROS Wiki</a></p>
<p><a href="https://github.com/IntelRealSense/">Intel RealSense</a></p>
<p><a
href="https://lifuguan.github.io/d435i/ros/2019/05/28/realsense-melodic-installation/">ROS
melodic kernel 4.18 安装 realsense D435i</a></p>
<p><a
href="https://zhuanlan.zhihu.com/p/364390798">通过MAVROS连接机载电脑（NANO/TX2/NX）与Pixhawk</a></p>
<p><a href="https://zhuanlan.zhihu.com/p/367357019">Jetson
Nano使用T265向PX4提供位置信息</a></p>
<p><a href="https://ghproxy.com/">GitHub Proxy</a></p>
]]></content>
      <categories>
        <category>PX4</category>
      </categories>
      <tags>
        <tag>PX4</tag>
      </tags>
  </entry>
  <entry>
    <title>在Hexo博客上进行创作</title>
    <url>/posts/20210817a1/</url>
    <content><![CDATA[<div class="note "><p>本文主要介绍如何在Hexo博客上进行创作，包括新建、编辑和预览文章。<br />
内容主要搬运至 <a href="https://hexo.io/zh-cn/docs">Hexo
文档</a>的写作指导。</p>
</div>
<span id="more"></span>
<h2 id="安装markdown编辑器">安装Markdown编辑器</h2>
<p>要进行创作，首先必须要有相应的文本编辑器。<br />
只要安装了相应的渲染插件，Hexo 支持以任何格式书写文章。<br />
例如，Hexo 默认安装了 hexo-renderer-marked 和
hexo-renderer-ejs，因此你可以用 Markdown 写作，也可以用 EJS
写作。如果安装了 hexo-renderer-pug，甚至可以用 Pug
模板语言书写文章。只需要将文章的扩展名从 md 改成 ejs，Hexo 就会使用
hexo-renderer-ejs 渲染这个文件，其他格式同理。<br />
我使用的是 Markdown 编辑器来编辑文章，可以参考<a
href="https://blog.csdn.net/davidhzq/article/details/100815332">几款主流好用的markdown编辑器介绍</a>一文，选择喜欢的
markdown 编辑器。<br />
我选的是MarkdownPad2，附上下载地址：<a
href="http://www.markdownpad.com/">The Markdown Editor for
Windows</a>，按默认进行安装即可。 如果是win10系统还需要安装一个组件
awesomium_v1.6.6_sdk_win：
百度网盘链接：https://pan.baidu.com/s/1UJRtOBF8vj19ikOq4452sQ，提取码：yd8k<br />
下载后也是默认安装即可<br />
若要使用 Markdown（Extra）则需要付费（破解），现将目前亲测有效的 Key
粘贴如下：<br />
Email address： <code>Soar360@live.com</code><br />
License Key： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG7kUdnhKE0vVy4RidP6Y2wZ0q74f47fzsZo45JE2hfQBFi2O9Jldjp1mW8HUpTtLA2a5/sQytXJUQl/QKO0jUQY4pa5CCx20sV1ClOTZtAGngSOJtIOFXK599sBr5aIEFyH0K7H4BoNMiiDMnxt1rD8Vb/ikJdhGMMQr0R4B+L3nWU97eaVPTRKfWGDE8/eAgKzpGwrQQoDh+nzX1xoVQ8NAuH+s4UcSeQ==</span><br></pre></td></tr></table></figure> 点击 Markdown 左下角图标选择
Markdown（Extra），将上面的邮箱和授权秘钥填入： <img
src="https://s2.loli.net/2022/07/19/C36BlVpewRd9NKE.png" /> <img
src="https://s2.loli.net/2022/07/19/E7Pza8RLfGkj245.jpg" />
然后就破解成功啦。</p>
<h2 id="新建文章">新建文章</h2>
<p>可以在根目录 Blog 打开Git Bash，使用命令行新建文章：<br />
<code>hexo new [layout] &lt;title&gt;</code>或<code>hexo n [layout] title</code><br />
layout 是文章的布局，默认为 post。<br />
title 是文章的标题，也是 md 文件的名字。</p>
<h3 id="布局">布局</h3>
<p>Hexo 有三种布局，分别是 post, page 和
draft。三种布局对应的路径如下：</p>
<table>
<thead>
<tr class="header">
<th>Layout</th>
<th>Path</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>post</td>
<td>source/_posts</td>
</tr>
<tr class="even">
<td>page</td>
<td>source</td>
</tr>
<tr class="odd">
<td>draft</td>
<td>source/_drafts</td>
</tr>
</tbody>
</table>
<p>在博客目录下输入以下命令时，会默认使用post布局，然后自动在
source_posts 目录生成一个 text.md 文件：<br />
<code>$ hexo n text</code><br />
也可以使用如下命令创建了一个指定布局的名为 demo 的文章：<br />
<code>$ hexo n [layout] demo</code></p>
<h3 id="文件名称">文件名称</h3>
<p>Hexo 默认以标题做为文件名称，但可以在根目录 Blog
下的_config.yml（称为<strong>站点配置文件</strong>）编辑 new_post_name
参数来改变默认的文件名称。例如可以设为 :year-:month-:day-:title.md
以方便通过日期来管理文章。<br />
有关变量和定义如下：</p>
<table>
<thead>
<tr class="header">
<th>变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>:title</td>
<td>标题（小写，空格将会被替换为短杠）</td>
</tr>
<tr class="even">
<td>:year</td>
<td>建立的年份，比如， 2015</td>
</tr>
<tr class="odd">
<td>:month</td>
<td>建立的月份（有前导零），比如， 04</td>
</tr>
<tr class="even">
<td>:i_month</td>
<td>建立的月份（无前导零），比如， 4</td>
</tr>
<tr class="odd">
<td>:day</td>
<td>建立的日期（有前导零），比如， 07</td>
</tr>
<tr class="even">
<td>:i_day</td>
<td>建立的日期（无前导零），比如， 7</td>
</tr>
</tbody>
</table>
<h3 id="草稿">草稿</h3>
<p>刚刚提到了 Hexo 的一种特殊布局：draft，这种布局在建立时会被保存到
source/_drafts 文件夹，可通过如下的 publish 命令将草稿移动到
source/_posts 文件夹，该命令的使用方式与 new 十分类似，也可在命令中指定
layout 来指定布局。<br />
<code>$ hexo publish [layout] &lt;title&gt;</code><br />
草稿默认不会显示在页面中，可以使用<code>hexo --draft</code>命令可以查看已有草稿，或是在<strong>站点配置文件</strong>中把
render_drafts 参数设为 true 来预览草稿。</p>
<h3 id="front-matter">Front-matter</h3>
<p>打开 md 文件，可以看到文件最上方以 --- 分隔的区域，这块区域叫做
Front-matter ，用于指定个别文件的变量，举例来说：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: Hello World</span><br><span class="line">date: 2013/7/13 20:46:25</span><br><span class="line">tags: Hello</span><br><span class="line">---</span><br></pre></td></tr></table></figure> 以下是一些预先定义的参数:</p>
<table>
<thead>
<tr class="header">
<th>参数</th>
<th>描述</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>layout</td>
<td>布局</td>
<td>config.default_layout</td>
</tr>
<tr class="even">
<td>title</td>
<td>标题</td>
<td>文章文件名</td>
</tr>
<tr class="odd">
<td>date</td>
<td>建立日期</td>
<td>文件建立日期</td>
</tr>
<tr class="even">
<td>updated</td>
<td>更新日期</td>
<td>文件更新日期</td>
</tr>
<tr class="odd">
<td>comments</td>
<td>开启文章评论</td>
<td>true</td>
</tr>
<tr class="even">
<td>tags</td>
<td>标签</td>
<td></td>
</tr>
<tr class="odd">
<td>categories</td>
<td>分类</td>
<td></td>
</tr>
<tr class="even">
<td>permalink</td>
<td>覆盖文章网址</td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="模版scaffold">模版（Scaffold）</h3>
<p>在新建文章时，Hexo 会根据 scaffolds
文件夹内相对应的文件来建立文件，例如：<br />
<code>$ hexo new photo "My Gallery"</code><br />
在执行这行指令时，Hexo 会尝试在 scaffolds 文件夹中寻找
photo.md，并以其内容作为模板建立文章，因而你可以在 scaffolds
文件夹中建立md文件形成自己的模板，应注意模板文件里面应只有
Front-matter。<br />
上文中 Front-matte r的参数都是模版中可以使用的变量。</p>
<h3 id="分类和标签">分类和标签</h3>
<p>只有文章支持分类和标签，可以在 Front-matter 中进行设置。例如：
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">categories:</span><br><span class="line">- Diary</span><br><span class="line">tags:</span><br><span class="line">- PS5</span><br><span class="line">- Games</span><br></pre></td></tr></table></figure> 在其他系统中，分类和标签听起来很接近，但是在 Hexo
中两者有着明显的差别：分类具有顺序性和层次性，也就是说 Foo, Bar 不等于
Bar, Foo；而标签则没有顺序和层次。<br />
例如： <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">categories:</span><br><span class="line">- Diary</span><br><span class="line">- Life</span><br><span class="line">tags:</span><br><span class="line">- PS5</span><br><span class="line">- Games</span><br></pre></td></tr></table></figure> 会使分类 Life 成为 Diary
的子分类，而不是并列分类，但是标签 PS5 和 Games
则是并列关系，因此有必要为文章选择尽可能准确的分类。<br />
如果需要为文章添加多个分类，可以尝试以下方法：<br />
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">categories:</span><br><span class="line">- [Diary, PlayStation]</span><br><span class="line">- [Diary, Games]</span><br><span class="line">- [Life]</span><br></pre></td></tr></table></figure> 此时这篇文章同时包括三个分类： PlayStation 和 Games
分别都是父分类 Diary 的子分类，Life 是一个没有子分类的分类。</p>
<h2 id="编辑文章">编辑文章</h2>
<p>用 Markdown 编辑器打开相应文件就能进行文章的编辑了。<br />
有关 Markdown 语法可以参考<a
href="https://zcw-blog.top/posts/20210819a1/#more">Markdown语法详解</a></p>
<h2 id="参考文章">参考文章</h2>
<p><a href="https://hexo.io/zh-cn/docs/writing">Hexo写作</a></p>
]]></content>
      <categories>
        <category>维护日志</category>
        <category>创作</category>
      </categories>
      <tags>
        <tag>Hexo</tag>
        <tag>Markdown</tag>
      </tags>
  </entry>
  <entry>
    <title>搭建个人博客</title>
    <url>/posts/20210813a1/</url>
    <content><![CDATA[<div class="note "><p>本文旨在记录本博客的搭建过程，同时希望能对别人有所帮助。</p>
</div>
<span id="more"></span>
<p>本来暑假留校准备比赛，谁知突发疫情，有家不能回，学校封校，比赛延期，节奏从紧张转为舒缓，不由得有些无聊，便生出搭建个人博客的想法。
由于更新较为频繁，即便按照教程一步步来也难免出现问题，在搭建过程中我也因此走了不少弯路。在遇到问题时多上网找答案，多看不同的解答，多尝试，最后基本都会解决的。</p>
<h2 id="关于搭建个人博客">关于搭建个人博客</h2>
<p>一开始搭建个人博客其实想法比较简单，主要是因为想搭所以搭了。但是在搭建过程中渐渐地对于这件事也有了不同的体会。</p>
<p>搭建个人博客意义何在？</p>
<p><strong>经验知识总结</strong></p>
<p>将遇到的问题、解决方法、技术经验、相关知识进行总结，便于日后查阅。</p>
<p><strong>碎片化学习</strong></p>
<p>通过网络确实能够学习到很多东西，但从网上学到的东西大都是零零散散的，不够系统，这时便能通过博客把学习的知识一点一点按自己的结构整理记录下来，从而实现碎片化学习。</p>
<p><strong>分享交流</strong></p>
<p>通过博客分享，产生沟通与交流，从而互相学习，共同进步。</p>
<p><strong>记录生活</strong></p>
<p>博客除了总结技术，还可以记录生活的诗和远方。</p>
<p><strong>成就感</strong></p>
<p>在博客的搭建过程中，总是伴随着成就感，而这成就感则会内化成为继续前进的动力。</p>
<p>最后以看到的一句话作结：<br />
“对任何渴望进步的人来说，写博客/文章/回答对自己的成长帮助都是巨大的。频率和数量不必过分强求，有话要说就写写，没事就歇歇，随意点。因为坚持写作的那一刻起，你就已经开始受益。”</p>
<p>接下来就来看看怎么搭建个人博客吧：</p>
<h2 id="注册-github">注册 GitHub</h2>
<p>打开 GitHub ：<a href="http://github.com">GitHub</a><br />
点击右上角 sign up
进行注册（由于我注册时没有记录，为了展示注册过程我就随便填了） <img
src="https://s2.loli.net/2022/07/17/VAafU1CTvzk86xZ.png" /> 填写邮箱
<img src="https://s2.loli.net/2022/07/17/8NkGEM37o1PzpRq.png" />
创建密码 <img
src="https://s2.loli.net/2022/07/17/L1DIhC8TBXfv5ON.png" /> 设置用户名
<img src="https://s2.loli.net/2022/07/17/keaY1v26smXL3dl.png" />
这里会问你是否接收产品更新和公告，填“n”（no）就行 <img
src="https://s2.loli.net/2022/07/17/MpIH9jkFKTxOqzD.png" />
接着会有一个简单的真人验证 <img
src="https://s2.loli.net/2022/07/17/WI1KtYuaqQoM7pV.png" /> 验证过后点击
creat account<br />
GitHub 会向你的邮箱发送一个验证码，将验证码填入即可 <img
src="https://s2.loli.net/2022/07/17/W9BzTAa4reIcU7l.png" /> 自此便完成了
GitHub 的注册</p>
<h3 id="新建github仓库">新建GitHub仓库</h3>
<p>进入个人主页，点击 Repositories ,再点击 New 新建仓库 <img
src="https://s2.loli.net/2022/07/17/FtmWlxYCQDTgJGP.png" />
按下图设置后点击 Creat repositoty <img
src="https://s2.loli.net/2022/07/17/em71Zxzvj3LTn9d.png" />
现在你便拥有了一个名为 hello 的仓库 <img
src="https://s2.loli.net/2022/07/17/SkxaztgNpCDBjIc.png" /></p>
<h2 id="安装git">安装Git</h2>
<p>进入<a href="https://git-scm.com/">Git官网</a>，点击 download 下载
<img src="https://s2.loli.net/2022/07/17/sTfiXcvnh4WEKNO.png" />
选择对应的系统，我的是 windows <img
src="https://s2.loli.net/2022/07/17/5bhmDSZyX4R7JF3.png" />
选择适合自己系统的版本，我的是64位系统，所以选了 64-bit <img
src="https://s2.loli.net/2022/07/17/4zefpjsRGhbTocU.png" />
下载完成后打开 <img
src="https://s2.loli.net/2022/07/17/DMkyrWuQd2aAl8e.png" /> <img
src="https://s2.loli.net/2022/07/17/xuRPHjoEFJSna7y.png" />
<em>注：第二个新选项是说很多团队已经将他们的默认分支名改为 main .
这是因为2020 年非裔男子乔治·弗洛伊德因白人警察暴力执法惨死而掀起的 Black
Lives Matter (黑人的命也是命)运动，很多人认为 master
不尊重黑人，呼吁改为 main.</em> <img
src="https://s2.loli.net/2022/07/17/YLwqoFpCMcbH8Pi.png" /> <img
src="https://s2.loli.net/2022/07/17/XVAaWFDQGR5irzP.png" /> <img
src="https://s2.loli.net/2022/07/17/sHTRDxICiWB7cS2.png" /> <img
src="https://s2.loli.net/2022/07/17/ZeuXo5lBgMwCrnF.png" /> <img
src="https://s2.loli.net/2022/07/17/2nzH9xcEtdj1FpG.png" /> <img
src="https://s2.loli.net/2022/07/17/QAwbyskPTdZ4O3J.png" /> <img
src="https://s2.loli.net/2022/07/17/6Yjv8IRW3Hzfp5h.png" /> <img
src="https://s2.loli.net/2022/07/17/kSgWZ6qyAKiONVc.png" /> 点击 install
安装<br />
安装完成后进行检验：桌面右键出现如下选项即表示成功 <img
src="https://s2.loli.net/2022/07/17/JAP1UFdVLlQ3MX9.png" />
如果想看更加详细的安装教程或了解各选项含义，可以参考<a
href="https://blog.csdn.net/mukes/article/details/115693833">Git
详细安装教程（详解 Git 安装过程的每一个步骤）</a></p>
<h2 id="绑定git并提交文件push">绑定Git并提交文件（push）</h2>
<p>我们利用 SSH 来完成 GitHub 与 Git
的绑定，实现方便快捷地提交文件。<br />
SSH 其实是一种网络安全协议，简单介绍如下：<br />
SSH（安全外壳协议，Secure Shell 的缩写）是建立在应用层基础上的安全协议。
SSH 是目前较可靠，专为远程登录会话和其他网络服务提供安全性的协议，利用
SSH 协议可以有效防止远程管理过程中的信息泄露问题。简单来说， SSH
就是保障你的账户安全，将你的信息全部加密，防止其他人截获你的数据，还能加快传输速度。<br />
若想详细了解，可以参考<a
href="https://blog.csdn.net/qq_35246620/article/details/54317740">详述
SSH 的原理及其应用</a><br />
接下来便介绍如何绑定 GitHub 和提交文件。</p>
<h3 id="绑定github">绑定GitHub</h3>
<p>要用 git 上传文件到 GitHub 首先得利用 SSH
登录远程主机，而登录方式有两种：一种是口令登录；另一种是公钥登录。口令登录每次都要输入密码十分麻烦，而公钥登录省去了输入密码的步骤，因而我们选择公钥授权。首先我们得在
GitHub 上添加 SSH key 配置。<br />
首先我们在新建的文件夹中右键打开 Git Bash，输入 ssh
命令，查看本机是否安装 SSH（一般安装 Git 的时候默认安装了）：<br />
<img src="https://s2.loli.net/2022/07/17/Msi6PQI5OJVp9ux.png" /> <img
src="https://s2.loli.net/2022/07/17/cSpwg5jOMrvnIul.png" />
如图便是已安装 SSH<br />
输入<code>ssh-keygen -t rsa</code>命令，表示我们指定 RSA
算法生成密钥，然后敲四次回车，之后就会生成两个文件，分别为秘钥 id_rsa
和公钥 id_rsa.pub 。文件的位置在 Git Bash
上面都有显示，默认生成在以下目录：</p>
<blockquote>
<p>Linux 系统：~/.ssh</p>
<p>Mac 系统：~/.ssh</p>
<p>Windows 10 ：C:/Users/ASUS/.ssh</p>
</blockquote>
<p>接下来要把公钥 id_rsa.pub 的内容添加到 GitHub。可以通过目录找到
id_rsa.pub
文件的位置，用记事本打开文件复制。如果找不到文件可以直接在输入以下命令
Git Bash 上打开： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ <span class="built_in">cd</span> ~/.ssh </span><br><span class="line">$ ls</span><br><span class="line">$ cat id_rsa.pub</span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/17/RZGrpEDzNalq71h.png" />
连带着ssh-rsa的一大串内容就是公钥，<strong>注意：git 中的复制粘贴不是
Ctrl + C 和 Ctrl + V，而是 Ctrl + insert 和 Shift +
insert.</strong>复制完公钥后，进入我们的 GitHub
主页，先点击右上角，再点击 settings <img
src="https://s2.loli.net/2022/07/17/8irLUw9umDJyYXZ.png" /> 之后点击 SSH
and GPG keys，再点击 New SSH key. <img
src="https://s2.loli.net/2022/07/17/zm1PZAH5y3xaNLG.png" /> 将复制的公钥
id_rsa.pub 的内容粘贴到 key 内，标题填不填无所谓，再点击 Add SSH key
<img src="https://s2.loli.net/2022/07/17/xXpkwPsYd8S5eMj.png" /> 可以在
Git Bash 中输入<code>ssh -T git@github.com</code>验证是否成功，
第一次会出现下图这种情况，填 yes 就行 <img
src="https://s2.loli.net/2022/07/17/gzdZ32ntPeNQqVu.png" /> 绑定成功
<img src="https://s2.loli.net/2022/07/17/Lsq9uxIRjZ3ohMG.png" /></p>
<h3 id="提交文件">提交文件</h3>
<p>提交文件有两种方法：<br />
第一种：本地没有 git 仓库<br />
- 直接将远程仓库 clone 到本地；<br />
- 将文件添加并 commit 到本地仓库；<br />
- 将本地仓库的内容 push 到远程仓库。</p>
<p>第二种：本地有 Git 仓库，并且我们已经进行了多次 commit 操作<br />
- 建立一个本地仓库进入，init 初始化；<br />
- 关联远程仓库；<br />
- 同步远程仓库和本地仓库；<br />
- 将文件添加提交到本地仓库；<br />
- 将本地仓库的内容 push 到远程仓库。</p>
<h4 id="本地没有-git-仓库">本地没有 git 仓库</h4>
<p>首先，进入 GitHub 个人主页，点击进入新建的 text 仓库 <img
src="https://s2.loli.net/2022/07/17/wgQ3VpX47WoeiLT.png" /> 点击
Code，复制仓库地址 <img
src="https://s2.loli.net/2022/07/17/3FNMndJCmLx6TI8.png" />
然后进入我们准备存储 Git 仓库的目录右键 Git Bash <img
src="https://s2.loli.net/2022/07/17/TdUmrCyYuSbDtni.png" />
接下来，输入<code>git clone 仓库地址</code>，将远程仓库 clone 到本地
<img src="https://s2.loli.net/2022/07/17/GJlSgQAq5XOz7tv.png" />
如图没有 clone 成功，而是报错 OpenSSL SSL_read: Connection was reset,
errno 10054（以后可能还会多次遇到），原因是由于国内墙的存在，GitHu
b网络不稳定，导致 clone
失败，解决方法很简单，多试几次总会成功的，或者通过 GitHub
国内代理加速，详见<a href="https://ghproxy.com/">GitHub
Proxy代理加速</a>。如果还是不行则输入<code>git config --global http.sslVerify "false"</code>解除
SSL 认证，再进行 clone 。可参考<a
href="https://blog.csdn.net/qq_29493173/article/details/114534057">Git报错解决：OpenSSL
SSL_read: Connection was reset, errno 10054</a>。<br />
再 clone
一遍，还是没有成功，仍然是网络网络问题，连接超时，多试几次就好了 <img
src="https://s2.loli.net/2022/07/17/VhcXNJZM7xr2zla.png" /> 如下图就是
clone 成功： <img
src="https://s2.loli.net/2022/07/17/i1axTKjClWsbAzU.png" /> 看看 clone
到本地的仓库内容与远程仓库的内容，是否完全一致 <img
src="https://s2.loli.net/2022/07/17/RSnIyAN9zKuvlt4.png" />
接下来创建一个 text.txt 测试文件 <img
src="https://s2.loli.net/2022/07/17/BEPrxaW1s2nRHNL.png" /> 从此目录进入
Git Bash，输入<code>git status</code>命令查看仓库状态 <img
src="https://s2.loli.net/2022/07/17/NunmL3vygA5G2jU.png" /> text
已经是一个 Git 仓库了，由图可见刚刚创建的文件 text.txt
没有被追踪，也就是没有提交到本地仓库。现在我们使用<code>git add</code>命令将文件添加到了「临时缓冲区」，再用<code>git commit -m "提交信息"</code>将其提交到本地仓库
<img src="https://s2.loli.net/2022/07/17/SP5DK8sovjFliCT.png" />
如果你是第一次提交的话，会让你输入用户名和邮箱 <img
src="https://s2.loli.net/2022/07/17/cNO6lATFXKY1dtW.jpg" />
这时只要再执行如下两行命令即可： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ git config --global user.name <span class="string">&quot;你的用户名&quot;</span></span><br><span class="line">$ git config --global user.email <span class="string">&quot;你的邮箱&quot;</span></span><br></pre></td></tr></table></figure>
完成后输入<code>git log</code>命令查看仓库提交日志 <img
src="https://s2.loli.net/2022/07/17/gWDpxRfijGhBIlq.png" />
再输入<code>git status</code>查看一下仓库状态 <img
src="https://s2.loli.net/2022/07/17/gUqtJFxGKOaBYjd.png" />
现在输入<code>git push origin main</code>命令，将本地仓库提交到远程仓库，origin是远程主机的名字
<img src="https://s2.loli.net/2022/07/17/dGyCjfghebZiKLR.jpg" />
第一次上传需要输入密码，验证成功后，如下图： <img
src="https://s2.loli.net/2022/07/17/E6zjaqH3iPM4ASb.png" /> 刷新 GitHub
的 text 仓库，可见测试文件已经上传到了 text 仓库中 <img
src="https://s2.loli.net/2022/07/17/hIiKdmkuVXywA96.png" /></p>
<h4 id="本地有-git-仓库">本地有 Git 仓库</h4>
<p>首先，建立一个本地仓库 text2，使用<code>git init</code>命令初始化仓库
<img src="https://s2.loli.net/2022/07/17/muJsl47Bv1Nkweg.png" /> <img
src="https://s2.loli.net/2022/07/17/WEjB8FYPRwmQeMS.png" />
输入<code>git remote add origin 仓库地址</code>命令，关联远程仓库，接着输入<code>git pull origin main</code>命令，同步远程仓库和本地仓库
<img src="https://s2.loli.net/2022/07/17/Iix4KJz5EZWCHT8.png" />
回到本地仓库，可以发现远程仓库的内容已经同步到了本地仓库 <img
src="https://s2.loli.net/2022/07/17/z2GcUdnbmhXZsFx.png" />
接下来的步骤与第一种方法一样，可以自行尝试，先输入<code>git add</code>和<code>git commit</code>命令，将要提交的文件添加并提交到
text2
仓库；然后再输入<code>git push origin main</code>命令，将本地仓库修改（或者添加）的内容提交到远程仓库。</p>
<h2 id="安装nodejs和hexo">安装nodejs和Hexo</h2>
<h3 id="安装nodejs">安装nodejs</h3>
<p>打开<a href="https://nodejs.org/en/">node.js官网</a> <img
src="https://s2.loli.net/2022/07/17/rXqKwbFImWCc2Uf.png" />
点击下载，<em>注：由于 nodejs14
可能在之后出现一些警告（warning），虽然无伤大雅，但是介意的可以找找旧的版本比如
nodejs12 。</em>下载完成后双击安装，安装直接默认 next
，需要改的只有安装路径，我的路径是D:/node js。详细安装步骤可参考<a
href="https://blog.csdn.net/antma/article/details/86104068">node.js
安装详细步骤教程</a>。<br />
安装完成后可以打开 cmd（Win + R 后输入
cmd）检验是否安装成功，用<code>node -v</code>和<code>npm -v</code>命令检查版本
<img src="https://s2.loli.net/2022/07/17/8wsRPuyf45CWDiv.png" /></p>
<h4
id="设置npm在安装全局模块时的路径和环境变量">设置npm在安装全局模块时的路径和环境变量</h4>
<p>如果不设置的话，安装模块的时候就会把模块装到 C 盘，占用 C
盘的空间，并且有可能安装好 Hexo 后却无法使用。<br />
步骤如下：<br />
在 node js 文件夹中新建两个空文件夹 node_cache 、 node_global： <img
src="https://s2.loli.net/2022/07/17/ZRHnOsWrEjQi3gG.png" /> 打开 cmd
，输入如下两个命令： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npm config <span class="built_in">set</span> prefix <span class="string">&quot;D:\nodejs\node_global&quot;</span></span><br><span class="line">npm config <span class="built_in">set</span> cache <span class="string">&quot;D:\nodejs\node_cache&quot;</span></span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/17/wvHdjP2XyrM84mg.jpg" />
设置环境变量：win10 系统 --&gt; 打开控制面板 --&gt; 系统
--&gt;高级系统设置 --&gt; 环境变量
，然后在系统变量中新建一个变量名为<code>NODE_PATH</code>
，值为<code>D:\node js\node_global\node_modules</code> <img
src="https://s2.loli.net/2022/07/17/ionB5VrceS8UDtx.png" />
然后编辑用户变量里的 Path ，将相应 npm 的路径改为：D:js_global <img
src="https://s2.loli.net/2022/07/17/PxDiUSFkIHa6zZR.png" /> <img
src="https://s2.loli.net/2022/07/17/bg26JSUm4P9EYFp.png" />
完成后点击确定即可</p>
<h4 id="测试模块安装">测试模块安装</h4>
<p>在 cmd 下执行<code>npm install webpack -g</code> <img
src="https://s2.loli.net/2022/07/17/stB9iAlzFT4qcY6.png" /> 可见 webpack
这个模块已经在设置默认的文件夹中了 <img
src="https://s2.loli.net/2022/07/17/JXm6OlYoMLpu8Th.png" /></p>
<h3 id="安装hexo">安装Hexo</h3>
<p>Hexo 就是我们的个人博客网站的框架，安装之前要先在 GitHub
上创建一个仓库，<strong>仓库名称（Repository
name）为“用户名.github.io”</strong>，创建好后点击 settings <img
src="https://s2.loli.net/2022/07/17/wqu7I34MzQ9x6kf.png" /> 下拉到
GitHub Pages，点击 check it out here <img
src="https://s2.loli.net/2022/07/17/n54xbfgouVNwWc3.png" />
出现如下内容就说明成功了 <img
src="https://s2.loli.net/2022/07/17/woLSuXAb4cnms6t.png" /> 接下来安装
Hexo，首先在 D 盘创建文件夹 Blog ，点开 Blog ，鼠标右键打开 Git Bush
Here，输入 npm 命令<code>npm install -g hexo-cli</code>安装Hexo <img
src="https://s2.loli.net/2022/07/17/m98YAvKBwdkhuGS.png" />
安装完成后，输入<code>hexo init</code>命令初始化博客 <img
src="https://s2.loli.net/2022/07/17/DzfReb6nioW4uQs.png" />
然后输入<code>hexo g</code>静态部署，nodejs14
版本会出现如下警告（warning），可以不用理会 <img
src="https://s2.loli.net/2022/07/17/LENVhm3gMQuHwTS.png" />
这时网页已经部署完成，输入<code>hexo s</code>命令可以查看 <img
src="https://s2.loli.net/2022/07/17/GBjFK95Mt1TaIeP.png" /> 浏览器输入
http://localhost:4000 就可以打开新部署的网页 <img
src="https://s2.loli.net/2022/07/17/gLAks6I3rXnWc5K.jpg" /> 看完之后
Ctrl + C 停止运行服务器。</p>
<h3 id="将hexo部署到github">将Hexo部署到GitHub</h3>
<p>回到 Blog 文件夹，用记事本打开 _config.yml 文件 <img
src="https://s2.loli.net/2022/07/17/SyYZRtQz23mIUiL.png" />
在底部填写以下内容： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  <span class="built_in">type</span>: git</span><br><span class="line">  repository: https://github.com/reman2021/reman2021.github.io.git  <span class="comment">#你的仓库地址</span></span><br><span class="line">  branch: master</span><br></pre></td></tr></table></figure>
<strong>特别要注意冒号后面要有空格</strong> <img
src="https://s2.loli.net/2022/07/17/78xy3cXhFoCeWpU.png" />
仓库地址之前也讲过，其实就在这里 <img
src="https://s2.loli.net/2022/07/17/Rqi8CEhxfXlKz3m.png" /> 回到 Blog
文件夹，打开 Git
Bash，输入命令<code>npm install hexo-deployer-git --save</code>安装 Git
部署插件 <img
src="https://s2.loli.net/2022/07/17/4omzxWy7GwQBisX.jpg" />
然后分别输入以下三条命令： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">hexo clean   <span class="comment">#清除缓存文件 db.json 和已生成的静态文件 public</span></span><br><span class="line">hexo g       <span class="comment">#生成网站静态文件到默认设置的 public 文件夹(hexo generate 的缩写)</span></span><br><span class="line">hexo d       <span class="comment">#自动生成网站静态文件，并部署到设定的仓库(hexo deploy 的缩写)</span></span><br></pre></td></tr></table></figure> <img
src="https://s2.loli.net/2022/07/17/T7WZRKLiwpGOlkX.png" /> <img
src="https://s2.loli.net/2022/07/17/JXpMHEeCaxmF8tU.png" />
完成以后，打开浏览器，输入 https://用户名.github.io
就可以打开你的网页了。<br />
现在虽然可以访问我们的网站，但是网址是 GitHub
提供的：http://xxxx.github.io
而如果想使用自己的个性化域名，则需绑定自己的域名，这就需要进行域名购买和解析。</p>
<h2 id="购买域名与解析域名非必须">购买域名与解析域名（非必须）</h2>
<h3 id="购买域名">购买域名</h3>
<p>接下来的操作不需要购买域名也能进行，我在一开始本着勤俭节约的优良风尚（穷），并没有购买域名，是在之后无意间看到腾讯
DNSPod 有 5 元无门槛优惠券，最后还是花重金（2
元）购买了域名，终究还是腾讯高。<br />
购买域名有几个网站，主要有<a
href="https://sg.godaddy.com/zh/offers/domains/godaddycom?isc=gennbacn07&amp;countryview=1&amp;currencyType=CNY&amp;utm_source=baidu&amp;utm_medium=cpc&amp;utm_term=Title&amp;utm_campaign=zh-cn_corp_sem_x_b_x_bz_001&amp;utm_content=Brandzone%20PC&amp;gclid=CIXh9LjPmecCFdOavAoddDkHcw&amp;gclsrc=ds">Godaddy</a>，<a
href="https://cloud.tencent.com/">腾讯云</a>，<a
href="https://wanwang.aliyun.com/">万网</a>。<br />
由于我是在腾讯云购买的域名，便详细讲一下腾讯云购买域名步骤。<br />
首先打开<a
href="https://cloud.tencent.com/act/pro/DNSPodDomainsCarnival">DNSPod
域名狂欢季页面</a>，可以看到 2 张 5 元无门槛优惠券，DNSPOD
全产品代金券和域名注册代金券，都是可以用来注册域名的。由于我已经领了，所以没有显示域名注册代金券。<br />
<img src="https://s2.loli.net/2022/07/17/Y1qDL6wtCINQ3er.png" />
然后找到域名注册 <img
src="https://s2.loli.net/2022/07/17/vAkmDbq1BWO9YXe.png" />
查询想要注册的域名 <img
src="https://s2.loli.net/2022/07/17/r3KPVv27yno1QAB.png" />
点击加入购物车后，点击立即购买后进入订单详情页 点击添加免费 SSL 证书
<img src="https://s2.loli.net/2022/07/17/1uh5XpD9m8BPfck.png" />
注意根据需要取消勾选自动续费 <img
src="https://s2.loli.net/2022/07/17/Nld1vuUObS63Rkq.png" />
提交订单付费（优惠券自动抵扣5元）<br />
之后还要创建实名模板，需要上传身份证信息，按流程走就行，审核也挺快的，可以在域名注册-我的域名查看</p>
<h3 id="解析域名">解析域名</h3>
<p>在域名注册找到解析并添加如下两条解析记录： <img
src="https://s2.loli.net/2022/07/17/HG1lSy7OaNFBs4w.png" /> <img
src="https://s2.loli.net/2022/07/17/qDGIm5h3sZlBpYc.png" /> IPV4
地址可以通过 ping 得到，打开 cmd 输入：
<code>ping reman2021.github.io    #ping + 你的GitHub的网址</code> <img
src="https://s2.loli.net/2022/07/17/ZQ2cbko5ETNgGDi.png" /> 接着打开
Blog/source，添加 CNAME 文件，可以先用记事本创建一个 txt
文件，打开后写上你的域名，(注：不要加 www. 否则每次访问都必须加 www.
，但如果不带有 www. ，以后访问的时候带不带 www.
都可以访问)，另存后记得要重命名为 CNAME，并且将 .txt 删除，如下图： <img
src="https://s2.loli.net/2022/07/17/yEL218UYucCnhPx.png" /> <img
src="https://s2.loli.net/2022/07/17/fOXvbgAEjFPnwGZ.png" /> 回到 Blog
文件夹，右键打开 Git Bash，依次走完 hexo 三部曲： <figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure> 打开
GitHub，看看 CNAME 文件是否已经在仓库中，点击 settings <img
src="https://s2.loli.net/2022/07/17/x2nBEbArJ3agTfs.png" /> 在 GitHub
Pages 查看你的域名是否保存 <img
src="https://s2.loli.net/2022/07/17/gLkIsqH1GNRBT6d.png" />
如果域名是空白的话看看能不能自行添加<br />
如果仓库中没有 CNAME 文件，也可以自己添加，方法如下： <img
src="https://s2.loli.net/2022/07/17/zl9oSXyBcHJUx7m.png" /> <img
src="https://s2.loli.net/2022/07/17/HC7xVZdj9n2yeKl.png" /> <img
src="https://s2.loli.net/2022/07/17/2aXoxTcuzLAOIqh.png" /></p>
<h2 id="创作文章">创作文章</h2>
<p>现在博客已经搭建好了，虽然比较简陋，但是已经可以进行文章创作啦。
文章创作具体可看：<a
href="https://zcw-blog.top/posts/20210817a1/">在Hexo博客上进行创作</a></p>
<h2 id="设置next主题">设置NexT主题</h2>
<p>目前 Hexo 博客有许多主题可供选择，常见的有 NexT、Yilia、Hacker
等等，可以根据喜好自行选择，上网查找的话相关资料也非常多。这里提供两篇参考文章：
<a href="https://www.bilibili.com/read/cv4499195/">Hexo主题推荐</a> <a
href="https://blog.csdn.net/zgd826237710/article/details/99671027">Hexo
好看的主题推荐</a> 我用的是 NexT
主题，也是目前使用人数最多的主题（大概），主要当时只知道这一个，现在虽然眼馋其他主题但是懒得换，不过
NexT 主题的简洁大气也深得我心。<br />
NexT 主题下载地址：<a
href="https://github.com/theme-next/hexo-theme-next">theme-next/hexo-theme-next</a><br />
打开 Blog 文件夹，右键 Git
Bash，输入<code>git clone https://github.com/theme-next/hexo-theme-next themes/next</code>将
NexT 主题下载到目录 Blog/themes<br />
<img src="https://s2.loli.net/2022/07/17/Hi2o57eu8lZkmQ6.jpg" /> <img
src="https://s2.loli.net/2022/07/17/Eo87KLSrBa6VUsn.png" /> 打开 Blog
下的 _config.yml
(称为<strong>站点配置文件</strong>)，找到并修改以下内容<strong>（注意冒号后都要有空格）</strong>：
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Site</span></span><br><span class="line">title: ZCW_Blog			<span class="comment">#标题</span></span><br><span class="line">subtitle: <span class="string">&#x27; &#x27;</span></span><br><span class="line">description: <span class="string">&#x27; &#x27;</span>		<span class="comment">#简介或者格言</span></span><br><span class="line">keywords:</span><br><span class="line">author: reman			<span class="comment">#作者</span></span><br><span class="line">language: zh-HK			<span class="comment">#主题语言</span></span><br><span class="line">timezone: Asia/Shanghai	<span class="comment">#中国的时区</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Extensions</span></span><br><span class="line"><span class="comment">## Plugins: https://hexo.io/plugins/</span></span><br><span class="line"><span class="comment">## Themes: https://hexo.io/themes/</span></span><br><span class="line">theme: next   <span class="comment">#主题改为next</span></span><br></pre></td></tr></table></figure> 主题语言可以在 themes/next/language 中查看，我选的是
zh-CN（简体中文），同时我在博客中加入了一键切换繁/简体的功能，具体可参考
<img src="https://s2.loli.net/2022/07/17/ATIvJ921qtlDfN7.png" /><br />
next主题有四种： Muse 、 Mist 、 Pisces 、 Gemini ，预览可参考<a
href="https://www.jianshu.com/p/e7e67b900db4">2019-03-06
NexT四种主题</a>，跟现在的差别不是很大<br />
我选的是 Gemini（默认主题是Muse），打开 Blog/themes/next/ 下的
_config.yml（称为<strong>主题配置文件</strong>），将你选的主题前的注释（#）删除就行了，注意只能选一个，不选的主题要注释掉，不然会报错<br />
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Schemes</span></span><br><span class="line"><span class="comment">#scheme: Muse</span></span><br><span class="line"><span class="comment">#scheme: Mist</span></span><br><span class="line"><span class="comment">#scheme: Pisces</span></span><br><span class="line">scheme: Gemini</span><br></pre></td></tr></table></figure> 回到根目录 Blog 打开 Git
Bash，分别输入如下三条命令：<br />
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure> 完成后打开你的博客查看即可。<br />
注：由于网络问题 hexo d 的时候可能会报错，hexo 三部曲多试几次就行了</p>
<h2 id="next主题优化">NexT主题优化</h2>
<p><a
href="https://zcw-blog.top/posts/20220424a1/">Hexo+NexT配置优化指南</a></p>
]]></content>
      <categories>
        <category>维护日志</category>
      </categories>
      <tags>
        <tag>搭建博客</tag>
      </tags>
  </entry>
  <entry>
    <title>博客创作出现报错解决</title>
    <url>/posts/20220817a1/</url>
    <content><![CDATA[<div class="note "><p>书写博客时出现以下报错的原因及解决方法：</p>
<ul>
<li>Template render error: (unknown path)<br />
</li>
<li>err: YAMLException: incomplete explicit mapping pair; a key node is
missed; or followed by a non-tabulated empty line</li>
</ul>
</div>
<span id="more"></span>
<h2 id="报错-template-render-error-unknown-path">报错 Template render
error: (unknown path)</h2>
<p>今天书写博客时，出现了报错 Template render error: (unknown path)：
<img src="https://s2.loli.net/2022/08/17/x97uDhPUQBqX2w8.png" /></p>
<h3 id="原因">原因</h3>
<p>经过查找，发现是因为使用 note 标签没有正确结束，即出现了 unexpected
end，故报错。<br />
另外可能的原因：出现了<code>&#123;&#123;&#125;&#125;</code> <code>&#123;% %&#125;</code>
<code>&#123;#</code>等等 hexo 无法转义的字符。</p>
<h3 id="解决方法">解决方法</h3>
<ul>
<li>使用 note 标签时注意要正确结束： <figure class="highlight html"><table><tr><td class="code"><pre><span class="line">&#123;% note %&#125;</span><br><span class="line">content</span><br><span class="line">&#123;% endnote %&#125;	#一定要有 endnote</span><br></pre></td></tr></table></figure></li>
<li>避免使用 hexo 无法转义的字符串。</li>
</ul>
<h2
id="报错-err-yamlexception-incomplete-explicit-mapping-pair-a-key-node-is-missed-or-followed-by-a-non-tabulated-empty-line">报错
err: YAMLException: incomplete explicit mapping pair; a key node is
missed; or followed by a non-tabulated empty line</h2>
<p><img src="https://s2.loli.net/2022/08/17/QmST9Utvn8CPlhM.png" /></p>
<h3 id="原因-1">原因</h3>
<p>文章的 title 有非法字符，如英文冒号“:”。</p>
<h3 id="解决">解决</h3>
<p>修改文章名或将英文冒号“:”改为中文冒号“：”。</p>
]]></content>
      <categories>
        <category>维护日志</category>
        <category>创作</category>
      </categories>
      <tags>
        <tag>Hexo</tag>
      </tags>
  </entry>
  <entry>
    <title>积化和差、和差化积公式</title>
    <url>/posts/20211001a1/</url>
    <content><![CDATA[<div class="note "><p>本文主要用于测试 mathjax 渲染功能。<br />
关于如何添加 Hexo 博客的 mathjax 渲染功能，可见<a
href="https://zcw-blog.top/posts/20220424a1/#%E6%B8%B2%E6%9F%93-mathjax">Hexo
+ NexT 配置优化指南——渲染 mathjax</a>。</p>
</div>
<p><span id="more"></span></p>
<h2 id="和差化积">和差化积</h2>
<p><span class="math display">\[
\sin x+\sin y=2 \sin \frac{x+y}{2} \cos \frac{x-y}{2}
\]</span> <span class="math display">\[
\sin x-\sin y=2 \cos \frac{x+y}{2} \sin \frac{x-y}{2}
\]</span> <span class="math display">\[
\cos x+\cos y=2 \cos \frac{x+y}{2} \cos \frac{x-y}{2}
\]</span> <span class="math display">\[
\cos x-\cos y=-2 \sin \frac{x+y}{2} \sin \frac{x-y}{2}
\]</span></p>
<h2 id="积化和差">积化和差</h2>
<p><span class="math display">\[
\sin x \sin y=-\frac{1}{2}[\cos (x+y)-\cos (x-y)]
\]</span> <span class="math display">\[
\cos x \cos y=\frac{1}{2}[\cos (x+y)+\cos (x-y)]
\]</span> <span class="math display">\[
\sin x \cos y=\frac{1}{2}[\sin (x+y)+\sin (x-y)]
\]</span></p>
<p>辅助记忆口诀：</p>
<p>正加正，正在前，余加余，余并肩</p>
<p>正减正，余在前，余减余，负正弦</p>
]]></content>
  </entry>
  <entry>
    <title>观赛|世锦赛1/8</title>
    <url>/posts/20220825clvgvrsit003ifsf9gw1k4dre/</url>
    <content><![CDATA[<div class="note "><p>今日是2022羽毛球世锦赛1/8赛程，在优酷看了几场直播，都有些挑战心理承受能力了。</p>
</div>
<span id="more"></span>
<h2 id="女单">女单</h2>
<h3 id="陈雨菲-vs-李美妙">陈雨菲 VS 李美妙</h3>
<p><img src="https://pic.imgdb.cn/item/6307a1e516f2c2beb1771c97.png" />
由于优酷无信号，等到比赛结束后才知道比赛情况，中间虽有点小起伏，但是雨菲大帝还是拿到了胜利！下一场的对手是战胜了因达农的加拿大华裔选手李文珊。</p>
<h3 id="何冰娇-vs-马林">何冰娇 VS 马林</h3>
<p><img src="https://pic.imgdb.cn/item/6307a20116f2c2beb177272a.png" />
马林是里约奥运金牌得主、三届世锦赛冠军，此前七次交手记录，娇娇六负一胜，赛前便已经可以料想肯定是一番苦战。<br />
娇娇率先拿下一局，而马林则是在第二局打出了气势，扳平比分。<br />
在决胜局的争夺中，分差虽有变化，但是娇娇一直保持领先，最后更是连得 3
分拿到赛点，还是 20-16 的大优局面！（激动得差点喊出来）<br />
没想到接下来竟然连丢 6 分，被马林逆转！！！连丢 4
个赛点，实在是可惜。o(≧口≦)o<br />
娇娇的心态可能确实需要磨砺提高，手握 4
个赛点的情况下心态反而把持不住，送出了好几个失误，反观马林心态也是真好啊。</p>
<h2 id="男单">男单</h2>
<h3 id="赵俊鹏-vs-李梓嘉">赵俊鹏 VS 李梓嘉</h3>
<p><img src="https://pic.imgdb.cn/item/6307a21216f2c2beb1772ea3.png" />
下午迟了一些打开直播，第一局已经结束，赵俊鹏以 21-19
险胜，还是有一点出乎意料的。<br />
接下来李梓嘉则以一记重杀 21-11
拿下了第二局，由于重心都放在隔壁的比赛上，第二局也没有这么认真看。（不过李梓嘉的重杀可太快了，称得上暴力美学
(☆▽☆)）<br />
到了第三局决胜局，双方的争夺非常激烈，也体现在极为胶着的比分上，但在
15-15
后，不知是否是心态上起伏的影响，李梓嘉的进攻并没有取得很好的效果，而赵俊鹏抓住机会，以和第一局一样结束了李梓嘉本次的世锦赛之旅。<br />
不管李梓嘉如何，赵俊鹏的进步真的肉眼可见，相较于之前我看的印尼<del>大师赛</del>公开赛，控球、球路组织还有心态各方面给人感觉都稳健了不少。</p>
<h3 id="石宇奇-vs-金廷">石宇奇 VS 金廷</h3>
<p><img src="https://pic.imgdb.cn/item/6307a22e16f2c2beb17738c0.png" />
真是可惜！！！<br />
一天两场，我的小心脏受不住啊。 ┭┮﹏┭┮<br />
进直播晚了一些，第一局眼见要丢。不过第二局马上调整，以极佳状态拿下，让我不禁连拍好几下桌子！<br />
决胜局也是精彩非常，不得不说石头的球商挺高，球风也挺好看，而且对手还是速度快变化多的金廷。在
20-17
拿到赛点时，加上赵俊鹏那边也传来捷报，我兴奋得快站起来了。但是赛场上总是充满戏剧性，石头接下来连丢
5 分，基本上都是主动失误，令人深深惋惜。<br />
石头从上次颇有争议的退赛之后，久疏赛场近一年，而且前两场的对手感觉也没有给他很大的比赛压力，不免有些担心。但是之前对金廷六战全胜，总体还是充满信心的。现在只有惋惜两字作结。</p>
<h3 id="昆拉武特-vs-西本拳太">昆拉武特 VS 西本拳太</h3>
<p>昆拉武特真的少年老成！<br />
那打法在当前新生代中算是比较少吧。昨天和奈良冈功大两局打了
69min，属实罕见，把我看困了都。
打西本拳太也基本没什么悬念，2:0拿下。<br />
不知明天对战骆建佑会是怎样的一场比赛，毕竟完全是两样打法（感觉昆拉武特赢面较大），骆建佑的进攻可以用疯狂来形容，但也是真的帅。年轻人谁不想杀杀杀呢，奈何我杀球质量太差，唉。<br />
8.26：昆拉武特 2:1
骆建佑，昆控的太稳了，出球质量也很高，骆的失误挺多的，整场比赛感觉大部分时候都是在昆的节奏里。</p>
<h2 id="一些话">一些话</h2>
<p>自从东京奥运会后，国羽男单一直无人抗大旗，石宇奇这次复出也被寄予了许多期望（可惜龙哥没有参加）。石宇奇也是一直扛着伤病在打球，这次状态也算不错，只是最后可惜了一些。但是这也让我看到了更多中国选手的拼搏，李诗沛、翁泓阳、赵俊鹏...都搏得过不错的成绩。赛场上，乾坤皆未定。<br />
今天娇娇和石头两场真的真的让我无比惋惜，越到关键时刻越要沉得住稳得下，这对我的生活也颇有启发。<br />
我也想起之前尤伯杯雨菲对战安洗莹那一场，很庆幸当时看了这场比赛的直播，它带给我的是无与伦比的震撼：当两位选手都已经精疲力竭时，比赛已成为意志的比拼。体育的精神，是拼搏的精神。胜利，不仅是技战术的胜利，也是强大意志的胜利。</p>
]]></content>
      <categories>
        <category>羽毛球</category>
      </categories>
      <tags>
        <tag>羽毛球</tag>
      </tags>
  </entry>
</search>
