<?xml version="1.0" encoding="utf-8"?>
<search>
  <entry>
    <title>DIY最低成本图床</title>
    <url>/posts/11159.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="backblaze"><a href="#backblaze" class="headerlink" title="backblaze"></a>backblaze</h2><p>我在使用了许许多多的图床后一直没有很好的解决方案</p>
<p>我早期使用过了jsd+github的图床，但是因为jsd的icp备案被注销，且不能使用国内的cdn节点，这个方法随之不可用了</p>
<p>后来我将cdn仓库通过npm发包，并且使用知乎和饿了么的加速服务，但是知乎添加的白名单而不可用，随后饿了么也停止了服务，但是后来又重启了服务</p>
<p>这几个方案的潜在不稳定性告诉我，迫切需要一个自建的图床</p>
<p>不久我在cyfan的博客中发现了Backblaze自建图床的方案</p>
<blockquote>
<p>2015年9月，Backblaze推出了新产品B2 Cloud Storage。作为基础架构即服务（IaaS），它的目标是软件集成（尽管也提供Web前端和API）。它直接与类似服务Amazon S3，Microsoft Azure和Google Cloud竞争。在2018年4月，Backblaze宣布了云计算合作伙伴关系，它将直接将Backblaze的数据中心与其合作伙伴Packet和ServerCentral连接起来，为存储在B2 Cloud Storage中的数据提供高性能的云计算，而无需支付任何费用。</p>
</blockquote>
<p>B2 Cloud Storage非常客气，有以下优点：</p>
<ul>
<li>用户永久免费<strong>10GB</strong>直链存储</li>
<li>每天<strong>1GB</strong>下行流量</li>
<li>无限量的上传流量</li>
<li>每天下载请求<strong>2500</strong>次免费</li>
<li>每天上传请求<strong>2500</strong>次免费</li>
<li>基于CloudFlareCDN</li>
</ul>
<p>而且超出免费额度的价钱也十分合理【不过我不会往里头冲一分钱的！】 <a href="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg"><img src="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg" class="lazyload" data-srcset="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20100931.jpg"></a></p>
<p>然而我偶然得知，Backblaze加入了CloudFlare的 <a href="https://www.cloudflare.com/bandwidth-alliance/">带宽联盟（ Bandwidth Alliance）</a> Backblaze与CloudFlare之间的流量直接免费，也就是每天<strong>无限量</strong>下行流量，配上CloudFlare超长缓存，每天下载请求无限次免费。</p>
</div><div class="story post-story"><h2 id="注册"><a href="#注册" class="headerlink" title="注册"></a>注册</h2><p>我们点击<a href="https://www.backblaze.com/zh_CN/cloud-storage.html">这里</a>去注册一个账号，建议使用google账号注册，会更加方便</p>
<p><img src="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20101845.jpg" class="lazyload" data-srcset="https://npm.elemecdn.com/chenyfan-oss@1.0.0/pic/postpic/2020-07-09%20101845.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<h3 id="新建桶"><a href="#新建桶" class="headerlink" title="新建桶"></a>新建桶</h3><p><img src="https://cdn.chuqis.com/img/139f85370f4bba46aa0fd4dba32d3d8b.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/139f85370f4bba46aa0fd4dba32d3d8b.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/139f85370f4bba46aa0fd4dba32d3d8b.jpg"></p>
<p>新建一个桶，设置为公开：</p>
<p>上传一个文件，点击右边的信息按钮，我们要在这里获取一些信息：</p>
<p><img src="https://cdn.chuqis.com/img/da3fd7366e8d1026b23d1ec85439ea4e.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/da3fd7366e8d1026b23d1ec85439ea4e.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/da3fd7366e8d1026b23d1ec85439ea4e.jpg"></p>
</div><div class="story post-story"><h2 id="自定义域名"><a href="#自定义域名" class="headerlink" title="自定义域名"></a>自定义域名</h2><p>这一步需要你有个域名，开个子域给图床：</p>
<p>看到你上面的friendly url，把他的域名f00x.backblaze2.com解析到你想要的域名</p>
<p>这里我们先去<code>Cloudflare</code>新建一个<code>workers</code></p>
<p>代码如下</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#x27;use strict&#x27;;</span><br><span class="line">const b2Domain = &#x27;assets.qystudio.ml&#x27;; // configure this as per instructions above</span><br><span class="line">const b2Bucket = &#x27;qystupic&#x27;; // configure this as per instructions above</span><br><span class="line">const b2UrlPath = `/file/$&#123;b2Bucket&#125;/`;</span><br><span class="line">addEventListener(&#x27;fetch&#x27;, event =&gt; &#123;</span><br><span class="line">	return event.respondWith(fileReq(event));</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line">// define the file extensions we wish to add basic access control headers to</span><br><span class="line">const corsFileTypes = [&#x27;png&#x27;, &#x27;jpg&#x27;, &#x27;gif&#x27;, &#x27;jpeg&#x27;, &#x27;webp&#x27;, &#x27;css&#x27;, &#x27;js&#x27;, &#x27;html&#x27;];</span><br><span class="line"></span><br><span class="line">// backblaze returns some additional headers that are useful for debugging, but unnecessary in production. We can remove these to save some size</span><br><span class="line">const removeHeaders = [</span><br><span class="line">	&#x27;x-bz-content-sha1&#x27;,</span><br><span class="line">	&#x27;x-bz-file-id&#x27;,</span><br><span class="line">	&#x27;x-bz-file-name&#x27;,</span><br><span class="line">	&#x27;x-bz-info-src_last_modified_millis&#x27;,</span><br><span class="line">	&#x27;X-Bz-Upload-Timestamp&#x27;,</span><br><span class="line">	&#x27;Expires&#x27;</span><br><span class="line">];</span><br><span class="line">const expiration = 31536000; // override browser cache for images - 1 year</span><br><span class="line"></span><br><span class="line">// define a function we can re-use to fix headers</span><br><span class="line">const fixHeaders = function(url, status, headers)&#123;</span><br><span class="line">	let newHdrs = new Headers(headers);</span><br><span class="line">	// add basic cors headers for images</span><br><span class="line">	if(corsFileTypes.includes(url.pathname.split(&#x27;.&#x27;).pop()))&#123;</span><br><span class="line">		newHdrs.set(&#x27;Access-Control-Allow-Origin&#x27;, &#x27;*&#x27;);</span><br><span class="line">	&#125;</span><br><span class="line">	// override browser cache for files when 200</span><br><span class="line">	if(status === 200)&#123;</span><br><span class="line">		newHdrs.set(&#x27;Cache-Control&#x27;, &quot;public, max-age=&quot; + expiration);</span><br><span class="line">	&#125;else&#123;</span><br><span class="line">		// only cache other things for 5 minutes</span><br><span class="line">		newHdrs.set(&#x27;Cache-Control&#x27;, &#x27;public, max-age=300&#x27;);</span><br><span class="line">	&#125;</span><br><span class="line">	// set ETag for efficient caching where possible</span><br><span class="line">	const ETag = newHdrs.get(&#x27;x-bz-content-sha1&#x27;) || newHdrs.get(&#x27;x-bz-info-src_last_modified_millis&#x27;) || newHdrs.get(&#x27;x-bz-file-id&#x27;);</span><br><span class="line">	if(ETag)&#123;</span><br><span class="line">		newHdrs.set(&#x27;ETag&#x27;, ETag);</span><br><span class="line">	&#125;</span><br><span class="line">	// remove unnecessary headers</span><br><span class="line">	removeHeaders.forEach(header =&gt; &#123;</span><br><span class="line">		newHdrs.delete(header);</span><br><span class="line">	&#125;);</span><br><span class="line">	return newHdrs;</span><br><span class="line">&#125;;</span><br><span class="line">async function fileReq(event)&#123;</span><br><span class="line">	const cache = caches.default; // Cloudflare edge caching</span><br><span class="line">	const url = new URL(event.request.url);</span><br><span class="line">	if(url.host === b2Domain &amp;&amp; !url.pathname.startsWith(b2UrlPath))&#123;</span><br><span class="line">		url.pathname = b2UrlPath + url.pathname;</span><br><span class="line">	&#125;</span><br><span class="line">	let response = await cache.match(url); // try to find match for this request in the edge cache</span><br><span class="line">	if(response)&#123;</span><br><span class="line">		// use cache found on Cloudflare edge. Set X-Worker-Cache header for helpful debug</span><br><span class="line">		let newHdrs = fixHeaders(url, response.status, response.headers);</span><br><span class="line">		newHdrs.set(&#x27;X-Worker-Cache&#x27;, &quot;true&quot;);</span><br><span class="line">		return new Response(response.body, &#123;</span><br><span class="line">			status: response.status,</span><br><span class="line">			statusText: response.statusText,</span><br><span class="line">			headers: newHdrs</span><br><span class="line">		&#125;);</span><br><span class="line">	&#125;</span><br><span class="line">	// no cache, fetch image, apply Cloudflare lossless compression</span><br><span class="line">	response = await fetch(url, &#123;cf: &#123;polish: &quot;lossless&quot;&#125;&#125;);</span><br><span class="line">	let newHdrs = fixHeaders(url, response.status, response.headers);</span><br><span class="line"></span><br><span class="line">  if(response.status === 200)&#123;</span><br><span class="line"></span><br><span class="line">    response = new Response(response.body, &#123;</span><br><span class="line">      status: response.status,</span><br><span class="line">      statusText: response.statusText,</span><br><span class="line">      headers: newHdrs</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125;else&#123;</span><br><span class="line">    response = new Response(&#x27;File not found!&#x27;, &#123; status: 404 &#125;)</span><br><span class="line">  &#125;</span><br><span class="line"></span><br><span class="line">	event.waitUntil(cache.put(url, response.clone()));</span><br><span class="line">	return response;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>然后在workers的触发器里面找到路由设置为 <code>域名/*</code></p>
<p>到这里我们离成功只有一步之遥</p>
</div><div class="story post-story"><h2 id="配置缓存"><a href="#配置缓存" class="headerlink" title="配置缓存"></a>配置缓存</h2><h3 id="储存桶设置"><a href="#储存桶设置" class="headerlink" title="储存桶设置"></a>储存桶设置</h3><p>我们打开这里</p>
<p><img src="https://cdn.chuqis.com/img/e68f1676e4b19b20964509662f00beb1.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/e68f1676e4b19b20964509662f00beb1.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/e68f1676e4b19b20964509662f00beb1.png"></p>
<p>点击桶，进入桶设定：</p>
<p><img src="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg"></p>
<p>里头写上:</p>
<p><code>&#123;&quot;cache-control&quot;:&quot;max-age=43200000&quot;&#125;</code></p>
<p>这个意思是强制缓存 43200000 ,大约是50天.然而这里注意一下，时间太长有个问题，你修改一张图片，外面可以能要50天才能更改，这样只能通过手动清除缓存做到了。</p>
<p>点击CORS设置,选择:</p>
<p>与所有HTTPS来源共享此存储桶中的所有内容。</p>
<h3 id="cf缓存设置"><a href="#cf缓存设置" class="headerlink" title="cf缓存设置"></a>cf缓存设置</h3><p>在域名里面找到规则，新建规则如下设置</p>
<p><img src="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/9d25ac6ef84af13c6bf1e41c44fc2f97.jpg"></p>
<p>到这里我们就大功告成了，完结撒花</p>
</div><div class="story post-story"><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2><p>你甚至还可以配置国内cdn回源到这里，以提升速度</p>
<p>就像这样</p>
<p><img src="https://cdn.chuqis.com/img/228be3eb21e55bde29a1fff1e13f8d0e.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/228be3eb21e55bde29a1fff1e13f8d0e.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/228be3eb21e55bde29a1fff1e13f8d0e.png"></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方���</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li><li><a href="https://www.qystu.cc/posts/34886.html">github图床之弃用jsd(图床���用npm镜像加速)</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>hexo</category>
        <category>建站</category>
      </categories>
      <tags>
        <tag>hexo</tag>
        <tag>图床</tag>
      </tags>
  </entry>
  <entry>
    <title>Windows 10 21H2 太阳谷更新镜像发布</title>
    <url>/posts/78415.html</url>
    <content><![CDATA[<p>微软将于2021年下半年推出Windows 10大更新，代号叫“太阳谷”更新</p>
<div class="img-wrap"><div class="img-bg"><img class="img lazyload" src="https://tva1.sinaimg.cn/large/008eGmZEly1gph6kwkgfbj30jg0but8u.jpg" class="lazyload" data-srcset="https://tva1.sinaimg.cn/large/008eGmZEly1gph6kwkgfbj30jg0but8u.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image"/></div></div>

<p>关于这个话题，撰写帖子了，比如：界面大变样，微软Win10太阳谷概念图曝光</p>
<p>但这些资讯大都来自国外网站，只可惜微软一直没提供镜像下载，因此没办法实际上手体验。</p>
<p>不过，就在4月11日，微软开放了Win10 Build 21354 ISO镜像下载，也就是俗称的21H2，这个版本即将于2021年下半年推送给大众。</p>
<p>我们第一时间下载并体验了，下面就一些情况进行说明。</p>
<div class="story post-story"><h2 id="一、下载"><a href="#一、下载" class="headerlink" title="一、下载"></a>一、下载</h2><p>下载页面：<a href="https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso">https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso</a></p>
<p>电脑浏览器访问上面的网址，然后拉到网页下方，从Select edition里选择Windows 10 Insider Preview (Dev Channel) - Build 21354：</p>
<p>从语言里选择Chinese Simplified，然后点击Confirm：</p>
<p>然后就可以得到最新测试版镜像了，注意链接有时效性，得到链接后尽快下载，推荐使用IDM或者迅雷进行下载：</p>
</div><div class="story post-story"><h2 id="二、安装"><a href="#二、安装" class="headerlink" title="二、安装"></a>二、安装</h2><p>由于是测试版系统，因此推荐大家在虚拟机里安装测试，并不推荐在实体机上安装，毕竟在实体机上遇到系统bug，将会是一件很难受的事情。</p>
<p>Windows系统：可以使用VMWare Workstation或者VirtualBox等虚拟机<br>macOS系统：可以使用Parallels Desktop、VMware Fusion或者VirtualBox等虚拟机</p>
</div><div class="story post-story"><h2 id="三、体验"><a href="#三、体验" class="headerlink" title="三、体验"></a>三、体验</h2><h3 id="1、新图标"><a href="#1、新图标" class="headerlink" title="1、新图标"></a>1、新图标</h3><p>装完系统最大的感受，就是图标换了：</p>
<p>用户文件、控制面板、此电脑、回收站图标均进行了较大改动：</p>
<p>视频、图片、文档、下载、音乐、桌面等6个图标都进行了修改，同时取消了3D模型的文件夹</p>
<p>文件夹图标更换了新样式，更“黄”了，有木有：</p>
<p>以列表样式查看文件夹，文件夹之间的间隔更大了：</p>
<p>控制面板、命令提示符、运行的新图标：</p>
<p>控制面板里也采用了新样式：</p>
<h3 id="2、开始菜单"><a href="#2、开始菜单" class="headerlink" title="2、开始菜单"></a>2、开始菜单</h3><p>开始菜单里的通用应用，也全部更换了新的图标：</p>
<h3 id="3、预装软件"><a href="#3、预装软件" class="headerlink" title="3、预装软件"></a>3、预装软件</h3><p>预装软件和之前版本的系统，有所变化。</p>
<p>除了图片查看器、音视频播放器、小娜、计算器、便签、邮件等常规应用之外，删除了3D模型，但增加安装了Microsoft Whiteboard、Microsoft TO DO、Microsoft资讯。其中Microsoft Whiteboard和Microsoft TO DO需要登录Microsoft账户之后才能使用，Microsoft资讯打开就能用，不需要登录。</p>
<p>Microsoft Whiteboard是一个白板应用，简单来说，就是可以在里面涂涂画画，对于一些从事于教育行业的人士来说，可能有点用处，给学生画图做演示。</p>
<p>多说一句，微软白板应用Android和iOS版同样也上架了Google Play Store和Apple App Store，需要的用户可以去下载使用。不过现在好像还在内测阶段。</p>
<p>Microsoft TO DO是个免费的待办事项软件，是微软收购的，它同样也有各大平台的版本，包括Android、iOS、macOS版。</p>
<p>Microsoft资讯，就是个资讯合集软件，资讯分类还是很全的，娱乐、新闻、生活、财经、教育、科技等等。</p>
<p>其实在Win8、Win8.1系统里，资讯是默认内置在系统里的，后来在Win10 TH1（Build 10240）里取消了，现在Win10 21H2（Build 21354）版本又加回来了。</p>
<h3 id="4、任务栏"><a href="#4、任务栏" class="headerlink" title="4、任务栏"></a>4、任务栏</h3><p>21H2版本的任务栏，新增了两个项目，分别是“News and interests”、“Pen button”，由于这还是测试版系统，这两个项目都没有翻译。</p>
<p>萝卜哥帮大家翻译一下，这两个新增的分别是“新闻和兴趣”、“笔按钮”。其中，“新闻和兴趣”默认是勾选的，“笔按钮”需要手动开启才会显示。</p>
<p>“新闻和兴趣”：它默认显示的是当地的天气。如果点击一下这个天气图标，就会弹出资讯。</p>
<p>“笔按钮”：点一下这个按钮，就会显示白板和截图的按钮。另外，在系统设置里，也可以对笔进行进一步详细的设定。</p>
</div><div class="story post-story"><h2 id="四、建议"><a href="#四、建议" class="headerlink" title="四、建议"></a>四、建议</h2><p>正如前面说过，Win10 Build 21354还是测试版本，不建议大家在实体机上安装。测试版往往有比较多的bug，在虚拟机里玩玩就好，提前体验一下即将发布的新系统，过过瘾就好</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/63659.html">window上帝模式</a></li><li><a href="https://www.qystu.cc/posts/35934.html">数字基础设施开源操作系统欧拉全新发布</a></li><li><a href="https://www.qystu.cc/posts/18567.html">华为宣布将发布操作系统openEuler欧拉</a></li><li><a href="https://songxwn.com/ipv6-Windows/">Windows上的IPv6</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>系统</category>
      </categories>
      <tags>
        <tag>windows</tag>
        <tag>系统</tag>
      </tags>
  </entry>
  <entry>
    <title>初七云测评</title>
    <url>/posts/25124.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="初七云怎么样"><a href="#初七云怎么样" class="headerlink" title="初七云怎么样"></a>初七云怎么样</h2><blockquote>
<p><a href="https://www.chuqiyun.com/aff/IDRGMZMW">初七云</a>怎么样？<a href="https://www.chuqiyun.com/aff/IDRGMZMW">初七云</a>是一家国人主机商，提供 VPS、CDN 等，数据中心包括中国香港、美国等，国内直连优化或者 CN2 GIA 等优秀线路，还有 CERA 低价服务器。</p>
</blockquote>
<p><a href="https://www.chuqiyun.com/aff/IDRGMZMW">初七云</a>中 VPS 包括常规 VPS (经典轻量云服务器) 和 ECS (弹性云)，支持自定义配置。</p>
<p><a href="https://www.chuqiyun.com/aff/IDRGMZMW">初七云</a>致力于创新IDC业内新平台，目前真正研发全新IDC财务结算系统，CDN插件，智慧虚拟主机管理系统，IDS网络管理系统</p>
<p>同时我们希望可以与业内同行互利共赢，实现IDC行业健康规范发展</p>
<p><img src="https://cdn.chuqis.com/img/37a45efb11ae5548148700f194128686.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/37a45efb11ae5548148700f194128686.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/37a45efb11ae5548148700f194128686.png"></p>
</div><div class="story post-story"><h2 id="官方网站"><a href="#官方网站" class="headerlink" title="官方网站"></a>官方网站</h2><p><a href="https://www.chuqiyun.com/aff/IDRGMZMW">https://www.chuqiyun.com/</a></p>
</div><div class="story post-story"><h2 id="最新特惠活动"><a href="#最新特惠活动" class="headerlink" title="最新特惠活动"></a>最新特惠活动</h2><p><img src="https://www.mryunqi.com/wp-content/uploads/2023/01/1675161489-%E7%94%BB%E6%9D%BF-1-1024x493.png" class="lazyload" data-srcset="https://www.mryunqi.com/wp-content/uploads/2023/01/1675161489-%E7%94%BB%E6%9D%BF-1-1024x493.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>活动一：</p>
<ul>
<li>华中高防16-32 180月 续费同价</li>
<li>不限量 66 折・骨折码：[qystu] (所有产品)</li>
<li>全球加速体验版 月流量：20G 域名：3 防护：自定义 网站预热： 支持 全球多节点负载</li>
</ul>
<p>活动二：</p>
<ul>
<li>aff推介计划 新购返点7%以上，更多查看官网</li>
<li>代理75折 5元永久</li>
</ul>
</div><div class="story post-story"><h2 id="香港精品云"><a href="#香港精品云" class="headerlink" title="香港精品云"></a>香港精品云</h2><p>包括CTG GIA等线路 大陆方向优化</p>
<p>评论获取6折码</p>
<p>10-16评论获取99折扣码</p>
<p><img src="https://cdn.chuqis.com/img/c6031c890ce5726fcc8dbef6d4af2dd4.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/c6031c890ce5726fcc8dbef6d4af2dd4.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/c6031c890ce5726fcc8dbef6d4af2dd4.png"></p>
</div><div class="story post-story"><h2 id="纽约服务器"><a href="#纽约服务器" class="headerlink" title="纽约服务器"></a>纽约服务器</h2><p>低价钜惠 线路优秀 利好建站</p>
<p><img src="https://cdn.chuqis.com/img/fcb66aff0fc673e38db85fdb3be8646f.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/fcb66aff0fc673e38db85fdb3be8646f.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="纽约服务器"></p>
</div><div class="story post-story"><h2 id="蜂鸟云桌面"><a href="#蜂鸟云桌面" class="headerlink" title="蜂鸟云桌面"></a>蜂鸟云桌面</h2><p>全新技术，支持显卡云桌面，欢迎对接</p>
<h3 id="普通体验型"><a href="#普通体验型" class="headerlink" title="普通体验型"></a>普通体验型</h3><p><img src="https://cdn.chuqis.com/img/e5b72cdd660cc26ca25b89ff235197cf.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/e5b72cdd660cc26ca25b89ff235197cf.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="蜂鸟服务器"></p>
<h3 id="gcc显卡云"><a href="#gcc显卡云" class="headerlink" title="gcc显卡云"></a>gcc显卡云</h3><p><img src="https://cdn.chuqis.com/img/22094522cf4b56e6ad3b416c87ee4c07.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/22094522cf4b56e6ad3b416c87ee4c07.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="gcc显卡云"></p>
<h3 id="gcpm高性能（适合各种游戏、软件、直播、模拟器多开、虚拟机多开、渲染、模型训练等）"><a href="#gcpm高性能（适合各种游戏、软件、直播、模拟器多开、虚拟机多开、渲染、模型训练等）" class="headerlink" title="gcpm高性能（适合各种游戏、软件、直播、模拟器多开、虚拟机多开、渲染、模型训练等）"></a>gcpm高性能（<strong>适合各种游戏、软件、直播、模拟器多开、虚拟机多开、渲染、模型训练等</strong>）</h3><p><img src="https://cdn.chuqis.com/img/fdca154c89da57f7377fd38ce34b1cab.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/fdca154c89da57f7377fd38ce34b1cab.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="gcpm高性能服务器"></p>

</div>]]></content>
      <tags>
        <tag>初七云</tag>
        <tag>IDC</tag>
      </tags>
  </entry>
  <entry>
    <title>github图床之弃用jsd(图床使用npm镜像加速)</title>
    <url>/posts/34886.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="缘起"><a href="#缘起" class="headerlink" title="缘起"></a>缘起</h2><p>2021/12/20日，赶在旧年的末尾，一则<code>JSdelivrSSL证书错误</code>缓缓上了v2ex论坛热点。</p>
<p>此前JSD由于各种原因,曾经不正常了一段时间,所以大家并未对此感冒.正当人们以为这只是JSdelivr每年一度的<code>年经</code>阵痛,发个issue,过一段时间就好了的时候.官方直接爆出大料:<strong>JSDelivr had lost their ICP license</strong></p>
<p><img src="https://bu.dusays.com/2022/02/12/100b30b854826.png" class="lazyload" data-srcset="https://bu.dusays.com/2022/02/12/100b30b854826.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://bu.dusays.com/2022/02/12/100b30b854826.png"></p>
<p>由此可见,过去的几年里,当人们发现JSD对个人面向国内加速拥有者无与伦比的效果时,各种滥用方式层出不穷:图床曾一阵流行,国内搜索引擎JSdelivr十有八九都是作为图床的,连PicGo插件都出了Github+JSdelivr图床;猛一点的,直接做视频床,甚至为了突破单文件20M限制开发了一套ts切片m3u8一条龙服务;作妖的,托管了不少突破网络审查的脚本和规则集;寻死的,添加了大量的政治宗教敏感,有些甚至不配称为宗教,直接上来就是骗钱的.</p>
<p>jsd并不是没有发布许可条款，但这并不能阻止白嫖大军的进程。在羊毛大军中，只要是你是免费的、公益的，你就要做好被薅爆的结果。但是薅羊毛的前提是羊还活着，倘若羊被薅死了，哪来的羊毛给诸君所薅？</p>
<p>总之，不管怎样，JSDelivr在决定将节点设置为<code>NearChina</code>，可以肯定的是，在最近很长一段时间内，我们都无法享受国内外双料同时加速的快感，换句话说，jsd在中国就被永久地打入了冷宫。</p>
</div><div class="story post-story"><h2 id="npm发包"><a href="#npm发包" class="headerlink" title="npm发包"></a>npm发包</h2><h3 id="Before-Start"><a href="#Before-Start" class="headerlink" title="Before Start"></a>Before Start</h3><p>那么我们怎么才能继续愉快的使用cdn加速呢</p>
<ul>
<li>jsd</li>
<li>反代</li>
<li>npm</li>
</ul>
<h3 id="自建cdn"><a href="#自建cdn" class="headerlink" title="自建cdn"></a>自建cdn</h3><p>绝对不可能😭 ，这太费钱包了</p>
<h3 id="npm发包-1"><a href="#npm发包-1" class="headerlink" title="npm发包"></a>npm发包</h3><p>将github的cdn仓库编辑一个action使其在每次更新文件时把文件打包到npm仓库里</p>
<p>说做就做</p>
<h4 id="workflows"><a href="#workflows" class="headerlink" title="workflows"></a>workflows</h4><figure class="highlight yml"><table><tr><td class="code"><pre><span class="line"><span class="string">name:</span> <span class="string">npm-publish</span> </span><br><span class="line"> </span><br><span class="line"><span class="attr">on:</span> </span><br><span class="line">  <span class="attr">push:</span> </span><br><span class="line">    <span class="attr">branches:</span> </span><br><span class="line">      <span class="string">-</span> <span class="string">main</span> </span><br><span class="line">       </span><br><span class="line">  <span class="attr">workflow_dispatch:</span> </span><br><span class="line">   </span><br><span class="line"><span class="attr">jobs:</span> </span><br><span class="line">  <span class="attr">npm-publish:</span> </span><br><span class="line">    <span class="string">name:</span> <span class="string">npm-publish</span> </span><br><span class="line">    <span class="string">runs-on:</span> <span class="string">ubuntu-latest</span> </span><br><span class="line">     </span><br><span class="line">    <span class="attr">steps:</span> </span><br><span class="line">    <span class="string">-</span> <span class="string">name:</span> <span class="string">Checkout</span> <span class="string">repository</span> </span><br><span class="line">      <span class="string">uses:</span> <span class="string">actions/checkout@v2</span> </span><br><span class="line">       </span><br><span class="line">    <span class="string">-</span> <span class="string">name:</span> <span class="string">Set</span> <span class="string">up</span> <span class="string">Node.js</span> </span><br><span class="line">      <span class="string">uses:</span> <span class="string">actions/setup-node@master</span> </span><br><span class="line">      <span class="attr">with:</span> </span><br><span class="line">        <span class="string">node-version:</span> <span class="number">12</span> </span><br><span class="line">        <span class="string">registry-url:</span> <span class="string">https://registry.npmjs.org</span> </span><br><span class="line">         </span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">update</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        npm version patch</span></span><br><span class="line"><span class="string"></span>    <span class="string">-</span> <span class="string">name:</span> <span class="string">Publish</span> </span><br><span class="line">      <span class="string">run:</span> <span class="string">|</span> </span><br><span class="line">        <span class="string">npm</span> <span class="string">publish</span> </span><br><span class="line">      <span class="attr">env:</span> </span><br><span class="line">        <span class="string">NODE_AUTH_TOKEN:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.npm_token</span> <span class="string">&#125;&#125;</span></span><br></pre></td></tr></table></figure>

