<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Jekyll - 标签 - 有价值炮灰</title>
        <link>https://evilpan.com/tags/jekyll/</link>
        <description>Jekyll - 标签 - 有价值炮灰</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>i@pppan.net (evilpan)</managingEditor>
            <webMaster>i@pppan.net (evilpan)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Sun, 20 Sep 2020 12:40:00 &#43;0800</lastBuildDate><atom:link href="https://evilpan.com/tags/jekyll/" rel="self" type="application/rss+xml" /><item>
    <title>我TM就是管住不自己这双手啊</title>
    <link>https://evilpan.com/2020/09/20/restrain-yourself/</link>
    <pubDate>Sun, 20 Sep 2020 12:40:00 &#43;0800</pubDate><author>
        <name>evilpan</name>
    </author><guid>https://evilpan.com/2020/09/20/restrain-yourself/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/img/2020-09-20-restrain-yourself/0.png" referrerpolicy="no-referrer">
            </div><p>博客从 Jekyll 迁移到 Hugo，以及最近一些折腾的感悟。</p>
<h1 id="个人博客那些事" class="headerLink">
    <a href="#%e4%b8%aa%e4%ba%ba%e5%8d%9a%e5%ae%a2%e9%82%a3%e4%ba%9b%e4%ba%8b" class="header-mark"></a>个人博客那些事</h1><p>其实从很早的时候就开始了个人博客网站的搭建，最初得益于 github.io 域名的开放。总的来说，我搭建博客的历史主要分为三个阶段。</p>
<h2 id="第一阶段" class="headerLink">
    <a href="#%e7%ac%ac%e4%b8%80%e9%98%b6%e6%ae%b5" class="header-mark"></a>第一阶段</h2><p>第一阶段属于简单至上主义。这个时期使用 <a href="https://jekyllrb.com/" target="_blank" rel="noopener noreferrer">Jekyll</a> 作为主要的静态博客生成引擎，可以方便地使用 Markdown 来进行写作，并且这也是 Github Pages 官方支持的。</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/1.png" title="img2" data-thumbnail="/img/2020-09-20-restrain-yourself/1.png" data-sub-html="<h2>Jekyll</h2><p>img2</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/1.png'   alt="img2"  ></a><figcaption class="image-caption">Jekyll</figcaption>
</figure></p>
<p>最初是使用了一个简单的模板，后来随着需求日益增加，比如需要标签、目录、侧边栏等功能，于是又转投了另一个主题。</p>
<h2 id="第二阶段" class="headerLink">
    <a href="#%e7%ac%ac%e4%ba%8c%e9%98%b6%e6%ae%b5" class="header-mark"></a>第二阶段</h2><p>由于在第一阶段中日益增长的定制需求和静态博客的限制矛盾，这个时期开始了一段折腾的造轮子历程。在这个阶段，我用 Python (Django) 写了一个完整博客系统，命名为 berserk (因为当时喜欢听阿姆)。该博客支持以下功能:</p>
<ul>
<li>支持 Markdown 渲染，文章目录、代码语法高亮、自适应文章布局</li>
<li>支持文章分类、标签，以及这些属性的数据库管理</li>
<li>支持页面访问统计、评论</li>
<li>支持后台管理 (基于定制的Django-Admin)</li>
<li>支持在后台使用类似 VIM 的键盘映射来编写文章</li>
<li>支持真实后台管理页面的隐藏以及虚假后台页面的蜜罐和告警 (没错)</li>
</ul>
<p>此外因为当时工作接触了一些新潮前端概念，还尝试将一套前后端分离的模式融入到系统中。学习 ReactJS 并折腾了一段时间后发现和 Django 原本的模板系统格格不入，然后就又去掉了。</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/2.png" title="img3" data-thumbnail="/img/2020-09-20-restrain-yourself/2.png" data-sub-html="<h2>berserk</h2><p>img3</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/2.png'   alt="img3"  ></a><figcaption class="image-caption">berserk</figcaption>
</figure></p>
<p>这个博客系统一直缝缝补补并使用了很一段时间，充满了各种奇怪的前后端 tricks。期间也遇到过各种问题，比如整天被乌克兰的机器人在评论区发广告，于是又加入了人机验证，诸如此类。……直到有一天发现这一切和我的初衷(写博客)似乎没什么直接关系，于是又怀念起了以前用 Jekyll 的那段开心时光。</p>
<h2 id="第三阶段" class="headerLink">
    <a href="#%e7%ac%ac%e4%b8%89%e9%98%b6%e6%ae%b5" class="header-mark"></a>第三阶段</h2><p>在自建博客前后端被搞的焦头烂额之后，我又回到了 Jekyll 的怀抱。其实是在自建博客期间看到了许多优秀的 Jekyll 主题完全可以满足我的要求，所以才最终回归。并且在内心暗暗下决心: <strong>再也不折腾了</strong>。</p>
