<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.yichya.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.yichya.dev/" rel="alternate" type="text/html" /><updated>2026-08-29T21:15:09+08:00</updated><id>https://www.yichya.dev/feed.xml</id><title type="html">Nostalgia</title><subtitle>何以解忧，唯有暴富</subtitle><author><name>yichya</name></author><entry><title type="html">Windows but Nostalgia</title><link href="https://www.yichya.dev/windows-but-nostalgia/" rel="alternate" type="text/html" title="Windows but Nostalgia" /><published>2026-08-29T00:00:00+08:00</published><updated>2026-08-29T00:00:00+08:00</updated><id>https://www.yichya.dev/windows-but-nostalgia</id><content type="html" xml:base="https://www.yichya.dev/windows-but-nostalgia/"><![CDATA[<p>Windows 11 用的真的很心烦。基于草民个人的一些痛点折腾了两个稍微老一点的系统，或许也能解决大家的一些特定需求</p>

<h1 id="windows-server-2012-r2">Windows Server 2012 R2</h1>

<p>这甚至已经是一个一年前的选题了。至于为什么要整这么个活：跟某个客户对接需要跑他们的 VPN，但这种东西一般都带一点说不清道不明还可能删不干净的乱七八糟的玩意儿，所以不想装在 Host OS 上，于是准备找一个老系统起 VM</p>

<ul>
  <li>最早打算继续 WES7x64，但 Hyper-V Gen 1 硬件支持一般，而且在上面跑 DBeaver 界面经常卡，感觉是 DWM 有点奇奇怪怪的问题</li>
  <li>后来又试了一下 Deepin LiteXP，虽然客户的 VPN 还真能装的上，但因为实在太老旧了，没有很方便的端口转发方案</li>
  <li>某一天突然觉得 x64 有点浪费内存，于是计划找个 WES7x86，可惜找了半天也没找到个满意的（其实曾经有但早丢了），又确实懒得自己搞；过程中偶然尝试了一个没激活的 Thin PC 然后自动在有 KMS 的网络里面激活了……突然灵光一闪</li>
  <li>尝试了一下 Windows 8.1 x86 感觉带的乱七八糟的东西还是有点多，然后突然想起来 Windows Server 2012 R2</li>
</ul>

<p>话又说回来，折腾这个大概算是二十年前就开始搞的真·老本行了（</p>

<h2 id="优点">优点</h2>

<p>跟 Windows Server 2022（这个也是个人比较推荐的干活用系统）比：</p>

<ul>
  <li>资源占用明显更少，开机内存 0.5GB 左右，分 1GB 拉起来绰绰有余（当然 swap 还是该加就得加的，不过比起内存来说还是便宜多了，尤其是在这个内存贵上天的节骨眼上</li>
  <li>几乎跟 Windows 7 一样干净，没有那种系统自带的 WPF 画出来的磨磨唧唧的界面，找回那种指哪打哪的利索感觉；也没有 Windows Defender，虽然这个不一定是好事，但是在任务非常特定的虚拟机上应该问题不大</li>
</ul>

<p><img src="../assets/images/windows-but-nostalgia/memory.png" alt="" /></p>

<p>跟更早版本（比如 WES7）比：</p>

<ul>
  <li>样式比不能开 Aero 的 Windows 7 系列好看一点（Hyper-V 就开不了）</li>
  <li>HiDPI 支持好很多，而且强制 DWM，能避免一些比较新的设备、应用可能有的小问题</li>
  <li>支持很多现代特性，比如 UEFI 启动、更好的 Hyper-V 支持（尤其是 Guest 图形界面驱动比 Windows 7 好很多）</li>
</ul>

<p><img src="../assets/images/windows-but-nostalgia/graphics.png" alt="" /></p>

<p>总之不愧是 NT6 + Win32 最后的荣光，以及跟 Windows 8.1 比也是要干净清爽很多。另外这代 Embedded 没啥亮点，所以跳过了</p>

<h2 id="缺点">缺点</h2>

<p>跟 Windows Server 2022 比：</p>

<ul>
  <li>HiDPI 支持还是有不少毛病</li>
  <li>缺一些很好用的东西，比如新版控制台、WSL 等</li>
  <li>（不魔改）跑不了最新的浏览器、VS Code 等，Golang 之类的工具链 / 产物也有版本限制需要费点心思</li>
  <li>（即将）没有安全更新（就算搞魔法更新也只能活到 2026 年十月了；Windows Server 2022 能支持到 2032 年的样子</li>
  <li>完全不能装 msix 应用比如 Windows Terminal 和 winget（Windows Server 2016 / 2019 印象中也不能装，所以只推荐 2022</li>
  <li>没有 CompactOS（亲测 Windows 8.1 能用的 WIMBoot 在服务器产品线上不能用，对于一个已经基本 EoL 的系统来说有点可惜</li>
</ul>

<p>跟更早版本（比如 WES7）比：</p>

<ul>
  <li>没有 32 位版本，强制要求 DWM，占资源还是稍微高一点</li>
  <li>还是从 Windows 8.1 搞了一个开始屏幕下来（虽然也可以 StartIsBack</li>
</ul>

<p>因此这些考虑下来还是仅仅推荐在需要一个不太占资源的虚拟机的时候搞，不建议用来当主力干活，主力还是请上 Windows Server 2022</p>

<p>另外关于 Windows Server 2025 个人是觉得除了补上了 Windows Server 2022 没有的蓝牙之外别的意义不大（如果用新一点的 CPU 的话可能还有大小核感知调度器，这个要用的话就确实没办法），但是代价是多了很多 UWP 的负担，个人觉得不是很推荐</p>

<h2 id="安装">安装</h2>

<p>建议 Standard + GUI 就行了</p>

<ul>
  <li>Hyper-V 的话闭眼选 Gen2 开 UEFI，其他平台看情况，一般推荐能上 UEFI 就上 UEFI</li>
  <li>Hyper-V 基本上是进系统之后驱动全部自动装完，其他 VM 自行安装 Guest Tools</li>
  <li>其他的 Windows 自带组件看着办，草民推荐不装「桌面体验」，基本上是没啥用</li>
</ul>

<p>激活就各显神通了，虚拟机的话个人建议外面的 OpenWrt 上跑 vlmcsd；然后再进行一下自动更新，目前还可以直接 Windows Update，然后可以装一下 Legacy Update（主要是根证书更新，不然很多东西不太好使</p>

<h3 id="魔法更新">魔法更新</h3>

<p><a href="https://forums.mydigitallife.net/threads/bypass-esu-blue.86548/">一点小技巧开启 ESU</a>，然后可以更新到 2026 年十月（也就一个月了，感觉可以等最终版了</p>

<p>虽然对于不对外提供服务的虚拟机来说，这样的用法大概也不太重要，各取所需（</p>

<h3 id="powershell-51">PowerShell 5.1</h3>

<p><a href="https://go.microsoft.com/fwlink/?linkid=839516">Win8.1AndW2K12R2-KB3191564-x64.msu</a></p>

<p>但是因为没有新版控制台的关系，装上了也并不能用 PSReadline，所以随便吧</p>

<h2 id="hidpi-以及-hyper-v-增强会话">HiDPI 以及 Hyper-V 增强会话</h2>

<p>Hyper-V 不开增强会话的话分辨率只能拉到 1920x1080，虽然大部分情况也够用了，但是没有点对点缩放看起来不怎么好看。但是 Hyper-V 的增强会话感觉不是很好用：每次点开都要重新登录，而且 HiDPI 莫名其妙的各种各样的抽风</p>

<p>就算不考虑这些奇奇怪怪的毛病，本质上也就是个走 VMBus 的 RDP，除了不用折腾防火墙什么的之外，用起来体验跟 RDP 区别也不大，总之不是很推荐，更建议直接走正常的 RDP，可以记住密码不用每次都重新登录一遍，而且 HiDPI 也正常一点；另外不想要 HiDPI 的话可以手动装一个版本旧一点的 SysInternals Suite 用里面的 RDCMan，比 mstsc 好用一点</p>

<h2 id="一点小优化">一点小优化</h2>

<p>除了一些常规操作（比如把 Windows Audio 服务打开才有声音）之外，还有一些小设置，调了更舒心一些</p>

<h3 id="壁纸--图标">壁纸 + 图标</h3>

<p>不装桌面体验的情况下没有「个性化」这个控制面板选项，不过壁纸很简单，找一张图然后右键「设置为桌面背景」就行</p>

<p>桌面图标也好解决，运行 <code class="language-plaintext highlighter-rouge">desk.cpl ,,5</code> 然后全勾上就行了。</p>

<h3 id="磁盘清理">磁盘清理</h3>

<p>不知道为什么 <code class="language-plaintext highlighter-rouge">cleanmgr</code> 也跟桌面体验绑在一起，甚至很怪的是装了它也不能清理更新，所以还是得上 DISM</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dism /online /cleanup-image /startcomponentcleanup /resetbase
</code></pre></div></div>

<p>当然也可以用 Dism++ 顺便删掉一些其他的东西</p>

<h3 id="默认输入法">默认输入法</h3>

<p>默认输入法死活不能切换成英文的，就算添加了 English 语言也不行，于是只好使用一点注册表魔法</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="00000804"
"2"="d0010804"

[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
"00000804"="00000409"
"d0010804"="00000804"
</code></pre></div></div>

<p>然后选择一下【替代默认输入法】就行了，强迫症还可以再调一下顺序把微软拼音放到后面去</p>

<h3 id="删除确认">删除确认</h3>

<p>草民不是很想用回收站，所以一般是把回收站扬了然后把【删除确认】对话框打开，但是遇到那种需要 UAC 才能删的文件的时候这个提示框就死活出不来。应该是一个 Windows 7 时代就有的老问题了，一直到 Windows 11 还是这样</p>

<p>使用以下注册表导入就行（也可以组策略：用户配置 - 管理模板 - Windows 组件 - 文件资源管理器，右边【删除文件时显示确认对话框】</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ConfirmFileDelete"=dword:00000001
</code></pre></div></div>

<p>但是亲测下来不完全有效：删除文件的时候可以，删除文件夹的时候还是不行，不知道是怎么搞的。保险起见建议是把 UAC 拉满（虽然动不动就点确认也有点烦，不过除了任务管理器 / 关机重启之类高频操作之外一般也影响不大），或者也可以选择开启回收站</p>

<h1 id="windows-10-iot-enterprise-ltsc-2021">Windows 10 IoT Enterprise LTSC 2021</h1>

<p>MicroPC 上跑 Windows 11 实在是让人忍无可忍，加上考虑到另外两台设备（十多年前的 X550JK 和八年半前买的 NUC）也用得上，花了点时间折腾了一下，换完真的全身舒畅，而且还解决了莫名其妙连不上 EAP 的问题</p>

<p>虽然 Windows 10 的 ESU 又多白送了一年（本来也是只到 2026 年十月的），但是 IoT Enterprise 能干到 2032 年，加上它非常简洁几乎啥都不带，但跟 Windows Server 2022 比又更接近正常的消费级系统（比如不用费心思折腾蓝牙和商店什么的，还有一些 App 比如网易云音乐也能正常启动），对于不方便直接上 Windows Server 2022 的情况也更加推荐</p>

<h2 id="安装-1">安装</h2>

<p>这个 SKU 目前是 19044（21H1），不过可以离线把 21H2 的可选包塞进去。官方并没有直接提供镜像，所以草民是随便找了个已经做好了的第三方提供的 ISO <a href="https://www.bilibili.com/opus/1168875731890995209">https://www.bilibili.com/opus/1168875731890995209</a>，使用前请自行做安全检查</p>

<p>确实不放心的话也可以尝试自己搓这个镜像出来，用 Dism++ 来搞的话也不算很复杂</p>

<h2 id="激活">激活</h2>

<p>本来是想 KMS 的，但是这个版本能上 <a href="https://massgrave.dev/manual_hwid_activation">HWID</a>，试了一下果然很香。因为里面的东西多少还是有点敏感，这里就不贴了</p>

<h2 id="自动更新">自动更新</h2>

<p>不知道为什么不能用，但是手动下载了累积更新 MSU 之后又能正常安装，可能是 LTSC 的什么奇怪属性</p>

<p>也尝试了一下开 Insider Preview 选 Release Preview，并没有什么用，开了之后还会被塞 Windows 11 的更新提示，很坑爹。不过找了几个法子解决了一下。先照图设置一下组策略（计算机管理 &gt; 管理模板 &gt; Windows 组件 &gt; Windows 更新 &gt; 适用于企业的 Windows 更新）</p>

<p><img src="../assets/images/windows-but-nostalgia/gpedit.png" alt="" /></p>

<p>然后参考 <a href="https://www.tenforums.com/windows-updates-activation/190562-how-hide-win-11-upgrade-option.html">https://www.tenforums.com/windows-updates-activation/190562-how-hide-win-11-upgrade-option.html</a>，清理一下已经完成的几个兼容性检查，再重启、重新检查一下更新即可。</p>

<h2 id="microsoft-store">Microsoft Store</h2>

<p>非常简单，<code class="language-plaintext highlighter-rouge">wsreset -i</code> 就行了。常用的几个包商店里如果搜不到的话，手动装一下然后再更新就行</p>

<ul>
  <li>应用安装程序（winget 还是很好用的）</li>
  <li>Windows Terminal、NanaZip 等常用工具</li>
  <li>几个媒体扩展：HEVC（建议选「来自设备制造商的 HEVC 视频扩展」）、AV1、MPEG-2 等等</li>
</ul>

<p>另外关于图片，可以参考 <a href="https://www.tenforums.com/tutorials/14312-restore-windows-photo-viewer-windows-10-a.html">https://www.tenforums.com/tutorials/14312-restore-windows-photo-viewer-windows-10-a.html</a> 使用旧版的照片查看器，这样就不用装商店里的 UWP 照片 App 了</p>

<h2 id="日常体验">日常体验</h2>

<p>这一套都做下来之后开机内存占用大概是刚好 2GB 多一点点，比起 Windows 11 来说显然要好得多，而且响应明显更快、风扇也转的少了</p>

<p>目前是又在上面装了 Lark 拿来应急（真惨啊</p>

<h1 id="nuc-备份">NUC 备份</h1>

<p>最近还有一个很有意思的事情：把 NUC 重装送走之前当然要做一个全盘镜像，但是很不巧，手头暂时没有足够大的介质。想了几个方案</p>

<h2 id="局域网-dd">局域网 dd</h2>

<p>最初的打算是起一个 Ubuntu LiveCD，用 dd 抓全盘镜像，然后通过网络转发 stdio 导进 NAS，非常顺手的方案</p>

<p>但是就不知道为什么 Linux 就是死活认不到 Intel RAID 0 Volume，试了两三个不同版本的 Ubuntu 都不行，只好放弃</p>

<h2 id="pe">PE</h2>

<p>手里虽然刚好有个功能还挺齐全的 PE，但是它毫不意外撞上了新版安全启动证书的大坑。这台 NUC 的安全启动证书更新也全是问题，为此实在是不想再把安全启动关掉，于是只好回过头去找一个新一点的 PE</p>

<h2 id="re--disk2vhd">RE + Disk2VHD</h2>

<p>找 PE 之前突然想起来 Windows 自带的 RE 似乎也支持网络，结果没想到还真的能用</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">startnet.cmd</code></li>
  <li><code class="language-plaintext highlighter-rouge">net use Z: \\yichya-nas.lan\Public</code></li>
</ul>

<p>草民截图的时候起了一个 Windows 10 的 Hyper-V 虚拟机，不过它稍微遇到了一点波折（NUC 备份的时候就完全没遇到什么问题</p>

<ul>
  <li>startnet.cmd 之后 wpeinit 卡住了</li>
  <li>退出去重新开了一个 cmd，发现 ipconfig 已经正常了</li>
  <li>net use 提示「工作站服务没有启动」。手动 <code class="language-plaintext highlighter-rouge">net start lanmanworkstation</code> 之后一切正常</li>
</ul>

<p><img src="../assets/images/windows-but-nostalgia/re.png" alt="" /></p>

<p>挂好网络共享之后用 Disk2VHD 抓了一个 VHDX 镜像并直接写入网络共享，齐活。顺便后来发现 Disk2VHD 好像支持 Windows 自带的 Volume Shadow Copy，如果用它的话压根就不需要非得专门拉起一个跑在内存里的环境了……</p>

<p>另外关于老口碑的工具 Ghost，草民近几年拿它备份系统就没有一次能成功还原的，不过如果只是 GhostExp 提取一些文件倒是也够用（但是又远不如 VHDX 之类的镜像可以直接用 qemu-nbd 之类的工具挂载取文件出来</p>

<h1 id="end">End</h1>

<p>某个巨头说 Vibe Coding 就是未来，写代码以后没什么意义了。今天洗澡的时候突然出现的一个额外的念头：</p>

<ul>
  <li>目前的 Vibe Coding 往往会引入大量的 spaghetti code，导致计算资源的显著浪费
    <ul>
      <li>感觉 Windows 11、Microsoft Edge 都算个例子：刚出那会儿还说得过去，后面是越来越烂
        <ul>
          <li>虽然也许是阿三的因素更多，但是阿三用 Vibe Coding 不是更那啥了</li>
        </ul>
      </li>
      <li>虽然不排除随着 AI 的发展，支持的 Context Window 真的足够大的话有可能实现全局最优
        <ul>
          <li>但至少现阶段不是这样，这一天什么时候到来也没人说得准</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>现在 C / C++ 之类没有 Runtime 成本的语言确实逐渐让位于 Go / Java 这类有 Runtime 成本的语言
    <ul>
      <li>但是也有 Rust 这种同样零 Runtime 成本的语言越来越火：不只是因为安全，也是因为 GC 带来的额外负担
        <ul>
          <li>这说明计算资源并不是（至少并不应该是）可以被无限浪费的，甚至在很多地方会成为决定性的瓶颈</li>
        </ul>
      </li>
      <li>防杠：tokio / 其它 asyncio 抽象引入的 Runtime 成本这里不划给语言
        <ul>
          <li>而且 libuv 之类的 asyncio 抽象也一样要引入少许 Runtime 成本</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>巨头们鼓吹这种说法或许也是 <a href="https://en.wikipedia.org/wiki/Andy_and_Bill%27s_law">Andy and Bill’s law</a> 的一种表现
    <ul>
      <li>除了直接销售 AI 需要的算力之外，Vibe Coding 导致的计算资源浪费，也间接促进了整个社会对算力的需求</li>
    </ul>
  </li>
</ul>

<p><img src="../assets/images/windows-but-nostalgia/0208.png" alt="" /></p>

<p>之前也提到过 AIGC 在信息流动效率上的效果值得商榷，个人觉得这个话题或许有异曲同工之处。以及另外看到的一个话题：Vibe 出来的 App 大量冲击 App Store 审核，用极低成本去搏 ARR，个人觉得很难说到底能带来多少价值</p>

<p>最后送大家一张非常有意思的图</p>

<p><img src="../assets/images/windows-but-nostalgia/513.png" alt="" /></p>

<p>下一篇应该会是之前说的服务治理相关的一些内容（本来应该是这个月，不过被这一篇插队了，那就下个月中旬左右的样子</p>]]></content><author><name>yichya</name></author><category term="Gadgets" /><category term="gadget" /><summary type="html"><![CDATA[Windows 11 用的真的很心烦。基于草民个人的一些痛点折腾了两个稍微老一点的系统，或许也能解决大家的一些特定需求]]></summary></entry><entry><title type="html">Vacation 2026.1</title><link href="https://www.yichya.dev/vacation-2026-1/" rel="alternate" type="text/html" title="Vacation 2026.1" /><published>2026-07-12T00:00:00+08:00</published><updated>2026-07-12T00:00:00+08:00</updated><id>https://www.yichya.dev/vacation-2026-1</id><content type="html" xml:base="https://www.yichya.dev/vacation-2026-1/"><![CDATA[<p>理论上来说这个系列上半年的部分应该是跟端午节岔开，比如今年端午在六月的话这个应该放在五月发出来的。但是去年十二月和今年一月都没折腾啥，二月回家过年的部分又写在 <a href="../vacation-at-home-2026">Vacation at Home 2026</a> 里面了，所以还是只好把六月的两个活放进去，然后排在七月上旬发（</p>

<h1 id="314-桃花故里">3.14 桃花故里</h1>

<p>正常应该是安排在春分所在周的周末，但今年气候偏暖，花期明显提前了许多。翻了几天小🍠，决定早一个礼拜过去。地铁二号线截断一截确实带来了比较明显的影响，从行政学院下来还得坐将近一个小时的公交车到「音乐广场临时站」，再换另一路公交车花半个多小时上山</p>

<p><img src="../assets/images/vacation-2026-1/031401.jpeg" alt="" /></p>

<p>今年的桃花节相关活动似乎还是跟以前一样安排在了春分那一周，叠加前面说的交通相关的影响，山上人并不多，突出一个轻松惬意。当然活动相关的一些展板之类的倒是已经摆出来了，今年的合作方是个搞 VR / AR（这玩意儿真的还有什么炒下去的意义嘛）+ AI 的，宣传物料也毫不意外充满了 AIGC 的味道。至于广场上的布置则是村糖会，虽然也没太搞懂这个概念，但至少比去年那个兜售字画的团伙靠谱多了（</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/vacation-2026-1/0314_l.jpeg" alt="" /></th>
      <th><img src="../assets/images/vacation-2026-1/0314_r.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>就算不需要这个</td>
      <td>肯定也需要这个</td>
    </tr>
  </tbody>
</table>

<p>至于去年规划中的洛带古镇，害，还是明年再说吧，也可以考虑跟今年一样利用上春分前后的两个周末（</p>

<h1 id="321-一天速通淡季九寨沟">3.21 一天速通淡季九寨沟</h1>

<p>去年有立过 Flag「桃花雪花二选一」，但雪花确实还是有些可遇不可求了。同样是翻小🍠发现那边山桃刚好到日子，那今年的春分就留给这个 Flag 吧，顺便也赶在淡季的尾巴验证一下一天速通这件事的可行性（旺季就不要想了，去原始森林的话时间包不够，但不去又着实血亏</p>

<p>这次应该说是很幸运的一次，天气非常给面子，就是晕车晕了个狠的。时间线大致如下：</p>

<ul>
  <li>草民选择早上 6:45 的高铁过去，到那边 8:30，8:45 大巴开车，10:45 左右下来</li>
  <li>11:00 刚好进门坐上车。然后又被分到右线（总共就去了四次，每一次都是右线就离谱</li>
  <li>淡季的箭竹海、熊猫海个人估计没啥看头所以砍掉了，如果能在前面压缩出来半个小时的话或许也可以不砍掉这部分</li>
  <li>11:30 到五花海，左边那一圈肯定是要绕的不解释，然后就是基本也没怎么停，半个小时转完</li>
  <li>12:00 到金铃海（还是找不到牌子），12:10 到珍珠滩瀑布，镜海直接跳过然后 12:30 到左线乘车点</li>
  <li>12:50 左右下车，因为天气太好 + 确实有点累了就多停留了一会儿，13:45 到五彩池，13:55 坐上回中心的车</li>
  <li>14:20 到诺日朗瀑布，14：45 到老虎海山桃打卡点，然后就是一路走到盆景滩坐车了，刚好 16:00 左右</li>
  <li>这次时间相对早于是回去的车还会从扎如寺过（虽然藏传佛教草民是真没兴趣），16:30 刚好出大门口</li>
  <li>回去的大巴选择了 17:30 左右到松潘站的。在车站旁边吃了个 KFC 补充能量，然后 17:38 开车，19:45 左右到</li>
  <li>草民把车票改签到 20:40 那趟，22:20 到成都东站，然后从从容容坐地铁回了家</li>
</ul>

<p><img src="../assets/images/vacation-2026-1/032101.jpeg" alt="" /></p>

<p>基于这次实践考虑可以优化的点：</p>

<ul>
  <li>早上的时间还有一部分可以压缩，比如坐更早的高铁或者拼出租车，乐观一点的话或许能节省接近半个小时</li>
  <li>淡季箭竹海从上次的经验来看没啥意义，就算不砍掉也不建议走里面那个更长的栈道，算上箭竹海瀑布和熊猫海，这一块至少得按一小时左右来估算；如果十点半左右能进大门的话就也可以不砍掉这部分，十一点还没进去的话就要谨慎了</li>
  <li>五花海还是无论如何都建议走完外圈；金铃海不去的话估计能省不到十分钟，个人的评价是都行，看等车的人多不多吧</li>
  <li>珍珠滩 + 瀑布也是一定要看完，镜海确实跳过比较好（虽然也一样估计最多省个十分钟，区别不大）</li>
  <li>然后就是速通基本不要考虑在诺日朗中心吃午饭，真没时间，自己带点面包之类比较好</li>
  <li>左线长海和五彩池没什么操作空间，避免浪费时间就行了</li>
  <li>最后是中线。如果把上面这些全按照比较激进的方式搞定，从左线下来应该是不晚于下午三点的，然后要以五点半之前出去作为目标来考虑中线怎么操作，主要是要不要走完芦苇海那一段（如果天气比较差比如有雨雪的话要留更多时间</li>
  <li>事实上中线两个半小时依然会比较紧，如果跟草民一样想大部分都走下来的话，可能两个大隐藏最多就只能挑一个了</li>
  <li>五点半出大门的话可以赶上六点出头的那一趟车，建议还是先买最晚（21:37 - 23:12）的车，到车站附近再视情况改签车票</li>
</ul>

<p><img src="../assets/images/vacation-2026-1/032102.jpeg" alt="" /></p>

<p>总之结论是：淡季一天速通完全可行，甚至可以不需要做什么取舍，只是时间表非常紧，几乎不会有多少休息的机会。下次再去那边无论如何都要选下雪的日子了，之后时间会比较灵活，考虑在那边多住几天都可以</p>

<h1 id="411-粼粼广州场">4.11 「粼粼」广州场</h1>

<p>过去小半年有那么两个不太好评价的事情（细节就不说了，闹的还挺大的，不难查到）。草民属于是很支持商业化的那种，毕竟这年头还在认真做古风的那些人能活下来就很不错了，总不能还跟十几年前那样天天用爱发电吧。后面这场线下相关的安排出来的时候草民还在想「有前面那两个事情的话，这次抢票说不定会容易一些」，事实上确实容易了一些（不过可能更多是因为选平台的一些神奇规则），但没想到机缘巧合，实际开出来居然是真·第一排，而且还很靠中间。本来贼高兴，但是当天还要同时抢黄黄上海场的票，而且开票时间还是 18 点和 19 点，只能在场地抢票了。结果可想而知，被大麦狠狠摆了一道，两天的 880 都没抢到只买到一张回流 680，还是一定程度上影响了心情</p>

<p><img src="../assets/images/vacation-2026-1/041101.jpeg" alt="" /></p>

<p>到了现场坐下之后发现其实视角也并不算特别好，要一直抬着头，而且经常被前面走来走去的摄影师挡住。但舞台效果着实相当不错，看的还是很爽的。相比起来音响就差点意思了，乐器的声音被人声狠狠压下去，除了动次打次很强之外其他细节几乎全没了</p>

<p><img src="../assets/images/vacation-2026-1/041103.jpeg" alt="" /></p>

<p>这次的歌单确实是让草民极其满意，《千秋令》《无题雪》还有最惊喜的《枕万梦》，加上跟司南一起的《天和山雨雪》（最近意外的火</p>

<p><img src="../assets/images/vacation-2026-1/041102.jpeg" alt="" /></p>

<p>因为歌单加成太强，总体来说也还算是比较满意的一次线下（当然如果黄黄的票顺利的话就更好了）。下一场赶快端上来吧，很急（</p>

<h1 id="52-都江堰的一个拼盘">5.2 都江堰的一个拼盘</h1>

<p>草民一向不喜拼盘，而且那几天中了流感着实很难受，假期还有个出差的安排，安排起来贼折腾。但是回过头一想，毕竟难得在家门口一次（其实都江堰也挺远的了），而且 2 号有竹桑在（甚至她的微博说要唱 8 首歌），看了一下去年买到的《竹梦令》，想了想决定还是去一趟吧。起初觉得下午四五点怎么也差不多了，就随便选了两点到六点回的车次。结果节前三天主办才公布具体的时间，一看竹桑排到晚上八点半才结束，那会儿再回去翻返程车票早没了，折腾了半天也只能勉强获得一张九点多一点开车的票，然后在高铁站发现群友们已经在组织合照了，哭死。其实来之前甚至做了「干脆考虑一下定个酒店」的设想，但第二天要赶飞机，实在是安排不过来，只得作罢，遗憾退场</p>

<p><img src="../assets/images/vacation-2026-1/050201.jpeg" alt="" /></p>

<p>至于当天的演出本身，去的时候是下午四点多，刚好赶上<a href="https://space.bilibili.com/655181/">少年霜</a>的时间，虽然听过的歌不多但还是有些印象的。然后竹桑上来之前还有一个做民乐的团队叫<a href="https://www.xiaohongshu.com/user/profile/557160b933f60c44ee21b5e4">「宫羽令」</a>（好像只有主理人🍠上的号相对活跃一点），整的还不错。至于场地，应该说音响效果挺好的，舞台也还行，可观众呆的地方就很难顶了，就是一片土地稍微平一下拉一点预制草皮过来，前一天还刚下了雨，真·一步一个脚印，一脚一个不吱声……</p>

<p>结合上面说的很难顶的时间安排，果然拼盘还是得谨慎啊。但是竹桑今年应该没有时间再参与线下了，算了来日方长，留个念想也好</p>

<h1 id="517-混入人类计划成都场">5.17 「混入人类计划」成都场</h1>

<p>时隔一年半故地重游。这次的舞台布置的真的很有意思，右边还有时尚小辣鸡展览（这次官方还专门组织了小辣鸡摊儿，但因为天太热等等一系列原因，草民去的时候已经比较晚了，印象最深的是一哥们拿了一叠翁法罗斯的海报发，笑死</p>

<p><img src="../assets/images/vacation-2026-1/051701.jpeg" alt="" /></p>

<p>另外有个插曲：入场抢号的时候秀动卡了半天没出来，一分钟不到后面再点进去已经 400 多号了（说起来上次也是四百多），着实没想到这么多人，当然这个位置倒是挺适合草民这种社恐人士的。签售的号倒是轻而易举抢到了个位数，所以说秀动对草民还真不错的</p>

<p><img src="../assets/images/vacation-2026-1/051702.jpeg" alt="" /></p>

<p>最后签名 +2（但因为太多了也没必要晒了说是</p>

<h1 id="619-入梦10-上海场">6.19 「入梦」1.0 上海场</h1>

<p>去年去了成都场的 0.0，真的是惊为天人。1.0 等了很久也没等到比较近的场次，本来五一有两场在北京，但因为暑假要安排去看🐰的关系不是很想跑两趟，加上上海是 1.0 收官场所以还是决定去这场。然后紧接着就是上面说的抢票惨败的事情了，还好进去之后发现最终的位置其实也还行，虽然靠后但视角还是很正的。另外这次这个场地非常巧，端午三天假，两天入梦一天混入人类，可惜草民只排了第一天的时间</p>

<p><img src="../assets/images/vacation-2026-1/061901.jpeg" alt="" /></p>

<p>1.0 在去年 0.0 版的基础上做了少许调整，比较明显的是会有小部分歌曲由演员而不是黄黄来唱。草民是没太理解这么做的目的是啥，不过倒是也没什么所谓，反正都是听过好多次的歌了。结束之后演唱会环节《红白》城市限定，不赖</p>

<p><img src="../assets/images/vacation-2026-1/061902.jpeg" alt="" /></p>

<p>然后还是要吐槽一下：草民觉得问题最大的还是场地，跟去年成都场比起来真的还是有差距</p>

<ul>
  <li>舞台有点无力吐槽，投影从背后往半透明的纱帘上打，看着都是重影的，真的很难受；当然条件所限，也就只能理解万岁</li>
  <li>黄黄的麦调的还行，其他演员的麦什么毛病都有：非常尖锐的高频、第三幕两个演员轮流没声音，这真不知道该怎么理解万岁</li>
  <li>其他的一些什么字幕偶尔抽风之类的细节都懒得提了</li>
