<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[捞人的小站]]></title><description><![CDATA[一起来玩吧~]]></description><link>https://zwh.moe</link><image><url>https://zwh.moe/thinking.svg</url><title>捞人的小站</title><link>https://zwh.moe</link></image><generator>Yohaku (https://github.com/Innei/Yohaku)</generator><lastBuildDate>Thu, 04 Jun 2026 09:31:21 GMT</lastBuildDate><atom:link href="https://zwh.moe/feed" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2026 09:31:21 GMT</pubDate><language><![CDATA[zh-CN]]></language><item><title><![CDATA[网站维护日志 | 2026-04]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/notes/9">https://zwh.moe/notes/9</a></blockquote><div><h2 id="">前言</h2><p>一年半多没有写日志了，一方面是博客算是进入了长期<del>长草</del>维护状态，另一方面，主要也是由于自己成为打工人了没那么多时间去折腾了。至于这一次更新，算是某种意义上的除旧迎新了。</p><h2 id="tldr">tl;dr</h2><ul><li>前端迁移至服务器</li><li>博客主题更新成 Yohaku</li><li>修复了一点点东西</li><li>一堆东西下线</li></ul><h2 id="">前端迁移至服务器</h2><p>基于 Vercel 的免费额度天天变，也是想了一下把前端迁移到了服务器使用 Docker 部署，正好我自己的私有仓库写了构建镜像的工作流，可以直接使用。</p><h2 id="-yohaku---">更新成 Yohaku 主题 &amp; 修复</h2><p>随着 Innei 将 Shiroi 重写成了 Yohaku，博客自然也是跟进了（虽然也引入了一堆问题）。除此之外，修复了一些没那么显眼的细节，比如早在某个版本就坏掉的 RSS，以及 WebSocket 相关的东西，还有经典的网站图标 thinking。</p><h2 id="">一堆东西下线</h2><ul><li>Xlog 分站因上游的问题被迫下线了，以后博客这边发的文不会也无法同步到 Xlog 了。</li><li>上篇日志里新建的 BroadcastChannel 服务由于频道转私有之后无法拉取消息导致服务被迫下线</li><li>统计的服务目前也是下线状态，但是会恢复的（咕咕咕）</li></ul><h2 id="">未来计划</h2><p>Xlog 分站下线后，后期主要会考虑重新整一个静态的分站，至于具体使用哪个框架什么时候搭嘛，先咕咕咕再说（x</p></div><p style="text-align:right"><a href="https://zwh.moe/notes/9#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/notes/9</link><guid isPermaLink="true">https://zwh.moe/notes/9</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Mon, 06 Apr 2026 14:32:59 GMT</pubDate></item><item><title><![CDATA[GitHub Actions 构建 Yohaku 的 Docker 镜像]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/technology/yohaku-docker-deployment">https://zwh.moe/posts/technology/yohaku-docker-deployment</a></blockquote><div><h2 id="">前言</h2><blockquote class="markdown-alert-note"><header>NOTE</header><p>26/4/25更新：Workflow 增加 submodules 拉取避免缺少变量。
26/5/24更新：跟随上游 core v13 变动把 /api/v2 改成了 /api/v3</p></blockquote>
<p>Innei <del>疯狂使用 Claude 等 AI 工具</del>把 Shiroi 重写了一遍设计风格，改名成了 <a href="https://github.com/Innei/Yohaku">Yohaku</a>。但是吧，refactor 步子太大一堆破坏性变更，整得原来使用 GitHub Actions 构建的镜像已经没法在部署镜像后正常使用了。在使用“帮帮我，Copilot”大法排查出问题并进行修复之后，整理了一下问题，结合原有的资料，写一版 2026 年用 Actions 构建一个能跑的 Yohaku Docker 镜像的教程。</p><h2 id="">变了什么？</h2><p>太长不看的结论：原先只需要在运行时加的环境变量，现在在构建时也需要传入，否则编译后的产物用原有方式进行部署，访问时会炸 <code>Invalid base URL: /api/v3/auth</code>。</p><p>究其原因，在于构建镜像时没有注入 <code>BASE_URL</code> 等参数，导致构建编译阶段默认把 <code>NEXT_PUBLIC_API_URL</code> 编译成了 <code>/api/v3</code>。当容器启动并进行服务端渲染时，由于它读取的是打包好的编译产物，<code>NEXT_PUBLIC_API_URL</code> 还是写死的 <code>/api/v3</code>，所以出现了报错。所以需要在构建阶段就得把 <code>BASE_URL</code> 这个参数设置好。</p><h2 id="">思路</h2><p>和 <a href="https://blog.sotkg.com/2024/10/shiroi-docker-deployment">PaloMiku 之前写的教程</a>类似但有不同：使用 GitHub Actions 定期从上游私有仓库拉取更新，并使用变基操作加上自己的变更，再使用另一个工作流完成添加变量并构建 Docker 镜像，以及发布到 GitHub Packages 的流程。</p><p>其中前半段的工作流可以参考我写的教程：<a href="https://zwh.moe/posts/technology/actions-sync">破事水 | Actions 同步上游项目及合并到自己分支</a></p><p>后面构建镜像部分的 Workflow 参考如下（<del>用了一堆轮子</del>），在 <code>.github/workflows</code> 目录下新建 yml 工作流，将以下内容粘贴提交：</p><pre class="language-yaml lang-yaml"><code class="language-yaml lang-yaml">name: Create and publish a Docker image

# main 分支动了之后自动触发工作流
on:
  push:
    branches: [&#x27;main&#x27;]

# 定义镜像地址和镜像名字
env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    # 设置 GITHUB_TOKEN 的权限
    permissions:
      contents: read
      packages: write
      attestations: write
      id-token: write
      # 
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          submodules: true
      # 登录镜像地址
      - name: Log in to the Container registry
        uses: docker/login-action@v4
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      # 在工作流中提取标记镜像的 tags 和 labels
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=raw,value=latest
            type=sha
      # 使用仓库的 Dockerfile 编译镜像，使用上个步骤中定义的 tags 和 labels，并推送至 ghcr.io，其中 build-args 负责在编译前声明变量值。
      - name: Build and push Docker image
        id: push
        uses: docker/build-push-action@v7
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }}
            S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }}
            WEBHOOK_SECRET=${{ secrets.WEBHOOK_SECRET }}
            TMDB_API_KEY=${{ secrets.TMDB_API_KEY }}
            GH_TOKEN=${{ secrets.GH_TOKEN }}
            BASE_URL=${{ secrets.BASE_URL }}

</code></pre>
<p>这样就可以实现简单的构建并上传 Github Registry 镜像。此外，至少需要在仓库 Settings → Secrets and variables → Actions 中的 Repository secrets 配置 <code>BASE_URL</code> 变量，变量的值是部署的 Core 后端所绑定的域名（如 <a href="https://api.example.com)，除此之外其他变量按需添加。完成后跑一遍工作流即可构建镜像。">https://api.example.com)，除此之外其他变量按需添加。完成后跑一遍工作流即可构建镜像。</a></p><blockquote class="markdown-alert-note"><header>NOTE</header><p>至于为什么不配置 <code>NEXT_PUBLIC_API_URL</code> 和 <code>NEXT_PUBLIC_GATEWAY_URL</code> 这两个经典变量，主要仓库自带的 <code>Dockerfile</code> 文件里边已经注明了这两个变量的值是基于 <code>BASE_URL</code> 的，所以可以不用添加。当然有问题了也可以在 Workflow 和 Secret 里边添加对应的变量。</p></blockquote>
<h2 id="">使用</h2><p>编译完成后可以在自己项目页面右侧的 Packages 找到自己构建的镜像。</p><p>在服务器上拉取镜像前，需要先配置 Docker 私有仓库。输入以下指令登录 Github Registry 私有仓库：</p><pre class="language-bash lang-bash"><code class="language-bash lang-bash">docker login ghcr.io
</code></pre>
<p>输入账号和有访问权限的 Github Access Token，确认登录后即可拉取私有仓库镜像。如果你用的是 1Panel，也可以在容器-仓库中直接添加配置私有仓库。</p><p>配置完成后可以使用如下 Docker Compose 文件直接部署镜像：</p><pre class="language-yml lang-yml"><code class="language-yml lang-yml">services:
  shiro:
    container_name: shiroi
    image: 
    restart: always
    environment:
      # 保留以下两条保证兼容性
      - NEXT_PUBLIC_API_URL=https://api.example.com/api/v3
      - NEXT_PUBLIC_GATEWAY_URL=https://api.example.com
      - NEXT_SHARP_PATH=/usr/local/lib/node_modules/sharp
      - BASE_URL=https://api.example.com
    ports:
      - 127.0.0.1:2323:2323