<p>不过还是小小折腾了一下，在此期间对一个小众的主题进行了一些简单的定制和优化。这个阶段算是返璞归真，没有了后端的琐事，可以简单地对主题模板进行修改。基于对 Jekyll 模板的了解，这些事情算是驾轻就熟，可以说对博客页面的折腾已经到头了。</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/3.png" title="img4" data-thumbnail="/img/2020-09-20-restrain-yourself/3.png" data-sub-html="<h2>合影留念</h2><p>img4</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/3.png'   alt="img4"  ></a><figcaption class="image-caption">合影留念</figcaption>
</figure></p>
<p>这个系统也一直使用了较长的时间，一切都挺满意，除了头顶的几片乌云:</p>
<ol>
<li>博客访问统计使用的是<a href="http://busuanzi.ibruce.info/" target="_blank" rel="noopener noreferrer">不算子</a>，服务器在国外，而且数据不可控；</li>
<li>网页常规同步加载，在图片等资源多的时候会感觉速度很慢；</li>
<li>Jekyll 使用 Ruby，安装繁琐，构建速度极慢；</li>
<li>&hellip;</li>
</ol>
<p>第3点的依赖问题可以通过 bundle 或者直接使用 docker 来解决，但是编译构建的速度着实堪忧，比如才几十篇文章，在服务器上构建就需要长达 <strong>15秒</strong> 的时间:</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">sh</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl">$ docker run -it --rm -v <span class="nv">$PWD</span>:/srv/jekyll -p 4000:4000 jekyll/jekyll jekyll serve -s /srv/jekyll
</span></span><span class="line"><span class="cl">ruby 2.6.5p114 <span class="o">(</span>2019-10-01 revision 67812<span class="o">)</span> <span class="o">[</span>x86_64-linux-musl<span class="o">]</span>
</span></span><span class="line"><span class="cl">Configuration file: /srv/jekyll/_config.yml
</span></span><span class="line"><span class="cl">            Source: /srv/jekyll
</span></span><span class="line"><span class="cl">       Destination: /srv/jekyll/_site
</span></span><span class="line"><span class="cl"> Incremental build: disabled. Enable with --incremental
</span></span><span class="line"><span class="cl">      Generating...
</span></span><span class="line"><span class="cl">                    <span class="k">done</span> in 15.28 seconds.
</span></span><span class="line"><span class="cl"> Auto-regeneration: enabled <span class="k">for</span> <span class="s1">&#39;/srv/jekyll&#39;</span>
</span></span><span class="line"><span class="cl">    Server address: http://0.0.0.0:4000/
</span></span><span class="line"><span class="cl">  Server running... press ctrl-c to stop.</span></span></code></pre>
</div>
<p>所以，我又开始折腾了。……但是这次没有忘记初衷，而是选择了 <a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> 加一个比较活跃的主题，因为我不想在前端的修改上花费时间，也不想花太多时间去研究新的模板语法(不过最终还是提了<a href="https://github.com/dillonzq/LoveIt/pull/522" target="_blank" rel="noopener noreferrer">pull request</a>)。</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/0.png" title="meme" data-thumbnail="/img/2020-09-20-restrain-yourself/0.png" data-sub-html="<h2>meme</h2><p>meme</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/0.png'   alt="meme"  ></a><figcaption class="image-caption">meme</figcaption>
</figure></p>
<p>总之，博客还是从 Jekyll 迁移到了 Hugo。迁移过程不算太顺利，因为二者对 Markdown 的元数据理解不同，而且整站的路径也不一样，但通过编写迁移脚本可算实现了。</p>
<p>新的博客可以直接通过 <a href="https://evilpan.com/" target="_blank" rel="noopener noreferrer">https://evilpan.com</a> 访问。</p>
<h1 id="感悟" class="headerLink">
    <a href="#%e6%84%9f%e6%82%9f" class="header-mark"></a>感悟</h1><p>其实改来改去，对于最终的阅读者(如果有的话)并不会产生太大影响。就我个人而言，反而不太喜欢那些花里胡哨的博客主题，比如背景弄一些酷炫的 canvas 搞得电脑风扇直转。从阅读者的角度来说，(博客)网站只需要做到:</p>