</ul>

<p>总之还是静待 2.0，肯定还是会至少去一场的（希望真的是十月中旬在深圳，又可以公费看演出了</p>

<h1 id="627-流光之境成都场">6.27 「流光之境」成都场</h1>

<p>时隔不到一年又来见王子啦（而且又是紧挨着入梦）。这次歌单上有《东风第一枝》了好开心，买了新专辑更开心。王子的表现一如既往的优秀，真的完全不需要多夸，入坑绝对不亏就对了。当然又要吐槽一下音响，感觉共振比之前明显了好多……过几天🐰那场再仔细听一下</p>

<p><img src="../assets/images/vacation-2026-1/062701.jpeg" alt="" /></p>

<p>这次王子请了冥月和阿 yueyue 两位嘉宾。冥月老二次元了，翻了一下☁️关注也十多年了；阿 yueyue 这几年简直火的没边（然后当天才知道也是四川人，25 年暑假还来过这个场地巡演，虽然搭配的那位男歌手的风格草民不是很吃……总之以后再有线下的话高低捧个场</p>

<h1 id="75-拼个豆">7.5 拼个豆</h1>

<p>其实也是个网友见面会。图案为店铺老板（之一）的 B 站头像（链接就不贴了想找的话可以自己挑战一下</p>

<p><img src="../assets/images/vacation-2026-1/070501.jpeg" alt="" /></p>

<p>草民还真不知道拼豆是怎么莫名其妙又火起来的，草民上次玩都差不多是十年前了。不过偶然看到一个说法：跟现实中的大多数事情相比，拼豆属于为数不多的付出多少收获多少、很有确定性的事情之一；另外草民自己也还挺需要几个小时安安静静做一点可以放空大脑的事情</p>

<h1 id="disc">Disc</h1>

<p>例行晒碟（怎么感觉比预想中少</p>

<h2 id="音阙诗听一">音阙诗听《一》</h2>

<p>感谢虾滑老师撮合。22 年十月刚搬新家，又赶上疫情，不仅错过了同样在成都的线下，也错过了这张专辑，还好花了些钱补上了（</p>

<p><img src="../assets/images/vacation-2026-1/d1.jpeg" alt="" /></p>

<p>今年就是音阙诗听十周年了，去年凑了不少人唱团歌，今年几个视频平台也开始慢慢活跃起来了，希望年底能有一场专场吧（</p>

<h2 id="小红泡童话入侵计划">小红泡《童话入侵计划》</h2>

<p>其实严格来说不熟，也忘了怎么刷到的了，看着挺顺眼，歌也挺不错，就支持了一个简装版</p>

<p><img src="../assets/images/vacation-2026-1/d2.jpeg" alt="" /></p>

<p>这个专辑展开的方式设计的真的还挺巧妙的，但是拍起来有点麻烦，可以看<a href="https://www.bilibili.com/opus/1168090023482884097">官图</a></p>

<h2 id="云之泣独白">云之泣《独白》</h2>

<p>有签名！非常难得的运气爆表的一次</p>

<p><img src="../assets/images/vacation-2026-1/d3.jpeg" alt="" /></p>

<p>看到微博抽奖平台的通知的时候都来不及填地址了，哭死。还好私信过后顺利解决，不然真要大腿拍断</p>

<p><img src="../assets/images/vacation-2026-1/d30.jpeg" alt="" /></p>

<p>当然草民自己也早早下单了一张，然后拍立得有三张重复的（也算是欧气守恒定律吧</p>

<h2 id="小柔清醒梦">小柔《清醒梦》</h2>

<p>懒得再拍一张没有 PocketTerm35 的图了（</p>

<p><img src="../assets/images/vacation-2026-1/d4.jpeg" alt="" /></p>

<p>小柔的两张碟实体都没什么问题，那就忍不住要问了：xys 到底什么时候能认真一点对待🐰的东西</p>

<h2 id="玄觞流光之境">玄觞《流光之境》</h2>

<p>签名 +1（过几天还会再有一张，这次一定要签在里面</p>

<p><img src="../assets/images/vacation-2026-1/d5.jpeg" alt="" /></p>

<p>顺便送了🥚一张（当然过程中又有一些比较难绷的事情，笑死</p>

<h2 id="2026-拜年纪礼盒">2026 拜年纪礼盒</h2>

<p>刚好这几天<a href="https://www.bilibili.com/video/BV1WeZLBtEW1">《辟浪》</a>终于冲到 100w 播放了（真是不容易啊</p>

<p><img src="../assets/images/vacation-2026-1/d6.jpeg" alt="" /></p>

<p>其实两千二百三十三（雾）这个带了过分明显的生肖元素的人设总感觉怪怪的。。。。。。不如不加</p>

<h2 id="还有一个昔涟的戒指">还有一个昔涟的戒指</h2>

<p>确实过分美丽了，一起晒一下</p>

<p><img src="../assets/images/vacation-2026-1/cyrene.jpeg" alt="" /></p>

<p>编号是随机的，草民甚至不是买的预售，但是发货贼快，看来是做了不少，挺好</p>

<h1 id="end">End</h1>

<p>暑假（并没有假）的安排挺多：</p>

<ul>
  <li>七月三场线下，都已经定下来了
    <ul>
      <li>🐦（7.18 成都）</li>
      <li>王子（7.19 广州）</li>
      <li>🐰（7.25 成都）</li>
    </ul>
  </li>
  <li>八月两场线下，不过都挤在一个周末，倒是刚好可以省下去帝都的交通费用，顺便回家呆两天
    <ul>
      <li>Two Steps From Hell（8.21 北京；直接冲了最贵的 VIP，1580 确实是有点奢侈了）</li>
      <li>🐰（8.22 北京；不得不说这回恐怕是真难讲会不会有下一次了，无论如何还是支持一下）</li>
      <li>另外还有几个选项但是目前都不是那么想去：董真（8.1 上海），🐰（8.8 广州），王子（8.8 南京），鸾凤鸣（8.8 苏州）</li>
    </ul>
  </li>
  <li>再后面大概率会去的
    <ul>
      <li>董真那个《创世回响》也官宣有成都的场次了，这个肯定会去</li>
      <li>Hans Zimmer 成都 9.30 的一个场子（票价太贵了，杭州场内场 2580 就离谱，应该就随便买一个便宜的看台票听听）</li>
      <li>入梦 2.0 今年可能有一场（有人挖出来深圳定在 10.10 / 10.11，不过目前还不太确定具体细节，如果真的是的话就直接去）</li>
    </ul>
  </li>
</ul>

<p>下一篇应该是给一些新朋友做的一个服务治理相关的科普，预计安排在八月中旬左右。最后希望下半年还能有一场粼粼吧（</p>]]></content><author><name>yichya</name></author><category term="Play Around" /><category term="life" /><summary type="html"><![CDATA[理论上来说这个系列上半年的部分应该是跟端午节岔开，比如今年端午在六月的话这个应该放在五月发出来的。但是去年十二月和今年一月都没折腾啥，二月回家过年的部分又写在 Vacation at Home 2026 里面了，所以还是只好把六月的两个活放进去，然后排在七月上旬发（]]></summary></entry><entry><title type="html">Gadgets (2026)</title><link href="https://www.yichya.dev/gadgets-2026/" rel="alternate" type="text/html" title="Gadgets (2026)" /><published>2026-06-21T00:00:00+08:00</published><updated>2026-06-21T00:00:00+08:00</updated><id>https://www.yichya.dev/gadgets-2026</id><content type="html" xml:base="https://www.yichya.dev/gadgets-2026/"><![CDATA[<p>今年端午去上海入梦 1.0 收官场。令人非常难受的是果然被大麦摆了一道，不过还好位置不算太差劲，虽然稍微靠后一点但还好在中间区域，而且听歌为主也不是特别在乎位置吧。当然这个场地跟之前成都那一场比确实差点意思（Vacation 2026.1 再细说</p>

<h1 id="music">Music</h1>

<p>过去一年买了三款耳机和一个 MP3，放一起好了</p>

<h2 id="redmi-buds-7s">Redmi Buds 7S</h2>

<p>去年的 <a href="../gadgets-2025">Gadgets (2025)</a> 里面就提过想买，一方面还是对降噪还是有点需求（主要是想着骑车下班路上听一点鉴证内容），当然也有一些原因是去年买的那个 99 块钱的功能缺失确实有点多而且连接不太稳定。原价 199，蹲了一阵儿 169 左右入手</p>

<p><img src="../assets/images/gadgets-2026/redmi_buds_7s.jpg" alt="" /></p>

<p>实际体验下来：</p>

<ul>
  <li>音量很小，就算在办公室这种并不怎么吵闹的地方也要顶在 HyperOS 默认音量限制的上限听</li>
  <li>降噪拉完了，周围噪音稍微大一点的时候就会自己莫名其妙的关掉，连比如骑车、飞机、地铁之类的最常见的情况都搞不定；结合上面音量小的问题，结果就是下班路上根本什么也听不清</li>
  <li>音质调的也不是很好（感觉跟 AirPods 4 那种两头翘的曲线刚好反过来），甚至应该说远远不如去年买的那个 99 块的，结果就导致光拿来听歌也几乎没法用。下面是用 HyperOS 自带的个性化听感调出来的一个曲线，也就是说需要叠一个两头翘的 EQ 才比较顺耳</li>
</ul>

<p><img src="../assets/images/gadgets-2026/curve.jpeg" alt="" /></p>

<p>总之又是比较踩坑的一次，虽然这个价格摆在这里吧也不好说太多</p>

<h2 id="airpods-4-anc">AirPods 4 ANC</h2>

<p>不到 1100 买到。各方面都不错，也没有上面那个自动关掉降噪的问题（当然价格确实也摆在这里</p>

<p><img src="../assets/images/gadgets-2026/airpods4.png" alt="" /></p>

<p>这个应该就没有什么特别需要额外介绍的了，总之就是评价为你大爷还是你大爷.jpg</p>

<h2 id="水月雨-nicebuds">水月雨 NiceBuds</h2>

<p>性价比确实相当爆炸。黑白各买了一条支持一下本地企业，白的放公司，黑的放家里</p>

<p><img src="../assets/images/gadgets-2026/nicebuds.jpeg" alt="" /></p>

<p>虽然 AirPods 4 听习惯了确实感觉这个有些差距</p>

<ul>
  <li>主要也还是觉得两头不够翘（？</li>
  <li>送的海绵套儿拿下来的话低音就基本没了，装上的话高音又显得不足，一定要选一个的话还是建议留着</li>
</ul>

<p>反正 16 块钱要什么自行车，能响就行了</p>

<h2 id="echo-nano">Echo Nano</h2>

<p>之前零零散散买了好几个 MP3 都或多或少有点不满意，这次难得见到一个传统形态的新产品，于是果断入手</p>

<p><img src="../assets/images/gadgets-2026/echo_nano.jpeg" alt="" /></p>

<p>顺便做了一个一直想做的事情：用 AI 把 iPod Shuffle 里面的歌提取了一遍（<a href="https://github.com/yichya/itunesdb_parser">AI 真好用</a>）。粗略用下来：</p>

<ul>
  <li>质感不错，比较可惜的是自带存储约等于没有，还得塞个 TF 卡，但是 TF 卡又跟很多类似设备一样会冒个尖尖出来</li>
  <li>音质还行吧，虽然有很多项目可以调，什么陡降缓降啥的，但听着也没听出啥区别</li>
  <li>随机播放也是一坨，后退、前进的顺序还是会乱
    <ul>
      <li>往回退一首歌可以，多退一首就不知道跑到哪儿去了；此时切下一首也一样会完全随机</li>
      <li>甚至不知道会在哪些时候触发这个 shuffle 的操作，咱就是不知道这个东西到底难做在哪</li>
    </ul>
  </li>
  <li>更新了一次固件之后 FAT32 直接炸了，不过换成 ExFAT 之后少了很多小毛病
    <ul>
      <li>但是又比较难绷的是内置存储如果要升级固件的话必须还得是 FAT32；固件升级倒是还挺积极的，买来一个来月推了两次</li>
    </ul>
  </li>
</ul>

<p>顺便还发现一个事情是之前买的 iriver 太久没用，结果电池鼓包把后盖都撑开胶了 = = 真的是超级无敌辣鸡</p>

<h1 id="network">Network</h1>

<p>话说回来今年的日常 NAS 迭代记录该什么时候整呢（</p>

<h2 id="小米-be6500-pro基本实锤是缩水版">小米 BE6500 Pro（基本实锤是缩水版）</h2>

<p>家里小米的开关什么的比较多所以买了中枢网关，但之前跟老 NETGEAR 路由器一块儿都扔在次卧，一大堆线乱成一团；后面看见这款无线路由器自带中枢，一直很心动。刚好去年夏天爹妈回家长住，把老路由器直接寄回去，然后就跑了一趟楼下的小米之家。本来看生产日期 2025.2 应该不是缩水版，于是激情下单，店员给了一个券儿之后 549 到手；后面又发现<a href="https://www.acwifi.net/31949.html">这里</a>缩水版的包装和草民买到的一样，光凭包装也不太能完全确定，但好在里面还提供了两个重量数据，于是草民一称，1.6KG……那没救了。下图来自 <a href="https://www.acwifi.net/27123.html">acwifi</a>，缩水版会略有不同仅供参考</p>

<p><img src="../assets/images/gadgets-2026/be6500.jpg" alt="" /></p>

<p>买来之后发现最大的坑：太高，刚好塞不进电视柜下面（差了大概不到 1cm），只好跟之前的 NETGEAR 一样先放在次卧</p>

<p>这玩意儿的 2.4GHz 确实是不怎么样（这还是缩水版据说优化了之后的结果，那没优化的得有多烂啊 = =），扔在次卧就导致其他房间的几个 2.4GHz 连接的灯经常断开连接，主卧的显示器挂灯尤其严重，颇令人头疼；5GHz 倒是没啥毛病，比之前的 NETGEAR 好不少。买了 12V 拆分线之后腾出来一个插座，就扔电视后面了，没想到效果意外的好，几个灯的连接问题轻松解决，最远的次卧吸顶灯也有 -70dB 左右，完全够用。顺便还优化了 NAS 跟 Volterra 的通信，当然这个也有点复杂，涉及到 multicast DNS 的一大堆坑，之后找时间细讲</p>

<p>用了差不多一年，总体感觉还是挺好的。自带中枢网关很方便，那部分也可以跟系统固件本身分开更新，功能上大致也没什么问题。至于缩水版砍了散热之类的影响，印象中刚买来的时候貌似是有过一次死机，但后面设置了每天定时重启 + 升级过一两次固件之后就没再出过什么问题，也经历了一年最热最冷的时间段，所以评价为确实没啥大毛病。至于推不推荐，按说买新不买旧，但是 BE7200 Pro 提升不大贵快一倍，BE10000 Pro 更是完全买不起；BE6500 Pro 现在倒是四百出头，但是缩水这事儿……膈应的话还是买个普通一点的搭配中枢网关吧</p>

<h2 id="小米-be3600-25g-版">小米 BE3600 2.5G 版</h2>

<p>小竹 140 收来发现不能刷 OpenWrt 就不想要了，遂一百块拿来留着备用。下图也是来自 <a href="https://www.acwifi.net/26827.html">acwifi</a>，日子比较久了应该不太可能又是<a href="https://www.acwifi.net/34321.html">缩水</a>的</p>

<p><img src="../assets/images/gadgets-2026/be3600.jpg" alt="" /></p>

<p>它的 2.4GHz 和 5GHz 表现都挺好的。被上面那个 2.4GHz 的问题搞的焦头烂额的时候试过把它扔在客厅当无线 Mesh 子节点，效果应该说相当不错，不过把 BE6500 Pro 从次卧挪到电视后面之后就用不到再开 Mesh 了，光扔在柜子里吃灰也有点浪费，八月拿回石家庄用刚刚好</p>

<h2 id="12v-55-x-25-拆分线">12V 5.5 x 2.5 拆分线</h2>

<p>光猫和 IPTV 机顶盒各占一个宝贵的 220V 插孔，实在是太浪费了。后面为了给 BE6500 Pro 腾一个位置出来买了这个，效果相当不错，有效释放弱电箱 / 电视柜等地方的电源插座，还能省一点电（当然开关电源效率一般都挺高的所以也省不了多少），强烈推荐。</p>

<p><img src="../assets/images/gadgets-2026/13.jpg" alt="" /></p>

<p>当然用它的话要关注一下线的长度以及使用的电源的功率，草民原来光猫和 IPTV 机顶盒应该都是 12V1A（或者 1.25A，具体多少忘了），这里换上的是一个老母鸡（WD 元素盘）用的 12V3A 电源，反正肯定比原来两个加起来多，目前用了差不多半年，完全没出过什么问题</p>

<h2 id="qcncm865-无蓝牙版--mt7927">QCNCM865 无蓝牙版 + MT7927</h2>

<p>两个比较新的卡，不过因为各种各样的问题都没用上</p>

<p><img src="../assets/images/gadgets-2026/cards.jpeg" alt="" /></p>

<p>这个特殊版本的 QCNCM865 在 R86S 上完全认不出来，龙芯上倒是没问题，只能怀疑是某个供电引脚之类的定义不完全准确吧。不过在龙芯上用着似乎信号好一些，但还是一样 Ping 延迟偏高，大概会留到后面把 R86S 换掉的时候用上（然后内存价格就起飞了，根本换不起</p>

<p>MT7927 暂时没驱动 &amp; 据说固件的 AP 模式效果很烂。买来 160 块算正常价格，先扔着吧，什么时候驱动好了再拆开包装试试</p>

<h1 id="groceries">Groceries</h1>

<p>除了下面提到的还有 Switch Lite 和 iPhone SE 的电池，都还行，但确实也没什么可晒单的</p>

<p>顺便 iPhone 16 Pro Max 的电池健康终于掉了三个点，照这个速度感觉说不定能等到 iPhone 20 再换了（</p>

<h2 id="logi-bolt-type-c-接收器">Logi Bolt Type-C 接收器</h2>

<p>强迫症解决方案 +1，可以腾出背后的一个 A 口接耳机的发射器。确实很好用，而且感觉比之前 Type-A 的稳定性也好一些</p>

<p><img src="../assets/images/gadgets-2026/c.jpeg" alt="" /></p>

<p>另外 MX Master 3S 的主滚轮有点不顺畅了，拆开清理发现轮子下卡了一大团 = = 然后满血复活，这个鼠标还是挺易于维修的就是得自己买一套脚贴；以及如果手很容易出油的话，最好每年换一套防滑贴</p>

<h2 id="偏振镜">偏振镜</h2>

<p>有用，不多，<a href="../vacation-2025-2">Vacation 2025.2</a> 里面提过没 Diff 成，下次一定。图也懒得发了，基本上都没啥区别</p>

<h2 id="四姑娘山捡到的红点">四姑娘山捡到的红点</h2>

<p>据说是装在相机上用来打鸟的时候快速构图的，有点意思</p>

<p><img src="../assets/images/gadgets-2026/dot.jpg" alt="" /></p>

<p>实际捡到的是个黑色的，上图来自官方 <a href="https://www.bilibili.com/video/BV1QS411A7Yw">BV1QS411A7Yw</a></p>

<h2 id="mamen-的补光灯">MAMEN 的补光灯</h2>

<p>趁双十一入手的。本来想找个眼熟一点的牌子，结果看来看去最终还是选了这个，不过东西没啥毛病挺好用的</p>

<p><img src="../assets/images/gadgets-2026/light.jpg" alt="" /></p>

<p>当然了买它主要还是为了拍塑料小人，应该说确实观感好很多</p>

<p><img src="../assets/images/gadgets-2026/figure.jpeg" alt="" /></p>

<p>这个「忘归人·加多宝版」猛一看差不多跟之前买的符玄差不多一样大了（实际上都不是一个比例的手办</p>

<h2 id="小米体脂秤">小米体脂秤</h2>

<p>一步到位的八电极版（不知道为什么手柄上要放四个）</p>

<p><img src="../assets/images/gadgets-2026/scale.jpg" alt="" /></p>

<p>折腾一年 BMI 降了一点但还是不太够，体检也是毫不意外的中度脂肪肝，害</p>

<h2 id="翰林阅-free2-高矮轴两个版本">翰林阅 Free2 高矮轴两个版本</h2>

<p>起初是为了把七月份买的两个🐰键帽用上，以及清理一下🐶东豆子买的矮轴版</p>

<ul>
  <li>自带的矮青轴很烂，电路导通竟然在手上感受到段落感之前，这得是有多大病才能设计出这种轴出来</li>
  <li>买了两个不同品牌的矮青轴，结果发现竟然完全不通用，甚至这两个跟自带的那个也都不通用
    <ul>
      <li>一个引脚位置都对不上，跟正常高度的轴体的引脚位置也不一样……咱就说这玩意儿自立门户的意义是什么</li>
      <li>另一个被下面的 LED 挤开了一点，但至少触发的位置没什么毛病</li>
    </ul>
  </li>
</ul>

<p>总之现在就完全是当作解压玩具按着玩儿罢了，根本不会真的用来翻页</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/gadgets-2026/free2l.jpeg" alt="" /></th>
      <th><img src="../assets/images/gadgets-2026/free2h.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>矮轴版</td>
      <td>高轴版</td>
    </tr>
  </tbody>
</table>

<p>至于为什么又买了个高轴版？核心原因当然是上面吐槽的轴太烂还不能换，更直接的原因则是前几天一不小心掉地上直接把超声波焊接的后盖砸开了，虽然也还能用但是有一个 RGB 灯挂了（说的就好像真的会用一样</p>

<p>高轴版确实按起来爽多了，但是比较难绷的是官方把反转固件撤了（虽然上面也说了根本不会真的用来翻页）；另外也买了几个半高轴试了试，但是半高轴还需要专门的键帽，把🐰这个装上去的话会卡在轴边上，而且也没有普通轴的触底感，总体来说不如普通轴按起来舒服</p>

<h2 id="usb-a---c-转换头">USB A - C 转换头</h2>

<p>上面那个 Logi Bolt Type-C 接收器直接插在 NUC 的 Type-C 口上，会在事件查看器里面莫名其妙的看见一大堆可修正错误，然后有的时候修正着修正着就修不正了，鼠标就没反应了。用耳机的转接头转一下插在 A 口上就不会有问题，所以买了个这个顶上</p>

<p><img src="../assets/images/gadgets-2026/ac.jpg" alt="" /></p>

<p>后来发现是 <a href="https://en.wikipedia.org/wiki/Active_State_Power_Management">ASPM</a> 的问题。Skull Canyon 的 Type-C 接口是雷电 3，被 PCI-E 相关的东西管着倒是也很合理（包括 UEFI 里面需要设置启动时初始化 ThunderBolt 3 控制器相关的两个选项，才能在 UEFI 设置里面用鼠标），关了之后一切恢复了正常。感觉 ASPM 这玩意儿好像除了捣乱之外啥用也没有，要么断联要么降速的。这个转接头倒是还可以给 CanoKey Canary 用，所以也不亏</p>

<h2 id="小米双口-u-盘">小米双口 U 盘</h2>

<p>就如 <a href="../vacation-at-home-2026">Vacation at Home 2026</a> 说的那样，过年回家买的。64G 要 129，128G 要 229……不得不复读一遍：AI 带来的生产力提升还没怎么感受到，生产工具价格倒是狠狠涨了一大波。不过也是时候把钥匙环上面原来那个十多年前捡到的小 U 盘换下来了</p>

<p><img src="../assets/images/gadgets-2026/u.jpg" alt="" /></p>

<p>这个 U 盘用的方案好像还挺靠谱的 <a href="https://www.bilibili.com/video/BV1HkD6BCEKS">BV1HkD6BCEKS</a>，实际用起来 AC 两个口确实也挺方便</p>

<h2 id="通用螺丝">通用螺丝</h2>

<p>Cherry MX 8.0 的 ESC 键似乎手感变软了，而且就只有这一个键这样。拆之前对着保修贴纠结了半天，然后草民竟然没找到是在哪个平台买的，中间还搞丢了两个螺丝，于是挑了半天买了一盒常用螺丝，结果发现没一个能对上，笑死</p>

<p><img src="../assets/images/gadgets-2026/screw.jpg" alt="" /></p>

<p>还好后来又把那两个螺丝找到了。轴当然毫不意外的都是焊死的，虽然大概也可以试试不取下来的同时打开轴体，但是等它坏了再说吧</p>

<h2 id="转速计">转速计</h2>

<p>i160 的水冷系统工作不正常有些日子了，体现为 iCUE 上显示的 CPU 那一侧水冷液的温度会在一瞬间从三四十度窜到六十多度，但与此同时 CPU 温度并没有什么变化，还是维持在大概四五十度的状态；这个状态有时候持续可能几十秒，有时候可能连着半个多小时都不恢复</p>

<p>它回报的水泵转速也持续降低了，于是想确认一下是真的转速降低了还是回报的数据有问题，为此又买了转速计观察顶部风扇转速（这俩从观察的结果来看，几乎可以肯定正相关</p>

<p><img src="../assets/images/gadgets-2026/spin.jpg" alt="" /></p>

<p>但是这玩意儿最终也没用上</p>

<ul>
  <li>iCUE 回报的转速比转速计测出来的快差不多 5%，还不太稳定，根本就没法用来参考</li>
  <li>现在那套水冷系统也很难弄回到比较正常的状态上了，虽然从 CPU 的监测来看，用起来倒是还没啥问题</li>
</ul>

<p>不过有一个很奇怪的发现是 CPU 冷却液温度竟然是和前面板 LED 灯亮度联动的 = = 跑了一小会儿 Prime95 确定散热没问题，那再抽风就临时调低亮度到 66%，后来发现 66% 也不一定行就干脆固定到 33% 了，反正也没必要搞那么亮</p>

<p>所以这个只能留着以后再折腾了。现在硬件价格也是高位中的高位，近期也不太会考虑换平台（AI 还是坑啊</p>

<h2 id="anker-pencil">Anker Pencil</h2>

<p>又是小竹换下来的，但是实话说草民也用不上（好像绝大多数人买 iPad 的笔都会吃灰吧</p>

<p><img src="../assets/images/gadgets-2026/pencil.jpg" alt="" /></p>

<p>随便从某宝某店找了一张图。以及要说明的一点是这个笔并没有压力感应，只有倾斜感应</p>

<h2 id="pocket-term-35">Pocket Term 35</h2>

<p>之前买的 uConsole 是在 Compute Module 的基础上做扩展，直接放原版树莓派进去的这个形态的产品等了这么久才出来一个，而且价格还相当贵，算上之前买来就一直吃灰的 Pi 4 和 TF 卡的价格能上千了（AI 全责</p>

<p><img src="../assets/images/gadgets-2026/35.webp" alt="" /></p>

<p>发货也贼慢，四月底下单等到五月下旬才收到，不过感觉确实还不错，吃灰的 Pi 4 可以拿出来再发挥点作用了。简单体验：</p>

<ul>
  <li>适配比 uConsole 靠谱多了，不需要魔改内核，只需要在原版系统的基础上叠几个 Device Tree 的 Overlay 配置一下
    <ul>
      <li>它的硬件设计就很好，屏幕走 HDMI，键盘走 Type-C 接口的 USB Host，触摸屏是从 Pi 主板反面用顶针怼上去的</li>
      <li>Overlay 只需要配置两个，一个是官方系统自带的 Type-C USB Host，另一个是这个产品提供的 I2C 触摸屏</li>
      <li>也试了一下非官方的 Ubuntu Server + MATE，键盘正常，触摸屏出不来。其实触摸屏也走 USB 的话会更好</li>
    </ul>
  </li>
  <li>键盘一般般，灵敏还算灵敏，但是按键手感不咋样，而且没有背光，默认布局也是一坨
    <ul>
      <li>这个键盘是 CircuitPython 实现的（硬件方案不太清楚），布局完全是用 MicroPython 定义的，确实也可以自己魔改</li>
    </ul>
  </li>
  <li>官方系统对触摸屏的适配一般，Wayland 下面的 Chromium 不能滚动，戳屏幕偶尔会进入只能移动指针不能触发点击的情况
    <ul>
      <li>然后这个键盘的 L R A B X Y 这几个键在默认布局下又真的只是用来输入这几个字母的，纯粹为 RetroPie 设计的</li>
      <li>感觉这一点上 uConsole 选择的轨迹球方案确实比触摸屏方案要好一些，小尺寸适配和兼容性都更靠谱</li>
    </ul>
  </li>
  <li>Pi 的功耗和发热对于一个移动设备来说确实还是太高，而且几乎没有什么电源管理的能力，就算 5000 mAh 的电池也顶不住多久
    <ul>
      <li>uConsole 的功耗也好不到哪里去，但是电池选择了 18650 的标准方案，比这款的软包电池确实也要靠谱一些</li>
    </ul>
  </li>
  <li>从扩展的角度来讲 uConsole 给了 4G 模块，这款如果是用 Pi 4 的话没有什么靠谱方案，Pi 5 还可以从 PCI-E 上想想办法
    <ul>
      <li>对于移动设备来说其实还挺有意义的，能把这个问题解决的话基本可以说除了功耗之外会是个相当不错的移动终端</li>
    </ul>
  </li>
</ul>

<p>总之用下来的评价是如果手里有吃灰的 Pi 4 / 5 想利用一下的话买一个玩玩也行，但是现在 Pi 的价格贵上天，专门买一套不值</p>

<h1 id="end">End</h1>

<p>虽然发出来已经是夏至了，但是也在端午假期，所以还是送大家一首《山鬼》吧（以及一个多月之后又要去见🐰了真不错啊</p>

<iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=684707134&amp;bvid=BV1jU4y117YR&amp;cid=738603432&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" height="600px" width="100%"></iframe>]]></content><author><name>yichya</name></author><category term="Gadgets" /><category term="gadget" /><summary type="html"><![CDATA[今年端午去上海入梦 1.0 收官场。令人非常难受的是果然被大麦摆了一道，不过还好位置不算太差劲，虽然稍微靠后一点但还好在中间区域，而且听歌为主也不是特别在乎位置吧。当然这个场地跟之前成都那一场比确实差点意思（Vacation 2026.1 再细说]]></summary></entry><entry><title type="html">Vacation at Home 2026</title><link href="https://www.yichya.dev/vacation-at-home-2026/" rel="alternate" type="text/html" title="Vacation at Home 2026" /><published>2026-04-08T00:00:00+08:00</published><updated>2026-04-08T00:00:00+08:00</updated><id>https://www.yichya.dev/vacation-at-home-2026</id><content type="html" xml:base="https://www.yichya.dev/vacation-at-home-2026/"><![CDATA[<p>难得回家一趟，额外记录一点东西。原计划 3.1 发，但因为被各种各样的事情占满时间，最终只能清明发了（</p>

<ul>
  <li>2.12 收拾收拾，晚上赶火车</li>
  <li>2.13 天亮到家，上午补觉，下午去新房子看了一眼并购买本地品牌炸鸡一份</li>
  <li>2.14 剪毛并又购买本地品牌炸鸡一份，下午见了姥爷，晚上搬了一堆东西</li>
  <li>2.15 前一天贼累于是未安排出门活动，时隔多年 My Own Hackday</li>
  <li>2.16 除夕于是未安排出门活动，晚上认真看叔叔的年货并锐评</li>
  <li>2.17 真·拉电线，还算顺利</li>
  <li>2.18 出门小逛，未做明确规划，导致浪费颇多时间</li>
  <li>2.19 出门小逛，晚上收拾了在家里留下的最后一些东西</li>
  <li>2.20 白天探望亲戚，晚上赶火车</li>
  <li>2.21 上午到成都，下午整理，晚上约饭</li>
  <li>2.22 完善了一下 My Own Hackday 的相关内容，晚上发了出来</li>
  <li>2.23 调整调整准备复工</li>
</ul>

