<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>FH云彩</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://yuncaioo.com/</id>
  <link href="https://yuncaioo.com/" rel="alternate"/>
  <link href="https://yuncaioo.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, FH云彩</rights>
  <subtitle>「大切な人といつかまた巡り合えますように」</subtitle>
  <title>FH云彩博客</title>
  <updated>2024-05-27T16:02:05.000Z</updated>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>很久之前，我就了解到可以使用硬件安全密钥来增加安全性，早先了解到的密钥是 YubiKey，但由于价格和各种原因摸了，且 22 年 Cloudflare 的优惠我没上车，所以计划搁置了很久。</p><p>直到差不多去年年底的时候，正巧我看到了硬件密钥的相关文章，就趁此机会又了解了很多厂商的硬件密钥。最终，我花费了 ￥169 购入 Canokey，进入密钥折腾之路。</p><h2 id="Canokey-简介"><a href="#Canokey-简介" class="headerlink" title="Canokey 简介"></a>Canokey 简介</h2><p>Canokey 支持以下功能：</p><ul><li>FIDO2 &#x2F; U2F &#x2F; WebAuthn</li><li>OpenPGP</li><li>OATH</li><li>PIV</li><li>HOTP&#x2F;TOTP</li><li>NDEF（NFC）</li></ul><p>可以看得出来 Canokey 基本相当于 YubiKey 的开源实现，功能和 YubiKey 相差不大。</p><h2 id="配置-Canokey"><a href="#配置-Canokey" class="headerlink" title="配置 Canokey"></a>配置 Canokey</h2><p>首次插入 Canokey 后，浏览器会弹出提示——请前往 <a href="https://console.canokeys.org/">console.canokeys.org</a> 进行连接。此处的链接为 Canokey 官方提供的管理工具，可以修改 Canokey 的 PIN 和配置相关功能。</p><p><img src="/images/1197/1197-002.png"></p><p><img src="/images/1197/1197-012.png"></p><p><img src="/images/1197/1197-017.png"></p><p>初始 PIN 可以参考<a href="https://docs.canokeys.org/zh-hans/userguide/">此处</a>。</p><h2 id="OpenPGP"><a href="#OpenPGP" class="headerlink" title="OpenPGP"></a>OpenPGP</h2><p>配置此功能需要安装 GPG，对于 Linux，绝大多数发行版均已默认安装了 GPG，本文基于 Windows 环境，需要自行安装 GPG，此处默认已安装 GPG。</p><h3 id="确认-GPG-版本信息"><a href="#确认-GPG-版本信息" class="headerlink" title="确认 GPG 版本信息"></a>确认 GPG 版本信息</h3><pre><code>gpg --versiongpg (GnuPG) 2.4.3libgcrypt 1.10.2Copyright (C) 2023 g10 Code GmbHLicense GNU GPL-3.0-or-later &lt;https://gnu.org/licenses/gpl.html&gt;This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Home: C:\Users\fhyuncai\AppData\Roaming\gnupgSupported algorithms:Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSACipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,        CAMELLIA128, CAMELLIA192, CAMELLIA256Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224Compression: Uncompressed, ZIP, ZLIB, BZIP2</code></pre><h3 id="确认是否能识别到-Canokey"><a href="#确认是否能识别到-Canokey" class="headerlink" title="确认是否能识别到 Canokey"></a>确认是否能识别到 Canokey</h3><pre><code>gpg --card-statusReader ...........: canokeys.org OpenPGP PIV OATH 0Application ID ...: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXApplication type .: OpenPGPVersion ..........: 3.4Manufacturer .....: CanoKeysSerial number ....: 01234567Name of cardholder: [not set]Language prefs ...: [not set]Salutation .......:URL of public key : [not set]Login data .......: [not set]Signature PIN ....: forcedKey attributes ...: rsa2048 rsa2048 rsa2048Max. PIN lengths .: 64 64 64PIN retry counter : 3 0 3Signature counter : 0UIF setting ......: Sign=off Decrypt=off Auth=offSignature key ....: [none]Encryption key....: [none]Authentication key: [none]General key info..: [none]</code></pre><h3 id="生成主密钥"><a href="#生成主密钥" class="headerlink" title="生成主密钥"></a>生成主密钥</h3><pre><code>gpg --expert --full-gen-keygpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbHThis is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Please select what kind of key you want:   (1) RSA and RSA   (2) DSA and Elgamal   (3) DSA (sign only)                  # DSA 算法 (仅签名)   (4) RSA (sign only)                  # RSA 算法 (仅签名)   (7) DSA (set your own capabilities)  # DSA 算法 (自定义用途)   (8) RSA (set your own capabilities)  # RSA 算法 (自定义用途)   (9) ECC (sign and encrypt) *default* # ECC 算法 (签名和加密) *默认  (10) ECC (sign only)                  # ECC 算法 (仅签名)  (11) ECC (set your own capabilities)  # ECC 算法 (自定义用途)  (13) Existing key  (14) Existing key from cardYour selection? 11 # 输入 11 生成自定义用途的 ECC 密钥</code></pre><p>选择密钥的功能，对于主密钥 Certify (认证) 是必须的。</p><pre><code>Possible actions for this ECC key: Sign Certify AuthenticateCurrent allowed actions: Sign Certify   (S) Toggle the sign capability         # 启用签名   (A) Toggle the authenticate capability # 启用身份验证   (Q) Finished                           # 结束Your selection? S # 默认会启用 Signature (签名) 功能，需要取消勾选 (非必要)Possible actions for this ECC key: Sign Certify AuthenticateCurrent allowed actions: Certify   (S) Toggle the sign capability   (A) Toggle the authenticate capability   (Q) FinishedYour selection? Q # 完成</code></pre><p>选择加密算法并配置密钥相关信息</p><pre><code>Please select which elliptic curve you want: # 选择要使用的椭圆曲线   (1) Curve 25519 *default* # 默认   (2) Curve 448   (3) NIST P-256   (4) NIST P-384   (5) NIST P-521   (6) Brainpool P-256   (7) Brainpool P-384   (8) Brainpool P-512   (9) secp256k1Your selection? 1 # 可根据自身需求选择，推荐 Curve 25519Please specify how long the key should be valid. # 设置密钥有效期限         0 = key does not expire     # 永不过期      &lt;n&gt;  = key expires in n days   # 在 n 天后过期      &lt;n&gt;w = key expires in n weeks  # 在 n 周后过期      &lt;n&gt;m = key expires in n months # 在 n 月后过期      &lt;n&gt;y = key expires in n years  # 在 n 年后过期Key is valid for? (0) 0 # 可自行选择Key does not expire at allIs this correct? (y/N) yGnuPG needs to construct a user ID to identify your key.Real name: FHYunCai             # 姓名Email address: fhyuncai@xxx.com # 邮箱Comment:                        # 注释You selected this USER-ID:    &quot;FHYunCai &lt;fhyuncai@xxx.com&gt;&quot;# 更改姓名（N）、注释（C）、电子邮件地址（E）或确定（O）/退出（Q）Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O# 此处会要求输入密码保护私钥，不要设置的过于简单We need to generate a lot of random bytes. It is a good idea to performsome other action (type on the keyboard, move the mouse, utilize thedisks) during the prime generation; this gives the random numbergenerator a better chance to gain enough entropy.gpg: directory &#39;C:\\Users\\fhyuncai\\AppData\\Roaming\\gnupg\\openpgp-revocs.d&#39; createdgpg: revocation certificate stored as &#39;C:\\Users\\fhyuncai\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\ABCDEF1234567890ABCDEF12M123456789012345.rev&#39; # 吊销密钥生成路径public and secret key created and signed.pub   ed25519 2024-05-27 [C]      ABCDEF1234567890ABCDEF12M123456789012345uid                      FHYunCai &lt;fhyuncai@xxx.com&gt;</code></pre><h3 id="生成子密钥"><a href="#生成子密钥" class="headerlink" title="生成子密钥"></a>生成子密钥</h3><p>现在需要基于主密钥来生成三种类型的子密钥（Signature, Encryption, Authentication）</p><pre><code># 列出密钥 IDgpg --fingerprint -K --keyid-format LONG[keyboxd]---------sec  ed25519/M123456789012345 2024-05-27 [C]      Key fingerprint = ABCD EF12 3456 7890 ABCD   EF12 M123 4567 8901 2345uid                 [ultimate] FHYunCai &lt;fhyuncai@xxx.com&gt;# 编辑主密钥gpg --expert --edit-key M123456789012345 # 此处 M123456789012345 为密钥 IDgpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbHThis is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Secret key is available.sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimate[ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;</code></pre><p>生成 Signature 子密钥</p><pre><code>gpg&gt; addkeyPlease select what kind of key you want:   (3) DSA (sign only)   (4) RSA (sign only)   (5) Elgamal (encrypt only)   (6) RSA (encrypt only)   (7) DSA (set your own capabilities)   (8) RSA (set your own capabilities)  (10) ECC (sign only)  (11) ECC (set your own capabilities)  (12) ECC (encrypt only)  (13) Existing key  (14) Existing key from cardYour selection? 10 # 选择 ECC 仅用于签名Please select which elliptic curve you want:   (1) Curve 25519 *default* # 默认   (2) Curve 448   (3) NIST P-256   (4) NIST P-384   (5) NIST P-521   (6) Brainpool P-256   (7) Brainpool P-384   (8) Brainpool P-512   (9) secp256k1Your selection? 1 # 推荐 Curve 25519Please specify how long the key should be valid.         0 = key does not expire      &lt;n&gt;  = key expires in n days      &lt;n&gt;w = key expires in n weeks      &lt;n&gt;m = key expires in n months      &lt;n&gt;y = key expires in n yearsKey is valid for? (0) 3y          # 3年后过期Key expires at 2027/5/27 23:33:33 # 密钥将于 2027/5/27 23:33:33 过期Is this correct? (y/N) y          # 这些内容是否正确Really create? (y/N) y            # 确认生成We need to generate a lot of random bytes. It is a good idea to performsome other action (type on the keyboard, move the mouse, utilize thedisks) during the prime generation; this gives the random numbergenerator a better chance to gain enough entropy.sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: S[ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; save # 记得保存</code></pre><p>以此类推，分别生成 Encryption 和 Authentication 子密钥，最终密钥列表如下</p><pre><code>gpg --fingerprint -K --keyid-format LONG[keyboxd]---------sec  ed25519/M123456789012345 2024-05-27 [C]      Key fingerprint = ABCD EF12 3456 7890 ABCD   EF12 M123 4567 8901 2345uid                 [ultimate] FHYunCai &lt;fhyuncai@xxx.com&gt;ssb  cv25519/E123456789012345 2024-05-27 [E] [expires: 2027-05-27]ssb  ed25519/A123456789012345 2024-05-27 [A] [expires: 2027-05-27]ssb  ed25519/S123456789012345 2024-05-27 [S] [expires: 2027-05-27]</code></pre><h3 id="备份私钥"><a href="#备份私钥" class="headerlink" title="备份私钥"></a>备份私钥</h3><p>由于转移子密钥后会将本地私钥删除且无法从 Canokey 提取，需要提前备份私钥，顺便将主密钥提取并转移至安全区域。</p><pre><code>gpg -ao master-secret-key.asc --export-secret-key [主密钥ID]  # 主密钥私钥信息，推荐保存到离线介质gpg -ao sign-secret-key.asc --export-secret-key [签名子密钥ID]gpg -ao encrypt-secret-key.asc --export-secret-key [加密子密钥ID]gpg -ao authenticate-secret-key.asc --export-secret-key [认证子密钥ID]</code></pre><h3 id="转移子密钥至-Canokey"><a href="#转移子密钥至-Canokey" class="headerlink" title="转移子密钥至 Canokey"></a>转移子密钥至 Canokey</h3><pre><code>gpg --expert --edit-key M123456789012345gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbHThis is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Secret key is available.sec  ed25519/M123456789012345  # 主密钥     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345  # 子密钥 Signature key     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb  cv25519/E123456789012345  # 子密钥 Encryption key     created: 2024-05-27  expires: 2027-05-27  usage: E ssb  ed25519/A123456789012345  # 子密钥 Authentication key     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; key 1 # 选中第一个子密钥 [S]sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb* ed25519/S123456789012345  # ssb 后面有 * 表示选中这个 key     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb  cv25519/E123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: E ssb  ed25519/A123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; keytocard             # 将密钥写入 CanokeyPlease select where to store the key:   (1) Signature key       # 签名密钥   (3) Authentication key  # 身份验证密钥Your selection? 1          # 将 [S] 密钥写入 Canokey 的 Signature 区域# 此处要求输入解锁主密钥的 PIN 以及 Canokey 的 Admin PINgpg&gt; key 1 # 取消选中第一个子密钥sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb  cv25519/E123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: E ssb  ed25519/A123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; key 2 # 选中第二个子密钥 [E]sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb* cv25519/E123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: E ssb  ed25519/A123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; keytocard         # 将密钥写入 CanokeyPlease select where to store the key:   (2) Encryption key  # 加密密钥Your selection? 2      # 将 [E] 密钥写入 Canokey 的 Encryption 区域gpg&gt; key 2 # 取消选中第二个子密钥sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb  cv25519/E123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: E ssb  ed25519/A123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; key 3 # 选中第三个子密钥 [A]sec  ed25519/M123456789012345     created: 2024-05-27  expires: never       usage: C     trust: ultimate      validity: ultimatessb  ed25519/S123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: S  ssb  cv25519/E123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: E ssb* ed25519/A123456789012345     created: 2024-05-27  expires: 2027-05-27  usage: A [ultimate] (1). FHYunCai &lt;fhyuncai@xxx.com&gt;gpg&gt; keytocard             # 将密钥写入 CanokeyPlease select where to store the key:   (3) Authentication key  # 身份认证密钥Your selection? 2          # 将 [E] 密钥写入 Canokey 的 Authentication 区域gpg&gt; save # 保存后写入完成</code></pre><p>写入完成后验证一下</p><pre><code>gpg --card-statusReader ...........: canokeys.org OpenPGP PIV OATH 0Application ID ...: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXApplication type .: OpenPGPVersion ..........: 3.4Manufacturer .....: CanoKeysSerial number ....: 01234567Name of cardholder: [not set]Language prefs ...: [not set]Salutation .......:URL of public key : [not set]Login data .......: [not set]Signature PIN ....: forcedKey attributes ...: ed25519 cv25519 ed25519Max. PIN lengths .: 64 64 64PIN retry counter : 3 0 3Signature counter : 0UIF setting ......: Sign=off Decrypt=off Auth=offSignature key ....: ABCD EF12 3456 7890 ABCD  EF12 S123 4567 8901 2345      created ....: 2024-05-27 23:33:33Encryption key....: ABCD EF12 3456 7890 ABCD  EF12 E123 4567 8901 2345      created ....: 2024-05-27 23:33:33Authentication key: ABCD EF12 3456 7890 ABCD  EF12 A123 4567 8901 2345      created ....: 2024-05-27 23:33:33General key info..: sub  ed25519/S123456789012345 2024-05-27 FHYunCai &lt;fhyuncai@xxx.com&gt;sec   ed25519/M123456789012345  created: 2024-05-27  expires: neverssb&gt;  cv25519/S123456789012345  created: 2024-05-27  expires: 2027-05-27                                card-no: F1D0 01313506ssb&gt;  ed25519/E123456789012345  created: 2024-05-27  expires: 2027-05-27                                card-no: F1D0 01313506ssb&gt;  ed25519/A123456789012345  created: 2024-05-27  expires: 2027-05-27                                card-no: F1D0 01313506</code></pre><p>至此，所有密钥就已经正确的写入到 Canokey 里面了。</p><h3 id="Canokey-丢失-重置后重新写入"><a href="#Canokey-丢失-重置后重新写入" class="headerlink" title="Canokey 丢失 &#x2F; 重置后重新写入"></a>Canokey 丢失 &#x2F; 重置后重新写入</h3><p>由于 GPG 会绑定智能卡的编号，将密钥写入 Canokey 后无法再次写入，所以需要在以下目录删除相关密钥文件。</p><pre><code># Windows%USERPROFILE%\AppData\roaming\gnupg\private-keys-v1.d# Linux~/.gnupg/private-keys-v1.d</code></pre><p>之后导入备份的私钥后，再根据前面的步骤将子密钥写入 Canokey 即可。</p><h3 id="解决使用-GPG-后无法使用-Web-Console-管理"><a href="#解决使用-GPG-后无法使用-Web-Console-管理" class="headerlink" title="解决使用 GPG 后无法使用 Web Console 管理"></a>解决使用 GPG 后无法使用 Web Console 管理</h3><p>使用以下代码解除占用：</p><pre><code>gpgconf --kill gpg-agent</code></pre><p>待更新</p>]]>
    </content>
    <id>https://yuncaioo.com/post-1197.html</id>
    <link href="https://yuncaioo.com/post-1197.html"/>
    <published>2024-05-27T15:08:10.000Z</published>
    <summary>
      <![CDATA[<p>很久之前，我就了解到可以使用硬件安全密钥来增加安全性，早先了解到的密钥是 YubiKey，但由于价格和各种原因摸了，且 22 年 Cloudflare 的优惠我没上车，所以计划搁置了很久。</p>
<p>直到差不多去年年底的时候，正巧我看到了硬件密钥的相关文章，就趁此机会又]]>
    </summary>
    <title>Canokey 硬件安全密钥折腾记录</title>
    <updated>2024-05-27T16:02:05.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="项目" scheme="https://yuncaioo.com/post-category/program/"/>
    <content>
      <![CDATA[<blockquote><p>展示追番列表的 WordPress 插件，可以在文章或页面上展示自己在 Bangumi 中在看的番剧</p></blockquote><div class="github-info-card shadow-sm" data-getdata="frontend" data-author="fhyuncai" data-project="Bangumi-List"><div class="github-info-card-header"><a href="https://github.com/fhyuncai/Bangumi-List" target="_blank" rel="noopener" no-pjax><i class="fa fa-github" aria-hidden="true"></i> <span class="github-info-card-name-a">fhyuncai/Bangumi-List</span></a></div><div class="github-info-card-description">Loading...</div><div class="github-info-card-bottom"><span class="github-info-card-meta"><i class="fa fa-star" aria-hidden="true"></i> <span class="github-info-card-stars">-</span></span><span class="github-info-card-meta"><i class="fa fa-code-fork" aria-hidden="true"></i> <span class="github-info-card-forks">-</span></span></div></div><p>下载地址：<a href="https://github.com/fhyuncai/Bangumi-List/releases">https://github.com/fhyuncai/Bangumi-List/releases</a> 欢迎加我 <a href="https://bgm.tv/user/525125">Bangumi 好友</a>（</p><h2 id="插件特点"><a href="#插件特点" class="headerlink" title="插件特点"></a>插件特点</h2><ul><li>使用 Bangumi 官方 API 查询公开数据，无需登录</li><li>数据缓存功能，减少访问 API 的频次，加快加载速度</li></ul><h2 id="食用方法"><a href="#食用方法" class="headerlink" title="食用方法"></a>食用方法</h2><ol><li>前往 <a href="https://github.com/fhyuncai/Bangumi-List/releases">GitHub Release</a> 下载最新版本的插件</li><li>将插件压缩包解压到 WordPress 插件目录 <code>/wp-content/plugins/</code></li><li>前往 WordPress 后台启用</li><li><code>设置 &gt; Bangumi 追番列表</code> 配置相关必要信息</li><li>在文章或页面内使用短代码</li></ol>]]>
    </content>
    <id>https://yuncaioo.com/post-1135.html</id>
    <link href="https://yuncaioo.com/post-1135.html"/>
    <published>2023-09-12T13:26:03.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>展示追番列表的 WordPress 插件，可以在文章或页面上展示自己在 Bangumi 中在看的番剧</p>
</blockquote>
<div class="github-info-card shadow-sm" data-getdata="f]]>
    </summary>
    <title>Bangumi 追番列表展示插件</title>
    <updated>2024-03-07T02:31:57.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<div class="admonition shadow-sm admonition-danger"><div class="admonition-body"><p>此方法已过时</p></div></div><p>刚放寒假的时候入坑了明日方舟，而当时还是未成年，只能在 8 点到 22 点时间段内登录，要是晚上忘了登录就把理智给浪费了 (っ °Д °;)っ 然后在 GitHub 上找到了 Tao0Lu 大佬写的 <a href="https://github.com/Tao0Lu/Arknights_Anti-addiction_Cheater">Arknights_Anti-addiction_Cheater</a> ，不过发现有点小问题，而且必须在电脑或者服务器上部署，不能在手机上部署，所以改了一些并上传到 GitHub 上 项目地址：<a href="https://github.com/fhyuncai/Arknights-Anti-addiction">https://github.com/fhyuncai/Arknights-Anti-addiction</a> 本项目仅用于官服，B服想解防沉迷建议修改身份证，这里只写出部分教程 (应该够用) 服务端可以用手机、电脑和服务器搭建，而模拟器、手机都可以连接服务端来屏蔽防沉迷</p><div class="admonition shadow-sm admonition-primary"><div class="admonition-title">注意</div><div class="admonition-body"><p>本教程和项目仅用于学习使用，使用本项目所造成的任何后果均与开发者无关</p></div></div><h3 id="需要的东西"><a href="#需要的东西" class="headerlink" title="需要的东西"></a>需要的东西</h3><ul><li>Termux (手机部署服务端用)</li><li>手机或模拟器 (安卓版本 &gt;&#x3D; 7 还需要 root)</li></ul><h3 id="服务端搭建"><a href="#服务端搭建" class="headerlink" title="服务端搭建"></a>服务端搭建</h3><p><strong>Android</strong></p><ol><li>安装 Termux</li><li>输入 <code>curl https://raw.githubusercontents.com/fhyuncai/Arknights-Anti-addiction/main/install_termux.sh bash</code> 根据提示安装和使用 (一键安装)</li></ol><p><strong>Windows (仅测试 Win10)</strong></p><ol><li><a href="https://github.com/fhyuncai/Arknights-Anti-addiction/archive/refs/heads/main.zip">点击这里</a> 下载压缩包</li><li>将压缩包解压</li><li>双击 start.bat 启动服务</li></ol><p><strong>Linux</strong></p><ol><li>下载压缩包或克隆库</li><li>进入项目文件夹</li><li><code>bash start.sh</code> 启用服务 (若无法使用，请执行 <code>bash install.sh</code> 安装依赖)</li></ol><h3 id="客户端连接"><a href="#客户端连接" class="headerlink" title="客户端连接"></a>客户端连接</h3><p>请确保客户端设备与服务端设备在同一局域网下 (同一 WiFi)</p><h4 id="Android-含模拟器"><a href="#Android-含模拟器" class="headerlink" title="Android (含模拟器)"></a><strong>Android (含模拟器)</strong></h4><p><a href="https://github.com/fhyuncai/Arknights-Anti-addiction#%E7%AC%AC%E4%B8%80%E7%A7%8D%E6%96%B9%E6%B3%95"></a><strong>第一种方法</strong></p><ol><li>进入 WiFi 设置页面</li><li>点击 &#x2F; 长按 当前连接的 WiFi</li><li>修改网络 - 高级选项 - 代理 - 手动</li><li>主机名设置为服务端 IP ，端口设置为服务端端口，保存</li></ol><p><a href="https://github.com/fhyuncai/Arknights-Anti-addiction#%E7%AC%AC%E4%BA%8C%E7%A7%8D%E6%96%B9%E6%B3%95"></a><strong>第二种方法</strong></p><ol><li>安装 HTTP Proxy Client</li><li>输入框内输入 <code>服务端 IP:服务端端口</code> ，如 <code>192.168.1.101:10032</code></li><li>点击 START 启动</li></ol><p><a href="https://github.com/fhyuncai/Arknights-Anti-addiction#%E7%AC%AC%E4%B8%89%E7%A7%8D%E6%96%B9%E6%B3%95-root"></a><strong>第三种方法 (需要Root)</strong></p><ol><li>安装 ProxyDroid</li><li>Host 设置为服务端 IP ，Port 设置为服务端端口</li><li>点击 Proxy Switch 启动</li></ol><h4 id="Android-7-额外步骤"><a href="#Android-7-额外步骤" class="headerlink" title="Android 7+ 额外步骤"></a>Android 7+ 额外步骤</h4><p>由于 Android 7+ 策略修改，APP 默认不信任用户证书，只信任系统证书，所以需要把 Mitmproxy 证书安装到系统里才能使用 证书文件位置在 <code>/system/etc/security/cacerts</code> 里，必须为 PEM 格式，且文件命名必须符合系统证书规范 Windows 的 Mitmproxy 证书位置在 <code>C:\Users\用户名\.mitmproxy</code> 文件夹内，Linux 在 <code>~/.mitmproxy</code> (需要运行一次 Mitmproxy 才会生成)</p><pre><code>openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem -noout # 显示证书 Hash</code></pre><p>返回值为 <code>c8750f0d</code> 将证书名复制到手机上，名称改为 <code>c8750f0d.0</code> 然后使用 ADB 连接手机</p><pre><code>adb shellsumount -o rw,remount / # 重新挂载系统目录为可写cp /sdcard/c8750f0d.0 /system/etc/security/cacerts # 复制证书文件到系统chmod 644 /system/etc/security/cacerts/c8750f0d.0 # 修改文件权限</code></pre><p>证书就安装成功了</p><h4 id="iOS"><a href="#iOS" class="headerlink" title="iOS"></a>iOS</h4><ol><li>进入 设置 - 无线局域网</li><li>点击 当前连接的 WiFi 详情</li><li>底部 配置代理</li><li>选择手动，服务器设置为服务端 IP ，端口设置为服务端端口，储存</li></ol>]]>
    </content>
    <id>https://yuncaioo.com/post-1002.html</id>
    <link href="https://yuncaioo.com/post-1002.html"/>
    <published>2021-05-21T13:48:38.000Z</published>
    <summary>
      <![CDATA[<div class="admonition shadow-sm admonition-danger"><div class="admonition-body"><p>此方法已过时</p></div></div>

<p>刚放寒假的时候入坑了明日方舟，而当时还是未成年，只能在 8]]>
    </summary>
    <title>Mitmproxy + Python 实现明日方舟防沉迷屏蔽</title>
    <updated>2023-02-06T11:13:53.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="笔记" scheme="https://yuncaioo.com/post-category/notes/"/>
    <content>
      <![CDATA[<blockquote><p>2020年已悄然离去，而回顾往年，这是非同寻常的一年。</p></blockquote><h2 id="新冠疫情"><a href="#新冠疫情" class="headerlink" title="新冠疫情"></a>新冠疫情</h2><p>2020 年 1 月 20 日，在去年的年度简报刚刚发布两天时，世界仿佛一夜之间就变了：N95 口罩迅速被抢购一空、出入公共场所需要测量体温、湖北武汉全面封城…我们的开学时间被迫从原来的 2 月 16 日延至 2 月底，上课方式也从线下转为线上教学。 到了下半年，随着线上教学转为线下、举办线下展会、开放电影院等等，情况貌似逐渐好转起来。而到了 2020 年年底，新冠变异的出现、河北石家庄又出现了一批新冠确诊患者、出现无症状感染者…这一切还没有完结。</p><h2 id="博客更新"><a href="#博客更新" class="headerlink" title="博客更新"></a>博客更新</h2><p>原以为线上教学能给我很多时间来更新和填坑，后来发现我错了…基本上课认真听讲的话，时间和在学校的作息是差不多的，也没多出来多少时间，且暑假比正常时间要晚了约 20 天才放，所以去年就只更新了 2 篇技术相关的文章（当然也有我咕的成分）。希望今年能多更新几篇有用的文章。 本站现已加入又拍云联盟，使用又拍云 CDN + 对象存储。</p><h2 id="开坑项目"><a href="#开坑项目" class="headerlink" title="开坑项目"></a>开坑项目</h2><p>6 月份，在机缘巧合下，开了个名为 LTECar 的项目，使用 4G 网络远程遥控小车，并可以实时看到摄像头画面和传感器状态等，有机会细说。 10 月份开了个 WordPress 主题的坑：Memories，原计划是一个月就写完，后来事情也蛮多的就鸽了（，预计能在今年寒假结束前写完并应用于博客。 今年又开了个云盘：<a href="https://drive.loili.com/">樱忆云盘</a>（其实已经在页面底部放了一段时间了），提供免费空间，欢迎大家来玩~</p><h2 id="编程语言"><a href="#编程语言" class="headerlink" title="编程语言"></a>编程语言</h2><p>学习了更多的计算机编程语言，下半年学校开了关于 C 的编程课，不过只上了几节课就不开了。</p><ul><li>C</li><li>Node.JS</li><li>Golang</li><li>汇编</li></ul><h2 id="外出活动"><a href="#外出活动" class="headerlink" title="外出活动"></a>外出活动</h2><p>今年由于新冠导致几乎没有出去活动，只去了下面的一个地方：</p><ul><li>8&#x2F;8 - BiliBili World 2020 - 国家会展中心</li></ul><h2 id="影视"><a href="#影视" class="headerlink" title="影视"></a>影视</h2><p>趁着疫情补了番，顺便看了些电影和纪录片。 番剧：</p><ul><li>某科学的超电磁炮T</li><li>恋爱小行星</li><li>少女终末旅行</li><li>街角魔族</li><li>月刊少女野崎君</li><li>NEW GAME! (S1-2)</li><li>中二病也要谈恋爱 (S1-2)</li><li>辉夜大小姐想让我告白</li><li>One Room (S1-3)</li><li>调教咖啡厅</li><li>LoveLive! 虹咲学园学园偶像同好会</li><li>请问您今天要来点兔子吗？BLOOM</li></ul><p>电影：</p><ul><li>紫罗兰永恒花园外传：永远与自动手记人偶</li><li>路人女主的养成方法 Fine</li><li>HELLO WORLD</li><li>开心麻花系列</li></ul><p>纪录片：</p><ul><li>急诊室故事 (S1-2)</li><li>紧急救护 120</li><li>巡逻现场实录 2018</li><li>派出所的故事 2019</li></ul><h2 id="游戏"><a href="#游戏" class="headerlink" title="游戏"></a>游戏</h2><p>今年由于疫情，时间多了一些，玩的游戏比往年多，下面仅列举一部分。</p><ul><li>Stellaris</li><li>战舰世界</li><li>爱上火车系列</li><li>坎巴拉太空计划</li><li>看门狗2</li></ul><h2 id="尾声"><a href="#尾声" class="headerlink" title="尾声"></a>尾声</h2><p>原本去年在疫情前做了各种计划，却因疫情导致基本就没有实现 orz 不知今年的疫情情况如何，希望能够好转起来，也祝大家新的一年里健康快乐鸭 ٩(ˊᗜˋ*)و</p>]]>
    </content>
    <id>https://yuncaioo.com/post-986.html</id>
    <link href="https://yuncaioo.com/post-986.html"/>
    <published>2021-01-11T13:27:11.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>2020年已悄然离去，而回顾往年，这是非同寻常的一年。</p>
</blockquote>
<h2 id="新冠疫情"><a href="#新冠疫情" class="headerlink" title="新冠疫情"></a>新冠疫情</h2><p>]]>
    </summary>
    <title>2020年度简报</title>
    <updated>2021-01-11T13:27:11.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>我家总共有 3 台路由器：</p><ul><li>Redmi AC2100</li><li>小米 AC2100</li><li>小米路由器 4</li></ul><p>这三台路由器的 5G wifl 正好满格覆盖我家所有区域。 之前刚买小米路由器 4 的时候就想折腾一下刷成第三方固件，但当时完全不会用 TTL 刷机，而这款路由器又没有 USB 接口，只能作罢。而现在听说这款路由器可以用 TTL 刷机，万一刷坏了还可以用另外两台路由器顶着。 <img src="/images/936/936-001.jpg"> 说干就干，首先下载好所有必备的工具和刷机包（由于小米路由器 4 只是在 3G 的基础上换了个壳且阉割了 128MB 内存和 USB 接口，所以固件可以直接用 3G 的）：</p><ul><li>PuTTY，刷机用</li><li>Tftpd，传输固件用</li><li>Breed（点击 <a href="https://breed.hackpascal.net/breed-mt7621-xiaomi-r3g.bin">breed-mt7621-xiaomi-r3g.bin</a> 下载）</li><li>Pandavan（点击  <a href="https://opt.cn2qq.com/padavan/MI-R3G_3.4.3.9-099.trx">MI-R3G_3.4.3.9-099.trx</a>下载）</li></ul><h2 id="通过-TTL-连接电脑"><a href="#通过-TTL-连接电脑" class="headerlink" title="通过 TTL 连接电脑"></a>通过 TTL 连接电脑</h2><p>路由器后盖贴纸下面有一颗螺丝，可以把贴纸撕掉拧下，或者像我一样： <img src="/images/936/936-009.jpg"> 捅个洞把螺丝松掉。 螺丝拧下来后，用刀片之类的很轻松就撬开了。 路由器的主板： <img src="/images/936/936-011.jpg"> （ARE YOU OK 官方玩梗（） 主板左上角的四个孔焊上排针，如图： <img src="/images/936/936-013.jpg"> （技术太烂，排针都歪掉了QAQ） 然后用 USB-TTL 连接，TX 接路由器 RX，GND 接路由器 GND（经测试，小米路由器 4 在接通电源前连接 TX 不会正常启动）。 打开 Putty，选择类型为 Serial，Hostname 为 COM3（可能会不同，可在 设备管理器 &gt; 端口 内查看），Speed 为 115200，点击 Open 打开窗口。 接通路由器的电源，USB-TTL RX 接路由器 TX，等待一会儿后长按网口边上的 Reset 键 5 秒，等待路由器恢复出厂设置并重启。 窗口显示正在启动后一直按住 4 进入命令行： <img src="/images/936/936-019.png"> 输入以下命令持续启用 TTL（重启不会失效）：</p><pre><code class="language-text">setenv uart_en 1saveenv</code></pre><h2 id="刷入-Breed"><a href="#刷入-Breed" class="headerlink" title="刷入 Breed"></a>刷入 Breed</h2><p>为了防止变砖且便于刷机，需要刷入 Breed。 打开 Tftpd，选择一个目录，放入 Breed 文件（为了方便输入文件名，我这里将文件名改为了 uboot.bin），在 Server interface 选择内网IP： <img src="/images/936/936-023.png"> 将路由器 LAN 口用网线连接到电脑，设置固定 IP（我这里设置为 192.168.31.5），网关地址设置为 192.168.31.1，DNS 随便写。 拔下 TTL 线路由器端 TX，重新连接路由器电源，插上 TTL 线，启动过程中持续按 9，出现 “(Y&#x2F;N)” 后按 Y 键开始输入 Tftpd 信息。 第一项为路由器 IP，无需更改；第二项为 Tftpd 服务器地址，输入刚刚设置的固定 IP；第三行为 uboot 固件文件名，输入 Breed 的文件名，回车： <img src="/images/936/936-028.png"> 刷入成功后会引导进入 Breed（如果没有引导，按正常步骤进入 Breed 即可）。</p><h2 id="刷入-Pandavan"><a href="#刷入-Pandavan" class="headerlink" title="刷入 Pandavan"></a>刷入 Pandavan</h2><p>将电脑固定 IP 改为 192.168.1.2，网关 IP 改为 192.168.1.1，在浏览器中输入 192.168.1.1 进入 Breed 控制台： <img src="/images/936/936-029.png"> 点击左侧固件更新，在固件一行右侧点击选择文件，选择预下载好的 PandaVan 固件，点击上传： <img src="/images/936/936-035.png"> 点击上传后会显示固件信息确认页面，确认无误后点击更新： <img src="/images/936/936-041.png"> 点击更新后进度条走完后路由器会重启，待指示灯变成蓝色后即可通过手机或电脑以通常方式连接路由器。 刷入成功截图： <img src="/images/936/936-047.png"></p>]]>
    </content>
    <id>https://yuncaioo.com/post-936.html</id>
    <link href="https://yuncaioo.com/post-936.html"/>
    <published>2020-04-26T13:12:27.000Z</published>
    <summary>
      <![CDATA[<p>我家总共有 3 台路由器：</p>
<ul>
<li>Redmi AC2100</li>
<li>小米 AC2100</li>
<li>小米路由器 4</li>
</ul>
<p>这三台路由器的 5G wifl 正好满格覆盖我家所有区域。 之前刚买小米路由器 4 的时候就想]]>
    </summary>
    <title>小米路由器 4 刷 Pandavan 固件</title>
    <updated>2020-04-26T13:12:27.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>在 Git commit 中使用 GPG 签名可以防止在传输过程中被非法篡改，并在提交时会有已验证的标识。 <img src="/images/911/911-013.png"> 以下教程适用于 Windows ，不完全适用于其他操作系统</p><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ul><li>gpg4win，可在 <a href="https://www.gpg4win.org/">https://www.gpg4win.org</a> 下载</li><li>git</li></ul><h2 id="安装-gpg4win"><a href="#安装-gpg4win" class="headerlink" title="安装 gpg4win"></a>安装 gpg4win</h2><p>双击下载的安装包，选择中文，一路 Next 按需更改选项 安装完成后，会出现如下图标： <img src="/images/911/911-014.png"></p><h2 id="创建-GPG-密钥"><a href="#创建-GPG-密钥" class="headerlink" title="创建 GPG 密钥"></a>创建 GPG 密钥</h2><p>第一次启动程序默认没有密钥，点击“新建密钥对”创建密钥（此处截图是已经有密钥的情况） <img src="/images/911/911-015.png"> 在弹出的窗口内输入名字和电子邮箱地址，点击下一步 <img src="/images/911/911-024.png"> 确认输入正确后点击新建 <img src="/images/911/911-028.png"> 此时会弹出一个窗口要求输入密码，建议输入一个强度相对高又记得住的密码 <img src="/images/911/911-032.png"> 等待创建完成 <img src="/images/911/911-036.png"> <img src="/images/911/911-040.png"> 创建完成后会显示一些信息并提供一些操作</p><h2 id="在-Git-中启用-GPG-签名"><a href="#在-Git-中启用-GPG-签名" class="headerlink" title="在 Git 中启用 GPG 签名"></a>在 Git 中启用 GPG 签名</h2><p>配置 GPG 启动路径，默认是 C:\Program Files (x86)\GnuPG\bin\gpg.exe</p><p>git config –global gpg.program “C:\Program Files (x86)\GnuPG\bin\gpg.exe”</p><p>列出同时具有公共密钥和私有密钥的 GPG 密钥，记录下 GPG 密钥 ID（图中红框内即为密钥 ID ）</p><p>gpg –list-secret-keys –keyid-format LONG</p><p><img src="/images/911/911-003.png"> 开启全局 GPG 签名密钥</p><p>git config –global user.signingkey 8920BEF0FC0CDF02</p><h3 id="设置-Git-提交时使用签名密钥"><a href="#设置-Git-提交时使用签名密钥" class="headerlink" title="设置 Git 提交时使用签名密钥"></a>设置 Git 提交时使用签名密钥</h3><p>全局设置</p><p>git config –global commit.gpgsign true</p><p>当前项目设置</p><p>git config commit.gpgsign true</p><h2 id="将-GPG-密钥添加到-Github-Gitee"><a href="#将-GPG-密钥添加到-Github-Gitee" class="headerlink" title="将 GPG 密钥添加到 Github &#x2F; Gitee"></a>将 GPG 密钥添加到 Github &#x2F; Gitee</h2><p>打印 GPG 公钥，将以 —–BEGIN PGP PUBLIC KEY BLOCK—– 开头和以 —– END PGP PUBLIC KEY BLOCK—– 结尾的内容复制下来</p><p>gpg –armor –export 8920BEF0FC0CDF02</p><h3 id="Github"><a href="#Github" class="headerlink" title="Github"></a>Github</h3><p>登录到 Github ，点击右上角头像，点击 Settings 设置 点击设置边栏中的 SSH and GPG keys <img src="/images/911/911-007.png"> 点击 New GPG key 新建 将复制的 GPG 公钥粘贴在输入框内，点击 Add GPG key 添加 输入 Github 密码，GPG 公钥就成功添加到 Github 内了</p><h3 id="Gitee"><a href="#Gitee" class="headerlink" title="Gitee"></a>Gitee</h3><p>登录到 Gitee ，将鼠标移动到右上角头像处，点击设置 点击设置边栏中的 GPG 公钥 <img src="/images/911/911-010.png"> 将复制的 GPG 公钥粘贴在输入框内，点击确定添加 输入 Gitee 密码，点击验证添加 GPG 密钥</p>]]>
    </content>
    <id>https://yuncaioo.com/post-911.html</id>
    <link href="https://yuncaioo.com/post-911.html"/>
    <published>2020-02-29T12:16:53.000Z</published>
    <summary>
      <![CDATA[<p>在 Git commit 中使用 GPG 签名可以防止在传输过程中被非法篡改，并在提交时会有已验证的标识。 <img src="/images/911/911-013.png"> 以下教程适用于 Windows ，不完全适用于其他操作系统</p>
<h2 id="准备工作"]]>
    </summary>
    <title>Git中使用GPG签名Commit</title>
    <updated>2023-03-05T05:18:35.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="笔记" scheme="https://yuncaioo.com/post-category/notes/"/>
    <content>
      <![CDATA[<blockquote><p>2019年已成为过去式，2020年已到来 趁着寒假来回顾一下2019年我做了什么</p></blockquote><h2 id="统计"><a href="#统计" class="headerlink" title="统计"></a>统计</h2><p>2019年博客访问 PV 约 20469 次，评论数 97 条 嗯…应该是咕咕咕的缘故，今年如果有时间的话希望能多更几篇。 2019年一言 API 调用次数为 25775 次，通用 API 调用次数为 136683 次 API 看来也是有人用的啊！</p><h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><p>去年开的坑不多，只有 <a href="https://github.com/fhyuncai/UptimeRobot-Page">UptimeRobot-Page</a> 是公开的。 以及为 <a href="https://github.com/DIYgod/RSSHub">RSSHub</a> 贡献了<a href="https://docs.rsshub.app/picture.html#bing-bi-zhi">一段代码</a>。 去年本计划学会 Python ，却因为时间不充裕导致只学会了一点点，今年会继续学习的。</p><h2 id="活动"><a href="#活动" class="headerlink" title="活动"></a>活动</h2><p>没有去过很远的地方，还是在江浙沪这一带转悠。 去的地方有： 上海第八届理想乡 (上海广大会展中心) 、2019洛天依生日会 (上海环球金融中心) 、<a href="/post-874.html">THE Hack 2019 (上海交大闵行校区)</a> 、BML VR 2019 (上海梅赛德斯奔驰文化中心) 、Bilibili World 2019 (上海新国际博览中心) 、迪士尼 在 Bilibili World 和 <a href="https://diygod.me/">DIYgod</a> 、<a href="http://eyhn.in/">滑稽</a>等人面了基。</p><h2 id="影视"><a href="#影视" class="headerlink" title="影视"></a>影视</h2><p>没有专心看完过一部电视剧，但是看了一些感兴趣的电影。 2019年看过的电影有： 《流浪地球》、《罗小黑战记》、《中国机长》、《青春猪头少年不会梦到怀梦美少女》 去年新出的番剧看的很少，主要还是补番。 2019年看过的番剧有： 《K-ON!》、《吹响吧！上低音号》、《Angel Beats!》、《灰色三部曲》、《BanG Dream!》、《可塑性记忆》、《玉子市场》、《樱花庄的宠物女孩》、《某科学的一方通行》</p><h2 id="阅读"><a href="#阅读" class="headerlink" title="阅读"></a>阅读</h2><p>买了台 Kindle ，本是想看看推荐的书，最后还是下载了轻小说。 2019年阅读过的书籍有： 《烟花》、《活着》、《简爱》、《关于我转生成为史莱姆这件事》、《青春猪头少年系列》、《流浪地球》、《乡土中国》</p><h2 id="游戏"><a href="#游戏" class="headerlink" title="游戏"></a>游戏</h2><p>没玩多少游戏，酸你们的 Switch 。 2019年玩的游戏有： GTA5 、彩虹六号、地平线4、欧卡2、城市天际线 等</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>曾在2018年的年度报告上写了希望成功考上市重点高中，可惜并没有考上。 不过成功考上了区重点高中，也算完成了一半。 2019的学习还是不够努力，今年会更加努力学习的。</p><h2 id="未来"><a href="#未来" class="headerlink" title="未来"></a>未来</h2><p>最近接触了开发板，所以今年会开始学习 C++ (数据类型搞死我啊) 。 还有成绩希望能考到班级前十什么的。 最后在此祝各位小伙伴们新年快乐，心想事成 (〃·▽·〃)</p>]]>
    </content>
    <id>https://yuncaioo.com/post-903.html</id>
    <link href="https://yuncaioo.com/post-903.html"/>
    <published>2020-01-18T04:43:33.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>2019年已成为过去式，2020年已到来 趁着寒假来回顾一下2019年我做了什么</p>
</blockquote>
<h2 id="统计"><a href="#统计" class="headerlink" title="统计"></a>统计</h]]>
    </summary>
    <title>FH云彩の2019年度简报</title>
    <updated>2020-02-29T12:25:24.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="项目" scheme="https://yuncaioo.com/post-category/program/"/>
    <content>
      <![CDATA[<p>某日，在 <a href="https://www.giuem.com/">Giuem</a> 大佬的 Github 上看到了 <a href="https://github.com/giuem/uptimerobot-page">UptimeRobot-Page</a> 项目，当时就部署在自己的服务器上作为自己的<a href="https://status.yuncaioo.com/">状态页</a>了，虽然各方面都挺好，但是需要……（编不下去了，就是自己想折腾开坑写 PHP 版的 UptimeRobotPage 目前项目已发布在 <a href="https://github.com/fhyuncai/UptimeRobot-Page">Github</a> 上（求 star），只需要保存一个 PHP 文件至站点目录，修改一下配置（支持环境变量，方便部署至 Heroku ），即可轻松运行 （广告打死 Demo 页：<a href="https://uptimerobot-page.herokuapp.com/">https://uptimerobot-page.herokuapp.com</a></p>]]>
    </content>
    <id>https://yuncaioo.com/post-887.html</id>
    <link href="https://yuncaioo.com/post-887.html"/>
    <published>2019-07-31T05:08:03.000Z</published>
    <summary>
      <![CDATA[<p>某日，在 <a href="https://www.giuem.com/">Giuem</a> 大佬的 Github 上看到了 <a href="https://github.com/giuem/uptimerobot-page">UptimeRobot-Page</a>]]>
    </summary>
    <title>在你的服务器上添加服务状态监控页</title>
    <updated>2019-07-31T05:08:14.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="生活" scheme="https://yuncaioo.com/post-category/life/"/>
    <content>
      <![CDATA[<blockquote><p>不是很懂相关专业知识，没想到我这种菜鸡都能通过审核，选手群里的大佬们一个比一个能装弱，做出来的项目一个比一个好qwq</p></blockquote><h2 id="面基"><a href="#面基" class="headerlink" title="面基"></a>面基</h2><p>本来团队里有4个人，但是一位大佬突然有事跑路了。不过这对我们并没有什么影响。（<a href="https://itroy.cc/">Troy</a>，<a href="https://www.bleshi.com/">BleShi</a>）</p><p><img src="/images/874/874-017.jpg" alt="和团队里的大佬们在交大门口的合影"></p><p><em>和团队里的大佬们在交大门口的合影</em></p><p><img src="/images/874/874-006.jpg" alt="和3位大佬面基"></p><p><em>和3位大佬面基</em></p><h2 id="现场"><a href="#现场" class="headerlink" title="现场"></a>现场</h2><p>比赛在SJTU的微电子学院一楼大厅举行，现场准备了很多零食和饮料，午饭和晚饭在交大第五餐饮大楼解决，总体来说挺不错的（除了比赛期间电源烧了、网络断了一段时间、插座6个人共享3x3和2x3外）。</p><p><img src="/images/874/874-015.jpg" alt="凌晨的比赛现场"></p><p><em>凌晨的比赛现场</em></p><h2 id="我们的项目"><a href="#我们的项目" class="headerlink" title="我们的项目"></a>我们的项目</h2><p>我们选择了 <strong>如何优化并改变人们的学习方式</strong> 作为本次主题，开发了一款专为上海高三考生提升学习效率。 详情可<a href="https://www.bleshi.com/life/THEHack2019.html">点击查看</a>。</p><h2 id="评审阶段"><a href="#评审阶段" class="headerlink" title="评审阶段"></a>评审阶段</h2><p>我们可能是第一个被评审的项目，虽然最终没有比上其他大佬（废话），但毕竟是第一年，做出了这么一个APP，我们几个人都很开心的o(*≧▽≦)ツ ~ ┴┴</p><h2 id="尾声"><a href="#尾声" class="headerlink" title="尾声"></a>尾声</h2><p>一大堆纪念品： <img src="/images/874/874-004.jpg"> 拿到了Google的手提袋很开心！ 有缘明年再见！</p>]]>
    </content>
    <id>https://yuncaioo.com/post-874.html</id>
    <link href="https://yuncaioo.com/post-874.html"/>
    <published>2019-07-16T07:50:47.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>不是很懂相关专业知识，没想到我这种菜鸡都能通过审核，选手群里的大佬们一个比一个能装弱，做出来的项目一个比一个好qwq</p>
</blockquote>
<h2 id="面基"><a href="#面基" class="headerlink" ti]]>
    </summary>
    <title>THE Hack 2019 创客马拉松之行</title>
    <updated>2024-05-27T15:05:02.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="笔记" scheme="https://yuncaioo.com/post-category/notes/"/>
    <content>
      <![CDATA[<blockquote><p>不知不觉，一年就过去了。 2018年是最令我难忘的一年。 为什么难忘呢？因为这一年，我结交了很多新朋友，比如<a href="https://me.ble.ac.cn/">蓝小柠</a>、<a href="https://blog.misakacloud.net/">SkyRain</a>等等；还立了许多新项目(flag)，比如<a href="https://push.yuncaioo.com/">Push</a>、<a href="https://hitokoto.yuncaioo.com/">一言</a>、<a href="/post-725.html">API</a>等等；暑假里第一次和<a href="https://www.geekcj.com/">闲淡酱</a>面基……</p></blockquote><h2 id="数据统计"><a href="#数据统计" class="headerlink" title="数据统计"></a>数据统计</h2><p>据不完全统计，2018&#x2F;01&#x2F;01~2018&#x2F;12&#x2F;31博客相关统计数据如下：</p><ul><li>博客访问量：14,181 次</li><li>博客访客数：1,559 人</li><li>博客评论数：148 条</li></ul><p>没想到一年会有这么多人来围观我，有点小鸡冻呢(〃·▽·〃) 新开的坑没有在博客公开的情况下竟然也有很大的调用量：</p><ul><li>一言API总调用量：10,971 次</li><li>云彩APIV2总调用量：4,528 次</li></ul><h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><p>2018年开了很多坑，大部分都是用PHP写的，希望今年能学会Python。</p><h2 id="公开的项目"><a href="#公开的项目" class="headerlink" title="公开的项目"></a>公开的项目</h2><p>2018年，我总共发布了3个公开服务：<a href="/post-719.html">云智网盘</a>、<a href="/post-725.html">云彩APIV2</a>、<a href="/post-737.html">2w0短网址</a> 最受关注的是云智网盘，但是由于服务器被删掉导致东西全没了，所以服务挂了4个月。 但是现在，云智网盘又回来了，免费提供2G储存空间（多了1GB），欢迎大家来注册鸭。</p><h2 id="经历了各种灾难的服务器"><a href="#经历了各种灾难的服务器" class="headerlink" title="经历了各种灾难的服务器"></a>经历了各种灾难的服务器</h2><p>和17年一样，服务器又是在各种灾难里度过的。 12月29日，博客遭到了CC攻击，刷了大约400G的流量，欠费110元。在24小时以后，由于我未能结清欠款导致IP暂停服务。 12月30日，博客恢复。</p><h2 id="展望未来"><a href="#展望未来" class="headerlink" title="展望未来"></a>展望未来</h2><p>马上就要中考了，希望自己能考个市重点吧，所以今年上半年要认真学习文章大概会咕发的比较少，希望各位多多包涵啦。 同时，祝大家能快乐地度过这一年(〃·▽·〃) 对了对了，欢迎大家来当我的绒布球加入我的QQ群：167991446，我会不定期在群里发好玩的东西！</p>]]>
    </content>
    <id>https://yuncaioo.com/post-825.html</id>
    <link href="https://yuncaioo.com/post-825.html"/>
    <published>2019-01-30T15:51:29.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>不知不觉，一年就过去了。 2018年是最令我难忘的一年。 为什么难忘呢？因为这一年，我结交了很多新朋友，比如<a href="https://me.ble.ac.cn/">蓝小柠</a>、<a href="https://blog.misakacl]]>
    </summary>
    <title>FH云彩の2018年度简报</title>
    <updated>2020-02-29T12:25:30.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>一直想买群晖NAS，可是自己又没钱，怎么办？ 自己搭建黑群晖啊（滑稽 正好家里有一堆闲置的东西，可以拿来组黑群晖 <strong>此教程不包括洗白</strong> <strong>需要准备的东西：</strong></p><ol><li>U盘，4G以上的都行，不需要太大，浪费</li><li>瘦客户机（某宝上有售）</li><li>硬盘，做黑群晖系统安装和储存文件</li><li>电脑，用来安装黑群晖系统</li></ol><h2 id="1-下载安装需要的文件"><a href="#1-下载安装需要的文件" class="headerlink" title="1. 下载安装需要的文件"></a>1. 下载安装需要的文件</h2><p>这里提供的是32位CPU最高支持的版本 下载地址：<a href="https://pan.baidu.com/s/1EBK_bEiyQb0ROG41Dw4JTA">https://pan.baidu.com/s/1EBK_bEiyQb0ROG41Dw4JTA</a> 提取码：lgrr 下载完毕后，双击 SynologyAssistantSetup-5.0-4448.exe ，安装 SynologyAssistant</p><h2 id="2-写入引导镜像"><a href="#2-写入引导镜像" class="headerlink" title="2. 写入引导镜像"></a>2. 写入引导镜像</h2><p>将U盘插入到电脑上，双击 SynologyAssistant&#x2F;Win32DiskImager.exe ，按下图操作 <img src="/images/767/767-022.png"></p><h2 id="3-安装黑群晖系统"><a href="#3-安装黑群晖系统" class="headerlink" title="3. 安装黑群晖系统"></a>3. 安装黑群晖系统</h2><p>安装之前，请将BIOS的硬盘模式设置为ACHI，详情可咨询卖家或自行百度 把U盘插上主机，开机，进入BIOS，将第一引导设置为你的U盘（部分机型开机时按F2选择U盘启动即可，比如华为Gi945），F10保存并重启，会自动进入U盘引导 出现选择项时选择第二项“Nanoboot DSM 5.0-4528 Install&#x2F;Upgrade”，第二个菜单直接回车，等到出现“DiskStation login”字样时，打开 SynologyAssistant ，找到自己的主机 <img src="/images/767/767-004.png"> 右键自己的瘦客户机，点安装 <img src="/images/767/767-006.png"> 选择安装文件，点“下一步” <img src="/images/767/767-010.png"> 输入黑群晖账号信息，点“下一步” <img src="/images/767/767-014.png"> 然后就会开始安装 <img src="/images/767/767-019.png"> 等几分钟就会安装好 出现“等待重启”时，留意下主机，如果关机了需要开机 安装成功后即可输入主机IP:5000登录 <img src="/images/767/767-026.png"></p><h2 id="4-最后的设置"><a href="#4-最后的设置" class="headerlink" title="4. 最后的设置"></a>4. 最后的设置</h2><p>首次登录会提示创建QuickConnect，没有洗白和没有账号的请跳过 进入 控制面板-&gt;更新和还原-&gt;更新设置 取消自动更新 <img src="/images/767/767-030.png"> 进入 控制面板-&gt;共享文件夹-&gt;新增 添加储存目录 <img src="/images/767/767-035.png"></p><h2 id="5-可选选项"><a href="#5-可选选项" class="headerlink" title="5. 可选选项"></a>5. 可选选项</h2><h3 id="通过外网访问NAS"><a href="#通过外网访问NAS" class="headerlink" title="通过外网访问NAS"></a>通过外网访问NAS</h3><p>有时候想在外网访问自己家的NAS传输文件，由于黑群晖无法使用 QuickConnect ，所以我们需要端口映射 电信光猫需要超级管理员密码设置端口映射，打个电话给电信就可以问到了 由于群晖需要映射的端口很多（<a href="https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/General/What_network_ports_are_used_by_Synology_services">需要映射的端口列表</a>），我就直接映射DMZ主机了 <img src="/images/767/767-040.png"> 把域名解析到IP上就可以了 电信IP每过几天就会改一下，而且还不知道什么时候改，每过几天手动改一下太麻烦了，所以需要DDNS 群晖系统自带DDNS功能，但是不支持阿里云域名，所以我自己写了一个，放到自己服务器上就行（写的不好QAQ</p><pre><code class="language-php">&lt;?php//error_reporting(0);function push($text){  //错误推送}if(!empty($_SERVER[&quot;HTTP_CLIENT_IP&quot;])){  $cip = $_SERVER[&quot;HTTP_CLIENT_IP&quot;];}elseif(!empty($_SERVER[&quot;HTTP_X_FORWARDED_FOR&quot;])){  $cip = $_SERVER[&quot;HTTP_X_FORWARDED_FOR&quot;];}elseif(!empty($_SERVER[&quot;REMOTE_ADDR&quot;])){  $cip = $_SERVER[&quot;REMOTE_ADDR&quot;];}else{  push(&quot;NAS IP获取失败&quot;);  $put = file_put_contents(&#39;ip.txt&#39;,$cip);  exit();}if(file_get_contents(&#39;ip.txt&#39;) != $cip){  function percentEncode($str)  {    $res = urlencode($str);    $res = preg_replace(&#39;/\+/&#39;, &#39;%20&#39;, $res);    $res = preg_replace(&#39;/\*/&#39;, &#39;%2A&#39;, $res);    $res = preg_replace(&#39;/%7E/&#39;, &#39;~&#39;, $res);    return $res;  }  function computeSignature($parameters, $accessKeySecret)  {    ksort($parameters);    $canonicalizedQueryString = &#39;&#39;;    foreach($parameters as $key =&gt; $value)    {      $canonicalizedQueryString .= &#39;&amp;&#39; . percentEncode($key)        . &#39;=&#39; . percentEncode($value);    }    $stringToSign = &#39;POST&amp;%2F&amp;&#39; . percentencode(substr($canonicalizedQueryString, 1));    $signature = base64_encode(hash_hmac(&#39;sha1&#39;, $stringToSign, $accessKeySecret . &#39;&amp;&#39;, true));    return $signature;  }  date_default_timezone_set(&quot;GMT&quot;);  $accessKeyId = &#39;&lt;accessKeyId&gt;&#39;;  $accessKeySecret = &#39;&lt;accessSecret&gt;&#39;;  $data = array(    &#39;Format&#39; =&gt; &#39;JSON&#39;,    &#39;Version&#39; =&gt; &#39;2015-01-09&#39;,    &#39;AccessKeyId&#39; =&gt; $accessKeyId,    &#39;SignatureVersion&#39; =&gt; &#39;1.0&#39;,    &#39;SignatureMethod&#39; =&gt; &#39;HMAC-SHA1&#39;,    &#39;SignatureNonce&#39;=&gt; time().date(&quot;is&quot;),    &#39;Timestamp&#39; =&gt; date(&quot;Y-m-d\TH:i:s\Z&quot;),    &#39;Action&#39; =&gt; &#39;UpdateDomainRecord&#39;,    &#39;RecordId&#39; =&gt; &#39;&#39;, //解析ID,先到域名解析里解析一个IP，再进入 https://api.aliyun.com/#product=Alidns&amp;search=DescribeDomainRecords&amp;api=DescribeDomainRecords&amp;params={}&amp;tab=DEMO&amp;lang=PHP 查询解析ID    &#39;RR&#39; =&gt; &#39;&#39;, //解析前缀    &#39;Type&#39; =&gt; &#39;A&#39;,    &#39;Value&#39; =&gt; $cip  );  $data[&#39;Signature&#39;] = computeSignature($data, $accessKeySecret);  $url = &#39;https://alidns.aliyuncs.com/&#39;;  $ch = curl_init();  curl_setopt($ch, CURLOPT_URL,$url);  curl_setopt($ch, CURLOPT_POST,count($data));  curl_setopt($ch, CURLOPT_POSTFIELDS,$data);  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  $result = curl_exec($ch);  if(!$result-&gt;RecordId){    push(&quot;NAS IP解析失败：&quot;.$result);  }  echo $result;  $put = file_put_contents(&#39;ip.txt&#39;,$cip);}?&gt;</code></pre><p>然后添加计划任务到NAS上就行 既然要从外网通过域名访问，那么SSL必不可少 群晖系统也自带了可免费签发并有小绿锁的SSL证书（我没试过），我就直接把自己的泛域名证书上传上去了 <img src="/images/767/767-048.png"> <img src="/images/767/767-044.png"> 完成了以上的操作，就可以通过 <a href="https://nas.yuncaioo.com:5001/">https://nas.yuncaioo.com:5001</a> 访问自己家的NAS了（已取消该域名通过外网访问NAS，那么喜欢D人么？） <img src="/images/767/767-058.png"> <img src="/images/767/767-052.png"></p><h2 id="已知的问题"><a href="#已知的问题" class="headerlink" title="已知的问题"></a>已知的问题</h2><h3 id="无法设置“硬件和电源”选项"><a href="#无法设置“硬件和电源”选项" class="headerlink" title="无法设置“硬件和电源”选项"></a>无法设置“硬件和电源”选项</h3><p>有可能是因为瘦客户机没有风扇，导致“风扇设置”没东西 <img src="/images/767/767-063.png"> 导致我无法保存 <img src="/images/767/767-068.png"> ↓↓↓ 提示设置成功后退出的提示 <img src="/images/767/767-073.png"></p>]]>
    </content>
    <id>https://yuncaioo.com/post-767.html</id>
    <link href="https://yuncaioo.com/post-767.html"/>
    <published>2018-12-03T10:18:28.000Z</published>
    <summary>
      <![CDATA[<p>一直想买群晖NAS，可是自己又没钱，怎么办？ 自己搭建黑群晖啊（滑稽 正好家里有一堆闲置的东西，可以拿来组黑群晖 <strong>此教程不包括洗白</strong> <strong>需要准备的东西：</strong></p>
<ol>
<li>U盘，4G以上的都行，不需要太]]>
    </summary>
    <title>低成本搭建NAS服务</title>
    <updated>2018-12-08T03:48:13.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="笔记" scheme="https://yuncaioo.com/post-category/notes/"/>
    <content>
      <![CDATA[<p>阿里云最新推出的学生机购买活动，这次活动最吸引人的地方就在于：12~24周岁自动获得学生身份！！！而且不需要在校大学生认证就可以续费了！！！超级良心的一次活动有木有？像我这种又没有钱又不是大学生的站长只能买买学生机233</p><hr><p><strong>活动网址：</strong><a href="https://promotion.aliyun.com/ntms/act/campus2018.html">https://promotion.aliyun.com/ntms/act/campus2018.html</a>（搭配<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=xas7tkyl">优惠券</a>食用更佳） **服务器配置：**CPU1核，内存2G，带宽1M，系统盘40G <strong>本次活动规则：</strong></p><blockquote><p>学生优惠弹性计算产品提供两种配置选择： 1、轻量应用服务器：<strong>（CPU性能不限）</strong> 固定机型 9.5元&#x2F;月：CPU1核，内存2G，带宽1M，系统盘40G，专有网络，优惠地域为华南1、华北2； 2、云服务器ECS：<strong>（CPU性能不限）</strong> 固定机型 9.5元&#x2F;月：CPU1核，内存2G，带宽1M，系统盘40G，专有网络，系列三，优惠地域为华南1、华北2、华东2； 3、轻量应用服务器和云服务器ECS学生优惠二选一：即当前已经保有学生专享云服务器的用户，实例到期释放后，即可购买学生优惠轻量应用服务器；选购学生优惠轻量应用服务器的用户，在实例到期释放后，也可选择购买学生优惠云服务器； 4、未进行学生认证的个人实名认证用户可直接购买学生机，仅可购买1个月，限一次机会；用户完成学生认证后，可按学生优惠价格续费；未完成学生认证的用户，实例到期后可按原价续费； 5、年龄在12岁~24岁之间的个人实名认证用户 和 全日制在校大学生在学生认证有效期内，满足上述任一条件即可享受优惠价格，同一用户只能保有一台学生优惠弹性计算产品（同一用户是指：包含但不仅限于根据不同阿里云账号在注册、登录、使用中的关联信息，阿里云判断其实际为同一用户。关联信息举例：同一证件、同一手机号、同一支付账号、同一设备、同一地址等）； 6、升级如超过指定配置，则不再享受学生优惠； 7、全日制在校大学生在学生认证时，需同时完成阿里云实名认证、学生认证，且两者信息一致，才能购买学生特惠ECS，学生特惠不与其他优惠同享； 8、续费：在学生身份有效期内，且服务器未到期前，学生机可按学生优惠价格续费，每次续费行为，续费时长在1-12个月内自行选择； 9、为保证活动的公平公正，阿里云有权对恶意刷抢（如通过程序等技术手段）活动资源，长期资源闲置，利用资源从事违法违规行为的用户进行拦截或收回优惠产品使用资格。 10、云翼计划新推出“推荐学生新用户返时长活动”，了解<a href="https://promotion.aliyun.com/ntms/act/xsgroup/home.html">活动详情</a> 。</p></blockquote><p>这次活动不知道什么时候结束，先撸了再说！ Ps:最近博主撸了很多东西（国外电话卡、免费服务器等），有机会写教程哈！</p>]]>
    </content>
    <id>https://yuncaioo.com/post-729.html</id>
    <link href="https://yuncaioo.com/post-729.html"/>
    <published>2018-09-16T14:17:22.000Z</published>
    <summary>
      <![CDATA[<p>阿里云最新推出的学生机购买活动，这次活动最吸引人的地方就在于：12~24周岁自动获得学生身份！！！而且不需要在校大学生认证就可以续费了！！！超级良心的一次活动有木有？像我这种又没有钱又不是大学生的站长只能买买学生机233</p>
<hr>
<p><strong>活动网址：<]]>
    </summary>
    <title>撸阿里云2018全新学生机</title>
    <updated>2020-02-29T12:24:08.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>前段时间有点手痒无聊(￣▽￣)，就想弄个点歌台在Bilibili上直播，但是CentOS的yum源并没有ffmpeg…… emmm…… 网上查了下，发现关于CentOS安装ffmpeg的教程挺多的，但是发现很多教程时间很久远了，资源早已失效，怎么办呢？ 幸好这些教程中的部分资源还是有效的，所以我寻找了很多教程，拼接起来，终于成功安装了ffmpeg(≧▽≦)</p><hr><h1 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h1><h3 id="1-安装编译环境"><a href="#1-安装编译环境" class="headerlink" title="1.安装编译环境"></a>1.安装编译环境</h3><pre><code class="language-bash">yum install -y git automake autoconf libtool gcc gcc-c++</code></pre><h3 id="2-安装X264"><a href="#2-安装X264" class="headerlink" title="2.安装X264"></a>2.安装X264</h3><pre><code class="language-bash">git clone git://git.videolan.org/x264.gitcd x264sudo ./configure --prefix=/usr --enable-shared --enable-staticmakesudo make installcd ..rm -rf x264</code></pre><h3 id="3-安装Lame"><a href="#3-安装Lame" class="headerlink" title="3.安装Lame"></a>3.安装Lame</h3><p>下载Lame到服务器：<a href="https://sourceforge.net/projects/lame/files/latest/download">https://sourceforge.net/projects/lame/files/latest/download</a></p><pre><code class="language-bash">tar -xzf lame-3.99.5.tar.gzcd lame-3.99.5sudo ./configure --prefix=/usr --enable-shared --enable-staticmakesudo make installcd ..rm -rf lame-3.99.5</code></pre><h3 id="4-安装FFmpeg"><a href="#4-安装FFmpeg" class="headerlink" title="4.安装FFmpeg"></a>4.安装FFmpeg</h3><p>下载ffmpeg到服务器：<a href="http://www.ffmpeg.org/releases">http://www.ffmpeg.org/releases</a></p><pre><code class="language-bash">xz -d ffmpeg-3.4.tar.xztar -xvf ffmpeg-3.4.tarcd ffmpeg-3.4sudo ./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-libmp3lame --enable-sharedmakesudo make installcd ..rm -rf ffmpeg-3.4</code></pre><p>OR</p><pre><code class="language-bash">git clone git://source.ffmpeg.org/ffmpeg.gitcd ffmpegsudo ./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-libmp3lame --enable-sharedmakesudo make installcd ..rm -rf ffmpeg</code></pre><h3 id="5-引入lib"><a href="#5-引入lib" class="headerlink" title="5.引入lib"></a>5.引入lib</h3><pre><code class="language-bash">vi /etc/ld.so.conf.d/ffmpeg.conf/usr/local/ffmpeg/lib/usr/local/lib</code></pre><h3 id="6-添加环境变量"><a href="#6-添加环境变量" class="headerlink" title="6.添加环境变量"></a>6.添加环境变量</h3><pre><code class="language-bash">vi /etc/profileexport FFMPEG_HOME=/usr/local/ffmpegexport PATH=$FFMPEG_HOME/bin:$PATH</code></pre><h3 id="7-应用配置"><a href="#7-应用配置" class="headerlink" title="7.应用配置"></a>7.应用配置</h3><pre><code class="language-bash">sudo ldconfigsource /etc/profile</code></pre><p>至此，FFmpeg就安装完成了 接下来就可以<a href="https://www.chenxublog.com/2017/06/05/raspi-live-24h-bilibili-choice.html">安装点歌台</a>了 我的博客即将搬运同步至腾讯云+社区，邀请大家一同入驻：<a href="https://cloud.tencent.com/developer/support-plan?invite%5C_code=2mat9mzc2f40k">https://cloud.tencent.com/developer/support-plan?invite\_code=2mat9mzc2f40k</a></p>]]>
    </content>
    <id>https://yuncaioo.com/post-670.html</id>
    <link href="https://yuncaioo.com/post-670.html"/>
    <published>2018-05-05T01:56:24.000Z</published>
    <summary>
      <![CDATA[<p>前段时间有点手痒无聊(￣▽￣)，就想弄个点歌台在Bilibili上直播，但是CentOS的yum源并没有ffmpeg…… emmm…… 网上查了下，发现关于CentOS安装ffmpeg的教程挺多的，但是发现很多教程时间很久远了，资源早已失效，怎么办呢？ 幸好这些教程中的部分]]>
    </summary>
    <title>折腾一下，用CentOS在B站直播</title>
    <updated>2018-05-10T14:17:57.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>折腾了很多SSL证书，免费的证书随处都有，但是免费的泛域名证书可就不是哪都有了。目前各大云服务商卖的泛域名SSL证书最低价格基本都在1500左右，而且还要提供各种资料…… 这里推荐一个免费的泛域名SSL证书申请网站：<a href="https://ssl.ni-co.moe/">https://ssl.ni-co.moe</a> FBI Warning: 申请之前请关闭域名隐私保护！ <strong>申请流程：</strong></p><ol><li><a href="https://csr.chinassl.net/generator-csr.html">获取CSR</a>（这里需要注意的一点是生成CSR页面上的域名那里一定要填*.yuncaioo.com这样的，要不然申请到的是单域名的）； <img src="/images/646/646-016.png"></li><li>进入<a href="https://ssl.ni-co.moe/">しらSSL</a>，填上CSR等各种信息后提交； <img src="/images/646/646-024.png"> （必须fxxk gfw才能正常申请，否则无法申请，这张图未显示fxxk gfw后的结果）</li><li>会提示选择用哪个域名管理员邮箱来接收验证地址，选择邮箱后就可以等邮件发到你选择的邮箱内了；</li><li>你会在你选择的邮箱内收到验证邮件，点击邮件里的验证链接，然后耐心等待； <img src="/images/646/646-030.png"></li><li>过一会就能在开始选的邮箱那收到附带证书的邮件了</li></ol><p>在部署证书前，<strong>建议</strong>先补全以下证书链：</p><pre><code>-----BEGIN CERTIFICATE-----MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAwMDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfjkmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKLdljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFsMVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAAcJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGnkCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4hetZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYEVR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWduLm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTSxRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eGl87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCVodTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDmMTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZUw==-----END CERTIFICATE-----</code></pre><p>顺便附上我的证书： <img src="/images/646/646-004.png"> <img src="/images/646/646-007.png"> PS: 十分感谢<a href="https://blog.ni-co.moe/">矢澤にこ</a>提供的免费SSL证书qwq</p>]]>
    </content>
    <id>https://yuncaioo.com/post-646.html</id>
    <link href="https://yuncaioo.com/post-646.html"/>
    <published>2018-03-03T08:32:25.000Z</published>
    <summary>
      <![CDATA[<p>折腾了很多SSL证书，免费的证书随处都有，但是免费的泛域名证书可就不是哪都有了。目前各大云服务商卖的泛域名SSL证书最低价格基本都在1500左右，而且还要提供各种资料…… 这里推荐一个免费的泛域名SSL证书申请网站：<a href="https://ssl.ni-co.mo]]>
    </summary>
    <title>免费的泛域名SSL证书！</title>
    <updated>2018-03-03T08:32:25.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="笔记" scheme="https://yuncaioo.com/post-category/notes/"/>
    <content>
      <![CDATA[<p>时光飞逝，2017已成为过去，2018将代替逝去的2017，继续陪伴着我们 2017年又是平淡的一年，并没有什么大事发生</p><h2 id="学习"><a href="#学习" class="headerlink" title="学习"></a>学习</h2><p>今年比往年都更加努力了，尽量减少了休息日出去玩的时间，留在家里看书、学习，所以博客更新的东西也少了，都是一些乱七八糟的东西</p><h2 id="成绩"><a href="#成绩" class="headerlink" title="成绩"></a>成绩</h2><p>因为更认真了，所以语文作文发挥还算不错，课内现代文还是不行；数学……简答题空了2题……8分一道的题啊QAQ所以要挂科了；英语，也差了些，尤其是最后的阅读理解中的回答问题，空了3题……也会挂科吧TAT</p><h2 id="今年"><a href="#今年" class="headerlink" title="今年"></a>今年</h2><p>云彩现在是初二，没有多少时间了，所以在接下来的一年里，会非常忙，博客上有用的文章也还是会很少更新，但自己会做写有趣的东西并偷偷地应用到博客上，嘻嘻</p>]]>
    </content>
    <id>https://yuncaioo.com/post-580.html</id>
    <link href="https://yuncaioo.com/post-580.html"/>
    <published>2018-01-21T14:32:40.000Z</published>
    <summary>
      <![CDATA[<p>时光飞逝，2017已成为过去，2018将代替逝去的2017，继续陪伴着我们 2017年又是平淡的一年，并没有什么大事发生</p>
<h2 id="学习"><a href="#学习" class="headerlink" title="学习"></a>学习</h2><p>今年]]>
    </summary>
    <title>
      <![CDATA[2017年终总结&2018年度规划]]>
    </title>
    <updated>2020-02-29T12:25:44.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>前两天知道了怎么不用插件整合CDN静态资源加速，今天就把代码分享出来吧！ 在 WordPress 主题目录下的 functions.php 文件中，加入以下代码实现替换功能：</p><pre><code class="language-php">//静态文件CDN加速if ( !is_admin() ) {add_action(&#39;wp_loaded&#39;,&#39;yuncai_ob_start&#39;);function yuncai_ob_start() {ob_start(&#39;yuncai_qiniu_cdn_replace&#39;);}function yuncai_qiniu_cdn_replace($html){$local_host = &#39;博客域名&#39;; //博客域名$qiniu_host = &#39;CDN加速域名&#39;; //CDN域名$cdn_exts   = &#39;cssjspngjpgjpeggifico&#39;; //扩展名（使用分隔）$cdn_dirs   = &#39;wp-contentwp-includes&#39;; //目录（使用分隔）$cdn_dirs   = str_replace(&#39;-&#39;, &#39;\-&#39;, $cdn_dirs);if ($cdn_dirs) {$regex=  &#39;/&#39; . str_replace(&#39;/&#39;, &#39;\/&#39;, $local_host) . &#39;\/((&#39; . $cdn_dirs . &#39;)\/[^\s\?\\\&#39;\&quot;\;\&gt;\&lt;]{1,}.(&#39; . $cdn_exts . &#39;))([\&quot;\\\&#39;\s\?]{1})/&#39;;$html =  preg_replace($regex, $qiniu_host . &#39;/$1$4&#39;, $html);} else {$regex= &#39;/&#39; . str_replace(&#39;/&#39;, &#39;\/&#39;, $local_host) . &#39;\/([^\s\?\\\&#39;\&quot;\;\&gt;\&lt;]{1,}.(&#39; . $cdn_exts . &#39;))([\&quot;\\\&#39;\s\?]{1})/&#39;;$html =  preg_replace($regex, $qiniu_host . &#39;/$1$3&#39;, $html);}return $html;}}</code></pre><p>简单的一段代码，就能让你的 WordPress 实现静态文件 CDN 加速。当然，如果你的需求还包括加速远程图片或刷新缓存等，那么还是老老实实安装插件吧！</p>]]>
    </content>
    <id>https://yuncaioo.com/post-449.html</id>
    <link href="https://yuncaioo.com/post-449.html"/>
    <published>2017-09-30T14:06:16.000Z</published>
    <summary>
      <![CDATA[<p>前两天知道了怎么不用插件整合CDN静态资源加速，今天就把代码分享出来吧！ 在 WordPress 主题目录下的 functions.php 文件中，加入以下代码实现替换功能：</p>
<pre><code class="language-php">//静态文件CDN加速
i]]>
    </summary>
    <title>不要插件！轻松整合WordPress与CDN加速服务</title>
    <updated>2020-02-29T12:24:46.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>FH云彩</name>
    </author>
    <category term="技术" scheme="https://yuncaioo.com/post-category/technology/"/>
    <content>
      <![CDATA[<p>相信很多小伙伴都用过chrome，大家都知道在Windows Chrome打开开发者工具或者右键网页查看源代码就能查看网页源代码。 但是，在安卓Chrome上既没有查看源代码的按键，也没有开发者工具，辣么怎么查看网页源代码？ 不过，你只要在地址栏网址前加入『view-source:』，就能查看网页源代码啦！ 比如：view-source:<a href="http://www.yuncaioo.com/">www.yuncaioo.com</a> 注：该方法同样适用于其他设备的Chrome</p>]]>
    </content>
    <id>https://yuncaioo.com/post-241.html</id>
    <link href="https://yuncaioo.com/post-241.html"/>
    <published>2017-08-16T01:09:48.000Z</published>
    <summary>
      <![CDATA[<p>相信很多小伙伴都用过chrome，大家都知道在Windows Chrome打开开发者工具或者右键网页查看源代码就能查看网页源代码。 但是，在安卓Chrome上既没有查看源代码的按键，也没有开发者工具，辣么怎么查看网页源代码？ 不过，你只要在地址栏网址前加入『view-sou]]>
    </summary>
    <title>一招教你在安卓Chrome查看网页源代码</title>
    <updated>2018-01-23T09:46:24.000Z</updated>
  </entry>
</feed>