<ol>
<li>良好的阅读体验，包括字体、图片、颜色，别搞些绿底黄字的非人间配色；</li>
<li>文章长的话最好有目录，方便阅读；</li>
<li>链接的持久性，不要让阅读者在百度或者其他地方索引过来发现是 404；</li>
<li>RSS (当然也可以不提供，需要的人可以用 feed43 之类的爬虫，但是没必要)；</li>
</ol>
<p>这些一般的博客引擎都能满足，实在没有瞎折腾的必要。而对于博客本身，其实最重要的只有一个 —— <strong>文章质量</strong>！其他的都是扯谈，如果是<a href="https://mp.weixin.qq.com/s/iCAj-s7ey9aC2qPJ_pLmjA" target="_blank" rel="noopener noreferrer">内容农场</a>那就另当别论。</p>
<h1 id="关于-credit" class="headerLink">
    <a href="#%e5%85%b3%e4%ba%8e-credit" class="header-mark"></a>关于 credit</h1><p>很多人在自建博客时习惯把底部的 credit 去掉，比如 <code>Power by Hugo / Theme By XXX</code> 这种信息。我以前也会这样，一方面是为了简洁，另一方面也是希望能有一些“个性”，生怕宝藏主题被别人抄去了导致烂大街；或者就是干脆想让别人认为这是自己写出来的。</p>
<p>其实大可不必。首先你不是一个前端工程师，所以前端技能并不是别人想要从你身上学习的点。反过来说，如果你是前端，那么自己写一套主题那也应该是常规操作，投机取巧并不能让你自己有所受益；其次，留下主题信息可以让更多看到的人去使用是件好事，获得更多关注后就可能潜在引入更多的开源贡献，最终能让你自己获得更好的使用体验；最后，credit 是对原作者劳动成果的一个起码尊重，谁也不想自己辛苦开发或者写的东西被白嫖党滥用。</p>
<p>在看许多国外的 slides 或者文章时候经常看到对于图片、截图如果不是自己画的都会有明显说明来源何处，国内经常就是拿来就用，当然俺也一样，不过已经在改了。</p>
<h1 id="关于时间" class="headerLink">
    <a href="#%e5%85%b3%e4%ba%8e%e6%97%b6%e9%97%b4" class="header-mark"></a>关于时间</h1><p>年轻的时候喜欢做加法，奉行 <strong>艺多不压身</strong> 的准则，对于各种不同领域都喜欢去探索和学习，现在也还是会有很多冲动。但是随着任务列表的逐渐变长，里面的很多项目很可能会一直沉睡在收藏夹中。到了一定的阶段，就需要学会管住自己的双手，把时间用在刀刃上。也就是说，需要学会给人生做减法了。</p>