<p>除了 2.15 算是摆了一天（实际上也在搓 <a href="../self-hosted-2/">Custom Valine Server</a>）之外真是够忙的。下面的顺序就比较随意了，梦到哪块说哪块</p>

<h1 id="冬天回家">冬天回家</h1>

<p>这次跟去年回去那次一样选了动卧，但因为没什么经验的关系把暖气开太热了，结果还是完全没睡好 = =</p>

<p>选的车次跟上次差不多，于是也是早上六点不到就出站，天都没亮包没地铁又懒得打车，还好也不算太冷，就还是骑了个电动小蓝回家</p>

<h1 id="把老伙计拉起来">把老伙计拉起来</h1>

<p>回家之前对网络的规划是 MicroPC + 树莓派，甚至也考虑了搞不好网络就认真弄 Custom Valine Server，但突然又想起来家里还有个退下来的老伙计可以支撑一下。事实证明老伙计依然靠谱，可惜硬盘位彻底寄了（去年八月份回来那次其实就坏了，当时还以为是什么偶然问题，这次又弄了弄还是没救回来），草民倒是考虑到了这一点，于是出发前就准备了个 U 盘 dd 进去了一个 OpenWrt，然后又因为下图这个摆法多少有点让人不踏实，于是在存储价格最高的时候买了个小米的 U 盘（买回来之后才又想起来家里还有一个更早之前 DIY 的 U 盘能用</p>

<p><img src="../assets/images/vacation-at-home-2026/ap1.jpeg" alt="" /></p>

<p>话说回来，这玩意儿插上就能直接用这件事，后面仔细一想甚至有点离谱，但凡有一个环节没搞定，草民都得去想办法买个键盘救火：</p>

<ul>
  <li>随手写了一个平时用的 x86_64 镜像，但这个镜像完全是给虚拟机准备的，虽然一直带着 USB 和 ath10k 驱动，但很久没验证过了</li>
  <li>老伙计的板子电池恐怕是早就没电了，而它的 UEFI 固件里面的 Secure Boot 又默认是关掉的，这样才能顺利启动没有签名的系统</li>
  <li>虽然这年头 USB 启动的兼容性早就不像十几二十年前那么令人头秃，但也不是随便哪个盘都能保证拉起来，这点草民也完全没验证</li>
</ul>

<p>虽然用起来效果也就差强人意，主要还是家里的便宜宽带是真的很烂，以及之前拿回去的那个 NETGEAR 洋垃圾信号不算理想，整个链路串起来算是勉勉强强能做事吧。这次没有把小竹那里收来的小米路由器带来，确实是个错误。今年也许还有机会，下次一定</p>

<p><img src="../assets/images/vacation-at-home-2026/ap2.png" alt="" /></p>

<p>另外总觉得分流问题很大，明明用的是一样的系统、一样的配置，唯一的区别是这边没搞好 IPv6，但是手机和平板的直连判定几乎全部失败，怎么想都觉得非常奇怪。在家没顾上认真折腾，回来之后又对分流进行了一些思考：感觉很多设备（尤其是手机和平板这种很不透明的设备）是不需要甚至不应该使用双白方案的，所以也额外支持了黑 GeoIP + 白 GeoSite 方案，目前来看效果更好一些，下次回家再试试看</p>

<h1 id="听了一年多的-vup-竟然是真老乡">听了一年多的 VUP 竟然是真·老乡</h1>

<p>购买本地品牌炸鸡的时候晒了个单，然后非常震惊的发现草民跟⛄️的距离可能只有小几公里远</p>

<p><img src="../assets/images/vacation-at-home-2026/local.png" alt="" /></p>

<p>更具体的肯定是不敢多问了，真怕一不小心就给人开了</p>

<h1 id="叔叔的年货预告与一些不吐不快">叔叔的年货·预告与一些不吐不快</h1>

<p>今年的预热力度似乎比去年还要大一点，甚至还有 <a href="https://www.bilibili.com/video/BV1mmF6zkEra/">BV1mmF6zkEra</a>，估计也是官方觉得去年那几首歌的数据实在是太差？但感觉从预热漏出来的这一点儿看，今年还是不怎么能达到之前噩梦在的那会儿的水准，希望正片出来能扭转一下草民的看法，再不行的话干脆左转<a href="https://www.bilibili.com/festival/VSF2026live?bvid=BV18zF7zSEoC">虚拟歌手贺岁纪</a>去了。VSF 今年算是第一次认真从头看到尾，其中颇有几首挺对胃口，但也不得不说确实不是年年都能像 2022 年有<a href="https://www.bilibili.com/festival/VSF2022live?bvid=BV1mb4y1E7RF">《扬旗鸣鼓》</a> 这种级别的作品（当然草民更推荐 2023 年 AI 翻调过的 <a href="https://www.bilibili.com/festival/VSF2023live?bvid=BV14Y411R7hv">BV14Y411R7hv</a>），甚至像 2023 年那样憋出<a href="https://www.bilibili.com/festival/VSF2023live?bvid=BV1Zv4y1C7Ty">《到深空更深处去》</a>这种绝对的大招</p>

<p>翻了一下几个预热视频的评论，就说白了听个纸片人唱歌这玩意儿也整这种粉圈一套是真让人觉得很烦，还有人吹什么触底反弹不如回去看看数据呢？尤其去年，播放量跟之前比只有两三成不说，二创更是少得可怜，甚至现在很多小 V 在直播间里面唱点年货歌还是《天知河》《不问天》，就这还回去踩噩梦那会儿的团队也真的是脸够大了。好在确实是有很多人跟草民一样觉得噩梦那个时代的歌做的真的很不错</p>

<p><img src="../assets/images/vacation-at-home-2026/0207.png" alt="" /></p>

<p>另外也锐评一下歌姬。草民五维吃得多有六成原因是真的被某家粉丝恶心到了（顺便 <a href="https://www.bilibili.com/opus/1168356053745664023">2.12 ilem 的动态</a>，深以为然，一样的合成引擎给不同人用出来的根本不是一回事，而且草民日常听的那些根本不需要歌姬 IP 引流）= = 另外四成确实是因为赶上了忘川全盛时期 + Synthesizer V 当时可以称得上震撼人心的性能表现，如果有哪位朋友在 2019 年听到<a href="https://www.bilibili.com/video/BV1z4411q74Y">《天下局》</a>的话应该能理解这一点，应该甚至到后面合成引擎 AI 化的时候都远远没有当时那种冲击力。可惜 Synthesizer V 和五维这两年社区运营和商业化做的都多少有点不怎么理想，忘川也不如全盛时期那么神挡杀神，所以现在偏正式一点的节目又大头都给 VSinger 了</p>

<p><img src="../assets/images/vacation-at-home-2026/ilem.jpg" alt="" /></p>

<p>顺便看到一种说法：叔叔的年货这样选也是为了可劲儿卖收藏集。为此草民也特意统计了一下今年的商业化相关（然后顺手又买了今年的设定集，虽然不仅没地方放而且看去年的东西感觉也不是很值那个价），看起来倒是没有专门给《辟浪》准备收藏集来着</p>

<p>另外，过年之前忘川端上来了一个相当不错的 <a href="https://www.bilibili.com/video/BV1avFSzkEB6">BV1avFSzkEB6</a>，阵容和制作都称得上神中神。虽然更偏抒情一点（所以选了星尘 Infinity，不会像赤羽那种上来就是很强的冲击力），但慢热一点后劲反而更足，可以说又弥补了今年虚拟歌手贺岁纪缺了点大活的小遗憾</p>

<p><img src="../assets/images/vacation-at-home-2026/1m.png" alt="" /></p>

<p>⬆️记住这个数据，以及 4.6 是 245w+ 的播放量，后面要考</p>

<h1 id="各家游戏的新年版本">各家游戏的新年版本</h1>

<p>春节向来是各家游戏的重点活动时间，今年甚至要同时肝三个半（HSR 4.1 内测算半个</p>

<h2 id="yys-新年版本">YYS 新年版本</h2>

<p>SP 桃花妖太好看了，各种意义上狠狠戳中草民的审美</p>

<p><img src="../assets/images/vacation-at-home-2026/sp.jpeg" alt="" /></p>

<p>至于抽卡 450 也是……本来说要是终末地靠谱的话就弃坑 YYS 结果终末地也不是很靠谱，但是这一波过来也不怎么想接着肝 YYS 了</p>

<p><img src="../assets/images/vacation-at-home-2026/3.png" alt="" /></p>

<p>今年新年假期的对弈，前面倒是还好，最后两天强度是真的高，超级连输，最终胜场 26 / 47 只能给到一个 NPC</p>

<h2 id="拉电线拉水管已经拉不动了">拉电线、拉水管，已经拉不动了</h2>

<p>本来对终末地的期望真的很高，然而狠狠肝了开服版本之后实在是没动力接着玩了</p>

<ul>
  <li>很花时间，<strong>每日</strong>任务需要连续占用半个小时的注意力做大量重复无聊的事情，相比之下 HSR 差不多就一分钟，YYS 也不超过十分钟</li>
  <li>抽卡资源少的可怜，卡池规则弯弯绕绕，还没有可以继承的保底让玩家愿意试试深浅，关键是草民真的很脸黑，这个实在是没招了</li>
  <li>作为核心玩法的基建几乎不跟数值挂钩（一天就能凑完的装备原件、限量供应的养成材料、抠抠索索一礼拜给不了几次的刻写券</li>
  <li>Intro 整体做的非常糟糕，序章没一句人话，四号谷地到处通马桶，好不容易到武陵观感好了一点结果 1.0 在武陵的剧情就开了个头
    <ul>
      <li>然后就是更离谱的 1.1 版本，几乎是明着告诉玩家「地图必须认真做出来，剧情之后再想办法糊个差不多的凑合一下得了」
        <ul>
          <li>尤其是再加上《清波寨 Oh My Life》这抽象玩意儿，草民是真想不出来有多少人会因为真的吃这一套而去抽汤汤</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p><img src="../assets/images/vacation-at-home-2026/1.jpg" alt="" /></p>

<p>也就小红帽运气好一点两个十连出了（但是她又强绑定杰哥没法用），只好备战绿色奶龙了。后面估计可能一个礼拜能上一次线就不错了</p>

<h2 id="hsr-40--乐子大会">HSR 4.0 + 乐子大会</h2>

<p>4.0 做为大版本 Intro 比拉电线那个实在是好太多了，比 3.0 过于慢的慢热也好了很多，甚至这还是在一些懂得都懂的爆肝之后的结果</p>

<p>顺便早几天得到了 4.1 版本的内测机会（清明之前两周就上线了不算泄密了吧），不得不说工作量着实是大到离谱（以及奖励真的是少的可怜）。平时打个货币战争都觉得头疼的草民能坚持下来可真是不容易啊，就算有下次也不搞了</p>

<p><img src="../assets/images/vacation-at-home-2026/id.jpeg" alt="" /></p>

<p>另外<a href="https://www.bilibili.com/festival/honkaistarrail2026festival">乐子大会</a>比拜年纪有意思多了，还有星琼拿</p>

<h1 id="烂尾了十年的房子--收拾老物件">烂尾了十年的房子 + 收拾老物件</h1>

<p>这次回家其实最主要的事情就是看一看旁边房子的现状。说它烂尾十年可是一点不夸张，好在最终几经波折终于还是收回来了，而且有电梯、有地暖、有个朝南的阳台采光，但其它的基本只能说着实不怎么样，主要还是面积太小了，就算只有父母俩人住都显得局促。目前简单装修基本差不多了，这次回去也专门花了一下午时间接好了网线（真·拉电线），剩下的基本上就是一些家具相关的事情了，不出意外的话天热起来之前应该就能住进去。当然其实也不会怎么住了，父母另说，草民自己一年能回来十天就不错了（不过后面两三年应该尽量保证吧</p>

<p>家里其他的资产目前应该暂时也不动，毕竟现在住的房子大概从最高点掉下来差不多 30%，说多不多说少也不算少的样子。目前的预期是大概几个月内清空准备出租，所以这次回去的重点之一也是整理老物件。翻到了很多当年的磁带、软盘、光盘什么的，软盘不值一提了都是自己折腾的，而且现在是真的只能当手办看看了，光盘倒是说不定还能救一下，至于磁带基本都是英语听力不值一提</p>

<p><img src="../assets/images/vacation-at-home-2026/floppy.jpeg" alt="" /></p>

<p>那个年代的电脑杂志内容量比现在这些自媒体真的是一个天上一个地下，一本能看好久，配套光盘也真的是能看得出是花了精力在上面的</p>

<p><img src="../assets/images/vacation-at-home-2026/cd.jpeg" alt="" /></p>

<p>对着这些老物件，突然在想或许能用完全不功利的方式给自己过去的日子断代：</p>

<ul>
  <li>10 年之前折腾盗版碟、研究 PE 和 Windows Mobile，甚至偶尔听英语听力磁带助眠（这倒是让草民后面受益不少</li>
  <li>11 年换了台相对现代些的电脑，高中加大学这两段时间折腾的东西多了一些，手里的各种数码小玩意儿也多起来，算是渐进式的变化</li>
  <li>再往后能最直接拉起回忆的大概是 YYS 的庭院 + BGM（2017 年底「枫色秋庭」 / 2021 年底「远海航船」）
    <ul>
      <li>无论什么时候回想起「枫色秋庭」的 BGM 都非常非常令人怀念，2017 年下半年真的算是草民人生中最快乐的一段时光了</li>
    </ul>
  </li>
</ul>

<p>后面也收拾好了家里最后剩下的一些暂时带不过来的宅物（主要成都这边目前实在是没地方放了），精挑细选了一小部分回来：</p>

<ul>
  <li>瑾 + 瑕（因为已经完全无法从组装好的状态上分离开了，所以也装不进原来的盒子，为了保证完整性只好拎过来了</li>
  <li>仙萌四选一（muji 的那个塑料箱子里面费了很大力气塞进去了三个，剩一个实在是没地方放，只好也拎过来了</li>
  <li>挑选了几张旧碟，没想到的是最终竟然真的还都能读出来，赶紧把几个 GBA 老游戏 ROM 复制出来了</li>
  <li>今晚吃啥（<a href="https://www.bilibili.com/festival/2021bnj?bvid=BV1LT4y1P7re">BV1LT4y1P7re</a>），为数不多的要划在比较新的断代里的东西，目前放在公司了</li>
  <li>《榣山遗韵》4CD（这个字可真难找</li>
</ul>

<p>剩下的一两箱东西什么时候能拿过来呢？估计最快也得是草民什么时候想通了，打算结婚生娃的时候了吧</p>

<h1 id="叔叔的年货正片吐槽与数据统计">叔叔的年货·正片吐槽与数据统计</h1>

<p>除夕晚上看完，只能说上面的预期算得上相当准确。总体觉得今年跟去年比也没什么提升，甚至主线真的是近几年最烂的没有之一，纯粹是为了复刻站娘投票整的个饺子醋，极其无聊；主线的两首歌《从奇迹中诞生》《人生列车》（这个其实是结尾曲，但 PV 跟主线关联比较多，就算主线的一部分好了）倒是还说得过去，不过跟历年作品比又还是缺乏亮点</p>

<p><img src="../assets/images/vacation-at-home-2026/bnj2026.jpg" alt="" /></p>

<p>其他的音乐作品（草民最关注的部分）也只能说是远远达不到前几年噩梦在的时候那种年年有突破、有惊喜的水平（<em>只道当时是寻常</em></p>

<p><img src="../assets/images/vacation-at-home-2026/1000w.png" alt="" /></p>

<p>当然了，也还是有一些很不错的作品的。评选一下个人的全场最佳：</p>

<ul>
  <li>歌：《刹那芳华》（有 ilem 这事儿在前，必须强调一下主要是推🐰 + 1an 的作曲编曲，这俩人搭配一向很靠谱</li>
  <li>其它：《路过朝我吐口再走》（反犬为什么是神.jpg</li>
</ul>

<p>差不多 50 个小时（初二 23:30 左右）之后点了一下几首歌的播放量（下面会列出来）。咱就不说别的，上面发的忘川那首差不多 25 个小时就到 100w 了，今年年货数据最好的一首歌在 50 个小时之后也没有超过这个数，至少可以说明一点是拜年纪真拿不到多少流量资源了。想想也是，噩梦之前就说过内部员工大部分更喜欢跨晚，除夕当天晚上要跟春晚合作避免太严重的分流，初一又有自己的三次元联欢会，拜年纪这些钱少事儿多的 sb 二次元看的东西 nbcs，前置的那些预热基本也没什么意义了。至于更具体的数据，现在是清明假期，过去差不多 50 天，绝大多数单品的数据不会再有什么明显变化了。下面挑几个草民觉得最有必要评价的单品细说一下</p>

<h2 id="关于年年对对">关于《年年对对》</h2>

<p>50 小时的播放量是 30w+，50 天的播放量是 62w+，个人觉得 24 - 26 这几首歌个人觉得基本上算是水平保持稳定。对比 4.6 的数据：</p>

<ul>
  <li>《春日游》是 81.6w，考虑到多积累了一年的播放量，应该说从阵容、歌曲质量、最终呈现的数据等方面来看，基本都差不多</li>
  <li>《八珍玉食》是 188.7w，但个人倾向于认为主要原因是这首歌的阵容非常超模，仅从歌曲本身来看不至于能甩开后面两首 100w 播放
    <ul>
      <li>而且还是在阵容如此超模的情况下跟《新春小记》（205.7w）保持一个水平，但《新春小记》的阵容当时基本还都算是新人</li>
    </ul>
  </li>
</ul>

<p>然后就要说这首歌最大的问题：歌词太复杂，节奏又很快。对着字幕看还能勉强理解，但是记忆几乎没可能，作为新春小曲门槛明显太高了</p>

<ul>
  <li>用一个简单的方式评价：不看字幕听一遍能理解 / 记住多大比例，仅就这一首歌来说，草民听了三四遍一个字都没记住</li>
  <li>跟同样是 St 作词的《横竖撇点折》相比，歌词「稍微」复杂一点，节奏快了「很多」，编曲的复杂度也高出不少，使得记忆更加困难
    <ul>
      <li>《横》的地位就不用说了，单品播放量 812.2w，🐦的翻唱都有 300w，甚至后面还被拿去跨晚炒冷饭（那玩意儿简直给人气死
        <ul>
          <li>又忍不住怀念一下噩梦还在的时候端上来的都是什么神仙作品……那时候的年货是真的值得期待一整年的</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p><img src="../assets/images/vacation-at-home-2026/remember.png" alt="" /></p>

<p>总之肯定无法超越前面三座大山（春意红包、吉祥话、新春小记），当然也不至于像四喜东家那样垫底，就跟另外两首争第四吧</p>

<h2 id="关于堪解人间">关于《堪解人间》</h2>

<p>50 小时的播放量是 27w+，50 天的播放量是 52w+，也算中规中矩</p>

<p>个人觉得一点小遗憾是初音的音色草民觉得不是那么适合这个，后面倒是有不少很不错的翻唱（推荐：<a href="https://www.bilibili.com/video/BV1CXPJzpEcT">BV1CXPJzpEcT</a>、<a href="https://www.bilibili.com/video/BV18pZQBrEFS">BV18pZQBrEFS</a>、<a href="https://www.bilibili.com/video/BV1zCZ6BtE1n">BV1zCZ6BtE1n</a>），确实听起来比 Miku 的音色适配很多。另外一个比较难绷的点是商业化来的疑似太早了</p>

<p><img src="../assets/images/vacation-at-home-2026/miku.png" alt="" /></p>

<p>第一个造型不咋滴，价格倒是不算贵，当然草民是肯定不会买了（毕竟是真的一点地方都没有了啊</p>

<h2 id="关于刹那芳华">关于《刹那芳华》</h2>

<p>50 小时的播放量是 48w+，50 天的播放量是 108w+；整体上看应该是除了《衔尾之歌》（疑似《鸣潮》商单，122.8w）之外数据最好的一首，甚至如果考虑🐰自己的投稿（<a href="https://www.bilibili.com/video/BV114fgBDEPv">BV114fgBDEPv</a>，31.1w）分流出去的那部分的话，说不定能有机会接近甚至超过《衔尾之歌》</p>

<p>仅说单品的话算是相当不错，作曲编曲可以狠狠夸，词也算佳作，歌姬 + 调教算是没拖后腿吧（但也没啥亮点说是）。这首歌是占前几年《繁华唱遍》那个位置的，跟历史作品比起来肯定是没丢份儿的</p>

<p><img src="../assets/images/vacation-at-home-2026/c2.png" alt="" /></p>

<p>实际上从数据来看也明显比《辟浪》要好，同期播放量基本都能多 20% - 30%</p>

<p><del>人声本家</del>（兰音难唱.jpg）出来之后更是连不太吃歌姬（IP / 合成歌声）的观众都可以放心欣赏了（虽然草民个人觉得这首歌选南北组从 IP 或者合成歌声适配度上来说都没有问题，但又不得不说🐰唱的比调出来的好听太多了</p>

<h2 id="关于辟浪">关于《辟浪》</h2>

<p>50 小时的播放量是 39w+，50 天的的播放量是 84w+，从它占的这个位置来看，应该可以称得上惨不忍睹</p>

<p>总体来说个人觉得比 24 年《大哉乾元》还略好一些，比去年的《天星问》要好很多，但还是完全够不上 22 年及之前的水平</p>

<ul>
  <li>题材和结构个人其实觉得跟《弈》颇有相似之处，这点比前面两年的都好很多，尤其是比起去年的《天星问》真的好太多了
    <ul>
      <li>《天星问》后面又听了几遍：用一个貌似很燃的节奏去唱一些稀松平常的事情，就给人一种不知道在燃些什么东西的感觉……</li>
      <li>跟《天星问》比起来，前一年的《到深空更深处去》同主题就好很多很多，今年这首《辟浪》其实结构也真的挺不错的</li>
      <li>中间的川江号子着实不错，个人觉得算是整个曲子除了整体结构之外最大的亮点</li>
    </ul>
  </li>
  <li>编曲比去年《天星问》好一些，但个人还是觉得有那么一点乱，鼓点有些过于密集、过于追求复杂华丽了，结果出来效果也没有很好
    <ul>
      <li>正面例子《弈》就不错，今年的《刹那芳华》也可以。这两首歌的鼓点都没有太过密集，也没有一些莫名其妙插进来的怪乐器</li>
      <li>《天星问》一样有鼓点太密集的问题。燃曲也不能就这么燃在表面上，尤其是在词的表现明显撑不起来的情况下</li>
    </ul>
  </li>
  <li>调教的问题最大，跟歌姬的选择合起来，草民觉得要背这首歌五六成的锅
    <ul>
      <li>开始两句 4、5 字之间停顿和重音都很不明显，导致听起来总有一种失去同步的诡异感觉……</li>
      <li>有几句「哦哦哦」出来的效果很差，本身歌姬就不是很擅长低音还用哦哦哦这种填空，还不如让词作努力一下各填三个字在这里</li>
      <li>有的评论说 ACE 洛天依有点软，草民觉得确实是在语速非常快的时候真的觉得吐字有点不清晰（当然也有人说是调教个人风格</li>
    </ul>
  </li>
  <li>歌词也确实是太复杂、生僻字词很多，导致把理解门槛拉的过高，更不要说能记住什么东西了
    <ul>
      <li>听了四五遍，除了「不做英雄，且当愚公」这句没什么生僻字词、并且前后结构上能照应一下的词之外，几乎找不到什么记忆点</li>
      <li>这里面最正面的一个例子要举同样是洛天依的《万古生香》，几乎只需要初中水平就足够理解，快速理解往往能递进到快速记忆</li>
    </ul>
  </li>
</ul>

<p>这首歌其实还算对草民胃口，但是因为歌姬选择和调教上的问题实在是大到无法忽视，结果这是从 20 年《万古生香》之后草民头一次不得不翻过头来去找翻调和翻唱。虽然还是没能找到很满意的翻调，不过听了几个五维 / ACE 言和的，其实都感觉比 ACE 洛天依舒服一点。总之真的觉得是哪怕因为一大堆原因不能选 Synthesizer V，换成 ACE 乐正绫再做一下针对性的风格优化，出来的东西也比现在这个要好很多。顺便其实对大部分翻调不够满意的原因基本都在混音差太多上，中间还忘了看的哪个喷《刹那芳华》的视频还说《辟浪》主要是混音有问题，对此草民的评价是作为完完全全的非专业人士，混音真没觉得有啥毛病，除此之外倒是哪儿都有些或大或小的问题……</p>

<p>另外也真的想吐槽一下 B 站的搜索，几乎搜不出来什么东西，完全是当推荐位在用了（虽然逻辑上一定程度也能成立</p>

<h2 id="关于踏长空">关于《踏长空》</h2>

<p>继《夜光杯》之后又有一首非常带劲的歌。50 小时播放量是 28w+，50 天的播放量是 73w+</p>

<ul>
  <li>词写的很易懂的同时完全不失气势（看有的评论说不如夜光杯有故事性，草民觉得倒是问题不大），加上首尾照应，还挺容易建立印象</li>
  <li>节奏没有那么快，编曲也比较收敛，跟上面提到的两首歌比起来甚至算比较慢热的</li>
  <li>王朝这次唱的有点收敛，显得声音偏单薄（尤其是跟屠洪刚比较起来就非常明显
    <ul>
      <li>不过最前面的 8 句由屠洪刚来唱就一定程度上规避了这一问题</li>
    </ul>
  </li>
</ul>

<p>评价是作词作曲编曲上的技巧都比上面几首歌要明显高一个 Level（比较可惜的是各种原因下来，数据肯定不会比主推的两首歌好），但是草民个人感觉没有去年《六耳》（161.3w）那样一上来就很抓耳，从最终呈现的数据来看也确实还是吃了些亏</p>

<h1 id="很久没有认真进行的-city-walk">很久没有认真进行的 City Walk</h1>

<p>本来以为呆一个礼拜时间应该非常充裕，实际上事情贼多，甚至抽不出一天出门逛街，初二才终于认真出了一次门（但是初四晚上就要回成都了）。庄里这几天空气比成都好多了，大概也是因为今年烧纸放炮啥的都管的贼严。地铁上放猫和老鼠是真没想到（又看一集</p>

<p><img src="../assets/images/vacation-at-home-2026/3.jpeg" alt="" /></p>

<p>下午去正定那边什么砂之船溜达，晚上本来想着来都来了去古城看看灯会，结果好家伙那叫一个人挤人，周末全到河北是吧，赶紧溜溜球</p>

<p><img src="../assets/images/vacation-at-home-2026/2.jpeg" alt="" /></p>

<p>回二环里面的时间还不算太晚，遂骑车 City Ride，但不得不说大部分地方是真没啥变化</p>

<ul>
  <li>本地物价比成都还贵个两成，而且 tmd36524 买饮料连吸管都不给一根，简直离谱</li>
  <li>本地品牌炸鸡前几天倒是早早买到了吃爽了，本地连品牌都没有的炸鸡没赶上，只好下次一定</li>
  <li>几个老登商圈也是关门贼早，八点就歇了，⛄️提的万象城（这地方确实不错）和北国先天下倒是这个点还在营业</li>
</ul>

<p>初三天气也很不错于是抓紧时间继续。去年八月回来硬是一辆小米没看见，这次终于找到了一辆 SU7 Max，好像还是 founders edition</p>

<p><img src="../assets/images/vacation-at-home-2026/mi.jpeg" alt="" /></p>

<p>除此之外还有两三辆 YU7（不过没注意具体 SKU）以及一些其他品牌电车，凭印象（先把几乎纯跑网约车的那类品牌排除掉）：</p>

<ul>
  <li>理想最多，毕竟增程受气温影响小</li>
  <li>小鹏也不少，P7 最多，Mona 有一些，还有智己也是</li>
  <li>鸿蒙智行只能说有几个，但并不算多</li>
  <li>小米和极氪真的少见，蔚来好像完全没见到过（在市中心来回转了好几圈。好像也没注意哪里有换电站</li>
</ul>

<p>顺便也还真没注意到什么地面充电桩，只能说北方开电车，在帝都以外的地方还是比较难</p>

<h1 id="一些基本的人情维护">一些基本的人情维护</h1>

<p>初四回成都之前最后去见了多年未见的舅舅舅妈，然后收获了今年过年期间唯一一次被催婚……</p>

<p>顺便见到了表姐活泼可爱的女儿。怎么说呢，有时候也突然会觉得养个崽也挺好的，但是还是先把自己养明白了再说吧（</p>

<h1 id="回成都">回成都</h1>

<p>有了前几次的经验，这次的动卧睡的算是相当安稳。初五的成都已经相当热闹了，简单收拾调整一下，迎接新年新气象（</p>

<h1 id="end">End</h1>

<p>说起来日子还挺快，下一篇是端午期间的 Gadgets (2026)，不过目前端午很有可能会是一个去上海的行程（具体去不去取决于能不能抢到黄黄上海场的票），虽然应该也不太影响那篇内容按时发出来</p>

<p>Gadgets (2026) 里面可能会额外补充的一些东西，不多：</p>

<ul>
  <li>USB A - C 转换头
    <ul>
      <li>Logi Bolt Type-C 接收器直接插在 NUC 的 Type-C 口上会莫名其妙的出一大堆可修正错误，但是转接一下插 A 口就不会有问题</li>
      <li>后来发现是 ASPM 的问题，关了之后一切正常</li>
      <li>这个转接头倒是还可以给 CanoKey Canary 用，所以也不亏</li>
    </ul>
  </li>
  <li>小米双口 U 盘
    <ul>
      <li>64G 要 129，128G 要 229……</li>
      <li>不得不复读一遍：AI 带来的生产力提升还没怎么感受到，生产工具价格倒是狠狠涨了一大波</li>
      <li>不过也是时候把钥匙环上面原来那个十多年前捡到的小 U 盘换下来了</li>
    </ul>
  </li>
  <li>Cherry MX 8.0 的 ESC 键似乎手感变软了，而且就只有这一个键这样
    <ul>
      <li>拆之前对着保修贴纠结了半天，然后草民竟然没找到是在哪个平台买的</li>
      <li>中间还搞丢了两个螺丝，于是买了一盒常用螺丝，结果发现没一个能对上，还好后来又把那两个螺丝找到了</li>
      <li>轴当然毫不意外的都是焊死的，虽然大概也可以试试不取下来的同时打开轴体，但是等它坏了再说吧，现在也没什么影响</li>
    </ul>
  </li>
  <li>i160 的奇怪问题：CPU 冷却液温度竟然是和前面板 LED 灯亮度联动的 = =
    <ul>
      <li>跑了一小会儿 Prime95 确定散热没问题，那再抽风就临时调低亮度到 66%，66% 还不够就 33%</li>
      <li>结果 66% 还真不够，于是干脆固定到 33% 了，反正也没必要搞那么亮</li>
      <li>它的水泵转速也持续降低了，于是又买了转速计观察顶部风扇转速（这俩几乎可以肯定正相关），然而还没观察明白，后面再搞</li>
    </ul>
  </li>
</ul>

<p>另外照目前情况来看，之后两三年的春节假期应该都会做类似今年的行程安排，那自然也都会有类似这次这样的记录啦。</p>]]></content><author><name>yichya</name></author><category term="Life" /><category term="life" /><summary type="html"><![CDATA[难得回家一趟，额外记录一点东西。原计划 3.1 发，但因为被各种各样的事情占满时间，最终只能清明发了（]]></summary></entry><entry><title type="html">Self Hosted (2) Custom Valine Server</title><link href="https://www.yichya.dev/self-hosted-2/" rel="alternate" type="text/html" title="Self Hosted (2) Custom Valine Server" /><published>2026-02-22T00:00:00+08:00</published><updated>2026-02-22T00:00:00+08:00</updated><id>https://www.yichya.dev/self-hosted-2</id><content type="html" xml:base="https://www.yichya.dev/self-hosted-2/"><![CDATA[<p>这里评论用的 Valine，虽然架好之后没多久它就闭源了 = = 不过用着也没啥毛病就没管。结果这几天突然发现 <a href="https://console.leancloud.app/docs/sdk/announcements/sunset-announcement">LeanCloud 就要停服了</a> = = 趁过年在家的功夫搞了一下咕咕咕多年的 My Own Hackday，花了一天时间快速肝了一个最小的 Valine 兼容服务端实现</p>