<p>这样就可以方便的分发cdn文件的npm了</p>
<h4 id="镜像"><a href="#镜像" class="headerlink" title="镜像"></a>镜像</h4><p>既然有npm，那么类似jsd的镜像就很多了</p>
<div class="note link green"><p><a href="https://npm.elemecdn.com/">https://npm.elemecdn.com</a></p></div>

<div class="note link green"><p><a href="https://cdn.jsdelivr.net/npm">https://cdn.jsdelivr.net/npm</a></p></div>

<div class="note link green"><p><a href="https://unpkg.com/">https://unpkg.com</a></p></div>

<div class="note link green"><p><a href="https://u.pigax.cn/npm">https://u.pigax.cn/npm</a></p></div>

<div class="note link green"><p><a href="https://unpkg.pigax.cn/">https://unpkg.pigax.cn/</a></p></div>

<div class="note link green"><p><a href="https://cdn-jsd.pigax.cn/npm">https://cdn-jsd.pigax.cn/npm</a></p></div>

<div class="note link green"><p><a href="https://cdn1.tianli0.top/npm">https://cdn1.tianli0.top/npm</a> 需要许可</p></div>

<div class="note link green"><p><a href="https://cdn.cnortles.top/npm">https://cdn.cnortles.top/npm</a></p></div>

<div class="note link green"><p><a href="https://jsd.hin.cool/npm">https://jsd.hin.cool/npm</a></p></div>

<div class="note link green"><p><a href="https://jsdelivr.panbaidu.cn/npm">https://jsdelivr.panbaidu.cn/npm</a></p></div>

</div><div class="story post-story"><h2 id="其他方案-前端竞速"><a href="#其他方案-前端竞速" class="headerlink" title="其他方案(前端竞速)"></a>其他方案(前端竞速)</h2><p>去看<a href="https://blog.cyfan.top/">cyfan的博客</a></p>
</div><div class="story post-story"><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这篇文章在2月就准备开始写了，憋到今天才发布</p>
<p>前端竞速不会的还在问，会用的同学已经用起来了，我的博客速度怎么样，留言告诉我</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>hexo</category>
      </categories>
      <tags>
        <tag>hexo</tag>
        <tag>cdn</tag>
        <tag>加速</tag>
      </tags>
  </entry>
  <entry>
    <title>gulp更新4.0后的报错(gulp报Did you forget to signal async completion?)</title>
    <url>/posts/55153.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="缘起"><a href="#缘起" class="headerlink" title="缘起"></a>缘起</h2><p>今天我升级了gulp到4.0,在git三件套之后,网站并没有更新,我便登录了github查看action的运行状况,便有此文<br><img src="https://bu.dusays.com/2022/02/24/8dd37de3207c0.png" class="lazyload" data-srcset="https://bu.dusays.com/2022/02/24/8dd37de3207c0.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
</div><div class="story post-story"><h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><p>在查看了日志最后发现了如下报错</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">Did you forget to signal async completion?</span><br></pre></td></tr></table></figure>

<p>在查看了gulp官网之后我人傻了,全是英文</p>
<p>这是一个新特性,简单来说就是原因: gulp 不再支持同步任务了。 因为同步任务常常会导致难以调试的细微错误,例如忘记从任务 (task)中返回 stream。 当你看到 “ Did you forget to signal async completion ?” 警告时,说明你<strong>并未使用前面提到的返回方式</strong></p>
<p>意思是你没有写一个任务完成的返回通知(如果我描述有误评论区告诉我)</p>
<p>官网的原文是When you see the <em>“Did you forget to signal async completion?”</em> warning, none of the techniques mentioned above were used. You’ll need to use the error-first callback or return a stream, promise, event emitter, child process, or observable to resolve the issue.</p>
</div><div class="story post-story"><h2 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h2><h3 id="官网的解决方案是"><a href="#官网的解决方案是" class="headerlink" title="官网的解决方案是"></a>官网的解决方案是</h3><p>Using async/await</p>
<p>即把原来类似这样的代码</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">const gulp = require(&#x27;gulp&#x27;);</span><br><span class="line">gulp.task(&#x27;testGulp&#x27;, () =&gt; &#123;</span><br><span class="line">    console.log(&#x27;Hello World!&#x27;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>

<p>改成这样</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">const gulp = require(&#x27;gulp&#x27;);</span><br><span class="line">gulp.task(&#x27;testGulp&#x27;, async() =&gt; &#123;</span><br><span class="line">   await console.log(&#x27;Hello World!&#x27;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>

<p>就正常了</p>
<h3 id="更简单的方法"><a href="#更简单的方法" class="headerlink" title="更简单的方法"></a>更简单的方法</h3><p>在我一顿搜索之后发现了更简单的方法</p>
<p>在不使用文件流的情况下，向task的函数里传入一个名叫done的回调函数，以结束task</p>
<p>例如源代码是这样的</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">gulp.task(&#x27;default&#x27;, gulp.series(&#x27;one&#x27;));</span><br></pre></td></tr></table></figure>

