<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Giuem Blog RSS Feed]]></title><description><![CDATA[GIUEM(@giuemcom) 的博客，平常会简单开箱测评买到的科技数码产品，也会记录分享日常的折腾奇奇怪怪的东西，技术向的文章会偏前端、信息安全]]></description><link>https://www.giuem.com</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 21 Nov 2022 14:34:40 GMT</lastBuildDate><item><title><![CDATA[聊聊博客近期的更新]]></title><description><![CDATA[最近对博客进行了一次比较大的更新改版，距离 上一次更新 已经 4 年多了，那时还信誓旦旦的说会好好的写博客。结果如今 3 年过去了才写了 9 篇文章，18 年更新了 4 篇文章，19 年更新了 3 篇，2…]]></description><link>https://www.giuem.com/blog/recent-updates-of-my-blog-2021</link><guid isPermaLink="false">https://www.giuem.com/blog/recent-updates-of-my-blog-2021</guid><pubDate>Sun, 29 Aug 2021 14:00:24 GMT</pubDate><content:encoded>&lt;p&gt;最近对博客进行了一次比较大的更新改版，距离&lt;a href=&quot;/blog/a-new-beginning-to-blog&quot;&gt;上一次更新&lt;/a&gt;已经 4 年多了，那时还信誓旦旦的说会好好的写博客。结果如今 3 年过去了才写了 9 篇文章，18 年更新了 4 篇文章，19 年更新了 3 篇，20 年更新只更新了一篇。通过观察每年更新的数量不难发现规律，每次更新博客的主题总能刺激写作的欲望，随着时间推移写作的热情逐渐消耗殆尽。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;嗯，看来是时候对博客进行一波重构，刺激一下创作的欲望了。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;技术栈调整&quot;&gt;技术栈调整&lt;/h2&gt;&lt;h3 id=&quot;博客框架&quot;&gt;博客框架&lt;/h3&gt;&lt;p&gt;最早我的博客是运行在 WordPress 上的，但是发现我的博客本来更新的频率就不高，完全没必要使用动态博客引擎。那会应该是 15 年吧，静态站点生成器可以选择的并不多，只记得 Hexo 很多人在用，当时的一大趋势就是从 Jekyll 迁移到 Hexo、从动态博客迁移到静态博客。我就是在那时从 WordPress 迁移到 Hexo，并写下了第一款主题 &lt;a href=&quot;https://github.com/giuem/hexo-theme-naive&quot;&gt;giuem/hexo-theme-naive&lt;/a&gt;，这款主题也得到了很多人的喜欢（&lt;a href=&quot;https://github.com/frostfan/hexo-theme-polarbear&quot;&gt;衍生版本有 300 多 star&lt;/a&gt;），后来因为我自己看腻了就重新写了一款主题：&lt;a href=&quot;https://github.com/giuem/hexo-theme-iris&quot;&gt;giuem/hexo-theme-iris&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;在写主题的过程中就会发现，这些基于模板引擎的站点生成器，太过原始（仅个人观点），打包的方式是通过 gulp 甚至没有打包，工程化也很难做起来，每次模板间的引用传参、模板与 JavaScript 的交互都是两眼一抹黑，心里特没底，不知道到底有没有这个参数，各种&lt;a href=&quot;/blog/how-fast-is-my-blog/#%E5%8D%9A%E5%AE%A2%E7%9A%84%E4%BC%98%E5%8C%96&quot;&gt;优化手段&lt;/a&gt;&lt;undefined&gt;（如资源预加载，Service Worker 等）需要靠非常人工的方式去维护。而且当初主题系统设计得特别 &lt;span role=&quot;img&quot; aria-label=&quot;pile of poo&quot;&gt;💩&lt;/span&gt;，只能通过拷贝文件夹的方式来安装主题（不过后面好像支持通过 NPM 方式安装了）。&lt;/undefined&gt;&lt;/p&gt;&lt;p&gt;这两年国外对于 &lt;a href=&quot;https://jamstack.org/&quot;&gt;JAMStack&lt;/a&gt; 这一概念炒得特别火，冒出了很多相关的站点生成器，&lt;a href=&quot;https://www.gatsbyjs.com/&quot;&gt;Gatsby&lt;/a&gt; 就是其中人气较高的一款。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.400000000000006%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPUlEQVQoz62TMUvEMBTH+xFdHPwC/QKFGypFkS63ugqe0kEQHZyEVo4TSt0cCt6BN3jTgYV20NqkTdq/5B052msdhAu8vLwk/eWf91Kjqirs0wzVlWVJpsecd2M9/hdQeyEqADX5DYyDc74Fbw7sxm2GoclqQtYC+VeB1eITP98FxU3TkNG6lGR1rQ4UBG7DegpZwXF//oKTw1tMTqdgeYn5/A1hGEK1LMuQ5zniOEaapjS3C90AeYkaEutVigv7CccHNzg7usP6I8Xk+hK2bWM0GsGyLLiuC9M04TgOxuMxkiQhxV2gVsg4wocFPPcZj1evkLLGcvmO2WxGKqMoInVBEMD3fXieRylo57KTQyEFOOOkTBdI5W+oKVXquhr4Z5WVbyA7Fd01xljvm0GF23fH+89hcN/AHmPff8ovtoFB9UIiv0AAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/1e0be/gatsby-logo.webp 250w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/b0a15/gatsby-logo.webp 500w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/a5d4d/gatsby-logo.webp 1000w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/b732a/gatsby-logo.webp 1206w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/63868/gatsby-logo.png 250w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/0b533/gatsby-logo.png 500w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/00d43/gatsby-logo.png 1000w,/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/5c744/gatsby-logo.png 1206w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/7a0a04de06c1d1bbc3ea9d9ddd141a51/00d43/gatsby-logo.png&quot; alt=&quot;Gatsby&quot; title=&quot;Gatsby&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Gatsby 是基于 React/Webpack 技术栈的站点生成器，这意味着你能使用上丰富的 React 和 Webpack 生态，它本身也有非常强大的&lt;a href=&quot;https://www.gatsbyjs.com/plugins/&quot;&gt;插件生态&lt;/a&gt;。同时一些前端工程化、组件化的方案也能直接拿来使用。Gatsby 还提供了很多开箱即用的优化手段，比如资源的 Preload/Prefetch、响应式图片、内联样式、首屏优化、module/nomodule polyfill 优化，资源拆分等等，默认状态下就能达到 95 分左右的性能体验。&lt;/p&gt;&lt;p&gt;说起 React 生态的站点生成器，&lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt; 也是一个很好的选择，但之前在公司内有使用过（踩过坑）Gatsby 的经验，所以我的博客也就选择了 Gatsby。&lt;/p&gt;&lt;h3 id=&quot;pnpm-与-monorepo&quot;&gt;Pnpm 与 Monorepo&lt;/h3&gt;&lt;p&gt;这次还有一个比较大的调整就是使用了 &lt;a href=&quot;https://pnpm.io/&quot;&gt;Pnpm&lt;/a&gt; 作为 NPM 包管理工具，&lt;a href=&quot;https://pnpm.io/workspaces&quot;&gt;Pnpm Workspace&lt;/a&gt; 来管理组织代码仓库（Monorepo）。&lt;/p&gt;&lt;p&gt;Pnpm 即 performance npm，相比其他的包管理工具&lt;a href=&quot;https://pnpm.io/benchmarks&quot;&gt;性能更好&lt;/a&gt;，使用 Webpack 那一套编译工具就意味着你要装一大堆相关的 NPM 包，使用 Pnpm 能在博客部署时提供更好的性能。实测在有缓存时，目前博客安装依赖（node_modules 体积 ~558M）的时间仅为 &lt;strong&gt;20 秒&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:32.800000000000004%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA70lEQVQoz4WR227DIBBESWwDxuZuwI5x00pV3/r/nzcV0ESq0jYPR8Ou0OwskLePT6zHO1w8YJYdJuxNb4QnLDuWlHFcMnJ+BZE2wacDyiVot0K5FcOo0NEJHZ1x6kecenHnPDzSUQHGBCibQPhkIG3EbEI1Ledm3AbxyaLnEgNXGLjEaRDfQ35CbhSjsL3AhR0+5YqLe+3Fy7WaTnqpA4vSsRn/BenZXFMpmzDrACo0xtlC+632hfQod+5JOv4/QvmayixbTVaMXMwIW0tXYEKDnNmvqz6sXt5I+xXSxKY2wfitUuqiJXn5pJLgmeEX6XihRVIif/wAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/1e0be/pnpm-installation-time.webp 250w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/b0a15/pnpm-installation-time.webp 500w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/a5d4d/pnpm-installation-time.webp 1000w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/293e0/pnpm-installation-time.webp 1500w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/1cae0/pnpm-installation-time.webp 1870w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/63868/pnpm-installation-time.png 250w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/0b533/pnpm-installation-time.png 500w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/00d43/pnpm-installation-time.png 1000w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/aa440/pnpm-installation-time.png 1500w,/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/71ba4/pnpm-installation-time.png 1870w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/18dafaec84fa4a5ab1f96dc8e1a6fbab/00d43/pnpm-installation-time.png&quot; alt=&quot;Pnpm 安装时间&quot; title=&quot;Pnpm 安装时间&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;使用 Monorepo 的主要原因是当社区的插件不能满足需求时，想自己开发插件又不想发包或者不想每次手动的更新 package.json 和 lock 文件中的版本号时，可以通过 Monorepo 的方式把插件代码和博客的代码都放到一个代码仓库中维护，不通过发版就可以使用到最新的插件代码了。Monorepo 还有一个好处是所有的代码都共享一份最佳实践，代码规则的更新只需要修改一个 repo 就可以。&lt;/p&gt;&lt;p&gt;&lt;del&gt;我的最终目标是：所有开源的代码都放到这一个仓库中进行维护。&lt;/del&gt;&lt;/p&gt;&lt;h3 id=&quot;样式&quot;&gt;样式&lt;/h3&gt;&lt;p&gt;选择 React/Webpack 技术栈，可以选择的技术就很多了，像 PostCSS, CSS Modules, CSS in JS, utility-first CSS 等等。这几年 utility-first CSS 也是&lt;a href=&quot;https://2020.stateofcss.com/zh-Hans/technologies/methodologies/&quot;&gt;非常火&lt;/a&gt;；如果熟悉我博客风格，一定知道我的博客走的是性冷淡风格，注重排版和阅读体验，不会有太多花里胡哨的特效。这么一看 Utility-first CSS 就非常适合我的博客，之前简单统计过，博客主题中用的最多的 CSS 属性和特性是 &lt;code&gt;color&lt;/code&gt;,&lt;code&gt; font-size&lt;/code&gt;, &lt;code&gt;margin&lt;/code&gt;, &lt;code&gt;padding&lt;/code&gt; 和 &lt;code&gt;flexbox&lt;/code&gt;。所以 Utility-first CSS 对于我完全足够了，不需要使用复杂的预处理器来编译 CSS，而且使用 Utility-first CSS 还有一个好处就是可以把数值都固定到可枚举的常量中，不会出现一个 margin 出现 1234567890 种不同的数值。&lt;/p&gt;&lt;p&gt;框架上选择了老大哥 &lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind CSS&lt;/a&gt;，虽然最近又出了个 &lt;a href=&quot;https://windicss.org/&quot;&gt;Windi CSS&lt;/a&gt;，号称编译的速度更快，但是我在尝试从 Tailwind 切换到 Windi 后发现 typography 插件存在一点 BUG，暂时还是先使用 Tailwind CSS。&lt;/p&gt;&lt;h3 id=&quot;杂项&quot;&gt;杂项&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;这里是一些微小的改动，不适合单独拎出来介绍，但是我又觉得有必要讲一讲的&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;undefined&gt;统计工具用回了 Google Analytics，ga-proxy 已经不再维护和提供服务了 &lt;span role=&quot;img&quot; aria-label=&quot;loudly crying face&quot;&gt;😭&lt;/span&gt;&lt;/undefined&gt;&lt;/li&gt;&lt;li&gt;部署方式是 Cloudflare -&amp;gt; Vercel -&amp;gt; GitHub，Cloudflare 回源到 Vercel，GitHub 的更新会触发 Vercel 编译博客&lt;/li&gt;&lt;li&gt;由于有图片懒加载，暂时下掉了国内 CDN 节点，静态资源和图片全部走 Cloudflare CDN&lt;/li&gt;&lt;li&gt;暂时关闭了 Service Worker，目前发现 Service Worker 和深浅色主题切换有冲突，会出现 flash，等待排查&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;反向升级减法&quot;&gt;反向升级：减法&lt;/h2&gt;&lt;p&gt;之前我的博客主题其实就已经做了很多减法，相比于市面上正常的博客，主要少了：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;标签/分类&lt;/li&gt;&lt;li&gt;文章导航（上一页/下一页）&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这版主题会进一步优化，删除更多的元素。&lt;/p&gt;&lt;p&gt;首先被我删除的是首页头图，这个头图其实和文章内容没有半毛钱关系，当时设计这个头图是作为点缀，为了让博客看起来不会那么单调。后面发现其实不要这个图片也是 OK 的，而且头图还会影响到首屏的加载性能。&lt;/p&gt;&lt;p&gt;首页文章的分页也被我删除了，通过统计数据发现后面的页面其实点击率很低，而且和&lt;a href=&quot;/archives/&quot;&gt;归档页面&lt;/a&gt;在功能定位上存在冲突。试想一下，读者想翻看之前的文章，是一页页的查找更方便呢，还是一步到位在归档页面查看效率更高？答案显然是后者。所以我首页只保留了 6 篇最新的文章，增加一个按钮来链接到归档页面。&lt;/p&gt;&lt;p&gt;另外一个被我删除的东西是文章的发布时间，无论是在首页还是归档页、或者是文章页面都看不到任何时间信息。&lt;del&gt;因为我博客更新的频率本来就不高，展示时间岂不是让你们知道我拖更了多久？&lt;/del&gt;当然你可以通过其他的方式来查看更新的时间，比如 RSS 或者 Sitemap。&lt;/p&gt;&lt;h2 id=&quot;一些加法&quot;&gt;一些加法&lt;/h2&gt;&lt;p&gt;&lt;undefined&gt;还没做。应该可以再水一篇文章。&lt;span role=&quot;img&quot; aria-label=&quot;face blowing a kiss&quot;&gt;😘&lt;/span&gt;&lt;/undefined&gt;&lt;/p&gt;&lt;p&gt;目前想到的一些功能：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;灯箱&lt;/li&gt;&lt;li&gt;代码块优化&lt;/li&gt;&lt;li&gt;站外链接增加图标&lt;/li&gt;&lt;li&gt;文章页头图&lt;/li&gt;&lt;li&gt;搜索功能&lt;/li&gt;&lt;li&gt;……&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;最后&quot;&gt;最后&lt;/h2&gt;&lt;p&gt;之前我的博客源码一直都是放在私有仓库，这次我也是把博客完整的&lt;a href=&quot;https://github.com/giuem/monorepo&quot;&gt;开源&lt;/a&gt;了，如果有人也想尝试 Gatsby 希望我的代码能起到一点帮助吧&lt;del&gt;，也希望有人能帮我 fix typo 和 bug&lt;/del&gt;。&lt;/p&gt;&lt;p&gt;最近游戏荒了，正好该给博客除除草了。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[小米 AX 9000 简单开箱测试]]></title><description><![CDATA[先介绍下我目前住的地方的网络环境吧：1000M 的电信光纤入户，主路由是自己组的 OpenWRT 软路由用于拨号上网，下面挂了一台网件 R6300V2 和一台斐讯 K3 作为 AP。路由器放在客厅和我的卧室隔了一道承重墙，这导致我的卧室 5G…]]></description><link>https://www.giuem.com/blog/xiaomi-ax9000</link><guid isPermaLink="false">https://www.giuem.com/blog/xiaomi-ax9000</guid><pubDate>Sun, 04 Apr 2021 20:01:14 GMT</pubDate><content:encoded>&lt;p&gt;先介绍下我目前住的地方的网络环境吧：1000M 的电信光纤入户，主路由是自己组的 OpenWRT 软路由用于拨号上网，下面挂了一台网件 R6300V2 和一台斐讯 K3 作为 AP。路由器放在客厅和我的卧室隔了一道承重墙，这导致我的卧室 5G 信号不是很好，躺在床上看手机经常一个翻身连接速率就会骤降甚至断网。正巧前不久小米发布新旗舰路由器 AX9000，而且听说小米 Wi-Fi 6 系列的路由器口碑不错，就买了一台试试水。&lt;/p&gt;&lt;small&gt;BTW, 这篇文章的成文日期是清明节，不过当你们看到时应该已经6月初了，中间的这段时间可能被谁吃掉了（&lt;/small&gt;&lt;style&gt;.mobile-screenshot {
  max-width: 300px;
  margin: 0 auto;
}&lt;/style&gt;&lt;h2 id=&quot;参数简介&quot;&gt;参数简介&lt;/h2&gt;&lt;p&gt;参数部分就不过多介绍了，具体可以看&lt;a href=&quot;https://www.mi.com/mirouter/ax9000&quot;&gt;小米官网&lt;/a&gt;。这里列几个比较关键的参数：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;搭载了高通 IPQ8072 处理器，4 核 14nm A53 架构和一个双核的 NPU，搭载 1G 内存和 256M ROM，官方宣称可以同时支持 1000 台设备连接。&lt;/li&gt;&lt;li&gt;提供一个 2.5G 的网口和 4 个千兆网口，其中 2.5G 网口可以在 WAN 和 LAN 间切换。比较可惜不是全 2.5 G 口不能战未来。&lt;/li&gt;&lt;li&gt;无线同时支持 2.4G/5.2G/5.8G 三个频段&lt;ul&gt;&lt;li&gt;2.4G 规格为 4x4 MIMO 1148Mbps&lt;/li&gt;&lt;li&gt;5.2G 规格为 4×4 MIMO 4804Mbps&lt;/li&gt;&lt;li&gt;5.8G 规格为 4×4 MIMO 2402Mbps，支持 2x2 4K QAM&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;主动式散热，增加稳定性但是积灰属性++&lt;/li&gt;&lt;li&gt;支持 USB3.0，这个说实话用不上而且 3.0 还会影响到 2.4G Wi-Fi&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;开箱&quot;&gt;开箱&lt;/h2&gt;&lt;p&gt;我是首发当天在狗东上买的，当时还显示采购中，没想到当天夜里就有货了，第二天下午就送到了。刚拿到手上发现这包装是真的大，比我的台式机机箱还大，不知道的还以为我买了台电脑呢。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:74.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB2hSSSgdBf//EABsQAAICAwEAAAAAAAAAAAAAAAADAQIEERQS/9oACAEBAAEFAsl0rOmxWfVXqlkctzR//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGxAAAgEFAAAAAAAAAAAAAAAAAAEREDFBQlH/2gAIAQEABj8CSUl2J9FGDWn/xAAaEAEBAQADAQAAAAAAAAAAAAABEQAhMUHx/9oACAEBAAE/IUpFLTfOyx5F11lXuelY3AA83//aAAwDAQACAAMAAAAQPO//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAeEAEAAgEEAwAAAAAAAAAAAAABABEhMUFRgXHh8f/aAAgBAQABPxDK8yAztU536x4pDR2uNoXdX5FBySn1AaSAHgn/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/1056ca6061359f4d5383fd8bdf5cce95/1e0be/ax9000-box.webp 250w,/static/1056ca6061359f4d5383fd8bdf5cce95/b0a15/ax9000-box.webp 500w,/static/1056ca6061359f4d5383fd8bdf5cce95/a5d4d/ax9000-box.webp 1000w,/static/1056ca6061359f4d5383fd8bdf5cce95/293e0/ax9000-box.webp 1500w,/static/1056ca6061359f4d5383fd8bdf5cce95/b84eb/ax9000-box.webp 2000w,/static/1056ca6061359f4d5383fd8bdf5cce95/b75ef/ax9000-box.webp 3011w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/1056ca6061359f4d5383fd8bdf5cce95/0479a/ax9000-box.jpg 250w,/static/1056ca6061359f4d5383fd8bdf5cce95/41099/ax9000-box.jpg 500w,/static/1056ca6061359f4d5383fd8bdf5cce95/a2510/ax9000-box.jpg 1000w,/static/1056ca6061359f4d5383fd8bdf5cce95/c58a3/ax9000-box.jpg 1500w,/static/1056ca6061359f4d5383fd8bdf5cce95/3acf0/ax9000-box.jpg 2000w,/static/1056ca6061359f4d5383fd8bdf5cce95/df3cb/ax9000-box.jpg 3011w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/1056ca6061359f4d5383fd8bdf5cce95/a2510/ax9000-box.jpg&quot; alt=&quot;ax9000 box&quot; title=&quot;ax9000 box&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFyTakI0aC//8QAGRABAAMBAQAAAAAAAAAAAAAAAgEDEgAE/9oACAEBAAEFAp11tyNgezEdb52rCMn/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAcEAACAgIDAAAAAAAAAAAAAAAAAQISEBEhMVH/2gAIAQEABj8C4GrMtiT12xR8P//EABoQAAIDAQEAAAAAAAAAAAAAAAABETFBIVH/2gAIAQEAAT8hl3BQadEWmjFQuvPoJWYP/9oADAMBAAIAAwAAABBsD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAQADAAIDAAAAAAAAAAAAAAEAETFBYYGh0f/aAAgBAQABPxBqNQ1HYkQa1OQQtYTs2GViCsUIp+zNQDzz7n//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/d5f60e6bfbfd27b25870221525334577/1e0be/ax9000-vs-nr200.webp 250w,/static/d5f60e6bfbfd27b25870221525334577/b0a15/ax9000-vs-nr200.webp 500w,/static/d5f60e6bfbfd27b25870221525334577/a5d4d/ax9000-vs-nr200.webp 1000w,/static/d5f60e6bfbfd27b25870221525334577/293e0/ax9000-vs-nr200.webp 1500w,/static/d5f60e6bfbfd27b25870221525334577/b84eb/ax9000-vs-nr200.webp 2000w,/static/d5f60e6bfbfd27b25870221525334577/e71e9/ax9000-vs-nr200.webp 3071w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/d5f60e6bfbfd27b25870221525334577/0479a/ax9000-vs-nr200.jpg 250w,/static/d5f60e6bfbfd27b25870221525334577/41099/ax9000-vs-nr200.jpg 500w,/static/d5f60e6bfbfd27b25870221525334577/a2510/ax9000-vs-nr200.jpg 1000w,/static/d5f60e6bfbfd27b25870221525334577/c58a3/ax9000-vs-nr200.jpg 1500w,/static/d5f60e6bfbfd27b25870221525334577/3acf0/ax9000-vs-nr200.jpg 2000w,/static/d5f60e6bfbfd27b25870221525334577/dba25/ax9000-vs-nr200.jpg 3071w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/d5f60e6bfbfd27b25870221525334577/a2510/ax9000-vs-nr200.jpg&quot; alt=&quot;ax9000 vs nr200&quot; title=&quot;ax9000 vs nr200&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;背面介绍了一堆路由器的参数和特性。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUBBAb/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABpQ1Ezw/D/8QAGRABAQADAQAAAAAAAAAAAAAAAQACERQE/9oACAEBAAEFAhSyyZ3vmbmZ8t//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAACAwEAAAAAAAAAAAAAAAAAARAxQUL/2gAIAQEABj8Cm0cmI//EAB0QAQABAwUAAAAAAAAAAAAAAAEAEBFRIUFxgfD/2gAIAQEAAT8hzUWb0HtZmV2y66cRdn//2gAMAwEAAgADAAAAEO//AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABYRAQEBAAAAAAAAAAAAAAAAAAARIf/aAAgBAgEBPxDUf//EABsQAQEBAAIDAAAAAAAAAAAAAAERACExUZGx/9oACAEBAAE/EL8OzmlMaSju2e3C48zXhuRWPyfTf//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/f269ae74050de133fcb92fcdae20043e/1e0be/ax9000-box-back.webp 250w,/static/f269ae74050de133fcb92fcdae20043e/b0a15/ax9000-box-back.webp 500w,/static/f269ae74050de133fcb92fcdae20043e/a5d4d/ax9000-box-back.webp 1000w,/static/f269ae74050de133fcb92fcdae20043e/293e0/ax9000-box-back.webp 1500w,/static/f269ae74050de133fcb92fcdae20043e/b84eb/ax9000-box-back.webp 2000w,/static/f269ae74050de133fcb92fcdae20043e/5d7e7/ax9000-box-back.webp 3502w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/f269ae74050de133fcb92fcdae20043e/0479a/ax9000-box-back.jpg 250w,/static/f269ae74050de133fcb92fcdae20043e/41099/ax9000-box-back.jpg 500w,/static/f269ae74050de133fcb92fcdae20043e/a2510/ax9000-box-back.jpg 1000w,/static/f269ae74050de133fcb92fcdae20043e/c58a3/ax9000-box-back.jpg 1500w,/static/f269ae74050de133fcb92fcdae20043e/3acf0/ax9000-box-back.jpg 2000w,/static/f269ae74050de133fcb92fcdae20043e/dc6b4/ax9000-box-back.jpg 3502w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/f269ae74050de133fcb92fcdae20043e/a2510/ax9000-box-back.jpg&quot; alt=&quot;ax9000 box back&quot; title=&quot;ax9000 box back&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;打开包装后是一个巨大的海绵箱子。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAAB/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABQVJRtkf/xAAZEAEBAAMBAAAAAAAAAAAAAAACAwABIgT/2gAIAQEAAQUCrTZaujh6NZJPfnWDgf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAIDAAMAAAAAAAAAAAAAAAABAhJRITEy/9oACAEBAAY/AqpHSFLS0WudPURRw//EABoQAQEBAQEBAQAAAAAAAAAAAAERACExcZH/2gAIAQEAAT8h6rIVyE6fdxHguQhQUGf7+TgUrEu//9oADAMBAAIAAwAAABAAz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQEBAQEBAQAAAAAAAAAAAAERACFBMZH/2gAIAQEAAT8QSEIRX3wmrnFZWCtYyPlw3YCDJzk1P8WrtT8Pu//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/e0e4bc8f2fd7f78e3f24dcca385bae88/1e0be/ax9000-protect-box.webp 250w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/b0a15/ax9000-protect-box.webp 500w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/a5d4d/ax9000-protect-box.webp 1000w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/293e0/ax9000-protect-box.webp 1500w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/b84eb/ax9000-protect-box.webp 2000w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/9b0b9/ax9000-protect-box.webp 3481w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/e0e4bc8f2fd7f78e3f24dcca385bae88/0479a/ax9000-protect-box.jpg 250w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/41099/ax9000-protect-box.jpg 500w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/a2510/ax9000-protect-box.jpg 1000w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/c58a3/ax9000-protect-box.jpg 1500w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/3acf0/ax9000-protect-box.jpg 2000w,/static/e0e4bc8f2fd7f78e3f24dcca385bae88/7dfdf/ax9000-protect-box.jpg 3481w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/e0e4bc8f2fd7f78e3f24dcca385bae88/a2510/ax9000-protect-box.jpg&quot; alt=&quot;ax9000 protect box&quot; title=&quot;ax9000 protect box&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;打开保护盒后就可以看到路由器本体和配件盒。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAwL/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB1VbnpcNCpClWPF85K//EAB8QAAICAgEFAAAAAAAAAAAAAAEDAgQREgATISIjQf/aAAgBAQABBQJ7Zhhc3CiSu3Hv8gMQuZ3M/XWlsiwPLpx4kYV//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhABAAICAQUAAAAAAAAAAAAAAQAQAiEREjFBUWH/2gAIAQEABj8CQdFCzqPVYnyjfmY12hxP/8QAGhABAAMBAQEAAAAAAAAAAAAAAQARMSFBUf/aAAgBAQABPyGhFQ19JQN0/Y7ts41BaNxzTxx8hmdrU21YBNAULHssPwqF407GMi8ez//aAAwDAQACAAMAAAAQXAHM/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8Qiz//xAAeEAEAAgICAwEAAAAAAAAAAAABABEhMUFRYXGhkf/aAAgBAQABPxBtpUpdnX2Vlc0Vz1jiMiUbXbmLhNtcDd/YBVLKQyTcagAYafMdqdMrXG/sBvIIUIo441DEXs41iNF2x+UI0D9YCNEt7n//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/276d756f37251a9cd1e222fa699905f9/1e0be/ax9000-opened-box.webp 250w,/static/276d756f37251a9cd1e222fa699905f9/b0a15/ax9000-opened-box.webp 500w,/static/276d756f37251a9cd1e222fa699905f9/a5d4d/ax9000-opened-box.webp 1000w,/static/276d756f37251a9cd1e222fa699905f9/293e0/ax9000-opened-box.webp 1500w,/static/276d756f37251a9cd1e222fa699905f9/b84eb/ax9000-opened-box.webp 2000w,/static/276d756f37251a9cd1e222fa699905f9/036b1/ax9000-opened-box.webp 2905w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/276d756f37251a9cd1e222fa699905f9/0479a/ax9000-opened-box.jpg 250w,/static/276d756f37251a9cd1e222fa699905f9/41099/ax9000-opened-box.jpg 500w,/static/276d756f37251a9cd1e222fa699905f9/a2510/ax9000-opened-box.jpg 1000w,/static/276d756f37251a9cd1e222fa699905f9/c58a3/ax9000-opened-box.jpg 1500w,/static/276d756f37251a9cd1e222fa699905f9/3acf0/ax9000-opened-box.jpg 2000w,/static/276d756f37251a9cd1e222fa699905f9/df059/ax9000-opened-box.jpg 2905w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/276d756f37251a9cd1e222fa699905f9/a2510/ax9000-opened-box.jpg&quot; alt=&quot;ax9000 opened box&quot; title=&quot;ax9000 opened box&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;AX9000 本体&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:74.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMCBAUG/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAXUXZ6dIQD//xAAbEAACAgMBAAAAAAAAAAAAAAABAgADBBETIf/aAAgBAQABBQLLs5p21bqZqMSVdoPF/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGRABAAMBAQAAAAAAAAAAAAAAAQACETEQ/9oACAEBAAY/Asr1lEMrnhY5yGkBn//EABkQAQADAQEAAAAAAAAAAAAAAAEAESFRQf/aAAgBAQABPyFxy9eS+EgTpE3FYumORYCeGy6C0KWf/9oADAMBAAIAAwAAABB//wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAbEAACAgMBAAAAAAAAAAAAAAABEQAxIVHRQf/aAAgBAQABPxAUhbxOQFrsDsJrKIUy9O5QSnYLokeyr8mAe43DWn9ggXP/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/3a3ef5412c49777acb71b273bc165ea4/1e0be/ax9000-front.webp 250w,/static/3a3ef5412c49777acb71b273bc165ea4/b0a15/ax9000-front.webp 500w,/static/3a3ef5412c49777acb71b273bc165ea4/a5d4d/ax9000-front.webp 1000w,/static/3a3ef5412c49777acb71b273bc165ea4/293e0/ax9000-front.webp 1500w,/static/3a3ef5412c49777acb71b273bc165ea4/b84eb/ax9000-front.webp 2000w,/static/3a3ef5412c49777acb71b273bc165ea4/6e5e4/ax9000-front.webp 3272w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/3a3ef5412c49777acb71b273bc165ea4/0479a/ax9000-front.jpg 250w,/static/3a3ef5412c49777acb71b273bc165ea4/41099/ax9000-front.jpg 500w,/static/3a3ef5412c49777acb71b273bc165ea4/a2510/ax9000-front.jpg 1000w,/static/3a3ef5412c49777acb71b273bc165ea4/c58a3/ax9000-front.jpg 1500w,/static/3a3ef5412c49777acb71b273bc165ea4/3acf0/ax9000-front.jpg 2000w,/static/3a3ef5412c49777acb71b273bc165ea4/51d88/ax9000-front.jpg 3272w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/3a3ef5412c49777acb71b273bc165ea4/a2510/ax9000-front.jpg&quot; alt=&quot;ax9000 front&quot; title=&quot;ax9000 front&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;天线展开角度可以接近 180 度，正面有四条 RGB 灯带，可以在软件中设置颜色和光效。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAwABBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFwc06bJf/EABkQAAIDAQAAAAAAAAAAAAAAAAIDAAESEf/aAAgBAQABBQJ4FU0TSzyN2cNVrvs//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAHhABAAAGAwEAAAAAAAAAAAAAAQACEBITMSFBUYH/2gAIAQEABj8CySuuoxhb9oSHA7YvkVT2n//EABgQAQADAQAAAAAAAAAAAAAAAAEAESFR/9oACAEBAAE/IQBd5bYxJ0zWKANzsuY1dkAHLSLoKU8n/9oADAMBAAIAAwAAABCvz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EAB4QAQABAwUBAAAAAAAAAAAAAAERACFxMUFRYZGB/9oACAEBAAE/EAfRl2C8Zj5ipdRm8sa8eb1CKoBKlc0hr1C0jXvu1NHAILm/BmiSPBZTDX//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/c3b5e360c8e18becfb73a2f81ffd4ded/1e0be/ax9000-2.webp 250w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/b0a15/ax9000-2.webp 500w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/a5d4d/ax9000-2.webp 1000w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/293e0/ax9000-2.webp 1500w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/b84eb/ax9000-2.webp 2000w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/c8b8d/ax9000-2.webp 3506w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/c3b5e360c8e18becfb73a2f81ffd4ded/0479a/ax9000-2.jpg 250w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/41099/ax9000-2.jpg 500w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/a2510/ax9000-2.jpg 1000w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/c58a3/ax9000-2.jpg 1500w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/3acf0/ax9000-2.jpg 2000w,/static/c3b5e360c8e18becfb73a2f81ffd4ded/7140b/ax9000-2.jpg 3506w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/c3b5e360c8e18becfb73a2f81ffd4ded/a2510/ax9000-2.jpg&quot; alt=&quot;ax9000 2&quot; title=&quot;ax9000 2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;AX9000 的四面都有接口，正面是电源和网络指示灯&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUBBAb/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABpDaUz48D/8QAGxAAAgMAAwAAAAAAAAAAAAAAAQIABBEDEiL/2gAIAQEAAQUCB8O0O6K/UnhZoKiif//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EAB0QAAEDBQEAAAAAAAAAAAAAAAABAiEQERIxQaH/2gAIAQEABj8Cns1XF9iX+G1P/8QAHBABAAICAwEAAAAAAAAAAAAAAQARIUExUWHB/9oACAEBAAE/IQabbfIb3YVzHkNxnZnkMqwgqlJ//9oADAMBAAIAAwAAABDc/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAbEAEAAwADAQAAAAAAAAAAAAABABEhMUFRsf/aAAgBAQABPxASbxo0gFH7ASgpCjyIdtajpBUBvQdRAdMcmS8svEzJ/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/0f913490ce0cc485368a2bcca6665c4f/1e0be/ax9000-led.webp 250w,/static/0f913490ce0cc485368a2bcca6665c4f/b0a15/ax9000-led.webp 500w,/static/0f913490ce0cc485368a2bcca6665c4f/a5d4d/ax9000-led.webp 1000w,/static/0f913490ce0cc485368a2bcca6665c4f/293e0/ax9000-led.webp 1500w,/static/0f913490ce0cc485368a2bcca6665c4f/b84eb/ax9000-led.webp 2000w,/static/0f913490ce0cc485368a2bcca6665c4f/9e779/ax9000-led.webp 3109w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/0f913490ce0cc485368a2bcca6665c4f/0479a/ax9000-led.jpg 250w,/static/0f913490ce0cc485368a2bcca6665c4f/41099/ax9000-led.jpg 500w,/static/0f913490ce0cc485368a2bcca6665c4f/a2510/ax9000-led.jpg 1000w,/static/0f913490ce0cc485368a2bcca6665c4f/c58a3/ax9000-led.jpg 1500w,/static/0f913490ce0cc485368a2bcca6665c4f/3acf0/ax9000-led.jpg 2000w,/static/0f913490ce0cc485368a2bcca6665c4f/cc8bf/ax9000-led.jpg 3109w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/0f913490ce0cc485368a2bcca6665c4f/a2510/ax9000-led.jpg&quot; alt=&quot;ax9000 led&quot; title=&quot;ax9000 led&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;背面是四个 LAN 口和一个 WAN 口，右侧的 LAN 口和 WAN 口可以切换 2.5G&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAYCAwT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABpyMEUXRhD//EABkQAAIDAQAAAAAAAAAAAAAAAAACAxETIv/aAAgBAQABBQJ+3dSrMIzCMxjP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAERITICEP/aAAgBAQAGPwKZrmvcowjKP//EABoQAQACAwEAAAAAAAAAAAAAAAEAERAhMZH/2gAIAQEAAT8h2wKa2+s29MCqvZuOEL//2gAMAwEAAgADAAAAEEz/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EAB4QAQADAAAHAAAAAAAAAAAAAAEAESExQXGBkdHh/9oACAEBAAE/EAEOg1KpfcWMWH6bGxa0xyMS6w28fM+sfceQU//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/baa58c808d1ccddf244e0f9644c55072/1e0be/ax9000-interface.webp 250w,/static/baa58c808d1ccddf244e0f9644c55072/b0a15/ax9000-interface.webp 500w,/static/baa58c808d1ccddf244e0f9644c55072/a5d4d/ax9000-interface.webp 1000w,/static/baa58c808d1ccddf244e0f9644c55072/293e0/ax9000-interface.webp 1500w,/static/baa58c808d1ccddf244e0f9644c55072/b84eb/ax9000-interface.webp 2000w,/static/baa58c808d1ccddf244e0f9644c55072/e353f/ax9000-interface.webp 3654w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/baa58c808d1ccddf244e0f9644c55072/0479a/ax9000-interface.jpg 250w,/static/baa58c808d1ccddf244e0f9644c55072/41099/ax9000-interface.jpg 500w,/static/baa58c808d1ccddf244e0f9644c55072/a2510/ax9000-interface.jpg 1000w,/static/baa58c808d1ccddf244e0f9644c55072/c58a3/ax9000-interface.jpg 1500w,/static/baa58c808d1ccddf244e0f9644c55072/3acf0/ax9000-interface.jpg 2000w,/static/baa58c808d1ccddf244e0f9644c55072/5eabf/ax9000-interface.jpg 3654w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/baa58c808d1ccddf244e0f9644c55072/a2510/ax9000-interface.jpg&quot; alt=&quot;ax9000 interface&quot; title=&quot;ax9000 interface&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;AX9000 比较有槽点的设计是网口和电源线接口不是在同一侧，电源线开机键和 RESET 键放到另一侧，导致接线时有两侧需要连线&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMFAv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFSLeUgF4P/xAAaEAACAwEBAAAAAAAAAAAAAAAAAQIDEyIx/9oACAEBAAEFAn3OcWj0wrMKzCs//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGhAAAgIDAAAAAAAAAAAAAAAAADEBAhARIf/aAAgBAQAGPwLcKvMoQj//xAAcEAACAgIDAAAAAAAAAAAAAAAAARExYZFRcfD/2gAIAQEAAT8hSZioy9jC1sctKku55PVjwemf/9oADAMBAAIAAwAAABCc/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAdEAEAAgICAwAAAAAAAAAAAAABABEhQVGBMWGh/9oACAEBAAE/EK4weEeV2vyGG+nVoFYV00bgZRllc8rHnneWsP0Qn//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/badfaf0a6d5141915a71d50439343239/1e0be/ax9000-switch.webp 250w,/static/badfaf0a6d5141915a71d50439343239/b0a15/ax9000-switch.webp 500w,/static/badfaf0a6d5141915a71d50439343239/a5d4d/ax9000-switch.webp 1000w,/static/badfaf0a6d5141915a71d50439343239/293e0/ax9000-switch.webp 1500w,/static/badfaf0a6d5141915a71d50439343239/b84eb/ax9000-switch.webp 2000w,/static/badfaf0a6d5141915a71d50439343239/b6df8/ax9000-switch.webp 3737w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/badfaf0a6d5141915a71d50439343239/0479a/ax9000-switch.jpg 250w,/static/badfaf0a6d5141915a71d50439343239/41099/ax9000-switch.jpg 500w,/static/badfaf0a6d5141915a71d50439343239/a2510/ax9000-switch.jpg 1000w,/static/badfaf0a6d5141915a71d50439343239/c58a3/ax9000-switch.jpg 1500w,/static/badfaf0a6d5141915a71d50439343239/3acf0/ax9000-switch.jpg 2000w,/static/badfaf0a6d5141915a71d50439343239/d0df8/ax9000-switch.jpg 3737w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/badfaf0a6d5141915a71d50439343239/a2510/ax9000-switch.jpg&quot; alt=&quot;ax9000 switch&quot; title=&quot;ax9000 switch&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;另一侧是 USB3.0 接口和一个 Mesh 一键组网按键&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUCA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHhmuSAvj//xAAbEAABBAMAAAAAAAAAAAAAAAAAAQIDExAUI//aAAgBAQABBQJvRXsxrxoURlEZ/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGxAAAgIDAQAAAAAAAAAAAAAAAAECMhAxQaH/2gAIAQEABj8CcnJLhZY16VKn/8QAHRABAAEDBQAAAAAAAAAAAAAAAQARIXExUYGR8P/aAAgBAQABPyElECwdiGaPiCvFoCs+08FmNhn/2gAMAwEAAgADAAAAEJ8//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAHRABAAICAgMAAAAAAAAAAAAAAQARIWEx8EFRkf/aAAgBAQABPxC2TvU9GF39tCEpbcJXBZV8jN7tuNimTm0vc//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/dcf3de68d356a206c5a115df4708c7f6/1e0be/ax9000-usb3-mesh.webp 250w,/static/dcf3de68d356a206c5a115df4708c7f6/b0a15/ax9000-usb3-mesh.webp 500w,/static/dcf3de68d356a206c5a115df4708c7f6/a5d4d/ax9000-usb3-mesh.webp 1000w,/static/dcf3de68d356a206c5a115df4708c7f6/293e0/ax9000-usb3-mesh.webp 1500w,/static/dcf3de68d356a206c5a115df4708c7f6/b84eb/ax9000-usb3-mesh.webp 2000w,/static/dcf3de68d356a206c5a115df4708c7f6/47370/ax9000-usb3-mesh.webp 3677w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/dcf3de68d356a206c5a115df4708c7f6/0479a/ax9000-usb3-mesh.jpg 250w,/static/dcf3de68d356a206c5a115df4708c7f6/41099/ax9000-usb3-mesh.jpg 500w,/static/dcf3de68d356a206c5a115df4708c7f6/a2510/ax9000-usb3-mesh.jpg 1000w,/static/dcf3de68d356a206c5a115df4708c7f6/c58a3/ax9000-usb3-mesh.jpg 1500w,/static/dcf3de68d356a206c5a115df4708c7f6/3acf0/ax9000-usb3-mesh.jpg 2000w,/static/dcf3de68d356a206c5a115df4708c7f6/09365/ax9000-usb3-mesh.jpg 3677w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/dcf3de68d356a206c5a115df4708c7f6/a2510/ax9000-usb3-mesh.jpg&quot; alt=&quot;ax9000 usb3 mesh&quot; title=&quot;ax9000 usb3 mesh&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;再来看看配件盒，配件盒内的东西不多，就一个电源适配器、一条网线和一张说明书&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHXG7pmHD//xAAZEAACAwEAAAAAAAAAAAAAAAABAgADERL/2gAIAQEAAQUC0BluWwwLrcKBP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABwQAAEEAwEAAAAAAAAAAAAAAAEAAhARIUFRcf/aAAgBAQAGPwIN6jQONwHcWBXkf//EABoQAQEBAQADAAAAAAAAAAAAAAERACFBUYH/2gAIAQEAAT8hFq258xhP5DJXA+vKTLodemec3//aAAwDAQACAAMAAAAQfz//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAbEAEBAQEBAAMAAAAAAAAAAAABEQAhMUFRkf/aAAgBAQABPxCRolxziuKb9gR+v3HQOJdUwA+DcCjiwLNDB4E3/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/cd658d1bdc8c834bacf8412f11e356d3/1e0be/ax9000-extra.webp 250w,/static/cd658d1bdc8c834bacf8412f11e356d3/b0a15/ax9000-extra.webp 500w,/static/cd658d1bdc8c834bacf8412f11e356d3/a5d4d/ax9000-extra.webp 1000w,/static/cd658d1bdc8c834bacf8412f11e356d3/293e0/ax9000-extra.webp 1500w,/static/cd658d1bdc8c834bacf8412f11e356d3/b84eb/ax9000-extra.webp 2000w,/static/cd658d1bdc8c834bacf8412f11e356d3/d421a/ax9000-extra.webp 3308w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/cd658d1bdc8c834bacf8412f11e356d3/0479a/ax9000-extra.jpg 250w,/static/cd658d1bdc8c834bacf8412f11e356d3/41099/ax9000-extra.jpg 500w,/static/cd658d1bdc8c834bacf8412f11e356d3/a2510/ax9000-extra.jpg 1000w,/static/cd658d1bdc8c834bacf8412f11e356d3/c58a3/ax9000-extra.jpg 1500w,/static/cd658d1bdc8c834bacf8412f11e356d3/3acf0/ax9000-extra.jpg 2000w,/static/cd658d1bdc8c834bacf8412f11e356d3/4bdc6/ax9000-extra.jpg 3308w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/cd658d1bdc8c834bacf8412f11e356d3/a2510/ax9000-extra.jpg&quot; alt=&quot;ax9000 extra&quot; title=&quot;ax9000 extra&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;电源适配器的尺寸不算小，输出是 12V 4A&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAUCAwQG/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAWOC5QnRkQwq3NS6wD//xAAdEAACAgEFAAAAAAAAAAAAAAABAwACBBESIzEz/9oACAEBAAEFAnX2LXkG15lnhT7TJ1KkAl0MV3P/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAbEAABBQEBAAAAAAAAAAAAAAABAAIQIXERQf/aAAgBAQAGPwIuQBAuCmbB5abXsu2P/8QAHxAAAgICAQUAAAAAAAAAAAAAAAERIRAxQVFhkbHw/9oACAEBAAE/IXKNoj+GK6LwV3dexwJlUcHA2E8K1aFisQ/YWP/aAAwDAQACAAMAAAAQKzgw/8QAFREBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQMBAT8QI//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABwQAQADAAIDAAAAAAAAAAAAAAEAESExcVGx0f/aAAgBAQABPxAARoAeNaiVgjDiU/kgHlelEOhMYQlQ0NWmbEKdq7RZFZAoqtrA4n//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4183df8fa01aaa8afa4ea5a517e18acd/1e0be/ax9000-adapter.webp 250w,/static/4183df8fa01aaa8afa4ea5a517e18acd/b0a15/ax9000-adapter.webp 500w,/static/4183df8fa01aaa8afa4ea5a517e18acd/a5d4d/ax9000-adapter.webp 1000w,/static/4183df8fa01aaa8afa4ea5a517e18acd/293e0/ax9000-adapter.webp 1500w,/static/4183df8fa01aaa8afa4ea5a517e18acd/b84eb/ax9000-adapter.webp 2000w,/static/4183df8fa01aaa8afa4ea5a517e18acd/c7ef5/ax9000-adapter.webp 2802w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4183df8fa01aaa8afa4ea5a517e18acd/0479a/ax9000-adapter.jpg 250w,/static/4183df8fa01aaa8afa4ea5a517e18acd/41099/ax9000-adapter.jpg 500w,/static/4183df8fa01aaa8afa4ea5a517e18acd/a2510/ax9000-adapter.jpg 1000w,/static/4183df8fa01aaa8afa4ea5a517e18acd/c58a3/ax9000-adapter.jpg 1500w,/static/4183df8fa01aaa8afa4ea5a517e18acd/3acf0/ax9000-adapter.jpg 2000w,/static/4183df8fa01aaa8afa4ea5a517e18acd/8b1bd/ax9000-adapter.jpg 2802w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4183df8fa01aaa8afa4ea5a517e18acd/a2510/ax9000-adapter.jpg&quot; alt=&quot;ax9000 adapter&quot; title=&quot;ax9000 adapter&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;开箱完毕，接下来开始配置路由器。&lt;/p&gt;&lt;h2 id=&quot;路由器设置&quot;&gt;路由器设置&lt;/h2&gt;&lt;p&gt;现在这些互联网公司出品的路由器设置起来都非常傻瓜化了，简单几步就能上网。接上电源线和网线后开机，打开 Wi-Fi 会看到一个没有密码的无线网络，我这里是 xiaomi-router-ra70_xxx，具体的 Wi-Fi 名可以在底部的铭牌中查到。&lt;/p&gt;&lt;div class=&quot;mobile-screenshot&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFmUlEQVRIx6VV2W7bRhSlZUeSm1ibI4nLDPd1uC8iTXERJXqJJCdxkvbFLQo06L8F/ZL0s1pqFEWNU6BABwfCaDiH995zFxKqqs1myd2rdZblhmGapoWBkImQaRhI140DLMsKw6ha1q/fvrPdgFAVJb26enj7ZlktkGHYtm1ZDQwDqaqmKKqm6Qey47hxnNQ3d7/8+pvrzwjddBXDFlWkIsdyfMxEyHQcNwwj3w9M08J8w0CGgTTdkBSd5WUN2YQSLtX0Xi1+UosP6vzBtBzLsnTdmM+zx8efHx8fy3KhKCqOAiHTsmzTdk3bRZZLSJIkS3LgB0mcBEE0myVRNFMUVZJkQZAEQRJFubkiyaIo+X6AkKkZpuDkkmYRDAMZBpIkPZ1SFElTFIP3NA0AYBmmAQB7kCRDUQxNQ8CKAEACn85mSZ6XQdAEGYZxkqQIWTQNINzTIOQoinG9ACFL1RBp5EDQ92TPC5IktSwnimZxfBVFM00zsPFjsu+HCJmKajRkXtuTKYpp3P7iM0nSx8wDH4dDMxBwEgAssQsMlmW1Xm/SdF5Vq9vbV67rURQDIXfMJEk624Vm2f7EuQOStbfM86IgSDwv8ryoKBrHCQwDv7EMAIvPG8EEHUB+b1mW1UYJVec4gabBscIHMAxUFA0hU9dNSvYBJ+/JSXKV52WazjXN+K5N7HaSpGEYOW4wtq6BaO7dnk7p8Xg6mZBYKgi5p2BZfjqlcDlAACHOM02DKIqLYhFFcZYVaZodS3WcqiiKPdc3LW9i3361rGmGYZi4JXUd7cL+1nmaBqZpi6LEsgKjeICV9mSW5SHkGAayLC/LqqYZoih/N3hJUiRZZTh1rzYAbJrO6/qmqpZ5Xq7X26paheHsONX7PGdlklx5/mzsrL/mmWUFfINl+aaGvrj9jWAUhRsDQFaEuMIAYIt8XhbF9v51WVZFsbi5uZVlFUL+G8Ga8jJtTTdJswKC0ZApml2m0v3mdlHV6/Xm/v51Xd+sVnUcX5EkfSDTNHAcT9MMSdYo/Qrw6t4yBBxNw13pAQwIOZ4XOU6QJIXjBJbld/1MsyzP8yLDKQBwe3KWF+v1Ns/LLMvX622W5WVZVdVquazr+ibLiqpaybLatLTrRXH60j5qjEMmsYd4vOBOoCiAzWLZcNtCXgEHwRCyXNe3LAdvTNO2LMdxPMMwfT/0/TAIIllWSZI2DNOyvakaf405iuKyrIIgCoKoLCvfD+I4mc+z2SxeLJZVtcyy3HV9imJ0HTVktNirjR0mSZr8MgBxPg9/MbCKNA0oigEMAAwkcCRVtVyvt0EQ4WJ4Ciz44Snc7YnxeDIeTyiK3mWImUym+OS/gPhf6/nzF+12p93udLvn7Xan0+l2u+edTrfd7nY65/jR+fkPz5+/eApCEKTFYlkUizi+qqplmmZlucAVnqbZalUvl7XjeAwDcdg7cHhaEjQNXNf3vEBVNc/zXdfbDQaEUPNxtG3HdT1JUvBUPwCXMNFqtY6jODk5eRrayclJ68s6Ozt79uwZ3hNnZ2enp6et1gGt9pP17GhhY6enzSsInhccx/P90HFc3w+jKMaVgMv7GBByo9HL9+9//PTpjyBorhGyrOZ5WdfXSZIWxaIoyiNh/gGeF0ej8cePv3/+/Gea5o1g7XZ753YL/7Zarc6/r263e3p6ShDELqmd/1ckTXPuGnjXzBCPYdzY+Lt7DIpiGKaRg6JokqQISVLW601dX8/nxe3tq6pavXnzcH19u9lsfT88rg0IOU0z4jiN41RVdZ6XiF5vcHHRO0L/4qI3GAx7vf5gMBwOR4PBaDgc4U2/P7y46Pd6g8Fg2O8PmjyPx5OXL8ej0eV0Ou33B67rvn//4e7ubru93263m83m4eHdfD6/vLy8uOhdXl5OJtPhcPR3wv8CEw9NlOjcmE4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/d51cb8b69788f74bad4106a51e473d57/1e0be/img_3793.webp 250w,/static/d51cb8b69788f74bad4106a51e473d57/b0a15/img_3793.webp 500w,/static/d51cb8b69788f74bad4106a51e473d57/a5d4d/img_3793.webp 1000w,/static/d51cb8b69788f74bad4106a51e473d57/5543b/img_3793.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/d51cb8b69788f74bad4106a51e473d57/63868/img_3793.png 250w,/static/d51cb8b69788f74bad4106a51e473d57/0b533/img_3793.png 500w,/static/d51cb8b69788f74bad4106a51e473d57/00d43/img_3793.png 1000w,/static/d51cb8b69788f74bad4106a51e473d57/78797/img_3793.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/d51cb8b69788f74bad4106a51e473d57/00d43/img_3793.png&quot; alt=&quot;img 3793&quot; title=&quot;img 3793&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;连接后会弹出一个 portal 认证网页，根据步骤设置完就能上网了。&lt;/p&gt;&lt;div style=&quot;display:flex;align-items:flex-end;gap:8px&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD/ElEQVRIx+2VT0/jRhjG/RVWXcjM+874vz0ej+3gOCGJkwC7WRIgsMACRS0FqRz6AXoFWraHVpV66ifprefe+oUWlh5KZQdCKFS0PW2lSj9ZmT+P887jV89oAExK1en04rgKwBjT/wpEbpq2EDKOq8vLA8tyNEoxipN+f7lWqwMwzo3xVgA2YSJ2HC+Oq1nW2N3dcxxX49wgBJ4/nyUEGNMpRUROKcZxdX6+laa1KEoIAQBGKaMUKcVKhT579hEi18Zv1XVzUn+aZs1mu9PpdbsLvd5it7uwtPSy1cpbrTyKkrI6U9dNxnTt7lSoG4blOL5h2I7jGYYNwDk3LMv2fGFZjucJ07AQdQZYwHSNc900LURmmlZ5VGSME0KlDIfDlY2N12GoKhWCyAEQkYHqkfo2yTbRiTTGbc5t9gDdcAOZBEGs6+70PBoCrQgtxXRXo0w9CsFwhogZKggL7y2hpCgoBpSFGi3W/iUfipirgvEhb37czj8pJhAQlIVbIAiI0iFJmSQYlA7Jwq1HxQQD5s6jkxEQXOQ86BIMwExBT5iX87DPgkUw5qb12qSwSsV1m+tevkUxkMvH/tIhOnUzXeVB125+bLcPeLDARI/eVHRfTKhv1/pea81pDEVvR/R23fZm0D+y0qE9v+n1DpifG8kyof7EAm36wLpocK9uyDb3G7po6jLXZc68BnPq6NQJFcxtkrI9HhhW/Lkwo9xrvhL5arCwblUXTJX77ZHbGLrNVTsbEHpX8yPfmTmpEbZMlZuqrfsN7mZG2DZUboQ59+efahKUhIobICAgi89WDikEf6PDxq3C1U2Fd8MPtbf/F/+3xMD/mbiIYoKyAkEFgtkyjCrFUBapVGTQ+HkbRlNiSfUE7CY3YsutOV7NE3VuxrYz53gpNxJqpGDUijyy6mDWqJ7ciQl1WThwN36sN/sro/35zujF6me11mhx+OnLlU9kNoJwxMQSC1d4vMnCNXQ7k2zVCPjoL1iLXypVz7IO4UnF6YLbo+IV9ZbQXwQzJcQi1CHEJtSh4FLwxvGsFRcPj5haQ7WOap3HGzwasWgd1YiGo0owArXO4tdTbLBkkxopBaFR8L2jn6O31+r0Up1dqbP36uwqPL2aO7/Kv73q//Bb9s1VePq+nC85vYjOr8UXv5aGge8d/BSdX6uTd4W+JDy9SL666H53+eL7y+zthTy5nCypk3fR17/7x79QJm/KRjlEOZjAwuJJgwERA7gd3hGuFJ6j0MZXbuHHLRRcKVPPSwIxF8o5KVMhqgDuvT3lraTdXmvxFNFDCIvu7Snj7dH2VI/yRG8DVzPErzf7e/vHW28Ot3eOtneOtt4c7u1/3u6uzlLxp1f8AQAYj4tORcXZAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/5e463cf399b9d7895b42933002aae58b/1e0be/img_3794.webp 250w,/static/5e463cf399b9d7895b42933002aae58b/b0a15/img_3794.webp 500w,/static/5e463cf399b9d7895b42933002aae58b/a5d4d/img_3794.webp 1000w,/static/5e463cf399b9d7895b42933002aae58b/5543b/img_3794.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/5e463cf399b9d7895b42933002aae58b/63868/img_3794.png 250w,/static/5e463cf399b9d7895b42933002aae58b/0b533/img_3794.png 500w,/static/5e463cf399b9d7895b42933002aae58b/00d43/img_3794.png 1000w,/static/5e463cf399b9d7895b42933002aae58b/78797/img_3794.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/5e463cf399b9d7895b42933002aae58b/00d43/img_3794.png&quot; alt=&quot;IMG_3794&quot; title=&quot;IMG_3794&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFdUlEQVRIx42WyXLbyBnH8QrOiCR6ww40Gt2NhViIlaQoUZQsyzOyFY8qB3uWWypVzjKVnD2VcuWSJ8gb5DXyCjlO6TaPMcUUAYWWOfIkVb8CiO7+41v66w9UIMSM8abppIwgxBhrnwIhYhgWpUzKaL0+M01bAQAJEZ6crKfTDEJMiD4shRDv2Ytt25UyStP85ubXtu0ohOiqCo+OxqoKMdYAQAgRAJCUUVGUcTwVIlRVCCEGAAOAAECTCXjy5DOEiDK8VdOMvf9Jks5mVdN0bTvvukXbzpfLVVnWZVkLEfbeGZpmYKwpH6JCmq6btu3pumXbrq5bEBJCdNO0XI+apu261NBNhDQM0Q6sKYRohmEihA3D7ENFGBNVBYwFm8351dXzIOCTiYoQgRAhhCHv1PRaTT9HtlQwsR5F1x3GIsZCTXcejiOdIlMgk2PNUQDmjzIG/pMj+1cj50j1PppCDCB/Bw4UrEuPFRO4exhQcYA0kearFzdvLp/fXl59SYxQRWy/YI8CCce6hIQPDKOQcI8VYdzJsBVhizTxc+VODJA/gXSk0pHqHU3cvYUx8EeqN/CosrdsNwatw7hJsuOy2RBD7vUH7jxm2aoMr5JxEybzursYwhsEvyC7FyPCEAlGqjcG9LOxA0nQR8ggCSDZrUCawLo8gBgSaUIZ5uruoqjWT599GSadQ7O6u0iL1TRfLVfPbS99uBf7iLB+LxYOzUwnocHMcqeaGQWy9ljh0txjhWZGkHCkfQTWdyqlv8nePU4MiXUBCR9yNmj6qzhgcF7pXyO75bO6PX/+xW+SbIk0LqNGxm02W8XpgvEySefEkBPoq4iNoW/aieWmkPCd2316d4kxnWR47FMS6makW5FmhroVYV084jYknMuKy9qlmWHHlBWBrDQz7LPN9/Sajzy/r+2yPS/qDY87y8+j7HhWn5lO8mgxH+4zJpxqIjZEasnECqUh1X5j/md59eWJfAe7nsY9wh3MbByo8ENVj1TvF1xQoDfX29/G2UIki6xa5/VZVpw03UW3uJwvr7rFpWl/MgQF2jM9eUlZTlnBZR2IigYzGbUiakXcyqjVzOhhFA8DUZC3tBdvq/q0qNZVs0nz47o9T9Jl3V003UU7f8rDhonydPOiWz5brK665TMZt2NAd/sMrZIkr7gsedjQYOaxgoe1jFuHZlzWImpoULp+IcKGh42MO4fme+MKpiv7+Ls0mxfVWVGt89lJWW+65aXPZ0W1Xq6uymaTzk6qdlO3F8cnn6fFajB730lU4I6BP4b+pKfvIXRXicAfA9pfhx+7hvPwhCn97aCBBftm0BMcVNuBOPhUA/40ezHh9634/weLIWYGgAvNHFrFAaqxA5rFz6cAdAHyFQBd+/ofwXc/src/sN/f7eF/uJv++S77y534453/9sM4e/tD8Kcfndt/DmLP+/Zf8v1WvPtJfL8d4N9vw79ui79tF3/fTt9v+bvtfkq8+0m+3/q/+/fgNoV2qeVfafmbA3D+Fc4eGdeKr6HTAkiV+y3B/gEq9I7G1mhiT4CLCDtcMBQJJAI7FdQTZE4HsJVOSBROT07PbxenL6ezzYSE2EqRMYUDeoLdGhKhAMKxXQAtnmDZE46RmGBp0TLOT5N8TXl7BPgICZWEUJNQE1APdxLCFYAZwNxwC5Eci3jJwnk623hB47CKitb2S5kch9NVNtt4vEPeggTr3iy/L5IJ9C0nmVWn02wRxl1Zr5koA1Fl+XE8nVfN2TRfdvOngayhu8T8KbRmAFKA+X15qoiNVPrf6vf6kWDfqCd9Y9odCUQB9Ia/BQ9re/g+iDGg+ez01e031y9ev7h5c33z+vrl61e33zbdxRgMSf5wMP4DtO6qxwKaidAAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/17e7b6cb2dc8edc49813824fb625a26f/1e0be/img_3795.webp 250w,/static/17e7b6cb2dc8edc49813824fb625a26f/b0a15/img_3795.webp 500w,/static/17e7b6cb2dc8edc49813824fb625a26f/a5d4d/img_3795.webp 1000w,/static/17e7b6cb2dc8edc49813824fb625a26f/5543b/img_3795.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/17e7b6cb2dc8edc49813824fb625a26f/63868/img_3795.png 250w,/static/17e7b6cb2dc8edc49813824fb625a26f/0b533/img_3795.png 500w,/static/17e7b6cb2dc8edc49813824fb625a26f/00d43/img_3795.png 1000w,/static/17e7b6cb2dc8edc49813824fb625a26f/78797/img_3795.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/17e7b6cb2dc8edc49813824fb625a26f/00d43/img_3795.png&quot; alt=&quot;IMG_3795&quot; title=&quot;IMG_3795&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFVklEQVRIx52Ua08TWRjH5+VuxEVdtTNzzsx0KGVm2g61lNLSG5fSAq4sGuoX0ILXBWLki+xLs1/Add0XGw3hFbtcIhQqWdKE0nIT0BKKDb1Jb9OzaUFE5SL7zy8n58x5/nPO8zyTwUgSCoLaYrGJopYkIYT0UQBAyeUVHCeIotbpdLGsAiMIIIrVDodTp9MfNJMk3GffrFAoRVGr1xvc7psKRSVGUQyOkxcvXsZxEkKaIAAAVOmN2ro6k06n14jVOE6SJCQISBCAIIBMRpw//yMAFLb7VpqW799fp9MbjfUWi81qtdtsDVarvbGxyWQym0xmjaaaJCFFyWlaDiGNfcoK0AzDKhRVDFOhUCgZpoIkKYpiWLZCWcWxrEKp5OQMCwANSVAE0hhF0XI5CwCUy9lSqgBCCscJQVC1trZ1dPysUqllMhwAiiQBAJBU23D9DVzfCRQaDFIVFFUBv4JmKnmhmudFmq48+BwwHGA1gFVDuhIjoPpQcKC6hHOXCA6Hqs+2gEAAjgA8AVUYUdw7HJJSk5T6mIDjzASpLPK/zGqgtFLaLoLSEFA4hRkHAk4oGWsf1HbJcEUp2yPMu7ntZwhoDSXXAlpDFgvDQUYszg/E7IPJSP4ywV0m+BLcZYLjBKOr3d3o6NRordqahuaWTnvTtQplzUVZlYzkcSAUu4BzMpLHagxNtsZr+jqHwegw1jureAOnMmp1dpVoVokWg7HFYGrR1TZqdXaz1VVT21TF19kbf7LY2w2mFqyhqaO13d3k6HS1uQ1Gh9nW1uy8XmdqMZqdtUZHXb3TbG1raOpwtXXVNbitDdfqza7WdrfF3m62tmG82qQSzYK6XlNtoVktrzZVX7HJFVeUvMHZ1mWsd1VytZzKKGqtLG8RNBa1aObVJlZZU8nVYgc/A8iIpaUAaQ2gNdU6u5Iz7Fa0VEgVSe19PKAUgJVfYEvIyy/IfyiN+5MzP1Bl5+iPS/ZzigHYLU+vp7vX09Pn6em/3d3n6enr7unv7un3dJcmd/r3lj19tzy9X4AhhPIISYUC+koFSSqUhI4QVsjn1qIoEFrzTU0Hg8G5wNzY+PjU1FQ0Gl1YWPB6vSMjI+Pj436/P5vN5XL5gxRPzkjpWC6akLbzJRXQkUd9eTJCKJ7dXk7Nv8uu7OzsJJPJnZ2dg1ctfNTh5uB8cPDl4MjfI16vd2Ji4vnz57Ozs7u2k0/OZDJbW5Fo9H0sFovHE4lEIpPJfOu1M5lMOp2Ox+PJZBKdRkXzxsbGpNfr8/kmJyfHxsYWFxdPYU4mEu/erofD4fWSotFo4Ru0Z85L6EMOSQeqI33UyeZEGi1GUTKdTyWT2Wz2dDkH5udfvBwcHR3z+XyvXr169uyP1z7f0NBQKBQ6vmFFcyqZWltdDYfDkUhka2srEonEYrFIJBKPx08253K5bDaXSqV20ulTt2pzc3Pm9euZmRmfz+f1eleWlpAkFaR8IZ9HknSCObq9HQwtLC0vz4dCgWAwvJ0sIPSJ46uNChKS8kUKEirkUcgnzY5KbxeluUnJP57/kMwfZ05to3AIbSyg8CJ6/xb9NoB+vYtGnqInj9GTR7ntzUwunzushUVzKDA39OKvidF//p2emvZO/vn709lp7/DwsH/GNzw0ODo66vf7j8w5FosFQwuhhcU3a2ura+ura+sbm5HllTcbm5GllTeBQGB1dfXQtLEv/lina9X9hwN37j263d17y/PL7e6+u/cf33vw+P7DgXsPB4rjg73loWBl5XRZOX32HFPkPPPdGZITjK1XbzY7rztcNxyuG83O661X3Rqt9fsycPYcsxu/y3/96JLLGgd/TgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/ebd84b3e5a80368f9e5b3e4ee99864f5/1e0be/img_3796.webp 250w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/b0a15/img_3796.webp 500w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/a5d4d/img_3796.webp 1000w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/5543b/img_3796.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/ebd84b3e5a80368f9e5b3e4ee99864f5/63868/img_3796.png 250w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/0b533/img_3796.png 500w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/00d43/img_3796.png 1000w,/static/ebd84b3e5a80368f9e5b3e4ee99864f5/78797/img_3796.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/ebd84b3e5a80368f9e5b3e4ee99864f5/00d43/img_3796.png&quot; alt=&quot;IMG_3796&quot; title=&quot;IMG_3796&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;之后你还可以把路由器添加到米家 APP 中，注意这里可能需要更新到最新版本的米家 APP，打开米家会自动发现路由器并提示你添加。&lt;/p&gt;&lt;div class=&quot;mobile-screenshot&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAADs0lEQVRIx52TW2/iRhSA/ZMqVaoq9aFKNq2I4rvxjMceRHcDGKTVJtvn/Jk85y8EKeWhUdWUBPoSJQrYYKNIwAs3hYudynPACYFsSD/xADPzzTlzzoHTdd1m7O/vI4R0XUcIJZNJTdPUZRRF0XWdUprJZA4PDxFCHELoM8O27TdljHE6nc7lckdHRxhjTtd1WZYlSYKLY1ZlVVEkSZJEkef53d1dRVG4ZDIpSZIgCKqqfluWJGlvb09aoIIsCALP87IsK4oiM1RVXZVlWRZFEQ5EsqrOI0PasA3fNYb6TThN05KvoL5FFDl64kKIH7xRZOgNNGl+wQbaioyQvhz5PfIz1g7J+jdLksTzPFQfAFNhyMtEK9BnqHYikdja2kokEtBAaBWbJTHunyiKgiBAnwVGNGG6rsP0wHjGNV8UjjVSS8b11xcv0jSNwxgTQgzDIIRYC0zTJIRghsEghJjLRP8q2EYIEULogtg3DAOyME2TLhP9q0DW9SUZfJBh1CDB51cYhhHJ0NgXMqXUNE2MsaIo8cBjjJdkyBkhtJoYyBAZqoUxtixrSSYMa4W4kM+JamVZpmU9yWvr+XR6GYMQzJRIFkUpkUgoivIi87jmkNd8kVKNEAVH0SJ5j+e3t7cFQViV4+SfbyFiJolJiMlBu1VVRQhTi67KrGZRqw3DeFFOzrKs6A0ImQSnLCNlmSmaAsCH+YVSU7rYS6Usy+IopVmGnf1UyH4s5DKFfL5QKOTzedu2s9lsJpOJdu2cbUfrQD6fp5Ryx8fHlatKufzPZbk8/zCqjEqlUq1WL5cpl8tXV1cnJyfcbDZ7XEe32/V9/57x+ApcGIbBOjzPc13XYQSvEMmP/xdudQmuOzs7GwwGvV6vWCzGi2/LwNevv5fL5fPzP798OXhHZCCdTu/88mHn1x1BkKbT6drgr6Z9cHjw3fc//PjTz799/BQEIbBp5OFw2PRajabf7/ff8eZer+f7vuM49/f37Xa70+m4rttutzeS+/1+u9126vW7u5rneZ1Ou9Vqdbvd9XIYhmPGZDKBn7PZLM5z/tYwDKeTYDqZsJNBEMzl0WjkeV6r1XJd9+Li4ubmBr73+/3RaNRsNFzPu6w7Vcf913Ebnu81m4PBYC4Ph8NGo+H7fq1WK5VK19fXL+Vm8+9a/fyu9tddrd5sNhsNqGIkB0HwsGA2m03mqUW5xS8KxuPZeDx9eBizY09pr+0zXAqHwk1aBSccxzk9PS2VSn8wSqVSsVi8vb1d7fZ/Yt7HjeKNfjUAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/f969b586752a0b1a097b205ca909d564/1e0be/img_3797.webp 250w,/static/f969b586752a0b1a097b205ca909d564/b0a15/img_3797.webp 500w,/static/f969b586752a0b1a097b205ca909d564/a5d4d/img_3797.webp 1000w,/static/f969b586752a0b1a097b205ca909d564/5543b/img_3797.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/f969b586752a0b1a097b205ca909d564/63868/img_3797.png 250w,/static/f969b586752a0b1a097b205ca909d564/0b533/img_3797.png 500w,/static/f969b586752a0b1a097b205ca909d564/00d43/img_3797.png 1000w,/static/f969b586752a0b1a097b205ca909d564/78797/img_3797.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/f969b586752a0b1a097b205ca909d564/00d43/img_3797.png&quot; alt=&quot;IMG_3797&quot; title=&quot;IMG_3797&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;加入米家后，就可以远程设置路由器了&lt;/p&gt;&lt;div class=&quot;mobile-screenshot&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGj0lEQVRIx52Ue1BU1x3Hz2SXfXZsYg0Zp/mj+aNT2+nLNComCguEN0jAF7vswhJAY5NME0VE0EVFLO0kTU0dMolOqZhqE5OJWp1EQagsUYgNhUWcjS/Ka4V93Hv33t29z3NO595F2MW2Y/ub7+yc3XM/39/j7LlAbc5dUr1p2ZtVidWb1ZuyNcVZ6tw0dUaKrEzTvDJMjz2fpHluxRPJKU9nZf9002bdqiSgMucu3WpeXvfqd7eVqiy5WluBpjRfsyFn1iKGV2WajOmmxNS07+XmJldWGZJWA01pvqokB2zMVJXkyFhUVtkioThLnWWKtVBlmsDqVeDHPwHLfvjY8meBsaJo6SsWg3WdxpI3D89ZlOQuLCE7VWta83RWpi5pFTDsMC+qKTW8vklbXSTXbM6Lc7EWaCz5CfnpsXxCVqp27fPqFb8A+hqzrsasr7XI2l6i27Z+1mKelz/j+CyT6sVk1UoFjpNioa0ukvNbYnhLfoJc/3zxquTVQL/DLOshC92rG+L7z08oyZPnN5s8VZW2Bhh22/S7SmVggUWtWffaxgXzS1ifPZt8FnbYZe0tN+y26nfGW+w0y/ktcUcgN5+ZIpedPgc77IZG2UJfWxrPW7RbimOaL0jYrBxefroqMxnITKN93sJhN+yyxvE7zFr7SxrrOo1NUVmh+qUMdV6aDOvry/R7yo2NdqNDlsFhNzZWGOqsscnl5mNgOXlBujonBTze/ua3frtFX2/T7y2PSre3XNdQpt9pMTyQvsasfblIU1aoKVdkW6cuylDnpoDEnv1PdjU++cfti/dXPXGg6tv7q5Y0bU1s3qZvsGl2WbSK9PU27WsbNeXrNPZCWRWFms05CXmpIPHinsVfNDz35TvZf/396lbHyta9accOJrU6ljZv+05j5ZLGyiWOSt1uq36HRVdVrKtWtKVYV16oLc4AiRcanjrfsKG/rfLrU1svtK0/8buSU++WfdxaeOKttPcPFB9/23bqiLGh7PE9FYvesCz6lXlWr5cYywrAU5/VL/607gfnDy6/9JuVZ1p+3lq/4qhj5dHGn71X/6M/1D7z9hvLDtcY9tmN+yuMdVZjTalx56wW/XIj+P7ZphcvH0nteNfUcTjl83fWnjiU8mHLmvbmF9qbk9sPrT3e/MKfDppO/Dql/VDysSbTBwdMHzSlHm1KPXbwmX2vgC19H2GEIUIilEQoIYwkBBFG+EEgjAUIIULRNcKYk0SM8fbz7aD263MY4xs3b7rd7pGREdfwMMbYMz1z687oP8cnCZKamJgUeN7r898bHfP7CY9n2uv3Y4wP9JwBdQMXMMZnzp2reLnCVm7788mTGOOrXw2cPH22o9t5fcDlvj0qYdzT/49PLlzqH3QN3XSLEGKMWwY7wb7hDoyxs7c3IzM7Iyv78uVOjDHLsqEQEw6H2XAoEIFuAk6FsU/iboS9PjGClBYO3/oSHHJfwRiLEBIURZBUdAMhBBGKWWMJIglCQZLgg/6P3OkDb93uxRhDBJVZYGVrflpROHaBkDxRjPH7o9fBe3f7JYyOz7j+4h0RoIQUmmU5juM5XuAFAT8U0czHxwbA6XHX30P3WyautUxec9HTzivXeq5dv3zl6uedV/7W23e1fyBaF8JoTiKUMMafTN4AZydGIEYfekc+9bshRkiUoChhiEReEHlREqT/lPmi5xY4eW/ARXi+obxuyjtMTg9T0y7y/lBgykXedxGeIcIzGJh6WEMBz+nRQdA9eXs6Qk/SxARNjBG+McI3E2G8bMjLMl6W8XEhZR2a+8XLMjMs4+dCTs898A3hjTDMV3193Z2dXZc6Or64GGaYYICIMAxDBQm/nyYpKkDQJLVg/rcJL7gb8EEIlSeDTCgUpIOiKAqiKEqSKIq8IAiiEP06NzDlXPEY6QeTJBE1W3C8/yWiz90PUsBHUZIkkUrwPP/osD9Ig0AwCCEkCJIgSFEUHx0maQZQQUYQhABBkCQJlevyiBGkQzIMIfJ6vT6f73+CaToESIrG/1fMwki+DQsDxcS/3Q0GlZ4fvoA0Tff29g4NDQ4oQVFU/N1UMjMh4A9QHM+zHMeyD8Rx4QhLMyEmFGaYEE0zLMvxgsjxgiKe43ieFwgyCHw+IhLhBEESRShKUH5pSEgUIcty4XAkHGHDEVZxUV5KiuStCOsPkCBIh0RRnJmZmZqaGh8fn5gY7+7uamtr6+zsdDqdPT09Tqezq6vr7t07c39EjuOiZf8L5016BUe6nkQAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/d9348100946bb8be278803920794dcbc/1e0be/img_3801.webp 250w,/static/d9348100946bb8be278803920794dcbc/b0a15/img_3801.webp 500w,/static/d9348100946bb8be278803920794dcbc/a5d4d/img_3801.webp 1000w,/static/d9348100946bb8be278803920794dcbc/5543b/img_3801.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/d9348100946bb8be278803920794dcbc/63868/img_3801.png 250w,/static/d9348100946bb8be278803920794dcbc/0b533/img_3801.png 500w,/static/d9348100946bb8be278803920794dcbc/00d43/img_3801.png 1000w,/static/d9348100946bb8be278803920794dcbc/78797/img_3801.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/d9348100946bb8be278803920794dcbc/00d43/img_3801.png&quot; alt=&quot;IMG_3801&quot; title=&quot;IMG_3801&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;米家 APP 中的设置很全面，已经可以代替网页管理后台了&lt;/p&gt;&lt;div class=&quot;mobile-screenshot&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHiklEQVRIx4VVa2xUxxWe8IgVk6SKVNqmomolfvQ3Uv83Rk0azMM4NDU2xpgWpwSIS1QBapWqKWqrKi2CYGxDazd+YB4x0JhH2F1jG2Njx9her+++vC+v9+l979372L17586cau4aN03T5uj7MTt7zpzRN9/5LlpXW/n1pprvv3toY1PNurrKZ/ftKKGshPqdZfU7Szvr67aXN1RtbKr53rEDW04dff7AbrS2tvJbv6jdcuroy4fr1tVWlj3NW8W6usr1ddtLmy80Vn/7cN3m5oMVp0+90FiNnt23Y23tNvTma2trt6102LejfH/Vc/t3ldXvfG7/rq81vlHeULVav2bvtjU1rz+z50fr67ajDQ1V3zlS/2Jjdfn+qvL9uzY0VJXV73z5cN2rf/zND98/8crvT1acPrnpSH1Z/c4NDVXlOl5srN7cfPD5A9VobV0lqnkN7dmK3qhgqHoFVVc8U731G001m47Uf/OtvS/9bM+a6q1sfxW7K1B1xdqf/hh9972m4/2dp25fPvFJz4mB3pP93ce72pu72t7uaHm7o+VIx4WjnReaP2prvtTSfPF8Ce9cPP/Liy2bf7IbNV5rgyJ225yxUDQaCLpsdowx/N/AmgYAx8+eQQf6WgqSPDc34/U4HE7b9OysqqqlJEIpoRSAgeprqv/EGjv92IVzqP7KBQCIp+nIFCTSrKagkbux5GSGLx3hdpFHo6RQYOtYHq77qCPDOh9tOYvqr7cBwMAD7e4IGXjAdh+ns9fDsY6lcEItkiLc6McDA9hsJgBw2U2aHpFznN55tXgxRO8Mgz/Cjuex1h9LPsjkqN7ZboexMcgJbO0T4UMnTKf0zq3nUEN/OwDMz5s5zsrNmzHWYtGIdX5uZmoyL8t8jv9samJ6+onf78NYs1nmOAYzALzT/iGqv9oKAOlMRhQy2WyWUiIX1KxYiKcFFWsaxrlMms9mi3mZUJpOp/NCNpvNsGtfPI8OjvcAQFGlhnEoFtlNaSFFRo9Sy5kSYfcj0L4Ay/mVd7rqkoZDMgAcaT+Pfu7oB4BIAu/9lRKNMyZwcFjp3FS4+gNQc6IGp2e1P1vIwBIjbDggb2x1/82SXik+ZLkOAKJcNNsVSWYvTDW1aPuIhodYOtDZFNz0U0lll8oq5M6idNvL2DvW2YoOma8BoXaX0zw3teB2yXl5fGJiaGzy08GRGfNsLB73uJw2bs7usCtYjUQjTjvn9/uYwnovoWMz/SUxraovuxyXkkmXxcKn2PUooVCSWSkoYMKe6te3etHrQ+3GyIIh7GCIOO4vWk0Bx2DAMRh0mgIO46LN5LcbGWwGr9XgtRp9VoOXG/Y7q7rPoFcH2/r8M9fD89dClquBuSuu6R77ZLdtots20aNjdd1tnejmxru58S5uvM82sf3jc+i3nLHIC5MPHy1YOPvsvNfuxOpXTRVhVH5geYDe44yqogSDS8FIJJWKJ1JJDWulAdII+TzwUyj6VH1gH0Hv24cAwCbQLh9wPKMlo4pXY0ZjepL+m6X/CI2yzufcj9GfFkYBoNul9bi1LhejcVpwdkYHOiKfZLGgs0u/tLjVO4n+6hkHgJBM/7lEwxLLKxI8yc/bJR/Ayht9AVgvbrM/QhcXp4DQUMDvc9rnZ2c0TYtFl5e8i16nW8jlQDeRL+3caR9Hl3xPJFWJCXxM4JdzWb6YzypyOi/GRT5bkEVcFFTlC8gWC0VK/m4bR2edY8aY52E6MJz0j6SWhlN+07KHIeY1xTzGZfd/w7TsGYx7/zJjQkPLHqwUI6FwKpFKxhLL4Yimm+P/DEoLkgQAJi+HzOloMpE0mQyzs48nP5sYHR0tKMpTFX9e0SUwAlJZnqh40u9GtkSUOaYCHg8Uiyup0wlYFFbWsRRwC0+PUQqUe0J5NjBmvwd5UwkAGHqg3rypmgYxAJ1YJn8wk9/NkJxKsQp9t2nXTTJrZQxrD+9rN/6h3b/BjDHgR+F0umSRBgNw1hWL7FmEPj8UCVACg4/h1iAsBlkx5abh7hUy9RAAPMEASvA8JSQcDjkc0Wg0QggR+QznC/uCYVVhTu/1BcYnrLKc060Oh6wWic/qbh1CaT5HCXF7PBOTY95FpqpYPB72L0aCgbz+mQiGgl6fW5JknRoluBzjdRNfCoVRltcFTEhRkqk+a18ZJc2FwhGU0YuDGr6jKZdjMSufA4xpex81PioRHC8Qr7RyaECk3S5iTZeKoyitF9/LC+9mIrdE5uaa2S5t2aG8eYwU2NO1e9Q9vblMgs1wj5v2eKBjgRWHw9GVawuU3FEEUVc8VbHa2ksGBvXOdCxJO8eUdJb9FZCg1wPWDPsnEIogQZTdHveC3Z4MhmzzXDAUyoniQjjkCPgxxoRQv8sRXVrAuEgItXMWl8NqnTMripLJ8IjPiaqqxuLxoYcj4QgTNlZVKZeTBKFEzILbMztnkXQ9S7JcKCiiJFNKJSmP0hmeffUJKRQUQph5aZpG9MBYVVVV0zRVD4w1+jQ0QrK8gBLJTE4QBUGS5LwgiPmC4nA4b9++azCYDAajwWA0Gk337n06P8/l84VcjmUKgiiKUjKV+RcjpC+/AcnGqwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/9644f2962bef9a2393916a82ec27ac62/1e0be/img_3800.webp 250w,/static/9644f2962bef9a2393916a82ec27ac62/b0a15/img_3800.webp 500w,/static/9644f2962bef9a2393916a82ec27ac62/a5d4d/img_3800.webp 1000w,/static/9644f2962bef9a2393916a82ec27ac62/5543b/img_3800.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/9644f2962bef9a2393916a82ec27ac62/63868/img_3800.png 250w,/static/9644f2962bef9a2393916a82ec27ac62/0b533/img_3800.png 500w,/static/9644f2962bef9a2393916a82ec27ac62/00d43/img_3800.png 1000w,/static/9644f2962bef9a2393916a82ec27ac62/78797/img_3800.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/9644f2962bef9a2393916a82ec27ac62/00d43/img_3800.png&quot; alt=&quot;IMG_3800&quot; title=&quot;IMG_3800&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;打开 RGB 灯效设置页，可以设置呼吸灯、彩虹灯等各种灯效。但这对于我来说是一个毫无软用的功能，我选择关闭所有的灯光。对于我来说，一台路由器只要静静地躺在角落里稳定的运行就足够了。&lt;/p&gt;&lt;div class=&quot;mobile-screenshot&quot;&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFmElEQVRIx8VW66sUZRw+/0OlRRAZWZGikIFQfohuXypCQ5IwJS0ts9SgQMUPZnhB1IgyUhQVulBZlIpER4+rZ4+n49nLuGf2zF5m57q7c3Z2537ZnZn3/cXOu+eiJVh96GE/zGWf3+V5f5fpg/+Avv+PHEWR67pRFGGMEUIYY/KiWq2yLJvP5zmOuyV56t83wfd913Udx/F9f+ZzhHE0yemGbdu2qqqaptVqNdM0AeBWFv8m53w+Pzg4mMlkkslkoVAAgDAMoxhhDHKNYotDTe0oy5dtp0d2Xde2bdd1Pc8zTVNV1Wazqeu6bdumaWqaZpqmYRhBGALA4RL3SnLkUqPVIzuOQ6INcRhCiOIfhhAgAsC3cVQYECCMAFDvlrAwJgJNq9ATLL7tkSNAgOGEd2Svt/M02vsTrMnDDg+SsQE05b9rZEYsfeQRADSw8aK37Al//lr00Gcw9zLMaaHZoK2HwJoM5q/nPPlmKRyYg5YvQ6/uhDfOwQYe1kTeS/DHXZB8MyZ2fXrgBRDMqLA4y68xcwccXAqHN+MDh/H+a/CFHe0HYTOcfxl23Y2yZwHgSnRxPn5gNV7R1QbP8LwSCg9Dcj0ePgRDZ3FChEFknIWhg3BsHbz+YHhwIwCcQaf7oG8RLMSxPwyY5AzPRd7jgb0psI+FViqwbN/A42n49jhs2wJPPoZWrXAcPydSRwpfnpPOVKtVx3Gm1V4uwQIG3i3AYQYN5FGDxvhiHT7/HTZ8CvOW2SveV0xd4kSlrOiKrqqqbdtxznHc+8bgnlOw8nvYfhJOHIfcN7h9pAPbGXjtZ7j3I/fQrzYg33WdttMJO93TRoh0VZdct2HhLljwDqx+D/Ztgf6toGzBeJUGjyZgyY9g+aRiSM/gmUUSdr2jqzR+5Fk8737YuBhOPAWji8G6L4JFIoyZ3XqL8C3Lk/iXa7B7K972DBxdAlefB/NjDEosaIh6pYTwzWSe5ygqk0pnGXqsG0gHdwxAYa+Ue4QpFr6xPMts9UqSKjLjQ/SwHwYIg9rtKsB6iLSuDdxs4SiCCCHVmkq7R/5wL356RbevFsDcr/CeyxjuRBMlwLBaRi/IYLVg1mw4/R38koNZb4NiTPnvkk/9UN+xjwdAH3CbBvTzlTZeRQ9rEAkHM5VP0ijyi2+t86i0MVqmV+1Bjs+LglKv98hNVRR52rIspajUecVsNU2piiNU1euK3UAAVcfpYHA6vqCrCKGJiQlN03rk6zn64sDlkZGR0cy1gcRAsVgkTX9bA9AwjEql0m63O52OIAiqqgKAZVmCICCEXNeVZVmSJOKt1WrVajUyj3vkfD5PyBzHybIMAKqqZrNZhJBlWcVikaZpYlSU5TzD2FONIYoiRVHDw8MURWUyGULGtxm2JEk0TVMURdN0KpWqVCoIoXa7bdu253lkJPu+H8XNcLIirh1JX21OCuZ5nq7rnueRyMmW8TxP0zTHcRzbJlOdSPhbvbE7X8yZVo9MFsK/XLGNRqNcLqdSqbGxsXK5zDBMOp0m2pK9OTP/6Ka5zfN8JpPJ5XIMw7Ase/369XQ6rev6rWTDN5Gz2SwzPs6yrCzLExMTPM8XCoVUKlUoFHK5nCRJqqoKgsCy7Pj4eDabbTQa0y05OjpqGAZJnmx5hBDZj0EQoBsxFU6XzHHchQsXhoaGSqUSTdNMDJ7nRVHkOM40zXq9LghCuVwWRZFl2VKpRAqmS67Varquk48Acki+73c6nSAGcR6GYRAE7XY7CALXdafLk2HGS6USG0NV1VqtxnGcJEmCIIiiyPO8FKNarTabzXK5TBKeDntkZCSZTA4ODlIUlU6nWZZVFKU2CXKtKIqu65IkNRqN3ugly92yLMMwmjFarVYQBP/4O4zIKMtyf39/IpG4FCORSPT39/ea/Ea1/wTwIzOxXxouEgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/f4450c331ff7bc6b17e73625fcd08d52/1e0be/img_3807.webp 250w,/static/f4450c331ff7bc6b17e73625fcd08d52/b0a15/img_3807.webp 500w,/static/f4450c331ff7bc6b17e73625fcd08d52/a5d4d/img_3807.webp 1000w,/static/f4450c331ff7bc6b17e73625fcd08d52/5543b/img_3807.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/f4450c331ff7bc6b17e73625fcd08d52/63868/img_3807.png 250w,/static/f4450c331ff7bc6b17e73625fcd08d52/0b533/img_3807.png 500w,/static/f4450c331ff7bc6b17e73625fcd08d52/00d43/img_3807.png 1000w,/static/f4450c331ff7bc6b17e73625fcd08d52/78797/img_3807.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/f4450c331ff7bc6b17e73625fcd08d52/00d43/img_3807.png&quot; alt=&quot;IMG_3807&quot; title=&quot;IMG_3807&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;另外还有需要注意的是，USB3.0 默认也是打开的需要关闭，否则会影响到 2.4G 的 Wi-Fi。&lt;/p&gt;&lt;h2 id=&quot;无线测试&quot;&gt;无线测试&lt;/h2&gt;&lt;p&gt;配置完成后，和之前的 K3 路由器做一个简单的对比测试。测试不保证严谨，仅供参考。因为路由器只作为无线 AP 使用，所以只对无线传输速度进行测试，目前我手上没有万兆网络设备只能测千兆下的速度表现。我们使用 &lt;a href=&quot;https://github.com/librespeed/speedtest&quot;&gt;LibreSpeed&lt;/a&gt; 进行测试，测试节点在内网的一台服务器上。测试设备为 iPhone 11 Pro，最大 PHY 数据速率为 1200 Mbps。&lt;/p&gt;&lt;p&gt;第一组测试：将测试设备贴到路由器旁，可以看到 AX9000 可以的下行速率可以跑到 875Mbps，而 K3 的速率只有 661Mbps。&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;AX9000&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;K3&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEf0lEQVRIx6VWW0/iWhTmD4qZI5TbxBsYrBnKaCIPpypvev6GxmR04vhCojJIiMEMmomRy+CFi610oK2UcvG0tNB2n9ANiAp6kvnSkNW999dvrbXX3iyD2WyemZnBMMzpdCIIYhmAVUf/FUEQu90+OzuLoujy8rLD4TCYTKbp6emlpSWn0zkxMWHuwWQyTUxMmHT0RyB5fn5+ZWWlQ56amlpYWHC5XG63e6EHFEU9Ho/X68UwzOPxoCjaH3e73XNzc263e2ZmxjA5ObmxseHz+bxe7+ceMAzDcfwfHX6/H8OwzwNYXFxcX193uVwGn8+3MgAcx6Hxtw4cx1dXV3EchzYEXObz+QygB1VVoaHogLamaZIkaZoGhqFLlmU5l8uFw+Hv378f6Tg8PAyFQtFoNBKJxGKxYDAYjUb39/fPz8/733pS5nmepmmGYcrlB5IkCOKuWPzNMHS5XC4Wf5dKRZqm8/k8z/NDyAP+A55Xq1WV49oc1+b5NscpvZiGuQ3D08PWms02wzQBUB8eHlm2AYDGspIotgDoLBiMf4iypmmVisyy0sND52FZieNkRVHfUgaa1mg0REHQdKhqR0dH57U7K4oj3Sbv79PX101Jei3SarVS6XQ2nx9CVtttniQfaZpOJB55Xu0Hphv/lss1iqpks1wm0xQE7SVZUXiS5Emyks2yxWLj8RH6oulZFqvVGkWVM5lqocAyjCzLIxP2//EsYVBNj7DdaNRlWZAkQRQFSZK7WXlep8OVFaUVj6eOjmJHR2cXF0lJEvvffYsMV5ydFXZ3k8fH2XA49/VrMholep6NJkNmJJIPBK5U9WltKJQ9OLh5zTe8YDLM45cvcQCAIAgMw5ZKNMztt29Jgqi8cH7wPHdGf/wgf/6kAADJZCoUCp2ent7c3AIA0mkmHM72lw0nHx9nf/1iAACSJPM8L4pis9kEAOTzlUDgWs+lNtLtbJYjCB6Gd39/T5IknC0W61dX7Ejl50dalWUZnolWq6UOPc3Dtqr7bVEUKYoqFov1eh0KvrNVg/5fXl5ubW1tbm7GYrHusXy7SOC0IAh7e3vBYDCXyxEEEQ6Hd3Z2qtXq6yIbory7u5tKpXq1rOmpzm9vb7+l3Mt2NhAIAABqtdrNzU0qlaIoSi+yUDweH7zeX+xzZ/Tk5CSdTuulxkSj0WQyCa8egiCCweA75EgkkkgkoCO1Wq1er0OPMpnMwcHBSDJcVNEBLy24Ve12GwDQaDQ4jhtZ23BCURRN02RZhrWhKIosy/DfS3v7MlAUpVAolEqlQqHA8/zd3V0ul6Moiqbp29tMPp8XBGFQ/M/uMPU5FEXp/76LP1NOvIF4PBG/7NmXifjFs/F43GA0GseHwjhm/Ms6Zvo4bhwbHzfq9nR3/AMyhjiN4x8MVqvV4XDYerDb7TabTe+/zMgkikxjVgui2wvmuRWbzW6zWiwfZ82zS1bHpMEyDLB9s9rsnafbyyFWxNTv5yxWG2JBDC84JpMJRVG/3693Pbje9+Bra2ufPnnMZvMTudMPIv8Br4Jm66MAfpoAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/192c60b92369298b2f0bc9ed8ea9076f/1e0be/img_3802.webp 250w,/static/192c60b92369298b2f0bc9ed8ea9076f/b0a15/img_3802.webp 500w,/static/192c60b92369298b2f0bc9ed8ea9076f/a5d4d/img_3802.webp 1000w,/static/192c60b92369298b2f0bc9ed8ea9076f/5543b/img_3802.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/192c60b92369298b2f0bc9ed8ea9076f/63868/img_3802.png 250w,/static/192c60b92369298b2f0bc9ed8ea9076f/0b533/img_3802.png 500w,/static/192c60b92369298b2f0bc9ed8ea9076f/00d43/img_3802.png 1000w,/static/192c60b92369298b2f0bc9ed8ea9076f/78797/img_3802.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/192c60b92369298b2f0bc9ed8ea9076f/00d43/img_3802.png&quot; alt=&quot;img 3802&quot; title=&quot;img 3802&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEeklEQVRIx6WWbU/iWBTH+YKis0ApMgF1Qa0Z6mgiL7Yq73S/hg/JqHHmDckoKkMMYdCMxqKsjgu1KFTKU1XYlpY+3Am9gkVBN5lfCDk5vf+ec+45t7kmm802MjKC47jH40EQxG4A1TF6HA6H2+3GMGxmZsbpdJqsVuvQ0ND09LTX67VYLLYWVqvVYrFYddoeFEVdLheGYbOzs02x2+2emJjweDyjo6MTLTAM8/l8k5OTOI77fD4Mw9r+8fFxr9c7NjY2PDxscrlci4uLfr9/cnLyYwscxwmC+FsnEAjgOP7RwNTU1MLCgsfjMfn9/lkDBEFA4y8dgiDm5uYIgoA2BC7z+/0m0EJVVWgoOtDWNE0URU3TQDcexZIkpdPpcDi8s7OzrbO1tbW7uxuNRiORSDweD4VC0Wj0y5cvh4eH7Xc9ReY4Lp/PsyxbKhUzGZqmrxgmx7L5UqnEMLnbWyafz1MUxXFcF7Ehf8Bx6t2dWi7L5bLMcXK5rLRq6pY2LE8vW6vXZZatA6AWi7VCoQqAVijUBaEBQHOBsf4ukTVNq1SkQkEsFpu/QkEslyW1W+iOyNVqVeB5TUdVm3F0oEN/Kgg9xZnr638uLuqi+DKIJEmnyWTq6qqLWFUUjqarDJNPJGocp3Y2tiEIfKn0cJMt/bys87z2TKypavU2z2UylVSqwDDVWg3moun7o8iyUKlwmczd9XWBZSVJ6rlh/5+Omtv/jYZcrT5IEi+KPM//J4pSO5HuYiOK0iDJs+3t+Pb2wfHxqSgK7fe+JoYrDg5uNjbO9vbS375RGxun0SitPwKviaEyEqGCwXNVfVq7u/vv168/X+qf18yytU+fSABAvV4vFkuVClevN9v++fMpTVeeJW88z03v9++ZHz+yAICLi8uVlZV4PF4slgAA5+dsOJxqL+su3ttLJZOsPlKNYrHI8zycaoqqBIMX+l5qPdNOpco0zcHyrnWgn2Eezs8LPdPuPNKqJEnwTDQaja5HqmurHvMXBCGbzTIM8/DwAIt6o1XG/E9OTpaXl5eWluLxePtYvt1nnuc3NzdDoVA6naZpOhwOr62t3d3dvRyyLpHX19fPzs6Mw0xR1Orq6muRW7udCgaDAIByuRyLxY6OjnK5nD5kuyRJGj/vz/rc9O7v7yeTSQBANpuNxWKRSASKr66uQqHQG+JIJJJIJGAi9/f3tVoNZpROp7e2tnqK4aKKDgBAluWcjizLsHOwZz2HRNM0RVHgYMDZUBRFkiRFUdrf0Z67rSjKzc3N7e1tLpe7v7+nKCqVSmWz2Xw+f3l5SVEUz/PG4L/3DVM7gRm283yd34uceAWSTJAnLfskQR53+EnSZDab+w0MDAw8WuY+8x9on/V9v7mvv9/ctG1Dj/53SB/yp7n/nQlFUafT6WgxODjocDj0+5cNcWHIEI7aEd2esHkJh2PQgdrt70dsI9Oo02WydwNe31DHYPP3eJdDUMTaeo7YUQdiR0zPNFarFcOwQCCg33oI/d5DzM/Pf/jgs9lsT2I7giDILwdxZwKtfRRiAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/40cc56929d46a4365672b010c434de5e/1e0be/img_3803.webp 250w,/static/40cc56929d46a4365672b010c434de5e/b0a15/img_3803.webp 500w,/static/40cc56929d46a4365672b010c434de5e/a5d4d/img_3803.webp 1000w,/static/40cc56929d46a4365672b010c434de5e/5543b/img_3803.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/40cc56929d46a4365672b010c434de5e/63868/img_3803.png 250w,/static/40cc56929d46a4365672b010c434de5e/0b533/img_3803.png 500w,/static/40cc56929d46a4365672b010c434de5e/00d43/img_3803.png 1000w,/static/40cc56929d46a4365672b010c434de5e/78797/img_3803.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/40cc56929d46a4365672b010c434de5e/00d43/img_3803.png&quot; alt=&quot;img 3803&quot; title=&quot;img 3803&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;第二组测试：将测试设备放到卧室最角落，隔了一堵承重墙。可以看到隔了一堵墙后，两款路由器的传输速率能有很大幅度的下降，但是 AX9000 还是能达到接近百兆的传输速率，是 K3 的两倍多。&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;AX9000&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;K3&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEZUlEQVRIx62WW08iSRTH+YJiZqdprkGYZVkw0o6byMP2om+6X0N9GJ0YX5yMeGGIkhk0wXCRjattLwzY3CmgFehuqrs2dAEitjrJ7i8dcqg+/zp1uupUjs5gMDidToqiHA4HSZLGMUwqo78kSdpsNpfL5XA4FhcXrVarjiAIh8OxsLBgt9sJgjAMIQji7du3hMpoxGazud1up9MZCAT64pmZmdnZWZfL5fF4Zod4vV6fzzc/P09RlM/n83q9eNzj8bjd7l9VnE6nzm63r66u+v3++fn590MoiqJp+k+V5eVliqLej7GwsLCysuJyuXR+v/+PMWiaxsbvKjRNBwIBmqaxjcFufr9fh4bIsowNqIJtRVEEQVAUBWkxEIuieHNzEwqFDg4Ogip7e3uHh4eRSCQcDkej0f39/UgksrOzc3Z2NprrITIAoFgslkqlarWSzWYymX847rZUKlarVY67LRS4YrHIsiwAQEM8tn4EgNxsyrVar1brAdCr1eAwJ61l4/TUtJVut1cqdRGSK5W7cplHSCmXhU5HQqjvMJ6/RmRFUep1sVwWKpXBU6uJEMqvROZ5vtNuKyqy3I+jMgjWf9vpPCvOfv/+1+VlVxCeBpF6vVQ6fc0wGmIZQpDJ8BxXTCbvAJAnNlZRmvl8M5vlCwVJkibFiizzhSLIZusMU+Y4/u4OrwWDEOo2Gi2OA/l8pVp9aat+nEc5j34lqcfzLVFsC0K73b4XBBF7PCseB0IpkbgIBqPB4On5eUoQOqN5XxJjj9PT3NZW6uiI+fKF/fgxFYlktAI/FmNlOMx++nQpyw++h4fM589/P9VP5lwq3X34kEAI3d/fFwqFVotvt9sIoe3tFMvWJxY/Xs/90W/fsrFYHiF0c8NGIpGzs7N4PI4QurqqfP2aGblpi4+OmHS6hO+GZrMJAOh2u/197gr1euPZyHiUYWqZDBic1mw2l8sNbwsJz/L6VsmyLIoiLgtJkmTNatbaqsH6O51OPp/nOK7Vamlu8rP1jBCKx+Pr6+tra2vRaBSX5SuHBL9ut9vb29vBYJBl2UwmEwqFNjc3G43G0/gakbe2ti4uLkZVhRBiWXZjY+Np5k+/NrO7u6uellIsFrtUQQgdHx9fXV29cEhk7JROp/EsJycnsVgslUohhARBAAC8Ig6Hw8lkEjs1m02e5/Hbbrf79LNPLruuopa0dHt7y3EcvncghOMXkPbXhhAqiiKKIj4bEEJRFCGEvV5v4tKeFEMIc7lcoVDI5XIAAJZlGYbJ5/PFYvH6+pplWVxh/9MdJj8GQjj6fZX/Fjn5AolEMhEf2vFk4vzReCKh0+v105rop/Q/maYI27R+anpar9qOwfgbcor8WT/9RmcymaxWq3mIxWIxm81q/2Ug7V5yhjIZSdWeNfxCm80Ws8lotL0zvPvNZLHrjFrg9s1ktvSfQS9Hmkhi1M4ZTWbSSOomNARBeL3e5aUlteuh1b6HXgoE5ubmDAbDg7jfD5L/An2WasMiHLfMAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/20a2a2561f020616cb26d1eb01ab91aa/1e0be/img_3805.webp 250w,/static/20a2a2561f020616cb26d1eb01ab91aa/b0a15/img_3805.webp 500w,/static/20a2a2561f020616cb26d1eb01ab91aa/a5d4d/img_3805.webp 1000w,/static/20a2a2561f020616cb26d1eb01ab91aa/5543b/img_3805.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/20a2a2561f020616cb26d1eb01ab91aa/63868/img_3805.png 250w,/static/20a2a2561f020616cb26d1eb01ab91aa/0b533/img_3805.png 500w,/static/20a2a2561f020616cb26d1eb01ab91aa/00d43/img_3805.png 1000w,/static/20a2a2561f020616cb26d1eb01ab91aa/78797/img_3805.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/20a2a2561f020616cb26d1eb01ab91aa/00d43/img_3805.png&quot; alt=&quot;img 3805&quot; title=&quot;img 3805&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:216.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAArCAIAAAD3xz8iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEZ0lEQVRIx6WWbU/iWBTH+YAr7o6lgBCEWZYFI2XYRF5sF32n+zXkzagxJjszifjAoCFRSUYFwbELdBmBSgtYKton+nAnbQVREXazvzTkcLn/nnvuOfdyTBaLxePxIAjidrthGLYOYNPpf4Vh2Ol0er1et9s9Pz/vcDhMEAS53e5wOOxyuSAIsvSAIGhqagrS6Y84nU6fz+fxeKLRqCaemZmZnZ31er1+v3+2RyAQCAaDoVAIQZBgMBgIBIxxv9/v8/l+1fF4PCaXy7W8vByJREKh0LseCIKgKPqnzuLiIoIg7wYIh8NLS0ter9cUiUT+GABFUcP4XQdF0Wg0iqKoYRsY0yKRiAn0UBTFMGQdw1ZVVRAEVVXBMB7EoiiWSqVEIrGzsxPX2dra2t3dTaVSyWTy8PBwe3s7lUptbm6m0+n+ux490zRdr9dJkmw2G2WNfwiiRpL1ZrNJELXra6Jer+M4TtP0EPHA+gFNK+220mpJrZZE01KrJfdiGrZsIzw9bJXnJZLkAVAajTuK6gCgUhTPcV0AtAmD8Q/xrKrqzY1IUUKjoT0UJbRaoiwrYzx3Oh2OZVUdRdH86BgDD7++Kv52dXVxeckLwksn3W43d3FRxPEhYkWSmoVChyDq2ewdTSv9wHSDa7eZarWJYY2vXwfT3hPLMl0u01dXN8UiRRCduztjLcY8nmGYarWBYQ0MoyhKFMVXN+zf8yTm/jq7XanTuRVFVhBYlr0XBHFwIaNSpZd3N5PJxeNH8fjxycm5IHCPbx8hNmYcH1fW13N7e6XPn/H19fNUqjxm2X1lMol/+nSpKI9+dneLW1tYL6bXYybJu/fvMwAAlmVJkmIY5v5e23kMI4QX+R88z5r48PDbly9VffbfHz78dX5+fnp6CgAQBL7T6TyL/Ll4b6+Yy5FaYXAcSZIMw/A8r6WaFxiGeVVsjBaLrXKZNsK70umXp/GW8alSFEUUReNYdLtdZehpHpaqh/VzHFetVgmCuL29HZrkV88zAODs7CwWi62srBwdHfWP5fg8syy7sbERj8dxHC+Xy4lEYnV1td1uv/Q/xPPa2loulxssZhzHY7FY/z4esdvFjx8/AgAoisrn87VarVQqAQDS6XSlUhmRZ21LDw4O8vk8AKBUKu3v7xcKBQzDjFSNLhJFL+xkNps1JjE6xq8cx40vkhsdw1WtViMIQpIkVVVlWZYkacxuy7KsqmpXR1EUWZZFUTSUzy7t52JZliuVyvX1da1WYxgGx/FisVitVuv1eqFQwHGc1a/eUX83/+EOU54iy3L/cyz/z3N2BJlMNnPWs8+ymZMn45mMyTxpnhyKecL8xjYBOSfNE5OTZs22uI3xiTfwD/DP5h9/MtnsNofDYe8xPT1tt9v1/ssCuwKwG7FZYd2etfyC2u3TdpvV6nxrefubzeEyWYdhtG82+7T2PPRysA2G+v2c1WaHrbDpmQaCoEAgsLC4oHc9qN73oNGF6NzcnMVi6UlhrR+0wt8B6PxrldofNVQAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/8de2eec118f14ee932d61a712bb08b01/1e0be/img_3804.webp 250w,/static/8de2eec118f14ee932d61a712bb08b01/b0a15/img_3804.webp 500w,/static/8de2eec118f14ee932d61a712bb08b01/a5d4d/img_3804.webp 1000w,/static/8de2eec118f14ee932d61a712bb08b01/5543b/img_3804.webp 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/8de2eec118f14ee932d61a712bb08b01/63868/img_3804.png 250w,/static/8de2eec118f14ee932d61a712bb08b01/0b533/img_3804.png 500w,/static/8de2eec118f14ee932d61a712bb08b01/00d43/img_3804.png 1000w,/static/8de2eec118f14ee932d61a712bb08b01/78797/img_3804.png 1125w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/8de2eec118f14ee932d61a712bb08b01/00d43/img_3804.png&quot; alt=&quot;img 3804&quot; title=&quot;img 3804&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;&lt;p&gt;从测试结果来看，AX9000 的无线性能已经大幅度超过了原来的 K3 路由器，算是比较令我满意的一次设备升级。但是穿墙能力只能算是差强人意，好在小米 AX 系列路由器现在已经支持 AP Mesh 组网，未来的某一天如果现在的无线信号不能满足我的需求，可以再买一台 AX 系列路由器组 Mesh 网络，增强无线信号的强度。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[给博客增加深色模式支持]]></title><description><![CDATA[目前主流操作系统（macOS Mojave, Windows 10, iOS 13, Android 10）都已经支持深色模式。最近也给博客主题加上了深色模式（Dark Mode）的支持，本文做一些记录。 Dark Mode ≠ Night Mode…]]></description><link>https://www.giuem.com/blog/dark-mode</link><guid isPermaLink="false">https://www.giuem.com/blog/dark-mode</guid><pubDate>Fri, 24 Apr 2020 17:45:18 GMT</pubDate><content:encoded>&lt;p&gt;目前主流操作系统（macOS Mojave, Windows 10, iOS 13, Android 10）都已经支持深色模式。最近也给博客主题加上了深色模式（Dark Mode）的支持，本文做一些记录。&lt;/p&gt;&lt;h2 id=&quot;dark-mode--night-mode&quot;&gt;Dark Mode ≠ Night Mode&lt;/h2&gt;&lt;p&gt;首先需要明确一个概念，深色模式不是夜间模式。&lt;/p&gt;&lt;p&gt;从使用场景来说，夜间模式是在&lt;strong&gt;弱光环境&lt;/strong&gt;下使用（比如在被窝里），主要目的是保护眼睛，减少强光对眼睛的刺激；而深色模式则没有这个限制，在大白天也能正常使用（我在 macOS 上就常年开着深色模式），可以理解为 Dark Mode 是一个&lt;strong&gt;黑色主题&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;从功能上来说，夜间模式就是为了夜晚使用不刺眼（前面提过）；而深色模式有如下功能（个人总结）&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;省电。&lt;/strong&gt;现在很多手机都使用 &lt;a href=&quot;https://en.wikipedia.org/wiki/OLED&quot;&gt;OLED 屏幕&lt;/a&gt;，OLED 屏幕的每个像素点是独立发光的，黑色像素点不发光。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;让用户更加专注。&lt;/strong&gt;大片留白会分散注意力。&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;如何实现&quot;&gt;如何实现&lt;/h2&gt;&lt;h3 id=&quot;media-query&quot;&gt;Media Query&lt;/h3&gt;&lt;p&gt;可以通过 CSS 媒体查询 &lt;code&gt;prefers-color-scheme&lt;/code&gt; 来判断系统当前的主题，兼容性如下（数据来源 &lt;a href=&quot;https://caniuse.com/#feat=prefers-color-scheme&quot;&gt;caniuse&lt;/a&gt;）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://caniuse.bitsofco.de/image/prefers-color-scheme.png&quot; alt=&quot;Data on support for the prefers-color-scheme feature across the major browsers from caniuse.com&quot;/&gt;&lt;/p&gt;&lt;p&gt;其实只要系统支持深色模式就支持特性，所以完全可以放心使用。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;/* normal/light css */
@media (prefers-color-scheme: dark) {
  /* dark css here */
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;落地到具体实现方式有两种：CSS Variable 和 Override。&lt;/p&gt;&lt;h3 id=&quot;css-variable&quot;&gt;CSS Variable&lt;/h3&gt;&lt;p&gt;如果网站本来就是使用 CSS Variable，那就再定义一份深色模式的 color scheme 即可。这是最简单的方式，对于不支持 CSS Variable 的客户端也有 &lt;a href=&quot;https://github.com/aaronbarker/css-variables-polyfill&quot;&gt;polyfill&lt;/a&gt;。如果你的构建工具使用的是 &lt;a href=&quot;https://postcss.org/&quot;&gt;PostCSS&lt;/a&gt;，那配合 &lt;a href=&quot;https://github.com/MadLittleMods/postcss-css-variables&quot;&gt;postcss-css-variables&lt;/a&gt; 插件可以实现更好的兼容性。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;:root {
  --color-text: #000;
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-text: #fff;
  }
}

body {
  color: var(--color-text);
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;css-override&quot;&gt;CSS Override&lt;/h3&gt;&lt;p&gt;但如果网站由于历史原因或 trade-off，没有使用 CSS Variable，也可以通过覆盖 CSS 样式的方法实现。比如我的博客，早期没有选择 CSS Variable，打算迁移时发现工作量还是挺大的，就直接暴力覆写 CSS 了（简单粗暴，风险小）。&lt;/p&gt;&lt;p&gt;我的方案是写了一个 mixin，然后全文搜索用到颜色的地方，通过 mixin 覆写一份深色主题。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scss&quot;&gt;@mixin dark {
  @media screen and (prefers-color-scheme: dark) {
    @content;
  }
}

body {
  color: #000;
  @include dark {
    color: #fff;
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;颜色选择&quot;&gt;颜色选择&lt;/h2&gt;&lt;p&gt;敲定实现方案后，现在又有一个世纪难题，如何选择合理的颜色？&lt;/p&gt;&lt;ul&gt;&lt;li&gt;深色颜色要能同时兼顾白天和夜晚的使用场景。&lt;/li&gt;&lt;li&gt;深色模式并不是一劳永逸的设置绝对黑底白字，两者的对比度是最高的（21:1），这容易产生阅读疲劳，不利于长时间阅读。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;站在巨人的肩膀上，通过借鉴一些设计比较好的产品是如何实现深色模式的，再基于实际情况，选择适合自己的颜色方案。&lt;/p&gt;&lt;h3 id=&quot;背景色&quot;&gt;背景色&lt;/h3&gt;&lt;p&gt;背景色有两种取法：选择中性黑或带有自己品牌颜色的“黑”。&lt;/p&gt;&lt;p&gt;iOS 的系统界面使用纯黑 &lt;code&gt;#000000&lt;/code&gt;，这样的好处是可以省电；Twitter 的黑是带有深蓝色的 &lt;code&gt;#15202b&lt;/code&gt;；而 Material Design 建议使用 &lt;code&gt;#121212&lt;/code&gt;作为背景色，说是深灰色相比纯黑可以更好表达。&lt;/p&gt;&lt;p&gt;因为我的博客也没有特别的品牌颜色，最终选择和 Material Design 一样的 &lt;code&gt;#121212&lt;/code&gt;。&lt;/p&gt;&lt;h3 id=&quot;文字&quot;&gt;文字&lt;/h3&gt;&lt;p&gt;文字尽量不使用纯白，亮度太高刺眼，可以选择稍微暗一点的颜色。这里我直接抄了 Material Design 的作业。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;When light text appears on dark backgrounds it should use the following opacity levels:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;High-emphasis text has an opacity of &lt;strong&gt;87%&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Medium-emphasis text and hint text have opacities of &lt;strong&gt;60%&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Disabled text has an opacity of &lt;strong&gt;38%&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;正文颜色使用 &lt;code&gt;hsla(0,0%,100%,.87)&lt;/code&gt;&lt;/li&gt;&lt;li&gt;标签、时间等辅助元素使用 &lt;code&gt;hsla(0,0%,100%,.6)&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;颜色对比度&quot;&gt;颜色对比度&lt;/h3&gt;&lt;p&gt;选取好颜色后接下来就是仔细检查网站上各个元素的颜色是否符合 &lt;a href=&quot;https://www.w3.org/TR/WCAG20/&quot;&gt;WCAG 2.0&lt;/a&gt; 标准。该标准主要是针对有视觉障碍用户，保证你的内容对他们来说是可读的。对于颜色对比度的要求如下：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;1.4.3 Contrast (Minimum):&lt;/strong&gt; The visual presentation of &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#textdef&quot;&gt;text&lt;/a&gt; and &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#images-of-textdef&quot;&gt;images of text&lt;/a&gt; has a &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#contrast-ratiodef&quot;&gt;contrast ratio&lt;/a&gt; of at least 4.5:1, except for the following: (Level AA)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Large Text:&lt;/strong&gt; &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#larger-scaledef&quot;&gt;Large-scale&lt;/a&gt; text and images of large-scale text have a contrast ratio of at least 3:1;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Incidental:&lt;/strong&gt; Text or images of text that are part of an inactive &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#user-interface-componentdef&quot;&gt;user interface component&lt;/a&gt;, that are &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#puredecdef&quot;&gt;pure decoration&lt;/a&gt;, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Logotypes:&lt;/strong&gt; Text that is part of a logo or brand name has no minimum contrast requirement.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;1.4.6 Contrast (Enhanced):&lt;/strong&gt; The visual presentation of &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#textdef&quot;&gt;text&lt;/a&gt; and &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#images-of-textdef&quot;&gt;images of text&lt;/a&gt; has a &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#contrast-ratiodef&quot;&gt;contrast ratio&lt;/a&gt; of at least 7:1, except for the following: (Level AAA)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Large Text:&lt;/strong&gt; &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#larger-scaledef&quot;&gt;Large-scale&lt;/a&gt; text and images of large-scale text have a contrast ratio of at least 4.5:1;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Incidental:&lt;/strong&gt; Text or images of text that are part of an inactive &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#user-interface-componentdef&quot;&gt;user interface component&lt;/a&gt;, that are &lt;a href=&quot;https://www.w3.org/TR/WCAG20/#puredecdef&quot;&gt;pure decoration&lt;/a&gt;, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Logotypes:&lt;/strong&gt; Text that is part of a logo or brand name has no minimum contrast requirement.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;主要是要满足这两点：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;AA 级：文字与背景的对比度至少为 4.5:1，大号文字为 3:1。&lt;/li&gt;&lt;li&gt;AAA 级：文字与背景的对比度至少为 7:1，大号文字为 4.5:1。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;你可以用 Chrome Devtools 逐一查看各个元素的对比度：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:596px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:142.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF7ElEQVQ4y0VV6Y8cRx3trOLYsWLv7OyyNrbn7Lq7+qi5e3qOnnN3emYve6+ZNew6rHfs3Y29SdZyEhMIgtieWDmAJMgJJkqcSTAgIoSQUAjDF8sShx0RJD6jMPCFD/wJoB7neKoPVSqpfq9+9d4raXFxcWKimjLNdDo9Uakk4vFKpWJZVqlUKhWLhYKdSiULhYKVTscHW7VaTQgRDochhNLxubmCbWsq13WdKiolBCEoyzJCCEGIMFYURWFMVbmmaSrnwjAURaGUYoylQrFo2vlULle081NFK5fNxuMJwzAopQDICmNp0zRTyWzGKtj5bDZTKhUzGctKm7FoVIKMwkwapJKGynZmTdsulCvV6oTLDUKIMUb3AT+jAiBEn0OiAwZBf+DaC52/f/LxHz/81Z9+89M/f3Dj7s9evXezc/fGs/def/zeS6fvXVn++Dv1O7uZ29v63TOBT9ZHpmNBqVIu53PZiBBv/eTGf//9j0//eudff/mof/uD/u/e+eevX+3//Pn+Oxf718/2v9/sX633v231L7JPt8f/c2ZfywKSHovFnBrPZV+41rnzhw8/+mW3d+vHvZs/6L15uffapd5LO70r673nlntP1XuP53qbovcN+fet0dtL+6ZiIQkghDVNxvjC7pO/eO/mzR+93P3hle6L3+pe3u0+t9m9tNrdXeieq3fP2N1H490V2l049u7UwVv1vWXNL2UymUQ8rnLe3th4uXP56rMXO8/sdC6c7eysdbaWOxsznVPVzkqusxjrzLFOPdSpjnfy+1/M782rQenkyZOO40Sikfn5E5sb6+3VZntlvr003Z6faM8W2o10ezLaLvN2HrYtfzs53o4c3FD3buoPxdExKZvJcEoDPp9lWY3aZK1sOwXLySUcK+KkNCdOnIjs6H6HH3boqAMPOOF9tcCDjdCeCAlKhHMla6lZi3MlHPSHgz7ZfwT5D4GjY/CwF42PgDFPePRAeGx/2PuQPPIAHJbCj0jygQcoCElEYWoqpZtmKBgc8QyPeb0ej2fvI56RYc/+0eE9Y3sOjg4dGh46tGfo8NDD3iHvww96PcPD3hFPKBiQVM6RLCMAMCYIQhnAqIrPVrimooWvsnPjK/mxx77CtsbXtrzbRbZ9eOX0kaSKBMKIEknVDaJyxBjFEGoJL0lfb7H/3UhcXaKXZPu3/LXH0C2t8q72+tvs/dWZ7tE33zi6VlASEDGVS5qhCMeJz0zrEQEwPRrG60X6twuiaYY3n37q+lvX3nhlt3tl6/2LX791rtXdWOienrjaMglXEYTSZFlRG9OxxXklHsdApoSEIJEhCQHMCeVEoZgjzBBlkBHMMGUYQkgJcf0sE4bMJLJMommuRwhhlGCMdE2rVquNer1RryuKghDCA7ABKKUQAokS97IEIUIIxpgMQAmhlHLODcNQVTchvhiEEM65oihuZSFE1BDiM/cD+DkAAIQQIcTAxl96+P6SEKKqqkQ0lVaKxDKZEApjnPP7xL6YKIx9WXQAjDGllBAsEUoBVyClhNFquVSrTTYajXK5PDU1nclmS8WSXangXAIhiCFwowQCxhhxGwZckRiMxYXgjPkoRe65kOGwQqCCAUWygkN+zEOQ+GUcBDgAMCWYMqYoiqRGIlo+q6dNLsQTMs0aSSs3GTYX5Ljji0yEY84R8+TZ9PhsQt6sKM0cW7WZjBl3E5VKkCswnQLCIKr6qEySaiSZsuWYA0QhKGw5UvQn5prxI9UIaOXYjMlOWAxgtxEAyBKjVEFIHbzdM9/7brPV3N198vxWe+1rrSfOba8sL6yvtk5v7ZxYbF54+puQcr+b9gAhRClxk2RqZmZ6ZkbXNSuVigiRTKYikWg0Gm22WtVqdXZ2LpN2o3uyWs3nsuVSMRgKIYRSyaSEVdWoTYqJqi6EPPhEAJB9x44RQs6fP3/8+PFTa2uapsViMdu2l5eWTq2t+ny+gcKgBFWV2DlStKkwdE0Trl4MTdMxRn6/LxQKBQIBBF1hyEAOBoOBQGAgU1cs/wf407CMuSPgrQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/dd0287ae5f8dea96af210c5bce79319f/1e0be/chrome-devtools-color-wacg-2.webp 250w,/static/dd0287ae5f8dea96af210c5bce79319f/b0a15/chrome-devtools-color-wacg-2.webp 500w,/static/dd0287ae5f8dea96af210c5bce79319f/3cb93/chrome-devtools-color-wacg-2.webp 596w&quot; sizes=&quot;(max-width: 596px) 100vw, 596px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/dd0287ae5f8dea96af210c5bce79319f/63868/chrome-devtools-color-wacg-2.png 250w,/static/dd0287ae5f8dea96af210c5bce79319f/0b533/chrome-devtools-color-wacg-2.png 500w,/static/dd0287ae5f8dea96af210c5bce79319f/699b7/chrome-devtools-color-wacg-2.png 596w&quot; sizes=&quot;(max-width: 596px) 100vw, 596px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/dd0287ae5f8dea96af210c5bce79319f/699b7/chrome-devtools-color-wacg-2.png&quot; alt=&quot;Chrome Devtools css color&quot; title=&quot;Chrome Devtools css color&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;也可以通过 &lt;a href=&quot;https://github.com/GoogleChrome/lighthouse&quot;&gt;Lighthouse&lt;/a&gt; 一键检测网页上所有的元素。&lt;/p&gt;&lt;p&gt;如果有不符合标准的颜色，可以通过 &lt;a href=&quot;https://accessible-colors.com/&quot;&gt;这个网站&lt;/a&gt; 选取合适对比度的颜色。&lt;/p&gt;&lt;h3 id=&quot;层级表现&quot;&gt;层级表现&lt;/h3&gt;&lt;p&gt;深色模式下表现层级无法通过阴影实现，因为背景已经是深色，阴影效果会被弱化。如果要表现不同的层级，可以通过背景色区分。比如我的博客在移动端右上角会有一个下拉菜单，在深色模式下取消了原本的阴影，使用亮一点的灰色作为背景。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:754px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:62%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC3UlEQVQozx3Q+08SAQDA8QN0WQaSmY/Uidwdh3c8BE5BxBfHQ1EPFVdTTBFU8pEvXoKAUISAxkNwZrkS02U/KC1dqLPW1j/WbPv88v31C6B9y1zSySUdXNLR8B+ftIv0dsGAs4F0ov0Obr+T0+dAemxC3XKTbkmoXW4dcvG0q5jSCshN202WDG5JS8zpJku6aTojs+4OLSbDtsD4Qkw0s4dbMs3mTIslrbCkxC92RKMp0naMGzO43gcQ9q9qd67Ddd7uynWu5ZSuc6X/cj9++NcXvvVFw559reus0/atY/GobT4rtx62zGSbzQetU5/kpj2gy3tBBG81wWtV8EYTvNaGfuljN+/dwbwn+dubOgl9IDf/yEa9DZgAa5QK8Va+SIbyGvmyHrnlAFB7zlSBK9VGXh28ag/cTCfz+XR6mDBk5yI/nPGfG/F46FT6zAbWVWMoOjw42N7Wxq6r4YnlOmsGUDpOCG+OWM8RnvPx0PdMInu5ub20ED1ZCX+cD6Us/thqUjU8B0EgwkVBCIY5CIcD83BF53QSMK7spNYjEdubJXvieD2Qd3sCI+aSUuFY90TQ5LaNrEYm3RO6YRbIxlBU0aqQ4DgM1qNiudS8BbybfHURjp6+3vyyYv/sDR+9Tm5M2Yb0ZrvVE130b69Fdn2Jse4BNgyiKNrV2SWTyiCQjYllvSYvIOa2L7x0v/Vv+ebdgdVA1Bv1zHoSG1txf2x2bGZpdnYnlBg3GEEIRBCExWJBEARzYIlQvGgwAbSCsuoalM+Tt0gJhVTVrzGo2/pItWGMNI73PterNcpmoqNZCcEghmEatQaXSEAIFPEbR4ghoLCwrKoK4XDEMEdUW4uy6gVVT7nVNWgdi8dmC2BYUsKoram+GwXDCJ8vQBAufBcNCCwF7hWVUWlMCoVxh/qIQmXSCsuotFIKlUmh0ClUZkHh46L7T+j0quLiygfF5YyHFUxGZQm9nEGv+Ac7yekI7emE0AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/b1e2ccd863ffbf0bfbfa26a1beea3207/1e0be/blog-dropmenu-dark-mode.webp 250w,/static/b1e2ccd863ffbf0bfbfa26a1beea3207/b0a15/blog-dropmenu-dark-mode.webp 500w,/static/b1e2ccd863ffbf0bfbfa26a1beea3207/20eb0/blog-dropmenu-dark-mode.webp 754w&quot; sizes=&quot;(max-width: 754px) 100vw, 754px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/b1e2ccd863ffbf0bfbfa26a1beea3207/63868/blog-dropmenu-dark-mode.png 250w,/static/b1e2ccd863ffbf0bfbfa26a1beea3207/0b533/blog-dropmenu-dark-mode.png 500w,/static/b1e2ccd863ffbf0bfbfa26a1beea3207/7527b/blog-dropmenu-dark-mode.png 754w&quot; sizes=&quot;(max-width: 754px) 100vw, 754px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/b1e2ccd863ffbf0bfbfa26a1beea3207/7527b/blog-dropmenu-dark-mode.png&quot; alt=&quot;drop menu&quot; title=&quot;drop menu&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[我的博客有多快？]]></title><description><![CDATA[如果你看过我之前的 文章 ，应该知道我使用自己写的程序  ga-proxy  在后端将统计信息通过  Google Analytics Measurement Protocol  传给 Google Analytics…]]></description><link>https://www.giuem.com/blog/how-fast-is-my-blog</link><guid isPermaLink="false">https://www.giuem.com/blog/how-fast-is-my-blog</guid><pubDate>Sat, 08 Jun 2019 21:37:56 GMT</pubDate><content:encoded>&lt;p&gt;如果你看过我之前的&lt;a href=&quot;/blog/google-analytics-loading-optimize/&quot;&gt;文章&lt;/a&gt;，应该知道我使用自己写的程序 &lt;a href=&quot;https://github.com/giuem/ga-proxy/releases/tag/v1.0.0&quot;&gt;ga-proxy&lt;/a&gt; 在后端将统计信息通过 &lt;a href=&quot;https://developers.google.com/analytics/devguides/collection/protocol/v1/&quot;&gt;Google Analytics Measurement Protocol&lt;/a&gt; 传给 Google Analytics 服务器。当时写的功能比较简单，只有统计页面访问量的功能。后来看到 Sukka 在&lt;a href=&quot;https://blog.skk.moe/post/performance_timing/&quot;&gt;博客&lt;/a&gt;中提到了 Measurement Protocol 还支持统计网站加载速度，于是在今年二月我给 ga-proxy 加上了这个功能。几个月过去了，今天就来看看我博客实际的加载速度吧。 &lt;/p&gt;&lt;h2 id=&quot;博客的优化&quot;&gt;博客的优化&lt;/h2&gt;&lt;p&gt;开始之前，先谈谈博客的基本信息和一些优化。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;DNS&lt;/strong&gt;：CloudXNS&lt;/li&gt;&lt;li&gt;&lt;strong&gt;CDN&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;主站：中国大陆为腾讯云上海机房单点部署，海外是 CloudFlare -&amp;gt; Netlify&lt;/li&gt;&lt;li&gt;公共库：&lt;a href=&quot;https://www.jsdelivr.com/&quot;&gt;jsDelivr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;图床：自建，七牛 + CloudFlare&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;前端优化&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;使用 &lt;a href=&quot;https://www.npmjs.com/package/critical&quot;&gt;critical&lt;/a&gt; 提取内联关键 CSS&lt;/li&gt;&lt;li&gt;使用 &lt;a href=&quot;https://github.com/giuem/tiny-cache&quot;&gt;tiny-cache&lt;/a&gt; 缓存 JS 资源，脚本本身内联&lt;/li&gt;&lt;li&gt;使用 &lt;a href=&quot;https://developers.google.com/web/tools/workbox/&quot;&gt;Workbox&lt;/a&gt; 作为 Service Worker 解决方案，缓存各种请求&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;服务器优化&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;HTTP/2&lt;/li&gt;&lt;li&gt;TLS1.3&lt;/li&gt;&lt;li&gt;ECC + RSA 双证书&lt;/li&gt;&lt;li&gt;Brotli 压缩算法&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;数据收集&quot;&gt;数据收集&lt;/h2&gt;&lt;p&gt;再来看看我收集了哪些数据。&lt;/p&gt;&lt;p&gt;Google Analytics Measurement Protocol 支持发送的数据类型有：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;网页加载时间&lt;/li&gt;&lt;li&gt;DNS 时间&lt;/li&gt;&lt;li&gt;网页下载时间&lt;/li&gt;&lt;li&gt;重定向响应时间&lt;/li&gt;&lt;li&gt;TCP 连接时间&lt;/li&gt;&lt;li&gt;服务器响应时间&lt;/li&gt;&lt;li&gt;DOM 互动时间&lt;/li&gt;&lt;li&gt;内容加载时间&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;以上这些数据都可以通过 &lt;a href=&quot;https://www.w3.org/TR/navigation-timing/&quot;&gt;Navigation Timing API&lt;/a&gt; 获取，关于这些数据的的具体意义，可以看&lt;a href=&quot;https://www.w3.org/TR/navigation-timing/&quot;&gt;这里&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;我比较关注的数据主要有：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;DNS 查询时间&lt;/li&gt;&lt;li&gt;内容加载时间，DOM 和 CSSOM 均准备就绪的时间。&lt;/li&gt;&lt;li&gt;网页加载时间，表示网页及其所有子资源都准备就绪的时间。&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;开始&quot;&gt;开始&lt;/h2&gt;&lt;p&gt;统计时间范围从 &lt;em&gt;2019 年 3 月 1 日&lt;/em&gt;到 &lt;em&gt;2019 年 6 月 1 日&lt;/em&gt;。&lt;/p&gt;&lt;h3 id=&quot;dns-查询时间&quot;&gt;DNS 查询时间&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:20.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvElEQVQY03WPzUrEQBCE8+w+j7APIXjY9SaKuAdJAiuZpHf+JzNJzCcJ4kW34KMLCrq7KmMMOWfmeeaWvHcYrW/mQ69wzrGuK5W1lg3vPTHGX78dCSFwNQYTItoHOuNRLv6hs4GQEnkcqeq6RkT2JUopzu9netUjcsUOPfenN+4ePji8fvJYD5xa4dgIx/aHRnhqBRsiY0pUKaW97rIsxO0TrffpnWeMkZeL8Nw5Gh3IpbDOE1//ME2FUgrfdmIxfL/58z4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/d640397d68a9322af28f699509919007/1e0be/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.webp 250w,/static/d640397d68a9322af28f699509919007/b0a15/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.webp 500w,/static/d640397d68a9322af28f699509919007/a5d4d/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.webp 1000w,/static/d640397d68a9322af28f699509919007/69e3e/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.webp 1313w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/d640397d68a9322af28f699509919007/63868/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.png 250w,/static/d640397d68a9322af28f699509919007/0b533/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.png 500w,/static/d640397d68a9322af28f699509919007/00d43/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.png 1000w,/static/d640397d68a9322af28f699509919007/663b1/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.png 1313w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/d640397d68a9322af28f699509919007/00d43/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.38.23.png&quot; alt=&quot;DNS 查询时间&quot; title=&quot;DNS 查询时间&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;平均查询时间为 0.13 秒，大部分落在 0 - 0.01 秒之间，这部分主要是由于 DNS 缓存。大于 1 秒仅占 2.81%。（CloudXNS 似乎可以一用？&lt;/p&gt;&lt;h3 id=&quot;内容加载时间&quot;&gt;内容加载时间&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:38.4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABR0lEQVQoz3WQy07DMBBF87ds+Ay+hVUlVkhI7BBsWKIWFUhLlbTOo3Yc240fSdqLxqhdpZauH+Px8dxJ2raFMQZa66gQAk6nE47HYxQNigshYvx8R6v3HnVd48ygt4lzDuM4xoRro1UaW8bgfMAwDJfcvu/BGIsw2lM82TGGoijAOUdZlvFHSpBSgvM9nFHAEKJGb9E7i947WGujqKCu63A4HOI5ybIMSilUVYU0TSG4QNNISCGw3OSYzXeYLRjuP7Z4+Czw+FXiZV1HyJQSmqgnfM+xXq2hlYaULbRs8Dr/we1zipunb9y9bbAoFbix2Osu9m9KCZVK/slynuVQrYJsJDqj8b5c4VcYdNahDz7apnUIPlqdUkJ2CUg9q8oqwkhGa6yyHM579P4fYK27CroAaSKg0QYtWVU6iiqv6hreh6v2piz/ARLKY8TYLj0JAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/987e0b5d152f3ad84b4d82a00ccb03e6/1e0be/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.webp 250w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/b0a15/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.webp 500w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/a5d4d/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.webp 1000w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/1e748/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.webp 1006w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/987e0b5d152f3ad84b4d82a00ccb03e6/63868/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.png 250w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/0b533/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.png 500w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/00d43/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.png 1000w,/static/987e0b5d152f3ad84b4d82a00ccb03e6/2c5fd/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.png 1006w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/987e0b5d152f3ad84b4d82a00ccb03e6/00d43/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.46.08.png&quot; alt=&quot;内容加载时间&quot; title=&quot;内容加载时间&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;平均内容加载时间 1 秒，0 - 0.5 秒接近 50%，1 秒以下占比 73%。加载时间在 3 秒以内是一个合理的数值，如果 3 秒内页面的内容还没显示，就会造成用户的流失。&lt;/p&gt;&lt;h3 id=&quot;网页加载时间&quot;&gt;网页加载时间&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:944px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:40.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTElEQVQoz31Su07EMBDMF/MLVHS0fAD/QAW6guIk2gMkQCIiJCEPO3bsxIkT5zFoLe6K0x2RRqvdWY1mvAkYY9Bao+97OOew/9Z19bVtW6RpimmaDrNjPo5jGGP8LKDBOI5ebJlnLMtyAC0MwwBZ1+it9Xun+FopX4kPpJRIkgRFUUAIgaqqkGWZr+S8LEtwztC3DZztYTuD1hjviNB1nU+37wPGOFRdw1rrCbLPSoZa1lBag+cZ7l4iXG0jXD6GuN2lGP92TyFgnHsnZJcQfoYo8gKqVtBNC5H/4Gb7gYtNiOunb+xyhdmNsMPgYx4jqIQAxd4PkjhBxSvvUOsGWgrcvyV4LTUwj1hJzNqzCOiN6NLUkGD0FfnIUkgopSE4w+Y9wUNYgWuDgeL+J6iUQtM0/regS9NxqDetQd9baKXwnHLPz5PD6JzfO4dfE4hi9hb/9SMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/9081600d2a94f671992c18493c273fd8/1e0be/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.webp 250w,/static/9081600d2a94f671992c18493c273fd8/b0a15/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.webp 500w,/static/9081600d2a94f671992c18493c273fd8/59b61/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.webp 944w&quot; sizes=&quot;(max-width: 944px) 100vw, 944px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/9081600d2a94f671992c18493c273fd8/63868/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.png 250w,/static/9081600d2a94f671992c18493c273fd8/0b533/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.png 500w,/static/9081600d2a94f671992c18493c273fd8/966a0/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.png 944w&quot; sizes=&quot;(max-width: 944px) 100vw, 944px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/9081600d2a94f671992c18493c273fd8/966a0/%25e5%25b1%258f%25e5%25b9%2595%25e5%25bf%25ab%25e7%2585%25a7%25202019-06-08%2520%25e4%25b8%258b%25e5%258d%258810.53.51.png&quot; alt=&quot;网页加载时间&quot; title=&quot;网页加载时间&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;这部分数据不太好看，平均加载时间达到 9.87 秒。&lt;/p&gt;&lt;p&gt;主要有两点原因：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;没有使用 Lazy Loading 加载图片，最近几篇文章的图片较多；&lt;/li&gt;&lt;li&gt;评论使用 Disqus，部分地区访问会出现异常。&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;未来计划&quot;&gt;未来计划&lt;/h2&gt;&lt;p&gt;下一步主要是针对&lt;strong&gt;图片加载作优化&lt;/strong&gt;，除了 Lazy Loading 外，还会采用 Responsive images 对图片进行处理，根据分辨率加载合适大小的图片。&lt;/p&gt;&lt;p&gt;同时，需要注意的是加载时间并不代表用户实际的体验：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A second example of a performance myth is that &lt;strong&gt;performance is only a concern at load time&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;[…]&lt;/p&gt;&lt;p&gt;Likewise, traditional performance metrics like &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Events/load&quot;&gt;load&lt;/a&gt; time or &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded&quot;&gt;DOMContentLoaded&lt;/a&gt; time are extremely unreliable since when they occur may or may not correspond to when the user thinks the app is loaded.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我会尝试使用 &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver&quot;&gt;PerformanceObserver&lt;/a&gt; 监控&lt;strong&gt;以用户为中心的性能&lt;/strong&gt;指标：首次绘制、首次内容绘制和首次有效绘制时间等。&lt;/p&gt;&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/&quot;&gt;Assessing Loading Performance in Real Life with Navigation and Resource Timing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics&quot;&gt;User-centric Performance Metrics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[流体排版简介]]></title><description><![CDATA[在传统网页排版中，字体大小一般是固定不变的，例如 16px 在桌面端和移动端都能有不错的显示效果。但是，随着显示器分辨率越来越多样，从 4k 到 5k 甚至 8k，固定字号似乎行不通了。不可能存在一个完美的字体大小覆盖所有的分辨率！好在我们可以采用媒体查询（Media…]]></description><link>https://www.giuem.com/blog/a-brief-introduction-to-fluid-typography</link><guid isPermaLink="false">https://www.giuem.com/blog/a-brief-introduction-to-fluid-typography</guid><pubDate>Thu, 02 May 2019 17:27:49 GMT</pubDate><content:encoded>&lt;p&gt;在传统网页排版中，字体大小一般是固定不变的，例如 16px 在桌面端和移动端都能有不错的显示效果。但是，随着显示器分辨率越来越多样，从 4k 到 5k 甚至 8k，固定字号似乎行不通了。不可能存在一个完美的字体大小覆盖所有的分辨率！好在我们可以采用媒体查询（Media queries）设置断点，然后根据不同的可视宽度设置不同字号。但这种方法并不完美，当处于断点之间时，整个页面会发生突变!&lt;/p&gt;&lt;p&gt;幸好，这一切可以通过流体排版解决。&lt;/p&gt;&lt;h2 id=&quot;什么是流体排版&quot;&gt;什么是流体排版&lt;/h2&gt;&lt;p&gt;事先声明，流体排版这个词是我自己瞎翻的，英文单词为 Fluid Typography。所以如果你发现搜索「流体排版」好像查不到什么，不妨试试搜索 “Fluid Typography”。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://zh.wikipedia.org/zh-hans/%E6%B5%81%E4%BD%93&quot;&gt;维基百科&lt;/a&gt;是这样定义流体的：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;流体（英语：Fluid）就是在承受剪应力时将会发生连续变形的物体，包括气体和液体。流体没有一定形状，几乎可以任意改变形态，或者分裂。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;那么流体排版也有流体二字，那么肯定和流体有关咯~&lt;/p&gt;&lt;p&gt;是的，流体排版指的是根据浏览器的视口（viewport）大小，响应式地改变字体大小。这和开头说的通过媒体查询方式实现的“伪”响应式不同，它的变化是连续的，不会出现突变。&lt;/p&gt;&lt;p&gt;在网页开发中，我们可以利用视口单位（Viewport units）实现流体排版：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;vw&lt;/code&gt;：视口宽度的 1/100&lt;/li&gt;&lt;li&gt;&lt;code&gt;vh&lt;/code&gt;：视口高度的 1/100&lt;/li&gt;&lt;li&gt;&lt;code&gt;vmin&lt;/code&gt;：视口宽度和高度较小者的 1/100&lt;/li&gt;&lt;li&gt;&lt;code&gt;vmax&lt;/code&gt;：视口宽度和高度较大者的 1/100&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;通过使用视口单位，我们可以很容易实现流体排版，&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;html {
  font-size: 1.5vw;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但是单纯使用视口单位实现流体排版其实并不完美：我们无法限制最大最小字体大小。&lt;/p&gt;&lt;h2 id=&quot;更好的方式&quot;&gt;更好的方式&lt;/h2&gt;&lt;p&gt;单纯使用视口单位不能限制最大最小字体大小，但结合前面提到的媒体查询，分别在最小和最大视口宽度处设置断点就可以了。&lt;/p&gt;&lt;p&gt;这个问题可以变为已知坐标轴（x 轴为视口宽度；y 轴为字体大小）上两点，给定任意一个 x，求经过这两点构成直线上的 y 值。&lt;/p&gt;&lt;p&gt;比如我们的字体大小变化访问为 16px - 24px，对应视口宽度为 320px - 2560px，那么，&lt;/p&gt;&lt;ul&gt;&lt;li&gt;font-size 初始为 16px；&lt;/li&gt;&lt;li&gt;当 &lt;code&gt;min-witdh = 240px&lt;/code&gt; 时，font-size 为 &lt;code&gt;(16 + (24 - 16) * ([当前视口宽度] - 320) / (2560 - 320))px&lt;/code&gt;，其中涉及计算，需要使用 &lt;code&gt;calc()&lt;/code&gt;。翻译成 CSS 就是 &lt;code&gt;calc(16px + 8 * (100vw - 320px) / 2240)&lt;/code&gt;；&lt;/li&gt;&lt;li&gt;当 &lt;code&gt;min-witdh = 2560px&lt;/code&gt; 时，font-size 为 24px。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;最终的 CSS 长这样，&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;html {
  font-size: 16px;
}

@media screen and (min-width: 320px) {
  html {
    font-size: calc(16px + 8 * (100vw - 320px) / 2240);
  }
}

@media screen and (min-width: 2560px) {
  html {
    font-size: 24px;
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上设定和代码来自本博客，你可以尝试更改浏览器窗口大小来体验字体大小的变化。&lt;/p&gt;&lt;p&gt;同时，为了更好的阅读体验，我们希望在桌面设备上不同标题字体尽可能区分，而在移动端不同标题的差距应该缩小，对于 h1 - h6 也要设置不同的缩放比例。&lt;/p&gt;&lt;p&gt;这种方式在现在浏览器上能完美工作，如果要兼容 IE 等其他过气浏览器，我推荐使用 &lt;a href=&quot;https://github.com/glyphic-co/textblock&quot;&gt;Textblock&lt;/a&gt;。&lt;/p&gt;&lt;h2 id=&quot;扩展阅读&quot;&gt;扩展阅读&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://css-tricks.com/snippets/css/fluid-typography/&quot;&gt;Fluid Typography&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://medium.com/beamly/what-is-fluid-typography-and-should-i-be-using-it-44a1b7125205&quot;&gt;What is Fluid Typography and should I be using it?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[J1900 灵车上车小记]]></title><description><![CDATA[上了最近很火的“蜗牛星际”J1900 NAS 矿车。一般说到矿车，都是大功率电源、显卡这些。这批 J1900 矿车其实挖的是另一种矿—— IPFS / CAI。一开始卖 5000 多一套，都后来 CAI 价格跌到谷底，矿老板清盘，这才有了这批车。 目前这批车主要有…]]></description><link>https://www.giuem.com/blog/j1900-nas</link><guid isPermaLink="false">https://www.giuem.com/blog/j1900-nas</guid><pubDate>Sat, 09 Mar 2019 17:51:12 GMT</pubDate><content:encoded>&lt;p&gt;上了最近很火的“蜗牛星际”J1900 NAS 矿车。一般说到矿车，都是大功率电源、显卡这些。这批 J1900 矿车其实挖的是另一种矿—— IPFS / CAI。一开始卖 5000 多一套，都后来 CAI 价格跌到谷底，矿老板清盘，这才有了这批车。&lt;/p&gt;&lt;p&gt;目前这批车主要有 4 种车型。（图转）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:992px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:80%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAADmklEQVQozyXTW0xcRQCA4Un6aJ+amFAjSVOMkQD1UgK2iUoXNbFtgmKpQU1IobHFpA/EvjQxjfWBtirVxDZqvWAhKSE8SDQF2bXblAKFBXGXZdnl3M+ZMzNn5sy57OWUQixjGl//7/kHnucVi8XNzc3t7e2tra3tR4+iKFJkWdM0x3EsC0IL2jaKoujhw81KpRKGQRj4lXLJ8zjgnAshUqlUf3//wMDAt1evLi4ujYyOXf7iy4uXLo+Pj09NTfzw/bXhoV//+P03QvBaQU7OLt1dWEGEgjAMhRDDwzda33j9RE93S+zQ9R9/6jnV+2Jj456amtO9H5//9GxzU0PLq80fdh6dnZu+eWv+m+H4V4MT6WwB+L4vhBgaunEo9krH8XeaDzT9PDj4bkfHc3X1u5+uPvnRqQvnP3lp396DTQ0tB+vHxkaaW9+ua9i/74XGv+5MgyAIhBCjo6NtbUe7ut4/fOStkZGb73V21jU0VO1+qru758qlc+1Hmj84Fms/3BSfutXVe3bPM7X7D7w2m1oChBBVVRFCuVxOltXCuqSqWiIRv528Pfnn5Mzc3NpqZuH+9PLfqbl7d/P5tXuz80vLmfnFfwwTAtu2V3M5BM3l1LxtSRAWXMeUCzmfYmYYWFUpcRB2PB8jJHGOMSbFIkNIdhwdEIxs6kmJXyb7YvJEzGLVRqJlpv+4dqGN1eyltbVBepkWNzk7o6hPhOF3YSiC4BxjO13eBcLA3xICJq4t9D6bGa7GPkiPPJnsa8Rn6isAlHbs+Hd1RQgBzWOGATY2LgohKD2taQDjVkCQzUsbWuJ64bMYmXrZ39gJE8/LV9q9z9/0du0KqqqibGZDCJed4ByUy18/eCB8v48QQGk7MAzj/vwCQ4YPJYYKNs66OO9BxbcUlM3i1VWfUs/3KZVtO+26Juc+5zohK4Tkgappd5JJ3bSQw1we2DblXmhjxwuKhHOHc+55CCH+P3EfQovzEGNOiAskSYrH46qi6JrKHKLI6y6jqiJzRk1dtwzDZVTXtMdRlVyXKorCXWYYKsY2gBCmUimHUlnTHM4lTaOcy5pGXdcwTQNCwpim6w5j2VzOYUxSFOq6uXzeRgg8XgdCBqGUSrmSFOo6N001nYaSBBXVzudLGBUpZaoqZTIBQgHGAUJSOo10HVDHsTD21tdLyWRlZiaKxyuZTFmWSqZZxrisKJGmRYRUVLVs25FpRrZdsayKYXiW9R8h6dOgPhtM8QAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/c216ab98d5b0616967a65a30afe59a4f/1e0be/img_2475.webp 250w,/static/c216ab98d5b0616967a65a30afe59a4f/b0a15/img_2475.webp 500w,/static/c216ab98d5b0616967a65a30afe59a4f/9012d/img_2475.webp 992w&quot; sizes=&quot;(max-width: 992px) 100vw, 992px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/c216ab98d5b0616967a65a30afe59a4f/63868/img_2475.png 250w,/static/c216ab98d5b0616967a65a30afe59a4f/0b533/img_2475.png 500w,/static/c216ab98d5b0616967a65a30afe59a4f/91f10/img_2475.png 992w&quot; sizes=&quot;(max-width: 992px) 100vw, 992px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/c216ab98d5b0616967a65a30afe59a4f/91f10/img_2475.png&quot; alt=&quot;J1900 型号表&quot; title=&quot;J1900 型号表&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;我上的是 B 款双网口，闲鱼找了一家说是带纸箱，全新未下矿的。360 大洋入手。现在价格偏高，我认为比较合理的价格应该是双网口 300 左右，单网口 220 左右。据说市场上有 20 万台存货，如果不急可以先等等，后续应该会降价不少的。&lt;/p&gt;&lt;p&gt;等待快递到达的过程中，不少网友说双网口翻车了（见上图翻车点）。我想着我买的 B 款双网口，这不完了吗！结果快递到了后一看竟然寄来的是单网口版本的，成功漂移，车翻回来了。不过，现在双网口的好像也能安全&lt;a href=&quot;https://post.smzdm.com/p/amm0x8kz/&quot;&gt;下车&lt;/a&gt;了。&lt;/p&gt;&lt;h2 id=&quot;开箱&quot;&gt;开箱&lt;/h2&gt;&lt;p&gt;机箱是万由 NAS 的，颜值还可以。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAYBBAUD/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAED/9oADAMBAAIQAxAAAAG/RnMl0DHBlXWzjclMYg//xAAcEAACAgMBAQAAAAAAAAAAAAABAgADBBESIRD/2gAIAQEAAQUCsTw2cw5MybG2W9LTJHdboVmvjAQqs//EABcRAAMBAAAAAAAAAAAAAAAAAAAQERL/2gAIAQMBAT8BpVo//8QAFhEAAwAAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/ASP/xAAbEAACAgMBAAAAAAAAAAAAAAAAARExECFBYf/aAAgBAQAGPwJMspHUk4Xpvl4iDazRR//EABwQAQADAAMBAQAAAAAAAAAAAAEAESExQVEQYf/aAAgBAQABPyHvA97G4Xi3srxugHEUIdI4HfkW4iG/75Ekbd2W+KNEE4Z//9oADAMBAAIAAwAAABBv3XL/xAAYEQADAQEAAAAAAAAAAAAAAAAAAREQUf/aAAgBAwEBPxBZup1F8P/EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxDIGf/EABsQAQADAQEBAQAAAAAAAAAAAAEAESExQWGB/9oACAEBAAE/EDbQDr6idEebsGLrXbSH5hi8Nb93Mh2Iigp8AM/Yy5mclrzdjasekCBVw1lmpGLbF9s7KwE+E//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/658a76644b278018d4edd189829dd59e/1e0be/img_2476.webp 250w,/static/658a76644b278018d4edd189829dd59e/b0a15/img_2476.webp 500w,/static/658a76644b278018d4edd189829dd59e/a5d4d/img_2476.webp 1000w,/static/658a76644b278018d4edd189829dd59e/293e0/img_2476.webp 1500w,/static/658a76644b278018d4edd189829dd59e/b84eb/img_2476.webp 2000w,/static/658a76644b278018d4edd189829dd59e/e51ec/img_2476.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/658a76644b278018d4edd189829dd59e/0479a/img_2476.jpg 250w,/static/658a76644b278018d4edd189829dd59e/41099/img_2476.jpg 500w,/static/658a76644b278018d4edd189829dd59e/a2510/img_2476.jpg 1000w,/static/658a76644b278018d4edd189829dd59e/c58a3/img_2476.jpg 1500w,/static/658a76644b278018d4edd189829dd59e/3acf0/img_2476.jpg 2000w,/static/658a76644b278018d4edd189829dd59e/9568a/img_2476.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/658a76644b278018d4edd189829dd59e/a2510/img_2476.jpg&quot; alt=&quot;机箱外观&quot; title=&quot;机箱外观&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;看机箱屁股，确认是单网口版的，有两个 USB 3.0 接口。根据型号表可得出网卡为 I211。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEBQL/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABfdgdGwYZEvcYPEFf/8QAHBAAAQUAAwAAAAAAAAAAAAAAAQACERITAyAx/9oACAEBAAEFAtHBsqxlgutqgcxViF6II6f/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAeEAACAQMFAAAAAAAAAAAAAAAAARECITEQICJRYf/aAAgBAQAGPwKnlDjR2Z0NLBkse7f/xAAeEAACAgICAwAAAAAAAAAAAAABEQAhMUFhcSBRkf/aAAgBAQABPyEsQKUEL5ikm0NEQiBQ6xcE5YLcbHmO4QySswZJdSi+2pxvvh//2gAMAwEAAgADAAAAEHPugP/EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAwEBPxBnf//EABYRAAMAAAAAAAAAAAAAAAAAAAAQIf/aAAgBAgEBPxAr/8QAHxABAAICAgIDAAAAAAAAAAAAAREhADFRYRBBgaHR/9oACAEBAAE/EJw2yyPvDjCrJytZ1lHBYtHOCi27Ey4BCDo7g2z3D9Yu5ZIlqtGVb9lvL9gGIJG99YUI+B/cfP8A/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/1755ef349eedab606dec9a40204e855f/1e0be/img_2479.webp 250w,/static/1755ef349eedab606dec9a40204e855f/b0a15/img_2479.webp 500w,/static/1755ef349eedab606dec9a40204e855f/a5d4d/img_2479.webp 1000w,/static/1755ef349eedab606dec9a40204e855f/293e0/img_2479.webp 1500w,/static/1755ef349eedab606dec9a40204e855f/b84eb/img_2479.webp 2000w,/static/1755ef349eedab606dec9a40204e855f/2cbbc/img_2479.webp 2930w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/1755ef349eedab606dec9a40204e855f/0479a/img_2479.jpg 250w,/static/1755ef349eedab606dec9a40204e855f/41099/img_2479.jpg 500w,/static/1755ef349eedab606dec9a40204e855f/a2510/img_2479.jpg 1000w,/static/1755ef349eedab606dec9a40204e855f/c58a3/img_2479.jpg 1500w,/static/1755ef349eedab606dec9a40204e855f/3acf0/img_2479.jpg 2000w,/static/1755ef349eedab606dec9a40204e855f/7f48f/img_2479.jpg 2930w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/1755ef349eedab606dec9a40204e855f/a2510/img_2479.jpg&quot; alt=&quot;机箱背面&quot; title=&quot;机箱背面&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;150W 的山寨 1U 电源，感觉不是很放心，为了硬盘安全最好换一个好点的。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAwUC/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAbWJ5hAXDaUszzOKxP/EABsQAAMAAwEBAAAAAAAAAAAAAAECAwAREiIh/9oACAEBAAEFAhCbATRFt8dR4fLH3VtPeo5ZtmxIarHnP//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABsQAAEFAQEAAAAAAAAAAAAAAAEAAhARITFS/9oACAEBAAY/Amkt6BapvFiZfkT0LIxGP//EABsQAAMAAwEBAAAAAAAAAAAAAAABESExUUFx/9oACAEBAAE/IUlm2mr4StK6RLSHOOEESWxOj8MAka8KV5+DbN0imiiHKMez/9oADAMBAAIAAwAAABB8xH//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAWEQADAAAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QFf/EAB4QAQEBAAEEAwAAAAAAAAAAAAERAEEQITFxUWHR/9oACAEBAAE/EEIWAqo4N5YYxb3fe4Si+dQKNihGHDqZj6Z+4xKAZk8BIG3nmYF2DtlIlJXHpCJPeDqE+Dpf/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/55522758ed482b0a6d87aabd97ffd705/1e0be/img_2477.webp 250w,/static/55522758ed482b0a6d87aabd97ffd705/b0a15/img_2477.webp 500w,/static/55522758ed482b0a6d87aabd97ffd705/a5d4d/img_2477.webp 1000w,/static/55522758ed482b0a6d87aabd97ffd705/293e0/img_2477.webp 1500w,/static/55522758ed482b0a6d87aabd97ffd705/b84eb/img_2477.webp 2000w,/static/55522758ed482b0a6d87aabd97ffd705/884fd/img_2477.webp 2760w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/55522758ed482b0a6d87aabd97ffd705/0479a/img_2477.jpg 250w,/static/55522758ed482b0a6d87aabd97ffd705/41099/img_2477.jpg 500w,/static/55522758ed482b0a6d87aabd97ffd705/a2510/img_2477.jpg 1000w,/static/55522758ed482b0a6d87aabd97ffd705/c58a3/img_2477.jpg 1500w,/static/55522758ed482b0a6d87aabd97ffd705/3acf0/img_2477.jpg 2000w,/static/55522758ed482b0a6d87aabd97ffd705/45df8/img_2477.jpg 2760w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/55522758ed482b0a6d87aabd97ffd705/a2510/img_2477.jpg&quot; alt=&quot;电源&quot; title=&quot;电源&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;CPU 由于是 J1900，TDP 只有 10 W。整个机箱一共两个风扇，一个后置机箱风扇和一个电源风扇。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAECBAUGA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAF3CVWRoxpUaDVrGhM4H//EAB0QAAIBBAMAAAAAAAAAAAAAAAECAwAREhMUISP/2gAIAQEAAQUClc5BzlEfJxYxdGJrxShiOO1kBVN0lbHx2PX/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAfEAACAQQCAwAAAAAAAAAAAAAAAQIRISIyA5ESMVH/2gAIAQEABj8Clk1RiyZGtfRytrtFyI/Gl7CuhL4byN32bM//xAAcEAEAAgMBAQEAAAAAAAAAAAABABEhMUGRUdH/2gAIAQEAAT8ho1SnceF+fYhSTSUQtqmSIbbgy8fSB9r2eR63LF6ViL79peog/wB5/9oADAMBAAIAAwAAABAcFD3/xAAYEQACAwAAAAAAAAAAAAAAAAAAEQEQMf/aAAgBAwEBPxCNpjP/xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQIBAT8QW2Sxv//EAB8QAQACAQQDAQAAAAAAAAAAAAEAESExQWFxUYGR4f/aAAgBAQABPxBRMsjAG/yBouTloCHnuCGRyF2xyvqAa2a7ZSBXAIIegpB/CU1BrvuHAUal0bccEY9UVSyZf0mS5KtmVQij7Z//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/84b0546888bfff803440ea19506b0448/1e0be/img_2478.webp 250w,/static/84b0546888bfff803440ea19506b0448/b0a15/img_2478.webp 500w,/static/84b0546888bfff803440ea19506b0448/a5d4d/img_2478.webp 1000w,/static/84b0546888bfff803440ea19506b0448/293e0/img_2478.webp 1500w,/static/84b0546888bfff803440ea19506b0448/b84eb/img_2478.webp 2000w,/static/84b0546888bfff803440ea19506b0448/e51ec/img_2478.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/84b0546888bfff803440ea19506b0448/0479a/img_2478.jpg 250w,/static/84b0546888bfff803440ea19506b0448/41099/img_2478.jpg 500w,/static/84b0546888bfff803440ea19506b0448/a2510/img_2478.jpg 1000w,/static/84b0546888bfff803440ea19506b0448/c58a3/img_2478.jpg 1500w,/static/84b0546888bfff803440ea19506b0448/3acf0/img_2478.jpg 2000w,/static/84b0546888bfff803440ea19506b0448/9568a/img_2478.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/84b0546888bfff803440ea19506b0448/a2510/img_2478.jpg&quot; alt=&quot;机箱风扇&quot; title=&quot;机箱风扇&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;风扇声音非常大，3 PIN 接口不支持 PWM 调速，bios 里也没有 DC 调速选项，果断加一条减速线解决。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMBAgUE/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAc5OhxwskGIYoqVF/8QAHRAAAgIBBQAAAAAAAAAAAAAAAQIAAxMQESEiMf/aAAgBAQABBQK3cBa2aYzMJuZg9DZDOQH7GH06f//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EAB4QAAIBAwUAAAAAAAAAAAAAAAABIQIRMRIgMlGh/9oACAEBAAY/AtHRCJgqs1yHS36ZMsvt/8QAHRABAAICAwEBAAAAAAAAAAAAAQARQVEhMZFhgf/aAAgBAQABPyEjsIT1h63BKdmmDmqcre4IcfkaF+xeBRkuCwvsK3MeJ2lz/9oADAMBAAIAAwAAABAzFo7/xAAZEQEAAgMAAAAAAAAAAAAAAAABABARIVH/2gAIAQMBAT8QBZqsnJ//xAAYEQACAwAAAAAAAAAAAAAAAAAAARARIf/aAAgBAgEBPxBM2KP/xAAgEAEAAgIBBAMAAAAAAAAAAAABABEhMUFRYXGhkdHw/9oACAEBAAE/EBojVrqP7xE7bDT9RGVE5afiCxHbQAKA9wOmBVnZxVRuUN7Va92Yk2NGl8+csvxcZsvtmHY8kbtbBiY0OksT/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/872b25bd3b39b57fe6deb382b78ca889/1e0be/img_2480.webp 250w,/static/872b25bd3b39b57fe6deb382b78ca889/b0a15/img_2480.webp 500w,/static/872b25bd3b39b57fe6deb382b78ca889/a5d4d/img_2480.webp 1000w,/static/872b25bd3b39b57fe6deb382b78ca889/293e0/img_2480.webp 1500w,/static/872b25bd3b39b57fe6deb382b78ca889/b84eb/img_2480.webp 2000w,/static/872b25bd3b39b57fe6deb382b78ca889/93fa3/img_2480.webp 2422w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/872b25bd3b39b57fe6deb382b78ca889/0479a/img_2480.jpg 250w,/static/872b25bd3b39b57fe6deb382b78ca889/41099/img_2480.jpg 500w,/static/872b25bd3b39b57fe6deb382b78ca889/a2510/img_2480.jpg 1000w,/static/872b25bd3b39b57fe6deb382b78ca889/c58a3/img_2480.jpg 1500w,/static/872b25bd3b39b57fe6deb382b78ca889/3acf0/img_2480.jpg 2000w,/static/872b25bd3b39b57fe6deb382b78ca889/21b1e/img_2480.jpg 2422w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/872b25bd3b39b57fe6deb382b78ca889/a2510/img_2480.jpg&quot; alt=&quot;风扇3PIN接口&quot; title=&quot;风扇3PIN接口&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:100%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIDAf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAAB2nGLGrMnICkN/8QAGRAAAwADAAAAAAAAAAAAAAAAAAERAhBB/9oACAEBAAEFAipFHmdu6f/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABoQAAICAwAAAAAAAAAAAAAAAAABEBEgITH/2gAIAQEABj8CNxSLfcf/xAAZEAEBAAMBAAAAAAAAAAAAAAABABEhMbH/2gAIAQEAAT8hzPYAsnfLY7Eg68+JwZ1Kyr//2gAMAwEAAgADAAAAEOTPvP/EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAwEBPxBnf//EABYRAQEBAAAAAAAAAAAAAAAAABABEf/aAAgBAgEBPxDCH//EABwQAQACAgMBAAAAAAAAAAAAAAEAETFxIUHBUf/aAAgBAQABPxBgi7VlYXqAcDmvNQahzgwbZj7r+ans4iyVtQHfEMNMc2s//9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/69877012275d297070f7ba0d9a2fa751/1e0be/img_2487.webp 250w,/static/69877012275d297070f7ba0d9a2fa751/b0a15/img_2487.webp 500w,/static/69877012275d297070f7ba0d9a2fa751/a5d4d/img_2487.webp 1000w,/static/69877012275d297070f7ba0d9a2fa751/293e0/img_2487.webp 1500w,/static/69877012275d297070f7ba0d9a2fa751/b84eb/img_2487.webp 2000w,/static/69877012275d297070f7ba0d9a2fa751/004ee/img_2487.webp 2704w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/69877012275d297070f7ba0d9a2fa751/0479a/img_2487.jpg 250w,/static/69877012275d297070f7ba0d9a2fa751/41099/img_2487.jpg 500w,/static/69877012275d297070f7ba0d9a2fa751/a2510/img_2487.jpg 1000w,/static/69877012275d297070f7ba0d9a2fa751/c58a3/img_2487.jpg 1500w,/static/69877012275d297070f7ba0d9a2fa751/3acf0/img_2487.jpg 2000w,/static/69877012275d297070f7ba0d9a2fa751/f53fb/img_2487.jpg 2704w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/69877012275d297070f7ba0d9a2fa751/a2510/img_2487.jpg&quot; alt=&quot;风扇减速线&quot; title=&quot;风扇减速线&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;看了下主板好像不是很好拆，就没接着拆解了。&lt;/p&gt;&lt;h2 id=&quot;nas-系统选择&quot;&gt;NAS 系统选择&lt;/h2&gt;&lt;p&gt;谈到 NAS 系统，大部分人首先想到是黑群晖。但是黑裙每次升级都要小心翼翼，一不小心系统整崩了就完了。其实除了黑裙，还有其他不错的 NAS 系统可供选择，比如 &lt;a href=&quot;https://freenas.org/&quot;&gt;FreeNAS&lt;/a&gt;, &lt;a href=&quot;https://www.openmediavault.org/&quot;&gt;OpenMediaVault&lt;/a&gt;, &lt;a href=&quot;https://unraid.net/&quot;&gt;Unraid&lt;/a&gt; 等等。&lt;/p&gt;&lt;p&gt;经过对比，FreeNAS 的&lt;a href=&quot;https://www.ixsystems.com/documentation/freenas/11.2/intro.html#hardware-recommendations&quot;&gt;硬件需求&lt;/a&gt;太高，这套配置带不起；Unraid 收费不考虑；而 OMV (OpenMediaVault) 的硬件需求极低，你甚至可以用树莓派运行它。所以我决定选用 OMV 作为 NAS 系统。&lt;/p&gt;&lt;h2 id=&quot;系统安装&quot;&gt;系统安装&lt;/h2&gt;&lt;p&gt;OMV 可以通过两种方式进行安装：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;直接通过&lt;a href=&quot;https://sourceforge.net/projects/openmediavault/files/&quot;&gt;官方 ISO&lt;/a&gt; 安装&lt;/li&gt;&lt;li&gt;基于 Debian 9 系统安装&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这里我使用第二种方式，因为官方 ISO &lt;strong&gt;不支持 UEFI 安装&lt;/strong&gt;。&lt;/p&gt;&lt;h3 id=&quot;制作安装-u-盘&quot;&gt;制作安装 U 盘&lt;/h3&gt;&lt;p&gt;因为系统盘只有 16 G，需要最小化安装 Debian 9。&lt;/p&gt;&lt;p&gt;下载&lt;a href=&quot;https://www.debian.org/CD/netinst/&quot;&gt;最小光盘映像&lt;/a&gt;，然后通过 &lt;a href=&quot;https://sourceforge.net/projects/win32diskimager/&quot;&gt;Win32 Disk Imager&lt;/a&gt; 将映像文件写入 U 盘。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:482px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:69.60000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB5klEQVQoz4WSf2+bMBCG+f6fqtKqRMvCsrQNBQIE/NvG2GebBtKu1UZo0v4xdY9O1t1J59d3vignioi2QGyzy3bFoWioMN6Pv/vT64c9v/XPb+H06oYXEwbtn/rhOeUhYkKV+5xRopU0nXZg++DHcTiNwzgM43C8nMdheDqNxz4ExtjLaWiUj/IDWiwWWb6XqlWtFkpJ1XIhuRBCqjnZGdsZ22qDeYcx2Ww2WsmkFlF2IIiKtKh22f7+MUuyomzIfZLdJ/ljXuZlUyEqO1AGENffNqisDnme11V5V5CIcPVjteKc930fvJ8sBABwAAAWrAWwVxzYKWuh925Pu6g4oNXqe1VVdV2naVoUxW6XGGPsJ2DmEhpjg7M50RFiQgiulKKU1nWNECrL8qPgX1iA3sOkLLXRupVnlFIAEEKwX2LsRbkhfLlc3N7ebrfbOI6FEPMDv1YO7qyMmfwZxw8PO+fcuZ//03XmXZlwpXXbti3n56+V8upMwzj713CGcxGcLZiJGioQajDGc9nsSCkJIfICYwwhNF+hlCKESs5SpKKsOMTr9Xa7xRinabpcLimlGOP1eo0QImeSJLm5uamqihDCOY/j+OHu17RhqoPgvXPTUjjn5g0BAO/9dUKf81Po/bH3f3v+Aw1r+0V6W2gAAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/41d9d03a1d7e0d20521bc1a54807e1a3/1e0be/snipaste_2019-03-09_18-56-54.webp 250w,/static/41d9d03a1d7e0d20521bc1a54807e1a3/da7ca/snipaste_2019-03-09_18-56-54.webp 482w&quot; sizes=&quot;(max-width: 482px) 100vw, 482px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/41d9d03a1d7e0d20521bc1a54807e1a3/63868/snipaste_2019-03-09_18-56-54.png 250w,/static/41d9d03a1d7e0d20521bc1a54807e1a3/37e0d/snipaste_2019-03-09_18-56-54.png 482w&quot; sizes=&quot;(max-width: 482px) 100vw, 482px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/41d9d03a1d7e0d20521bc1a54807e1a3/37e0d/snipaste_2019-03-09_18-56-54.png&quot; alt=&quot;Win32 Disk Imager 写入映像&quot; title=&quot;Win32 Disk Imager 写入映像&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;安装系统&quot;&gt;安装系统&lt;/h3&gt;&lt;p&gt;插上 U 盘，开机按 F7，选择 U 盘启动。安装教程网上一堆，这里不作过多展示。不过有几点需要注意。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;由于采用 UEFI 方式，需要建一个 EFI 分区。我的分区方式为 500 MB 的 EFI 分区，4G 的 Swap，剩下的全给根目录（就 16G 没啥好分的）。&lt;/li&gt;&lt;li&gt;为了最小的系统空间占用，要安装软件只选择 SSH server。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;安装完后，登录系统，输入 &lt;code&gt;ip a&lt;/code&gt; 看一下内网 IP。然后就可以机器丢一边，用 SSH 连接咯。&lt;/p&gt;&lt;h3 id=&quot;安装-omv&quot;&gt;安装 OMV&lt;/h3&gt;&lt;p&gt;添加 OMV 源&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/apt/sources.list.d/openmediavault.list
deb http://packages.openmediavault.org/public arrakis main
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis main
## Uncomment the following line to add software from the proposed repository.
# deb http://packages.openmediavault.org/public arrakis-proposed main
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb http://packages.openmediavault.org/public arrakis partner
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis partner
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用 Root 用户进行安装&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export LANG=C
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get --allow-unauthenticated install openmediavault-keyring
apt-get update
apt-get --yes --auto-remove --show-upgraded \
    --allow-downgrades --allow-change-held-packages \
    --no-install-recommends \
    --option Dpkg::Options::=&amp;quot;--force-confdef&amp;quot; \
    --option DPkg::Options::=&amp;quot;--force-confold&amp;quot; \
    install postfix openmediavault
# Initialize the system and database.
omv-initsystem
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装完成后，浏览器输入 NAS 的 IP 地址即可登录到管理界面。默认用户名密码为 &lt;code&gt;admin / openmediavault&lt;/code&gt;。&lt;/p&gt;&lt;h3 id=&quot;安装-omv-extras&quot;&gt;安装 OMV-Extras&lt;/h3&gt;&lt;p&gt;OMV-Extras 提供一些额外的插件，比如 ZFS，Docker，Downloader 等等。安装方式很简单，参考&lt;a href=&quot;http://omv-extras.org/joomla/index.php/guides&quot;&gt;官方说明&lt;/a&gt;。&lt;/p&gt;&lt;h3 id=&quot;一些优化&quot;&gt;一些优化&lt;/h3&gt;&lt;h4 id=&quot;bios-设置&quot;&gt;BIOS 设置&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;关闭通电自启&lt;/strong&gt;：Advanced - ACPI Settings - PWRON After Power Loss - Always off&lt;/li&gt;&lt;li&gt;&lt;strong&gt;开启热插拔&lt;/strong&gt;：Advanced - SATA Configure - SATA Port1 HotPlug - Enabled&lt;/li&gt;&lt;/ul&gt;&lt;h4 id=&quot;更换国内镜像&quot;&gt;更换国内镜像&lt;/h4&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sed -i &amp;#x27;s/deb.debian.org/mirrors.ustc.edu.cn/g&amp;#x27; /etc/apt/sources.list
sed -i &amp;#x27;s|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g&amp;#x27; /etc/apt/sources.list

sed -i &amp;#x27;s/download.docker.com/mirrors.ustc.edu.cn\/docker-ce/g&amp;#x27; /etc/apt/sources.list.d/omv-extras-org.list

sed -i &amp;#x27;s/httpredir.debian.org/mirrors.ustc.edu.cn/g&amp;#x27; /etc/apt/sources.list.d/openmediavault-kernel-backports.list

&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;关闭蜂鸣器&quot;&gt;关闭蜂鸣器&lt;/h4&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rmmod pcspkr
echo &amp;quot;blacklist pcspkr&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;omv-配置&quot;&gt;OMV 配置&lt;/h2&gt;&lt;p&gt;懒得写了，就简单说一下一些必要的配置&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;系统 - 常规设置&lt;/strong&gt;：修改登录密码&lt;/li&gt;&lt;li&gt;&lt;strong&gt;系统 - 插件&lt;/strong&gt;：安装插件，推荐 Docker，shellinabox，transmissionbt&lt;/li&gt;&lt;li&gt;&lt;strong&gt;系统 - OMV-Extras&lt;/strong&gt;：开启 Docker CE，开启 backports（可选）&lt;/li&gt;&lt;li&gt;&lt;strong&gt;储存器 - 磁盘&lt;/strong&gt;：配置磁盘的电源策略&lt;/li&gt;&lt;li&gt;&lt;strong&gt;储存器 - S.M.A.R.T&lt;/strong&gt;：开启 S.M.A.R.T&lt;/li&gt;&lt;li&gt;&lt;strong&gt;储存器 - RAID 管理&lt;/strong&gt;：建立软 RAID（可选）&lt;/li&gt;&lt;li&gt;&lt;strong&gt;储存器 - 文件系统&lt;/strong&gt;：创建文件系统，推荐 EXT4&lt;/li&gt;&lt;li&gt;&lt;strong&gt;访问权限管理 - 用户&lt;/strong&gt;：新建用户访问关系文件夹&lt;/li&gt;&lt;li&gt;&lt;strong&gt;访问权限管理 - 共享文件夹&lt;/strong&gt;：创建共享文件夹，可以设置访问权限。（关于访问权限设置，你需要更改文件夹的特权，而不是 ACL）&lt;/li&gt;&lt;li&gt;&lt;strong&gt;服务 - SMB&lt;/strong&gt;：开启 SMB 服务，设置共享文件夹&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;也可以看 B 站&lt;a href=&quot;https://www.bilibili.com/video/av33133974&quot;&gt;这个视频&lt;/a&gt;，虽然是 3.x 版本的，但操作基本一样。&lt;/p&gt;&lt;h2 id=&quot;测试&quot;&gt;测试&lt;/h2&gt;&lt;p&gt;测试硬盘为希捷酷鱼 1T，局域网内跑满千兆没有翻车~&lt;/p&gt;&lt;p&gt;不过还是不够快呐，本来想双网口搞链路聚合的（小声）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:449px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:65.60000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABs0lEQVQoz31RYW+bMBTk//+qbdq3Se2qaUlrSAkJBNKAwdjGfu/52RPpqk5bs9PJOlu+dye9LO/HfXveiqK9DD6kkBJyRI6vwtE7tUMLwXhaMM7GbludWQzeWq21d4v3Tk3j4ry1bpSDdRjTB4jX1+OE2YJcCPHw8KModl3bVdX+pR8vUuW5aKX5y8zMABCYY8B6oswAdW0jhGiak5712+RXV+Q/EON6NcYwR1hMrSib/KJRppRCDMgEBP6NQAgBfVgFMvVDf2yOvewPTb1Ys9Y+W5X3uTV2miellTZaaTWb+Tf1rIya9aytbrvTc1XWp3pXPqtxWM1HPfwcn1JKngEYiQnCGohMGGntEpFiAEZOzInDesYUQyV9Jt3SzR0iLW7x4AERCSkQBQIEWMsDEq4awaP3CA58YjqMkFkIu1w8Pok8F+WufLlcEMla45xLN/C+Ku3g7u7bp89fHrdbkedFUWw2m325n5S6/ov/N5OUQz9I7702elIrnPfXrcYPGcLqriRkjjglnobL8VBZa26l/ZtcT5iVAxx6810cvt4/5afxbMJJQTtTd5utot6E+2b5Bast6bGRkmD9AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/875977845e1a2cb954c64e765877280d/1e0be/snipaste_2019-03-09_23-36-42.webp 250w,/static/875977845e1a2cb954c64e765877280d/57bab/snipaste_2019-03-09_23-36-42.webp 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/875977845e1a2cb954c64e765877280d/63868/snipaste_2019-03-09_23-36-42.png 250w,/static/875977845e1a2cb954c64e765877280d/053a9/snipaste_2019-03-09_23-36-42.png 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/875977845e1a2cb954c64e765877280d/053a9/snipaste_2019-03-09_23-36-42.png&quot; alt=&quot;传输测试&quot; title=&quot;传输测试&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;参考链接&quot;&gt;参考链接&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;灵车讨论：&lt;a href=&quot;https://t.me/nasj1900&quot;&gt;https://t.me/nasj1900&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://post.smzdm.com/p/aek8d7dm/&quot;&gt;DIY 爱好者年度小作品 篇十四：错过了暴风酷播云的 NAS 车，抢上蜗牛星际车随手记&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://post.smzdm.com/p/akmrxplk/&quot;&gt;DIY 爱好者年度小作品 篇十六：蜗牛星际都四盘位 NAS 体验及简介&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://openmediavault.readthedocs.io/en/latest/&quot;&gt;openmediavault 4.0 documentation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[最强空气盘？HUS728T8TALE6L4 开箱与非专业简评]]></title><description><![CDATA[迫于最近沉迷 PT，加上学校 200M/80M 的带宽，电脑存了各种原盘 4K 电影，原来的存储空间已经完全不够用了。思来想去，在马云家剁了块 8T 硬盘 HUS728T8TALE6L4，双十二到手价 1496 元。 平时各种评测见得多了，这次就试着也做一期评测。(本文共 1…]]></description><link>https://www.giuem.com/blog/hus728t8tale6l4-review</link><guid isPermaLink="false">https://www.giuem.com/blog/hus728t8tale6l4-review</guid><pubDate>Sun, 16 Dec 2018 15:31:17 GMT</pubDate><content:encoded>&lt;p&gt;迫于最近沉迷 PT，加上学校 200M/80M 的带宽，电脑存了各种原盘 4K 电影，原来的存储空间已经完全不够用了。思来想去，在马云家剁了块 8T 硬盘 HUS728T8TALE6L4，双十二到手价 1496 元。&lt;/p&gt;&lt;p&gt;平时各种评测见得多了，这次就试着也做一期评测。(本文共 19 张图片，4.71 MB) &lt;/p&gt;&lt;h2 id=&quot;开箱评测&quot;&gt;开箱评测&lt;/h2&gt;&lt;p&gt;到手开箱，这包装不算特别厚实，感觉可以再来几层气泡纸。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAgAE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAFPG86Fkh//xAAaEAADAAMBAAAAAAAAAAAAAAAAAQIDERIT/9oACAEBAAEFAlNM86K6VY3ZTy66s//EABURAQEAAAAAAAAAAAAAAAAAABAh/9oACAEDAQE/Aaf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAESL/2gAIAQIBAT8Byj//xAAaEAACAwEBAAAAAAAAAAAAAAAAAREhIkGR/9oACAEBAAY/AuScIZdmV6zVs//EAB0QAAICAQUAAAAAAAAAAAAAAAERAFEQITFBYXH/2gAIAQEAAT8hGccO6RpUGYJBsKl4ekQSnY5//9oADAMBAAIAAwAAABBPP//EABcRAAMBAAAAAAAAAAAAAAAAAAABEVH/2gAIAQMBAT8QhT0//8QAFhEBAQEAAAAAAAAAAAAAAAAAAAFR/9oACAECAQE/EC5f/8QAGxABAQEAAwEBAAAAAAAAAAAAAREAIWFxgeH/2gAIAQEAAT8QMiwWNn7uGsnrkrX8UwYzm0vhw3TsEHRuTyNUN//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4efed0c87798739bad2672b6e64ecce6/1e0be/img_2272%252820181216-151550%2529.webp 250w,/static/4efed0c87798739bad2672b6e64ecce6/b0a15/img_2272%252820181216-151550%2529.webp 500w,/static/4efed0c87798739bad2672b6e64ecce6/a5d4d/img_2272%252820181216-151550%2529.webp 1000w,/static/4efed0c87798739bad2672b6e64ecce6/293e0/img_2272%252820181216-151550%2529.webp 1500w,/static/4efed0c87798739bad2672b6e64ecce6/b84eb/img_2272%252820181216-151550%2529.webp 2000w,/static/4efed0c87798739bad2672b6e64ecce6/4d964/img_2272%252820181216-151550%2529.webp 3752w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4efed0c87798739bad2672b6e64ecce6/0479a/img_2272%252820181216-151550%2529.jpg 250w,/static/4efed0c87798739bad2672b6e64ecce6/41099/img_2272%252820181216-151550%2529.jpg 500w,/static/4efed0c87798739bad2672b6e64ecce6/a2510/img_2272%252820181216-151550%2529.jpg 1000w,/static/4efed0c87798739bad2672b6e64ecce6/c58a3/img_2272%252820181216-151550%2529.jpg 1500w,/static/4efed0c87798739bad2672b6e64ecce6/3acf0/img_2272%252820181216-151550%2529.jpg 2000w,/static/4efed0c87798739bad2672b6e64ecce6/fdafd/img_2272%252820181216-151550%2529.jpg 3752w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4efed0c87798739bad2672b6e64ecce6/a2510/img_2272%252820181216-151550%2529.jpg&quot; alt=&quot;外包装&quot; title=&quot;外包装&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;拿掉气泡纸，又是一层包装。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIFAQP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABnFHUkDi1GlojnIX/xAAaEAEAAwEBAQAAAAAAAAAAAAABAAIRBDIh/9oACAEBAAEFAq12IhOU+ONr+uZCXzLelms1n//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABoQAAICAwAAAAAAAAAAAAAAABARAGEhQVH/2gAIAQEABj8C7Gg7lB6mAj//xAAbEAEAAwADAQAAAAAAAAAAAAABABEhMUFRYf/aAAgBAQABPyEL4q+PYbxHqIXxAt2IK2+HUwqgbarZNjW4G0Yw0T6Mfaf/2gAMAwEAAgADAAAAENTuwv/EABcRAQEBAQAAAAAAAAAAAAAAAAEAEBH/2gAIAQMBAT8QM7Bf/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/EFmT/8QAHhABAAICAgMBAAAAAAAAAAAAAQARIUExUXGhseH/2gAIAQEAAT8QNSjQGXwiIGSBtSN0u9Rh2sFOaov7EIi9roN49QgwBbqNZW6bcEAqDW66qOWmnJE1QcAx/agHnP/Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/28db6a70e5fe5f5477d8ac0c38be7d24/1e0be/img_2273%252820181216-151606%2529.webp 250w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/b0a15/img_2273%252820181216-151606%2529.webp 500w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/a5d4d/img_2273%252820181216-151606%2529.webp 1000w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/293e0/img_2273%252820181216-151606%2529.webp 1500w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/b84eb/img_2273%252820181216-151606%2529.webp 2000w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/e51ec/img_2273%252820181216-151606%2529.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/28db6a70e5fe5f5477d8ac0c38be7d24/0479a/img_2273%252820181216-151606%2529.jpg 250w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/41099/img_2273%252820181216-151606%2529.jpg 500w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/a2510/img_2273%252820181216-151606%2529.jpg 1000w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/c58a3/img_2273%252820181216-151606%2529.jpg 1500w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/3acf0/img_2273%252820181216-151606%2529.jpg 2000w,/static/28db6a70e5fe5f5477d8ac0c38be7d24/9568a/img_2273%252820181216-151606%2529.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/28db6a70e5fe5f5477d8ac0c38be7d24/a2510/img_2273%252820181216-151606%2529.jpg&quot; alt=&quot;内包装&quot; title=&quot;内包装&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;除了硬盘本体，还附赠一根 SATA3 数据线和 4 颗螺丝。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:75.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAwQA/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAECA//aAAwDAQACEAMQAAABiaQzN9PnP//EABsQAAICAwEAAAAAAAAAAAAAAAABERIDEyEi/9oACAEBAAEFAsXW9V5H5diT/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8BR//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABoQAAICAwAAAAAAAAAAAAAAAAEhABARMTL/2gAIAQEABj8C5BjQxqlHX//EABsQAQEBAAIDAAAAAAAAAAAAAAERABAhMWFx/9oACAEBAAE/IYUfp3mE7Eku9HXRZS3h/9oADAMBAAIAAwAAABDL3//EABcRAAMBAAAAAAAAAAAAAAAAAAABESH/2gAIAQMBAT8QTwo//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxABAQEBAAMBAAAAAAAAAAAAAREAMSFxgaH/2gAIAQEAAT8Q8DwDGl/TCoz2Z8h2e8AJAOVycgvZnjKu+9//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/1e0be/img_2274%252820181216-151748%2529.webp 250w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/b0a15/img_2274%252820181216-151748%2529.webp 500w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/a5d4d/img_2274%252820181216-151748%2529.webp 1000w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/293e0/img_2274%252820181216-151748%2529.webp 1500w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/b84eb/img_2274%252820181216-151748%2529.webp 2000w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/37880/img_2274%252820181216-151748%2529.webp 3874w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/0479a/img_2274%252820181216-151748%2529.jpg 250w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/41099/img_2274%252820181216-151748%2529.jpg 500w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/a2510/img_2274%252820181216-151748%2529.jpg 1000w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/c58a3/img_2274%252820181216-151748%2529.jpg 1500w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/3acf0/img_2274%252820181216-151748%2529.jpg 2000w,/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/73d69/img_2274%252820181216-151748%2529.jpg 3874w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/c37eddbe7e5a2381d69b95b9a5dcf5cc/a2510/img_2274%252820181216-151748%2529.jpg&quot; alt=&quot;赠品&quot; title=&quot;赠品&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;正面标签，生产于 2018 年 8 月 22 日泰国。这块盘是业界首款 5 碟 8TB 的机械硬盘，缓存 256M。LOGO 显示是西数，但其实是 HGST 的盘体。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAVAQEBAAAAAAAAAAAAAAAAAAACAf/aAAwDAQACEAMQAAABdVBRJyDAhcnm5LoEiP8A/8QAHhAAAgIBBQEAAAAAAAAAAAAAAQIAAxIEEBETIzL/2gAIAQEAAQUCqSojpqmoAW6sRmxFx9cwqNaWj/ZM52//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAgEBPwEh/8QAHBAAAgICAwAAAAAAAAAAAAAAAAECESAxMkFx/9oACAEBAAY/AlaWjiiSjoT6otDI+DVDw//EABwQAQACAwADAAAAAAAAAAAAAAEAESExQVFhgf/aAAgBAQABPyE2v0XEx4f5Aorgm42JLfK+XksWD6y6XDKQJ7juDXuCOy13P//aAAwDAQACAAMAAAAQHynB/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQAhEf/aAAgBAwEBPxADkmw5Jt//xAAXEQADAQAAAAAAAAAAAAAAAAAAATEQ/9oACAECAQE/EBTCh//EACEQAQACAgEDBQAAAAAAAAAAAAEAESExQVFxsWGRocHx/9oACAEBAAE/EMxlput/jMBadDW4I4Uo4sGIC6DOdl9O58wHlo7PdO9x4JmYAy9NTAoMcl+oia2niNoprU0SJuJV5n//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/8d208cb4802ce1aa298a12bc4b2318b8/1e0be/img_2276%252820181216-151741%2529.webp 250w,/static/8d208cb4802ce1aa298a12bc4b2318b8/b0a15/img_2276%252820181216-151741%2529.webp 500w,/static/8d208cb4802ce1aa298a12bc4b2318b8/a5d4d/img_2276%252820181216-151741%2529.webp 1000w,/static/8d208cb4802ce1aa298a12bc4b2318b8/293e0/img_2276%252820181216-151741%2529.webp 1500w,/static/8d208cb4802ce1aa298a12bc4b2318b8/b84eb/img_2276%252820181216-151741%2529.webp 2000w,/static/8d208cb4802ce1aa298a12bc4b2318b8/e51ec/img_2276%252820181216-151741%2529.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/8d208cb4802ce1aa298a12bc4b2318b8/0479a/img_2276%252820181216-151741%2529.jpg 250w,/static/8d208cb4802ce1aa298a12bc4b2318b8/41099/img_2276%252820181216-151741%2529.jpg 500w,/static/8d208cb4802ce1aa298a12bc4b2318b8/a2510/img_2276%252820181216-151741%2529.jpg 1000w,/static/8d208cb4802ce1aa298a12bc4b2318b8/c58a3/img_2276%252820181216-151741%2529.jpg 1500w,/static/8d208cb4802ce1aa298a12bc4b2318b8/3acf0/img_2276%252820181216-151741%2529.jpg 2000w,/static/8d208cb4802ce1aa298a12bc4b2318b8/9568a/img_2276%252820181216-151741%2529.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/8d208cb4802ce1aa298a12bc4b2318b8/a2510/img_2276%252820181216-151741%2529.jpg&quot; alt=&quot;本体&quot; title=&quot;本体&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;上螺丝，准备装机。送的螺丝用不上，这里用的是机箱的螺丝。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:74.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABQADBP/EABUBAQEAAAAAAAAAAAAAAAAAAAIA/9oADAMBAAIQAxAAAAHhVB0IXj5X/8QAGRABAAMBAQAAAAAAAAAAAAAAAQIDERIE/9oACAEBAAEFAopvlBqtDvmWahC5if/EABcRAAMBAAAAAAAAAAAAAAAAAAABESH/2gAIAQMBAT8BxFR//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8BCf/EABwQAAIABwAAAAAAAAAAAAAAAAABEBExMkGBkf/aAAgBAQAGPwKFyWiRV9Ms/8QAGxABAAICAwAAAAAAAAAAAAAAAQARIVExcYH/2gAIAQEAAT8hcHDLxheuIdeVjVVdwGAoQC5Nz//aAAwDAQACAAMAAAAQ2x//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREx/9oACAEDAQE/EK3aWP/EABYRAAMAAAAAAAAAAAAAAAAAAAARIf/aAAgBAgEBPxBbpT//xAAcEAEAAgMAAwAAAAAAAAAAAAABABEhMWFBUYH/2gAIAQEAAT8QHm/TghYjHI6PB2WspBzPt3EazoGcVKYMaFRLela3k9z/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/1e0be/img_2277%252820181216-151732%2529.webp 250w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/b0a15/img_2277%252820181216-151732%2529.webp 500w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/a5d4d/img_2277%252820181216-151732%2529.webp 1000w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/293e0/img_2277%252820181216-151732%2529.webp 1500w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/b84eb/img_2277%252820181216-151732%2529.webp 2000w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/b7e4a/img_2277%252820181216-151732%2529.webp 3898w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/0479a/img_2277%252820181216-151732%2529.jpg 250w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/41099/img_2277%252820181216-151732%2529.jpg 500w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/a2510/img_2277%252820181216-151732%2529.jpg 1000w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/c58a3/img_2277%252820181216-151732%2529.jpg 1500w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/3acf0/img_2277%252820181216-151732%2529.jpg 2000w,/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/34778/img_2277%252820181216-151732%2529.jpg 3898w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4ebc6b2bf3fcfcc8cf561c444e00f90d/a2510/img_2277%252820181216-151732%2529.jpg&quot; alt=&quot;准备装机.1&quot; title=&quot;准备装机.1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;组装完成。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMCBAUG/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAalp+gTz5IYY/NhLMWUf/8QAHBAAAgICAwAAAAAAAAAAAAAAAQIDEgAEEBEU/9oACAEBAAEFAkjLgaxxlodStcnIvHsLHntj6kIY8//EABcRAQEBAQAAAAAAAAAAAAAAAAARARL/2gAIAQMBAT8BjXUV/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAIBAAAQMCBwAAAAAAAAAAAAAAAAERIRIxAhAgIjJBkf/aAAgBAQAGPwJGwlhlQjk05bVclOpIq8Eps2j/xAAcEAEAAwEBAAMAAAAAAAAAAAABABExIUEQUYH/2gAIAQEAAT8hWkeaRp1RuMSDusK/Wy8hK0639ZV21QQdjiW8uH014Rj8f//aAAwDAQACAAMAAAAQO8dx/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxAKbDtvjJS7f//EABgRAQADAQAAAAAAAAAAAAAAAAEAETEQ/9oACAECAQE/EEb2GQL5/8QAHhABAQADAAIDAQAAAAAAAAAAAREAITFRYUFxgbH/2gAIAQEAAT8QGI9IeX3lAL1d/wBx46yeyu8FHUIE6j7twVjzhWJQ1Y7D85kGnaiks3ZNuUERF477jgBCBowVVl+N4Q55wTmPc//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/842251e9ea29b44e68f1910cd3700836/1e0be/img_2279%252820181216-151821%2529.webp 250w,/static/842251e9ea29b44e68f1910cd3700836/b0a15/img_2279%252820181216-151821%2529.webp 500w,/static/842251e9ea29b44e68f1910cd3700836/a5d4d/img_2279%252820181216-151821%2529.webp 1000w,/static/842251e9ea29b44e68f1910cd3700836/293e0/img_2279%252820181216-151821%2529.webp 1500w,/static/842251e9ea29b44e68f1910cd3700836/b84eb/img_2279%252820181216-151821%2529.webp 2000w,/static/842251e9ea29b44e68f1910cd3700836/e51ec/img_2279%252820181216-151821%2529.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/842251e9ea29b44e68f1910cd3700836/0479a/img_2279%252820181216-151821%2529.jpg 250w,/static/842251e9ea29b44e68f1910cd3700836/41099/img_2279%252820181216-151821%2529.jpg 500w,/static/842251e9ea29b44e68f1910cd3700836/a2510/img_2279%252820181216-151821%2529.jpg 1000w,/static/842251e9ea29b44e68f1910cd3700836/c58a3/img_2279%252820181216-151821%2529.jpg 1500w,/static/842251e9ea29b44e68f1910cd3700836/3acf0/img_2279%252820181216-151821%2529.jpg 2000w,/static/842251e9ea29b44e68f1910cd3700836/9568a/img_2279%252820181216-151821%2529.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/842251e9ea29b44e68f1910cd3700836/a2510/img_2279%252820181216-151821%2529.jpg&quot; alt=&quot;准备装机.2&quot; title=&quot;准备装机.2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;机箱型号 Fractal Design Define C TG，有 2 个 3.5&amp;quot; 硬盘位和 3 个 2.5&amp;quot; SSD 槽。其中一个 3.5&amp;quot; 硬盘位已经装了一块 1TB 的西数绿盘。（请不要在意理线，等我有钱了一定买定制线）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:121.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAYABQDASIAAhEBAxEB/8QAGAABAQADAAAAAAAAAAAAAAAAAAMCBAX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB45QgqMBZtCP/xAAZEAEAAgMAAAAAAAAAAAAAAAABAAIQESD/2gAIAQEAAQUCI4OCVNn/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAZEAABBQAAAAAAAAAAAAAAAAABAAMhMIH/2gAIAQEABj8CohsnV//EABoQAAMAAwEAAAAAAAAAAAAAAAABESExYUH/2gAIAQEAAT8hg2ahDds9ZgjVqNk3nhn+uP/aAAwDAQACAAMAAAAQ6+d//8QAFhEAAwAAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/EHT/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAbEAEBAQEAAwEAAAAAAAAAAAABEQAhMVGRQf/aAAgBAQABPxAU9t8n3NQAPc7MrAKOXqflwDAe3IGd+YmKDzphCkD2pc0GDEKX1v/Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/85869882592e8607100f8201259622d3/1e0be/img_2280%252820181216-151839%2529.webp 250w,/static/85869882592e8607100f8201259622d3/b0a15/img_2280%252820181216-151839%2529.webp 500w,/static/85869882592e8607100f8201259622d3/a5d4d/img_2280%252820181216-151839%2529.webp 1000w,/static/85869882592e8607100f8201259622d3/293e0/img_2280%252820181216-151839%2529.webp 1500w,/static/85869882592e8607100f8201259622d3/b84eb/img_2280%252820181216-151839%2529.webp 2000w,/static/85869882592e8607100f8201259622d3/e51ec/img_2280%252820181216-151839%2529.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/85869882592e8607100f8201259622d3/0479a/img_2280%252820181216-151839%2529.jpg 250w,/static/85869882592e8607100f8201259622d3/41099/img_2280%252820181216-151839%2529.jpg 500w,/static/85869882592e8607100f8201259622d3/a2510/img_2280%252820181216-151839%2529.jpg 1000w,/static/85869882592e8607100f8201259622d3/c58a3/img_2280%252820181216-151839%2529.jpg 1500w,/static/85869882592e8607100f8201259622d3/3acf0/img_2280%252820181216-151839%2529.jpg 2000w,/static/85869882592e8607100f8201259622d3/9568a/img_2280%252820181216-151839%2529.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/85869882592e8607100f8201259622d3/a2510/img_2280%252820181216-151839%2529.jpg&quot; alt=&quot;准备装机.3&quot; title=&quot;准备装机.3&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;上机，稍微理了下线，然而还是很丑。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:117.60000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAYABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIDBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB42mYtA0kuAX/xAAbEAACAgMBAAAAAAAAAAAAAAAAARESAhAiIf/aAAgBAQABBQJFuTHXpRxDT6P/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERD/2gAIAQMBAT8Byq//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAaEAACAwEBAAAAAAAAAAAAAAABEAARITFB/9oACAEBAAY/AhT0zq9qYF//xAAdEAADAAEFAQAAAAAAAAAAAAAAAREhMUFRYXGR/9oACAEBAAE/IfQ/DLRsiUnonG5pgXkTpqBkGfBJEkqof//aAAwDAQACAAMAAAAQ6O9A/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAEDAQE/EMtb/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEQ/9oACAECAQE/EMiP/8QAGxABAQEBAQEBAQAAAAAAAAAAAREAMSFRQaH/2gAIAQEAAT8QEKMER43AGRq9i8wDT+5SiFEnH4z6PADxmFBGDyncEttJPvzCgHZeNACEAN//2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/3564f05b98ba19ae1b2185937eb6c280/1e0be/img_2281%252820181216-151905%2529.webp 250w,/static/3564f05b98ba19ae1b2185937eb6c280/b0a15/img_2281%252820181216-151905%2529.webp 500w,/static/3564f05b98ba19ae1b2185937eb6c280/a5d4d/img_2281%252820181216-151905%2529.webp 1000w,/static/3564f05b98ba19ae1b2185937eb6c280/293e0/img_2281%252820181216-151905%2529.webp 1500w,/static/3564f05b98ba19ae1b2185937eb6c280/b84eb/img_2281%252820181216-151905%2529.webp 2000w,/static/3564f05b98ba19ae1b2185937eb6c280/e51ec/img_2281%252820181216-151905%2529.webp 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/3564f05b98ba19ae1b2185937eb6c280/0479a/img_2281%252820181216-151905%2529.jpg 250w,/static/3564f05b98ba19ae1b2185937eb6c280/41099/img_2281%252820181216-151905%2529.jpg 500w,/static/3564f05b98ba19ae1b2185937eb6c280/a2510/img_2281%252820181216-151905%2529.jpg 1000w,/static/3564f05b98ba19ae1b2185937eb6c280/c58a3/img_2281%252820181216-151905%2529.jpg 1500w,/static/3564f05b98ba19ae1b2185937eb6c280/3acf0/img_2281%252820181216-151905%2529.jpg 2000w,/static/3564f05b98ba19ae1b2185937eb6c280/9568a/img_2281%252820181216-151905%2529.jpg 3024w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/3564f05b98ba19ae1b2185937eb6c280/a2510/img_2281%252820181216-151905%2529.jpg&quot; alt=&quot;装机完成&quot; title=&quot;装机完成&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;开机，磁盘管理器已经识别出来了，显示 7452 GB。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:40.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA80lEQVQY06WLUU+DMBRG+/9/1F4UtkIrsKBpuxa4t7ANGKRI0OzN0KnRN81OvtycnOQSgFII2GxeOLd/WRyjlMdpcs45UtdYmDqOtJStlK0Qv/Yz3jzPz2XZfT/bsqw511p3xvTGXLTui+Livde6870r1r7K6eTadhjHYRxHglgpZXdbI8Sw3x8Zq7KsCUPFOaZpLcQg5ZjnZ0pN/twpNSzLcr2+v3mItVbrQxg+ZBnnPIrjHWOU0pAxyhhNU55lT5xHUbRNEpYkLAgegy9I0zQAoNQBAKsKABBWsKrwVnwExE9HRGutP5ZMnnmeX/8PcXfwAUrApff8NBzhAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/31abc2d4831135b7cd6772f25baaba8b/1e0be/snipaste_2018-12-16_15-06-57.webp 250w,/static/31abc2d4831135b7cd6772f25baaba8b/b0a15/snipaste_2018-12-16_15-06-57.webp 500w,/static/31abc2d4831135b7cd6772f25baaba8b/a5d4d/snipaste_2018-12-16_15-06-57.webp 1000w,/static/31abc2d4831135b7cd6772f25baaba8b/293e0/snipaste_2018-12-16_15-06-57.webp 1500w,/static/31abc2d4831135b7cd6772f25baaba8b/e0a0d/snipaste_2018-12-16_15-06-57.webp 1530w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/31abc2d4831135b7cd6772f25baaba8b/63868/snipaste_2018-12-16_15-06-57.png 250w,/static/31abc2d4831135b7cd6772f25baaba8b/0b533/snipaste_2018-12-16_15-06-57.png 500w,/static/31abc2d4831135b7cd6772f25baaba8b/00d43/snipaste_2018-12-16_15-06-57.png 1000w,/static/31abc2d4831135b7cd6772f25baaba8b/aa440/snipaste_2018-12-16_15-06-57.png 1500w,/static/31abc2d4831135b7cd6772f25baaba8b/7f15f/snipaste_2018-12-16_15-06-57.png 1530w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/31abc2d4831135b7cd6772f25baaba8b/00d43/snipaste_2018-12-16_15-06-57.png&quot; alt=&quot;磁盘管理器&quot; title=&quot;磁盘管理器&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;格式化。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:580px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:81.19999999999999%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABxElEQVQoz32T67KbIBCAff8nOzmxGnMZxQsoRAQhXBRtO5NMWrXJpKem3x8Y5Ntdd9X7+eP71ve3W58xppQSQjDOuq6TUjLGhJDX6/X+Bu9+vzvn1GXCGHO5XNq2HYZBK9VyrpS+3W5vZefcMAx2pu97NwzjOBpjnHPjOC7nWmu3hmeMYU0TBMFutzsdjyDNiiLffm6j6JDneRCEAIAkSay1Sin9N5Ns5vCEENo0nE2M49jN9H2/bMwas2wspXW0j/b7YwJAmqacc61113X2hXXZWotxlWZZGAaHw7EocpBmU9sZa9tWPJBSrsha6945znkURRChpRlCtLswRKg8n8+EEIxxXderZU/JGWtOp2MBISHEWtty/vGxAQBUVYUQghBijL8U/ydz1/cIojiOp0BzLCkEhHBp3jK25eZ65qZpCCF1XVNKl24ppYwx3YP3ctdRSsMg2Gw2vu/HSUIbah/CwrtRTbqUsigKXGGMMUjTsiyfb7iY//rea+DnJ+HctNFz2c8xL2PXWltrp6dae+qV6e+Y18cBpRRCmOf5ISffTtkOlLgRVYmyPGeMeea/1OdzOhMA/LlPghghKkpUAAB+y78AmNhzCzBlVmAAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/e6022b5daec1f8006b36a1ea1726ea70/1e0be/snipaste_2018-12-16_15-08-40.webp 250w,/static/e6022b5daec1f8006b36a1ea1726ea70/b0a15/snipaste_2018-12-16_15-08-40.webp 500w,/static/e6022b5daec1f8006b36a1ea1726ea70/4fac6/snipaste_2018-12-16_15-08-40.webp 580w&quot; sizes=&quot;(max-width: 580px) 100vw, 580px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/e6022b5daec1f8006b36a1ea1726ea70/63868/snipaste_2018-12-16_15-08-40.png 250w,/static/e6022b5daec1f8006b36a1ea1726ea70/0b533/snipaste_2018-12-16_15-08-40.png 500w,/static/e6022b5daec1f8006b36a1ea1726ea70/b6272/snipaste_2018-12-16_15-08-40.png 580w&quot; sizes=&quot;(max-width: 580px) 100vw, 580px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/e6022b5daec1f8006b36a1ea1726ea70/b6272/snipaste_2018-12-16_15-08-40.png&quot; alt=&quot;格式化&quot; title=&quot;格式化&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;OK。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:421px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:151.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAIAAACjcKk8AAAACXBIWXMAAAsTAAALEwEAmpwYAAADxUlEQVQ4y41UWXPbNhDWT+xf6/S5L33sL2jr1kmsyaS2bN2WZFISRYqgeIAHiIMgAAIdUD6aOLW7s0MuF9j7Ww7iisVp6u79IIr9I7idzHEjpDZcGtEZZUyrXvisEZ2hXMKyHpxg1TBKCC7LAmZZWRaUEkIwY7SuEYQZpYRSwijtNVUOM4KxVRIyiDL77bru9fXNcDj0Doc8zyGECKHVcvHx01VRFHmen05xUZZBcPj85cshOJZlmef5oKIiS+L93jPGCCF2W2ezXjNKqqq8ux2B6EQJKYr8djQCIGoYS5N4NpuVRVFV1QAiZozRWpv+1QhFRUdbJVTXGSM7LVT3JHetVEJZjeo0Y2yQ1yyOT2WFTE8/j6offgE/XsVSKSI0E5pJy9aj7KwsdCN1yTUm1ripqpJQqrXWXQeQdHMJkCBcEq7+g2XNO0LZACJKMGYN77pOKUVIncMM11hI1Qr5XeatUJ1umsamvXXdFObntJMkns/nIYheGvGKznpbM0QU5XAymUTRyRgTRQBC+IblV8YZomHNi6o+Vy6EaNtWCCmEYMxCo2ENQqhhjZSSMdY0jRCi6zprfCrJTwu02Afr5SIIjs+OeUOPx2MYhjmE+/0eY8I5DwIfRJFS3WPktMSz5f3e89brNQDgnFgURQCANE3jODlFJ8/zalxrrSGEMIP91J9qJnXVCtE0DGMie+LtI1mZc9EKpZSUtpZzRY9pQ0SNMVvXPfg256732gcOsyzz/SA+2cgVQkqpNEnTJJFSPUe28ESoQqg+t/J8wDnPIEzTtG1bTLAUQmtjM+L836Ni3wzmLCdJMplMJ5MJ7CHw+sJbxuPxmBCSZdl0On1Wan0GcfeOcRzHo55eY+atyM+EMSaEvNym9HA47HZb27+qeisyI2Q2m65Wq/NUjTFlUXz4cHnxx8VwOAyC4MlYd5y3Z2D22LQCb1tKKedcPpEQdtpaa9XTO2m/vxgQ0RpV6/XKcZz71f12uz0GwWw2cxwHAPBdn18Z5xBut1vf9xfLZRhaYDmOs3XdY2gXI4mTEqEsy5I0IZR+2+0kOUVRVJblerNJsxTV9REA3z+EALiu6+12cZIEQeB5XlGU/3dU79ccF7htW7vjDbdPzgnjWc2rRkHcItIfcDsD+yPopdYulqwxGcSwpHVVowo/8SZIV+7h98ur+WY339n9Wi2mk7vbCByDgzef3I2u/56Ob31vNxh78AHk6zDf9PwA8qtNcjENfv0w+W18+HMZ3Tnh55lzebO8ewhHa//j6P6v6/nlzfJm5f0DkQah/HxNgYAAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/7ec3fa6daf1e0c77f6e34b207f2340c3/1e0be/snipaste_2018-12-16_15-08-59.webp 250w,/static/7ec3fa6daf1e0c77f6e34b207f2340c3/ced8d/snipaste_2018-12-16_15-08-59.webp 421w&quot; sizes=&quot;(max-width: 421px) 100vw, 421px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/7ec3fa6daf1e0c77f6e34b207f2340c3/63868/snipaste_2018-12-16_15-08-59.png 250w,/static/7ec3fa6daf1e0c77f6e34b207f2340c3/092ed/snipaste_2018-12-16_15-08-59.png 421w&quot; sizes=&quot;(max-width: 421px) 100vw, 421px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/7ec3fa6daf1e0c77f6e34b207f2340c3/092ed/snipaste_2018-12-16_15-08-59.png&quot; alt=&quot;磁盘属性&quot; title=&quot;磁盘属性&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;其他两块硬盘已经红了。。你们装不下的东西，让大哥帮忙扛着！&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:795px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:38.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3ElEQVQY062QvU7EMBCE/f5vccUVFKforoYnAAk6itOJREqcBNvxxj+xc7ndRYQKIir4ytFoZjSiacG5xN8hItoqPzUWlRyrBs6lHKe0GhARmXnyzshmiZFSwmVZA9B2fTCGUqKciUiUEF5bVbyUd8+VVIN3Dm+oR+ieHs+7XXs6dUWR6yZc566u3w6Hy37/fjyq+wdCFNOUrIW+V0obH2KIiZi1MQDQShm8/xpyXZY8z8yMiLeVz9ngfK+0GazSerAw+kjEUsoQ45wzrqbfEPwHBBPx5sbtsf/f/AFPsc8Fh2j1wQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/469fd1fa7ea245fd942bb7954d48d3ea/1e0be/snipaste_2018-12-16_15-09-28.webp 250w,/static/469fd1fa7ea245fd942bb7954d48d3ea/b0a15/snipaste_2018-12-16_15-09-28.webp 500w,/static/469fd1fa7ea245fd942bb7954d48d3ea/399bf/snipaste_2018-12-16_15-09-28.webp 795w&quot; sizes=&quot;(max-width: 795px) 100vw, 795px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/469fd1fa7ea245fd942bb7954d48d3ea/63868/snipaste_2018-12-16_15-09-28.png 250w,/static/469fd1fa7ea245fd942bb7954d48d3ea/0b533/snipaste_2018-12-16_15-09-28.png 500w,/static/469fd1fa7ea245fd942bb7954d48d3ea/65c7b/snipaste_2018-12-16_15-09-28.png 795w&quot; sizes=&quot;(max-width: 795px) 100vw, 795px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/469fd1fa7ea245fd942bb7954d48d3ea/65c7b/snipaste_2018-12-16_15-09-28.png&quot; alt=&quot;我的电脑界面&quot; title=&quot;我的电脑界面&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;使用 HD Tune 查看信息，通电次数 2 次，通电时间 0 小时。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:677px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:96.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAADV0lEQVQ4y32SW2/bRhBG9aOLGmnRv9CnPLTPDVCkSFAksuXY1c12JEuiKNmyXMlacsldXpbXJXd5FymyiJyXOEDP4wBnvpnBtLZQVzXyJKuWF6q6tZHUDVB2is7Skid7nuzjrIrzA08PvCijrIqykrLUZwmNstZ0uRaX95PpfHm/ftwAIKmaYUsArh7+1Ymzk/HiYX338PgEHuUR3mzBdicR2zOIg3XSWj1uxjc33V53PhPElXgx+PT5+mYpCIv5ZDYb9fr9wdXwYb2aT7vXp8PV/WpxJ47HI2E2k2WpRVxvt31Y3t0zxnZIE1dLA+EncSFBQCxjeidOp1PLsqXdQlyOn3YAa1iYC4IgUBq2sGlhjBBCUFF8P0iT1HJsxhhC2HFcxjil1LKdPM81hA9H6rpumiaKopaM9GG/9+7d+8+jsaIoUJZd182yDGMcUFo3dRRFlmX5nqtpenPkWY7juCWpWr/f/9g+HQ6v0BGTEB7FMlQ83y8PNQ3CHZBMYgFJPtTfyqpmjK76F532+Ga42W4UVWW+WxaZY+J9GjVNkyd8n/J9Etqm9jJ5LetvPnRf//H36WBKiGkahghMQQl6S3m0tVZmOoP+6MmeAKcrSpDuv5HHW+OXt+LJm8mv7XvGwpiHv4/sH8/Iq7Zycqr9/Ml51TF/+IBP2tpPbfTbJHzO/iorSL/qXb7/68/rYV+WoaIovkOKLCEazKKgruss5nkcFlGAIXg5toyM28nk8p/u7WQKoaKqquO6cZqpCIeM103DOLcd1/V8rOkvDwaxfnl50e12F4sFAACpqmWROEkURQkZa5qGcwYAME0DyrD+Llm/ub4+O+t0Oh1hLqiq6jpOmiYYI875UeZByMIw1PB314bY6Pd65+fng8FgvV7ruk4IieMYQjkIvuwchqHr+dT3AQD1kcPh8PXDFM00DKMoirkojm9vF4ulqiLDNF3PK8uyrKpiv8/zvCjyLM+Phaqsyo3seX7YMh0/ieOmaWxic8arqnpu/P8MpqbtspblUd9zq7LiJSsOeVM3CY8w1beBtE/zJI2zNI04r8rScWxD16OIO7YdUDeJoxYirmYYSVpYiRukPM0Lz6UbIs/NdUC541Gfftk5TjOk6UCGnk+RpkMVezT4D25a+k4gIkuBAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/ac15e6c6e11231baa39ccbfe3065ff6f/1e0be/snipaste_2018-12-16_15-14-00.webp 250w,/static/ac15e6c6e11231baa39ccbfe3065ff6f/b0a15/snipaste_2018-12-16_15-14-00.webp 500w,/static/ac15e6c6e11231baa39ccbfe3065ff6f/dc474/snipaste_2018-12-16_15-14-00.webp 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/ac15e6c6e11231baa39ccbfe3065ff6f/63868/snipaste_2018-12-16_15-14-00.png 250w,/static/ac15e6c6e11231baa39ccbfe3065ff6f/0b533/snipaste_2018-12-16_15-14-00.png 500w,/static/ac15e6c6e11231baa39ccbfe3065ff6f/68de2/snipaste_2018-12-16_15-14-00.png 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/ac15e6c6e11231baa39ccbfe3065ff6f/68de2/snipaste_2018-12-16_15-14-00.png&quot; alt=&quot;HD Tune - 健康状态&quot; title=&quot;HD Tune - 健康状态&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;CrystalDiskInfo 基本信息。（这时正在扫描扇区，已经持续了一个多小时。温度有点高。噪音由于是静音机箱，所以不是很明显）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:68.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAADI0lEQVQozyXL24tUZQAA8PMHBNVLUORD+LC1oBmFWmiXlXAJWt2FzB4TY/GhckNN8KFEjYqSILrhiy5mGLlSa7rs6uwIC8rqjjY7O7edmTNzrt93bt8537l9l3POF9Hv/ScNDKiqqh9g5PsGgI6LLA8B20U4JjxPKE95RljGeE55znjOspwwnmWZ5iUSy/IoSWfnyucvzqzW20IIx8eqbgDLgbajm8CEjqqagR8EOPhfGIWcprobSv2AHDh86pnh117YObH5lb3fX5jJhOBZlheFZVvQAn1ZaTV6iqKpmmoYJgAAh6EQwgqp9ON85ektb23b9d7zr+4b2rxr6469D3r6R0c+u3KjLISgWQ4glPsy44xSlue5EIJQyimRIZIuLreHt4899+Lont3jH05+/Mmnn5cb3ZOnv/r2p2khhB3Fqgl0AB3kh2lKsjwiFNgOJWlrAKR5xF96fXx4y5s3SmWWKMfPfHe5Ori03PvlaglT6hOqmEAzYV/VoefHPA8pQ3HCGFNcLF1IxPbxg09s3Hnz2kzt3u2xkz9fdvn1mlpTgc8yFMVtgBY7/rWVXqkbyCj2CHMiD+oL9V5ZOo3F0NsHd09MVv5pT8/e/bMB7oQF9NBqt4cIwzyPsoII4cepHWAL+S4OLeSrut7UHOkoKIZGD5z44XchhGYFURjXVdTWrMpqrQ+gS7jLOM5yL0kdHFk4xJSZLqo32w3dlabuq0/tOXbo/JIQYqWhvnN24ciVBnK92/fud6HrsMKhHPEcxgnEoRlgLyWa69XXO3Xdk16erjyy/+xjbxy7vtLDKTlV6t/VqWFaSw+rlb4BaWGx3OWFEaVaEOo+dlKiuKje7jR0W9owMvnkjvcfHTk68sXfS0bkpKRqhLIGq83mcrOj4BjQAtB8EBLZjxQ/BITJrr/2X3akDWNTz+6b2jj6wciZXxc0YqW87VAI7Gpt9U5trdqVH8qDFrBBQtUg0oLQplzz/LVWq2m40tZDX27aP/X4tolN7x7++txv35y79MfiSsdKSrXB1Upnbh3OtsB8Hy2C5KYW3tJwGaS3FDzXNP5aR/8CNaKmTGwUT4kAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/0f287d5a13ed3af1745915c356746e68/1e0be/snipaste_2018-12-16_16-45-36.webp 250w,/static/0f287d5a13ed3af1745915c356746e68/b0a15/snipaste_2018-12-16_16-45-36.webp 500w,/static/0f287d5a13ed3af1745915c356746e68/a5d4d/snipaste_2018-12-16_16-45-36.webp 1000w,/static/0f287d5a13ed3af1745915c356746e68/0a92e/snipaste_2018-12-16_16-45-36.webp 1002w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/0f287d5a13ed3af1745915c356746e68/63868/snipaste_2018-12-16_16-45-36.png 250w,/static/0f287d5a13ed3af1745915c356746e68/0b533/snipaste_2018-12-16_16-45-36.png 500w,/static/0f287d5a13ed3af1745915c356746e68/00d43/snipaste_2018-12-16_16-45-36.png 1000w,/static/0f287d5a13ed3af1745915c356746e68/d69c4/snipaste_2018-12-16_16-45-36.png 1002w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/0f287d5a13ed3af1745915c356746e68/00d43/snipaste_2018-12-16_16-45-36.png&quot; alt=&quot;CrystalDiskInfo&quot; title=&quot;CrystalDiskInfo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;坏道扫描，扫了 11 个小时。。。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:677px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:96.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAACc0lEQVQ4y52S31LaQBTGd+AFbJ3xDhTxJap9itaHcdQX0NfpZasi8i8hJEAC4U+ICQlEIAnsZrMbFNhOqk7v6tAzZ745N7/zzXfmAFW3DcvpDswnd2HYT6pmqP3H3qMNyQsKn1H4jOkKR+uArNHyJaCrgL74kHgw9AMKOEkRpUaFq0pNua32+wPDGj9pfb0pt21n2tOHkqzU5Vav39KLQ7XT7/Q0Z+KOnOnQdkBDaXMPpdxtri5IDbn+K/ezlC/JgtioVQW+cnuTy93dt2RF4u/yP3KNekOUauVyscrzA00DE8/vqHW+Jni+1zFNQa6Zj7pS5dvdljOxFU1tyk2E8UATJZnTBro1sgWxJooihBAsED3tnu5xexkpkyqnM2ImIx6mhXSKTx/WDo+aR1kpm61nPxc/XVvXjDHVmgqK1rVmhNIYPpa/gBxIVBLgHoAiAIV3zQNQijVZToIbcGacMca65pCvt1wURlEEIKJflROQBwk+AR4AKP8BXrUAQCVelOSS4BacG+eMMXs05Hl+Pp8vl9vAF8MLtmTjiRNgvFhA1/W2gC+HlyxkA0OHKC7HcbaBrRjGBEMIDcPwPG9LmDLDNn3fxxgTQrY5mBkfjJOKc3/OGKOUbg2PTCOKIsbY/ziPp87cnyOEYniB6Il8DO5Bgku8fUXxXV93FUCy8vdJ7LE1Go3DMHxz/q5+2y3v7ov7qUoqJaRS/Ltyb8NB7WCnsHNlXTHGJrPJdDqzLCvO7C0wiQgKg4Dgf3dIyWq99n1/5roQwtjZQ5gxtmEf13q93mw2CCHXnQVx5hA4LgwwgZigjxoGISZ0+bwi0TIkEUT4N2W74JfmeU8MAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/37e04323d8771b287fc01f3bffd3302c/1e0be/snipaste_2018-12-17_11-37-17.webp 250w,/static/37e04323d8771b287fc01f3bffd3302c/b0a15/snipaste_2018-12-17_11-37-17.webp 500w,/static/37e04323d8771b287fc01f3bffd3302c/dc474/snipaste_2018-12-17_11-37-17.webp 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/37e04323d8771b287fc01f3bffd3302c/63868/snipaste_2018-12-17_11-37-17.png 250w,/static/37e04323d8771b287fc01f3bffd3302c/0b533/snipaste_2018-12-17_11-37-17.png 500w,/static/37e04323d8771b287fc01f3bffd3302c/68de2/snipaste_2018-12-17_11-37-17.png 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/37e04323d8771b287fc01f3bffd3302c/68de2/snipaste_2018-12-17_11-37-17.png&quot; alt=&quot;坏道扫描&quot; title=&quot;坏道扫描&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;HD Tune 持续读写测试，各方面都非常优秀。特别是写入时的存取时间竟然只有 0.4 ms。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:677px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:96.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEPklEQVQ4y0WRXUxaBxTHry81OnEWh3woH6LoVUBgULyVRtvNptMs8bF7WFPJ2r00s2ap/Uh1lSa2WdKlX1ldTdetbm81XbplW9vZuKatXyiXe7mI5UMQUZSLwAWBy71XWcBu++V/zvm9nJdzgMWlgG8l6PQsr4djvsD6osfncHmd3kA8RRNJKp6kttLMFrmdSG3HM3QizSTSdIRIbRLJSCINTJqRGfPcq9dT5nkYQRcWHC7fyqrHvYSiC4FgyOnxW2yY1WZ3uuxLr/0Oh2vR6Q5uhFeDIX9gDbCiCy8nXjx5+mRmemYWnv1j/PcXE39bZmfnzFPT0y+f/TU+PvEcQeCZqWcTj58jVsQCz09OvjLPzrrdbiBCJPCNgNe3TFN0AN9c9DgjIdxnt/sD/mhs843X5VhYTKXS66tvnB5syetbWQ1YrLDFYiEIAojEkw6HA4ZhDMNg2IrZMAzDEASxWq0YZsdsGIqiCIKgCGKF4a1k0htKzNvd7mA0RZIAk81+fvIkAADFxcV7CnPsyfOf7HpBQYFEItnc3FzDI741nEhSqXQaoHeyp3pOAwBQVlrKKipilbxTkksJq7S05F9YLFZhYSEIgrnl1ZV4PJ7NZtOpFJBhdk592VdQISxX7CuTgmxeJbv8PXZZWfnevewc5bkqL2exWHK5PBTCI5GIy+2hKJokSSCzne093VNYVMyXyji1DRxQxZHWc8Q1XLGUW1HB5XC4XC6Px2Oz2Wq1JhwOMwxNEPFoNJpIJACS3unt7WWVlIirqip5vKpKQaVAIBBX8+VqPqjgyxoqq6qElYIKboVWp8NxPBhcW/b7s9ksuXuwc2fPvltWJq2pEYnFYolEJBaLREKJSCiqlgploFChETU28fl8CIJi0eh39+5d/3709v1RO4YBaWq778wZLo8HgqBMJqurq5PleSs1NTKZrLZJLVSoDa1t+Mb69W+Hr478eO3ufRuKAtROtv/iRYFAIJfLQRBsaGgA8+RlN2Bjfb20rr6t4+NYLHrl2jd9Q1+fuzw0ZzYDqQxz4fz56upqtVqtVDbtolQqVaomlSrX1aomtUYlbwTbP/wAx0OPfv3tzs8PR8ceu5zO3J8vm0y1tbUQpNPrNc3NGghSQZCquVmj16v1erVOp9Hp3lcqFR0dHxEE8cujsZ8e3Hz655jH4wVS1PbQ0CUIUhw5Yjh8GGpvhw4dgg4ehNraWlpbWw4caDEYWgwGg16v7+rqwvHw8PCd/v4Llwa/QlEbQDLZq1cGlMqa/fv36fVanU6r1Wm1Wq1Olx/at65UNnV2dsZisZGRu4ODplu3bqMoCpD09uiDHz45evTEZye6j3cbu3MYu7uNxlzyHDcajceOfdrT8wVBEDdv3BgY6DeZTLDFAmxE4gzDUDRN0Uw6Q5MUTVIUmaHJDPV/KDpDM1vJdIxILK8EiMRWKp2JxRP/AHD7XbMbPjhCAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/66e889145ddb936f97e42abf7d6a9f9d/1e0be/snipaste_2018-12-17_12-09-58.webp 250w,/static/66e889145ddb936f97e42abf7d6a9f9d/b0a15/snipaste_2018-12-17_12-09-58.webp 500w,/static/66e889145ddb936f97e42abf7d6a9f9d/dc474/snipaste_2018-12-17_12-09-58.webp 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/66e889145ddb936f97e42abf7d6a9f9d/63868/snipaste_2018-12-17_12-09-58.png 250w,/static/66e889145ddb936f97e42abf7d6a9f9d/0b533/snipaste_2018-12-17_12-09-58.png 500w,/static/66e889145ddb936f97e42abf7d6a9f9d/68de2/snipaste_2018-12-17_12-09-58.png 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/66e889145ddb936f97e42abf7d6a9f9d/68de2/snipaste_2018-12-17_12-09-58.png&quot; alt=&quot;HD Tune - 持续读取&quot; title=&quot;HD Tune - 持续读取&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:677px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:96.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEIElEQVQ4y02QfUwbZRzHj3+4CS3SMlr6Ql/oO22OlhacIvvHJZKQ4B/+qTAXBgydsmRzL5mw1sSXxCVzLIyZOIwaFzX4By5RQmRxZIgr0PbagwPaQqFNoe93V+i1d8fOlAXHJ9/nyef3x5Pv8zwAuh4JhbdXg5s7SSwU2UEDIdS/sbYRwXM0kaOzOWqXZHbz+0RunyjQWZLJknQaz6XwvUyWBJ66EZfH++/TBbcXWUb9/mAoHN0J+Ndh71JkO+5Ew7NuxIssrfqXg7NbKOpfWQvsxBLR7dhWJArACPrk8czU1NS807kAz//56I+Zvx8vOp0Lztm5uZnfJ/+anJ72wm7n3NSjiWnYAy+6F2f/eeJ0OgOBAJDGs4mdyEYoRFF0OJ5aCa6mYvHQ0lI4soVhqbWQfwVF93LkTnR1LYisb4Qi0Yjb43a73DiOA2liD0WXXS63D/G53R7EhyAIAsMej8fj8yE+HwIfDDBcPLG7t4tjmN/vT6XT+XweYFi2t6cHAICyl8rA0lIQBEsPAMFjpYeAIFhSUqJQKFKpNEHgsVi8UCiQJAlQz9iB8+8DAFDxcuWxMg6Hyy0v53A4nIoKLucQLpcLgqBOp0ulUuHwFkEQLMvmcjmAZNjBi/2KyhJIWaWVVNZU84/z+ZU8Po9fxecfLD6/qqqKy+UajcZ4PJ5MJgOBIEXRxWtT++zAwAC3DFTLRfXyapNSoKmtrpNWK6UCgUB4vFooFApqamp4PJ7ZbE4mkwzDEASRyWSy2SyQp59dGLhQzuFKa2VCkUQqkUokYmWt2KwRQSqRQSmSiCViSa1AILBarYlEYns7urm5xbJssZlm2StXLlfyKlWqOoVcplDI5XK5TCavlStUClmzQWrRSk0amUgkPnHiVSyTvvft2K3vfroz9sMSggAktX/p0kWhUKjT6dRqtUajOdjVWq1GrdbUqTRajcZmUjcZpCdfb4nHYrdGRr+8d//mN2M+L1z87U+uXxeLxUajUa/XGwwG/QGGIvrnk1Zfb9LVvfXmSRzLfP7VzY8//eKy47OF+XkgV2CuXb2qVCotFgsEQQ0N0HMa/jcIMpsb9Ib6U6feSCZiv008HPnx1+/HJ/xra8Vmh8OuUqlsNpvlBeYjbmlsbDSZTG1tbRiGP5wY/+Xn4anJ8WBwo/hmh90OQVBra+trR2hpaTnqzc3NHR0dyUTy7t2RwcFrdvuQ1+sDCvus3X5Do9U2N79itdoOY7XZXkhTUxMEQe3t7RiGjY6O3rA7hofvwDBcbH7w4P6ZM2+f/+C9c33v9vd3nuvr7Ovt7O3p6jnb1XO2s7u7s7v79OmudwY++hDH8dtf3x4aGnI47C6XC4ilCYZhKJqmaIYs0AWKzhdDFVM4SNHpAs3s7pEYnt0MR/DsXo4sYET2P9WBXV4NyLzFAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4cdcc0290fa84b1e95792b5f07ea01db/1e0be/snipaste_2018-12-17_12-17-21.webp 250w,/static/4cdcc0290fa84b1e95792b5f07ea01db/b0a15/snipaste_2018-12-17_12-17-21.webp 500w,/static/4cdcc0290fa84b1e95792b5f07ea01db/dc474/snipaste_2018-12-17_12-17-21.webp 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4cdcc0290fa84b1e95792b5f07ea01db/63868/snipaste_2018-12-17_12-17-21.png 250w,/static/4cdcc0290fa84b1e95792b5f07ea01db/0b533/snipaste_2018-12-17_12-17-21.png 500w,/static/4cdcc0290fa84b1e95792b5f07ea01db/68de2/snipaste_2018-12-17_12-17-21.png 677w&quot; sizes=&quot;(max-width: 677px) 100vw, 677px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4cdcc0290fa84b1e95792b5f07ea01db/68de2/snipaste_2018-12-17_12-17-21.png&quot; alt=&quot;HD Tune - 持续写入&quot; title=&quot;HD Tune - 持续写入&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;实际写入测试，从固态硬盘中拷贝「神探夏洛克」第一季，3 个文件共 110 G。速度在 240 MB/s 上下浮动，非常稳定！&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:449px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:65.60000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNElEQVQoz32RyWoUURSG65FcuRGHleQd3LgTX8GV6FaRKFFQcaELh5BhJdEW3UgiimB3Oiah09XVt27Vrbludd268yCddkBFP/5zFofz8x843jgKs7LK0gzjhnOupNRKaKO1NkppJbWUiou5GBOMy0XnQkxA4VFGOeeEEC542864kHUn67oiHe2kZdJIbd3vWDufJBn2GGNHh6NBfxfCaLc/qOoZyPlk7MM4zYkuW4WptvaXTQhhjLXGoKTwKBUQgeHBMIAByiDXzDhunD5eNnNZs0BrLaXEGEspKaUIJR5jarvcWkvub6JHG+jhGnzwDKy8Qi+EklwJrueSWnEljLXaaW2NtsY5F0WRR6nsJavP41sb6O46WtlM7q3Gy2/yp9oZ5ZS0SjqlnFZORzEMkzgt0jCGhNE4jj1OxYX3l0+8PHW2t3T69fkzvaWTW+cubl9qSIvbBhNct7hpZ5g0UxBMQDCNpkeToxrjhZk9Hq9f6d+8vnfn2vD21cHylS83Vg6fCMEpZx2ljDPKWMeoVEpILqSQSvw4u+siH6QTVICsgnkZZlmQZCCJIIyiOATTEMDpNAAghGEYozjP0iiExjqEkEdI++nzx967t18P9vZHhyN/NA78lpKf//ybxXx+NiGkqqqiKKQUpOuaWUMpddaZf6P1/JEQxh7n3DlXVxUIYdd1/wn8IxklmQdAGEE4GPR3dj74vl8URZqm+THZ9yqzvMwLnBdtXpK8bLO8qfFsd7j/DXGDyO3yN331AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/69c9e80405f555e88631cac421967955/1e0be/snipaste_2018-12-17_12-24-25.webp 250w,/static/69c9e80405f555e88631cac421967955/57bab/snipaste_2018-12-17_12-24-25.webp 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/69c9e80405f555e88631cac421967955/63868/snipaste_2018-12-17_12-24-25.png 250w,/static/69c9e80405f555e88631cac421967955/053a9/snipaste_2018-12-17_12-24-25.png 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/69c9e80405f555e88631cac421967955/053a9/snipaste_2018-12-17_12-24-25.png&quot; alt=&quot;写入电影测试&quot; title=&quot;写入电影测试&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;实际读取测试，从机械拷到固态，速度稳定在 240 ~ 250 MB/s。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:449px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:65.60000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACSElEQVQoz32RXWsTURCGF3qv99Jf43/wJ4g3tVq0gr1WMIpXVUPVC4tYhXqjYBULLYI3atLYJtl8tUmzSXaTnP3ePWfPx5xzZFNaUNHhuZhheOcdZoyOG3T6VqVqdq1RnDGhNAfJpWKguDwlzzUFYCCZACF1kmLTSQzMIcNpHEeUkjgOM0oxA8Ih4zJPGGAGGVOUZh5CKWEhkSERWutByA3C5WGrXauatu1U9w+QG6FEeTF4iUQJTEJAMaBEIi9oNkzbS/b7ccshmNBRJAzMYGD3DxoH7V7bciwiCJWYwikyL6XiSimttZKS4FRKxUg6nIllyd/+iNY/o1efpi+3nPUPzosztpz19/bzXtoEqVwPuYEfJtHURYyRQcAMwtSz1urC98s3Sgu3yosrlaWb5avL5cXbe9dX9paWy4vXflz5MtzJCK2b1VrDbB+1q2bNdae5c8b1xd1Lxsa5uc15Y/PCH8y9nTden1/rbWithRKgAbSUWmkFfZ8aGVdvuu/u1h89bD590Fgr1Iv3ao8L9Sf3zWKhXizUindqq6XJPjDAGU5xignGhCgQg4AbKRODo2O7a0/746k1HvfsYOzHkyCwvWgSBjYKbN8eDC3LGg2GjjN2p8gejhRAvnaS8VL52/buTrPTPOx2qvUaCjytNaiTDXOUzk99FrPDz/6cZML3PeR5XAhKaRQnKcZKaSnVvwDI1X2fGZmQWsvQQ1b/GKfJbPBvPn/HSX8YcqPnMctNf7atr5XWoRNMUrAjPo7Ff3Ai4aZQGZFfvfCuSnTGg+0AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/e4177fd5b51c00249c4e3936fd5eaff0/1e0be/snipaste_2018-12-17_12-32-36.webp 250w,/static/e4177fd5b51c00249c4e3936fd5eaff0/57bab/snipaste_2018-12-17_12-32-36.webp 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/e4177fd5b51c00249c4e3936fd5eaff0/63868/snipaste_2018-12-17_12-32-36.png 250w,/static/e4177fd5b51c00249c4e3936fd5eaff0/053a9/snipaste_2018-12-17_12-32-36.png 449w&quot; sizes=&quot;(max-width: 449px) 100vw, 449px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/e4177fd5b51c00249c4e3936fd5eaff0/053a9/snipaste_2018-12-17_12-32-36.png&quot; alt=&quot;读取电影测试&quot; title=&quot;读取电影测试&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;4K 读取这里就不测了，机械硬盘更多是作为仓储盘使用，4K 性能我并不是很关心。&lt;/p&gt;&lt;p&gt;更多测试可以看这里 &lt;a href=&quot;https://www.chiphell.com/thread-1845728-1-1.html&quot;&gt;HGST Ultrastar 7K8/DC HC320 8TB HUS728T8TALE6L4 小测&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;&lt;p&gt;总的来说，这块盘某宝价格在 1550 元左右，算下来每 TB 价格只有 193.75 元；同时性能表现非常不错，日常使用读写速度在 240 MB/s 左右，基本到达机械硬盘的天花板。&lt;/p&gt;&lt;p&gt;性价比超高，值得购买！&lt;/p&gt;</content:encoded></item><item><title><![CDATA[大话 TLS 1.3]]></title><description><![CDATA[2018 年 8 月，在 TLS 1.2 发布 10 年之际，TLS 1.3（RFC 8446）正式定稿。一看到这个消息，我就想给我的 Nginx 服务器添加 TLS 1.3 的支持，但是这时的 OpenSSL 1.1.1 仍处于 pre 版本，虽然已经支持 TLS 1.…]]></description><link>https://www.giuem.com/blog/tls-1-3-overview</link><guid isPermaLink="false">https://www.giuem.com/blog/tls-1-3-overview</guid><pubDate>Wed, 19 Sep 2018 10:30:45 GMT</pubDate><content:encoded>&lt;p&gt;2018 年 8 月，在 TLS 1.2 发布 10 年之际，TLS 1.3（RFC 8446）正式定稿。一看到这个消息，我就想给我的 Nginx 服务器添加 TLS 1.3 的支持，但是这时的 OpenSSL 1.1.1 仍处于 pre 版本，虽然已经支持 TLS 1.3 final，但是线上服务器一般来说还是得用正式版。终于，在一个月后，OpenSSL 1.1.1 发布，作为新的长期支持（LTS）版本代替了 1.0.2。&lt;/p&gt;&lt;p&gt;现在，是时候更新 Nginx 了。&lt;/p&gt;&lt;h2 id=&quot;从-tls-12-说起&quot;&gt;从 TLS 1.2 说起&lt;/h2&gt;&lt;p&gt;在 TLS 1.3 之前，TLS 1.2 的握手方式饱受诟病。TLS 1.2 的握手流程如下所示：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;      Client                                               Server

      ClientHello                  --------&amp;gt;
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   &amp;lt;--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     --------&amp;gt;
                                               [ChangeCipherSpec]
                                   &amp;lt;--------             Finished
      Application Data             &amp;lt;-------&amp;gt;     Application Data
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;客户端发送一个 &lt;code&gt;ClientHello&lt;/code&gt; 的信息到服务端，这个包含信息主要包含了客户端所支持的&lt;strong&gt;加密套件&lt;/strong&gt;（&lt;code&gt;cipher_suites&lt;/code&gt;）、支持的&lt;strong&gt;TLS 版本&lt;/strong&gt;（&lt;code&gt;client_version&lt;/code&gt;）、会话 ID（&lt;code&gt;session_id&lt;/code&gt;）等数据。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;服务器在收到这个 &lt;code&gt;ClientHello&lt;/code&gt; 后，会选则一个合适的加密套件，然后返回一个 &lt;code&gt;ServerHello&lt;/code&gt; 的信息，这当中包括了选中的&lt;strong&gt;加密套件&lt;/strong&gt;。初此以外，还会&lt;strong&gt;发送证书&lt;/strong&gt;以及&lt;strong&gt;密钥交换&lt;/strong&gt;（&lt;code&gt;ServerKeyExchange&lt;/code&gt;）。密钥交换的数据由选中的加密套件决定，比如使用 ECDHE 时，发送数据有椭圆曲线域参数、公钥的值（详情见 &lt;a href=&quot;https://tools.ietf.org/html/rfc4492#section-5.4&quot;&gt;RFC 4492 section 5.4&lt;/a&gt;）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;客户端收到 &lt;code&gt;ServerHello&lt;/code&gt; 后，会对收到的证书进行验证。如果验证通过，则继续进行密钥交换流程：将客户端生成的公钥和服务端的结合，计算出本次会话的&lt;strong&gt;密钥&lt;/strong&gt;，然后把公钥发送给服务端，最后再发送一个 &lt;code&gt;Finished&lt;/code&gt; 信息。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;服务器收到客户端公钥信息，也会计算得出密钥，然后发送 &lt;code&gt;Finished&lt;/code&gt; 信息。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;至此，握手阶段结束，加密连接开始。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;从中可以看出，整个握手流程需要 &lt;strong&gt;2-RTT&lt;/strong&gt;，这在网络延迟较高的情况下是非常糟糕的，可能导致握手延迟增加几百毫秒。更糟糕的是，握手阶段的数据（如 &lt;code&gt;ServerHello&lt;/code&gt; 阶段的信息），并不是加密的，中间人稍加利用，从中选择比较弱的加密算法，就可以带来降级攻击（Downgrade Attack）。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:103.60000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGR0lEQVQ4yz2UCVDTdxbHvyFACKdyCDSogECtCYgIUrESQVAL5E+CIFVAlJCIWtHFC/CAIIcKAiqXiqJJCAGEosihLUKLQHA5RjzQgIFKbKGCts66O9vdnd8O1PbNvJk38535fOf75s0DmH6YK6tgOOTehm7EKehsljB0wiSOEKQ7gp/mSOen2enw0xwgSGeBn+ZKC0t3WCjKp9nGFwBOWwG/JABmAHv7LGn+H0B8Qr9GCAghYGzJpCP4mKFueIYpLUwyHwKJBQQSS6YgzZARlm4C6oQRNhyhAYnAF1/rIOAQA7AH3IWAdVo1PsmqN7BJq3Z2KvmO4X2+GcsPX52zYB+8DGA1bTk/1WYtP3m+NPoQfKIzgKVxc7o0MRPYXabP3HHOwupEFd1s3yXA/5tH8KkdsPNrGArgVvc5IEHK6Ho55aWd/i27ZWyGRd0aZk5TwrWTVPzah5JcE8XyTZYjE7/s/2X611gCI9Po6/cdltYMeiyXq6xcFX8HAmv7sfJ6l15492s904QiC1qYxMVOVOB84Vb3/Nn4tfHpempKxB2n4r33hh8x38dPWlaUdO6z5yl5dmTler3PlH0G7Bs9LI60R58t7QHWl7Ri47l62lbFAyPHxBI9rDvABKAzCxPX9IIAUFNi4/dBsQzYhdLhs8eAfNw1tuSDq1BhmbwXHLkKbLkKWFT3FEuUgwugfOq2sLLf+lpZGcam3/tMTP+2c90I0dvXrdUf4wndRwQJ7iBEp3Xig4F25n3cyNsPXoQ8xOrqPhZbplrFkfdacuS9QFNNGy7XdbIG2h6ebh/Wus86j8z8w76r+7GfWJjNjhWfsdPyhB6joWJPEEIvGPzZ4PGLVz5XSut9IyJPOnrf6DJny3uXcGQqI7asF/jPyTyQo1nW/yq6fvi/8vplQ7c7/ogD0G1Dkl1Mg1NYSt4ezPBFwMeoc7p9pLUV/7hLLiFYUNIOZ0UfFl3tAnzSFIhKLjfGYYUtJ+qMof3BcvxOiD4hxAjBEga2ntab5gmZakpkKIclsO3YLNDo9L1BJgJTGKYX2nQRU6FrmNNIx8EqgNvwGJ71Qyz/hqEA37rBxUCkzsD4VOiPU+9SawjRz+gcM9bw4gM1oeKAFzEiw9E9yTYj2jfpWs3EBgIwRYofnLbce77Br/mZNe/bFwC/vA2BRS26Mc2PdTkn5DY2uy6uMBcWutnsKbGPvd5h8pPnJqgpEWcmZKejYUrlAttdFzxMd+a7Jh4sti84fFn/SVWzl7q65b62/5nbq76nwL7COuTkyRFRdAfcS+0WXlk3PVdl1qxYU3CH0628yyPNbYZDflHz/rcxyoRb1sbyOlWzck3OTY+/ZSuWqpUtIW8Kry363TNowU8hcWbTG6KBI3lVOJtdYSq82OB0UVJmbHPxPiQdz5HT3I+VeY0gqia8XMXHZEgcVigH4ClR4sJ3jyC9fAspu88iNl2KjBw5ivbnITe5GEgta0RmgZITKX8QWHqmwp0YGJuOj/y46dn4ZHLT9iTbQp/NxmPBcWtHBQlcGiH60keTJsPaN0c7hye+BOesHqtqwM5d1uPnKuuxdpOpgGs5V1GZUWqZWaB0uHs83zy0+K5VvLRj3V5Ze1i8RPZ5W0ltoHZ70rLXgdGL/ZuemwXkN7oeqPw+LLikxf/QudqAOnmrCxSP5nGlXQz27GF/XtWPiNIWFKvfIe/KbZhUqBiIOT8PPqlGAVm1xh9av3eUAhiMS4F59ZCuSbLMAtzjJvDNZTxp6mSR1naLE9UPgEvDcK7sB3YX1uNorsIltbI9oqJI6UQAXcLfYUhCow2IdxBDCeiMcr9ijgoSjN+t38okHuv0CRVlQIK3GahaukAaO9FRfIA+cDuR1tVwEpgXk4vI/ecXDnYOFEzdupc4bMy2Hgnf66amxE4jlNhRI9i1REOJXDS8+E9fUiJnNSX+VE2JndWUyPlV2G6rScEBc+0VNl7fiMGrsh00nPL9CnfCd9GnSm+Y/ftmkw15VoQ3/pHQhCVAQ4nm+iUvnvZxps3OT3hxIDsjkB20TU/o4qU/neWW9LZ845q3RVzgyJciVG7bj/HyKvxT0TD3iSc2J0ATKv4LqOH9CRZhnBKBtBIIfCl4+603D/T/YnHl16sDZcdClsqOBuH/Rh2zMy5sVbQAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/a22ee87b601bcc833a57c71255a14805/1e0be/possible-downgrade-attack-in-tls-1-2.webp 250w,/static/a22ee87b601bcc833a57c71255a14805/b0a15/possible-downgrade-attack-in-tls-1-2.webp 500w,/static/a22ee87b601bcc833a57c71255a14805/a5d4d/possible-downgrade-attack-in-tls-1-2.webp 1000w,/static/a22ee87b601bcc833a57c71255a14805/6c9e6/possible-downgrade-attack-in-tls-1-2.webp 1480w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/a22ee87b601bcc833a57c71255a14805/63868/possible-downgrade-attack-in-tls-1-2.png 250w,/static/a22ee87b601bcc833a57c71255a14805/0b533/possible-downgrade-attack-in-tls-1-2.png 500w,/static/a22ee87b601bcc833a57c71255a14805/00d43/possible-downgrade-attack-in-tls-1-2.png 1000w,/static/a22ee87b601bcc833a57c71255a14805/536c7/possible-downgrade-attack-in-tls-1-2.png 1480w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/a22ee87b601bcc833a57c71255a14805/00d43/possible-downgrade-attack-in-tls-1-2.png&quot; alt=&quot;possible downgrade attack in tls 1.2&quot; title=&quot;possible downgrade attack in tls 1.2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;tls-13-的改进&quot;&gt;TLS 1.3 的改进&lt;/h2&gt;&lt;p&gt;TLS 1.2 的握手方式，是基于之前的版本 TLS 1.1 改进而来。可以说从 TLS 1.0 开始的握手方式基本没有太多的改变：2-RTT、未加密的 &lt;code&gt;ServerHello&lt;/code&gt; 等等… 所以，在我看来 TLS 1.3 最大的改进，就在于握手方式改变。&lt;/p&gt;&lt;p&gt;TLS 1.3 的握手流程如下所示：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;       Client                                           Server

Key  ^ ClientHello
Exch | + key_share*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     v + pre_shared_key*       --------&amp;gt;
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                        {CertificateRequest*}  v  Params
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               &amp;lt;--------  [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              --------&amp;gt;
       [Application Data]      &amp;lt;-------&amp;gt;  [Application Data]
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&lt;li&gt;现在客户端在发送 &lt;code&gt;ClientHello&lt;/code&gt; 信息时，不仅包含支持的加密套件等数据，还会&lt;strong&gt;猜测&lt;/strong&gt;服务器可能会选择的加密算法，并以此计算并发送&lt;strong&gt;共享密钥&lt;/strong&gt;（&lt;code&gt;pre_shared_key&lt;/code&gt;）。&lt;/li&gt;&lt;li&gt;服务器收到 &lt;code&gt;ClientHello&lt;/code&gt; 后，选择合适的加密套件，然后发送&lt;code&gt;ServerHello&lt;/code&gt;，包含共享密钥、证书等数据。而这些数据，这时候已经是&lt;strong&gt;加密&lt;/strong&gt;的了！&lt;/li&gt;&lt;li&gt;客户端收到服务端的共享密钥后，计算出密钥，加密连接开始。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;可以看到，整个握手流程变成了 &lt;strong&gt;1-RTT&lt;/strong&gt;，握手时间明显减少，而且 &lt;code&gt;ServerHello&lt;/code&gt; 之后的数据都是&lt;strong&gt;加密&lt;/strong&gt;的，安全性大大提高。&lt;/p&gt;&lt;p&gt;同时，在客户端在之前有过 TLS 连接的情况下，TLS 1.2 也可以做到 1-RTT。那么 TLS 1.3 呢？&lt;strong&gt;0-RTT！&lt;/strong&gt;对于最近访问过的站点，可以直接在 &lt;code&gt;ClientHello&lt;/code&gt; 阶段发送加密的数据（如 HTTP GET）。但是，值得注意的是，这种方式不具备前向安全性，可能会有重放攻击，使用该功能需谨慎。&lt;/p&gt;&lt;p&gt;除此之外，TLS 1.3 相比 TLS 1.2，还做了一些安全性上的改进：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;废除不安全的加密算法&lt;/li&gt;&lt;li&gt;新的加密套件&lt;/li&gt;&lt;li&gt;禁用 TLS 压缩&lt;/li&gt;&lt;li&gt;……&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;详尽的更新信息见文末的&lt;a href=&quot;#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99&quot;&gt;参考资料&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;tls-13-in-nginx&quot;&gt;TLS 1.3 in Nginx&lt;/h2&gt;&lt;p&gt;目前，Chrome 和 Firefox 的最新版本已经支持 TLS 1.3 draft 28，&lt;a href=&quot;https://caniuse.com/#search=tls%201.3&quot;&gt;Can I Use&lt;/a&gt; 的统计数据显示：TLS 1.3 的全球覆盖率为 65%。无论如何，为了更快、更安全的 TLS 连接，提前给 Nginx 服务器加上 TLS 1.3 的支持是很有必要的。&lt;/p&gt;&lt;p&gt;在 Nginx 上开启 TLS 1.3 是非常简单的。&lt;/p&gt;&lt;p&gt;首先，需要下载 Nginx 1.15.4 和 OpenSSL 1.1.1。这里为 OpenSSL 打一个 patch，主要作用是同时开启 TLS 1.3 draft 23 + 26 + 28 + final 的支持，同时可以自定义加密套件。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wget -c https://www.openssl.org/source/openssl-1.1.1.tar.gz -O openssl-1.1.1.tar.gz &amp;amp;&amp;amp; tar zxf openssl-1.1.1.tar.gz &amp;amp;&amp;amp; rm openssl-1.1.1.tar.gz
cd openssl-1.1.1 &amp;amp;&amp;amp; curl https://raw.githubusercontent.com/hakasenyang/openssl-patch/master/openssl-equal-1.1.1_ciphers.patch | patch -p1 &amp;amp;&amp;amp; cd ../
wget -c https://nginx.org/download/nginx-1.15.4.tar.gz -O nginx-1.15.4.tar.gz &amp;amp;&amp;amp; tar zxf nginx-1.15.4.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后编译 Nginx，&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd nginx-1.15.4
./configure --with-openssl=../openssl-1.1.1
make &amp;amp;&amp;amp; make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;TLS 1.3 的相关配置推荐：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot;&gt;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]:[EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES;
ssl_ecdh_curve X25519:P-256:P-384:P-224:P-521;
ssl_prefer_server_ciphers on;

# 0-RTT（谨慎使用）
ssl_early_data on;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里只做了一个最简单的演示，不包含具体的编译参数等信息。&lt;/p&gt;&lt;p&gt;我在 GitHub 上开源了我服务器上 Nginx 的编译脚本和一些配置文件，可供参考使用。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/giuem/nginx-giuem&quot;&gt;https://github.com/giuem/nginx-giuem&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;参考资料&quot;&gt;参考资料&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/rfc-8446-aka-tls-1-3/&quot;&gt;A Detailed Look at RFC 8446 (a.k.a. TLS 1.3)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://tools.ietf.org/html/rfc8446&quot;&gt;RFC 8446 (TLS 1.3)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://tools.ietf.org/html/rfc5246&quot;&gt;RFC 5246 (TLS 1.2)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[新的开始：好好写博客]]></title><description><![CDATA[这几年我博客基本是废了，没有好好的写过一篇完整详细的文章，都是随便糊弄一下，没有深度。博客的主题也快…]]></description><link>https://www.giuem.com/blog/a-new-beginning-to-blog</link><guid isPermaLink="false">https://www.giuem.com/blog/a-new-beginning-to-blog</guid><pubDate>Thu, 30 Aug 2018 17:08:34 GMT</pubDate><content:encoded>&lt;p&gt;这几年我博客基本是废了，没有好好的写过一篇完整详细的文章，都是随便糊弄一下，没有深度。博客的主题也快 3 年没有换了，看着都有点审美疲劳了。也是借着这个暑假的时间，对博客进行了一番大改版。&lt;/p&gt;&lt;h2 id=&quot;主题&quot;&gt;主题&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;原来的主题实在是看腻了，这次也是重新写了一个。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这几年我对博客主题的审美逐渐趋于简洁。所以这次主题，我采用了单栏风格，原来的友链移至&lt;a href=&quot;https://www.giuem.com/links/&quot;&gt;内页&lt;/a&gt;。首页为了不显得那么单调，加了一个头图，这个设计主要参考了 tcdw 的 &lt;a href=&quot;https://github.com/tcdw/egoist&quot;&gt;egoist&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;同时，还做了很多没什么卵用的优化：内联样式、缓存脚本文件、使用 System fonts、还有各种 prefetch 等等。一套下来，整个站点的单页请求缩减到只有几个（不包括启用 Disqus 的页面），速度还是非常快的。&lt;a href=&quot;https://developers.google.com/speed/pagespeed/insights/?hl=zh-cn&amp;amp;url=https%3A%2F%2Fwww.giuem.com%2F&amp;amp;tab=mobile&quot;&gt;Google PageSpeed Insights&lt;/a&gt; 的得分为 100。&lt;/p&gt;&lt;p&gt;主题现在仍处在开发中，等开发完成，会开源并做一个详细的介绍。&lt;/p&gt;&lt;h2 id=&quot;内容&quot;&gt;内容&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;一个字：删！&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;博客建立初期，我的文章基本都是和&lt;strong&gt;百度贴吧&lt;/strong&gt;相关的。这些文章大多都时效性，现在来看，基本都已经失效；加上我现在已经不再玩贴吧了，这些内容等于是不再维护了（包括曾经写的&lt;a href=&quot;https://github.com/giuem/TieBaRobot&quot;&gt;贴吧机器人&lt;/a&gt;）。所以索性就把这些内容都给删除了，还有一些很水很水的文章，也被我砍掉了。&lt;/p&gt;&lt;p&gt;以后更新的文章，可能会更加硬核（暗示咕咕咕）。&lt;/p&gt;&lt;h2 id=&quot;架构&quot;&gt;架构&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;博客的架构也进行了一次大改版。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;之前我博客的部署流程是比较麻烦的，使用 Travis CI, GitHub Webhook（见&lt;a href=&quot;/blog/deploy-via-travis-ci/&quot;&gt;《使用 Travis CI 自动部署 HEXO 博客》&lt;/a&gt;）。这次也是简化了流程，直接在云主机上搭了一个 &lt;a href=&quot;https://www.minio.io/&quot;&gt;Minio&lt;/a&gt; 私有云存储，然后在 CI 构建的时候直接把静态文件 push 过去。之前因为 GitHub 在国内访问速度不佳，导致主动拉取的速度很慢很慢，有时候还会 timeout。这次改版后，构建发布的时间基本&lt;strong&gt;不超过一分半&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;博客的 CDN 也做了修改，国内仍然是使用腾讯云主机。国外之前的使用 Firebase Hosting，速度是还可以，但是配置不太灵活，这次换成了 CloudFlare 回源 Netlify 的方式。CloudFlare 是 Pro Plan（由&lt;a href=&quot;https://cloudhammer.org/cloudflare-pro/&quot;&gt;云锤&lt;/a&gt;提供），可以直接 CNAME 接入，方便 GeoDNS；还有 30 条 Page Rules。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[66云（66.To）磁盘扩展小记]]></title><description><![CDATA[最近在 66 云买了一台服务器，他家的面板采用的是 Azure Pack。看起来很高大上，但是因为文档太太太简略了，对像我种垃圾来说很不友好。 过程记录 66 云上创建的虚拟服务器默认是只有 40G 的磁盘大小，套餐是 80G…]]></description><link>https://www.giuem.com/blog/extend-disk-at-66to</link><guid isPermaLink="false">https://www.giuem.com/blog/extend-disk-at-66to</guid><pubDate>Wed, 14 Feb 2018 21:05:54 GMT</pubDate><content:encoded>&lt;p&gt;最近在 66 云买了一台服务器，他家的面板采用的是 Azure Pack。看起来很高大上，但是因为文档太太太简略了，对像我种垃圾来说很不友好。&lt;/p&gt;&lt;h2 id=&quot;过程记录&quot;&gt;过程记录&lt;/h2&gt;&lt;p&gt;66 云上创建的虚拟服务器默认是只有 40G 的磁盘大小，套餐是 80G，需要手动扩展或挂载一个新的磁盘。为了方便，我直接扩展原磁盘。&lt;/p&gt;&lt;p&gt;首先去面板里把服务器关机，把磁盘扩展到 80G，在开机就行了。&lt;/p&gt;&lt;p&gt;你以为就这么简单？才不是呢！重启服务器后查看磁盘大小还是 40G。。。
通过 &lt;code&gt;fdisk&lt;/code&gt; 查看分区发现模板创建的系统使用的是 &lt;code&gt;Linux LVM&lt;/code&gt;，然后扩展是加了一个 40G 的&lt;code&gt;Extended&lt;/code&gt; 分区，可以说是非常睿智了。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ fdisk -u /dev/sda

Command (m for help): p
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x32a7a126

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M 83 Linux
/dev/sda2       1001470 83884031 82882562 39.5G  5 Extended
/dev/sda5       1001472 83884031 82882560 39.5G 8e Linux LVM

Partition 2 does not start on physical sector boundary.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;所以接下来要重建分区，这里要记下 LVM 分区的开始扇区位置 &lt;code&gt;1001472&lt;/code&gt;&lt;/p&gt;&lt;p&gt;先删除 Extended 分区 (/dev/sda2)。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后创建新分区，并写入。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (999424-167772159, default 999424): 1001472
Last sector, +sectors or +size{K,M,G,T,P} (1001472-167772159, default 167772159): [ENTER]

Created a new partition 2 of type &amp;#x27;Linux&amp;#x27; and of size 79.5 GiB.

Command (m for help): t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 8e

Changed type of partition &amp;#x27;Linux&amp;#x27; to &amp;#x27;Linux LVM&amp;#x27;.

Command (m for help): w
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后 &lt;code&gt;reboot&lt;/code&gt; 重启服务器。&lt;/p&gt;&lt;p&gt;接下来重置 LVM 的大小。&lt;/p&gt;&lt;p&gt;首先重置 PV（物理卷）。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ pvresize /dev/sda2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;再重置 LV（逻辑卷）。
通过 &lt;code&gt;pvdisplay&lt;/code&gt; 查看 &lt;code&gt;Free PE&lt;/code&gt; 的大小，不出意外的话应该是 40G。
通过 &lt;code&gt;lvdisplay&lt;/code&gt; 查看需要扩展的逻辑卷，这里是 &lt;code&gt;/dev/ubuntu-vg/root&lt;/code&gt;。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ lvresize -L+40G /dev/ubuntu-vg/root
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最后再更新一下文件系统就行了。通过 &lt;code&gt;df -T&lt;/code&gt; 得知 &lt;code&gt;/dev/mapper/ubuntu--vg-root&lt;/code&gt; 文件系统类型是 &lt;code&gt;ext4&lt;/code&gt;。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ resize2fs /dev/mapper/ubuntu--vg-root
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;参考资料&quot;&gt;参考资料&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://wiki.archlinux.org/index.php/LVM&quot;&gt;LVM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.linuxquestions.org/questions/linux-virtualization-and-cloud-90/grow-lvm-in-extended-partition-857896/&quot;&gt;Grow LVM in extended partition.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[组台与折腾]]></title><description><![CDATA[双十一组了台式机，使用了近一个月，体验不错，能在 1080P 中高画质下流畅运行各种游戏。但是因为预算暂时不是很充沛，考虑到后期还会升级配置，所以目前的配置是有点畸形的。（多图预警） 装机思路 CPU CPU 的话暂定 Ryzen 5 1600X…]]></description><link>https://www.giuem.com/blog/computer-diy-record</link><guid isPermaLink="false">https://www.giuem.com/blog/computer-diy-record</guid><pubDate>Sun, 03 Dec 2017 00:48:47 GMT</pubDate><content:encoded>&lt;p&gt;双十一组了台式机，使用了近一个月，体验不错，能在 1080P 中高画质下流畅运行各种游戏。但是因为预算暂时不是很充沛，考虑到后期还会升级配置，所以目前的配置是有点畸形的。（多图预警）&lt;/p&gt;&lt;h2 id=&quot;装机思路&quot;&gt;装机思路&lt;/h2&gt;&lt;h3 id=&quot;cpu&quot;&gt;CPU&lt;/h3&gt;&lt;p&gt;CPU 的话暂定 Ryzen 5 1600X，因为狗东双十一有活动，可以做到 1499 的价格，非常划算。虽说 Intel i5 8400 性价比更高，淘宝散片价格 1200 - 1300，但是主板价格实在是太贵了！等明年出 B360 系列主板才划算点。&lt;/p&gt;&lt;h3 id=&quot;主板&quot;&gt;主板&lt;/h3&gt;&lt;p&gt;既然确定是 1600X，基本也不用怎么折腾 CPU 超频了，所以选择 B350 主板。翻车嘉不考虑，华硕太贵，就选择口碑还算好的菌龟星。&lt;/p&gt;&lt;h3 id=&quot;显卡&quot;&gt;显卡&lt;/h3&gt;&lt;p&gt;鉴于 11 系的显卡也快发布了，而且现在显卡价格偏高（好吧，其实是预算不足，打算之后升级），所以暂时购买二手显卡。GTX970 我认为是一个不错的选择，1100 左右的价格，性能接近 1063，价格却少了 200 元。&lt;/p&gt;&lt;h3 id=&quot;内存&quot;&gt;内存&lt;/h3&gt;&lt;p&gt;内存嘛，价格是真的贵，去年这时候 8G*2 六七百就能拿下，现在真是堪比金条… 所以呢，我就挑便宜的买。反正到手肯定是要 OC 的（Ryzen 平台不上 3000 频就废了&lt;/p&gt;&lt;h3 id=&quot;其他&quot;&gt;其他&lt;/h3&gt;&lt;p&gt;固态首选三星，960PRO 买不起就只能买 OEM 条了。&lt;/p&gt;&lt;p&gt;电源的话，考虑后期扩展，而且这东西基本可以当传家宝了，就选择了贼船。&lt;/p&gt;&lt;p&gt;其他的就没啥好说的了。机械 1T 不存小姐姐足够了。散热也是传家宝系列，选了百元价位&lt;del&gt;最强&lt;/del&gt;的赤兔马。&lt;/p&gt;&lt;h3 id=&quot;最终方案&quot;&gt;最终方案&lt;/h3&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;型号&lt;/th&gt;&lt;th&gt;价格&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CPU&lt;/td&gt;&lt;td&gt;Ryzen 5 1600X&lt;/td&gt;&lt;td&gt;1599&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;主板&lt;/td&gt;&lt;td&gt;MSI B350M MORTAR&lt;/td&gt;&lt;td&gt;549&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;显卡&lt;/td&gt;&lt;td&gt;EVGA GTX970 4G SC&lt;/td&gt;&lt;td&gt;1100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;内存&lt;/td&gt;&lt;td&gt;英睿达普条 DDR4 2400 8G*2&lt;/td&gt;&lt;td&gt;1168&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SSD&lt;/td&gt;&lt;td&gt;SM961 256G&lt;/td&gt;&lt;td&gt;790&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HDD&lt;/td&gt;&lt;td&gt;希捷酷鱼 1T&lt;/td&gt;&lt;td&gt;280&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;电源&lt;/td&gt;&lt;td&gt;海盗船 RM650x&lt;/td&gt;&lt;td&gt;869&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;机箱&lt;/td&gt;&lt;td&gt;乔斯伯 C3&lt;/td&gt;&lt;td&gt;273&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;散热&lt;/td&gt;&lt;td&gt;大镰刀赤兔马 PLUS&lt;/td&gt;&lt;td&gt;123&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;各种优惠&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;-491&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;总计&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;6260&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;折腾&quot;&gt;折腾&lt;/h2&gt;&lt;p&gt;CPU 就不超了，1600X 默频全核 3.7，通过 Ryzen XFR 技术可以单核 4.1、双核 4.0，日常游戏足够了。
&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:403px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:99.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEOElEQVQ4yzWUz28bRRTHfeXSCwcuiAMnOIDECakSqoS4cMoRyqUq4o9BFQduCEHPIISQElDUJCRxnNip88N2YjveXe+P2dnf3l1v7MSlSat+0Izbw9Psm3nz3fe+7/um9uP325hjDy+KmD9/xeIFXN/C4vb1qvybV9renF3fvmL230vtXz671WtWXZHPFtROOiEXgxuENyMMBGVRUOQT8klGkedkacplVWlT39OyZJKlSOkTRxH561i1/2yxoDaWFb//1mNzs4PjWLieh2GamKaJlALXdQjDgDiOsCwT27YxTYtut4tlWURxTBgnXF9fU5ZTaiLOGFt9ut0TLi4uyLKMy8uKqprS7wtGI4lpBlwMfUajkOm0pCxLruZz/t3Z5fHjX/nuwTc8ePitvl/zogk3z5+Tphn1ep0kSfC8mPNzj4N9g7NzQZ5PcWzJYGAgvJjhQFAUFfe/vs9n77/Dw8/f49233+KPP/9aAl5fzRFCsLq6ShiGBDJdgp55nJzY9Pse5+cOhiGI4wwpY2azOSsrK9y9c4evPv2IL+5+wto/69TEa8AwjOj1egRBRLttYxiSxeIKwzBoNlt0uz2KotAU2HbAyxc3PPrhER9/8CFf3rvHTz//omN1hovFNUEQcHBwoDlUHA0GYsmhofjzOD21Ndhw4Ov17Ewg/ZxiWlJUFfP5TGPURDzhaj7TXd3b2yNNU6IoI8sKyrLCdX02N7bwPF/vK1P7cTyh2TwkDCT5pNB+FEXUgmyK8FzW1tZotVpIGWJZUjdJ0bC5ucXq6t/YtoPnRURRQpbl+sc7Ow0sy9Y8n517RFFIzU8KzeHp6SlHR20OWwb7+2MOD8e0WmPaTx2Oj306HcFe3aDVstnbM+mcuvR6AsdOODvzkXJCksTUHJkgfUEQhnoSXEfqTgZBqtcwzDAMF9N0SdNS++osDFNms0prdj5XdqkVUrNlTL2+y/r6OvuNBoZh6pKFCBmPJWVZMBj0aTT2GA4HOoswTHDdQJ/HsUoowhcxUkpqQVpSFLkueXt7W3OnpqLXdRhe+OR5ThzHNBoNnjx5ook/73kcHBg0GoYGV/o8PnaWXZZJQRyF7NbrbGxs6EkxRr7mUo2c+pkCVCpoHbYQntST0us5tJomQkQ4jqTbdZeAusvCo91u62FXGaVJQZLkWjpKzFVVadvd3dUqGFsx7afLxoXRBMuU9HqqMQE1N0z1c6UuarA0ZTLJtGVZqktUGSrBq+xVTBKnBEFMFKVLP0l16b7vK9nkzGczrcFOp8NwONQTo14OBaY6pwIV4NHREYPBAOnHXF7OkIGveR2NRiRJuSx5LCKtdtf19AOhH4cg0GBvslKAat/zPN1J1VllKkbRpEwIH8dxqI0ciTG60I66OB6PsZSZJv3+gEmec3x8TLPZ1BdVnOJ7Z2cH13V1JWrKtrY29aP7P32Gh/DTdfhKAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/a9207414bcdf68db03652da0c9623279/1e0be/snipaste_2017-12-03_00-35-23.webp 250w,/static/a9207414bcdf68db03652da0c9623279/ca1b5/snipaste_2017-12-03_00-35-23.webp 403w&quot; sizes=&quot;(max-width: 403px) 100vw, 403px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/a9207414bcdf68db03652da0c9623279/63868/snipaste_2017-12-03_00-35-23.png 250w,/static/a9207414bcdf68db03652da0c9623279/045fd/snipaste_2017-12-03_00-35-23.png 403w&quot; sizes=&quot;(max-width: 403px) 100vw, 403px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/a9207414bcdf68db03652da0c9623279/045fd/snipaste_2017-12-03_00-35-23.png&quot; alt=&quot;cpu-z&quot; title=&quot;cpu-z&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;显卡频率有点低，才 1140/1753 MHz，默电小超了一下，+125/+250，稍微提升一点。毕竟二手卡过保了，就不要草太狠了。
&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:390px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:132.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAaCAYAAAC3g3x9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEx0lEQVRIx0VVWY4cRRTsk3EYjsAFuANIiNUgDsAHX8a2BDa2ZvFMbZm1ZO37vnVXzwaDAr3Xw/BRqqxS5ct4EfGidqLK4BcBkrRClBZI8hJp0SDOKuR1h7SoMO2P+Osf4OHpunl4xOH2HvePwMMj8AhgPtzgeP83dtU4YZ4HTOOIcfj/vi4Lr4euw35dsR0O/I7u93e3uL+7w93dLcIgQNe2qKsKbdNglzcTojBGnuVomg5d10PXDQRBgCxLYVkCylNI0xSXl5dwPYVxmjBNM6Z5hm3byIsMcRLD9wPs8nbC7c0R8zzDVz7qpsHhcEBR5DBNAVvacBwHvu8zGmk7GIaRv2+ahvcY1w7ytMY4jdhlzYjDfsU0TRBCIM8LXttSMrqqqpAkCSMmlGVZ8btlmTENC4JE4rX2HazoLeZxf0K4zBP6fkAcx4xw6HsISyCKYhyPG8qyhGVaSNMMfdchCANMw4pqcvFSfY6vrz7Br+5nuN+AXdEvKPMMQkhYwmKETVPDth3UdY1lXZlwz1NIkhRhGELTdeR5iSQL8Or6G7z441O81L7Afr7FLq17OFLCdT14rscoiTMqYBgm8xT4Aa/jJEGRZ3j//gO6vsfrV2/w1Zff4qcXP+OH73/kfbu0HmCLU0EpBIqixED2mWf0bcM8WqaJq6trRkdiEMfLssB1XaRpwmKRaLSHOcySBGEUIwwD5nBdVxRFwWKQAEQB8Ufrtm2RxDFbTUoJpRSEZcFxXD5sl3czt2GYJnRNZxVpE/nLdhwshLTvGT1ZiJCYhgkpJFMkpORWwyjCME6nlpXnIQwjuI6Hum4Yga8UI4qjmAWT0kaW5cjznN/lWQZbOlyUWq7qBk0/nHx4d3uDOE6Yq6qqMQ0jhDAhpQPD0DHNC9uFrPSfaEmaYZ5mBL6PIAi5C+KVbdPWNRNMI0ctZ2kGx7YhBI1VgeO2MVckHBWl9sibhM51nBP6PD8VTJsRURhw28RLWVVIkwS6pvEBRHYUx4ysLEpIYfPhRVky18Stdq2hadqngvUA1zmRTSioIClsPSmn1KmleVkwTxOU58NzXXZA33fPnp3n5Unldjoh9AMuSCeTz3RdY9Xp5G3b0NQ1DN2ApumI4oSjzLElj6TjeryHC4ZZBeW6XJBQVXWN/X7/PG6+p/Dx8iPbg8JD8ogKKEV8SuaaWl+eEXYzqiJnoin3yDZlUSAIQ/i+4niiOKPxI1GU7/O9bTuM48AI4yTlb7hg2S+oy4JHjJxPdvCVx89ZlrEnCXUUhs8tk8WKPGefkm0sy+Roo9BlDiltKG2JbEobCgvzKQujKOJ2SShu1xI8s3EUwnZcpEkKwzAYNSX5Lql62MKCEA6PG/kr8BUXpCI0MVSQJsTzTsi7rkMY+Dya9OugzohvRsgtVyUXI3sQwaTqth04JEggem6bGrpmwFOK/UbvibeV7tvG6+dJ6buWIVOo0mSQ98hC5H46hAShcD1Nj0SaZYzWsR22HPFIFIx9j11UdoyQ/hlUhD6m3KMi1CYJQxflJNFxirMWVVUiJb7DDNJPoOICRN/uQpf4891bXFxc4uzsDBfn57i+1nB+fsYjR0XpInGI0+PxiHXd42Y7oOhXvHMq/PLmHL+dS/xuN/gXgv1Tyk5/dwEAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/321a9ab261f96184a4726e602d36e2b7/1e0be/snipaste_2017-12-03_00-35-49.webp 250w,/static/321a9ab261f96184a4726e602d36e2b7/a9b47/snipaste_2017-12-03_00-35-49.webp 390w&quot; sizes=&quot;(max-width: 390px) 100vw, 390px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/321a9ab261f96184a4726e602d36e2b7/63868/snipaste_2017-12-03_00-35-49.png 250w,/static/321a9ab261f96184a4726e602d36e2b7/727ba/snipaste_2017-12-03_00-35-49.png 390w&quot; sizes=&quot;(max-width: 390px) 100vw, 390px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/321a9ab261f96184a4726e602d36e2b7/727ba/snipaste_2017-12-03_00-35-49.png&quot; alt=&quot;gpu-z&quot; title=&quot;gpu-z&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;内存默频 2400 MHz，这肯定是要超的，Ryzen 平台极度依赖内存频率。刚开始我是直接超到 3200，可以进系统，但是跑 Memtest 出现错误，怎么调参数都没用，最后是降到 3066 Mhz 才顺利通过测试。看来镁光的颗粒还是不适合折腾啊。
&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:539px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:96%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADKElEQVQ4y0VU2ZLbRgzU1yWxk9WxFC+J4n2KkqiD0mpvryv2+i1x2c5bkkoq/9mpbkryA2qGM5hGowGwFxVb7G9fUDdHLLb3qNe32B6ekdctmvYBy+09mt0DbK/AleFjaIZa+2NaoL3OrQjjSYreyI51MDADcD8wQxhuCtvL5TS0QpiTDNdOfHnM+5EdCZA+DEa/kRWhZ7gJrGmugzeDqRzCfC2G5jQTWDpvkZRbAZnTHNm8RZitFMSeFSgWe7h+2TEkoDMrdPl26OkwzBoZnRy/UgB+O7MS06hGVGz0bXm52M3ihTBIoHftJNqM3RRvh1MBxsUGSbGB45diwMdRvpYMBEyrnc54Z3kFvGihYCfAWJGMEyDXIF1dGJIBwWiUxvUr7YP0O0PuGZzgAjyL3jHM5HABnJUnho0YukGlbwYlIM1PlgKkvheG55Sv7VjOZ0Z0moa1zujjnAJQN+rfEVhJQ+6l4bnKP/VdpeAnKz1gZRm9S7GTgfrO4u5MhZl2ZNQR1JAM0qpFuTyot/igPb4gLbeIT4/OQCwUC8I77nnPgtAYmHL0qF98aoOfRx6CrMH+9j2q1Y2cqCfZeGGtdGkuza9kk6Bbp8Fcdz22SZQ1SMqN9GM6xeKgFKvljQIw2MSv1FJ2UHbGHg2qLgCBwxMg24TiMn+OEr+9qFaFOYpvBhP88IuDH68cNf7IiWWcKI4pGVJDBtOksDkpPrXhLJLhZv+E5eZeI8Y7ShIXa638WazbJ5Qat0r3SvnMkEXJ6z2CdKnB51gdHz7o0f74Xuv25h3W7SMWmzvpSW27LL6nfAFkdyfVTqCGk6hl2tsOqNk9YnN4RtM+KgMypBTnYkyCubSjefGiq/LYjnE99mGYIfqGD/blJKz1WL0WLzALKvjhXCunhVNxZsaGtlkDO8LYCtFz6xtEx18xa9/B4H/NDDAYBxi7iYoV7p5QPLyiuP+I9O4D7GAOkwCTVKYuObwgf3yF3z6jN7v7hNW3/1D+9ifG8RpDK8XIzTGwEgzsFNnHr2i+/ovl579Q//43Rn6NKyNE30rQN2P07RTx6zcsv/yD+PUP/A96qDHBTN0IdQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/ad4c1aa0072c28bf377218ccf0026f4f/1e0be/snipaste_2017-11-16_13-01-48.webp 250w,/static/ad4c1aa0072c28bf377218ccf0026f4f/b0a15/snipaste_2017-11-16_13-01-48.webp 500w,/static/ad4c1aa0072c28bf377218ccf0026f4f/9cb26/snipaste_2017-11-16_13-01-48.webp 539w&quot; sizes=&quot;(max-width: 539px) 100vw, 539px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/ad4c1aa0072c28bf377218ccf0026f4f/63868/snipaste_2017-11-16_13-01-48.png 250w,/static/ad4c1aa0072c28bf377218ccf0026f4f/0b533/snipaste_2017-11-16_13-01-48.png 500w,/static/ad4c1aa0072c28bf377218ccf0026f4f/10f9a/snipaste_2017-11-16_13-01-48.png 539w&quot; sizes=&quot;(max-width: 539px) 100vw, 539px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/ad4c1aa0072c28bf377218ccf0026f4f/10f9a/snipaste_2017-11-16_13-01-48.png&quot; alt=&quot;aida64-mem&quot; title=&quot;aida64-mem&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;跑分&quot;&gt;跑分&lt;/h2&gt;&lt;p&gt;跑分软件太多了，懒得一个个跑，我这里就测了 3DMark 和 R15。分数凑合，中高端水平吧，显卡很明显拖了后腿。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACP0lEQVQoz32O3UtTARjGz5/UVXddlsnCVTrxLDe2eb53ztnOdkx0atbSzKQogkgRgkD6uAiC6rILiTKiTC3qKqim+bHtnG263KpfzOq2B348vDzwPK9gj06RuzJL3HAIx1WiionmnCbp5tDcIcKSwYDaw3lLpDehoNpZZN0irpjEVIuE4RDT03RHZY51hhFGLs9gDU8QkXRiqolkZdAHx9BFES0mkR80qa88gbUlZkZkxLhCMpXBTLsYtkufkSahpegSo7R3nEQ4d3MeOZsjHI2jWA5a2sVKWlw3Y5xx0kwPm/DlBVQ/8eCSjRhTUJJpsgM5DMshElcRe+MET3Ry5Gg7Qmo4TyQhk1AN+nOjaOEe1EMHuJGVGBg7j2Fb3J6wuD9lYxsymumg6jaO2yrMEIkphEI9BAIB2tvaEE4lJKKyjqUbjLsOaTGEfvggg2IAx3VJuRmiskxHqBtF15D6+kgkVExrgEhcp6u7l2AwRPB4N8GOLoSMKjF+YZKZyXFuzc4ynR9jLp/j4fwcL5cXWFpd5O37Rd6sPP/LInfu3uPi1FUGc2fp7x+i3zIYzqRwbRvhw7On0KjieR7FUhnPK9P88ZNf/F+NRoPv9Tp7jSbN1UewcI2NV48RPr9bZrtUwvc9fM/D83x838cvbbFWWKO0n/n7g17LtzfY2vjGdrFIrVajWq1SqdaoVXzWC18RvI+vWd8qUvH/FFUqFcrlMlubm+zs7LC3t7f/zT/q9Tq7u7v73rpbeYtms0mhUOA3ijwB0zK+zdMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/fb1d41b11685d9f776a3f127ceca12e8/1e0be/snipaste_2017-12-03_00-40-34.webp 250w,/static/fb1d41b11685d9f776a3f127ceca12e8/b0a15/snipaste_2017-12-03_00-40-34.webp 500w,/static/fb1d41b11685d9f776a3f127ceca12e8/a5d4d/snipaste_2017-12-03_00-40-34.webp 1000w,/static/fb1d41b11685d9f776a3f127ceca12e8/61eb3/snipaste_2017-12-03_00-40-34.webp 1369w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/fb1d41b11685d9f776a3f127ceca12e8/63868/snipaste_2017-12-03_00-40-34.png 250w,/static/fb1d41b11685d9f776a3f127ceca12e8/0b533/snipaste_2017-12-03_00-40-34.png 500w,/static/fb1d41b11685d9f776a3f127ceca12e8/00d43/snipaste_2017-12-03_00-40-34.png 1000w,/static/fb1d41b11685d9f776a3f127ceca12e8/8dd93/snipaste_2017-12-03_00-40-34.png 1369w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/fb1d41b11685d9f776a3f127ceca12e8/00d43/snipaste_2017-12-03_00-40-34.png&quot; alt=&quot;3dmark-fse&quot; title=&quot;3dmark-fse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACJ0lEQVQoz22M60tTARjGz19qWELhh4SuZokIfrAPQjaTBOtL2cSshhdIwdScwym7ejvbnJu77+xcd3bmzjluv3CQEvTAj+fheR9e4en9Oww+6GG0v4d3j3vxjj9h64uHYmybs51VsuEdKoFvyH4vhUScfFWiLElUcmn0dJx8cIOTlUVWZ2Z5PzyEMDbQx/jAXWae9XG4voCSjqKkw5Rim1RTMdTwKpfHaziZfTKBHxwpLpFsjUiuRjWToJGNIMUDBOfmCXyeRXg72M/ko3ssjvaT3vBilUW0TBQ9G8esXZDa9UHqF6hJ8rtfOSrVCScv2IqmEAslbC1HS8mR31rhwr+E8Gn8OUtvhtmeekl2c46mfEa9JGIWTjk/DvFhysP3mdeszY4RDEUQiyohMUNQzBEvSjTUMm5DQjndoRBcRvjpecXBxxESvkmsQohLOY1VSVFNRYntrjExMkTvwxdMeKZZmPeyvPGbQEzELxYIiUmu6mVcW0cW/RT3lxDivmkqe4sY53u0tByOJdPSyjTkDJqRQVGzHCeiNJplND1HTS+TypxzEDtClQq4ZgVbEqmfrFM58CHo2UOwTQzTxLIsOp3ODVftNn/V4Vau49BpX+G6Drbbxj1Zo7P9BvtwBaEkRqgpKrqmYRgG9Xr9H7qdIiFJVWRZ6Xamad7cu7lhYRg6plpBKCfjSNfD/zy7Rtd1arUazWaTVquF4zjYtt3122zTsm2susofiLd3E+27i0cAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/43d66506a7e8d6640d332a8767829bf5/1e0be/snipaste_2017-12-03_00-40-58.webp 250w,/static/43d66506a7e8d6640d332a8767829bf5/b0a15/snipaste_2017-12-03_00-40-58.webp 500w,/static/43d66506a7e8d6640d332a8767829bf5/a5d4d/snipaste_2017-12-03_00-40-58.webp 1000w,/static/43d66506a7e8d6640d332a8767829bf5/338ac/snipaste_2017-12-03_00-40-58.webp 1368w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/43d66506a7e8d6640d332a8767829bf5/63868/snipaste_2017-12-03_00-40-58.png 250w,/static/43d66506a7e8d6640d332a8767829bf5/0b533/snipaste_2017-12-03_00-40-58.png 500w,/static/43d66506a7e8d6640d332a8767829bf5/00d43/snipaste_2017-12-03_00-40-58.png 1000w,/static/43d66506a7e8d6640d332a8767829bf5/8b936/snipaste_2017-12-03_00-40-58.png 1368w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/43d66506a7e8d6640d332a8767829bf5/00d43/snipaste_2017-12-03_00-40-58.png&quot; alt=&quot;3dmark-timespy&quot; title=&quot;3dmark-timespy&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:53.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7UlEQVQoz21TTW/TQBD1rykKShQr/lx77dhre+M0JKaVUBOHNKgBpFaEIhqpKqQqN8QNCSq48XHlxi/gHyAO+T0P7cZ147aH0ezOjN++mXlWWJQgDEO0220QQuA4Tuk3TcSE2bZdnu+qV1gUwfM8cM5BKa0UiY8ty5JexFzXhe/7ss6lrrzfBFWiKJKHXq8ngUVCFLZaLdyv1TB4OCgswzAf4s3yLfaGQ5imiSAIbjPsdFIkSSKTVy8Kr+s6iEOQdlOIRztpitnTGRanC3z4+B7Z7gDNZhO0IHENyDnSDgdjoQQSQduykXQSsJhJMMYYuttdrFYr/Fv9xe8/v/Dlx2dEcQRN0yqtKwGLQVwfjhfCLWe4Zjh9so/zi3NQjyKfjPH95zdcfr3E8clLLC+WOJgdrFluzF5ZzJ9j/uwxZqMMvkdhFwnTMHH04ghn785k25PpBIfzQ+TjHNkgw72trbU6gqBcmgR89OoTdvamSJgHSq+pG4YOSgl4ytFo1GGaOnr9bbQDHy4lODl9DVVVYRhGdcvUF7NzQBwXjphhoS/fp/A8G6raQBT52Nnt40E/BecMCWcY749Qr9dg6Hp1hpZp3BLpXYKV2iuWRogNraVVRF+2PM5HiONYanAzuenFXyS2LUzUivtNsCuG/wEcCIssinruTQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/18b2dd03881ac87a7de331b8e2363de6/1e0be/snipaste_2017-11-16_12-59-38.webp 250w,/static/18b2dd03881ac87a7de331b8e2363de6/b0a15/snipaste_2017-11-16_12-59-38.webp 500w,/static/18b2dd03881ac87a7de331b8e2363de6/a5d4d/snipaste_2017-11-16_12-59-38.webp 1000w,/static/18b2dd03881ac87a7de331b8e2363de6/293e0/snipaste_2017-11-16_12-59-38.webp 1500w,/static/18b2dd03881ac87a7de331b8e2363de6/882b9/snipaste_2017-11-16_12-59-38.webp 1920w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/18b2dd03881ac87a7de331b8e2363de6/63868/snipaste_2017-11-16_12-59-38.png 250w,/static/18b2dd03881ac87a7de331b8e2363de6/0b533/snipaste_2017-11-16_12-59-38.png 500w,/static/18b2dd03881ac87a7de331b8e2363de6/00d43/snipaste_2017-11-16_12-59-38.png 1000w,/static/18b2dd03881ac87a7de331b8e2363de6/aa440/snipaste_2017-11-16_12-59-38.png 1500w,/static/18b2dd03881ac87a7de331b8e2363de6/29114/snipaste_2017-11-16_12-59-38.png 1920w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/18b2dd03881ac87a7de331b8e2363de6/00d43/snipaste_2017-11-16_12-59-38.png&quot; alt=&quot;r15&quot; title=&quot;r15&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[第一次的 CUMCM]]></title><description><![CDATA[…]]></description><link>https://www.giuem.com/blog/my-first-participation-in-cumcm</link><guid isPermaLink="false">https://www.giuem.com/blog/my-first-participation-in-cumcm</guid><pubDate>Thu, 21 Sep 2017 20:10:46 GMT</pubDate><content:encoded>&lt;p&gt;最近参加了全国大学生数学建模竞赛，挺好玩的，故作此文记录。&lt;/p&gt;&lt;h2 id=&quot;起因&quot;&gt;起因&lt;/h2&gt;&lt;p&gt;上学期大项目组队，本来我们是三个人，结果其中一个队友拉了一个小姐姐进来。刚开始以为小姐姐是来抱大腿的（大腿不是我），后来发现她虽然代码写的不好，但是很积极，给的任务也很快地完成……唔好像跑题了&lt;/p&gt;&lt;p&gt;反正，就是这样，我认识了她。然后这个小姐姐高数可厉害了，直接免考拿优 Orz。&lt;/p&gt;&lt;p&gt;之后，她就找我谈组队的事。一开始我是不想参加的，因为我对算法很不感冒，怕拖后腿。但是她劝我说，数学建模的算法都是确定的，可以查资料。好嘛，不就是实现算法嘛。于是，我就答应了。&lt;/p&gt;&lt;h2 id=&quot;队伍详情&quot;&gt;队伍详情&lt;/h2&gt;&lt;p&gt;我们的队伍有我、小姐姐、还有一个学物理的。其中只有小姐姐有数模经验（校赛），还没有获奖。队伍配置应该是所有参赛队里最渣的了&lt;/p&gt;&lt;h2 id=&quot;day-0&quot;&gt;Day 0&lt;/h2&gt;&lt;p&gt;晚上 8 点钟，题目出来了。A 题是 CT 相关，需要很强的数学和编程能力，涉及图像重建、矩阵变化、傅立叶变化；B 题是拍照定价，主要是数据挖掘，数据处理方面的，与机器学习有关系，也是需要编程。&lt;/p&gt;&lt;p&gt;我个人倾向于选 B，这题比较贴合当前的热点，感觉比较好玩。但是另外两个队友觉得 A 好，毕竟队友全是工科的，解题有优势。&lt;/p&gt;&lt;p&gt;确定 A 题后，我们开始查资料，求解第一问。&lt;/p&gt;&lt;p&gt;本来以为学校提供的教室可以通宵肛的，没想到这才刚到十点，门口老大爷就开始赶人了……于是我们只好转移阵地，来到 GC 俱乐部。&lt;/p&gt;&lt;p&gt;直到凌晨三点，我们对于第一问，还没有一个有效的解决方案。唯一的发现就是，椭圆投影最大值在 141，长轴长 80；而小圆投影最大值在 14，直径为 8。由此可以假设厚度与投影值是正相关，然后通过数据拟合出一条直线。&lt;/p&gt;&lt;p&gt;无奈，太晚了，还是回宿舍吧。&lt;/p&gt;&lt;h2 id=&quot;day-1&quot;&gt;Day 1&lt;/h2&gt;&lt;p&gt;醒来的时候已经十点半了，吃完早午饭就去图书馆和队友讨论去了。&lt;/p&gt;&lt;p&gt;昨晚已经求出了厚度和投影的关系，然后小姐姐通过复杂的推导，得出 X 关照射方向的计算方法。但是，对于旋转中心的确定，仍然没有思路。&lt;/p&gt;&lt;p&gt;一直到晚上十二点，我们都一直在查各种资料，但是还是没有思路。&lt;/p&gt;&lt;p&gt;翻车了。&lt;/p&gt;&lt;h2 id=&quot;day-2&quot;&gt;Day 2&lt;/h2&gt;&lt;p&gt;昨天回宿舍后，越想越难受，于是想去网上看看有没有人分享思路。果然，看到有人用附近二的数据
作了一张热点图，一条清晰的正弦显示在图中！&lt;/p&gt;&lt;p&gt;有思路了。&lt;/p&gt;&lt;p&gt;所以今天我起了个大早，把那张图做了出来。把图发给小姐姐看，她一下就有了想法。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:735px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:174.00000000000003%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAjABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgAB/9oADAMBAAIQAxAAAAH2+eyywqIiGNgXTUsDF//EABwQAAMAAgMBAAAAAAAAAAAAAAABAhESEBMiMf/aAAgBAQABBQIuW6hYTrV9kitMejFMMUpHvPsXzHP/xAAcEQACAQUBAAAAAAAAAAAAAAAAASECAxARElH/2gAIAQMBAT8BVxUs6Tkjw0LH/8QAGhEAAgIDAAAAAAAAAAAAAAAAARAAEgIRIf/aAAgBAgEBPwE4WErrjK//xAAZEAACAwEAAAAAAAAAAAAAAAAQIQABIDH/2gAIAQEABj8CLsuciovH/8QAIRAAAwABAQkAAAAAAAAAAAAAAAERITEQQVFhcYGRobH/2gAIAQEAAT8hKhK9x02pnjT5HDqeBFh+izS2jQEEWBD3CwI3zBpdv//aAAwDAQACAAMAAAAQOPEMD+//xAAaEQEAAgMBAAAAAAAAAAAAAAABABEQITGh/9oACAEDAQE/EO6Li3bsRNviArRBj//EABoRAQADAAMAAAAAAAAAAAAAAAEAESEQMaH/2gAIAQIBAT8QeiCGIXWPsVvvl//EAB4QAQADAAICAwAAAAAAAAAAAAEAESExQVGBEJHB/9oACAEBAAE/EIurkPGKLazX7SnMHaXyV5f3xkpjTajFTA0ciaKTe4iAFtjs7GYRW4T0T3qWzTz5YYHx/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/14aec0e29079e99e7a2ec186c79b6e40/1e0be/photo_2017-09-21_19-47-08.webp 250w,/static/14aec0e29079e99e7a2ec186c79b6e40/b0a15/photo_2017-09-21_19-47-08.webp 500w,/static/14aec0e29079e99e7a2ec186c79b6e40/ed0c4/photo_2017-09-21_19-47-08.webp 735w&quot; sizes=&quot;(max-width: 735px) 100vw, 735px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/14aec0e29079e99e7a2ec186c79b6e40/0479a/photo_2017-09-21_19-47-08.jpg 250w,/static/14aec0e29079e99e7a2ec186c79b6e40/41099/photo_2017-09-21_19-47-08.jpg 500w,/static/14aec0e29079e99e7a2ec186c79b6e40/41d8b/photo_2017-09-21_19-47-08.jpg 735w&quot; sizes=&quot;(max-width: 735px) 100vw, 735px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/14aec0e29079e99e7a2ec186c79b6e40/41d8b/photo_2017-09-21_19-47-08.jpg&quot; alt=&quot;聊天截图.1&quot; title=&quot;聊天截图.1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:789px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:162.39999999999998%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAgABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAwACBAX/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQMC/9oADAMBAAIQAxAAAAH08pukRumWikJNYYP/xAAcEAACAgIDAAAAAAAAAAAAAAAAAQIRAxASE0H/2gAIAQEAAQUCljt9QsR7erkXIRRKTT5s/8QAGhEAAgIDAAAAAAAAAAAAAAAAAAECEhMhMf/aAAgBAwEBPwGkTHEeul0f/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAESIf/aAAgBAgEBPwGmWxaSz//EABoQAAIDAQEAAAAAAAAAAAAAAAAxARARMiH/2gAIAQEABj8CmdGMUipCPa504P/EAB4QAAIBBAMBAAAAAAAAAAAAAAABERAxQaEhUXGR/9oACAEBAAE/IW8Ykl1+EN9S0tonm+jkeNBJrBiREaXoJuR//9oADAMBAAIAAwAAABAkzY7/xAAZEQEBAQADAAAAAAAAAAAAAAABABFBsfD/2gAIAQMBAT8Q3VTuD4nnVHkb/8QAGREBAAMBAQAAAAAAAAAAAAAAAQARIRBB/9oACAECAQE/EKTGK+zSg4f/xAAhEAEAAgECBwEAAAAAAAAAAAABABEhQbEQMVFhcYGhwf/aAAgBAQABPxASEO6pxDSD2jFoVbhtQ9PhFgrvVrhTgUcOcwDT9jCjsRlS89WW3Ch5vwh17puT/9k=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/944ee11143f8cdfd44e5811a1cac9fc3/1e0be/photo_2017-09-21_19-47-12.webp 250w,/static/944ee11143f8cdfd44e5811a1cac9fc3/b0a15/photo_2017-09-21_19-47-12.webp 500w,/static/944ee11143f8cdfd44e5811a1cac9fc3/2009c/photo_2017-09-21_19-47-12.webp 789w&quot; sizes=&quot;(max-width: 789px) 100vw, 789px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/944ee11143f8cdfd44e5811a1cac9fc3/0479a/photo_2017-09-21_19-47-12.jpg 250w,/static/944ee11143f8cdfd44e5811a1cac9fc3/41099/photo_2017-09-21_19-47-12.jpg 500w,/static/944ee11143f8cdfd44e5811a1cac9fc3/0f840/photo_2017-09-21_19-47-12.jpg 789w&quot; sizes=&quot;(max-width: 789px) 100vw, 789px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/944ee11143f8cdfd44e5811a1cac9fc3/0f840/photo_2017-09-21_19-47-12.jpg&quot; alt=&quot;聊天截图.2&quot; title=&quot;聊天截图.2&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;以为第一题做出来了（图像重建的论文很多，大概知道这题可以用滤波反投影法计算），我就放松了警惕，那天下午打了会开箱 GO（逃&lt;/p&gt;&lt;p&gt;然而，到了晚上，真要写起代码时却发现，算法是知道了，但是各种论文写的都非常简单，根本不知道怎么操作。大概看了一个小时，边调试边写代码，才总算是把图像重建好了。然而，我只看懂了直接反投影法，不知道怎么加滤波函数，重建出来的图像十分模糊。研究了好久，无果。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:960px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:133.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAc1+VuhoFB2AqZDj/8QAHBAAAgIDAQEAAAAAAAAAAAAAAAIBFAQREgMg/9oACAEBAAEFAuUkp6KcCtoyIRsj147LTll/j//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EACMQAAEBBQkAAAAAAAAAAAAAAAEAAhARQpESICEiMTKBkuL/2gAIAQEABj8C3N0U1QvQczbMMqMMQ6U8LRjrc//EAB8QAQACAQMFAAAAAAAAAAAAAAEAEUEhUdEQYXHw8f/aAAgBAQABPyEpZNhzB8kHJft2lg8zSccpQTAzBIq6tG5Z8BHr/9oADAMBAAIAAwAAABDw4jD/xAAVEQEBAAAAAAAAAAAAAAAAAAARIP/aAAgBAwEBPxBj/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEREP/aAAgBAgEBPxBrKU//xAAdEAEBAQACAgMAAAAAAAAAAAABEQAhYTFRgaHB/9oACAEBAAE/EFoagAPPzhaIL6P66jlfZYkNIHz3oxrwb21fIh7YEsuPLAguH1lG4gD4003/2Q==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/29913ff6dc868283528dccd68fd5c447/1e0be/photo_2017-09-21_19-47-01.webp 250w,/static/29913ff6dc868283528dccd68fd5c447/b0a15/photo_2017-09-21_19-47-01.webp 500w,/static/29913ff6dc868283528dccd68fd5c447/e46b2/photo_2017-09-21_19-47-01.webp 960w&quot; sizes=&quot;(max-width: 960px) 100vw, 960px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/29913ff6dc868283528dccd68fd5c447/0479a/photo_2017-09-21_19-47-01.jpg 250w,/static/29913ff6dc868283528dccd68fd5c447/41099/photo_2017-09-21_19-47-01.jpg 500w,/static/29913ff6dc868283528dccd68fd5c447/6a068/photo_2017-09-21_19-47-01.jpg 960w&quot; sizes=&quot;(max-width: 960px) 100vw, 960px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/29913ff6dc868283528dccd68fd5c447/6a068/photo_2017-09-21_19-47-01.jpg&quot; alt=&quot;重建图像.1&quot; title=&quot;重建图像.1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;于是，我想去知乎找找思路，发现有人提到 MATLAB 里有一个函数 &lt;code&gt;iradon&lt;/code&gt; 直接可以重建还特别清晰，emmmm。我用的是 Python 啊！难道要手写 Radon 逆变换？不不不，搜索后找到 skimage 提供了变换函数，和 MATLAB 用法一样。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.400000000000006%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABQAC/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAARWRd07AR//EABkQAAIDAQAAAAAAAAAAAAAAAAACAQMREv/aAAgBAQABBQIs2SpsQ7Y6k//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EACAQAAEBCAMAAAAAAAAAAAAAAAABAgMQERIhMTJBgZH/2gAIAQEABj8CHGyM0Xkc9w2X0yp//8QAGhABAQEBAAMAAAAAAAAAAAAAAREAMSFBkf/aAAgBAQABPyESYgKCvLuz0qe8uFyLCeV79t//2gAMAwEAAgADAAAAEAPf/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8QR//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxCtf//EABwQAQADAQADAQAAAAAAAAAAAAEAESExQWGBof/aAAgBAQABPxAGhv8AJUzRduGZ5hBQgxKLKu95BADXyOABgC5HQh9uf//Z&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/a30c7fa63a4ec43a31412880feffc7db/1e0be/photo_2017-09-21_19-47-53.webp 250w,/static/a30c7fa63a4ec43a31412880feffc7db/b0a15/photo_2017-09-21_19-47-53.webp 500w,/static/a30c7fa63a4ec43a31412880feffc7db/a5d4d/photo_2017-09-21_19-47-53.webp 1000w,/static/a30c7fa63a4ec43a31412880feffc7db/af3f0/photo_2017-09-21_19-47-53.webp 1280w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/a30c7fa63a4ec43a31412880feffc7db/0479a/photo_2017-09-21_19-47-53.jpg 250w,/static/a30c7fa63a4ec43a31412880feffc7db/41099/photo_2017-09-21_19-47-53.jpg 500w,/static/a30c7fa63a4ec43a31412880feffc7db/a2510/photo_2017-09-21_19-47-53.jpg 1000w,/static/a30c7fa63a4ec43a31412880feffc7db/eea4a/photo_2017-09-21_19-47-53.jpg 1280w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/jpeg&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/a30c7fa63a4ec43a31412880feffc7db/a2510/photo_2017-09-21_19-47-53.jpg&quot; alt=&quot;重建图像.1&quot; title=&quot;重建图像.1&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;只剩下吸收率的问题了。&lt;/p&gt;&lt;h2 id=&quot;day-3&quot;&gt;Day 3&lt;/h2&gt;&lt;p&gt;今天主要问题就是求出吸收率，以及把论文写完。关于吸收率，有一个想法就是根据附件一的数据和附件二逆变换后形成的矩阵求出一个比值，再带到附件三。事实证明，这种做法是正确的。然而，逆变换生成的矩阵是 362 * 362 的，题目要求的是 256 * 256，方向也和题目给出的图像不同。&lt;/p&gt;&lt;p&gt;我尝试了一下午，都没能把附件二的重建图像变成原来的大小方向（我好菜啊）。到了晚上，也没啥心思研究了，图是歪的就歪吧。我把所有的代码和数据打包整理发给队友，然后就开始水 Telegram 了……&lt;/p&gt;&lt;p&gt;我们在十二点前就交了论文，然后就回宿舍了。三天四夜的脑力活动，非常累，明天还是周一，要早起，所有一回宿舍扭头就睡了。&lt;/p&gt;&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;&lt;p&gt;因为是第一次参加数学建模，经验不足，浪费了许多时间。比如，最后一天写论文的时候，我们三个是同时在自己的电脑上修改，然后再发送汇总，效率低下，如果使用云文档来实现团队协助会好很多；然后就是我自己的原因了，没有提前熟悉 Numpy 库，导致使用时还要查文档。&lt;/p&gt;&lt;p&gt;对于这次建模呢，其实最后的结果什么的已经不重要了。我觉得建模的过程很有趣啊，通过查找资料，把一个自己之前完全不知道的东西弄懂，并通过自己的思考，不断地尝试去优化模型。&lt;/p&gt;&lt;p&gt;这次建模，总算让我对自己的水平有了点 B 数，我好菜啊！！！&lt;/p&gt;</content:encoded></item><item><title><![CDATA[为 SSH 开启两步验证]]></title><description><![CDATA[下午爆出 Xshell 的多个版本存在后门，会上传用户名密码，一直在用的表示很受伤 QAQ（当初因为 PuTTY 有后门才转的 Xshell。。我第一时间更新了版本，并更换 SSH 密钥。不过看登录日志和后台程序，没有发现任何异常。但是为了保险起见，我给 SSH…]]></description><link>https://www.giuem.com/blog/setup-ssh-2fa-via-authy</link><guid isPermaLink="false">https://www.giuem.com/blog/setup-ssh-2fa-via-authy</guid><pubDate>Mon, 14 Aug 2017 16:18:25 GMT</pubDate><content:encoded>&lt;p&gt;下午爆出 Xshell 的多个版本存在后门，会上传用户名密码，一直在用的表示很受伤 QAQ（当初因为 PuTTY 有后门才转的 Xshell。。我第一时间更新了版本，并更换 SSH 密钥。不过看登录日志和后台程序，没有发现任何异常。但是为了保险起见，我给 SSH 加上了两步验证。&lt;/p&gt;&lt;p&gt;我之前一直使用的就是 Authy，这次也不例外，选择 Authy 作为两步验证器。（没用过 Google Authenticator，有没有用过的过来分享一下）&lt;/p&gt;&lt;p&gt;按照&lt;em&gt;&lt;a href=&quot;https://www.authy.com/integrations/ssh/&quot;&gt;官网的说明&lt;/a&gt;&lt;/em&gt;很轻松的就配置好了。这里有点坑的是居然还要去 Twilio 再注册一个帐号获取 API key。&lt;/p&gt;&lt;p&gt;效果&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:547px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.400000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvElEQVQI113OvW7DIBRA4QjzD/dyMRgsOwZapRmSSB2ydOjU93+oKlvVs3/SOW371npvrS+lHO3ovfUx6lqFFBhQaeXBAwIGFJKf/mWVBQeEUUttlXXGGWWddkYZ8mSENtIQRAJSk5zYpLTSWjPGXvh8P+eey2Wt72V5W5aW88jxiFD8/tjb44AV99tWLmU8Byac51RrkVK8cPgM81dK38lfPd4Rb0hPClfCD9I/SnjBgYsoeOCySibZ3+1f7TUOgxx209IAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/ee72fc215a886018ba0d44ccc07722f7/1e0be/snipaste_20170814_170248.webp 250w,/static/ee72fc215a886018ba0d44ccc07722f7/b0a15/snipaste_20170814_170248.webp 500w,/static/ee72fc215a886018ba0d44ccc07722f7/61e23/snipaste_20170814_170248.webp 547w&quot; sizes=&quot;(max-width: 547px) 100vw, 547px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/ee72fc215a886018ba0d44ccc07722f7/63868/snipaste_20170814_170248.png 250w,/static/ee72fc215a886018ba0d44ccc07722f7/0b533/snipaste_20170814_170248.png 500w,/static/ee72fc215a886018ba0d44ccc07722f7/977f7/snipaste_20170814_170248.png 547w&quot; sizes=&quot;(max-width: 547px) 100vw, 547px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/ee72fc215a886018ba0d44ccc07722f7/977f7/snipaste_20170814_170248.png&quot; alt=&quot;example&quot; title=&quot;example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;三次失败后断开连接&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:622px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:36.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVQY033Py26DMBCF4YjUMeO54zEpGFSR5v2fsWq6YFPl7D/9Opdobd+2rW9RY9/33vu69pyzqtxuNyIyU4Dx8u9KQSyoKuMIiAQApRQAMFVmRkRVZREASCkR8zAMJz5a21WPFl9qn+6LyqHGAGoeEcTc2lxrdXci6n1LKZ14Fm2Id9VAnJgnxDsS5MwspgYALCwiRDTmcXK/Xq8nfkQcqs+Ib9XVfRN5vsru01+5RkT8lhFxWdaUPk5ckWaRSuQAk6jkPCOa8AiFCC/vZ69v5k4s0Zq5iWlEuJm7v8c/2cwSWVt0HscAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/bea2906c191d21dd42bec1f830c61319/1e0be/snipaste_20170814_170644.webp 250w,/static/bea2906c191d21dd42bec1f830c61319/b0a15/snipaste_20170814_170644.webp 500w,/static/bea2906c191d21dd42bec1f830c61319/5bf66/snipaste_20170814_170644.webp 622w&quot; sizes=&quot;(max-width: 622px) 100vw, 622px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/bea2906c191d21dd42bec1f830c61319/63868/snipaste_20170814_170644.png 250w,/static/bea2906c191d21dd42bec1f830c61319/0b533/snipaste_20170814_170644.png 500w,/static/bea2906c191d21dd42bec1f830c61319/604ec/snipaste_20170814_170644.png 622w&quot; sizes=&quot;(max-width: 622px) 100vw, 622px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/bea2906c191d21dd42bec1f830c61319/604ec/snipaste_20170814_170644.png&quot; alt=&quot;fail&quot; title=&quot;fail&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[开始使用 Caddy]]></title><description><![CDATA[一直以来，我都是使用 Nginx 作为 Web 服务器，但是配置可以说是非常麻烦了。每次我要新开一个域名，都要先使用  acme.sh  签发 SSL 证书，然后再写配置，大概要花上 5 分钟的时间。曾经想过写个脚本自动完成这些工作，但是苦于对 Linux…]]></description><link>https://www.giuem.com/blog/caddy-tutorial-for-debian</link><guid isPermaLink="false">https://www.giuem.com/blog/caddy-tutorial-for-debian</guid><pubDate>Fri, 04 Aug 2017 16:14:16 GMT</pubDate><content:encoded>&lt;p&gt;一直以来，我都是使用 Nginx 作为 Web 服务器，但是配置可以说是非常麻烦了。每次我要新开一个域名，都要先使用 &lt;a href=&quot;https://github.com/Neilpang/acme.sh&quot;&gt;acme.sh&lt;/a&gt; 签发 SSL 证书，然后再写配置，大概要花上 5 分钟的时间。曾经想过写个脚本自动完成这些工作，但是苦于对 Linux 的了解不多，也就作罢了。&lt;/p&gt;&lt;p&gt;最近看到了 Caddy，一个用 Go 写的 Web 服务器，它的配置简洁，同时能自动开启 HTTPS、支持 HTTP/2 &amp;amp;&amp;amp; &lt;strong&gt;QUIC&lt;/strong&gt;，完全符合我的需求啊，研究一番，就在我的服务器部署了，本文作一个简单记录。&lt;/p&gt;&lt;p&gt;我的操作系统是 &lt;code&gt;Debian Jessie&lt;/code&gt; ，理论上只要是带有 &lt;code&gt;Systemd&lt;/code&gt; 的系统都适用本文。&lt;/p&gt;&lt;h2 id=&quot;下载安装&quot;&gt;下载安装&lt;/h2&gt;&lt;p&gt;首先去 &lt;a href=&quot;https://caddyserver.com/download&quot;&gt;Download Caddy&lt;/a&gt;，选择你系统平台、插件、是否开启监控（TELEMETRY）、许可证；例如我选的是&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Platform: Linux 64&lt;/li&gt;&lt;li&gt;Plugins: http.cache, http.cors, http.expires, http.filter, http.git, tls.dns.cloudflare&lt;/li&gt;&lt;li&gt;TELEMETRY: ON&lt;/li&gt;&lt;li&gt;License: Personal&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;然后复制下方的 &lt;code&gt;One-step installer script (bash)&lt;/code&gt;，在命令行运行就可以了。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;CADDY_TELEMETRY=on curl https://getcaddy.com | bash -s personal http.cache,http.cors,http.expires,http.filter,http.git,tls.dns.cloudflare
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装完后输入 &lt;code&gt;which caddy&lt;/code&gt;，不出意外的话会输出 &lt;code&gt;/usr/local/bin/caddy&lt;/code&gt;&lt;/p&gt;&lt;p&gt;至此，安装完毕，但是目前它不会开机自启，只是简单地把二进制文件下载下来，所以下一步要注册服务。&lt;/p&gt;&lt;h2 id=&quot;注册服务&quot;&gt;注册服务&lt;/h2&gt;&lt;p&gt;这里我使用的是官方提供的脚本 &lt;a href=&quot;https://github.com/mholt/caddy/blob/master/dist/init/linux-systemd/caddy.service&quot;&gt;caddy.service&lt;/a&gt;，其他系统也可以在&lt;a href=&quot;https://github.com/mholt/caddy/tree/master/dist/init&quot;&gt;这里&lt;/a&gt;找到相应的脚本。&lt;/p&gt;&lt;p&gt;把这个文件下载到 &lt;code&gt;/etc/systemd/system/&lt;/code&gt; 。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;创建所需目录，我图方便没有修改脚本直接使用默认值了，如果有特殊需求，可以自己更改目录。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo touch /etc/caddy/Caddyfile

sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

sudo mkdir /var/www
sudo chown www-data:www-data /var/www
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上面创建了三个目录，&lt;code&gt;/etc/caddy&lt;/code&gt; 用了存放 Caddy 的配置文件，&lt;code&gt;/etc/ssl/caddy&lt;/code&gt; 存放证书，&lt;code&gt;/var/www&lt;/code&gt; 是默认的网站目录。&lt;/p&gt;&lt;p&gt;接着，重新加载 &lt;code&gt;systemd daemon&lt;/code&gt;，让配置生效。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;让 Caddy 开机自启。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl enable caddy.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;至此，Caddy 已经成功注册服务，并能够开机自启了。&lt;/p&gt;&lt;h2 id=&quot;配置&quot;&gt;配置&lt;/h2&gt;&lt;p&gt;这部分的内容我不打算详细记录，主要是&lt;a href=&quot;https://caddyserver.com/docs&quot;&gt;官方文档&lt;/a&gt;已经写的很详细了。&lt;/p&gt;&lt;p&gt;下面是我的配置，&lt;/p&gt;&lt;pre&gt;&lt;code&gt;example.com {
  proxy / 127.0.0.1:9001 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Proto {scheme}
  }
  gzip
  header / -Server
  header / Strict-Transport-Security &amp;quot;max-age=31536000;&amp;quot;
  tls user@example.com {
    protocols tls1.0 tls1.2
    dns cloudflare
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果要使用 DNS 的方式认证域名的话，需要设置环境变量，修改 &lt;code&gt;/etc/systemd/system/caddy.service&lt;/code&gt; ，加入环境变量，我使用的是 CloudFlare 的 DNS，所以我需要添加 &lt;code&gt;CLOUDFLARE_EMAIL&lt;/code&gt; 和 &lt;code&gt;CLOUDFLARE_API_KEY&lt;/code&gt; ，其他 DNS 看&lt;a href=&quot;https://caddyserver.com/docs/automatic-https#enabling-the-dns-challenge&quot;&gt;这里&lt;/a&gt; 。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;[Service]
...
...

Environment=CADDYPATH=/etc/ssl/caddy
+ Environment=CLOUDFLARE_EMAIL=xxx
+ Environment=CLOUDFLARE_API_KEY=xxx

...
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;写完配置后输入 &lt;code&gt;sudo systemctl start caddy.service&lt;/code&gt; 启动 Caddy。&lt;/p&gt;&lt;p&gt;输入 &lt;code&gt;journalctl --boot -u caddy.service&lt;/code&gt; 可以查看日志。&lt;/p&gt;&lt;h2 id=&quot;启用-quic&quot;&gt;启用 QUIC&lt;/h2&gt;&lt;p&gt;关于 QUIC 的介绍，可以看一下&lt;a href=&quot;https://ma.ttias.be/googles-quic-protocol-moving-web-tcp-udp/&quot;&gt;这篇文章&lt;/a&gt;，一句话概况呢就是减少 TLS 握手次数，加快网站速度。&lt;/p&gt;&lt;p&gt;修改 &lt;code&gt;/etc/systemd/system/caddy.service&lt;/code&gt; ，在 &lt;code&gt;ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp&lt;/code&gt; 后面加上 &lt;code&gt;-quic&lt;/code&gt; ，即&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp -quic
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后重新加载 Systemd，并重启 Caddy&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl daemon-reload
sudo systemctl restart caddy.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;同时，别忘了给主机开放 443 (UDP) 端口。&lt;/p&gt;&lt;p&gt;&lt;del&gt;目前 QUIC 只有 Chrome 支持，并且需要手动开启（默认只有白名单域名启用）。访问 &lt;code&gt;chrome://flags/#enable-quic&lt;/code&gt;，切换为 Enabled 即可。&lt;/del&gt;&lt;/p&gt;&lt;p&gt;目前 Chrome 已对所有域名开放 QUIC，同时 &lt;a href=&quot;https://tools.ietf.org/html/draft-ietf-quic-http-17&quot;&gt;HTTP/3 将使用 QUIC&lt;/a&gt;。开启后，重启 Chrome，访问网站，通过 Chrome DevTools - Security 可以看到协议已经是 QUIC 了。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:745px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:66.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABFklEQVQoz5WRi27CMAxF+/+fiEBRRxtAKit52M7DdtFaQBtU2zi6iq6sWL5xGofh4h0CxgjCMr1DM2YfGFAIhUgIGVEoSfqPGs9+n/o2dX0+fFBnsO3IXqp7lav+SY1LETIlIgAotTwi6aTfE+qkovKkpginnJxz4ziGEGKMYeZm/Jfx3iPiypunaSIiY8x2uzXGEBEzl1LqzGJKKcy80lyFWbjkG+9tO2aERIgYACLAMqT+5FFZiQ0hdLtdu9nYtj2dTsfj0VrbzxzuWGsBYKW5IIa+d/s9DoOqMrOI8IyIPCorsbGkzJVVqyqrvt7Qe1FfaKjmiPB5Pp+HwTkHM4gIAET0x8JKzkS0/C0AuBnv/XKmX7kCe6r1sfettGEAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/d0ca862dbf8c814346abc767a6b21aba/1e0be/snipaste_20170805_214617.webp 250w,/static/d0ca862dbf8c814346abc767a6b21aba/b0a15/snipaste_20170805_214617.webp 500w,/static/d0ca862dbf8c814346abc767a6b21aba/06157/snipaste_20170805_214617.webp 745w&quot; sizes=&quot;(max-width: 745px) 100vw, 745px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/d0ca862dbf8c814346abc767a6b21aba/63868/snipaste_20170805_214617.png 250w,/static/d0ca862dbf8c814346abc767a6b21aba/0b533/snipaste_20170805_214617.png 500w,/static/d0ca862dbf8c814346abc767a6b21aba/7e509/snipaste_20170805_214617.png 745w&quot; sizes=&quot;(max-width: 745px) 100vw, 745px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/d0ca862dbf8c814346abc767a6b21aba/7e509/snipaste_20170805_214617.png&quot; alt=&quot;quic-view&quot; title=&quot;quic-view&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;关于性能&quot;&gt;关于性能&lt;/h2&gt;&lt;p&gt;Caddy 是 Go 写的，性能方面是稍落后于 Nginx 的，但其实对于小站来说，这一点性能差距是可以忽略的，毕竟 &lt;a href=&quot;https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb&quot;&gt;You Are Not Google&lt;/a&gt; 。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Google Analytics 加载优化]]></title><description><![CDATA[最近给网站加上了 Google Analytics（大概两年前，我刚换到 Hexo 的时候，我就把统计撤了，看到 LWL 的群里在晒统计结果，心里痒痒又加上了）。但是直接使用 Google Analytics…]]></description><link>https://www.giuem.com/blog/google-analytics-loading-optimize</link><guid isPermaLink="false">https://www.giuem.com/blog/google-analytics-loading-optimize</guid><pubDate>Mon, 17 Jul 2017 18:54:48 GMT</pubDate><content:encoded>&lt;p&gt;最近给网站加上了 Google Analytics（大概两年前，我刚换到 Hexo 的时候，我就把统计撤了，看到 LWL 的群里在晒统计结果，心里痒痒又加上了）。但是直接使用 Google Analytics 有一点弊端：一是会被各种广告屏蔽软件屏蔽，导致统计结果不准确；二是在国内加载不稳定。&lt;/p&gt;&lt;p&gt;因此，我给 Google Analytics 加了一层代理，优化加载速度同时防止被屏蔽。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/giuem/ga-proxy&quot;&gt;GitHub Repo&lt;/a&gt;&lt;undefined&gt; （求 Star&lt;span role=&quot;img&quot; aria-label=&quot;new moon face&quot;&gt;🌚&lt;/span&gt;&lt;/undefined&gt;&lt;/p&gt;&lt;h2 id=&quot;序&quot;&gt;序&lt;/h2&gt;&lt;p&gt;目前关于 Google Analytics 大致有两种方案，一种是本文使用介绍的，另一种是利用 Nginx 的 post_action。&lt;/p&gt;&lt;p&gt;前者需要多一次 HTTP 请求，后者有点麻烦，还要过滤搜索引擎 UA，不适用于使用 CDN 的网站。&lt;/p&gt;&lt;p&gt;本文所采用的方案是基于 &lt;a href=&quot;https://stneng.com/google-analytics-%E5%BC%82%E6%AD%A5%E8%AF%B7%E6%B1%82%EF%BC%88%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%AF%B7%E6%B1%82%EF%BC%89/&quot;&gt;Google Analytics 异步请求（服务端请求）&lt;/a&gt; 提供的代码修改的 Go 版本。&lt;/p&gt;&lt;h2 id=&quot;使用方法&quot;&gt;使用方法&lt;/h2&gt;&lt;h3 id=&quot;1-使用我提供的服务&quot;&gt;1. 使用我提供的服务&lt;/h3&gt;&lt;p&gt;将下面的代码加到你的网站的任意位置，同时修改 &lt;code&gt;&amp;quot;UA-xxxx-x&amp;quot;&lt;/code&gt; 为你自己的跟踪代码。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;!(function (a, b, c, d, e) {
  var f = c.screen,
    g = encodeURIComponent,
    h = [
      &amp;#x27;ga=&amp;#x27; + a,
      &amp;#x27;dt=&amp;#x27; + g(d.title),
      &amp;#x27;dr=&amp;#x27; + g(d.referrer),
      &amp;#x27;ul=&amp;#x27; + (e.language || e.browserLanguage || e.userLanguage),
      &amp;#x27;sd=&amp;#x27; + f.colorDepth + &amp;#x27;-bit&amp;#x27;,
      &amp;#x27;sr=&amp;#x27; + f.width + &amp;#x27;x&amp;#x27; + f.height,
      &amp;#x27;vp=&amp;#x27; +
        Math.max(d.documentElement.clientWidth, c.innerWidth || 0) +
        &amp;#x27;x&amp;#x27; +
        Math.max(d.documentElement.clientHeight, c.innerHeight || 0),
      &amp;#x27;z=&amp;#x27; + +new Date(),
    ];
  (c.__ga_img = new Image()), (c.__ga_img.src = b + &amp;#x27;?&amp;#x27; + h.join(&amp;#x27;&amp;amp;&amp;#x27;));
})(&amp;#x27;UA-xxxx-x&amp;#x27;, &amp;#x27;https://ga.giuem.com&amp;#x27;, window, document, navigator, location);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;目前已经部署海外线路（由 CloudFlare 提供），国内为腾讯云上海机房&lt;/strong&gt;&lt;/p&gt;&lt;h3 id=&quot;2-自己部署服务&quot;&gt;2. 自己部署服务&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;安装&lt;/p&gt;&lt;p&gt;你可以选择自己 &lt;a href=&quot;https://github.com/giuem/ga-proxy#build&quot;&gt;编译&lt;/a&gt; 或者从 &lt;a href=&quot;https://github.com/giuem/ga-proxy/releases/latest&quot;&gt;release&lt;/a&gt; 下载我编译好的二进制文件。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;运行&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./ga_proxy [arguments]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;参数：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;-d, -debug 输出调试信息
-s, -skip_ssl 跳过 SSL 验证
-l, -listen 监听地址
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要使用后台运行，你可以借助 &lt;code&gt;nohup&lt;/code&gt; 或 &lt;code&gt;screen&lt;/code&gt; 或 &lt;code&gt;Docker&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;添加 JavaScript 代码&lt;/p&gt;&lt;p&gt;把上面的那段代码里的 &lt;code&gt;&amp;quot;https://ga.giuem.com&amp;quot;&lt;/code&gt; 改成你自己的地址就行了。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;使用效果&quot;&gt;使用效果&lt;/h2&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAN0lEQVQI1zWLCwoAUQgC9/7XLYq+LgZPkIERP1WFiIB0d8wMIuJYVdjd82aGzER3n2O5P88/8wNedE5ezKaFgAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/b9f432781592af2d657e3578375b57fb/1e0be/20170721141531.webp 250w,/static/b9f432781592af2d657e3578375b57fb/b0a15/20170721141531.webp 500w,/static/b9f432781592af2d657e3578375b57fb/a5d4d/20170721141531.webp 1000w,/static/b9f432781592af2d657e3578375b57fb/e5c51/20170721141531.webp 1350w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/b9f432781592af2d657e3578375b57fb/63868/20170721141531.png 250w,/static/b9f432781592af2d657e3578375b57fb/0b533/20170721141531.png 500w,/static/b9f432781592af2d657e3578375b57fb/00d43/20170721141531.png 1000w,/static/b9f432781592af2d657e3578375b57fb/21482/20170721141531.png 1350w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/b9f432781592af2d657e3578375b57fb/00d43/20170721141531.png&quot; alt=&quot;ga-proxy&quot; title=&quot;ga-proxy&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:8.399999999999999%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVQI1zWMSwrAMAhEe//T9QJdZ2HIP6SYzxQHKojOPMcrhICUElprKKWg1sppOucM7z1ijPSdc2RjDGoRYVa8YL6KOzy47KEFeu88XGthzom9N1SVnrXtxqzOOeS/b9lDAHyB4Jp6ehWLPwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/7b2bbe5781fea87aece878eacefad397/1e0be/20170721142234.webp 250w,/static/7b2bbe5781fea87aece878eacefad397/b0a15/20170721142234.webp 500w,/static/7b2bbe5781fea87aece878eacefad397/a5d4d/20170721142234.webp 1000w,/static/7b2bbe5781fea87aece878eacefad397/9d46a/20170721142234.webp 1401w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/7b2bbe5781fea87aece878eacefad397/63868/20170721142234.png 250w,/static/7b2bbe5781fea87aece878eacefad397/0b533/20170721142234.png 500w,/static/7b2bbe5781fea87aece878eacefad397/00d43/20170721142234.png 1000w,/static/7b2bbe5781fea87aece878eacefad397/fe238/20170721142234.png 1401w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/7b2bbe5781fea87aece878eacefad397/00d43/20170721142234.png&quot; alt=&quot;raw ga&quot; title=&quot;raw ga&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;整个请求花费 33 ms, 156 B 流量可以说是非常快了。服务器的 Ping 值在 29 ms 左右，中间 4 ms 的损失主要花在 SSL 上了，速度还是挺不错的。&lt;/p&gt;&lt;p&gt;相比之下，原生的请求先加载了一个 12.3 KB 大小的 JS 文件，然后才发送统计，总耗时 300 ms，emmmmm 我就不作过多评价了。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[使用 Travis CI 自动部署 HEXO 博客]]></title><description><![CDATA[If you see this post, then it works! 用得好好，就不要瞎折腾 缘起 最近因为 Coding Pages 的 自定义域名收费 了，一时也找不到比较好的支持 SSL 的 Pages 服务（GitLab Pages 虽然支持 SSL…]]></description><link>https://www.giuem.com/blog/deploy-via-travis-ci</link><guid isPermaLink="false">https://www.giuem.com/blog/deploy-via-travis-ci</guid><pubDate>Sat, 13 May 2017 15:02:47 GMT</pubDate><content:encoded>&lt;p&gt;If you see this post, then it works!&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;用得好好，就不要瞎折腾&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;缘起&quot;&gt;缘起&lt;/h2&gt;&lt;p&gt;最近因为 Coding Pages 的&lt;a href=&quot;https://www.v2ex.com/t/353768&quot;&gt;自定义域名收费&lt;/a&gt;了，一时也找不到比较好的支持 SSL 的 Pages 服务（GitLab Pages 虽然支持 SSL，但是要自己提供证书，感觉还不是很方便）。看了&lt;a href=&quot;https://www.v2ex.com/t/360701&quot;&gt;这个帖子&lt;/a&gt;后，还是决定将博客放到自己的 VPS 上。&lt;/p&gt;&lt;h2 id=&quot;流程&quot;&gt;流程&lt;/h2&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:321px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:69.19999999999999%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACBElEQVQ4y21T7Y6iQBDk/Z9qE09/6F5U9BBQcV1AmBlABBTFj7p0s3Co1wmB6amumeouNKUUsiyD53lYr9fwfB9pekCaptjv96B4PB78UCRJwntU4/seVssl44o8x263g3Y8HhloWTZ6Hx/QZ3/QBBXf7/d2Td/NIRSB72E4HLVrKSW00+mESEkEQYhIKQgRQkjFACp+JaRDKAi7CwKIMITres+EUoRYmCY2mw0Mw8B2+80S4zhupTbSoyjibyUlHMfBcmljPJ7UOaWg0S2yPAcRU6IoCu4PkZ3P57celmXJe3lRsALLtlGWJ87RWiPQ7XbjAiJ8jdcbdg+gA8MwfMJr3YLD4cCTmo7HcDbbp+IuWfftuS5m+hRzY4GV49Q3bILkKiWxXq0ghHwj7BLXe+ChkH2+XQ9BGNY3bCZJTSb5/5PdJSI8rauqQhTHz5KpmWQF8qPruiybmkt59ujjmTjPc8YThvbJ5HleD5EcoBU/xp5OxhiOPqFPJzhkxY+xycQPzGdzWPay9SZFdbmg3+vhV38Ax/ninBACGvWtBibcA/JXWdZ2oQElSYyADCwEKzBNsyasKs7RL5tl+T9CGv32a4PR52/oug7btqHrs/bXu16vreTL5dJai7CmZWFhGOgPBjxQwmuNIaVUkFKg6SkbPsveBkQ9pr5Rv5rH933O06/3F6YhLmQFf149AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/b353dd86d5738e765aedbb08c40dc42f/1e0be/blog-deploy-process.webp 250w,/static/b353dd86d5738e765aedbb08c40dc42f/2525c/blog-deploy-process.webp 321w&quot; sizes=&quot;(max-width: 321px) 100vw, 321px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/b353dd86d5738e765aedbb08c40dc42f/63868/blog-deploy-process.png 250w,/static/b353dd86d5738e765aedbb08c40dc42f/30592/blog-deploy-process.png 321w&quot; sizes=&quot;(max-width: 321px) 100vw, 321px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/b353dd86d5738e765aedbb08c40dc42f/30592/blog-deploy-process.png&quot; alt=&quot;process&quot; title=&quot;process&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;博客的源代码放在 GitHub 上，一更新就通过 Travis CI 自动 generate 并 push 到另外一个 repo，这个 repo 通过 webhook 的方式通知 vps，vps 更新文件。&lt;/p&gt;&lt;p&gt;整个流程可以说是非常非常麻烦，我弄好后突然发现可以通过 Dropbox 进行本地与 vps 的同步。。。&lt;/p&gt;&lt;h2 id=&quot;一些参考&quot;&gt;一些参考&lt;/h2&gt;&lt;h3 id=&quot;travisyml&quot;&gt;.travis.yml&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;language: node_js
node_js:
  - &amp;#x27;6&amp;#x27;

cache:
  directories:
    - node_modules

branches:
  only:
    - master

install:
  - npm install

script:
  - hexo cl
  - hexo g

after_script:
  - cd ./public
  - git init
  - git config user.name &amp;quot;giuem&amp;quot;
  - git config user.email &amp;quot;email_adress&amp;quot;
  - git add .
  - git commit -m &amp;quot;auto deploy via Travis CI.&amp;quot;
  - git push --force --quiet &amp;quot;path-to-your-repo&amp;quot; master:pages
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;为了方便，我直接把存放源文件和静态页面放在同一个 repo 的不同分支下，这样就不用在添加 ssh 密钥了。&lt;/p&gt;&lt;h3 id=&quot;deploy&quot;&gt;deploy&lt;/h3&gt;&lt;p&gt;&lt;del&gt;这个我直接做成 &lt;a href=&quot;https://hub.docker.com/r/giuem/blog-deploy/&quot;&gt;Docker 镜像&lt;/a&gt;了&lt;/del&gt;&lt;/p&gt;&lt;p&gt;发现有几个配置写死了，直接给代码好了&lt;/p&gt;&lt;h4 id=&quot;deploysh&quot;&gt;deploy.sh&lt;/h4&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/sh

rm pages -rf
git clone -b pages https://$GITHUB_TOKEN@github.com/giuem/blog.git pages
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&quot;webhookjs&quot;&gt;webhook.js&lt;/h4&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;const http = require(&amp;#x27;http&amp;#x27;);
const crypto = require(&amp;#x27;crypto&amp;#x27;);
const exec = require(&amp;#x27;child_process&amp;#x27;).exec;

const secret = process.env.SECRET || false;
const port = process.env.PORT || 8089;

function verify_signature(sign, body) {
  if (!secret) return true;
  return (
    sign ===
    &amp;#x27;sha1=&amp;#x27; + crypto.createHmac(&amp;#x27;sha1&amp;#x27;, secret).update(body).digest(&amp;#x27;hex&amp;#x27;)
  );
}

http
  .createServer((req, res) =&amp;gt; {
    if (
      req.method === &amp;#x27;POST&amp;#x27; &amp;amp;&amp;amp;
      req.url === &amp;#x27;/auto-deploy&amp;#x27; &amp;amp;&amp;amp;
      req.headers[&amp;#x27;x-github-event&amp;#x27;] === &amp;#x27;push&amp;#x27;
    ) {
      let body = &amp;#x27;&amp;#x27;;
      let sign = req.headers[&amp;#x27;x-hub-signature&amp;#x27;];

      req.on(&amp;#x27;data&amp;#x27;, (buffer) =&amp;gt; {
        body += buffer;
        if (body.length &amp;gt; 1e6) {
          req.connection.destroy();
        }
      });

      req.on(&amp;#x27;end&amp;#x27;, () =&amp;gt; {
        if (verify_signature(sign, body)) {
          let json = JSON.parse(body);
          if (json[&amp;#x27;ref&amp;#x27;].indexOf(&amp;#x27;pages&amp;#x27;) !== -1) {
            console.log(&amp;#x27;Verify successfully, now start deploying...&amp;#x27;);
            exec(&amp;#x27;sh ./deploy.sh&amp;#x27;);
          }
        }
        res.end();
      });
    } else {
      res.end();
    }
  })
  .listen(port, () =&amp;gt; {
    console.log(&amp;#x27;service start at&amp;#x27;, port);
  });
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;&lt;p&gt;折腾了一圈突然发现还是动态博客好，重新体验了下。发现 WordPress 还是不支持 Markdown，Ghost 新版用了 mobiledoc 听都没听过，最后又滚回 HEXO 了。。。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;没事真的别折腾，不如多写几道高数题！&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Gogs + Docker 建立自己的 Git 服务器]]></title><description><![CDATA[Github 的私有仓库是收费的，学生包申请很麻烦，就一直没去弄，至于国内的一些 Git 托管……请给云计算一点宽容。所以就利用 Gogs 搭建自己的 Git 服务器来托管一些个人项目。 演示地址 （关闭注册，强制登录浏览，所以只有登陆页面） 已经改为使用 GitHub…]]></description><link>https://www.giuem.com/blog/set-up-my-own-git-server-with-gogs-and-docker</link><guid isPermaLink="false">https://www.giuem.com/blog/set-up-my-own-git-server-with-gogs-and-docker</guid><pubDate>Sun, 02 Apr 2017 23:20:35 GMT</pubDate><content:encoded>&lt;p&gt;Github 的私有仓库是收费的，学生包申请很麻烦，就一直没去弄，至于国内的一些 Git 托管……请给云计算一点宽容。所以就利用 Gogs 搭建自己的 Git 服务器来托管一些个人项目。&lt;/p&gt;&lt;p&gt;&lt;del&gt;&lt;a href=&quot;https://git.giuem.com&quot;&gt;演示地址&lt;/a&gt;（关闭注册，强制登录浏览，所以只有登陆页面）&lt;/del&gt;&lt;/p&gt;&lt;p&gt;已经改为使用 GitHub 私有仓库了，学校的邮箱申请秒过，自己维护感觉还是太麻烦了（囧&lt;/p&gt;&lt;h2 id=&quot;gitlab-or-gogs&quot;&gt;Gitlab or Gogs&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://gitlab.com/&quot;&gt;Gitlab&lt;/a&gt; 对服务器的配置要求太高，手上的服务器全都是捡垃圾来的小鸡，所以就没有考虑。&lt;/p&gt;&lt;p&gt;而 &lt;a href=&quot;https://gogs.io/&quot;&gt;Gogs&lt;/a&gt; 对配置基本没有要求，甚至只要一块树莓派就能运行，虽然说现在还有许多 bug ，Github 上那么多的 issue 和 pr 没解决。（不过反正是自己用，有什么问题忍忍就过去了&lt;/p&gt;&lt;h2 id=&quot;安装&quot;&gt;安装&lt;/h2&gt;&lt;p&gt;我是利用 Docker 进行部署的，关于 Docker 有时间可能会写一篇文章安利下。总之，Docker 部署各种应用真是不要太简单，几行命令敲一敲就行了，不用关心宿主机的环境依赖。&lt;/p&gt;&lt;p&gt;如果还没主机上没有安装 Docker，可以看下 &lt;a href=&quot;https://docs.docker.com/engine/installation/&quot;&gt;安装方法&lt;/a&gt;&lt;/p&gt;&lt;h3 id=&quot;拉取镜像&quot;&gt;拉取镜像&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ docker pull gogs/gogs
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;建立目录&quot;&gt;建立目录&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ mkdir -p /var/gogs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;目录不一定是 &lt;code&gt;/var/gogs&lt;/code&gt;，你也可以放在 &lt;code&gt;/home&lt;/code&gt; 下&lt;/p&gt;&lt;h3 id=&quot;初始化&quot;&gt;初始化&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里的 &lt;code&gt;/var/gogs&lt;/code&gt; 需要改成上一步创建的目录，端口号 &lt;code&gt;10022&lt;/code&gt;、&lt;code&gt;10080&lt;/code&gt; 可以换成其它的。&lt;/p&gt;&lt;p&gt;之后如果要管理 Gogs 就可以直接输&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ docker [start|stop|restart] gogs
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;配置&quot;&gt;配置&lt;/h3&gt;&lt;p&gt;访问 &lt;code&gt;http://&amp;lt;ip&amp;gt;:&amp;lt;port&amp;gt;&lt;/code&gt; 进行配置&lt;/p&gt;&lt;p&gt;配置中有几个参数是比较重要的：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Repository Root Path&lt;/strong&gt; 和 &lt;strong&gt;Run User&lt;/strong&gt; ：保持默认&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Domain&lt;/strong&gt;：改成你要设置的域名或 ip 地址，如 &lt;code&gt;git.giuem.com&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SSH Port&lt;/strong&gt; 和 &lt;strong&gt;HTTP Port&lt;/strong&gt; ：改为启动时暴露的端口，如 &lt;code&gt;10022&lt;/code&gt; 和 &lt;code&gt;10080&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Application URL&lt;/strong&gt;：完整的访问地址，如 &lt;code&gt;https://git.giuem.com&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;数据库我选择的是 SQLite3，考虑到内存占用，没有选择 MySQL，而且个人使用 SQLite3 足够了。&lt;/p&gt;&lt;p&gt;其他的配置可以 &lt;strong&gt;&lt;a href=&quot;https://gogs.io/docs/advanced/configuration_cheat_sheet.html&quot;&gt;看这里&lt;/a&gt;&lt;/strong&gt;，配置文件在 &lt;code&gt;/var/gogs/gogs/conf/app.ini&lt;/code&gt;，改完配置重启 Docker 容器就行。&lt;/p&gt;&lt;h2 id=&quot;备份数据&quot;&gt;备份数据&lt;/h2&gt;&lt;p&gt;Gitlab 误删数据库，所有的备份方法都失效的事件才发生不久。我也是吸取了教训，搭完 Gogs 立马写了个脚本定时备份。&lt;/p&gt;&lt;p&gt;目前采用的方案是每天凌晨自动打包 &lt;code&gt;/var/gogs&lt;/code&gt; 目录下所有文件上传到 Dropbox，用的是 &lt;a href=&quot;https://github.com/andreafabrizi/Dropbox-Uploader&quot;&gt;Dropbox Uploader&lt;/a&gt;&lt;/p&gt;&lt;p&gt;等过段时间再折腾下 rsync 就稳了。。&lt;/p&gt;&lt;h2 id=&quot;附&quot;&gt;附&lt;/h2&gt;&lt;h3 id=&quot;运行时资源占用图&quot;&gt;运行时资源占用图&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:46.800000000000004%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+klEQVQoz41SSW7DMBDz/3+aa7zNzmAoOVCLHmqAoGaj6bG21+uFfd9xXRdUFSLyhS7n/2JzdwCFfrIKVcW4OXLGM7/i6Wk2T4gqMhNbJ1uoAzGHeSAyiVMdHolb/Sv01DofkahKmrnvG21uiykkHtBmC+ISG6JisBg9Tg6+QD0g6qy1if04hmDvTkQ5bO5EREDV6HpwcVgtOOwezHXv8wXnNR0eU7kyKfCAcTgqDBlKHuefYM5OuN40wh1W9oAsmHEaKn3ClvgXu+A83sMh3cyF/3V+/nwuf3jNZY0b0qszM2zj7ikbOuHfHerc4WAzZa3RfWut+f0eDj+jnMUKoTvH1QAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/1e0be/20170403001905.webp 250w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/b0a15/20170403001905.webp 500w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/a5d4d/20170403001905.webp 1000w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/293e0/20170403001905.webp 1500w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/37acc/20170403001905.webp 1883w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/63868/20170403001905.png 250w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/0b533/20170403001905.png 500w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/00d43/20170403001905.png 1000w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/aa440/20170403001905.png 1500w,/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/d0e8e/20170403001905.png 1883w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/28bb8cf4bfbce5b4d8c6fc9bbadb6381/00d43/20170403001905.png&quot; alt=&quot;资源占用图&quot; title=&quot;资源占用图&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;后台界面&quot;&gt;后台界面&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:43.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEUlEQVQoz32R246EIBBE/f+v9EGMVxRBvCG1qXaY0dnNknS6seFQXWZVVcFaK3GeJ5ZlgSpL6F7DuVm+O+feZ1JM0/Rrz7uZUgr2dYHAdV2R5zmKokBd12ia5p2fdY22beUcRbHm3Yxkrhij5H3fYYyR0FpjHEeMw4ht26THnOr7/jgOESRAwhJw8R6qVAL03mOeZ8kc+69gn5kcUdhrLS8hKdw2dG0HYy7lfPX/iDhDwORmBCqsm0Ykp8WaHlEhXw4h4HuliSRejxpLYERmpknmv3tI7wjkCOwRypx8ewBjFKB1/gLeG1yE8I/pQYsvBA/DgL7vJdPPJ/BL4X2MNHLbdXKZMJqeVKQzdw+v3sfDHyz1u3QbQ41YAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/102298e34d1c07ed4e20e8ebcb6aa2e1/1e0be/tim20170403003115.webp 250w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/b0a15/tim20170403003115.webp 500w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/a5d4d/tim20170403003115.webp 1000w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/e9cac/tim20170403003115.webp 1449w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/102298e34d1c07ed4e20e8ebcb6aa2e1/63868/tim20170403003115.png 250w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/0b533/tim20170403003115.png 500w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/00d43/tim20170403003115.png 1000w,/static/102298e34d1c07ed4e20e8ebcb6aa2e1/e1b7c/tim20170403003115.png 1449w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/102298e34d1c07ed4e20e8ebcb6aa2e1/00d43/tim20170403003115.png&quot; alt=&quot;后台界面&quot; title=&quot;后台界面&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[在 Linux 上搭建一个求生之路 2 服务器]]></title><description><![CDATA[圣诞节 Steam 特惠，几个室友约着一起买了求生之路 2，1…]]></description><link>https://www.giuem.com/blog/setup-l4d2-server-for-linux</link><guid isPermaLink="false">https://www.giuem.com/blog/setup-l4d2-server-for-linux</guid><pubDate>Tue, 27 Dec 2016 23:22:52 GMT</pubDate><content:encoded>&lt;p&gt;圣诞节 Steam 特惠，几个室友约着一起买了求生之路 2，13 元的价格还算便宜。但打了一把后发现官方服务器卡的不行，根本不能秀操作。然后因为我们是每人一台路由器，局域网联机不是特别方便，于是我自告奋勇搭了个服务器。当然，主要是我又想折腾那台学生机了。&lt;/p&gt;&lt;p&gt;我使用的是官方提供的 SteamCMD 搭建的，后来我发现竟然有个&lt;a href=&quot;https://gameservermanagers.com/&quot;&gt;工具&lt;/a&gt;，搭建起来方便多了。不过那时我已经搭好了，就没折腾这个工具。&lt;/p&gt;&lt;h2 id=&quot;服务器&quot;&gt;服务器&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;基本配置：1 核 1GB 1Mbps&lt;/li&gt;&lt;li&gt;硬盘：20G&lt;/li&gt;&lt;li&gt;系统：Ubuntu Server 16.04.1 LTS 64 位&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;我这配置跑服务器 CPU 利用率大概在 20%，内存使用不超过 40%，占用带宽大约为 0.4 Mbps。但要注意的是，整个求生之路大约占 8G 硬盘空间，所以确保你的服务器有这么多的空间。以下操作都是基于 Ubuntu，其他系统可以看一下&lt;a href=&quot;https://developer.valvesoftware.com/wiki/SteamCMD&quot;&gt;官方文档&lt;/a&gt;。&lt;/p&gt;&lt;h2 id=&quot;安装-32-位运行库&quot;&gt;安装 32 位运行库&lt;/h2&gt;&lt;p&gt;如果你使用的是 64 位的系统，则需要安装 32 位的运行库。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo apt-get install lib32gcc1
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;下载-left-4-dead-2-dedicated-server&quot;&gt;下载 Left 4 Dead 2 Dedicated Server&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -zxvf steamcmd_linux.tar.gz
./steamcmd.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;完成后，匿名登陆服务器。（某些游戏不能匿名登陆下载，具体看这&lt;a href=&quot;https://developer.valvesoftware.com/wiki/Dedicated_Servers_List&quot;&gt;https://developer.valvesoftware.com/wiki/Dedicated_Servers_List&lt;/a&gt;）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Steam&amp;gt;login anonymous
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;指定下载目录&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Steam&amp;gt;force_install_dir /home/ubuntu/l4d2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下载服务端，下载指令是 &lt;code&gt;app_update &amp;lt;app_id&amp;gt; [-beta &amp;lt;betaname&amp;gt;] [-betapassword &amp;lt;password&amp;gt;] [validate]&lt;/code&gt; &lt;code&gt;app_id&lt;/code&gt; 可以在上面的链接找到。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Steam&amp;gt;app_update 222860 validate
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下载完成后会提示 &lt;code&gt;Success! App &amp;#x27;222860&amp;#x27; fully installed.&lt;/code&gt;，这时候输入 &lt;code&gt;quit&lt;/code&gt; 退出即可。&lt;/p&gt;&lt;p&gt;因为我的机器在国内，由于不可抗拒的因素，下载不稳定，所以下载前我还特意开了梯子。&lt;/p&gt;&lt;h2 id=&quot;配置-left-4-dead-2-dedicated-server&quot;&gt;配置 Left 4 Dead 2 Dedicated Server&lt;/h2&gt;&lt;p&gt;新建配置文件&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;cd /home/ubuntu/l4d2/left4dead2/cfg/
vi server.cfg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;配置文件内容如下：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;hostname &amp;quot;servername&amp;quot;    //游戏服务器名
rcon_password &amp;quot;password&amp;quot; //远程管理密码
//sv_search_key yourkey  //搜索此服务器的关键词
//sv_region 255          //服务器地区，255表示全球
//sv_gametypes &amp;quot;coop,versus,survival,scavenge&amp;quot; //游戏模式
//map c5m1_waterfront    //游戏地图
//sv_voiceenable 1       //开启语音服务
//sv_lan 0               //是否是局域网游戏
//sv_cheats &amp;quot;0&amp;quot;          //是否允许作弊

//sv_steamgroup &amp;quot;01234&amp;quot;  //Steam组号
//sv_steamgroup_exclusive 1 //将服务器设为Steam组私有
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;事实上，我们只需要这几句就够了&lt;/p&gt;&lt;pre&gt;&lt;code&gt;hostname &amp;quot;xxx&amp;quot;     //游戏服务器名
sv_steamgroup &amp;quot;12345&amp;quot;     //Steam组号
sv_steamgroup_exclusive 1 //将服务器设为Steam组私有
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后创建一个组，把好友拉进去，这样就行。&lt;/p&gt;&lt;h2 id=&quot;运行服务器&quot;&gt;运行服务器&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;cd /home/ubuntu/l4d2
./srcds_run -game left4dead2 +exec server.cfg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;运行成功后，记得开放对应的端口，端口默认是 &lt;code&gt;27015&lt;/code&gt; ，具体端口可在显示的信息中找到。&lt;/p&gt;&lt;p&gt;这时如果关了 SSH 窗口，服务器就关闭了，可以借助 &lt;code&gt;screen&lt;/code&gt; 或 &lt;code&gt;nohup&lt;/code&gt; 实现后台运行。&lt;/p&gt;&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://developer.valvesoftware.com/wiki/SteamCMD&quot;&gt;SteamCMD&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://xuchen.wang/2015/12/18/l4d2server/&quot;&gt;Linux 环境搭建 Left 4 Dead 2/求生之路 2 专用服务器&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[搭了一个签到站]]></title><description><![CDATA[最近要期末了，感觉就很忙（这学期太浪了，天天打屁股。前段时间抢了一台腾讯学生机，闲着也是闲着，就搭了一个签到站，顺便学了下怎么配置 SSL。 网站程序 这个签到站使用了  binux  /  qiandao…]]></description><link>https://www.giuem.com/blog/a-qiandao-site-and-ssl-config</link><guid isPermaLink="false">https://www.giuem.com/blog/a-qiandao-site-and-ssl-config</guid><pubDate>Sat, 24 Dec 2016 22:14:31 GMT</pubDate><content:encoded>&lt;p&gt;最近要期末了，感觉就很忙（这学期太浪了，天天打屁股。前段时间抢了一台腾讯学生机，闲着也是闲着，就搭了一个签到站，顺便学了下怎么配置 SSL。&lt;/p&gt;&lt;h2 id=&quot;网站程序&quot;&gt;网站程序&lt;/h2&gt;&lt;p&gt;这个签到站使用了 &lt;a href=&quot;https://github.com/binux&quot;&gt;binux&lt;/a&gt; / &lt;a href=&quot;https://github.com/binux/qiandao&quot;&gt;qiandao&lt;/a&gt; ，闲着无聊没事干可以自己搭，不过我还是推荐自己使用作者本人的网站 &lt;a href=&quot;https://qiandao.today/&quot;&gt;qiandao.today&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;ssl&quot;&gt;SSL&lt;/h2&gt;&lt;p&gt;8 月 4 日更新，目前已经转到 Caddy -&amp;gt; &lt;a href=&quot;/blog/caddy-tutorial-for-debian/&quot;&gt;Ref&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;网站地址 &lt;a href=&quot;https://qd.gops.win/&quot;&gt;https://qd.gops.win/&lt;/a&gt; ，在 &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=qd.gops.win&quot;&gt;SSL LABS&lt;/a&gt; 得分 &lt;strong&gt;A+&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;要 A+ 其实很简单的，照着屈屈的&lt;a href=&quot;https://imququ.com/post/my-nginx-conf.html&quot;&gt;这篇文章&lt;/a&gt;配就行了。&lt;/p&gt;&lt;p&gt;目前使用的是 le 的 ECC + RSA 双证书，安利 &lt;a href=&quot;https://github.com/Neilpang/acme.sh&quot;&gt;acme.sh&lt;/a&gt; 这个脚本，用了来签发证书挺方便的。&lt;/p&gt;&lt;p&gt;（这个博客感觉要被我荒废了，哎，还是太懒了，不想更新&lt;/p&gt;&lt;p&gt;另外，祝大家圣诞快乐，鸡年大吉吧。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[网页字体优化之字体异步加载]]></title><description><![CDATA[网页字体一直以来都是一个令人头疼的问题，一方面想要页面更美观引入字体，另一方面又想要加快页面加载速度。而今天我要介绍的这款 JS 库，很好的解决了这个问题，它能将你的字体文件异步加载，不影响页面渲染。 引子 说起网页字体的优化，我很容易就想到了下面几种方法： 使用 CDN…]]></description><link>https://www.giuem.com/blog/webfontloader</link><guid isPermaLink="false">https://www.giuem.com/blog/webfontloader</guid><pubDate>Sat, 24 Sep 2016 22:01:14 GMT</pubDate><content:encoded>&lt;p&gt;网页字体一直以来都是一个令人头疼的问题，一方面想要页面更美观引入字体，另一方面又想要加快页面加载速度。而今天我要介绍的这款 JS 库，很好的解决了这个问题，它能将你的字体文件异步加载，不影响页面渲染。&lt;/p&gt;&lt;h2 id=&quot;引子&quot;&gt;引子&lt;/h2&gt;&lt;p&gt;说起网页字体的优化，我很容易就想到了下面几种方法：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;使用 CDN 分发你的字体文件，对于 Google Fonts 可以更换为国内反代的 CDN（虽然目前 Google Fonts 的服务器已近指向国内，但是速度、稳定性不是很理想）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;内联字，以 Base64 的方式将字体文件嵌入 CSS 文件中。&lt;a href=&quot;https://amio.github.io/embedded-google-fonts/&quot;&gt;https://amio.github.io/embedded-google-fonts/&lt;/a&gt; 是 V2EX 上一个人写的小程序，可以将 Google Fonts 转化为 Base64 内联到 CSS 中。用这种方法再结合 CDN，效果还不错。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;使用字蛛精简字体文件。本方法尽针对中文字体，具体实现方式移步：&lt;a href=&quot;http://font-spider.org/&quot;&gt;字蛛&lt;/a&gt; （好吧，我承认第三点是我拿来凑数的- -）&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;而我今天要介绍的，是一个能将字体异步加载的 JS 库，它的地址是：&lt;a href=&quot;https://github.com/typekit/webfontloader&quot;&gt;typekit/webfontloader&lt;/a&gt; 。好了，本文到此结束。&lt;/p&gt;&lt;p&gt;哈，开个玩笑。虽然说原文档讲得很详细了，但我觉得我还是要简单说明一下。&lt;/p&gt;&lt;h2 id=&quot;使用方法&quot;&gt;使用方法&lt;/h2&gt;&lt;p&gt;这里我只是讲解一下异步加载 Google Fonts 的方法，以及这里面藏着的一个小坑。&lt;/p&gt;&lt;h3 id=&quot;引入-js&quot;&gt;引入 JS&lt;/h3&gt;&lt;p&gt;首先，当然是要先引入 JS。演示代码使用的是七牛（staticfile）提供的 CDN。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;script src=&amp;quot;//staticfile.qnssl.com/webfont/1.6.16/webfontloader.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;我博客目前的方案是我之前介绍过的 &lt;a href=&quot;/blog/use-basketjs/&quot;&gt;basket.js
&lt;/a&gt;，感兴趣的话可以 &lt;code&gt;Ctrl + U&lt;/code&gt; 看一下具体实现方式。&lt;/p&gt;&lt;h3 id=&quot;运行-webfontloader&quot;&gt;运行 webfontloader&lt;/h3&gt;&lt;p&gt;官方给出的例子非常简单&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;WebFont.load({
  google: {
    families: [&amp;#x27;Droid Sans&amp;#x27;, &amp;#x27;Droid Serif&amp;#x27;],
  },
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但是这样子只能使用原生的 Google Fonts，不能使用反代的 CDN，怎么办呢？这里就是我上面讲的那个小坑，官方文档并没有说明。&lt;/p&gt;&lt;p&gt;刚开始发现这个问题的时候，我就去翻看源代码，想把原地址替换成国内反代的 CDN，然而我不小心发现了一个参数，可以指定 API。&lt;/p&gt;&lt;p&gt;于是代码变成下面这样：（其中 &lt;code&gt;https://cdn.moefont.com/fonts/css&lt;/code&gt; 是自定义的 API 地址，你可以换成其他的）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;WebFont.load({
  google: {
    families: [&amp;#x27;Droid Sans&amp;#x27;, &amp;#x27;Droid Serif&amp;#x27;],
    api: &amp;#x27;https://cdn.moefont.com/fonts/css&amp;#x27;,
  },
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;好了，添加完 JS，让我们来看一下效果如何吧。咦，页面的加载怎么还是老样子？？好吧，其实还要最后一步：&lt;a href=&quot;#%E4%BF%AE%E6%94%B9-CSS&quot;&gt;修改 CSS&lt;/a&gt;&lt;/p&gt;&lt;h3 id=&quot;修改-css&quot;&gt;修改 CSS&lt;/h3&gt;&lt;p&gt;第二布，我们需要对原有的 CSS 进行修改。&lt;/p&gt;&lt;p&gt;这里我举个简单例子：&lt;/p&gt;&lt;p&gt;我们原来的 CSS 是这个样子的：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;body {
  font-family: &amp;#x27;Open Sans&amp;#x27;, &amp;#x27;Microsoft YaHei&amp;#x27;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Open Sans 是 Google Fonts，也是造成页面字体空白的元凶。现在我们要把它揪出来，代码变成这样：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;body {
  font-family: &amp;#x27;Microsoft YaHei&amp;#x27;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后再加上一行但字体文件载入时的 &lt;code&gt;font-family&lt;/code&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;.wf-active body {
  font-family: &amp;#x27;Open Sans&amp;#x27;, &amp;#x27;Microsoft YaHei&amp;#x27;;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这样再浏览页面，可以发现 webfontloader 生效了。&lt;/p&gt;&lt;p&gt;我这里只是讲一下简单的用法，其他比如加载 iconfont 等本地字体还有一些高级用法请看官方文档。&lt;/p&gt;&lt;h2 id=&quot;效果演示&quot;&gt;效果演示&lt;/h2&gt;&lt;p&gt;为了说明 webfontloader 给用户体验带来的提升，我做了一个对比。为了模拟极端环境，我利用 Chrome DevTools 把网络模拟为 GPRS。上面为普通加载方式，下面使用 webfontloader 加载。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/static/2f556390dc7814cbe6c18b66b0a6fc72/webfontloader-test.gif&quot; alt=&quot;webfontloader-test&quot;/&gt;&lt;/p&gt;&lt;h2 id=&quot;一些题外话&quot;&gt;一些题外话&lt;/h2&gt;&lt;p&gt;高考完的这几个月疯狂划水，玩了一暑假屁股，无暇更新博客。。现在上大学了，生活也稍微规律点，接下来会逐步发表一些文章。嗯，我要扯的就这些。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[高考成绩出来辣]]></title><description><![CDATA[下午 4 点多成绩就出来了，查询的时候手一直在抖。我之前有预想到我会考砸，没想到发挥还算正常。害得我这几天一直提心吊胆的，连博客都没有及时更新。现在成绩出来了，等填完志愿博客就恢复正常啦。 至于我的成绩，总分 628 分，全省 90…]]></description><link>https://www.giuem.com/blog/result-of-gankao-came-out</link><guid isPermaLink="false">https://www.giuem.com/blog/result-of-gankao-came-out</guid><pubDate>Thu, 23 Jun 2016 20:25:04 GMT</pubDate><content:encoded>&lt;p&gt;下午 4 点多成绩就出来了，查询的时候手一直在抖。我之前有预想到我会考砸，没想到发挥还算正常。害得我这几天一直提心吊胆的，连博客都没有及时更新。现在成绩出来了，等填完志愿博客就恢复正常啦。&lt;/p&gt;&lt;p&gt;至于我的成绩，总分 628 分，全省 900+ 名（福建省教育就是这么渣&lt;/p&gt;&lt;p&gt;对于填报志愿，不知道大家有没有什么建议？&lt;/p&gt;</content:encoded></item><item><title><![CDATA[自定义百度网盘分享密码 (Javascript)]]></title><description><![CDATA[最近看到几个小伙伴的博客都在说这个自定义密码的，作为高三狗的我忍不住也要插上一脚了。。 首先看下效果吧。（一不小心就开车了） 地址： http://pan.baidu.com/s/1o7bIomm 密码： 帅B…]]></description><link>https://www.giuem.com/blog/baidu-pan-customize-share-password-by-javascript</link><guid isPermaLink="false">https://www.giuem.com/blog/baidu-pan-customize-share-password-by-javascript</guid><pubDate>Sat, 05 Mar 2016 20:46:37 GMT</pubDate><content:encoded>&lt;p&gt;最近看到几个小伙伴的博客都在说这个自定义密码的，作为高三狗的我忍不住也要插上一脚了。。&lt;/p&gt;&lt;p&gt;首先看下效果吧。（一不小心就开车了）&lt;/p&gt;&lt;ul&gt;&lt;li&gt;地址：&lt;a href=&quot;http://pan.baidu.com/share/init?shareid=2869703761&amp;amp;uk=1261063795&quot;&gt;http://pan.baidu.com/s/1o7bIomm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;密码：&lt;code&gt;帅B&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;原理&quot;&gt;原理&lt;/h2&gt;&lt;p&gt;分析代码发现，百度网盘的自定义密码是在本地生成的&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:481px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:30%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA1UlEQVQY032NSU7EMBQFczq2rOBCnIN70YINoTskJHba0x9tf4QAMQhRi3qrpxqm4814uHy8v364uxoPF36+FWc47WnbBUpX6cxdtRE15i+LNObBzKwaJEprys8xzH73bnebIAoRlkKlIADlzIiVual+WGSwbrVXykgbhC341XvvQwiiKqoppZSzdw4AiKi1Zt94K3frkEpykRc8L7v3u7AQMiIyMwDUWu0vhvfp3MDldXkZj+P0NMeYT6cphHM4Z+f8r+CPs1atpJqEkGKMKtI/sX95BYr2WNoh25FjAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4be1db4ec98898506abf301dc85bb7ad/1e0be/make-private-password-function.webp 250w,/static/4be1db4ec98898506abf301dc85bb7ad/1c567/make-private-password-function.webp 481w&quot; sizes=&quot;(max-width: 481px) 100vw, 481px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4be1db4ec98898506abf301dc85bb7ad/63868/make-private-password-function.png 250w,/static/4be1db4ec98898506abf301dc85bb7ad/d024a/make-private-password-function.png 481w&quot; sizes=&quot;(max-width: 481px) 100vw, 481px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4be1db4ec98898506abf301dc85bb7ad/d024a/make-private-password-function.png&quot; alt=&quot;makePrivatePassword函数&quot; title=&quot;makePrivatePassword函数&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:289px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.799999999999997%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA5UlEQVQY03XL3U6DMBjGca5ti5rtYMbExLtwB17mEtNtbMDmkM/6Qgul9C0TiK2RIz3wd/TPkzxOlfMiAi5qXgshRfS+3m1nW7I8uLd7ckM28wO5C9zF+Tg7eWsoGKIax9FOHM3wWrZYcQRQJSTe84Uskv2Keqvk+BCen978R5fc717nJ/8lzz8QldZaCIGIDuOslU0dhtz3RRz30HSpvGatFcOXNv1glBpKpgGwKFsA0FozxiilVVU5nPE0Tb0goABRnKgOpepF82mtNcZYa+z/HCllnmUA0Okf02FijJ3a/PV7+QZXtAyFg++dxAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/2c8586c47597c9b5a57020178d22b114/1e0be/usage-of-make-private-password.webp 250w,/static/2c8586c47597c9b5a57020178d22b114/99c3f/usage-of-make-private-password.webp 289w&quot; sizes=&quot;(max-width: 289px) 100vw, 289px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/2c8586c47597c9b5a57020178d22b114/63868/usage-of-make-private-password.png 250w,/static/2c8586c47597c9b5a57020178d22b114/c969a/usage-of-make-private-password.png 289w&quot; sizes=&quot;(max-width: 289px) 100vw, 289px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/2c8586c47597c9b5a57020178d22b114/c969a/usage-of-make-private-password.png&quot; alt=&quot;makePrivatePassword函数的使用&quot; title=&quot;makePrivatePassword函数的使用&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;这也就给了我们玩耍的机会。&lt;/p&gt;&lt;h2 id=&quot;实现方法&quot;&gt;实现方法&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://www.82cat.com/2016/02/17/275/&quot;&gt;不二&lt;/a&gt; 和 &lt;a href=&quot;http://blog.liesauer.net/?post=35&quot;&gt;LiesAuer&lt;/a&gt; 他们都是采用构造请求的方法，我觉得不够 hacker，而且不太方便。&lt;/p&gt;&lt;p&gt;所以我决定采用 JS 的方式修改密码。&lt;/p&gt;&lt;p&gt;方法很简单：修改 &lt;code&gt;makePrivatePassword&lt;/code&gt; 这一函数即可。&lt;/p&gt;&lt;h2 id=&quot;具体代码&quot;&gt;具体代码&lt;/h2&gt;&lt;p&gt;说明：代码可以转载，但请不要说是你原创之类的话！！！&lt;/p&gt;&lt;h3 id=&quot;压缩版&quot;&gt;压缩版&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;javascript: require([
  &amp;#x27;function-widget-1:share/util/service/createLinkShare.js&amp;#x27;,
]).prototype.makePrivatePassword = function () {
  return prompt(&amp;#x27;请输入自定义的密码&amp;#x27;, &amp;#x27;1234&amp;#x27;);
};
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;原版&quot;&gt;原版&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;require([
  &amp;#x27;function-widget-1:share/util/service/createLinkShare.js&amp;#x27;,
]).prototype.makePrivatePassword = () =&amp;gt; {
  return prompt(&amp;#x27;请输入自定义的密码&amp;#x27;, &amp;#x27;1234&amp;#x27;);
};
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;使用方法&quot;&gt;使用方法&lt;/h2&gt;&lt;p&gt;别急，你可别复制走代码就用了，一不小心就会出现这样的错误：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Uncaught Error: Cannot find module `function-widget-1:share/util/service/createLinkShare.js`(…)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;首先，选择要分享的文件，点击分享按钮。&lt;/p&gt;&lt;p&gt;这时候，按 &lt;code&gt;F12&lt;/code&gt; 打开控制台，切换至 &lt;code&gt;Console&lt;/code&gt; ，输入代码按回车即可。当然，你也可以存为书签，点一下书签。&lt;/p&gt;&lt;p&gt;然后点击创建私密链接，会弹出输入框，输入密码即可！&lt;/p&gt;&lt;p&gt;注意使用代码前要先点一下 &lt;code&gt;分享&lt;/code&gt; 按钮，相关模块才会载入，这时候用代码才有效果。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/static/77d4974d801e2a49194d6df8ec10c920/bdpanpawdemo.gif&quot; alt=&quot;demo&quot;/&gt;&lt;/p&gt;&lt;h2 id=&quot;密码类型&quot;&gt;密码类型&lt;/h2&gt;&lt;p&gt;必须是 4 个字符。
如：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;abcd&lt;/li&gt;&lt;li&gt;1234&lt;/li&gt;&lt;li&gt;ab12&lt;/li&gt;&lt;li&gt;啊 a （中文加一个数字或字母）&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;其他类型请各位自己探索，可在下方给我留言。
好像如果密码有中文，第一次访问时会提示错误，刷新一下才正常。&lt;/p&gt;&lt;p&gt;&lt;strong&gt; PS：这可能是高考前最后一次更新了，各位可别想我啊 &lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[使用 basket.js 缓存页面静态文件]]></title><description><![CDATA[最近对博客进行了一次很大的修改，比如使用 jQuery 和 Pjax。当然，还有本文要介绍的 basket.js。 basket.js 是什么 basket.js 是一个 javascript 类库（废话），它可以将页面中的 css、js 文件缓存到  localStorage…]]></description><link>https://www.giuem.com/blog/use-basketjs</link><guid isPermaLink="false">https://www.giuem.com/blog/use-basketjs</guid><pubDate>Sun, 20 Dec 2015 14:55:50 GMT</pubDate><content:encoded>&lt;p&gt;最近对博客进行了一次很大的修改，比如使用 jQuery 和 Pjax。当然，还有本文要介绍的 basket.js。&lt;/p&gt;&lt;h2 id=&quot;basketjs-是什么&quot;&gt;basket.js 是什么&lt;/h2&gt;&lt;p&gt;basket.js 是一个 javascript 类库（废话），它可以将页面中的 css、js 文件缓存到 &lt;code&gt;localStorage&lt;/code&gt; 中，下次访问时直接读取 &lt;code&gt;localStorage&lt;/code&gt; 的内容，大大减少了加载时间。而且 basket.js 本身非常小，gzip 压缩后只有 5 kb 左右。&lt;/p&gt;&lt;h2 id=&quot;使用&quot;&gt;使用&lt;/h2&gt;&lt;p&gt;首先引入 javascript 代码，推荐使用下面 cdn （支持 SSL）。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;//dn-staticfile.qbox.me/basket.js/0.5.2/basket.full.min.js
//cdn.css.net/libs/basket.js/0.5.2/basket.full.min.js
//cdn.bootcss.com/basket.js/0.5.2/basket.full.min.js
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用也很简单，看一段我博客的代码就知道了。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;basket
  .require(
    // 引入 jQuery
    { url: &amp;#x27;//dn-staticfile.qbox.me/jquery/2.1.4/jquery.min.js&amp;#x27; }
  )
  .then(function () {
    // 按顺序引入，避免 jQuery Plugin 先于 jQuery 引入
    basket.require({ url: &amp;#x27;/js/main.js&amp;#x27;, unique: &amp;#x27;1&amp;#x27; });
  });
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;具体使用方法看&lt;a href=&quot;http://addyosmani.com/basket.js/&quot;&gt;官方文档&lt;/a&gt;（其实是我翻译不下去了，哈哈）&lt;/p&gt;&lt;h2 id=&quot;效果&quot;&gt;效果&lt;/h2&gt;&lt;h3 id=&quot;首次访问&quot;&gt;首次访问&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:665px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:34%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABRElEQVQY0yXNW4oUMRQA0NrsbEpkPvxzEzPojyCICMIMdJtOmUcluTdJJVV5VSWj2J4NnGmN0SKWUhDRex9C8HfWWues9y74FbRxaMfZ+9HH6H308zzH6BODzeY32MdvE2cTqQocdw7brANVgWH4KL48ik/v2fNXp24+EUjKF4Y7pLfpciVXcrvNjMtFLppxSWemNAipLpdf6Jwpnu/o6/6Zf3v4+U7G+qe0WloqdeKcxxhS2rVSRmsAg4AAoLXmjIV1PUpruYx6Ssc/zE8/FvOqGHFLzXUihFBKAcDcSSkRUQgBgMYYa23OJaeUU6q51FS/S301cgl4lDpRSgkhWmtrLeK/c11XYzSikZKF4Mc4j/M8em9Ha7W8WNNrU7tTKU7/w2VZlFJwZy0qtQmRhUhSZrQlAxal8ralXFpuNSW/x5D2v0iMgka3cuftAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/19adaef88ad1b4f78f17d1d3846e84a8/1e0be/20151220153403.webp 250w,/static/19adaef88ad1b4f78f17d1d3846e84a8/b0a15/20151220153403.webp 500w,/static/19adaef88ad1b4f78f17d1d3846e84a8/ced6d/20151220153403.webp 665w&quot; sizes=&quot;(max-width: 665px) 100vw, 665px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/19adaef88ad1b4f78f17d1d3846e84a8/63868/20151220153403.png 250w,/static/19adaef88ad1b4f78f17d1d3846e84a8/0b533/20151220153403.png 500w,/static/19adaef88ad1b4f78f17d1d3846e84a8/5f4af/20151220153403.png 665w&quot; sizes=&quot;(max-width: 665px) 100vw, 665px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/19adaef88ad1b4f78f17d1d3846e84a8/5f4af/20151220153403.png&quot; alt=&quot;首次访问&quot; title=&quot;首次访问&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;二次访问不缓存&quot;&gt;二次访问不缓存&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:664px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:34%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABMElEQVQY002OR27EMBRDfcfcLEBukDPkDNlkFcwAKeMiuEj66rKsYksKPNkMNyQIEniNsZYzFryXQmitrDVaK62UFEIpZbSOduMARqqcj7SnWmopZd9TzrnpiWZbhjUPWA1Yt7NE1CBqukUOi/6i8IreO+5+mEQqiDWfY1cQXYndm9+2v3VDj8ZxWqYFj9MyoIkAG+el7QYqBQT7MX8/XZ4vnEXr1y04H7eQnI9N33dKSmM0pYQxAApAKQNgjBGCtdI1HIhNL/3bjfNknXPrtrnNnaFp27brOkII5/x+OAMAE0JQSjkXKaUYY037oOQnoJr2EEOMMYTQ5Jxrrcdx1AeVUv79sYy5hD0+Ng3GmFJ6vV7hjgonNWHMzrPH2M/zhonX3IRldgvxqzuZ73LO/QFHTIhPL37ycwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/8048586fb67524b97f0853cc9bacdebe/1e0be/20151220153515.webp 250w,/static/8048586fb67524b97f0853cc9bacdebe/b0a15/20151220153515.webp 500w,/static/8048586fb67524b97f0853cc9bacdebe/c2945/20151220153515.webp 664w&quot; sizes=&quot;(max-width: 664px) 100vw, 664px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/8048586fb67524b97f0853cc9bacdebe/63868/20151220153515.png 250w,/static/8048586fb67524b97f0853cc9bacdebe/0b533/20151220153515.png 500w,/static/8048586fb67524b97f0853cc9bacdebe/31493/20151220153515.png 664w&quot; sizes=&quot;(max-width: 664px) 100vw, 664px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/8048586fb67524b97f0853cc9bacdebe/31493/20151220153515.png&quot; alt=&quot;二次访问不缓存&quot; title=&quot;二次访问不缓存&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;二次访问缓存&quot;&gt;二次访问缓存&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:662px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:34.400000000000006%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABJ0lEQVQY013OyU6EQBCAYV7WF9MX8OrV6NnEGBUZhmV6uqs3lt6gF8CAh0n88h/qUJVUputaGd11cp4mIbhSozEagPzkuRrHvu+ctmZUnNHZupTiktK2ruuypBizE+lapoVdyeArGOqjCoa8oRX0iKhXcn665qT3JznSMUqzCLfBGC7cZOeq+fj8/sqLsmoQBoShRfhyJaIb6gaV5xpML5V+LF7uTved9M46M3m7FzLYEaPV0PeMUiE454wxKsU+AoAzJhn/dv16uD4PnZ2tsc46Z521Gca4LMu2bRljUsq/UyGEPACA1jqEELzfQnqniJshhTj7XbYdYowppe2/9ejGzWFZbmv721LKoiiapmGMcc4pBSEEIQ7jPYQcpZNjbELI8m5yN7+mmIbZJCfs4wAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/cff6b73c59edcff6998fe622f97c31df/1e0be/20151220153602.webp 250w,/static/cff6b73c59edcff6998fe622f97c31df/b0a15/20151220153602.webp 500w,/static/cff6b73c59edcff6998fe622f97c31df/90cc3/20151220153602.webp 662w&quot; sizes=&quot;(max-width: 662px) 100vw, 662px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/cff6b73c59edcff6998fe622f97c31df/63868/20151220153602.png 250w,/static/cff6b73c59edcff6998fe622f97c31df/0b533/20151220153602.png 500w,/static/cff6b73c59edcff6998fe622f97c31df/be86f/20151220153602.png 662w&quot; sizes=&quot;(max-width: 662px) 100vw, 662px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/cff6b73c59edcff6998fe622f97c31df/be86f/20151220153602.png&quot; alt=&quot;二次访问缓存&quot; title=&quot;二次访问缓存&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;可以看到，效果还是不错的，如果页面不引入字体的话，还可以更快。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[如何删除 Wormhole 后门]]></title><description><![CDATA[上文我们提到了  Wormhole  的相关危害，既然百度目前没有删除这个后门的打算，那么我就应该采取一些手段主动删除这个后门。 漏洞自检 使用 终端模拟器 查看  40310/6259  是否被监听 从上图可以看到，我手机上的 40310 端口被监听了 删除漏洞 未 Root…]]></description><link>https://www.giuem.com/blog/how-to-prevent-wormhole</link><guid isPermaLink="false">https://www.giuem.com/blog/how-to-prevent-wormhole</guid><pubDate>Sun, 08 Nov 2015 15:02:38 GMT</pubDate><content:encoded>&lt;p&gt;上文我们提到了 &lt;code&gt;Wormhole&lt;/code&gt; 的相关危害，既然百度目前没有删除这个后门的打算，那么我就应该采取一些手段主动删除这个后门。&lt;/p&gt;&lt;h2 id=&quot;漏洞自检&quot;&gt;漏洞自检&lt;/h2&gt;&lt;p&gt;使用&lt;strong&gt;终端模拟器&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ netstat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;查看 &lt;code&gt;40310/6259&lt;/code&gt; 是否被监听&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:177.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAIAAAAGkY33AAAACXBIWXMAAAsTAAALEwEAmpwYAAABv0lEQVRIx+3RsZLTMBAG4JW0smRLsmIpkWyf49hncuGSyiF3PAEFBT0lJU06hgfgHXgSXpBJfDlCRc/kG1X/zD/anYXD4fD++anvO0II5xwRGWOU0iRJuq7r+x4RQwjr9bqqyt1uN45jjPF4PO73IyilHndPbfcAJ4QQws6QoVIqU4oxlillrZVSZkplWSaE9M5lWQbl3fLnrx9fvn1+t38e9/tFCMj59M4jMIZIKQMA5/wwvAEgQsq6riljYKz5+v3jh0/j3McQY57bsqoAgBIKQChliJzzBJGnaWbtbEq0NogcVqvurhruu80w3A/D0Lat9/Oqqvq+X68f8ty+LEOIEEJKmaap1jpNM8YQnHMhLh63b2MMZVmGEPI892dVVVmbw4XWOoTgnFssFiGEJOFgjJFSOufqugYARLRnxpimaYqieC0bY6y1RVEg4kvknBNCTGVK6Wm/JFFKzWazadrXMiJKKcnFKQohSClDCKvVajp1kiRaa+ccYwyuIKIQ4jo5/SyljDG2bcsYm8p5ns/n8z/jXcqc87/K3vumaTabzXa7XS6X3vs0Tcuy1FrDP11vdR1SSuHm5ubm5v/yGz7tJXvL/KF0AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/4798a64c009b4a9b5ae836098da4f5cd/1e0be/screenshot_2015-11-08-15-15-16.webp 250w,/static/4798a64c009b4a9b5ae836098da4f5cd/b0a15/screenshot_2015-11-08-15-15-16.webp 500w,/static/4798a64c009b4a9b5ae836098da4f5cd/a5d4d/screenshot_2015-11-08-15-15-16.webp 1000w,/static/4798a64c009b4a9b5ae836098da4f5cd/260c2/screenshot_2015-11-08-15-15-16.webp 1080w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/4798a64c009b4a9b5ae836098da4f5cd/63868/screenshot_2015-11-08-15-15-16.png 250w,/static/4798a64c009b4a9b5ae836098da4f5cd/0b533/screenshot_2015-11-08-15-15-16.png 500w,/static/4798a64c009b4a9b5ae836098da4f5cd/00d43/screenshot_2015-11-08-15-15-16.png 1000w,/static/4798a64c009b4a9b5ae836098da4f5cd/302a4/screenshot_2015-11-08-15-15-16.png 1080w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/4798a64c009b4a9b5ae836098da4f5cd/00d43/screenshot_2015-11-08-15-15-16.png&quot; alt=&quot;终端模拟器&quot; title=&quot;终端模拟器&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;从上图可以看到，我手机上的 40310 端口被监听了&lt;/p&gt;&lt;h2 id=&quot;删除漏洞&quot;&gt;删除漏洞&lt;/h2&gt;&lt;h3 id=&quot;未-root&quot;&gt;未 Root&lt;/h3&gt;&lt;p&gt;对于未 Root 用户，最好的方法就是卸载所有百度的 APP&lt;/p&gt;&lt;h3 id=&quot;已-root&quot;&gt;已 Root&lt;/h3&gt;&lt;p&gt;如果你的手机已经 Root ,那么我们可以使用神器 &lt;strong&gt;My Android Tools&lt;/strong&gt; 禁用相关服务。&lt;/p&gt;&lt;p&gt;首先，选择 &lt;code&gt;服务&lt;/code&gt; ，找到百度系的 APP （如：百度地图）进入。
然后禁用 &lt;code&gt;MoPlusService&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:177.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAIAAAAGkY33AAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1ElEQVRIx52UzW8bRRjG9z+oIiSEgiAtThXlAJFQEUJURWrhCjduXLghOHBCHDhCXMc4CQr5bFAEcakEFeKrKgIRCsoHFXX9Eadeu7te7+z6M/FuPDO765nZXaNdpwaC4jX89BzmMLPvM+8z73Ivr0kTM/eH3+dHwoWeHp/Mnwnnn/tYuLAgjkzmz0by5+fFp2eFi8vipeXiuY+E926oL62IXCgGHpuSR6JgOCI/ctnTw2H50Yh8OgrGZpTxWWUkCk5/CEanwWgMPOErFAPjs0ooBrinVvH5dWN0Cb9y3XztW+vVr83Xb1gvxI3QIj67dKSJT/CL18zQEn72U+OZNWNsGV/63HhyFXPDc2hsGZ2KwYlV/Pxnxrk1fCFujC6iU9PwoRlPQ9NweA5NrOKhaRhaRGcW0NAMHF/Bw3OIm9q25hNk/g6JbJmXt8zIlhneMqM75uxtK7pzpMi29cGmGd2xwv6e6I41uWlGti2u02EzP8jfJxuY2HVINIPWIdUNqhnUcVmn00+c1abfJGq/C1oNMlUnQCcljag6UXRiWMRq9xPHKDH9Ta5NHEZdRl2bOow4jATCtQl9K35/6ValjOx0tZ2pkVyD5PeJ0aaMBsBRSg6RgQ2TUs9n1wUySZsMUJkQslnQ76no0KQaJtAkLYNQQslAhyl95wtxfbsq6Sxba6erJF1rtwkdBK9hnY7tuqzbJEY9DQhHCJ26qVy/s+84NiGDVexVJpR+9Udtq6D5h+l/Ou9127GZ/SBVxo4HFGD7jbi4siHXFHHvXi6TyaRSqXQ6ncvleJ5XFMW2T7yOV7nWRM0WtkwDY9xqtdDfwBj3q0wpvS228hXYNjGEECEEIex+AmMc1DBC3/2yuP6bXAViLsfv7e1lfAqFAs/zlmX9uwvHcmZezo7jPqDj47qu4zh9euZVnv2p8l2iqu9XpZKs+JRKpWKxqPoghE4q7uUc3678uldvNqrFogQAqFQqRR9ZlgEAEMITD3u2XeY67Mir77a3cF23n21vnq+KKz+XlGL+7t3k7u4uz/OSJPV2BLwwuQHrGsIIaprWy7lrNXiec2UsN5BpYMPw3kmXwBdy1O23r4mrv5SEXCaZSieTyWw2m06nu+aDB6PToa7L3H9i2/YgtunCRvVmqt6oAKCoAIByuayqKsa4z9v6K+crt9QfU9UKkARRFARBlmVJkvrEe8y27bp2L94ujuMwxoL/229eLV7ZkGUhl9nNJhKJbtQ8z6uq2meYj2znK0g9wK1DXdf1g4ODZrOp67qmaYHOvXnuOMz7E/k4Pt31IHf+//wJcJiYVwPOnQMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/68672c92e9f38f53ce8fc837f518f0dd/1e0be/screenshot_2015-11-08-15-29-14.webp 250w,/static/68672c92e9f38f53ce8fc837f518f0dd/b0a15/screenshot_2015-11-08-15-29-14.webp 500w,/static/68672c92e9f38f53ce8fc837f518f0dd/a5d4d/screenshot_2015-11-08-15-29-14.webp 1000w,/static/68672c92e9f38f53ce8fc837f518f0dd/260c2/screenshot_2015-11-08-15-29-14.webp 1080w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/68672c92e9f38f53ce8fc837f518f0dd/63868/screenshot_2015-11-08-15-29-14.png 250w,/static/68672c92e9f38f53ce8fc837f518f0dd/0b533/screenshot_2015-11-08-15-29-14.png 500w,/static/68672c92e9f38f53ce8fc837f518f0dd/00d43/screenshot_2015-11-08-15-29-14.png 1000w,/static/68672c92e9f38f53ce8fc837f518f0dd/302a4/screenshot_2015-11-08-15-29-14.png 1080w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/68672c92e9f38f53ce8fc837f518f0dd/00d43/screenshot_2015-11-08-15-29-14.png&quot; alt=&quot;My Android Tools-百度地图&quot; title=&quot;My Android Tools-百度地图&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;一般禁用了这个，后门就关闭了。如果不放心，可以选择 &lt;code&gt;广播接收器&lt;/code&gt; 禁用以 &lt;code&gt;MoPlus&lt;/code&gt; 开头的组件，如：&lt;code&gt;MoPlusReceiver&lt;/code&gt; 之类的。&lt;/p&gt;&lt;p&gt;最后别忘了检查一下对应的端口是否关闭，如果没有关闭，那说明还有其他 APP 存在这个后门。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[浅谈 Wormhole 及相关测试]]></title><description><![CDATA[葫芦娃葫芦娃，一根藤上七朵花，风吹雨打都不怕，啦啦啦啦，叮当咚咚当当，葫芦娃。看到这个  Wormhole  漏洞，脑海里不知不觉就浮现出这一小段歌词。 那么，这个漏洞到底是什么呢？
切确的说，这是一个有“漏洞”的后门。百度开放这个后门，主要是为了方便 XX…]]></description><link>https://www.giuem.com/blog/taste-wormhole</link><guid isPermaLink="false">https://www.giuem.com/blog/taste-wormhole</guid><pubDate>Sat, 07 Nov 2015 20:33:33 GMT</pubDate><content:encoded>&lt;p&gt;葫芦娃葫芦娃，一根藤上七朵花，风吹雨打都不怕，啦啦啦啦，叮当咚咚当当，葫芦娃。看到这个 &lt;code&gt;Wormhole&lt;/code&gt; 漏洞，脑海里不知不觉就浮现出这一小段歌词。&lt;/p&gt;&lt;p&gt;那么，这个漏洞到底是什么呢？
切确的说，这是一个有“漏洞”的后门。百度开放这个后门，主要是为了方便 XX。它通过监听本地 &lt;code&gt;40310/6259&lt;/code&gt; 端口，从而使网页端（百度搜索，百度统计等）和 APP 进行“通信”。&lt;/p&gt;&lt;h2 id=&quot;漏洞伊始&quot;&gt;漏洞伊始&lt;/h2&gt;&lt;p&gt;这个后门是通过判断 &lt;code&gt;remote-addr&lt;/code&gt; 请求头来确定是否为本机访问，但不幸的是，这个字段是可以伪造的，导致任意联网上的设备都可以通过这个后门来获取、修改你手机上的敏感信息！&lt;/p&gt;&lt;h2 id=&quot;功wei能hai&quot;&gt;功(wei)能(hai)&lt;/h2&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:390px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:67.19999999999999%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB1klEQVQoz42SyY7bMBBE5/9/L5lN1sJFO7XStkiKZFdAx4MJ5hQeeGj0Q3UV6kV3s25mb04AIPzX+1p7cc5rbfZ927e4L9hXbDOOGznnrTm3GfOQhuuU5vuC280S4hMmAit7zipenCwDy8E+UVcky7AtTg1+GrzIUX6AXVC+o8qcGqLWB0AvkSD5KAVvuM9/Q5Q0T+esbCeIXdDwc9+v5oC5w5r0mwPOwp8+wZRg1dSiE55laAX1khpGQxuXxWl9DDWJAp1EJ9AwDI0z9p6M0wMWbJQyKZdvEAXyV7QCY++v2s7qbCoU6VoSpVMd1sk7Z789SzHWUjQ8eatLGpqotVsX14nIM4jCL9N53CgE+yP15DkpC15XXhYPuI2tDPuWolJtlFVQg59HTD221YQYiBAjPeAIzgYpRSeTZ3ZJl5fvJEva1lNfzaJOdkH+lo7neaiyqPq4b/dnYLwakjLz5Uci6+oRW+vXxU6jq4uE1Yz6xqsOqj+NMd+BST4KwRv2DEzkmFXYNqu1ayrKfqHlkFWclbXW4ashT88sKbNO+urRBH6B6uK22nUxnaTqEywDv8RpcMfhQvgHdtZZ46y1pyNzpCacDiFEHyIR/e1GaoWnSP5H2n8AbSnhiAkaJ8sAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/38a5b6ece6cacce4aae28181d06a0cf1/1e0be/wormhole-1.webp 250w,/static/38a5b6ece6cacce4aae28181d06a0cf1/a9b47/wormhole-1.webp 390w&quot; sizes=&quot;(max-width: 390px) 100vw, 390px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/38a5b6ece6cacce4aae28181d06a0cf1/63868/wormhole-1.png 250w,/static/38a5b6ece6cacce4aae28181d06a0cf1/727ba/wormhole-1.png 390w&quot; sizes=&quot;(max-width: 390px) 100vw, 390px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/38a5b6ece6cacce4aae28181d06a0cf1/727ba/wormhole-1.png&quot; alt=&quot;图1.危害&quot; title=&quot;图1.危害&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;从图中可以看到，这个后门有如下功能：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;geolocation 获取用户手机的 GPS 地理位置（城市，经度，纬度）&lt;/strong&gt;
getsearchboxinfo 获取手机百度的版本信息
getapn 获取当前的网络状况（WIFI/3G/4G 运营商）
getserviceinfo 获取提供 nano http 的应用信息
getpackageinfo 获取手机应用的版本信息
&lt;strong&gt;sendintent 发送任意 intent 可以用来打开网页或者与其他 app 交互&lt;/strong&gt; &amp;gt; &lt;strong&gt;getcuid 获取 imei&lt;/strong&gt;
getlocstring 获取本地字符串信息
&lt;strong&gt;scandownloadfile 扫描下载文件(UCDownloads/QQDownloads/360Download...)&lt;/strong&gt; &amp;gt; &lt;strong&gt;addcontactinfo 给手机增加联系人&lt;/strong&gt; &amp;gt; &lt;strong&gt;getapplist 获取全部安装 app 信息&lt;/strong&gt; &amp;gt; &lt;strong&gt;downloadfile 下载任意文件到指定路径如果文件是 apk 则进行安装&lt;/strong&gt; &amp;gt; &lt;strong&gt;uploadfile 上传任意文件到指定路径 如果文件是 apk 则进行安装&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;最新消息&quot;&gt;最新消息&lt;/h2&gt;&lt;p&gt;以百度的尿性看，这个后门也许不会被关闭。在最近的修复中，百度只是修改了几个函数，&lt;strong&gt;后门并没有关闭&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;详细信息请移步： &lt;a href=&quot;http://www.freebuf.com/vuls/84017.html&quot;&gt;【11.5 更新最新版本已修复】百度真的修复了所有的 WormHole 漏洞么?&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;利用&quot;&gt;利用&lt;/h2&gt;&lt;p&gt;既然漏洞并没有被修复，那么我们就可以对其就行利(wan)用(shua)。前面已经说到，由于对请求来源的判断可以伪造，所以只要你的手机暴露与公网之上，那么就有被入侵的危险。&lt;/p&gt;&lt;p&gt;由于这个漏洞有较大危害，所以我这里就不放出代码了。&lt;/p&gt;&lt;h3 id=&quot;获取手机安装的-app-信息&quot;&gt;获取手机安装的 APP 信息&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:598px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:58.80000000000001%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaklEQVQoz01SS67CMAzsDtHSljqu7TifkuMgISRgAfc/yRMdCb1ZJU4mM+O4K6WklGqtZjZN0zzP4zj2fT8MwziO0zQNw3A8HlGZ5/l0OvV9fzgcrtdrJyIxxhCCqsYd67rqDjMTkXWHmaWUUGdmVb3dbl0Iwd3XdWXmlFKMkYhUtZSCh8xsXdcQAjSICNsvGWcxxpTStm0guHvZQUS11m3bcs4isu1w92VZ3u93l3MupZgZwkO8lOI7YLLWijpkcs5E9Hg8uvP5jFQiQkTMjEvMDHsi8ouKorvP83y/3zsVMTNmRio0AzTomBntQM9wxMyv16tzdxFxd2Tbtg1vtdZqre4Ofs7Z3VNKuK+qX/LPp5mhT2h7ztnMQgi1VqwBEWmtMfPz+fySUVqWhYjgVlWxRYoQwrIscAQxZsZXKboN5ZQSwsPwb2BKKf8HiYi+E/abzV9y0LCOMbbWENjMLpeLu7fWVPXz+fwBoZdItTCBq9EAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/c95939670b0b006046c135ed9d9955ea/1e0be/wormhole-2.webp 250w,/static/c95939670b0b006046c135ed9d9955ea/b0a15/wormhole-2.webp 500w,/static/c95939670b0b006046c135ed9d9955ea/83245/wormhole-2.webp 598w&quot; sizes=&quot;(max-width: 598px) 100vw, 598px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/c95939670b0b006046c135ed9d9955ea/63868/wormhole-2.png 250w,/static/c95939670b0b006046c135ed9d9955ea/0b533/wormhole-2.png 500w,/static/c95939670b0b006046c135ed9d9955ea/0c69d/wormhole-2.png 598w&quot; sizes=&quot;(max-width: 598px) 100vw, 598px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/c95939670b0b006046c135ed9d9955ea/0c69d/wormhole-2.png&quot; alt=&quot;图1.获取手机安装的APP&quot; title=&quot;图1.获取手机安装的APP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;获取-gps-地理位置&quot;&gt;获取 GPS 地理位置&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:596px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:9.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAVElEQVQI1yXKSQoAMQhEUTfGss0kAQlZeP9jNiRv96mizNx7Z+Y5Z84JoNaql5l9l7sDMLM3tdbek/waY0TEWisieu98iUgphZlVlZkBvBQRVSWiH6SzBcVTEIGKAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/a595add400ed208a0eec02949a6227d5/1e0be/wormhole-3.webp 250w,/static/a595add400ed208a0eec02949a6227d5/b0a15/wormhole-3.webp 500w,/static/a595add400ed208a0eec02949a6227d5/3cb93/wormhole-3.webp 596w&quot; sizes=&quot;(max-width: 596px) 100vw, 596px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/a595add400ed208a0eec02949a6227d5/63868/wormhole-3.png 250w,/static/a595add400ed208a0eec02949a6227d5/0b533/wormhole-3.png 500w,/static/a595add400ed208a0eec02949a6227d5/699b7/wormhole-3.png 596w&quot; sizes=&quot;(max-width: 596px) 100vw, 596px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/a595add400ed208a0eec02949a6227d5/699b7/wormhole-3.png&quot; alt=&quot;图3.获取 GPS 地理位置&quot; title=&quot;图3.获取 GPS 地理位置&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;其他&quot;&gt;其他&lt;/h3&gt;&lt;p&gt;我还尝试打开任意网页和添加联系人的功能，但由于对 java 的理解有限，不能很好解读代码，其他的功能就不演示了。&lt;/p&gt;&lt;h2 id=&quot;可能的利用方法&quot;&gt;可能的利用方法&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;扫描 IP&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;在网站中插入恶意的 JS ，调用 Wormhole&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;扩展阅读&quot;&gt;扩展阅读&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://drops.wooyun.org/papers/10061&quot;&gt;比葫芦娃还可怕的百度全系 APP SDK 漏洞 - WormHole 虫洞漏洞分析报告&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.zhihu.com/question/37124478&quot;&gt;如何评价百度在 SDK 中嵌入后门&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[我是如何去除烦人的泰文字符的]]></title><description><![CDATA[相信你们一定在一些社交网站上看到有人发泰文字符，严重影响了正常的阅读。作为开发者，我们应该采取一些措施解决这个问题。 PHP 首先，我想到的就是在后端处理，数据入库前清除所有泰文字符。至于清除方法，自然是用正则了。从 维基百科 上我们可以得到泰文的 Unicode 范围： U…]]></description><link>https://www.giuem.com/blog/fuck-messy-thai</link><guid isPermaLink="false">https://www.giuem.com/blog/fuck-messy-thai</guid><pubDate>Sat, 12 Sep 2015 17:16:36 GMT</pubDate><content:encoded>&lt;p&gt;相信你们一定在一些社交网站上看到有人发泰文字符，严重影响了正常的阅读。作为开发者，我们应该采取一些措施解决这个问题。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:654px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.400000000000006%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABUklEQVQoz5WRvU7DMBSF815MSPQVYEAMbGw8AAMbC+9BNwYGQB1YEEqFIiUqNEkTQkLUBGj+ndhxfW0HtSzQoWq/+Rzdc/UpRV4EfmgaT75nF0UJAN3GKIwBAJ+Gges437OZEGIlAcDyov7OSDTDFWpQjTDGBGPcNAqlUFVtOI1texIEAWNM/kcIAQAMOJ3D8hLwJUIIJUpeLs4ODnf3Bvd35tgM/Y8tZmPx9fhwedLbue5fmbZdI9R1nZRyo3JLqvHz4Pam/zoaaZoWx/EWZWCco7SjDUK1YRiWZW0xu8jyJMmbZILLT8f1NE3jnEsp6ZL15hRK2XzOpZAAPIqi4XBYliUhJAiCMAwppX/TmOAKVQtVhBCMFS46znlWIACR55mqqo7jxHHsum4URSvaFs4YA85/hSmWqR8f9c5P99/frLaluq6rqur7vud5aZqu//kHKk1toCwPmx0AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/1720dfc335d4a1b0e62a1dac506e86c2/1e0be/20150912172318.webp 250w,/static/1720dfc335d4a1b0e62a1dac506e86c2/b0a15/20150912172318.webp 500w,/static/1720dfc335d4a1b0e62a1dac506e86c2/d7085/20150912172318.webp 654w&quot; sizes=&quot;(max-width: 654px) 100vw, 654px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/1720dfc335d4a1b0e62a1dac506e86c2/63868/20150912172318.png 250w,/static/1720dfc335d4a1b0e62a1dac506e86c2/0b533/20150912172318.png 500w,/static/1720dfc335d4a1b0e62a1dac506e86c2/68e9c/20150912172318.png 654w&quot; sizes=&quot;(max-width: 654px) 100vw, 654px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/1720dfc335d4a1b0e62a1dac506e86c2/68e9c/20150912172318.png&quot; alt=&quot;图1.泰文&quot; title=&quot;图1.泰文&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;php&quot;&gt;PHP&lt;/h2&gt;&lt;p&gt;首先，我想到的就是在后端处理，数据入库前清除所有泰文字符。至于清除方法，自然是用正则了。从&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%B3%B0%E6%96%87%E5%AD%97&quot;&gt;维基百科&lt;/a&gt;上我们可以得到泰文的 Unicode 范围：&lt;code&gt;U+0E00–U+0E7F&lt;/code&gt;。不过后来我翻了下 PHP 手册，其实不用写 Unicode 范围，直接使用 &lt;code&gt;Thai&lt;/code&gt;即可。代码大概是这样：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;function fuckThai($str){
    return preg_replace(&amp;#x27;/\p{Thai}/u&amp;#x27;,&amp;#x27;&amp;#x27;,$str);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;或者是&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;function fuckThai($str){
    return preg_replace_callback(&amp;#x27;/\p{Thai}/u&amp;#x27;,
        function(){
            return &amp;#x27;&amp;#x27;;
    },$str);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用的话就是&lt;code&gt;fuckThai(&amp;#x27;泰文&amp;#x27;)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;这样一劳永逸，不过如果网站有泰国的用户就不太好了。。&lt;/p&gt;&lt;h2 id=&quot;css&quot;&gt;CSS&lt;/h2&gt;&lt;p&gt;用 CSS 也是可以解决的，不过不太完美，只能让泰文字符不“乱飞”。&lt;/p&gt;&lt;p&gt;具体效果如图：（红色边框是我为了更好显示特意加上去的）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:401px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:37.6%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAUklEQVQY09WNMQ6AIAwA+/+vyWIRWqs0cdDEkQfQujpimLzcejlQxCMlRVScT+ZL5C7Fau0RmPIu20okTHmJUwgYo7fWI/gAYO724ls8dP5n/ACqrtYA6JnrZwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/f6eabcf7f183ee0db29554c7ebb89c0b/1e0be/20150912174023.webp 250w,/static/f6eabcf7f183ee0db29554c7ebb89c0b/b3c31/20150912174023.webp 401w&quot; sizes=&quot;(max-width: 401px) 100vw, 401px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/f6eabcf7f183ee0db29554c7ebb89c0b/63868/20150912174023.png 250w,/static/f6eabcf7f183ee0db29554c7ebb89c0b/9144d/20150912174023.png 401w&quot; sizes=&quot;(max-width: 401px) 100vw, 401px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/f6eabcf7f183ee0db29554c7ebb89c0b/9144d/20150912174023.png&quot; alt=&quot;图2.css去除泰文&quot; title=&quot;图2.css去除泰文&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;方法很简单，给对应元素加上 &lt;code&gt;overflow: hidden&lt;/code&gt; 的 CSS 即可。&lt;/p&gt;&lt;h2 id=&quot;最后&quot;&gt;最后&lt;/h2&gt;&lt;p&gt;如果我们想在浏览贴吧时不被这些泰文烦恼，我们可以写一个 &lt;code&gt;油猴&lt;/code&gt; 脚本对内容就行处理，思路同上面的&lt;a href=&quot;#PHP&quot;&gt;PHP&lt;/a&gt;，具体代码我这里就不写了。其实是没写过油猴的，不会写（逃&lt;/p&gt;&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://php.net/manual/zh/regexp.reference.unicode.php&quot;&gt;PHP:Unicode 字符属性&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[纯 CSS 实现小三角形]]></title><description><![CDATA[最近写 CSS 时正好需要一个小三角形来修饰 tooltip。尝试几种写法都不太满意，因为我的需要的三角形是没有颜色但有边框的，后来果断选择使用  border…]]></description><link>https://www.giuem.com/blog/css-arrow</link><guid isPermaLink="false">https://www.giuem.com/blog/css-arrow</guid><pubDate>Mon, 22 Jun 2015 21:32:05 GMT</pubDate><content:encoded>&lt;p&gt;最近写 CSS 时正好需要一个小三角形来修饰 tooltip。尝试几种写法都不太满意，因为我的需要的三角形是没有颜色但有边框的，后来果断选择使用 &lt;code&gt;border&lt;/code&gt; 实现。&lt;/p&gt;&lt;p&gt;先上效果图：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:260px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:32.4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABJUlEQVQY0z2QS27CMBCGORi9BD0FN2FfIRYcodANq0YqEqtWVRFSqNoFqnCjWBASJ7ZJGj9mPFXo41uMZvPr/2Z63nvnnEeE8xmKgqyltu2mMdg0oLU/nTyivwAA/wsA9BCRiAKR1zo0zQdjq9XqPope1uuUc2ctSRmIwgUACCEQ0W+Yc349GNzO5wTgtc7LMuX8M0kOx8xYGxAFY5VSQhRSKq1kyjuMdQjQm0wmV/3+zXgMWsPhgEphJYPWKGWbZXWalrudqKosO2an3FojyjLPc+dc1zwajYbD4XQ6tca8x/HT43McvyYsUZV8224fouhuNlsul4vFgjHmnLuc+KdtjNlsNvv9PoQgRFGIsm6a5qv1Hpz357oWQqhOWxhjfh4Gf3wDkmxGIqTDFVsAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/0f03d07f2c81504c8b6d93a333c46ef5/1e0be/20150622213904.webp 250w,/static/0f03d07f2c81504c8b6d93a333c46ef5/079c7/20150622213904.webp 260w&quot; sizes=&quot;(max-width: 260px) 100vw, 260px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/0f03d07f2c81504c8b6d93a333c46ef5/63868/20150622213904.png 250w,/static/0f03d07f2c81504c8b6d93a333c46ef5/86c28/20150622213904.png 260w&quot; sizes=&quot;(max-width: 260px) 100vw, 260px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/0f03d07f2c81504c8b6d93a333c46ef5/86c28/20150622213904.png&quot; alt=&quot;图1.效果图&quot; title=&quot;图1.效果图&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;没错，这就是我那个写了很久的评论系统（其实是因为偷懒）。&lt;/p&gt;&lt;h2 id=&quot;问题思考&quot;&gt;问题思考&lt;/h2&gt;&lt;p&gt;开头已经说过，我使用的是 &lt;code&gt;border&lt;/code&gt;，但 &lt;code&gt;border&lt;/code&gt; 不能设置边框（就是周围那一圈），有什么办法解决呢？&lt;/p&gt;&lt;p&gt;刚开始时，我想不出办法，于是想用特殊符号 &lt;code&gt;▼&lt;/code&gt; 结合 &lt;code&gt;text-shadow&lt;/code&gt; 实现，但这个三角形太丑了，而且和字体有关，所以这个方案被我舍去了。&lt;/p&gt;&lt;p&gt;后来仔细一想：我可以用两个 &lt;code&gt;border&lt;/code&gt; 实现啊，第一个和第二个上下间距为 &lt;code&gt;1px&lt;/code&gt;，上面覆盖下面，下面那个颜色为边框颜色，不就可以了。尝试之，果然可以！&lt;/p&gt;&lt;h2 id=&quot;代码&quot;&gt;代码&lt;/h2&gt;&lt;p&gt;因为我有洁癖，就是尽可能少写 HTML，所以三角形功能用的是 CSS 伪类 &lt;code&gt;::before&lt;/code&gt; 和 &lt;code&gt;::after&lt;/code&gt;。这样代码会多出几行，其实你们可以将伪类改为元素。&lt;/p&gt;&lt;h3 id=&quot;html&quot;&gt;HTML&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;div class=&amp;quot;tooltip&amp;quot;&amp;gt;This is a tooltip.&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;css&quot;&gt;CSS&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;.tooltip {
  background-color: #fff;
  border: 1px solid #eee;
  position: relative;
  max-width: 300px;
  padding: 10px;
}
.tooltip::before {
  position: absolute;
  color: #eee;
  width: 0;
  height: 0;
  content: &amp;#x27;&amp;#x27;;
  border-width: 5px 4px 0;
  border-style: solid;
  border-left-color: transparent;
  border-right-color: transparent;
  bottom: -5px;
  left: 10px;
}
.tooltip::after {
  position: absolute;
  color: #fff;
  width: 0;
  height: 0;
  content: &amp;#x27;&amp;#x27;;
  border-width: 5px 4px 0;
  border-style: solid;
  border-left-color: transparent;
  border-right-color: transparent;
  bottom: -4px;
  left: 10px;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;为了方便显示，这里的 tooltip 的 &lt;code&gt;position&lt;/code&gt; 是 &lt;code&gt;relative&lt;/code&gt;，我在实际使用中是 &lt;code&gt;absolute&lt;/code&gt; + JavaScript 计算地址修改 &lt;code&gt;top&lt;/code&gt; 和 &lt;code&gt;left&lt;/code&gt;。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[说说 CloudXNS，一个免费DNS解析服务]]></title><description><![CDATA[使用 CloudXNS 已有 3 个多月了，还记得当初是看到 TYPCN 在博客上的推荐，才“入坑”的。 0x00 为什么是 CloudXNS？ 随着网络的发展，用户处在不同的运营商网络中，当用户跨运营商跨地区访问的时候，智能 DNS…]]></description><link>https://www.giuem.com/blog/cloudxns-dns</link><guid isPermaLink="false">https://www.giuem.com/blog/cloudxns-dns</guid><pubDate>Fri, 19 Jun 2015 19:17:08 GMT</pubDate><content:encoded>&lt;p&gt;使用 CloudXNS 已有 3 个多月了，还记得当初是看到 TYPCN 在博客上的推荐，才“入坑”的。&lt;/p&gt;&lt;h2 id=&quot;0x00-为什么是-cloudxns&quot;&gt;0x00 为什么是 CloudXNS？&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;随着网络的发展，用户处在不同的运营商网络中，当用户跨运营商跨地区访问的时候，智能 DNS 平台使访问网站的联通用户访问联通的服务器，电信的用户访问电信的服务器，提升网站速率。
CloudXNS 是在传统 DNS 系统上加入策略解析后的高级智能 DNS 系统，可以判断用户来源，就近访问调度。
不但拥有主流 DNS 产品的全部功能，而且扩展有自己独有的解析记录类型，在解析速度方面也明显优于国内其他同类产品，它的解析速度比传统 DNS 快两到三倍，DNS 配置生效更快，可做到实时生效。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;详情：&lt;a href=&quot;https://www.cloudxns.net/Index/AboutXns.html&quot;&gt;了解 XNS:选择 CloudXNS 的九大优势&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;0x01-cloudxns-拥有众多线路&quot;&gt;0x01 CloudXNS 拥有众多线路&lt;/h2&gt;&lt;p&gt;因为我目前只是一个小博客，暂时没有这方面的需求，所以这个功能对我来说用处并不是很大。但是因为它，使我的博客在备案期间&lt;code&gt;伪关站&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;我将线路切换到 &lt;code&gt;海外默认&lt;/code&gt; 和 &lt;code&gt;搜索引擎默认&lt;/code&gt; 保证了搜索引擎的正常抓取以及部分有特殊上网技巧的人可以访问的我博客。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:861px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:89.20000000000002%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABvklEQVQ4y3VT7XLDIAzb+z/oGtI22JgPmwDZGWibbp1+5HK5yJIt+6u1dnSI8LquIlJKAWtDCIjovSeifSDn/si11tZarfXrRJb7/T7IRBRjdM6FDiItQUTee0Tc932Sa2u1TbIxa2IupSBiCH7QvPcAAAjOOSJKzK1DySm3W1B5EV6MSZzUNtihpJLO5SwTzMdxfLTNZllmzwBEBKBqAJg6iCh3wy/lc8+X7+8UY60V+qh6CY+Aatg5sFZyPo7jRR4eWms5izGGmZUMkHNu73j++YEsItfrVSSXUsactemg4z1z3pSftjklY8zoedu27lRLOIU6R0Ty3lq77/sY24nMvCwL96jGwBA1m5FQjFGfISJieU475nbzWoGZL5dLShqVtRqVBVA1ouOBvz23Uqfy07bdNlKfbiyWiIy0Sin/RmXMtD0EN2sfLxsibvf776he5EfPtaptZs56BbnUKiK5b1k5pfWes8iqUU3bKaXBSSk9Bc6dT+X2sL2uK/NcT+8JtGm3bVsIIaU0Lsx7/yGqLGJWM6OyEPp6jpzGbRE57zX212HIPq+q7PvtduN+cWM9YowhBO6X9GvJxpcfwKQW988cmf4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/38543d2ef15cb7da8e9a4d98a4c0a23a/1e0be/20150619193545.webp 250w,/static/38543d2ef15cb7da8e9a4d98a4c0a23a/b0a15/20150619193545.webp 500w,/static/38543d2ef15cb7da8e9a4d98a4c0a23a/16d1d/20150619193545.webp 861w&quot; sizes=&quot;(max-width: 861px) 100vw, 861px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/38543d2ef15cb7da8e9a4d98a4c0a23a/63868/20150619193545.png 250w,/static/38543d2ef15cb7da8e9a4d98a4c0a23a/0b533/20150619193545.png 500w,/static/38543d2ef15cb7da8e9a4d98a4c0a23a/e35ec/20150619193545.png 861w&quot; sizes=&quot;(max-width: 861px) 100vw, 861px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/38543d2ef15cb7da8e9a4d98a4c0a23a/e35ec/20150619193545.png&quot; alt=&quot;图1.解析线路&quot; title=&quot;图1.解析线路&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;0x02-cloudxns-提供实时宕机报警并且可以智能切换节点&quot;&gt;0x02 CloudXNS 提供实时宕机报警，并且可以智能切换节点&lt;/h2&gt;&lt;p&gt;我在用 Gitcafe Page 的时候，他们提供服务器经常宕机，多亏 CloudXNS 让我可以及时了解服务器动态（不过我那时并没有在 GitHub Page 上搭建备用博客，所以没有尝试智能切换）&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:806px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:62%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA/UlEQVQoz5XSsU7DMBCA4bw+j5CxQkIMzJCJZ0gGUJslAppA6tg+++w7O1ExpDBUqKLpN/u37LMz3b7268fn9dNmU1dVVde1lFIsk6mX6vbhanV3f3O9yvO8KAoAGIZBCLE7RQjRNE1Zlm/bbSaNkh69I0/EzERkjJFSIuI0TeMp8UAplVkwu/6j67oQgveeZ2SNDSGkfxljMgCw1iK6GGMIgZmnaUoLAMAcM3OMkQ7H/jyyKEZE0PMW4zimxX5jrVXbts4zhREdcYgXxDSvjwpQajsoi54viBERnXvvlXWUUjp32aNYa/0zm/3+/JD+PpVSyns/j5ou8/1JvgAgnLHF2XjZJQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/08339d6962d20a6e475a41924cbe4193/1e0be/20150619194323.webp 250w,/static/08339d6962d20a6e475a41924cbe4193/b0a15/20150619194323.webp 500w,/static/08339d6962d20a6e475a41924cbe4193/e94a4/20150619194323.webp 806w&quot; sizes=&quot;(max-width: 806px) 100vw, 806px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/08339d6962d20a6e475a41924cbe4193/63868/20150619194323.png 250w,/static/08339d6962d20a6e475a41924cbe4193/0b533/20150619194323.png 500w,/static/08339d6962d20a6e475a41924cbe4193/764be/20150619194323.png 806w&quot; sizes=&quot;(max-width: 806px) 100vw, 806px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/08339d6962d20a6e475a41924cbe4193/764be/20150619194323.png&quot; alt=&quot;图2.宕机报警&quot; title=&quot;图2.宕机报警&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;0x03-统计数据全面&quot;&gt;0x03 统计数据全面&lt;/h2&gt;&lt;p&gt;这是我今天（2015/6/19）的解析统计：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.800000000000004%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABA0lEQVQoz42PS07EMBBEcwGQOANbLsWJWAFbFpyCC0Gcidt2bMeTSVWjnjAaPrNAapWe3VXtdnf3Wm9f6tVjvn76b9085+5hun9rnZ/h8mGosCr4DRePFa4gLexUqYTpufSb4gT8A9qBXPZ7Ks0IcBt2WEhFnSA9sWJdrbU0zAUgS0JJVO2ouubAyTNHxp3pJBjfmUaIg+8pPWRg8gyO/t1UHINTYAsn+p6+t3fM7cwdBoQB4hh3NmWD4yWDzVLyGC5Jw7D1NO42t56sF+Ectg/4D1tGbEk9wbHcT3BfkEYLr0COgloONWcZMdclT0VGtrmlWMSzzXMMNRjUIHMUgyittU/PPe8AO8QF6QAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/e43f92d6bbaef5d4ed66f7aa42546c71/1e0be/20150619201709.webp 250w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/b0a15/20150619201709.webp 500w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/a5d4d/20150619201709.webp 1000w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/11814/20150619201709.webp 1059w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/e43f92d6bbaef5d4ed66f7aa42546c71/63868/20150619201709.png 250w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/0b533/20150619201709.png 500w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/00d43/20150619201709.png 1000w,/static/e43f92d6bbaef5d4ed66f7aa42546c71/1be7e/20150619201709.png 1059w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/e43f92d6bbaef5d4ed66f7aa42546c71/00d43/20150619201709.png&quot; alt=&quot;图3.解析统计&quot; title=&quot;图3.解析统计&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;按运营商查看：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.599999999999994%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA9klEQVQoz42QwUoDMRCG90U8Fh9C38DHk3pbXK+9WA+t9ehNDyKiFUWhFA/tKtu13Z1k02T+qdmISrtIh2FI/uTjC4n2Onq/o1rHZSuhLXv3hHZiOjjTETvnrBURgAXYnGv9G4pEHqMF7i79jhl12jg3K2IRm01xesjBXvONc62+YTdL0Y/ZaIwe/vE3mBHgQcKzlLtHtZ+3NXs4m+Ii4c8PHiSoFIZX+FGFxR9zTYUsfFj+Lv0YeYrzGNkE3TZUIdc9f05zf49t87NFxFJRPt86XVav96zJjB4dLfTTDRtt3l5cpavJ2BhD89wujaFiaa1S6su8Au7G8zYMWiHNAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/fa317c880046cab8a441b3f6b333cd07/1e0be/20150619201855.webp 250w,/static/fa317c880046cab8a441b3f6b333cd07/b0a15/20150619201855.webp 500w,/static/fa317c880046cab8a441b3f6b333cd07/a5d4d/20150619201855.webp 1000w,/static/fa317c880046cab8a441b3f6b333cd07/525da/20150619201855.webp 1039w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/fa317c880046cab8a441b3f6b333cd07/63868/20150619201855.png 250w,/static/fa317c880046cab8a441b3f6b333cd07/0b533/20150619201855.png 500w,/static/fa317c880046cab8a441b3f6b333cd07/00d43/20150619201855.png 1000w,/static/fa317c880046cab8a441b3f6b333cd07/22475/20150619201855.png 1039w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/fa317c880046cab8a441b3f6b333cd07/00d43/20150619201855.png&quot; alt=&quot;图4.解析统计-运营商&quot; title=&quot;图4.解析统计-运营商&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;0x04-cloudxns-提供免费的-cdn-服务&quot;&gt;0x04 CloudXNS 提供免费的 CDN 服务&lt;/h2&gt;&lt;p&gt;MX 和 CNAME 记录是不能共存的，如果我想在裸域上使用 CDN 又不影响邮箱服务，很明显是不大可能的。&lt;/p&gt;&lt;p&gt;但是 CloudXNS 提供的 CDN 就完美的解决了问题。&lt;/p&gt;&lt;p&gt;点击启用：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:4.4%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAIAAABR8BlyAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAM0lEQVQI1x3BAQ4AIQgDsPv/bw2TIHPsEtvP9nmkGxHzdLekzASAvUlKIumZWMgWjqvqB/xjOoVlWMm9AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/ca8521776448f5f1d639c3adf9198054/1e0be/20150619195945.webp 250w,/static/ca8521776448f5f1d639c3adf9198054/b0a15/20150619195945.webp 500w,/static/ca8521776448f5f1d639c3adf9198054/a5d4d/20150619195945.webp 1000w,/static/ca8521776448f5f1d639c3adf9198054/c139f/20150619195945.webp 1050w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/ca8521776448f5f1d639c3adf9198054/63868/20150619195945.png 250w,/static/ca8521776448f5f1d639c3adf9198054/0b533/20150619195945.png 500w,/static/ca8521776448f5f1d639c3adf9198054/00d43/20150619195945.png 1000w,/static/ca8521776448f5f1d639c3adf9198054/e996b/20150619195945.png 1050w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/ca8521776448f5f1d639c3adf9198054/00d43/20150619195945.png&quot; alt=&quot;图5.CDN&quot; title=&quot;图5.CDN&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;设置页面：&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:830px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:94.8%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACR0lEQVQ4y41Ty2oUQRTtX/cjFFcuXLgTnKwMGCTpnhiDIZLBaGQiGdQk3T1T71vvritVPYZM4oAHqqsa6p5zH6eq+Xw+O5stFou2bW//Dzc3t4SQo6OjSghJKU0ZQ9qOYRhiCHFIEWTYeY7nh8fHx5VSqu97KSUopZTknBmtlRScc4C8M0oZY957REx5DfR26Yyv64PKMqaur6HvLaF6uRK/f6m2V0yBtVobsAGslUoZ610swYg+5b2u64qB6ZhYtOKi9VfE95S11HYqdVJ1FDqFPZiWipbqVmJMiCkNkiLGg7qppFQGxM5FfFLj66+Zchj5H6MIooX45imeTw/qaa6ZC66UYowxzqUQhBDOBaV0uVxSyh60EVNahgQ57SYHG2MK7zbFTWVn4u5LnJ/ktAFym22B1kYXjIzGGAAwxmwIxyCvLiNnY82y7zouuHMuXy/xAGBt/hmDN/SHqC6/R0bWaZPVylhTEs9mGLGZ79ooCXGweth7hT9Oc8MAgDFmso7JRISsMkiMcXvtufh1zZTS8K+r46X7Fs1jBhkmz3D3Rb33rrLWcs4pJYRmH3K2xoqssmcBEB9OIcWAiE3TVFprqeRQqk33viGEWPDIJHqYTvDT2+b93tokAHA3ISEEaH039k2LYAo+Lr5he1Xv71dlvNo7552zzoUQrLXe+62eiSH9vMB+8fHDYVamlIS/8COcz3TjsRycczGWd2EgNBM82f3y+bQyxkgpc6oAUirO1y3jQowNE0IIKbgQrjzpbJPigtls9gcY4zsbum+s8AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/fca055f642b9f0796de2e8b04e8a807e/1e0be/20150619200117.webp 250w,/static/fca055f642b9f0796de2e8b04e8a807e/b0a15/20150619200117.webp 500w,/static/fca055f642b9f0796de2e8b04e8a807e/b2a51/20150619200117.webp 830w&quot; sizes=&quot;(max-width: 830px) 100vw, 830px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/fca055f642b9f0796de2e8b04e8a807e/63868/20150619200117.png 250w,/static/fca055f642b9f0796de2e8b04e8a807e/0b533/20150619200117.png 500w,/static/fca055f642b9f0796de2e8b04e8a807e/715a3/20150619200117.png 830w&quot; sizes=&quot;(max-width: 830px) 100vw, 830px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/fca055f642b9f0796de2e8b04e8a807e/715a3/20150619200117.png&quot; alt=&quot;图6.CDN设置&quot; title=&quot;图6.CDN设置&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;0x005-end&quot;&gt;0x005 END&lt;/h2&gt;&lt;p&gt;本文只是介绍我目前所使用到的功能，想了解更多 CloudXNS 的功能（如：利用 CNAMEX 实现多 CDN），请访问&lt;a href=&quot;https://www.cloudxns.net/&quot;&gt;官网&lt;/a&gt;。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[也谈最近PHP的漏洞 CVE-2015-4024]]></title><description><![CDATA[5.20 本是一个对于我来说十分宁静的日子，然而就当我在 V2EX 瞎逛的时候，发现了一个令我 高潮 的贴子  宇宙最强语言 PHP 爆出 DoS 漏洞,可以直接灌满 CPU ，我 X！这是什么鬼！ 进去一看，原来是 PHP 最新的 DoS 漏洞，想了解详情移步： https…]]></description><link>https://www.giuem.com/blog/php-bug-cve-2015-4024</link><guid isPermaLink="false">https://www.giuem.com/blog/php-bug-cve-2015-4024</guid><pubDate>Sat, 23 May 2015 18:58:34 GMT</pubDate><content:encoded>&lt;p&gt;5.20 本是一个对于我来说十分宁静的日子，然而就当我在 V2EX 瞎逛的时候，发现了一个令我&lt;del&gt;高潮&lt;/del&gt;的贴子 &lt;a href=&quot;https://www.v2ex.com/t/192338&quot;&gt;宇宙最强语言 PHP 爆出 DoS 漏洞,可以直接灌满 CPU&lt;/a&gt;，我 X！这是什么鬼！&lt;/p&gt;&lt;p&gt;进去一看，原来是 PHP 最新的 DoS 漏洞，想了解详情移步：&lt;a href=&quot;https://bugs.php.net/bug.php?id=69364&quot;&gt;https://bugs.php.net/bug.php?id=69364&lt;/a&gt;，本文不再说明漏洞产生原因。&lt;/p&gt;&lt;h2 id=&quot;利用&quot;&gt;利用&lt;/h2&gt;&lt;p&gt;本来想等回家了再写个利用脚本，没想到 typcn 当天就写出来了。那么，我们就使用他的代码吧。据说，利用这个 BUG 10M 带宽就可以崩掉集群。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/typcn/php-load-test&quot;&gt;GitHub&lt;/a&gt; | &lt;a href=&quot;http://blog.eqoe.cn/posts/php-load-test.html&quot;&gt;PHP 压力测试脚本 - 10M 带宽秒杀集群&lt;/a&gt;&lt;/p&gt;&lt;h3 id=&quot;适用-php-版本&quot;&gt;适用 PHP 版本：&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;PHP 5.6.9 以下版本&lt;/li&gt;&lt;li&gt;PHP 5.5.25 以下版本&lt;/li&gt;&lt;li&gt;PHP 5.4.41 以下版本&lt;/li&gt;&lt;li&gt;PHP 5.3 及所有以前的版本&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;使用方法&quot;&gt;使用方法&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;python xxx.py -t &amp;quot;地址&amp;quot; -x &amp;quot;线程数&amp;quot; -r &amp;quot;350000&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;PS: 用自家网络攻击可能效果不明显，我家上行 2M 打了 sae 半天都没反应。。线程一般 50 - 100 就行，太高电脑直接卡了。&lt;/p&gt;&lt;h2 id=&quot;修复&quot;&gt;修复&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;升级 PHP 版本，具体请看&lt;a href=&quot;https://php.net/&quot;&gt;PHP 官网&lt;/a&gt;。&lt;/li&gt;&lt;li&gt;如果你使用虚拟主机，可以提醒主机商升级。&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;拓展&quot;&gt;拓展&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://drops.wooyun.org/papers/6077&quot;&gt;PHP multipart/form-data 远程 DOS 漏洞&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;扯淡以下内容与本文无关&quot;&gt;扯淡（以下内容与本文无关）&lt;/h2&gt;&lt;p&gt;最近我又开始想换博客程序了，挺看好 Ghost 的，但虚拟主机支持 Node.js 好像很少吧？就国内那几个 PaaS 平台。然后，我又想把网站备案了，迁入国内服务器，真是太纠结了。。。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[PHP中“==”的一些坑]]></title><description><![CDATA[PHP 是弱类型的语言，会自动进行数据类型转换，这无疑给我们的开发带来了极大的方便。可事实真是如此吗？今天我们就从 == 说起。 栗子 首先，看一下这段代码。猜猜看结果会是什么 一眼看过，很明显肯定都是 false 吧，但运行代码后发现全是 true ！ WTF…]]></description><link>https://www.giuem.com/blog/php-hack-equality-sign</link><guid isPermaLink="false">https://www.giuem.com/blog/php-hack-equality-sign</guid><pubDate>Sat, 09 May 2015 21:14:35 GMT</pubDate><content:encoded>&lt;p&gt;PHP 是弱类型的语言，会自动进行数据类型转换，这无疑给我们的开发带来了极大的方便。可事实真是如此吗？今天我们就从&lt;code&gt;==&lt;/code&gt;说起。&lt;/p&gt;&lt;h2 id=&quot;栗子&quot;&gt;栗子&lt;/h2&gt;&lt;p&gt;首先，看一下这段代码。猜猜看结果会是什么&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
var_dump(md5(&amp;#x27;240610708&amp;#x27;) == md5(&amp;#x27;QNKCDZO&amp;#x27;));
var_dump(md5(&amp;#x27;aabg7XSs&amp;#x27;) == md5(&amp;#x27;aabC9RqS&amp;#x27;));
var_dump(sha1(&amp;#x27;aaroZmOk&amp;#x27;) == sha1(&amp;#x27;aaK1STfY&amp;#x27;));
var_dump(sha1(&amp;#x27;aaO8zKZF&amp;#x27;) == sha1(&amp;#x27;aa3OFF9m&amp;#x27;));
var_dump(&amp;#x27;0010e2&amp;#x27; == &amp;#x27;1e3&amp;#x27;);
var_dump(&amp;#x27;0x1234Ab&amp;#x27; == &amp;#x27;1193131&amp;#x27;);
var_dump(&amp;#x27;0xABCdef&amp;#x27; == &amp;#x27; 0xABCdef&amp;#x27;);

var_dump(0 == &amp;#x27;abcdefg&amp;#x27;);
var_dump(1 == &amp;#x27;1abcdef&amp;#x27;);
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;一眼看过，很明显肯定都是&lt;code&gt;false&lt;/code&gt;吧，但运行代码后发现全是&lt;code&gt;true&lt;/code&gt;！&lt;/p&gt;&lt;p&gt;&lt;strong&gt;WTF!&lt;/strong&gt;&lt;/p&gt;&lt;h2 id=&quot;为什么会这样&quot;&gt;为什么会这样&lt;/h2&gt;&lt;p&gt;开头我已经说过了，PHP 是弱类型的语言。使用&lt;code&gt;==&lt;/code&gt;对比两个变量时，当有一个变量为整数，另外一个变量也会转换为整数。这也就解释了，为什么&lt;code&gt;0 == &amp;#x27;abcdefg&amp;#x27;&lt;/code&gt;和&lt;code&gt;1 == &amp;#x27;1abcdef&amp;#x27;&lt;/code&gt;会成立。&lt;/p&gt;&lt;p&gt;但是，其他的代码呢？字符串难道还会转换？&lt;/p&gt;&lt;p&gt;PHP 手册上为我们提供了解释说明。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;也就是说，如果你比较的两个字符串涉及到数字（如：&lt;code&gt;&amp;quot;0&amp;quot;&lt;/code&gt;），那么每个字符串都会转换成数字。&lt;/p&gt;&lt;p&gt;在这里，我不得不说：PHP 是最好的语言！&lt;/p&gt;&lt;h2 id=&quot;危害&quot;&gt;危害&lt;/h2&gt;&lt;p&gt;当我们的网站是直接&lt;code&gt;MD5&lt;/code&gt;或&lt;code&gt;Sha1&lt;/code&gt;加密而没有加盐，碰巧某用户密码加密涉及到数字，那么就有可能被碰撞破解！&lt;/p&gt;&lt;h2 id=&quot;解决&quot;&gt;解决&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;在开发过程中尽可能避免使用&lt;code&gt;==&lt;/code&gt;判断两个变量的值&lt;/li&gt;&lt;li&gt;密码加密最好使用&lt;code&gt;password_hash()&lt;/code&gt;或者加盐&lt;code&gt;md5($pwd.$salt)&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;参考--拓展阅读&quot;&gt;参考 &amp;amp;&amp;amp; 拓展阅读&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.v2ex.com/t/188364&quot;&gt;PHP 探测任意网站密码明文/加密手段办法： md5(&amp;#x27;240610708&amp;#x27;) == md5(&amp;#x27;QNKCDZO&amp;#x27;)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=9484757&quot;&gt;PHP: md5(&amp;#x27;240610708&amp;#x27;) == md5(&amp;#x27;QNKCDZO&amp;#x27;) | Hacker News&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://drops.wooyun.org/papers/1409&quot;&gt;WordPress 3.8.2 cookie 伪造漏洞再分析&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://php.net/manual/en/language.operators.comparison.php&quot;&gt;PHP: Comparison Operators - Manual&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[把树莓派变成一个下载机]]></title><description><![CDATA[树莓派入手一段时间了，一直就当成贴吧云签到。最近买了块 1T 移动硬盘，加上家里的 20M 光纤，正好拿来做 NAS。 准备工作 树莓派的电源是带不动移动硬盘的，所以需要一个带有独立电源的 USB HUB。然后我上淘宝买了个绿联的 4 口 USB HUB，18 元包邮。（一条…]]></description><link>https://www.giuem.com/blog/raspberry-pi-download</link><guid isPermaLink="false">https://www.giuem.com/blog/raspberry-pi-download</guid><pubDate>Sat, 04 Apr 2015 15:45:01 GMT</pubDate><content:encoded>&lt;p&gt;树莓派入手一段时间了，一直就当成贴吧云签到。最近买了块 1T 移动硬盘，加上家里的 20M 光纤，正好拿来做 NAS。&lt;/p&gt;&lt;h2 id=&quot;准备工作&quot;&gt;准备工作&lt;/h2&gt;&lt;p&gt;树莓派的电源是带不动移动硬盘的，所以需要一个带有独立电源的 USB HUB。然后我上淘宝买了个绿联的 4 口 USB HUB，18 元包邮。（一条 5 毛，发贴记得删除括号里内容！）&lt;/p&gt;&lt;h2 id=&quot;挂载硬盘&quot;&gt;挂载硬盘&lt;/h2&gt;&lt;h3 id=&quot;格式支持&quot;&gt;格式支持。&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get install ntfs-3g
sudo apt-get install exfat-nofuse
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;挂载&quot;&gt;挂载&lt;/h3&gt;&lt;p&gt;输入 &lt;code&gt;fdisk -l&lt;/code&gt; 查看是否挂载成功。如果成功，你会看到类似下图的信息。
&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:619px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:46%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABUklEQVQoz2WQy7LjIAxEbYgwICEM4mGwk9zF/P83TnmSms3t0kqqVktnSTkz877vWSSEwMwp7TFGKcLMWZL3TmsNAM47MGYzRmu9fDTmrKWUWo4xWms5S28ti9RaxjhEsnOOOSCRdW6z1iPC4/E1n9dVW51zzPMcc7zer/OcHDmlJJKJKMa47zsALL9lnQWAEAKFQETOO4/eGPOZAsC6rkrdZyul9OOxbdvjf7JIqb29f16tVTD3ego0z7ksS2C+npdSChFf75dzlmO8rquU4r0nooXnHlrYj+iz06SBwWWHhbZkuXOoASJo0MaYO/kmZ9Z1/SYff4acUp8lnyJXyWcuz5Jm7u8ud0fiiMbCZgwSIZFzFgm/f53XM0YuN95aas05995SylmktRpjRO9jZCRUWt31T9/wfoyPoR+9tjbm6Ef36L33iGjtzQ8RtVa/af8FkxQaBOm8yRAAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/886f9610baf4d15945fa29a5909e0df3/1e0be/20150404160320.webp 250w,/static/886f9610baf4d15945fa29a5909e0df3/b0a15/20150404160320.webp 500w,/static/886f9610baf4d15945fa29a5909e0df3/3aa79/20150404160320.webp 619w&quot; sizes=&quot;(max-width: 619px) 100vw, 619px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/886f9610baf4d15945fa29a5909e0df3/63868/20150404160320.png 250w,/static/886f9610baf4d15945fa29a5909e0df3/0b533/20150404160320.png 500w,/static/886f9610baf4d15945fa29a5909e0df3/e628c/20150404160320.png 619w&quot; sizes=&quot;(max-width: 619px) 100vw, 619px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/886f9610baf4d15945fa29a5909e0df3/e628c/20150404160320.png&quot; alt=&quot;图1.挂载硬盘&quot; title=&quot;图1.挂载硬盘&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;然后新建一个目录作为挂载点&lt;/p&gt;&lt;pre&gt;&lt;code&gt;mkdir /mnt/nas
nano /etc/fstab
# 在最后一行加入
/dev/sda1 /mnt/nas ntfs-3g defaults,noexec,umask=0000 0 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后重启。&lt;/p&gt;&lt;h2 id=&quot;aria2&quot;&gt;aria2&lt;/h2&gt;&lt;p&gt;我打算使用 aria2 作为下载工具（迅雷渣渣）&lt;/p&gt;&lt;h2 id=&quot;安装&quot;&gt;安装&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;sudo apt-get install aria2 apache2
sudo visudo
# 在底部增加这一行
www-data ALL=(ALL) NOPASSWD: ALL
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;mkdir ~/.aria2
touch ~/.aria2/aria2.session
nano ~/.aria2/aria2.conf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在 &lt;code&gt;aria2.conf&lt;/code&gt; 写这些&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# 下载默认的目录
dir=/mnt/nas
disable-ipv6=true
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
#刚才touch命令的那个文件，路径要绝对路径
input-file=/root/.aria2/aria2.session
#同上，这个文件的作用是保存你的下载列表，不保存的话重启后所有下载都木有了
save-session=/root/.aria2/aria2.session
max-concurrent-downloads=3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;之后运行 &lt;code&gt;aria2c –conf-path=/root/.aria2/aria2.conf&lt;/code&gt; ，没有错误就可以退出了。&lt;/p&gt;&lt;p&gt;把 aria2 做成系统的服务： &lt;code&gt;sudo nano /etc/init.d/aria2c&lt;/code&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

case &amp;quot;$1&amp;quot; in
start)

echo -n &amp;quot;Starting aria2c&amp;quot;
sudo -u root aria2c --conf-path=/root/.aria2/aria2.conf -D
#sudo -u后面的是你正在使用的用户名
;;
stop)

echo -n &amp;quot;Shutting down aria2c &amp;quot;
killall aria2c
;;
restart)

killall aria2c
sudo -u root aria2c --conf-path=/root/.aria2/aria2.conf -D
#同上面的一样，根据自己的用户名改。
;;
esac
exit
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后设置这个文件的权限：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo chmod 755 /etc/init.d/aria2c
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;测试服务是否可以启动：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo service aria2c start
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果只显示 Starting aria2c，没有其他错误提示的话就成功了。&lt;/p&gt;&lt;p&gt;添加 aria2c 服务自动运行：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo update-rc.d aria2c defaults
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Aria2 相关的好了，下面开始网页控制 aria2 下载。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;cd /var/www
git clone https://github.com/binux/yaaw
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个是别人汉化好的，不过在 GitHub 下载速度可能有点慢。&lt;/p&gt;&lt;p&gt;然后访问 ip/yaaw，如我的是 &lt;code&gt;192.168.0.137/yaaw&lt;/code&gt;。就可以开始下载了。&lt;/p&gt;&lt;h3 id=&quot;文件下载测试&quot;&gt;文件下载测试&lt;/h3&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1000px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:9.2%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAPElEQVQI13XMMQrAMAzF0Nz/oN0MgWKT8iu7xJ3zNi0aZgaoAXkGec1Y65H0tuG+2xtQZ1k1b/cISf/uAxE5deU1EyPbAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/50e431b52ab2d5156a5e66a24d0a86b0/1e0be/20150404164825.webp 250w,/static/50e431b52ab2d5156a5e66a24d0a86b0/b0a15/20150404164825.webp 500w,/static/50e431b52ab2d5156a5e66a24d0a86b0/a5d4d/20150404164825.webp 1000w,/static/50e431b52ab2d5156a5e66a24d0a86b0/79a76/20150404164825.webp 1227w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/50e431b52ab2d5156a5e66a24d0a86b0/63868/20150404164825.png 250w,/static/50e431b52ab2d5156a5e66a24d0a86b0/0b533/20150404164825.png 500w,/static/50e431b52ab2d5156a5e66a24d0a86b0/00d43/20150404164825.png 1000w,/static/50e431b52ab2d5156a5e66a24d0a86b0/2bfc7/20150404164825.png 1227w&quot; sizes=&quot;(max-width: 1000px) 100vw, 1000px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/50e431b52ab2d5156a5e66a24d0a86b0/00d43/20150404164825.png&quot; alt=&quot;图2.文件下载测试&quot; title=&quot;图2.文件下载测试&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[PHP判断一个字符串是否是有效的邮箱地址]]></title><description><![CDATA[清明放假回家刚好有一点时间，于是开始写评论系统了。而我本身非常注重程序的安全性，所以自然是要对所有的输入进行检查。做到邮箱检查时，本来想使用正则来判断，但感到非常不优雅，就上 Google 查了些资料。 filter_var 不得不说，这个函数其实我也是今天才见到。在 PHP…]]></description><link>https://www.giuem.com/blog/php-check-if-a-string-is-a-valid-email</link><guid isPermaLink="false">https://www.giuem.com/blog/php-check-if-a-string-is-a-valid-email</guid><pubDate>Sat, 04 Apr 2015 14:19:23 GMT</pubDate><content:encoded>&lt;p&gt;清明放假回家刚好有一点时间，于是开始写评论系统了。而我本身非常注重程序的安全性，所以自然是要对所有的输入进行检查。做到邮箱检查时，本来想使用正则来判断，但感到非常不优雅，就上 Google 查了些资料。&lt;/p&gt;&lt;h2 id=&quot;filter_var&quot;&gt;filter_var&lt;/h2&gt;&lt;p&gt;不得不说，这个函数其实我也是今天才见到。在 PHP 5.2 以上版本才有，不过现在至少都 5.4 了吧。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // invalid emailaddress
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个代码只能检测邮箱地址是否有效，如果我想检测是否存在这个邮箱呢？&lt;/p&gt;&lt;p&gt;办法是有的。&lt;/p&gt;&lt;h2 id=&quot;checkdnsrr&quot;&gt;checkdnsrr&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;checkdnsrr&lt;/code&gt; 函数可以检测主机的 DNS，只要我们检测一下邮箱对应的域名是否有 MX 记录，就能知道这个邮箱是否真实存在了。&lt;/p&gt;&lt;p&gt;其中 domain 还需你自己从邮箱中取出来。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (!checkdnsrr($domain, &amp;#x27;MX&amp;#x27;)) {
    // domain is not valid
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/12026842/how-to-validate-an-email-address-in-php&quot;&gt;How to validate an email address in PHP&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://php.net/manual/en/function.filter-var.php&quot;&gt;PHP: filter_var - Manual&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://php.net/manual/en/function.checkdnsrr.php&quot;&gt;PHP: checkdnsrr - Manual&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[获取Bing每日壁纸用作首屏大图]]></title><description><![CDATA[Bing 搜索每天都会更换一张精美的图片作为壁纸，除了特殊时候不太好看外（比如春节那几天），没多大问题。移动端还有上每日故事，与图片现配。现在我的博客首屏图片就是 Bing 每日壁纸，有没有感觉 B 格满满^ _ ^。本文将介绍如何把 Bing…]]></description><link>https://www.giuem.com/blog/bing-image-get-php</link><guid isPermaLink="false">https://www.giuem.com/blog/bing-image-get-php</guid><pubDate>Tue, 24 Feb 2015 20:46:27 GMT</pubDate><content:encoded>&lt;p&gt;Bing 搜索每天都会更换一张精美的图片作为壁纸，除了特殊时候不太好看外（比如春节那几天），没多大问题。移动端还有上每日故事，与图片现配。现在我的博客首屏图片就是 Bing 每日壁纸，有没有感觉 B 格满满^_^。本文将介绍如何把 Bing 每日壁纸和故事扒到自己博客。&lt;/p&gt;&lt;h2 id=&quot;获取-api-接口&quot;&gt;获取 API 接口&lt;/h2&gt;&lt;p&gt;首先我们进入&lt;a href=&quot;http://bing.com/&quot;&gt;Bing 首页&lt;/a&gt;，会发现自动转到中国版。不过这没关系，中国版更符合国情，速度也比国际版快一些。&lt;/p&gt;&lt;p&gt;通过抓包，可以发现&lt;code&gt;http://www.bing.com/HPImageArchive.aspx?format=js&amp;amp;idx=0&amp;amp;n=1&lt;/code&gt;这里可以获取到无水印的图片。&lt;/p&gt;&lt;p&gt;那每日故事呢？通过模拟 UA，访问移动版。同样发现了 API 接口&lt;code&gt;http://cn.bing.com/cnhp/coverstory/&lt;/code&gt;。不过这里的图片是有水印的。&lt;/p&gt;&lt;p&gt;接口已经得到了，接下来就是写代码了。因为我既想使用无水印的图片，也想获取每日故事，所以我把两个接口结合起来使用。&lt;/p&gt;&lt;h2 id=&quot;代码&quot;&gt;代码&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
/**
  * 获取Bing每日壁纸和故事
  * @author giuem
  */
function bingImgFetch(){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, &amp;#x27;http://www.bing.com/HPImageArchive.aspx?format=js&amp;amp;idx=0&amp;amp;n=1&amp;#x27;);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        &amp;#x27;User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36&amp;#x27;
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $re = curl_exec($ch);
    curl_close($ch);
    $re = json_decode($re,1);//电脑版返回内容
    $re2 = json_decode(file_get_contents(&amp;#x27;http://cn.bing.com/cnhp/coverstory/&amp;#x27;),1);//移动版返回内容
    return array(
        /* 更改图片尺寸，减小体积 */
        &amp;#x27;url&amp;#x27; =&amp;gt; str_replace(&amp;#x27;1920x1080&amp;#x27;,&amp;#x27;1366x768&amp;#x27;,$re[&amp;#x27;images&amp;#x27;][0][&amp;#x27;url&amp;#x27;]),
        /* 结束日期 */
        &amp;#x27;date&amp;#x27; =&amp;gt; date(&amp;#x27;j&amp;#x27;,strtotime($re[&amp;#x27;images&amp;#x27;][0][&amp;#x27;enddate&amp;#x27;])),
        /* 故事标题 */
        &amp;#x27;title&amp;#x27; =&amp;gt; $re2[&amp;#x27;title&amp;#x27;],
        /* 内容 */
        &amp;#x27;d&amp;#x27; =&amp;gt; $re2[&amp;#x27;para1&amp;#x27;]
    );
}
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;使用示例&quot;&gt;使用示例&lt;/h3&gt;&lt;p&gt;如果是 wordpress，可以把上面的代码丢进&lt;code&gt;function.php&lt;/code&gt;，然后该怎么用就怎么用。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;$bingimg= bingImgFetch();
echo $bingimg[&amp;#x27;url&amp;#x27;];//输出图片地址
echo $bingimg[&amp;#x27;title&amp;#x27;];
echo $bingimg[&amp;#x27;d&amp;#x27;];
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;我的使用方法&quot;&gt;我的使用方法&lt;/h2&gt;&lt;p&gt;因为我用的是静态博客，不能在后端完成这些操作，所以只能通过 js 获取。同时把代码放在国内访问较快的&lt;code&gt;SAE&lt;/code&gt;中，使用&lt;code&gt;Memcache&lt;/code&gt;缓存内容。而且我在获取后还把数据储存在&lt;code&gt;localStorage&lt;/code&gt;中，这样可以减少请求次数。&lt;/p&gt;&lt;p&gt;为什么要缓存？因为不缓存的话，别人每访问一次你都要获取一次，IP 可能会被被 Bing ban 了。&lt;/p&gt;&lt;p&gt;当然，你也可以缓存到数据库中，这些你都可以结合实际情况修改代码。&lt;/p&gt;&lt;h3 id=&quot;php-in-sae&quot;&gt;PHP in SAE&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
header(&amp;#x27;Access-Control-Allow-Origin: *&amp;#x27;);
$mmc=memcache_init();
if($mmc==false){
    /* 如果memcache启动失败，直接获取 */
    $bingimg = json_encode(bingImgFetch());
}else {
    $bingimg = memcache_get($mmc,&amp;#x27;bing_url&amp;#x27;);
    $date = memcache_get($mmc,&amp;#x27;bing_url_date&amp;#x27;);
    /* 判断日期进行更新 */
    if(date(&amp;#x27;j&amp;#x27;) != $date || !$bingimg || !$date){
        $bingimg = json_encode(bingImgFetch());
        /* 写入 */
        memcache_set($mmc,&amp;quot;bing_url&amp;quot;,$bingimg);
        memcache_set($mmc,&amp;quot;bing_url_date&amp;quot;,date(&amp;#x27;j&amp;#x27;));
    }
}
echo $bingimg;
function bingImgFetch(){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, &amp;#x27;http://www.bing.com/HPImageArchive.aspx?format=js&amp;amp;idx=0&amp;amp;n=1&amp;#x27;);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        &amp;#x27;User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36&amp;#x27;
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $re = curl_exec($ch);
    curl_close($ch);
    $re = json_decode($re,1);
    $re2 = json_decode(file_get_contents(&amp;#x27;http://cn.bing.com/cnhp/coverstory/&amp;#x27;),1);
    return array(
        &amp;#x27;url&amp;#x27; =&amp;gt; str_replace(&amp;#x27;1920x1080&amp;#x27;,&amp;#x27;1366x768&amp;#x27;,$re[&amp;#x27;images&amp;#x27;][0][&amp;#x27;url&amp;#x27;]),
        &amp;#x27;date&amp;#x27; =&amp;gt; date(&amp;#x27;j&amp;#x27;,strtotime($re[&amp;#x27;images&amp;#x27;][0][&amp;#x27;enddate&amp;#x27;])),
        &amp;#x27;title&amp;#x27; =&amp;gt; $re2[&amp;#x27;title&amp;#x27;],
        &amp;#x27;d&amp;#x27; =&amp;gt; $re2[&amp;#x27;para1&amp;#x27;]
    );
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;html&quot;&gt;HTML&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;section id=&amp;quot;hero&amp;quot;&amp;gt;
  &amp;lt;div class=&amp;quot;hero-warp&amp;quot;&amp;gt;
    &amp;lt;p id=&amp;quot;hero-title&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;p id=&amp;quot;hero-d&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;css&quot;&gt;CSS&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;html,
body {
  height: 100%;
}
#hero {
  position: relative;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.6);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  background-attachment: fixed;
  width: 100%;
  text-align: center;
  color: #fff;
  display: table;
}
.hero-warp {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
#hero-title {
  font-size: 28px;
  margin-bottom: 8px;
}
#hero-d {
  width: 80%;
  margin: 0 auto;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;js&quot;&gt;JS&lt;/h3&gt;&lt;p&gt;如果你使用&lt;code&gt;jQuery&lt;/code&gt;，可以把这里的 ajax 换成$.ajax()实现。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;(function () {
  //bing pic load
  var $data = {
    title: localStorage.getItem(&amp;#x27;bing_title&amp;#x27;)
      ? localStorage.getItem(&amp;#x27;bing_title&amp;#x27;)
      : &amp;#x27;&amp;#x27;,
    d: localStorage.getItem(&amp;#x27;bing_d&amp;#x27;) ? localStorage.getItem(&amp;#x27;bing_d&amp;#x27;) : &amp;#x27;&amp;#x27;,
    url: localStorage.getItem(&amp;#x27;bing_url&amp;#x27;)
      ? localStorage.getItem(&amp;#x27;bing_url&amp;#x27;)
      : &amp;#x27;&amp;#x27;,
    date: localStorage.getItem(&amp;#x27;bing_date&amp;#x27;)
      ? localStorage.getItem(&amp;#x27;bing_date&amp;#x27;)
      : &amp;#x27;&amp;#x27;,
  };
  if (
    new Date().getDate() != $data.date ||
    $data.title == &amp;#x27;&amp;#x27; ||
    $data.d == &amp;#x27;&amp;#x27; ||
    $data.url == &amp;#x27;&amp;#x27;
  ) {
    ajax(&amp;#x27;GET&amp;#x27;, &amp;#x27;//giuem.sinaapp.com/bing/&amp;#x27;, function ($data) {
      localStorage.setItem(&amp;#x27;bing_title&amp;#x27;, $data.title);
      localStorage.setItem(&amp;#x27;bing_d&amp;#x27;, $data.d);
      localStorage.setItem(&amp;#x27;bing_url&amp;#x27;, $data.url);
      localStorage.setItem(&amp;#x27;bing_date&amp;#x27;, new Date().getDate());
      setHero($data);
    });
  } else {
    setHero($data);
  }
})();
function setHero($data) {
  var $hero = document.getElementById(&amp;#x27;hero&amp;#x27;);
  if (!$hero) {
    return;
  }
  if ($data) {
    $hero.style.cssText += &amp;#x27;background-image:url(&amp;#x27; + $data.url + &amp;#x27;)&amp;#x27;;
    document.getElementById(&amp;#x27;hero-title&amp;#x27;).innerHTML = $data.title;
    document.getElementById(&amp;#x27;hero-d&amp;#x27;).innerHTML = $data.d;
  }
}
function ajax(type, url, opts, callback) {
  var xhr = new XMLHttpRequest();
  if (typeof opts === &amp;#x27;function&amp;#x27;) {
    callback = opts;
    opts = null;
  }
  xhr.open(type, url);
  var fd = new FormData();
  if (type === &amp;#x27;POST&amp;#x27; &amp;amp;&amp;amp; opts) {
    for (var key in opts) {
      fd.append(key, JSON.stringify(opts[key]));
    }
  }
  xhr.onload = function () {
    callback(JSON.parse(xhr.response));
  };
  xhr.send(opts ? fd : null);
}
&lt;/code&gt;&lt;/pre&gt;</content:encoded></item><item><title><![CDATA[通过JS获取真实的外网IP和内网IP]]></title><description><![CDATA[通过 JS 获取你真实的外网 IP 和内网 IP，就算开代理也没有，想想真是太可怕了，还能不能愉快的装逼了！ Demo Demo： https://diafygi.github.io/webrtc-ips/ 代码 因为 Firefox 和 Chrome 支持 WebRTC…]]></description><link>https://www.giuem.com/blog/js-get-ip</link><guid isPermaLink="false">https://www.giuem.com/blog/js-get-ip</guid><pubDate>Fri, 13 Feb 2015 21:35:22 GMT</pubDate><content:encoded>&lt;p&gt;通过 JS 获取你真实的外网 IP 和内网 IP，就算开代理也没有，想想真是太可怕了，还能不能愉快的装逼了！&lt;/p&gt;&lt;h2 id=&quot;demo&quot;&gt;Demo&lt;/h2&gt;&lt;p&gt;Demo：&lt;a href=&quot;https://diafygi.github.io/webrtc-ips/&quot;&gt;https://diafygi.github.io/webrtc-ips/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:215px&quot;&gt;
      &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:92.55813953488374%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC+ElEQVQ4y6WTXUySURjHXzflws25haNNNqa4eWHqjZtrXHjhFr1r0Vxq5cc0vfTGVfdZVDKvpLlgoATSxwxFxazmcqlIQaAgTdLkIwJEFiT6vhTwfp0Gr6mhedPv4pyds/Oc//M8+z+Q1WrdcLr8Pv+m37/ucPgCwa1gcG19w6BfWNQbUBSxr9gNhvfra1+8Xq/b7XY5nd/8AQzDAACQdck8Nj6pGByymD7Ozbwe0Yxpxyfezr57OTVpNpkNi3qJRCqRyrQjmucjL9RqlVwmG5uY3t6OpoLBISgASJKiSCpNaiNJEvybVDBFUfvrCZDk3q/7LyH6NhQKAUCNa0dFIlF9/eVeGpFILBZLpdK+vj6hUBiJRDI0UsE4jjscDpIgFhbmqqvPslistrb2WzdvtLS08Hi8ojQFBQV1dXUZ8XvKCIKsrq6K+/tra2t5PJ5IJLp9u0coFHZ3d7e2tjY0NGg0GhRFCYLIrJlWViqV/PN8gUBQU1PD4XDy8vIYDAaTyeRwONySEpVqmH6ZmTYAIBQK3b8nvHTxwjk+H4bhqqoqLpdbWloKw/D1jo67d3omJiYRNHZMt3EcN5vNP2Oo5NHD7GxGVlYWrVlUVFRYWMhinWaz2aeYzLKyM11dXdFodL9siExDHwiCiEQiCIrs7OzGYrFEIpFMJnGcSCaTKIL4/X6bzRaPxymKoouHwH8A2Ww2l9uzGQhEwuFw+HvA57Pb7YuGD15f0L5smp/XR3fRz59WlpYta+sel9P51ev1uD0ulxvDcGjZYtKMamUymXHRoB15qn7ybEjxWKlS66ZnZ97oLEvLC/N66cCAQiEf075SqVTDapVCoZDLB7fCPw7SpkjiVzx+NLcTbAvR7j/s2BMg0tA9PhgMBEEAALopXVNzc2dnZ3t7+7U0TU1NAoEAhuHGxka5XHaMtzEMMxqNAIDe3gcQBOXk5OTm5paXl1dUVFRWVhYXF7PZ7Pz8/MYrV/8M7t8Oo0kk4jtpUBQ9PIlYmqOz/Ru1fn+C80Jq9AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source srcSet=&quot;/static/b588556cb629834ad9d59e9963c6d641/4bbe2/20150213214159.webp 215w&quot; sizes=&quot;(max-width: 215px) 100vw, 215px&quot; type=&quot;image/webp&quot;/&gt;
          &lt;source srcSet=&quot;/static/b588556cb629834ad9d59e9963c6d641/2eb24/20150213214159.png 215w&quot; sizes=&quot;(max-width: 215px) 100vw, 215px&quot; type=&quot;image/png&quot;/&gt;
          &lt;img class=&quot;gatsby-resp-image-image&quot; src=&quot;/static/b588556cb629834ad9d59e9963c6d641/2eb24/20150213214159.png&quot; alt=&quot;demo&quot; title=&quot;demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot;/&gt;
        &lt;/picture&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;代码&quot;&gt;代码&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;//get the IP addresses associated with an account
function getIPs(callback) {
  var ip_dups = {};

  //compatibility for firefox and chrome
  var RTCPeerConnection =
    window.RTCPeerConnection ||
    window.mozRTCPeerConnection ||
    window.webkitRTCPeerConnection;

  //bypass naive webrtc blocking
  if (!RTCPeerConnection) {
    var iframe = document.createElement(&amp;#x27;iframe&amp;#x27;);
    //invalidate content script
    iframe.sandbox = &amp;#x27;allow-same-origin&amp;#x27;;
    iframe.style.display = &amp;#x27;none&amp;#x27;;
    document.body.appendChild(iframe);
    var win = iframe.contentWindow;
    window.RTCPeerConnection = win.RTCPeerConnection;
    window.mozRTCPeerConnection = win.mozRTCPeerConnection;
    window.webkitRTCPeerConnection = win.webkitRTCPeerConnection;
    RTCPeerConnection =
      window.RTCPeerConnection ||
      window.mozRTCPeerConnection ||
      window.webkitRTCPeerConnection;
  }

  //minimal requirements for data connection
  var mediaConstraints = {
    optional: [{ RtpDataChannels: true }],
  };

  //firefox already has a default stun server in about:config
  //    media.peerconnection.default_iceservers =
  //    [{&amp;quot;url&amp;quot;: &amp;quot;stun:stun.services.mozilla.com&amp;quot;}]
  var servers = undefined;

  //add same stun server for chrome
  if (window.webkitRTCPeerConnection)
    servers = { iceServers: [{ urls: &amp;#x27;stun:stun.services.mozilla.com&amp;#x27; }] };

  //construct a new RTCPeerConnection
  var pc = new RTCPeerConnection(servers, mediaConstraints);

  //listen for candidate events
  pc.onicecandidate = function (ice) {
    //skip non-candidate events
    if (ice.candidate) {
      //match just the IP address
      var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
      var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];

      //remove duplicates
      if (ip_dups[ip_addr] === undefined) callback(ip_addr);

      ip_dups[ip_addr] = true;
    }
  };

  //create a bogus data channel
  pc.createDataChannel(&amp;#x27;&amp;#x27;);

  //create an offer sdp
  pc.createOffer(
    function (result) {
      //trigger the stun server request
      pc.setLocalDescription(
        result,
        function () {},
        function () {}
      );
    },
    function () {}
  );
}

//Test: Print the IP addresses into the console
getIPs(function (ip) {
  console.log(ip);
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;因为&lt;code&gt;Firefox&lt;/code&gt;和&lt;code&gt;Chrome&lt;/code&gt;支持&lt;code&gt;WebRTC&lt;/code&gt;，可以向 STUN 服务器请求，返回内外网 IP，不同于 XMLHttpRequest 请求，STUN 请求开发者工具当中看不到网络请求的。&lt;/p&gt;&lt;h2 id=&quot;解决办法&quot;&gt;解决办法&lt;/h2&gt;&lt;p&gt;那我们有没有办法继续装逼呢？答案是肯定的。我们可以关闭&lt;code&gt;WebRTC&lt;/code&gt;。&lt;/p&gt;&lt;h3 id=&quot;chrome&quot;&gt;Chrome&lt;/h3&gt;&lt;p&gt;安装插件 &lt;a href=&quot;https://chrome.google.com/webstore/detail/webrtc-block/nphkkbaidamjmhfanlpblblcadhfbkdm?hl=en&quot;&gt;https://chrome.google.com/webstore/detail/webrtc-block/nphkkbaidamjmhfanlpblblcadhfbkdm?hl=en&lt;/a&gt;&lt;/p&gt;&lt;p&gt;无法下载的一定是你上网姿势不科学。&lt;/p&gt;&lt;h3 id=&quot;firefox&quot;&gt;Firefox&lt;/h3&gt;&lt;p&gt;用 media.peerconnection.enabled 禁用。BTW，方法网上看到了，电脑没装 Firefox，所以你们自己摸索吧。&lt;/p&gt;&lt;h2 id=&quot;参考资料&quot;&gt;参考资料&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/diafygi/webrtc-ips&quot;&gt;https://github.com/diafygi/webrtc-ips&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.v2ex.com/t/167243&quot;&gt;http://www.v2ex.com/t/167243&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[HTML中head头结构]]></title><description><![CDATA[HTML head 头部分的标签、元素有很多，涉及到浏览器对网页的渲染，SEO 等等，而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性。移动互联网时代，head 头部结构，移动端的 meta…]]></description><link>https://www.giuem.com/blog/html-head</link><guid isPermaLink="false">https://www.giuem.com/blog/html-head</guid><pubDate>Sun, 23 Nov 2014 15:31:08 GMT</pubDate><content:encoded>&lt;p&gt;HTML head 头部分的标签、元素有很多，涉及到浏览器对网页的渲染，SEO 等等，而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性。移动互联网时代，head 头部结构，移动端的 meta 元素，显得更为重要。了解每个标签的意义，写出满足自己需求的 head 头标签，是本文的目的。本篇以&lt;a href=&quot;https://github.com/yisibl/blog/issues/1&quot;&gt;一丝的文章&lt;/a&gt;为基础，进行扩展总结介绍常用的 head 中各个标签、元素的意义以及使用场景。&lt;/p&gt;&lt;h2 id=&quot;doctype&quot;&gt;DOCTYPE&lt;/h2&gt;&lt;p&gt;DOCTYPE(Document Type)，该声明位于文档中最前面的位置，处于&lt;code&gt;html&lt;/code&gt;  标签之前，此标签告知浏览器文档使用哪种 HTML 或者 XHTML 规范。&lt;/p&gt;&lt;p&gt;DTD(Document Type Definition) 声明以&lt;code&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/code&gt;  开始，不区分大小写，前面没有任何内容，如果有其他内容(空格除外)会使浏览器在 IE 下开启怪异模式(quirks mode)渲染网页。公共 DTD，名称格式为&lt;code&gt;注册//组织//类型 标签//语言&lt;/code&gt;,&lt;code&gt;注册&lt;/code&gt;指组织是否由国际标准化组织(ISO)注册，&lt;code&gt;+&lt;/code&gt;表示是，&lt;code&gt;-&lt;/code&gt;表示不是。&lt;code&gt;组织&lt;/code&gt;即组织名称，如：W3C。&lt;code&gt;类型&lt;/code&gt;一般是 DTD。&lt;code&gt;标签&lt;/code&gt;是指定公开文本描述，即对所引用的公开文本的唯一描述性名称，后面可附带版本号。最后&lt;code&gt;语言&lt;/code&gt;是 DTD 语言的 ISO 639 语言标识符，如：EN 表示英文，ZH 表示中文。XHTML 1.0 可声明三种 DTD 类型。分别表示严格版本，过渡版本，以及基于框架的 HTML 文档。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;HTML 4.01 strict&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;HTML 4.01 Transitional&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/loose.dtd&amp;quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;HTML 4.01 Frameset&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Frameset//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/frameset.dtd&amp;quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;最新 HTML5 推出更加简洁的书写，它向前向后兼容，推荐使用。&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在 HTML 中  &lt;code&gt;doctype&lt;/code&gt;  有两个主要目的。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;对文档进行有效性验证。它告诉用户代理和校验器这个文档是按照什么 DTD 写的。这个动作是被动的，每次页面加载时，浏览器并不会下载 DTD 并检查合法性，只有当手动校验页面时才启用。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;决定浏览器的呈现模式对于实际操作，通知浏览器读取文档时用哪种解析算法。如果没有写，则浏览器则根据自身的规则对代码进行解析，可能会严重影响 html 排版布局。浏览器有三种方式解析 HTML 文档。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;*   非怪异（标准）模式
*   怪异模式
*   部分怪异（近乎标准）模式
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;关于 IE 浏览器的文档模式，浏览器模式，严格模式，怪异模式，DOCTYPE 标签，可详细阅读&lt;a href=&quot;http://padding.me/blog/2014/07/04/mode-or-standard/&quot;&gt;模式？标准！&lt;/a&gt;的内容。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;charset&quot;&gt;charset&lt;/h2&gt;&lt;p&gt;声明文档使用的字符编码，&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;html5 之前网页中会这样写：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这两个是等效的，具体可移步阅读：&lt;a href=&quot;http://stackoverflow.com/questions/4696499/meta-charset-utf-8-vs-meta-http-equiv-content-type&quot;&gt;\&amp;lt;meta charset=&amp;#x27;utf-8&amp;#x27;&amp;gt; vs \&amp;lt;meta http-equiv=&amp;#x27;Content-Type&amp;#x27;&amp;gt;&lt;/a&gt;，所以建议使用较短的，易于记忆。&lt;/p&gt;&lt;h2 id=&quot;lang-属性&quot;&gt;lang 属性&lt;/h2&gt;&lt;p&gt;简体中文&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;html lang=&amp;quot;zh-cmn-Hans&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;繁体中文&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;html lang=&amp;quot;zh-cmn-Hant&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;为什么&lt;code&gt;lang=&amp;quot;zh-cmn-Hans&amp;quot;&lt;/code&gt;  而不是我们通常写的&lt;code&gt;lang=&amp;quot;zh-CN&amp;quot;&lt;/code&gt;  呢，请移步阅读: &lt;a href=&quot;http://zhi.hu/XyIa&quot;&gt;页头部的声明应该是用 lang=&amp;quot;zh&amp;quot; 还是 lang=&amp;quot;zh-cn&amp;quot;&lt;/a&gt;。&lt;/p&gt;&lt;h2 id=&quot;优先使用-ie-最新版本和-chrome&quot;&gt;优先使用 IE 最新版本和 Chrome&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;IE=edge,chrome=1&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;360-使用-google-chrome-frame&quot;&gt;360 使用 Google Chrome Frame&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;renderer&amp;quot; content=&amp;quot;webkit&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;360 浏览器就会在读取到这个标签后，立即切换对应的极速核。
另外为了保险起见再加入&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;IE=Edge,chrome=1&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这样写可以达到的效果是如果安装了 Google Chrome Frame，则使用 GCF 来渲染页面，如果没有安装 GCF，则使用最高版本的 IE 内核进行渲染。&lt;/p&gt;&lt;p&gt;相关链接：&lt;a href=&quot;http://se.360.cn/v6/help/meta.html&quot;&gt;浏览器内核控制 Meta 标签说明文档&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;百度禁止转码&quot;&gt;百度禁止转码&lt;/h2&gt;&lt;p&gt;通过百度手机打开网页时，百度可能会对你的网页进行转码，脱下你的衣服，往你的身上贴狗皮膏药的广告，为此可在 head 内添加&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta http-equiv=&amp;quot;Cache-Control&amp;quot; content=&amp;quot;no-siteapp&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;相关链接：&lt;a href=&quot;http://m.baidu.com/pub/help.php?pn=22&amp;amp;ssid=0&amp;amp;from=844b&amp;amp;bd_page_type=1&quot;&gt;SiteApp 转码声明&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;seo-优化部分&quot;&gt;SEO 优化部分&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;页面标题&lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt;标签(head 头部必须)&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;title&amp;gt;your title&amp;lt;/title&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;页面关键词 keywords&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;keywords&amp;quot; content=&amp;quot;your keywords&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;页面描述内容 description&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;your description&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;定义网页作者 author&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;author&amp;quot; content=&amp;quot;author,email address&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;定义网页搜索引擎索引方式,robotterms 是一组使用英文逗号「,」分割的值，通常有如下几种取值：none，noindex，nofollow，all，index 和 follow。&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;index,follow&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;相关链接：&lt;a href=&quot;http://msdn.microsoft.com/zh-cn/library/ff724037(v=expression.40).aspx&quot;&gt;WEB1038 - 标记包含无效的值&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;viewport&quot;&gt;viewport&lt;/h2&gt;&lt;p&gt;&lt;code&gt;viewport&lt;/code&gt;  可以让布局在移动浏览器上显示的更好。
通常会写&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;width=device-width&lt;/code&gt;  会导致 iPhone 5 添加到主屏后以 WebApp 全屏模式打开页面时出现黑边(&lt;a href=&quot;http://bigc.at/ios-webapp-viewport-meta.orz&quot;&gt;http://bigc.at/ios-webapp-viewport-meta.orz&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;content 参数：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;width viewport 宽度(数值/device-width)&lt;/li&gt;&lt;li&gt;height viewport 高度(数值/device-height)&lt;/li&gt;&lt;li&gt;initial-scale 初始缩放比例&lt;/li&gt;&lt;li&gt;maximum-scale 最大缩放比例&lt;/li&gt;&lt;li&gt;minimum-scale 最小缩放比例&lt;/li&gt;&lt;li&gt;user-scalable 是否允许用户缩放(yes/no)&lt;/li&gt;&lt;li&gt;minimal-ui iOS 7.1 beta 2 中新增属性，可以在页面加载时最小化上下状态栏。这是一个布尔值，可以直接这样写：&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta
  name=&amp;quot;viewport&amp;quot;
  content=&amp;quot;width=device-width, initial-scale=1, minimal-ui&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;而如果你的网站不是响应式的，请不要使用 initial-scale 或者禁用缩放。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width,user-scalable=yes&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;相关链接：&lt;a href=&quot;http://www.qianduan.net/non-responsive-design-viewport.html&quot;&gt;非响应式设计的 viewport&lt;/a&gt;&lt;/p&gt;&lt;p&gt;适配 iPhone 6 和 iPhone 6plus 则需要写：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=375&amp;quot; /&amp;gt;
&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=414&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;大部分 4.7~5 寸的安卓设备的 viewport 宽设为 360px，iPhone 6 上却是 375px，大部分 5.5 寸安卓机器（比如说三星 Note）的 viewport 宽为 400，iPhone 6 plus 上是 414px。&lt;/p&gt;&lt;h2 id=&quot;ios-设备&quot;&gt;ios 设备&lt;/h2&gt;&lt;p&gt;添加到主屏后的标题（iOS 6 新增）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;apple-mobile-web-app-title&amp;quot; content=&amp;quot;标题&amp;quot; /&amp;gt;
&amp;lt;!-- 添加到主屏后的标题（iOS 6 新增） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;是否启用 WebApp 全屏模式&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;apple-mobile-web-app-capable&amp;quot; content=&amp;quot;yes&amp;quot; /&amp;gt;
&amp;lt;!-- 是否启用 WebApp 全屏模式 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;设置状态栏的背景颜色&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta
  name=&amp;quot;apple-mobile-web-app-status-bar-style&amp;quot;
  content=&amp;quot;black-translucent&amp;quot;
/&amp;gt;
&amp;lt;!-- 设置状态栏的背景颜色，只有在 `&amp;quot;apple-mobile-web-app-capable&amp;quot; content=&amp;quot;yes&amp;quot;` 时生效 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;只有在 &amp;quot;apple-mobile-web-app-capable&amp;quot; content=&amp;quot;yes&amp;quot; 时生效&lt;/p&gt;&lt;p&gt;content 参数：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;default 默认值。&lt;/li&gt;&lt;li&gt;black 状态栏背景是黑色。&lt;/li&gt;&lt;li&gt;black-translucent 状态栏背景是黑色半透明。
如果设置为 default 或 black ,网页内容从状态栏底部开始。
如果设置为 black-translucent ,网页内容充满整个屏幕，顶部会被状态栏遮挡。
禁止数字识自动别为电话号码&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;format-detection&amp;quot; content=&amp;quot;telephone=no&amp;quot; /&amp;gt;
&amp;lt;!-- 禁止数字识自动别为电话号码 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;ios-图标&quot;&gt;iOS 图标&lt;/h2&gt;&lt;p&gt;rel 参数：
apple-touch-icon 图片自动处理成圆角和高光等效果。
apple-touch-icon-precomposed 禁止系统自动添加效果，直接显示设计原图。
iPhone 和 iTouch，默认 57x57 像素，必须有&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-icon-precomposed&amp;quot;
  href=&amp;quot;/apple-touch-icon-57x57-precomposed.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPhone 和 iTouch，默认 57x57 像素，必须有 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPad，72x72 像素，可以没有，但推荐有&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-icon-precomposed&amp;quot;
  sizes=&amp;quot;72x72&amp;quot;
  href=&amp;quot;/apple-touch-icon-72x72-precomposed.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPad，72x72 像素，可以没有，但推荐有 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Retina iPhone 和 Retina iTouch，114x114 像素，可以没有，但推荐有&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-icon-precomposed&amp;quot;
  sizes=&amp;quot;114x114&amp;quot;
  href=&amp;quot;/apple-touch-icon-114x114-precomposed.png&amp;quot;
/&amp;gt;
&amp;lt;!-- Retina iPhone 和 Retina iTouch，114x114 像素，可以没有，但推荐有 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Retina iPad，144x144 像素，可以没有，但推荐有&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-icon-precomposed&amp;quot;
  sizes=&amp;quot;144x144&amp;quot;
  href=&amp;quot;/apple-touch-icon-144x144-precomposed.png&amp;quot;
/&amp;gt;
&amp;lt;!-- Retina iPad，144x144 像素，可以没有，但推荐有 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;IOS 图标大小在 iPhone 6 plus 上是 180×180，iPhone 6 是 120x120。
适配 iPhone 6 plus，则需要在&amp;lt;head&amp;gt;中加上这段&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-icon-precomposed&amp;quot;
  sizes=&amp;quot;180x180&amp;quot;
  href=&amp;quot;retinahd_icon.png&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;ios-启动画面&quot;&gt;iOS 启动画面&lt;/h2&gt;&lt;p&gt;官方文档：&lt;a href=&quot;https://developer.apple.com/library/ios/qa/qa1686/_index.html&quot;&gt;https://developer.apple.com/library/ios/qa/qa1686/_index.html&lt;/a&gt;
参考文章：&lt;a href=&quot;http://wxd.ctrip.com/blog/2013/09/ios7-hig-24/&quot;&gt;http://wxd.ctrip.com/blog/2013/09/ios7-hig-24/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;iPad 的启动画面是不包括状态栏区域的。&lt;/p&gt;&lt;p&gt;iPad 竖屏 768 x 1004（标准分辨率）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;768x1004&amp;quot;
  href=&amp;quot;/splash-screen-768x1004.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPad 竖屏 768 x 1004（标准分辨率） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPad 竖屏 1536x2008（Retina）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;1536x2008&amp;quot;
  href=&amp;quot;/splash-screen-1536x2008.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPad 竖屏 1536x2008（Retina） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPad 横屏 1024x748（标准分辨率）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;1024x748&amp;quot;
  href=&amp;quot;/Default-Portrait-1024x748.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPad 横屏 1024x748（标准分辨率） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPad 横屏 2048x1496（Retina）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;2048x1496&amp;quot;
  href=&amp;quot;/splash-screen-2048x1496.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPad 横屏 2048x1496（Retina） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPhone 和 iPod touch 的启动画面是包含状态栏区域的。&lt;/p&gt;&lt;p&gt;iPhone/iPod Touch 竖屏 320x480 (标准分辨率)&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link rel=&amp;quot;apple-touch-startup-image&amp;quot; href=&amp;quot;/splash-screen-320x480.png&amp;quot; /&amp;gt;
&amp;lt;!-- iPhone/iPod Touch 竖屏 320x480 (标准分辨率) --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPhone/iPod Touch 竖屏 640x960 (Retina)&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;640x960&amp;quot;
  href=&amp;quot;/splash-screen-640x960.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPhone/iPod Touch 竖屏 640x960 (Retina) --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPhone 5/iPod Touch 5 竖屏 640x1136 (Retina)&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  sizes=&amp;quot;640x1136&amp;quot;
  href=&amp;quot;/splash-screen-640x1136.png&amp;quot;
/&amp;gt;
&amp;lt;!-- iPhone 5/iPod Touch 5 竖屏 640x1136 (Retina) --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;添加智能 App 广告条 Smart App Banner（iOS 6+ Safari）&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta
  name=&amp;quot;apple-itunes-app&amp;quot;
  content=&amp;quot;app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL&amp;quot;
/&amp;gt;
&amp;lt;!-- 添加智能 App 广告条 Smart App Banner（iOS 6+ Safari） --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;iPhone 6 对应的图片大小是 750×1294，iPhone 6 Plus 对应的是 1242×2148 。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  href=&amp;quot;launch6.png&amp;quot;
  media=&amp;quot;(device-width: 375px)&amp;quot;
/&amp;gt;

&amp;lt;link
  rel=&amp;quot;apple-touch-startup-image&amp;quot;
  href=&amp;quot;launch6plus.png&amp;quot;
  media=&amp;quot;(device-width: 414px)&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;windows-8&quot;&gt;Windows 8&lt;/h2&gt;&lt;p&gt;Windows 8 磁贴颜色&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;msapplication-TileColor&amp;quot; content=&amp;quot;#000&amp;quot; /&amp;gt;
&amp;lt;!-- Windows 8 磁贴颜色 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Windows 8 磁贴图标&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta name=&amp;quot;msapplication-TileImage&amp;quot; content=&amp;quot;icon.png&amp;quot; /&amp;gt;
&amp;lt;!-- Windows 8 磁贴图标 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;rss-订阅&quot;&gt;rss 订阅&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link rel=&amp;quot;alternate&amp;quot; type=&amp;quot;application/rss+xml&amp;quot; title=&amp;quot;RSS&amp;quot; href=&amp;quot;/rss.xml&amp;quot; /&amp;gt;
&amp;lt;!-- 添加 RSS 订阅 --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;favicon-icon&quot;&gt;favicon icon&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;link rel=&amp;quot;shortcut icon&amp;quot; type=&amp;quot;image/ico&amp;quot; href=&amp;quot;/favicon.ico&amp;quot; /&amp;gt;
&amp;lt;!-- 添加 favicon icon --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;比较详细的 favicon 介绍可参考&lt;a href=&quot;https://github.com/audreyr/favicon-cheat-sheet&quot;&gt;https://github.com/audreyr/favicon-cheat-sheet&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;移动端的-meta&quot;&gt;移动端的 meta&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;meta
  name=&amp;quot;viewport&amp;quot;
  content=&amp;quot;width=device-width, initial-scale=1, user-scalable=no&amp;quot;
/&amp;gt;
&amp;lt;meta name=&amp;quot;apple-mobile-web-app-capable&amp;quot; content=&amp;quot;yes&amp;quot; /&amp;gt;
&amp;lt;meta name=&amp;quot;apple-mobile-web-app-status-bar-style&amp;quot; content=&amp;quot;black&amp;quot; /&amp;gt;
&amp;lt;meta name=&amp;quot;format-detection&amp;quot; content=&amp;quot;telephone=no, email=no&amp;quot; /&amp;gt;
&amp;lt;meta
  name=&amp;quot;viewport&amp;quot;
  content=&amp;quot;width=device-width, initial-scale=1, user-scalable=no&amp;quot;
/&amp;gt;
&amp;lt;meta
  name=&amp;quot;apple-mobile-web-app-capable&amp;quot;
  content=&amp;quot;yes&amp;quot;
/&amp;gt;&amp;lt;!-- 删除苹果默认的工具栏和菜单栏 --&amp;gt;
&amp;lt;meta
  name=&amp;quot;apple-mobile-web-app-status-bar-style&amp;quot;
  content=&amp;quot;black&amp;quot;
/&amp;gt;&amp;lt;!-- 设置苹果工具栏颜色 --&amp;gt;
&amp;lt;meta
  name=&amp;quot;format-detection&amp;quot;
  content=&amp;quot;telphone=no, email=no&amp;quot;
/&amp;gt;&amp;lt;!-- 忽略页面中的数字识别为电话，忽略email识别 --&amp;gt;
&amp;lt;!-- 启用360浏览器的极速模式(webkit) --&amp;gt;
&amp;lt;meta name=&amp;quot;renderer&amp;quot; content=&amp;quot;webkit&amp;quot; /&amp;gt;
&amp;lt;!-- 避免IE使用兼容模式 --&amp;gt;
&amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;IE=edge&amp;quot; /&amp;gt;
&amp;lt;!-- 针对手持设备优化，主要是针对一些老的不识别viewport的浏览器，比如黑莓 --&amp;gt;
&amp;lt;meta name=&amp;quot;HandheldFriendly&amp;quot; content=&amp;quot;true&amp;quot; /&amp;gt;
&amp;lt;!-- 微软的老式浏览器 --&amp;gt;
&amp;lt;meta name=&amp;quot;MobileOptimized&amp;quot; content=&amp;quot;320&amp;quot; /&amp;gt;
&amp;lt;!-- uc强制竖屏 --&amp;gt;
&amp;lt;meta name=&amp;quot;screen-orientation&amp;quot; content=&amp;quot;portrait&amp;quot; /&amp;gt;
&amp;lt;!-- QQ强制竖屏 --&amp;gt;
&amp;lt;meta name=&amp;quot;x5-orientation&amp;quot; content=&amp;quot;portrait&amp;quot; /&amp;gt;
&amp;lt;!-- UC强制全屏 --&amp;gt;
&amp;lt;meta name=&amp;quot;full-screen&amp;quot; content=&amp;quot;yes&amp;quot; /&amp;gt;
&amp;lt;!-- QQ强制全屏 --&amp;gt;
&amp;lt;meta name=&amp;quot;x5-fullscreen&amp;quot; content=&amp;quot;true&amp;quot; /&amp;gt;
&amp;lt;!-- UC应用模式 --&amp;gt;
&amp;lt;meta name=&amp;quot;browsermode&amp;quot; content=&amp;quot;application&amp;quot; /&amp;gt;
&amp;lt;!-- QQ应用模式 --&amp;gt;
&amp;lt;meta name=&amp;quot;x5-page-mode&amp;quot; content=&amp;quot;app&amp;quot; /&amp;gt;
&amp;lt;!-- windows phone 点击无高光 --&amp;gt;
&amp;lt;meta name=&amp;quot;msapplication-tap-highlight&amp;quot; content=&amp;quot;no&amp;quot; /&amp;gt;
&amp;lt;!-- 适应移动端end --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这是来自&lt;a href=&quot;http://weibo.com/toooobug&quot;&gt;toobug&lt;/a&gt;的分享总结。&lt;/p&gt;&lt;p&gt;更多的 meta 标签参考&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://code.lancepollard.com/complete-list-of-html-meta-tags/&quot;&gt;COMPLETE LIST OF HTML META TAGS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.iacquire.com/blog/18-meta-tags-every-webpage-should-have-in-2013&quot;&gt;18 Meta Tags Every Webpage Should Have in 2013&lt;/a&gt;
参考文章：&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/yisibl/blog/issues/1&quot;&gt;常用的 HTML 头部标签&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://gist.github.com/paddingme/6182708733917ae36331&quot;&gt;html5_header&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://amazeui.org/css/&quot;&gt;amazeui css&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.douban.com/note/170560091/&quot;&gt;DOCTYPE&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.uisdc.com/ios8-ten-new-feature&quot;&gt;WEB 工程师和设计师必学的 10 个 IOS 8 新鲜改变&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;原文&quot;&gt;原文&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;http://segmentfault.com/blog/paddingme/1190000000697532&quot;&gt;http://segmentfault.com/blog/paddingme/1190000000697532&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>