<h1 id="on-premise-replacements">On-Premise Replacements</h1>

<p>当时选 Valine 的原因之一就是它非常简洁干净，并且没有什么很复杂的社交集成功能，国内访问也比较稳定（即便后面 LeanCloud 国内强制要求备案的时候迁移到国外了也还可以接受）。相比之下老牌工具 Disqus 现在猛猛加私货广告，根本没法看；至于比如 utterances 之类的工具倒是也非常简洁干净，但是它绑死 GitHub 还要求登录，也不太方便数据迁移，这对草民来说也算是一票否决</p>

<p>这次 LeanCloud 停服，也属于草民一直关注的下云案例（只是没想到这么快就下到草民自己头上），再选方案的话当然必须全自建了</p>

<h2 id="waline">Waline</h2>

<p>貌似是个比较平滑的切换方案，从名字上就很容易看得出来跟 Valine 颇有渊源（事实上也是如此</p>

<ul>
  <li><a href="https://waline.js.org/guide/get-started/">https://waline.js.org/guide/get-started/</a>（这里有评论区 Demo</li>
  <li><a href="https://github.com/JQiue/waline-mini">https://github.com/JQiue/waline-mini</a>（原版服务端是 TypeScript，也有人做了第三方的 Rust 后端，不过貌似没啥人用</li>
</ul>

<p><img src="../assets/images/self-hosted-2/waline.png" alt="" /></p>

<p>看了一下官网 Demo 感觉有几点不太符合草民胃口：</p>

<ul>
  <li>实在是太重了：社交集成、用户标签、文章反应，乱七八糟的功能过多，远不如 Valine 简洁</li>
  <li>客户端文件走公共 CDN 托管，服务端自备甚至可能还是第三方的，说不定什么时候就会出点兼容性问题</li>
</ul>

<p>虽然 Waline 确实解决了 Valine 存在的一系列问题（主要是安全相关），但额外加的东西又确实是太多了，并不能满足需求</p>

<h2 id="artalk">Artalk</h2>

<p>官方后端是 Go 实现的 <a href="https://artalk.js.org/">https://artalk.js.org/</a>，也直接提供了自托管的客户端 JS 文件，跟 Waline 相比运维起来更方便一些</p>

<p><img src="../assets/images/self-hosted-2/artalk.png" alt="" /></p>

<p>这个部署相当平滑，花了十来分钟就完成了对 Valine 评论和计数器两个功能的替换（不包括数据迁移），但也有几点感觉不太好：</p>

<ul>
  <li>上传图片完全没有任何限制（虽然可以一刀切直接关掉这个功能</li>
  <li>还是略重，比如什么社交集成、各种推送之类的功能用不上</li>
  <li>侧边栏草民不怎么喜欢，尤其是连个开关都没有这件事</li>
</ul>

<p>草民博客流量极低，可能一天只有个位数请求，开个这玩意儿绝大多数时候都是空跑，还是多少有点浪费，而且这玩意儿一年半没有发新版本了，上次代码变更也是大半年前了（甚至官网自己部署的 Artalk 服务端证书都过期了 = =），感觉也相对不算靠谱</p>

<h2 id="other">Other</h2>

<p>类似上面两个的 <a href="https://twikoo.js.org/intro.html">Twikoo</a> 也有比较重的问题，而且它只有 TypeScript 服务端，这里就不专门搞了。另外还搜到了一个利用 <a href="https://usememos.com/">Memos</a> 的接口的<a href="https://www.hollowman.cn/archives/memostest.html">方案</a>，问题主要在于前端还得自己写，就算有 AI 感觉也还是会很麻烦，还是算球了</p>

<p>顺便一提，Memos 其实很符合草民对 RSS Pipe 上一些额外功能的需求，只是还是不够简洁（所以草民才做了「文件传输助手·青春版」），功能上也不如类似 ChatGPT 那种 Sessions 的形态组织起来更高效：即便有 AI 加持的情况下草民也不认为人类能长期、频繁跟进 20+ 个不同事项，所以 ChatGPT 之类左边列出十几二十个近期 Session 的形态足够好用；再复杂的需求可以通过全文检索甚至 AI 辅助的搜索完成。当然 Memos 已有的一些特性，比如标签 / 按内容类型分类之类简单的管理工具倒是也能用得上，Sessions 的形式也可以展示在日历上并搭配一些自动 / 手动操作刷新变更时间。可能后面再扩展 RSS Pipe 的能力的时候会考虑一下做一点类似的实现</p>

<h1 id="custom-valine-server">Custom Valine Server</h1>

<p>搜到的几个方案都有些偏重，于是也起了直接替代掉 LeanCloud 的想法。似乎并不难做，但抓接口得知 Valine 同时进行了三种 CRUD 方式</p>

<ul>
  <li>REST 形式的接口
    <ul>
      <li>发送评论</li>
      <li>创建阅读计数器</li>
      <li>修改阅读计数器</li>
    </ul>
  </li>
  <li>一个很类似 MongoDB 的语法
    <ul>
      <li>获取评论总数</li>
      <li>分页获取评论</li>
      <li>获取阅读计数器</li>
    </ul>
  </li>
  <li>CQL（一个很类似 SQL 的语法）
    <ul>
      <li>获取楼中楼评论（这个真的很奇怪，不知道为什么只有这一个特例，而且按说也完全可以用上面的形式实现</li>
    </ul>
  </li>
</ul>

<p>评价为这玩意儿也让人感觉不是很靠谱，再加上还不开源……但它又确实足够简单，刚好过年在家呆一周没有很好的网络条件（虽然后面又想起来家里还有个老伙计还能发挥下余热，很快就把网络搞好了），于是决定把咕咕咕了多年的 My Own Hackday 搞起来，花一天时间在 RSS Pipe 的基础上进行扩展，目标是实现 Valine 可能用到的所有 LeanCloud API 用法的最小集合</p>

<h2 id="analysis">Analysis</h2>

<p>虽然 Valine 操作 LeanCloud 的方式很多，但实际上每一种都使用了非常固定的形态去请求，分析之后完全可以在服务端做针对性实现</p>

<h3 id="relations">Relations</h3>

<p>Valine 在 LeanCloud 上定义了 <code class="language-plaintext highlighter-rouge">Comment</code> 和 <code class="language-plaintext highlighter-rouge">Counter</code> 两个表（实际上更像是 MongoDB 的 Collection，包括主键也叫 <code class="language-plaintext highlighter-rouge">objectId</code>，但这里就还当是表好了）。有的旧版本可能还会操作内置的 <code class="language-plaintext highlighter-rouge">_User</code>，新版没有这个了，这里以 1.5.3 为准，本次也只实现这两个表的操作</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">Counter</code> 没啥说的，跟具体文章通过 <code class="language-plaintext highlighter-rouge">URL</code> 一一对应起来，然后就是 <strong>+1</strong> <strong>+1</strong></li>
  <li><code class="language-plaintext highlighter-rouge">Comment</code> 跟具体文章通过 <code class="language-plaintext highlighter-rouge">URL</code> 组合成一对多关系，然后再通过 <code class="language-plaintext highlighter-rouge">rid</code> 和 <code class="language-plaintext highlighter-rouge">pid</code> 建立楼中楼关系
    <ul>
      <li><code class="language-plaintext highlighter-rouge">rid</code> 是主楼的 <code class="language-plaintext highlighter-rouge">objectId</code>，会用于检索，实现时要考虑能被过滤（以及可能的索引）的存储形式</li>
      <li><code class="language-plaintext highlighter-rouge">pid</code> 的关系稍微有点乱，不过它不用于前后端交互时的检索，实现时只需要原样记录、传递就可以了</li>
      <li>因为 Valine 可以直接粘贴图片（实际上是作为 data URL 处理的），评论的内容可能会很长，考虑存储的时候要注意数据类型</li>
    </ul>
  </li>
</ul>

<p>总的来说也比较简单，随便放在什么类型的数据库上都很容易实现，草民这里就继续选择 RSS Pipe 已经用了的 SQLite</p>

<h2 id="implementation">Implementation</h2>

<p>上面有提到继续在 RSS Pipe 的基础上开发，原因有以下几个：</p>

<ul>
  <li>可以对接 RSS Pipe 已有的一些能力（比如 Bark 推送、正式发布时自动清零计数器等等</li>
  <li>已经实现的「文件传输助手·青春版」的表结构只需要简单调整就能适配上面的关系</li>
  <li>可以利用这套一对多的关系来实现对 RSS Pipe 现有能力的一些扩展
    <ul>
      <li>针对「文件传输助手·青春版」，可以实现「回复消息」与「Session 管理」两个相当有用的功能</li>
      <li>针对 RSS 内容可以扩展出私有的评论 / Bot 能力，类似 GitHub Actions 在 issue 区的互动
        <ul>
          <li>比如利用 RSSHub 从☁️拉取到了新歌，可以直接在下面评论 <code class="language-plaintext highlighter-rouge">/download</code> 通知 Bot 进行下载</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p>为了理清思路，实际的实现过程中除去少许代码片段之外基本没有使用 AI 辅助，过程中也确实觉得没有 AI 的话产能低了好多（</p>

<h3 id="rest">REST</h3>

<p>啥技巧都没有，简简单单一搓完事</p>

<ul>
  <li>创建评论：<code class="language-plaintext highlighter-rouge">POST /1.1/classes/Comment</code></li>
  <li>创建阅读计数器：<code class="language-plaintext highlighter-rouge">POST /1.1/classes/Counter</code></li>
  <li>修改评论计数器：<code class="language-plaintext highlighter-rouge">PUT /1.1/classes/Counter/&lt;objectId&gt;</code></li>
</ul>

<p>具体的 Body 也很简单就不贴了，自己抓一下就好。一点细节：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">objectId</code> 的格式并不需要跟 MongoDB 的默认格式一致，Valine 也不会在客户端生成这个，草民这里直接改用 SQLite 的自增主键</li>
  <li>POST 的两个请求中会有一个 <code class="language-plaintext highlighter-rouge">ACL</code> 字段，服务端解析的时候直接忽略即可，不需要去纠结它的类型</li>
  <li>PUT 的 Body 的内容大致就是 <code class="language-plaintext highlighter-rouge">time += 1</code>，实际上完全不需要解析
    <ul>
      <li>Valine 针对这个还有个安全问题，就是可以随意构造请求去修改这个 Counter，不解析这个也可以顺便解决这个问题</li>
    </ul>
  </li>
</ul>

<h3 id="mongodb-like">MongoDB Like</h3>

<p>三个查询的请求都只用到了一个非常简单的条件，以查询这篇内容的评论与阅读数量为例</p>

<ul>
  <li>查询请求都是 <code class="language-plaintext highlighter-rouge">GET</code>，参数用 Query String 传递
    <ul>
      <li>评论：<code class="language-plaintext highlighter-rouge">GET /1.1/classes/Comment</code></li>
      <li>计数器：<code class="language-plaintext highlighter-rouge">GET /1.1/classes/Counter</code></li>
      <li>排序 <code class="language-plaintext highlighter-rouge">order</code> 均为创建时间倒序，但实际上不需要解析具体排序条件，实现的时候写死即可</li>
    </ul>
  </li>
  <li>评论查询由两步完成，所以这里总共要实现三种请求
    <ul>
      <li>一个入参包含 <code class="language-plaintext highlighter-rouge">count</code>，仅用于查询评论总数不获取具体内容</li>
      <li>另一个入参包含 <code class="language-plaintext highlighter-rouge">limit</code> 以及可能的 <code class="language-plaintext highlighter-rouge">skip</code>，用于分页获取评论</li>
    </ul>
  </li>
  <li>评论和计数器查询都用到的过滤条件：<code class="language-plaintext highlighter-rouge">where={"url": "/self-hosted-2/"}</code>
    <ul>
      <li>计数器最多只会查到 1 个，没查到的话会调用上面的 REST 接口创建一个并写入 <code class="language-plaintext highlighter-rouge">1</code></li>
    </ul>
  </li>
  <li>评论查询时会在上面的 <code class="language-plaintext highlighter-rouge">where</code> 里额外增加一个过滤掉楼中楼的条件：<code class="language-plaintext highlighter-rouge">{"$or":[{"rid":{"$exists":false}},{"rid":""}]}</code>
    <ul>
      <li>因为楼中楼只有下面的一种查询方式，实际上这里也并不需要解析这个嵌套了几层的条件，在服务端直接实现这个过滤就行了</li>
    </ul>
  </li>
</ul>

<p>这三个请求可以通过 Path 和入参带不带 Count 进行非常简单的区分，因此大部分复杂解析都不需要做，知道是哪个请求并针对实现即可</p>

<h3 id="cloudquery">CloudQuery</h3>

<p>这个针对楼中楼的查询解析起来稍微复杂一点，要把里面的 <code class="language-plaintext highlighter-rouge">rid</code> 硬抠出来。至于排序一样不用管，实现的时候写死就行了：</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">select</span> <span class="o">*</span> <span class="k">from</span> <span class="k">Comment</span> <span class="k">where</span> <span class="n">rid</span> <span class="k">in</span> <span class="p">(</span><span class="nv">"1x"</span><span class="p">,</span><span class="nv">"2y"</span><span class="p">,</span><span class="nv">"3z"</span><span class="p">)</span> <span class="k">order</span> <span class="k">by</span> <span class="o">-</span><span class="n">createdAt</span><span class="p">,</span><span class="o">-</span><span class="n">createdAt</span>
</code></pre></div></div>

<p>因为查询比较固定，草民实际做的时候直接切了切字符串拿出来完事了。注意返回值有一个固定的字段 <code class="language-plaintext highlighter-rouge">{"className": "Comment"}</code>，不加上的话 Valine 不认。都完事之后给一个 <code class="language-plaintext highlighter-rouge">GET /1.1/cloudQuery</code> 的路由即可。不过另外还有一个问题原来用 LeanCloud 的时候 <code class="language-plaintext highlighter-rouge">rid</code> 是一个并不太容易枚举的 <code class="language-plaintext highlighter-rouge">objectId</code>，而这里的重新实现图省事直接用 SQLite 的自增主键，会导致这个接口可以枚举所有的评论数据，因此至少在实现的时候还需要把下面的 appid 相关检查做好（当然也可以改用类似 <code class="language-plaintext highlighter-rouge">objectId</code> 的生成器，但是对简单业务来说有点太麻烦了</p>

<h3 id="authentication-and-cors">Authentication and CORS</h3>

<p>LeanCloud 的鉴权传了两个字段，一个 appid <code class="language-plaintext highlighter-rouge">X-LC-ID</code> 和一个计算出来的签名 <code class="language-plaintext highlighter-rouge">X-LC-SIGN</code>；Valine 说白了压根不需要这么复杂的流程，也不太可能逆向出来 <code class="language-plaintext highlighter-rouge">X-LC-SIGN</code> 的相关逻辑，因此简单做一个自包含验证并且不跟 LeanCloud SDK 冲突的 appid 就可以了：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">X-LC-ID</code> 是 24 个字符加一条横线再加 8 个字符</li>
  <li>这个 appid 需要能对应到一个 RSS Pipe 的 <code class="language-plaintext highlighter-rouge">feed</code>，成本最低的方式是直接利用它传递 <code class="language-plaintext highlighter-rouge">feed_id</code></li>
  <li>为了避免伪造，利用 RSS Pipe 一个之前就有的启动参数 <code class="language-plaintext highlighter-rouge">auth</code> 跟 <code class="language-plaintext highlighter-rouge">feed_id</code> 拼接起来，再计算一个 hash 用作签名</li>
</ul>

<p>省事儿起见 hash 选了 md5，按流 base64 出来刚好 24 个字符（最后两个是等于号，但并不太影响）；后面 8 个字符是 <code class="language-plaintext highlighter-rouge">feed_id</code> 的十六进制表示，刚好 int32，对于 <code class="language-plaintext highlighter-rouge">feed_id</code> 来说肯定够用了。也尝试在里面掺了 base64 的其他字符，实测不影响 LeanCloud SDK 工作</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gVbhGkTgtIgfaI6pD0Xr5A==-00000065
</code></pre></div></div>

<p>CORS 没啥特别的，别忘了就行，图省事儿的话就全都 <code class="language-plaintext highlighter-rouge">*</code></p>

<h2 id="deployment">Deployment</h2>

<p>LeanCloud 从几年前就已经强制要求绑定用户自己的域名了，所以部署也很简单，把 RSS Pipe 通过无论什么方式（内网穿透 / VPS 部署等等）挂在这个域名上面即可；或者如果 RSS Pipe 已经挂在某个其它域名上了的话，就修改一下 Valine 的初始化配置</p>

<p>针对客户端部分，LeanCloud 官方不再提供服务，在公共 CDN 上托管的 SDK 说不定在未来的某个时间点就会被撤下来；Valine 也有类似的可能性，所以最好是把目前确定可用的前端文件保留一份自用。虽然 Valine 内部自己决定了如何加载 LeanCloud SDK（目前应该是写死了 jsdelivr），但是它也会提前检查 <code class="language-plaintext highlighter-rouge">window.LC</code>，所以可以提前自行初始化 LeanCloud SDK，就如下面这样直接加载进来就好了。另外，Valine 目前不开源，为了确保来源可信，比较推荐的方式是自行从官方提供的 CDN 地址下载两个 js 文件（注意版本号）并自行管理</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;script </span><span class="na">src=</span><span class="s">'/assets/js/av-min.js'</span><span class="nt">&gt;&lt;/script&gt;</span> <span class="c">&lt;!-- https://cdn.jsdelivr.net/npm/leancloud-storage@3/dist/av-min.js --&gt;</span>
<span class="nt">&lt;script </span><span class="na">src=</span><span class="s">'/assets/js/Valine.min.js'</span><span class="nt">&gt;&lt;/script&gt;</span> <span class="c">&lt;!-- https://unpkg.com/valine@1.5.3/dist/Valine.min.js --&gt;</span>
</code></pre></div></div>

<h2 id="data-import">Data Import</h2>

<p>因为主键从 <code class="language-plaintext highlighter-rouge">objectId</code> 变成了自增的关系，数据迁移会涉及到一个针对全量数据的主键重新映射</p>

<ul>
  <li>先从 LeanCloud 导出所有数据</li>
  <li>选择一个未使用的主键范围对 <code class="language-plaintext highlighter-rouge">objectId</code> 做映射（停服以避免可能的主键冲突，或者拉一个足够大的间隔出来</li>
  <li>生成 SQL 后手动批量导入</li>
</ul>

<p>对于草民这种数据总量区区一百来行的情况，直接拖进 Excel 里面查找替换，完事儿复制粘贴到 SQLite 里面齐活</p>

<h2 id="better-integration-with-rss-pipe">Better Integration with RSS Pipe</h2>

<p>写作的过程中偶尔还是会需要提前拉起 Jekyll 预览生成效果，但这又会导致阅读量计数器产生变化。为了记录更准确的阅读量数据，往往还需要在正式将内容推送到托管平台之后手动到 LeanCloud 上重置计数器。RSS Pipe 就能很好解决这个问题：工具只会拉取托管到平台的 RSS，因此在每次拉取到内容的时候搜索 <code class="language-plaintext highlighter-rouge">url</code> 匹配但 <code class="language-plaintext highlighter-rouge">title</code> 和 <code class="language-plaintext highlighter-rouge">author</code> 都为空（Valine 虽然定义了 <code class="language-plaintext highlighter-rouge">title</code> 字段，但是目前的版本并不会在调用服务端时传递它；<code class="language-plaintext highlighter-rouge">author</code> 更是只能通过 RSS 拿到；两个都过滤主要还是考虑到比如 RSSHub 抓取到的一些内容可能因为各种原因缺失部分信息）的对应记录，如果存在的话直接更新对应记录的未填写字段并将 <code class="language-plaintext highlighter-rouge">counter</code> 设置为 0 即可</p>

<h1 id="more-about-rss-pipe">More About RSS Pipe</h1>

<p>最近还在「文件传输助手·青春版」的基础上加了简单的图库（AI 生成前端代码真的很方便，写好几个对接后端的 API，前端几乎秒出</p>

<p><img src="../assets/images/self-hosted-2/grid.png" alt="" /></p>

<p>下一步考虑：</p>

<ul>
  <li>Vibe 一个有点像绿泡泡的朋友圈的 UI，对接上面的博客评论能力</li>
  <li>完善一点「文件传输助手·青春版」的界面细节，更便于检索历史内容</li>
</ul>

<p>上面提到的 RSS Pipe 部分改动在 GitHub <a href="https://github.com/yichya/rss_pipe/pull/7">yichya/rss_pipe#7</a>，不过其中还不包含「文件传输助手·青春版」（因为还差不少东西没有收拾干净），而且目前也还不能开箱即用，主要是还需要手动创建数据库之类。这部分的自动化相关也放在后面处理吧（</p>

<h1 id="next">Next</h1>

<p>过年难得回了家一次（而且说实话可能再回家的次数两只手数得过来了），于是多写了一点东西，会在下周末（3.1）发出来。</p>]]></content><author><name>yichya</name></author><category term="My Own Hackday" /><category term="NAS and OpenWrt" /><category term="nas" /><category term="self-hosted" /><summary type="html"><![CDATA[这里评论用的 Valine，虽然架好之后没多久它就闭源了 = = 不过用着也没啥毛病就没管。结果这几天突然发现 LeanCloud 就要停服了 = = 趁过年在家的功夫搞了一下咕咕咕多年的 My Own Hackday，花了一天时间快速肝了一个最小的 Valine 兼容服务端实现]]></summary></entry><entry><title type="html">About My 2025</title><link href="https://www.yichya.dev/about-my-2025/" rel="alternate" type="text/html" title="About My 2025" /><published>2025-12-31T00:00:00+08:00</published><updated>2025-12-31T00:00:00+08:00</updated><id>https://www.yichya.dev/about-my-2025</id><content type="html" xml:base="https://www.yichya.dev/about-my-2025/"><![CDATA[<p>年常系列。开头惯例，先看一下今年 Blog 更新计划完成咋样：</p>

<table>
  <thead>
    <tr>
      <th>↘</th>
      <th>Category</th>
      <th>Comment</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>❌</td>
      <td>Life</td>
      <td>也就只有老家的资产处置算是有些进度，其它着实是没啥可说的，所以也就没有新内容了</td>
    </tr>
    <tr>
      <td>❌</td>
      <td>My Own Hackday</td>
      <td>虽然有在例行推 RSS Pipe 但还没整理出来什么东西，不过是有计划了，明年一定</td>
    </tr>
    <tr>
      <td>✅</td>
      <td>NAS and OpenWrt</td>
      <td><a href="../real-nas-project-4/">Real NAS Project 4</a> 和 <a href="../tinc-improvements">Tinc Improvements</a> 两个组网相关优化，算是例行迭代</td>
    </tr>
    <tr>
      <td>✅</td>
      <td>Gadgets</td>
      <td><a href="../gadgets-2024/">Gadgets 2025</a>，然后龙芯小主机又咕咕咕了一年，目前来看是没什么机会了，等到 <a href="https://www.phoronix.com/news/Debian-LoongArch64-Official">2027 年 Debian 14 出来</a>再搞吧（</td>
    </tr>
    <tr>
      <td>✅</td>
      <td>Play Around</td>
      <td><a href="../vacation-2025-1/">Vacation 2025.1</a>、<a href="../vacation-2025-2/">Vacation 2025.2</a> 和 <a href="../guilin-experience">Guilin Experience</a>，总之就是比去年浪的更狠了</td>
    </tr>
    <tr>
      <td>✅</td>
      <td>Technology</td>
      <td><a href="../start-headless-chromium-on-demand/">Start Headless Chromium on Demand</a> 是 RSS Pipe 的延伸，<a href="../shells-and-terminals/">Shells and Terminals</a> 也算是一点还挺有用的东西</td>
    </tr>
  </tbody>
</table>

<p>回看过去一年，着实也没解锁什么新成就，跟各位老板相比称得上一事无成。摆了摆了。开始之前先叠个甲：以下内容充满各种暴论，轻喷</p>

<h1 id="big">Big</h1>

<p>今年的大环境依然是全球右转、经济下行，甚至显得比去年更加糟糕了。虽然说这种话题已经懒得年年复读了，但不得不说草民周边的门面和写字楼空置率也是越来越高，比如公司对面的一家的偏北方口味的面馆，大概是因为一些经营问题，即便味道很不错、生意也还凑合，还是在年中被转手出去变成了一家没啥特色的重庆小面，味道平平不说客单价还贵，人流量可想而知还不如从前，估计过不到一年又要跑路。今年的国际形势之紧张个人感觉也能算是新世纪以来的新记录，因此草民闲暇时间消费的鉴证内容也多了一些，算是一种大脑升级（？</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/head.png" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/tail.png" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>年初一张万能公式</td>
      <td>年末一张盘点总结</td>
    </tr>
  </tbody>
</table>

<p>虽然确实觉得能学到一些东西，至少也多个看事情的角度，但也像某位老板说的那样，看多了、听多了之后剩下的更多是一种深深的无力感</p>

<p>AI 当然也是个绕不过去的话题。怎么说呢，除了年初 DeepSeek 火了一顿之外，之后这一年过去感觉跟去年也没什么本质上的区别，还是那样国内国外几个大厂出一堆大差不差的产品来回卷，卷了一年除了一直刷榜之外，感觉也没卷出什么跟去年明显不一样的新名堂出来</p>

<p><img src="../assets/images/about-my-2025/circle.jpg" alt="" /></p>

<p>比较有意思一点的大概算是多模态的一些工程化产品，比如 Sora 和 Nano Banana 确实让梗图、梗视频生产快了很多，但互联网上的这些东西本来就已经是远远超载的了，再用 AI 生成一大堆这种东西除了图一乐之外并没有什么很实际的意义，看多了只会觉得越来越烦。同时这些工具事实上很可能并不像它们所宣称的那样提升了生产力与信息流动效率，而是恰恰相反。考虑 2025 年的典型信息流动过程：</p>

<ul>
  <li>原始内容：最准确、信息密度最高</li>
  <li>传播者先用生成式 AI 洗一遍，混入不确定性 / 传播者刻意增加推广内容导致准确率降低、转换为视频等其它形式导致信息密度降低</li>
  <li>上述内容大量混入平台搜索与推荐流，高质量、高信息密度的原始内容与大量蹭热度内容混合，原始内容被检索到的概率显著降低</li>
  <li>平台获取内容过多，且混入大量不相关 / 低质量内容导致信息过载，用户主动 / 被动使用 AI 总结等能力，进一步降低内容的准确率</li>
</ul>

<p>虽然 ChatGPT 类的 AI 应用确实比传统搜索引擎方便，但由于其固有的不确定性也导致事实核查变得越来越重要（现在拿着一张 DeepSeek 截图在社区里乱跳的小鬼实在是太多太多了），而 AI 生成内容充斥网络又导致事实核查变得越来越困难。如果再考虑到事实核查过程中受到推荐系统（怎么不算一种 AI 呢，只不过不是生成式罢了）被反复诟病的「信息茧房」问题的影响，信息的有效流动就更是难上加难</p>

<p><img src="../assets/images/about-my-2025/slop.png" alt="" /></p>

<p>目前卷来卷去的 AI 实话讲已经让开放互联网逐渐成了个笑话：一边放任用户用 AI 生成大量的辣鸡内容，同时针对视频之类信息密度偏低且不易检索的内容进行搜广推相关权重的提升，使得用户越来越难以获取有效信息，不得不在平台停留更长时间以达成平台所期望的 DAU 指标增长；一边又在使劲儿做风控做反爬将用户锁死，比如某红色平台、某绿色平台和某蓝色平台几乎完全阻止传统搜索引擎等工具的索引，导致已经非常严重的信息孤岛现象进一步恶化。实话讲，经历过十几年前互联网「黄金时代」的话，对现在的互联网真的很难不感到失望</p>

<p><img src="../assets/images/about-my-2025/scrape.png" alt="" /></p>

<p>AI 发展还导致一个非常难绷的事情就是内存价格暴涨数倍。偶然看到一句话：这种情况下 Apple 的内存价格甚至都开始显得良心起来</p>

<p><img src="../assets/images/about-my-2025/memory.jpg" alt="" /></p>

<p>经历了这几年的 AI 发展，有时候也真的忍不住在想，十几年后回看这一波汹涌浪潮，究竟是像前面几次工业革命那样实现了生产力的极大提升，还是如千禧年前后的互联网泡沫一样最终变成一地鸡毛，甚至可能是更糟糕的赛博朋克般加剧了巨头垄断？从草民自己的感受来说，生产力提升感知不强，AI 垃圾内容成倍增加、工作岗位因 AI 明显减少、部分计算机配件越来越贵倒都是实打实的，因此真的很难乐观起来</p>

<h1 id="work">Work</h1>

<p>虽然从一个老网民的角度来说，实在是很难不对目前的 AI 发展产生一些反感，但作为沾那么一点点边的从业者又不得不说 AI 带来了新的业务增长点。公司的业务重心切换到 AI 相关的一些应用，草民负责的事情中搭基础的相对少了一些，大部分事情都在一些定制相关的事情上（然后不得不说大部分事情坑都比较多，毕竟每家客户都会有自己积累下来的一系列东西要理解学习，再喂给 AI 做事；但是能拿到的这些东西质量往往都相当差劲，沟通成本远比老板最早规划中的预期要高，需要反复拉扯才能完成交付）。目前公司在 AI 这部分选定的方向个人觉得还是有一些空间，而且能跟公司现有的业务叠加获得一些先发优势，感觉还是有机会的，现在还是想看看能在这条路上走多远</p>

<p>至于日常干活，去年也提到过要尝试一些 AI 提效，当时的结论是「用来开新坑值得一试，但是在现有项目上的迭代就不太可用」。现在一年过去，实话说草民是真没觉得这个结论有什么变化。草民日常现在会用 AI 做一些简单重复、不用费脑子写 Prompt 的事情，举两个例子：</p>

<ul>
  <li>将一个 SQL 转换为等价的 GORM 代码</li>
  <li>基于 OpenAPI 文档生成 Python 的调用代码</li>
</ul>

<p>这两件事应该说都是比较简单、规模有限、结果可验证的任务，但实话说即使如此，这两件事 2025 年年底最新的模型做的也都一般般：</p>

<ul>
  <li>简单的 SQL 出来的效果很不错，但稍微复杂一点的 SQL，比如涉及到多个子查询、窗口函数等情况时往往就会翻车，而因为代码不是自己写的，对着 AI 生成出来的一大坨东西几乎是完全没有解决的思路，硬要修的话最终要花的时间甚至可能比从头自己写还多</li>
  <li>基于文档生成代码则往往因为文档自身的问题（比如缺少术语表导致一个特定的中文名词有很多种不同的英文翻译，或者文档中给出的某一字段却在示例中被遗漏，甚至文档里的很多细节干脆就直接是错的）变成一种纯粹赌概率的行为，后续仍需大量人力去拉扯</li>
</ul>

<p>以上这些还只是发生在单个项目中的迭代。跨多个项目的迭代往往涉及到一些架构设计上的取舍，比如某类功能表面上看起来实现在模块 A 和 B 里面都行，但不同的开发者给 AI 输入的 Prompt 略有不同（甚至是 Prompt 完全相同的情况下也不一定能保证结果完全稳定）就可能导致 A 和 B 里面都散落了一部分职责相近的功能逻辑。如果整个系统的架构 / 项目本身的框架设计不到位，无法对 AI 应该修改的范围做出合理管控以规避此类问题，日常迭代的过程中又没能在前置设计阶段和后置验证阶段识别并处理掉这类问题的话，久而久之就会导致整个架构逐渐向着完全不可控的方向滑落，最终彻底变成一团乱麻。事实上真正的开发工作中，大部分的精力也往往就花费在设计与验证两个阶段</p>

