<?xml version='1.0' encoding='utf-8'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://trle5.xyz/</id>
  <title><![CDATA[Hubert's Blog]]></title>
  <icon>https://trle5.xyz/favicon.png</icon>
  <link href="https://trle5.xyz" />
  <link href="https://trle5.xyz/atom.xml" rel="self" type="application/atom+xml" />
  <updated>2024-03-11T00:12:21.988Z</updated>
  <author>
    <name><![CDATA[Hubert Chen]]></name>
  </author>
  <category term="闲聊" scheme="https://trle5.xyz/?tags=%E9%97%B2%E8%81%8A" />
  <category term="年度总结" scheme="https://trle5.xyz/?tags=%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93" />
  <category term="Urara" scheme="https://trle5.xyz/?tags=Urara" />
  <category term="拓展" scheme="https://trle5.xyz/?tags=%E6%8B%93%E5%B1%95" />
  <category term="Homekit" scheme="https://trle5.xyz/?tags=Homekit" />
  <category term="esp8266" scheme="https://trle5.xyz/?tags=esp8266" />
  <category term="技术" scheme="https://trle5.xyz/?tags=%E6%8A%80%E6%9C%AF" />
  <category term="博客" scheme="https://trle5.xyz/?tags=%E5%8D%9A%E5%AE%A2" />
  <category term="Chrome OS" scheme="https://trle5.xyz/?tags=Chrome%20OS" />
  <category term="Linux" scheme="https://trle5.xyz/?tags=Linux" />
  <category term="小教程" scheme="https://trle5.xyz/?tags=%E5%B0%8F%E6%95%99%E7%A8%8B" />
  <category term="FarPush" scheme="https://trle5.xyz/?tags=FarPush" />
  <category term="推送服务" scheme="https://trle5.xyz/?tags=%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1" />
  <category term="ADB" scheme="https://trle5.xyz/?tags=ADB" />
  <category term="Hexo" scheme="https://trle5.xyz/?tags=Hexo" />
  <category term="测试" scheme="https://trle5.xyz/?tags=%E6%B5%8B%E8%AF%95" />
  <entry>
    <title type="html"><![CDATA[年间]]></title>
    <link href="https://trle5.xyz/talk/page202" />
    <id>https://trle5.xyz/talk/page202</id>
    <published>2023-02-09T00:00:00.000Z</published>
    <updated>2024-01-23T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[换句话说就是寒假期间]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-ux7hq">不知道应该放个什么题图，随便做一张吧，配合倒数第二三个主题看上去效果不错</p> <p data-svelte-h="svelte-2b34ea">换句话就是寒假期间，算年度总结的额外篇？</p> <h2 id="写文档" data-svelte-h="svelte-18slnpx"><a href="#写文档">写文档</a></h2> <p data-svelte-h="svelte-1ardgfs">从去年十一月底看了 Urara 的文档后，感觉自己的水平还是能加个简体中文的翻译的，具体过程过的有些久也忘了，当时是贡献准则都没看一眼，但也看到 commit 消息如此工整，就在 PR 前去与作者交流，大致问了下，不过现在还是不怎么会写 commit 信息，还是乱一团</p> <p data-svelte-h="svelte-17050sn">翻看 commit 记录，确实在假期里写了大多数的文档页面，基本是隔几天更新一次，当时的情况大致如下</p> <ul data-svelte-h="svelte-16cedma"><li>有文档要写：好累啊，什么时候能写完</li> <li>没文档写：好闲啊，今天格子要空了吗</li></ul> <p data-svelte-h="svelte-bt7gi7">现在大体也没什么要更新的了，要加新页面也可以套之前写过的框架，有需要更新的可能就是大部分靠 DeepL 的英文文档了，希望没有问题</p> <h2 id="继电器与-ha" data-svelte-h="svelte-101mryv"><a href="#继电器与-ha">继电器与 HA</a></h2> <p data-svelte-h="svelte-1r3jxdg">这个其实从去年十一月初就在折腾，但 Home Assistant 则是在寒假开始才有折腾</p> <p data-svelte-h="svelte-1p4qoy9">通过 HA 再次体验到了 Python 的强大与…依赖地狱，不过也不是它的问题，我总是想在奇奇怪怪的设备上跑同样奇怪的东西</p> <p data-svelte-h="svelte-1qudnr4">试过使用 LinuxDeploy，是成功跑起来了。但是 HACS 用不了，没法绑定刷了 Homekit 固件的继电器，更没法连接 HA 安卓客户端，那样就只有个服务器端在跑，控制电器的功能没用啊</p> <p data-svelte-h="svelte-max409">后面去尝试了 Ubuntu Touch，想着这是个能在手机上跑的完整 Linux，应该没什么限制吧。结果是开头没法更新软件源，排除了一阵子后，发现是 Ubuntu Touch 16.04 更新软件源需要使用 <code>apt-get</code> 而不是 <code>apt</code></p> <p data-svelte-h="svelte-1kt26e3">后续我又去网上查了查，当头一棒，还有分区大小不足与镜像只读问题，就摆了</p> <p data-svelte-h="svelte-a4j20y">但最近又在 GitHub 上翻到了个项目，以后手痒了可能又会试试</p> <h2 id="gnupg-与-nrf52840" data-svelte-h="svelte-1c8u8jq"><a href="#gnupg-与-nrf52840">GnuPG 与 nRF52840</a></h2> <p data-svelte-h="svelte-pglz01">最初接触 GPG 是什么时候也已经不清楚，但近期印象最深的是 <a href="https://seviche.cc/" rel="nofollow noopener noreferrer external" target="_blank"><strong>SevicheCC</strong></a> 的 <a href="https://seviche.cc/2023-01-01-reading-12/" rel="nofollow noopener noreferrer external" target="_blank"><strong>我在看什么 · 12 月</strong></a> 文章，最主要的收获竟然是：</p> <blockquote data-svelte-h="svelte-s1f8i4"><p>openPGP / GnuPG 的使用并不强制需要物理安全密钥</p></blockquote> <p data-svelte-h="svelte-rhsrhz">是的，我对它们也早有耳闻，但大多数文章都是先介绍 Yubikey 再介绍 GPG，让我以为拥有一个 Yubikey 是使用 GPG 的硬性要求，当时的我再去看了看价格，是买不起的玩具</p> <p data-svelte-h="svelte-1btwcyh">得知要求后就兴致冲冲去生成密钥了，由于第一次接触，并不太了解密钥类型，就直接选了 RSA4096，虽然安全性高了，但对后面的安全密钥部分造成了影响</p> <p data-svelte-h="svelte-13p10zd">再接着就是看了 <a href="https://kwaa.dev/" rel="nofollow noopener noreferrer external" target="_blank"><strong>藍+85CD</strong></a> 的新文章 <a href="https://kwaa.dev/canokey-nrf52" rel="nofollow noopener noreferrer external" target="_blank"><strong>为 nRF52840 Dongle 刷入 CanoKey 固件</strong></a>，再去找找，看到亿佰特淘宝店新用户买前两个只用 18 块加运费，对比 Yubikey 或 Canokey Pigeon 就只算个零头，于是…买！</p> <p data-svelte-h="svelte-rdfp3">但它也不是完美的，能这么低价格买到安全密钥，也是会有缺点的</p> <p data-svelte-h="svelte-1iipghe">首先是安全性问题：<strong>使用 nRF52 版本绝对没有安全保证或担保，因为这是一个基于开发板的开源项目，并不是针对安全的商业产品，并没有软件与安全保证</strong></p> <p data-svelte-h="svelte-dik9ko">其次是性能问题：由于我一开始创建的密钥类型选择了 RSA4096，将密钥导入到安全密钥后就无法使用，后续创建了一个基于 ED25519 的密钥并导入后 GPG 就能正常工作了，初步判定应该是性能或内闪存的原因</p> <h2 id="除夕" data-svelte-h="svelte-s21qx7"><a href="#除夕">除夕</a></h2> <p data-svelte-h="svelte-1jjsfwq">这次的新年是比以往热闹了很多，可能是疫情放开了的缘故吧，在除夕当天忙完了后，自己也是习惯的一个人回到了房间，倒不是说孤僻到没人理，实际上经常被亲戚与小孩来打扰，效率有些影响</p> <p data-svelte-h="svelte-avytjd">再想想好像也没什么印象深刻的事情，感觉是与以前相同，但感觉又有不少改变，这样也不坏吧</p> <h2 id="人际关系" data-svelte-h="svelte-h6u92j"><a href="#人际关系">人际关系</a></h2> <p data-svelte-h="svelte-1vwrlij">过年期间没被拉出去玩，走亲戚都很少，也就没什么新朋友，但通过博客圈和 Mastodon 认识了些网友</p> <p data-svelte-h="svelte-ygmvgl">相比以前也是没什么大变化，与认识的网友聊还是照常，该怕生时还是怕生。年夜饭时被拉出来认了一半忘了一半的亲戚们似乎个个也是在说我要变得开朗与外向，也都只是抱着个希望，随心所欲吧</p> <h2 id="修手机" data-svelte-h="svelte-1mt9yjf"><a href="#修手机">修手机</a></h2> <p data-svelte-h="svelte-occv4d">从去年年底表姐就找我诉苦，说她的手机屏幕被自己摔坏了，希望找我修修看，但现在两家住的地方离得远，也就没那么着急，当时也还在疫情当中，没有去修就一直留着</p> <p data-svelte-h="svelte-3wu8wf">后续她买了一台新手机，又不幸在某日进了海水，起初是询问我进水了要怎么办。由于之前手机也进过水，后续晾干就没事，我就找了找拆开后壳的简单方法指示她拿个风扇对着手机吹，但她并没有告诉我进的是海水…</p> <p data-svelte-h="svelte-1e85osm">具体结果基本上从进海水就基本没救了，我把进水的那台手机拆开后，主板没有腐蚀到核心区，副板已经全是铜被腐蚀呈现出的铜绿色和海水晾干后的白色盐晶，得大修了吧</p> <p data-svelte-h="svelte-843506">得知进的海水后我就转向了被摔碎屏幕的另一台手机，仔细看了看只有屏幕和后盖有问题，最低成本的维修就是换个后盖和屏幕，但我可没那个手艺，淘了带框屏幕和后盖，到货后修起来没什么难度</p> <h2 id="重装系统" data-svelte-h="svelte-166cvho"><a href="#重装系统">重装系统</a></h2> <p data-svelte-h="svelte-k5liw">拖了好久终于决定空一天出来把 Windows 盘格掉重装了，以往都是只要不炸就一直用的想法，是因为最近要升级硬件，再拖累硬件就不行了</p> <p data-svelte-h="svelte-52t1t7">先前使用的系统版本为 Windows 10 LTSC 2019(1809)，这次经过了打算后，还是选了 LTSC，但我升级到了 LTSC 2021</p> <p data-svelte-h="svelte-wi220g">同样，LTSC 2021 有个众为人知的输入法 bug，它会导致输入法缺失一个依赖库，反复唤醒 Windows Update 来尝试安装这个拓展，结果就是会导致 wsappx 进程大量占用 CPU 与内存。</p> <details><summary data-svelte-h="svelte-tj4dzr"><b>之前说的方法</b></summary> <p data-svelte-h="svelte-iqv7mo">虽然听说这个 bug 已经被更新修复了，但去管 Windows Update 的人可是少之又少，我从 <a href="https://meledee.com/" rel="nofollow noopener noreferrer external" target="_blank"><strong>美樂地</strong></a> 的<a href="https://meledee.com/2021/12/3959.html" rel="nofollow noopener noreferrer external" target="_blank"><strong>博客文章</strong></a> 中找到了解决方法，<del>只需要去下载 <a href="https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/libraries/c-runtime-packages-desktop-bridge" rel="nofollow noopener noreferrer external" target="_blank"><strong>VCLibs</strong></a> 选择对应的处理器架构进行安装即可</del></p> <p data-svelte-h="svelte-rz3jj1">划掉的链接有错误，需要的并不是上面链接里的 VCLibs，需要的是下方添加商店 GitHub 仓库里的安装程序：<a href="https://github.com/kkkgo/LTSC-Add-MicrosoftStore/blob/master/Microsoft.VCLibs.140.00_14.0.26706.0_x86__8wekyb3d8bbwe.Appx" rel="nofollow noopener noreferrer external" target="_blank"><strong>x86</strong></a> <a href="https://github.com/kkkgo/LTSC-Add-MicrosoftStore/blob/master/Microsoft.VCLibs.140.00_14.0.26706.0_x64__8wekyb3d8bbwe.Appx" rel="nofollow noopener noreferrer external" target="_blank"><strong>x64</strong></a></p> <p data-svelte-h="svelte-1odlag8">但好像只安装 VCLibs 并不能解决这个占用资源的 bug，如果安装后 bug 还在，就要考虑要不要直接装商店了</p> <p data-svelte-h="svelte-fr2s14">如果有为 LTSC <a href="https://github.com/kkkgo/LTSC-Add-MicrosoftStore" rel="nofollow noopener noreferrer external" target="_blank"><strong>添加商店</strong></a>，则可以直接双击安装，否则就需要手动在 PowerShell 管理员模式下运行安装命令：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" cmd="true"><div class="language-id">cmd</div><div class='code-container'><code><div class='line'>Add-AppxPackage -Path "appx包路径"</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-69sm0a">安装后可能需要重启才能生效，过了一段时间才写的文章只能记起这么一部分了</p></details> <p data-svelte-h="svelte-8fsizh">在今年朋友找我配电脑的时候，要给他装系统时我就安装了 Windows 10 LTSC 2021，<span class="spoiler">其实就是再下镜像要等。</span>但我在折腾了大半个晚上后，发现上面这些方法都不管用，想要解决这个输入法占用问题，唯一的办法可能就只有联网获取 Windows Update 了。在等待它安装的时候可能还会资源占用过高甚至窗口无响应，请耐心等待</p> <h2 id="升级硬件" data-svelte-h="svelte-zv1x8g"><a href="#升级硬件">升级硬件</a></h2> <p data-svelte-h="svelte-2tp9z2">今年久违的升级了一次电脑硬件，具体如下表：</p> <div class="overflow-x-auto mb-4"><table class="table w-full"><thead data-svelte-h="svelte-9pi8x6"><tr><th>设备</th> <th>型号</th></tr></thead> <tbody data-svelte-h="svelte-1fm0hyu"><tr><td>显卡</td> <td>NVIDIA Tesla P4 8GB</td></tr> <tr><td>内存</td> <td>DDR3L 4GB</td></tr> <tr><td>硬盘</td> <td>SATA SSD 240GB</td></tr> <tr><td>机箱风扇</td> <td>后方 8CM &amp; 侧面 12CM</td></tr></tbody></table></div> <p data-svelte-h="svelte-14b7rst">除了硬盘都是网购来的，总共花了 500 左右，其中最贵的是 Tesla P4，占了 80%，至于为什么突发奇想去买 P4？首先是 19 年初买的 R9 270 在 20 年 7 月花屏退役了，之后不管是打游戏还是上网的体验都下降了一个等级，后面还有一条内存正好炸掉了，出于都这样了还不如整台换掉的想法就没去管…</p> <p data-svelte-h="svelte-124bu47">后续硬件价格大涨大跌，但我也并不想当背锅的那个，期间也看到 P106 和 K20m 这种没显示输出接口的显卡靠核显输出来玩游戏的教程，那时候太火星，再去看价格时已经失去了性价比</p> <p data-svelte-h="svelte-1x5ywfp">最近看到了朋友在玩 Stable Diffusion 发嘟文时提到了 Tesla P4，习惯性的查了查，似乎性价比不错，也不怕被拐进矿坑(应该?)，还有那神奇的能耗比和显存，考虑考虑还是下单了</p> <p data-svelte-h="svelte-12q4feu">由于服务器卡没有主动散热，还得解决散热问题，就跟着网上的教程买了个 1650 刀卡的散热，能稳当当的卡到显卡上，还需要接到主板的风扇针位，尽管卖家配了降速线，但噪音还是略大，烤了十分钟机温度在 53°C 左右，偶尔几次打游戏切出来看是 40°C 左右，满载估计破不了 70°C</p> <p data-svelte-h="svelte-tb2050">现在这张显卡的价格在 400 元左右，大部分都是服务器换下来的，相比现在的矿渣游戏卡可能性价比差点，我不敢说稳定性会比矿渣好多少，但翻车时我会来更新的</p> <p data-svelte-h="svelte-1izbq7f">性能方面我的平台很旧，甚至我现在才发现都不支持 PCIE 3.0，跑了 3DMark Demo 结果贴在这里供参考一下：</p> <div class="overflow-x-auto mb-4"><table class="table w-full"><thead data-svelte-h="svelte-evbzdr"><tr><th align="center">测试项目</th> <th align="center">TIME SPY</th> <th align="center">NIGHT RAID</th> <th align="center">FIRE STRIKE</th></tr></thead> <tbody data-svelte-h="svelte-1s2zlwh"><tr><td align="center">总分</td> <td align="center">4192</td> <td align="center">20229</td> <td align="center">10434</td></tr> <tr><td align="center">显卡分数</td> <td align="center">4641</td> <td align="center">48861</td> <td align="center">14183</td></tr> <tr><td align="center">CPU 分数</td> <td align="center">2709</td> <td align="center">4682</td> <td align="center"></td></tr> <tr><td align="center">物理分数</td> <td align="center"></td> <td align="center"></td> <td align="center">6331</td></tr> <tr><td align="center">综合得分</td> <td align="center"></td> <td align="center"></td> <td align="center">5192</td></tr></tbody></table></div> <p data-svelte-h="svelte-ao7y1i">为什么不直接贴 3DMark 自带的链接？因为当时根据 <a href="https://www.jianshu.com/u/0a32fce0aadf" rel="nofollow noopener noreferrer external" target="_blank"><strong>几簟生凉</strong></a> 的 <a href="https://www.jianshu.com/p/68bf40eb9b64" rel="nofollow noopener noreferrer external" target="_blank"><strong>Tesla P4 玩游戏</strong></a> 文章安装的 <a href="https://cloud.google.com/compute/docs/gpus/grid-drivers-table?hl=zh-cn#windows_drivers" rel="nofollow noopener noreferrer external" target="_blank"><strong>GRID 驱动</strong></a> 会导致一些信息被修改，3D Mark 会识别失败，评分就会被隐藏，无法公开访问</p> <h2 id="打游戏" data-svelte-h="svelte-169dmv4"><a href="#打游戏">打游戏</a></h2> <p data-svelte-h="svelte-oqr97u">既然都升级硬件了，不过过游戏瘾好像说不过去了，由于之前有点受显卡花屏的 PTSD，不敢给显卡上太大负载，就算开了高画质核显也会处理不过来让帧延时变高，帧数是满的但操作很卡</p> <p data-svelte-h="svelte-1o2vii3">首先还是玩玩 CS:GO，全局打开了垂直同步就没看出有什么区别，不过帧数就从没掉下过 60 FPS</p> <p data-svelte-h="svelte-nc4v3q">其次去玩了玩没怎么碰的彩虹六号:围攻，好像水平已经掉到新进玩家水平了，很多地图重做后就直接迷路了，或许还是真不太会打 PVP 游戏</p> <p data-svelte-h="svelte-f3ru52">还有就是彩虹六号:异种(繁体译成撤离禁区)，操作手感继承了围攻，以及去年年初也玩过那么几次，打一二级难度还是没问题的，就是听说好像已经停止开发了，不知道后续会开放社区内容吗，游戏重复性其实也逃不开刷刷刷，可能玩多了就会失去兴趣</p> <h2 id="重返学校" data-svelte-h="svelte-gz1uqk"><a href="#重返学校">重返学校</a></h2> <p data-svelte-h="svelte-19yz0qm">以前的时候，回到学校的感觉像是在做一场很累的梦，回家则像是醒来后的生活，现在住宿后变了，周末节假日的回家更像是梦，而在学校的时间更像是现实中的家，节假日的时间只是美好的梦…</p> <p data-svelte-h="svelte-1f3mvqb">经历了一个多月的寒假和一周的拉扯，我还是回到了学校，像是被自己嘲讽了。像是活在黑客帝国的矩阵里，整个人生已经被规划好了，却被包装成看上去有无限可能的样子，尽头却是同一个</p> <p data-svelte-h="svelte-1xjnbg6">抱歉写了那么多抱怨的话，现在我清醒了，我像是看到了我能走的路，不用过于担心，我有很多时间，很多很多！</p> <h2 id="速通闲鱼" data-svelte-h="svelte-wet9s7"><a href="#速通闲鱼">速通闲鱼</a></h2> <p data-svelte-h="svelte-1x7nce5">在上方的拉扯期间，有那么点怀疑自己自学的东西有没有用，我的理想与别人安在我身上的理想一比较就显得如此无力，想起之前也有过这种事，就没多想，手机和平板直接往闲鱼上挂</p> <p data-svelte-h="svelte-vjof87">虽说后面也是再买了台 <a href="https://store.google.com/us/product/pixelbook_go" rel="nofollow noopener noreferrer external" target="_blank"><strong>Pixelbook Go</strong></a>，还正在用来写这篇文章，但我是真没想到这手机和平板能出那么快，以往挂手机和平板也是等了一个月往上，这次竟然不到五天就都有人拍下了，成功交易回了千来块血</p> <p data-svelte-h="svelte-1g5uv2g">Pixelbook Go 其实我之前就很喜欢，大约去年四月就在闲鱼翻到了，只是当时价格还在 1.8k 往上，现在均价 1.4k，这样就比较适合我这种垃圾佬捡了，经过挑选后，1.2k 拿下一台次顶配版，只是成色不太行，主板还有电流声，希望没事</p> <h2 id="放自己一马" data-svelte-h="svelte-4pm79n"><a href="#放自己一马">放自己一马</a></h2> <blockquote data-svelte-h="svelte-1fiizfz"><p>如果你每天还在精神止痛的过程中挣扎，无暇顾及什么新的目标以及爱好，这个时候你更应该做的是放自己一马，而不是逼自己一把。</p></blockquote> <p data-svelte-h="svelte-1xka6hv">上面这句话来自 <a href="https://www.huxiu.com/article/379093.html" rel="nofollow noopener noreferrer external" target="_blank"><strong>有时候，人生也需要一些摸鱼时刻</strong></a>。有时候并不是自己太颓废，只是前进的中途栽进灌木丛迷失了方向，这时要做的是停下来修整，再寻找适合的道路轻松的走出来，而不是接着猛冲，那样也许能很快脱离困境，但会变得很狼狈</p> <p data-svelte-h="svelte-143yysn">接下来就修整一阵子吧，给自己找点其他兴趣试试看</p>]]>
    </content>
    <category term="闲聊" scheme="https://trle5.xyz/?tags=%E9%97%B2%E8%81%8A" />
  </entry>
  <entry>
    <title type="html"><![CDATA[2022 年度总结]]></title>
    <link href="https://trle5.xyz/talk/page112" />
    <id>https://trle5.xyz/talk/page112</id>
    <published>2022-12-28T00:00:00.000Z</published>
    <updated>2023-01-05T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[又是一年，今年做了什么呢]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-1490pt1">嗯… 又一年…</p> <p data-svelte-h="svelte-98gcq6">本文的内容感觉似乎很多一部分在顶栏的闲聊分类似乎都写过，这里尽量不重复写一遍</p> <h2 id="博客" data-svelte-h="svelte-1b6xfds"><a href="#博客">博客</a></h2> <p data-svelte-h="svelte-amb28w"><strong>既然是在博客里写的年度总结，那第一节应该先讲博客吧</strong></p> <big data-svelte-h="svelte-1taoti6"><b>文章</b></big> <p data-svelte-h="svelte-1tby07l">从 <a href="/about/history/"><strong>建站历程</strong></a> 也可以得知，这个博客从 2022 年的一月底就建立起来了，不过当初可以说是什么内容都没有，再到第一篇文章 <a href="/post/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2/"><strong>搭建一个自己的博客</strong></a> 间隔了一个多月才写完，现在看它的文章目录，是有点不美观了，至于重写嘛，还没有打算…</p> <p data-svelte-h="svelte-1md7npd">仔细看，写的比较全面和文章也就两篇，都是跟博客相关的，其余的我自己也感觉有点水文章的意思，也许以后会找个方法把质量次一些的文章换个页面收集起来，甚至还有 <a href="/post/phone2adb/"><strong>没写完的文章</strong></a> 还一直摆在那</p> <big data-svelte-h="svelte-1rdr023"><b>架构</b></big> <p data-svelte-h="svelte-1jok4uv">博客架构从 <a href="https://github.com/hexojs/hexo" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hexo</strong></a> 换到 <a href="https://github.com/importantimport/urara" rel="nofollow noopener noreferrer external" target="_blank"><strong>Urara</strong></a> 的内容在 <a href="/about/history/"><strong>建站历程</strong></a> 也有说，现在回想，换到 Urara 本质上还是因为懒<sup>虽说配置也有些麻烦</sup>，它集成了许多功能，例如评论和当时我琢磨很久的 RSS 订阅问题，这种插件要我去自己找可能更费劲</p> <p data-svelte-h="svelte-13lu84w">Urara 吸引我的其实还有设计，切换页面有动画、组件颜色跟随主题颜色等这些功能我很喜欢，以及简洁的设计<span class="spoiler">和有点劝退的配置环节</span>，在下面放个项目卡片，这个是 Urara 的插件</p> <div class="card bg-base-100 !bg-base-200 my-4 "><div class="p-6"></div></div> <h2 id="开源社区" data-svelte-h="svelte-ia1khg"><a href="#开源社区">开源社区</a></h2> <p data-svelte-h="svelte-14prpab"><strong>开源社区，即开放源代码社区，是一个可以学习与交流的地方，还可以互帮互助解决问题，给我的感觉是：<big>好玩！</big></strong></p> <p data-svelte-h="svelte-1w65ve4">在这里放张来自 <a href="https://wrapped.run" rel="nofollow noopener noreferrer external" target="_blank"><strong>wrapped.run</strong></a> 的 GitHub 统计图</p> <p><img src="/talk/page112/wrapped_Interstellar750.webp" alt="来自 wrapped.run 的统计图，列出了我提交量前三的仓库、语言统计、收藏与被收藏数量，关注与被关注数量，以及最近关注的三个用户和最近关注我的三个用户" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <big data-svelte-h="svelte-1anayzc"><b>菜鸟</b></big> <p data-svelte-h="svelte-xwugx3">回忆一下，最早接触到开源这个词汇，似乎是 GitHub 的 <a href="https://archiveprogram.github.com/arctic-vault/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Arctic Code Vault</strong></a> 计划，其实是不是最早的我也忘了，应该是我印象中最早的了，看了一些关于北极代码库文章与视频，再了解了什么是开源后，兴致冲冲的去注册了个 GitHub，然后发现帐号已存在…</p> <p data-svelte-h="svelte-14kpvmc">嗯…我也不知道我是怎么早在 18 年就注册了 GitHub 的，或许是找软件的时候找到，顺便注册了个帐号了吧</p> <big data-svelte-h="svelte-1fgnx7g"><b>初步接触</b></big> <p data-svelte-h="svelte-p717t2">或者说是第一次建仓库与提交吧，这个记录是在 2021 年 12 月了，当时好像是在折腾 <a href="https://sailfishos.org" rel="nofollow noopener noreferrer external" target="_blank"><strong>Sailfish OS</strong></a>，还没购买 <a href="https://shop.jolla.com" rel="nofollow noopener noreferrer external" target="_blank"><strong>Sailfish X / Aliendalvik</strong></a>，能想到传输文件的方法只有克隆仓库</p> <p data-svelte-h="svelte-10vtx6s"><span class="spoiler">截至到本文发布，我已经帮别人代购过两次 Sailfish OS X 了</span></p> <p data-svelte-h="svelte-1i1mwrv">直到一月左右听说有不用服务器就可以搭建的博客，就开始试着折腾 Hexo，也是胡乱之中给自己发了个 PR，后面也只是在用来放东西的仓库上传些东西…</p> <big data-svelte-h="svelte-1mb3b53"><b>学习</b></big> <p data-svelte-h="svelte-x05vb5">四月多开始，我就开始常常提交代码了，大部分都是提交到私有库，其实也不是在偷偷写什么项目，就是把写的练习题答案往仓库上丢，让贡献图好看点 🥲</p> <p data-svelte-h="svelte-dxmr6x">每个编程初学者都离不开的话题：<strong>入门学哪门语言好?</strong></p> <p data-svelte-h="svelte-1gtp372">不用想，这里没答案，网上大概也不会有标准答案，还得看自己想干什么，我最后选择了 C 语言，就一直学到现在，不能说那种一天学到晚，平均一天学个三四十分钟吧，学习环境不好，我抗干扰能力不太行</p> <p data-svelte-h="svelte-xizzhl"><strong>C 语言有什么弊端？</strong> 目前对我来说大概就是没学完的话是写不出什么能拿上台面的软件的，可能连替换一个文本中一个数值都做不到，不像 Python 有很多库直接拿来调用，虽说效率低了点但确实挺方便的</p> <p data-svelte-h="svelte-1bxwok0">虽然是这样说，其实回头看一下发现自己好像也有两周没碰了，最近全在折腾博客</p> <big data-svelte-h="svelte-shz4p8"><b>做贡献</b></big> <p data-svelte-h="svelte-11wfgis">说实话开出这个条目我也是有点心虚，帮点小忙</p> <p data-svelte-h="svelte-vp8m1e">编程能力可以说还几乎没有的我，能帮上的忙只有找 bug 和写文档了</p> <p data-svelte-h="svelte-g4ihib">今年最早一次 PR 是在七月给 <a href="https://github.com/FydeOS/fydeos.github.io" rel="nofollow noopener noreferrer external" target="_blank"><strong>FydeOS/fydeos.github.io</strong></a> 的 <a href="https://github.com/FydeOS/fydeos.github.io/pull/16" rel="nofollow noopener noreferrer external" target="_blank"><strong>更正了过时的链接 #16</strong></a>，由于这个仓库年旧失修(指被归档)，似乎没有什么人注意到，直到十月底我在官方群里再次提了一句才被 <a href="https://github.com/Lorde627" rel="nofollow noopener noreferrer external" target="_blank"><strong>Archie</strong></a> 注意到然后进行合并</p> <p data-svelte-h="svelte-dv6gr4">还有给 <a href="https://github.com/importantimport/urara" rel="nofollow noopener noreferrer external" target="_blank"><strong>Urara</strong></a> 提的 <a href="https://github.com/importantimport/urara/issues/39" rel="nofollow noopener noreferrer external" target="_blank"><strong>Issues</strong></a> 和最近在维护的 <a href="https://github.com/importantimport/urara-docs" rel="nofollow noopener noreferrer external" target="_blank"><strong>Urara-docs</strong></a>，今年的贡献也就只有这些了</p> <big data-svelte-h="svelte-1qdxiqp"><b>交朋友</b></big> <p data-svelte-h="svelte-uhvrj7">虽然自己是个社恐，不过能交到新朋友还是挺开心的，在请教他人和被他人帮助的时候会很感激，能帮助到他人的时候也会感觉很开心</p> <p data-svelte-h="svelte-5wuwcp">本来想在这里介绍一下新认识的朋友，想了想没经过同意，就不放出来了</p> <big data-svelte-h="svelte-7dcitu"><b>在这里感谢每位帮助过我的人，谢谢您的帮助！</b></big> <h2 id="游戏" data-svelte-h="svelte-1aylmkd"><a href="#游戏">游戏</a></h2> <h3 id="桌面端" data-svelte-h="svelte-1w803n3"><a href="#桌面端">桌面端</a></h3> <p data-svelte-h="svelte-141cqj6">今年的游戏时间似乎是骤减，相比之前少了很多（感觉上），放一个<a href="https://s.team/y22/ffrtvndf?l=schinese" rel="nofollow noopener noreferrer external" target="_blank"><strong>我的 2022 年 Steam 回顾：</strong></a></p> <p><img src="/talk/page112/steam.webp" alt="我的 2022 年 Steam 回顾，打开过 330 次游戏，新玩了 1 个游戏，总共玩过 10 个游戏，完成了 12 个成就" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-144kk07">大部分时间还是在打 CS:GO，其次是我的世界，再其次…没了</p> <p data-svelte-h="svelte-8noxob">在二月时算个半首发，入了 <a href="https://store.ubi.com/cn/game?pid=5cf15f1b39798c0870c076e6" rel="nofollow noopener noreferrer external" target="_blank"><strong>彩虹六号:异种</strong></a>，虽说是围攻爆发模式的延续（那时候还不知道彩六），但玩了一阵子感觉还是挺满意的，至于网上的评价嘛，我玩游戏是倾向于防守/潜入，对于喜欢对枪的玩家来说，可能就不那么满意了</p> <p data-svelte-h="svelte-wgy9ai">其余也是在之前的文章讲过的在我的世界服务器里玩生存，不过暑假过后服务器就真的是除了人什么都有了 😇</p> <h3 id="手游端" data-svelte-h="svelte-1339570"><a href="#手游端">手游端</a></h3> <p data-svelte-h="svelte-1e1v4r0">多数还是玩桌面端游戏，手机上的消遣大多还是看博客和消息</p> <big data-svelte-h="svelte-9oude5"><b>Apex Mobile</b></big> <p data-svelte-h="svelte-lhqai4">Apex 的手游版，感觉还原的也是可以，没怎么玩过，是大逃杀类型的游戏，腾讯味有些重</p> <p data-svelte-h="svelte-1gwkvyg">美服和港服都玩过些，都是人机<span class="spoiler">有玩家的话被锤的就是我了 🥲</span></p> <p data-svelte-h="svelte-3oe763">目前已经正式版了，就是英雄数量相比桌面端少，应该会慢慢同步，感兴趣的可以去下个玩玩，国内目前还没有服务器</p> <big data-svelte-h="svelte-1iprjcs"><b>彩虹六号手游</b></big> <p data-svelte-h="svelte-1rjjqak">育碧做了个彩虹六号:围攻的手游版本，忘记是什么时候的消息了，有在 Play 商店出测试版，很巧的被发了个测试权限，于是就下载玩了玩</p> <p data-svelte-h="svelte-1gofaum">建模感觉在手游里算中高级别，至于预告片里的光影看看就行，测试服里感觉实际的测试玩家很少，地图的话也就领事馆、边境、银行和俱乐部这几个，玩法还原的很好，不过目前来看，估计不久就是跟其他手游差不多，人物的装备变成锦上添花，主要看的是对枪厉不厉害…</p> <p data-svelte-h="svelte-da2bh1">操作效果嘛，彩六也是算有点硬核了，全部按键堆起来大概能有个五分之二屏幕（21:9），我玩的时候误触是有点严重，但大部分时候还真是会对枪就行，装备无所谓</p> <big data-svelte-h="svelte-csznau"><b>我的世界</b></big> <p data-svelte-h="svelte-1sox21j">很少玩，虽说常玩的服务器开通了 Java 与 Bedrock 互通，不过开了正版验证，每次登录甚至掉线都需要重新登录，很麻烦</p> <p data-svelte-h="svelte-1cs8sbi">虽然也有在本地存档上玩，不过一般不是真的无聊到没事干还是不会去碰的，用手机玩游戏真的好折磨人…</p> <p data-svelte-h="svelte-1h82g3a">这里有个开启新版操控的资源包，有类似手柄的摇杆，下载文件然后使用我的世界打开并在资源包中启用，然后到触控设置选项里应该就能看见相应的设置：<a href="https://t5d.trle5.xyz/Minecraft/new%20touch%20control_lite.mcpack" rel="nofollow noopener noreferrer external" target="_blank">new touch control_lite.mcpack</a></p> <big data-svelte-h="svelte-egmndf"><b>分形空间</b></big> <p data-svelte-h="svelte-u18b6y">最近 Play Store 限免的游戏，通过 <a href="https://t.me/playsales" rel="nofollow noopener noreferrer external" target="_blank"><strong>Google Play 限免信息</strong></a> 频道得知，截至文章发送前仍可领取，Telegram 真是个获取信息的好地方</p> <p data-svelte-h="svelte-138j9fp">游戏玩法类似传送门那种解密，喷气背包和能远程操控开关的点击枪很有意思，还有一个优点是画质和分辨率能开的很高，第一次拿 Xperia 的 4K 屏幕玩游戏，体验很不错，不过小工作室，关卡只有两关</p> <p data-svelte-h="svelte-17xba6h"><span class="spoiler">成就给的经验很多，可以提升 Play 游戏等级</span></p> <h2 id="观影" data-svelte-h="svelte-1874f0l"><a href="#观影">观影</a></h2> <p data-svelte-h="svelte-168605s">想起来是得记录一下看过哪些电影和番剧，平时很少看，但一年积累下来也不算少了</p> <big data-svelte-h="svelte-u0li7g"><b>已看完</b></big> 电影居多<p data-svelte-h="svelte-ycd0gi"><a href="https://zh.wikipedia.org/wiki/%E9%BB%91%E5%AE%A2%E5%B8%9D%E5%9B%BD%E7%B3%BB%E5%88%97" rel="nofollow noopener noreferrer external" target="_blank"><strong>The Matrix</strong></a> <small>黑客帝国</small> 1999~2021 <br> 老牌科幻电影</p> <p data-svelte-h="svelte-kje83u"><a href="https://zh.wikipedia.org/zh-cn/%E7%A1%AC%E6%A0%B8%E5%A4%A7%E6%88%98" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hardcore Henry</strong></a> <small>硬核亨利</small> 2015 <br> 第一人称电影，含有血腥暴力裸露元素</p> <p data-svelte-h="svelte-1acaeq4"><a href="https://en.wikipedia.org/wiki/7_Days_(2010_film)" rel="nofollow noopener noreferrer external" target="_blank"><strong>7 Days</strong></a> <small>七日复仇</small> 2010 <br> 不推荐看，理由是过于暴力，剧情还行 <big><b>真的不要好奇去看！</b></big></p> <p data-svelte-h="svelte-140lcbl"><a href="https://zh.wikipedia.org/zh-cn/%E7%8E%A9%E5%91%BD%E9%88%94%E5%8A%AB" rel="nofollow noopener noreferrer external" target="_blank"><strong>Wrath of Man</strong></a> <small>人之怒</small> 2021 <br> 犯罪惊悚片，未删减版可能略为血腥</p> <p data-svelte-h="svelte-1ooznff"><a href="https://zh.m.wikipedia.org/zh/%E9%81%8A%E6%88%B2%E4%BA%BA%E7%94%9FZERO" rel="nofollow noopener noreferrer external" target="_blank"><strong>NO GAME NO LIFE ZERO</strong></a> <small>游戏人生零</small> 2017 <br> 从时间线来看是 <a href="https://zh.m.wikipedia.org/zh/NO_GAME_NO_LIFE_%E9%81%8A%E6%88%B2%E4%BA%BA%E7%94%9F" rel="nofollow noopener noreferrer external" target="_blank"><strong>游戏人生</strong></a> 的前传，剧情忘的差不多了…</p> <big data-svelte-h="svelte-fnx0mc"><b>未看完</b></big> 很多很多<p data-svelte-h="svelte-o5fzlo">看一半没有接着看完已经快习惯了…</p> <p data-svelte-h="svelte-14lcbq3"><a href="https://zh.m.wikipedia.org/zh/%E5%AD%A4%E7%8D%A8%E6%90%96%E6%BB%BE%EF%BC%81" rel="nofollow noopener noreferrer external" target="_blank"><strong>ぼっち・ざ・ろっく！</strong></a> <small>孤独摇滚！</small> 已看 5 集 <br> 女高中生组团玩乐队，大概印象最深的就是小波奇了，但我社恐还没那么严重</p> <p data-svelte-h="svelte-175sx44"><a href="https://zh.m.wikipedia.org/zh-cn/SPY%C3%97FAMILY%E9%96%93%E8%AB%9C%E5%AE%B6%E5%AE%B6%E9%85%92" rel="nofollow noopener noreferrer external" target="_blank"><strong>SPY×FAMILY</strong></a> <small>间谍过家家</small> 已看 10 集 <br> 侦探家庭喜剧，间谍读心者与杀手，剧情很有趣</p> <p data-svelte-h="svelte-1hkci1v"><a href="https://zh.m.wikipedia.org/zh/%E5%9C%B0%E7%B8%9B%E5%B0%91%E5%B9%B4%E8%8A%B1%E5%AD%90%E5%90%9B" rel="nofollow noopener noreferrer external" target="_blank"><strong>地縛少年花子くん</strong></a> <small>地缚少年花子君</small> 已看 6 集 <br> 奇幻类番剧，讲了很多怪异的故事，画风和剧情都很喜欢</p> <p data-svelte-h="svelte-1roep93"><a href="https://zh.m.wikipedia.org/zh/NO_GAME_NO_LIFE_%E9%81%8A%E6%88%B2%E4%BA%BA%E7%94%9F" rel="nofollow noopener noreferrer external" target="_blank"><strong>NO GAME NO LIFE</strong></a> <small>游戏人生</small> 已看 4 集 <br> 算个穿越番，但这个世界有些不同</p> <p data-svelte-h="svelte-tcnj25"><a href="https://zh.wikipedia.org/wiki/%E6%B4%BE%E5%B0%8D%E5%92%96%E5%AD%94%E6%98%8E" rel="nofollow noopener noreferrer external" target="_blank"><strong>パリピ孔明</strong></a> <small>派对咖孔明</small> 已看 1 集 <br> 也是玩音乐的番，不过诸葛亮穿越过去了</p> <p data-svelte-h="svelte-d9k56b"><a href="https://zh.wikipedia.org/zh-cn/%E5%89%8D%E8%BC%A9%E6%9C%89%E5%A4%A0%E7%85%A9" rel="nofollow noopener noreferrer external" target="_blank"><strong>先輩がうざい後輩の話</strong></a> <small>关于前辈很烦人的事</small> 已看 1 集 <br> 恋爱喜剧，不过更像是社畜番</p> <p data-svelte-h="svelte-19rlyx7">也许还有，但印象少到可能都想不起来了…</p> <h2 id="看书" data-svelte-h="svelte-13xfj95"><a href="#看书">看书</a></h2> <p data-svelte-h="svelte-ij72s6">书没读多少，都是零零散散的看</p> <p data-svelte-h="svelte-1gq9qwt"><a href="https://isbnsearch.org/isbn/9787115390592" rel="nofollow noopener noreferrer external" target="_blank"><strong>C Primer Plus（第6版）中文版</strong></a> 已看 40 % <br> 四月的时候找来入门 C 语言，讲的很通俗易懂，就是有时候翻译的编程题看不懂是什么要求…</p> <p data-svelte-h="svelte-1d41n3w"><a href="https://isbnsearch.org/isbn/9787302209560" rel="nofollow noopener noreferrer external" target="_blank"><strong>Unix &amp; Linux 大学教程</strong></a> 已看 41 % <br> 这本书要比 C Primer Plus 看的早一些，但不常看，所以现在 Linux 的技术水平只能说还行</p> <p data-svelte-h="svelte-jc1hx7"><a href="https://zhuanlan.zhihu.com/p/559705516" rel="nofollow noopener noreferrer external" target="_blank"><strong>学校让人沾染上的 100+ 恶习</strong></a> 已看完 <br> 或许不属于出版物的书籍，内容也仅仅只有五十多页，不过我认为很值得一看，你在学校教育中是否丧失了什么？</p> <h2 id="音乐" data-svelte-h="svelte-1fnb92f"><a href="#音乐">音乐</a></h2> <p data-svelte-h="svelte-8vh3ti">主要在 Spotify 听音乐，虽说网易云也在用，不过我用国内软件都不会去更新，算了</p> <p data-svelte-h="svelte-1hwqgu9"><a href="https://open.spotify.com/playlist/37i9dQZF1F0sijgNaJdgit" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hubert Chen 的 2022 年听歌排行</strong></a> <br>Spotify 的听歌排行，有 101 首，最近发现好像有些歌莫名奇妙被移出收藏歌曲了，奇怪</p> <p data-svelte-h="svelte-1nxeac2">不知道我喜欢的音乐人 <a href="https://open.spotify.com/artist/1uwGIdDsv9rhyzuqgYhOuS" rel="nofollow noopener noreferrer external" target="_blank"><strong>Daxten</strong></a> 怎么不出新歌了，最后的音乐更新停在 2021 年…</p> <p data-svelte-h="svelte-1saf7ph"><span class="spoiler">Spotify 竟然也可以像网易云一样在网页嵌入专辑了，试一试，现在换成根据组件改的 Urara 插件了，体验应该没差别</span></p> <iframe title="Spotify music player" class="mb-4 rounded-box" src="https://open.spotify.com/embed/album/730DV2yB8G1svAKIvD4pdh?utm_source=generator&amp;theme=1" width="100%" height="152" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe> <p data-svelte-h="svelte-3xayhy">很喜欢的一部纯音乐专辑，很轻快的感觉</p> <iframe title="Spotify music player" class="mb-4 rounded-box" src="https://open.spotify.com/embed/album/0vXB2JFdOphGK7ybYLXSRI?utm_source=generator&amp;theme=1" width="100%" height="152" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe> <p data-svelte-h="svelte-vx0bw2"><strong>Daxten</strong> 的第二部专辑，目前也就只有两部专辑，这个专辑是有 Epidemic Sound 唱片公司的其他歌手合作制作的</p> <p data-svelte-h="svelte-1rml52"><a href="https://www.epidemicsound.com" rel="nofollow noopener noreferrer external" target="_blank"><strong>Epidemic Sound</strong></a> 唱片公司有很多其他歌手我也很喜欢，例如 <a href="https://open.spotify.com/artist/6geC8EbDc3ifaSAbx3RESQ" rel="nofollow noopener noreferrer external" target="_blank"><strong>Tape Machines</strong></a> 和 <a href="https://open.spotify.com/artist/3OEFtQRq38Ysp1BZdmbK7h" rel="nofollow noopener noreferrer external" target="_blank"><strong>Craig Reever</strong></a>，不知道是音乐风格相同还是 Spotify 推荐算法里有这样一套，我听的推荐音乐内同一个唱片公司的艺人是真不少</p> <h2 id="外出游玩" data-svelte-h="svelte-14lc80z"><a href="#外出游玩">外出游玩</a></h2> <p data-svelte-h="svelte-aw4qs5"><span class="spoiler">虽然是宅，其实有时也会出去的，但也只有逛逛公园了</span></p> <p data-svelte-h="svelte-cicbks">图片经过我认为不怎么会损害画质的压缩，已经尽力了，本来想试试 <code>.avif</code> 格式来看看压缩效果会不会好些，但软编码 avif 性能非常差劲，往后推了吧</p> <p data-svelte-h="svelte-so2224">逛过几次公园，虽然拍了很多，但放几张拍的好看的就行了</p> <p><img src="/talk/page112/DSC_0369.webp" alt="在步行梯扶手处对着天空斜上方拍了一张图片，可以看到步行梯的扶手和台阶地板是木头做的，栏杆则是刷了白漆的铁栏杆" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1ks60x5">在一个很多步行梯的地方往上拍，不太懂这个建筑应该叫什么</p> <p><img src="/talk/page112/DSC_0539.webp" alt="一个很有意思的屋子，在一家商铺上方凸出了一个被像是绿色藤蔓覆盖了的阳台？似乎不那么透光，顶上也有封起来，还有一张深绿色的厚塑胶片盖住了顶部防水" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-a8gugq">去往另一个公园的路上遇到的有趣建筑，表面被像是藤蔓的植物还是人造的东西覆盖了，不知道支撑材质是什么，感觉是钢架子做的</p> <p><img src="/talk/page112/DSC_0556.webp" alt="一辆作为公园景点的坦克，不知道已经在这里放了多久，早已锈迹斑斑" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-4vvaur">作为公园内景点的坦克，记得某位朋友喜欢坦克，就拍了下来，估计在这里放了很长时间</p> <h2 id="疫情" data-svelte-h="svelte-19b3glo"><a href="#疫情">疫情</a></h2> <p data-svelte-h="svelte-12iu17d">本来是不怎么关心的，但今年 12 月底那个操作，是突然让我有点反应不过来</p> <big data-svelte-h="svelte-vjou4w"><b>疫情开始</b></big> <p data-svelte-h="svelte-1jmjxr1">翻翻 Google 相册回想一下 2019 年底吧，我的记性都快分不清哪些事是在什么时候发生的了，19 年底的时候武汉刚说检测到病毒，当时网上说是类似 SARS 的冠状病毒，我还并没感到什么，可能是从未经历过这种大感染</p> <p data-svelte-h="svelte-6x0ofx">疫情对我的影响，最早是进出学校佩戴口罩，但当时还没有组织核酸检测，有症状的自己看着办就行</p> <p data-svelte-h="svelte-1fdc7aa">不过上面说的是 2019 年寒假后，这段寒假期间挺折磨我的，寒假加长到四月，春季学期的课程被压到要在两个月内上完，寒假被管控在家时，还有各种压力，感到交流无效的可悲，就一年没怎么说话，头发也留到了能盖过侧脸</p> <big data-svelte-h="svelte-1ffmnb7"><b>它改变了我？</b></big> <p data-svelte-h="svelte-1jmdzbq">不如说是家里的管教方式改变了我，我在那段开始考虑人生的意义，有时同学们去上体育课，我一人留在教室，思考为什么如此堕落？</p> <p data-svelte-h="svelte-1dt9n2i">是有点不良少年的意思，但现在来看，当时做的还行，在那段一年的沉默期后，父母不会想着如何让我少碰电子设备、只一心栽进枯乏的学校教育里了</p> <p data-svelte-h="svelte-vrqr5b">同样改变的还有我们家族，从我记事起，每到新年，我们家族的人都会聚在一起，进行走访祭祖后，晚上聚在一起吃年夜饭，小孩子们会聚到一起玩烟花，我也能混进去</p> <p data-svelte-h="svelte-1gzw3v4">但都是过往了，2020 年后，家族的每户人都只会在自家吃年夜饭了，就算在年底放开了管控，还能把家族的人聚到一起吗…</p> <big data-svelte-h="svelte-f6d77z"><b>今年</b></big> 今年如何？一如既往或更烂<p data-svelte-h="svelte-qt6wn">今年具体的活动我都有在之前文章写过，或许没有说到疫情</p> <p data-svelte-h="svelte-12x9t6r">以往我家居住区附近是没有什么核酸集体检测点的，想测核酸只能驱车前往六七公里外的医院，但后面把原有的篮球场当成了检测点，居住在附近的居民都要去做</p> <p data-svelte-h="svelte-kzef6q">暑假两个月，我一直在家，不说从未，但也是极少出门了，父母硬要拉我去做核酸，似乎病毒会渗透进我房间，<span class="spoiler">有点像网上说的瘫痪老爷爷被好心人抬去做核酸，经过好心人的不懈努力，终于检测出阳性了</span></p> <p data-svelte-h="svelte-nfb8a9">结果嘛，暑假我这边被封了一个月，后半个暑假都在玩游戏，具体请看 <a href="/talk/page111/#%E6%9A%91%E5%81%87%E7%94%9F%E6%B4%BB"><strong>2022 下半年的总结</strong></a></p> <big data-svelte-h="svelte-1odo1rg"><b>放开管理后</b></big> <p data-svelte-h="svelte-18hbsqw">从感冒开始请假回家一周，回到学校没几天突然就说放开了，有种出来早了的感觉，但也不是很难受，因为没过多久，就给我们放回去了</p> <p data-svelte-h="svelte-1yf47gb">从网络上也能知道个一二，疫情在国内基本也炸开了，截至本文发布，我家里已经有两例阳性了，可能我在不久也会成为其中一个吧，也可能我才是那个无症状感染源 😰</p> <p data-svelte-h="svelte-p1i5kc">对于突然放开的看法吗，感觉是挺正常的，也是迟早的事。过去三年了，差不多是能被影响的东西都被影响了，突然放开也不说得上是紧急避险，经济倒退各种问题是在所难免了。好处我是想不到什么好处，让统计数据数据好看些了？</p> <p data-svelte-h="svelte-4913qf">放开管理后我应该也并不会有什么太大的变化，可能会少些出门在外的限制吧，别说口罩，我清楚记得之前出门可是连手机都可以不用带上</p> <h2 id="新的一年" data-svelte-h="svelte-hpz8f8"><a href="#新的一年">新的一年</a></h2> <p data-svelte-h="svelte-1hdgiqr">希望生活不会越来越烂吧，同时也应该给自己立些目标</p> <p data-svelte-h="svelte-1rwh9l4">计划在大多数时候是赶不上变化的，我说话时很多时候会带上 <strong>大概 好像 可能</strong> 类似的不确定词，凡事没绝对嘛，所以我立目标也不敢立的太多…</p> <ol data-svelte-h="svelte-i0v4hl"><li>学完 C 语言 (应该能学完吧)</li> <li>保持对画画的兴趣</li> <li>考虑下一门语言？目前想法是 <a href="https://go.dev" rel="nofollow noopener noreferrer external" target="_blank"><strong>Go</strong></a> 或 <a href="https://developer.apple.com/swift" rel="nofollow noopener noreferrer external" target="_blank"><strong>Swift</strong></a></li> <li>可能会考虑试试前端，从最近折腾博客来看是挺好玩的</li> <li>试着写点什么东西？学完 C 之前大致写不出来</li> <li>多参与开源社区的贡献</li></ol> <big data-svelte-h="svelte-ce9985"><b>新年许个愿？</b></big> <p data-svelte-h="svelte-1c0k5l">新年是应该有个愿望，但想了很久，发现最后心中的声音还是那句听过了很多次的话：</p> <p data-svelte-h="svelte-16sj8wt"><strong>希望每个人都能平平安安的</strong></p> <hr> <big data-svelte-h="svelte-cqxciv"><b>那么，这就是年度总结的全部了，希望我今年会比以往努力一些吧，一点点也好 🫠</b></big>]]>
    </content>
    <category term="年度总结" scheme="https://trle5.xyz/?tags=%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93" />
    <category term="闲聊" scheme="https://trle5.xyz/?tags=%E9%97%B2%E8%81%8A" />
  </entry>
  <entry>
    <title type="html"><![CDATA[Urara 拓展插件]]></title>
    <link href="https://trle5.xyz/post/urara-intro/extra" />
    <id>https://trle5.xyz/post/urara-intro/extra</id>
    <published>2022-12-21T00:00:00.000Z</published>
    <updated>2023-02-08T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[Urara 可用拓展插件使用教程]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-7wdxet">近期加了 Giscus 后发现还有很多拓展可以加，下面也附上部分配置的教程</p> <div class="alert flex-col shadow-inner my-4  alert-success"><div class="mr-auto"><span class="i-heroicons-outline-check-circle"></span> <div><div>本文包含的大多数拓展已包含在官方文档内</div> </div></div> </div> <p data-svelte-h="svelte-47vjkf">查看官方拓展文档：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html" rel="nofollow noopener noreferrer external" target="_blank"><strong>拓展 | Urara Docs</strong></a></p> <h2 id="文章组件" data-svelte-h="svelte-eka0sh"><a href="#文章组件">文章组件</a></h2> <p data-svelte-h="svelte-1fvp1ek">在文章里用的组件，可以像 HTML 代码一样直接插入到文章内</p> <h3 id="youtube-视频" data-svelte-h="svelte-uxew9k"><a href="#youtube-视频">YouTube 视频</a></h3> <p data-svelte-h="svelte-1ttc6tc">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#youtube" rel="nofollow noopener noreferrer external" target="_blank"><strong>YouTube | Urara Docs</strong></a></p> <p data-svelte-h="svelte-16fihs0">Urara 默认包含这个拓展，使用方法只需要在文档内导入一下就可以用了</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script&gt;</div><div class='line'>  import YouTube from '$lib/components/extra/youtube.svelte'</div><div class='line'>  // 若有其他拓展组件就往这里加</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-5r68k">使用的时候点进一个 YouTube 视频，看到地址栏有类似 <code>watch?v=WysuxO4yR04</code> 的部分时，复制其中的 <code>WysuxO4yR04</code> 视频 ID 既可</p> <p data-svelte-h="svelte-1qagsmr">然后在文章内添加一行</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;YouTube id="WysuxO4yR04" /&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1tenpzz">再把 <code>WysuxO4yR04</code> 替换成你想要展示的 YouTube 视频既可</p> <h3 id="资料卡片" data-svelte-h="svelte-1u3qeg5"><a href="#资料卡片">资料卡片</a></h3> <p data-svelte-h="svelte-4e1ekv">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#%E8%B5%84%E6%96%99%E5%8D%A1%E7%89%87" rel="nofollow noopener noreferrer external" target="_blank"><strong>资料卡片 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-137ihsv">首先要去下载 <a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/profile/profile.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>profile.svelte</strong></a>，下载完成之后放进 <code>src/lib/components/extra/</code> 目录里</p> <p data-svelte-h="svelte-1fqj9kz">像上面一样，使用前也得要在文档内导入</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script lang="ts"&gt;</div><div class='line'>  import Profile from '$lib/components/extra/profile.svelte'</div><div class='line'>  import YouTube from '$lib/components/extra/youtube.svelte'</div><div class='line'>  // 上面这行是模拟了你同时导入了两个组件的情况，实际使用时请删掉</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1nunqir">使用方法也是同上</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;Profile subname="这里是姓氏" bio=&#123;&#96;这里是简介。&lt;br&gt;这是第二行简介。&#96;&#125;/&gt;</div><div class='line'>// 更高级一点的？你也可以在里面手动指定全部信息：</div><div class='line'>&lt;Profile name="姓名" avatar="/assets/maskable@512.png" subname="这里是姓氏" bio=&#123;&#96;这里是简介。&lt;br&gt;这是第二行简介。&#96;&#125; /&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1fgbhxr">还可以在里面放 HTML 代码，甚至也可以套组件本身：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;Profile name="姓名" avatar="/assets/maskable@512.png" subname="这里是姓氏" bio=&#123;&#96;这里是简介。&lt;br&gt;这是第二行简介。&#96;&#125; &gt;</div><div class='line'>  &lt;YouTube id="WysuxO4yR04" /&gt;</div><div class='line'>  &lt;iframe style="border-radius:12px" src="https://open.spotify.com/embed/album/5THlVUJAn3kq087DxcWTTa?utm_source=generator" width="100%" height="352" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"&gt;&lt;/iframe&gt;</div><div class='line'>  &lt;Profile name="姓名" avatar="/assets/maskable@512.png" subname="这里是姓氏" bio=&#123;&#96;这里是简介。&lt;br&gt;这是第二行简介。&#96;&#125; /&gt;</div><div class='line'>&lt;/Profile&gt;</div></code></div></pre><!-- HTML_TAG_END --> <h3 id="状态提示" data-svelte-h="svelte-8xuopx"><a href="#状态提示">状态提示</a></h3> <p data-svelte-h="svelte-mxyq9y">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#%E7%8A%B6%E6%80%81%E6%8F%90%E7%A4%BA" rel="nofollow noopener noreferrer external" target="_blank"><strong>状态提示 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-7pxxl2">就是本文章开头那个提示栏，它包含在 Urara 内可直接使用，导入：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script&gt;</div><div class='line'>  import Alert from '$lib/components/extra/alert.svelte'</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-b7ag4t">使用方法：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;Alert status="warning" description="警告信息" title="警告标题"/&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-10m6b94"><strong>status</strong> 有 <code>info</code>、<code>success</code>、<code>warning</code> 和 <code>error</code> 四个选项，可以根据需要自己选择，不填默认就是 <code>info</code> 图标，而且会没有强调色</p> <p data-svelte-h="svelte-43ylno">至于为什么我的使用例不填 <strong>description</strong> 不会出现一行 <strong>undefined</strong>？因为我看好像有时候并不需要标题，就改掉了</p> <p data-svelte-h="svelte-jebr2q">方法是打开 <code>src/components/extra/alert.svelte</code> 文件，把第二行和第三行的 <code>undefined = &#39;undefined&#39;</code> 改成 <code>undefined = &#39;&#39;</code></p> <h3 id="spotify-音乐" data-svelte-h="svelte-mro767"><a href="#spotify-音乐">Spotify 音乐</a></h3> <p data-svelte-h="svelte-boqgm0">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#spotify" rel="nofollow noopener noreferrer external" target="_blank"><strong>Spotify | Urara Docs</strong></a></p> <p data-svelte-h="svelte-18itlnt">昨天自己照着 <a href="#youtube-%E8%A7%86%E9%A2%91"><strong>YouTube 视频</strong></a> 改出来的，应该没什么 Bug 了，<del>后面会考虑要不要加到官方文档里去</del> 已添加</p> <p data-svelte-h="svelte-1g0tiim">已经包含在 Urara 里了<span class="spoiler">还混了个贡献者</span>，要使用直接导入既可</p> <p data-svelte-h="svelte-18zko9b">导入：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script lang="ts"&gt;</div><div class='line'>  import Spotify from '$lib/components/extra/spotify.svelte'</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-b7ag4t">使用方法：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;Spotify type="album" id="0vXB2JFdOphGK7ybYLXSRI" compact=&#123;true&#125; theme=&#123;true&#125; width="100%" /&gt;</div></code></div></pre><!-- HTML_TAG_END --> <ul data-svelte-h="svelte-kfogu8"><li><p><strong>id</strong> 为播放清单的 ID，在 Spotify 分享链接时可以看到</p></li> <li><p><strong>type</strong> 是 ID 的类型，有 <code>artist</code> <code>album</code> <code>track</code> 三个选项，默认定义为 <code>&quot;track&quot;</code></p></li> <li><p><strong>compact</strong> 是卡片布局，默认定义为 <code>{false}</code> 常规布局，改为 <code>{true}</code> 为紧凑布局</p></li> <li><p><strong>theme</strong> 为组件背景，默认为 <code>{true}</code>，若改为 <code>{false}</code> 就会让背景变为默认的灰色</p></li> <li><p><strong>width</strong> 为卡片宽度，默认定义为 <code>100%</code>，不加 <code>%</code> 时就是像素宽度</p></li></ul> <p data-svelte-h="svelte-1tpkqw1"><del>嗯，从这混乱的组件就可以看出，质量不咋样，我的想法是 <code>compact</code> 和 <code>theme</code> 能通过 <code>true</code> 和 <code>false</code> 来控制，但搞了好久不知道怎么声明布尔变量，后面再修吧…</del></p> <p data-svelte-h="svelte-a1pvz9">又麻烦大佬帮我修了，这下应该不会出现问题了</p> <h3 id="soundcloud-音乐" data-svelte-h="svelte-ci461h"><a href="#soundcloud-音乐">SoundCloud 音乐</a></h3> <p data-svelte-h="svelte-utfcbe">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#soundcloud" rel="nofollow noopener noreferrer external" target="_blank"><strong>SoundCloud | Urara Docs</strong></a></p> <p data-svelte-h="svelte-x4jmf6">Urara 最近新加的拓展，测试的时候去 SoundCloud 复制了一下原本的嵌入码，那是真的长，格式化代码后都要看一阵子</p> <p data-svelte-h="svelte-1t3kanj">导入拓展：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script lang="ts"&gt;</div><div class='line'>  import SoundCloud from '$lib/components/extra/soundcloud.svelte'</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-b7ag4t">使用方法：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;SoundCloud type="playlist" id="1259265289" /&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-b8w2jw">上面这个样子也是最简单的样式，下面是一些自定义项</p> <ul data-svelte-h="svelte-16hkike"><li><strong>type</strong> ID 类型，默认是 <code>track</code>，若分享的是播放列表则需要修改为 <code>playlist</code></li> <li><strong>visual</strong> 默认为 <code>{true}</code>，禁用后若是单曲那么组件宽度会变矮，播放列表的话封面就会变小</li> <li><strong>color</strong> 颜色，默认是 <code>#ff5500</code> (16进制值)，其实改的是播放按钮的颜色，使用时忽略 # 号</li> <li><strong>autoplay</strong> 自动播放，加载组件后会自动开始播放音乐，默认为 <code>{false}</code></li> <li><strong>width</strong> 宽度，同样支持百分比和像素宽度</li></ul> <p data-svelte-h="svelte-1ocfq4t">这个最难的在于抓取歌曲 ID，它不显示在地址栏，需要手动点击分享，再选择嵌入，复制代码后，里面会有一串数字，那就是需要的 ID 了：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" html="true" title="SoundCloud 嵌入代码长得很，这里只截取了 iframe 的部分"><div class='code-title'>SoundCloud 嵌入代码长得很，这里只截取了 iframe 的部分</div><div class="language-id">html</div><div class='code-container'><code><div class='line dim'>&lt;iframe </div><div class='line dim'>  width="100%" </div><div class='line dim'>  height="450" </div><div class='line dim'>  scrolling="no" </div><div class='line dim'>  frameborder="no" </div><div class='line dim'>  allow="autoplay" </div><div class='line dim'>  src="</div><div class='line dim'>    https://w.soundcloud.com/player/?url=</div><div class='line dim'>    https%3A//api.soundcloud.com/playlists/</div><div class='line highlight'>    1259265289</div><div class='line dim'>    &color=%2322ecf1&auto_play=false&hide_related=false</div><div class='line dim'>    &show_comments=true&show_user=true&show_reposts=false&show_teaser=true"&gt;</div><div class='line dim'>&lt;/iframe&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-wpwt4t">获取到 ID 后替换掉上方示例里的 ID 既可，同时需要注意分享的类型，不然会指向错误的页面</p> <h3 id="github-仓库" data-svelte-h="svelte-i4192x"><a href="#github-仓库">GitHub 仓库</a></h3> <p data-svelte-h="svelte-me1t2h">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#github-%E4%BB%93%E5%BA%93" rel="nofollow noopener noreferrer external" target="_blank"><strong>GitHub 仓库 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-1tdr8km">一个用来展示 GitHub 仓库的组件，组织和个人的仓库都可以，只能展示公开仓库，没授权访问私有仓库的功能</p> <p data-svelte-h="svelte-jygtw9">还未包含在 Urara 里，就要麻烦手动下载组件了：<a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/github/github.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>github.svelte</strong></a>，再放到 <code>src/lib/components/extra/</code> 目录里。</p> <p data-svelte-h="svelte-1ezg9yl">在使用前导入：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;script&gt;</div><div class='line'>  import GitHub from '$lib/components/extra/github.svelte'</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1nn0v6x">这个组件使用起来很简单，填入用户或组织名，再填写名下的仓库名就可以了：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;GitHub user="importantimport" repo="urara"/&gt;</div></code></div></pre><!-- HTML_TAG_END --> <h2 id="网页拓展" data-svelte-h="svelte-1rwwq26"><a href="#网页拓展">网页拓展</a></h2> <p data-svelte-h="svelte-17c8n60">此分类可以拓充博客页面</p> <h3 id="friends-页面" data-svelte-h="svelte-jqwxrm"><a href="#friends-页面">Friends 页面</a></h3> <p data-svelte-h="svelte-1h69jau">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#%E5%8F%8B%E9%93%BE" rel="nofollow noopener noreferrer external" target="_blank"><strong>友链 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-mwbc38">这个来说相对简单，复制几个文件再照着改就行</p> <p data-svelte-h="svelte-12xj88">首先下载 <a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/friend/friend.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>friend.svelte</strong></a> 文件，放进 <code>src/lib/components/extra/</code> 文件夹内</p> <p data-svelte-h="svelte-o0oacs">再下载 <a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/friend/%2Bpage.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>+page.svelte</strong></a> 文件，放进 <code>src/routes/friends/</code> 文件夹内，<code>src/routes/</code> 里默认是没有 <code>friends</code> 文件夹的，请手动创建并将文件放入其中</p> <p data-svelte-h="svelte-dx7jn8">对了，还需要安装 <code>svelte-bricks</code> 依赖</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>pnpm add -D svelte-bricks</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-892j6h">添加后记得运行一下 <code>pnpm i</code> 再进行开发服务器测试</p> <p data-svelte-h="svelte-g5uwqy">接下来是最重要的一步，在 <code>src/lib/config/</code> 文件夹中，创建一个名为 <code>friends.ts</code> 的文件，再复制以下内容粘贴保存，样式来自 <a href="https://kwaa.dev/about" rel="nofollow noopener noreferrer external" target="_blank"><strong>./kwaa.dev</strong></a> 博客的 <a href="https://github.com/kwaa/blog/blob/main/src/lib/config/friends.ts" rel="nofollow noopener noreferrer external" target="_blank"><strong>GitHub 仓库</strong></a> (太长了，删掉了一些)</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/friends.ts"><div class='code-title'>src/lib/config/friends.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export interface FriendOld &#123;</div><div class='line'>  // hCard+XFN</div><div class='line'>  id: string // HTML id</div><div class='line'>  rel?: string // XFN, contact / acquaintance / friend</div><div class='line'>  link?: string // URL</div><div class='line'>  html?: string // HTML</div><div class='line'>  title?: string // 标题</div><div class='line'>  descr?: string // 描述</div><div class='line'>  avatar?: string // 头像</div><div class='line'>  name?: string // backwards compatibility</div><div class='line'>&#125;</div><div class='line'></div><div class='line'>export type Friend = &#123;</div><div class='line'>  id: string // HTML id</div><div class='line'>  rel?: string // XHTML Friends Network</div><div class='line'>  link?: string // URL</div><div class='line'>  html?: string // Custom HTML</div><div class='line'></div><div class='line'>  title?: string // 标题</div><div class='line'>  name?: string // 人名</div><div class='line'>  avatar?: string // 头像</div><div class='line'>  descr?: string // 描述</div><div class='line'>  class?: &#123;</div><div class='line'>    avatar?: string // 头像类名</div><div class='line'>    img?: string // 图片类名</div><div class='line'>  &#125;</div><div class='line'>&#125;</div><div class='line'></div><div class='line'>export const friends: Friend[] = [</div><div class='line'>  &#123;</div><div class='line'>  id: 'kwaa',</div><div class='line'>  rel: 'friend',</div><div class='line'>  link: 'https://kwaa.dev',</div><div class='line'>  html: &#96;&lt;div class="card w-screen max-w-[24rem] bg-base-100 bg-gradient-to-tr from-primary to-accent text-primary-content shadow-lg transition-shadow duration-500 hover:shadow-2xl"&gt;</div><div class='line'>    &lt;div class="absolute top-4 rotate-6 text-4xl font-bold leading-tight opacity-10"&gt;藍+85CD&lt;br /&gt;./kwaa.dev&lt;/div&gt;</div><div class='line'>    &lt;div class="card-body p-4"&gt;</div><div class='line'>      &lt;div class="flex items-center gap-4"&gt;</div><div class='line'>        &lt;div class="avatar mb-auto w-20 shrink-0"&gt;</div><div class='line'>          &lt;img class="rounded-xl" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAVFBMVEUAAADW29T///+5wcc4ODjz8OZVVVX/7MkVFRXtrpqTJiVHKxPZOjr/+/QICz3/07d1TCNErbkaSXtgERn59vb//OPSzMzuuwKZne20srL0mIyWGwWygNgKAAAAAXRSTlMAQObYZgAAAOtJREFUKM9djwuSwyAMQ2vsBDBJyK/tfu5/z5W6aYZUMB7QQwZuhwIkwnq7KIgqTFQJV3/USQX+OoE0fqfLIh0kCtKC31VGEEGqBezdydixfAARnNeRKZDmClE4mFE/gAKpTjFOcgEde01fa4wrDjRAlGNf7vdF5QKEzSJUCRpftmFwrbW6vEGYXwEzHzi2BvCF1ve9/7hvDSgqBJYQeHxrA4oqAskA9ocpwUkIkrvbnppvlNnMUkn+9B4r+CdAAACVM5yJnBnA9U+8wCzncPgRynP6V+WGIQZyzMWspwzrTEASSi4F/kHCy/4DaDYJuEU/v5oAAAAASUVORK5CYII=" alt="藍#+85CD" /&gt;</div><div class='line'>        &lt;/div&gt;</div><div class='line'>        &lt;div class="card-title flex-1 flex-col items-end gap-0"&gt;</div><div class='line'>          &lt;span class="p-name text-right"&gt;藍+85CD&lt;/span&gt;</div><div class='line'>          &lt;span class="text-right opacity-50"&gt;./kwaa.dev&lt;/span&gt;</div><div class='line'>        &lt;/div&gt;</div><div class='line'>      &lt;/div&gt;</div><div class='line'>      &lt;div class="p-note prose opacity-70"&gt;ゴミ溜めで埋もれたまま、星空を眺めてるよ&lt;/div&gt;</div><div class='line'>    &lt;/div&gt;</div><div class='line'>  &lt;/div&gt;&#96;</div><div class='line'>  &#125;,</div><div class='line'>  &#123;</div><div class='line'>    id: 'test4',</div><div class='line'>    name: ':hatsunemiku: 藍 :hatsunemiku:',</div><div class='line'>    title: '~/kwaa.moe',</div><div class='line'>    link: 'https://kwaa.moe/@kwa',</div><div class='line'>    descr: 'ゴミ溜めで埋もれたまま、星空を眺めてるよ',</div><div class='line'>    avatar: 'https://kwaa.moe/media/975fc04911e242147be77b60b93839b6dd1a317112717562944e3c7aef1f0203.png'</div><div class='line'> &#125;,</div><div class='line'> &#123;</div><div class='line'>   id: 'test5',</div><div class='line'>   name: '藍',</div><div class='line'>   title: '藍藍藍藍藍',</div><div class='line'>   link: 'https://kwaa.dev',</div><div class='line'>   descr: 'without avatar'</div><div class='line'>  &#125;</div><div class='line'>]</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-e43xck">演示图</p> <p><img src="/post/urara-intro/extra/urara-friends.webp" alt="三个朋友卡片样式，其中有一个的背景使用了 Daisy UI 主题的第一和第三色做了一个左下角到右上角的渐变" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-10lw7fv">可以看到，这个好友卡片有两种样式（页脚不算），看源文件也能看出来，有渐变底的那个卡片里有 HTML 格式的代码，我不会改，如果你有能力可以试着自己改， <a href="https://kwaa.dev/" rel="nofollow noopener noreferrer external" target="_blank">kwaa</a> 大佬提供了一个 <a href="https://play.tailwindcss.com/0AHHfFWTgL" rel="nofollow noopener noreferrer external" target="_blank">Tailwind Play</a> 用于参考与修改</p> <p data-svelte-h="svelte-1tfagl1"><strong>这里我们主要讲默认样式如何修改</strong></p> <p data-svelte-h="svelte-1jh4cnc">依然是放一个卡片样式模板用于修改，这里是我的个人卡片 😝</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>export const friends: Friend[] = [</div><div class='line dim'>  &#123;</div><div class='line dim'>    id: 'trle5', // HTML ID，不会显示在卡片上</div><div class='line dim'>    rel: 'friend', // 联系人类型，可选 contact / acquaintance / friend，目前不太清楚有什么用</div><div class='line highlight'>    title: 'Hubert's Blog', // 标题，显示在昵称下方</div><div class='line dim'>    name: 'Hubert Chen', // 昵称</div><div class='line dim'>    link: 'https://trle5.xyz/', // 点击卡片后访问的页面</div><div class='line dim'>    descr: '你好呀 👋', // 头像下方的网站描述</div><div class='line dim'>    avatar: 'https://trle5.xyz/assets/avatar/70455873_p3.webp' // 头像，也可调用其他网页的图片</div><div class='line dim'>  &#125;</div><div class='line dim'>]</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-55kwex">高亮行使用了 Unicode 码，请将 <code>Hubert&#39;s Blog</code> 中的 <code>&#39;</code>手动替换为 <code>\u0027</code></p> <p data-svelte-h="svelte-cov2pa">效果图</p> <p><img src="/post/urara-intro/extra/urara-friends-me.webp" alt="我自己的朋友卡片，描述是 你好呀👋" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1sw0fye">也可以随时找我申请友链，在 <a href="/about"><strong>关于我</strong></a> 页面使用任意方式联系我即可</p> <big data-svelte-h="svelte-1gpuqqb"><b>朋友卡片的社交平台图标</b></big> <p data-svelte-h="svelte-1pabx1t">应该有些人发现在我的 <a href="/friends"><strong>朋友页面</strong></a>，点进卡片时，有些并不是博客链接，而是社交平台的链接，于是我就在朋友卡片右下角加了个社交软件的图标</p> <p data-svelte-h="svelte-1np2r9n">嗯，这个功能是我魔改出来的，其实本来还<a href="https://t.me/Riocoolapk/946539" rel="nofollow noopener noreferrer external" target="_blank"><strong>打算再加个社交平台的名称</strong></a>，最后只做成这个样子，没有前端知识，只会照着模板改</p> <p data-svelte-h="svelte-95tb65">如果你有加这个小图标的想法，可以看看我博客仓库的 <a href="https://github.com/Interstellar750/hexo_s/commit/be5d9479583c7a2bb5fd8f42a731de6078ae9805" rel="nofollow noopener noreferrer external" target="_blank"><strong>BE5D947</strong></a> 这个提交中对 <code>friend.svelte</code> 和 <code>friends.ts</code> 的修改，至于图标我是从 <a href="https://icons8.com/" rel="nofollow noopener noreferrer external" target="_blank"><strong>ICONS8</strong></a> 上下载的</p> <p data-svelte-h="svelte-1rfgigb">上面这个图标在近期可能会改一下，看看能不能换个其他方便一点的办法</p> <p data-svelte-h="svelte-hee2mt">这个图标与朋友描述占同一行，它们可以同时存在，也可以单独出现一个，社交平台图标路径的使用方法类似头像，贴上图标路径加上就行</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/friends.ts"><div class='code-title'>src/lib/config/friends.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>export const friends: Friend[] = [</div><div class='line dim'>  &#123;</div><div class='line dim'>    id: 'HTML ID',</div><div class='line dim'>    rel: 'firend',</div><div class='line dim'>    title: '标题',</div><div class='line dim'>    name: '昵称',</div><div class='line dim'>    link: '链接',</div><div class='line dim'>    descr: '描述',</div><div class='line highlight'>    social: '&lt;社交平台图标路径&gt;',</div><div class='line dim'>    avatar: '&lt;头像路径&gt;'</div><div class='line dim'>  &#125;</div><div class='line dim'>]</div></code></div></pre><!-- HTML_TAG_END --> <h3 id="项目展示" data-svelte-h="svelte-yfrcdm"><a href="#项目展示">项目展示</a></h3> <p data-svelte-h="svelte-112wwej">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#%E9%A1%B9%E7%9B%AE%E5%B1%95%E7%A4%BA" rel="nofollow noopener noreferrer external" target="_blank"><strong>项目展示 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-2e7zvc">由 <a href="https://github.com/Sevichecc" rel="nofollow noopener noreferrer external" target="_blank"><strong>SevcheCC</strong></a> 制作，可以去看看 <a href="https://seviche.cc/2022-05-26-write-a-page-template/" rel="nofollow noopener noreferrer external" target="_blank"><strong>为博客写一个Project showcase 页面</strong></a> 和 <a href="https://seviche.cc/projects/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Projects | Seviche.cc</strong></a></p> <p data-svelte-h="svelte-1mxhhh1">配置过程与友链页面差不多，也是要下两个文件和自己配置一个</p> <p data-svelte-h="svelte-uq2gw7">首先下载 <a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/project/projects.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>projects.svelte</strong></a> 文件，放进 <code>src/lib/components/extra/</code> 文件夹内</p> <p data-svelte-h="svelte-cn8q4">再下载 <a href="https://github.com/importantimport/urara-docs/raw/master/public/extension/project/%2Bpage.svelte" rel="nofollow noopener noreferrer external" target="_blank"><strong>+page.svelte</strong></a> 文件，放进 <code>src/routes/friends/</code> 文件夹内，<code>src/routes/</code> 里默认是没有 <code>projects</code> 文件夹的，请手动创建并将文件放入其中</p> <p data-svelte-h="svelte-1ycyul1">再到 <code>src/lib/config/</code> 目录新建一个 <code>projects.ts</code> 文件，复制以下内容粘贴到文件内：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export type Project = &#123;</div><div class='line'>  id: string</div><div class='line'>  name: string</div><div class='line'>  tags?: string[]</div><div class='line'>  feature?: string</div><div class='line'>  description?: string</div><div class='line'>  img: string</div><div class='line'>  link?: string</div><div class='line'>&#125;</div><div class='line'></div><div class='line'>export const projects: Project[] = [</div><div class='line'>  &#123;</div><div class='line'>    id: 'urara', // HTML ID</div><div class='line'>    name: 'Urara', // 项目名</div><div class='line'>    tags: ['Svelte', 'TypeScript'], // 标签</div><div class='line'>    description: // 描述</div><div class='line'>      "🌸 Sweet, Powerful, IndieWeb-Compatible SvelteKit Blog Starter. [δ](Delta)",</div><div class='line'>    feature: 'Svelte', // 特点</div><div class='line'>    img: 'https://github.com/importantimport/urara/raw/main/urara/hello-world/urara.webp', // 项目图片</div><div class='line'>    link: 'https://github.com/importantimport/urara' // 链接</div><div class='line'>  &#125;</div><div class='line'>]</div></code></div></pre><!-- HTML_TAG_END --> <p><img src="/post/urara-intro/extra/urara-projects.webp" alt="一个与页脚等宽的项目卡片，左侧是展示图片，右侧是介绍信息" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-p8qpg9">目前这个拓展不能不放图片，图片框架有最小限制，图片尺寸不够的话会顶部居中对齐，图片过高则会往下纵向拓展，宽度固定</p> <h2 id="评论功能" data-svelte-h="svelte-172v386"><a href="#评论功能">评论功能</a></h2> <h3 id="webmention" data-svelte-h="svelte-1bz0oky"><a href="#webmention">Webmention</a></h3> <p data-svelte-h="svelte-r5o4wy">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#webmention" rel="nofollow noopener noreferrer external" target="_blank"><strong>Webmention | Urara Docs</strong></a></p> <p data-svelte-h="svelte-fq5kph">一种让一个网页可以与另一个网页进行交互的协议？其实原理我也不太懂，也可以跟 Mastodon 这种 Fediverse(联邦宇宙) 平台进行互动，但本站目前并没有这个功能…</p> <p data-svelte-h="svelte-1p5vy9p">还有一个发送 Webmention 链接的功能，我不太会用，就没什么说明。同时还支持基于 <a href="https://commentpara.de/" rel="nofollow noopener noreferrer external" target="_blank"><strong>commentpara.de</strong></a> 的匿名评论功能，但似乎与目前的 Urara 依赖有兼容性问题，我降了 sveltekit 与 vite 版本后才能正常工作</p> <p data-svelte-h="svelte-1ta5r9j">这个组件默认包含在 Urara 里，所以就只用改配置，首先看 <code>src/lib/config/general.ts</code> 文件，大概在百来行的位置：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/general.ts"><div class='code-title'>src/lib/config/general.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>export const head: HeadConfig = &#123;</div><div class='line dim'>  custom: (&#123; dev, post, page &#125;) =&gt;</div><div class='line dim'>    dev</div><div class='line dim'>      ? []</div><div class='line dim'>      : [</div><div class='line dim'>          // IndieAuth</div><div class='line dim'>          '&lt;link rel="authorization_endpoint" href="https://indieauth.com/auth"&gt;',</div><div class='line dim'>          '&lt;link rel="token_endpoint" href="https://tokens.indieauth.com/token"&gt;',</div><div class='line dim'>        ],</div><div class='line highlight'>  me: ['https://github.com/&lt;用户名&gt;']</div><div class='line dim'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-o71oe5">要改的也就是高亮行，把 <code>&lt;用户名&gt;</code> 改成你的 GitHub 用户名，再到 GitHub 的个人页面里修改个人信息，在 <strong>Website</strong> 框内填入你的网站域名，后面就可以使用 <a href="https://indieauth.com/" rel="nofollow noopener noreferrer external" target="_blank"><strong>IndieAuth</strong></a> 登录了</p> <p data-svelte-h="svelte-18p3cdd">接下来是添加 Webmention 评论组件，编辑 <code>src/lib/config/post.ts</code> 文件：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/post.ts"><div class='code-title'>src/lib/config/post.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>import type &#123; PostConfig &#125; from '$lib/types/post'</div><div class='line'></div><div class='line'>export const post: PostConfig = &#123;</div><div class='line'>  comment: &#123;</div><div class='line'>    use: ['Webmention', '其他评论系统'],</div><div class='line'>    style: 'boxed', // 评论系统栏样式: none / bordered / lifted / boxed</div><div class='line'>    webmention: &#123;</div><div class='line'>      username: '[在此输入域名]',</div><div class='line'>      sortBy: 'created', // 排序方式: created / updated</div><div class='line'>      sortDir: 'down', // 排序顺序: up / down</div><div class='line'>      form: true, // 启用评论: true / false</div><div class='line'>      commentParade: true // 启用匿名评论: true / false</div><div class='line'>    &#125;</div><div class='line'>  &#125;</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-wvgjwl">填写域名和调整设置后对博客进行部署就可以去测试了，匿名评论不可用那就用 <a href="https://webmention.rocks/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Webmention Rocks!</strong></a> 来进行测试吧，要看评论的话要登录 <a href="https://webmention.io/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Webmention.io</strong></a>，这就是为什么前面要设置 <strong>IndieAuth</strong> 的原因</p> <p data-svelte-h="svelte-176f8ug"><strong>Webmention.io</strong> 的 <strong>Settings</strong> 页面提供了评论订阅链接，它类似下面这样：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>https://webmention.io/api/mentions.atom?token=0123456789ABCDEF_ghIJK</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1b1yhwo">其中的 <code>0123456789ABCDEF_ghIJK</code> 是 API Key，用处就是查看所有 Webmention，保密与否看你自己，上面的链接可以使用 RSS 阅读器来订阅</p> <p data-svelte-h="svelte-1uhicy1">还可以设定屏蔽来自某个域名的 Webmention 或删除评论</p> <h3 id="giscus" data-svelte-h="svelte-1pcdbxs"><a href="#giscus">Giscus</a></h3> <p data-svelte-h="svelte-1nf7ydm">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#giscus" rel="nofollow noopener noreferrer external" target="_blank"><strong>Giscus | Urara Docs</strong></a></p> <p data-svelte-h="svelte-w3zyx4">本站就在用，依赖于 GitHub 项目仓库的 Discussions 功能，注定了对于国内的网络有点难访问，有时候可能会串评论，需要手动刷新</p> <p data-svelte-h="svelte-15j02o9">好消息是，Urara 自带 Giscus 拓展，这里我们就不需要像其他拓展一样手动去找文件了，只需要修改已有的文件既可</p> <p data-svelte-h="svelte-15n7hwx">首先需要去 <a href="https://giscus.app/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Giscus.app</strong></a> 配置一下，跟着提示的步骤走就行</p> <p data-svelte-h="svelte-1ouioh2">至于 <strong>页面 ↔️ discussion 映射关系</strong> 这个怎么选都行，它目前并没有被分离出来，需要修改的话我后面会说</p> <p data-svelte-h="svelte-1i305io">配置完成后，大概会给你一个类似下面的代码块，我们只需要其中的一些数据</p> <!-- HTML_TAG_START --><pre class="shiki material-default" html="true"><div class="language-id">html</div><div class='code-container'><code><div class='line dim'>&lt;script src="https://giscus.app/client.js"</div><div class='line highlight'>        data-repo="interstellar750/hexo_s"</div><div class='line highlight'>        data-repo-id="R_kgDOHTJG_w"</div><div class='line highlight'>        data-category="General"</div><div class='line highlight'>        data-category-id="DIC_kwDOHTJG_84CS2Mz"</div><div class='line dim'>        data-mapping="pathname"</div><div class='line dim'>        data-strict="0"</div><div class='line highlight'>        data-reactions-enabled="1"</div><div class='line dim'>        data-emit-metadata="0"</div><div class='line highlight'>        data-input-position="top"</div><div class='line highlight'>        data-theme="preferred_color_scheme"</div><div class='line highlight'>        data-lang="zh-CN"</div><div class='line highlight'>        data-loading="lazy"</div><div class='line dim'>        crossorigin="anonymous"</div><div class='line dim'>        async&gt;</div><div class='line dim'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-jempa0">接下来的就是对应的上面选项的样式，根据是否相同，填入 <code>src/lib/config/post.ts</code> 文件既可</p> <p data-svelte-h="svelte-10jhqik">测试前请注意把仓库和分类的 ID 改掉，不然你的评论会发到我这里来 😱</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/post.ts"><div class='code-title'>src/lib/config/post.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>import type &#123; PostConfig &#125; from '$lib/types/post'</div><div class='line'></div><div class='line'>export const post: PostConfig = &#123;</div><div class='line'>comment: &#123;</div><div class='line'>    use: ['Giscus'],</div><div class='line'>    giscus: &#123;</div><div class='line'>      repo: 'interstellar750/hexo_s',</div><div class='line'>      repoID: 'R_kgDOHTJG_w',</div><div class='line'>      category: 'General',</div><div class='line'>      categoryID: 'DIC_kwDOHTJG_84CS2Mz',</div><div class='line'>      reactionsEnabled: true,</div><div class='line'>      lang: 'zh-CN',</div><div class='line'>      inputPosition: 'top',</div><div class='line'>      theme: 'preferred_color_scheme'</div><div class='line'>    &#125;</div><div class='line'>&#125;</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-70yb0i">关于 <code>data-loading=&quot;lazy&quot;</code> 这个选项嘛，它其实已经默认启用了，如果您想要修改的话，可以查看 <code>src/lib/types/post.ts</code> 文件，将其的值修改为 <code>eager</code> 或直接删除它来禁用懒加载（不过我没试过有没有效果 😝）</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/types/post.ts"><div class='code-title'>src/lib/types/post.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>⬆57</div><div class='line dim'>  /** choose the language giscus will be displayed in. */</div><div class='line dim'>  lang?: string</div><div class='line dim'>  /** loading of the comments will be deferred until the user scrolls near the comments container. */</div><div class='line highlight'>  loading?: 'lazy'</div><div class='line dim'>&#125;</div><div class='line'></div><div class='line dim'>export type UtterancesConfig = &#123;</div><div class='line dim'>⬇65</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-s7cc9m">如果您需要修改 <strong>页面 ↔️ discussion 映射关系</strong> 的话，您需要修改 <code>src/lib/components/comments/giscus.svelte</code> <del>文件里的内容，可能以后也会移至 <code>post.ts</code> 里吧</del> 大概不会了</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/components/comments/giscus.svelte"><div class='code-title'>src/lib/components/comments/giscus.svelte</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>⬆6</div><div class='line dim'>  onMount(() =&gt; &#123;</div><div class='line dim'>    const giscus = document.createElement('script')</div><div class='line dim'>    Object.entries(&#123;</div><div class='line dim'>      src: config.src ?? 'https://giscus.app/client.js',</div><div class='line dim'>      'data-repo': config.repo,</div><div class='line dim'>      'data-repo-id': config.repoID,</div><div class='line dim'>      'data-category': config.category ?? '',</div><div class='line dim'>      'data-category-id': config.categoryID,</div><div class='line highlight'>      'data-mapping': 'pathname',</div><div class='line dim'>      'data-reactions-enabled': config.reactionsEnabled === false ? '0' : '1',</div><div class='line dim'>      'data-input-position': config.inputPosition ?? 'bottom',</div><div class='line dim'>⬇18</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1klkezg">根据前面说到的有时候会串评论的问题，<del>我这里就把 <code>data-mapping</code> 改成了 <code>og:title</code>，其实有没有效果我自己都有点不清楚</del></p> <p data-svelte-h="svelte-yuhd4u">现在还有串评论的问题就改回来了，留着 pathname 似乎是比较好的选项，不过依然有个小问题，例如我的 <a href="/about"><strong>关于我</strong></a> 目录下还有三个文章，当 about/ 这个页面没有单独开一个讨论时，子目录里有其他页面已经开了讨论页面，那么里面的评论就会串到父文章来，不过也有解决方法，进入对应仓库的 Discussions 按照 giscus app 的格式开一个新讨论就行</p> <h3 id="utterances" data-svelte-h="svelte-zlulci"><a href="#utterances">Utterances</a></h3> <p data-svelte-h="svelte-1ithaw6">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#utterances" rel="nofollow noopener noreferrer external" target="_blank"><strong>Utterances | Urara Docs</strong></a></p> <p data-svelte-h="svelte-1fbufih">同样是基于 GitHub 服务的评论系统，但 Utterances 用的是 Issues 功能，如果有 Issues 功能需求的就不要用了，也可以把评论仓库换到其他仓库，本质上更推荐用 Giscus</p> <p data-svelte-h="svelte-1kag7i2">首先是访问 <a href="https://utteranc.es/" rel="nofollow noopener noreferrer external" target="_blank"><strong>utteranc.es</strong></a> 进行配置，跟着说明走就行，只是没有多语言，后面就会得到一个 HTML 格式的代码：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" html="true"><div class="language-id">html</div><div class='code-container'><code><div class='line'>&lt;script src="https://utteranc.es/client.js"</div><div class='line'>      repo="[在此输入仓库]"</div><div class='line'>      issue-term="pathname"</div><div class='line'>      theme="preferred-color-scheme"</div><div class='line'>      crossorigin="anonymous"</div><div class='line'>      async&gt;</div><div class='line'>&lt;/script&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-12xmwa5">再接着编辑 <code>src/lib/config/post.ts</code> 文件，加入 Utterances 评论系统：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/post.ts"><div class='code-title'>src/lib/config/post.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>import type &#123; PostConfig &#125; from '$lib/types/post'</div><div class='line'></div><div class='line'>export const post: PostConfig = &#123;</div><div class='line'>  comment: &#123;</div><div class='line'>    use: ['Utterances', '其他评论系统'],</div><div class='line'>    style: 'boxed', // 评论系统栏样式: none / bordered / lifted / boxed</div><div class='line'>    utterances: &#123;</div><div class='line'>      repo: '[在此输入仓库]',</div><div class='line'>      lable: '', // 标签</div><div class='line'>      theme: 'preferred-color-scheme', // 主题</div><div class='line'>    &#125;</div><div class='line'>  &#125;</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-5n02c6">之后部署博客，在网页上登录 GitHub 并授权，试一下能否正常工作，不要忘记在设定的评论仓库安装 <a href="https://github.com/apps/utterances" rel="nofollow noopener noreferrer external" target="_blank"><strong>utterances app</strong></a></p> <h2 id="界面组件" data-svelte-h="svelte-jp5sfc"><a href="#界面组件">界面组件</a></h2> <p data-svelte-h="svelte-1il9ldx">目前就功能按钮这一类</p> <h3 id="功能按钮" data-svelte-h="svelte-4cqxe1"><a href="#功能按钮">功能按钮</a></h3> <p data-svelte-h="svelte-1lteuvl">此教程在官方文档里也有：<a href="https://urara-docs.netlify.app/zh-hans/advanced/extension.html#%E5%8A%9F%E8%83%BD%E6%8C%89%E9%92%AE" rel="nofollow noopener noreferrer external" target="_blank"><strong>功能按钮 | Urara Docs</strong></a></p> <p data-svelte-h="svelte-1nuv4zy">配置起来很简单，只需要放文件就行，组件放在 <a href="https://github.com/importantimport/urara-docs/tree/master/public/extension/actions" rel="nofollow noopener noreferrer external" target="_blank"><strong>importantimport/urara-docs</strong></a>，下载想要添加的组件</p> <p data-svelte-h="svelte-zbmytn">然后到 <code>src/lib/components/</code> 目录里新建一个名为 <code>actions</code> 的文件夹，再把下载好的按钮组件丢进去就行</p> <p data-svelte-h="svelte-1anu308">重启开发服务器或构建后，点进一篇文章就可以看到左侧的按钮了。使用手机或窗口宽度不足的话，按钮就会隐藏起来</p>]]>
    </content>
    <category term="Urara" scheme="https://trle5.xyz/?tags=Urara" />
    <category term="拓展" scheme="https://trle5.xyz/?tags=%E6%8B%93%E5%B1%95" />
  </entry>
  <entry>
    <title type="html"><![CDATA[做一个简单的网络继电器]]></title>
    <link href="https://trle5.xyz/post/8266-switch" />
    <id>https://trle5.xyz/post/8266-switch</id>
    <published>2022-12-04T00:00:00.000Z</published>
    <updated>2023-02-04T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[可接入 HomeKit 来控制开关]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-1uav3ak">买量产好的继电器，简单接线后当个显示器背光灯 <a href="https://t5d.trle5.xyz/Video/relay-backlight.mp4" rel="nofollow noopener noreferrer external" target="_blank">演示视频</a> <sup>H.265 注意</sup></p> <p data-svelte-h="svelte-q7j9nv"><strong>⚠ 注意：此教程涉及电路，请注意人身安全</strong></p> <p data-svelte-h="svelte-hvvqbi"><span class="spoiler">不过本教程里用的都是 DC 5V，应该也没什么大危险</span></p> <h2 id="介绍" data-svelte-h="svelte-h49e84"><a href="#介绍">介绍</a></h2> <p data-svelte-h="svelte-1r0kxrt">这个开关由 esp 8266-01s 与 DC 5V 继电器组合而成，为量产产品，不需要自己手动焊元件，找一些线简单接一下就行</p> <p data-svelte-h="svelte-1tcrlji">可从题图看到，这个继电器支持的控制电流为 DC 5V，继电电流有 DC 28/30V 10A 和 AC 125/250V 10A 各四个限制<sup>也许是？</sup>，但这种东西用来控制点小电器就行了，请不要作死去测它的极限…</p> <blockquote data-svelte-h="svelte-1u91vlz"><p>继电器是什么？工作原理呢？<a href="https://mcu.eetrend.com/content/2019/100045397.html" rel="nofollow noopener noreferrer external" target="_blank">继电器工作原理详解 - MCU 中文技术社区</a></p></blockquote> <p data-svelte-h="svelte-1ctmfnm">其实也不用太详细了解继电器的工作原理，只用知道它可以用一个小电压来控制大型电器的开关就行</p> <p data-svelte-h="svelte-1uv846r">这个量产好的开关不用你自己担心要怎么把模块和继电器连接起来，你只需要接好供电和需要控制的线路就行，很方便</p> <h2 id="需要的材料" data-svelte-h="svelte-fa6362"><a href="#需要的材料">需要的材料</a></h2> <p data-svelte-h="svelte-rec627"><strong>用量产模块</strong></p> <ul data-svelte-h="svelte-13s0xz3"><li>esp8266 继电器</li></ul> <p data-svelte-h="svelte-17qby89">分别是组合起来和分开的图（线懒得拆，直接拍照了<sup>虽然后面还是拆了</sup>）</p> <p><img src="/post/8266-switch/8266-relay.webp" alt="继电器装上与分开的图" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-rhky1b">带 esp8266-01s 的继电器淘宝均价在 ￥12 左右</p> <ul data-svelte-h="svelte-1mf5zfc"><li>CH340C 烧录下载器</li></ul> <p><img src="/post/8266-switch/ch340c-flash.webp" alt="CH340C 烧录下载器" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-lrlosc">这个烧录器的价格在 ￥6~10 左右，单独的话买不太值这个价</p> <p data-svelte-h="svelte-1krvfjj">如果你自己有办法给模块刷进固件的话，可以不花这个钱</p> <ul data-svelte-h="svelte-xfki1b"><li>线材若干</li></ul> <p data-svelte-h="svelte-wsx1aa">有多余的坏头数据线也可以把它剪了拿来用</p> <p data-svelte-h="svelte-1v5i9qi"><strong>自己拼继电器</strong></p> <p data-svelte-h="svelte-svmpkv">如果你手头有单独的模块，也可以自己接，但我自己接的好像不怎么好用</p> <ul><li>esp 8266 模块 <img src="/post/8266-switch/esp8266.webp" alt="esp8266 模块" class="rounded-lg my-2" loading="lazy" decoding="async"></li></ul> <p data-svelte-h="svelte-84j8wh">这个的供电 Micro USB 接口插拔太多次导致松动，掉下来了</p> <ul><li>可由 DC 5V 电流控制的继电器 <img src="/post/8266-switch/DC5V-relay.webp" alt="DC5V 继电器" class="rounded-lg my-2" loading="lazy" decoding="async"></li></ul> <p data-svelte-h="svelte-1vrqvvu">虽然这里有展示，但后面不会讲这个，因为拼起来用了不太稳定，放到路由器旁边都有时会没响应</p> <p data-svelte-h="svelte-udzxh0"><strong>用于刷写固件的设备</strong></p> <p data-svelte-h="svelte-1baybdl">本教程将把这个模块接入到 Apple 的 HomeKit 来控制，因此你的手上最好有台 iOS 10 以上支持 <strong>家庭</strong> 应用的 Apple 设备</p> <p data-svelte-h="svelte-12texl0">至于为什么不接入更通用的 <a href="https://www.home-assistant.io/" rel="nofollow noopener noreferrer external" target="_blank">Home Assistant</a> 呢？</p> <p data-svelte-h="svelte-xo3ajv"><span class="spoiler">因为还不会搞，而且家里没有能跑 Home Assistant 的开发板或手机，后面如果学会了也会补上的</span></p> <p data-svelte-h="svelte-1bxysj0">为给 esp8266 刷入固件，你需要拥有一台电脑或支持 OTG 功能的手机，我这里推荐拿手机刷，因为似乎不需要装驱动</p> <p data-svelte-h="svelte-1fhyp8e"><strong>烧录软件与 HAA 固件</strong></p> <p data-svelte-h="svelte-13l6db6">ESP8266 Loader: <a href="https://play.google.com/store/apps/details?id=com.bluino.esploader" rel="nofollow noopener noreferrer external" target="_blank"><strong>Play Store</strong></a> | <a href="https://t5d.trle5.xyz/Apk/esp8266loader.apk" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hubert’s Box</strong></a></p> <p data-svelte-h="svelte-dq67mk">HAA 固件: <a href="https://github.com/RavenSystem/haa/releases/latest" rel="nofollow noopener noreferrer external" target="_blank"><strong>Home Accessory Architect</strong></a> | <a href="https://t5d.trle5.xyz/haa_updates/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hubert’s Box</strong></a></p> <p data-svelte-h="svelte-qdtbnj">HAA 固件我推荐选择只需使用一个文件的 <code>fullhaaboot.bin</code> 二进制固件，因为 <strong>ESP8266 Loader</strong> 只能一次性刷入一个二进制固件</p> <h2 id="配置固件" data-svelte-h="svelte-12wce3v"><a href="#配置固件">配置固件</a></h2> <p data-svelte-h="svelte-ahxhzq">首先得把模块和烧录器连接起来，参考下面的图片，担心接错也可以核对一下针脚再连接</p> <p><img src="/post/8266-switch/ch340c-esp-01s.webp" alt="模块接上烧录器与分开的图片" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <h3 id="刷入固件" data-svelte-h="svelte-mmv2s6"><a href="#刷入固件">刷入固件</a></h3> <p data-svelte-h="svelte-5jax8l">确定连接正常后，打开 <strong>ESP8266 Loader</strong>，点击主页右侧的文件名，然后选择刚才下载的 <code>fullhaaboot.bin</code> 二进制固件，点击右侧的上传按钮写入模块，稍加等待它写入固件，完成后手机上会有提示</p> <p data-svelte-h="svelte-q9lp35">至于 PC 嘛，刷写工具用 <a href="https://github.com/nodemcu/nodemcu-flasher" rel="nofollow noopener noreferrer external" target="_blank"><strong>NodeMCU Flasher</strong></a> 或 <a href="https://github.com/marcelstoer/nodemcu-pyflasher" rel="nofollow noopener noreferrer external" target="_blank"><strong>NodeMCU PyFlasher</strong></a> 都行，毕竟难点在于装驱动</p> <p data-svelte-h="svelte-jalq60">还是得说说 PC 装驱动的问题，虽然模块用的芯片都是 esp8266，但驱动可能会分好多种，问店家客服或者自己找吧…</p> <h3 id="配置-wifi-与脚本" data-svelte-h="svelte-1u304jk"><a href="#配置-wifi-与脚本">配置 WiFi 与脚本</a></h3> <p data-svelte-h="svelte-19luuqb">刷写固件完成后，请将模块重启一遍，然后打开手机或其他可使用 WLAN 功能的设备，查看可用的 WiFi 列表，不出意外可以找到一个名为 <code>HAA-ABCDEF</code> 格式的开放 WiFi 网络，连接它，然后打开浏览器，访问 <a href="http://192.168.4.1:4567/" rel="nofollow noopener noreferrer external" target="_blank">192.168.4.1:4567</a> 页面</p> <p>没有问题的话，你的浏览器会加载出一个橘黄色的网页，如下图所示 <img src="/post/8266-switch/setup_orange.webp" alt="橘黄色的 HAA 配置网页" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1wcqwew">图片来源: <a href="https://github.com/RavenSystem/esp-homekit-devices/wiki/Setup-Mode" rel="nofollow noopener noreferrer external" target="_blank">Setup Mode - RavenSystem/esp-homekit-devices</a> 进行过透明像素调整以适合比例</p> <p data-svelte-h="svelte-13ef9h1">此时可以看到标题下面有个 <strong>MEPLHAA Script</strong> 输入框，不用着急，先点击下方的 <strong>Search WiFi</strong>，找到你家里用的网络，选中并输入密码，再回到上方填写 <code>json</code> 脚本</p> <p data-svelte-h="svelte-1foj4rm"><strong>注意模块仅支持 2.4GHz 频率的 WiFi 网络，但如果你的路由器有 2.4/5GHz 双频 WiFi 功能的话，模块接 2.4GHz，手机连接 5GHz 的网络也是可以控制开关的</strong></p> <p data-svelte-h="svelte-1j8nd3s">至于 <strong>MEPLHAA Script</strong> 框里要填什么东西，这里我就直接搬 <a href="https://www.jianshu.com/p/9cf083830edf" rel="nofollow noopener noreferrer external" target="_blank"><strong>自制 HomeKit 智能开关</strong></a> 这篇文章的脚本过来了</p> <!-- HTML_TAG_START --><pre class="shiki material-default" json="true"><div class="language-id">json</div><div class='code-container'><code><div class='line'>&#123;</div><div class='line'>  "c": &#123; "l": 1, "b": [&#123; "g": 2, "t": 5 &#125;] &#125;,</div><div class='line'>  "a": [&#123;</div><div class='line'>    "t": 1,</div><div class='line'>    "s": 1,</div><div class='line'>    "0": &#123; "r": [&#123; "g": 0, "v": 1 &#125;] &#125;,</div><div class='line'>    "1": &#123; "r": [&#123; "g": 0, "v": 0 &#125;] &#125;,</div><div class='line'>    "b": [&#123; "g": 2 &#125;]</div><div class='line'>  &#125;]</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-su92xc">就是一个极其简单的开关，如果说有哪里要修改的话，就是第五行的 <code>&quot;s&quot;: 1</code>，这代表模块通电后开关状态默认为开，改为 <code>0</code> 后默认为关，有能力的请查看 <a href="https://github.com/RavenSystem/esp-homekit-devices/wiki" rel="nofollow noopener noreferrer external" target="_blank"><strong>Home - RavenSystem/esp-homekit-devices</strong></a> 自行配置</p> <h3 id="等待-ota-升级" data-svelte-h="svelte-8fc4x2"><a href="#等待-ota-升级">等待 OTA 升级</a></h3> <p data-svelte-h="svelte-yg36ny">按照你的想法配置好 json 后，点击 <strong>Save</strong> 按钮，接下来就是要等待它自己完成安装了，你需要给它找一个<del>凉快</del> WiFi 信号好的地方，以及一个稳定的供电，至于模块插在烧录器还是继电器上都没问题，供电稳定既可</p> <p data-svelte-h="svelte-pi7pab"><strong>⚠️ 注意：HAA 安装过程需要连接到 GitHub 进行 OTA 升级，请确保你的家庭网络足够通畅，也可以按照</strong> <a href="https://github.com/RavenSystem/esp-homekit-devices/wiki/Installation#using-a-custom-server-for-ota-updates" rel="nofollow noopener noreferrer external" target="_blank"><strong>Using a custom server for OTA updates</strong></a> <strong>教程来自行配置 OTA 服务器</strong></p> <p data-svelte-h="svelte-85jvpn">我按照教程在 <a href="https://t5d.trle5.xyz" rel="nofollow noopener noreferrer external" target="_blank"><strong>t5d</strong></a> 上建了一个自定义 OTA 文件夹，文件托管在 Vercel 的 HK 区域服务器上，<del>理论可用，但我还没有测试过</del></p> <p data-svelte-h="svelte-jf3olk">已测试，可用：<a href="https://t5d.trle5.xyz/haa_updates" rel="nofollow noopener noreferrer external" target="_blank"><strong>t5d.trle5.xyz/haa_updates</strong></a>，需要修改端口号为 <code>443</code> 并勾选 <strong>HTTPS</strong> 复选框</p> <p data-svelte-h="svelte-1wrjqbc">接下来就是等待 OTA 完成，理想情况下大致十分钟左右就可以配置完成并开始等待配对，不确定它安装成功没有的话，可以进入 <strong>ESP8266 Loader</strong>，点击右上角的 <strong>Serial Monitor</strong> 按钮<sup>菜单旁边那个</sup>查看它的 log 以排查是哪里出了问题</p> <h2 id="连接-homekit" data-svelte-h="svelte-oqpki0"><a href="#连接-homekit">连接 HomeKit</a></h2> <p data-svelte-h="svelte-14bk470"><span class="spoiler">似乎是全文最轻松的部分？</span></p> <p data-svelte-h="svelte-h2p2gd">确保你的模块已 OTA 成功，接下来拿出你的 iPhone，打开 <strong>家庭</strong> 应用，点击右上角的 + 号，选择 <strong>添加或扫描配件</strong>，再点击 <strong>我没有或无法扫描代码</strong>，就能看到名为 <code>HAA-ABCDEF</code> 格式的开关，点击它并连接</p> <p data-svelte-h="svelte-1xuqe0a"><strong>HAA 固件的 HomeKit 设置代码统一为：<code>0218-2017</code></strong></p> <p data-svelte-h="svelte-bjza3z">连接过程会提示 <strong>未认证配件</strong>，不用理会继续点击 <strong>仍然添加</strong> 既可，没有什么影响</p> <p data-svelte-h="svelte-1xt16le">接下来会要求你配置这个开关在哪个房间，显示为 <strong>灯</strong>、<strong>风扇</strong> 或 <strong>开关</strong>，请根据实际用途调整，后面也可以随时修改</p> <p data-svelte-h="svelte-ymytwi">普通测试一下开关能否点击且可响应，之后就可以断电并开始接线了</p> <h2 id="接线" data-svelte-h="svelte-1j5xsdc"><a href="#接线">接线</a></h2> <p data-svelte-h="svelte-7xztzh"><strong>这里我的使用例是把整个模块用在一条 USB-A 延长线上，用来控制一些例如灯条的小电器</strong></p> <h3 id="供电电路" data-svelte-h="svelte-bdosdi"><a href="#供电电路">供电电路</a></h3> <p data-svelte-h="svelte-zpn2iy">接下来把模块接到继电器上，将 5V 的供电线接到模块右边橘黄色框里的两个供电接线端子，从正面来看，左边是 <code>GND(-)</code>，右边是 <code>VCC(+)</code>，不放心的话请自己看看继电器的 PCB 有没有标识正负极，确定没有问题后再接上供电</p> <p><img src="/post/8266-switch/8266-relay-2.webp" alt="分别为接了线的继电器正反面，标记了供电与继电的接线端子" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-u6q4el">此处黑色线为供电，白色线为输出，还有一条粗的绿色线用于连接正极电流到常开端口</p> <p data-svelte-h="svelte-111u78t"><strong>⚠️ 注意：橘黄色框里的为模块供电接口，请勿接入高于 5V 的直流电，更不要接入交流电，可能会损坏模块甚至产生危险</strong></p> <p data-svelte-h="svelte-ckn9cf">红框内的三个接口按左侧图片从左到右的排序分别是 <strong>常开端</strong> | <strong>公共端</strong> | <strong>常闭端</strong>，具体闭合情况请参考下面</p> <div class="overflow-x-auto mb-4"><table class="table w-full"><thead data-svelte-h="svelte-1wuzk5y"><tr><th align="center">是否有供电</th> <th align="center">常开与公共闭合</th> <th align="center">常闭与公共闭合</th></tr></thead> <tbody data-svelte-h="svelte-us8z17"><tr><td align="center">是</td> <td align="center">是</td> <td align="center">否</td></tr> <tr><td align="center">否</td> <td align="center">否</td> <td align="center">是</td></tr></tbody></table></div> <p data-svelte-h="svelte-k0qb46">接上供电后，继电器会快速吸放一次，然后就可以看到继电器上的 LED 灯亮了，此时开关默认为打开状态，进入 <strong>家庭</strong> 应用查看，等待模块连上 WiFi 后就可以用手机控制继电器了 🎉</p> <h3 id="继电电路" data-svelte-h="svelte-ur5zyq"><a href="#继电电路">继电电路</a></h3> <p data-svelte-h="svelte-1xrw7y9">接下来是继电电路的连接方式，至于怎么接线，看看普通电器是怎么供电的就行了，无论是交流电 AC 还是直流电 DC，都需要连接正负极，少哪边都不行，那我们只需要控制正负极其中一条线的通或否既可</p> <p data-svelte-h="svelte-2gqrn9">这里我是将它作为一条可开关的 USB 延长线，也就是继电电压与供电电压一致，线分为输入部分和输出部分，我只需要使用它来控制输出部分的线就可以当成开关来使用了</p> <p><img src="/post/8266-switch/relay-wiring.webp" alt="先接电源线，再输出线，最后用一条线把供电正极与继电常开端连接起来" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1jrai3m">首先把供电按照正负极接入 <code>GND(-)</code> 和 <code>VCC(+)</code>，暂时先不要拧上接线端子</p> <p data-svelte-h="svelte-1o8n6qd">再把输出的 <strong>负极</strong> 与供电的 <strong>负极</strong> 接在一起，<strong>正极</strong> 则接到左侧的 <strong>公共端</strong> 里，此时 <strong>公共端</strong> 与 <code>GND(-)</code> 就可以拧紧了</p> <p data-svelte-h="svelte-12d4u97">最后找一条短线把 <strong>常开端</strong> 与供电 <strong>正极</strong> 接起来既可拧紧所有接线端子，至于 <strong>常闭端</strong> 暂时还用不到</p> <p data-svelte-h="svelte-rpzkja">接好线后，连接好输出端的负载设备，再连接供电插头，自己测试一下吧 🥳</p> <h3 id="物理开关" data-svelte-h="svelte-2z4w94"><a href="#物理开关">物理开关</a></h3> <p data-svelte-h="svelte-42rbvf">昨天看了 <a href="https://b23.tv/BV1Ud4y1V7vR" rel="nofollow noopener noreferrer external" target="_blank"><strong>个位数自制homekit设备，低成本打造苹果智能家居！ - 哔哩哔哩</strong></a> 视频，发现这个原来还是留有一个物理开关 IO 接口的啊，本来我以为只能靠软件操控…那就加上个说明吧</p> <p data-svelte-h="svelte-dzsh7z">MEPLHAA Script 里填写的脚本不需要修改，还是像上面那样，这里我们只需要看一下是哪两个 IO 就行：</p> <p><img src="/post/8266-switch/esp-01s_IO2.webp" alt="两张图，分别在模块的正反面标示出了 esp8266-01s 的 IO2 和 GND(负极) 触点" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-gcdfal">也就是 <code>IO2</code> 和 <code>GND(-)</code>，短接一下就切换开关状态，或许也可以通过修改脚本来让它变成那种常规的按下即开，松手即关的开关，但我还是不会改它的脚本…</p> <hr> <p data-svelte-h="svelte-1fv07xe"><del>近期正在尝试在 Ubuntu Touch 上跑 Home Assistant，过程顺利的话会补上接入 Home Assistant 的教程，不自己编译内核大致是跑不起 docker，只能跑 Python 版的 core</del></p> <p data-svelte-h="svelte-1hl1eyt">坏消息，Ubuntu Touch 自带终端的 apt 有空间问题，而 Libertine 也不是那么方便，寒假也快结束了，这部分还是算了…</p>]]>
    </content>
    <category term="Homekit" scheme="https://trle5.xyz/?tags=Homekit" />
    <category term="esp8266" scheme="https://trle5.xyz/?tags=esp8266" />
    <category term="技术" scheme="https://trle5.xyz/?tags=%E6%8A%80%E6%9C%AF" />
  </entry>
  <entry>
    <title type="html"><![CDATA[Urara 入门教程]]></title>
    <link href="https://trle5.xyz/post/urara-intro" />
    <id>https://trle5.xyz/post/urara-intro</id>
    <published>2022-11-20T00:00:00.000Z</published>
    <updated>2023-04-01T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[力所能及写的搭建教程]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-uwi5zj">题图来自 <a href="https://urara-demo.netlify.app/" rel="nofollow noopener noreferrer external" target="_blank">Urara demo</a> 并进行过圆角填充</p> <p data-svelte-h="svelte-1afs86a"><strong>填坑写文章咯 😇</strong></p> <h2 id="介绍-urara" data-svelte-h="svelte-1jxixeb"><a href="#介绍-urara">介绍 Urara</a></h2> <p data-svelte-h="svelte-1xd9gik"><strong>什么是 Urara？</strong></p> <p data-svelte-h="svelte-ecpl0t">如果你在我的网站上看到了这篇文章，那么你现在浏览的这个网页就是基于 Urara 搭建的，不过这个网站被我改的地方有点多，可以 <a href="https://urara-demo.netlify.app/" rel="nofollow noopener noreferrer external" target="_blank"><strong>点击这里</strong></a> 看看官方 demo，以及 <a href="https://urara-docs.netlify.app/" rel="nofollow noopener noreferrer external" target="_blank"><strong>官方入门教程</strong></a></p> <p data-svelte-h="svelte-126qwq0">简单来说，Urara 是一个博客模板，如果你看过我之前写的 <a href="/post/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2/"><strong>搭建一个自己的博客</strong></a> 文章的话，就可以看出 Urara 似乎和 Hexo 差不多，也是写完文章交给它就可以生成博客网页的程序，不过他们的差距有点大，从外观和内部技术来说都有很大差距</p> <p data-svelte-h="svelte-1b48qd2">至于我为什么要从 Hexo 换到 Urara 呢？其实就是个人喜好，如果你目前在用 Hexo，而且还用了一堆主题和插件，你迁移到 Urara 的话会失去你使用的所有主题和插件，也得重新习惯 Urara 的后端结构</p> <p data-svelte-h="svelte-1avjpln">当然选择权在你自己手上，想怎么折腾就怎么折腾 😆</p> <p data-svelte-h="svelte-wc4hid">下面会先教如何在自己的机器上部署一个官方 demo，再细说想改哪些地方要去改哪个文件，要怎么改，以及一些会遇到的坑</p> <h2 id="搭建-urara-demo" data-svelte-h="svelte-fd38hr"><a href="#搭建-urara-demo">搭建 Urara demo</a></h2> <h3 id="配置环境" data-svelte-h="svelte-2l0ko7"><a href="#配置环境">配置环境</a></h3> <p data-svelte-h="svelte-174b6ko"><strong>首先我们需要安装 Node.js</strong></p> <p data-svelte-h="svelte-f6klcf"><strong>node 与 nodejs 是同一个东西，我也不清楚为什么会这样，我现在虚拟机中 node 的版本号为 <code>v12.22.12</code>，nodejs 为 <code>v16.18.0</code></strong></p> <p data-svelte-h="svelte-mfklw1">Urara 需要 <code>nodejs</code> v16.x 以上版本，但在我的 Linux 虚拟机中使用 <code>apt</code> 安装 <code>node</code> 只能安装到 <code>12.22.12</code> 版本，想升级的话需要通过 <code>npm</code> 安装 <code>n</code> 软件包（名字就是一个 n ），如果你的 Linux 发行版能直接装到 16.x 版本的话，可以跳过这一步了</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>sudo apt install nodejs # 如果提示找不到包可以试试替换为 node</div><div class='line'># nodejs 可能会附带安装 npm，如果有的话可以跳过下面那句命令</div><div class='line'>sudo apt install npm</div><div class='line'>nodejs -v ; npm -v # 查看它们的版本号</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1mb5z2v">如果执行上面命令最后一句后第一行显示出的版本号低于 v16 的话，就需要进行升级了</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>npm install -g n # 安装 n 软件包</div><div class='line'>n stable # 使用 n 程序把 nodejs 升级到 stable 渠道</div><div class='line'>npm install npm@latest -g # 升级 &#96;npm&#96; 包管理器（可选）</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-thiygm">安装完再测试一下版本号，正常的话就可以安装其他需要的软件了</p> <p data-svelte-h="svelte-ijjpya"><strong>其次是安装 pnpm</strong></p> <p data-svelte-h="svelte-7nwvjf">Urara 使用 <a href="https://pnpm.io/" rel="nofollow noopener noreferrer external" target="_blank">pnpm</a> 包管理器进行组件安装，<del>所以这个软件包是必须安装的</del>，非必要，如果你有其他的方法安装组件和运行开发服务器的话</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>npm i -g pnpm # 这个是官方文档里的安装办法</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1v62kil">安装完成后，运行 <code>pnpm -v</code> 看看版本号，截至到文章修改日期，pnpm 最新版本号为 <code>7.17.0</code></p> <p data-svelte-h="svelte-1mnvzrl"><strong>接下来就是克隆仓库，可以使用 <code>git</code> 或按照官方教程使用 <code>degit</code></strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>sudo apt install git # 已经安装过 git 的话就不要重新安装了</div><div class='line'>git clone https://github.com/importantimport/urara</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-t1roml">另一个办法</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>npx degit importantimport/urara urara</div><div class='line'># 新建一个名为 urara 的文件夹并把项目克隆到里面去</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-17apay2">这两种方法的差别就是用 <code>git</code> 克隆会保留原本的 git 信息和一些其他许可证文件，而使用 <code>degit</code> 并不会保留这些信息</p> <p data-svelte-h="svelte-1tzpmzs">也就是说你使用 <code>git</code> 克隆下来的话要手动删掉 <code>.git</code> 文件夹并根据你自己的想法修改许可证等文件，而使用 <code>degit</code> 不用删，但你依然得手动来搞</p> <h3 id="开启本地测试服务器" data-svelte-h="svelte-tb0xpp"><a href="#开启本地测试服务器">开启本地测试服务器</a></h3> <p data-svelte-h="svelte-1ujql28">首先，切换到目录并安装拓展</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>cd urara # 也可根据你的项目名</div><div class='line'>pnpm i # 根据文件夹内的 package.json 和 pnpm-lock.yaml 按照需要的拓展</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-qeg1ba">如果没有意外，那么安装过程会顺利的跑完，<del>网络条件可不算意外</del>，接下来就可以完成最后一步了</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>pnpm dev</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-4uzw0d">运行命令后静候一段时间，当然这个时间长短要看设备，打开你设备上的浏览器，在地址栏输入 <code>127.0.0.1:5173</code> 并按下回车，直到屏幕被清屏，输出以下内容</p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>  VITE v3.2.4  ready in 147 ms</div><div class='line'></div><div class='line'>  ➜  Local:   http://127.0.0.1:5173/</div><div class='line'>  ➜  Network: use --host to expose</div><div class='line'> </div><div class='line'>🌼 daisyUI components 2.40.1  https://github.com/saadeghi/daisyui</div><div class='line'>  ✔︎ Including:  base, components, themes[29], utilities</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-d28rfc">等待加载完成后即可看到 Urara 的 demo 已经在你的本地设备上跑起来了 🎉</p> <p data-svelte-h="svelte-4qgzab">注意请使用较新的浏览器，使用过时的浏览器可能会导致渲染错误以及一些其他 bug</p> <p data-svelte-h="svelte-y10nw5"><strong>搭建完成后，接下来就是根据你自己的想法来修改博客了</strong></p> <p data-svelte-h="svelte-5yyv1k">与 Hexo 相同，您可以在运行本地测试服务器的同时修改源文件以查看变化，不过并不是所有源文件的修改都可以事实相应，如果没有变化，可以试试重新开启测试服务器</p> <h2 id="自定义博客" data-svelte-h="svelte-r8yhnv"><a href="#自定义博客">自定义博客</a></h2> <p data-svelte-h="svelte-st2l8h"><span class="spoiler">改改改，但不要把改好的东西搞没了</span></p> <h3 id="文章与目录" data-svelte-h="svelte-3t8elq"><a href="#文章与目录">文章与目录</a></h3> <p data-svelte-h="svelte-t6cs1y">Urara 的后端结构大致分为 <code>src</code> 与 <code>urara</code> 文件夹，其中 <code>src</code> 文件夹存储了绝大多数的配置文件， <code>urara</code> 文件夹为存放图片资源与 <a href="https://markdown.com.cn/basic-syntax/" rel="nofollow noopener noreferrer external" target="_blank">Markdown</a> 格式文件的地方，首先来讲一下如何编排文章目录</p> <h4 id="文章目录编排" data-svelte-h="svelte-13agduu"><a href="#文章目录编排">文章目录编排</a></h4> <p data-svelte-h="svelte-whpovz">打开其中的 <code>urara</code> 目录，你会看到两个文件夹与一张图片，第一个文件夹 <code>assets</code> 中也有几张图片，它们是 demo 自带的资源，我也不清楚哪里会用的到，自己琢磨要不要删除吧</p> <p><img src="/post/urara-intro/urara-folder.webp" alt="三个项目，两个文件夹和一个樱花图标图片" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-alsqbh">还有另一个 <code>hello-world</code> 文件夹，点进去可以看到两个文件夹、一张图片和一个名为 <code>+page.svelte.md</code> 的文件，再打开其中的 <code>toc-disabled</code> 文件夹，能看到另一个名为 <code>+page.md</code> 的文件</p> <p data-svelte-h="svelte-3ygdt9">至于它们是什么关系嘛，<del><code>+page.svelte.md</code> 为启用了 svelte 特性的 Markdown 文档，而 <code>+page.md</code> 则是常规的 Markdown 文档，我不太懂 svelte，就不介绍了 😥</del></p> <p data-svelte-h="svelte-31tai1">跟作者交流了一下，并没有上面所说的差别，只是为了方便自己辨认</p> <p data-svelte-h="svelte-16psql9">看到这里不知道你有没有看出来，这里的 Markdown 文档除了名为 <code>+page.svelte.md</code> 就是名为 <code>+page.md</code>，<del>这其实也是 Urara 的命名要求</del> 是 SvelteKit 的要求，这个与 Hexo 的逻辑有些差别，需要适应</p> <p data-svelte-h="svelte-10npk78">那怎么把文章放在对应的目录呢，其实看看文件浏览器的地址栏就知道了</p> <p data-svelte-h="svelte-k9gi0n"><strong>Urara 是把文件夹当目录，像这个 demo 的 <code>urara</code> 资源文件夹里有一个 <code>hello-world</code> 文件夹，那么在构建和测试时，软件会自动检测这个文件夹里的 <code>.md</code> 文件，并生成可访问页面，这个页面对应的目录就是 <code>127.0.0.1:5173/hello-world</code>，其中还有 <code>elements</code> 文件夹，那么对应的目录就是 <code>127.0.0.1:5173/hello-world/elements</code></strong></p> <p data-svelte-h="svelte-1csg8sq">如果你发现你设定好的文件夹里有 <code>+page.md</code> 或 <code>+page.svelte.md</code> 文件，但测试访问的时候发现页面却是空白的，那你就要注意一下是不是这个文件夹根目录里有一个以上这种文件了，出现这种情况就是软件不知道应该选择哪个文件来生成页面导致的</p> <h4 id="文章格式设置" data-svelte-h="svelte-bt96xu"><a href="#文章格式设置">文章格式设置</a></h4> <p data-svelte-h="svelte-banq5m">文件夹里的目录也不是随便写点文字丢进去就可以直接生成的了，首先得写文档头，再按照 Markdown 的格式写文章</p> <blockquote data-svelte-h="svelte-814wip"><p>不会写 Markdown？很简单，来看 <a href="https://markdown.com.cn/basic-syntax/" rel="nofollow noopener noreferrer external" target="_blank">Markdown 官方教程</a></p></blockquote> <p data-svelte-h="svelte-1kc3imk">首先我在这里放一个文档头</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" markdown="true" title="+page.md"><div class='code-title'>+page.md</div><div class="language-id">markdown</div><div class='code-container'><code><div class='line'>---</div><div class='line'>title: 'Urara 入门教程' // 此为文章的标题</div><div class='line'>layout: 'article' // @ 文章类型，用于 IndieWeb</div><div class='line'>created: 2022-11-20 // 文章创建时间，可在博客主页文章标题上方看到</div><div class='line'>updated: 2022-11-20 // @ 文章更新时间，把鼠标放在文章创建时间上即可看到</div><div class='line'>published: 2023-01-05 // @ 文章发布日期，如果设定了，此日期会替换创建日期作为文章默认显示日期</div><div class='line'>image: /post/urara-intro/urara.webp // @ 题图，会在主页作为文章卡片的底图，进入文章后将在文章标题下方显示</div><div class='line'>tags: // @ 标签，即用来说明文章包含哪些部分的东西，会在桌面端主页右侧显示，移动端平排在个人资料下方</div><div class='line'>   - Urara</div><div class='line'>   - 技术</div><div class='line'>   - 博客 // 只要遵循这个标签格式，可以一直添加</div><div class='line'>in_reply_to: // 回复提示，代表这篇文章是用来回复某个链接的</div><div class='line'>- 'https://example.com/post123'</div><div class='line'>- 'https://example.com/post456' // 遵循这个标签格式，也可以一直添加</div><div class='line'>summary: '力所能及写的搭建教程' // @ 概括语句，会显示在主页文章卡片下方看到，进入文章后会被隐藏</div><div class='line'>flags: // @ 文章选项</div><div class='line'>  - unlisted // @ 添加此选项后文章不会出现在主页</div><div class='line'>---</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1n3sxy3">上面里面以 @ 开头的注释表示这个部分并非必须内容，为演示，下面再放一个最简单的文档头</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" markdown="true" title="+page.md"><div class='code-title'>+page.md</div><div class="language-id">markdown</div><div class='code-container'><code><div class='line'>---</div><div class='line'>title: '测试页面' // 标题</div><div class='line'>created: 2000-01-01 // 创建时间</div><div class='line'>---</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-icrdb2">其实你想的话全部都能忽略掉，文章目录会代替标题中的文章名，时间线也会乱</p> <p data-svelte-h="svelte-1rnvgrz"><strong>如果不留日期，似乎还可以达成置顶文章的效果？</strong></p> <p data-svelte-h="svelte-1mjzxi6">Urara 的文件头目前兼容部分 <a href="https://fff.js.org/version/0.5.html" rel="nofollow noopener noreferrer external" target="_blank"><strong>FFF 0.5</strong></a>，以上的内容只经过我简单的测试，可能还有其他选项可用</p> <h3 id="博客风格自定义" data-svelte-h="svelte-lpridd"><a href="#博客风格自定义">博客风格自定义</a></h3> <p data-svelte-h="svelte-1xyj8v8">接下来就是修改例如个人资料、标题和页脚之类的东西了，对于没什么代码知识的人可能会觉得非常难搞，加油 😇</p> <h4 id="博客标题以及个人资料卡片" data-svelte-h="svelte-ve79br"><a href="#博客标题以及个人资料卡片">博客标题以及个人资料卡片</a></h4> <div class="alert flex-col shadow-inner my-4  alert-success"><div class="mr-auto"><span class="i-heroicons-outline-check-circle"></span> <div><div>Urara 对头像禁用了 imagetools 优化，您可以根据之前的方式重新设定头像路径</div> </div></div> </div> <p data-svelte-h="svelte-1g5pe3m">也就是博客的名称和主页左边那块，我们需要修改 <code>src/lib/config/site.ts</code> 文件，依然是使用本站的文件作为示例</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/site.ts"><div class='code-title'>src/lib/config/site.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>import type &#123; SiteConfig &#125; from '$lib/types/site'</div><div class='line'></div><div class='line'>export const site: SiteConfig = &#123;</div><div class='line'>  protocol: import.meta.env.URARA_SITE_DOMAIN ?? 'https://', // 选择博客传输协议，http 或 https</div><div class='line'>  domain: import.meta.env.URARA_SITE_DOMAIN ?? 'trle5.xyz', // 把 trle5.xyz 替换成你的域名，点击文章内的用户名称就会访问这个域名</div><div class='line'>  title: 'Hubert's Blog', // 博客标题，这里使用了 Unicode 代码来显示一些符号</div><div class='line'>  subtitle: '', // 副标题，会显示在浏览器标签栏内的博客标题后面</div><div class='line'>  lang: 'zh-CN', // 更改语言，目前不清楚会影响到哪里 </div><div class='line'>  description: '你好呀👋', // 站点描述，适用于有链接预览的应用，可以看后面配图</div><div class='line'>  author: &#123;</div><div class='line'>    avatar: '/assets/images/avatar/70455873_p3.webp', // 头像</div><div class='line'>    name: 'Hubert Chen', // 个人资料卡片的用户名，这里同样使用了 Unicode 代码</div><div class='line'>    status: '😉', // 状态，也可以用文字，不过超过一个字符的话就会溢出边框</div><div class='line'>    bio: '你好呀👋' // 简介</div><div class='line'>  &#125;,</div><div class='line'>  themeColor: '#E0DE94' // 一个 16 进制色值，我也不太清楚是用来干嘛的</div><div class='line'>&#125;</div><div class='line'></div></code></div></pre><!-- HTML_TAG_END --> <p>这里放一张链接预览的效果图 <img src="/post/urara-intro/telegram-preview.webp" alt="Telegram 的链接预览，展示了网站名、作者名称、简介和设定的图片" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <h4 id="主题配色顶栏菜单与博客页脚" data-svelte-h="svelte-rrclbm"><a href="#主题配色顶栏菜单与博客页脚">主题配色、顶栏菜单与博客页脚</a></h4> <p data-svelte-h="svelte-xs3kb2"><strong>其实博客页脚分了两部分，第二部分修改起来会直接涉及源码，这个会放到下一部分</strong></p> <p data-svelte-h="svelte-1anh6i8">首先找到并打开 <code>src/lib/config/general.ts</code> 文件，首先映入眼帘的是各种主题</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/general.ts"><div class='code-title'>src/lib/config/general.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export const theme: ThemeConfig = [</div><div class='line'>  &#123; // 默认情况下排在第一个的主题将会成为默认主题</div><div class='line'>    name: 'light', // 主题名字，不可以修改，但可以替换</div><div class='line'>    text: '🌕 亮色模式' // 主题显示文字，可任意修改，但整体宽度推荐不要超过 10 个英文字符或 6 个中文字符</div><div class='line'>  &#125;,</div><div class='line'>  &#123;</div><div class='line'>    name: 'dark', </div><div class='line'>    text: '🌑 深色模式'</div><div class='line'>  &#125;, // 注意两个主题之间有英文逗号间隔</div><div class='line'>  &#123;</div><div class='line'>    name: 'cupcake',</div><div class='line'>    text: '🧁 纸杯蛋糕'</div><div class='line'>  &#125;</div><div class='line'>]</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-20l6lq">由于全拉出来就太长了，这里只截取三了个主题，如果有不需要的主题直接删除就行</p> <p data-svelte-h="svelte-3gszwy"><strong>注意主题显示名字需使用两个 <code>&#39;</code> 号围起来，也要注意两个主题之间的英文逗号</strong></p> <p data-svelte-h="svelte-8rdpq8"><strong>接下来往下看，你会看到一些 link 与 text，这对应着博客的顶栏</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/general.ts"><div class='code-title'>src/lib/config/general.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export const header: HeaderConfig = &#123;</div><div class='line'>  nav: [</div><div class='line'>    &#123;</div><div class='line'>      text: '关于我', // 此为显示在顶栏按钮的文字，长度没有限制</div><div class='line'>      link: '/about' // 此为点击按钮后会访问的地址，也可填其他网站</div><div class='line'>    &#125;,</div><div class='line'>    // 注意这里不要给目录前加 . 号，不然多次点击目录会叠起来</div><div class='line'>    &#123;</div><div class='line'>      text: '闲聊', // 这个有点特殊，为折叠内容，这里的文字会显示为展开按钮的菜单名称</div><div class='line'>      children: [ // 折叠项，可多次叠加，与外部的按钮没什么差别</div><div class='line'>        &#123;</div><div class='line'>          text: '2022 下半年的总结',</div><div class='line'>          link: '/talk/page111'</div><div class='line'>        &#125;,</div><div class='line'>        &#123;</div><div class='line'>          text: '闲谈杂聊',</div><div class='line'>          link: '/talk/page104'</div><div class='line'>        &#125;</div><div class='line'>      ]</div><div class='line'>    &#125;</div><div class='line'>  ]</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-qdwqkf">这里也是省略掉了一部分，想要看完整的可以在页脚的 Source 按钮查看本博客的源码</p> <p data-svelte-h="svelte-v8r6m3"><strong>继续往下看，就到了第一层页脚设置，其实也是与标题栏大同小异，但不可以放折叠项</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/general.ts"><div class='code-title'>src/lib/config/general.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export const footer: FooterConfig = &#123;</div><div class='line'>  nav: [</div><div class='line'>    &#123;</div><div class='line'>      text: 'RSS 订阅', // 第一层页脚链接文字</div><div class='line'>      link: '/atom.xml' // 对应的地址，这里是自带的 RSS 订阅，与下面的 Sitemap 站点地图一样，可以保留或删除</div><div class='line'>    &#125;,</div><div class='line'>    &#123;</div><div class='line'>      text: 'Sitemap',</div><div class='line'>      link: '/sitemap.xml'</div><div class='line'>    &#125;,</div><div class='line'>    &#123;</div><div class='line'>      text: 'Source', // 这里放了一个我博客的源码仓库</div><div class='line'>      link: 'https://github.com/interstellar750/hexo_s' // 在 GitHub 上的仓库</div><div class='line'>    &#125;</div><div class='line'>  ]</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <h4 id="日期格式" data-svelte-h="svelte-13pdvql"><a href="#日期格式">日期格式</a></h4> <p data-svelte-h="svelte-7mn05c"><strong>可以根据自己喜好调整文章日期的语言和格式</strong></p> <p data-svelte-h="svelte-1py6f18">日期格式知道有哪些选项了，这就写</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/general.ts"><div class='code-title'>src/lib/config/general.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>export const date: DateConfig = &#123;</div><div class='line'>  locales: 'zh-CN', // 这里可修改语言，使用 IETF 语言标签的格式 </div><div class='line'>  options: &#123;</div><div class='line'>    year: '2-digit', // 年份 | numeric, 2-digit</div><div class='line'>    weekday: 'short', // 星期 | narrow, short, long</div><div class='line'>    month: 'short', // 月份 | numeric, 2-digit, narrow, short, long</div><div class='line'>    day: 'numeric' // 日期 | numeric, 2-digit</div><div class='line'>  &#125;</div><div class='line'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1dqqdx4"><code>weekday</code> 翻译过来是工作日的意思，不过在实际使用中，它起的是星期的作用 🤔</p> <p data-svelte-h="svelte-fo7k3r">当然也可以有更多选项，可以参考 <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat" rel="nofollow noopener noreferrer external" target="_blank">Web 开发技术 &gt; Intl.DateTimeFormat</a> 的语法部分</p> <h4 id="第二部分的页脚" data-svelte-h="svelte-iw2pdl"><a href="#第二部分的页脚">第二部分的页脚</a></h4> <p data-svelte-h="svelte-1vxnm1o">要修改这部分的页脚，我们需要找到另一个源文件，它在 <code>src/lib/components/footer.svelte</code> 这里</p> <p data-svelte-h="svelte-cs72ap"><strong>注意：这部分对于没有计算机知识的人并不好修改，记得常常备份</strong></p> <p data-svelte-h="svelte-fft294">先看 Urara demo 里的演示文件</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/components/footer.svelte"><div class='code-title'>src/lib/components/footer.svelte</div><div class="language-id">ts</div><div class='code-container'><code><div class='line'>// 省略了前 9 行</div><div class='line'>&lt;footer</div><div class='line'>  id="footer"</div><div class='line'>  class="footer footer-center bg-base-300 text-base-content shadow-inner p-8 &#123;rounded</div><div class='line'>    ? 'rounded-box'</div><div class='line'>    : 'md:rounded-box'&#125; &#123;sticky ? 'sticky bottom-0 z-0 md:static' : ''&#125; &#123;className ?? ''&#125;"&gt;</div><div class='line'>  &lt;div class="prose"&gt;</div><div class='line'>    &lt;p&gt;</div><div class='line'>      &#123;#if footerConfig.nav&#125;</div><div class='line'>        &#123;#each footerConfig.nav as &#123; text, link &#125;, i&#125;</div><div class='line'>          &lt;a href=&#123;link&#125; rel="noopener external" target="_blank"&gt;&#123;text&#125;&lt;/a&gt;</div><div class='line'>          &#123;#if i + 1 &lt; footerConfig.nav.length&#125;</div><div class='line'>            &lt;span class="mr-1"&gt;·&lt;/span&gt;</div><div class='line'>          &#123;/if&#125;</div><div class='line'>        &#123;/each&#125;</div><div class='line'>        &lt;br /&gt;</div><div class='line'>      &#123;/if&#125;</div><div class='line'>      Copyright © &#123;footerConfig.since && footerConfig.since !== new Date().toJSON().substring(0, 4)</div><div class='line'>        ? &#96;$&#123;footerConfig.since&#125; - $&#123;new Date().toJSON().substring(0, 4)&#125;&#96;</div><div class='line'>        : new Date().toJSON().substring(0, 4)&#125;</div><div class='line'>      &#123;site.author.name&#125;</div><div class='line'>      &lt;br /&gt;</div><div class='line'>      Powered by</div><div class='line'>      &lt;a</div><div class='line'>        rel="noopener external"</div><div class='line'>        target="_blank"</div><div class='line'>        class="tooltip tooltip-secondary hover:text-secondary"</div><div class='line'>        data-tip="🌸 [δ] - Based on MDsveX & SvelteKit 🌸"</div><div class='line'>        href="https://github.com/importantimport/urara"&gt;</div><div class='line'>        Urara</div><div class='line'>      &lt;/a&gt;</div><div class='line'>      &#123;#if footerConfig.html&#125;</div><div class='line'>        &lt;br /&gt;</div><div class='line'>        &#123;@html footerConfig.html&#125;</div><div class='line'>      &#123;/if&#125;</div><div class='line'>    &lt;/p&gt;</div><div class='line'>  &lt;/div&gt;</div><div class='line'>&lt;/footer&gt;</div><div class='line'></div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1k2c74r"><strong>看上去很乱对吧，我也这么觉得 🥲</strong></p> <p data-svelte-h="svelte-yg7kb">我们尝试拆分一下，先看 demo 的页脚</p> <p><img src="/post/urara-intro/footer.webp" alt="网站页脚，分三行，有订阅链接按钮、年份、版权和作者名称，还有由 Urara 驱动的文字" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1f2q8py">可以看到第二部分的页脚分为两行，第一行为 <strong>Copyright © 2022 John Doe</strong></p> <p data-svelte-h="svelte-1gigfnh">再看源文件 <code>26</code> 至 <code>29</code> 行的内容</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>Copyright © &#123;footerConfig.since && footerConfig.since !== new Date().toJSON().substring(0, 4)</div><div class='line'>  ? &#96;$&#123;footerConfig.since&#125; - $&#123;new Date().toJSON().substring(0, 4)&#125;&#96;</div><div class='line'>  : new Date().toJSON().substring(0, 4)&#125;</div><div class='line'>&#123;site.author.name&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-16f13mp">是不是看懂了一些？ <strong>Copyright © 2022 John Doe</strong> 中的 <strong>Copyright ©</strong> 是按照人类可读形式写在文件里的，这说明我们可以随意修改，例如我们把 <strong>Copyright</strong> 改为 <strong>版权</strong> ，保存后等待测试服务器读取到更改或手动重启，再进入网站就发现 <strong>Copyright</strong> 已经变为了 <strong>版权</strong></p> <p><img src="/post/urara-intro/footer-2.webp" alt="同样是网站页脚，其中的 Copyright 被替换成了版权" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-vcanrv">中间的日期就是自动生成的，原理应该是获取网络时间吧，我不清楚</p> <p data-svelte-h="svelte-d9rvj4">末尾的用户名会跟随 <code>src/lib/config/site.ts</code> 文件中的设置，一般不需要手动修改</p> <p data-svelte-h="svelte-bx21ox">下一行的 <strong>Powered by Urara</strong> 实现方法也跟上一行差不多，不过这句话的 <strong>Urara</strong> 可以点击，可跳转且把指针放到上面会弹出一个信息框，这个效果也可以通过复制替换实现</p> <p data-svelte-h="svelte-1ashasm">或许你会好奇为什么第二部分的页脚有两行，因为两句话中间有个换行符 <code>&lt;br /&gt;</code>，如果不喜欢可以删掉它</p> <p data-svelte-h="svelte-1obu10">继续看 <strong>Powered by Urara</strong> 部分</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>Powered by</div><div class='line'>&lt;a</div><div class='line'>  rel="noopener external"</div><div class='line'>  target="_blank"</div><div class='line'>  class="tooltip tooltip-secondary hover:text-secondary"</div><div class='line'>  data-tip="🌸 [δ] - Based on MDsveX & SvelteKit 🌸"</div><div class='line'>  href="https://github.com/importantimport/urara"&gt;</div><div class='line'>  Urara  // 注意 Urara 藏在这里</div><div class='line'>  &lt;/a&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1pqqk11">同样，<strong>Powered by</strong> 为可读形式，后面的 <strong>Urara</strong> 藏在 <code>&lt;a ... &gt;</code> 和 <code>&lt;/a&gt;</code> 的中间，说明 Urara 这个词依然是可读形式，只是被 <code>&lt;a ... &gt; &lt;/a&gt;</code> 添加了可互动元素，我们再仔细分析一下</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>Powered by // 可读文字</div><div class='line'>&lt;a</div><div class='line'>  rel="noopener external"</div><div class='line'>  target="_blank"</div><div class='line'>  class="tooltip tooltip-secondary hover:text-secondary" // 一些类选项</div><div class='line'>  data-tip="🌸 [δ] - Based on MDsveX & SvelteKit 🌸" // 可以看出，这是把指针放到 Urara 上后弹出的文字</div><div class='line'>  href="https://github.com/importantimport/urara"&gt; // 这是点击 Urara 后访问的地址</div><div class='line'>  Urara  // 注意 Urara 藏在这里</div><div class='line'>  &lt;/a&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1ogc8q2">能不能看懂？毕竟我也不是很懂这语法，只能这样理解了 🫠</p> <p data-svelte-h="svelte-w8lfjb">要重点讲一下的是 <code>class=&quot;tooltip tooltip-secondary hover:text-secondary&quot;</code> 这行，其中的 <code>tooltip-secondary</code> 表示的是信息框背景色使用 <strong>daisy UI</strong> 主题的第二个主要色，<code>hover:text-secondary</code> 似乎是主题文字的第二个主要色，具体的颜色值需要去参考 <a href="https://github.com/saadeghi/daisyui/" rel="nofollow noopener noreferrer external" target="_blank">daisy UI</a> 了</p> <p data-svelte-h="svelte-qzbb1">演示一下不同主题下加了 <code>tooltip-secondary</code> 的信息框颜色差别，同样也只截取了部分主题</p> <p><img src="/post/urara-intro/footer-custom.webp" alt="三个 Daisy UI 主题，分别为 AQUA、LO-FI 和 PASTEL，还有对应的信息框配色" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-a90jty">方便添加这种样式，这里就放一个默认提示框的示例，复制修改一下写进文件里自己测试吧</p> <!-- HTML_TAG_START --><pre class="shiki material-default" ts="true"><div class="language-id">ts</div><div class='code-container'><code><div class='line'>&lt;a</div><div class='line'>  rel="noopener external"</div><div class='line'>  target="_blank"</div><div class='line'>  class="tooltip hover:text-secondary"</div><div class='line'>  data-tip="这里是弹出的文字"</div><div class='line'>  href="https://github.com/"&gt;</div><div class='line'>  这里是文字</div><div class='line'> &lt;/a&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-cov2pa">效果图</p> <p><img src="/post/urara-intro/footer-test.webp" alt="网站页脚，名为“这里是文字”的超链接弹出了信息框，显示 “这里是弹出的文字”" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <h4 id="favicon-设定" data-svelte-h="svelte-1ebwqcc"><a href="#favicon-设定">Favicon 设定</a></h4> <p data-svelte-h="svelte-17d1wz5">近期想起来好像还是在用着模板的默认图标，考虑着要不要换一个，各种替换后测试服务器里还是没变，仔细找了找，原来 favicon 引用的是外部图片，想要在本地查看效果就要改一改配置文件：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/icon.ts"><div class='code-title'>src/lib/config/icon.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>// 忽略前三行</div><div class='line dim'>export const favicon: Icon = &#123;</div><div class='line highlight'>  src: site.protocol + site.domain + '/favicon.png', // favicon 源图片路径</div><div class='line dim'>  sizes: '48x48', // 后处理图标尺寸（也许？）</div><div class='line dim'>  type: 'image/png' // 源图片类型</div><div class='line dim'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1y5w4gj">第 3 行的作用就是指定 favicon 的路径，前面加上 <code>site.protocol + site.domain +</code> 意思就是在图标路径前方加上了设定好的传输协议和域名，效果就是引用已经部署了的站点资源，自然就在本地修改没什么用了，为了能在本地测试效果在部署，我们把这部分去掉就行：</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" ts="true" title="src/lib/config/icon.ts"><div class='code-title'>src/lib/config/icon.ts</div><div class="language-id">ts</div><div class='code-container'><code><div class='line dim'>// 忽略前三行</div><div class='line dim'>export const favicon: Icon = &#123;</div><div class='line highlight'>  src: '/favicon.png', // favicon 源图片路径</div><div class='line dim'>  sizes: '48x48', // 后处理图标尺寸（也许？）</div><div class='line dim'>  type: 'image/png' // 源图片类型</div><div class='line dim'>&#125;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-ov5ubk">暂时不清楚修改这个会不会有什么副作用，若使用 Vercel 或 Netlify 部署，请自己考虑要不要把这个修改同步到远程仓库</p> <h3 id="拓展" data-svelte-h="svelte-l5ebg6"><a href="#拓展">拓展</a></h3> <p data-svelte-h="svelte-1bhiqjs"><strong>拓展页面太长，我就把它分出去了：</strong><a href="/post/urara-intro/extra/"><strong>Urara 拓展插件</strong></a></p> <h2 id="部署" data-svelte-h="svelte-1lm8f4i"><a href="#部署">部署</a></h2> <p data-svelte-h="svelte-167gtyj">Urara 现在拥有一键预构建网页的 <a href="https://github.com/features/actions" rel="nofollow noopener noreferrer external" target="_blank">GitHub Actions</a> 脚本，这部分的使用教程过段时间我会更新到官方文档里面去，<del>就不在这里写了</del> 官方文档写不了太详细和可能会遇到的坑，还是在这写一份吧</p> <h3 id="使用-github-pages-部署" data-svelte-h="svelte-19nqacu"><a href="#使用-github-pages-部署">使用 GitHub Pages 部署</a></h3> <p data-svelte-h="svelte-lpy9cm">GitHub 的免费网页托管服务，可以存放静态网页，例如 <code>.html</code> 文件，也可以在上面存放 <code>.md</code> 文件，会自动转换为可访问的网页</p> <p data-svelte-h="svelte-1tbhp7e"><strong>需要注意：GitHub Pages 在私有仓库开启需要订阅 GitHub Pro，如果不想开放博客后端请使用 Vercel 或 Netlify 部署</strong></p> <p data-svelte-h="svelte-krqyqe">同上，只要你在仓库内启用了 GitHub Actions 且没有多余的分支时（一个存放博客的分支，另一个由 Actions 自动生成的 <code>gh-pages</code> 分支），每次进行提交时，Actions 都会对仓库进行一次预构建，然后推送到 <code>gh—pages</code> 分支<sup>存在即覆盖，没有就生成</sup>，如果没有自动运行，那就自己进到 <strong>Actions</strong> 选项卡选择 <strong>Deploy to GitHub Pages</strong>，再选择你博客的分支运行就行</p> <p data-svelte-h="svelte-z8vgp1">需要使用时，只需进入仓库设置，选择 <strong>Pages</strong> 选项卡，然后把 <strong>Branch</strong> 设置为 <code>gh—pages</code> 分支，路径选择根目录既可，如果没有看到这些选项，那请看一下 <strong>Source</strong> 是不是选到 <strong>GitHub Actions</strong> 了，这里要选择 <strong>Deploy from a branch</strong></p> <p data-svelte-h="svelte-36r1ox">如果不想使用这个功能，可以把 <code>.github/workflows</code> 这个文件夹删掉，或在 <strong>Actions</strong> 选项卡里点击 <strong>Deploy to GitHub Pages</strong>，再到右上角点击 <strong>Disable workflow</strong> 来将其禁用掉</p> <h3 id="使用-vercel-部署" data-svelte-h="svelte-1swg70e"><a href="#使用-vercel-部署">使用 Vercel 部署</a></h3> <p data-svelte-h="svelte-1fbm4i2">免费又好用的 Serverless 平台，用来托管博客再好不过了，免费用户每个月 100GB 流量限制，对于静态博客来说应该很充裕了吧，可选择托管服务器区域，选个亚洲部分国内速度也不错</p> <p data-svelte-h="svelte-bm5tb4"><strong>首先注册一下</strong> <a href="https://vercel.com" rel="nofollow noopener noreferrer external" target="_blank"><strong>Vercel</strong></a></p> <p data-svelte-h="svelte-j1l3kb">Vercel 可以使用 GitHub 直接注册帐号并登录，也有其他注册的方式，任意选择一种既可</p> <p data-svelte-h="svelte-12x0loh">注册完成登录后，在主页面点击右上角 <strong>+Add New</strong>，选择 <strong>Project</strong>，导入你 GitHub 的博客仓库或其他平台的 git 仓库后，点击 <strong>Import</strong></p> <p data-svelte-h="svelte-m2czp8">之后可以设定项目名和预设框架，随便设置其实都没问题，主要是改一下下面的 <strong>Build and Output Settings</strong>，勾选右侧 <strong>OVERRIDE</strong> 既可填写</p> <p data-svelte-h="svelte-12iqtv0"><strong>Build Command:</strong> <code>pnpm build</code></p> <p data-svelte-h="svelte-po6uge"><strong>Output Directory:</strong> <code>build</code></p> <p data-svelte-h="svelte-fjknqu"><strong>Install Command:</strong> <code>pnpm i</code></p> <p data-svelte-h="svelte-qxjme8">至于下面的 <strong>Environment Variables</strong> 不用填，留空就行，然后点击 <strong>Deploy</strong> 按钮，等待下方的部署过程，成功后会有烟花庆祝 🎉</p> <p data-svelte-h="svelte-1l1eyog">部署失败的话请看 log 找问题，如果在本地 <code>pnpm dev</code> 可以正常访问，但在 Vercel 上却不能部署的话，试试在本地运行 <code>pnpm build</code> 看看哪里报了错</p> <hr> <p data-svelte-h="svelte-7kdh7x">接下来也就没有其他要修改的地方了，那么这篇文章就正式结束了吧，当然如果后续发现错漏时，依然是会来修正的</p> <p data-svelte-h="svelte-6gii58">拜拜 👋</p>]]>
    </content>
    <category term="Urara" scheme="https://trle5.xyz/?tags=Urara" />
    <category term="技术" scheme="https://trle5.xyz/?tags=%E6%8A%80%E6%9C%AF" />
    <category term="博客" scheme="https://trle5.xyz/?tags=%E5%8D%9A%E5%AE%A2" />
  </entry>
  <entry>
    <title type="html"><![CDATA[2022 下半年的总结]]></title>
    <link href="https://trle5.xyz/talk/page111" />
    <id>https://trle5.xyz/talk/page111</id>
    <published>2022-11-06T00:00:00.000Z</published>
    <updated>2023-01-04T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[总结一下暑假开始到现在的生活情况]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-dbst69">主题图来自本地的公园，上周五自己一个人搭公交去逛公园拍的</p> <p data-svelte-h="svelte-qhlttl"><strong>这个类型的文章似乎半年没写了，是时候得总结一下了</strong></p> <h2 id="关于学习" data-svelte-h="svelte-1nvown"><a href="#关于学习">关于学习</a></h2> <p data-svelte-h="svelte-1lb0n5d">感觉是有好好学了很多东西，但总体起来看一看感觉还是差了点哦，想多努力努力发现似乎时间并不够充裕</p> <h3 id="c-语言" data-svelte-h="svelte-12ww25g"><a href="#c-语言">C 语言</a></h3> <p data-svelte-h="svelte-1qrr88v">看了看我自己的 GitHub 格子图，那就应该是从 4 月 11 日开始学的，到现在也快有半年了，从书本的进度来看是学了 40%，感觉后面的会越来越难，估计是只有 30% 左右进度</p> <p data-svelte-h="svelte-jcjdzx">主力写代码设备也从最初的 Yogabook 到家里的台式机再到 Chromebook Duet，至于设备为什么会换了，也就是把 Yogabook 出掉后再去买 duet（其实还欠了点）</p> <p data-svelte-h="svelte-1i27phb">脑子里时不时会冒出写一些小程序的想法(可不是国内软件那种小程序)，不过试了试好像自己的能力还是差点，单纯拿 C 好像写软件有点吃力，应该去学一点 python 更方便？虽然我不是很喜欢效率低下的语言…</p> <h3 id="画画" data-svelte-h="svelte-1mz1r80"><a href="#画画">画画</a></h3> <p data-svelte-h="svelte-cgkyw7">好像在二月多的时候还打算一天描一幅画，结果实在是高估自己了，在上一篇闲聊文章中，我说过要给朋友描一张他喜欢的图，结果是间间隔隔画了好久，在 8 月 7 日才发给了朋友，甚至还没有上色 🥲</p> <p data-svelte-h="svelte-123wjju">虽然出掉了 Yogabook 约等于少了块数位板，但当时在家里画画的时候还得把显示器接到笔记本上画，就买了块高漫的 H5 数位板，所以后面想画画的时候还是能画的，不过原本 Yogabook 那块 HaloKeyboard 是玻璃的，摸着凉快还舒服 😇</p> <p data-svelte-h="svelte-rqnnwv">不过现在在学校里，是完全没机会画画了，每天写代码的时间甚至都只有一个小时左右，以后还会不会学呢…</p> <p data-svelte-h="svelte-1xtooes">提一句其实目前手上的 duet 也是支持压感笔(USI 协议)的，不过就是笔有点贵，我也没有拿平板画画的想法，看看后面还有没有机会吧</p> <h2 id="暑假生活" data-svelte-h="svelte-p5j98a"><a href="#暑假生活">暑假生活</a></h2> <p data-svelte-h="svelte-rcj2df">这次的暑假过的… 并不好，或者说有些无所事事，头一个月我还会坚持写题练习 C，但之后的动力渐渐降低，再接着半个暑假的封控，挺不好受的</p> <p data-svelte-h="svelte-3ppbye"><span class="spoiler">我自己都有点不清楚日常都不出去逛的我是怎么被疫情干扰到的，是因为做核酸吗？</span></p> <h3 id="我的世界" data-svelte-h="svelte-1y1nz8h"><a href="#我的世界">我的世界</a></h3> <p data-svelte-h="svelte-12oxyqv">暑假玩的最多的游戏还是 MC，好像是暑假后期一直在玩，当然也不是每天高强度在线玩，主要还是在家里没事干了，也没其他游戏玩</p> <p data-svelte-h="svelte-lihyw">说起我的世界嘛，估计很多人都玩过吧，之前也跟朋友在网易版开联机玩，不过网易那个联机服务，朋友时常进不来，虽然后面我迁移到了 Java 版，但朋友也没时间来，都快成单人生存了</p> <p data-svelte-h="svelte-1oxx6tx">具体玩什么呢，就是在 <a href="https:/t.me/ZaihuaMinecraft" rel="nofollow noopener noreferrer external" target="_blank"><strong>在花的 Minecraft 服务器</strong></a> 里玩，里面的大佬都肝了挺久，认识了好几个朋友，花了好几天挖了个房子，<del>就开始肝了</del></p> <p data-svelte-h="svelte-oo6y8">之后还去过 <a href="https://t.me/mikan_zone" rel="nofollow noopener noreferrer external" target="_blank"><strong>梓橙</strong></a> 的服务器玩，不过现在存档好像无了</p> <h3 id="修整电脑" data-svelte-h="svelte-ul5x1i"><a href="#修整电脑">修整电脑</a></h3> <p data-svelte-h="svelte-u9iigv">家里的台式在上学期因为疫情上了一段时间网课的时候坏掉了一条内存，现在就只有一条 4GB 内存条了，我估计剩下这条也活不长了，Windows 下各种卡顿无响应的，在暑假中途想了想，格掉了另一个本用来装游戏的固态，装了个 <a href="https://fydeos.io/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Fyde OS</strong></a>，运行似乎很流畅，让我不禁怀疑是不是 Windows 的问题</p> <p data-svelte-h="svelte-cv0xpc">还有下面的登录凭证问题，我开始打算把 Windows 的盘也格掉重新安装了，不过目前还是没有行动</p> <h3 id="被盗取登录凭证" data-svelte-h="svelte-lt5ws2"><a href="#被盗取登录凭证">被盗取登录凭证</a></h3> <p data-svelte-h="svelte-934ajn">之前我的 Telegram 帐号还被拿去发广告了，直到我打开 Telegram 的时候看见我用户名不对才意识到出问题了，然后我就发现我的账号已经给一些用户发了私聊广告，感觉有点对不起那些人😢</p> <p data-svelte-h="svelte-nvu0j6">在这之前，我经常时不时收到官方 <a href="https://t.me/SpamBot" rel="nofollow noopener noreferrer external" target="_blank"><strong>Spam Info Bot</strong></a> 的信息，显示我这边给机器人发送了 <code>/start</code> 命令，我还以为是机器人抽风了呢</p> <p data-svelte-h="svelte-17jqodq">后续改密码下线设备，意识到可能是之前爆出的一个漏洞，来源我找不到了，是 <strong>Telegram Desktop</strong> 的漏洞，如果未设置应用密码，帐号登录凭证就会被木马盗取，具体表现为别人直接使用此凭证可以登录你的账号，但你不会看到你的登录设备列表多出任何设备</p> <h2 id="学校生活" data-svelte-h="svelte-e7nukv"><a href="#学校生活">学校生活</a></h2> <p data-svelte-h="svelte-29953o">不好评价，不好受</p> <h3 id="博客" data-svelte-h="svelte-vlsbzy"><a href="#博客">博客</a></h3> <p data-svelte-h="svelte-kxdc6k">事实上博客是从最近才有更新，之前一直没时间管，直到更换了 <a href="https://github.com/importantimport/urara" rel="nofollow noopener noreferrer external" target="_blank"><strong>Urara</strong></a> 后端才在更新，近几周的 commit 全是关于博客的，以至于 C 语言的学习都搁置了几周，目前博客还是有小问题，估计那么勤更新还是因为这个博客后端没那么好搞，接下来可能会有一篇关于 Urara 的教程，摸了快一个月也知道那里有坑要避开了 😴</p> <p data-svelte-h="svelte-1tc2pgr">教程写好了，就是插件还缺一些：<a href="/post/urara-intro"><strong>Urara 入门教程</strong></a> <a href="/post/urara-intro/extra"><strong>Urara 拓展插件</strong></a></p> <p data-svelte-h="svelte-1kxrgwo">我注册了三个域名，本来 <a href="https://trle5.tk/" rel="nofollow noopener noreferrer external" target="_blank"><strong>trle5.tk</strong></a> 是博客的主要域名，<a href="https://trle5.xyz/" rel="nofollow noopener noreferrer external" target="_blank"><strong>trle5.xyz</strong></a> 是镜像站，包含了没写完的文章， <a href="https://trle5.dev/" rel="nofollow noopener noreferrer external" target="_blank"><strong>trle5.dev</strong></a> 是从 <a href="https://porkbun.com/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Porkbun</strong></a> 免费领的域名，目前借给别人用了</p> <p data-svelte-h="svelte-1b4cyy0">至于现在 <a href="https://trle5.tk/" rel="nofollow noopener noreferrer external" target="_blank"><strong>trle5.tk</strong></a> 就直接弃用了，如果条件允许的话，我想用这个域名搭建一个 <a href="https://matrix.org/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Matrix</strong></a> 服务器，因为 .tk 后缀有 talk 的意思，而且 .tk 域名是可以免费注册的，滥用较多，很多搜索引擎就不收录这个域名的内容，就完全没人看文章了</p> <p data-svelte-h="svelte-13gplij">之前还在 GitHub 上建了一个仓库用来放文件，并部署了 GitHub Pages 服务来让我可以从上面下载文件，以前的域名是 <a href="https://t5d.trle5.tk/" rel="nofollow noopener noreferrer external" target="_blank"><strong>t5d.trle5.tk</strong></a>，现在还能用，不过以后可能也要转到 .xyz 的域名下，部署平台换成了 <a href="https://vercel.com/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Vercel</strong></a>，可以选择服务器位置，我选了香港，测了测速度比 GitHub Pages 的 128KB/s 左右快不少，最快能有 4MB/s，挺快</p> <h3 id="homekit-on-esp8266" data-svelte-h="svelte-1b1lq4e"><a href="#homekit-on-esp8266">HomeKit on esp8266</a></h3> <p data-svelte-h="svelte-1b7hlxr">esp8266 这块开发板还是在三月初看网上 WIFI 杀手的视频买的，结果发现好像刷了几次就直接扔旁边吃灰了，直到几周前看到 <a href="https://space.bilibili.com/298146460" rel="nofollow noopener noreferrer external" target="_blank"><strong>创客尹白猿</strong></a> 的 <a href="https://www.bilibili.com/video/BV1V3411376C/" rel="nofollow noopener noreferrer external" target="_blank"><strong>你和HomeKit全屋智能的距离只剩下N个23元</strong></a> 视频，才发现 8266 这个模块竟然也可以接入苹果的 HomeKit，于是我就在周末拿它刷了 HomeKit 固件</p> <p data-svelte-h="svelte-jrnmrc">第一次是按照 <a href="https://blog.csdn.net/TWTF1998/article/details/86419559" rel="nofollow noopener noreferrer external" target="_blank"><strong>ESP8266控制继电器（支持HOMEKIT）</strong></a> 这个教程刷入了 <a href="https://github.com/RavenSystem/" rel="nofollow noopener noreferrer external" target="_blank"><strong>RavenSystem</strong></a> 的 <a href="https://github.com/RavenSystem/esp-homekit-devices" rel="nofollow noopener noreferrer external" target="_blank"><strong>esp-homekit-devices</strong></a> 固件，然后在配置 wifi 的时候等了很久连不上，后面使用 <a href="https://play.google.com/store/apps/details?id=com.bluino.esploader" rel="nofollow noopener noreferrer external" target="_blank"><strong>ESP8266 Loader</strong></a> 这个软件看了看 log，发现好像是兼容性问题，我买的这个板子并不是 esp8266-01s 型号的板子</p> <p data-svelte-h="svelte-jimph1">然后我又找到了 <a href="https://www.jianshu.com/p/9cf083830edf" rel="nofollow noopener noreferrer external" target="_blank"><strong>自制 HomeKit 智能开关</strong></a> 这篇教程，这篇教程使用的是 <a href="https://github.com/RavenSystem/" rel="nofollow noopener noreferrer external" target="_blank"><strong>RavenSystem</strong></a> 的另一个项目 <a href="https://github.com/RavenSystem/haa/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Home Accessory Architect</strong></a>，成功安装，不过这个也有点坑，刷写后需要进入网页端配置，要手动输入 json 文件，配置过程还需要连接 GitHub 来下载资源文件，且后面需要修改 WIFI 网络只能清除重新刷入再重新配置</p> <p data-svelte-h="svelte-1bnj2yl">这个部分后面也是会出一份单独的教程，感觉这里写的又有点多了</p> <p data-svelte-h="svelte-1q61y5m">继电器的教程也写好了，就是没具体讲接线：<a href="/post/8266-switch/"><strong>做一个简单的网络继电器</strong></a></p> <h3 id="电子设备" data-svelte-h="svelte-s9ef24"><a href="#电子设备">电子设备</a></h3> <p data-svelte-h="svelte-hjw9o6">今年是我近几年来更换过最多设备的一年了，似乎主力设备都给换了一遍</p> <h4 id="办公设备" data-svelte-h="svelte-17qrcph"><a href="#办公设备">办公设备</a></h4> <p data-svelte-h="svelte-by9q7l">便携设备从搭载 <a href="https://www.microsoft.com/windows/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Windows</strong></a> 的 <a href="https://www.lenovo.com/il/yoga-book/" rel="nofollow noopener noreferrer external" target="_blank"><strong>YogaBook</strong></a> 换到搭载 <a href="https://www.google.com/chromebook/chrome-os/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Chrome OS</strong></a> 的 <a href="https://www.lenovo.com/il/laptops/lenovo/student-chromebooks/Lenovo-CT-X636/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Chromebook Duet</strong></a>，上面也说过了，就不再重复了，内闪存配置没变，体验是好了那么一些</p> <h3 id="手机" data-svelte-h="svelte-127413n"><a href="#手机">手机</a></h3> <p data-svelte-h="svelte-n4y4cq">手机在这段时间内换的可多了，从入学我爸给钱我买的 <a href="https://baike.baidu.com/item/%E4%B8%89%E6%98%9FGalaxy%20S10e/23298784" rel="nofollow noopener noreferrer external" target="_blank"><strong>s10e</strong></a>，再到 s10e 刷 <a href="https://lineageos.org/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Lineage OS</strong></a> 导致没信号又求我爸给钱买了台港版的 <a href="https://www.sony-asia.com/electronics/smartphones/xperia-10m2" rel="nofollow noopener noreferrer external" target="_blank"><strong>x10m2</strong></a>，虽然这都已经是去年的事了</p> <p data-svelte-h="svelte-vqlf1q">后面在圣诞节的时候 <a href="https://sailfishos.org/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Sailfish OS</strong></a> 开启了买一送一活动，差不多等于打半价，于是我又与一位 <a href="https://t.me/jollacn" rel="nofollow noopener noreferrer external" target="_blank">Jolla-Sailfish OS 中文交流群</a> 的网友合伙买了 Sailfish OS 的安卓支持，折腾一段时间后发现可以日用，但是使用起来并不舒服，就又找了 <a href="https://forum.xda-developers.com/m/sjll.8321130/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Sjll</strong></a> 的 <a href="https://forum.xda-developers.com/t/rom-unofficial-lineageos-18-1-for-xperia-10-ii-gcam-performance.4219081/" rel="nofollow noopener noreferrer external" target="_blank"><strong>Unofficial Lineages OS</strong></a> 刷着用了，虽说后面索尼也给这台机子推送了 Android 12 固件，但依然改变不了索尼低端机子难用的事实 😥</p> <p data-svelte-h="svelte-13cvdie">后面 x10m2 就直接被我挂咸鱼了，不过等了许久并没有人接盘，但有一位日版 Xperia 1 卖家有意向与我换机，想了想就换了，665 换 855 不亏</p> <p data-svelte-h="svelte-mzsgjz">其实仔细想想还是要感谢这位卖家，甚至当时还是一块钱互拍换的机，要是卖家突然反水我机子也就没了</p> <p data-svelte-h="svelte-qx3ro">后续拿到了 Xperia 1 用，给我的第一个感觉就是 <strong>大</strong> 和 <strong>清晰</strong>，当时的 s10e 算小号机，5.8 寸 1080P 的屏幕一下子换到 6.5 寸 4k 屏幕，那个震撼感没有体验过的人绝对不知道是什么感觉，从稍微靠近一点就能看到像素到用放大镜才能看见像素的体验，真的…</p> <p data-svelte-h="svelte-fmtbjg"><span class="spoiler">好吧有点吹过头了</span></p> <p data-svelte-h="svelte-3af0ov">至于后面主力机又变到了 Xperia 1，考虑出掉的机子变成了 s10e，就把它也挂上咸鱼了，考虑再三，想着折腾那么久安卓，为了兼顾流畅和能收到信息，还自己去 <a href="/post/wechatpush/"><strong>搭建推送服务</strong></a>，观望了下苹果的二手市场，就打算换台 se2，价格便宜性能强大，顺便就加上一句 se2 美版可换机(因为按市场价我这台机子也就只能换个美版)，就一直等着了</p> <p data-svelte-h="svelte-1fcbqe4">后续也有点超乎我意料，有一位国行 se2 机主有与我换机的意向，看了看机子有些不影响使用的小问题，例如<del>钢铁直男</del>不需要的前置模组（一定程度上还保护了隐私？），后摄模糊，不太清楚是镜头问题还是装的 iPhone 8 镜头（听网上说 se2 装了 8 的镜头是有远处不对焦的问题），看了看没事就愉快的换机了，虽说有些小插曲，但卖家很诚实，第一次入二手 iPhone 没进坑里</p> <p data-svelte-h="svelte-ajbo80"><strong>目前主力设备也是成功过渡到 se2 了，至于从全面屏机子过度到传统 16:9 的手机是什么体验？</strong></p> <p data-svelte-h="svelte-1sq87sd">首先聊的是性能，从捡了两三年洋垃圾的我，用过了 <a href="https://www.qualcomm.com/products/application/smartphones/snapdragon-8-series-mobile-platforms/snapdragon-820-mobile-platform" rel="nofollow noopener noreferrer external" target="_blank"><strong>820</strong></a> <a href="https://semiconductor.samsung.com/processor/mobile-processor/exynos-9-series-9820/" rel="nofollow noopener noreferrer external" target="_blank"><strong>9820</strong></a> <a href="https://www.qualcomm.com/products/application/smartphones/snapdragon-8-series-mobile-platforms/snapdragon-855-mobile-platform" rel="nofollow noopener noreferrer external" target="_blank"><strong>855</strong></a> 三种旗舰定位处理器，上手苹果 A13 的第一感觉，就是凉快，<del>当然也不排除三台机子两台烫的原因</del>，除了充电使用，日用几乎没有让我感觉到机子有什么温度，尤其是性能和功耗差距，让我感觉安卓阵营的 soc 与 iPhone 的差距真的巨大</p> <p data-svelte-h="svelte-bi3au5">其次是操作习惯，很早就听说了 iOS 没有像安卓那样的侧滑返回手势，但整体来看还是 iOS 体验更好，安卓这边从左右侧都可以侧滑然后松开触发返回动作，但获得的反馈只有一个漂浮在边缘的小图标，当然也是有一些软件支持像 iOS 这种在滑动的同时还能看到前一个页面在显示什么的 UI 设计，不过已经不可以用少来形容了，而是几乎没有，而且还会跟返回手势冲突，就不一定能体验得到这个效果，Telegram、微信和酷安还保留此特性，其中只有 Telegram 效果最好，QQ 也有个类似的特性，具体效果跟系统那个手势差别不大…</p> <p data-svelte-h="svelte-tposlt">除开系统方面，机身重量和尺寸对我实际上没有什么影响，因为用过 150 克的 s10e，尺寸也差不多，尽管用过一段时间 Xperia 1 也没有影响，反而是有时候拿起 Xperia 1 的时候大拇指不由自主的把大拇指往下巴的方向靠 🫥</p> <p data-svelte-h="svelte-y4ztcg"><strong>还有就是 iOS 的推送优势与号召能力</strong></p> <p data-svelte-h="svelte-1wep1l5">例如大部分支付环节都可以直接调用系统指纹来进行，对于用惯了国内手机的人来说这可能是必不可少的，在之前这个功能可都是要我自己去安装指纹支付插件才能有的功能</p> <p data-svelte-h="svelte-110ge7a">推送服务也不言而喻了，只要能连上网就不会错过应有的消息通知，也支持在通知卡片直接回复，无需进入应用，这种功能在安卓上也可以由厂商适配现有的 api，但不喜欢类原生特性的国内定制安卓也找到了新的替代方法：小窗，不能说这是一个不好的方法，只能说这有点像国内应用，给一个基础的软件加上很多不必要的附加功能，从某种意义上来说是方便了，但从类原生的 <a href="https://developer.android.com/guide/topics/ui/bubbles?hl=zh-cn" rel="nofollow noopener noreferrer external" target="_blank"><strong>对话泡</strong></a> 来看，喜欢造轮子似乎已经是常态了 😴</p> <p data-svelte-h="svelte-nb5c92">号召能力也不用多说了吧，毕竟不按照规矩来不能上架 App Store，虽然苹果也有用这种权利干坏事的时候，不过整体来看，对于用户来说似乎并不是件坏事</p> <p data-svelte-h="svelte-1ul8sce"><span class="spoiler">没错，说的就是微信，QQ 的推送都接入 vivo、oppo、华为和小米的推送了，它在国际版上的 fcm 推送还是被砍过的</span></p> <h2 id="总结" data-svelte-h="svelte-1l30my6"><a href="#总结">总结</a></h2> <p data-svelte-h="svelte-95y0u0">这大半年过去了，说充实自己感觉也不是怎么勤奋，搞博客写文章直到写完这篇文章，半个月没碰 C 了，不知后面再捡起来会不会稍显吃力</p> <p data-svelte-h="svelte-1cmny25">想学画画的想法也被现实生活的洪流冲碎了，没有安静的环境不用说画画了，先保证自己不心情低落 🎱，过的开心是首要，不开心总有些坏想法干扰自己，绘画板会在家等着我的，就不清楚它要等多长时间了</p> <p data-svelte-h="svelte-1nfmhq3">对于新奇事物非常好奇的我又买了套 8266 继电器，何况没有预言的能力，家那边封了，人也只能待在学校回不去了，等等等等 🫠</p> <p data-svelte-h="svelte-1wpp2jw">不清楚写的文章会有多少人能看到，尝试把网页地图提交到了一些搜索引擎，虽然本站没有什么统计数据的插件，不过访问量还是能在 Cloudflare 看到个一二，自然是希望写的文章能帮到一些人的，也能在以后需要的时候翻翻看看之前写的东西能不能够帮到自己</p> <p data-svelte-h="svelte-bxpkax">还有个就是本人的文笔并不好，可能还会出现错别字和病句，例如 <strong>的得地</strong> 分不清楚，这里要感谢一位朋友，不是他的话我都不知道自己有这个问题</p> <p data-svelte-h="svelte-2g2o62">后续可能会考虑加个评论区，就是不太清楚这种静态博客能不能加评论区哦</p> <p data-svelte-h="svelte-xek81n">那么这篇文章就写到这里吧，顺带还给自己挖了两篇文章的坑</p> <p data-svelte-h="svelte-hmvc1h"><strong>拜拜 👋</strong></p>]]>
    </content>
    <category term="闲聊" scheme="https://trle5.xyz/?tags=%E9%97%B2%E8%81%8A" />
  </entry>
  <entry>
    <title type="html"><![CDATA[在 Chrome OS 上为 Linux 虚拟机开启动态磁盘大小]]></title>
    <link href="https://trle5.xyz/post/动态分配crostini" />
    <id>https://trle5.xyz/post/动态分配crostini</id>
    <published>2022-10-22T00:00:00.000Z</published>
    <updated>2023-07-30T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[不用再反复给 Linux 虚拟机调整磁盘大小了]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-8zsg2p">好像有段时间没写文章了，这次整一篇挺简单但没什么人知道的小教程</p> <p data-svelte-h="svelte-1ksie7w"><strong>此教程对支持 Linux 容器的 Chrome OS / Chromium OS 同通用，不过都写上就名称太长，就只用 Chrome OS 这个名称了</strong></p> <blockquote data-svelte-h="svelte-f8wexz"><p><del><strong>注意：开启动态分区为实验性功能，可能会遇到 Linux 容器启动慢甚至无法启动的问题，不确定这个问题是否会必然发生，但也请注意个人数据安全</strong></del></p></blockquote> <p data-svelte-h="svelte-f33xs5"><strong>22/7/30 追加：</strong>启用动态分区导致 Linux 容器无法启动的问题为乌龙，当 Chrome OS 更新后，很多组件也需要在重启后进行联网更新，若未能及时确保与 Google 服务器的连接，就会遇到类似的问题</p> <p data-svelte-h="svelte-1kecfva"><strong>解决方法：</strong>重启 Chrome OS 后保持良好的网络连接，等待一两分钟后再尝试进入 Linux 容器</p> <p data-svelte-h="svelte-1gb09co"><span class="spoiler">Linux 虚拟机要跟随系统更新组件也就算了，更新前就把旧组件给删掉是后路都不留吗…</span></p> <h2 id="关于-chrome-os-上的-linux-容器" data-svelte-h="svelte-1aq22yk"><a href="#关于-chrome-os-上的-linux-容器">关于 Chrome OS 上的 Linux 容器</a></h2> <p data-svelte-h="svelte-r4xy1i">这个功能是 Chrome OS 设置里的开发者选项中的一个功能，名为 <strong>Linux 开发环境</strong>，也就是一个运行在容器内的 Linux 系统（可以安装 GUI 程序来运行哦）</p> <p data-svelte-h="svelte-11i7gc9">一些第三方的 Chromium OS 也支持这个功能，例如 <a href="https://fyde.com/" rel="nofollow noopener noreferrer external" target="_blank">Fyde OS</a> 和 <a href="https://chromeenterprise.google/os/chromeosflex/" rel="nofollow noopener noreferrer external" target="_blank">ChromeOS Flex</a>，他们的差别大同小异，运行的发行版都是 <a href="https://www.debian.org/releases/bullseye/" rel="nofollow noopener noreferrer external" target="_blank">Debian Bullseye</a></p> <h2 id="为-chrome-os-的-linux-容器磁盘开启动态分区" data-svelte-h="svelte-14z0lt2"><a href="#为-chrome-os-的-linux-容器磁盘开启动态分区">为 Chrome OS 的 Linux 容器磁盘开启动态分区</a></h2> <p data-svelte-h="svelte-1ke0lq7">其实挺简单的，具体一句话就可以说完，就是拿个备份还原到没有开启 Linux 容器的机子上就行</p> <p data-svelte-h="svelte-drrl7z">首先你必须有一份后缀名为 <code>.crostini</code> 的 Linux 容器备份文件，在系统的 <code>开发者选项</code> &gt; <code>Linux 开发环境</code> &gt; <code>备份和恢复</code> 即可看到创建备份文件的选项</p> <p data-svelte-h="svelte-1aeo8am">如果你还没有启用 Linux 开发环境，直接启用然后再备份也行，一份刚安装好的 Linux 容器备份出来的 crostini 镜像大小大概在 320MB 左右</p> <p data-svelte-h="svelte-bxydwr">但如果你已经安装好它且用了一段时间甚至用了更长时间了的话，是要备份还是重新搞一个就需要自己取舍了</p> <p data-svelte-h="svelte-10jaqac">开始备份后你可以在系统的通知面板看到备份进度，耐心等等</p> <p data-svelte-h="svelte-cbwuwb">备份成功后你会在系统的下载内容目录中看到一个后缀名为 <code>.crostini</code> 的文件，此时就可以开始操作了</p> <h3 id="1-删除原有的-linux-开发环境" data-svelte-h="svelte-m02zt2"><a href="#1-删除原有的-linux-开发环境">1. 删除原有的 Linux 开发环境</a></h3> <p data-svelte-h="svelte-1b68yfr">是没什么注意事项，就是不要在有重要文件但还没备份成功的时候就删掉就行，说出去可能会让人家笑话</p> <p data-svelte-h="svelte-wz4xrp">删除的地方在系统的 <code>开发者选项</code> &gt; <code>Linux 开发环境</code> &gt; <code>移除 Linux 开发环境</code></p> <h3 id="2-还原-crostini-备份镜像" data-svelte-h="svelte-gxt3qd"><a href="#2-还原-crostini-备份镜像">2. 还原 .crostini 备份镜像</a></h3> <p data-svelte-h="svelte-1ldrcnq">在下载内容中找到备份的镜像，右键还原即可</p> <p data-svelte-h="svelte-47icxx"><span class="spoiler">不要忘记自己把文件放哪去了</span></p> <h2 id="成功" data-svelte-h="svelte-105oi2t"><a href="#成功">成功</a></h2> <p data-svelte-h="svelte-11f3q4o">还原成功后，再进入设置查看 Linux 开发环境就可以看到磁盘大小为 <strong>动态分配</strong> 了，再打开 Linux 应用测试一下是否正常就可以了</p> <p data-svelte-h="svelte-tzraf4"><strong><del>我没碰见什么 bug</del> <del>看前面</del>，之前我还以为需要在 crosh 里使用 vmc 新建一个虚拟机才行，看来是我想多了</strong></p>]]>
    </content>
    <category term="Chrome OS" scheme="https://trle5.xyz/?tags=Chrome%20OS" />
    <category term="Linux" scheme="https://trle5.xyz/?tags=Linux" />
    <category term="小教程" scheme="https://trle5.xyz/?tags=%E5%B0%8F%E6%95%99%E7%A8%8B" />
  </entry>
  <entry>
    <title type="html"><![CDATA[使用 FarPush 搭建微信消息推送服务]]></title>
    <link href="https://trle5.xyz/post/wechatpush" />
    <id>https://trle5.xyz/post/wechatpush</id>
    <published>2022-09-01T00:00:00.000Z</published>
    <updated>2022-11-03T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[在不保留微信后台的前提下正常收到通知推送]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-1nyksp6">这张图使用了 FarPush 中支持的 HMS Push 服务，在非华为手机上启用 HMS Push 可见 <a href="https://github.com/fei-ke/" rel="nofollow noopener noreferrer external" target="_blank">fei-ke</a> 的 <a href="https://github.com/fei-ke/HMSPush" rel="nofollow noopener noreferrer external" target="_blank">HMSPush</a> 项目</p> <p data-svelte-h="svelte-1tqazke"><strong>好久不见，距离上次更新文章的时间是有点长了呢，不过还是欢迎你来看文章！</strong></p> <p data-svelte-h="svelte-zt72fu"><strong>前言</strong></p> <p data-svelte-h="svelte-1fm7ujp">如果你像我一样注重手机后台会有哪些软件在运行，哪些软件是必要待在后台持续运行，哪些软件又是没有必要呆在后台占用系统资源的，那你一定知道 QQ 和微信这两个国内常见的社交软件，还有他们恐怖的空间与系统资源占用</p> <p data-svelte-h="svelte-82m0dp">我是很不喜欢这样的软件，我并没有那个能力每年跟进最新配置的手机，也没有办法摆脱对它们的依赖，我也不会为了长续航去选择电池大且厚重的手机，我只能防止它们在我的后台占用资源，也就造成了每当有人找我时，并不能及时的获得通知且考虑回复，会耽误事也会尴尬</p> <p data-svelte-h="svelte-1c5m9hk">还好，我发现了搭建微信推送的方法，不过我还是依然讨厌这种软件</p> <h2 id="farpush-介绍" data-svelte-h="svelte-10rtlmj"><a href="#farpush-介绍">FarPush 介绍</a></h2> <p data-svelte-h="svelte-gu4hua">这个软件好像有点年头了，不过我是最近才在 BiliBili 上看到，是有点火星了</p> <p data-svelte-h="svelte-q1p0ck"><strong>应用与项目介绍</strong></p> <p data-svelte-h="svelte-adgv2k"><a href="https://www.coolapk.com/apk/com.farplace.farpush" rel="nofollow noopener noreferrer external" target="_blank">FarPush</a> 为安卓手机端软件，WeChatPush 项目为其的后端，<strong>截至本文发布时，FarPush 依然还提供软件内后端，但这个后端我不太清楚是运行在软件内还是其他服务器，我也没找到作者在哪里有说明</strong></p> <p data-svelte-h="svelte-3nef1y"><a href="https://github.com/TSIOJeft/WeChatPush" rel="nofollow noopener noreferrer external" target="_blank">WeChatPush</a> 项目由 Python 驱动，只要有 Python 环境就可以运行，可以说是跨平台后端，需要使用 FarPush 作为推送信息接收器，但内存和后台占用比微信本身小了非常多</p> <p data-svelte-h="svelte-1xkexvc">我在这里会先提供在 Linux 与安卓(依然是用 Termux) 的部署方法，Windows 的话要缓一缓了</p> <h2 id="准备部署工作" data-svelte-h="svelte-zuu0kc"><a href="#准备部署工作">准备部署工作</a></h2> <p data-svelte-h="svelte-8i446e"><strong>此软件并不使用 Web 的微信，不会因为 Web 端被禁止登录导致无法使用的问题，但会占用微信 PC 端</strong></p> <p data-svelte-h="svelte-q8cg3p"><strong>需要的东西</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>一台拥有 Python 环境的设备，Python 版本至少为 Python3</div><div class='line'>pip 软件包管理器，作者推荐使用 pip3，不过我自己试了试，不是强制要求</div><div class='line'>拥有独立 IP 的服务器或拥有独立 IP 且懂得配置端口转发的家庭网络</div><div class='line'>// 上一条条件是需要使用到快速回复功能的要求，部署在局域网或获取推送信息的本机上可以不需要独立 IP</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-9gydn1"><strong>软件和仓库链接，以及作者的主页</strong></p> <p data-svelte-h="svelte-ryqqm3">FarPush 下载地址: <a href="https://www.coolapk.com/apk/com.farplace.farpush" rel="nofollow noopener noreferrer external" target="_blank"><strong>酷安</strong></a></p> <p data-svelte-h="svelte-1bas4lb">WeChatPush 项目仓库地址: <a href="https://github.com/TSIOJeft/WeChatPush" rel="nofollow noopener noreferrer external" target="_blank"><strong>GitHub</strong></a></p> <p data-svelte-h="svelte-1ckzfqh">作者的酷安账号: <a href="https://www.coolapk.com/u/2838135" rel="nofollow noopener noreferrer external" target="_blank"><strong>FarPlace</strong></a></p> <p data-svelte-h="svelte-1nixc1m">BiliBili 用户页: <a href="https://sapce.bilibili.com/10721579" rel="nofollow noopener noreferrer external" target="_blank"><strong>远方的重生</strong></a></p> <h2 id="开始搭建" data-svelte-h="svelte-154410a"><a href="#开始搭建">开始搭建</a></h2> <p data-svelte-h="svelte-1fyrbmu"><strong>这里先讲如何安装 WeChatPush 到设备上，后面再统一讲如何配置</strong></p> <hr> <h3 id="在-android-termux-上部署" data-svelte-h="svelte-h70qyh"><a href="#在-android-termux-上部署">在 Android (Termux) 上部署</a></h3> <p data-svelte-h="svelte-1uonc1a"><strong>作者的视频里说的方法是用 Termux 来安装完整 Linux 容器后再安装在容器里，但我自己试了试发现其实在 Termux 的模拟环境里也能跑，还能节省空间</strong></p> <p data-svelte-h="svelte-cd4ean"><strong>获取更新与升级软件，安装必要软件包</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>pkg update</div><div class='line'>pkg upgrade</div><div class='line'># 安装过程可能会询问一些包的设置，可全部按回车</div><div class='line'>apt install git vim python3 pip</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1qa5ich">以上命令会安装四个软件包，<code>git</code> 用于克隆项目仓库，<code>python3</code> 为仓库运行需要环境，<code>pip</code> 用于安装项目需要的 Python 依赖， <code>vim</code> 用于编辑项目配置文件</p> <p data-svelte-h="svelte-zy0i5e">软件安装完成后，大概会多占用 <code>600 MB</code> 左右大小的空间，其中占的最多的还是 python3，不安装其他大软件包的话，Termux 就得占用大致 <code>900 MB</code> 了，空间不足的话要注意一下</p> <hr> <h3 id="在-linux-上部署" data-svelte-h="svelte-kashpu"><a href="#在-linux-上部署">在 Linux 上部署</a></h3> <p data-svelte-h="svelte-5fpod2"><strong>提一句架构问题，见过好多软件因为处理器架构的问题跑不起来，目前我在 arm64 与 x86-64 架构的 Linux 上尝试过搭建 WeChatPush，未见兼容性问题，其他架构的需要自己试试了</strong></p> <p data-svelte-h="svelte-foqc1p">好像之前都没有说关于 Linux 版本的问题，没有特殊说明的话一般都是用 Debian 系，apt 包管理器</p> <p data-svelte-h="svelte-13uluqt"><strong>更新源并升级软件，安装软件</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>sudo apt update</div><div class='line'>sudo apt upgrade</div><div class='line'># 中途有停顿也可以根据个人喜好选择</div></code></div></pre><!-- HTML_TAG_END --> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>sudo apt install git vim python3 python3-pip</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1njflrv"><span class="spoiler">提一句：作者好像喜欢用 nano，使用 nano 以支持作者(不是我)</span></p> <hr> <h2 id="修改配置文件" data-svelte-h="svelte-jtoz47"><a href="#修改配置文件">修改配置文件</a></h2> <p data-svelte-h="svelte-1uom3bd"><span class="spoiler">上面的安装过程我觉得应该足够详细了吧…</span></p> <h3 id="克隆仓库与配置消息转发" data-svelte-h="svelte-8ptkhe"><a href="#克隆仓库与配置消息转发">克隆仓库与配置消息转发</a></h3> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>git clone https://github.com/TSIOJeft/WeChatPush</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-23wqit">克隆项目仓库到当前目录，如果发现在自己不熟悉的目录，可使用 <code>cd ~</code> 切换当前工作目录到用户根目录</p> <p data-svelte-h="svelte-1cvtc52">克隆完成后需要在手机上安装 FarPush 获取推送特征码，Farpush 下载链接可见<a href="#%E5%87%86%E5%A4%87%E9%83%A8%E7%BD%B2%E5%B7%A5%E4%BD%9C">之前部分</a></p> <p data-svelte-h="svelte-1r8l277">FarPush 推送特征码可见应用内<code>左上角菜单</code> &gt; <code>转接设备</code> &gt; <code>右下角按钮</code>，可根据手机支持的推送服务复制对应的推送特征码(截至 22.11.03 ，fcm 推送渠道并未支持)，然后编辑项目内的 <code>WeChatPush/itchat/config.py</code> 文件</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>cd WeChatPush/itchat/ </div><div class='line'># 切换到项目的 itchat 目录内</div><div class='line'>vi config.py</div><div class='line'># 编辑配置文件</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1wqbbwu">当你执行完上面两行命令时，你会进入到 vim 的操作界面，按方向键把光标移到最下面，你会看见这一段文本</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" python="true" title="itchat/config.py"><div class='code-title'>itchat/config.py</div><div class="language-id">python</div><div class='code-container'><code><div class='line'># if show self send mes // 翻译过来就是在程序运行中是否显示自己发送出去的信息，改下一行</div><div class='line'>SELF_MES = False </div><div class='line'>PUSH_REGID = '删掉此段文字，替换为你在手机上得到的推送特征码'</div><div class='line'># 0 for mi , 1 for oppo 2 for huawei 4 for tencent </div><div class='line'>PHONE_TYPE = 4 // 如果使用腾讯推送可能需要给予 FarPush 一直在后台运行的权限</div><div class='line'>BLOCK_NAME = [] // 此处填入群名称或用户名可屏蔽接受对应的通知</div><div class='line'># through message if you want reply mes just set it for 1</div><div class='line'>MES_THROUGH = 1 // 改为 1 可使用快捷回复信息</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-ish9nc">根据提示填入推送特征码和根据需求调整选项，vim 使用方法可到网上找找，如果有图形编辑器那就更方便了</p> <p data-svelte-h="svelte-1pq9wtt"><del>注意 Termux 的 <code>home</code> 目录在手机根目录的 <code>/data/data/com.termux/</code> 内，没有 root 权限可能无法访问和编辑</del></p> <p data-svelte-h="svelte-1fz4qxk"><strong>可以在 Android 自带的文件管理器的侧边栏访问</strong></p> <h2 id="开启推送服务" data-svelte-h="svelte-1gzz22k"><a href="#开启推送服务">开启推送服务</a></h2> <p data-svelte-h="svelte-bj0esi">当你确保配置都配置完了，就可以尝试启动它了</p> <p data-svelte-h="svelte-25pt2r">确保你目前的工作目录在项目的根目录，然后使用 pip 来安装需要的程序包和依赖</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>pip install -r requirements.txt</div><div class='line'># 如果使用 Linux， 也可以用 pip3 代替 pip</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1ulcwf4">当安装完所需的软件后，就可以运行推送服务了</p> <p data-svelte-h="svelte-1s4t53b"><strong>需要注意，如果终端缩放过小，可能会导致二维码生成不完整或错乱，在 Termux 界面里可使用双指缩放来调整大小</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>python3 main.py</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1etg2f0">执行以上命令后会输出一个二维码，使用手机微信客户端扫描登录即可，<del>可截图登录，不需要用另一台手机拍照再扫描</del> <strong>已失效</strong></p> <p data-svelte-h="svelte-17k6cl2">登录可能会有点慢，登录完成后会对终端页面进行清屏，会显示登录微信帐号的用户名</p> <p data-svelte-h="svelte-17vl7si">这个时候就可以找个朋友或开个小号测试，但不可在手机客户端切换帐号测试，因为一切换就会判定微信退出登录，也会同时把微信的网页版、电脑桌面端和平板状态的微信客户端给退出登录</p> <h3 id="一些注意事项" data-svelte-h="svelte-1dxihxi"><a href="#一些注意事项">一些注意事项</a></h3> <p data-svelte-h="svelte-1bv4jig"><strong>如果使用 Termux， 要注意不要让它被系统省电策略干掉</strong></p> <p data-svelte-h="svelte-1f3ysid">Termux 是支持卡片被划掉后终端继续运行的（至少在我的 Xperia 1 与 s10e 上可以），不过可能还是会被系统的省电策略干掉，WeChatPush 如果网络条件不好也可能蹦掉，但似乎它在崩掉之前会给你推送一条通知表示它掉了，这个问题我见过不少，但我不太清楚崩的原因是什么</p>]]>
    </content>
    <category term="FarPush" scheme="https://trle5.xyz/?tags=FarPush" />
    <category term="推送服务" scheme="https://trle5.xyz/?tags=%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1" />
  </entry>
  <entry>
    <title type="html"><![CDATA[手机使用 ADB 与 Fastboot 给另一台手机执行命令]]></title>
    <link href="https://trle5.xyz/post/phone2adb" />
    <id>https://trle5.xyz/post/phone2adb</id>
    <published>2022-05-10T00:00:00.000Z</published>
    <updated>2022-11-06T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[未完成，而且好像没找到免 root 执行 fastboot 命令的办法]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-5znbkq"><strong>你好，欢迎来看文章！</strong></p> <p data-svelte-h="svelte-19zxdcb"><del>请问你是手机坏了还是电脑坏了</del></p> <p data-svelte-h="svelte-bo70dh"><strong>这次就不说什么前言了，adb 不会用我也难教</strong></p> <h1 id="准备工作" data-svelte-h="svelte-1rsl8aw"><a href="#准备工作">准备工作</a></h1> <p data-svelte-h="svelte-rmxdzp"><strong>首先确定这篇教程是干嘛的，使用一台手机给另一台手机运行 adb 与 fastboot 命令</strong></p> <p data-svelte-h="svelte-20lw6a">所以主要说的地方是如何在手机上建立起 adb 环境，当然 adb 命令基本通用，也可以参考一下</p> <p data-svelte-h="svelte-q8cg3p"><strong>需要的东西</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>连接两台设备(手机)的数据线，也可以用一条线加 OTG 的方法</div><div class='line'>如果是进行非救砖操作，也可以通过网络 adb 进行命令</div><div class='line'>至少有一台设备(手机)能正常运行，可访问网络</div></code></div></pre><!-- HTML_TAG_END --> <h2 id="在你的手机上建立起-adb-环境" data-svelte-h="svelte-157m4ho"><a href="#在你的手机上建立起-adb-环境">在你的手机上建立起 adb 环境</a></h2> <h3 id="针对拥有-root-权限的手机" data-svelte-h="svelte-5wsfdf"><a href="#针对拥有-root-权限的手机">针对拥有 root 权限的手机</a></h3> <p data-svelte-h="svelte-1jy7p58">很好，你拥有 root 权限，那么这个过程对你来说会顺利很多，没 root 可就麻烦咯</p> <h4 id="1-使用熟悉的-termux" data-svelte-h="svelte-1nvme20"><a href="#1-使用熟悉的-termux">1. 使用<del>熟悉的</del> Termux</a></h4> <p data-svelte-h="svelte-1yyvlzz"><strong>首先，做好前置准备工作，有些人可能不知道，所以再讲一遍</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>pkg update # 更新包</div><div class='line'>pkg install android-tools # 安装 Android 工具（包含 adb 工具）</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1or1hge">确定安装等进度条跑完后，试着运行 <code>adb devices</code> 看看有没有反应，正常情况如下</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>~ $ adb devices</div><div class='line'>* daemon not running; starting now at tcp:5037</div><div class='line'>* daemon started successfully</div><div class='line'>List of devices attached</div><div class='line'># 如果有已识别到的设备会在此列出</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-cyp250">连接到设备然后看看行不行，安卓机子相互连接大部分时候是不需要什么驱动的</p> <h4 id="2-使用-adb-工具安装器" data-svelte-h="svelte-1tq7b1w"><a href="#2-使用-adb-工具安装器">2. 使用 ADB 工具安装器</a></h4> <p data-svelte-h="svelte-moguzu">下载 ADB 工具安装器  <a href="https://www.coolapk.com/apk/crixec.adbtoolkitsinstall" rel="nofollow noopener noreferrer external" target="_blank"><del>酷安</del></a> 应用已下架 | <a href="https://t5d.trle5.xyz/Apk/ADB-tools-3.0.apk" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hubert’s Box</strong></a></p> <p data-svelte-h="svelte-wll256">这个工具可以让你直接运行 adb 命令，但没有 root 权限会导致无法运行 fastboot 命令，也提供了可以把 adb 命令安装到系统里的功能</p> <p data-svelte-h="svelte-1h2nhk7">安装软件后直接在软件内点击 <strong>运行 adb 命令</strong> 按钮即可，但不要点击 <strong>开启 adb 服务</strong> 按钮，这个按钮是用来开启本机无线 adb 调式端口功能的</p>]]>
    </content>
    <category term="ADB" scheme="https://trle5.xyz/?tags=ADB" />
    <category term="技术" scheme="https://trle5.xyz/?tags=%E6%8A%80%E6%9C%AF" />
  </entry>
  <entry>
    <title type="html"><![CDATA[闲谈杂聊]]></title>
    <link href="https://trle5.xyz/talk/page104" />
    <id>https://trle5.xyz/talk/page104</id>
    <published>2022-04-07T08:06:21.000Z</published>
    <updated>2022-12-21T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[四月不知过的怎么样]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-rbjhha">你好，欢迎来我的博客看文章，祝愿你天天开心</p> <h2 id="回顾搭建博客之前" data-svelte-h="svelte-1tc8rnj"><a href="#回顾搭建博客之前">回顾搭建博客之前</a></h2> <p data-svelte-h="svelte-wvyh8m">大概一个多星期前，我去翻了翻之前收藏的博客，发现只有很少的博客更新了几篇新文章，大多数的博客基本都停了，还有一些博客直接停了两年没更新</p> <p data-svelte-h="svelte-esxkgl">至于为什么我会收藏博客，因为没搭建博客之前也有想法自己搭一个，似乎大多数博客也会写一个关于搭建的文章，于是我目前每看见一个个人博客都会添加到书签里</p> <p data-svelte-h="svelte-10xreev">而我的博客也已经一个多月没有更新新文章了，我并没有确定写作方向，恐怕就是更新力不足的原因</p> <p data-svelte-h="svelte-1b9a1pg">以后博客可能会<del>月更</del>季更更符合实际吧，因为写一篇文章随便写点东西也不太好的样子，像这种闲聊的文章应该会比教程类的多一些</p> <h2 id="最近在学习的东西" data-svelte-h="svelte-1q5gl1o"><a href="#最近在学习的东西">最近在学习的东西</a></h2> <p data-svelte-h="svelte-1o5dipu">大概从寒假下半旬开始，我在 Yogabook 上试着画画，不过毕竟是笔记本嘛，屏幕大小和显示效果都不怎么好，于是我就利用转换器把它接到我的台式机显示器上，于是我就有了一个正式练习画画的地方</p> <p data-svelte-h="svelte-l2mqwr">最近还买了个新数位板，还得熟悉熟悉，感觉自己桌面空间是有点小了，之前想画画的话就得把键盘鼠标全都挪开，想用台式又得把显示器接回去，现在可以直接在台式画了</p> <p data-svelte-h="svelte-wto2q0">不过嘛，一个新手是没办法一下子就学会画画的，找了些教学视频，我得知了自己画画的问题： 勾线不好看，一条线没画好就随便擦一下应付，勾线应该一笔勾不好重新勾，于是我找了一些简单的二次元图来练习勾线，就是在 SAI 在原图上叠一个图，调整透明度就照着描，以往是希望一天画一幅的，结果到现在只画完了两幅，剩下一幅答应朋友要描的，也画了好久，这周回去看看能不能画完然后画一幅新的</p> <p data-svelte-h="svelte-bx6pc4">得益于我在 GitHub 里发现了 <a href="https://github.com/niudai/How-to-be-a-good-programmer" rel="nofollow noopener noreferrer external" target="_blank">程序员修炼宝典</a> 这个项目，我就下载了几本关于 Linux 的电子书看，因为手头并没有什么顺手的阅读设备（PDF 格式手机读着累，Yogabook 拿着压手），也就只读了百来页</p> <p data-svelte-h="svelte-jnueod">在约一年前我就有学习 C++ 的想法，当时只会在网上搜一些 C++ 写的程序，然后仿写出来自己试着理解，因为没有系统性的学习和要写的程序，也就不了了之</p> <p data-svelte-h="svelte-1mn47rm">似乎是从这个月初开始，我打算买本书正式学学 C 了，现在是感觉之前打算直接冲 C++ 是有点幼稚了，我翻了翻淘宝，但并没有买，去找了电子书版的 《C Prime Plus》 ，从 9 号开始我每天都在把《C Prime Plus》里需要写，或要理解的程序重新写一遍、写好注释，然后提交到私人 GitHub Repository 里，不过目前还没公开，等我学完那本书里需要学的东西后会公开的</p> <p data-svelte-h="svelte-l9t82o">之前还试过做音乐，不过创作细胞还是太没活力了，不确定以后还会不会试试学，但感觉音乐的门槛是想学的几个东西中最高的 😢</p> <h2 id="假期打算与发牢骚" data-svelte-h="svelte-10rwnxt"><a href="#假期打算与发牢骚">假期打算与发牢骚</a></h2> <p data-svelte-h="svelte-1jskmqn">也快接近五一假期了，学习 C 语言也有十来天了，虽然按照书里的学了快两百页，感觉总是只学到了点皮毛，要记数值对应的表达方式是有点费劲，在学校每天也只有晚自习的时间会学一个小时左右，这个进度下去得学多久啊…</p> <p data-svelte-h="svelte-1piul2d">感觉自己是有点懒了，从学习 C 语言或是写博客来说都是，这篇文章是从四月七日开始打算写的，但是现在已经是四月月底了</p> <p data-svelte-h="svelte-1fw7asg">上周的调休导致我也没回家，答应给朋友画的画还是没有画完，五一假期里一定要画完</p> <p data-svelte-h="svelte-1rx6c0g">说到五一，五一就到明日方舟三周年了，但从这个学期开始真的很少很少玩了，好像当初停止玩是因为 BOSS 太难打不过去(当时查攻略的话应该是没问题的)</p> <p><img src="/talk/page104/hero.webp" alt="Lineage OS 19 更新题图" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-35dz2x">Lineage OS 在 26 号的时候正式更新了 <a href="https://lineageos.org/Changelog-26" rel="nofollow noopener noreferrer external" target="_blank">Lineage OS 19</a>，不知道 <a href="https://github.com/Linux4" rel="nofollow noopener noreferrer external" target="_blank">Linux4</a> 大佬什么时候让我的 s10e 吃上 Official Lineage OS 🤤</p> <p data-svelte-h="svelte-10t4u4e">近几年半导体的东西价格都在涨，显卡 内存 硬盘 以及本来是打着廉价开发板名号的树莓派，现在都涨了，还想整块 zero 2w 当随身 Linux 主机的 😢</p> <p data-svelte-h="svelte-1tafpsm">这篇文章就写到这吧，<del>摸到月底发还能算月更博客</del> 🥴</p>]]>
    </content>
    <category term="闲聊" scheme="https://trle5.xyz/?tags=%E9%97%B2%E8%81%8A" />
  </entry>
  <entry>
    <title type="html"><![CDATA[搭建一个自己的博客]]></title>
    <link href="https://trle5.xyz/post/搭建一个自己的博客" />
    <id>https://trle5.xyz/post/搭建一个自己的博客</id>
    <published>2022-03-05T00:00:00.000Z</published>
    <updated>2022-12-21T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[使用 Hexo 后端与 GitHub Pages 服务]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-16ixjhi">题图来自 hexo 默认主题 <a href="https://github.com/hexojs/hexo-theme-landscape" rel="nofollow noopener noreferrer external" target="_blank">landscape</a></p> <p data-svelte-h="svelte-ih3lqo"><strong>你好！这里是 Hubert ，欢迎来我的博客看文章！</strong></p> <h2 id="如何搭建自己的博客" data-svelte-h="svelte-1gi0981"><a href="#如何搭建自己的博客">如何搭建自己的博客</a></h2> <p data-svelte-h="svelte-x1a2zl">搭建博客并没有那么困难，大部分的时候只需要跟着步骤走就行，当然有时候碰见 bug 会是不可避免的事，这就得看运气了 <del>我是属于运气差的那一类人</del></p> <p data-svelte-h="svelte-1p9pyi4">本文里使用的博客框架为 <a href="https://github.com/hexojs/hexo/" rel="nofollow noopener noreferrer external" target="_blank">Hexo</a> ，服务器使用 <a href="https://github.io/" rel="nofollow noopener noreferrer external" target="_blank">GitHub Pages</a>。域名可使用 GitHub Pages 默认域名或自定义</p> <p data-svelte-h="svelte-nx02gd"><strong>那么就正式开始吧，毕竟我也不会写太多介绍</strong></p> <h2 id="搭建博客需要准备的东西" data-svelte-h="svelte-126b2la"><a href="#搭建博客需要准备的东西">搭建博客需要准备的东西：</a></h2> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>1. 可正常使用且没有被限制的 GitHub 账户</div><div class='line'>2. 搭载 Windows、Linux 或 Android 的设备</div><div class='line'>3. 良好的网络环境（我不知道啊你不要问我）</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-13binws">首先创建 GitHub 账户，因为我们搭建博客要用到 GitHub Pages ，注册过程我就不多阐述了，看不懂可以打开浏览器的翻译功能，也可以在搜索引擎寻找对应的教程</p> <p data-svelte-h="svelte-h28izx">创建完了 GitHub 账户，需要创建一个仓库（Repositories）用于存放博客文件和启用 GitHub Pages</p> <p data-svelte-h="svelte-f6wyyz">登录到 GitHub 网页版后，可以看见左上角的 <strong>Recent Repositories</strong> 旁有个 <strong>New</strong> 按钮，点击它来新建仓库</p> <p><img src="/post/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2/github-repo-desktop.webp" alt="在 GitHub 网页新建项目" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1acl3wr">如果是使用手机来访问，可以进入 <code>https://github.com/&lt;你的 GitHub 用户名&gt;?tab=repositories</code> ，就能看见那个 New 按钮了</p> <p><img src="/post/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2/github-repo.webp" alt="在 GitHub 移动端网页新建项目" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1qajabi">创建仓库需要设定仓库名与仓库类型（公开或私密），如果你希望使用 GitHub Pages 给的二级域名，你需要把仓库名设为 <code>&lt;你的 GitHub 用户名&gt;.github.io</code> ，否则你的 GitHub Pages 网页会变成 <code>&lt;你的 GitHub 用户名&gt;.github.io/&lt;创建的仓库名&gt;</code>，但如果你使用自定义域名的话随便设置都没问题，仓库类型推荐使用公开，因为似乎只有 Github 付费用户才能在私密的仓库中开启 GitHub Pages 功能</p> <p data-svelte-h="svelte-1dvoyjc">到这里 GitHub 的设置基本就完成了，接下来就应该开始配置 Hexo 客户端了</p> <h2 id="配置-hexo-客户端" data-svelte-h="svelte-t51znz"><a href="#配置-hexo-客户端">配置 Hexo 客户端</a></h2> <p data-svelte-h="svelte-18ucpz2">一旦配置完 Hexo 客户端，博客控制文件是全平台通用的，所以这里只说明如何在各个客户端配置，搭建以及部署后面统一讲</p> <hr> <h3 id="在-windows-设备上配置-hexo-客户端" data-svelte-h="svelte-hlrslv"><a href="#在-windows-设备上配置-hexo-客户端">在 Windows 设备上配置 Hexo 客户端</a></h3> <p data-svelte-h="svelte-vwog0k">首先要安装 Windows 版 <a href="https://nodejs.org/en/download/" rel="nofollow noopener noreferrer external" target="_blank">Node.js</a> ，选择 <strong>Windows Installer</strong></p> <p data-svelte-h="svelte-1vm1lge">安装完成后测试是否正常</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>node -v</div><div class='line'>npm -v</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1ytzjw">都能正常提示版本号的话，那就可以直接安装 <code>Hexo</code> 服务端</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>npm install -g hexo-cli</div><div class='line'>hexo version  # 检查 hexo 是否正常</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1o926x4">然后还需要安装一下 <code>Git</code> , 方法有两个</p> <ol data-svelte-h="svelte-177fsod"><li>进入 <a href="https://git-scm.com/" rel="nofollow noopener noreferrer external" target="_blank">Git 官网</a> 下载常规安装包</li> <li>使用 winget <code>winget install --id Git.Git -e --source winget</code></li></ol> <p data-svelte-h="svelte-1083h4j">这时候就可以部署 <code>Hexo</code> 了，创建一个放博客的文件夹比较好，推荐在用户文件夹下创建一个 hexo 文件夹给它，当然如果你已经在其他平台配置过了，也可以 <code>cd</code> 到那个文件夹直接进去继续操作。</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>cd C:/Users/&lt;你的用户名&gt;/hexo/</div><div class='line'>cd /d &lt;目录&gt;  # CMD 用户使用这条命令来切换目录</div><div class='line'>hexo init</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-mg0hel">到这里的 Windows 上的 hexo 已经部署完成了</p> <hr> <h3 id="在-linux-设备上配置-hexo-客户端" data-svelte-h="svelte-1t3k0xe"><a href="#在-linux-设备上配置-hexo-客户端">在 Linux 设备上配置 Hexo 客户端</a></h3> <p data-svelte-h="svelte-yuocju">相比于 Windows，Linux 上的 Hexo 安装更为简单，只用在命令行运行几个命令</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ sudo apt update</div><div class='line'>$ sudo apt install nodejs</div><div class='line'>$ sudo apt install git # 如果已经安装了 git 可以跳过这一步</div><div class='line'>$ sudo npm install -g hexo-cli</div><div class='line'>$ hexo version</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1948hu5">挺简单的，接着在<code>~/</code>下创建一个<code>hexo</code>文件夹再部署就行</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ mkdir hexo</div><div class='line'>$ cd hexo</div><div class='line'>$ hexo init # 此步如果有报错，请使用 sudo 执行或清空部署文件夹</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-130d2co">完成</p> <hr> <h3 id="在-android-设备上配置-hexo-客户端" data-svelte-h="svelte-1hmglv9"><a href="#在-android-设备上配置-hexo-客户端">在 Android 设备上配置 Hexo 客户端</a></h3> <p data-svelte-h="svelte-10afztc"><strong>由于考虑到一些手机品牌的不可获取 root 性，本文章使用 Termux 来运行命令</strong></p> <p data-svelte-h="svelte-1mu3yyw"><del>注意</del></p> <p data-svelte-h="svelte-11vq7ee"><del>由于 Termux 的默认用户文件夹是在 <code>/data/data/com.ternux/files/home/</code> 下，没有 root 权限可能无法读取和写入文件，用户可能要慎重考虑一下，博客可以部署到 GitHub Pages 上，但后端控制文件可能得找其他办法传输出来</del></p> <p data-svelte-h="svelte-jgsqbv"><strong>这个问题是我没发现，在 Android 自带的文件应用里的侧边栏，可以看到下方有个 Termux 选项，点击进去既可访问它的 Home 目录</strong></p> <p data-svelte-h="svelte-aqiaom">当然也可以尝试在手机上安装完整 Linux 虚拟机</p> <p data-svelte-h="svelte-2lmsqd"><strong>安装配置 Termux</strong></p> <p data-svelte-h="svelte-11vo9rg">下载链接 <a href="https://play.google.com/store/apps/details?id=com.termux" rel="nofollow noopener noreferrer external" target="_blank"><del>Play Store</del></a> 不推荐，已经很久没更新了 | <a href="https://f-droid.org/repo/com.termux_118.apk" rel="nofollow noopener noreferrer external" target="_blank"><strong>F-Droid</strong></a> | <a href="https://t5d.trle5.xyz/Apk/ADB-tools-3.0.apk" rel="nofollow noopener noreferrer external" target="_blank"><strong>Hubert’s Box</strong></a> (仅 arm64-v8a) | <a href="https://github.com/termux/termux-app/releases/latest" rel="nofollow noopener noreferrer external" target="_blank"><strong>GitHub Releases</strong></a></p> <p data-svelte-h="svelte-zesily">安装并打开，等待下载需要的配置文件</p> <p data-svelte-h="svelte-179fa1s">更新源与升级</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ pkg update</div><div class='line'>$ pkg upgrade</div><div class='line'># 如果以上命令不可用，可以试试把 pkg 改成 apt，即 apt update</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-4catec">upgrade 中途可能有选择停顿，可根据个人喜好选择</p> <p data-svelte-h="svelte-1fjod31">安装 Termux root 工具</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ pkg install tsu # 手机有 root 权限选择这个</div><div class='line'>$ pkg install proot # 手机没有 root 权限选择这个</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-wxmzof">切换到 root</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ tsu # tsu 使用这条命令，执行后会向手机索要 root 权限</div><div class='line'>$ termux-chroot # proot 使用这条命令，运行后 ~$ 没有变化 ，但权限有变</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-e0h73t">安装 nodejs 和 git 以及 hexo-cli</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ pkg install nodejs</div><div class='line'>$ node -v && npm -v # 查看 nodejs 与 npm 的版本</div><div class='line'>$ pkg install git # 已安装 git 可以忽略此行</div><div class='line'>$ npm install -g hexo-cli</div><div class='line'>$ hexo version</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1i8brkp">这下 hexo 客户端已经成功部署到 Termux 了，来创建文件夹部署博客文件吧</p> <p data-svelte-h="svelte-1c9tltm">Termux 的默认文件夹在安卓系统的 <code>/data/data/com.termux/files/home/</code> ，最好也是在 home 下创建一个 hexo 文件夹部署进去</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>$ mkdir hexo # 如果是用的系统 su ，记得观察路径是不是在 Termux 的 home 文件夹下( termux-chroot 显示为 ~$ )，以免破坏 Android 系统</div><div class='line'>$ cd hexo</div><div class='line'>$ hexo init</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-3jefvg">走完进度条也就部署完成了</p> <h2 id="在三个平台的部署都完成了接下来要尝试让它在本地服务器上运行" data-svelte-h="svelte-1oykahz"><a href="#在三个平台的部署都完成了接下来要尝试让它在本地服务器上运行">在三个平台的部署都完成了，接下来要尝试让它在本地服务器上运行</a></h2> <p data-svelte-h="svelte-1v8udxh"><strong>下面的 <code>hexo generate</code> <code>hexo server</code> 和后面要讲的 <code>hexo deploy</code>，都可以使用 <code>hexo g</code> <code>hexo s</code> <code>hexo d</code>来代替，作用是一样的，也就是 </strong>g<strong>enerate </strong>s<strong>erver </strong>d<strong>eploy 三个单词的首字母</strong></p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>hexo generate # 初始化博客并生成初始页面，后期每写一篇新文章也需要再执行一次</div><div class='line'>hexo server # 运行本地服务器，一般用来测试和在推送前检查是否有问题</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1ec8clh">接下来会提示本地服务器已经启用，访问 <code>http://localhost:4000/</code> 或 <code>http://127.0.0.1:4000/</code> 都可以查看初始博客</p> <p data-svelte-h="svelte-1b3z96p">配置文件并部署博客到 Github Pages</p> <p data-svelte-h="svelte-7tavu9">进入你的 hexo 文件夹，然后编辑其中的 <code>_config.yml</code> 文件</p> <p data-svelte-h="svelte-14wgpch">下面放一些正常的设置类型</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" yaml="true" title="_config.yml"><div class='code-title'>_config.yml</div><div class="language-id">yaml</div><div class='code-container'><code><div class='line'>title: Hexo # 博客主标题</div><div class='line'>subtitle:   # 博客副标题</div><div class='line'>author: John Doe # 博客著名者</div><div class='line'>language: en # 中文填 zh-CN</div><div class='line'>timezone: Asia/Shanghai # 时间位置，需要按照规范填写</div><div class='line'>url: http://example.com # 网站链接，影响到点击主副标题的跳转，可以填自定义域名或 Github Pages 二级域名</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1ye02bi">接下来是部署设置，配置文件也是在 <code>_config.yml</code> 文件里编辑</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" yaml="true" title="_config.yml"><div class='code-title'>_config.yml</div><div class="language-id">yaml</div><div class='code-container'><code><div class='line'># https://hexo.io/docs/one-command-deployment 查看 hexo 部署帮助文档</div><div class='line'>deploy: # 此处不用填写，留空</div><div class='line'>  type: git # 填 git 或 heroku ，根据你的部署位置来</div><div class='line'>  repository: https://github.com/&lt;username&gt;/&lt;username&gt;.github.io # 也可以填你名下的其他仓库，正确即可</div><div class='line'>  branch: main # 或 master，根据分支来，例如我的就是 hexo</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1if84uu"><strong>这下就可以部署到 GitHub Pages 了，不过还得设定一些东西</strong></p> <p data-svelte-h="svelte-1mqykby">确保你的终端里配置有 git，然后设置一下用户信息</p> <p data-svelte-h="svelte-1xnvla6">也可以手动编辑，Windows 的 .gitconfig 文件在用户文件夹目录，Linux 在用户文件夹下，Termux 在 home 文件夹下</p> <!-- HTML_TAG_START --><pre class="shiki material-default with-title" bash="true" title=".gitconfig"><div class='code-title'>.gitconfig</div><div class="language-id">bash</div><div class='code-container'><code><div class='line'>git config --global user.name "&lt;username&gt;" </div><div class='line'>git config --global user.mail "&lt;username@github.com&gt;"</div><div class='line'># 可能需要使用 root 权限执行</div><div class='line'># 可以不用加 "" 号，只是因为用户名有空格的话可能会造成 git 只记录下前一半</div></code></div></pre><!-- HTML_TAG_END --> <h3 id="关于-git-config-中的邮箱设定" data-svelte-h="svelte-1wbkuh5"><a href="#关于-git-config-中的邮箱设定">关于 git config 中的邮箱设定</a></h3> <p data-svelte-h="svelte-3qnzor">如果你的 GitHub 帐号邮箱地址为公开状态，那么 git config 中的邮箱地址可以填写注册 GitHub 的邮箱地址</p> <p data-svelte-h="svelte-h74zlo"><strong>设定了不公开邮箱地址？</strong></p> <p>前往 <a href="https://github.com/settings/emails" rel="nofollow noopener noreferrer external" target="_blank" data-svelte-h="svelte-y6at90">邮箱设定</a> ，找到你的邮箱地址，旁边会有一个提示符号 ，把鼠标放上去或点击它，就会显示一段话和一个格式为 <code data-svelte-h="svelte-1pkm8af">&lt;number&gt;+&lt;username&gt;@users.noreply.github.com</code> 的邮箱地址，复制它然后粘贴到终端里即可<img src="/post/%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8D%9A%E5%AE%A2/github-email.webp" alt="GitHub 的邮箱设定，开启了非公开状态，图里显示了一个数字加用户名的替代邮箱" class="rounded-lg my-2" loading="lazy" decoding="async"></p> <p data-svelte-h="svelte-1dcv41e">呃，还得安装一下 Hexo 提供的一键部署工具</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>cd hexo  # 需要在博客文件夹里执行</div><div class='line'>npm install hexo-deployer-git --save</div></code></div></pre><!-- HTML_TAG_END --> <h2 id="到这里基本上就完成了来部署吧" data-svelte-h="svelte-1w0r3ux"><a href="#到这里基本上就完成了来部署吧">到这里基本上就完成了，来部署吧！</a></h2> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>hexo clean # 慎重操作，会清除所有数据，但不会删除 _config.yml 文件，非必要选项</div><div class='line'>hexo g # 重新生成默认博客，source 文件夹里有新文章时会生成新的页面</div><div class='line'>hexo d # 复制 public 文件夹里的文件到 .depoly_git 文件夹里，然后根据 _config.yml 里的设置开始部署</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-8mqltv">接下来 git 会向你请求设定的部署网站的用户名与密钥，这里以 GitHub 作为演示</p> <!-- HTML_TAG_START --><pre class="shiki material-default" bash="true"><div class="language-id">bash</div><div class='code-container'><code><div class='line'>Username for 'https://github.com':&lt;username&gt;</div><div class='line'>Password for 'https://&lt;username&gt;@github.com':&lt;yourpasswd&gt;</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-nk7s14"><strong>事实上这个时候填你得 Github 账号密码是没有用的，为了安全你得去 GitHub 申请一个 Personal access tokens</strong></p> <ol data-svelte-h="svelte-18q8nqc"><li>访问 <a href="https://github.com/settings/tokens/" rel="nofollow noopener noreferrer external" target="_blank">https://github.com/settings/tokens/</a></li> <li>点击 <strong>Generate new token</strong></li> <li>验证密码 ，然后输入一个名称，以及选择过期时间，为了安全，推荐不要设置成不过期，做好定期更换</li> <li>在下方选择该令牌的权限，不懂可以全选，也可以自定义</li> <li>点击 <strong>Generate token</strong>，生成令牌</li></ol> <p data-svelte-h="svelte-7xeqev">生成的令牌格式为 <code>ghp_1234567890abcdefghijklmnopqrst</code> ，也就是<code>ghp_</code> 加上<code>0-9</code> <code>a-z</code> <code>A-Z</code> 的随机生成数，一般也记不住，但也不要为方便直接保存在明文文件里</p> <p data-svelte-h="svelte-1358vna"><strong>也可以给机子设定 ssh 权限，手动配置会有点麻烦，不然可以试试安装 <code>gh</code> 软件包</strong></p> <p data-svelte-h="svelte-6s4mln"><code>gh</code> 为 GitHub 的 Cli 工具，可见 <a href="https://github.com/cli/cli/" rel="nofollow noopener noreferrer external" target="_blank">GitHub CLI</a> 项目，不过一些源里可能没有，也可以从 <a href="https://github.com/cli/cli/releases/" rel="nofollow noopener noreferrer external" target="_blank">Releases</a> 下载编译好的工具包</p> <p data-svelte-h="svelte-1k0iv54">安装好后执行 <code>gh auth login</code> 并根据提示操作，在浏览器登陆并输入设备配对码后即可配对成功</p> <p data-svelte-h="svelte-igu361"><strong>后面就可以继续博客的部署了，接下来说说博客自定义域名与 DNS 解析如何设置的问题</strong></p> <p data-svelte-h="svelte-1kuo5iz">如果需要自定义域名，请在 hexo 的 <code>public</code> 和 <code>.deploy_git</code> 文件夹里都新建一个 <code>CNAME</code> 文件，用文本编辑器打开，里面填上你希望使用的域名，也可以在 GitHub 项目的设置里找到 Pages ，再找到 Custom domain ，填入域名，但你不在 hexo 里放的话，每更新 <code>hexo d</code> 一次你就得重新进这个页面设置一次，很麻烦</p> <h3 id="自定义域名的-dns-设置" data-svelte-h="svelte-1slft5u"><a href="#自定义域名的-dns-设置">自定义域名的 DNS 设置</a></h3> <p data-svelte-h="svelte-c03ruf">这个我也摸索了很久，但现在碰壁多了也就会了</p> <p data-svelte-h="svelte-16lztr5">按照 <a href="https://docs.github.com/cn/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site" rel="nofollow noopener noreferrer external" target="_blank">GitHub 的 DNS 解析设置</a>，需要创建四条 <code>A</code> 记录，并分别定向到：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>name: @ # 全都要使用 @ 号 (有些服务商的设置方法是留空)</div><div class='line'>185.199.108.153</div><div class='line'>185.199.109.153</div><div class='line'>185.199.110.153</div><div class='line'>185.199.111.153</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-1oelj7">还有四条 <code>AAAA</code> 记录，也得分别定向到：</p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>name: @ # 全都要使用 @ 号 (有些服务商的设置方法是留空)</div><div class='line'>2606:50c0:8000::153</div><div class='line'>2606:50c0:8001::153</div><div class='line'>2606:50c0:8002::153</div><div class='line'>2606:50c0:8003::153</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-15dl0s4">以及一条 <code>CNAME</code> 记录</p> <!-- HTML_TAG_START --><pre class="shiki material-default" text="true"><div class="language-id">text</div><div class='code-container'><code><div class='line'>name: www </div><div class='line'>&lt;username&gt;.github.io. # 也就是 GitHub Pages 的默认页面</div></code></div></pre><!-- HTML_TAG_END --> <p data-svelte-h="svelte-12shn5y">填写完成的样子就如下表，顺序没有关系</p> <div class="overflow-x-auto mb-4"><table class="table w-full"><thead data-svelte-h="svelte-rxvssb"><tr><th>类型</th> <th>名称</th> <th>内容</th></tr></thead> <tbody data-svelte-h="svelte-1pqb01c"><tr><td>A</td> <td>@</td> <td>185.199.108.153</td></tr> <tr><td>A</td> <td>@</td> <td>185.199.109.153</td></tr> <tr><td>A</td> <td>@</td> <td>185.199.110.153</td></tr> <tr><td>A</td> <td>@</td> <td>185.199.111.153</td></tr> <tr><td>AAAA</td> <td>@</td> <td>2606:50c0:8000::153</td></tr> <tr><td>AAAA</td> <td>@</td> <td>2606:50c0:8001::153</td></tr> <tr><td>AAAA</td> <td>@</td> <td>2606:50c0:8002::153</td></tr> <tr><td>AAAA</td> <td>@</td> <td>2606:50c0:8003::153</td></tr> <tr><td>CNAME</td> <td>www</td> <td>username.github.io.</td></tr></tbody></table></div> <p data-svelte-h="svelte-1kottk4">设置完成点击保存，然后等个十来分钟应该就可以访问自定义域名了，如果访问出现 GitHub Pages 页面，但没有定位到你的博客，那可能是你 GitHub 仓库的 <code>CNAME</code> 文件被顶掉了</p> <h2 id="到这里你的博客就搭建完成了写文章的教程我会在后面再发一篇教程" data-svelte-h="svelte-v6m2nf"><a href="#到这里你的博客就搭建完成了写文章的教程我会在后面再发一篇教程">到这里你的博客就搭建完成了，写文章的教程我会在后面再发一篇教程</a></h2> <p data-svelte-h="svelte-e1e18a">参考文章:</p> <p data-svelte-h="svelte-17nmpyf"><a href="https://zhuanlan.zhihu.com/p/102592286" rel="nofollow noopener noreferrer external" target="_blank">从零开始搭建个人博客（超详细）</a></p> <p data-svelte-h="svelte-86we07"><a href="https://www.sqlsec.com/2018/05/termux.html" rel="nofollow noopener noreferrer external" target="_blank">Termux 高级终端安装使用配置教程</a></p>]]>
    </content>
    <category term="Hexo" scheme="https://trle5.xyz/?tags=Hexo" />
    <category term="技术" scheme="https://trle5.xyz/?tags=%E6%8A%80%E6%9C%AF" />
    <category term="博客" scheme="https://trle5.xyz/?tags=%E5%8D%9A%E5%AE%A2" />
  </entry>
  <entry>
    <title type="html"><![CDATA[这是一个测试页面]]></title>
    <link href="https://trle5.xyz/about/testagain" />
    <id>https://trle5.xyz/about/testagain</id>
    <published>2022-01-26T00:00:00.000Z</published>
    <updated>2023-02-26T00:00:00.000Z</updated>
    <summary type="html"><![CDATA[有点纪念意义就一直放在这里好了]]></summary>
    <content type="html">
      <![CDATA[<p data-svelte-h="svelte-1lbxruo">test</p> <u data-svelte-h="svelte-2c9ar0">测试下划线</u> <h2 id="测试大纲" data-svelte-h="svelte-yjn11d"><a href="#测试大纲">测试大纲</a></h2> <p data-svelte-h="svelte-4xidrb"><code>测试等宽 abc</code></p> <p data-svelte-h="svelte-bs9jm"><a href="https://github.com/" rel="nofollow noopener noreferrer external" target="_blank">测试链接</a></p> <p data-svelte-h="svelte-1xvttxl"><strong>网易云音乐</strong></p> <iframe title="Netease Music" border="0" marginwidth="0" marginheight="0" src="//music.163.com/outchain/player?type=2&id=1300697588&auto=0&height=66" width="330" height="86" frameborder="no"></iframe> <p data-svelte-h="svelte-n5hak0"><strong>个人资料</strong></p> <div class="relative w-auto min-h-48 rounded-box overflow-hidden bg-gradient-to-b from-primary to-secondary text-primary-content transition-shadow duration-200 shadow-xl hover:shadow-2xl p-4 md:p-8 my-4"><div class="absolute -top-4 opacity-10 text-[12rem] text-neutral leading-tight rotate-[30deg]">Hubert Chen</div> <div class="avatar mb-4"><div class="rounded-full border-2 border-white shadow-xl w-16 h-16"><img class="hover:rotate-[360deg] transition-transform duration-1000 ease-in-out m-0" src="/assets/avatar/70455873_p3.webp" alt="Hubert Chen" loading="lazy" decoding="async"></div></div> <div class="opacity-50">zh-Hans / en-US</div> <div class="text-2xl mb-2">Hubert Chen</div> <div><!-- HTML_TAG_START -->你好呀 👋<br>是个普通网友<br>目前只会一点 C 语言<!-- HTML_TAG_END --></div> <div class="flex flex-col md:flex-row gap-4 mt-4"></div></div> <p data-svelte-h="svelte-wcvd6y"><strong>GitHub 仓库</strong></p> <div class="card bg-base-100 !bg-base-200 my-4 "><div class="p-6"></div></div> <p data-svelte-h="svelte-1kzo1eb"><strong>YouTube 视频</strong></p> <div class="relative pb-[56.25%] mb-4"><iframe src="https://www.youtube.com/embed/WysuxO4yR04?autoplay=0&amp;disablekb=0&amp;controls=1&amp;fs=1&amp;loop=0" class="absolute w-full h-full" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" loading="lazy" allowfullscreen></iframe></div> <p data-svelte-h="svelte-bsa85i"><strong>Spotify 音乐</strong></p> <iframe title="Spotify music player" class="mb-4 rounded-box" src="https://open.spotify.com/embed/album/0vXB2JFdOphGK7ybYLXSRI?utm_source=generator&amp;theme=1" width="100%" height="352" frameborder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe> <p data-svelte-h="svelte-l8zwd1"><strong>音乐播放器</strong></p> <div class="card bg-base-100 !bg-base-200 my-4"><div class="p-7"><div class="flex"><div class="card-title flex-initial pr-4"><img class="w-24 h-auto mt-auto ml-auto mb-auto rounded-box" alt="album_cover" src="https://i.scdn.co/image/ab67616d00001e02bae58503113500726b3fa0ea"></div> <span class="mb-auto !text-4xl font-medium whitespace-nowrap overflow-hidden text-ellipsis"><a rel="noopener noreferrer external" target="_blank" class="ml-4 no-underline font-semibold" href="https://t5d.trle5.xyz/Music/BlackOut-Daxten.mp3">Black Out - Daxten</a> <audio controls><source src="https://t5d.trle5.xyz/Music/BlackOut-Daxten.mp3"></audio></span></div></div></div>]]>
    </content>
    <category term="测试" scheme="https://trle5.xyz/?tags=%E6%B5%8B%E8%AF%95" />
  </entry>
</feed>