</code></pre>
<p>其中 <code>images</code> 填写你看到的镜像信息（一般来说会直接以仓库名命名镜像，类似于 <code>ghcr.io/username/repo_name:latest</code>）</p><h2 id="">收尾</h2><p>自此，使用 Actions 构建镜像并直接部署的教程也算是结束了，关键点还是在于在构建镜像的过程中引入变量，别的步骤差不了多少。有问题可评论区提问咨询或者使用 AI 和搜索引擎进行理解。</p><p>参考内容和相关链接如下：</p><ul><li>PaloMiku 的 <a href="https://blog.sotkg.com/2024/10/shiroi-docker-deployment">GitHub Action 构建 Shiroi Docker 镜像</a></li><li><a href="https://github.com/innei-dev/shiroi-deploy-action">innei-dev/shiroi-deploy-action</a> （Innei 自动化部署 Yohaku 的轮子，Readme 也是告诉说需要在构建时传递变量了）</li><li><a href="https://zwh.moe/posts/technology/actions-sync">破事水 | Actions 同步上游项目及合并到自己分支</a></li></ul></div><p style="text-align:right"><a href="https://zwh.moe/posts/technology/yohaku-docker-deployment#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/technology/yohaku-docker-deployment</link><guid isPermaLink="true">https://zwh.moe/posts/technology/yohaku-docker-deployment</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Mon, 06 Apr 2026 12:53:29 GMT</pubDate></item><item><title><![CDATA[年终总结 | 踏实的 2025]]></title><description><![CDATA[<link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192106523.png?width=640"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192424010.png?width=640"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192554401.png?width=640"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192648018.png?width=640"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192817890.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192839507.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101193111916.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2026/01/01/20260101192917864.png"/><div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/default/review-2025">https://zwh.moe/posts/default/review-2025</a></blockquote><div><h2 id="">前言</h2><p>月初开坑，赶最后一天交稿发文，这就是年终总结的传统，不得不品（然后因为写不完了拖到了新的一年才交）。当然也正如去年所预测，今年博客更新数只有1，一方面也如我在15问里边写到的，有一些自己写的草稿自己都看不过眼，然后又由于没咋维护，所以寄了。</p><p>但要说的话今年确实有很多里程碑，之前是计划7月的时候写一个半年总结来概括的，但工作后自己把这事抛之脑后了，然后搁 CodeSpaces 的存稿也因为自己咕太久没了，于是摆到了现在。年终总结的传统还是得更的，所以嘛留到现在一块来讲。</p><h2 id="">学校</h2><p>今年的上半年在学校主要就干三件事：毕设、重修考试、找工作。</p><p>我记得去年年终总结的时候我还在说自己开了个好头，今年做开题感觉自己还可以，但是因为某些原因中期和结题有一点吃亏，熬夜的天数越来越多，结题时发现自己差点做不完了，熬了三晚凌晨3点睡，好不容易做完把汇报给糊过去了，丢去一查重发现自己 AI 率爆完了，然后又开始各种改来改去降 AI 率，赶在终稿 DDL 前两分钟确认 AI 率没问题了才交了上去。事后只觉得这段熬夜的经历是真的不想再来一次了。</p><p>当然，主线任务是毕设，支线任务的大头还是重修课，重修搞不好自己得寄。于是去沉下心来折腾材力和高数。考前几周天天找自习教室/图书馆研讨间和几个认识的朋友一块进行复习，最后都拿了个还能接受的结果，也成功保住了我的毕业证以及学位证。</p><p>另外一个支线任务则是工作，毕竟因为自己不太选择考研了，那自然得有其他东西铺路，比如求职。在找工作这方面，自己还是处于一个比较混沌的状态：不知道要找啥工作、不知道自己要去哪里、不知道自己应该拿多少工资。以至于三月四月简历猛投就是找不着一点自己心头好。四月初的时候去投三一，我是没想到在中旬开花能接到后续说要去面试，面试也只是简单地聊一下天就结束了，后来拿 Offer 和签约也是一气呵成。也算是在同龄人里边得到点优势罢。</p><p>当然，今年也完成了一些校内的成就。比如拿到了校内的奖学金，以及四级得到了救赎，至少大一时立的 flag 以这样的一种方式完成，也算是莫名其妙地圆满了。</p><h2 id="">中转</h2><p>毕业之后我并没有马上跑路，因为得处理我之前报了名但没考完的驾照<del>（谁能想到这个鸽子23年报名之后现在才想起来去完成整个驾照考试）</del>，中间还租了个房子体验了一把一人宿的感觉。不过那时候也就想着快点结束，在定好大概的考试计划之后就开始全力冲刺，最后科二科三科四全部一把过完，没给毕业旅行拖后腿。当然，在驾校的那段时间我也基本完成了对后面驾考结束后的规划：先去杭州看看准备在那里上班的同学，顺路完成自己的入职体检，然后一转宁波去和网友面基，最后常驻深圳准备接下来的入职。于是在6月26日，我便正式开始了属于自己的毕业旅行。</p><p>比较孬的是同学的入职似乎还得晚几天，于是在到了杭州完成体检并跑去看西湖<del>和自己一样咕咕咕的鸽子</del>之后，便直接转向了宁波，和藿藿面上了，一块享受舞萌DX的乐趣<del>（awmc）</del>。某种意义上这应该算是除同校的外第一个进行面基的网友，意义还是比较大的。</p><p>在火车站和藿告别之后便回到了深圳休整，中间去了趟HK体验了三天两夜轮渡的快感，<del>就是网费烧得有点多</del>，而且没顺路办下来 HSBC 有点可惜。</p><p>经历了差不多两周的修养，不知不觉也到了入职的时刻。</p><p>::: gallery
<img src="https://2.zwh.moe/images/2026/01/01/20260101192106523.png?width=640"/>
<img src="https://2.zwh.moe/images/2026/01/01/20260101192424010.png?width=640"/>
<img src="https://2.zwh.moe/images/2026/01/01/20260101192554401.png?width=640"/>
<img src="https://2.zwh.moe/images/2026/01/01/20260101192648018.png?width=640"/>
:::</p>
<h2 id="">入职</h2><p>首先是长沙总部的培训。和许多大厂的入职差不多，狠狠的军训，然后素拓锻炼团队合作，接着上课讲公司文化和相关制度，结尾来一个考试并说考试不通过就不能转正。看着挺朴实无华的，不过也在这个朴实无华的培训营里边度过了自己的22岁生日，这就显得这也没那么朴实无华。</p><p>在完成总部的培训后，我们回到了自己的事业部开始了自己真正的入职时光。前三个月经历过几乎次次考试倒一的道心破碎又重组，也品尝过好不容易跑出来5km之后的胜利。在三个月的工序实习之后，现在已经进入了岗位实习阶段，目前每天做一点管理的工作，写一下公文，帮领导跑个腿完成任务。期间也见证了许多人因为各种原因挥手告别了这个公司，实在让人唏嘘。</p><h2 id="">未来</h2><p>在经历了以上节点之后，未来应该是怎样的，我自己也尚未得出一个比较明确的答案。某种意义上，在越来越多的人离开公司后自己也无时不刻怀疑自己是否也应该离开去试着走另外一条路。长远规划而言最理想的情况还是待够一年或一年半，但能不能做到还得看公司愿不愿意继续接纳这样的生活，可能真的有一天我觉得自己待够了的时候那我就会去挑战新的东西也说不好，总之就这样罢。</p><h2 id="">关于视频</h2><p>年度 DNA：微积分 美式鬼畜 音游（音乐游戏） 崩坏：星穹铁道 osu! 单机游戏直播</p><p>观看视频最多：https://www.bilibili.com/video/BV1ySLAz6E6g/</p><p>（BUZZ CUTZ 无敌，同时在年度音乐榜单里边也能排第9）</p><p>年度挚爱 UP 主：艾雨露（看小众变态 osu! 赛事看的）</p><p><img height="1396" src="https://2.zwh.moe/images/2026/01/01/20260101192817890.png" width="784"/></p><h2 id="">关于音乐</h2><p>来吧，看看网易云今年又给我整啥活（</p><p>年度歌曲：《Xenogenesis》（216 次，在赶毕设的时候听的，相信黎明会到来）</p><p>年度歌手：Plum（4/10，睡午觉的时候就好 Plum 的钢琴曲）</p><p>最爱曲风：二次元 65%（无需多言）</p><p>年度关键词：未来 116 次</p><p><img src="https://2.zwh.moe/images/2026/01/01/20260101192839507.png"/></p><h2 id="">关于游戏</h2><p>今年的游戏轨迹比较明显：主业崩铁，副业音游凸分，偶尔来点 Steam 小游戏。明年或许等终末地等新游戏出了之后可能游戏类型会多点。</p><p>音游部分，由于今年忙于毕设和工作，mania 没能干到 2kpp，也没过 1dan。方向盘这边因为算法改了导致 Rating 涨到了 16.426，2026 争取干到 16.5。舞萌国服这边基本就是佛系开打，目前 Rating 才 7k7。然后今年借用同学的平板简单地体验了一下 Chunithm，目前 Rating 9.36。都有进步空间。</p><p><img src="https://2.zwh.moe/images/2026/01/01/20260101193111916.png"/></p><p>Steam 上玩得最多的依旧是 14种扫雷变体2，脑力不够好，时不时就得掏出来练一下。其次是 KALPA 的电脑端，连攻一段时间把评分推到了 16.00，可惜打15以上难度的曲子打不动了（悲</p><p><img src="https://2.zwh.moe/images/2026/01/01/20260101192917864.png"/></p><h2 id="--see-also">总结 &amp; See also...</h2><p>可能今年过的比较精彩，但用言语来表达还是有点潦草，毕竟纯手写没动用一点 AI。不管怎么说，感谢你看到这里。最后还是引用昨天分享的那句话作为结尾：<strong>苦泪又落盼风拂，伤悲已过候春来</strong>。祝新年快乐。</p><p>另外，作为传统，转一下各位好友的年终总结。</p><p><a href="https://blog.rachelt.one/articles/life-distributed-along-axes/">沿四条轴线，搜寻 2025 的坐标  By Rachel</a>
<a href="https://blog.chihuo2104.dev/posts/goodbye-2025/">2025年度总结 By chihuo2104</a></p></div><p style="text-align:right"><a href="https://zwh.moe/posts/default/review-2025#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/default/review-2025</link><guid isPermaLink="true">https://zwh.moe/posts/default/review-2025</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Thu, 01 Jan 2026 12:25:20 GMT</pubDate></item><item><title><![CDATA[年终总结前篇 | 马特市的问卷 2025]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/default/review-2025a">https://zwh.moe/posts/default/review-2025a</a></blockquote><div><h2 id="">前言</h2><p>今年的年终总结会分为前篇和正篇，前篇和2024前半段一样通过马特市的问卷来拷问自己今年过得如何，正篇则回归今年的各个节点来总结自己的2025，预计明天发布。</p><h2 id="">问卷正文</h2><ol start="1"><li>相比过去几年，你觉得 2025 年过得更漫长还是更快了？你有找到自己的节奏吗？</li></ol><p>我觉得是快了，毕竟今年自己经历的里程碑挺多的，在这种情况下会觉得自己的生活非常充实。生活节奏这一块我只能说，自己初入职场没多久，感觉自己还在适应公司的节奏，或许还在研究怎么将个人的节奏与公司节奏对拍。</p><ol start="2"><li>今年你与自己的身体相处愉快吗？</li></ol><p>大概......应该......没那么愉快？总之身体方面的小问题还是不少等，但倒也没有因为大问题去过医院。不过之前入职体检的时候发现自己一身都是毛病，但发现是发现，怎么改还是有点难考虑了。</p><ol start="3"><li>分享你今年新发现或持续耕耘的领域，可以是新挖掘的兴趣、专业领域、城市空间、自然秘境，也可以是一种对待自己或他人的方法。</li></ol><p>持续耕耘的应该还是 PuzzleHunt 吧，继去年两个大型比赛都没完赛之后今年和队友一块完赛了好几个 PH（金牌解谜、CCBC 16、ZJUPH），和队友在一块互相碰撞思路寻找灵感，然后解出题目。某种意义上也算是训练了思维能力。</p><ol start="4"><li>作为一个写作者，你除了在 Matters 书写，也有什么平台吸引你把文字留下？线上写作的纪录、交流，如何让你在纷乱的世界中找回自己？</li></ol><p><del>我也没在 Matters 书写啊</del>，我的文章一般就是自己的主博客和 XLog 两个地方。线上写作的过程我觉得是审视自己的过程，每一次写作的时候都在反思自己写的这个东西到底有没有问题，需不需要进行修改。唯一孬的地方在于自己有时候想着想着就会觉得自己写得太孬了还是不发出来了，使得今年有很多想写的内容都在写作时自己被毙掉了。</p><ol start="5"><li>数位世界总有许多新发明，今年你有没有尝试或走入哪些新的「网路世界」？可能是某个让你耳目一新的网路社群、平台，或是一种全新的互动方式、创作空间。它让你对创作、交流、社群产生什么样的体验或想法？</li></ol><p>很遗憾，没有，所以这问题没法回答:(</p><ol start="6"><li>分享一个今年最好或最糟糕的时刻。回忆那个当下，你有什么感受？</li></ol><p>要说最好的时候，感觉今年许多时候都最好。不管是毕设通过，还是挂科清零，亦或是驾照考试一次过，以及跟网友线下见面，所有这些节点我觉得这些都算是今年最好的时候。</p><ol start="7"><li>分享一个你今年做过的最好的决定。</li></ol><p>最好的决定应该是选择去宁波面基网友，某种意义上算是我第一次去规划自己旅行的行程，然后跟熟悉的陌生人在线下见面，不过给出来的反馈还是非常惊喜的，也希望明年有机会和其他网上认识的好友面基。</p><ol start="8"><li>今年对你具有意义的一段话、一部电影、一首歌、一场表演、一张照片（等），分享它的内容以及为你带来的瞬间深刻时光，又或是启发。</li></ol><p>我选择在上个月底打完的 ZJUPH 里面陈列馆的一句话：<strong>苦泪又落盼风拂，伤悲已过候春来。</strong> 
引用原剧情里面的解释：生活，从来便没有做好万全准备的时候。也许我们现在受到了打击，大家有一些负面情绪；但如果沉浸在这种情绪中，我们便会失去未来。
也希望各位能抛弃过去的阴影，大步走向2026。</p><ol start="9"><li>2025年，你最想感谢身边的谁？他／她陪你走过了怎样的路？</li></ol><p>感谢我的某位大学同学，从入职开始一路和我走到同一个部门，被同一个师傅带着, 某种意义上也算是相互扶持前进的典范了；感谢我的父母，愿意给我一些主动性去完成自己想做的事情，同时在我疑惑的时候能一同讨论复盘问题。</p><ol start="10"><li>给走过 2025 年的自己一句感谢词。</li></ol><blockquote><p>辛苦了 可以哭了 可以笑着说结束了 忘记所有规则 放下所有规则 敬自己一杯 因为值得（《时光盲盒》）</p></blockquote>
<ol start="11"><li><p>我来自 ＿珠海＿（任何你认同的地点、组织、城市、区域、国家），2025 年，在Matters 写问卷与你相遇。</p></li><li><p>请填空：2025，＿Everything＿ Matters.</p></li></ol><p>最后，正篇正在加紧写作中，预计1月1日发布。</p></div><p style="text-align:right"><a href="https://zwh.moe/posts/default/review-2025a#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/default/review-2025a</link><guid isPermaLink="true">https://zwh.moe/posts/default/review-2025a</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Wed, 31 Dec 2025 15:43:06 GMT</pubDate></item><item><title><![CDATA[Sharkey 搭建及优化记录]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/technology/sharkey-deploy">https://zwh.moe/posts/technology/sharkey-deploy</a></blockquote><div><h2 id="">前言</h2><p>最近看到有些朋友尝试搭建了自己的实例，比如<a href="https://portal.gb0.dev">这位</a>。于是想着搭一个 Sharkey 来玩玩，并因此开始了一轮长时间的折腾。这篇文章尝试把最近折腾的内容都整合到一块供有类似想法的参考。</p><h2 id="-sharkey">为什么是 Sharkey？</h2><p>首先，Misskey 系界面很对我胃口；其次，我之前试折腾所使用的 Firefish 进入维护状态准备停更了（要不然本文的推荐就改成 Firefish 了）；再者，Sharkey 应该是 Misskey 的分支里边除 Firefish 之外添加的新特性是最多的，非常好玩；<del>最后，我内存够。</del></p><p>目前本人所使用的是 <a href="https://github.com/Lhcfl/sharkey-stelpolva">Sharkey-stelpolva</a>，来自<a href="https://stelpolva.moe/">無名星屑</a>站长的 Fork，在原版 Sharkey 的基础上又加了一堆特性。不过该 Fork 没有提供已构建好的 Docker 镜像，为了减少每次更新服务器都得编译镜像的压力，自己搓了一个<a href="https://github.com/miaoa-dev/sharkey-stelpolva-docker">工作流</a>定期拉取源码构建镜像并上传到 DockerHub。你可以在<a href="https://hub.docker.com/r/wuhang2003/sharkey-stelpolva-docker">这里</a>查看该镜像信息。</p><h2 id="">部署</h2><p>首先新建个目录 <code>mkdir Sharkey &amp;&amp; mkdir Sharkey/.config</code> 存一下配置文件。</p><p>接下来拿一下配置示例并进入目录：（若使用原版 Sharkey 则复制带井号的命令）</p><pre class="language-sh lang-sh"><code class="language-sh lang-sh">wget -O Sharkey/docker-compose.yml https://raw.githubusercontent.com/Lhcfl/sharkey-stelpolva/refs/heads/stelpolva/compose_example.yml
# wget -O Sharkey/docker-compose.yml https://activitypub.software/TransFem-org/Sharkey/-/raw/stable/compose_example.yml
wget -O Sharkey/.config/default.yml https://raw.githubusercontent.com/Lhcfl/sharkey-stelpolva/refs/heads/stelpolva/.config/docker_example.yml
# wget -O Sharkey/.config/default.yml https://activitypub.software/TransFem-org/Sharkey/-/raw/stable/.config/docker_example.yml
wget -O Sharkey/.config/docker.env https://raw.githubusercontent.com/Lhcfl/sharkey-stelpolva/refs/heads/stelpolva/.config/docker_example.env
# wget -O Sharkey/.config/docker.env https://activitypub.software/TransFem-org/Sharkey/-/raw/stable/.config/docker_example.env
cd Sharkey
</code></pre>
<p>编辑 <code>.config/default.yml</code>。在 <code>url</code> 处修改自己所用的域名，其他变量可视情况进行修改。</p><p>随后编辑 <code>docker-compose.yml</code>，取消注释在 <code>service/web</code> 下的 <code>image</code> 一行，若使用上文提到的构建镜像可将内容改为 <code>wuhang2003/sharkey-stelpolva-docker:latest</code>，并注释掉下一行的 <code>build</code>。</p><blockquote class="markdown-alert-note"><header>NOTE</header><p>可以尝试把镜像自带的 Redis 改成基于 Redis 开源版本 Fork 而来的 <a href="https://valkey.io/">Valkey</a>，完美兼容且性能比原版强。</p></blockquote>
<p>修改 <code>service/db</code> 下的 <code>image</code> 一行，内容改为 <code>groonga/pgroonga:latest</code>，这是修改版的必要依赖。</p><p>完成后的 <code>docker-compose.yml</code> 参考如下：（网络为了方便在 1Panel 管理修改成了 <code>1panel-network</code>）</p><pre class="language-yml lang-yml"><code class="language-yml lang-yml">services:
  web:
    image: wuhang2003/sharkey-stelpolva-docker:latest
    restart: always
    links:
      - db
      - valkey
    depends_on:
      db:
        condition: service_healthy
      valkey:
        condition: service_healthy
    ports:
      - &quot;4514:3000&quot;
    networks:
      - 1panel-network
    # env_file:
    #   - .config/docker.env
    volumes:
      - ./files:/sharkey/files
      - ./.config:/sharkey/.config:ro

  valkey:
    restart: always
    image: valkey/valkey:8-alpine
    networks:
      - 1panel-network
    volumes:
      - ./valkey:/data
    healthcheck:
      test: &quot;valkey-cli ping&quot;
      interval: 5s
      retries: 20

  db:
    restart: always
    image: groonga/pgroonga:3.2.5-alpine-17
    networks:
      - 1panel-network
    env_file:
      - .config/docker.env
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: &quot;pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB&quot;
      interval: 5s
      retries: 20