<ul>
  <li>传统工作流：设计（思考某个东西应该怎么实现，30%）-&gt; 实现（写代码，30%）-&gt; 验证（Debug、测试、Code Review，40%）</li>
  <li>引入 AI 的工作流：设计（同上，30%）-&gt; 交给 AI 实现（写 Prompt，10%）-&gt; 验证（同上，但开销显著高于传统工作流，60%）</li>
</ul>

<p>上述精力分配甚至还是理想情况，实际上与直接写代码比起来，跟 AI 反复拉扯能不能节省精力还真不一定，但验证是实打实的更费劲</p>

<p><img src="../assets/images/about-my-2025/top.jpg" alt="" /></p>

<p>老板们当然会希望 AI 能像田螺姑娘一样节省大量人力成本，自媒体壬也会为了卖课之类的利益诉求不停的贩卖焦虑、吹嘘所谓「十倍生产力」，但只有实际干活的人才知道真实的业务流程充满了拉扯与妥协，在人工💩山上堆 AI 生成的💩山会是一种多么令人绝望的事情</p>

<p><img src="../assets/images/about-my-2025/vibe.png" alt="" /></p>

<p>关于之前提过的下云，今年其实也毫不意外，降本增效的趋势下 GCP、Azure 和 AWS 都炸了个大的；比较意外的大概算是 Cloudflare 连炸两次，一次 <a href="https://blog.cloudflare.com/zh-cn/18-november-2025-outage/">Rust 写的 FL2 随手一个 <code class="language-plaintext highlighter-rouge">.unwrap()</code> 遇上脏数据</a>，另一次 <a href="https://blog.cloudflare.com/zh-cn/5-december-2025-outage/">Lua 写的 FL1 少检查一个 <code class="language-plaintext highlighter-rouge">nil value</code></a>，这下某些人左右脑互搏了</p>

<p><img src="../assets/images/about-my-2025/cf1.jpg" alt="" /></p>

<p>于是著名梗图加强版就来了。一个云平台的故障就可能一波带走几十上百家公司的不同业务，但无论是小企业还是云平台都在应对越来越高的成本压力，一边削减人力一遍高强度引入 AI，运维领域尤甚，导致这年头的互联网感觉比五年甚至十年前还要脆弱</p>

<p><img src="../assets/images/about-my-2025/cf2.jpg" alt="" /></p>

<p>AI 一定程度上逆转了下云的趋势，毕竟 LLM 比传统的互联网基础设施更需要靠规模去压成本（于是带来了内存之类的严重短缺），这个下云确实尚早。不过因为使用的公有云设施更加不稳定（模型、插件、平台之类高频迭代），以及考虑部分公司更高的数据安全需求，公司也在着手探索私有化部署 LLM，好在目前开源模型无论是部署成本还是推理效果都凑合，而且大部分业务 RAG 加 Prompt Engineering 足够</p>

<h1 id="mainline">Mainline</h1>

<p>去年的预期是按兵不动，除了老家的资产处置想办法推一推之外避免整其它的活。实际上也跟预想的差不多，老家的资产处置终于有了些进展，春节计划回去再看看；其它重大决策今年突出一个能拖就拖，当然也为此没少跟父母争吵，没办法，就目前这个形势包亏的，甚至存在归零风险。好不容易卷这几年下来有了那么一点存粮，在这么个大环境下可一定要万分谨慎，不然恐怕真的要挨斩杀线了（</p>

<p>去年买的房子三月前后倒是租出去了，租金也完全足够覆盖贷款，估计明年暂时也用不上，还是接着租吧。旁边的医院和公园进度也算喜人：医院差不多竣工了，明年年底左右开始营业；公园一期工程也开始了，预计明年上半年就能耍上，二期就不急了慢慢来</p>

<p><img src="../assets/images/about-my-2025/park.jpg" alt="" /></p>

<p>年中去了香港（算是这辈子第一次出海关吧，虽然前后加起来也不到八个小时）办了几张卡。虽然是本着机票效益最大化的想法做的，不过也顺便把能开的账户之类都开了，后续也计划一下，考虑增值 / 灵活性 / 风险规避之类有没有能够用的上的地方</p>

<p>其它的，目前暂时对明年主线怎么推还没什么想法，大方向应该还是求稳吧，不过或许会有几个机缘可以抓一下</p>

<h1 id="health">Health</h1>

<p>身体总体上比去年好一点，主要归功于确实瘦了一些。买了体脂秤，要向着 20% 以下的体脂率努力。弓箭耍了半年余，30 米基本上勉勉强强，可惜后面公司的事情忙了起来，加上开销确实略大暂时搁置了，Flag 也是理所当然的没立住，明年再搞</p>

<p><img src="../assets/images/about-my-2025/archery.jpeg" alt="" /></p>

<p>今年当然还是逃不过例行看牙，重做了口腔 CT 结果还是发现有几个侧面情况不太好，补了一个感觉也不是很满意，在某些特定情况下还是略有不适，明年可能还需要再收拾一两次。大家还是要注意口腔健康，尤其是记得刷牙之后使用牙线 / 冲牙器清理缝隙啊</p>

<h1 id="play-around">Play Around</h1>

<p>今年比去年浪的狠多了。一直想去的「泼墨漓江」达成了 <a href="../guilin-experience/">Guilin Experience</a></p>

<p><img src="../assets/images/guilin-experience/2100003.jpeg" alt="" /></p>

<p>一直想见的🐦和🐰终于见到了 <a href="../vacation-2025-1/">Vacation 2025.1</a>（不过这张图其实是八月份的</p>

<p><img src="../assets/images/vacation-2025-2/0810.jpeg" alt="" /></p>

<p>还有王子和安静等等也都见到了 <a href="../vacation-2025-2/">Vacation 2025.2</a>，总的来说真的是玩的很开心的一年</p>

<p><img src="../assets/images/vacation-2025-2/0824.jpeg" alt="" /></p>

<p>明年目前计划中的 Live 的大概四五场的样子，包括 ChiliChill、银临、黄黄、🐦和🐰应该都有戏，其它的除了旺季之前挑战一次当天来回九寨沟之外暂时没其它想法，老板们有想法可约（</p>

<h1 id="collection">Collection</h1>

<p>例行更新一下宅男快乐柜。由于空间确实非常紧张，今年开预售的流萤手办就没买了（目前大概只想要花火和风堇</p>

<p><img src="../assets/images/about-my-2025/collection.jpeg" alt="" /></p>

<p>除了 Gadgets 2025 和 Vacation 2025.1 / 2025.2 里面提到的小玩意和碟，今年新买的塑料小人和设定集：</p>

<ul>
  <li>第二排：拿弓的「三月七·存护」和端茶的「三月七·巡猎」，以及夹在中间的「黍」</li>
  <li>第三排：符玄（斯哈斯哈）和右边小格子里的青雀</li>
  <li>最下面设定集里面觉得最好的两个是《大地巡旅》以及黑猴的《影神图》，其它的还有（大致按收货日期排序）：
    <ul>
      <li>《新神榜：杨戬》艺术设定集</li>
      <li>《小倩》官方艺术设定集</li>
      <li>《雄狮少年 2》电影艺术设定集（因为柜子空间耗尽，所以跟 1 的一起放到其它地方去了</li>
      <li>《哪吒之魔童闹海》艺术设定集</li>
      <li>《崩坏：星穹铁道》纪念册</li>
      <li>《聊斋·兰若寺》设定集（也是因为没地方所以没摆出来</li>
      <li>《平安百物语》设定集 Reset（白嫖，没想到等了这么久竟然没咕咕咕，不过翻了一下内容好像也没特别大变化</li>
      <li>《明日方舟设定集》Vol.3 + Vol.4（也是连同前面几本一起放到其它地方去了</li>
      <li>《浪浪山小妖怪》设定集</li>
    </ul>
  </li>
</ul>

<p>还有 12 月收到的一张碟《一》（感谢虾滑老师撮合）以及还在路上的《童话入侵计划》和《独白》，后面 Vacation 2026.1 再晒</p>

<h1 id="game">Game</h1>

<p>YYS 3000、3333 天了，人明显越来越少，而且今年也没整出什么好活，明年 1.22 终末地出来看看情况，要是靠谱说不定真就把 yys 弃了</p>

<p><img src="../assets/images/about-my-2025/3000.jpeg" alt="" /></p>

<p><img src="../assets/images/about-my-2025/3333.jpeg" alt="" /></p>

<p>HSR 今年的剧情里面 3.1 3.3 真的超赞，下面缇宝的剧情简直看哭 <a href="https://www.bilibili.com/video/BV1ctP7epEQw/">BV1ctP7epEQw</a>，草民将其评价为今年最佳</p>

<p><img src="../assets/images/about-my-2025/311.jpeg" alt="" /></p>

<p><img src="../assets/images/about-my-2025/312.jpeg" alt="" /></p>

<p><img src="../assets/images/about-my-2025/313.jpeg" alt="" /></p>

<p>风堇和赛飞儿的剧情也是真的非常好，尤其是下面这个设定真的非常巧妙。<a href="https://www.bilibili.com/video/BV12HJBzHERG">版本 EP「拂晓」</a>这首歌个人也觉得是今年的几首歌里最好的</p>

<p><img src="../assets/images/about-my-2025/331.jpeg" alt="" /></p>

<p><img src="../assets/images/about-my-2025/332.jpeg" alt="" /></p>

<p>后面 3.7 可以说是草民见过的最天才的一次运营操作（虽然 3.7 剧情个人觉得是有一点拉了，当时纠结了半天氪了一把弓，还被两个小保底歪没了；但是后面 3.8 那个节奏出来，突然又觉得这个弓氪的还挺值的，而且 3.8 的剧情还是挺不错的，虽然就是抽卡又歪小保底</p>

<p><img src="../assets/images/about-my-2025/37b.jpeg" alt="" /></p>

<p>还有些值得一提的大概是上半年《明末：渊虚之羽》（可惜开局翻车）和下半年 SC2 国服回归，虽然也没什么心思玩，年纪越大越电子那啥</p>

<h1 id="entertainment">Entertainment</h1>

<p>除夕之前崩铁还整了个新春会（叔叔这套 Festival 模板整的还挺好），里面🐰这首<a href="https://www.bilibili.com/festival/HSRSF2025?bvid=BV1sKfhYjE5q">《幻境中》</a>着实带劲。说起来还有点怀念「狐斋志异」这个活动了，文案各种梗信手拈来，玩法也挺有意思。后面也就「初花习剑录」有这感觉，今年的活动玩法倒是各有亮点但剧情还是差点味道</p>

<p><img src="../assets/images/about-my-2025/hsrspring.jpg" alt="" /></p>

<p><em>可以组一辈子的捉鬼小队吗</em>（可惜 mygo 这个梗晚了俩月才出来</p>

<p>叔叔今年的年货呢，几个小剧场都挺对味，主线故事也水平在线，鬼畜全明星回归更算的上惊喜，这些比起去年来说算是提升相当明显。但是音乐节目草民就觉得恰恰相反了，光从播放量看跟之前比都低了非常多，马上要一年了也不过一两百万（上面这个都快 350w 播放了）。这里面尤其是命题作文真的完全听不进去，各方面都远远不如 2023 年虚拟区年货那首<a href="https://www.bilibili.com/festival/VSF2023live?bvid=BV1Zv4y1C7Ty">《到深空更深处去》</a>；其它的歌个人感觉也都平淡了一些，幸亏还有一首<a href="https://www.bilibili.com/festival/bnj2025?bvid=BV1tsfpYwEt2">《六耳》</a>非常非常亮眼，终于还算是撑住了场子。怎么说呢，去年毕竟第一次还能理解，但今年还是觉得丢了噩梦那种神韵之后又没拿出新的东西顶上，加上 B 站重心偏向跨年晚会，出现这种结果也不意外……还是希望一个半月之后新的年货能有更好的表现</p>

<p><img src="../assets/images/about-my-2025/6.jpg" alt="" /></p>

<p>春晚版《春意红包》真的是狠狠吃了个大份的。词改了也就算了，重新编的那个曲是什么一坨给人气死，后面 B 站还有一大堆二创，越看越烦。这几年拿拜年祭老歌硬整的新活就没一个像样的，之前《横竖撇点折》，这次《春意红包》，不知道下次又轮到哪个倒霉蛋</p>

<p><img src="../assets/images/about-my-2025/sf.jpg" alt="" /></p>

<p>例行看的动画电影：《浪浪山》最佳。《Zootopia 2》很好（二刷场试了一下杜比影院但非常可惜同事一不小心选了一个中配）。《哪吒 2》还行。《兰若寺》只能说相当一般，追光连续两年端上来的东西都这个水平了，明年又开新坑……其它电影零零散散看了一些，《捕风捉影》确实带劲，《阿凡达 3》特效不错，其它的就感觉也都一般般，没什么很值得专门提的。今年国产片和进口片榜首都是动画电影，也是很难绷</p>

<p><img src="../assets/images/about-my-2025/l.jpg" alt="" /></p>

<p>叔叔这个年报今年直播的权重高了好多（毕竟这个真赚钱的），结果🐰虽然投了挺多币但只剩一个隐藏小视频（小院这个《求职》说是</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/b1.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/b2.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/b3.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/b4.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>🥚</td>
      <td>🏠</td>
      <td>🐒</td>
      <td>🐰</td>
    </tr>
  </tbody>
</table>

<p>今年☁️用的就少一些（因为下午晚上基本都在🍤和🥚那里黑听），偶尔听歌的时间依然还是毫不意外的，除了难忘今宵之外大部分都给了🐰</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/1630.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1631.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1632.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1633.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>年中的一个活动</td>
      <td>今年的年度歌手</td>
      <td>老宇航兔了说是</td>
      <td>难忘今宵这一块</td>
    </tr>
  </tbody>
</table>

<p>另外的几个统计其实也蛮有意思，比如年报还能联动，以及后知后觉的发现今年收了《竹梦令》实体之后真的是狂听了好一阵，还有⛄️冒泡</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/1634.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1635.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1636.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>🪭竟然不是阿离</td>
      <td>🎋这张碟真的神</td>
      <td>⛄️明年多营业啊</td>
    </tr>
  </tbody>
</table>

<p>顺便今年☁️十年了，刚好两位关注十年截图，这波真的是十年老粉了。过一两个月还会有新的一大批关注十年来袭（</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/1001.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/1000.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>竹桑</td>
      <td>银临</td>
    </tr>
  </tbody>
</table>

<p>最后，年底看了一下游戏与娱乐相关的开销，miHoYo 那块还好，但叔叔那块花的钱确实还是有些多了，明年要控制一下这方面的相关支出</p>

<h1 id="projects">Projects</h1>

<p>luci-app-xray 目前 789⭐️，估计农历新年上 800 应该不成问题。今年在这块儿主要做的事情：</p>

<ul>
  <li>完善 luci-app-xray 的 Dynamic Direct，修复一些问题的同时增加了针对 DNS 的前置处理</li>
  <li>为了应对 DoH 越来越差的可用性，魔改了一番 cloudflared 实现 DoH3 0RTT，并增加一些针对性的策略（针对谁就懂得都懂</li>
</ul>

<p>出来的效果还不错，后续可能也会介绍一下 luci-app-xray 在分流上做了哪些事情以及跟 cloudflared 的搭配</p>

<p>RSS Pipe 加了 pyo3 实现了更灵活的内容处理（这个 crate 超级好用，强烈推荐），以及一个简单的类「文件传输助手」的功能，顺便利用 iOS 快捷指令实现了文字（主要是链接）和图片的分享，差不多是想象中完全体的六成水平，明年应该会进一步扩展 pyo3 的应用实现 bot 和 LLM 接入什么的。今年早些时候 Fish 4.0 如期发布、年底 Rust for Linux 实验通过进入正式状态，Rust 绝对是值得长期投入的</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/about-my-2025/list.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/notification.jpeg" alt="" /></th>
      <th><img src="../assets/images/about-my-2025/share.png" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>列表</td>
      <td>通知</td>
      <td>分享</td>
    </tr>
  </tbody>
</table>

<p>龙芯今年没怎么折腾，不过值得庆祝的是 Debian 正式把 LoongArch 加入官方支持了，以及 AOSC OS 终于把 Python 2.7 相关的依赖都去掉了。其它值得一提的大概是在 Volterra 上跑了 <code class="language-plaintext highlighter-rouge">Qwen3-VL-30B-A3B-Instruct-UD-Q4_K_XL.gguf</code> 偶尔玩一下，过程颇费了一些周折（只能用 MSYS2 里面的），可惜 Volterra 内存还是太小，还只能拿 CPU 硬算（10 Token/s），多模态也慢的基本没什么实用价值，纯图一乐吧</p>

<h1 id="gadgets">Gadgets</h1>

<p>端午节如期更新了 <a href="../gadgets-2025/">Gadgets 2025</a>，下半年买的东西呢：</p>

<ul>
  <li>Redmi Buds 7S：降噪在骑车的时候会自己莫名其妙的关掉，音质调的也不是很好（感觉跟 AirPods 4 那种两头翘的曲线刚好反过来</li>
  <li>Switch Lite 和 iPhone SE 电池：都还行，顺便 iPhone 16 Pro Max 的电池健康终于掉了三个点</li>
  <li>小米 BE6500 Pro：25 年年初生产的旧版本，2.4GHz 差一点，其它还行，自带中枢网关很方便，就是太高刚好塞不进电视柜下面；买了最后那个拆分线之后腾出来一个电源插座，就扔电视后面了，没想到效果意外的非常好，顺便还优化了 NAS 跟 Volterra 的通信</li>
  <li>AirPods 4 ANC：不到 1100 买到，各方面都不错，也没有上面那个自动关掉降噪的问题</li>
  <li>Logi Bolt Type-C 接收器：强迫症解决方案 +1，确实很好用，而且感觉比之前 Type-A 的稳定性也好一些。说起来 MX Master 3S 的主滚轮有点不顺畅了，拆开清理发现轮子下卡了一大团毛毡 = = 然后满血复活，这个鼠标还是挺易于维修的就是得自己买一套脚贴</li>
  <li>偏振镜：有用，不多，Vacation 2025.2 里面提过没 Diff 成，下次一定</li>
  <li>QCNCM865 无蓝牙版：R86S 上完全认不出来，龙芯上倒是没问题，只能怀疑是某个供电引脚之类的定义不完全准确吧。不过在龙芯上用着似乎信号好一些，但因为客户端电源管理的问题 Ping 延迟还是偏高，大概会留到后面把 R86S 换掉的时候用上</li>
  <li>四姑娘山捡到的红点：据说是装在相机上用来打鸟的时候快速构图的，有点意思</li>
  <li>补光灯：趁双十一入手的，以后拍塑料小人观感会好很多</li>
  <li>小米体脂秤：一步到位的八电极版（不知道为什么手柄上要放四个），折腾一年 BMI 降了一点但还是不太够</li>
  <li>水月雨 NiceBuds：性价比确实相当爆炸，虽然 AirPods 4 听习惯了确实感觉这个有些差距。黑白各买了一条支持一下本地企业</li>
  <li>翰林阅 Free2：为了把七月份买的两个🐰键帽用上，以及清理一下🐶东豆子买的，除了自带的矮青轴极烂（还好能换）之外还不错</li>
  <li>小米 BE3600 2.5G 版：小竹 140 收来发现不能刷 OpenWrt 就不想要了，遂一百块拿回来。试着扔在客厅当无线 Mesh 子节点，效果比预期的还好一些，不过把 BE6500 Pro 从次卧挪到电视下面之后就用不到再开 Mesh 了，遂回盒子里继续当备用设备</li>
  <li>12V 5.5 x 2.5 拆分线：有效释放弱电箱 / 电视柜等地方的电源插座，强烈推荐，直接促进了草民入住以来家庭网络最大一次优化</li>
</ul>

<p>更具体的内容就还是明年端午见啦。</p>

<h1 id="finally">Finally</h1>

<p>感觉现在生活算是相当稳定，甚至明年都不想立什么 Flag 了，但还是照例：</p>

<ul>
  <li>明年目前觉得还是不适合做关键决策，所以还是谨慎为主，苟过周期</li>
  <li>上面提到的几个机缘还是要关注一下，有的选的时候不要让自己后悔</li>
  <li>支线：依然是重点关注身体健康情况，日常迭代项目也继续保持推进</li>
</ul>

<p>最后依然送上草民真的很喜欢的《流年如歌》，希望大家新的一年越来越好。</p>

<iframe src="//player.bilibili.com/player.html?aid=94304902&amp;bvid=BV1BE411p7oi&amp;cid=161422087&amp;page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" height="600px" width="100%"> </iframe>]]></content><author><name>yichya</name></author><category term="Life" /><category term="life" /><summary type="html"><![CDATA[年常系列。开头惯例，先看一下今年 Blog 更新计划完成咋样：]]></summary></entry><entry><title type="html">Vacation 2025.2</title><link href="https://www.yichya.dev/vacation-2025-2/" rel="alternate" type="text/html" title="Vacation 2025.2" /><published>2025-11-30T00:00:00+08:00</published><updated>2025-11-30T00:00:00+08:00</updated><id>https://www.yichya.dev/vacation-2025-2</id><content type="html" xml:base="https://www.yichya.dev/vacation-2025-2/"><![CDATA[<p>上半年的 Vacation 2025.1 不仅拖到了七月，而且现在回过头看感觉内容写的太少了，一件事就一两句话还是多少有点过分，于是 Vacation 2025.2 就早一点开始写，稍微丰富一点内容（虽然流水账也不太可能真指望上什么丰富内容），然后尽量在 11 月底左右发出来吧（</p>

<p><img src="../assets/images/vacation-2025-2/invitation.jpeg" align="right" style="width: 320px; margin-left: 0.5em;" /></p>

<h1 id="712-上海">7.12 🐰上海</h1>

<p>关注🐰也三年多了，这场线下真的是期待已久。🐰这一场印象中应该是年初预告的，当时就说了应该会跟 <a href="https://space.bilibili.com/402923390">BW</a> 安排在一起，可惜草民对 BW 实在是提不起兴趣，没办法，年纪大了，这类二刺猿展会实在是没体力跑了。当然这个安排没毛病，毕竟很多人会愿意白天 BW 晚上顺便看个演唱会，但 <a href="https://www.bilibili.com/video/BV1jj8yzLEWo">BML</a> 毕竟门票也有限还有点挑受众（比如草民真的是人都认不全，而且不太想去拼盘），所以 up 们自己开专场倒是也刚刚好。话说回来，跟🐦不一样，🐰这轮线下都是自己真人上台，然后还就戴一个跟面纱一样薄、只能当作时尚单品对待的口罩（因为戴不戴根本没什么区别，尤其是<a href="https://www.bilibili.com/opus/1107161836415877123">广州场官图</a>那个大白牙一清二楚，笑死）；以及草民完全没想到 SVIP 票竟然如此难抢，就草民这秀动未尝一败的操作还是没赶上，后面还被那个候补机制坑了一手。实话说当时甚至都有点不想去了，但又觉得天知道🐰还有没有下次，而且 VIP 多少还是有个签名海报……所以纠结一番之后，还是花了加起来得有十倍门票价格的机票酒店钱（当然结果就是出票顺序也相当靠后，最终跑这一趟的 ROI 完全低到没眼看</p>

<p>就像上面说的那样，演出前几天逐渐刷到了 BW 期间一堆 up 在上海开线下 Live 的计划，光草民知道的就还有 <a href="https://www.bilibili.com/opus/1059339941843042311">MeUmy</a> 和 <a href="https://www.bilibili.com/opus/1076872258163572736">Akie 秋绘</a>，🐰这个也是 BW 开票之后很快门票就卖完了（唯一一场卖完票的，各档加起来应该有 1000 多张的样子；另外两场应该都是 400 张左右，其实算是还可以了，而且票价不低成本不高，算下来说不定还能有点利润）。7.12 当天魔都天气相当差，前脚晴间多云，转个头可能马上就是大到暴雨。飞机落地耽误了巨久时间，中午一点才跟老同学吃上了饭，完后顺便逛了一下附近某个 Sony 旗舰店（有一说一 Sony 的电视现在看感觉也就一般）。顺便一算，贵协成员似乎只剩两三个在魔都（草民刚毕业那会儿可能还有五六个），还有另外两三个在广东的，剩下一大把得有十来个人都在帝都，也不知道为啥</p>

<p><img src="../assets/images/vacation-2025-2/sony.jpeg" alt="" /></p>

<p>环境又热又潮，前一天又没怎么睡好，反正就突出一个药丸。下午本来想回去睡会儿，但是又被堵在回酒店的路上，只来得及换个衣服就直奔场地了。场地倒是还不错，但是大概因为是第一次的关系，入场的安排真的是一团糟，其他流程上的问题也比较明显（比如周边在场内销售，导致羽织这类热门周边直接被 SVIP 通吃。是草民不想买 SVIP 嘛，根本抢不到啊）。各种因素叠加起来，到快开始的时候人整个都已经麻了，然后就看见第一套那个自己 cos 自己的造型，当时真的没绷住……好在🐰线下还是相当稳（抛开忘词和口胡不谈的话，当然这些倒是本来也不算啥大问题），而且毕竟第一次，勉勉强强算一个及格水平吧。除去上面流程问题也多少想吐槽一下某一位嘉宾，但是不展开说了</p>

<p><img src="../assets/images/vacation-2025-2/0712.jpeg" alt="" /></p>

<p>上面那个合影只能评价为跟🐦那个一样进行了一些很糟糕的切角（以及包看不到草民的，下面北京场倒是很容易找到）。出来的比较早（草民六月那会儿还认真考虑过当时看见 SVIP 排队会是个什么心态，结果真到那时候反而完全没啥想法了，只想赶紧溜），顺便线下真实某🥚群群友之后按之前计划的去看了追光新作《聊斋·兰若寺》，评价为追光刻板印象水平，画风还行、故事不咋样，总结为仅适合家长带娃来看。最后晒出一部分周边（为了把这个签名海报完好无损带回来，草民甚至拿了个专门装海报的纸筒过去，结果只能评价为有用但没必要</p>

<p><img src="../assets/images/vacation-2025-2/0713.jpeg" alt="" /></p>

<p>第二天回来，刚好体验了一下 C919，评价为跟 A320 几乎感觉不出什么体验上的区别，这么看应该可以说相当不错。飞机上的小装饰、飞机餐这些都很有特色，拿了个装垃圾的小纸袋子回家收藏了（</p>

<p><img src="../assets/images/vacation-2025-2/c919.jpeg" alt="" /></p>

<p>然后隔天北京场的预告就发出来了 = = 有一说一，去北京的成本相对低一点，有大把朋友叙旧，还可以顺便回趟家、处理一些之前逃离帝都那会儿遗留的小问题什么的，要是早点说八月份还有个北京场的话，草民大概率七月上海场就不去了，改为去 8.2🐦那一场（虽然一个月里前后脚跑两个巨远的地方也有点说不过去，再考虑一些其他原因，总之也不太可能真这样安排）。简单考虑了一下，决定抢到 SVIP 就去</p>

<p><img src="../assets/images/vacation-2025-2/ticket.jpeg" align="right" style="width: 160px; margin-left: 0.5em;" /></p>

<h1 id="89-北京">8.9 🐰北京</h1>

<p>从上海回来，时隔不到一周再次抢票。这次倒是轻松回收了上面的 Flag，抢到了个甚至还挺靠前的 SVIP（秀动这个纪念票编号的最后三位数就是出票顺序号）。虽然后面看 SVIP 还是一下就没了，现场也是好多人候补上的，但是整体比起上海还是容易太多了。那么按上面说的提升一下 ROI，用一天年假顺便回趟家，然后在帝都见些老朋友，顺便抽空处理个遗留问题（把当时没提干净的医保存折都提出来，帝都医保 2022 年 9 月之前的钱都能提现</p>

<p>起初是想直接飞到正定机场看看，但发现从正定机场回家着实有些麻烦（这地铁到底怎么修的真离谱啊），于是改为体验一下七月新开的动卧 D968，上铺比飞机便宜一百多（下铺要再 +90，就跟飞机差不多了），比高铁二等座只贵十块钱。很有意思的是还有个人拿他在隔壁的下铺跟草民的上铺换了（应该是对小夫妻吧大概，想尽量在一个包间里面），就血赚。这动卧还真不错，主要是考虑时间成本的话性价比真的拉满，就是草民这一趟空调太差劲（今年这天气是真离谱吧，哪儿都是又潮又热），最终还是完全没睡好。中间有好多个车站都一停半个多小时，大概是为检修车让路 / 到站尽量是个天亮（事实上也确实是刚好天亮），估计要是不考虑这些的话八个小时肯定是能压进去的</p>

<p><img src="../assets/images/vacation-2025-2/0807.jpeg" alt="" /></p>

<p>从火车站出来骑电动小蓝出去瞎溜达了两个多小时。修这个咱也不知道几号线地铁把友谊大街给堵了个死死的，当然对草民来说显然是好事（毕竟现在又不住这儿，地铁真修好了显然有利于草民房子出手，当然也别指望真能利个多少吧）。除此之外有一说一，二环内西北角（主要是和平路以北那一部分）变化还挺大，其他的地方倒是一如既往。午饭和晚饭直接选了两个个人必吃榜：某本地品牌炸鸡 + 某本地连品牌都没有的炸鸡，这两家真的是干了 20 多年没挪窝，味道也一点变化没有，甚至后面那家人都没换，一眼就能认出来，怎么想都很夸张。</p>

<p><img src="../assets/images/vacation-2025-2/0808.jpeg" alt="" /></p>

<p>隔天早上到帝都（走之前才想起来空调忘了拔下来了，害），中午在二环堵了一个小时终于见到了几位老朋友。一起到之前经常去的牡丹园海底捞吃了一顿，然后听到个挺令人震惊的事情（当然这里不是很方便讲），以及吃到了近几年吃到过的最难吃的一只脑花（真的差点吐出来那种）。出来顺便小坐了一下某位大佬前一天刚提的 YU7 Pro，有一说一这车个人就是觉得这个长车头的造型看不习惯（屁股也有点怪吧但是没有车头这么不顺眼），除此之外是真香啊，尤其是这位大佬选的 Pro 个人觉得真算是除了审美上的偏好之外没啥可挑剔了。</p>

<p><img src="../assets/images/vacation-2025-2/yu7pro.jpeg" alt="" /></p>

<p>下午抽空带着之前的医保存折找了家北京银行全提出来。有一说一上家不知道怎么搞的多给交了俩月，这波刚好把这次来帝都的开销完全覆盖了。存折好就好在自带强制流水展示，看着上面一行行「结息」越来越少越来越少就，耐人寻味。然后就是直奔场地买场贩（今天这个天气更不给面子了，大太阳晒一下午，还不如下点雨呢），以及晚上见🐰啦。</p>

<p><img src="../assets/images/vacation-2025-2/0809.jpeg" alt="" /></p>

<p>这次在流程、造型这些上次问题比较严重的地方做了很有效的优化（说起来这个造型啊，后面🐰有一次直播说上海场第一套衣服的造价比后面所有场次的衣服加起来都要贵，真是……），加上这次抢到了 SVIP，最终整体体验真的非常好。上面的大合照感觉也好一些，至少不切角了。总结为不虚此行，很开心（当然还要特意晒一下 SVIP 特典，尤其是成本算下来差不多是原价 100 倍的这张碟</p>

<p><img src="../assets/images/vacation-2025-2/0810.jpeg" alt="" /></p>

<p>最后一场 8.30 在广州，有一说一这日子选的确实有点不太好，甚至更惨的是当天广州还有一个阵容相当豪华的 AniSonic 全息演唱会（虽然草民对这个阵容没兴趣，而且据现场群友反馈，拼盘也就算了还是预制拼盘，票价还高的离谱，中间还出了一些视频放错了的问题 = =</p>

<p><img src="../assets/images/vacation-2025-2/0830.png" alt="" /></p>

<p>至于草民自己，实话说五月份已经跑过一趟🐦的广州场，这次实在是不好找摊平 ROI 的手段了。本来想立一个「如果当天爹妈已经回石家庄了，并且那时 SVIP 票还有剩就去」的 Flag，但这两个条件最终都没有满足，那只好期待一下之后更大的舞台再见（不过有一说一广州这一场吃的真好啊，歌单换了好多歌，时间也比前面两场都要长不少……笑死，为什么又是只要遇到皮套人就运气不好系列，算了问题不大</p>