<p>那只要添加一个done的回调函数即可</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">gulp.task(&quot;default&quot;, done =&gt; &#123;</span><br><span class="line">    gulp.series(&quot;one&quot;);</span><br><span class="line">    done();</span><br><span class="line">  &#125;);</span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>又码了700多字,如果有其他问题可以在评论区回复噢，我会尽量回复的😃</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>前端</tag>
        <tag>gulp</tag>
        <tag>博客</tag>
      </tags>
  </entry>
  <entry>
    <title>为hexo加一个自动部署</title>
    <url>/posts/61056.html</url>
    <content><![CDATA[<p><img src="https://cdn.chuqis.com/img/1658139167.6203759.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/1658139167.6203759.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/1658139167.6203759.jpg"></p>
<div class="story post-story"><h2 id="Hexo-博客的Github-Action自动化部署是什么？"><a href="#Hexo-博客的Github-Action自动化部署是什么？" class="headerlink" title="Hexo 博客的Github Action自动化部署是什么？"></a>Hexo 博客的Github Action自动化部署是什么？</h2><p>简单说，就是把hexo博客的源代码上传到github代码仓库，github在代码发生变动的时候，自动通过安装一系列nodejs环境和相关依赖，生成html页面到github pages仓库。</p>
<p>再简单点说，就是把本地生成博客的工作，全部交给github执行。</p>
</div><div class="story post-story"><h2 id="为什么要action"><a href="#为什么要action" class="headerlink" title="为什么要action"></a>为什么要action</h2><p>hexo 是一款快速、简洁且高效的静态博客框架，因为它的高可定制性，所以深受各个程序员的喜爱，我也曾一头扎进去研究过，魔改了vlts主题，在使用过程中，也渐渐的发现了一些问题</p>
<p>情景一，当浏览自己某篇博客时发现了一些错误之后想要马上修改时，将要经历经历一下步骤<br>在本地的hexo博客文件夹中找到source/_post文件夹<br>找到那个md文件，打开修改<br>然后还要经历<code>hexo clean</code>,<code>hexo g</code>，<code>hexo d</code></p>
<p>情景二，当想要马上写一篇博客时，需要经历以下步骤<br>在博客根目录中hexo n “博客名”<br>点击进入source/_post文件夹中找到这个md文件并打开写博客<br>然后还要经历<code>hexo clean</code>,<code>hexo g</code>，<code>hexo d</code><br>且hexo是由nodejs编写的，性能不佳，生产需要较长时间<br>action的高性能可以解决这些问题</p>
</div><div class="story post-story"><h2 id="这样做的好处"><a href="#这样做的好处" class="headerlink" title="这样做的好处"></a>这样做的好处</h2><p>随时随地都能修改或增加博文</p>
<p>使用<code>hpp</code>,<code>qexo</code>,<code>wexa</code>等编辑器</p>
</div><div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>网上这种教程一大堆，有的装了插件不一样（gulp等等），有的部署方法（ssh、令牌）不一样，以至于自动化部署的文件写法也不一样。</p>
<p>我这里尽量写一个适合小白和大多数hexo博客的一个自动化部署的教程。</p>
<p><strong>总体步骤</strong> ：</p>
<ul>
<li>使用Github令牌部署hexo博客</li>
<li>Github新建一个私有仓库，并上传hexo博客源码</li>
<li>配置Github Action实现自动化部署</li>
</ul>
</div><div class="story post-story"><h2 id="How-to-do"><a href="#How-to-do" class="headerlink" title="How to do"></a>How to do</h2><h3 id="获取github令牌"><a href="#获取github令牌" class="headerlink" title="获取github令牌"></a>获取github令牌</h3><p>前往<a href="https://github.com/settings/tokens">github</a>新建一个token</p>
<blockquote>
<p>注意token只会显示一次注意保存，同时<code>注意``注意``注意</code>千万不要暴露token</p>
</blockquote>
<p>注意先保存，等新建仓库后填入</p>
<p>在源码仓库的密钥处填入</p>
<p><img src="https://cdn.chuqis.com/img/1658138422.8459709.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/1658138422.8459709.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/1658138422.8459709.jpg"></p>
<p><code>PERSONAL_TOKEN</code>里面写密钥即可</p>
<h3 id="上传源码"><a href="#上传源码" class="headerlink" title="上传源码"></a>上传源码</h3><p>首先初始化本地仓库</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git init </span><br><span class="line">git add . </span><br><span class="line">git commit -m <span class="string">&quot;first commit&quot;</span> </span><br><span class="line">git branch -M main git remote add origin https://github.com/username/xxx.git </span><br></pre></td></tr></table></figure>

<p>注意自己看着改</p>
<p>然后把在<code>.git/config</code>里面修改类似这样的远程路径<a href="https://github.com/username/xxx.git%E6%94%B9%E6%88%90https://TOKEN@github.com/username/xxx.git">https://github.com/username/xxx.git改成https://TOKEN@github.com/username/xxx.git</a></p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure>

<p>然后你就可以看到你的源码被推送到了远程仓库</p>
<h3 id="配置自动流程"><a href="#配置自动流程" class="headerlink" title="配置自动流程"></a>配置自动流程</h3><p>既然做的这一步了，就只差一步了配置自动化流程，帮助我们自动生成网页文件并推送到静态页面仓库</p>
<p>打开action new workflow 或者在本地新建<code>.github/workflows/main.yml</code>的文件</p>
<p>填入以下代码</p>
<blockquote>
<p>已经很详细的看了上面的阐述，并且我不会直接照搬</p>
</blockquote>
<figure class="highlight yml"><table><tr><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span></span><br><span class="line"><span class="attr">&#x27;on&#x27;:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">workflow_dispatch</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">push</span></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Checkout</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/checkout@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">ref:</span> <span class="string">main</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Setup</span> <span class="string">Node</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="number">16.</span><span class="string">x</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">Hexo</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          npm install hexo-cli -g</span></span><br><span class="line"><span class="string">          npm install -g gulp //如果没有gulp把这行去掉</span></span><br><span class="line"><span class="string"></span>      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Cache</span> <span class="string">Modules</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/cache@v2.1.1</span></span><br><span class="line">        <span class="attr">id:</span> <span class="string">cache-modules</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">          <span class="attr">key:</span> <span class="string">$&#123;&#123;runner.OS&#125;&#125;-$&#123;&#123;hashFiles(&#x27;**/package-lock.json&#x27;)&#125;&#125;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">Dependencies</span></span><br><span class="line">        <span class="attr">if:</span> <span class="string">steps.cache-modules.outputs.cache-hit</span> <span class="type">!=</span> <span class="string">&#x27;true&#x27;</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          npm ci</span></span><br><span class="line"><span class="string"></span>      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Setting</span> <span class="string">Token</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          sed -i &quot;s/.Baidu_Token/$&#123;&#123; secrets.BAIDU_TOKEN &#125;&#125;/&quot; _config.yml</span></span><br><span class="line"><span class="string"></span>      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Generate</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          hexo clean</span></span><br><span class="line"><span class="string">          hexo recommend</span></span><br><span class="line"><span class="string">          hexo generate</span></span><br><span class="line"><span class="string">          gulp //如果没有gulp把这行去掉</span></span><br><span class="line"><span class="string">          git clone https://github.com/username/username.github.io.git .public</span></span><br><span class="line"><span class="string"></span>      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">personal_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.PERSONAL_TOKEN</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./public</span></span><br><span class="line">          <span class="attr">external_repository:</span> <span class="string">username/username.github.io</span></span><br><span class="line">          <span class="attr">publish_branch:</span> <span class="string">main</span></span><br><span class="line">          <span class="attr">exclude_assets:</span> <span class="string">&#x27;&#x27;</span></span><br><span class="line">          <span class="attr">user_name:</span> <span class="string">github-actions[bot]</span></span><br><span class="line">          <span class="attr">user_email:</span> <span class="string">github-actions[bot]@users.noreply.github.com</span></span><br></pre></td></tr></table></figure>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>hexo</category>
        <category>web</category>
      </categories>
      <tags>
        <tag>hexo</tag>
        <tag>博客</tag>
        <tag>action</tag>
        <tag>建站</tag>
      </tags>
  </entry>
  <entry>
    <title>hexo史上最全搭建教程</title>
    <url>/posts/51935.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>现在市面上的博客很多，如CSDN，博客园，简书等平台，可以直接在上面发表，用户交互做的好，写的文章百度也能搜索的到。缺点是比较不自由，会受到平台的各种限制和恶心的广告。</p>
<p>而自己购买域名和服务器，搭建博客的成本实在是太高了，不光是说这些购买成本，单单是花力气去自己搭这么一个网站，还要定期的维护它，对于我们大多数人来说，实在是没有这样的精力和时间。</p>
<p>在众多博客软件中,选择是一个重要因素,决定了易用性美观度等问题。那么就有第三种选择，利用hexo生成网页并直接在github page平台上托管我们的博客。这样就可以安心的来写作，又不需要定期维护，而且hexo作为一个快速简洁的博客框架，用它来搭建博客真的非常容易。</p>
</div><div class="story post-story"><h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><ol>
<li>第一部分：hexo的初级搭建还有部署到github page上，以及个人域名的绑定。</li>
<li>第二部分：hexo的基本配置，更换主题，实现多终端工作，以及在coding page部署实现国内外分流</li>
<li>第三部分：hexo添加各种功能，包括搜索的SEO，阅读量统计，访问量统计和评论系统等。</li>
</ol>
</div><div class="story post-story"><h2 id="第一部分"><a href="#第一部分" class="headerlink" title="第一部分"></a>第一部分</h2><p>hexo的初级搭建还有部署到github page上，以及个人域名的绑定。</p>
<h3 id="Hexo简介"><a href="#Hexo简介" class="headerlink" title="Hexo简介"></a>Hexo简介</h3><p>Hexo是一款基于Node.js的静态博客框架，依赖少易于安装使用，可以方便的生成静态网页托管在GitHub和Coding上，是搭建博客的首选框架。大家可以进入hexo官网进行详细查看，因为Hexo的创建者是台湾人，对中文的支持很友好，可以选择中文进行查看。</p>
<h3 id="Hexo搭建步骤"><a href="#Hexo搭建步骤" class="headerlink" title="Hexo搭建步骤"></a>Hexo搭建步骤</h3><ol>
<li>安装Git</li>
<li>安装Node.js</li>
<li>安装Hexo</li>
<li>GitHub创建个人仓库</li>
<li>生成SSH添加到GitHub</li>
<li>将hexo部署到GitHub</li>
<li>设置个人域名</li>
<li>发布文章</li>
</ol>
<h3 id="1-安装Git"><a href="#1-安装Git" class="headerlink" title="1. 安装Git"></a>1. 安装Git</h3><p>Git是目前世界上最先进的分布式版本控制系统，可以有效、高速的处理从很小到非常大的项目版本管理。也就是用来管理你的hexo博客文章，上传到GitHub的工具。Git非常强大，我觉得建议每个人都去了解一下</p>
<p>windows：到git官网上下载,Download git,下载后会有一个Git Bash的命令行工具，以后就用这个工具来使用git。</p>
<p>linux：对linux来说实在是太简单了，因为最早的git就是在linux上编写的，只需要一行代码</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo apt-get install git</span><br></pre></td></tr></table></figure>

<p>安装好后，用git –version 来查看一下版本</p>
<h3 id="2-安装nodejs"><a href="#2-安装nodejs" class="headerlink" title="2. 安装nodejs"></a>2. 安装nodejs</h3><p>Hexo是基于nodeJS编写的，所以需要安装一下nodeJs和里面的npm工具。</p>
<p>windows：nodejs选择LTS版本就行了。</p>
<p>linux：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo apt-get install nodejs</span><br><span class="line">sudo apt-get install npm</span><br></pre></td></tr></table></figure>

<p>安装完后，打开命令行</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">node -v</span><br><span class="line">npm -v</span><br></pre></td></tr></table></figure>

<p>检查一下有没有安装成功</p>
<p>顺便说一下，windows在git安装完后，就可以直接使用git bash来敲命令行了，不用自带的cmd，cmd有点难用。</p>
<p>win7的用户可以使用历史版本12.18.4</p>
<h3 id="3-安装hexo"><a href="#3-安装hexo" class="headerlink" title="3. 安装hexo"></a>3. 安装hexo</h3><p>前面git和nodejs安装好后，就可以安装hexo了，你可以先创建一个文件夹blog，然后cd到这个文件夹下（或者在这个文件夹下直接右键git bash打开）。</p>
<p>输入命令</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br></pre></td></tr></table></figure>

<p>依旧用hexo -v查看一下版本</p>
<p>至此就全部安装完了。</p>
<p>接下来初始化一下hexo</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo init myblog</span><br></pre></td></tr></table></figure>

<p>这个myblog可以自己取什么名字都行，然后</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">cd myblog //进入这个myblog文件夹</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure>

<p>新建完成后，指定文件夹目录下有：</p>
<p>node_modules: 依赖包<br>public：存放生成的页面<br>scaffolds：生成文章的一些模板<br>source：用来存放你的文章<br>themes：主题<br>_config.yml: 博客的配置文件</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo g</span><br><span class="line">hexo server</span><br></pre></td></tr></table></figure>

<p>打开hexo的服务，在浏览器输入localhost:4000就可以看到你生成的博客了。</p>
<p>大概长这样：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrksvj6e0j211c0f2n60.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrksvj6e0j211c0f2n60.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="d40b6c29gy1fvrksvj6e0j211c0f2n60"></p>
<p>使用ctrl+c可以把服务关掉。</p>
<h3 id="4-GitHub创建个人仓库"><a href="#4-GitHub创建个人仓库" class="headerlink" title="4. GitHub创建个人仓库"></a>4. GitHub创建个人仓库</h3><p>首先，你先要有一个GitHub账户，去注册一个吧。</p>
<p>注册完登录后，在GitHub.com中看到一个New repository，新建仓库</p>
<p>创建一个和你用户名相同的仓库，后面加.github.io，只有这样，将来要部署到GitHub page的时候，才会被识别，也就是xxxx.github.io，其中xxx就是你注册GitHub的用户名。我这里是已经建过了。</p>
<p>点击create repository。</p>
<h3 id="5-生成SSH添加到GitHub"><a href="#5-生成SSH添加到GitHub" class="headerlink" title="5. 生成SSH添加到GitHub"></a>5. 生成SSH添加到GitHub</h3><p>回到你的git bash中，</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git config --global user.name &quot;yourname&quot;</span><br><span class="line">git config --global user.email &quot;youremail&quot;</span><br></pre></td></tr></table></figure>

<p>这里的yourname输入你的GitHub用户名，youremail输入你GitHub的邮箱。这样GitHub才能知道你是不是对应它的账户。</p>
<p>可以用以下两条，检查一下你有没有输对</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git config user.name</span><br><span class="line">git config user.email</span><br></pre></td></tr></table></figure>

<p>然后创建SSH,一路回车</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;youremail&quot;</span><br></pre></td></tr></table></figure>

<p>这个时候它会告诉你已经生成了.ssh的文件夹。在你的电脑中找到这个文件夹。</p>
<p>ssh，简单来讲，就是一个秘钥，其中，id_rsa是你这台电脑的私人秘钥，不能给别人看的，id_rsa.pub是公共秘钥，可以随便给别人看。把这个公钥放在GitHub上，这样当你链接GitHub自己的账户时，它就会根据公钥匹配你的私钥，当能够相互匹配时，才能够顺利的通过git上传你的文件到GitHub上。</p>
<p>而后在GitHub的setting中，找到SSH keys的设置选项，点击New SSH key<br>把你的id_rsa.pub里面的信息复制进去。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrkstdifaj210s0gfjrz.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrkstdifaj210s0gfjrz.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="d40b6c29gy1fvrkstdifaj210s0gfjrz"></p>
<p>在gitbash中，查看是否成功</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure>

<h3 id="6-将hexo部署到GitHub"><a href="#6-将hexo部署到GitHub" class="headerlink" title="6. 将hexo部署到GitHub"></a>6. 将hexo部署到GitHub</h3><p>这一步，我们就可以将hexo和GitHub关联起来，也就是将hexo生成的文章部署到GitHub上，打开站点配置文件 _config.yml，翻到最后，修改为<br>YourgithubName就是你的GitHub账户</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: https://github.com/YourgithubName/YourgithubName.github.io.git</span><br><span class="line">  branch: master</span><br></pre></td></tr></table></figure>

<p>这个时候需要先安装deploy-git ，也就是部署的命令,这样你才能用命令部署到GitHub。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure>

<p>然后</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo generate</span><br><span class="line">hexo deploy</span><br></pre></td></tr></table></figure>

<p>其中 hexo clean清除了你之前生成的东西，也可以不加。<br>hexo generate 顾名思义，生成静态文章，可以用 hexo g缩写<br>hexo deploy 部署文章，可以用hexo d缩写</p>
<p>注意deploy时可能要你输入username和password。</p>
<p>得到下图就说明部署成功了，过一会儿就可以在<a href="http://yourname.github.io/">http://yourname.github.io</a> 这个网站看到你的博客了！！</p>
<h3 id="7-设置个人域名"><a href="#7-设置个人域名" class="headerlink" title="7. 设置个人域名"></a>7. 设置个人域名</h3><p>现在你的个人网站的地址是 yourname.github.io，如果觉得这个网址逼格不太够，这就需要你设置个人域名了。但是需要花钱。</p>
<p>注册一个阿里云账户,在阿里云上买一个域名，我买的是 qystu.cc，各个后缀的价格不太一样，比如最广泛的.com就比较贵，看个人喜好咯。</p>
<p>你需要先去进行实名认证,然后在域名控制台中，看到你购买的域名。</p>
<p>点解析进去，添加解析。</p>
<p>其中，根据github docs 说明</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/image-20210704115658742.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/image-20210704115658742.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210704115658742"></p>
<p>应添加A记录的4个IP</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">185.199.108.153</span><br><span class="line">185.199.109.153</span><br><span class="line">185.199.110.153</span><br><span class="line">185.199.111.153</span><br></pre></td></tr></table></figure>

<p>注意，解析线路选择默认，不要像我一样选境外。这个境外是后面来做国内外分流用的,在后面的博客中会讲到。记得现在选择默认！！</p>
<p>登录GitHub，进入之前创建的仓库，点击settings，设置Custom domain，输入我的域名qystu.cc</p>
<p>然后在你的博客文件source中创建一个名为CNAME文件，不要后缀。写上你的域名。</p>
<p>最后，在git bash中，输入</p>
<figure class="highlight plaintext"><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>

<p>过不了多久，再打开你的浏览器，输入你自己的域名，就可以看到搭建的网站啦！</p>
<p>接下来你就可以正式开始写文章了。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new newpapername</span><br></pre></td></tr></table></figure>

<p>然后在source/_post中打开markdown文件，就可以开始编辑了。当你写完的时候，再</p>
<figure class="highlight plaintext"><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>

<p>就可以看到更新了。</p>
</div><div class="story post-story"><h2 id="第二部分"><a href="#第二部分" class="headerlink" title="第二部分"></a>第二部分</h2><p>hexo的基本配置，更换主题，实现多终端工作，以及在coding page部署实现国内外分流。</p>
<h3 id="1-hexo基本配置"><a href="#1-hexo基本配置" class="headerlink" title="1. hexo基本配置"></a>1. hexo基本配置</h3><p>在文件根目录下的_config.yml，就是整个hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。</p>
<h4 id="网站"><a href="#网站" class="headerlink" title="网站"></a>网站</h4><table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>title</td>
<td>网站标题</td>
</tr>
<tr>
<td>subtitle</td>
<td>网站副标题</td>
</tr>
<tr>
<td>description</td>
<td>网站描述</td>
</tr>
<tr>
<td>author</td>
<td>您的名字,作者</td>
</tr>
<tr>
<td>language</td>
<td>网站使用的语言,不是编程语言</td>
</tr>
<tr>
<td>timezone</td>
<td>网站时区。Hexo 默认使用您电脑的时区。时区列表。比如说：America/New_York, Japan, 和 UTC 。</td>
</tr>
</tbody></table>
<h4 id="网址"><a href="#网址" class="headerlink" title="网址"></a>网址</h4><table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>url</td>
<td>网址</td>
</tr>
<tr>
<td>root</td>
<td>网站根目录</td>
</tr>
<tr>
<td>permalink</td>
<td>文章的永久链接格式</td>
</tr>
<tr>
<td>permalink_defaults</td>
<td>永久链接中各部分的默认值</td>
</tr>
</tbody></table>
<p>在这里，你需要把url改成你的网站域名。</p>
<p>permalink，也就是你生成某个文章时的那个链接格式。</p>
<p>比如我新建一个文章叫temp.md，那么这个时候他自动生成的地址就是<a href="http://yoursite.com/2018/09/05/temp%E3%80%82">http://yoursite.com/2018/09/05/temp。</a></p>
<p>以下是官方给出的示例，关于链接的变量还有很多，需要的可以去官网上查找 永久链接 。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>结果</th>
</tr>
</thead>
<tbody><tr>
<td>:year/:month/:day/:title/</td>
<td>2013/07/14/hello-world</td>
</tr>
<tr>
<td>:year-:month-:day-:title.html</td>
<td>2013-07-14-hello-world.html</td>
</tr>
<tr>
<td>:category/:title</td>
<td>foo/bar/hello-world</td>
</tr>
</tbody></table>
<p>Hexo默认的静态URL格式是 <code>:year/:month/:day/:title</code>，也就是按照年、月、日、标题来生成固定链接的。如<code>http://xxx.yy.com/2020/07/06/hello-world</code></p>
<p>这种默认配置的缺点就是一般文件名是中文，导致url链接里有中文出现，这会造成很多问题，也不利于seo，另外就是年月日都会有分隔符</p>
<p>百度蜘蛛抓取网页的规则: 对于蜘蛛说网页权重越高、信用度越高抓取越频繁，例如网站的首页和内页。蜘蛛先抓取网站的首页，因为首页权重更高，并且大部分的链接都是指向首页。然后通过首页抓取网站的内页，并不是所有内页蜘蛛都会去抓取。</p>
<p>搜索引擎认为对于一般的中小型站点，3层足够承受所有的内容了，所以蜘蛛经常抓取的内容是前三层，而超过三层的内容蜘蛛认为那些内容并不重要，所以不经常爬取。出于这个原因所以permalink后面跟着的最好不要超过2个斜杠</p>
<p>使用 hexo-abbrlink 插件可以完美解决，具体使用方法如下：</p>
<h4 id="安装插件"><a href="#安装插件" class="headerlink" title="安装插件"></a>安装插件</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm install hexo-abbrlink --save</span><br></pre></td></tr></table></figure>

<p>再往下翻，中间这些都默认就好了。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">theme: landscape</span><br><span class="line"></span><br><span class="line"># Deployment</span><br><span class="line">## Docs: https://hexo.io/docs/deployment.html</span><br><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: &lt;repository url&gt;</span><br><span class="line">  branch: [branch]</span><br></pre></td></tr></table></figure>

<p>theme就是选择什么主题，也就是在theme这个文件夹下，在官网上有很多个主题，默认给你安装的是lanscape这个主题。当你需要更换主题时，在官网上下载，把主题的文件放在theme文件夹下，再修改这个参数就可以了。</p>
<p>接下来这个deploy就是网站的部署的，repo就是仓库(Repository)的简写。branch选择仓库的哪个分支。这个在之前进行github page部署的时候已经修改过了，不再赘述。而这个在后面进行双平台部署的时候会再次用到。</p>
<h4 id="Front-matter"><a href="#Front-matter" class="headerlink" title="Front-matter"></a>Front-matter</h4><p>Front-matter 是文件最上方以 — 分隔的区域，用于指定个别文件的变量，举例来说：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">title: Hello World</span><br><span class="line">date: 2013/7/13 20:46:25</span><br><span class="line">---</span><br></pre></td></tr></table></figure>

<p>下是预先定义的参数，您可在模板中使用这些参数值并加以利用。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>layout</td>
<td>布局</td>
</tr>
<tr>
<td>title</td>
<td>标题</td>
</tr>
<tr>
<td>date</td>
<td>建立日期</td>
</tr>
<tr>
<td>updated</td>
<td>更新日期</td>
</tr>
<tr>
<td>comments</td>
<td>开启文章的评论功能</td>
</tr>
<tr>
<td>tags</td>
<td>标签(不适用于分页)</td>
</tr>
<tr>
<td>categories</td>
<td>分类(不适用于分页)</td>
</tr>
<tr>
<td>permalink</td>
<td>覆盖文章网址</td>
</tr>
</tbody></table>
<p>其中，分类和标签需要区别一下，分类具有顺序性和层次性，也就是说 Foo, Bar 不等于 Bar, Foo；而标签没有顺序和层次。</p>
<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">- PS3</span><br><span class="line">- Games</span><br></pre></td></tr></table></figure>

<h4 id="layout（布局）"><a href="#layout（布局）" class="headerlink" title="layout（布局）"></a>layout（布局）</h4><p>当你每一次使用代码</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new paper</span><br></pre></td></tr></table></figure>

<p>它其实默认使用的是post这个布局，也就是在source文件夹下的_post里面。</p>
<p>Hexo 有三种默认布局：post、page 和 draft，它们分别对应不同的路径，而您自定义的其他布局和 post 相同，都将储存到 source/_posts 文件夹。</p>
<table>
<thead>
<tr>
<th>布局</th>
<th>路径</th>
</tr>
</thead>
<tbody><tr>
<td>post</td>
<td>source/_posts</td>
</tr>
<tr>
<td>page</td>
<td>source</td>
</tr>
<tr>
<td>draft</td>
<td>source/_drafts</td>
</tr>
<tr>
<td>而new这个命令其实是：</td>
<td></td>
</tr>
</tbody></table>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new [layout] &lt;title&gt;</span><br></pre></td></tr></table></figure>

<p>只不过这个layout默认是post罢了。</p>
<h4 id="page"><a href="#page" class="headerlink" title="page"></a>page</h4><p>如果你想另起一页，那么可以使用</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new page board</span><br></pre></td></tr></table></figure>

<p>系统会自动给你在source文件夹下创建一个board文件夹，以及board文件夹中的index.md，这样你访问的board对应的链接就是<a href="http://xxx.xxx/board">http://xxx.xxx/board</a></p>
<h4 id="draft"><a href="#draft" class="headerlink" title="draft"></a>draft</h4><p>draft是草稿的意思，也就是你如果想写文章，又不希望被看到，那么可以</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new draft newpage</span><br></pre></td></tr></table></figure>

<p>这样会在source/_draft中新建一个newpage.md文件，如果你的草稿文件写的过程中，想要预览一下，那么可以使用</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo server --draft</span><br></pre></td></tr></table></figure>

<p>在本地端口中开启服务预览。</p>
<p>如果你的草稿文件写完了，想要发表到post中，</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo publish draft newpage</span><br></pre></td></tr></table></figure>

<p>就会自动把newpage.md发送到post中。</p>
<h3 id="2-更换主题"><a href="#2-更换主题" class="headerlink" title="2. 更换主题"></a>2. 更换主题</h3><p>到这一步，如果你觉得默认的landscape主题不好看，那么可以在官网的主题中，选择你喜欢的一个主题进行修改就可以啦。点这里</p>
<p>这里有200多个主题可以选。不过最受欢迎的就是那么几个，比如NexT主题，非常的简洁好看，大多数人都选择这个，关于这个的教程也比较多。不过我选择的是volantis</p>
<p>不管怎么样，至少是符合我个人的审美。</p>
<p>直接在github链接上下载下来，然后放到theme文件夹下就行了，然后再在刚才说的配置文件中把theme换成那个主题文件夹的名字，它就会自动在theme文件夹中搜索你配置的主题。</p>
<p>而后进入volantis这个文件夹，可以看到里面也有一个配置文件_config.xml</p>
<h4 id="menu（菜单栏）"><a href="#menu（菜单栏）" class="headerlink" title="menu（菜单栏）"></a>menu（菜单栏）</h4><p>也就是上面菜单栏上的这些东西。</p>
<p>其中，About这个你是找不到网页的，因为你的文章中没有about这个东西。如果你想要的话，可以执行命令</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new page about</span><br></pre></td></tr></table></figure>

<p>它就会在根目录下source文件夹中新建了一个about文件夹，以及index.md，在index.md中写上你想要写的东西，就可以在网站上展示出来了。</p>
<h4 id="customize-定制"><a href="#customize-定制" class="headerlink" title="customize(定制)"></a>customize(定制)</h4><p>在这里可以修改你的个人logo，默认是那个hueman，在source/css/images文件夹中放入自己要的logo，再改一下url的链接名字就可以了。</p>
<p>favicon是网站中出现的那个小图标的icon，找一张你喜欢的logo，然后转换成ico格式，放在images文件夹下，配置一下路径就行。</p>
<p>social_links ，可以显示你的社交链接，而且是有logo的。</p>
<p>tips:</p>
<p>在这里可以添加一个rss功能，也就是那个符号像wifi一样的东西。</p>
<h4 id="添加RSS"><a href="#添加RSS" class="headerlink" title="添加RSS"></a>添加RSS</h4><ol>
<li>什么是RSS？</li>
</ol>
<p>RSS也就是订阅功能，你可以理解为类似与订阅公众号的功能，来订阅各种博客，杂志等等。</p>
<ol start="2">
<li>为什么要用RSS？</li>
</ol>
<p>就如同订阅公众号一样，你对某个公众号感兴趣，你总不可能一直时不时搜索这个公众号来看它的文章吧。博客也是一样，如果你喜欢某个博主，或者某个平台的内容，你可以通过RSS订阅它们，然后在RSS阅读器上可以实时推送这些消息。现在网上的垃圾消息太多了，如果你每一天都在看这些消息中度过，漫无目的的浏览，只会让你的时间一点一点的流逝，太不值得了。如果你关注的博主每次都发的消息都是精华，而且不是每一天十几条几十条的轰炸你，那么这个博主就值得你的关注，你就可以通过RSS订阅他。</p>
<p>在我的理解中，如果你不想每天都被那些没有质量的消息轰炸，只想安安静静的关注几个博主，每天看一些有质量的内容也不用太多，那么RSS订阅值得你的拥有。</p>
<ol start="3">
<li>添加RSS功能</li>
</ol>
<p>先安装RSS插件</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">npm i hexo-generator-feed</span><br></pre></td></tr></table></figure>

<p>而后在你整个项目的_config.yml中找到Extensions，添加：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># Extensions</span><br><span class="line">## Plugins: https://hexo.io/plugins/</span><br><span class="line">#RSS订阅</span><br><span class="line">plugin:</span><br><span class="line">- hexo-generator-feed</span><br><span class="line">#Feed Atom</span><br><span class="line">feed:</span><br><span class="line">  type: atom</span><br><span class="line">  path: atom.xml</span><br><span class="line">  limit: 20</span><br></pre></td></tr></table></figure>

<p>这个时候你的RSS链接就是 域名/atom.xml了。</p>
<p>所以，在主题配置文件中的这个social links，开启RSS的页面功能，这样你网站上就有那个像wifi一样符号的RSS logo了，注意空格。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">rss: /atom.xml</span><br></pre></td></tr></table></figure>

<ol start="4">
<li>如何关注RSS？</li>
</ol>
<p>首先，你需要一个RSS阅读器，在这里我推荐inoreader，宇宙第一RSS阅读器，而且中文支持的挺好。不过它没有PC端的程序，只有网页版，chrome上有插件。在官网上用google账号或者自己注册账号登录，就可以开始你的关注之旅了。</p>
<p>每次需要关注某个博主时，就点开他的RSS链接，把链接复制到inoreader上，就能关注了</p>
<p>在安卓端，inoreader也有下载，不过因为国内google是登录不了的，你需要在inoreader官网上把你的密码修改了，然后就可以用账户名和密码登录了。</p>
<p>在IOS端，没用过，好像是reader 3可以支持inoreader账户，还有个readon也不错，可以去试试。</p>
<h4 id="search-搜索框"><a href="#search-搜索框" class="headerlink" title="search(搜索框)"></a>search(搜索框)</h4><p>默认搜索框是不能够用的，</p>
<p>you need to install hexo-generator-json-content before using Insight Search</p>
<p>它已经告诉你了，如果想要使用，就安装这个插件。</p>
<h4 id="comment-评论系统"><a href="#comment-评论系统" class="headerlink" title="comment(评论系统)"></a>comment(评论系统)</h4><p>这里的多数都是国外的，基本用不了。这个valine好像不错，还能统计文章阅读量，但更加建议使用waline，安全性更强，可以自己试一试，链接。</p>
<h4 id="miscellaneous-其他"><a href="#miscellaneous-其他" class="headerlink" title="miscellaneous(其他)"></a>miscellaneous(其他)</h4><p>这里我就改了一个links，可以添加友链。注意空格要对！不然会报错！</p>
<h4 id="总结："><a href="#总结：" class="headerlink" title="总结："></a>总结：</h4><p>整个主题看起来好像很复杂的样子，但是仔细捋一捋其实也比较流畅，</p>
<p>languages: 顾名思义<br>layout：布局文件，其实后期想要修改自定义网站上的东西，添加各种各样的信息，主要是在这里修改，其中comment是评论系统，common是常规的布局，最常修改的在这里面，比如修改页面head和footer的内容。<br>scripts：js脚本，暂时没什么用<br>source：里面放了一些css的样式，以及图片</p>
<h3 id="3-git分支进行多终端工作"><a href="#3-git分支进行多终端工作" class="headerlink" title="3. git分支进行多终端工作"></a>3. git分支进行多终端工作</h3><p>问题来了，如果你现在在自己的笔记本上写的博客，部署在了网站上，那么你在家里用台式机，或者实验室的台式机，发现你电脑里面没有博客的文件，或者要换电脑了，最后不知道怎么移动文件，怎么办？</p>
<p>在这里我们就可以利用git的分支系统进行多终端工作了，这样每次打开不一样的电脑，只需要进行简单的配置和在github上把文件同步下来，就可以无缝操作了。</p>
<h4 id="机制"><a href="#机制" class="headerlink" title="机制"></a>机制</h4><p>机制是这样的，由于hexo d上传部署到github的其实是hexo编译后的文件，是用来生成网页的，不包含源文件。</p>
<p>也就是上传的是在本地目录里自动生成的.deploy_git里面。</p>
<p>其他文件 ，包括我们写在source 里面的，和配置文件，主题文件，都没有上传到github</p>
<p>所以可以利用git的分支管理，将源文件上传到github的另一个分支即可。</p>
<h4 id="上传分支"><a href="#上传分支" class="headerlink" title="上传分支"></a>上传分支</h4><p>首先，先在github上新建一个hexo分支，如图：</p>
<p>然后在这个仓库的settings中，选择默认分支为hexo分支（这样每次同步的时候就不用指定分支，比较方便）。</p>
<p>然后在本地的任意目录下，打开git bash，</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git clone git@github.com:yorame/yourname.github.io.git</span><br></pre></td></tr></table></figure>

<p>将其克隆到本地，因为默认分支已经设成了hexo，所以clone时只clone了hexo。</p>
<p>接下来在克隆到本地的yourname.github.io中，把除了.git 文件夹外的所有文件都删掉</p>
<p>把之前我们写的博客源文件全部复制过来，除了.deploy_git。这里应该说一句，复制过来的源文件应该有一个.gitignore，用来忽略一些不需要的文件，如果没有的话，自己新建一个，在里面写上如下，表示这些类型文件不需要git：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">.DS_Store</span><br><span class="line">Thumbs.db</span><br><span class="line">db.json</span><br><span class="line">*.log</span><br><span class="line">node_modules/</span><br><span class="line">public/</span><br><span class="line">.deploy*/</span><br></pre></td></tr></table></figure>

<p>注意，如果你之前克隆过theme中的主题文件，那么应该把主题文件中的.git文件夹删掉，因为git不能嵌套上传，最好是显示隐藏文件，检查一下有没有，否则上传的时候会出错，导致你的主题文件无法上传，这样你的配置在别的电脑上就用不了了。</p>
<p>而后</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git add .</span><br><span class="line">git commit –m &quot;add branch&quot;</span><br><span class="line">git push </span><br></pre></td></tr></table></figure>

<p>这样就上传完了，可以去你的github上看一看hexo分支有没有上传上去，其中node_modules、public、db.json已经被忽略掉了，没有关系，不需要上传的，因为在别的电脑上需要重新输入命令安装 。</p>
<p>这样就上传完了。</p>
<p>更换电脑操作<br>一样的，跟之前的环境搭建一样，</p>
<p>安装git</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo apt-get install git</span><br></pre></td></tr></table></figure>

<p>设置git全局邮箱和用户名</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git config --global user.name &quot;yourgithubname&quot;</span><br><span class="line">git config --global user.email &quot;yourgithubemail&quot;</span><br></pre></td></tr></table></figure>

<p>设置ssh key</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;youremail&quot;</span><br><span class="line">#生成后填到github和coding上（有coding平台的话）</span><br><span class="line">#验证是否成功</span><br><span class="line">ssh -T git@github.com</span><br><span class="line">ssh -T git@git.coding.net #(有coding平台的话)</span><br></pre></td></tr></table></figure>

<p>安装nodejs</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo apt-get install nodejs</span><br><span class="line">sudo apt-get install npm</span><br></pre></td></tr></table></figure>

<p>安装hexo</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">sudo npm install hexo-cli -g</span><br></pre></td></tr></table></figure>

<p>但是已经不需要初始化了，</p>
<p>直接在任意文件夹下，</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git clone git@………………</span><br></pre></td></tr></table></figure>

<p>然后进入克隆到的文件夹：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">cd xxx.github.io</span><br><span class="line">npm install</span><br><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure>

<p>生成，部署：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure>

<p>然后就可以开始写你的新博客了</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo new newpage</span><br></pre></td></tr></table></figure>

<p>Tips:</p>
<p>不要忘了，每次写完最好都把源文件上传一下</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git add .</span><br><span class="line">git commit –m &quot;xxxx&quot;</span><br><span class="line">git push </span><br></pre></td></tr></table></figure>

<p>如果是在已经编辑过的电脑上，已经有clone文件夹了，那么，每次只要和远端同步一下就行了</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">git pull</span><br></pre></td></tr></table></figure>

<h3 id="4-coding-page上部署实现国内外分流"><a href="#4-coding-page上部署实现国内外分流" class="headerlink" title="4.coding page上部署实现国内外分流"></a>4.coding page上部署实现国内外分流</h3><p>之前我们已经把hexo托管在github了，但是github是国外的，而且百度的爬虫是不能够爬取github的，所以如果你希望你做的博客能够在百度引擎上被收录，而且想要更快的访问，那么可以在国内的coding page做一个托管，这样在国内访问就是coding page，国外就走github page。</p>
<h4 id="1-申请coding账户，新建项目"><a href="#1-申请coding账户，新建项目" class="headerlink" title="1. 申请coding账户，新建项目"></a>1. 申请coding账户，新建项目</h4><p>先申请一个账户，然后创建新的项目，这一步项目名称应该是随意的。</p>
<h4 id="2-添加ssh-key"><a href="#2-添加ssh-key" class="headerlink" title="2. 添加ssh key"></a>2. 添加ssh key</h4><p>这一步跟github一样。</p>
<p>添加后，检查一下是不是添加成功</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">ssh -T git@git.coding.net</span><br></pre></td></tr></table></figure>

<h4 id="3-修改-config-yml"><a href="#3-修改-config-yml" class="headerlink" title="3. 修改_config.yml"></a>3. 修改_config.yml</h4><p>hexo官方文档是这样的：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">message: [message]</span><br><span class="line">  repo:</span><br><span class="line">    github: &lt;repository url&gt;,[branch]</span><br><span class="line">    coding: &lt;repository url&gt;,[branch] </span><br></pre></td></tr></table></figure>

<p>那么，我们只需要：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: </span><br><span class="line">    coding: git@git.coding.net:yourname/yourname.git,master</span><br><span class="line">    github: git@github.com:yourname/yourname.github.io.git,master</span><br></pre></td></tr></table></figure>

<h4 id="4-部署"><a href="#4-部署" class="headerlink" title="4. 部署"></a>4. 部署</h4><p>保存一下，直接</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure>

<p>这样就可以在coding的项目上看到你部署的文件了。</p>
<h3 id="5-开启coding-pages服务，绑定域名"><a href="#5-开启coding-pages服务，绑定域名" class="headerlink" title="5.开启coding pages服务，绑定域名"></a>5.开启coding pages服务，绑定域名</h3><h3 id="6-阿里云添加解析"><a href="#6-阿里云添加解析" class="headerlink" title="6.阿里云添加解析"></a>6.阿里云添加解析</h3><p>这个时候就可以把之前github的解析改成境外，把coding的解析设为默认了。</p>
<h3 id="7-去除coding-page的跳转广告"><a href="#7-去除coding-page的跳转广告" class="headerlink" title="7.去除coding page的跳转广告"></a>7.去除coding page的跳转广告</h3><p>coding page的一个比较恶心人的地方就是，你只是银牌会员的话，访问会先跳转到一个广告，再到你自己的域名。那么它也给出了消除的办法。右上角切换到coding的旧版界面，默认新版是不行的。然后再来到pages服务这里。</p>
<p>只要你在页面上添加一行文字，写Hosted by Coding Pages，然后点下面的小勾勾，两个工作日内它就会审核通过了。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;p&gt;Hosted by &lt;a href=&quot;https://pages.coding.me&quot; style=&quot;font-weight: bold&quot;&gt;Coding Pages&lt;/a&gt;&lt;/p&gt;</span><br></pre></td></tr></table></figure>

<p>我的选择是把这一行代码放在主题文件夹/layout/common/footer.ejs里面，也就是本来在页面中看到的页脚部分。</p>
<p>当然，为了统一，我又在后面加上了and Github哈哈，可以不加。</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;p&gt;&lt;span&gt;Hosted by &lt;a href=&quot;https://pages.coding.me&quot; style=&quot;font-weight: bold&quot;&gt;Coding Pages&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href=&quot;https://github.com&quot; style=&quot;font-weight: bold&quot;&gt;Github&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</span><br></pre></td></tr></table></figure>

<p>这是最终加上去的代码。</p>
</div><div class="story post-story"><h2 id="第三部分"><a href="#第三部分" class="headerlink" title="第三部分"></a>第三部分</h2><p>hexo添加各种功能，包括搜索的SEO，阅读量统计，访问量统计和评论系统等。</p>
<h3 id="1-SEO优化"><a href="#1-SEO优化" class="headerlink" title="1.SEO优化"></a>1.SEO优化</h3><p>推广是很麻烦的事情，怎么样别人才能知道我们呢，首先需要让搜索引擎收录你的这个网站，别人才能搜索的到。那么这就需要SEO优化了。</p>
<p>SEO是由英文Search Engine Optimization缩写而来， 中文意译为“搜索引擎优化”。SEO是指通过站内优化比如网站结构调整、网站内容建设、网站代码优化等以及站外优化。</p>
<h4 id="百度seo"><a href="#百度seo" class="headerlink" title="百度seo"></a>百度seo</h4><p>刚建站的时候是没有搜索引擎收录我们的网站的。可以在搜索引擎中输入site:&lt;域名&gt;</p>
<p>来查看一下。</p>
<ol>
<li>登录百度站长平台添加网站</li>
</ol>
<p>登录百度站长平台，在站点管理中添加你自己的网站。</p>
<p>验证网站有三种方式：文件验证、HTML标签验证、CNAME验证。</p>
<p>第三种方式最简单，只要将它提供给你的那个xxxxx使用CNAME解析到xxx.baidu.com就可以了。也就是登录你的阿里云，把这个解析填进去就OK了。</p>
<ol start="2">
<li>提交链接</li>
</ol>
<p>我们需要使用npm自动生成网站的sitemap，然后将生成的sitemap提交到百度和其他搜索引擎</p>
<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>

<p>这时候你需要在你的根目录下_config.xml中看看url有没有改成你自己的：</p>
<p>重新部署后，就可以在public文件夹下看到生成的sitemap.xml和baidusitemap.xml了。</p>
<p>然后就可以向百度提交你的站点地图了。</p>
<p>这里建议使用自动提交。</p>
<p>自动提交又分为三种：主动推送、自动推送、sitemap。</p>
<p>可以三个一起提交不要紧，我选择的是后两种。</p>
<p>自动推送：把百度生成的自动推送代码，放在主题文件/layout/common/head.ejs的适当位置，然后验证一下就可以了。<br>sitemap：把两个sitemap地址，提交上去，看到状态正常就OK了。</p>
<p>ps: 百度收录比较慢，慢慢等个十天半个月再去site:&lt;域名&gt;看看有没有被收录。</p>
<p>pps:由于github屏蔽了百度的爬虫，需要自定义robot.txt 或使用百度主动提交链接</p>
<p>前提，您得注册百度站长工具，然后在<strong>工具-&gt;网页抓取-&gt;链接提交</strong>里找到你的密匙。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrkstwp4pj20fc0kyq4n.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/d40b6c29gy1fvrkstwp4pj20fc0kyq4n.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="d40b6c29gy1fvrkstwp4pj20fc0kyq4n"></p>
<p>首先，在Hexo根目录下，安装插件：</p>
<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>

<p>最后，加入新的deployer:</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"></span><br><span class="line">deploy:</span><br><span class="line">- type: ##原有的</span><br><span class="line">  bucket: www.qystu.cc</span><br><span class="line">- type: baidu_url_submitter</span><br></pre></td></tr></table></figure>

<h4 id="google的SEO"><a href="#google的SEO" class="headerlink" title="google的SEO"></a>google的SEO</h4><p>流程一样，google更简单，而且收录更快，进入google站点地图，提交网站和sitemap.xml，就可以了。</p>
<p>如果你这个域名在google这里出了问题，那你就提交 yourname.github.io，这个链接，效果是一样的。</p>
<p>不出意外的话一天内google就能收录你的网站了。</p>
<p>其他的搜索，如搜狗搜索，360搜索，流程是一样的，这里就不再赘述。</p>
<h3 id="2-评论系统"><a href="#2-评论系统" class="headerlink" title="2.评论系统"></a>2.评论系统</h3><p>可以使用<a href="https://valine.js.org/">valine</a>或<a href="https://waline.js.org/">waline</a></p>
<h3 id="3-添加百度统计"><a href="#3-添加百度统计" class="headerlink" title="3.添加百度统计"></a>3.添加百度统计</h3><p>百度统计可以在后台上看到你网站的访问数，浏览量，浏览链接分布等很重要的信息。所以添加百度统计能更有效的让你掌握你的网站情况。</p>
<p>百度统计，注册一下，这里的账号好像和百度账号不是一起的。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/image-20210704142252353.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/image-20210704142252353.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210704142252353"></p>
<p>照样把代码复制到head.ejs文件中，然后再进行一下安装检查，半小时左右就可以在百度统计里面看到自己的网站信息了。</p>
</div><div class="story post-story"><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>到这里就基本做完了。其实都是参考别的博主的设置的，不一定仅限于volantis主题，你可以在网络中寻找到各种各样的hexo主题,其他主题的设置也是大体相同的，所以如果你希望设置别的主题，那么仔细看一下这个主题的代码结构，也能够把上边的功能添加进去。</p>
<p>多看看别的博主的那些功能，如果有你能找到自己喜欢的功能，那么好好发动搜索技能，很快就能找到怎么做了。加油吧！</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>hexo</tag>
        <tag>博客</tag>
        <tag>建站</tag>
      </tags>
  </entry>
  <entry>
    <title>netlify反代</title>
    <url>/posts/23787.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>我在使用netlify部署博客后，经过测试速度，我觉得作为一款非国内产品速度相当不错</p>
<p><img src="https://cdn.chuqis.com/img/35b2aaa74553ddcf3b4e9765d2a3df0b.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/35b2aaa74553ddcf3b4e9765d2a3df0b.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/35b2aaa74553ddcf3b4e9765d2a3df0b.jpg"></p>
<p>所以我想到了我部署在vercel的jsd反代<br>如果我把反代部署在netlify那么cdn的速度会有提升<br>说干就干</p>
<p>ps:如果你不想看我叨叨，你可以点击跳转到<a href="/posts/23787.html#%E5%AE%9E%E8%B7%B5%E4%BB%A3%E7%A0%81">代码处</a>直接查看代码使用</p>
</div><div class="story post-story"><h2 id="需要的东西"><a href="#需要的东西" class="headerlink" title="需要的东西"></a>需要的东西</h2><p>一个netlify账号</p>
<p><img src="https://cdn.chuqis.com/img/4c8a395ea13de4893afb0921e74afeef.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/4c8a395ea13de4893afb0921e74afeef.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/4c8a395ea13de4893afb0921e74afeef.jpg"></p>
<p>一个github账号</p>
</div><div class="story post-story"><h2 id="查阅文档"><a href="#查阅文档" class="headerlink" title="查阅文档"></a>查阅文档</h2><p>打开netlify的<a href="https://docs.netlify.com/routing/redirects/">文档</a>查看</p>
<h3 id="格式"><a href="#格式" class="headerlink" title="格式"></a>格式</h3><p>找到了路由设置的相关内容后可以看到这些内容和格式</p>
<p>If you specify your redirect rules in your Netlify configuration file, you can use a more structured configuration format with additional capabilities such as signed proxy redirects. In a netlify.toml file, we use TOML’s array of tables to specify each individual redirect rule. The following keywords are available:</p>
<p><code>from</code>: The path you want to redirect.</p>
<p><code>to</code>: The URL or path you want to redirect to.</p>
<p><code>status</code>: The HTTP status code you want to use in that redirect; 301 by default.</p>
<p><code>force</code>: Whether to override any existing content in the path or not; false by default. Visit the shadowing instructions for more details.</p>
<p><code>query</code>: Query string parameters REQUIRED to match the redirect. Visit the query parameters instructions for more details.</p>
<p><code>conditions</code>: Conditions to match the redirect, including country, role, and cookie presence conditions.</p>
<p><code>headers</code>: Additional request headers to send in proxy redirects.</p>
<p><code>signed</code>: Name of an environment variable for signed proxy redirects.</p>
<h3 id="目录反代目录匹配"><a href="#目录反代目录匹配" class="headerlink" title="目录反代目录匹配"></a>目录反代目录匹配</h3><p>因为反代jsd同时需要反代jsd目录下的所有文件，所以这里需要有一个路径匹配</p>
<p>原文如下</p>
<p>An asterisk indicates a splat that will match anything that follows it.</p>
<p>You can use the splat in your rewrites or redirects like this:</p>
<p>/news/*  /blog/:splat</p>
<p>This would redirect paths like /news/2004/01/10/my-story to /blog/2004/01/10/my-story.</p>
<p>所以我需要在 <code>from</code>的/后面添加* <code>to</code>的/后面添加:splat</p>
</div><div class="story post-story"><h2 id="实践代码"><a href="#实践代码" class="headerlink" title="实践代码"></a>实践代码</h2><p>这里我需要http返回状态码为200</p>
<blockquote>
<p>这样我的国内服务器就能再次反代netlify的cdn</p>
</blockquote>
<p>整合完上面的设置配置就是这样了</p>
<p>这里我们需要把下面的代码放在新建名为 <code>netlify.toml</code>的文件中</p>
<blockquote>
<p>注意这里的文件必须在仓库的根目录</p>
</blockquote>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">[[redirects]]</span><br><span class="line">from = &quot;/*&quot;</span><br><span class="line">to = &quot;https://cdn.jsdelivr.net/:splat&quot;</span><br><span class="line">status = 200</span><br><span class="line">force = true</span><br><span class="line">headers = &#123;X-From = &quot;Netlify&quot;&#125;</span><br></pre></td></tr></table></figure>

<p>然后把这个仓库上传到github</p>
<p>之后我们点击<a href="https://app.netlify.com/start">这里</a>在netlify新建一个项目并且选择已经上传到github仓库</p>
<p>然后等待部署完成即可</p>
<p>完结撒花👏</p>

</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>netlify</tag>
        <tag>反代</tag>
        <tag>jsdelivr</tag>
      </tags>
  </entry>
  <entry>
    <title>qexo多作者解决方案</title>
    <url>/posts/32667.html</url>
    <content><![CDATA[<p><img src="https://cdn.chuqis.com/img/ba28b505cd1c674036c0a05d3f70c6ae.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/ba28b505cd1c674036c0a05d3f70c6ae.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/ba28b505cd1c674036c0a05d3f70c6ae.jpg"></p>
<p>在一个博客可能会有多个作者在写文章，比如我的博客，所以我折腾abudu大大好久</p>
<p>abudu大大真是一个好开发，满足用户需求</p>
<div class="story post-story"><h2 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</h2><p>废话不说了，直接上方法</p>
<p>打开 <code>qexo域名/userscrpits.html</code>创建子账号</p>
<p>然后是否为管理按需填写</p>
<p>然后完结撒花</p>
</div><div class="story post-story"><h2 id="再次感谢abudu大佬"><a href="#再次感谢abudu大佬" class="headerlink" title="再次感谢abudu大佬"></a>再次感谢abudu大佬</h2><p>成功又水一篇文章</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>hexo</category>
      </categories>
      <tags>
        <tag>hexo</tag>
        <tag>博客</tag>
        <tag>qexo</tag>
      </tags>
  </entry>
  <entry>
    <title>qexo的搭建与使用</title>
    <url>/posts/37212.html</url>
    <content><![CDATA[<p><img src="https://bu.dusays.com/2022/01/17/0f3d2cf954f82.png" class="lazyload" data-srcset="https://bu.dusays.com/2022/01/17/0f3d2cf954f82.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<div class="story post-story"><h2 id="为什么写这篇文章"><a href="#为什么写这篇文章" class="headerlink" title="为什么写这篇文章"></a>为什么写这篇文章</h2><p>你是否一直在找一个hexo后台，但不尽人意，或许在没有qexo之前，hpp是一个很好的选择，但是显然拥有更多能力的qexo是更好的选择</p>
</div><div class="story post-story"><h2 id="为什么"><a href="#为什么" class="headerlink" title="为什么"></a>为什么</h2><p>qexo拥有如下功能</p>
<ul>
<li>自定义图床上传图片</li>
<li>在线配置编辑</li>
<li>在线文章管理</li>
<li>在线页面管理</li>
<li>在线友链管理</li>
<li>较为完善的缓存功能</li>
<li>Webhook 清除缓存</li>
<li>自动检查更新</li>
<li>实验性的在线更新</li>
<li>开放的 API</li>
</ul>
<p>那么看起来qexo是非常强大的</p>
</div><div class="story post-story"><h2 id="怎么用"><a href="#怎么用" class="headerlink" title="怎么用"></a>怎么用</h2><h3 id="申请-MongoDB"><a href="#申请-MongoDB" class="headerlink" title="申请 MongoDB"></a>申请 MongoDB</h3><p><a href="https://www.mongodb.com/cloud/atlas/register">注册 MongoDB 账号</a> 创建免费 MongoDB 数据库，区域推荐选择 AWS / N.<br>Virginia (us-east-1) 在 Clusters 页面点击 CONNECT，按步骤设置允许所有 IP 地址的连接），创建数据库用户，并记录数据库连接信息，密码即为你所设置的值</p>
<p><a href="https://bu.dusays.com/2021/11/09/6fd9e2a69e8bc.png"><img src="https://bu.dusays.com/2021/11/09/6fd9e2a69e8bc.png" class="lazyload" data-srcset="https://bu.dusays.com/2021/11/09/6fd9e2a69e8bc.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<h3 id="一键部署"><a href="#一键部署" class="headerlink" title="一键部署"></a>一键部署</h3><p>点击按钮开始部署 <a href="https://vercel.com/new/clone?repository-url=https://github.com/am-abudu/Qexo"><img src="https://camo.githubusercontent.com/5e471e99e8e022cf454693e38ec843036ec6301e27ee1e1fa10325b1cb720584/68747470733a2f2f76657263656c2e636f6d2f627574746f6e" class="lazyload" data-srcset="https://camo.githubusercontent.com/5e471e99e8e022cf454693e38ec843036ec6301e27ee1e1fa10325b1cb720584/68747470733a2f2f76657263656c2e636f6d2f627574746f6e" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="部署到 Vercel"></a></p>
<p>重新进入项目，在项目设置界面添加环境变量 Environment Variables</p>
<table>
<thead>
<tr>
<th>名称</th>
<th>意义</th>
<th>示例</th>
</tr>
</thead>
<tbody><tr>
<td>DOMAINS</td>
<td>你所允许通信的安全域名 注意双引号而且是英文半角</td>
<td>[“.vercel.app”, “127.0.0.1”, “.yoursite.com”]</td>
</tr>
<tr>
<td>MONGODB_HOST</td>
<td>MongoDB 连接地址</td>
<td>mongodb+srv://cluster0.xxxx.mongodb.net</td>
</tr>
<tr>
<td>MONGODB_PORT</td>
<td>MongoDB 通信端口 默认应填写 27017</td>
<td>27017</td>
</tr>
<tr>
<td>MONGODB_USER</td>
<td>MongoDB 用户名</td>
<td>abudu</td>
</tr>
<tr>
<td>MONGODB_DB</td>
<td>MongoDB 数据库名</td>
<td>Cluster0</td>
</tr>
<tr>
<td>MONGODB_PASS</td>
<td>MongoDB 密码</td>
<td>JWo0xxxxxxxx</td>
</tr>
</tbody></table>
<p>在 Deployments 点击 Redeploy 开始部署，若没有 Error 信息即可打开域名进入初始化引导</p>
</div><div class="story post-story"><h2 id="相关api"><a href="#相关api" class="headerlink" title="相关api"></a>相关api</h2><h3 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h3><ol>
<li>Qexo 的 API 后方通常加上斜杠，否则可能出现重定向，可能会影响使用</li>
<li>若没有特殊说明，以下 API  <strong>都需要鉴权</strong> ，具体方法为在 POST 或 GET 中添加项 token=”API密钥”</li>
<li>Qexo 的 API 分为对公与程序内部调用两种，分别位于 pub 和 api 路径下，本文只说明对外 API，即可以通过 API 密钥进行校验</li>
<li>若没有特殊说明，本文提到的参数均需要 POST 请求</li>
</ol>
<h3 id="对公-API"><a href="#对公-API" class="headerlink" title="对公 API"></a>对公 API</h3><h4 id="pub-save"><a href="#pub-save" class="headerlink" title="pub/save/"></a>pub/save/</h4><p>修改文件</p>
<table>
<thead>
<tr>
<th>file</th>
<th>content</th>
</tr>
</thead>
<tbody><tr>
<td>文件路径</td>
<td>内容</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-save-post"><a href="#pub-save-post" class="headerlink" title="pub/save_post/"></a>pub/save_post/</h4><p>修改文章</p>
<table>
<thead>
<tr>
<th>file</th>
<th>content</th>
</tr>
</thead>
<tbody><tr>
<td>文章名</td>
<td>内容</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-save-draft"><a href="#pub-save-draft" class="headerlink" title="pub/save_draft/"></a>pub/save_draft/</h4><p>保存文章草稿</p>
<table>
<thead>
<tr>
<th>file</th>
<th>content</th>
</tr>
</thead>
<tbody><tr>
<td>文章名</td>
<td>内容</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-new"><a href="#pub-new" class="headerlink" title="pub/new/"></a>pub/new/</h4><p>新建文件</p>
<table>
<thead>
<tr>
<th>file</th>
<th>content</th>
</tr>
</thead>
<tbody><tr>
<td>文件路径</td>
<td>内容</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-delete"><a href="#pub-delete" class="headerlink" title="pub/delete/"></a>pub/delete/</h4><p>删除文件</p>
<table>
<thead>
<tr>
<th>file</th>
</tr>
</thead>
<tbody><tr>
<td>文件路径</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-delete-post"><a href="#pub-delete-post" class="headerlink" title="pub/delete_post/"></a>pub/delete_post/</h4><p>删除文章</p>
<table>
<thead>
<tr>
<th>file</th>
</tr>
</thead>
<tbody><tr>
<td>文章名</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;OK!&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-create-webhook"><a href="#pub-create-webhook" class="headerlink" title="pub/create_webhook/"></a>pub/create_webhook/</h4><p>创建 Webhook 事件</p>
<table>
<thead>
<tr>
<th>uri</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://xxx/api/webhook/">https://xxx/api/webhook/</a></td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;设置成功！&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-update"><a href="#pub-get-update" class="headerlink" title="pub/get_update/"></a>pub/get_update/</h4><p>获取更新</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;hasNew&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;newer&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1.5.5&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;newer_link&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://github.com/am-abudu/Qexo/releases/tag/1.5.5&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;newer_time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2022-02-16 23:27:23&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;newer_text&quot;</span><span class="punctuation">:</span> <span class="string">&quot; 修复已知BUG; 添加友链清理功能  &quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-posts"><a href="#pub-get-posts" class="headerlink" title="pub/get_posts/"></a>pub/get_posts/</h4><p>获取文章列表</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;posts&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;10&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;fullname&quot;</span><span class="punctuation">:</span> <span class="string">&quot;10.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;source/_posts/10.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">592</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;11&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;fullname&quot;</span><span class="punctuation">:</span> <span class="string">&quot;11.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;source/_posts/11.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">1118</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-pages"><a href="#pub-get-pages" class="headerlink" title="pub/get_pages/"></a>pub/get_pages/</h4><p>获取页面列表</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;pages&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;404&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;source/404/index.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">5059</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;about&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;source/about/index.md&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">141</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-configs"><a href="#pub-get-configs" class="headerlink" title="pub/get_configs/"></a>pub/get_configs/</h4><p>获取配置列表</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;configs&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;main.yml&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;.github/workflows/main.yml&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">1500</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;_config.butterfly.yml&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;path&quot;</span><span class="punctuation">:</span> <span class="string">&quot;_config.butterfly.yml&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">27990</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-images"><a href="#pub-get-images" class="headerlink" title="pub/get_images/"></a>pub/get_images/</h4><p>获取图片列表</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;images&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;avatar-new-test3.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">556194</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://xxx&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;date&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2021-11-15 23:03:53&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1636988633.7590833&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;image.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;size&quot;</span><span class="punctuation">:</span> <span class="number">2080250</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://xxx&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;date&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2022-02-15 16:05:39&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1644912339.5202296&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-fix"><a href="#pub-fix" class="headerlink" title="pub/fix/"></a>pub/fix/</h4><p>自动修复程序</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;尝试自动修复了 1 个字段，请在稍后检查和修改配置&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-friends"><a href="#pub-friends" class="headerlink" title="pub/friends/"></a>pub/friends/</h4><p>获取友链 <strong>无需鉴权</strong></p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;data&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;iMaeGoo’s Blog&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.imaegoo.com/&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;image&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.imaegoo.com/images/avatar.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;虹墨空间站&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1642516414.3821218&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Icarus&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://ppoffice.github.io/hexo-theme-icarus/&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;image&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://ppoffice.github.io/hexo-theme-icarus/img/avatar.png&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;本站主题&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1642516682.7982264&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-add-friend"><a href="#pub-add-friend" class="headerlink" title="pub/add_friend"></a>pub/add_friend</h4><p>新增友链</p>
<table>
<thead>
<tr>
<th>name</th>
<th>url</th>
<th>image</th>
<th>description</th>
<th>status</th>
</tr>
</thead>
<tbody><tr>
<td>名称</td>
<td>链接</td>
<td>图片URL</td>
<td>描述</td>
<td>状态(隐藏/显示)</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;添加成功！&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1642516682.7982264&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-edit-friend"><a href="#pub-edit-friend" class="headerlink" title="pub/edit_friend"></a>pub/edit_friend</h4><p>编辑友链</p>
<table>
<thead>
<tr>
<th>name</th>
<th>url</th>
<th>image</th>
<th>description</th>
<th>time</th>
<th>status</th>
</tr>
</thead>
<tbody><tr>
<td>名称</td>
<td>链接</td>
<td>图片URL</td>
<td>描述</td>
<td>该友链的时间戳</td>
<td>状态(隐藏/显示)</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;修改成功！&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-del-friend"><a href="#pub-del-friend" class="headerlink" title="pub/del_friend"></a>pub/del_friend</h4><p>删除友链</p>
<table>
<thead>
<tr>
<th>time</th>
</tr>
</thead>
<tbody><tr>
<td>该友链的时间戳</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;删除成功！&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-ask-friend"><a href="#pub-ask-friend" class="headerlink" title="pub/ask_friend"></a>pub/ask_friend</h4><p>申请友链 <strong>无需鉴权但需要在设置中开启</strong></p>
<table>
<thead>
<tr>
<th>name</th>
<th>url</th>
<th>image</th>
<th>description</th>
</tr>
</thead>
<tbody><tr>
<td>名称</td>
<td>链接</td>
<td>图片URL</td>
<td>描述</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;申请成功！&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1642516682.7982264&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-last-已移除于1-6-2"><a href="#pub-last-已移除于1-6-2" class="headerlink" title="pub/last 已移除于1.6.2"></a>pub/last 已移除于1.6.2</h4><p>获取博主最后在线时间 <strong>已移除请使用/pub/status/</strong></p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1645543096&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-custom"><a href="#pub-get-custom" class="headerlink" title="pub/get_custom"></a>pub/get_custom</h4><p>获取自定义的字段 <strong>无需鉴权</strong></p>
<table>
<thead>
<tr>
<th>key</th>
</tr>
</thead>
<tbody><tr>
<td>字段名</td>
</tr>
</tbody></table>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;data&quot;</span><span class="punctuation">:</span> <span class="string">&quot;xxxx&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-get-notifications"><a href="#pub-get-notifications" class="headerlink" title="pub/get_notifications"></a>pub/get_notifications</h4><p>获取消息</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;data&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;label&quot;</span><span class="punctuation">:</span> <span class="string">&quot;title&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1647668134.7664979&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2022-03-19 13:35:34&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span>      </span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;label&quot;</span><span class="punctuation">:</span> <span class="string">&quot;title1&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;content&quot;</span><span class="punctuation">:</span> <span class="string">&quot;text1&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;timestamp&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1647668134.7664979&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2022-03-19 13:35:34&quot;</span></span><br><span class="line">        <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line"></span><br><span class="line">    <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h4 id="pub-status"><a href="#pub-status" class="headerlink" title="pub/status"></a>pub/status</h4><p>获取博客基本信息 <strong>无需鉴权</strong></p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;data&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;posts&quot;</span><span class="punctuation">:</span> <span class="string">&quot;68&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;last&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1648050031&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

<h3 id="错误示例"><a href="#错误示例" class="headerlink" title="错误示例"></a>错误示例</h3><p>错误返回在大多数情况相同</p>
<figure class="highlight json"><figcaption><span>position-relative overflow-auto</span></figcaption><table><tr><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;msg&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Error Message&quot;</span><span class="punctuation">,</span> </span><br><span class="line">    <span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="更多"><a href="#更多" class="headerlink" title="更多"></a>更多</h2><p>去问abudu</p>
<p>终于水完这篇文章了</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>hexo</category>
      </categories>
      <tags>
        <tag>博客</tag>
        <tag>后台</tag>
      </tags>
  </entry>
  <entry>
    <title>serviceworkers首屏优化</title>
    <url>/posts/52948.html</url>
    <content><![CDATA[<div class="note info"><p>本片文章默认你已经会使用sw来加速网站了</p></div>
<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>前阵子，我开始用cyf大佬的sw加速方案，前前后后我使用了三个不同作者所开发的sw加速，但是因cyf的代码过于难以了解（我菜），而去使用了yfun大佬的代码，以便网页在前端被更新</p>
</div><div class="story post-story"><h2 id="为什么要首屏优化"><a href="#为什么要首屏优化" class="headerlink" title="为什么要首屏优化"></a>为什么要首屏优化</h2><p>在使用cyf大佬的方案是我发现了cyf的首屏优化方案</p>
<blockquote>
<p>事实上，ServiceWorker最显著的缺点是要在第一次加载网页安装后，刷新一次才能激活。即访客第一次访问是不受sw控制的。换句话说，访客首屏不受加速，其加载速度与你的服务器有直接联系 <del>[虽然安装完成后就起飞了,但安装前就是屑]</del>。</p>
</blockquote>
<blockquote>
<p>更加令人抓狂的是，在首屏加载时，静态资源会被直接获取，并且不缓存，而sw激活后又会强制第二次获取，拉跨速度。不过我们可以尽可能弱化这一劣势。我们可以用js打断所有的请求，以确保首屏只加载一个html和一个sw.js，其余资源都不会加载，降低首屏加载延迟。</p>
</blockquote>
<p>所以我尝试使用了cyf大佬的首屏优化，而且有一个帅气的sw安装页面谁不爱呢</p>
<p>我前后使用了两种首屏优化样式这里都分享出来</p>
<h3 id="方案1（by-cyfan）"><a href="#方案1（by-cyfan）" class="headerlink" title="方案1（by cyfan）"></a>方案1（by cyfan）</h3><details cyan><summary> 打开复制源码 </summary>
              <div class='content'>
              <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;!-- sw前端竞速 --&gt;</span><br><span class="line">&lt;script&gt;</span><br><span class="line">(async () =&gt; &#123;//使用匿名函数确保body已载入</span><br><span class="line">    /*</span><br><span class="line">    QYBlogHelper_Set 存储在LocalStorage中,用于指示sw安装状态</span><br><span class="line">    0 或不存在 未安装</span><br><span class="line">    1 已打断</span><br><span class="line">    2 已安装</span><br><span class="line">    3 已激活,并且已缓存必要的文件(此处未写出,无需理会)</span><br><span class="line">    */</span><br><span class="line">    if (&#x27;serviceWorker&#x27; in navigator) &#123; //如果支持sw</span><br><span class="line">        if (Number(window.localStorage.getItem(&#x27;QYBlogHelper_Set&#x27;)) &lt; 1) &#123;</span><br><span class="line">            setTimeout(async () =&gt; &#123;</span><br><span class="line">                console.log(&#x27;检测到您的浏览器没有安装QYBlogHelper，开始注册&#x27;)</span><br><span class="line">                window.stop()</span><br><span class="line">                window.localStorage.setItem(&#x27;QYBlogHelper_Set&#x27;, 1)</span><br><span class="line">                const replacehtml = await fetch(&#x27;https://npm.elemecdn.com/chenyfan-blog@1.0.13/public/notice.html&#x27;)</span><br><span class="line">                document.body.innerHTML = await replacehtml.text()</span><br><span class="line">                $(&#x27;#info&#x27;).innerText = &#x27;尝试安装QYBlogHelper...&#x27;;</span><br><span class="line">            &#125;, 0);</span><br><span class="line">        &#125;</span><br><span class="line">        const $ = document.querySelector.bind(document);//语法糖</span><br><span class="line">        navigator.serviceWorker.register(`/sw.js?time=$&#123;new Date().getTime()&#125;`)//随机数,强制更新</span><br><span class="line">            .then(async () =&gt; &#123;</span><br><span class="line">                if (Number(window.localStorage.getItem(&#x27;QYBlogHelper_Set&#x27;)) &lt; 2) &#123;</span><br><span class="line">                    setTimeout(() =&gt; &#123;</span><br><span class="line">                        $(&#x27;#info&#x27;).innerText = &#x27;安装成功,稍等片刻...&#x27;;</span><br><span class="line">                    &#125;, 0);</span><br><span class="line">                    setTimeout(() =&gt; &#123;</span><br><span class="line">                        window.localStorage.setItem(&#x27;QYBlogHelper_Set&#x27;, 2)</span><br><span class="line">                        console.log(&#x27;准备跳转&#x27;)</span><br><span class="line">                        window.location.reload()//刷新,以载入sw</span><br><span class="line">                    &#125;, 500)//安装后等待500ms使其激活</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;)</span><br><span class="line">            .catch(err =&gt; console.error(`QYBlogHelperError:$&#123;err&#125;`))</span><br><span class="line">    &#125; else &#123;</span><br><span class="line">        setTimeout(() =&gt; &#123;</span><br><span class="line">            $(&#x27;#info&#x27;).innerText = &#x27;很抱歉,我们已不再支持您的浏览器.&#x27;;</span><br><span class="line">        &#125;, 0);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;)()</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure>
              </div>
            </details>

<h3 id="方案2（by-yfun）"><a href="#方案2（by-yfun）" class="headerlink" title="方案2（by yfun）"></a>方案2（by yfun）</h3><details cyan><summary> 打开复制源码 </summary>
              <div class='content'>
              <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;!-- sw前端竞速 --&gt;</span><br><span class="line">&lt;script&gt;</span><br><span class="line">(async () =&gt; &#123;//使用匿名函数确保body已载入</span><br><span class="line">    /*</span><br><span class="line">    QYBlogHelper_Set 存储在LocalStorage中,用于指示sw安装状态</span><br><span class="line">    0 或不存在 未安装</span><br><span class="line">    1 已打断</span><br><span class="line">    2 已安装</span><br><span class="line">    3 已激活,并且已缓存必要的文件(此处未写出,无需理会)</span><br><span class="line">    */</span><br><span class="line">    if (&#x27;serviceWorker&#x27; in navigator) &#123; //如果支持sw</span><br><span class="line">        if (Number(window.localStorage.getItem(&#x27;QYBlogHelper_Set&#x27;)) &lt; 1) &#123;</span><br><span class="line">            setTimeout(async () =&gt; &#123;</span><br><span class="line">                console.log(&#x27;检测到您的浏览器没有安装QYBlogHelper，开始注册&#x27;)</span><br><span class="line">                window.stop()</span><br><span class="line">                window.localStorage.setItem(&#x27;QYBlogHelper_Set&#x27;, 1)</span><br><span class="line">                const replacehtml = await fetch(&#x27;https://npm.elemecdn.com/qycdn@0.9.13/html/swinstall.html&#x27;)</span><br><span class="line">                document.body.innerHTML = await replacehtml.text()</span><br><span class="line">            &#125;, 0);</span><br><span class="line">        &#125;</span><br><span class="line">        const $ = document.querySelector.bind(document);//语法糖</span><br><span class="line">        navigator.serviceWorker.register(`/sw.js?time=$&#123;new Date().getTime()&#125;`)//随机数,强制更新</span><br><span class="line">            .then(async () =&gt; &#123;</span><br><span class="line">                if (Number(window.localStorage.getItem(&#x27;QYBlogHelper_Set&#x27;)) &lt; 2) &#123;</span><br><span class="line">                    setTimeout(() =&gt; &#123;</span><br><span class="line">                        window.localStorage.setItem(&#x27;QYBlogHelper_Set&#x27;, 2)</span><br><span class="line">                        console.log(&#x27;准备跳转&#x27;)</span><br><span class="line">                        window.location.reload()//刷新,以载入sw</span><br><span class="line">                    &#125;, 500)//安装后等待500ms使其激活</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;)</span><br><span class="line">            .catch(err =&gt; console.error(`QYBlogHelperError:$&#123;err&#125;`))</span><br><span class="line">    &#125; else &#123;</span><br><span class="line">        setTimeout(() =&gt; &#123;</span><br><span class="line">            console.log(&#x27;很抱歉,我们已不再支持您的浏览器&#x27;);</span><br><span class="line">        &#125;, 0);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;)()</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure>
              </div>
            </details>

<h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><div class="note warning"><p>我们尽可能将打断代码提到<code>&lt;head&gt;</code> 以确保不被其他资源堵塞，对于hexo来说打开主题的head.ejs，在<code>&lt;head&gt;</code>标签靠前的位置中加入，否则可能达不到理想的加速效果</p></div><div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li><li><a href="https://www.qystu.cc/posts/37212.html">qexo的搭建与使用</a></li><li><a href="https://songxwn.com/team_nav/">部署团队服务导航网站 Team-nav</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>前端</tag>
        <tag>博客</tag>
        <tag>web</tag>
        <tag>sw</tag>
      </tags>
  </entry>
  <entry>
    <title>云寄2.0全新回归！用一生去抵达遥远的未来！让我们一起期待云寄时光邮局2.0正式发布！</title>
    <url>/posts/55413.html</url>
    <content><![CDATA[<p>云寄2.0全新回归！用一生去抵达遥远的未来！让我们一起期待云寄时光邮局2.0正式发布</p>
<div class="aspect-ratio">
<iframe src="https://player.bilibili.com/player.html?aid=442914362&page=1" allowfullscreen="allowfullscreen" width="100%" height="500" scrolling="no" frameborder="0" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts"> </iframe>
</div>

]]></content>
      <categories>
        <category>totime</category>
        <category>chuqis</category>
      </categories>
      <tags>
        <tag>totime</tag>
        <tag>云寄</tag>
      </tags>
  </entry>
  <entry>
    <title>小米12su与vivox90pro+综合对比及机圈未来趋势</title>
    <url>/posts/10907.html</url>
    <content><![CDATA[<p><img src="https://cdn.chuqis.com/img/4d793a087a3c14c54dc00eb30f512f2f.webp" class="lazyload" data-srcset="https://cdn.chuqis.com/img/4d793a087a3c14c54dc00eb30f512f2f.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/4d793a087a3c14c54dc00eb30f512f2f.webp"></p>
<div class="story post-story"><h2 id="性能方面"><a href="#性能方面" class="headerlink" title="性能方面"></a>性能方面</h2><p><code>小米12su</code>和 <code>vivo x90pro+</code>作为2022年的年度影像旗舰，综合实力两者不相上下，但性能方面vivo会强些。12su由于是7月发布，只能用上骁龙8＋，其闪存和内存分别是 <code>ufs3.1</code>和LPDDR5。而vivo x90pro+为12月发布，用上了高通最新的骁龙8Gen2，内存和闪存也分别升级到了最新规格，为 <code>ufs4.0</code>和 <code>LPDDR5x</code></p>
<div class="img-wrap"><div class="img-bg"><img class="img lazyload" src="https://cdn.chuqis.com/img/42c9607fba71b879cb7f7988923c1861.jpeg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/42c9607fba71b879cb7f7988923c1861.jpeg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image" style="width:300px;"/></div></div>

<p>此次骁龙 8 Gen2 采用了 1+2+2+3 四丛集方案，具体为 1 颗 3.19GHz 主频 Cortex-X3 超大核，2 个 2.8GHz 主频 A715 大核心，2 个 2.8GHz 主频 A710 中核以及 3 个 2.0GHz 主频 A510 小核心，GPU 为 Adreno 740。</p>
<p><img src="https://cdn.chuqis.com/img/7e1b569135fc7a86a1631c58d47e3cfd.jpg" class="lazyload" data-srcset="https://cdn.chuqis.com/img/7e1b569135fc7a86a1631c58d47e3cfd.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/7e1b569135fc7a86a1631c58d47e3cfd.jpg"></p>
<p>CPU方面为正常迭代升级，主要为降低功耗。而GPU则有亮点，高通增加GPU面积高达50％，但频率却大幅降低至680兆，为的是在低频下得到更好的能效比。根据极客湾的测试，骁龙 <code>8gen2</code>的GPU在性能上比A16高出了18％，且满载功耗仅有8w，表现非常不错。</p>
</div><div class="story post-story"><h2 id="屏幕"><a href="#屏幕" class="headerlink" title="屏幕"></a>屏幕</h2><p><code>小米12su</code>采用三星E5屏幕，<code>vivo x90pro+</code>采用三星E6，都为2k+120hz，且都有微棱镜技术。虽然显示效果方面大差不差，但E6屏幕的激发亮度更高，并且E6屏幕有1920hzPWM调光，护眼效果比E5好很多。都有ltpo技术。</p>
</div><div class="story post-story"><h2 id="充电"><a href="#充电" class="headerlink" title="充电"></a>充电</h2><p><code>小米12su</code>采用4860mAh＋67w有线＋50w无线</p>
<p><code>vivo x90pro+</code>采用4700mAh＋80w有线＋50w无线</p>
</div><div class="story post-story"><h2 id="影像"><a href="#影像" class="headerlink" title="影像"></a>影像</h2><p><code>小米12su</code>：主摄采用索尼IMX989感光器，其尺寸规格1英寸，这是目前主流手机中所用到最大尺寸的感光器。5000万总像素，默认四合一输出约1250万像素，镜头集成光学防抖，等效焦距23毫米，F/1.9光圈。除了感光器之外，镜头镀膜也采用了ALD镀膜以及IRCF旋涂技术，旨在减少眩光和鬼影。</p>
<p>超广采用索尼IMX586感光器，尺寸规格1/2英寸，4800万像素，默认四合一输出1200万像素，镜头等效焦距13毫米，镜头光圈f/2.2。</p>
<p>潜望长焦也是采用的IMX586感光器，5x光学变焦，等效焦距120毫米，光圈F/4.1，集成光学防抖。</p>
<p><code>vivo x90pro+</code>：主摄为5000万像素IMX989，1英寸，支持OIS防抖，f/1.75大光圈，外加T*镀膜，抗鬼影和炫光效果十分不错。</p>
<p>人像为5000万像素IMX758，2x光学变焦，支持OIS，1/2.51英寸底，f/1.6大光圈。</p>
<p>超广角为4800万像素IMX598，1/2英寸底，f/2.2光圈。</p>
<p>潜望长焦为6400万像素OV64B，3.5x光学变焦，支持OIS防抖，1/2英寸底，f/3.5光圈。</p>
</div><div class="story post-story"><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>小米12su和vivo x90pro+影像规格都非常高。由于vivo有 <code>T*</code>镀膜，因此抗炫光能力更强。得益于2x人像镜头的加入，vivo的焦段覆盖更全面，但也造成了vivo在10x以上画质不如小米。vivo还采用了自研影像芯片v2，使得极限暗光场景和夜景视频表现更为出色。但整体来说，这两部机器的影像都非常出色。</p>
</div><div class="story post-story"><h2 id="看法"><a href="#看法" class="headerlink" title="看法"></a>看法</h2><p>但受限于机身内部空间，vivo本次并没有上微云台，但由于机圈内卷现状，各厂商也不得不最求更大的底。</p>
<p>如果vivo去掉2x镜头，再引入融合算法，让2x由主摄裁切＋潜望融合的方式可能会更好，由于融合只能是画面中心，正好在人像模式下，背景能得到自然的虚化，中心人物的解析力也会不错。去掉2x镜头，还可以节省内部空间，使的超广角或潜望的底更大或者加入微云台，使视频效果更好。</p>
<p>或者vivo保留人像镜头，但主摄还是用之前的Gn1。众所周知，在白天光线充足的场景，GN1的效果和1英寸基本没什么差距。而夜景，得益于影响芯片的加入，即使是GN1，也会有非常不错的效果。并且这样还能加入微云台技术，使视频稳定性更好</p>
<p> </p>

</div>]]></content>
      <categories>
        <category>手机</category>
      </categories>
      <tags>
        <tag>手机</tag>
        <tag>vivo</tag>
        <tag>天玑</tag>
        <tag>x90</tag>
        <tag>小米</tag>
        <tag>高通</tag>
        <tag>骁龙 8 Gen2</tag>
      </tags>
  </entry>
  <entry>
    <title>win11安装初体验(副下载)</title>
    <url>/posts/48475.html</url>
    <content><![CDATA[<p>6月15号深夜，Windows 11预览版的镜像，从国内论坛首先流出，各大QQ群和微信群都在广泛分享。16号白天，各大QQ群都时不时能看到群友在谈论Windows 11的话题。至此，Windows 11已经板上钉钉，无可争议了。</p>
<p>本次泄露的镜像具体构建号是Build 21996，包含了Windows 11家庭版、教育版、专业版。昨天上午已经下载了Windows 11的镜像，并在虚拟机里安装测试了，现在跟大家分享一下测试体验。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/640.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/640.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="640"></p>
<div class="story post-story"><h2 id="一、安装"><a href="#一、安装" class="headerlink" title="一、安装"></a>一、安装</h2><p>由于是预览版系统，BUG比较多，而且是英文版的，所以不建议在实体机上使用。采用的是Parallels Desktop虚拟机，安装过程已经全程录像了，安装过程花了16分钟。</p>
</div><div class="story post-story"><h2 id="二、测试"><a href="#二、测试" class="headerlink" title="二、测试"></a>二、测试</h2><h3 id="测试软件"><a href="#测试软件" class="headerlink" title="测试软件"></a>测试软件</h3><p>Windows 11 对设备的硬性要求，具体可见下图。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/001.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/001.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="001"></p>
<p>我们可以先检测自己的电脑是否可以升级到Windows11</p>
<p><strong>那么如何检测呢？</strong></p>
<p>可以安装微软提供的<strong>Windows电脑监控状况检查</strong>软件进行检测</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/002.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/002.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="002"></p>
<p>需要注意的是，本软件需要在Windows10上运行，Windows7上是无法运行的</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/003.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/003.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="003"></p>
<p>安装完成后，直接打开，首页就可以看到：</p>
<blockquote>
<p>我们检查这台电脑是否满足系统要求</p>
<p>如果想进行升级,则当其可用时可获取免费升级</p>
</blockquote>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/004.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/004.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="004"></p>
<p>点击立即检查，就能得知是否可以运行Windows11了</p>
<h3 id="修复"><a href="#修复" class="headerlink" title="修复"></a>修复</h3><p>如果遇到不支持时可以用这些方法</p>
<h4 id="1-常规修复"><a href="#1-常规修复" class="headerlink" title="1.常规修复"></a>1.常规修复</h4><p>事实上，过去几年出货的 PC 都有 TPM 2.0。因此，可能是您的计算机支持 TPM，但它被禁用，导致运行状况检查应用程序报告 Windows 11 无法在您的计算机上运行。</p>
<p>如果禁用，您必须打开 BIOS 菜单并手动启用 TPM。</p>
<h4 id="检查-TPM-是否已启用"><a href="#检查-TPM-是否已启用" class="headerlink" title="检查 TPM 是否已启用"></a>检查 TPM 是否已启用</h4><p>要检查您的计算机是否具有兼容的 TPM，请在 PowerShell 窗口中运行命令 get-tpm。</p>
<ol>
<li>打开“开始”菜单并搜索 Windows Powershell。</li>
<li>右键单击“Windows PowerShell”并点击<strong>以管理员身份运行</strong>。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/005.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/005.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></li>
<li>窗口打开后，键入并输入<strong>get-tpm</strong>。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/006.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/006.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></li>
<li>检查 TPM 是否存在并启用。</li>
</ol>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/007.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/007.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>或者，您可以按 Win + R，键入<strong>tpm.msc，</strong>然后按 Enter。TPM 管理窗口打开后，检查“状态”和“TPM 规范版本”。</p>
<h4 id="在-BIOS-菜单中启用-TPM"><a href="#在-BIOS-菜单中启用-TPM" class="headerlink" title="在 BIOS 菜单中启用 TPM"></a>在 BIOS 菜单中启用 TPM</h4><p>如果未启用 TPM，您可以通过 BIOS 菜单启用它，如下所示：</p>
<ol>
<li>关闭你的电脑。</li>
<li>重新启动它，在启动过程中，按 F1、F2、F10、F11、DEL**打开 BIOS 或 UEFI 菜单 -**键因制造商而异 - 请查看用户手册或制造商网站以获取确切信息。</li>
<li>BIOS 或 UEFI 菜单打开后，点击<strong>安全</strong>选项。</li>
<li>在这里，查找 TPM 并检查它是否已启用。如果没有，请启用它。</li>
<li>现在，确保<strong>Save and Exit</strong>。然后，重新启动您的 PC。</li>
</ol>
<p>在某些设备上，您可以在高级设置 &gt; 安全 &gt; 可信计算或设置 &gt; 杂项 &gt; 可信计算中找到该选项。</p>
<h4 id="开启安全启动"><a href="#开启安全启动" class="headerlink" title="开启安全启动"></a>开启安全启动</h4><p>安全启动是一种安全标准，可帮助确保设备仅使用制造商信任的软件启动。这有助于防止恶意软件，并且通常在所有现代计算机上都可用。</p>
<p>您的 PC 必须支持安全启动才能与 Windows 11 兼容。</p>
<h4 id="检查是否启用了安全启动"><a href="#检查是否启用了安全启动" class="headerlink" title="检查是否启用了安全启动"></a>检查是否启用了安全启动</h4><p>要检查您的计算机上是否启用了安全启动：</p>
<ol>
<li>按<strong>Windows+R</strong>打开运行窗口。</li>
<li>键入并输入<strong>msinfo32</strong>。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/008.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/008.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></li>
<li>窗口打开后，查找“安全启动状态”。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/009.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/009.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="009"></li>
<li>检查它是否打开。如果没有，请通过以下步骤启用它。</li>
</ol>
<p>相关提示 2 在应用程序不允许的情况下截取屏幕截图的方法；无需root</p>
<h4 id="在-BIOS-菜单中启用安全启动"><a href="#在-BIOS-菜单中启用安全启动" class="headerlink" title="在 BIOS 菜单中启用安全启动"></a>在 BIOS 菜单中启用安全启动</h4><p>与 TPM 一样，您可以从 BIOS 菜单启用安全启动。</p>
<ol>
<li>按照上述 TPM 步骤打开 BIOS 或 UEFI 菜单。</li>
<li>转到“<strong>启动”</strong>选项卡。您可能必须进入<strong>高级模式</strong>。</li>
<li>寻找<strong>安全启动</strong>选项。检查它是否已启用。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/010.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/010.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></li>
<li>如果没有，请启用它。</li>
<li><strong>保存并退出</strong>，然后重新启动您的 PC。</li>
</ol>
<p>最后，打开PC健康检查工具，检查兼容性，看是否通过测试。如果没有，请重新检查您的计算机规格。</p>
<h4 id="2-注册表大法"><a href="#2-注册表大法" class="headerlink" title="2.注册表大法"></a>2.注册表大法</h4><p>　　这种方法是外媒WindowsLatest报道的，在进行镜像安装时，Win11会提示“该电脑无法运行Win11”。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/60032c11186bc63c2b13c66ac82d8644.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/60032c11186bc63c2b13c66ac82d8644.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="安装Win11系统绕过TPM 2.0的三种方法"></p>
<p>　　不要慌，在这个界面按Shift+F10，打开命令行界面，输入regedit打开注册表，然后定位到：</p>
<p>　　HKEY_LOCAL_MACHINE\SYSTEM\Setup</p>
<p>　　创建一个名为“LabConfig”的项，接着在“LabConfig”下创建两个DWORD值：</p>
<p>　　键为“BypassTPMCheck”，值为“00000001”</p>
<p>　　键为“BypassSecureBootCheck”，值为“00000001”</p>
<p>　　保存退出后，上图的提示就消失了，大家就可以正常安装Win11。</p>
<h4 id="3-dll破解"><a href="#3-dll破解" class="headerlink" title="3.dll破解"></a>3.dll破解</h4><p>　如果想通过直接从Win11 ISO镜像运行setup.exe程序来升级系统，而非全新安装，还有另一种简单的解决方法。</p>
<p>　大家需要找到Win10 ISO的appraiserres.dll文件，替换Win11 ISO的同名文件。完成后，需要使用第三方工具（如Rufus或AnyBurn）重新创建ISO镜像，然后再次运行安装文件。</p>
<h4 id="4-了解为什么您的-PC-与-Windows-11-不兼容"><a href="#4-了解为什么您的-PC-与-Windows-11-不兼容" class="headerlink" title="4.了解为什么您的 PC 与 Windows 11 不兼容"></a>4.了解为什么您的 PC 与 Windows 11 不兼容</h4><p>WhyNotWin11 是一款便携式兼容性检查工具，可扫描您的硬件并告诉您 PC 与 Windows 11 不兼容的原因。您可以使用此工具替代 Microsoft 的 PC 健康检查工具：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/011.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/011.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="011"></p>
<ol>
<li><p>从GitHub<strong>下载 WhyNotWin11</strong>。</p>
</li>
<li><p>如果您的浏览器阻止了该应用程序，请单击三个点并保留该文件。</p>
</li>
<li><p>同样，Windows 可能会标记该应用程序并阻止安装。单击“<strong>更多信息”，</strong>然后单击<strong>“仍然运行”</strong>。</p>
</li>
<li><p>当提示运行应用程序时，单击<strong>确定</strong>。</p>
</li>
<li><p>它会立即检查并告诉您您的 PC 是否可以运行 Windows 11。</p>
</li>
<li><p>如果您的 PC 不兼容，它会告诉您您的机器缺乏的确切要求。<img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/012.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/012.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
</li>
</ol>
<p>它的工作原理是将您的计算机硬件与当前已知的要求相匹配：</p>
<ul>
<li>引导类型</li>
<li>CPU架构</li>
<li>CPU代</li>
<li>核心数</li>
<li>CPU频率</li>
<li>DirectX 支持</li>
<li>磁盘分区</li>
<li>内存</li>
<li>安全启动</li>
<li>贮存</li>
<li>TPM 最小值</li>
</ul>
<p>如果所有要求都标记为<strong>绿色并显示“OK”，则</strong>您的计算机兼容 Windows 11。但是，任何参数都以<strong>红色</strong>显示并<strong>带有 X</strong>，这就是导致兼容性问题的原因。如果可能，您可以进行更改以使 Windows 11 在设备上运行。</p>
</div><div class="story post-story"><h2 id="三、体验"><a href="#三、体验" class="headerlink" title="三、体验"></a>三、体验</h2><p>Windows 11预览版给我的印象主要有以下几个：</p>
<ul>
<li>开机logo变了</li>
<li>任务栏按钮居中</li>
<li>无处不在的圆角矩形</li>
<li>新增了快速分屏功能</li>
<li>高斯模糊更好看了</li>
</ul>
<h3 id="开机logo"><a href="#开机logo" class="headerlink" title="开机logo"></a>开机logo</h3><p>首先谈谈开机logo。Windows 11的开机画面中央是正方形的微软logo，而Windows 10则是梯形的。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/641.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/641.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Windows 11开机logo"></p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/642.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/642.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Windows 10开机logo"></p>
<h3 id="改语言"><a href="#改语言" class="headerlink" title="改语言"></a>改语言</h3><p>由于这次泄露的镜像是英文版的，没有自带简体中文语言，因此安装完成需要手动去设置里添加语言</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/013.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/013.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>把地区改成中国，语言改成中文（简体，中国），并在Language里添加中文（简体，中国），然后注销系统，即可获取中文系统界面。</p>
<p>不过，目前还仅仅是部分UI的简单汉化，很多的内置软件都没有被彻底汉化，可能是因为微软还没跟进翻译吧。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/014.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/014.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="014"></p>
<h3 id="激活"><a href="#激活" class="headerlink" title="激活"></a>激活</h3><p>那么，装完系统需要激活，经过测试，使用激活工具也可以顺利激活成功，还是数字权利激活。不过系统版本被激活工具识别错误，相信作者也会及时跟进。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/016.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/016.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="016"></p>
<h3 id="任务栏"><a href="#任务栏" class="headerlink" title="任务栏"></a>任务栏</h3><p>任务栏居中，可以说是Windows 11给人的最直观的感受，左对齐了几十年的Win按钮，终于跑到中间去了。有点像macOS的风格了，有木有？</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/017.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/017.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="017"></p>
<p>那么，任务栏的第一个按钮还是Windows按钮，不过logo换了一个，之前是纯黑色的，现在变成了蓝色渐变色的了。</p>
<p>点击Windows按钮之后，会弹出一个浮动的、不与任务栏连接在一起的开始菜单窗口，主要显示的是已固定和推荐的项目，可以把常用的软件固定在开始菜单里。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/018.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/018.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="018"></p>
<p>点击开始菜单窗口右上角的“所有应用”按钮，即可进入Windows菜单，这个和Windows 10类似，所有安装的软件都在这里了，不过不再显示动态磁贴了：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/019.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/019.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="019"></p>
<p>开始菜单右下角是关机按钮，可以执行睡眠、关机、重启操作。</p>
<p>在Windows按钮上右击，可以弹出相关的菜单，和Windows 10上差不多，不过背景颜色改成了白色。</p>
<p>另外，在设置里，还可以选择哪些快捷方式显示在开始菜窗口里：</p>
<p>任务栏上的第二个按钮是搜索按钮，和Windows 10上的操作差不多，不做过多介绍。</p>
<p>任务栏上的第三个按钮是多任务按钮，可以新建桌面：</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEg5AhRX4JGkTNoaW1UcpU4cEyEv9havPtek5eaZhibsRz1r7Vr0YtKkg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEg5AhRX4JGkTNoaW1UcpU4cEyEv9havPtek5eaZhibsRz1r7Vr0YtKkg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEvx8wicsM7Bu2GBQMLaDAHJPdmAycYe8p2zf1eIwiaxUH221osxmk4onw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEvx8wicsM7Bu2GBQMLaDAHJPdmAycYe8p2zf1eIwiaxUH221osxmk4onw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>任务栏上的第四个按钮是“小组件”按钮，有点像Windows 10上“<a href="https://mp.weixin.qq.com/s?__biz=MzI2Mzk4MjM4Mg==&mid=2247539972&idx=3&sn=82e55c0c8bf5e0a165a75527020c29f1&scene=21#wechat_redirect">资讯和兴趣</a>”按钮，不过这次它直接显示在屏幕左侧，里面都是各种资讯广告、天气之类的。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEDCAefsI2UqwRib2Kum4BIibZhvVau8U1lXj1vlIR5w4L9vhY2DkuibqFA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEDCAefsI2UqwRib2Kum4BIibZhvVau8U1lXj1vlIR5w4L9vhY2DkuibqFA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>不知道微软之后会不会开放接口，如果发展地好的话，可能会变成类似于安卓和iOS系统上的“负一屏”，里面可以添加各种小工具，也是不错的。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_gif/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEOEJicEKsTXOV1hGNSmfibBfEH91h8lgIcEywZdRPmVibH2AFvFKPL53LA/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_gif/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEOEJicEKsTXOV1hGNSmfibBfEH91h8lgIcEywZdRPmVibH2AFvFKPL53LA/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>此外，任务栏上会显示当前已经开启的软件，并且正在运行的程序，其图标下方会出现一个小横线，并且你当前正在使用的软件，它的小横线会更长一些。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEpd3khobLpQ0uEUgFTG0maOrx6X2OTVSrl14lGY3VP4bXHMMVALokVA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEpd3khobLpQ0uEUgFTG0maOrx6X2OTVSrl14lGY3VP4bXHMMVALokVA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEpXnHia8REfWvujwcibJd51SGuZXO12XmbWXA6gkInVdxsEViadaQFxMiag/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEpXnHia8REfWvujwcibJd51SGuZXO12XmbWXA6gkInVdxsEViadaQFxMiag/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>在任务栏上右击，不会再像Windows 10那样，出现各种选项，取而代之的是任务栏设置选项。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQE2cO4UbngSJIpXjjSlXyrsYPh3nrp31xv2X1SdYEfAPXwnEMpPd1PDw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQE2cO4UbngSJIpXjjSlXyrsYPh3nrp31xv2X1SdYEfAPXwnEMpPd1PDw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>而在任务栏上的图标上右击，也可以快速取消固定。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEVkNb7KnTAHaYS61DgcxhibDGzmN8Wibxnu31YYBqWr5VOeicicQb9eGWtQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEVkNb7KnTAHaYS61DgcxhibDGzmN8Wibxnu31YYBqWr5VOeicicQb9eGWtQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>有些用户可能习惯了左对齐的任务栏，那么，在设置里也可以设定菜单栏的对齐方式，改成左对齐，就和Windows 10差不多了。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEBxEZgebMeZwmZN0ghE5ft3sxW5GAeFFLOxB8ps5W72evopjMicYiafuw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEBxEZgebMeZwmZN0ghE5ft3sxW5GAeFFLOxB8ps5W72evopjMicYiafuw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<h3 id="圆角矩形"><a href="#圆角矩形" class="headerlink" title="圆角矩形"></a>圆角矩形</h3><p>被传了很久的圆角矩形，终于来了，系统内置的软件基本都已经实现了圆角矩形，这又是一项从macOS抄袭到Windows上的功能。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEskmSMHfrpxgRfpibI13rorVX0lpKCxxdiawVbMyOYqpNszceiaCibiacLHA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEskmSMHfrpxgRfpibI13rorVX0lpKCxxdiawVbMyOYqpNszceiaCibiacLHA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEohg48DYPdmTPo26iaMMFPYtuicRwCAplSlicx5R8qice3nDPTnzIgZwvjg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEohg48DYPdmTPo26iaMMFPYtuicRwCAplSlicx5R8qice3nDPTnzIgZwvjg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEla70n24nAnAq8qJicQwbMLpT2stvMK6dicXq2ibJQOYCMCnic8w6Dam0Lg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEla70n24nAnAq8qJicQwbMLpT2stvMK6dicXq2ibJQOYCMCnic8w6Dam0Lg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQECeCNhIptTYFnAT1CU40bCKPH5KtVxRntsiaqxaSP7k9fguYpCQRQrqg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQECeCNhIptTYFnAT1CU40bCKPH5KtVxRntsiaqxaSP7k9fguYpCQRQrqg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>但是，第三方软件暂时还没适配，需要开发厂商及时适配才能显示为圆角矩形，萝卜哥测试了火绒，目前它还不是圆角的。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEsSeKdoANuDIShibsCMaAibtdbrkHyJrJ4TCINbzvPZvS0Z3asrmlZFIQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEsSeKdoANuDIShibsCMaAibtdbrkHyJrJ4TCINbzvPZvS0Z3asrmlZFIQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEKFjA4phcicYSZzhPl52gPoiaFC0m3HJUO5S9UCRQkKDNzGrzg0lUiaZwA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEKFjA4phcicYSZzhPl52gPoiaFC0m3HJUO5S9UCRQkKDNzGrzg0lUiaZwA/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<h3 id="新的分屏功能"><a href="#新的分屏功能" class="headerlink" title="新的分屏功能"></a>新的分屏功能</h3><p>Windows 11还新增了快速分屏功能，可能很多人都没发现。</p>
<p>以往的窗口放大按钮，单纯就是放大功能。而在Windows 11中，微软将其进行优化，只要鼠标在最大化图标上停留几秒钟，即可出现分屏功能。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQE1twgib7X49qySib6WqTsvmJ1eegS5VVoTCyJlmPaH0zMnG4NianicreWPw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQE1twgib7X49qySib6WqTsvmJ1eegS5VVoTCyJlmPaH0zMnG4NianicreWPw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>目前，Windows 11预览版提供了4种分屏模式，萝卜哥做了个动图演示：</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_gif/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEsicoghaLzurAfR3hS0vEPh75mhWx2NnScP8JZlR97FhKQ3IUYGnMEJQ/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_gif/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEsicoghaLzurAfR3hS0vEPh75mhWx2NnScP8JZlR97FhKQ3IUYGnMEJQ/640?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<h3 id="高斯模糊"><a href="#高斯模糊" class="headerlink" title="高斯模糊"></a>高斯模糊</h3><p>Windows 11上的背景模糊，貌似更好看了，对不？</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEysibbtiaUje1ZPtrP1Co3k161DRoy9o9rsknYzCj3QeOSWYGfwfUcCZQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEysibbtiaUje1ZPtrP1Co3k161DRoy9o9rsknYzCj3QeOSWYGfwfUcCZQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEFFAUEkbHErRZk9uFFJSt4MsCl2ZPPtvS046mdnzjxLKUSN02RZianDg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEFFAUEkbHErRZk9uFFJSt4MsCl2ZPPtvS046mdnzjxLKUSN02RZianDg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<h3 id="控制面板"><a href="#控制面板" class="headerlink" title="控制面板"></a>控制面板</h3><p>有人可能会好奇，控制面板还在不在，是不是全部统一到了设置里去了。那么，就目前的Windows 11预览版来说，控制面板还是存在的，割裂感依然存在，不排除后期微软更新之后，会逐步去除控制面板。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEcZZ1Ugo10l8B2FQ5jhicqmRuqWNBhHgn8KVL5uctqD4BWgv5C49ib6zw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEcZZ1Ugo10l8B2FQ5jhicqmRuqWNBhHgn8KVL5uctqD4BWgv5C49ib6zw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<h3 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h3><p>Windows 11采用了新的图标风格，这在萝卜哥之前写的“<a href="https://mp.weixin.qq.com/s?__biz=MzI2Mzk4MjM4Mg==&mid=2247535773&idx=1&sn=936f03c08a42e1049091d1d09ea3bb9d&scene=21#wechat_redirect">太阳谷更新</a>”文章里，已经提到了。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEibpe1qwW3P6RKkZFm71ibUWK1WZvOqJTdH9Q4DfqcAbibcdnbU3SE9ORQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEibpe1qwW3P6RKkZFm71ibUWK1WZvOqJTdH9Q4DfqcAbibcdnbU3SE9ORQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEZTeYGNugh7OyvKJF1X3xTxKjomekGqtg1Xr9nvRqFVqBT34TOMd6HQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEZTeYGNugh7OyvKJF1X3xTxKjomekGqtg1Xr9nvRqFVqBT34TOMd6HQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>此外，Windows 11还修改了很多系统声音特效，删除、错误、完成等提示音全部改了。</p>
<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEDovzT1gpnN8icugcgbBS1Q6LOdv3BkDGXAIzbNfDwhCAXag8lAd0Ubg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" class="lazyload" data-srcset="https://mmbiz.qpic.cn/mmbiz_jpg/kiciadc7CaaJ7YqDR6vb68RRTWiaujaOAQEDovzT1gpnN8icugcgbBS1Q6LOdv3BkDGXAIzbNfDwhCAXag8lAd0Ubg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>微软还给Windows 11换了新的内置壁纸和主题，以往存在于Windows 8、Windows 10上的壁纸，全部删除了，换成了新壁纸，具体看今天的第二篇推文。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/picture/640" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/picture/640" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
</div><div class="story post-story"><h2 id="四、下载"><a href="#四、下载" class="headerlink" title="四、下载"></a>四、下载</h2><p>百度网盘：<a href="https://pan.baidu.com/s/1IxC39lBxCJuOWiNCY0e7Xg">https://pan.baidu.com/s/1IxC39lBxCJuOWiNCY0e7Xg</a> 提取码: 6666</p>
<p>天翼云：<a href="https://cloud.189.cn/web/share?code=FFFfQnNJneuy">https://cloud.189.cn/web/share?code=FFFfQnNJneuy</a></p>
<p>OneDrive：<a href="http://dwz.win/apE7">http://dwz.win/apE7</a> 密码：hlbz</p>
<p>磁力链接：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">magnet:?xt=urn:btih:209922c98ec03a2cbf0eebe631f9c1d577795645&amp;dn=21996.1.210529-1541.co_release_CLIENT_CONSUMER_x64FRE_en-us.iso</span><br><span class="line">magnet:?xt=urn:btih:7101c26a2ba10ab2374dcc171f92a443bdc986c5&amp;dn=21996.1.210529-1541.co_release_CLIENT_CONSUMER_x64FRE_en-us.iso</span><br></pre></td></tr></table></figure>

<p>镜像校验值：</p>
<p>MD5: 179bfe07f7050093ee595ddd85a30201</p>
<p>SHA1: 3b6da9194ba303ac7dbbf2e521716c809500919c</p>
<p>测试工具下载:<a href="https://aka.ms/GetPCHealthCheckApp">https://aka.ms/GetPCHealthCheckApp</a></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/63659.html">window上帝模式</a></li><li><a href="https://www.qystu.cc/posts/35934.html">数字基础设施开源操作系统欧拉全新发布</a></li><li><a href="https://www.qystu.cc/posts/18567.html">华为宣布将发布操作系统openEuler欧拉</a></li><li><a href="https://songxwn.com/ipv6-Windows/">Windows上的IPv6</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>系统</category>
      </categories>
      <tags>
        <tag>windows</tag>
        <tag>系统</tag>
      </tags>
  </entry>
  <entry>
    <title>window上帝模式</title>
    <url>/posts/63659.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="为什么要写"><a href="#为什么要写" class="headerlink" title="为什么要写"></a>为什么要写</h2><p>最近要用个功能，因为前阵子重装系统了，突然发现没有，然后我就炸毛了，仅以此文作为记录</p>
</div><div class="story post-story"><h2 id="什么是上帝模式"><a href="#什么是上帝模式" class="headerlink" title="什么是上帝模式"></a>什么是上帝模式</h2><p>这个名字看起来很酷，上帝模式就是打开全部的控制面板，就能发现一些目前看不见的功能。</p>
<p>如果你想要更高级的一些功能，<strong>可以试试这个模式， 开启之后，系统隐藏的很多功能你都能使用。</strong></p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639316373000.webp" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639316373000.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>这个名字看起来很酷，上帝模式就是打开全部的控制面板，<strong>就能发现一些目前看不见的功能。</strong></p>
<p>如果你想要更高级的一些功能，可以试试这个模式， 开启之后，系统隐藏的很多功能你都能使用。</p>
</div><div class="story post-story"><h2 id="如何使用"><a href="#如何使用" class="headerlink" title="如何使用"></a>如何使用</h2><p>新建一个文件夹，然后将文件夹重命名为：</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">GodMode.&#123;ED7BA470-8E54-465E-825C-99712043E01C&#125;</span><br></pre></td></tr></table></figure>

<p>回车确认之后，就是开启上帝模式了，打开文件夹你会看到很多系统设置项目，包括了系统设置选项和各种工具。</p>
<p>比如一键删除浏览的历史记录、阻止或允许弹窗、等等，你们可以可以根据自己需求去使用</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639316639000.gif" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639316639000.gif" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/59121.html">做一个特殊的ppt</a></li><li><a href="https://www.qystu.cc/posts/64280.html">软件屏蔽器 秒杀流氓软件</a></li><li><a href="https://www.qystu.cc/posts/48475.html">win11安装初体验(副下载)</a></li><li><a href="https://songxwn.com/ipv6-Windows/">Windows上的IPv6</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>tools</category>
      </categories>
      <tags>
        <tag>windows</tag>
        <tag>tools</tag>
      </tags>
  </entry>
  <entry>
    <title>使用PicGO-Gitee搭建博客图床</title>
    <url>/posts/14166.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="建立gitee（码云）图床库"><a href="#建立gitee（码云）图床库" class="headerlink" title="建立gitee（码云）图床库"></a>建立gitee（码云）图床库</h2><p>注册码云的方法很简单，网站引导都是中文，不多说了，我们直接建立自己的图床库。</p>
<h3 id="软件"><a href="#软件" class="headerlink" title="软件"></a>软件</h3><p>关于软件的下载与安装，可以自行参考<a href="https://qystu.cc/posts/14158.html" title="使用PicGo+GitHub搭建免费个人图床">使用PicGo+GitHub搭建免费个人图床</a></p>
<h3 id="点击右上角的-号，新建仓库"><a href="#点击右上角的-号，新建仓库" class="headerlink" title="点击右上角的+号，新建仓库"></a>点击右上角的+号，新建仓库</h3><p><a href="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630759499000.jpg"><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630759499000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630759499000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>新建仓库的要点如下：</p>
<p>输入一个仓库名称<br>其次将仓库设为公开！！！<br>不公开，将导致无法访问<br>勾选使用Readme文件初始化这个仓库<br>这个选项勾上，这样码云会自动给你的仓库建立master分支，这点很重要！！！</p>
<p>我因为这点折腾了很久，因为使用github做图床picgo好像会自动帮你生成master分支，而picgo里的gitee插件不会帮你自动生成分支。</p>
<p>点击创建进入下一步</p>
<h3 id="配置PicGo"><a href="#配置PicGo" class="headerlink" title="配置PicGo"></a>配置PicGo</h3><p>安装了gitee-uploader 1.1.2插件之后，我们开始配置插件</p>
<p><a href="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760173000.jpg"><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760173000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760173000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>配置插件的要点如下：</p>
<ul>
<li>repo：用户名/仓库名称，比如我自己的仓库ljs0712/img，找不到的可以直接复制仓库的url</li>
<li>branch：分支，这里写上master</li>
<li>token：填入码云的私人令牌</li>
<li>path：路径，一般写上img</li>
<li>customPath：提交消息，这一项和下一项customURL都不用填。在提交到码云后，会显示提交消息，插件默认提交的是 Upload 图片名 by picGo - 时间</li>
</ul>
<p>至于这个token怎么获取，下面登录进自己的码云<br>点击头像，进入设置</p>
<p><a href="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760504000.jpg"><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760504000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760504000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>找到右边安全设置里面的私人令牌</p>
<p>点击生成新令牌，把projects这一项勾上，其他的不用勾，然后提交</p>
<p><a href="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760616000.jpg"><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760616000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1630760616000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>这里需要验证一下密码，验证密码之后会出来一串数字，这一串数字就是你的token，将这串数字复制到刚才的配置里面去。</p>
<p>注意：这个令牌只会明文显示一次，建议在配置插件的时候再来生成令牌，直接复制进去，搞丢了又要重新生成一个。</p>
<p>现在保存你刚才的配置，然后将它设置为默认图床，大功告成。</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>图床</tag>
        <tag>博客</tag>
      </tags>
  </entry>
  <entry>
    <title>使用PicGo+GitHub搭建免费个人图床</title>
    <url>/posts/14158.html</url>
    <content><![CDATA[<p><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/1.png"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/1.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/1.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<div class="story post-story"><h2 id="一、Q-amp-A"><a href="#一、Q-amp-A" class="headerlink" title="一、Q&amp;A"></a>一、Q&amp;A</h2><h3 id="1-为什么要用到图床"><a href="#1-为什么要用到图床" class="headerlink" title="1.为什么要用到图床"></a>1.为什么要用到图床</h3><p>因为比如你的博客/网站存在大量图片，如果你引用的是本地图片，上传部署到服务器必然要耗时很长，而且图片占用服务器大量的存储空间。</p>
<p>如果采用图床的话，图片在第三方的云空间，直接引用上传到云空间生成的url即可，上传到服务器的包不再含有图片文件，节省上传时间和服务器空间。</p>
<p>博主最深刻的体验就是初期使用wordpress自带的图片编辑器裁切图片。过了一段时间由于服务器费用问题，打算迁移站点，下载到本地后发现，1张图片居然生成了6-7张子文件，虽然大小不是很大，不过数量很多，看着就头痛。<br>使用图床就完全没有这些问题，一张图片在文章内只占用了链接字符的空间，服务器会很轻便</p>
<h3 id="2-使用GitHub存储图片的优缺点"><a href="#2-使用GitHub存储图片的优缺点" class="headerlink" title="2.使用GitHub存储图片的优缺点"></a>2.使用GitHub存储图片的优缺点</h3><p>优点不必多说：免费、稳定（不会突然跑路）<br>缺点：每个仓库只有1GB容量，不过可以通过建立多个仓库解决。<br>上传的图片是公开的，别人可以通过访问你的GitHub仓库看到</p>
</div><div class="story post-story"><h2 id="二、配置Github"><a href="#二、配置Github" class="headerlink" title="二、配置Github"></a>二、配置Github</h2><h3 id="1-注册github（已经注册请跳过）"><a href="#1-注册github（已经注册请跳过）" class="headerlink" title="1. 注册github（已经注册请跳过）"></a>1. 注册github（已经注册请跳过）</h3><h3 id="2-新建仓库"><a href="#2-新建仓库" class="headerlink" title="2.新建仓库"></a>2.新建仓库</h3><p>点击 git 主页右上角的 + 创建 New repository；<br><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang1.jpg"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang1.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang1.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<h3 id="3-创建-token-并复制保存"><a href="#3-创建-token-并复制保存" class="headerlink" title="3.创建 token 并复制保存"></a>3.创建 token 并复制保存</h3><p>点击右上角头像，然后进入设置；<br>在页面最下找到 Developer settings，点击进入；<br>点击”Personal access tokens”按钮<br>点击generate new token 按钮</p>
<p>填 description（也是随心填），勾选复选框 repo ，接着到页面底部 Generate token 就完成了；<br><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang2.png"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang2.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang2.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>注：创建成功后，会生成一串<code>token</code>，这串<code>token</code>之后不会再显示，所以第一次看到的时候，可以建个文本文件好好保存，忘记了只有重新生成，每次都不一样。</p>
</div><div class="story post-story"><h2 id="三、配置PicGo"><a href="#三、配置PicGo" class="headerlink" title="三、配置PicGo"></a>三、配置PicGo</h2><h3 id="1-下载-amp-安装"><a href="#1-下载-amp-安装" class="headerlink" title="1.下载&amp;安装"></a>1.下载&amp;安装</h3><p>git地址：<a href="https://github.com/Molunerfinn/PicGo" title="PicGo">PicGo</a></p>
<h3 id="2-配置图床"><a href="#2-配置图床" class="headerlink" title="2. 配置图床"></a>2. 配置图床</h3><p>仓库名 即你的仓库名<br>分支名 默认 master</p>
<p>Token 就是刚刚复制的那一串字符<br>存储路径 这个可以填也可以不填，填了的话图片就上传到仓库名下的子目录<br>域名 <a href="https://raw.githubusercontent.com/[username]/[%E4%BB%93%E5%BA%93%E5%90%8D]/master">https://raw.githubusercontent.com/[username]/[仓库名]/master</a><br><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang3.png"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang3.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang3.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
<p>注：我的域名为什么是cdn开头，后文要说</p>
</div><div class="story post-story"><h2 id="四、进阶使用教程"><a href="#四、进阶使用教程" class="headerlink" title="四、进阶使用教程"></a>四、进阶使用教程</h2><h3 id="1-使用cdn解决GitHub国内访问缓慢的问题"><a href="#1-使用cdn解决GitHub国内访问缓慢的问题" class="headerlink" title="1.使用cdn解决GitHub国内访问缓慢的问题"></a>1.使用cdn解决GitHub国内访问缓慢的问题</h3><p>使用jsDelivr CDN 加速访问（jsDelivr 是一个免费开源的 CDN 解决方案）</p>
<p>将自定义域名设置为【<a href="https://cdn.jsdelivr.net/gh/%E7%94%A8%E6%88%B7%E5%90%8D/%E5%9B%BE%E5%BA%8A%E4%BB%93%E5%BA%93%E5%90%8D">https://cdn.jsdelivr.net/gh/用户名/图床仓库名</a> 】。</p>
<h3 id="2-使用githubPlus替代PicGo自带GitHub上传工具"><a href="#2-使用githubPlus替代PicGo自带GitHub上传工具" class="headerlink" title="2.使用githubPlus替代PicGo自带GitHub上传工具"></a>2.使用githubPlus替代PicGo自带GitHub上传工具</h3><p>PicGo自带的GitHub上传工具，不能同步删除GitHub仓库中的图片，这会导致我们在上传了不需要的图片后，产生冗余资源（强迫症表示很难受），因此，我们需要利用PicGo强大的插件功能实现同步操作相册和仓库图片</p>
<ol>
<li><p>点击PicGo左侧菜单最下方的插件设置，在搜索框中输入github-plus</p>
</li>
<li><p>点击灰色的安装按钮<br><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang4.png"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang4.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang4.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
</li>
<li><p>安装完成后在左侧菜单找到github-plus，设置方法同Github图床设置<br><a href="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang5.png"><img src="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang5.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/cutemoe/moepic/img/2020/01/tuchuang5.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>
</li>
<li><p>别忘了设置后保存设置并点击“设为默认图床”按钮</p>
</li>
</ol>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/11159.html">DIY最低成本图床</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>图床</tag>
        <tag>博客</tag>
      </tags>
  </entry>
  <entry>
    <title>做一个特殊的ppt</title>
    <url>/posts/59121.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="居然可以用js写ppt"><a href="#居然可以用js写ppt" class="headerlink" title="居然可以用js写ppt"></a>居然可以用js写ppt</h2><p>用powerpoint或者keynote写演示文稿，对于代码、数学公式等的支持一直是个痛点。而且对于前端同学来说，一身的css功力用不上也是个痛点。对于使用markdown来写文档的同学来说，将文档转成ppt需要重新排版也是件重复性的工作量。</p>
<p>于是我们需要一个基于web技术的ppt框架，reveal.js在这个领域成名已久了，而且上个月还有发布新版本，维护得还蛮好，第一步我们就选它了。</p>
</div><div class="story post-story"><h2 id="将-reveal-js-运行起来"><a href="#将-reveal-js-运行起来" class="headerlink" title="将 reveal.js 运行起来"></a>将 reveal.js 运行起来</h2><p>首先clone一份reveal.js最新的代码</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/hakimel/reveal.js</span><br></pre></td></tr></table></figure>

<p>我们照抄一份index.html，比如叫做study.html：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="meta">&lt;!doctype <span class="keyword">html</span>&gt;</span><span class="tag">&lt;<span class="name">html</span>&gt;</span> <span class="tag">&lt;<span class="name">head</span>&gt;</span>  <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span>&gt;</span>  <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;</span>&gt;</span>  <span class="tag">&lt;<span class="name">title</span>&gt;</span>reveal.js<span class="tag">&lt;/<span class="name">title</span>&gt;</span>  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;dist/reset.css&quot;</span>&gt;</span>  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;dist/reveal.css&quot;</span>&gt;</span>  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;dist/theme/black.css&quot;</span>&gt;</span>  <span class="comment">&lt;!-- Theme used for syntax highlighted code --&gt;</span>  <span class="tag">&lt;<span class="name">link</span> <span class="attr">rel</span>=<span class="string">&quot;stylesheet&quot;</span> <span class="attr">href</span>=<span class="string">&quot;plugin/highlight/monokai.css&quot;</span>&gt;</span> <span class="tag">&lt;/<span class="name">head</span>&gt;</span> <span class="tag">&lt;<span class="name">body</span>&gt;</span>  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;reveal&quot;</span>&gt;</span>   <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;slides&quot;</span>&gt;</span>    <span class="tag">&lt;<span class="name">section</span>&gt;</span>Slide 1<span class="tag">&lt;/<span class="name">section</span>&gt;</span>    <span class="tag">&lt;<span class="name">section</span>&gt;</span>Slide 2<span class="tag">&lt;/<span class="name">section</span>&gt;</span>   <span class="tag">&lt;/<span class="name">div</span>&gt;</span>  <span class="tag">&lt;/<span class="name">div</span>&gt;</span>  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;dist/reveal.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span>  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;plugin/notes/notes.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span>  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;plugin/markdown/markdown.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span>  <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;plugin/highlight/highlight.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span>  <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript">   <span class="comment">// More info about initialization &amp; config:   // - https://revealjs.com/initialization/   // - https://revealjs.com/config/   Reveal.initialize(&#123;    hash: true,    // Learn about plugins: https://revealjs.com/plugins/    plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]   &#125;);</span></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span> <span class="tag">&lt;/<span class="name">body</span>&gt;</span><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>在reveal.js目录下运行npm install, 然后运行npm start就可以启动一个server来查看上面的ppt网页。默认使用8000端口，如果被占用了可以通过指定port参数换一个，比如我们换成30800吧：</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npm start -- --port=30800</span><br></pre></td></tr></table></figure>

<p>然后通过访问浏览器的127.0.0.1:30800/study.html就可以看到我们的ppt啦：<br><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157019000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157019000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<h3 id="reveal-js-step-by-step"><a href="#reveal-js-step-by-step" class="headerlink" title="reveal.js step by step"></a>reveal.js step by step</h3><p>上面这个网页其实挺容易懂的，不用react或vue框架，也不需要配置webpack。其核心内容部分其实非常简单，就是每一页演示文稿对应一个section。</p>
<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;reveal&quot;</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;slides&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span>Slide 1<span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span>Slide 2<span class="tag">&lt;/<span class="name">section</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></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="支持-markdown"><a href="#支持-markdown" class="headerlink" title="支持 markdown"></a>支持 markdown</h2><p>reveal.js的第一个强大功能是直接可以使用markdown来写演示文稿。在我们上面默认的html模板中已经加载了RevealMarkdown插件。所以我们要做的就是在下面的模板上写markdown就好。</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">textarea</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>我们来看个例子：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">textarea</span> <span class="attr">data-markdown</span>&gt;</span></span><br><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><span class="line">    <span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>生成的幻灯片如下：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157024000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157024000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
</div><div class="story post-story"><h2 id="换个主题"><a href="#换个主题" class="headerlink" title="换个主题"></a>换个主题</h2><p>如果觉得黑底白字的太丑了，我们可以换个主题。</p>
<p>主题就是个css，在这条语句里引用：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><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">href</span>=<span class="string">&quot;dist/theme/black.css&quot;</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>换成dist/theme/下面其它的css主题，或者干脆自己撸一个。</p>
<p>比如改成：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><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">href</span>=<span class="string">&quot;dist/theme/beige.css&quot;</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>效果变成这样：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157038000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157038000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
</div><div class="story post-story"><h2 id="支持数学公式"><a href="#支持数学公式" class="headerlink" title="支持数学公式"></a>支持数学公式</h2><p>支持数学公式的js库和插件默认并没有包含在默认模板中，我们需要将其增加进来。</p>
<p>我们先把数学公式库的js引进来：</p>
<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">src</span>=<span class="string">&quot;plugin/math/math.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>然后在初始化时Reveal.initialize增加对于数学公式的配置,并且引入cdn上的mathjax库：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">Reveal.initialize(&#123;</span><br><span class="line">hash: true,</span><br><span class="line">        math: &#123;</span><br><span class="line">          mathjax:</span><br><span class="line">&quot;https://cdn.jsdelivr.net/gh/mathjax/mathjax@2.7.8/MathJax.js&quot;,</span><br><span class="line">          config: &quot;TeX-AMS_HTML-full&quot;,</span><br><span class="line">          // pass other options into `MathJax.Hub.Config()`</span><br><span class="line">          TeX: &#123; Macros: &#123; RR: &quot;&#123;\\bf R&#125;&quot; &#125; &#125;,</span><br><span class="line">        &#125;,</span><br></pre></td></tr></table></figure>

<p>最后，在plugins中增加RevealMath插件：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line">plugins: [RevealMarkdown, RevealHighlight, RevealNotes, RevealMath],      &#125;);</span><br></pre></td></tr></table></figure>

<p>完整的代码如下：</p>
<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">src</span>=<span class="string">&quot;plugin/math/math.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>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">  <span class="title class_">Reveal</span>.<span class="title function_">initialize</span>(&#123;</span></span><br><span class="line"><span class="language-javascript"><span class="attr">hash</span>: <span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="attr">math</span>: &#123;</span></span><br><span class="line"><span class="language-javascript"><span class="attr">mathjax</span>:</span></span><br><span class="line"><span class="language-javascript"><span class="string">&quot;https://cdn.jsdelivr.net/gh/mathjax/mathjax@2.7.8/MathJax.js&quot;</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="attr">config</span>: <span class="string">&quot;TeX-AMS_HTML-full&quot;</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="comment">// pass other options into `MathJax.Hub.Config()`</span></span></span><br><span class="line"><span class="language-javascript">      <span class="title class_">TeX</span>: &#123; <span class="title class_">Macros</span>: &#123; <span class="attr">RR</span>: <span class="string">&quot;&#123;\\bf R&#125;&quot;</span> &#125; &#125;,</span></span><br><span class="line"><span class="language-javascript">    &#125;,</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"><span class="attr">plugins</span>: [<span class="title class_">RevealMarkdown</span>, <span class="title class_">RevealHighlight</span>, <span class="title class_">RevealNotes</span>, <span class="title class_">RevealMath</span>],</span></span><br><span class="line"><span class="language-javascript">  &#125;);</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>插件引入之后我们就可以在幻灯片中写公式了。</p>
<p>可以直接在section中写：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line">    \[\begin&#123;aligned&#125;</span><br><span class="line">    \ MAE(X,h)=\frac&#123;1&#125;&#123;m&#125; \sum_&#123;i=1&#125;^m|h(x^i)-y^&#123;(i)&#125;| \</span><br><span class="line">    \end&#123;aligned&#125; \]</span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>也可以嵌入到markdown中：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">textarea</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line">                $MAE(X,h)=\frac&#123;1&#125;&#123;m&#125; \sum_&#123;i=1&#125;^m|h(x^i)-y^&#123;(i)&#125;|$                      </span><br><span class="line"><span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>出来的效果是这样的：<br><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157050000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157050000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<h3 id="代码高亮"><a href="#代码高亮" class="headerlink" title="代码高亮"></a>代码高亮</h3><p>代码高亮默认是支持的，我们可以在markdown里面用```来使用：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157060000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157060000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>显示出来的效果如下：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157071000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157071000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>也可以直接使用html的pre和code标签来显示：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">pre</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">code</span> <span class="attr">class</span>=<span class="string">&quot;language-javascript&quot;</span>&gt;</span></span><br><span class="line">            model.compile(&#123;</span><br><span class="line">                optimizer: tf.train.sgd(0.000001),</span><br><span class="line">                loss: &#x27;meanSquaredError&#x27;</span><br><span class="line">            &#125;);</span><br><span class="line"></span><br><span class="line">return model.fitDataset(flattenedDataset, &#123;</span><br><span class="line">                epochs: 10,</span><br><span class="line">                callbacks: &#123;</span><br><span class="line">                    onEpochEnd: async (epoch, logs) =&gt; &#123;</span><br><span class="line">                        console.log(epoch + &#x27;:&#x27; + logs.loss);</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;);</span><br><span class="line">        <span class="tag">&lt;/<span class="name">code</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">pre</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>显示的效果如下：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157079000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157079000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>代码高亮的theme也是可以更换的，只要更换plugin/highlight下面的css即可，例：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><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">href</span>=<span class="string">&quot;plugin/highlight/zenburn.css&quot;</span> /&gt;</span></span><br></pre></td></tr></table></figure>

<p>我们顺便把reveal.js的theme也换一下：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><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">href</span>=<span class="string">&quot;dist/theme/moon.css&quot;</span> /&gt;</span></span><br></pre></td></tr></table></figure>

<p>效果变成下面这样：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157084000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157084000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>我们汇总下上面的代码：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;utf-8&quot;</span> /&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">meta</span></span></span><br><span class="line"><span class="tag"><span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span></span></span><br><span class="line"><span class="tag"><span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;</span></span></span><br><span class="line"><span class="tag">    /&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="tag">&lt;<span class="name">title</span>&gt;</span>reveal.js学习<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"></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">href</span>=<span class="string">&quot;dist/reset.css&quot;</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">href</span>=<span class="string">&quot;dist/reveal.css&quot;</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">href</span>=<span class="string">&quot;dist/theme/moon.css&quot;</span> /&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- Theme used for syntax highlighted code --&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">href</span>=<span class="string">&quot;plugin/highlight/monokai.css&quot;</span> /&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</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;reveal&quot;</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;slides&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span>Slide 1<span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line">            \[\begin&#123;aligned&#125;</span><br><span class="line">            \ MAE(X,h)=\frac&#123;1&#125;&#123;m&#125; \sum_&#123;i=1&#125;^m|h(x^i)-y^&#123;(i)&#125;| \</span><br><span class="line">            \end&#123;aligned&#125; \]</span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">textarea</span> <span class="attr">data-markdown</span>&gt;</span></span><br><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><span class="line">&lt;/textarea</span><br><span class="line">          &gt;</span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">textarea</span> <span class="attr">data-markdown</span>&gt;</span></span><br><span class="line">                        $MAE(X,h)=\frac&#123;1&#125;&#123;m&#125; \sum_&#123;i=1&#125;^m|h(x^i)-y^&#123;(i)&#125;|$                      </span><br><span class="line"><span class="tag">&lt;/<span class="name">textarea</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">pre</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">code</span> <span class="attr">class</span>=<span class="string">&quot;language-javascript&quot;</span>&gt;</span></span><br><span class="line">                    model.compile(&#123;</span><br><span class="line">                        optimizer: tf.train.sgd(0.000001),</span><br><span class="line">                        loss: &#x27;meanSquaredError&#x27;</span><br><span class="line">                    &#125;);</span><br><span class="line"></span><br><span class="line">                    return model.fitDataset(flattenedDataset, &#123;</span><br><span class="line">                        epochs: 10,</span><br><span class="line">                        callbacks: &#123;</span><br><span class="line">                            onEpochEnd: async (epoch, logs) =&gt; &#123;</span><br><span class="line">                                console.log(epoch + &#x27;:&#x27; + logs.loss);</span><br><span class="line">                            &#125;</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125;);</span><br><span class="line"><span class="tag">&lt;/<span class="name">code</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">pre</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</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"></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;dist/reveal.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;plugin/notes/notes.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;plugin/markdown/markdown.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;plugin/highlight/highlight.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;plugin/math/math.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>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"><span class="comment">// More info about initialization &amp; config:</span></span></span><br><span class="line"><span class="language-javascript"><span class="comment">// - https://revealjs.com/initialization/</span></span></span><br><span class="line"><span class="language-javascript"><span class="comment">// - https://revealjs.com/config/</span></span></span><br><span class="line"><span class="language-javascript">      <span class="title class_">Reveal</span>.<span class="title function_">initialize</span>(&#123;</span></span><br><span class="line"><span class="language-javascript"><span class="attr">hash</span>: <span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="attr">math</span>: &#123;</span></span><br><span class="line"><span class="language-javascript"><span class="attr">mathjax</span>:</span></span><br><span class="line"><span class="language-javascript"><span class="string">&quot;https://cdn.jsdelivr.net/gh/mathjax/mathjax@2.7.8/MathJax.js&quot;</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="attr">config</span>: <span class="string">&quot;TeX-AMS_HTML-full&quot;</span>,</span></span><br><span class="line"><span class="language-javascript"><span class="comment">// pass other options into `MathJax.Hub.Config()`</span></span></span><br><span class="line"><span class="language-javascript">          <span class="title class_">TeX</span>: &#123; <span class="title class_">Macros</span>: &#123; <span class="attr">RR</span>: <span class="string">&quot;&#123;\\bf R&#125;&quot;</span> &#125; &#125;,</span></span><br><span class="line"><span class="language-javascript">        &#125;,</span></span><br><span class="line"><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"><span class="comment">// Learn about plugins: https://revealjs.com/plugins/</span></span></span><br><span class="line"><span class="language-javascript">        <span class="attr">plugins</span>: [<span class="title class_">RevealMarkdown</span>, <span class="title class_">RevealHighlight</span>, <span class="title class_">RevealNotes</span>, <span class="title class_">RevealMath</span>],</span></span><br><span class="line"><span class="language-javascript">      &#125;);</span></span><br><span class="line"><span class="language-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">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="背景图片"><a href="#背景图片" class="headerlink" title="背景图片"></a>背景图片</h2><p>section支持data-background-image属性来指定背景图片。例：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span> <span class="attr">data-background-image</span>=<span class="string">&quot;https://cdn.jsdelivr.net/www.jsdelivr.com/000a3f2b6a7baa6ae0f786a251fd105e4b230d8e/img/landing/network-map@2x.png&quot;</span>&gt;</span>        section&gt;</span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="HTML-and-CSS"><a href="#HTML-and-CSS" class="headerlink" title="HTML and CSS"></a>HTML and CSS</h2><p>比起markdown，HTML和CSS也是写演示文稿的好手段，可控的方法更多。而且也可以跟reveal.js的功能有更好的结合。</p>
<p>在section中，可以像在普通网页中一样写HTML标签：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">h3</span> <span class="attr">style</span>=<span class="string">&quot;&#123;color: #ffec3d;&#125;&quot;</span>&gt;</span>推荐系统的冷启动h3&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用热门数据li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用用户注册信息li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用第三方数据li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用物品内容属性li&gt;</span><br><span class="line"><span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>我们也可以在header中写style属性给section中使用。</p>
<p>比如默认字体太大了，我们可以给调一调：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-tag">ul</span> &#123;</span></span><br><span class="line"><span class="language-css"><span class="attribute">font-size</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="淡入淡出"><a href="#淡入淡出" class="headerlink" title="淡入淡出"></a>淡入淡出</h2><p>结合html标签，可以指定淡入淡出的效果。这可以通过给标签添加class属性为fragment实现。</p>
<p>我们来看个淡入的例子：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">h3</span>&gt;</span>推荐系统的冷启动h3&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;fragment&quot;</span>&gt;</span>利用热门数据li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;fragment&quot;</span>&gt;</span>利用用户注册信息li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;fragment&quot;</span>&gt;</span>利用第三方数据li&gt;</span><br><span class="line"><span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;fragment&quot;</span>&gt;</span>利用物品内容属性li&gt;</span><br><span class="line"><span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157091000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157091000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>除了淡入之外，我们还可以对某项进行标红：</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">section</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">h3</span>&gt;</span>推荐系统的冷启动<span class="tag">&lt;/<span class="name">h3</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span> <span class="attr">class</span>=<span class="string">&quot;fragment highlight-red&quot;</span>&gt;</span>利用热门数据<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用用户注册信息<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用第三方数据<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">li</span>&gt;</span>利用物品内容属性<span class="tag">&lt;/<span class="name">li</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">ul</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">section</span>&gt;</span></span><br></pre></td></tr></table></figure>

<p>效果如下：</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157096000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157096000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
</div><div class="story post-story"><h2 id="导出为-PDF"><a href="#导出为-PDF" class="headerlink" title="导出为 PDF"></a>导出为 PDF</h2><p>演示文稿做好之后，除了在浏览器中看，我们也可以导出成为pdf格式。方法是在URI之后增加”?print-pdf”后缀，比如：<a href="http://0.0.0.0:30800/study.html?print-pdf">http://0.0.0.0:30800/study.html?print-pdf</a></p>
<p>然后我们再用另存为pdf格式功能来保存下来就好。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157105000.png" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1642157105000.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
</div><div class="story post-story"><h2 id="更进一步"><a href="#更进一步" class="headerlink" title="更进一步"></a>更进一步</h2><p>除了上面介绍的基本特性之外，reveal.js支持自动播放、自制插件、支持处理事件等等有利于开发人员写slides的特性。相信能给你的slides带来新的好玩的东西，将汇报与分享变成乐趣。Enjoy it!</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/55153.html">gulp更新4.0后的报错(gulp报Did you forget to signal async completion?)</a></li><li><a href="https://www.qystu.cc/posts/64280.html">软件屏蔽器 秒杀流氓软件</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>前端</tag>
        <tag>tools</tag>
        <tag>PPT</tag>
      </tags>
  </entry>
  <entry>
    <title>停更通知</title>
    <url>/posts/25002.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="停更"><a href="#停更" class="headerlink" title="停更"></a>停更</h2><p>青云团队由于一些原因，工作力不从心</p>
<p>经过慎重考虑，青云工作室准备在2022/4/11开始停更</p>
</div><div class="story post-story"><h2 id="重启时间"><a href="#重启时间" class="headerlink" title="重启时间"></a>重启时间</h2><p>重启时间预计定在8月中旬</p>
</div><div class="story post-story"><h2 id="再起航"><a href="#再起航" class="headerlink" title="再起航"></a>再起航</h2><p>在8月重启网站时，我们将带来更好的网站，更快的速度</p>
<p>同时会重构开往的官网</p>
<p>预计我们会在开源美化的主题同时，尝试开源全部源码</p>
<p>而且青云将建立一个基于gitea的代码托管平台，拥有CI/CD</p>
<p>请耐心等待，青云将变得更好</p>
<p>聊天扯淡加群</p>
<p><a href="https://jq.qq.com/?_wv=1027&k=6fMOhKtn"><img src="https://bu.dusays.com/2022/04/09/1b1512ab5471e.jpg" class="lazyload" data-srcset="https://bu.dusays.com/2022/04/09/1b1512ab5471e.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></p>

</div>]]></content>
  </entry>
  <entry>
    <title>关于接管运营博客的事项</title>
    <url>/posts/44737.html</url>
    <content><![CDATA[<h1 id="原因回顾"><a href="#原因回顾" class="headerlink" title="原因回顾"></a>原因回顾</h1><p>青云工作室因为一些私人原因，没有太多时间来运营此网站，于是便在2022/4/11开始停更</p>
<h1 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h1><p>在经过慎重考虑之后，Jason将文章更新和友链维护的工作交给了我，而网站美化，维护则由他继续负责</p>

]]></content>
  </entry>
  <entry>
    <title>闭关修炼一月后，我出来啦</title>
    <url>/posts/51585.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="经历了中考我解放啦"><a href="#经历了中考我解放啦" class="headerlink" title="经历了中考我解放啦"></a>经历了中考我解放啦</h2><p>相信大家可以从标题中看到我的兴奋。</p>
<p>经历了一个月的中考备考，<del>收获了很多</del>累死我了</p>
<p>考的不错，报喜啦</p>
</div><div class="story post-story"><h2 id="暑假准备做什么？"><a href="#暑假准备做什么？" class="headerlink" title="暑假准备做什么？"></a>暑假准备做什么？</h2><p>维护博客</p>
<p>魔改主题(偷偷说一句pr有问题)</p>
<p>催狗子熙写官网</p>
<p>挑战五天不停更</p>
<p>写一个新的友链提交</p>
<p>练字</p>
<p>预习高中数理化</p>
<p>搞点钱</p>
</div><div class="story post-story"><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>如果还有再补充</p>

</div>]]></content>
      <categories>
        <category>哔哔</category>
      </categories>
      <tags>
        <tag>起航</tag>
      </tags>
  </entry>
  <entry>
    <title>华为宣布将发布操作系统openEuler欧拉</title>
    <url>/posts/18567.html</url>
    <content><![CDATA[<h3 id="华为宣布将发布操作系统openEuler欧拉"><a href="#华为宣布将发布操作系统openEuler欧拉" class="headerlink" title="华为宣布将发布操作系统openEuler欧拉"></a>华为宣布将发布操作系统openEuler欧拉</h3><p>据@华为计算 官微消息，9月25日，华为将全新发布操作系统openEuler欧拉。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632481738000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632481738000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>此前，任正非在中央研究院创新先锋座谈会上与部分科学家、专家、实习生的讲话中表示，鸿蒙、欧拉任重道远，你们还需更加努力。</p>
<p>鸿蒙已经开始了前进的步伐，我们还心怀忐忑地对它的期盼。</p>
<p>欧拉正在大踏步地前进，欧拉的定位是瞄准国家数字基础设施的操作系统和生态底座，承担着支撑构建领先、可靠、安全的数字基础的历史使命，既要面向服务器，又要面向通信和实时操作系统，这是一个很难的命题。</p>
<p>任正非称，未来软件将吞噬一切，说明未来信息社会的数字化基础架构核心是软件。</p>
<p>数字社会首先要终端数字化，更难的是行业终端数字化，只有行业终端数字化了，才可能建立起智能化和软件服务的基础。</p>
<h3 id="直播邀请"><a href="#直播邀请" class="headerlink" title="直播邀请"></a>直播邀请</h3><p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632481552000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632481552000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/35934.html">数字基础设施开源操作系统欧拉全新发布</a></li><li><a href="https://www.qystu.cc/posts/48475.html">win11安装初体验(副下载)</a></li><li><a href="https://www.qystu.cc/posts/78415.html">Windows 10 21H2 太阳谷更新镜像发布</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>系统</category>
      </categories>
      <tags>
        <tag>系统</tag>
        <tag>欧拉</tag>
        <tag>华为</tag>
      </tags>
  </entry>
  <entry>
    <title>卸载工具 IObit Uninstaller</title>
    <url>/posts/42493.html</url>
    <content><![CDATA[<h3 id="功能介绍"><a href="#功能介绍" class="headerlink" title="功能介绍"></a>功能介绍</h3><p>清洁和加速电脑：你可能会注意到你的电脑变得越来越慢，让你气急败坏。<br>因为时间的推移，一些原因是程序无法被删除，未使用的程序，以及卸载程序的残留在内存中堆积。<br>IObit Uninstaller 可以帮助您完全快速地卸载顽固的程序及其残留。<br>甚至在Windows 10和Windows 8中的不受欢迎的应用程序也可以很容易删除。</p>
<h3 id="主要特点"><a href="#主要特点" class="headerlink" title="主要特点"></a>主要特点</h3><p>主要特点：</p>
<ul>
<li>在几个方面删除程序：正常和批次。批量方法需要在要删除几个程序的案件。</li>
<li>支持模块强制删除允许您删除不能以通常的方式删除的程序，并在文件系统清理自己的“足迹”。此外，该模块将能够删除任何文件或文件夹，包括系统（例如，Windows文件夹 - 但最好不要与该操作系统无法启动后也这样做）。</li>
<li>删除插件和工具栏的互联网浏览器。</li>
<li>将所有设置特定的浏览器。</li>
<li>支持文件粉碎“永久”删除文件和文件夹。这个工具是必要的，谁想要从计算机中永久删除您的个人文件（例如，您的银行帐户数据库），所以没有计划将无法恢复。</li>
<li>杂志的支持，包含远程程序的历史记录（名称，时间，使用的方法和删除的文件的列表）。</li>
<li>创建并查看恢复点</li>
</ul>
<h3 id="问题更少的Windows更新："><a href="#问题更少的Windows更新：" class="headerlink" title="问题更少的Windows更新："></a>问题更少的Windows更新：</h3><p>IObit Uninstaller 可以帮助用户轻松地从Windows更新选项卡管理Windows更新。<br>如果任何更新遇到兼容性问题，您可以轻松地使用IObit Uninstaller 快速、完整地删除它们。<br>您还可以创建系统还原点，以防发生意外事件。</p>
<h3 id="更快更安全浏览："><a href="#更快更安全浏览：" class="headerlink" title="更快更安全浏览："></a>更快更安全浏览：</h3><p>烦人的工具栏和插件降低了您的在线浏览体验，并侵犯了您的在线隐私。<br>IObit Uninstaller 是用于检测和删除恶意和基于广告的插件的最佳卸载工具，以避免更改您的主页，跟踪您的活动或弹出广告。<br>IObit Uninstaller 还支持为 Windows 10 用户删除 Microsoft Edge 扩展。</p>
<h3 id="更强大的工具："><a href="#更强大的工具：" class="headerlink" title="更强大的工具："></a>更强大的工具：</h3><p>IObit Uninstaller 也可以自动检测第三方卸载程序的残留，并通过强大的扫描可彻底、快速地删除它们。<br>“工具”中的清理软件，可以清理标准卸载和Windows修补程序缓存文件留下的文件，以释放更多的电脑空间。</p>
<h3 id="测试图"><a href="#测试图" class="headerlink" title="测试图"></a>测试图</h3><p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1634472798000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1634472798000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<h3 id="下载链接"><a href="#下载链接" class="headerlink" title="下载链接"></a>下载链接</h3><span class='btn center large'><a class="button" href='https://pan.qystu.cc/TOOLS/WINDOW/IObit%20Uninstaller%209.5.0.15.zip?preview' title='下载'><i class='fad fa-download'></i>下载</a></span><div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/61939.html">无广告、无推送，最最纯净的WPS版本</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>software</category>
      </categories>
      <tags>
        <tag>software</tag>
        <tag>软件</tag>
        <tag>卸载</tag>
        <tag>IObit</tag>
      </tags>
  </entry>
  <entry>
    <title>年度回顾与展望</title>
    <url>/posts/47618.html</url>
    <content><![CDATA[<p><img src="https://cdn.chuqis.com/img/06b72ec6217f5f65616fa132b779fb97.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/06b72ec6217f5f65616fa132b779fb97.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/06b72ec6217f5f65616fa132b779fb97.png"></p>
<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>又到了年末之时距离2023你还剩下两天，这时写这篇文章正好</p>
</div><div class="story post-story"><h2 id="回顾"><a href="#回顾" class="headerlink" title="回顾"></a>回顾</h2><p>回顾这一年青云做了许许多多的改动</p>
<p>青云工作室博客更新了主题，更加简洁大方</p>
<p>青云更换了域名 由<code>qystudio.ltd</code>改为<code>qystu.cc</code></p>
<p>青云迁移了所有服务</p>
<p>青云工作室进行了备案，主体为拾小染网络科技（上海）有限责任公司</p>
<p>青云工作室转移了主体，隶属于武汉初柒网络科技有限公司，保留独立性</p>
<p>青云负责人加入了武汉初柒网络科技有限公司</p>
<p>青云将网站移动到了dcloud中，提高了网络速度</p>
<p>青云招收了3位作者为青云提供文章</p>
<p>青云更换了serviceworker脚本来加速网站</p>
<p>青云更换了sw安装脚本</p>
<p>青云部署了新的jsd代理<code>cdn.chuqis.com</code>不仅支持<code>jsd</code>的常规使用同时代理了<code>cdnjs</code>且支持了青云的图床使用</p>
</div><div class="story post-story"><h2 id="展望"><a href="#展望" class="headerlink" title="展望"></a>展望</h2><p>我们希望未来可以</p>
<p>招收更多作者加入青云博客，尝试多作者模式</p>
<p>与携手初柒科技获得更多发展</p>
<p>更新博客主题，极致优化速度</p>
<p>优化SEO，对蜘蛛优化，增加搜索引擎流量</p>
<p>推广青云博客，收获更多流量</p>
<p>更多参与开源社区活动，聚焦公益项目</p>
</div><div class="story post-story"><h2 id="远航"><a href="#远航" class="headerlink" title="远航"></a>远航</h2><p>最后希望在新的一年了，青云可以扬帆远航</p>
<p>同时预祝大家新年快乐😀 大吉大利</p>
<p><img src="https://cdn.chuqis.com/img/6ac67d6e38b3796d8b5316f8a6c22624.png" class="lazyload" data-srcset="https://cdn.chuqis.com/img/6ac67d6e38b3796d8b5316f8a6c22624.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="https://cdn.chuqis.com/img/6ac67d6e38b3796d8b5316f8a6c22624.png"></p>

</div>]]></content>
      <categories>
        <category>qystudio</category>
      </categories>
      <tags>
        <tag>生活</tag>
        <tag>青云</tag>
        <tag>2023</tag>
      </tags>
  </entry>
  <entry>
    <title>建站博客折腾之路</title>
    <url>/posts/48495.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>想必很多人都有一个属于自己的草根站长梦想，但却由于技术水平、资金、关系资源等种种原因，往往徘徊在坚持与放弃之间！“梦想还是要有的，万一实现了呢！”没错，今天我就要帮助那些有站长梦的人实现这个梦想，不需要你会敲代码，今天我们攻克技术、资金、资源难关拿下一个网站！</p>
<p>现在市面上的博客很多，如CSDN，博客园，简书等平台，可以直接在上面发表，用户交互做的好，写的文章百度也能搜索的到。缺点是比较不自由，会受到平台的各种限制和恶心的广告。</p>
<p>作为一个coder，我无时无刻不想拥有一个自己的个人博客网站，也从未放弃过探索这条道路，从网站编程开始，慢慢接触云服务器。中间经历了很多曲折的路，技术不达标、不够资金买云服务</p>
<p>而自己购买域名和服务器，搭建博客的成本实在是太高了，不光是说这些购买成本，单单是花力气去自己搭这么一个网站，还要定期的维护它，对于我们大多数人来说，实在是没有这样的精力和时间。</p>
</div><div class="story post-story"><h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><p>所以我的网站将发布以下系列文章</p>
<ul>
<li>hexo博客建站系列文章</li>
<li>wordpress博客建站系列文章</li>
<li>discuz论坛建站系列文章</li>
</ul>
</div><div class="story post-story"><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>我的文章将以不间断的形式更新，作者今年初三中考更新比较慢，勿催更，谢谢</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>博客</tag>
        <tag>建站</tag>
      </tags>
  </entry>
  <entry>
    <title>悼念</title>
    <url>/posts/9478.html</url>
    <content><![CDATA[<p>之前在tg收到的信息，今天在微信公众号得到证实，胡萝卜周离世</p>
<p>胡萝卜周的准确离开时间是在今年一月份，根据他父亲的描述，他因一氧化碳中毒而意外身亡。</p>
<p>痛心！一路走好</p>

]]></content>
  </entry>
  <entry>
    <title>数字基础设施开源操作系统欧拉全新发布</title>
    <url>/posts/35934.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="发布"><a href="#发布" class="headerlink" title="发布"></a>发布</h2><p>9月25日，在华为全联接2021大会上，面向数字基础设施的开源操作系统欧拉（openEuler）全新发布。欧拉操作系统可广泛部署于服务器、云计算、边缘计算、嵌入式等各种形态设备，应用场景覆盖IT（Information Technology）、CT（Communication Technology）和OT（Operational Technology），实现统一操作系统支持多设备，应用一次开发覆盖全场景</p>
<p>华为计算产品线总裁邓泰华表示，操作系统“碎片化”现状，导致数字基础设施产生大量“软烟囱”，带来生态割裂、应用重复开发、协同繁琐的挑战，数字化新时代，呼唤新的统一操作系统。</p>
</div><div class="story post-story"><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><p>在ICT领域，华为提供服务器、存储、云服务、边缘计算、基站、路由器、工业控制等产品和解决方案，都需要搭载操作系统，所以华为一直在构建能力，旨在通过统一的操作系统架构来满足不同应用场景的需求。</p>
<p>本次欧拉全新升级，同时支持服务器、云计算、边缘计算、嵌入式等各种形态设备的需求。支持多样性计算，致力于提供安全、稳定、易用的操作系统；并通过为应用提供确定性保障能力，支持OT领域应用及OT与ICT的融合。至此全新发布的欧拉操作系统可覆盖从IT、CT到OT数字基础设施全场景。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632568725000.jpg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1632568725000.jpg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></p>
<p>欧拉创造性的提出全栈原子化解耦，支持版本灵活构建、服务自由组合，通过一套架构灵活支持南向多样性设备，北向全场景应用。</p>
<p>统一操作系统，支持多设备：</p>
<ul>
<li>采用全量组件原子化架构，支持内核灵活组合，全栈服务化按需构建，可根据设备不同的资源能力和业务特征进行灵活裁剪、按需构建，满足不同设备对于操作系统的要求。</li>
<li>支持构建服务自助化，“菜单式”配置内核和系统服务，可以对软件包、文件、函数等不同层级进行分级灵活组合，自动化、简化操作系统版本构建。</li>
<li>提供多设备协同套件，包括“边云”协同，统一数据、网络和管理；集群多节点协同，可支持PB级内存池，实现不同设备之间的能力互助和资源共享，发挥硬件最优性能。</li>
</ul>
<p>应用一次开发，覆盖全场景：</p>
<ul>
<li>标准API，实现操作系统与应用交互语言的统一；</li>
<li>欧拉SDK统一封装各种应用所需的数据、音视频、安全等能力，使能极简开发，并增强应用性能；</li>
<li>欧拉Devkit提供跨设备开发向导、自动测试平台等插件，并可方便的集成到主流的应用开发平台。</li>
</ul>
<p>欧拉和鸿蒙已经实现了内核技术共享，未来计划在欧拉构筑分布式软总线能力，让搭载欧拉操作系统的设备可以自动识别和连接鸿蒙终端。后续进一步在安全OS、设备驱动框架、以及新编程语言等方面实现共享。通过能力共享、实现生态互通，“欧拉+鸿蒙”更好的服务数字全场景。</p>
<p>本次大会正式发布了第一个支持数字基础设施全场景的openEuler 21.09创新版本，将于9月30日在社区上线。该版本不仅对服务器和云计算场景能力进行了增强，还实现了对于边缘计算和嵌入式场景的支持。2022年一季度，欧拉开源社区将发布支持全场景融合的社区LTS版本，使能合作伙伴面向不同场景发布商业发行版。</p>
</div><div class="story post-story"><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>欧拉自开源以来获得产业界的积极支持和响应，是中国最具活力的开源社区。截至目前，已有超过6000名开发者和100多家企业、高校、组织和机构加入欧拉社区，汇聚从处理器、整机、操作系统发行版厂商、到行业应用等全产业链，十多家主流操作系统领军企业发行基于欧拉的商业版本。欧拉的全新发布将吸引更多云、边缘、嵌入式领域伙伴加入社区，共同加速欧拉在数字基础设施全领域的广泛应用。华为将始终坚持在基础软件上的长期投入，联合全产业链合作伙伴，共同构建开放共赢的操作系统开源生态。</p>
</div><div class="story post-story"><h2 id="相关链接"><a href="#相关链接" class="headerlink" title="相关链接"></a>相关链接</h2><p><a href="https://repo.openeuler.org/openEuler-21.09/">https://repo.openeuler.org/openEuler-21.09/</a></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/18567.html">华为宣布将发布操作系统openEuler欧拉</a></li><li><a href="https://www.qystu.cc/posts/48475.html">win11安装初体验(副下载)</a></li><li><a href="https://www.qystu.cc/posts/78415.html">Windows 10 21H2 太阳谷更新镜像发布</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>系统</category>
      </categories>
      <tags>
        <tag>系统</tag>
        <tag>欧拉</tag>
        <tag>服务器</tag>
      </tags>
  </entry>
  <entry>
    <title>无广告、无推送，最最纯净的WPS版本</title>
    <url>/posts/61939.html</url>
    <content><![CDATA[<p>无广告、无推送，最最纯净的WPS版本<br>另附四大权限<br>与下载地址</p>
<span id="more"></span>

<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>就在去年12月，教育部考试中心突然发布《关于做好2021年全国计算机等级考试工作的通知》，新增计算机考试科目，正式将国产办公软件——WPS，作为全国计算机等级考试二级考试科目之一，调整将于今年开始，3月开考。</p>
<p>如今WPS进入二级考试科目，标志着我国国产办公软件正式步入快速发展阶段，只有拥有了第一批忠实和熟练的用户，WPS才能得到更好的推广和教学，或许在不久的将来，WPS能够像MS Office一样成为世界性的知名办公软件。</p>
<p>在教育部考试中心的通知信函中还有这么一句：从三月开始，一级，二级WPS Office科目应用软件将使用新版的教育考试专用版WPS Office软件，考点可到中国<a href="http://ncre.neea.edu.cn/html1/report/1507/861-1.htm" title="教育考试网">教育考试网</a>下载。</p>
<p>这说明，WPS将专门为计算机等级考试而开发一款新的教育考试版，届时考生考试将使用此版本，这种情况下的WPS版本八成会是纯净版。</p>
<p>目前此版本已经可以下载，WPS教育考试版真的就是无广告版本。</p>
<p>教育考试网提供的WPS教育考试版版本号为11.1.0，大小为149MB，相对与WPS官网的个人免费版要小整整4MB。</p>
<p>安装之后可以看到，教育考试版主界面和功能基本和免费版一致，除了无法直接发现到的无广告特征之外，教育考试版相比于免费版还具有以下专属功能：</p>
</div><div class="story post-story"><h2 id="福利"><a href="#福利" class="headerlink" title="福利"></a>福利</h2><p>01教育类模板资源专享福利</p>
<p>教育考试版将原有的稻壳儿内容资源进行教育类优化，除了享有更加优质的文字、表格、演示等模板资源外，还可免费享受其他版本的部分收费模板资源。</p>
<p>02专业绘图+ LaTeX专享福利<br>LaTeX的初次使用者，就可以在短时间内生成高质量的文档和复杂的数学公式，同时，思维导图、流程图也能让学生的结构化学习能力提升。</p>
<p>03汉仪上百款字体限免专享<br>WPS云字体中特别针对教育版为师生全面限免开放了107种汉仪字体。</p>
<p>04WPS精品课教育版<br>为师生提供优秀的精品课程，赠送WPS办公技巧免费课程。在报考WPS二级考试的同时，WPS还会为考生赠送四个月的免费会员，所以如果大家今年有人报考的话，千万别忘记了领取。</p>
<p>WPS教育考试版不仅限于师生使用，由于其具有的优良特性，非常适合用来替代大家正在使用的WPS个人版。</p>
</div><div class="story post-story"><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><p>下载链接：<a href="http://ncre.neea.edu.cn/res/Home/2012/1ab1f38f3a81af338dbb4f6495568f28.rar" title="点击下载">点击下载</a></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/42493.html">卸载工具 IObit Uninstaller</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>software</category>
      </categories>
      <tags>
        <tag>software</tag>
        <tag>软件</tag>
        <tag>WPS</tag>
      </tags>
  </entry>
  <entry>
    <title>给博客加入链接安全跳转页(添加一个和CSDN一样的链接跳转页)</title>
    <url>/posts/25250.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>或是出于优化 SEO，或是出于加强网站体验，很多博客都给文章中的外部链接加上了个二次跳转，本博客也不例外。</p>
<p>在逛别人的博客的时候，发现了有一种叫 <code>go.php</code>的东西，可以经过自己站点的网页再跳转出去，方便SEO优化。但是像Hexo这类静态博客，想要从源HTML修改链接难度有点大，这里我们采用JavaScript动态修改</p>
</div><div class="story post-story"><h2 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h2><p><a href="https://github.com/qystudio0/go-jumper">点我</a>fork此仓库，然后在vercel中部署</p>
<p>或<a href="https://vercel.com/new/clone?repository-url=https://github.com/qystudio0/go-jumper"><img src="https://vercel.com/button" class="lazyload" data-srcset="https://vercel.com/button" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="部署到 Vercel"></a>使用他部署</p>
</div><div class="story post-story"><h2 id="修改"><a href="#修改" class="headerlink" title="修改"></a>修改</h2><h3 id="打开-js-index-js修改个人信息"><a href="#打开-js-index-js修改个人信息" class="headerlink" title="打开 js/index.js修改个人信息"></a>打开 <code>js/index.js</code>修改个人信息</h3><figure class="highlight js"><table><tr><td class="code"><pre><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">ready</span>(<span class="function">()=&gt;</span>&#123;</span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;Running...&quot;</span>)</span><br><span class="line">    <span class="keyword">if</span>(<span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">hash</span>===<span class="string">&quot;&quot;</span>)&#123;</span><br><span class="line">        <span class="variable language_">document</span>.<span class="title function_">getElementsByClassName</span>(<span class="string">&quot;loading-text&quot;</span>)[<span class="number">0</span>].<span class="property">innerHTML</span> = <span class="string">&quot;参数错误，将跳转回青云工作室&lt;dot&gt;...&lt;/dot&gt;&quot;</span></span><br><span class="line">        <span class="built_in">setTimeout</span>(<span class="function">()=&gt;</span>&#123;</span><br><span class="line">            <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span> = <span class="string">&quot;https://qystu.cc/&quot;</span><span class="comment">/* 这里 */</span></span><br><span class="line">        &#125;,<span class="number">5000</span>)</span><br><span class="line">        <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">let</span> reg = <span class="keyword">new</span> <span class="title class_">RegExp</span>(<span class="regexp">/#(.*)/g</span>);</span><br><span class="line">    <span class="keyword">let</span> base64 = reg.<span class="title function_">exec</span>(<span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">hash</span>)</span><br><span class="line">    <span class="keyword">let</span> link = <span class="variable language_">window</span>.<span class="title function_">atob</span>(base64[<span class="number">1</span>])</span><br><span class="line">    <span class="keyword">let</span> referrer = <span class="variable language_">document</span>.<span class="property">referrer</span>.<span class="title function_">split</span>(<span class="string">&#x27;/&#x27;</span>)[<span class="number">2</span>];</span><br><span class="line">    referrer = referrer===<span class="literal">undefined</span>?<span class="string">&quot;&quot;</span>:referrer.<span class="title function_">split</span>(<span class="string">&#x27;.&#x27;</span>)</span><br><span class="line">    <span class="keyword">if</span>(referrer[referrer.<span class="property">length</span>-<span class="number">2</span>]+<span class="string">&#x27;.&#x27;</span>+referrer[referrer.<span class="property">length</span>-<span class="number">1</span>]!=<span class="string">&quot;pai233.top&quot;</span> || <span class="variable language_">document</span>.<span class="property">referrer</span>===<span class="string">&quot;&quot;</span>)&#123;</span><br><span class="line">        swal.<span class="title function_">fire</span>(&#123;</span><br><span class="line">            <span class="attr">title</span>: <span class="string">&quot;确定访问？&quot;</span>,</span><br><span class="line">            <span class="attr">text</span>: <span class="string">&quot;该网址不属于青云工作室，你确定要打开&quot;</span>+link+<span class="string">&quot;吗？&quot;</span>,<span class="comment">/* 这里 */</span></span><br><span class="line">            <span class="attr">type</span>: <span class="string">&quot;warning&quot;</span>,</span><br><span class="line">            <span class="attr">showCancelButton</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="attr">confirmButtonColor</span>: <span class="string">&quot;#DD6B55&quot;</span>,</span><br><span class="line">            <span class="attr">confirmButtonText</span>: <span class="string">&quot;确定&quot;</span>,</span><br><span class="line">            <span class="attr">cancelButtonText</span>: <span class="string">&quot;取消&quot;</span>,</span><br><span class="line">          &#125;).<span class="title function_">then</span>(<span class="keyword">function</span>(<span class="params">isConfirm</span>)&#123;</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(isConfirm)</span><br><span class="line">            <span class="keyword">if</span> (isConfirm) &#123;</span><br><span class="line">                <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;setTimeout&#x27;</span>)</span><br><span class="line">                <span class="built_in">setTimeout</span>(<span class="keyword">function</span>(<span class="params"></span>)&#123;</span><br><span class="line">                    <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span> = link</span><br><span class="line">                &#125;,<span class="number">3000</span>)</span><br><span class="line">            &#125;  </span><br><span class="line">            <span class="keyword">else</span> &#123;</span><br><span class="line">                <span class="variable language_">window</span>.<span class="property">opener</span>=<span class="literal">null</span>;</span><br><span class="line">                <span class="variable language_">window</span>.<span class="title function_">open</span>(<span class="string">&#x27;&#x27;</span>,<span class="string">&#x27;_self&#x27;</span>);</span><br><span class="line">                <span class="variable language_">window</span>.<span class="title function_">close</span>();</span><br><span class="line">                <span class="comment">/* 微信浏览器关闭 */</span> </span><br><span class="line">                <span class="title class_">WeixinJSBridge</span>.<span class="title function_">call</span>(<span class="string">&#x27;closeWindow&#x27;</span>);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;)</span><br><span class="line">    &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">        <span class="built_in">setTimeout</span>(<span class="keyword">function</span>(<span class="params"></span>)&#123;</span><br><span class="line">            <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span> = link</span><br><span class="line">        &#125;,<span class="number">3000</span>)</span><br><span class="line">    &#125;</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure>

<h3 id="打开-js-checker-js"><a href="#打开-js-checker-js" class="headerlink" title="打开 js/checker.js"></a>打开 <code>js/checker.js</code></h3><figure class="highlight js"><table><tr><td class="code"><pre><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">ready</span>(<span class="keyword">function</span>(<span class="params"></span>)&#123;</span><br><span class="line">    <span class="title function_">checkLink</span>();</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 若博客启用了Pjax请去掉注释。</span></span><br><span class="line"><span class="comment">// $(document).on(&#x27;pjax:complete&#x27;, function () &#123;</span></span><br><span class="line"><span class="comment">//     checkLink();</span></span><br><span class="line"><span class="comment">// &#125;);</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLink</span>(<span class="params"></span>)&#123;</span><br><span class="line">    <span class="keyword">let</span> link = <span class="variable language_">document</span>.<span class="title function_">getElementsByTagName</span>(<span class="string">&#x27;a&#x27;</span>);</span><br><span class="line">    <span class="keyword">for</span>(<span class="keyword">var</span> i=<span class="number">0</span>;i&lt;link.<span class="property">length</span>;i++)&#123;</span><br><span class="line">        <span class="comment">//如果你的博客添加了Gitter聊天窗，请去掉下方注释</span></span><br><span class="line">        <span class="keyword">if</span>(link[i].<span class="property">href</span>===<span class="string">&quot;&quot;</span> <span class="comment">/*|| link[i].className===&quot;gitter-open-chat-button&quot;*/</span>)<span class="keyword">continue</span>;</span><br><span class="line">        <span class="keyword">if</span>(!<span class="keyword">await</span> <span class="title function_">checkLocalSite</span>(link[i].<span class="property">href</span>))&#123;</span><br><span class="line">            link[i].<span class="property">href</span> = <span class="string">&quot;[你的Go Jumper的部署地址]#&quot;</span>+<span class="variable language_">window</span>.<span class="title function_">btoa</span>(link[i].<span class="property">href</span>)</span><br><span class="line">            <span class="comment">//console.log(&quot;edit.&quot;)</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLocalSite</span>(<span class="params">url</span>)&#123;</span><br><span class="line">    <span class="keyword">try</span>&#123;</span><br><span class="line">        <span class="comment">//console.log(&quot;check:&quot;,url)</span></span><br><span class="line">        <span class="keyword">let</span> reg = <span class="keyword">new</span> <span class="title class_">RegExp</span>(<span class="regexp">/\/\/(.*)\//g</span>)</span><br><span class="line">        <span class="keyword">let</span> domain = reg.<span class="title function_">exec</span>(url)[<span class="number">1</span>].<span class="title function_">split</span>(<span class="string">&#x27;/&#x27;</span>)[<span class="number">0</span>].<span class="title function_">split</span>(<span class="string">&#x27;.&#x27;</span>)</span><br><span class="line">        <span class="comment">//console.log(domain,domain[domain.length-2]+&#x27;.&#x27;+domain[domain.length-1])</span></span><br><span class="line">        domain = &#123;</span><br><span class="line">            <span class="comment">//二级域名请去除下一行的注释</span></span><br><span class="line">            <span class="attr">check</span>: (<span class="comment">/*domain[domain.length-3]+&#x27;.&#x27;+*/</span>domain[domain.<span class="property">length</span>-<span class="number">2</span>]+<span class="string">&#x27;.&#x27;</span>+domain[domain.<span class="property">length</span>-<span class="number">1</span>]).<span class="title function_">split</span>(<span class="string">&#x27;/&#x27;</span>)[<span class="number">0</span>],</span><br><span class="line">            <span class="attr">original</span>: domain</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">//console.log(domain)/* 这里 */</span></span><br><span class="line">        <span class="keyword">if</span>(domain.<span class="property">check</span>===<span class="string">&quot;qystu.cc&quot;</span> || domain.<span class="property">original</span>[<span class="number">0</span>].<span class="title function_">split</span>(<span class="string">&#x27;/&#x27;</span>)[<span class="number">0</span>]===<span class="string">&quot;localhost:4000&quot;</span>)<span class="keyword">return</span> <span class="literal">true</span>;<span class="comment">//将domain.check修改为根或二级域名，domain.original[0].split(&#x27;/&#x27;)[0]修改为本地测试页面</span></span><br><span class="line">        <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line">    &#125;<span class="keyword">catch</span>(err)&#123;</span><br><span class="line">        <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="引入"><a href="#引入" class="headerlink" title="引入"></a>引入</h2><p>最后在博客的 <code>_config.yml</code>中引入<br>例如vlts的</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">import:</span><br><span class="line">  script:</span><br><span class="line">    - &lt;script src=&quot;https://cdn.jsdelivr.net/gh/qystudio0/go-jumper/js/checker.js&quot;&gt;&lt;/script&gt;</span><br></pre></td></tr></table></figure>

<p>如果你的主题不支持引入那么可以在head里添加</p>
<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">src</span>=<span class="string">&quot;https://cdn.jsdelivr.net/gh/qystudio0/go-jumper/js/checker.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure>

</div><div class="story post-story"><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>这样，当博客加载完毕的时候，博客的全部外链就会被加上二级跳转，但是源HTML里的外链不变。可以优化 SEO和加强网站体验</p>
<p>本文修改自<a href="https://blog.pai233.top/20220109/how-to-use-go-jumper/">pai233</a></p>
<p>源码参考自<a href="https://github.com/pai233/go-jumper/">go-jumper</a></p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/32667.html">qexo多作者解决方案</a></li><li><a href="https://www.qystu.cc/posts/52948.html">serviceworkers首屏优化</a></li><li><a href="https://www.qystu.cc/posts/61056.html">为hexo加一个自动部署</a></li><li><a href="https://songxwn.com/team_nav/">部署团队服务导航网站 Team-nav</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>博客</tag>
        <tag>web</tag>
        <tag>跳转</tag>
      </tags>
  </entry>
  <entry>
    <title>胡杨礼赞</title>
    <url>/posts/52176.html</url>
    <content><![CDATA[<p>我赞美胡杨，赞美它那挺立的身姿，赞美它那无尽的毅力，所以我要高声地赞美胡杨。<br>我初见胡杨，是一段干巴巴的树枝，干裂的树皮同被一个身强力壮的人硬扭的麻花一样，一条条不齐地盘旋在表面上。一个一个凹凹凸凸的小点，同麻疹一样撒在一条条纵横的沟壑间，给人一种就是普通的木头段子，在落叶堆间唾手可得的平凡之物，而不用给予任何理睬时，因一段家尊的口述后，我要高声赞美胡杨。<br>“这段胡杨，是我去西北时，路过一片树林，起初我还不知道那是什么树，枝条一个个旁逸斜出，但这段胡杨的故事使我难忘，这段胡杨就是我在那捡的。”我爸顿了顿，饮了口茶。从他对我的简述我还没有领会到胡杨的特别，但后来的这样一句话，让我一开始看到胡杨时，那种从这段胡杨中渐渐溢出矗立西域千年的古老气息是从何而来的了。<br>“胡杨生则三千年不死，死则三千年不倒，倒则三千年不朽。”这是在我内心最震撼的一句话。细看它之后才发现，这一截虬枝上，本是断折处应棱立而起的木碴，是被荒漠岁月的雄风磨去了棱角。枝条落在地上，向上的那一面已被西北沙漠的烈日烤得发黄发焦，这些是绝非一日而就的。<br>家尊至西北关塞之日亦为四月，胡杨之叶乃未发也，枯叶存枝头，尚犹金也。予枝虽不齐，但生志犹高也。日挂枝头，大江东去，杨满金沙丘。登丘而望其林也，树虽旁逸斜出，日照投其影，影布石上，甚异之。<br>虽然这样的胡杨相貌不扬，但岁月嵌在上面，那种难以掩饰的威严每每能震慑住我。这是生命与时间迸发出的火焰，把鼻子凑上去细细地嗅，有一种檀木发出的被岁月冲淡的浅浅香气。<br>我用手抚摸这这从千里外来的“老人”，本是对破木头的鄙夷，以全然转变为对岁月的仰望了。日日夜夜浓缩在这样一段胡杨里，是生命，是历史，也是我感受到华夏大地不屈服的毅力。<br>“我把一段小胡杨枝送给了一位叔叔，他一开始也以为这是块破木头，但他听了胡杨背后的故事，也突然使他迷上了胡杨的精神品质，他说将会把段胡杨好好收藏，也是我寓意着他的事业如胡杨一样常青。”我爸最后向我说，“我这还有一小段胡杨，虽然不能拿来当做封存美术馆的艺术品，但有时候吧，胡杨的意志才是人们追求的。不论日晒雨淋，都不应倒下。生命给我们种种坎坷，究竟是一种恩赐，还是一种折磨？”父亲向我抛下了一个疑问。<br>自愧不如，这个问题我还尚无得到解释，但我却理解了胡杨崎岖表面上一条条沟壑的深意，这是生命一定会有的，生命必须有裂缝，阳光才照得进来。<br>听故事的人变成讲故事的人，讲故事的人变成了故事里的人，生命即如胡杨，时间能证明一切。这是从胡杨的一生中得出的道理。<br>是啊！没有什么能够超脱时间的束缚，我们虽没有千年的寿命，但我们能做的，只有自强不息，因为这样，时间才永远无法击败我们的心志。<br>谨以此文，记矛盾老先生和送给我的父亲。</p>

]]></content>
      <categories>
        <category>散文</category>
      </categories>
      <tags>
        <tag>散文</tag>
        <tag>抒情</tag>
      </tags>
  </entry>
  <entry>
    <title>(转)论《河中石兽》的理论是否正确</title>
    <url>/posts/51727.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="论"><a href="#论" class="headerlink" title="论"></a>论</h2><p>假设老兵解释有道理，即河中石兽可以向上游翻滚，则其每次翻滚的动能必然来自势能，即重心的降低，因此，可以肯定在翻滚数次之后，其重心必然越降越低，直至没入河床之下，所以，除非有其它能量来源推动石像，否则绝无可能翻滚到上游数里。</p>
<p>近日读到一篇新闻报道，说都江堰河道施工中挖到汉代无头石像。报道说近年一共挖到包括战国时代都江堰之父李冰在内的5尊石像。有人推测它们可能就是历史记载中的“三神石人”，但无法确认。报道转而叙述，史载元代治水专家曾造三十吨重的铁牛，明代曾铸造五吨重的铁龟，目前尚未发掘到。那赶紧到下游附近去找找铁牛和铁龟啊。然而，民俗学家蒋永志“给出了一个观点，铁牛与铁龟并不在鱼嘴下游，而在上游。据他介绍，铁牛和铁龟非常重，按照重物在水流中活动的规律，越重的东西可能往上移而不是往下游移。因此，他认为这几件宝物不可能在下游，而是在鱼嘴上游。”</p>
<p>十之八九，蒋永志的观点“重物在水流中活动的规律”来自初中一年级语文课本，选自纪晓岚《阅微草堂笔记》的一篇《河中石兽》。</p>
<p>该文大意是说，沧州一座庙里的石兽，估计是石狮子之类，多年前沉入了河中，下游找了十多里没找到。庙里的教书先生说石重沙轻，肯定在原处的泥沙下面。而一老水手则说肯定在上游，因为水会把石像底部朝向上游方向的沙子冲走，形成坑穴，导致石像向上游翻滚。故事最后说果然在上游几里外找到石像。</p>
<p>“河里的石狮子水越冲越往上游走，还能走几十里”，你信吗？但是多数语文老师还会手脚并用，连比带画地为那些处于惊讶和渴求知识的幼小的心灵解释其背后的物理原理。“老水手”说的，能错吗？“实践出真知”啊。看来知识分子要接受贫下中农再教育并不是毛主席的独创，几百年前纪晓岚就知道拿个教书匠来衬托劳动人民的“丰富智慧”。我现在仍然记得当时自己因为无论如何不能理解这些艰深智慧而感到自惭形秽。</p>
<p>然而，这是真的吗？这么重要的一个现象，为什么我在之后多年的学习当中再也没有键到过类似的描述？我通过多个英文关键词在google上没有搜到任何相关记述。难道国外的劳动人民没有如此丰富的“智慧”？有人质疑过吗？有人做过实验吗？这篇课文仍然在初中的语文课本中吗？</p>
<p>实际上，这个问题不需要去搜什么文献，只需坐下来运用中学的物理知识分析一下就能得出向上游翻滚几十里是不合理的。首先，水中裹携沙子的激流在石像的下游一侧水流突然减速，沙子沉积，的确会阻碍石像向下游冲刷。此外，因为石兽逆流一面沙子被冲刷而形成坑穴，因此，石像有很大可能会滑倒这个坑穴力。这和上面那个实验的结果是一致的，也就是说，石像的确可能略微向上游方向下滑少许。然而，下滑的前提是重心降低，怎么可能跑到上游势能高的地方呢？</p>
<p>“实验是检验理论的唯一标准”。在中文搜索中发现真的有中学语文老师做过简单实验。在“中国教师梁恕俭”的博客中《你怀疑过“河中石兽”吗》一文提到，梁老师把砖头放到沙子上模拟这个河中石兽的情景，然后用手挖去一面的沙子以模拟水流对沙子的冲击，结果呢，砖头根本不会翻转，而是直接整体滑到坑里，更没有也不可能“翻滚到上游”。梁老师还画了一个示意图，做了石块的翻动的受力分析，否定了石像向上游远距离翻滚的可能性。</p>
<p>有的人提出，有没有可能水流不断晃动石块，下面不断有沙子垫高石块，然后垫高了，又滑下，以至于游走到上游去了呢？我认为这不可能。第一，水流小的话晃不动大石块，水流太大又会连沙带石一齐冲下去。第二，哪条河中没有沟沟坎坎？哪条河中没有零零碎碎石块？难道大石像不会被卡到石块中？第三，在极其罕见的情况下它抬升了一下有可能，成年累月地被水流拍击的情况下逆流抬升向上走几十里，这除了相信这个石像真的变成“神兽”，否则绝无可能。简单计算可知，十年走十里，也就是每年走500米，每天要走一米三。我看这石像恐怕不是在走，而是在跑。</p>
<p>这篇《河中石兽》如此可疑，也不奇怪，因为它出自纪晓岚《阅微草堂笔记》卷十六《姑妄听之》。姑妄听之？。。。就这么一篇道听途说、连古人都不信的文章，在2013年人教版初中语文教材修订中，在大量的增删中，竟然得以保留。我猜想，一是因为这篇文章的内容奇特，能够吸引“阅读兴趣”，另一方面，课本里其它文章绝大多数都是“为赋新词强说愁”的感性文章，就这么一篇能和物理知识扯上关系的知性文章，不舍得删。</p>
<p>这下可好，现在当年的初中生成长为“民俗专家”了，“姑妄听之”也演变成了“重物在水流中活动的规律”了，开始为长江打捞提供严肃建议了。。。</p>
</div><div class="story post-story"><h2 id="结"><a href="#结" class="headerlink" title="结"></a>结</h2><p>最后，请教一下水动力学教授，专家，</p>
<p>(1) 在你们的教学实验之中，是否听说过水沙冲击下重物反而会向上游长距离移动的任何例子？</p>
<p>(2) 如果上述问题的答案是否定的，那么初中语文课本给出这样一篇明显违反能量守恒原理的文章，要不要建议教育部从课本中删去？谁来提这个建议呢？</p>
</div><div class="story post-story"><h2 id="评"><a href="#评" class="headerlink" title="评"></a>评</h2><p>违反能量守恒原理的文章在课本里有意思吗。。。</p>

</div>]]></content>
      <categories>
        <category>语文</category>
      </categories>
      <tags>
        <tag>语文</tag>
      </tags>
  </entry>
  <entry>
    <title>软件屏蔽器 秒杀流氓软件</title>
    <url>/posts/64280.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="为什么要软件屏蔽器"><a href="#为什么要软件屏蔽器" class="headerlink" title="为什么要软件屏蔽器"></a>为什么要软件屏蔽器</h2><p>我在网上冲浪十多年，经历过的套路，安装过的流氓软件数不清。</p>
<p>其中有一种套路，是当之无愧的小白杀手，老司机也时常中招，肆虐互联网二十余年未曾消失，至今仍然盛行。</p>
<p>屏幕前的小伙伴或多或少被它教训过，它就是久经不衰，厂商屡用不爽的<strong>“捆绑安装”。</strong></p>
<p>捆绑安装之妙处，在于不经意间，悄悄在后台帮你装上360全家桶、百度全家桶、金山全家桶等国产流氓三剑客。</p>
<p>让电脑忽地走进三国大战时代，成为三大杀毒巨头厮杀的战场。</p>
<p>CPU、内存时时刻刻占用100%，鼠标好像背上了好几辆特斯拉，滑半天鼠标没反应，偶尔当场爆炸原地消失不见。</p>
<p>许多电脑小白起初不以为然，自我安慰道：多装几个杀毒软件，防御力更强。</p>
<p>直到某天打开桌面，才发现三剑客们嫌自家兵力不足。</p>
<p>又去招兵买马，把自家兄弟，如XX视频、XX浏览器、XX阅读器拉进战场。</p>
<p>有的跑去拉帮结派，把一刀9999，是兄弟就来砍死我的传奇大哥扯了过来，扩张地盘。</p>
<p>最终电脑经不住不请自来的软件们的轮番折腾，宕机不干了。</p>
<p>懂哥的形容或许夸张了些，现实生活中却时刻发生着相似的事情。</p>
<p>捆绑安装，是无数小白的噩梦。</p>
</div><div class="story post-story"><h2 id="软件屏蔽器"><a href="#软件屏蔽器" class="headerlink" title="软件屏蔽器"></a>软件屏蔽器</h2><p>为了拯救那些深陷泥潭，惨遭流氓软件折磨的人群，懂哥特意找来素有“捆绑克星”的开源小工具。</p>
<p>最近在男性搏击论坛Github挺火的，本体几百KB大，具有阻止流氓软件捆绑安装的功能，很好的保护到电脑。</p>
<p>推荐小白用户、以及给家里的孩子、老人家安装使用，自己平时不用再担心他们乱点广告，省心。</p>
<p>PS：软件屏蔽器下载链接放在文章末尾了，感兴趣的小伙伴请自取。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639391889000.jpeg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639391889000.jpeg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="This is a picture without description"></p>
<p>软件屏蔽器的工作原理，主要是把部分国内主流的捆绑安装重灾品牌，添加进黑名单。</p>
<p>例如著名的2345导航、快压、YY、瑞星等，一旦黑名单内的品牌有安装行为，将强行终止，扼杀捆绑安装。</p>
<p>打开软件首页，能看到作者提前为我们罗列的黑名单网站。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392014000.jpeg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392014000.jpeg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="This is a picture without description"></p>
<p>我们只需点击全部屏蔽+保存更改，即可一键干掉大部分的捆绑安装隐患。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392202000.jpeg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392202000.jpeg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="This is a picture without description"></p>
<p>操作完成后，懂哥尝试下载安装360，系统立马提示：已阻止此应用，安装失败。</p>
<p>该效果同样适用于金山毒霸、传奇、2345等知名流氓软件。</p>
<p>如果存在漏网之鱼，软件屏蔽器支持手动添加网站或软件，咱们自己稍微操作下就行。</p>
<p><img src="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392276000.jpeg" class="lazyload" data-srcset="https://cdn.jsdelivr.net/gh/qystudio0/cdn@main/img/post/1639392276000.jpeg" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="图片"></p>
<p>有些小伙伴可能担心软件屏蔽器不安全，其实没必要顾虑太多。</p>
<p>软件屏蔽器是全球最大的程序员论坛github上的开源项目，所有代码公开可见，经过论坛审核，几千万程序员盯着，想藏病毒木马近乎不可能。</p>
<p>由于涉及到屏蔽修改等敏感功能，杀毒软件和windows自带的防火墙容易报毒误杀。</p>
<p>懂哥下载时就被误杀了好几次，小伙伴遇到此类情况，记得允许通过或暂时关闭杀软。</p>
</div><div class="story post-story"><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><p>下载链接下次补</p>
<p>就只放github链接了</p>
<div></div><div class="story post-story"><h2>推荐文章<span style="font-size:0.45em; color:gray">（由<a href="https://github.com/huiwang/hexo-recommended-posts">hexo文章推荐插件</a>驱动）</span></h2><ul><li><a href="https://www.qystu.cc/posts/59121.html">做一个特殊的ppt</a></li><li><a href="https://www.qystu.cc/posts/63659.html">window上帝模式</a></li></ul></div>
</div>]]></content>
      <categories>
        <category>software</category>
      </categories>
      <tags>
        <tag>tools</tag>
        <tag>去广告</tag>
      </tags>
  </entry>
  <entry>
    <title>阿里云搭建frp服务实现本地内网穿透</title>
    <url>/posts/38304.html</url>
    <content><![CDATA[<div class="story post-story"><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>利用阿里云搭建frp服务，本地frp客户端来实现内网穿透，来达到访问没有公网ip的远程机器</p>
</div><div class="story post-story"><h2 id="frp服务端搭建"><a href="#frp服务端搭建" class="headerlink" title="frp服务端搭建"></a>frp服务端搭建</h2><p>首先我们先安装一键部署frp的<a href="https://github.com/MvsCode/frps-onekey">脚本</a>,如果是阿里云的服务器直接用以下源：</p>
<h3 id="Aliyun"><a href="#Aliyun" class="headerlink" title="Aliyun"></a>Aliyun</h3><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh</span><br><span class="line">chmod 700 ./install-frps.sh</span><br><span class="line">./install-frps.sh install</span><br></pre></td></tr></table></figure>

<p>首先选择下载源：：</p>
<p><img src="https://oss.overme.cn/img/image-20210316094929755.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316094929755.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316094929755"></p>
<p>默认是阿里云 回车</p>
<p><img src="https://oss.overme.cn/img/image-20210316095103012.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316095103012.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316095103012"></p>
<p>frp的监听端口我选7000 默认是5443默认就直接回车</p>
<p><img src="https://oss.overme.cn/img/image-20210316095159157.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316095159157.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316095159157"></p>
<p>vhost_http_port端口默认是80,但是我80端口已经给nginx了所以随便设置了8080,因为我用不到这个</p>
<p>同上我默认的443端口也是被占用了，所以直接随机给了4433</p>
<p><img src="https://oss.overme.cn/img/image-20210316095446628.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316095446628.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316095446628"></p>
<p>dashboard是监控面板网址的端口我们直接用默认的回车就行</p>
<p><img src="https://oss.overme.cn/img/image-20210316095608395.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316095608395.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316095608395"></p>
<p>监控面板的用户名和密码设置,接下来的一些日志配置直接回车就行,配置好后:</p>
<p><img src="https://oss.overme.cn/img/image-20210316095740349.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316095740349.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316095740349"></p>
<p>以上是我的frp服务器的配置</p>
<p>我已经把6443端口用nginx转发到我自己的域名上了登录就可以看到各种仪表盘</p>
<p><img src="https://oss.overme.cn/img/image-20210316100059776.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316100059776.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316100059776"></p>
</div><div class="story post-story"><h2 id="本地frp客户端搭建"><a href="#本地frp客户端搭建" class="headerlink" title="本地frp客户端搭建"></a>本地frp客户端搭建</h2><p><a href="https://github.com/fatedier/frp/releases">进入github下载</a>,我选择的是64位windows</p>
<p><img src="https://oss.overme.cn/img/image-20210316100512822.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316100512822.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316100512822"></p>
<p>解压后修改frpc.ini文件配置,这是我的配置</p>
<p><img src="https://oss.overme.cn/img/image-20210316100715807.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316100715807.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316100715807"></p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">[common]</span><br><span class="line">server_addr = 47.110.134.2  #frp服务器地址</span><br><span class="line">server_port = 7000    #frp服务器监听端口</span><br><span class="line">token = hBanuRmGrwNlNe10 #服务器token是随机的在上图的配置中有</span><br><span class="line"></span><br><span class="line">[mstsc]</span><br><span class="line">type = tcp</span><br><span class="line">local_ip = 127.0.0.1 </span><br><span class="line">local_port = 3389  #因为我是开远程桌面RDP所以是映射3389端口</span><br><span class="line">remote_port = 6000</span><br></pre></td></tr></table></figure>

<p>进入cmd 运行frp客户端</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">frpc.exe -c frpc.ini</span><br></pre></td></tr></table></figure>

<p><img src="https://oss.overme.cn/img/image-20210316101149626.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101149626.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101149626"></p>
<p>报错：<code>[service.go:103] login to server failed</code></p>
<p>原因是没有打开阿里云服务器安全组的7000端口,现在去打开</p>
<p><img src="https://oss.overme.cn/img/image-20210316101351051.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101351051.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101351051"></p>
<p>再次运行后, <code>login to server success</code>成功</p>
<p><img src="https://oss.overme.cn/img/image-20210316101424738.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101424738.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101424738"></p>
<p>试试远程连接，连不上</p>
<p><img src="https://oss.overme.cn/img/image-20210316101608046.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101608046.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101608046"></p>
<p>原因是没有打开阿里云安全组的6000端口,现在去打开</p>
<p><img src="https://oss.overme.cn/img/image-20210316101656122.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101656122.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101656122"></p>
<p>再次连接可以连上了</p>
<p><img src="https://oss.overme.cn/img/image-20210316101730454.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316101730454.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316101730454"></p>
<p>最后还有一点小坑，这里的登陆密码不能用pin码,我用户密码忘记了,需要用cmd管理员模式运行</p>
<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">net user username password</span><br></pre></td></tr></table></figure>

<p>重置密码,这里非常感谢<a href="https://www.yuque.com/revang/blog/tgnnyz">钢明兄</a></p>
</div><div class="story post-story"><h2 id="其他命令"><a href="#其他命令" class="headerlink" title="其他命令"></a>其他命令</h2><h3 id="Uninstall（卸载）"><a href="#Uninstall（卸载）" class="headerlink" title="Uninstall（卸载）"></a>Uninstall（卸载）</h3><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">./install-frps.sh uninstall</span><br></pre></td></tr></table></figure>

<p><img src="https://oss.overme.cn/img/image-20210316094815230.png" class="lazyload" data-srcset="https://oss.overme.cn/img/image-20210316094815230.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="image-20210316094815230"></p>
<h3 id="Update（更新）"><a href="#Update（更新）" class="headerlink" title="Update（更新）"></a>Update（更新）</h3><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">./install-frps.sh update</span><br></pre></td></tr></table></figure>

</div>]]></content>
      <categories>
        <category>web</category>
      </categories>
      <tags>
        <tag>阿里云</tag>
        <tag>frp</tag>
        <tag>内网穿透</tag>
      </tags>
  </entry>
</search>