<p>除了前面提到的博客系统，我还做过很多浪费时间的事情，比如自己写 XSS 盲注后台、DNS服务器(SSRF)、GPS钓鱼系统、写各种命令行工具去实现本可以在网页做到的功能。……</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/4.png" title="fish" data-thumbnail="/img/2020-09-20-restrain-yourself/4.png" data-sub-html="<h2>一个朴素的钓鱼系统后台</h2><p>fish</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/4.png'   alt="fish"  ></a><figcaption class="image-caption">一个朴素的钓鱼系统后台</figcaption>
</figure></p>
<p>各种命令行工具，有查单词的:</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">sh</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-2" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl">$ dictionary.py restrain
</span></span><span class="line"><span class="cl"><span class="c1">##########################</span>
</span></span><span class="line"><span class="cl"><span class="c1">### Youdao Translation ###</span>
</span></span><span class="line"><span class="cl"><span class="c1">##########################</span>
</span></span><span class="line"><span class="cl">restrain: 抑制
</span></span><span class="line"><span class="cl">us:<span class="o">[</span>rɪˈstreɪn<span class="o">]</span>, uk:<span class="o">[</span>rɪˈstreɪn<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="o">===</span> <span class="nv">basic</span> <span class="o">===</span>
</span></span><span class="line"><span class="cl">vt. 抑制，控制；约束；制止
</span></span><span class="line"><span class="cl"><span class="o">===</span> <span class="nv">web</span> <span class="o">===</span>
</span></span><span class="line"><span class="cl">restrain: 阻止,抑制,限制
</span></span><span class="line"><span class="cl">Ratio restrain: 比率制动
</span></span><span class="line"><span class="cl">restrain test: 栓固试验</span></span></code></pre>
</div>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">sh</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-3" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl">$ abbr.py PUA
</span></span><span class="line"><span class="cl"><span class="o">[</span>+<span class="o">]</span> found <span class="m">25</span> results
</span></span><span class="line"><span class="cl">+------+----------------------------------------+-----------------------------------+------+
</span></span><span class="line"><span class="cl"><span class="p">|</span> name <span class="p">|</span>                  desc                  <span class="p">|</span>               domain              <span class="p">|</span> rate <span class="p">|</span>
</span></span><span class="line"><span class="cl">+------+----------------------------------------+-----------------------------------+------+
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>    Pandemic Unemployment Assistance    <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">5</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>   Potentially Unwanted Applications    <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">4</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>    Potentially Unwanted Application    <span class="p">|</span>        Computing / Software       <span class="p">|</span>  <span class="m">4</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>             Pick Up Artist             <span class="p">|</span>    Community / Performing Arts    <span class="p">|</span>  <span class="m">3</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>            Public Use Area             <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">2</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>         Puas, Papua New Guinea         <span class="p">|</span>      Regional / Airport Codes     <span class="p">|</span>  <span class="m">2</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>            Private Use Area            <span class="p">|</span>             Community             <span class="p">|</span>  <span class="m">2</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>          Personal User Agent           <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">2</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span> Professional Underwriters Agency, Inc. <span class="p">|</span>    Business / Companies <span class="p">&amp;</span> Firms   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>    Professional Underwriters Agency    <span class="p">|</span>        Business / Agencies        <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>           Present under Arms           <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>       Premium Upgrade Assurance        <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>    Potentialy Unwanted Application     <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>       Potentially Unwanted Apps        <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>      Possession and Use Agreement      <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>      Portland Urologic Associates      <span class="p">|</span>    Business / Companies <span class="p">&amp;</span> Firms   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>            Plasma Uric Acid            <span class="p">|</span>   Academic <span class="p">&amp;</span> Science / Chemistry  <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>            Pick Up Artists             <span class="p">|</span>          Community / Art          <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>    Pharos University in Alexandria     <span class="p">|</span> Academic <span class="p">&amp;</span> Science / Universities <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>   Peoples University of the Americas   <span class="p">|</span> Academic <span class="p">&amp;</span> Science / Universities <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>      Pediatric Urology Associates      <span class="p">|</span>        Medical / Pediatric        <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>     Payment Undertaking Agreement      <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>  Partido de Unificación Anticomunista  <span class="p">|</span>     International / Guatemalan    <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span>           Paid Up Additions            <span class="p">|</span>    Miscellaneous / Unclassified   <span class="p">|</span>  <span class="m">1</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="p">|</span> PUA  <span class="p">|</span> Paul University, Awka - Anambra State  <span class="p">|</span>         Academic <span class="p">&amp;</span> Science        <span class="p">|</span>  <span class="m">0</span>   <span class="p">|</span>
</span></span><span class="line"><span class="cl">+------+----------------------------------------+-----------------------------------+------+</span></span></code></pre>
</div>
<p>有查股票的:</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/5.png" title="stock" data-thumbnail="/img/2020-09-20-restrain-yourself/5.png" data-sub-html="<h2>命令行炒股</h2><p>stock</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/5.png'   alt="stock"  ></a><figcaption class="image-caption">命令行炒股</figcaption>
</figure></p>
<p>有查 IP 地址的:</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">sh</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-4" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl">$ iplocate.py --on 1.1.1.1
</span></span><span class="line"><span class="cl">&gt;&gt;&gt;&gt;&gt;&gt; results <span class="k">for</span> 1.1.1.1 <span class="o">&lt;&lt;&lt;&lt;&lt;&lt;</span>
</span></span><span class="line"><span class="cl"><span class="o">[</span>*<span class="o">]</span> GeoLite : 澳大利亚<span class="o">(</span>AU<span class="o">)</span> - None
</span></span><span class="line"><span class="cl"><span class="o">[</span>*<span class="o">]</span> Kn0007  : CLOUDFLARE.COMCLOUDFLARE.COM
</span></span><span class="line"><span class="cl"><span class="o">[</span>*<span class="o">]</span> DBIP    : OC<span class="o">(</span>Oceania<span class="o">)</span>,AU<span class="o">(</span>Australia<span class="o">)</span> New South Wales, Sydney
</span></span><span class="line"><span class="cl"><span class="o">[</span>*<span class="o">]</span> Tencent : 澳大利亚 code<span class="o">(</span>-1<span class="o">)</span> lnglat<span class="o">(</span>149.1333,-35.2667<span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="o">[</span>*<span class="o">]</span> IPIP    : <span class="o">[</span><span class="s2">&#34;CLOUDFLARE.COM&#34;</span>,<span class="s2">&#34;&#34;</span>,<span class="s2">&#34;&#34;</span>,<span class="s2">&#34;&#34;</span>,<span class="s2">&#34;&#34;</span><span class="o">]</span></span></span></code></pre>
</div>
<p>复杂一点的还有代理池管理工具，书签管理工具等等:</p>
<p><figure><a class="lightgallery" href="/img/2020-09-20-restrain-yourself/6.png" title="proxy" data-thumbnail="/img/2020-09-20-restrain-yourself/6.png" data-sub-html="<h2>代理池管理</h2><p>proxy</p>"><img  loading="lazy" src='/img/2020-09-20-restrain-yourself/6.png'   alt="proxy"  ></a><figcaption class="image-caption">代理池管理</figcaption>
</figure></p>
<p>有些小工具就是三下五除二就弄好了，但是有些就颇花了些时间。要说有没有必要，其实很多都没必要，想要开车并不表示需要自己造轮子。原型开发的过程还是很有趣的，但是其中有许多项目做完之后也就爽那么一下，然后就很长时间都没用过。</p>
<p>为了避免这种做无用功的尴尬，重要的是管理好自己的想法。对于时不时冒出来的 idea 可以先记录下来，到周末或者某个固定时间再进行排序，评估哪些可以做、需要做，哪些可以借助已有的轮子。站在巨人的肩膀上，而不是盲目追求写代码的快感。</p>
<p>曾经的想法是**&ldquo;因为我可以做，所以我就去做&rdquo;**，但重要的是管理好自己的精力和时间。学习也是一样，各种新概念层出不穷，开始学习之前需要先评估这究竟是不是你需要的，而不是因为看起来很热门就去投入。</p>
<p><strong>Be curious , but don&rsquo;t get drown.</strong></p>
<h1 id="关于白嫖" class="headerLink">
    <a href="#%e5%85%b3%e4%ba%8e%e7%99%bd%e5%ab%96" class="header-mark"></a>关于白嫖</h1><p>在迁移博客的时候发现 Chrome 新版本对于 https 站点中的所有 HTTP 资源都拒绝加载了，导致以前七牛 CDN 上的图片都无法显示，而七牛的 HTTPS 流量又是收费的，所以我决定换一个图床。为了找一个新的 HTTPS 免费图床，我翻了很多记录，发现很多免费站点都已经无法访问了，最终是选择使用某个博客平台的图片上传功能，为了批量上传还分析了该平台的验签和加密算法。</p>
<p>虽然最终目标实现了，但我也耗费了大半天的时间。都是传统的白嫖思想在作祟，因为从小习惯了免费。免费的聊天工具，免费的游戏，免费的操作系统，免费的杀毒软件，……这其实完全没有道理。如果一个东西做的很好，但是完全不赚钱，那么开发者是否还会投入那么多精力去维护呢？一腔热情投入开源工作，还要面对各种小白的挑刺以及伸手党的催促，个中滋味只有经历过才能体会到吧。</p>
<p>我们花几百块钱吃一顿饭觉得合情合理，但是花几十块钱购买在线服务或者软件就踌躇不决。但是说到底，白嫖终究不是长久之计。一个免费 CDN 需要在流量和速度上进行限制，一个免费的云服务器不会提供可用性保证，一个免费的图床可能说挂就挂，能在下线前告诉你一声已经仁至义尽了。</p>
<p>白嫖在线的服务需要自己承担稳定性和迁移风险，白嫖本地应用需要忍受广告和推送，这世上本就没有免费的午餐。如果上天能给我个再来一次的机会，我想说:</p>
<p><img class="tw-inline" loading="lazy" src='/img/2020-09-20-restrain-yourself/7.png'   alt="shutup"  ></p>
<p>最近看到一篇新闻感觉很有意思，微信推出<code>看一看</code>、<code>小视频</code>等功能，不是因为用户需要，而是面对头条对 <strong>用户时间</strong> 的蚕食感到不安 —— 用户每天花在微信的时间从 X 小时下降到了 Y 小时，而在头条系产品中投入的时间从 M 小时增加到了 N 小时。第一次对&quot;时间就是金钱&quot;有了别样的认识。</p>
<p><strong>你以为你白嫖赚到了，其实最后被嫖的是你自己。</strong></p>]]></description>
</item></channel>
</rss>