<p>说到皮套人运气不好……8.8 那天🐦还在直播里面说明年可能会搞降低成本、提升覆盖面的 Livehouse 形式的巡演。有一说一这种确实比起🐦那两场大场地的靠谱，而且那个现场动捕是真没必要，so 许愿一个真人上台 + 有类似🐰这种 SVIP 特典环节吧（虽然感觉可能性不大</p>

<h1 id="823-黄黄">8.23 黄黄</h1>

<p>距离上次「人间」已经两年了，说天天盼可能有点夸张但确实一直都想能再来一次，尤其是新专辑《今日无事》发了之后就更加期待会不会有新的巡演安排。没想到很快，四月就等到了这个，而且第一批就安排上了成都，狂喜。这次的形式官方称之为「幕剧音乐会」，简单的说就是利用一些舞台剧表演把歌曲作品串起来。从这次的场地选择来看，比之前的 Livehouse 要高端不少，着实让人感觉十分期待</p>

<p><img src="../assets/images/vacation-2025-2/bif.jpeg" alt="" /></p>

<p>成都开始售票在 7 月 5 号。草民刚被上次抢🐰的 SVIP 失败那回搞到怀疑人生，黄黄这个前面两场抢票似乎也十分凶残（虽然草民之前帮虾滑老师顺手抢了一张，感觉也没有很难，这事儿当时还让草民自信爆棚……然后就被🐰教育了），但这次却意外的成为了很证明抢票手速的一次：7 秒付款，个人觉得很快了，但实际还是天外有天，闲鱼上一看到处都是三四秒那种。8.18 中午出座位号，虽然事实证明确实有 80 多个人比草民手速快（说明🐰那儿第一次失手也不算太离谱），但结果刚好在这个基本上是全场最佳的位置：不仅很靠中间，而且比起前面「乐池」四排来说不用一直仰着头，也不会像后面过道那样可能被抽到互动，社恐人很开心（虽然实际上跟预想的可以说完全不一样</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/vacation-2025-2/seat1.jpeg" alt="" /></th>
      <th><img src="../assets/images/vacation-2025-2/seat2.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>号码</td>
      <td>位置</td>
    </tr>
  </tbody>
</table>

<p>起初还是计划拉上马哥和维洲一起，不过马哥运气不太好第一次开票没抢到，第二次草民人刚好在🐰北京场结果所有人都把这事儿忘的死死的，维洲也因为类似原因两次都没安排上。本来以为没希望了，但是非常意外的是演出前一天出了一个比较难绷的事情：有一小部分相当好的座位主办方之前以为不能卖，然后发现实际上可以卖，那天晚上就突然拿出去卖了 = = 最后甚至还没卖完。虽然这个事情让几个群里的一大堆没开出好座位的人非常破防（有一说一这事儿确实是干的不地道），但是也因此让马哥有机会捡漏，最终还开到了一个非常好的位置（甚至后面他还在现场换到了一个更好的位置，视野比草民的还要好一些）。维洲就比较可惜，当天行程冲突彻底没机会了，下次一定（</p>

<p>下午也是又见到了虾滑老师并得到了他精心制作的 PCB 板（真有创意啊，下面晒一下）。然后直接快进到看完的感受：完完全全 next level</p>

<ul>
  <li>跟之前看过的那些 Livehouse 比完全是碾压式的体验
    <ul>
      <li>形式和内容都可以说无可挑剔，狠狠让草民这个没吃过细糠的被震撼了一把</li>
      <li>中间有好几幕真的美哭，可惜这些地方都不允许拍照（跪求后面放个官录出来吧</li>
    </ul>
  </li>
  <li>场地本身的硬件条件也是绝对没有异议的顶级，舞台和音响效果都是极佳
    <ul>
      <li>不过草民那个座位实际跟乐池一样高，手机拍照效果一般，马哥那个靠后一点的位置要好很多</li>
      <li>还有一点是这个位置比草民想象中更偏左一点，而且因为比较靠前，看舞台左右的提词器有点费劲</li>
    </ul>
  </li>
  <li>万万没想到草民所在这一排还真被黄黄抽到互动了，然而草民本质上还是个 i 人，完全没反应过来
    <ul>
      <li>马哥那一排也有演员互动（虽然他没有拿到宝玉撒的糖），只能说他实在是各种意义上的血赚</li>
    </ul>
  </li>
  <li>然后还一定要强调一点是林妹妹那个演员实在是太可爱了，真的是完全长在草民的审美上那种，最后返场怼着拍（放一个<a href="https://www.bilibili.com/video/BV1NaxiztECn/?p=2">花絮</a>在这里</li>
</ul>

<p><img src="../assets/images/vacation-2025-2/0823.jpeg" alt="" /></p>

<p>最后还是感谢各位神仙投喂（这次也是拿到了老粉证明系列）和赞助商支持（草民的香水只剩小半瓶了！！！马哥那个还有一大半！！！）</p>

<p><img src="../assets/images/vacation-2025-2/0823.jpg" alt="" /></p>

<p>现在就真的期待明年能安排在重庆一场吧，或者有什么其他不太远 / 没去过的地方也可以考虑（今年武汉就真的不跑了，预算实在是爆炸了</p>

<p><img src="../assets/images/vacation-2025-2/list.jpeg" align="right" style="width: 246px; margin-left: 0.5em;" /></p>

<h1 id="824-王子">8.24 王子</h1>

<p>这个也是盼了很久很久，不过没想到第二场就在成都还是很惊喜的。虽然吧，杭州场有的《东风第一枝》这次给 Roll 下去了，有点怨念</p>

<p>这次还准备了各种预热，比如曹操专车的开屏和车载广告，以及万达投了几天的大屏。但是这个大屏每天都在出各种问题，真的十分无语：</p>

<ul>
  <li>第一天中间一小块是坏的</li>
  <li>第二天群友反馈轮播内容不见了</li>
  <li>第三天下午确认一切正常（下午王子还去亲自打了个卡
    <ul>
      <li>于是晚上骑车过去，结果整个屏幕都关掉了，给人气的头疼。然后偶遇一位芦荟并获得投喂的扇子一把（话说回来，这位朋友也跟马哥一样捡漏到了黄黄前一天开的好座位，笑死</li>
    </ul>
  </li>
  <li>最后一天也没时间去了，看群友返图更离谱，中间两排全坏了……这个万达实在是多少有点离谱</li>
</ul>

<p>中午过去排队，发现这帮人的成分都贼复杂：起码看见三个「今日无事」的包，还有「雾的 19 日」和「山色有无中」的袋子，还有人前一天刚买了「入梦」的衣服今天就穿来的（怎么到处都是这帮人啊，害）。这次两个嘉宾，小随不太熟（毕竟草民几乎不听男声没办法），以冬可是老熟人了而且近期也经常出现在各种拼盘里面，这次能在线下见到也是十分幸运</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/vacation-2025-2/0824_1.jpeg" alt="" /></th>
      <th><img src="../assets/images/vacation-2025-2/0824_2.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>王子</td>
      <td>以冬</td>
    </tr>
  </tbody>
</table>

<p>然后还是快进到看完的感受：本来还觉得前一天刚吃过细糠，再回来听 Livehouse 会不会感觉有落差，虽然事实上确实能感觉出来场地硬件水平的差距很明显，但王子一开口这种担忧瞬间烟消云散，甚至王子这个看完回来之后，比前一天黄黄的感觉戒断更严重一些（毕竟气氛大概是 Livehouse 跟剧场的最大区别 + 它独特的魅力所在</p>

<ul>
  <li>现场是真的太稳了，真的完全跟 CD 一模一样那种稳，这就是科班出身的专业实力啊</li>
  <li>王子真的很擅长跟观众互动、活跃气氛，大概是早年 YY 加上现在🎵直播练出来的本事</li>
  <li>上面吐槽的没有《东风第一枝》后面补了一点清唱，也行（完整版就刚好以后留个念想</li>
  <li>live 凑不够时间各种拖的经常有，头一次见中间几乎没怎么停，然后还加班加半个小时的
    <ul>
      <li>结果后面的签名 + 合影环节，还因为王子实在太好说话结果拖了两个多小时才弄完 VIP……</li>
    </ul>
  </li>
</ul>

<p>那么最后是例行合影（几乎是刚好把这个场子塞满了，所以说这次的票确实卖的挺不错的</p>

<p><img src="../assets/images/vacation-2025-2/0824.jpeg" alt="" /></p>

<p>然后晒一下签名（以及还是忍不住想吐槽一下官方售卖的明信片和书签着实是贵的离谱了</p>

<p><img src="../assets/images/vacation-2025-2/0825_1.jpeg" alt="" /></p>

<p>当然还要感谢各位神仙的投喂（</p>

<p><img src="../assets/images/vacation-2025-2/0825_2.jpeg" alt="" /></p>

<p>以及同样期待明年再来一个川渝地区的场次吧，这次成都的票卖的还不错，应该下次还能安排上附近的场次。话说回来北京场开票之前刚好是广州那个大拼盘，看🍠上似乎是狠狠圈了一波粉，这次北京场卖的更是相当不错。可惜草民肯定安排不上了，八月刚去过北京而且 9.20 还有下面这个里少的（说起来非常巧，10.19 武汉的场次也跟里少的南京场撞了，当然主要原因大概还是里少时间安排太密集，江浙沪连续三天可还行，可惜王子武汉这场也真没预算支持了……虽然也想过如果恰好又是跟黄黄前后两天的话也不是不行，但实际上隔了俩星期</p>

<h1 id="920-里少">9.20 里少</h1>

<p>这次抢票使用了一点小技巧（指支付宝小额免密），成功 4 秒付款抢到了 VIP 001，然而这一场线下排队所以抢到这个并没有什么用（</p>

<p>这次的场地跟上面王子那个是同一个，今年来这个场地都三回了（而且又是例行见到了一堆熟人，这次到处都是芦荟，上次到处都是卿卿，怎么来来回回都是你们啊）。有一说一跟去年比感觉到了很明显的场地音效加成（东郊记忆那个 MAO Livehouse 确实是不如这个场地好），而且里少这个乐队水平确实是很不错，开场唢呐很带感，以及琵琶小姐姐太棒了完全挪不开眼睛</p>

<p>这次嘉宾是不才，9.1 公布的时候着实有点吃惊，毕竟这俩虽然都是本地人但日常都不呆在本地。这次不才换了一种很松弛的风格上来，有一说一跟六月份她自己那场比确实温和多了，上次那个风格选的多少有点致郁</p>

<p><img src="../assets/images/vacation-2025-2/0920.jpeg" alt="" /></p>

<p>说回里少，依然是跟上次一样相当稳定靠谱。歌单跟上次比换掉了很多，很适合草民这种平时听新歌很少的人。这次互动还是十分的 i 人地狱，不过这次比上次好一点至少没有那么压力观众了（草民这次一开始真的有点想不抽号码牌的，甚至还特意去晚了一些，中间还跟虾滑老师换了一下挪到了个靠后一点的位置，不过还好最终没有被抽到互动</p>

<p><img src="../assets/images/vacation-2025-2/0921.jpeg" alt="" /></p>

<p>最后也是晒一下签名并感谢各位神仙投喂（</p>

<p><img src="../assets/images/vacation-2025-2/0920.jpg" alt="" /></p>

<p>目前看起来不出意外的话应该就是今年最后一场了，然后也期待一下里少和不才的新专辑，以及希望虾滑老师心愿成真，后面里少可以安排一场在重庆（实在是需要一个理由去重庆再跟黎老板吃个饭</p>

<p>礼拜一听说熊家搞了个拼盘又有小女神又有竹桑的，嘿……更觉得七月份去上海去的有点亏了。不过本来草民也不去拼盘倒是</p>

<h1 id="1018-三星堆">10.18 三星堆</h1>

<p>三星堆的 Flag 其实也算是立下来有些时日了，但实话说还是有点远，摇不到人一起的话草民也不是很想单独跑一趟。这次刚好是某位在帝都的贵协大佬远道而来，并且是周六中午到，刚好有一下午时间可以安排，于是决定一起去康康。至于攻略不攻略的感觉也没必要，小程序上能买到门票就行了，坐城际到广汉北或者三星堆都差不多，然后打车或者公交车到博物馆门口就完事</p>

<p><img src="../assets/images/vacation-2025-2/1018.jpeg" alt="" /></p>

<p>花了大概俩小时逛完，个人的感觉其实也没有觉得那么震撼（也许是因为看了太多介绍，期望值被拉太高的关系，加上之前去过成都博物馆，对这边的早期文明也多少有点概念了），当然设计语言能保持一致这件事在那个时代确实挺牛逼的。晚上回来顺便去了一趟很久没去的锦里。提到这地方草民的态度一般都是非常抗拒，毕竟之前去的几次都是人挤人，体验实在是相当糟糕。还好这次人倒是很少，大概是因为国庆刚过没多久，以及中间最窄的那条小吃街进入了翻修流程（所以这位贵协大佬想找的菠萝饭就没机会了</p>

<h1 id="1022-九寨沟-30">10.22 九寨沟 3.0</h1>

<p>同样是跟上面这位大佬一起去的，这也导致去年立下的「明年不去九寨沟了」的 Flag 终于还是倒的干干净净。可惜运气一般般，彩林差不少火候，天气也不算好（放一张同一个位置的照片对比一下，大概都是上午十点左右的样子</p>

<table>
  <thead>
    <tr>
      <th><img src="../assets/images/jiuzhai-valley-experience/r_01_02.jpeg" alt="" /></th>
      <th><img src="../assets/images/vacation-2025-2/1022.jpeg" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>去年九月上旬</td>
      <td>今年十月下旬</td>
    </tr>
  </tbody>
</table>

<p>其他的怎么说呢，跟之前比起来就是另外补拍了几个牌子，以及去了几个没去过的地方：</p>

<ul>
  <li>原始森林（进去溜达了一圈儿大概也就花了十几分钟，感觉意义不大，走下去到天鹅海那一段更带感</li>
  <li>鹰爪洞（一个大概深度三四米的洞，岩壁上有个形似鹰爪的痕迹，是某种之前嵌在里面的石头掉下来的样子罢了</li>
  <li>五花海和珍珠滩中间，走路的话会路过一个金铃海（没找到牌子但看到高德上有人拍了，实际上看着也一般般没啥亮点</li>
  <li>去长海的路上认真盯了一下上季节海和下季节海，这次倒是多少存了点水，但也就一点点，没啥看头</li>
</ul>

<p>顺便买了个非常便宜的偏振镜，评价为有那么一点用但也有限，试图找到一组可以对比的照片结果发现忘了拍了，笑死。</p>

<p>总体上跟上回区别不大，包括刚回来一个礼拜就下雪这种事情竟然又遇上一次 = = 明年年初再找个下雪的日子挑战一次当天来回试试（</p>

<h1 id="111-四姑娘山">11.1 四姑娘山</h1>

<p>小竹五月份去四姑娘山的时候被高反折磨的非常痛苦，回来之后就一直想着再挑战一次。草民也确实有些兴趣，所以就又摇了两车六个人一起过去。九寨沟没赶上的雪这次终于是赶上了，不知道该说运气好还是不好，草民反正是很开心。</p>

<p><img src="../assets/images/vacation-2025-2/1101_1.jpeg" alt="" /></p>

<p>感觉双桥沟这里攻略也没有什么很需要攻略的，除了要关注一下高海拔地区的影响（按小竹的说法是他觉得红景天非常有用，仅供参考），其他的就跟九寨沟一样不带脑子坐车就完事，流程更是称得上轻松加愉快（除了开局先来一个 40 分钟超绝大晕车体验之外</p>

<p><img src="../assets/images/vacation-2025-2/1101_2.jpeg" alt="" /></p>

<p>中间会有一个漂流可选，票价 90 一个人。体验还不错，十分轻松愉快还能省不少脚程，两人一船能凑齐的话还挺推荐的。至于为什么大冬天有漂流，咱也不是很理解；至于为什么这次还去尝试了，那只能说是猜硬币猜出来的</p>

<p><img src="../assets/images/vacation-2025-2/1101_3.jpeg" alt="" /></p>

<p>整个流程下来早上十点左右进，下午不到五点出来，看手机记录的步数还不到一万，着实是轻松加愉快（如果没有一开始那个晕车就更好了）。下午雪就停了，这次该说不说运气是真的不错，尤其是草民这个北方人四年多没玩过雪了，这次真是玩了个爽</p>

<p><img src="../assets/images/vacation-2025-2/1101_4.jpeg" alt="" /></p>

<p>个人逛下来感觉其实像是去了一个 Pro Max 版的蓝月谷，当然毕竟海拔很接近，似乎也有几分合理。之前还打算第二天去长坪沟徒步，但考虑天气和时间，最终决定改为回程时顺便去映秀参观地震遗址。不得不说，亲眼见到确实还是相当震撼，解说也很认真且富有感染力</p>

<p><img src="../assets/images/vacation-2025-2/1102_1.jpeg" alt="" /></p>

<p>以及旁边的地震纪念馆，更深刻的感受到了当时的天灾，以及之后的众志成城。不管怎么说，还是希望大家都平安啊</p>

<p><img src="../assets/images/vacation-2025-2/1102_2.jpeg" alt="" /></p>

<p>从四姑娘山到映秀的路上还会路过一段风光相当不错的山路（当然现在更流行「理小路」自驾，据说风光更好</p>

<p><img src="../assets/images/vacation-2025-2/1108.jpeg" align="right" style="margin-left: 0.5em;" /></p>

<h1 id="118久久">11.8「久久」</h1>

<p>草民上面列出来的那些歌手没听说过也很正常，毕竟古风一直都是鄙视链底端的小众圈子。但大概不会有太多人没听过《红昭愿》和《芒种》这两首当年红到离谱的歌（不过草民是从《惊蛰》和《沉鱼》入坑的），「久久」就是她们俩的九周年出道纪念系列线下演出啦。天还热的时候看着上海场和武汉场着实是分外眼红，没想到十月份突然又安排到了一次成都的场次，而且还是生日场，狂喜。</p>

<p>话说回来，真的是最近才知道 2022 年 11 月忙着入住新家，不仅错过了音阙诗听的实体专辑《一》还错过了六周年在东郊记忆的线下演出……着实是非常非常可惜。这次线下买了票之后就在考虑互动的时候签名到底带什么东西去签，最优选择当然是去闲鱼买一个《一》但是这玩意儿闲鱼压根就没人挂，现在是根本买都买不到；买票送的礼包也是晚上才去领。看了下群友们的计划，最终决定买一把纸扇带去</p>

<p>场地又是熟悉的正火艺术中心 6 号馆，这已经是今年第四次来这个场地了，虽然这个场地音响效果确实不错但也没必要逮着一家薅不是。这次的流程安排是下午先互动晚上再演出，实际的执行是两点到三点互动一次，四点到五点又互动一次，等于中间只留了一个小时彩排，压的实在是太短了，并不算合理。当然因为这次没有请乐队的关系彩排也没有那么高的要求，所以实际出来的效果倒是也问题不大</p>

<p>两位人美歌甜自不必多夸，小道具的节目效果也很有意思。生日场当然会有一系列的互动环节，包括非常压力观众的猜歌接歌（幸亏这次真的下定决心不抽号码牌了不然要是被抽到可太吓人了）以及分蛋糕</p>

<p><img src="../assets/images/vacation-2025-2/1108_1.jpeg" alt="" /></p>

<p>这次的礼包里面最喜欢的是中间纸袋下面放的那两个决策币，当然也顺便晒一下包含签名的扇子</p>

<p><img src="../assets/images/vacation-2025-2/1108_2.jpeg" alt="" /></p>

<p>更好的消息是明年大概还会有十周年场（毕竟音阙诗听这帮人大本营就在成都，那怎么也是应该安排上的），本来看完还是有一点戒断的，现在就完全转变成了期待</p>

<h1 id="1129婧钰双声">11.29「婧钰双声」</h1>

<p>上一场结束还不到一个礼拜就看到群友又发出来了这个，怎么说呢，11 月这两场都得称得上是相当意外的安排。这次票一开始只在猫眼上卖（说起来才知道猫眼原来是美团旗下的……然后就直接大众点评启动解决掉了），后来隔了一个礼拜左右的样子才又上了秀动。上次因为各种原因没来的虾滑老师这次倒是运气很好的收了一张便宜票，加上这次结束比较早他还可以直接晚上就回学校。顺便又继续去闲鱼蹲了大半个月《一》，还是没辙，不过这次拜托虾滑老师去他的人脉里面找了，希望明年能用的上。这次听群友们的说法是个商演，而且场地好像还是个夜店。草民完全没参与过这种风格的线下，而且看放出来的歌单跟「久久」比也更倾向流行一些，当时感觉多少还是有一点慌</p>

<p><img src="../assets/images/vacation-2025-2/1129.jpeg" alt="" /></p>

<p>下午三点到场地排队，结果被主办莫名其妙的放进场地围观排练去了 = = 一脸懵逼的进去一脸懵逼的出来系列，不过趁机观察了下场地，舞台和音响确实都还不错，观众区域也确实完全就是想象中的夜店那样子。五点左右入场，坐到六点突然哗啦啦一下进来一大堆汉服小姐姐，问了下虾滑老师也是一脸懵逼，后面跟邻座打听了一下才知道今儿在旁边电子科技大学有个汉服节，这场演出是跟汉服节联动的（然后六点钟进来的这些人大部分应该都是赠票或者是价格非常便宜，怎么说呢，反正商演艺人拿固定出场费，那就感谢金主爸爸吧）。后面台上两位的 talking 也一听就是非常商单的风格，除此之外倒是跟正常的演出没啥区别，包括她们俩的互动也还是非常有趣，听的还是很开心。草民的评价是这种商单请多来点，越多越好，务必加大力度。</p>

<p><img src="../assets/images/vacation-2025-2/1129_1.jpeg" alt="" /></p>

<p>当然后面就要吐槽一下主办了。比上次好一些的是流程上至少留出了足够多的彩排时间：原来海报上写的也是三点到四点半互动，四点半入场这样，等于是又几乎没什么时间排练，然后三点多屁颠屁颠去到那边之后又被通知互动改为演出结束以后，虽然这样对演出效果更好但还是多少有点折腾。然后就是跟汉服节联动导致原定六点开始结果六点钟又突然进来一大车人要协商座位什么的，又往后拖了二十分钟；再加上场地是夜店的关系，人家晚上要正常营业以至于后面留给 VIP 观众的合影互动预定就只有大概不到半个小时，上面又拖了二十分钟导致这个环节突出一个匆匆忙忙连滚带爬……这里还要感谢某位大佬投喂明信片一包，终于不用纠结在什么东西上签名了，超级开心</p>

<p><img src="../assets/images/vacation-2025-2/1129_2.jpg" alt="" /></p>

<p>最后就要再吐槽一下礼包了，又少一个 NFC 冰箱贴，还得后面等快递。强迫症直接买了所有的票根，礼包里送的就改为送给虾滑老师了</p>

<p><img src="../assets/images/vacation-2025-2/1129_3.jpeg" alt="" /></p>

<p>这次最后没有安排大合照略显可惜，毕竟全场那么多汉服小姐姐呢。那么这个就真的是本篇最后一条内容了，剩下的 Vacation 2026.1 见</p>

<h1 id="例行晒一下碟">例行晒一下碟</h1>

<p>今年线下演出炸出来很多老古风人，出新专辑的也不少（虽然草民只支持了女歌手的，男歌手主要还是实在空间有限，只好咕咕咕了</p>

<h2 id="今日无事">《今日无事》</h2>

<p>当然是毫不犹豫买了两个版本。这个木盒子的版本是真不错啊真不错</p>

<p><img src="../assets/images/vacation-2025-2/disc1.jpeg" alt="" /></p>

<p>这次的货确实是备了相当多，根本不需要抢，甚至标准版卖了两三轮才卖完，「入梦」成都场还可以直接买到</p>

<h2 id="天兰夜复刻">《天兰夜》复刻</h2>

<p>本来是打算带去北京场找🐰签名的，但 CD 盒子太糊弄事儿了，结果八月份只好拿精选集去了</p>

<p><img src="../assets/images/vacation-2025-2/disc2.jpeg" alt="" /></p>

<p>发货过来的时候就直接在发货单上加了一个歌词本，但是跟盒子里已有的对比了一下也没发现什么区别，只能打为虚研社传统艺能</p>

<h2 id="织梦令">《织梦令》</h2>

<p>执素兮也算老熟人了，这两年也是经常在各种拼盘里面冒泡</p>

<p><img src="../assets/images/vacation-2025-2/disc3.jpeg" alt="" /></p>

<p>至于旁边的织梦镇永居契书为什么没写 ID，只能说果然是被🎵客服机器人挡在外面了，不过问题不大，以后再找机会补上就是了</p>

<h2 id="半壶纱渡风">《半壶纱》+《渡风》</h2>

<p>还有一个送的《珂笺》</p>

<p><img src="../assets/images/vacation-2025-2/disc4.jpeg" alt="" /></p>

<p>有一说一没想到现在还有全新库存甚至带签名，这真忍不住剁手</p>

<h2 id="二次元凶">《二次元凶》</h2>

<p>只买了小版支持一下</p>

<p><img src="../assets/images/vacation-2025-2/disc5.jpeg" alt="" /></p>

<p>小碟（因为是 EP 只有四首歌，用了小尺寸的盘）是好文明，收纳方便多了</p>

<h2 id="反转童话">《反转童话》</h2>

<p>虚研社稳定发挥……以及更加糊弄的盒子和里面的空白 CD-R，虽然印了图案上去但是还是觉得有点难绷</p>

<p><img src="../assets/images/vacation-2025-2/disc6.jpeg" alt="" /></p>

<p>而且上面那个《天兰夜》起码 U 盘外面还有个小盒子，这回这个也没有了，下次再找🐰签名都不知道怎么带过去（先有下次再说吧</p>

<h2 id="其他">其他</h2>

<p>还有一个《跨越数千昼夜》是 B 站今年拜年纪的设定集，虽然里面也带了一张碟……有一说一内容还是稍微少了点感觉一般。其他的还有不少设定集（今年主要是年初的哪吒 2 和暑期的兰若寺、浪浪山这几部动画电影，加一个影神图）和塑料小人（有点多）啥的，懒得挨个晒了，年常直接拍一张展示柜现状得了（感觉不能再买了啊没地方放了啊，已经不得不把粥的几本统一收起来了</p>

<p>目前在路上的碟还有：</p>

<ul>
  <li>小红泡《童话入侵计划》本来说是 12 月初左右发，目前看起来是得等到月底了</li>
  <li>云之泣《独白》刚好是今天晚上开始预售。已第一时间下单，预计是明年 1 月份发货，可惜没有签名（微博抽奖这种事情就不做梦了</li>
</ul>

<p>明年要出的目前预计，不才、叶里、银临、兰音应该都会有新碟或者 EP 发出来，狠狠期待住了。顺便也简单数了数手里的签名，感觉想要的基本上已经差不多都有了，还没有的除了一些根本想都不用想的，剩下的就🐦这个是真的非常难搞</p>

<h1 id="end">End</h1>

<p>之前计划中的张家界终于还是咕咕咕了（虽然今年还通了高铁，有一说一真该去的），然后明年可能有的计划：</p>

<ul>
  <li>银临「粼粼」（今年只开一场在杭州，还真是体育场，也是一眨眼卖完；这一阵儿牵丝戏那个事儿之后明年的票会不会好抢一些哈哈哈</li>
  <li>黄黄「入梦」的全新升级版本（今年也是只开一场在苏州，而且连开两天，结果售票又出问题了……真离谱，换平台也不知好不好抢</li>
  <li>ChiliChill 会有新的巡演（当然除了会有之外，现在完全是个饼的状态，具体安排还不知道要等到什么时候</li>
  <li>🐦可能也会有巡演（属于是只在直播里面提了一下，甚至不能确定会有，说白了连饼可能都不算的</li>
  <li>上面有提到的「安 + 静」十周年，成都场目前大概也算是有张饼了（吧</li>
</ul>

<p>其他几个想去的地方：</p>

<ul>
  <li>挑战一次当天来回九寨沟，桃花雪花二选一（今年已经玩过一次雪了所以大概会更倾向于桃花，不过也要看日子，要赶在淡季里面的话桃花肯定是没机会的</li>
  <li>今年张家界通了高铁，大概明年优先考虑这个吧</li>
  <li>泸沽湖这个，小竹国庆跟他的朋友自驾去了，颇令人羡慕，可惜到昆明的高铁恐怕还要一两年才能通，不知道啥时候能安排上</li>
</ul>

<p>另外四姑娘山明年好像也会通一种什么列车，但是暂时并没有什么二刷的想法，过两年再说吧（</p>]]></content><author><name>yichya</name></author><category term="Play Around" /><category term="life" /><summary type="html"><![CDATA[上半年的 Vacation 2025.1 不仅拖到了七月，而且现在回过头看感觉内容写的太少了，一件事就一两句话还是多少有点过分，于是 Vacation 2025.2 就早一点开始写，稍微丰富一点内容（虽然流水账也不太可能真指望上什么丰富内容），然后尽量在 11 月底左右发出来吧（]]></summary></entry><entry><title type="html">Shells and Terminals</title><link href="https://www.yichya.dev/shells-and-terminals/" rel="alternate" type="text/html" title="Shells and Terminals" /><published>2025-09-30T00:00:00+08:00</published><updated>2025-09-30T00:00:00+08:00</updated><id>https://www.yichya.dev/shells-and-terminals</id><content type="html" xml:base="https://www.yichya.dev/shells-and-terminals/"><![CDATA[<p>几个月前尝试了一下 Nushell（虽然很快就放弃了），然后就突然想做一下用过的几种 CLI Shell 和 Terminal Emulator 的对比，但后面觉得好像不是很有意义，于是大概会变成安利 fish 再搭配一些可能非常离谱的暴论</p>

<h1 id="interactive-and-scripting">Interactive and Scripting</h1>

<p>首先要强调一下这两个概念，作为 Shell 的两个不同的用法：</p>

<ul>
  <li>Interactive / REPL：指的是对着一个提示符（一般是 <code class="language-plaintext highlighter-rouge">&gt;</code>、<code class="language-plaintext highlighter-rouge">$</code>、<code class="language-plaintext highlighter-rouge">%</code>）输入一些东西，按下回车之后立即得到反馈</li>
  <li>Scripting：指的是像写代码一样写一大堆东西并保存成一个文件，然后作为一个整体丢给某个解释器去跑</li>
</ul>