networks:
  1panel-network:
    external: true

</code></pre>
<p>完成后先启动一下 PostageSQL 和 Redis（或 Valkey） <code>sudo docker compose up -d db redis</code>，复制两个容器名字（假设这里是 sharkey-valkey-1 和 sharkey-db-1），随后修改 <code>.config/default.yml</code> 里 db 部分和 redis 部分的 <code>host</code> 为对应容器名字。随后进入 db 容器通过 psql 连接数据库，执行 <code>CREATE EXTENSION pgroonga;</code> 为数据库添加 pgroonga 扩展。这样正式启动前的所有准备工作就准备好了。</p><p>接下来，<code>docker compose up -d</code>。参照 <a href="https://misskey-hub.net/en/docs/for-admin/install/resources/nginx/">Misskey 文档</a>配置反向代理。在 Sharkey 目录下执行 <code>sudo chown -R 991:991 files/</code> 修改文件夹归属以避免网页端无法上传文件的问题。</p><p>完成后，登录网页注册初始账号，进行一下站点体验的优化。</p><h2 id="">优化</h2><h3 id="">修改实例信息并加入中继</h3><p>修改实例信息：控制面板-&gt;设置-&gt;常规设置</p><p>添加服务器和站点 logo：控制面板-&gt;设置-&gt;品牌</p><p>加入中继：控制面板-&gt;设置-&gt;中继。常见的中文中继：<a href="https://relay.nya.one/">喵家中继</a>、<a href="https://relay.dragon-fly.club/">DragonRelay</a>、<a href="https://relay.isle.moe/">岛站的中继</a>。</p><p>开启中继后，小实例可能会出现跨站消息堵塞（中继中有大站点，信息流太频繁，堵塞了小实例的 sidekiq），跨站时间轴混乱（来自更远时间前的内容插入了当前跨站时间轴）等情况，请确认能够接受（基本无伤大雅）。同时，添加的中继多，会导致服务器的 PostgreSQL 数据库体积增加。</p><h3 id="cloudflare">CloudFlare</h3><p>站点添加的过程就不详述了，只提一个特别的点，对于实例的域名需要关闭 Rocket Loader，可以直接全局关闭该选项（速度 -&gt; 优化 -&gt; 内容优化）或者使用 <a href="https://developers.cloudflare.com/rules/configuration-rules/">Configuration Rules</a> 设置特定站点的规则。</p><p>除此之外可以考虑使用 R2 存储图片等资源。</p><h3 id="">添加权限组并打开部分权限</h3><p>控制面板 -&gt; 角色，新建一个角色，角色权限设为管理员，授权对象为手动。策略设置如下：</p><ul><li>速率限制取消默认并拉到最小 0%（后面使用工具上传表情调用到 API 时不容易炸）</li><li>开启管理自定义表情符号/管理头像挂件</li><li>网盘容量酌情拉大（大概 500M 到 1G）以方便接下来添加自定义表情和头像挂件</li></ul><p>随后给自己的号分配这个角色，返回到角色设置，在基本角色处打开“是否可以搜索帖子”的选项，完成。</p><h3 id="">添加表情（抓取+上传一条龙）</h3><p>由于上传自定义表情符号会存到对应账号的网盘，所以一般建议单独开一个号专门负责存表情等公用资源，该账号需要分配上述的管理员角色以使其能不受限制地上传表情。</p><p>抓取其他 Misskey 站点的表情：<a href="https://github.com/powerfullz/misskey-emoji-downloader">powerfullz/misskey-emoji-downloader</a></p><p>批量分类上传：<a href="https://github.com/pentaCoxian/misskey-emoji-bulk-uploader">pentaCoxian/misskey-emoji-bulk-uploader</a></p><h3 id="-spam">防 SPAM</h3><p>考虑到去年十月出现了一波针对 Fediverse 的 SPAM 潮，故加上这部分内容，主要分为内防（禁止非授权注册）和外防（防止外部实例 SPAM 消息流）。</p><p>禁止非授权注册：Sharkey 不需要主动设置，默认关闭开放注册（即需要邀请码），可在控制面板 -&gt; 管理处把“注册账户需要电子邮箱地址”和“新用户需要被手动批准”打开，同时在“安全”选项卡下设置验证码和邮箱验证。</p><p>防止外部实例 SPAM 消息流：控制面板 -&gt; 角色，新建角色，角色权限不动（普通用户），授权对象选择“符合条件”，设置条件和策略见<a href="https://stelpolva.moe/notes/9z4tzgyt6n6i0ewk">此条帖子的配图</a>，保存。</p><h2 id="">更新</h2><p>都用 Docker Compose 部署了，一行 <code>docker compose pull &amp;&amp; docker compose up -d</code> 搞定。</p><p><del>最后，欢迎关注 <code>@wuhang2003@m.zwh.moe</code>，还有我的老号 <code>@wuhang2003@nya.one</code>，谢谢喵。</del></p><h2 id="">参考资料</h2><ul><li><a href="https://misskey-hub.net/en/docs/">Misskey 官方文档</a></li><li><a href="https://docs.joinsharkey.org/">Sharkey 官方文档</a></li><li><a href="https://github.com/Lhcfl/sharkey-stelpolva">sharkey-stelpolva</a></li><li><a href="https://stelpolva.moe/notes/9z4tzgyt6n6i0ewk">Lhcfl 的帖子</a></li></ul></div><p style="text-align:right"><a href="https://zwh.moe/posts/technology/sharkey-deploy#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/technology/sharkey-deploy</link><guid isPermaLink="true">https://zwh.moe/posts/technology/sharkey-deploy</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Tue, 28 Jan 2025 15:42:16 GMT</pubDate></item><item><title><![CDATA[年终总结 | 抽象的 2024]]></title><description><![CDATA[<link rel="preload" as="image" href="https://2.zwh.moe/images/2024/12/31/202412312317424.jpg"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/12/31/202412312316657.jpg"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/12/31/202412312317254.jpg"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/12/31/202412312317798.jpg"/><div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/default/review-2024">https://zwh.moe/posts/default/review-2024</a></blockquote><div><h2 id="">前言</h2><p>没想到吧我月初就开坑年终总结了（没错又是这句）。很遗憾的是这应该是学生时代写的最后一篇年终总结了，往后的日子悬而未决，不知自己还有多少闲心在此。</p><p>今年最抽象的事该颁给啥呢？我看巴黎奥运会的蓝精灵有一战之力；当然 MAGA 打赢了复活赛也有点说法；六小时速通青瓦台也不容多让。卧槽，竟然是忠！诚！我们没救了。果然，作者只要随便找几个梗拿公式套就完了，但是各位读者看这么抽象的内容要考虑的东西就很多了。</p><p>说实话每年写这个东西的时候都有些害怕，因为写这个东西的过程就是审视自己的过程，若是这一年没啥成果，想必自己也难写出啥有意思的内容。今年总结的脉络会以<a href="https://matters.town/a/g53fqtbymfu2">马特市的问卷</a>为主，加上各个部分的总结。</p><h2 id="">问卷部分</h2><blockquote>1.<p> 相比過去幾年，你覺得 2024 過得更漫長還是更快了？你有找到自己的節奏嗎？</p></blockquote>
<p>我个人觉得是更快了，毕竟大学享受生活的时光是短暂的，不知不觉现在已经大四为毕业做准备了。对于节奏可能还不是特别明晰，但明年上半年已经是最后的期限了，已经拖不下去了（悲</p><blockquote>2.<p> 分享你今年新發現或持續耕耘的領域（可以是新挖掘的興趣、專業領域、城市空間、自然秘境，也可以是一種對待自己或他人的方法）。</p></blockquote>
<p>今年新发掘的领域应该还是 Puzzle Hunt（解谜寻宝）吧，在参加比赛的过程和新认识的队友一块尝试推理出谜题的可能性，也锻炼了自己分析问题的能力。唯一可惜的地方在于没有打通关过一场比赛，希望明年能结束这个遗憾吧。</p><blockquote>3.<p> 今年你有什麼新獲得的身心平衡小訣竅？這些習慣或訣竅如何改變你的生活？</p></blockquote>
<p>我承认今年倒是没有啥新获得的诀窍，基本都在和其他人倾诉/自己打游戏/出去走走/听歌之间选择一项或多项进行。至少和其他人接触交流了之后感觉自己大概应该可能也没那么 I？</p><blockquote>4.<p> 分享一個今年最好或最糟糕的時刻。回憶那個當下，你有什麼感受？</p></blockquote>
<p>在之前这个问题有些难选，不过就在总结发出的前一天（30 日）下午，我还在跟我的毕设老师汇报工作。所幸临时准备的参考文献内容老师很感兴趣，再加上找的和自己话题相关的有效论文居多，得到了老师的赞许。那一刻一方面是庆幸自己糊过了个人今年的最后一个任务，另外一方面感觉汇报进度似乎也不过如此，没什么好紧张的。</p><blockquote>5.<p> 今年對你具有意義的一段話、一部電影、一首歌、一場表演、一張照片（等），分享它的內容以及為你帶來的瞬間深刻時光，又或是啟發。</p></blockquote>
<p>我选择 ilem 教主的<a href="https://www.bilibili.com/video/BV12Y411F79B/">《白鸟过河滩》</a>。最开始接触这首歌是在做 P&amp;KU3 碎裂回忆，提示开出了白鸟，于是开始主动听这首歌，听着听着开始忍不住循环了。这首歌给我带来的最深刻的感觉就是孤独寂寥，一个人深夜听起这首歌总是让人怀念某些东西。</p><blockquote>6.<p> 今年透過什麼事情，讓你更認識了自己或他人？</p></blockquote>
<p>经历的事情很多，但是通过这些事情认识了某些人的另一面。相关内容可参见<a href="https://t.me/laorenspeak/3195">Telegram 频道消息</a>以及消息的引用。</p><blockquote>7.<p> 相比去年，今年你與自己的身體相處愉快嗎？</p></blockquote>
<p>大概......没那么愉快？作为一个不怎么喜欢运动的人，咳嗽感冒啥的小毛病肯定是逃不过的。和去年一样，月中的时候我又得了一次流感，所幸没太摧残我，只能说免疫力差的人是这样的，不能太嚣张。</p><blockquote>8.<p> 選一個時刻／當下／場景來代表 2024 年，你會選哪一個？</p></blockquote>
<p>怎么说呢，我会选择在不久前结束的二级项目进度汇报的此刻，至少这一刻之后，今年所有的事已经结束了，接下来就是等待着 2025 了。</p><blockquote>9.<p> 寫一段很想對某個人說，但到了年末都還未能說出來的話。</p></blockquote>
<p>对自己：辛苦了，又过了一年，明年加油。</p><blockquote>10.<p> 請填空：2024，<strong>__</strong> Matters.</p></blockquote>
<p>2024，occured many Matters.</p><h2 id="">关于游戏</h2><p>今年主要玩的游戏类型和去年类似，天天玩铁，偶尔玩崩3，不定期音游凸分，顺便开把扫雷和小丑牌。</p><p>主要还是聊聊音游部分，今年打 mania 打少了，整体水平没那么高，目前到 <a href="https://osu.ppy.sh/users/26586638">1647pp</a> 了，段位方面没达成去年的愿望过 reform 1dan，非常的遗憾，目前试了一下水平够了但是缺一点耐力以及准度，但愿在过年前我能尽力打通吧。Rotaeno 这边玩了一年现在已经到了 15.7 了，明年 15.9 就是胜利（</p><p><img alt="旋转音律" height="576" src="https://2.zwh.moe/images/2024/12/31/202412312317424.jpg" width="1280"/></p><p>Steam 这边今年玩得最多的当属 14种变形扫雷2，作为一个需要把思考能力发挥到极致的游戏，它真的很好玩；其次说一下小丑牌，之前在崩坏3玩过类似这种凑牌型的游戏，但是其中各种各样的 buff 和 debuff 还是让这个游戏的游戏性变得挺强的，当然也挺看运气的。</p><p><img alt="Steam 年度报告" height="864" src="https://2.zwh.moe/images/2024/12/31/202412312316657.jpg" width="864"/></p><h2 id="">关于音乐</h2><p>网易云重度患者前来报道（</p><p>年度歌曲：《Temptation》（90 次，作为考试复习时的战歌听的</p><p>年度歌手：PIKASONIC（年度歌单 10 首歌 9 首 PIKA，这就是铁血 PIKA 厨（确信</p><p>最爱曲风：二次元 27%（V家 电音 游戏 OST 轮流听的结果</p><p>年度关键词：需要 92 次 × 世界 332 次</p><p><img alt="网易云报告" height="993" src="https://2.zwh.moe/images/2024/12/31/202412312317254.jpg" width="745"/></p><h2 id="">关于视频</h2><p>说啥？看的就是 B 站，三年全勤不是日常吗？还有什么叫六边形战士啊（后仰</p><p>年度 DNA：守护解放西5 音游（音乐游戏） 手游直播 [CENSORED]</p><p>观看视频最多：<a href="https://www.bilibili.com/video/BV1jD421u7x7/">野花香(Haocore Mix Feat.Jiafei) - Daily天利 vs EndCat-终猫 vs StartDoge-始犬</a> （这不神奇吗？</p><p>最关心 UP 主：川观新闻（鉴定为看新闻学看的</p><p><img alt="B站年度报告" height="1280" src="https://2.zwh.moe/images/2024/12/31/202412312317798.jpg" width="721"/></p><h2 id="">总结</h2><p>继之前写了一篇<a href="https://zwh.moe/posts/default/15-answers-to-blogging">对《独立博客自省问卷15题》的回答</a>之后，今年也尝试使用问卷来拷问自己今年到底做了啥。但有些问题可能我资历上签写不出啥好答案请各位见谅。</p><p>这一年我自己的变化应该是更愿意和其他人去交流了（？，不管是跟熟悉的同班同学做项目还是和刚认识的解谜玩家一起打解谜比赛，主动提出自己想法的次数变多了，也得到了其他人的认可。我还是希望明年把这一点继续发挥下去，毕竟有些东西是越辩越明的。</p><p>明年压力也不小，上半年要结束整个毕业设计的工作，中间还要找工作，和今年问卷的第一题所述，还是得尝试找到自己的节奏去过完一整年。但是，正如第一题的回答所说，找到节奏的 DeadLine，似乎已经进入最后的倒计时了。</p><p>在今年的最后一小时写完整个报告，可能有些内容写得有些潦草，就像这一年一样。不管怎么说，感谢你看完了这一篇年终总结，祝新年快乐。</p></div><p style="text-align:right"><a href="https://zwh.moe/posts/default/review-2024#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/default/review-2024</link><guid isPermaLink="true">https://zwh.moe/posts/default/review-2024</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Tue, 31 Dec 2024 15:29:56 GMT</pubDate></item><item><title><![CDATA[让我们玩 Hackergame 2024]]></title><description><![CDATA[<link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312568.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091407401.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312581.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312580.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312577.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312571.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312572.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312573.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312574.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312583.jpg"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312584.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312569.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312582.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312570.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312575.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312576.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312578.png"/><link rel="preload" as="image" href="https://2.zwh.moe/images/2024/11/09/202411091312579.png"/><div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/moyu/hackergame-2024">https://zwh.moe/posts/moyu/hackergame-2024</a></blockquote><div><h2 id="">前言</h2><p>盼望着，盼望着，一年一度的<del>网安原神</del> hackergame <del>搜索</del>技术小考终于来了。今年的入门题相比去年少了些，只拿到 1k7。作为一个非计算机专业用户感觉我还是太菜了。</p><p>接下来来聊聊做各道题的心路历程，写的顺序也是我做出来的顺序。可能包含：AI 是我大爹、碎碎念、无端玩梗、自娱自乐等混沌要素（</p><h2 id="">签到</h2><p>开门需要在<del>听着<a href="http://202.38.93.141:12024/static/Hackergame.mp3">悠扬的小曲</a>的同时</del>在 60s 内输入各国文字的启动，但是不能粘贴（恼</p><p>不行，我太菜了什么都做不到，还是“等不及了，马上启动！”吧。怎么地址栏多了个 <code>?pass=false</code>？改为 <code>true</code> 看看？</p><p><img alt="hackergame 传奇奇妙至极" height="924" src="https://2.zwh.moe/images/2024/11/09/202411091312568.png" width="1851"/></p><p>就这样，拿到了签到题的 flag：<code>flag{We1C0ME-To-haCkerg@me-@Nd-EnJoY-hACk!n9-ZoZ4} </code></p><p>附一个《hackergame 传奇》歌词：（转自官方 Writeup）这歌啊，非常的好听，应该拉着看这篇文章的各位一起循环。</p><p><img alt="比赛 全凭兴趣（？" height="854" src="https://2.zwh.moe/images/2024/11/09/202411091407401.png" width="468"/></p><h2 id="hackergame-">猫咪问答（Hackergame 十周年纪念版）</h2><p>熟悉的猫咪问答，熟悉的搜索技术小考，熟悉的找不到答案在吼叫（</p><blockquote>1.<p> 在 Hackergame 2015 比赛开始前一天晚上开展的赛前讲座是在哪个教室举行的？（30 分） 提示：填写教室编号，如 5207、3A101。</p></blockquote>
<p>这道题搜了好几个网站，最后通过 <a href="https://lug.ustc.edu.cn/wiki/lug/events/hackergame/">Hackergame 在 LUG@USTC 的介绍页面</a>找到了科大第二届信息安全大赛（那时候还没叫 hackergame 呢）的<a href="https://lug.ustc.edu.cn/wiki/sec/contest.html">内容存档</a>。可以看到比赛时间安排里面有 <code>10 月 17 日 周六晚上 19:30 3A204 网络攻防技巧讲座</code>。所以答案是 <code>3A204</code>。<del>就这么活生生把水题做成了难题。</del></p><blockquote>2.<p> 众所周知，Hackergame 共约 25 道题目。近五年（不含今年）举办的 Hackergame 中，题目数量最接近这个数字的那一届比赛里有多少人注册参加？（30 分） 提示：是一个非负整数。</p></blockquote>
<p>看第一题里说过的 Hackergame 的介绍页面，把每年比赛的仓库（前几年的在 <code>ustclug</code> 组织下） 翻一次数数，最后得出来是 19 年最接近（28 题），再把 <code>hackergame 2019</code> 丢给咕噜噜。搜到了<a href="https://news.ustclug.org/2019/12/hackergame-2019/">这个</a>。所以答案为 <code>2682</code>。</p><blockquote>3.<p> Hackergame 2018 让哪个热门检索词成为了科大图书馆当月热搜第一？（20 分） 提示：仅由中文汉字构成。</p></blockquote>
<p>众所周知，只有猫咪问答会考查询图书馆相关的东西（<del>如果还有其他考的那当我没说</del></p><p>基于此直接定位 <a href="https://github.com/ustclug/hackergame2018-writeups/blob/master/official/ustcquiz/README.md">2018 年猫咪问答的 Writeup</a>，找到了图书馆题目的关键词 <code>程序员的自我修养</code>，即为本题答案。这种解法某种意义上也是一种巧合，应该不算预期解吧？</p><blockquote>4.<p> 在今年的 USENIX Security 学术会议上中国科学技术大学发表了一篇关于电子邮件伪造攻击的论文，在论文中作者提出了 6 种攻击方法，并在多少个电子邮件服务提供商及客户端的组合上进行了实验？（10 分） 提示：是一个非负整数。</p></blockquote>
<p>搜 <code>USENIX Security USTC</code>、<code>USENIX Security email</code>、<code>USENIX 中科大</code> 等关键词都没搜到，血压高了。直到后面用 <code>USENIX Security 2024 ustc</code> 搜到一则<a href="https://if.ustc.edu.cn/news/2024_08_20.php">新闻</a>。得到题目所述论文题目为 FakeBehalf: Imperceptible Email Spoofing Attacks against the Delegation Mechansim in Email Systems。请进咕噜噜得到<a href="https://www.usenix.org/conference/usenixsecurity24/presentation/ma-jinrui">论文介绍地址</a>和<a href="https://www.usenix.org/system/files/usenixsecurity24-ma-jinrui.pdf">论文链接</a>。</p><p>但是这时候第二个血压点来了，论文介绍里面写的 16 和 20 都不是题目答案，所以还得啃论文。翻来覆去的读之后，在 <code>6 Imperceptible Email Spoofing Attack</code> 下找到了这么一段话（高亮标注）：</p><p><img alt="不是，哥们" height="805" src="https://2.zwh.moe/images/2024/11/09/202411091312581.png" width="1851"/></p><p>其中说到 <code>resulting in 336 combinations</code>（336 个组合），所以答案为 <code>336</code>。别看我这么轻松的说这个过程，做起来还是非常痛苦的，也是我倒数第二道才解出来的题目。</p><blockquote>5.<p> 10 月 18 日 Greg Kroah-Hartman 向 Linux 邮件列表提交的一个 patch 把大量开发者从 MAINTAINERS 文件中移除。这个 patch 被合并进 Linux mainline 的 commit id 是多少？（5 分） 提示：id 前 6 位，字母小写，如 c1e939。</p></blockquote>
<p>终于来到熟悉的最新最热的题目了。因为这个事件我关注的各个 Telegram 频道都有转发过 <a href="https://aosc.io/news/detail/2024-10-24-condemnation-of-the-linux-foundation-and-its-employees.zh-cn.md">AOSC 写的新闻稿</a>。稿子里直接给好合并这个糟糕的 patch 的 GitHub <a href="https://github.com/torvalds/linux/commit/6e90b675cf942e50c70e8394dfb5862975c3b3b2">传送门</a>了。所以答案是 <code>6e90b6</code>。</p><blockquote>6.<p> 大语言模型会把输入分解为一个一个的 token 后继续计算，请问这个网页的 HTML 源代码会被 Meta 的 Llama 3 70B 模型的 tokenizer 分解为多少个 token？（5 分） 提示：首次打开本页时的 HTML 源代码，答案是一个非负整数。</p></blockquote>
<p>这题我一度想爆破，直到后边找到了 Tiktokenizer 之后开始摆烂了。</p><p>浏览器进无痕（并关闭所有插件，以排除插件修改网页源代码的可能），使用 token 进入题目网站。F12 复制网站代码（右键因为需要 token 不是正确的源代码而不能使用），此时因为做其他题找到了某个大模型的页面看到了 Tiktokenizer。好了，网站代码复制到 Tiktokenizer，得到 1829，往上试几个数确定 <code>1833</code> 为正确答案。</p><p><img alt="赞美 Tiktokenizer" height="864" src="https://2.zwh.moe/images/2024/11/09/202411091312580.png" width="1500"/></p><p>至此，得到了本题的两个 flag：<code>flag{4_GooD_©α7_iS_THE_c4t_ωHØ_c4n_P@ss_TH3_QuiZ}</code>、<code>flag{7eN_¥eαRs_of_hα©KergΛm3_ØmEd3tOบ_WI7h_ИEkO_QU12}</code>。</p><h2 id="-40">旅行照片 4.0</h2><p><a href="https://zwh.moe/posts/moyu/hackergame-2023#:r1t:-30">去年的 3.0 没做成功</a>，我对此做出了深刻检讨，主要的问题就是注意力涣散。而在今年，经历了需要集中注意力的 PuzzleHunt 之后，现在的我是无敌的！</p><p><del>然后这个屑今年的 GeekGame 搜图题注意力涣散没做出来</del></p><h3 id="leochan--1-2">LEO_CHAN? （题目 1-2）</h3><blockquote><p>问题 1: 照片拍摄的位置距离中科大的哪个校门更近？（格式：X校区Y门，均为一个汉字）</p></blockquote>
<p>直接搜图得到同款图片，得知图片描述的是<strong>中国蜀山科里科气科创驿站—科大站</strong>，再对上述地点进行搜索得到一则<a href="https://www.imsilkroad.com/news/p/480044.html">新闻</a>，上面写着<code>中国蜀山科里科气科创驿站——科大站位于金寨路与槽郢路交口，正对中国科学技术大学东校区西门......</code>。所以题目 1 答案为 <code>东校区西门</code>。</p><blockquote><p>问题 2: 话说 Leo 酱上次出现在桁架上是……科大今年的 ACG 音乐会？活动日期我没记错的话是？（格式：YYYYMMDD）</p></blockquote>
<p>直接搜 <strong>科大 ACG 音乐会</strong> 找到 B 站相关视频，可以通过直接或间接的跳转找到 <a href="https://space.bilibili.com/7021308">中科大 LEO 动漫协会的账号主页</a>。翻动态找到了<a href="https://www.bilibili.com/opus/930934582351495204">这条</a>，确认时间为 <code>20240519</code>。</p><p>提交得到 flag1：<code>flag{5UB5CR1B3_T0_L30_CH4N_0N_B1L1B1L1_PLZ_7647de202b}</code>（人话：bilibili 关注 LEO 酱谢谢喵）</p><h3 id="fullrecall-3-4">FULL_RECALL（题目 3-4）</h3><blockquote><p>问题 3: 这个公园的名称是什么？（不需要填写公园所在市区等信息）</p></blockquote>
<p><del>显而易见</del>集中注意力发现垃圾桶写着“六安园林”，接下来就是直接搜 <code>六安 公园</code> 一个一个进行匹配了，最后答案是 <code>中央森林公园</code>。</p><blockquote><p>问题 4: 这个景观所在的景点的名字是？（三个汉字）</p></blockquote>
<p>直接搜图发现是三峡截流石，对这个词进行搜索可得到其在宜昌的<code>坛子岭</code>景点。</p><p>提交得到 flag2:<code> flag{D3T41LS_M4TT3R_1F_R3V3RS3_S34RCH_1S_1MP0SS1BL3_f156cdbd44}</code>（如果无法进行逆向搜索，细节很重要），正好契合了第二部分的做法。</p><h3 id="ominousbell-5-6">OMINOUS_BELL（题目 5-6）</h3><blockquote><p>问题 5: 距离拍摄地最近的医院是？（无需包含院区、地名信息，格式：XXX医院）</p></blockquote><blockquote>
<p>问题 6: 左下角的动车组型号是？</p></blockquote>
<p>不是，隔壁 GeekGame 刚考完铁路知识啊（虽然没做出来），怎么 Hackergame 也考？</p><p>说回正题。两题均在一张图上，正向图寻毫无头绪，只能就着动车组下手了。直接对着图片里的动车搜图，许多结果都指向怀密号 <code>CRH6F-A</code>，涂装对比没毛病，且查询该信息也能发现其正好是四编组，符合 ft 中提到的“似乎有辆很标志性的……四编组动车？”，这样第六题的答案就出来了。</p><p>对怀密号进行搜索可知它走的线路是<strong>北京市郊铁路怀柔—密云线</strong>。搜索这条线路，百度提供了一个高亮该线路路线的地图，接下来就是分析图片的拍摄视角以及周围的东西进行匹配了，后面根据道路和远处的三个红色屋顶大概确认了所在区域（红圈），区域周围有个北京<code>积水潭医院</code>（绿圈）即为第五题答案。</p><p><img alt="目害了" height="924" src="https://2.zwh.moe/images/2024/11/09/202411091312577.png" width="1851"/></p><p>提交得到flag3：<code>flag{1_C4NT_C0NT1NU3_TH3_5T0RY_4NYM0R3_50M30N3_PLZ_H3LP_1120265b41}</code></p><p>不得不说第三组题目是真的费尽心力了，直到后面灵感大开直接搜到出结果。</p><h2 id="-ctfer-">喜欢做签到的 CTFer 你们好呀</h2><p><del>我是雷军，接下来由我来教这题的步骤。</del>通过一系列搜索跳转得到 Nebula 战队的<a href="https://www.nebuu.la/">官网</a>。写 Writeup 时才发现这个网站写在了“承办单位”中。<del>怎么感觉自己不是在做无用功就是在做无用功的路上。</del></p><p>可以发现是个 Terminal 风格的网页。毫无头猪，随便输入个 <code>help</code> 看看：</p><p><img alt="这命令还不少" height="904" src="https://2.zwh.moe/images/2024/11/09/202411091312571.png" width="1831"/></p><p>里面给出了所有可执行的命令，接下来一个一个试呗（</p><p>试到 <code>env</code> 的时候，我们找到了第一个 flag：<code>flag{actually_theres_another_flag_here_trY_to_f1nD_1t_y0urself___join_us_ustc_nebula}</code>。</p><p><img alt="什么 Nix 教徒" height="176" src="https://2.zwh.moe/images/2024/11/09/202411091312572.png" width="1747"/></p><p>然后就试不出来了（</p><p>回看执行命令的记录，注意到 <code>cat</code> 执行输出发现里边有个 hidden files，那就先用 <code>ls -a</code> 看看有啥隐藏文件吧（</p><p>然后就看到了隐藏的 <code>.flag</code>，再来个 <code>cat .flag</code> 拿下第二个 flag：<code>flag{0k_175_a_h1dd3n_s3c3rt_f14g___please_join_us_ustc_nebula_anD_two_maJor_requirements_aRe_shown_somewhere_else}</code></p><p><img alt="喜欢藏？" height="310" src="https://2.zwh.moe/images/2024/11/09/202411091312573.png" width="1747"/></p><p><del>最后，我开开心心的做题的时候，一 <code>sudo</code> 就跳转奶龙，你们这些喜欢奶龙的 CTFer 给我听好，要是再让我看到你们整奶龙，我就遥控离你们最近的小米 SU7 创似你们！</del></p><p>（以上内容均由人工生成）</p><p><img alt="来自比赛群和奶龙评论区" height="903" src="https://2.zwh.moe/images/2024/11/09/202411091312574.png" width="826"/></p><h2 id="">零知识数独</h2><h3 id="">数独高手</h3><p>作为一个非计算机专业的，想的都是通过网站解数独而不是编程。刚好之前参加 Puzzle Hunt 时找到一些专门解数独的网站。比如<a href="https://philippica.github.io/cipher_machine/">焖肉面</a>、<a href="https://sudokumaker.app">Sudokumaker</a>、<a href="https://www.noq.solutions/">Noq Solver</a>。随便找一个完成四个难度的数独都能拿到 flag。<del>（为什么不展示 flag？因为不想再写数独了）</del></p><h3 id="zk-">zk 高手</h3><p>我都没想到这题是纸老虎级别，难度都在配置环境和找命令上了。以下是做这道题我的摸索过程。</p><p>通过搜索大概了解了零知识的相关内容（而且发现数独还是个零知识证明的典型例子）。按照<a href="https://snowolf0620.xyz/index.php/zkp/1016.html">这篇教程</a>配置了一下基础环境（对于这道题来说，还得在源代码目录安装 npm <code>circomlib</code> 包，否则找不到引用的电路）。随后通过 Copilot 了解了其输入格式，按照其输入格式范例对着题目修改 <code>unsolved_grid</code> 和 <code>solved_grid</code> 保存为 <code>input.json</code>。然后就傻傻的执行 <code>setup.sh</code> 覆盖掉原有的 <code>sudoku.zkey</code> 和 <code>verification_key.json</code>，再自己一步步生成 witness 和签名了，操作的时候发现 witness 缺脚本没法生成了又手动操作了一遍命令，最后生成 <code>proof.json</code> 丢上去报错了发现不对劲。</p><p><img alt="帮帮我，AI！" height="689" src="https://2.zwh.moe/images/2024/11/09/202411091312583.jpg" width="1280"/></p><p>后面一想如果全部中间文件（指的 zkey 和 wasm）都得需要自己生成那代码附件给部分中间文件干什么？带着这个问题又翻了那篇文章，找到了个能同时生成 witness 文件和证明文件的一步到位的命令 <code>snarkjs groth16 fullprove input.json circuit.wasm circuit_final.zkey proof.json public.json</code>。刚好用到了输入的 JSON 和题目提供的 <code>sudoku.wasm</code>、<code>sudoku.zkey</code>。执行了一下正常生成 <code>proof.json</code>，丢去验证直接下班（</p><p><img alt="成功的一刻" height="924" src="https://2.zwh.moe/images/2024/11/09/202411091312584.png" width="1851"/></p><p>flag：<code>flag{you_are_a_5udoku_expert_and_pr0ved_your_kn0wledge_957bd00098}</code></p><p>截至比赛结束时，这题仅 66 人做出，过程梳理了一下并不复杂，主要是现学原理与操作，感觉有点纸老虎了（</p><h2 id="">打不开的盒</h2><p>拿 SolidWorks 打开但是软件爆炸了，于是随便找了个在线预览 STL 模型的网站，发现在线框模式下转个角度就能看到 flag。</p><p><img alt="ImageToStl.com_flagbox.png" height="858" src="https://2.zwh.moe/images/2024/11/09/202411091312569.png" width="1851"/></p><p>flag：<code>flag{Dr4W_Us!nG_fR3E_C4D!!w0W}</code></p><h2 id="-30---a">惜字如金 3.0 / 题目 A</h2><p>主要就参照哪一行报错就把那一行里变量/函数等缺失的字母补上，秒了。真就比去年还简单。</p><p>flag：<code>flag{C0mpl3ted-Th3-Pyth0n-C0de-N0w}</code></p><h2 id="">每日论文太多了！</h2><p>下了论文之后的一天内都毫无头绪，第二天下午又翻了一遍，看到解出的人数挺多，感觉这不是一道非常难的题，于是又开始啃论文了。</p><p>在论文网页用浏览器搜索 <code>flag</code>，会发现在一张图里面有隐藏文字，拉一下还能带出来完整的隐藏文本 <code>flag here</code>。我以为是找隐藏文字里的 flag，但是直到我拿了一个 PDF 编辑器随便拖动了一下图片......</p><p><img alt="好好好论文藏 flag 是吧" height="789" src="https://2.zwh.moe/images/2024/11/09/202411091312582.png" width="1433"/></p><p>焯！（还有这图怎么这么糊啊）</p><p>后来复盘发现这幅图里边有个不太和谐的边框，或许这就意味着这图有问题。果然注意力不够还得运气来凑（不是</p><p>flag：<code>flag{h4PpY_hAck1ng_3veRyd4y}</code></p><h2 id="">比大小王</h2><p>一眼丁真脚本题，AI 启动！但是生成的油猴脚本效率有些拉了，对面答完了最多才做了 46 道左右。于是后面让 AI 改写控制台脚本了。很神奇的是，控制台脚本依旧没赢过对面，但是出 flag 了。感觉有点运气成分在里边。</p><p>flag：<code>flag{I-@M-7hE-h@CkEr-KINg-OF-Comp4RinG-NuMB3r$-ZOz4}</code></p><p><img alt="还不快说声谢谢 AI" height="934" src="https://2.zwh.moe/images/2024/11/09/202411091312570.png" width="1851"/></p><p>附 AI 生成的控制台脚本：</p><pre class="language-js lang-js"><code class="language-js lang-js">// 获取游戏的初始数据
let gameData = state.values;
let inputs = [];
let lessThanButton = document.getElementById(&#x27;less-than&#x27;);
let greaterThanButton = document.getElementById(&#x27;greater-than&#x27;);

// 使用setInterval函数每50毫秒自动提交一个答案
let intervalId = setInterval(() =&gt; {
  // 如果游戏已经结束，需要清除定时器并提交答案
  if (inputs.length &gt;= gameData.length) {
    clearInterval(intervalId);
    submit(inputs);
  } else {
    // 判断当前的两个数哪个更大，并模拟点击相应的按钮
    let pair = gameData[inputs.length];
    if (pair[0] &lt; pair[1]) {
      lessThanButton.click();
      inputs.push(&#x27;&lt;&#x27;);
    } else {
      greaterThanButton.click();
      inputs.push(&#x27;&gt;&#x27;);
    }
  }
}, 50);
</code></pre>
<h2 id="paolugpt--">PaoluGPT / 千里挑一</h2><p>看到这题目就猜到是从这些聊天记录中找藏的 flag，但是链接不想一个一个点，所以还是丢给 AI 写了个油猴脚本自动探寻网页上所有的子路径。果不其然，脚本找到了 flag 所在的网页。打开网页，发现滚轮没划到，直接拖到最底下就能看到 flag 了。</p><p>第二小问尝试了一下有点头绪但是不确定，然后发现不是模板攻击，摆了。</p><p>flag：<code>flag{zU1_xiA0_de_11m_Pa0lule!!!_a1a2048d7d}</code></p><p><img alt="还得是脚本" height="618" src="https://2.zwh.moe/images/2024/11/09/202411091312575.png" width="1851"/></p><p><img alt="怎么藏这么深" height="924" src="https://2.zwh.moe/images/2024/11/09/202411091312576.png" width="1851"/></p><p>附 AI 生成的油猴脚本：</p><pre class="language-js lang-js"><code class="language-js lang-js">// ==UserScript==
// @name         Find Flag Links
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  查找页面中包含关键字的链接
// @match        换成题目环境链接/*
// @grant        none
// ==/UserScript==

(function() {
    &#x27;use strict&#x27;;

    // 提取所有链接
    const links = Array.from(document.querySelectorAll(&#x27;a[href]&#x27;)).map(a =&gt; a.href);
    const keyword = &#x27;flag&#x27;; // 关键字

    // 查找包含关键字的链接
    const foundLinks = links.filter(link =&gt; {
        const xhr = new XMLHttpRequest();
        xhr.open(&#x27;GET&#x27;, link, false); // 使用同步请求
        xhr.send(null);
        return xhr.status === 200 &amp;&amp; xhr.responseText.includes(keyword);
    });

    // 输出结果
    if (foundLinks.length &gt; 0) {
        console.log(&#x27;找到包含关键字的链接:&#x27;);
        foundLinks.forEach(link =&gt; console.log(link));
    } else {
        console.log(&#x27;未找到包含关键字的链接&#x27;);
    }
})();
</code></pre>
<h2 id="">结尾</h2><p>这一次的得分情况：</p><p><img alt="排名" height="145" src="https://2.zwh.moe/images/2024/11/09/202411091312578.png" width="1540"/></p><p><img alt="得分情况" height="848" src="https://2.zwh.moe/images/2024/11/09/202411091312579.png" width="1541"/></p><p>排名相对去年基本没啥变动。今年 Web 感觉还是不太熟悉，拿的分不多；Math 今年入门门槛低了些，比去年拿得多了点；General 送分题少了还是那个水平。当然，做成了一道不到 100 人做成的题还是有点小惊喜的。但总体上，作为萌新还是在仰望大佬的路上前行。</p><p>就是这样，感谢各位看官的阅读。明年<del>我将继续以小白的身份</del>再见！</p></div><p style="text-align:right"><a href="https://zwh.moe/posts/moyu/hackergame-2024#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/moyu/hackergame-2024</link><guid isPermaLink="true">https://zwh.moe/posts/moyu/hackergame-2024</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Sat, 09 Nov 2024 06:16:42 GMT</pubDate></item><item><title><![CDATA[对《独立博客自省问卷15题》的回答]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/posts/default/15-answers-to-blogging">https://zwh.moe/posts/default/15-answers-to-blogging</a></blockquote><div><p>没啥好说，纯自我检讨。</p><p>源：<a href="https://yayu.net/4626.html">独立博客自省问卷15题 · 雅余 · 茶余饭后，闲情雅致</a></p><blockquote>1.<p> 你的博客更新频率是多少？</p></blockquote>
<p>D.几个月一篇。</p><p>受限于本人的专业水平和极其糟糕的写作技能，再加上拖延症晚期。文章不是因为拖延写不动就是因为看不过眼被暴毙，所以剩下来的很少。</p><blockquote>2.<p> 你的博客上次更新是什么时候？</p></blockquote>
<p>似乎没有选项，因为是半个月前更的。</p><p><a href="https://zwh.moe/notes/8">《盒中之海》电影短评</a></p><blockquote>3.<p> 你的博客文章是原创的吗？</p></blockquote>
<p>对于技术文，主体原创，内容借鉴，偶尔 AI，因为我菜。生活文那不用说，基本全原创。</p><blockquote>4.<p> 你觉得自己的文章对他人有帮助吗？</p></blockquote>
<p>怎么说呢？在 旨在对他人有启示 和 多少有点意义 反复横跳。我个人写的目的一是为了记笔记，在遇到同样问题的时候能翻出来看；二倒也是希望真的遇到我这种情况的人能有个借鉴。</p><blockquote>5.<p> 你上次换博客主题/程序是什么时候？</p></blockquote>
<p>C.去年</p><p>主题是去年 7 月换的 Shiro，主要是因为 Innei 不更 Kami 转 Shiro 了于是就<a href="https://zwh.moe/notes/4#:rbc:-shiro-">向 Shiro 奔去</a>了。</p><p>程序是 22 年十二月换的 Mix-Space，给文档贡献之后感觉好用就一直在用了。</p><blockquote>6.<p> 你上一次捣腾博客主题代码是什么时候？</p></blockquote>
<p>狭义上（对主题的源代码进行修改）是今年四月份，而且也不算修改主题自身的代码而是加了个 CI（</p><p>广义上（对主题进行配置修改）是九月份，时不时修改一下菜单/图标等内容。</p><blockquote>7.<p> 你会对博客主题进行二次开发？</p></blockquote>
<p>A.直接配置使用，省心不折腾。改了源代码 CI Rebase 可能出锅，所以不想动（</p><blockquote>8.<p> 你多久打开自己博客自我陶醉一次？</p></blockquote>
<p>C.看心情。一般都是看炸没炸，或者只是闲得没事单纯想看（</p><blockquote>9.<p> 你近期对自己博客域名什么感受？</p></blockquote>
<p>说实话之前我是想要个五字符域名，但现在我这个前缀实在找不到五字符的结果，于是注册了 .moe 六字符。感觉也挺好，挺符合本人风格的。</p><blockquote>10.<p> 你每天都会看网站的流量统计吗？</p></blockquote>
<p>C.记得就看看。<del>正经人谁天天看流量啊，啊你说你网站被攻击了？那没事了。</del></p><blockquote>11.<p> 你通过博客的广告赚到钱了吗？</p></blockquote>
<p>博客没放广告，而且将来也不会有那种全站侵入性的广告。</p><p><del>部分文章有 aff，但不会有人在用 aff 吧。</del></p><blockquote>12.<p> 你去浏览别人的博客/网站主要为什么？</p></blockquote>
<p>A.学习别人分享的知识。因为我菜。</p><blockquote>13.<p> 看到别人分享了一篇文章，你打开第一反应是什么？</p></blockquote>
<p>D.看看文章内容。<del>看看大佬又写了啥我看不懂的知识</del>。</p><blockquote>14.<p> 你觉得博客哪方面更重要？</p></blockquote>
<p>D.内容。其他方面在我看来只是传达内容的辅助工具，没有好内容那只是虚有其表，不太可能吸引更多的用户停下来阅读。</p><blockquote>15.<p> 近期通过写博客有哪些新收获？</p></blockquote>
<p>A.知识面有拓展。为了写一篇内容去搜索参考类似选题的内容当作辅助文献去阅读，总能学点新东西。</p><p>EOF</p><p>第一次写这种，写得比较随意，夹杂了点混沌吐槽，欢迎提出建议及反馈。回答里面的言论仅代表本人意见，仅供参考。也欢迎各位独立博客的博主顺着问卷思考自己写一份属于自己的答案。</p></div><p style="text-align:right"><a href="https://zwh.moe/posts/default/15-answers-to-blogging#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/posts/default/15-answers-to-blogging</link><guid isPermaLink="true">https://zwh.moe/posts/default/15-answers-to-blogging</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Tue, 22 Oct 2024 07:25:51 GMT</pubDate></item><item><title><![CDATA[《盒中之海》电影短评]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/notes/8">https://zwh.moe/notes/8</a></blockquote><div><h2 id="">前言</h2><p>刚好看到盒中之海准备上线了想着要不晚上就看这个，看几分钟突然想到要不直播拉人一起看，于是抓了<a href="https://lab.gb0.dev">草方块</a>一起看这部梦导鸽了三年半的电影。</p><p style="padding:6px 12px;border-left:2px solid #C56473;background:#C5647350;font-style:italic;font-weight:500">Not support render this content in RSS render</p><p><a href="https://www.bilibili.com/bangumi/media/md22948938">B站链接</a></p><p>先放一下电影的简介：</p><blockquote><p>22接到游戏公司邀请，参与他们研发的虚拟现实游戏《盒中海》试玩。游戏世界里的南方沿海渔村，村民们把各家各户供奉的神像请上街来“游神”庆贺元宵。22和其他3名测试玩家发现一位未曾见过的女性神明“慈舟圣姑”。随着深入探查“慈舟圣姑”的来历，他们逐渐发现来自游戏外的人为篡改痕迹，有一个神秘的力量在潜移默化影响游戏里的npc。另一方面，22的妹妹33也在游戏外发现员工的蹊跷行为。居心叵测的公司企业、悄悄策划神秘仪式的npc渔民、还有似乎各怀秘密的同伴。一个多方势力交织的巨大阴谋渐渐浮出海面。</p></blockquote>
<p>事实证明电影总体还是可以的，两个人一边看一边吐槽的气氛也很爽。以下是我个人写的一些短评，可能存在剧透要素，采用||黑幕||显示。也可以在<a href="https://gb-microblog.pages.dev/posts/11">这里</a>看到草方块的短评。</p><hr/><ul><li>如果对克苏鲁元素有一定的认知，那么看这部带有明显的克苏鲁要素的电影会比较容易感知到故事中邪神的一些背景。但是即使不是克苏鲁的受众（比如我）也不影响理解整个剧情所描述的故事。</li><li>赞美分镜和转场，比如||白免和塔林的分头行动画面，有些双人成行的味道||，一气呵成看着挺爽。</li><li>人物的性格塑造不错，印象最深刻的当然还是||老玄和白免||，当然还有 22 和 33 传承下来的（<del>典中典</del>）设定。</li><li>大场面有的，而且不少。比如||机甲打邪神||。</li><li>剧情上有跌宕起伏，但有些转折不会太出人意料，但对于我来说仍然觉得 Amazing。说个侧面的情况，我和草方块的聊天发了不少的“不是哥们”（此处哥们不一定代表男性角色）。</li><li>包袱给足了，故事结尾很意味深长。||“现实，不过只是大一号的盒子”，当我们认为是 HE 的时候，后日谈的 22 和白免在看到那些东西再次出现时的恐惧也再次印证着这句话，而彩蛋中又是谁拿着这个盒子就很诡。||</li><li>当然有些角色的行为不是很能经得起理性的推敲，对人物动机和行为很注重的观众可能需要一个脑子寄存处（？</li></ul><h2 id="">总结</h2><p>总的来说作为国创动画电影总体还行，拿 6/12 块买可以接受（<del>年度大会员有观影券就别学我白给了</del>；对于普通观众，考虑到电影没有加密可能已经可以在其他地方看了），至少不负这几年的等待，我个人倾向于给出个 85~90 的分数（满分100），望梦导和 SPICE 动画再接再厉整个第二部（</p><p>顺便送个 follow 邀请码：<code>1GC^D1H.4&#x27;2_[*C2)d&lt;G2_m6M</code>，还有......一段对话？</p><ul><li>你就这么送邀请码，不给咱点面子么？</li><li>以你的面子，只配知道这串字符用了两种没有密钥的加密方式。其中一种比base64强，我忘了叫啥了，只记得这个加密方式的名字中有个数字，在正文出现过。另一种加密方式两位一分，普遍应用于计算机领域。别看咱说的这么复杂，实际上拿个赛博工具上来全秒了。</li></ul></div><p style="text-align:right"><a href="https://zwh.moe/notes/8#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/notes/8</link><guid isPermaLink="true">https://zwh.moe/notes/8</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Fri, 04 Oct 2024 04:20:07 GMT</pubDate></item><item><title><![CDATA[网站维护日志 | 2024-08]]></title><description><![CDATA[<div><blockquote>此渲染由 Yohaku API 生成，或存排版之虞，最佳体验请往：<a href="https://zwh.moe/notes/7">https://zwh.moe/notes/7</a></blockquote><div><h2 id="">前言</h2><p>怎么说呢，这日志四月份的时候已经写好初稿了，但是嫌更得不够多又拖了几个月没发，七月摸鱼 + 实习 + 打 P&amp;KU3，八月打 CCBC15，也没咋顾着这里。现在优化基本凑得差不多了也基本可以发了（</p><h2 id="tldr">tl;dr</h2><ul><li>博客主题更新成 Shiroi</li><li>增加 AI 摘要</li><li>添加统计脚本</li><li>图床测试</li><li>Telegram 频道 MicroBlog 上线</li></ul><h2 id="-shiroi-">更新成 Shiroi 主题</h2><p>这好像也没啥好说的了，基于闭源主题的新增特性（见下边）给自己博客加了点料。包括但不限于状态显示，签名动画一些小细节，各位自行发掘（</p><blockquote><p>主要包括 主人的状态设置、文章头部的渐变色和根据文章而改变的高主题色、Post 列表无限加载、一言和思考的 RSS 订阅、评论区颜文字选择、签名动画、文章内嵌 Thinking、AI 摘要、一些细节和 UI 调整等</p></blockquote>
<h2 id="-ai-">增加 AI 摘要</h2><p>之前有这个功能后一直想尝试加上这个 AI 摘要，但一直没调试成，直到后面发现 API 写错了（悲）。调完之后效果还是不错的。这里也推荐一下目前我正在使用的 API 反代服务 <a href="https://openkey.cloud/register?aff=53F20">OpenKEY</a>，支持最新最热 gpt-4o 和 claude3，API 调用价格相对实惠，朋友看了都说好，而且充值时填额度赠送码 <strong>53F20</strong> 你我还能多 5% 充值额度的额度奖励，快来给我 aff 吧（逃</p><h2 id="">添加统计脚本</h2><p><del>较早前自己搭了一个 Umami 统计站，给主站和 xlog 分站均添加了 Umami 的统计脚本，此外主站还额外添加了来自 Clarity 的统计脚本用于详细分析（目前依旧处于调试状态）。</del></p><p>啊统计目前挂了，啥时候摸鱼修吧（</p><h2 id="">图床测试</h2><p>本站的图片将开始改用 CloudFlare R2 进行存储，并使用 <a href="https://webp.se">WebP Cloud Services</a> 对图片进行处理。
嘛，一直蹭公用图床蹭来蹭去要不就是图片寄，要不就是触犯了 CORS 天条，想来想去还是自己整一个图床绑定自己域名舒服点。</p><h2 id="telegram--microblog-">Telegram 频道 MicroBlog 上线</h2><p>最近整的最新最热的 <a href="https://github.com/ccbikai/BroadcastChannel">BroadcastChannel</a>，将自己的 Telegram 频道整成一个微博，毕竟我更的最多的还是频道，所以顺手 Fork 了个原项目挂个 <a href="https://github.com/apps/pull">Pull</a> 应用保持定期同步原项目同步，拿我一直没得用的 CloudFlare Pages 部署上线了（为什么不用 Vercel 部署？Vercel 还挂着本站呢，再挂其他的容易额度爆炸（大概）</p><p>说了这么多，你可以在 <a href="https://t.zwh.moe">这里</a> 访问 MicroBlog，同时也可以通过 <a href="https://t.me/laorenspeak">此链接</a> 关注原频道：）</p><p>至此，内容够多了，日志也有理由同步到隔壁了。下次更新就不知道是几月份了（逃</p></div><p style="text-align:right"><a href="https://zwh.moe/notes/7#comments">览毕，何不一言？</a></p></div>]]></description><link>https://zwh.moe/notes/7</link><guid isPermaLink="true">https://zwh.moe/notes/7</guid><dc:creator><![CDATA[wuhang2003]]></dc:creator><pubDate>Mon, 19 Aug 2024 15:20:44 GMT</pubDate></item></channel></rss>