<p>虽然这两种用法也并非完全不一样，比如真的有人会写（也可能是网上直接搜 / AI 写一个，然后看都不看就直接复制粘贴）一串非常长，里面又是 <code class="language-plaintext highlighter-rouge">IFS</code> 又是 <code class="language-plaintext highlighter-rouge">[ [[</code> 又是一些奇奇怪怪的管道操作（比如 <code class="language-plaintext highlighter-rouge">&lt;(command)</code>，这是个 bash 的私货）之类的命令到 Shell 里面跑。虽然用法还是 Interactive 但完全没用到自动补全之类的 Interactive 关注的特性，这种实际上更应该认为是 Scripting，以及强烈不推荐这种做法</p>

<p>然后第一个暴论就来了。个人认为用 Shell 去干 Scripting 这种事情几乎已经没有什么讨论的必要：能不用就不用，非得用的话遵循 Google 建议用 bash，bash 都没的用的话有 busybox 一般也就只能用它的 ash，没有就塞一个 dash 进去，这仨区别不大。具体分以下情况讨论：</p>

<ul>
  <li>Unix-Like Desktop / Server（基本上就是 macOS + Linux 吧，大部分 Web 码农应该都是这配置）
    <ul>
      <li>基本上应当假设一定有一个差不多版本的 Python（指至少 3.4），否则建议升级或者换家公司</li>
      <li>当然 macOS 需要装 Xcode 或者 Command Line Developer Tools 才行（Ruby 应该自带，但基本只能认为 macOS 限定）</li>
      <li>有 Python 之后 Scripting 需求请用它来完成，无论是性能还是功能都比搓 Shell Script 靠谱的多</li>
    </ul>
  </li>
  <li>容器、嵌入式设备等受限 Linux 环境（不包括 Android，Android 上做正事基本上都要 APK 二进制交付
    <ul>
      <li>OpenWrt 及魔改（有一说一现在覆盖面真的非常广）请使用 Lua / ucode，取决于版本</li>
      <li>Armbian 如果不是砍的特别精简的话应该也可以有 Python 或者 Lua</li>
      <li>BuildRoot / 容器之类环境高度可定制的情况，建议直接用 C / Cpp / Go 之类的编译型语言做二进制交付</li>
    </ul>
  </li>
  <li>Windows（至少 Windows 7 及以后，更早的版本真的没必要考虑了）
    <ul>
      <li>BAT / CMD 就是一坨，不建议任何精神正常的人去写那玩意儿</li>
      <li>PowerShell 好一些，而且基本能保证环境健全。还有一点是甚至可以考虑直接在里面写 C#（后面会贴个例子）</li>
      <li>Windows 的环境相对稳定，跟着脚本自己带一个 Lua 或者直接二进制交付一般也不会出什么问题（甚至大概比较推荐</li>
    </ul>
  </li>
</ul>

<p>其他实在是没的选的情况（猛一下还真举不出来例子，有的话可以评论区提供一个来分析一下）再考虑写 Shell Script，这种情况也基本只有 bash / ash（busybox）/ dash 中某一个作为唯一选择，而这三个在 Scripting 上几乎没区别，这种时候去争用哪种 Shell 完全就没有意义。因此下面的讨论会以 Interactive 为主，偶尔会提到一些 Scripting（一些非常复杂的 Interactive 也算在内</p>

<h1 id="why-fish">Why Fish</h1>

<p>观前提醒：以下内容会涉及到大量捧 fish 踩 zsh 的暴论，对此类内容比较敏感的朋友可以提前退出了（</p>

<h2 id="out-of-box-experience">Out Of Box Experience</h2>

<p>既然全称叫 Friendly Interactive Shell，它做的最好的一点毫无疑问是 OOBE，在不做任何配置的情况下就相当的 Friendly：</p>

<ul>
  <li>足够用的默认 Prompt
    <ul>
      <li>默认只比 bash 多一个 git 等版本控制工具的提示，照顾了绝大多数人（尤其是会去 <code class="language-plaintext highlighter-rouge">chsh</code> 的那些）的需求，也几乎不影响性能</li>
      <li>更多的支持大部分情况下也都是默认提供的，比如 virtualenv 就可以直接 <code class="language-plaintext highlighter-rouge">source &lt;venv&gt;/bin/activate.fish</code></li>
    </ul>
  </li>
  <li>在自动补全上可以碾压其他所有的 Shell
    <ul>
      <li>官方代码库中有很大一部分专门做这件事，因此效果非常好，Nushell 甚至还有个插件专门利用 Fish 的 Tab 自动补全</li>
      <li>历史命令补全几乎被所有的现代 Shell 学去（zsh / PowerShell / Nushell 都有支持，Warp 甚至自己做了一个）</li>
    </ul>
  </li>
</ul>

<p>草民的 fish 就完全是 OOBE 默认状态，没有做任何改动。为什么 OOBE 很关键？草民认为有以下三点</p>

<ul>
  <li>显著降低上手门槛：不用像 zsh 那样起手先开 omz 装一堆插件，很花时间折腾不说，插件装多了性能还会受到影响</li>
  <li>靠谱的持续维护：官方把 OOBE 作为核心关注点之一，与第三方插件提供的能力相比，质量和维护频率可以认为是更靠谱的</li>
  <li>不受环境影响：复杂的 Shell 配置在系统升级或重装之后很可能要进行调整，而 OOBE 做的好就几乎不需要考虑环境变更带来的影响</li>
</ul>

<p>顺便，这里先贴一个这两天看到的评论，后面也会更深入提及一下更广泛的 Project Lifecycle 这件事</p>

<p><img src="../assets/images/shells-and-terminals/phoronix.png" alt="" /></p>

<p>OOBE 太差也最终成为放弃 Nushell 的核心原因：真的很难理解为什么它在那么重的情况下 OOBE 几乎是 0，让人完全没有动力去深入探索</p>

<h2 id="performance">Performance</h2>

<p>有人会说 zsh 也有插件可以做 fish 那样的自动补全之类。上面已经提过复杂 Shell 配置可能会遇到的一些上手与维护上的问题，这里也再补充一点：zsh 的性能问题（包括启动和 Prompt）大概算是老大难了，到处都是优化 zsh 性能的教程，而其中大部分会建议把 omz 扬了自己写配置，但是这又会进一步加剧上面提到的折腾成本以及一些环境与版本的兼容性、复杂配置的维护成本相关的问题</p>

<p>草民在 2020 年底刚买 MacBook Pro M1，还没有 homebrew 用的时候短暂的尝试过在 macOS 自带的 zsh 上试过简单配置（印象中也就加了一个 fish 风格补全和一个 git prompt，尽量贴近 fish 的默认状态），但实际使用下来感觉比 fish 的反应明显慢很多；后面 homebrew 能用之后就立刻切回 fish 了。时间久远不太能拿出实际对比数据，不过这大概也算个公认的事情，应该也不需要继续深入</p>

<h2 id="compatibility">Compatibility</h2>

<p>大概算是 zsh 跟 fish 比最大的优势，也是它有很多用户（Debian 统计， <a href="https://qa.debian.org/popcon.php?package=zsh">zsh 7%</a> <a href="https://qa.debian.org/popcon.php?package=fish">fish 2%</a>）的关键原因？</p>

<p>先不管 bash 是不是 POSIX Compliant（事实上它也有些私货，只是被当成 sh 启动的时候会自动关掉），它已经是事实标准了，除了 OpenWrt 之类的嵌入式环境，所有的正经 Linux 再加上 macOS 都自带（当然 OpenWrt 也可以把 bash 塞进去，只是没见过有人这么干，而且感觉 busybox 提供的 ash 除了自动补全之外也没有比 bash 差很多，实际可能也就影响一些 <code class="language-plaintext highlighter-rouge">command-not-found</code> 之类的东西吧</p>

<p>zsh 可以很接近 POSIX Compliant（通过 <code class="language-plaintext highlighter-rouge">emulate sh</code>，它甚至还可以 <code class="language-plaintext highlighter-rouge">emulate ksh</code>，还好 ksh 基本只是 sh 上叠点私货，不然要维护三套 Scripting 规范就太可怕了；另外也可以通过跟 bash 相似的改名字 / 链接到 <code class="language-plaintext highlighter-rouge">/bin/sh</code> <code class="language-plaintext highlighter-rouge">/bin/ksh</code> 等方式控制 zsh 以某一特定模拟方式启动），但因为 bash 有私货，zsh 也并不能直接 drop-in 替换掉 bash，这正是上面特意提及要区分开 Interactive 和 Scripting 的原因：</p>

<ul>
  <li>除非脚本明确在第一行写了 <code class="language-plaintext highlighter-rouge">#!/bin/sh</code>，否则并不能保证脚本没有使用 bash 的的私货，万一 shebang 直接就是 bash 那更难说</li>
  <li>zsh 自己的 Scripting 其实跟 bash 也有区别，比如 zsh 数组从 1 开始而 bash 从 0 开始，参考 <a href="https://hyperpolyglot.org/unix-shells">https://hyperpolyglot.org/unix-shells</a></li>
</ul>

<p>这两天 fish 4.1.0 发布，看了 Phoronix 里面的几个帖子感觉还是有点难绷（当然 Phoronix 论坛里面也有一堆人喷 Rust 和 Systemd，所以也不奇怪）：很多人还是完全不能把 Interactive 和 Scripting 区分开，或者会真的把一开始说的「用 Interactive 跑巨长巨复杂的命令」当作关键用法。只能评价为各种意义上都很离谱，安不安全另说，老长一串看也没法看改也没法改，跟 Regex 可以一并称之为纯纯魔法吟唱</p>

<p>不过 fish 也有槽点，主要还是跟 bash 的区别没有大到有明显的感知（<a href="https://fishshell.com/docs/current/fish_for_bash_users.html">https://fishshell.com/docs/current/fish_for_bash_users.html</a>），虽然个人觉得 fish 留下的这些基本能覆盖 80% 甚至更多的 Interactive 用法，这很好，但是也许区别更大一点或者更小一点都更好：</p>

<ul>
  <li>如果区别再小一点比如支持 <code class="language-plaintext highlighter-rouge">`cmd`</code>，能够在 Interactive 情况下跟 bash 更加一致说不定会更好（但可能确实不太好实现）</li>
  <li>Nushell 就完全不会被拿来跟 bash 之类对比，因为区别实在太大了 <a href="https://www.nushell.sh/zh-CN/book/coming_from_bash.html">https://www.nushell.sh/zh-CN/book/coming_from_bash.html</a></li>
</ul>

<p>除了 bash 之外还有更轻量的 dash，除了 POSIX 之外几乎不考虑 Interactive 的体验（仅仅是有个 Interactive 那种水平，没有任何 Tab 补全的能力），在 Debian 上用来充当 /bin/sh（顺带一提后来才发现 macOS 竟然也自带了 dash，好离谱</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ls -al /bin/*sh</span>
<span class="nt">-r-xr-xr-x</span>  1 root  wheel  1310208 Sep 25 15:03 /bin/bash<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span>  2 root  wheel  1091936 Sep 25 15:03 /bin/csh<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span>  1 root  wheel   274272 Sep 25 15:03 /bin/dash<span class="k">*</span>
<span class="nt">-r-xr-xr-x</span>  1 root  wheel  2549488 Sep 25 15:03 /bin/ksh<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span>  1 root  wheel   101232 Sep 25 15:03 /bin/sh<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span>  2 root  wheel  1091936 Sep 25 15:03 /bin/tcsh<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span>  1 root  wheel  1361200 Sep 25 15:03 /bin/zsh<span class="k">*</span>
</code></pre></div></div>

<p>以上来自 macOS 26.0.1 arm64，这里面 csh 硬链接到 tcsh，sh 是个自动选择 bash / dash / zsh 的小工具（以下来自它的 man page</p>

<blockquote>
  <p>sh is a POSIX-compliant command interpreter (shell).  It is implemented by re-execing as either bash(1), dash(1), or zsh(1) as determined by the symbolic link located at /private/var/select/sh.  If /private/var/select/sh does not exist or does not point to a valid shell, sh will use one of the supported shells.</p>
</blockquote>

<h2 id="project-lifecycle">Project Lifecycle</h2>

<p>接下来是一个跟实现并不那么相关但非常非常重要的事情。Fish 花了差不多两年时间，整体迁移到 Rust，应该算是非常成功：</p>

<ul>
  <li>虽然整个代码库被整个重写（包含 2000+ commit），但整个迁移可以说是用户没有任何感知
    <ul>
      <li>虽然大版本号升级到了 4，但实际上 Scripting 部分的变化可以说是相当小的</li>
      <li>因为 fish 追求 OOBE 的目标，大部分用户也基本上没有很复杂的定制项目，显著降低了被迁移影响的可能性</li>
    </ul>
  </li>
  <li>过程中吸引了相当多的新 Contributor，虽然不太好统计完全准确的数据但还是列一下：
    <ul>
      <li>过去 11 年 fish 使用 cpp 的过程中只有 17 个人有超过 10 个 commit</li>
      <li>第一个 Rust 版本虽然大部分工作是 7 个人完成的（同样以超过 10 个 commit 为准），但整个过程有超过 200 人参与贡献</li>
      <li>fish 4.1 根据 GitHub 上的数据有 1396 个 commit，126 人参与，其中 70 个是新贡献者</li>
    </ul>
  </li>
</ul>

<p>迁移完成之后今年也发了五六个版本，保持在一个积极迭代的状态上。而与之相比：</p>

<ul>
  <li>bash 很难被期待有什么新功能引入进来，虽然 2025-07-23 刚发布了 bash 5.3 但是跟 2022-09-26 的 5.2 相比只有 40 个 commit</li>
  <li>zsh 稳定 tag 是 2022-05-15 发布的 5.9，三年多没 Release 了甚至比 bash 还老；过去一年在 master 分支上只有一百来个 commit</li>
  <li>Nushell 的变更频率倒是非常高，可能几周就更新一次，不过现在一直还是不稳定状态，而且 breaking 的变更挺多</li>
  <li>PowerShell 倒是也还好，毕竟大公司支撑，虽然感觉在 Windows 以外的平台上用的人确实还是相当少</li>
</ul>

<p>bash 在 macOS 上还有一个比较痛的点是因为许可证的原因，版本被固定到了 3.2.57，事实上框死了 Scripting 的能力范围</p>

<h2 id="other-shells">Other Shells</h2>

<p>一点题外话，吐槽一下 Nushell 和 PowerShell 这两个大概算是相当异端的东西。他们俩有一些共同点：</p>

<ul>
  <li>跨平台
    <ul>
      <li>Nushell 直接提供多个平台、多种架构的二进制，GitHub 直接可以下载；很多发行版、brew / winget 也都能够直接安装</li>
      <li>PowerShell 多版本并行，Windows 10 / 11 自带 5.1，Microsoft Store 里那个 / 能跨平台装上 Linux 或者 macOS 的那个是 7.x</li>
    </ul>
  </li>
  <li>结构化的数据类型
    <ul>
      <li>传统的 Shell 大部分情况下都是在输入输出文本，依赖大量外部工具（比如 <code class="language-plaintext highlighter-rouge">sort</code> <code class="language-plaintext highlighter-rouge">uniq</code> 或者复杂一点 <code class="language-plaintext highlighter-rouge">awk</code> <code class="language-plaintext highlighter-rouge">sed</code>）处理文本</li>
      <li>结构化的 Shell 则是处理对象，比如 <code class="language-plaintext highlighter-rouge">ls</code> 返回的是一个 Object List，可以利用 Shell 自身的能力对它进行投影、筛选、排序</li>
    </ul>
  </li>
  <li>很重，自带很多东西
    <ul>
      <li>算是结构化 Shell 必须做的一件事，毕竟现存的外部命令并不能直接返回结构化的数据，需要先覆盖最常见的用法</li>
      <li>Nushell 本体自带了大部分 <code class="language-plaintext highlighter-rouge">uutils</code>（当然还不只这些）并做了一些结构化的魔改，PowerShell 自带的东西更是非常非常多了</li>
    </ul>
  </li>
  <li>在上一条的基础上却几乎没有做什么 OOBE 相关的努力，默认情况下的 Interactive 体验跟传统的 Shell 几乎没有什么区别
    <ul>
      <li>Nushell 至少还默认做了历史补全，PowerShell 的这个东西还需要升级一下 PSReadline 再特意启用一下这个功能</li>
      <li>PowerShell 默认情况下的 Tab 补全能支持 Module 中的命令和参数（但是不如 fish 那样能显示一点帮助），Nushell 则约等于无</li>
    </ul>
  </li>
</ul>

<p>下面再提一些他们俩自己的特点。</p>

<h2 id="powershell">PowerShell</h2>

<p>PowerShell 除了上面提到的特性，最牛逼的一点肯定还是跟 C#（包括整个 CLR 环境）的无缝衔接，甚至拿 C# 来 Scripting 也不是不行</p>

<p><img src="../assets/images/shells-and-terminals/css.png" alt="" /></p>

<p>至于 PowerShell 最大的槽点，个人认为还是 Windows 自带的 Windows PowerShell 5.1 和上面提到的跨平台 7.x 两个版本并行导致的割裂，就因为这个割裂的事情导致 PowerShell 7.x 个人感觉就很难推广起来：</p>

<ul>
  <li>说它能跨平台吧，很多 Module 没的用，甚至就算都在 Windows 上，能支持的 Module 和一些其他环境相关也有区别
    <ul>
      <li>比如臭名昭著的 <code class="language-plaintext highlighter-rouge">curl</code> = <code class="language-plaintext highlighter-rouge">Invoke-WebRequest</code> 在 7.x 去掉了，但是 5.x 去不掉，结果还是天天被人喷</li>
    </ul>
  </li>
  <li>不考虑跨平台吧，为什么不直接用保证系统自带了的 5.1，根本就没有必要用 7.x，还得让用户专门装
    <ul>
      <li>甚至 Windows 上还要再装个 .NET 6 Runtime 才能跑起来，当然商店版本会自动搞定</li>
    </ul>
  </li>
</ul>

<p>草民使用 PowerShell 7.x 的经历十分短暂，macOS 上感觉还是很别扭，Windows 上感觉跟系统自带的那个没啥区别，所以很快就弃坑了。</p>

<h2 id="nushell">Nushell</h2>

<p>草民使用 Nushell 的经历也非常短暂，最核心的原因主要还是上面提到的 OOBE 太差劲。至于用下来最大的感受，还是让草民开始觉得 fish 是不是可以考虑离 bash 兼容性更远一点，抛掉更多技术债务的同时，也不用天天被拿来跟 zsh / bash 做对比</p>

<p>当然了，Nushell 的槽点除了 OOBE 很糟糕之外，还有很多：</p>

<ul>
  <li>为了结构化数据类型，自带了很多命令，但其中有很多都是改变了习惯的，让人觉得很不适应
    <ul>
      <li>比如很典型的一个，<code class="language-plaintext highlighter-rouge">uname</code> 不支持 <code class="language-plaintext highlighter-rouge">-a</code> 参数，因为不带参数的就会返回一个 6 x 2 的表格，包含了 <code class="language-plaintext highlighter-rouge">-a</code> 中的所有内容</li>
      <li>与自动补全之类的 Interactive 特性不同，常用命令的差异会让人感觉仿佛在用一个完全不同的操作系统那样，非常非常别扭</li>
    </ul>
  </li>
  <li>插件功能是个用 stdio 通信的外部进程，导致后台一直开着一大堆很重的东西
    <ul>
      <li>真不如像 PowerShell 那样可以动态加载进来，还可以更进一步跨平台到 iOS 上</li>
      <li>用 <code class="language-plaintext highlighter-rouge">dlopen</code> 之类的特性不好做的话，wasm 感觉也可以接受（虽然插件性能会差一些，但也只影响自动补全啥的，问题不大</li>
      <li>不确定是因为这个特性还是 <code class="language-plaintext highlighter-rouge">nu</code> 本体太重，Nushell 即使是 OOBE 状态也会给人一种反应很慢的感觉，远没有 fish 来的利落</li>
    </ul>
  </li>
  <li>前面反复提过它很重，但是重到什么地步呢：以 Manjaro amd64 提供的 <code class="language-plaintext highlighter-rouge">nushell-0.107.0-1</code> 为例
    <ul>
      <li><code class="language-plaintext highlighter-rouge">nu</code> 本体除了上面提到的 <code class="language-plaintext highlighter-rouge">uutils</code> 之外，甚至还带了 <code class="language-plaintext highlighter-rouge">sqlite</code> 和网络请求能力，结果直接干到 35M 大，实在是感觉没必要</li>
      <li>至于它的插件更是相当夸张了，最大的一个 <code class="language-plaintext highlighter-rouge">nu_plugin_polars</code> 有 66MB，这一堆加起来有 130MB 多了</li>
    </ul>
  </li>
</ul>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ls -al bash dash fish* nu nu_plugin_* zsh</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  1162232 Aug  2 22:56 bash<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root   133792 Feb 25  2023 dash<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  4379792 Sep 19 15:32 fish<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  4408464 Sep 19 15:32 fish_indent<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  1268832 Sep 19 15:32 fish_key_reader<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root 35141032 Sep  3 11:52 nu<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  6030584 Sep  3 11:52 nu_plugin_custom_values<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  6759568 Sep  3 11:52 nu_plugin_example<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  6538264 Sep  3 11:52 nu_plugin_formats<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  6643296 Sep  3 11:52 nu_plugin_gstat<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  2794464 Sep  3 11:52 nu_plugin_inc<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root 66432592 Sep  3 11:52 nu_plugin_polars<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root  7414968 Sep  3 11:52 nu_plugin_query<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 1 root root   488336 Sep  3 11:52 nu_plugin_stress_internals<span class="k">*</span>
<span class="nt">-rwxr-xr-x</span> 2 root root   947360 Mar 15  2024 zsh<span class="k">*</span>
</code></pre></div></div>

<p>相比之下同样由 Manjaro amd64 提供的 <code class="language-plaintext highlighter-rouge">fish-4.0.8-1</code> 本体只有 4MB 多一点（虽然也确实不算小了，<code class="language-plaintext highlighter-rouge">zsh-5.9-5</code> 本体只有不到 1MB 比 <code class="language-plaintext highlighter-rouge">bash-5.3.3-2</code> 还小一点，<code class="language-plaintext highlighter-rouge">dash-0.5.12-1</code> 更是只有 133KB 左右，当然这些都没有算上链接的 so</p>

<h1 id="terminals">Terminals</h1>

<p>最后是一点个人对终端（主要是终端模拟器）的选择。首先是对个人口味的描述：</p>

<ul>
  <li>跟上面对 Shell 的选择一样，看重 OOBE 与环境稳定性，因此倾向于选择不需要花很多时间配置的工具</li>
  <li>有在服务器上干重活的需求，因此习惯于使用 tmux，进一步导致对终端模拟器提供的分屏 / Tab 能力也不感兴趣
    <ul>
      <li>分屏几乎完全不用，用的话一般也是开两个窗口然后用操作系统自带的窗口排列功能并排放在一起</li>
      <li>Tab 也不咋用，像 Windows Terminal 和 Warp 那种提供了的情况会偶尔用一下，但不会成为选择 / 放弃某款终端模拟器的理由</li>
    </ul>
  </li>
  <li>因为被 JetBrains IDEA 自带的终端模拟器整的烂活坑过很多次，故倾向于不使用终端模拟器提供的高级特性
    <ul>
      <li>比如 AI 集成这种会拦截输入的特性会严重破坏 tmux 的可用性，还有自动复制这种可能会乱动剪贴板的功能</li>
      <li>与其说「不使用这些特性」不如说「最好不提供这些特性，免得还得花时间关甚至可能压根关不掉」，做好一个终端该做的事情</li>
    </ul>
  </li>
</ul>

<h2 id="multiplatform">Multiplatform</h2>

<p>这里列出几个跨平台的选项，但其实个人最推荐 VSCode（除了启动慢点几乎没啥毛病</p>

<h3 id="alacritty">Alacritty</h3>

<p>虽然是跨平台，但只在 Windows 10 上用过几个月的时间</p>

<ul>
  <li>优点是用 OpenGL 渲染因此确实很快，而且很简洁没有什么很复杂的特性</li>
  <li>缺点是配置比较复杂，而且因为自己搞字体渲染，在低分辨率屏幕上也不能关掉抗锯齿，所以只适合在高分辨率屏幕上使用</li>
</ul>

<p>时间比较久远，并不记得最终是什么原因放弃了。</p>

<h3 id="warp">Warp</h3>

<p>虽然是跨平台，但主要在家里的 Windows 11 PC 上用</p>

<ul>
  <li>真的跨平台，一跨到底
    <ul>
      <li>尤其针对 Windows 的支持，OOBE 就同时配好了 Windows PowerShell、WSL 和 Git Bash</li>
      <li>而且官方直接提供 Windows ARM64 构建，对于一个闭源软件来说真的非常难得</li>
    </ul>
  </li>
  <li>虽然有很多乱七八糟的高级特性，但能做到不影响正常使用
    <ul>
      <li>AI 集成甚至是主推功能，但拦截输入 / 不拦截输入这两个模式的界限很明确，不像 IDEA 那样混在一起互相影响</li>
      <li>多数复杂功能可以通过很简单的步骤关闭，而 IDEA 就在做的很烂的同时还压根关不掉</li>
    </ul>
  </li>
  <li>它确实在 UI / UX 上做了非常多的工作，把 OOBE 状态下的 Interactive 做的非常好用，而且性能也不差
    <ul>
      <li>尤其对 fish 用户来说感觉会非常熟悉，包括 Tab 补全和历史命令补全都非常好用</li>
      <li>而且它完全是自己实现的这些特性，即使底下是 bash 或者 PowerShell 也能获得一致的体验（比如下图是 PowerShell）</li>
    </ul>
  </li>
</ul>

<p><img src="../assets/images/shells-and-terminals/warp.png" alt="" /></p>

<p>当然 Warp 也有一些问题：</p>

<ul>
  <li>运营更接近互联网 App，包括强制注册账号才能使用，以及会用比较打扰的方式推广新特性</li>
  <li>因为做的事情确实很多所以还是比较重，Windows 上的二进制文件 200MB+，对机器配置也有一定需求</li>
  <li>跟 Alacritty 一样的字体渲染问题，低分辨率屏幕上显示效果很不理想
    <ul>
      <li>虽然在 Linux / macOS 上的默认设置没啥问题，但 Warp 提供的字体相关的调整选项不多，字重、Fallback 这些都没有</li>
      <li>Windows 上默认字体中文就很难看了，在懒得找字体的情况下建议用系统自带的黑体，HiDPI 上中英文效果基本上比较一致</li>
    </ul>
  </li>
</ul>

<p>总体来说个人还是挺推荐使用的，尤其是对于 Windows 用户能在 WSL 之外的环境上体验到接近 fish 的 Interactive 体验</p>

<h3 id="electron-based-like-hyper">Electron Based (Like Hyper)</h3>

<p>可能会有人提，但个人的评价是不如直接用 VSCode，这里也就不展开了。</p>

<h2 id="linux-desktop">Linux Desktop</h2>

<p>一般建议是选择桌面环境自带的终端（比如 KDE 就是 Konsole），例外情况：</p>

<ul>
  <li>如果是 WSL 之类的情况又需要一个原生渲染出来的终端的话个人比较推荐 <a href="https://tracker.debian.org/pkg/stterm">st</a>，很轻而且默认情况下足够好用</li>
  <li>WSL 上直接跑 Warp for Linux 效果不太好，速度很慢且有些这样那样的兼容性问题（比如 HiDPI 一会儿小一会儿大），不推荐</li>
</ul>

<h2 id="macos">macOS</h2>

<p>现在草民在 macOS 上不干重活，重活都要 ssh / VSCode Remote / JetBrains Gateway 到其他的机器上了，macOS 上跑的基本上就只有 <code class="language-plaintext highlighter-rouge">jekyll serve</code> 和 <code class="language-plaintext highlighter-rouge">brew upgrade --greedy</code>，所以目前草民的方案是 macOS 自带终端 + fish + tmux</p>

<p>macOS 大部分人应该会用 iTerm2，草民也用过挺长一段时间，不过原因是当时 macOS 自带的终端跟 fish 有一些兼容性问题，导致滚动和 Tab 补全都很别扭。后面这个问题不知道什么时候修好了，草民又完全没用到过 iTerm2 自带的一些高级特性，于是草民就换了回来</p>

<p>至于上面提过的跨平台方案，Alacritty 和 Hyper 感觉跟自带的也没啥区别；Warp 倒是可以考虑一下的，但是如果已经装了 fish + tmux 而且用不到 Warp 提供的 AI 能力的话感觉意义不大，没有装这些的话倒是也挺建议尝试一下 Warp 的。当然 VSCode 也很推荐（</p>

<h2 id="windows">Windows</h2>

<p>除了上面提过的几个跨平台方案，还主要用过几个：</p>

<ul>
  <li>conhost.exe
    <ul>
      <li>Windows 10 自带的那个。其实因为 Windows 10 开始加了一些 Unix 终端相关的 Control Sequence 支持，所以也能凑合用</li>
    </ul>
  </li>
  <li>Windows Terminal
    <ul>
      <li>大部分情况下还是挺好用的，渲染也很快，也能关掉抗锯齿，但就是感觉 UI 还是有那种 UWP 特有的磨磨叽叽的感觉</li>
    </ul>
  </li>
  <li>Mintty（Git Bash / wsltty）
    <ul>
      <li>直接用 Win32 API 来做的，好处是很简洁，而且高低分辨率屏幕上字体渲染都很干净，坏处就是渲染是真的很慢</li>
    </ul>
  </li>
</ul>

<p>目前大部分情况下都是 Windows Terminal 搭配 Warp 来用了。</p>

<h1 id="end">End</h1>

<p>总之是花了几天时间又把这个日经问题翻出来扯了一遍，回收了一下半年前立的 Flag</p>

<p>下一个应该是 11 月底左右发 Vacation 2025.2，然后如果有精力的话可能十月份会再发一个跟 RSS 相关的一些折腾（没精力就明年见</p>]]></content><author><name>yichya</name></author><category term="Technology" /><category term="shell" /><category term="terminal" /><summary type="html"><![CDATA[几个月前尝试了一下 Nushell（虽然很快就放弃了），然后就突然想做一下用过的几种 CLI Shell 和 Terminal Emulator 的对比，但后面觉得好像不是很有意义，于是大概会变成安利 fish 再搭配一些可能非常离谱的暴论]]></summary></entry><entry><title type="html">Vacation 2025.1</title><link href="https://www.yichya.dev/vacation-2025-1/" rel="alternate" type="text/html" title="Vacation 2025.1" /><published>2025-07-11T00:00:00+08:00</published><updated>2025-07-11T00:00:00+08:00</updated><id>https://www.yichya.dev/vacation-2025-1</id><content type="html" xml:base="https://www.yichya.dev/vacation-2025-1/"><![CDATA[<p>本来 Vacation 2025.1 应该在五月更新的，但刚好 Gadgets 2025 卡在五月了于是往后挪一挪。上半年跑的地方还挺多的，频率也跟去年一样一个月最少一次。而且目前上半年四场 Live，下半年目前确定的都至少两场了，说不定还有两次整大活的计划，好像浪的有点狠了啊（</p>

<h1 id="111-滑雪">1.11 滑雪</h1>

<p>「周末偶遇初级雪道，单板光滑难如怪物，拼尽全力无法战胜」</p>

<p><img src="../assets/images/vacation-2025-1/1110.jpeg" alt="" /></p>

<p>头一次在晚上来都江堰转悠。还泡了个温泉，贼爽（去年好像也是年初去峨眉山泡的，这个能不能也安排成年常啊</p>

<p><img src="../assets/images/vacation-2025-1/1111.jpeg" alt="" /></p>

<p>花销不大，买的是融创那个滑雪加温泉加酒店的套餐吧好像是，价格也挺便宜好像一个人两三百块？具体忘了，总之还挺不错的</p>

<h1 id="118-三岔湖">1.18 三岔湖</h1>

<p>不知道是不是没去对地方，感觉比较差劲。实习期开车初体验（还好没出什么乱子</p>

<p><img src="../assets/images/vacation-2025-1/1180.jpeg" alt="" /></p>

<p>晚上去了趟山姆（蹭马老板的卡）。今年进口的樱桃确实不错（虽然我个人还是比较喜欢现摘那种稍微有点酸味的，但今年没安排上</p>

<h1 id="215-泠鸢-yousa-线下-live成都场">2.15 泠鸢 yousa 线下 Live（成都场）</h1>

<p>也是真的期待了很久啊。刚好过年被春晚版本的《春意红包》狠狠创飞了，赶紧来洗洗耳朵</p>

<p><img src="../assets/images/vacation-2025-1/2151.jpeg" alt="" /></p>

<p>真的是氛围最好的一次 Live，尤其是咖啡厅实在是太棒了，下次还去（</p>

<p><img src="../assets/images/vacation-2025-1/2152.jpeg" alt="" /></p>

<p>成功获得汐米大佬现场签名！</p>

<p><img src="../assets/images/vacation-2025-1/2153.jpeg" alt="" /></p>

<p>签名板 50% 分辨率（尽力了，原图实在是太大</p>

<p><img src="../assets/images/vacation-2025-1/2154.jpeg" alt="" /></p>

<p>但有一说一，这合影真是拍的……无力吐槽，两边怎么都能拍不全的</p>

<p><img src="../assets/images/vacation-2025-1/2150.jpeg" alt="" /></p>

<p>然后重点感谢一下马老板愿意跟我一起玩（</p>

<h1 id="219-泼墨漓江">2.19 泼墨漓江</h1>

<p>戒断 + 消磨假期。竹筏、游船、银子岩分别获得前三名</p>

<p><img src="../assets/images/guilin-experience/2100003.jpeg" alt="" /></p>

<p>这里就只摘一张点题的图占位了，具体见 <a href="../guilin-experience">Guilin Experience</a></p>

<h1 id="315-哪吒-2-创作展">3.15 哪吒 2 创作展</h1>

<p>2.14 票房过百亿的时候去工作室门口打了卡。这次去这个展览的时候应该刚好是全球票房前五，也顺便沾沾喜气。</p>

<p><img src="../assets/images/vacation-2025-1/3150.jpeg" alt="" /></p>

<p>地方不大人可真多。后面又来了几次买海报，嘻嘻。希望这波也能再带动一下成都的相关产业</p>

<h1 id="322-桃花故里">3.22 桃花故里</h1>

<p>早上起的就很晚了，结果花期更晚（目测山上只开了可能 10% 的花吧）。幸亏这次没拉人来</p>

<p><img src="../assets/images/vacation-2025-1/3220.jpeg" alt="" /></p>

<p>下午在广场上全程围观了一个多小时的，呃，某个大概只能称之为「团伙」的活动，包括：</p>

<ul>
  <li>杂技（还行吧</li>
  <li>「特技」表演（怎么看怎么像江湖骗子，具体不说了免得被喷</li>
  <li>变脸 + 喷火（也没啥毛病吧</li>
  <li>某位大哥把一条小蛇从鼻孔穿进去再从嘴里抽出来（呃……这个没得喷，是真的狠活</li>
</ul>

<p>吸引了一圈儿人之后开始现场兜售字画，倒是也不贵一幅几百块，但这个活动就，真的很抽象……旁边市集活动也一样的抽象，赞助商竟然是个私立高中，而且看起来还是刚成立没多久那种。有一说一还不如跟前两年一样承办一点少儿围棋比赛或者才艺表演什么的呢 = =</p>

<p>当然喷归喷，明年该来还是来（不过明年还是顺便计划一下洛带古镇的事情，这次早上起太晚没去成可惜了</p>

<h1 id="44-犍为县">4.4 犍为县</h1>

<p>奔着吃东西的目标去，但感觉很踩坑，不推荐</p>

<ul>
  <li>牛肉饼，像是粉蒸牛肉夹在薄饼里面，不如肉夹馍</li>
  <li>串串，从冷柜里面拿出来解个冻往红油里面一泡就端上来了，压根不入味，甚至远不如能在成都吃到的同款味道好</li>
  <li>冰粉，凑合吧就正常冰粉</li>
</ul>

<p>然后去看了犍为文庙，emmmmm 个人对这种地方也没啥兴趣，不过有意思的是还真有人在这种地方求姻缘 hhh 以及另外一些小吃：</p>

<ul>
  <li>某个什么豆腐夹萝卜丝，额，真不爱吃酸辣口，更不爱吃白萝卜</li>
  <li>葱油酥，不错，好吃</li>
  <li>洋芋坨坨，跟上面那个串串搞法差不多，总之是真的不好吃。。。</li>
  <li>蛋烘糕，还可以</li>
</ul>

<p>回家前顺便溜达了几个地方</p>

<ul>
  <li>县政府，emmmm 就西电老校区那种感觉</li>
  <li>下图这个商圈。应该是这边最大的商圈了，但还是很鬼：一楼冷冷清清，二楼原来大概是个衣服卖场直接全关，三楼儿童乐园还算有点儿人气（不多），四楼只有个轮滑好像还在开着门，五楼只剩电影院其他有什么 ai 教育什么自助餐之类全关了，封闭用的布还印着欢度猴年</li>
  <li>顺便路过了几个中介，房价差不多不到五千（差不多 130 多平六十万多一点吧，很多都挂这个价，面积小的单价贵一点），租个三室两厅挂价都是年付 14000 有一说一有点贵，还有些招工一月两三千，感觉还是有点难做</li>
</ul>

<p>这个广场上的雕像也有那么一点抽象，没太看明白是个什么造型</p>

<p><img src="../assets/images/vacation-2025-1/4040.jpeg" alt="" /></p>

<p>晚上回华阳吃了个何师烧烤，舒坦多了。</p>

<h1 id="412-司南出发梦话live">4.12 司南「出发·梦话」Live</h1>

<p>正火的效果确实很不错，比上次那个场地好太多了。挺开心（除了一点，下次还是最好不要被抽到互动了</p>

<p><img src="../assets/images/vacation-2025-1/4120.jpeg" alt="" /></p>

<p>槽点主要还是门票类型蛮怪的（这点不如上次），以及服装还是有点无力吐槽（这个跟上次差不多）。顺便在前排遇到三个鸟蛋，刚好就把上次剩下的几个签儿分给他们了（</p>

<h1 id="52---55-劳动节假期广州小转一圈">5.2 - 5.5 劳动节假期广州小转一圈</h1>

<p>虽然重点是🐦的 Live，但是为了机票效益最大化，这个安排会有点复杂：</p>

<ul>
  <li>5.2 一大早赶飞机去深圳
    <ul>
      <li>下飞机马上去福田口岸过关到香港，预计十二点半到一点左右</li>
      <li>至少呆两到三个小时（主要是为了办卡），期间简单溜达一下（也不是很想溜达）</li>
      <li>七点左右出口岸找前同事吃饭，然后晚上住在口岸附近的亚朵</li>
    </ul>
  </li>
  <li>5.3 早上赶城际前往大学同学家里，然后就看他安排了，简单耍一天。晚上住在 Livehouse 附近亚朵</li>
  <li>5.4 全天活动，晚上住在 Livehouse 附近亚朵</li>
  <li>5.5 早上赶飞机回成都</li>
</ul>

<p>整体基本上跟计划一样，没有啥偏差。虽然出去的时间不算短，但图并不多，不打算专门拆一篇出来了。</p>

<h2 id="52-机票效益最大化">5.2 机票效益最大化</h2>

<p>当天去香港的人巨多，下午一点多到海关，快两点才坐上港铁。四点做完主线任务（三个港卡开户），流程倒是意外的很顺利（也不完全顺利吧但是问题不大）。完事之后在铜锣湾和旺角简单溜达了三个小时，感觉其实除去繁体中文之外，香港跟国内其他地区也没什么很大区别。城市界面个人感觉跟重庆有几分相似，就是很多那种很破旧的高楼，就很赛博。街边会有那种，门面金灿灿的麻将馆，突出一个土气</p>

<p><img src="../assets/images/vacation-2025-1/5020.jpeg" alt="" /></p>

<p>以及有一说一，居住成本是真夸张。拍了几个旺角那边中介挂在外面的，换算一下单位：</p>

<ul>
  <li>「本店精选」66 平方米建筑面积的房子要将近 700w（等一下，这好像也就是北上深相似地段的基本操作？</li>
  <li>租的价格更是离谱，最便宜的一个 32 平米建筑面积的房子就要八千多块一个月了，中关村房租怕是都不到这个一半</li>
</ul>

<p><img src="../assets/images/vacation-2025-1/5021.jpeg" alt="" /></p>

<p>港铁的报站是粤语 &gt; 普通话 &gt; 英语，深圳和广州地铁的报站是普通话 &gt; 粤语 &gt; 英语，所以好像真的也没多大区别，就是票价是真的贵的离谱。另外 5.2 在香港感觉就像是个正常工作日，所以也没看到什么菲佣之类的（虽然看到了广告），其他的感觉就没啥了</p>

<p><img src="../assets/images/vacation-2025-1/5022.jpeg" alt="" /></p>

<p>晚上八点左右回来，跟前同事吃了个网红海鲜大排档（有一说一这家店怎么敢收那么多钱的草，太坑了）。住了一个评价为住过的倒数第二辣鸡的亚朵，没有到倒数第一是因为至少比起九寨沟那个来说呼吸还算是顺畅的，其他的只能说又贵又不舒服。害</p>

<h2 id="53-突出一个羡慕黄大人">5.3 突出一个羡慕黄大人</h2>

<p>早起坐车去深圳北（中间刚好路过民乐站，这一站要是真的能换乘家门口的成都地铁五号线就好了</p>

<p><img src="../assets/images/vacation-2025-1/5030.jpeg" alt="" /></p>

<p>城际到东莞，地铁到黄大人家附近吃了个早茶，差点吃撑了。完后参观了一下黄大人差不多装修完的新家，真不错，尤其那个床垫真种草了，之后也看看怎么买一个。下午坐另一个略显特别的城际到广州（特别的点主要是它更像是一个地铁和普通城际之间的东西</p>

<p><img src="../assets/images/vacation-2025-1/5031.jpeg" alt="" /></p>

<p>可惜当天天气太差，暴雨连下好几个小时，来得及去的地方不多。经典环节：地狱西路圣地巡礼</p>

<p><img src="../assets/images/vacation-2025-1/5032.jpeg" alt="" /></p>

<p>粗逛下来，广州除了漂亮妹纸确实多之外感觉一般，尤其是城市界面确实还是有些老旧，而且有一说一尼哥是真多。晚上入住在 Live 场地附近的亚朵，还不错，价格比上面那个便宜一些的同时也舒服不少</p>

<h2 id="54-泠鸢-yousa-线下-live广州场">5.4 泠鸢 yousa 线下 Live（广州场）</h2>

<p>早上起来肯定先去茶餐厅啦。见到了很多熟面孔（嘻嘻</p>

<p><img src="../assets/images/vacation-2025-1/5043.jpeg" alt="" /></p>

<p>成都小分队合影（后面的签名板倒是也拍了，可以到 B 站找草民的动态，里面有</p>

<p><img src="../assets/images/vacation-2025-1/5040.jpeg" alt="" /></p>

<p>虽然抽奖什么的从来抽不到，但座位倒是运气不错，刚好正中间。不过有一说一音响效果一般般，以及又是一个两边切角的大合照（</p>

<p><img src="../assets/images/vacation-2025-1/5041.jpeg" alt="" /></p>

<p>这次的签儿（跟上次区别不大所以少拍了一个），以及乱入一些上面合影里出现的某位鸟蛋的银临周边（前两天南京有活动吧应该是</p>

<p><img src="../assets/images/vacation-2025-1/5042.jpeg" alt="" /></p>

<p>整体体验也很好，虽然没有上次那种特别强烈的感觉了。再下次是 8.2 上海，因为七月还要去🐰的 Live，短时间跑两次上海成本实在是太高，而且歌单竟然没有《泼墨漓江》……总之就不去了（可能到时候想办法摇人帮带一点限定的小东西</p>

<h2 id="55-燃尽了回家">5.5 燃尽了回家</h2>

<p>后面也许会写一篇开卡和入金相关的事情（等汇丰密码涵和地址信都到了，或者确定都丢了之后再说吧</p>

<h1 id="511-街子古镇">5.11 街子古镇</h1>

<p>恭喜马老板喜提新🚗（然后给他添加一点二次元浓度</p>

<p><img src="../assets/images/vacation-2025-1/5110.jpeg" alt="" /></p>

<p>这个桥就有那么一点像上面的南桥（当然远不如那边热闹</p>

<p><img src="../assets/images/vacation-2025-1/5111.jpeg" alt="" /></p>

<p>这地方还不错，人也不太多（可能是因为是周日，而且来的也比较晚）。吃了一堆辣的</p>

<h1 id="517-锦城湖拍个小视频">5.17 锦城湖拍个小视频</h1>

<p>成都鸟蛋小聚一下。</p>

<p><img src="../assets/images/vacation-2025-1/5170.jpeg" alt="" /></p>

<p>晚上顺便去接了小竹的朋友，吃了一个🐰火锅，味道还不错（除了原汤当蘸料这种是真顶不住</p>

<h1 id="524-黄龙溪">5.24 黄龙溪</h1>

<p>骑过去 30km 骑回来 40km，隔天心率还贼快，睡了一下午才缓过来</p>

<p><img src="../assets/images/vacation-2025-1/5240.jpeg" alt="" /></p>

<p>至于这地方就，呃，一般般吧（主要还是过来一趟有点费劲，如果地铁直达那可以评价为很不错</p>

<h1 id="621-不才雾的-19-日live">6.21 不才「雾的 19 日」Live</h1>

<p>当天重庆还有个墨村的 Live 不过好像跟去年的安排一样，去年的体验也一般所以不去了（结果这次 VIP 就全都有签名，更气了）。这一场的时间也是安排的莫名其妙，一开始真的就以为不会有了（于是加价一倍买了新 EP，虽然也就一百块，无所谓了</p>

<p>时隔两年半又见面真的很开心！这次也终于成功给手里的初版《山止川行》签了名，完满了</p>

<p><img src="../assets/images/vacation-2025-1/6210.jpeg" alt="" /></p>

<p>另外还是感谢马老板跟我一起玩，以及顺便还达成了网友见面成就（</p>

<h1 id="end">End</h1>

<p>最后例行晒一下最近半年买的碟，还挺多。首先是一些零零散散的</p>

<p><img src="../assets/images/vacation-2025-1/d4.jpeg" alt="" /></p>

<p>然后是 B 站会员购专场（基本上都是眼熟就支持一下的，当然在 B 站也都多少有点名气</p>

<p><img src="../assets/images/vacation-2025-1/d0.jpeg" alt="" /></p>

<p>说起来签名的这个《星灵歌者》差点就错过了，好险。下面再专门提几个比较重要的</p>

<h2 id="山色有无中">《山色有无中》</h2>

<p>两个版本都买了（但小声 bb，有一说一这张碟也就一般，个人觉得最好的是《愚人歌》其次是《眠花去》，其他的就没那么戳</p>

<p><img src="../assets/images/vacation-2025-1/d1.jpeg" alt="" /></p>

<p>有官方拆箱视频所以这里也就懒得拆了。顺便关于近期节奏，只能说工作室还是长点心吧，多了解一下自己的粉丝群体</p>

<h2 id="茜色诗集">《茜色诗集》</h2>

<p>说起来这张碟竟然还是司夏群里的某个群友出的。稍微多花了点钱但还是很值得，也算是全收集了</p>

<p><img src="../assets/images/vacation-2025-1/d2.jpeg" alt="" /></p>

<p>顺便抽奖了两张三专都没中签（怎么就每次遇到皮套人就运气不好，什么🧊什么🐦什么🐰都是</p>

<h2 id="竹梦令">《竹梦令》</h2>

<p>老古风人绝对会懂的一张碟，不多解释。顺便签名 Get</p>

<p><img src="../assets/images/vacation-2025-1/d3.jpeg" alt="" /></p>

<p>这个卖家也是非常 nice，基本上就是原价出了，保存的也很好。这波真的是圆了多年来的心愿</p>

<h2 id="混入人类计划">《混入人类计划》</h2>

<p>有一说一，这盒子好大啊，差点就找不到地方放了（</p>

<p><img src="../assets/images/vacation-2025-1/d5.jpeg" alt="" /></p>

<p>里面的 CD 就是上面「零零散散」第一张图里面下面的那个有 ChiliChill 标的，不拿出来单独拍了</p>

<h2 id="你的灵魂长出一枝玫瑰">《你的灵魂长出一枝玫瑰》</h2>

<p>这个也是眼熟支持一下（总之草民觉得在认真创作的基本都会支持</p>

<p><img src="../assets/images/vacation-2025-1/d6.jpeg" alt="" /></p>

<p>顺便抢了复刻的一专《我从人间走过》（上面「零零散散」里面也晒了），又达成全收集啦</p>

<h2 id="白蛇青蛇ost">《白蛇·青蛇》OST</h2>

<p>最后一个本系列的周边啦（爱过）。手速很快抢到了签名！</p>

<p><img src="../assets/images/vacation-2025-1/d7.jpeg" alt="" /></p>

<p>然后也期待一下追光的新作（刚好也是 7.12 上，来得及的话也许会在🐰的 Live 结束之后在酒店附近找个电影院看完，来不及就回来看</p>

<h2 id="next">Next</h2>

<p>下半年预计：</p>

<ul>
  <li>7.12 兰音 Reine 上海场（没抢到 SVIP 好难受，而且成本着实爆炸</li>
  <li>8.23 黄黄成都场（这个倒是很顺利的抢到了，难道真的是遇到纸片人就会不顺利？</li>
  <li>应该会有：四姑娘山 / 张家界（也可能两个都去）</li>
  <li>暂时没定：玄觞 / 叶里的 Live
    <ul>
      <li>尤其是玄觞这个很关键（但是完全不知道杭州那一场之后怎么个安排
        <ul>
          <li>为此还 hold 了 8.9 囧菌那一场（如果时间不冲突的话可能也买个普票去？目前看来应该是问题不大</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p>然后路上的碟还有：</p>

<ul>
  <li>《跨越数千昼夜》（预计五月发货，现在都七月了</li>
  <li>《天兰夜》复刻（买了预售，预计可能八月底或者九月初收到吧</li>
  <li>《织梦令》（运气还可以，抢到了有签名的限量版，预计也是八月初收到</li>
</ul>

<p>下一篇应该是 Shells and Terminals 吧，Flag 立的是国庆之前……感觉有点悬呢。最后放一个近期精神状态《撞地球》（</p>

<iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=114278694656288&amp;bvid=BV1rbZdYCEc7&amp;cid=29229910196&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" height="600px" width="100%"></iframe>]]></content><author><name>yichya</name></author><category term="Play Around" /><category term="life" /><summary type="html"><![CDATA[本来 Vacation 2025.1 应该在五月更新的，但刚好 Gadgets 2025 卡在五月了于是往后挪一挪。上半年跑的地方还挺多的，频率也跟去年一样一个月最少一次。而且目前上半年四场 Live，下半年目前确定的都至少两场了，说不定还有两次整大活的计划，好像浪的有点狠了啊（]]></summary></entry><entry><title type="html">Start Headless Chromium on Demand</title><link href="https://www.yichya.dev/start-headless-chromium-on-demand/" rel="alternate" type="text/html" title="Start Headless Chromium on Demand" /><published>2025-06-29T00:00:00+08:00</published><updated>2025-06-29T00:00:00+08:00</updated><id>https://www.yichya.dev/start-headless-chromium-on-demand</id><content type="html" xml:base="https://www.yichya.dev/start-headless-chromium-on-demand/"><![CDATA[<p>RSSHub 需要一个 Headless Chromium 来应对 B 站的反爬措施。去年的做法是用 systemd 直接拉起来一个，并且当它被 RSSHub 主动关掉之后自动重启，用起来倒是也没啥问题，资源占用也几乎可以忽略不计，但每次 <code class="language-plaintext highlighter-rouge">ps auxf</code> 看见一大堆 Chromium 都感觉很扎眼。</p>

<p>之前也研究过 RSSHub 推荐的几种方式，但都感觉不是很好：</p>

<ul>
  <li>RSSHub 自己的容器里面直接带一个 Chromium，按需启动
    <ul>
      <li>问题主要是在草民这里一直都很不好使，B 站反爬用这玩意儿就没有一次能成功的，自己起 Headless Chromium 就非常的顺利</li>
    </ul>
  </li>
  <li>另外有一个 <a href="https://hub.docker.com/r/browserless/chrome">browserless/chrome</a>，毒点很多
    <ul>
      <li>很重，镜像 1GB+，都不知道里面塞了一些什么鬼东西</li>
      <li>为了维持这东西的服务，要起一个 <code class="language-plaintext highlighter-rouge">conmon</code> 再起一个 <code class="language-plaintext highlighter-rouge">node</code>，加起来恐怕也不比一个常驻的 Headless Chromium 轻了</li>
    </ul>
  </li>
  <li>还有一个问题是这两个方式安装的 Chromium 更新也不是很方便，也不能提供给 Host OS 使用，浪费空间</li>
</ul>

<p>后面又在给 Ubuntu 改 SSH 端口的时候了解了 systemd 的 Socket Activation，于是想试试用这个来做一下按需启动</p>

<h1 id="socket-activation">Socket Activation</h1>

<p>这个特性实际上来自于历史非常久远的 <code class="language-plaintext highlighter-rouge">inetd</code>，它负责专门跟网络交互并给后面的服务提供 fd 用来直接读写。不知道它是什么的话可以说它跟 CGI 有点类似，甚至一定程度上这俩是可以兼容的（毕竟都可以用 <code class="language-plaintext highlighter-rouge">stdio</code>，只是 CGI 多一步解析 HTTP Request 而已，可以通过判断 CGI 特有的一些环境变量来决定要不要从 <code class="language-plaintext highlighter-rouge">stdin</code> 里面读 HTTP Header）。Socket Activation 在特定的情况下还是有一些用处：</p>

<ul>
  <li>它能够使得服务不需要提权（root 或者 <code class="language-plaintext highlighter-rouge">CAP_NET_ADMIN</code>）就可以绑定 1024 以下的限制端口，对安全性更有好处
    <ul>
      <li>虽然现在一般都会起一个 nginx 之类的东西来做这件事，而且 nginx 能做的事情要多不少（比如 SSL、路由和负载均衡）</li>
    </ul>
  </li>
  <li>CGI 或者 inetd 的传统用法下每个连接都要拉一个进程起来，处理请求的代价会很高，而且稍微有点并发就寄了
    <ul>
      <li>systemd 倒是额外支持（而且推荐）服务自己 <code class="language-plaintext highlighter-rouge">accept</code> 的用法，性能可能也不至于太难看（没试过，不确定）</li>
      <li>对于不频繁使用的短任务（比如 ssh 这种，或者像是 Cockpit 这种相当现代化的服务也用了这样的方式来启动）来说就很合适
        <ul>
          <li>毕竟不用一直开着一个进程，用完了就可以干掉，下次再用的时候再拉起来就行，整体还是能省一些资源</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p>至于具体的流程，说实话有点复杂，里面很多东西也不是很清晰，还需要服务主动做代码相关的适配。有一说一，这年头也基本上用不到这种技术，简单了解下流程就好，可以参考 <a href="https://mgdm.net/weblog/systemd-socket-activation/">https://mgdm.net/weblog/systemd-socket-activation/</a> 里面的示例。</p>

<h1 id="unsupported-applications">Unsupported Applications</h1>

<p>大部分现代服务都会主动 Listen 端口，而不是使用二三十年前的 inetd 或者 CGI 风格与网络交互。对于这些不支持传递 fd 的服务，可以利用 systemd 自带的 <code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 进行转发。当然也有一些需要关注的问题：</p>

<ul>
  <li>抢端口，也就是 systemd 和它拉起来的服务会 bind 到同一个地方
    <ul>
      <li>不建议 <code class="language-plaintext highlighter-rouge">ReusePort</code>，这东西的行为是负载均衡，会引入不确定性</li>
      <li>可以在本地回环上随便找个地方解决，或者绑定在一个别的设备上
        <ul>
          <li>但是如果设备初始化的比较晚的话，设置一下 <code class="language-plaintext highlighter-rouge">FreeBind</code></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>可能不知道拉起来的服务要多长时间才能开始 Listen，所以还要加个 Sleep 或者健康检查
    <ul>
      <li>其实草民觉得 <code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 就应该能做这个
        <ul>
          <li>但后来一想健康检查的逻辑可能很复杂，那还是 <code class="language-plaintext highlighter-rouge">ExecStartPre</code> 吧</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<h1 id="activator">Activator</h1>

<p>实际做一下。首先定义一个 Socket，名字就定为 <code class="language-plaintext highlighter-rouge">chromium_activator.socket</code>：</p>

<ul>
  <li>它会把同名服务拉起来（这个服务下面定义），systemd 会通过环境变量传递 fd 过去，拉起来的服务直接用传递过来的 fd 读写即可</li>
  <li>为了避免撞端口，把它 Listen 在 Podman 的网络上
    <ul>
      <li>这个设备启动会比较慢，所以设置上 <code class="language-plaintext highlighter-rouge">FreeBind</code></li>
      <li>虽然其实放在 Podman 的网络上并没有啥意义，因为 RSSHub 还是会用接口返回的完整 URL 去访问 Headless Chromium</li>
    </ul>
  </li>
</ul>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[Unit]</span>
<span class="py">Description</span><span class="p">=</span><span class="s">Chromium Activator</span>

<span class="nn">[Socket]</span>
<span class="py">ListenStream</span><span class="p">=</span><span class="s">172.17.0.1:9222</span>
<span class="py">Restart</span><span class="p">=</span><span class="s">Always</span>
<span class="py">FreeBind</span><span class="p">=</span><span class="s">true</span>

<span class="nn">[Install]</span>
<span class="py">WantedBy</span><span class="p">=</span><span class="s">sockets.target</span>
</code></pre></div></div>

<p>然后再定义一个由上面那个 Socket 激活的服务，名字就叫 <code class="language-plaintext highlighter-rouge">chromium_activator.service</code>：</p>

<ul>
  <li>让它把 Chromium 拉起来</li>
  <li>拉起来之后用 curl 做健康检查</li>
  <li>健康检查没问题之后启动 <code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 代理</li>
  <li>顺便管理一下生命周期
    <ul>
      <li>给 <code class="language-plaintext highlighter-rouge">systemd-socket-proxy</code> 指定一个 40s 空闲就退出的参数</li>
      <li>RSSHub 会在 30s 后干掉它拉起来的 Chromium，这个是写在它的代码里面的（改不了，不用管</li>
      <li>为了避免一些意外情况，给这两个服务再指定一个 systemd 控制的最大运行时长，保证他们用完之后及时释放资源
        <ul>
          <li>Chromium 60s（下面改），<code class="language-plaintext highlighter-rouge">systemd-socket-proxy</code> 50s</li>
          <li>这两个时间要比上面的两个要长，这样 systemd 拿到的服务退出状态才是正常的</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[Unit]</span>
<span class="py">Requires</span><span class="p">=</span><span class="s">chromium.service</span>
<span class="py">After</span><span class="p">=</span><span class="s">chromium.service</span>
<span class="py">Requires</span><span class="p">=</span><span class="s">chromium_activator.socket</span>
<span class="py">After</span><span class="p">=</span><span class="s">chromium_activator.socket</span>
<span class="py">JoinsNamespaceOf</span><span class="p">=</span><span class="s">chromium.service</span>

<span class="nn">[Service]</span>
<span class="py">ExecStartPre</span><span class="p">=</span><span class="s">curl --retry 5 --retry-connrefused --retry-delay 1 http://127.0.0.1:9222/json/version</span>
<span class="py">ExecStart</span><span class="p">=</span><span class="s">/lib/systemd/systemd-socket-proxyd 127.0.0.1:9222 --exit-idle-time 40s</span>
<span class="py">RuntimeMaxSec</span><span class="p">=</span><span class="s">50s</span>

<span class="nn">[Install]</span>
<span class="py">WantedBy</span><span class="p">=</span><span class="s">multi-user.target</span>
</code></pre></div></div>

<p>Headless Chromium 的服务还用之前 <a href="../self-hosted-1">Self Hosted (1)</a> 里面的那个，但做一点小调整：</p>

<ul>
  <li>Disable 掉避免它自动启动</li>
  <li>按上面说的控制一下生命周期
    <ul>
      <li>把 <code class="language-plaintext highlighter-rouge">Restart=Always</code> 去掉</li>
      <li>增加 <code class="language-plaintext highlighter-rouge">RuntimeMaxSec=60s</code> 保证它用完后自动退出</li>
    </ul>
  </li>
</ul>

<p>最后 <code class="language-plaintext highlighter-rouge">sudo systemctl enable chromium_activator.socket</code> 让它自动启动就行了。</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># curl 172.17.0.1:9222/json/version</span>
<span class="o">{</span>
   <span class="s2">"Browser"</span>: <span class="s2">"Chrome/138.0.7204.49"</span>,
   <span class="s2">"Protocol-Version"</span>: <span class="s2">"1.3"</span>,
   <span class="s2">"User-Agent"</span>: <span class="s2">"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/138.0.0.0 Safari/537.36"</span>,
   <span class="s2">"V8-Version"</span>: <span class="s2">"13.8.258.19"</span>,
   <span class="s2">"WebKit-Version"</span>: <span class="s2">"537.36 (@d2b48fd5f7813ed477a2d68fa232b8178fa4fb1e)"</span>,
   <span class="s2">"webSocketDebuggerUrl"</span>: <span class="s2">"ws://172.17.0.1:9222/devtools/browser/7299ef75-0a2d-4600-bfbf-1d8f642ed028"</span>
<span class="o">}</span>
</code></pre></div></div>

<h1 id="simplify-and-monitoring">Simplify and Monitoring</h1>

<p>既然引入了 curl 做健康检查，其实也可以考虑不使用 <code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code>，不过有几点考虑：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 是 systemd 自带，无需额外安装，不产生额外磁盘空间占用</li>
  <li><code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 的生命周期短于被一起拉起来的 Chromium，不产生长期资源占用</li>
  <li>直接使用 CGI 风格返回 curl 的结果可能会导致 RSSHub 启动的时候拉起来一堆 curl，不如只起一个 <code class="language-plaintext highlighter-rouge">systemd-socket-proxyd</code> 高效</li>
</ul>

<p>另外一个可以简化的点是：如果考虑丢掉 curl，或许可以利用 nginx 来处理重试</p>

<ul>
  <li>顺便可以将 Chromium 的启动次数记录到 Prometheus 中（虽然好像也没啥用</li>
  <li>研究了一下，nginx 竟然没有很直接的方式来做针对 502 的直接重试，只能通过错误处理之类的方式绕一圈，真是令人费解，不搞了</li>
</ul>

<p>至于这么做了有啥用，实话说基本没有，基本上就只有 CPU 占用少了 1% 左右。但是观察日志，Headless Chromium 可能每 15 分钟到一个小时才会被启动一次，绝大多数情况下 <code class="language-plaintext highlighter-rouge">ps auxf</code> 都不会再看到 Chromium 相关的进程，确实要顺眼很多。</p>

<h1 id="end">End</h1>

<p>更新于 7.6 的一点题外话：开始写这篇的时候 B 站似乎刚好在做一些反爬相关的升级</p>

<ul>
  <li>最早是从 6.26 某次重启 NAS 后发现 RSSHub 的健康检查一直过不去，升级 RSSHub 也没用
    <ul>
      <li>后来抓了一下包，小改一下代码解决，但开始出现偶尔被风控拦截的情况，不过情况还算可以接受</li>
    </ul>
  </li>
  <li>7.1 15:30 错误率突然开始显著上升，健康检查连十分钟都扛不过去了，纯纯是吊着一口气那种状态
    <ul>
      <li>但是非常神奇的是，21:30 左右它竟然又完全恢复到了 6.26 之前那种一个报错都没有的状态</li>
    </ul>
  </li>
</ul>

<p>然后观察了几天，截止到 7.6 都再也没出现过一次报错，如下图。甚至从上面 Socket Activation 的日志来看连刷新 Cookie 都没操作过</p>

<p><img src="../assets/images/start-headless-chromium-on-demand/vts.png" alt="" /></p>

<p>7.11 更新：7.8 号晚上 21:30 又出现了一次跟上面提到的相似的情况，但只持续了 45 分钟左右。算了不管了再炸再说（</p>

<p>虽然不知道 B 站是在搞什么活，但反正最后一次获取到的 Cookie 留下来了，如果下次重启再炸就把它填回去。顺便其实这部分是发 Vacation 2025.1 的时候一起补上的，所以就不再这里写下期预告了（</p>]]></content><author><name>yichya</name></author><category term="NAS and OpenWrt" /><category term="Technology" /><category term="nas" /><summary type="html"><![CDATA[RSSHub 需要一个 Headless Chromium 来应对 B 站的反爬措施。去年的做法是用 systemd 直接拉起来一个，并且当它被 RSSHub 主动关掉之后自动重启，用起来倒是也没啥问题，资源占用也几乎可以忽略不计，但每次 ps auxf 看见一大堆 Chromium 都感觉很扎眼。]]></summary></entry></feed>