<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>景蓝的小屋</title><description>鲸落于海，星沉于洼</description><link>https://fuwari.vercel.app/</link><language>zh_CN</language><item><title>N100 小主机上手体验</title><link>https://fuwari.vercel.app/2025/n100-mini-pc/</link><guid isPermaLink="true">https://fuwari.vercel.app/2025/n100-mini-pc/</guid><pubDate>Sat, 27 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;为什么要买一台 N100&lt;/h2&gt;
&lt;p&gt;博主终于结束了高中生活步入令人期待的高中了。由于博主的大学属于开学晚的那一批，在别的同学都开学后博主便找他们咨询大学的一些注意事项
:spoiler[&lt;s&gt;抄作业&lt;/s&gt;]。很多人提到了他们学校的校园网有很多限制，比如&lt;strong&gt;限制设备数&lt;/strong&gt;，&lt;strong&gt;要求 Web 登录&lt;/strong&gt;等等······&lt;/p&gt;
&lt;p&gt;对我这种设备多且杂的人来说是绝对不能忍的，于是我决定买一台运行 OpenWRT 的软路由配合脚本来绕过这些限制。&lt;/p&gt;
&lt;p&gt;我选择了一台带有 2 个 10Gbps 的 SFP 光口和 4 个 搭载 i226-V 的 2.5Gbps 电口的 N100 机器作为软路由，还花了博主 1600 块钱。&lt;/p&gt;
&lt;p&gt;可当我收到软路由后我却傻眼了，学校的宽带竟是直接从运营商拨号并且不做任何限制的，这便意味着一台硬路由便可解决这个问题。&lt;/p&gt;
&lt;p&gt;在又买了一个硬路由 (Cudy TR3000) 后，我陷入了对 N100 的思考，究竟拿他来做些什么呢？&lt;/p&gt;
&lt;h2&gt;伪开箱&lt;/h2&gt;
&lt;p&gt;让我们再做一个伪开箱吧。&lt;/p&gt;
&lt;p&gt;这台机器搭载了两个 82599ES 的 SFP 10G 光口以及四个 i226-V 的 2.5G 电口，可以说是天生软路由圣体。&lt;/p&gt;
&lt;p&gt;我选购的是成品机器，自带一条8GB DDR4 3200 的笔记本内存和一块 256GB 的 Nvme
SSD，都是杂牌。&lt;/p&gt;
&lt;p&gt;机身除了顶部的亚克力盖子外均是哑光的 CNC 铝合金外壳，质感很好。&lt;/p&gt;
&lt;p&gt;除了上文提供的网络接口外，机器还提供了 2 个 Type-C 接口，其中一个支持 PD 协议给机器供电；三个USB-A 的 USB 3.0 接口； 1 个
HDMI 和 1 个 DP 接口。&lt;/p&gt;
&lt;h2&gt;折腾&lt;/h2&gt;
&lt;p&gt;机器一到手我就给他加装了一块 MT7922，这是一块支持 Wifi 6E 的无线网卡，只可惜后来发现只支持单频发射，如果使用软路由直接当作AP的话只能在
5G 和 2.5G 中做出取舍&lt;/p&gt;
&lt;p&gt;系统方面我选择了 iStoreOS ，这是一个基于 OpenWRT 的免费系统，优点是可以快速地配置网络。我们学校可以直接拨号，就直接使用
PPPoE 模式就可以了。&lt;/p&gt;
&lt;p&gt;原装的杂牌内存在经历了一周不到便暴毙了，之后我自己更换了光威的同规格内存。&lt;/p&gt;
&lt;h2&gt;软路由后&lt;/h2&gt;
&lt;p&gt;目前我给 N100 安装了 Arch Linux 当作我的 Linux 主机使用，这样便完成了在宿舍中同时拥有 macOS 、 Windows 和 Arch Linux 的成就。&lt;/p&gt;
&lt;p&gt;因为机器支持 PD 通电，我可以把他当作一个可以随时带出去的 Linux 工作站。等放假回家了就把一些服务迁移到这台机器上，防止别的服务破坏
家里 NAS 的稳定性。（从 AIO 到 AIB）&lt;/p&gt;
</content:encoded></item><item><title>Steam 上手指北</title><link>https://fuwari.vercel.app/2025/steam-usage/</link><guid isPermaLink="true">https://fuwari.vercel.app/2025/steam-usage/</guid><pubDate>Fri, 27 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;什么是 &lt;strong&gt;Steam&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Steam 是 Valve 推出的电子游戏数字分发平台。Steam 集合了多种功能，如数字版权管理、游戏服务器匹配和反作弊系统，以及社交网络和游戏流媒体服务。Steam 还为用户提供自动更新游戏、游戏存档云存储，以及包括好友列表和游戏内聊天在内的社区功能。根据 CompareCamp2020 年统计，Steam 平台是全球最大的电脑游戏数字分发平台，占全球 50%-70%的电脑游戏下载量。 2003 年 9 月， Valve 将其作为一款软件客户端推出，提供自动更新游戏的功能，这一功能在 2005 年末扩展到了第三方游戏发行商发行的作品。&lt;/p&gt;
&lt;h2&gt;下载与安装&lt;/h2&gt;
&lt;p&gt;使用搜索引擎搜索 Steam 并进入域名为 &lt;a href=&quot;https://store.steampowered.com/&quot;&gt;&lt;code&gt;https://store.steampowered.com/&lt;/code&gt;&lt;/a&gt; 的网站&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;请不要进入类似 &lt;strong&gt;Steam 管家&lt;/strong&gt; 、 &lt;strong&gt;Steam 助手&lt;/strong&gt; 之类的站点并认准官方域名&lt;/p&gt;
&lt;p&gt;请务必检查站点域名，它一般在浏览器窗口的上方。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;注：商城页面所显示语言可能与您计算机的语言与所在地区有关，请以实际情况为准&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;点击右上角绿色的 &lt;strong&gt;&amp;lt;span style=&quot;color:#5c7e10&quot;&amp;gt;安装 Steam&amp;lt;span&amp;gt;&lt;/strong&gt; 按钮以前往 Steam 安装程序下载页面&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;steam-index.webp&quot; alt=&quot;Steam 商城页面截图&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击蓝色的 &lt;strong&gt;&amp;lt;span style=&quot;color:#1899ff&quot;&amp;gt;安装 STEAM&amp;lt;/span&amp;gt;&lt;/strong&gt; 按钮以下载安装程序&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;steam-download.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;你应该可以在下载器的下载记录中找到名为 &lt;code&gt;SteamSetup.exe&lt;/code&gt; 的可执行文件，运行这个可执行文件并按照提示进行相应的设置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;install-package.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;当安装程序提示 &lt;code&gt;Steam 已安装在你的操作系统&lt;/code&gt;时，点击完成便可退出安装程序并完成安装。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;请检查 Steam 的安装路径中是否带有中文。若有，请将其修改为不包含中文的路径。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误&lt;/strong&gt;格式：&lt;code&gt;D:\软件\Steam\&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确&lt;/strong&gt;格式：&lt;code&gt;D:\Software\Steam\&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;通常软件会安装在系统盘符的 &lt;code&gt;Program Files&lt;/code&gt; 或 &lt;code&gt;Program Files (x86)&lt;/code&gt; 中，你一般可以放心地相信安装程序的默认路径。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;finish-install.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;运行并注册&lt;/h2&gt;
&lt;p&gt;安装完毕后，你可以在 &lt;strong&gt;桌面&lt;/strong&gt; 或 &lt;strong&gt;“开始”菜单&lt;/strong&gt; 中找到 Steam 的快捷方式，运行快捷方式即可启动 Steam。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;若你点击完成前没有取消默认 &lt;strong&gt;“运行 Steam”&lt;/strong&gt; 的复选框，安装程序会在关闭后自动打开 Steam。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;运行后你可能要等待 Steam 进行更新。更新完毕后你就会进入 Steam 的登陆页面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;steam-login.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;若你拥有 Steam 账户，你可以直接在其中登陆。（当然如果你有的话大概率也用不到这篇文章吧）。如果没有，你可以点击右下角 &lt;code&gt;创建免费账户&lt;/code&gt; 来进入浏览器注册界面。&lt;/p&gt;
&lt;p&gt;在注册页面根据提示填入你的&lt;strong&gt;电子邮件地址&lt;/strong&gt;并重复以确认，在选择地区后进行人机验证，随后勾选 &lt;strong&gt;&lt;code&gt;我已年满 13 周岁并同意《Steam 订户协议》和《Valve 隐私政策》的条款&lt;/code&gt;&lt;/strong&gt;，点击 &amp;lt;span style=&quot;color:#1899ff&quot;&amp;gt;&amp;lt;b&amp;gt;继续&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; 进入下一步。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;register-page.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;随后页面会提示你查看你的邮箱来完成验证，你需要进入你的邮箱来查看来自 Steam 的验证邮件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;waiting-verify.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;登录你先前填写的电子邮箱，在&lt;strong&gt;收件箱&lt;/strong&gt;中找到来自 Steam 的验证邮件，点击其中的点击 &amp;lt;span style=&quot;color:#1899ff&quot;&amp;gt;&amp;lt;b&amp;gt;验证我的电子邮件&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; 进行电子邮件验证。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Steam 通常会使用域名为 &lt;code&gt;steampowered.com&lt;/code&gt; 的邮箱给你发送地址，其他的地址均为假冒！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误&lt;/strong&gt;格式：&lt;code&gt;noreply@steamguanfang.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确&lt;/strong&gt;格式：&lt;code&gt;noreply@steampowered.com&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;这一步通常需要你在浏览器中进行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;verify-email.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;等待页面提示 &lt;strong&gt;电子邮件已验证&lt;/strong&gt; 后返回 Steam 窗口中，并填写账户名称和密码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;account-info.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;账户名称为此后登录 Steam 时重要凭证，不可更改或与他人重复。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;两次输入的密码需相同。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;随后点击 &amp;lt;span style=&quot;color:#1899ff&quot;&amp;gt;&amp;lt;b&amp;gt;完成&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt; 即可结束 Steam 账户注册。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;create-success.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;登录桌面客户端&lt;/h2&gt;
&lt;p&gt;在登录界面键入你注册时填写的用户名与密码，点击登录。若初次登陆 Steam 可能会要你输入验证码以验证账户所有权。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;verify-code.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;登录你的电子邮件，将获取的验证码填入验证窗口即可完成登录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;email-code.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Q&amp;amp;A&lt;/h2&gt;
&lt;h3&gt;Q1: 连接 Steam 登录或注册时提示网络错误&lt;/h3&gt;
&lt;p&gt;你可下载 &lt;a href=&quot;https://steampp.net/&quot;&gt;Watt Toolkit（原 Steam++）&lt;/a&gt; 或 &lt;a href=&quot;https://uu.163.com/&quot;&gt;UU 加速器&lt;/a&gt; 来修复部分地区无法连接 Steam 服务器的问题。&lt;/p&gt;
&lt;h3&gt;Q2: 新账号无法添加 Steam 好友&lt;/h3&gt;
&lt;p&gt;你需要在 Steam 商店中消费满 5 美元才可解锁好友功能。&lt;/p&gt;
</content:encoded></item><item><title>永远是个小孩 - 站点更新</title><link>https://fuwari.vercel.app/2025/i-am-always-a-kid/</link><guid isPermaLink="true">https://fuwari.vercel.app/2025/i-am-always-a-kid/</guid><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;你们这些孩子哪里是真为了写博客。&lt;/p&gt;
&lt;p&gt;你们只是想体会换新工具的愉快感觉，顺便体会一下否定掉旧工具，觉得自己特别的小欣喜。&lt;/p&gt;
&lt;p&gt;—— dboy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;好像是第二次引用这段话了。&lt;/p&gt;
&lt;p&gt;如你所见，这个站点的外观发生了很大的改变。我将他从 Hexo + Fluid 的组合转到了 Fuwari 框架。&lt;/p&gt;
&lt;p&gt;好吧我承认我确实是馋 Fuwari 的颜值了。&lt;/p&gt;
&lt;p&gt;说会正事，Hexo 到 Fuwari 确实需要一段时间，在此期间两个站点将会采用&lt;strong&gt;双轨运行&lt;/strong&gt;的策略。即主站保持原版本至 Yurari (Yurik + Fuwari) 版本稳定测试通过。&lt;/p&gt;
&lt;p&gt;在此期间 主站将会添加一个名为 &lt;a href=&quot;//fuwari.yurik.cafe&quot;&gt;fuwari.yurik.cafe&lt;/a&gt; 的超链接，最新的文章将会在此更新，主站内容将不再变动。&lt;/p&gt;
&lt;p&gt;站点 favicon 静态地址不会变化，各友站无需变动。&lt;/p&gt;
</content:encoded></item><item><title>MacBook Pro 2023 上手体验</title><link>https://fuwari.vercel.app/2025/macbook-pro-review/</link><guid isPermaLink="true">https://fuwari.vercel.app/2025/macbook-pro-review/</guid><description>买一台 Mac，很奇怪，是吗？</description><pubDate>Tue, 18 Feb 2025 21:58:04 GMT</pubDate><content:encoded>&lt;h1&gt;我家族没精神病史&lt;/h1&gt;
&lt;p&gt;买一台 Mac，很奇怪，是吗？&lt;/p&gt;
&lt;p&gt;母胎到现在都是 Windows 的忠实用户，现在居然买了一台 MacBook Pro。&lt;/p&gt;
&lt;h1&gt;放下游戏，立地成佛&lt;/h1&gt;
&lt;p&gt;步入高中的最后一个学期，是时候认真学习啦！（是不是有点太晚了？）&lt;/p&gt;
&lt;p&gt;我毅然决然地把魔霸给收起来了（放在另一个房间串流），下决心不再碰他。&lt;/p&gt;
&lt;p&gt;可还是有一些照片编辑，文字处理（正如这篇博客）以及代码处理的需求，使用 iPad Pro 还是有些捉襟见肘，正巧我想体验下 macOS，就用压岁钱购买了这样一台电脑。&lt;/p&gt;
&lt;h2&gt;为什么是他&lt;/h2&gt;
&lt;p&gt;在国补后的 Mac Mini M4 和二手 MacBook Pro 之间我还是选择了 MacBook Pro，原因有很多。&lt;/p&gt;
&lt;p&gt;查询资料可以发现，M3 Pro (11 Cores，下文若无特指不再标注) 的性能相较 M4 不相上下，这时候便可以关注其他的方面。&lt;/p&gt;
&lt;p&gt;首先便是价格，M3 Pro 的 MacBook Pro 在红色二手平台 99 新 18+512 的售价为 8800 元出头，伴随着平台验机；而 M4 Mac Mini 的价格国补完最便宜的型号是 3600 元。看似 Mac Mini 更有性价比，但考虑到我的魔霸由于散热采用液金以及他的尺寸、续航的因素，使得他即使是笔记本我也不方便携带。而且相较与 Mac Mini 16+256 的配置，MacBook Pro 更是来到了 18+512 的起步，算上屏幕，我认为选择 MBP 是一个更好的选择。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;DSC2141.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;DSC2142.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>南山南，北秋悲</title><link>https://fuwari.vercel.app/2024/sad-story/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/sad-story/</guid><pubDate>Sun, 22 Sep 2024 23:21:56 GMT</pubDate><content:encoded>&lt;p&gt;好久没更新随笔了，突然想写点什么了。&lt;/p&gt;
&lt;p&gt;&lt;s&gt;先说说境况吧，有了一段短暂的感情，&lt;strong&gt;「多可喜，亦多可悲」&lt;/strong&gt;，也算是终了，缘分已尽罢了。&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;哥们辩论第一阶段赢了捏。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;然余居于此，多可喜，亦多可悲。 ————《项脊轩志》归有光&lt;/p&gt;
&lt;p&gt;然而我住在这里，有许多值得高兴的事，也有许多值得悲伤的事。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;升入高三，精神状态说不上很好，也说不上很差。听说的所谓「高三状态」也没有发生在我身上，一切还是照旧。看着眼前的分数条也提不起什么努力的兴致，只当日复一日。&lt;/p&gt;
&lt;p&gt;中秋又和初中同桌联系上了，突然发现初中时候的友谊是最单纯的，与现在的高中同学勾心斗角不同，那时就单纯地认为朋友都很好，现在也是。&lt;/p&gt;
&lt;p&gt;说起认为买的最值的老产品，我认为就是 iPod 了，如今为止，我已经在里面存储了 25GB
的歌曲了。显而易见，很多歌即使在里面也很久没听过了。前段时间，我选择了随机播放，马頔的《南山南》从耳机中传出。突然感觉脑袋像在过片一般，无数画面映入脑海。开心的，怀念的，悲伤的，林林总总，那个晚修我就这样在那里呆坐着，15
分钟，《南山南》一遍一遍地放着，一遍又一遍。人要是矫情起来，感觉所有歌都在唱自己。心若荒芜，才会倍感孤独，身处踌躇，才会奈何无助。&lt;/p&gt;
&lt;p&gt;带着耳机，走在校道上，一首插兜，你永远也不知道我耳机中是《南山南》还是《加州旅馆》。&lt;/p&gt;
&lt;p&gt;所谓随笔，自然是想到哪就就写到哪吧。感觉本博的随笔都是些青春伤痛文学的说。&lt;/p&gt;
&lt;p&gt;各位晚安。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;庭有枇杷树，吾妻死之年所手植也，今已亭亭如盖矣。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>「转载」硬件篇 | NAS硬件选购DIY指南：不同价位的硬件搭配建议及心得</title><link>https://fuwari.vercel.app/2024/nas-hardware-guide/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/nas-hardware-guide/</guid><pubDate>Sun, 28 Jul 2024 10:17:23 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;原文来自 &lt;a href=&quot;https://blog.scio.icu/index.php/archives/7/&quot;&gt;『硬件篇 | NAS 硬件选购 DIY 指南：不同价位的硬件搭配建议及心得』&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;一、以装机的角度学习硬件的搭配&lt;/h1&gt;
&lt;p&gt;ps：与常规教程文章不同，别的作者列出的价格可能都是捡漏价格，你自己上大概会多花
5%-10%左右的预算，而我给的价格（除市场波动较大外）都是一般价，你能捡到漏，最差跟我平价，如果比我花费的还多，那你可以再考虑考虑其他配置&lt;/p&gt;
&lt;h3&gt;“丐中强”配置（600- ￥）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;硬件&lt;/th&gt;
&lt;th&gt;型号&lt;/th&gt;
&lt;th&gt;价格&lt;/th&gt;
&lt;th&gt;购入渠道&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;主板&lt;/td&gt;
&lt;td&gt;H81 ITX 17*17CM&lt;/td&gt;
&lt;td&gt;板 U 套餐 210&lt;/td&gt;
&lt;td&gt;咸鱼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;g1840&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;咸鱼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;散热*&lt;/td&gt;
&lt;td&gt;AVC 铜芯散热 28mm 高&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;咸鱼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内存条&lt;/td&gt;
&lt;td&gt;金士顿 2g ddr3 *2&lt;/td&gt;
&lt;td&gt;33.2&lt;/td&gt;
&lt;td&gt;淘宝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;电源&lt;/td&gt;
&lt;td&gt;益衡 7025B + 电饭煲线&lt;/td&gt;
&lt;td&gt;253&lt;/td&gt;
&lt;td&gt;淘宝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;机箱&lt;/td&gt;
&lt;td&gt;蜗牛星际 a 机箱（85 新）&lt;/td&gt;
&lt;td&gt;89.9&lt;/td&gt;
&lt;td&gt;咸鱼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SATA 线&lt;/td&gt;
&lt;td&gt;随便就行*4&lt;/td&gt;
&lt;td&gt;19.6&lt;/td&gt;
&lt;td&gt;京东&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;合计&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;630.7&lt;/td&gt;
&lt;td&gt;建议价格 600 以内&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;点评：&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;整体&lt;/strong&gt;：除了电源外，其他都是丐中丐配置，因为这个配置的话属于最低配，要换就是全都换，没有必要上好的，毕竟选用这套配置就是因为手头紧，没预算。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱&lt;/strong&gt;：千元以内没有其他好选择，就是星际蜗牛机箱，相对较为经济实用，自带背板虽然不稳但是带一两个 16T 或者 4 个 4T
绰绰有余。而机箱一旦敲定，就决定了你的主板，比如这种小机箱只能用 itx（17*17cm）的主板。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱&lt;/strong&gt;：传统的“NAS”机箱主要是空间紧凑、体型较小，而不是性价比好、可拓展性。比如星际蜗牛这款机箱是没有预留 pcie
卡的出口的，如果你有需求需要换机箱或者剪机箱。也可以选择传统的 PC 机箱，但是硬盘位置吃紧，半岛铁盒这种，总感觉稳定性欠佳。服务器机箱有些大材小用，以及服务器机箱是在
300+左右的性价比高，百元内还是先不要考虑了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;板 U&lt;/strong&gt;：这套板 U 一点特色没有，也没有什么性价比，但是这个价位也就这些选择，因为 h61 主板的网口原生是百兆的，都是改的或者再加
pcie 转网口拓展卡，拓展卡功耗并不算高，虽然说是过度，起码得用三个月吧，不如直接换平台，所以就敲定了这套板 u，cpu
可以根据当前实际情况做变动，整体溢价不超过 20%就行&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;散热&lt;/strong&gt;：散热器不用太好但也不要太坏，一般的品牌散热就行，需要注意的就是散热器的高度，受限于机箱高度，这个可以问机箱卖家，都有数据的，一般卖散热器的和板
u 的都会附赠硅脂，建议提前问好以免乌龙，这个价位带的硅脂就行了（*：我这个散热器与主板电容冲突，剪掉散热器一角就可以了，可以参考：这篇文章）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;电源&lt;/strong&gt;：理论上这套配置，电源随便选个一百多的都绰绰有余，立马变成“500 元神机”，但我觉得真没必要，首先电源是维系设备稳定运行的重要工具，电源一个不稳定，all
in boom。其次，7025b 这款电源功率为
250w，质量也比较好，是可以长久使用下去的，不管是换配置还是到其他设备上用都是绰绰有余的（至少下一个或下两个阶段都能用），不会像其他配件一样升级必须抛弃。以及这款电源别在咸鱼上买，都是假标&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其他&lt;/strong&gt;：至于其他的 sata 线看个人需求吧，u 盘我有很多所以没列入，螺丝刀、网线等工具也没列入，内存就是随便亮机就行&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;：所以这套整体都非常丐，但是电源却是“强”的，因此叫为丐中强配置。用来当文件服务器完全够用，看视频的话就 smb
直连吧，解码别想了。用来当下载机、挂 pt、文件服务器、学习研究很好用，但是没法用来折腾&lt;/p&gt;
&lt;h3&gt;“强中丐”配置（3000±200 ￥）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;配件&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;型号&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;价格&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;备注&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cpu&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;i3 12100&lt;/td&gt;
&lt;td&gt;757&lt;/td&gt;
&lt;td&gt;咸鱼，有运费！&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;主板&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;华硕 prime h610m-a d4&lt;/td&gt;
&lt;td&gt;459&lt;/td&gt;
&lt;td&gt;咸鱼，439 的被被人蹲走了，犹豫就会败北&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;内存&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;七彩虹 ddr4 2666 16GB*2&lt;/td&gt;
&lt;td&gt;577&lt;/td&gt;
&lt;td&gt;京东&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;机箱*&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;tank 6 盘位&lt;/td&gt;
&lt;td&gt;809&lt;/td&gt;
&lt;td&gt;淘宝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;散热机箱自带&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;sata 线机箱也带 6 根&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;拓展&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;m2 转 sata&lt;/td&gt;
&lt;td&gt;149&lt;/td&gt;
&lt;td&gt;京东&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;其他&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;利民硅脂  tf9&lt;/td&gt;
&lt;td&gt;39.88&lt;/td&gt;
&lt;td&gt;京东&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;已有&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;电源（益衡 7025B ）、u 盘已有&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;合计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;2790.88&lt;/td&gt;
&lt;td&gt;带电源 3040 ￥&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;点评：&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;整体&lt;/strong&gt;：这套配置乍一看中规中矩，不如 12400+h610/b660，也确实如此，但是两者差着近 400 元呢，也是不小的数字（于我而言），抛下
12400 不谈，这套配置就是高端机器中比较丐的了。我主要是看中进可攻退可守，因为我包括很多个人用户，都是不喜欢卖配件的，都烦扯皮，卖的价格还低。那么这套配置即使不用了，还可以转型组成普通的主机，一般的办公娱乐完全够了，12
代也够新，不会很快过时，要是选八代九代可能就锁死在 nas 上了，不用了配主机也跟毛毛雨一样。所以如果有预算直接上 12400，更加的好用&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱_空间&lt;/strong&gt;：一旦有预算就要脱离 itx 的魔爪，即使是到了 matx（24.4x24.4cm 以内，具体规格细分很多）平台，那也是质一般的飞跃。基本上大于四百的机箱都是
matx 及以上规格的。不仅安装方便、空间也大、散热和拓展也方便。一般也都是 6/8 盘位机箱和复数个 2.5 寸位。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱_价格&lt;/strong&gt;：除此之外就是要考虑价格了，常见的 nas6/8 盘位基本上都是 800 左右，常见的型号/品牌就是
tank、拓普龙、宝藏盒、安钛克、万由等等。其中拓普龙价格比较低，万由价格比较高，宝藏盒与 tank 价格适中&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱_拓展&lt;/strong&gt;：甚至还有便宜的，半岛铁盒，但是普通机箱无背板，直接排除（硬盘共振盒一拖多的普通 sata 供电如果不稳直接
gg），我综合考虑之下选择了 tank，之所以没选择经济实惠的拓普龙是因为背板与整套的购买体验。比如 tank 自带 L
形散热，用料相对稳当，长的还好看点，竖直放置方便，全高 pcie、售后团队等等。这个看个人，溢价肯定是有的，缺点也有，那就是 6 盘位，普遍都是
8 盘位的。但是我步子比较大，硬盘后续也要补充，一步到位机箱走稳定路线吧！这个价位机箱就不建议走二手了，咸鱼上运费很贵比新的便宜不了多少，而且质量还说不准&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;机箱_服务器&lt;/strong&gt;：还有另一个非常好的选择，就是服务器机箱，12、24 盘位的，价格还低，400
以内妥妥拿下。但是因为体型比较大涉及到线材长度之类的问题，其他细节上的问题我就没进一步了解了，因为我目前没上服务器机箱，原本是打算弄的，后来添置了磁带机就没这个需求了。如果要上服务器机箱的话，建议先弄好整体的环境，比如机架/机柜、专门存放设备的地方（一般都是工业暴力扇噪音很大）等等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;板 U&lt;/strong&gt;：12100+h610 是比较稳当的一步，你说惊艳吧，也就这个样，你说不行吧，性价比高的也就这套，或者在这套浮动。比如如果预算加不到
300，可以 u 升级为 12400，预算再加点板子换成 b660。这样的话性能又是一个大台阶，但我预算实在是不够了，也不想等，因为 12 代 u
开始涨价了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主板&lt;/strong&gt;
：说实在的，我这个主板买贵了，更好的选择是去拼多多买，因为即使拼多多跟咸鱼的质量一样，拼多多还是全担保交易，有问题方便退换，有客服，也不会催你收货。并且很多咸鱼卖家也都是转的拼多多的货。但我没用过拼多多就没考虑。还需要注意的是，这个主板是只有两个内存条插槽&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内存&lt;/strong&gt;：内存的话建议直接上 16G 单条的，根据预算和需要追加条数，一般 32g 够了，这个主板也就支持两个内存通道，2666
频率就行，再高主板一般也不支持，价格贵了感知其实并没有那么明显，不如扩展内存大小，正常装机也是，极致的游戏党和土豪玩家或者性能党、有明确需要的玩家再考虑频率就行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;散热&lt;/strong&gt;：自带的没得说&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;拓展&lt;/strong&gt;：因为 h610m 原生 4 个 sata 口，而有两个 m.2 槽，所以就买了一个 m2 转 sata（五口）的拓展卡，也可以用 pcie 转
sata，但是我还想要在 pcie 口加装个风扇所以就没考虑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;电源&lt;/strong&gt;：还是用的旧电源，7025b，这也是对盘位考量的妥协，因为 8 盘位的话我就要换机箱了，因为硬盘启动有一个瞬时电流，数据挺高的，7025b
带 6 个硬盘（5 个 16t）有余，但是 8 个（假设 6 个 16t）就说不准了，而放满六块 16T 但是容量还不够的话，就说明该阶段已经毕业了，就该换另外的平台了（玩
pt 疯狂保种的另说，指正常存资料和中轻度 pt）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其他&lt;/strong&gt;：硅脂的话别人都说三四次，可是我两次都觉得勉强，跟个人涂抹习惯有关，我是为了给自己主机也换一下硅脂才用的这款，如果没有其他额外需求，换个一般点的硅脂就行&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;：如果预算不够，可以缩其他的，板 u 尽量不要缩，内存条可以用一根 16G 的，机箱可以物色一个便宜的，硬盘不太多的话可以先不用
sata 拓展卡，又可以省出四百多。&lt;/p&gt;
&lt;h3&gt;二、如何选 cpu？&lt;/h3&gt;
&lt;h3&gt;cpu 代数的选择&lt;/h3&gt;
&lt;p&gt;很多人比较排斥 12 代的 u 除了日渐增长的价格（估计是为 13 代 u 做铺垫，不然谁还买 13 代 u），就是 12 代 u 对黑裙的支持和 emby
解码的兼容性问题。因此望而生畏&lt;/p&gt;
&lt;p&gt;这个我也无解，都是等大佬出解决方案，但是因为我用的 unraid 系统，没有这个问题，流媒体平台我还没有养成习惯，jellyfin
才是我的第一选择，plex 是第二选择&lt;/p&gt;
&lt;p&gt;当然 10400、8100 这些经典型号也不是不能选择，但是 12100 综合来看只要在 750 以内都尽量它吧&lt;/p&gt;
&lt;p&gt;性价比并不只是价格优劣，更多的是性能和后续。12 代在未来几年是不会过时的，还是那句话，进可功退可守。当 nas
足够，退休了当主力机也行。尤其是家里有孩子的，退休后给孩子组电脑岂不是美滋滋？&lt;/p&gt;
&lt;p&gt;如果你是垃圾佬或者非常有经验的话那看自己的心情购买就好，但我作为一般人，处于多种考量我是不太愿意卖配件的，因此更喜欢着眼于长期使用和永久持有的路。还有另一个考量就是功耗，新老版本提升的不只是性能，我第一套配置待机功耗和下面这套是一样的你敢信？当然技术是有瓶颈的，近几代的处理器功耗都大差不差，提升没有那么明显了&lt;/p&gt;
&lt;p&gt;ps：unraid 6.10.x 版本硬解没有问题，6.9.x 有问题，可以选择升级为 6.10.x 的系统，但我下一篇文章是以 6.9.2 为基础的，给的安装包也是
6.9.2 的，6.10.x 的开心版已经出来了，操作是一样的操作，只是系统包不一样，最新的系统在恩山论坛有，一搜就行了，也不是我的原创，我不好意思这么就转载&lt;/p&gt;
&lt;h3&gt;cpu 后缀的选择&lt;/h3&gt;
&lt;p&gt;无后缀：普通 cpu，有核显但是不能超频，价格正常&lt;/p&gt;
&lt;p&gt;f 后缀：无核显版本，组无限卡的 nas 必然不会考虑，价格较低&lt;/p&gt;
&lt;p&gt;k 后缀：可以超频，组 nas 用不到，性能党和游戏党可以考虑，价格较高&lt;/p&gt;
&lt;p&gt;t 后缀：低功耗版本，价格有 10-20%的溢价，然而实际使用上待机区别不大，只是满载上限有点差异，性能还被阉割了一部分，除非你家电费几块钱一度，不然也没必要&lt;/p&gt;
&lt;p&gt;这四种情况是最常见的，我们选无后缀的普通 cpu 就可以了，还有一种特殊的情况&lt;/p&gt;
&lt;p&gt;es、qs 版本：两者定义差不多，属于工程测试 U，系统一般识别为“0000”，优点是价格低廉，缺点是容易有问题、不稳定、兼容性也有问题，适合有经验的垃圾佬，或者纯粹折腾的机子，一般我们还是选正式版的
u&lt;/p&gt;
&lt;h3&gt;解码视频选择什么 U？&lt;/h3&gt;
&lt;p&gt;12 代 CPU&lt;/p&gt;
&lt;p&gt;12400（包含）以下核显都是 UHD730，一般来说 gt740 的级别。&lt;/p&gt;
&lt;p&gt;12500（包含）以上核显都是 UHD770，一般来说 gtx650 的级别。&lt;/p&gt;
&lt;p&gt;八代 CPU 核显基本上都是 UHD630 相当于 gt730 的级别，支持 4K 解码绰绰有余&lt;/p&gt;
&lt;p&gt;另一个常用来组 nas 的 u g5400 核显是 UHD610 用来解 4k 也不是不行，但一般比较吃力，用的人也挺多的，不过就不如 g5500 了，它的核显是
UHD630 解 4k 绰绰有余，它们价格也差不多（所以 g5400 能卖这么贵就离谱）&lt;/p&gt;
&lt;p&gt;所以单看视频解码，如果没有其他需求，上 g5500 完全可以，上八代 U 也合情合理&lt;/p&gt;
&lt;p&gt;看个人根据自己情况的综合考虑吧&lt;/p&gt;
&lt;p&gt;CPU 详细信息查询：https://ark.intel.com/content/www/tw/zh/ark.html#@PanelLabel122139&lt;/p&gt;
&lt;p&gt;“處理器顯示晶片”栏的第一行就是核显型号&lt;/p&gt;
&lt;h3&gt;因此 cpu 推荐是：&lt;/h3&gt;
&lt;p&gt;12400 ＞ 12100 ＞ 10400 ＞ 10100 ＞ 8 代 u ＞ g5500 ＞ g5400&lt;/p&gt;
&lt;p&gt;（从贵到便宜，高性能到低性能）&lt;/p&gt;
&lt;h2&gt;二、如何选主板？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;芯片组&lt;/strong&gt;：主板其实没什么好说的，先看自己的性能需求，然后根据性能需求选 CPU，cpu 选了，主板也就没什么选择了，比如选了 12 代
cpu，他的针脚接口是 LGA 1700，那就只能用 h610、b660、h670、z690 这几款。其中 h610 算是入门款式，b660
是比较火热的款式。那就根据需求在这两者之间选择就行了。具体的型号一般百度都能直接搜到，直接搜“xx 代 U/XXU 搭配什么主板？”就行了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;型号_供电&lt;/strong&gt;：敲定了范围就要开始细选了，不同的主板有不同的特色，比如 b660 被称之为“最强供电”，但我们组件 nas，cpu
功耗没那么高，即使组 pc，不带 3080 那种高端显卡，h610 也完全够用，真到了那个级别当前的 u 和主板肯定也得换。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;型号_拓展&lt;/strong&gt;：还需要注意的就是主板的拓展性能，比如 b660 主板是有 pcie4.0 通道的，而 h610 是 3.0&lt;/p&gt;
&lt;p&gt;z690 支持 cpu 超频而其他的都不支持&lt;/p&gt;
&lt;p&gt;以及 h610 和 b660 主板原生是 4 个 sata 口（微星 b660 有 6 个），h670 和 z690 原生 6 个 sata 口&lt;/p&gt;
&lt;p&gt;这是主板型号之间的差异，再细分不同品牌方也推出了不同的子型号，比如 sata 口朝向、m2 口数量，内存插槽数量、pcie
插槽规格等等就比较细分了，可以看需求和价格综合考量&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;品牌&lt;/strong&gt;
：选定了型号就得选牌子，同一型号的主板价格差距能到好几百的，这个取决于主板的用料、拓展、性能、规格等等，常见的一线主板频道有华硕微星技嘉，其中前两者用料比较扎实价格也贵点，技嘉用料一般价格也便宜点。另外还有华擎铭瑄也都是比较稳的品牌，其他小牌的优点可能就是便宜了。但有一说一，买二手的话，选大牌的挺香的，没必要图极致的便宜。比如买了华硕的主板（买带保的别忘了），使用中有一些小问题不明白的话直接打华硕客服电话可以咨询，比小牌有保障的多，如果坏了也可以送去维修很方便&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;尺寸&lt;/strong&gt;：主板一般分为 ITX 和 ATX，其中 ITX 是 17*17cm 的小板，入门款 nas 基本都是用的 itx
主板，选择少，价格高，限制多。但是综合价格便宜。如果有预算必须得换大点的机箱，才能用大主板，也不用太大。&lt;/p&gt;
&lt;p&gt;ATX 主板又分为：MATX、普通 ATX、加大 ATX。matx 在中高端 nas 和一般的日用电脑上很常见，尺寸比较多，但都在 24*24cm
以内。这个主板可玩性高，占用空间又不大，适用范围广。再往上目前不考虑，&lt;/p&gt;
&lt;p&gt;比如本文说的 h610、b660 严谨点就是 h610m、b660m，带 m 后缀的就是 matx 主板，这点跟 cpu 一样的&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;：所以其实主板没什么好选的，确定了 cpu 就相当于确定了主板，你如果用 12100 选 h610 没毛病，你如果用了 12400 选 b660
没毛病，你如果用了 12700 以上选 h670、z690 也没毛病，牙膏厂的板子很好选的，没有强制的规定，但搭配基本上都是固定的。&lt;/p&gt;
&lt;p&gt;比如你用了 12400 那真的推荐 b660 而不是 h610，你用 12100 也可以选择 b660 甚至是更高，有预算我也说了真的推荐
b660，拓展性能更好，但如果需求固定了，12100+b660 会有很多闲置性能，有利有弊，利于 cpu 升级而不更换主板，弊端就是不升级白瞎一部分性能升级了多出一个
cpu，所以建议一开始根据自己的需求和预算考量好，12400+b660 也很香呀。（虽然都是买前生产力买后爱奇艺）&lt;/p&gt;
&lt;p&gt;之后可以京东淘宝搜下选中的型号，看看不同品牌及子型号之间的差异，根据自己的需求敲定就行了&lt;/p&gt;
&lt;h2&gt;三、如何选内存？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;内存规格&lt;/strong&gt;：目前比较主流的规格是 ddr4，不是古早主板基本上都支持，新主板更不用提，ddr3 太旧，ddr5 太超前，ddr4
刚刚好。兼容性好、价格便宜、选择多、适用范围广&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内存频率&lt;/strong&gt;：目前主流的频率有：2133、2400、2666、3000、3200、3600。理论上自然是频率越高越好，虽然很多主板比如 h610 说他丐人家支持
3200mhz 的内存频率，但是也没必要，2666mhz 频率的内存综合性价比更高，因为除了 3a 游戏党、跑分党、极致性能党、土豪之外，你是感觉不出什么太大的差异的。&lt;/p&gt;
&lt;p&gt;这个是符合边际效应了，前两个馒头顶饱，但后面就是花高代价满足小需求，不如提升单条容量和数量&lt;/p&gt;
&lt;p&gt;单双通道：虽然很多人都是吹双通道速度是单通道的一倍，跟 3200 远大于 2666 差不多，理论上是这样，可实际上，就把自己锁死了。你上一个
16G 单条，有预算再追加一条。跟你直接上两根 8g 单条相比，短期看是后者优，但是长期看，这 8g 单条早晚要卖了嫌便宜用了嫌小。再者诸如
h610 主板只有两个内存插槽。&lt;/p&gt;
&lt;p&gt;我主机四根 8g 的美商海盗船 3200mhz 的内存条，因为主板兼容性问题一直是用的 2133mhz，我没有感觉到有什么差异，而且现在想要升级代价太高了，八
g 内存条根本没地方用&lt;/p&gt;
&lt;p&gt;这个跟硬盘选购是一样的，我就建议上 3 块 4t 硬盘满足不了需求的时候，直接上一块 16T，因为中间的早晚要处于尴尬的低位，18T
及往上性价比和兼容性也可能有问题。有些事情表面上看着是利好低预算玩家，实际上是真的在迫害低预算玩家&lt;/p&gt;
&lt;p&gt;内存品牌：内存品牌很多，但是直接搜【16G 内存条 2666mhz】看到哪个便宜又听说过的品牌买就行了，这个价位要什么自行车（但不推荐咸鱼买，咸鱼很多换颗粒的假内存条的，尤其是某士顿更是重灾区）&lt;/p&gt;
&lt;h2&gt;四、如何选机箱？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;机箱&lt;/strong&gt;：机箱的选择其实更少，要么&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;nas 机箱&lt;/strong&gt;：封闭式、硬盘笼、迷你、稳定对硬盘友好、就是为 nas 设计的空间利用率高&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;普通机箱&lt;/strong&gt;：普通机箱，有诸如半岛铁盒硬盘位多的，但没有 sata 背板、用料感觉也不稳、共振对硬盘损伤很大的&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开放式/高度 diy 机箱&lt;/strong&gt;：没啥好说的&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;服务器/机柜&lt;/strong&gt;：这个其实也挺好，比如惠普、浪潮等服务器机箱用来弄 nas 也挺好，但这就属于我第三步的范畴了，目前不考虑，机箱成本不高但是附属成本高（因为是需求推动着升级）&lt;/p&gt;
&lt;p&gt;一般我们都是选普通的 nas 机箱&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;价位/盘位&lt;/strong&gt;：目前 nas 机箱选择真的很少&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四盘位&lt;/strong&gt;：咸鱼 100 以内你能淘到星际蜗牛四盘位机箱，200 以内淘个新的轻轻松松&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;六/八盘位&lt;/strong&gt;：价格就瞬间上来了，这可以参考我的【“强中丐”配置】里面对机箱的点评，经济实惠的还有拓普龙八盘位五百多能淘到。但是其他的都是八百左右浮动了，机箱品牌也就那么些。这还比较推荐的&lt;/p&gt;
&lt;p&gt;还有一些机箱，一般都是 diy 的，出货量很少，现在就买不到了或者价格很高，diy
是这样的，一千多五盘位都有，不见得一分价钱一分货，毕竟价格不全看质量还得看综合成本，量多成本分摊才能便宜。那些上千的基本上都是小圈子定制款，量多了照样八百多。价格高怎么办？制作方可能就会在其他方面有小心思，就跟散热风扇的
rgb 一样，不加花里胡哨的功能怎么理所当然的涨价&lt;/p&gt;
&lt;p&gt;还有一我购买的 tank 这款如果硬盘位能有八个那就是真的完美了，目前只能说有点小瑕疵。具体你可以根据自己的需求对比下不同机箱的附加服务（背板质量、外观设计、客服团队等）综合考量&lt;/p&gt;
&lt;h2&gt;四、如何选电源？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;规格&lt;/strong&gt;：电源也是有规格的&lt;/p&gt;
&lt;p&gt;电脑常用的 ATX（150&lt;em&gt;140&lt;/em&gt;86mm(W&lt;em&gt;D&lt;/em&gt;H)），迷你主机常用的 SFX（125&lt;em&gt;100&lt;/em&gt; 63.5mm(W&lt;em&gt;D&lt;/em&gt;H)）&lt;/p&gt;
&lt;p&gt;服务器（含 nas）常用的 FLEX（俗称小 1U 电源）（150&lt;em&gt;81.5&lt;/em&gt;40.5MM(W&lt;em&gt;D&lt;/em&gt;H)）&lt;/p&gt;
&lt;p&gt;基本上所有 nas 机箱都是用的小 1u
电源，其中益衡的质量、性价比、保障都比较突出，用户群也很多，但必须买全新的，淘宝有两家授权店，咸鱼的假货泛滥。益衡改电源风扇也是有保的，利好折腾党。海韵用的人也挺多，质量也不错。一般
6 盘位（6 个 16t（不含）以下）没有额外的拓展 7025b 完全可以满足需求，7025b 功率是 250w。&lt;/p&gt;
&lt;p&gt;如果拓展比较多、硬盘位多建议电源提一个档次。8 盘位等空间比较大的机箱可以用 atx 电源&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;瞬时电流&lt;/strong&gt;：电源不只是看功耗，正常 nas 没有过多拓展，高性能的板 u 加 6 个 16t 硬盘待机撑死 80w，满载撑死
200w，电源的另一个指标是电流，比如 7025b，在它们的【宝贝详情页】里都有参数，12V 的输出电流是 18A，一块 16T 硬盘启动电流至少为
2A（没测过，大概数），同时启动的话，电源扛不住，电流不稳容易损坏硬盘，就跟飞机一样，最危险的时候不是正常飞行，而是起飞与落地。&lt;/p&gt;
&lt;p&gt;这个问题也不是没法解决，但需要硬件支持，现在稍微贵点的机箱的 sata 背板都支持顺序通电，可以很大程度缓解这个问题，但要保证绝对的稳定运行的话，我建议还是要提高电源档次&lt;/p&gt;
&lt;p&gt;这也是说为什么电源最重要，电源不稳定的话，真就 all in boom 了&lt;/p&gt;
&lt;h2&gt;五、其他配件的选择&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;硬盘&lt;/strong&gt;：我就不说了，等了解更深入了会单独开文章介绍，现在就不自作聪明了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sata 线&lt;/strong&gt;：第一次装机买几根就行，要注意的就是主板 sata 口和其他配件是否冲突用不用买弯的那种异性头，后面就不用买了，这次这个
tank 机箱带六根 sata 线，我现在闲置了十来根 sata 线了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;散热&lt;/strong&gt;：散热的话如【“丐中强”配置】里面的点评所说，选个普通品牌注意是否和主板上的小零件冲突就行了，冲突的话剪掉散热别动主板&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;硅脂&lt;/strong&gt;：一般 cpu、主板甚至是机箱卖家都会带硅脂（请提前沟通），但是都是非常一般的硅脂，想要好点可以买利民的硅脂，就是价格挺贵的&lt;/p&gt;
</content:encoded></item><item><title>这世界有那么多人</title><link>https://fuwari.vercel.app/2024/thought-memories/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/thought-memories/</guid><pubDate>Sun, 03 Mar 2024 01:49:26 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这世界有那么个人，活在我飞扬的青春&lt;/p&gt;
&lt;p&gt;在泪水里浸湿过的长吻，常让我想啊想出神&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;再一次听到这首歌，还是不自觉的跟唱。&lt;/p&gt;
&lt;p&gt;上高中两年了，还是总会想到初中的事。与我小升初时转入另一个的学区不同，上了高中的我还是能见到他们，打招呼，是一件刻在骨子里的习惯。&lt;/p&gt;
&lt;p&gt;我可能是一个私下里比较感性的，对于分别，我是难以接受的。但通过互联网能再次阅读他们的文字，体会他们表达的感情，是一件很奇妙的事。&lt;/p&gt;
&lt;p&gt;『这世界有那么多人』总让我想到分别。&lt;/p&gt;
&lt;p&gt;早先国 V 刚刚开始起步，彩虹社与 B 站成立了 VirtuaReal。B 站对 VR 的一期生做了很多宣发，我大抵是当时关注&lt;strong&gt;爹&lt;/strong&gt;
的，后来就躺在我的关注列表里，一直没看过了。重新记起爹是因为「我开动物园那些年」的 OP
和「&lt;a href=&quot;https://www.bilibili.com/video/BV1SE411V78E/&quot;&gt;夭夭&lt;/a&gt;」，而重新看爹的直播/录播是因为她当时打 Apex 和
MC，迷于爹的「琉声电台」。当时的「琉声电台」是我初二时每天写完作业的哄睡音频。&lt;/p&gt;
&lt;p&gt;初三时因为学校的安排，班级从走读转为住校，一同告别的便是每日都可以接触到的手机与电脑。当时求了我妈一个多月，才终于同意给我买了一块
Oppo Watch 2，小小的安卓表，让我与学校围墙外的世界重新建立了联系，也让我得知了那个紫发女孩毕业了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;弹幕：好像去 VR 做 Ru 爹的同事啊。 Ru：（沉默）也有可能到时候我就是你的前同事了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;当然，互联网也不是杳无音讯，那段时间，我不记得听了多少次&lt;a href=&quot;https://www.bilibili.com/video/BV14j411f79e&quot;&gt;初号机的告别视频《再见》&lt;/a&gt;
和这一首女水友唱的&lt;a href=&quot;https://www.bilibili.com/video/BV1H3411h7mN&quot;&gt;《这世界那么多人》&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当时正值中考前，可能人也变得伤感了吧。与朋友的分别，D 的管人的毕业，组成了这首歌留在记忆里的画面。&lt;/p&gt;
&lt;p&gt;心中感慨良多，却难以写出，诸君权当一笑尔。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;看管人不要入脑。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>站点 Icon 变更通知</title><link>https://fuwari.vercel.app/2024/new-avatar/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/new-avatar/</guid><pubDate>Thu, 29 Feb 2024 01:05:47 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;站点公告&lt;/strong&gt; 本站于 2024 年 2 月 29 日零时启用新的 icon 并将其 URL 地址迁回至站点源地址。&lt;/p&gt;
&lt;p&gt;烦请各位友站将原先的 unpkg 源地址修改为新地址。&lt;/p&gt;
&lt;p&gt;仅需将原先地址中的 &lt;code&gt;https://unpkg.com/yurik-static@1.0.6/&lt;/code&gt; 修改为本站地址 &lt;code&gt;https://yurik.cafe&lt;/code&gt; 即可&lt;/p&gt;
&lt;p&gt;如 &lt;code&gt;https://unpkg.com/yurik-static@1.0.6/favicon/v2/favicon.ico&lt;/code&gt; -&amp;gt; &lt;code&gt;https://yurik.cafe/favicon/v2/favicon.ico&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;icon 列表及对应地址可查看 &lt;a href=&quot;/favicon/v2/&quot;&gt;/favicon/v2/&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>我的小鲨鱼 By Unity</title><link>https://fuwari.vercel.app/2024/warma-shark-unity/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/warma-shark-unity/</guid><description>创意、美术: WARMA | 《我的小鲨鱼》的 UNITY 实现</description><pubDate>Sat, 24 Feb 2024 21:25:15 GMT</pubDate><content:encoded>&lt;h1&gt;版权信息&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本游戏创意、美术来源于 B 站知名 UP 主 Warma。本作仅为原游戏的 Unity 实现，未经原作者与本人许可不得用于商业用途&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;创意、美术: &lt;strong&gt;Warma&lt;/strong&gt; | 开发：&lt;strong&gt;景蓝 Yurik&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;《我的小鲨鱼》的 UNITY 实现&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bilibili.com/video/BV1fb4y1P7Y1&quot;&gt;原视频&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe src=&quot;//player.bilibili.com/player.html?aid=624026347&amp;amp;bvid=BV1fb4y1P7Y1&amp;amp;cid=1414155015&amp;amp;p=1&quot; scrolling=&quot;no&quot; border=&quot;0&quot; frameborder=&quot;no&quot; framespacing=&quot;0&quot; allowfullscreen=&quot;true&quot;&amp;gt; &amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h1&gt;游戏介绍&lt;/h1&gt;
&lt;p&gt;来领养一只电子小鲨鱼吧！
给它喂食、让它锻炼、看它睡觉，这一切看起来就像治愈快乐的宠物养成游戏一样。
尽管小鲨鱼是弱小的，面对一切都是无能为力的。
但请放心，无论发生了什么，电子小鲨鱼仍然爱你。
游戏总共包含 11 个普通结局和 2 个最终结局，根据你对小鲨鱼做过的事情，游戏将走向不同的结局。
来和小鲨鱼成为朋友吧！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;cover.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;更新日志&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;2024/2/19 - 制作了语言选择页面&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;下载&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;当前游戏还未开发好&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>使用 Hexo 搭建静态博客</title><link>https://fuwari.vercel.app/2024/hexo-guidebook-1/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/hexo-guidebook-1/</guid><pubDate>Sun, 18 Feb 2024 02:33:21 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;p&gt;想到年，我曾经写过「&lt;a href=&quot;/2022/hugo-blog/&quot;&gt;使用 Hugo 搭建个人博客&lt;/a&gt;」一文，现在又来转投 Hexo 的怀抱了。&lt;/p&gt;
&lt;h1&gt;Hexo 是什么&lt;/h1&gt;
&lt;p&gt;Hexo 是一款基于 Node.js 的静态博客框架，它具有轻量、快速、简洁且高效的特点。它可以将 Markdown 语法转换为
HTML，方便用户编写博客文档。Hexo 支持使用 node 命令进行一键部署到 GitHub Pages、Heroku 或其他平台，非常适合个人博客的搭建。此外，Hexo
还具有丰富的插件和主题，可以满足用户的不同需求。&lt;/p&gt;
&lt;h1&gt;安装 Hexo&lt;/h1&gt;
&lt;h2&gt;安装 Node.js&lt;/h2&gt;
&lt;p&gt;Hexo 依赖于 Node.js 环境，因此确保你的计算机已经安装了 Node.js 和 npm (同时你也可以使用 yarn 来管理你的 Node.js 包)&lt;/p&gt;
&lt;h2&gt;安装 Hexo 命令行工具&lt;/h2&gt;
&lt;p&gt;hexo-cli 是 Hexo 官方的命令行管理工具，它提供了快速新建、发布、部署博客等功能。&lt;/p&gt;
&lt;p&gt;你可以通过 npm（或 yarn，下文不再赘述）安装 hexo-cli&lt;/p&gt;
&lt;p&gt;在终端中执行以下命令来安装 hexo-cli&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# npm
npm install hexo-cli -g

# yarn
yarn global add hexo-cli
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;我们将提供 npm 和 yarn 的命令，请根据你的情况选择
下同&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;初始化 Hexo&lt;/h1&gt;
&lt;h2&gt;生成站点目录&lt;/h2&gt;
&lt;p&gt;接下来，你需要创建一个新的 Hexo 博客项目。在终端或命令提示符中，导航到你想要创建博客的目录，然后运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hexo init folder
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 folder 改为目标文件夹名称（下同），如果在当前文件夹初始化的话就执行以下命令:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hexo init .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时目标文件夹中会生成以下文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.
│  .gitignore              # git提交时的省略文件
│  package.json            # Node.js项目描述和依赖管理文件
│  _config.landscape.yml   # Hexo 初始主题 Landscape 的配置文件
│  _config.yml             # Hexo 站点配置文件
│
├─scaffolds                # Hexo生成文章时的结构模板
│      draft.md
│      page.md
│      post.md
├─source                   # Hexo站点源文件
│  └─_posts                # 博文文件夹
│          hello-world.md
├─themes                   # 主题文件夹
│       .gitkeep           # 告诉git要保留这个空文件夹
│
├─node_modules             # Node.js 依赖包存放
│
└─.github                  # 使用Github来自动部署Hexo的配置文件
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装依赖包&lt;/h2&gt;
&lt;h3&gt;进入站点文件夹&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cd folder
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用包管理器安装 Node.js 依赖包&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# npm
npm i

#yarn
yarn
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;配置 Hexo&lt;/h1&gt;
&lt;h2&gt;_config.yml 配置&lt;/h2&gt;
&lt;p&gt;进入你创建的博客文件夹，你将看到一个名为_config.yml 的文件，这是 Hexo 的配置文件。你可以根据自己的需求修改该文件，例如设置博客标题、域名、文章路径等。&lt;/p&gt;
&lt;p&gt;参数详解请参考&lt;a href=&quot;//hexo.io/zh-cn/docs/configuration&quot;&gt;Hexo 官方文档&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;package.json 配置&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;package.json&lt;/code&gt; 是 Node.js 项目描述和依赖管理文件，你可以在 &lt;code&gt;package.json&lt;/code&gt; 中添加以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;scripts&quot;: {
    &quot;g&quot;: &quot;hexo cl &amp;amp;&amp;amp; hexo g&quot;,
    &quot;cl&quot;: &quot;hexo clean&quot;,
    &quot;d&quot;: &quot;hexo deploy&quot;,
    &quot;s&quot;: &quot;hexo cl &amp;amp;&amp;amp; hexo g &amp;amp;&amp;amp; hexo s&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样使用以下语句就可以逐条执行 &lt;code&gt;清理静态文件-&amp;gt;生成静态文件-&amp;gt;部署开发服务器&lt;/code&gt;三个过程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# npm
npm run s

# yarn
yarn s
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;创建文章&lt;/h1&gt;
&lt;p&gt;在站点根目录使用终端，执行以下命令:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hexo new post &amp;lt;your-post-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;&amp;lt;your-post-name&amp;gt;&lt;/code&gt;修改为你的文章名称（英文）&lt;/p&gt;
&lt;p&gt;之后在&lt;code&gt;source\_posts\&amp;lt;你的自定义路径&amp;gt;\&lt;/code&gt;中将会生成&lt;code&gt;&amp;lt;your-post-name&amp;gt;.md&lt;/code&gt;文件，使用 Markdown 语法编辑即可开始写作&lt;/p&gt;
&lt;h1&gt;渲染 HTML 文档&lt;/h1&gt;
&lt;p&gt;若你已经按照&lt;a href=&quot;#package-json-%E9%85%8D%E7%BD%AE&quot;&gt;上文&lt;/a&gt;配置了&lt;code&gt;package.json&lt;/code&gt;文件，你可以执行以下命令来生成静态 HTML 文档&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# npm
npm run g

# yarn
yarn g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然你也可以手动执行 Hexo 命令来逐步生成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 清理原public文件(必须)
hexo clear       # hexo cl

# 生成静态文档
hexo generate    # hexo g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;生成的静态文档将出现在目录下&lt;code&gt;public&lt;/code&gt;文件夹中，你可以将它上传至你的网页服务器或者 gh-pages 等 serverless 服务中&lt;/p&gt;
&lt;h1&gt;推荐配置&lt;/h1&gt;
&lt;h2&gt;开启文章资源文件夹&lt;/h2&gt;
&lt;p&gt;Hexo 默认不开启文章资源文件夹，所有的图片都直接读取&lt;code&gt;source&lt;/code&gt;文件夹中的非&lt;code&gt;_&lt;/code&gt;开头目录中文件，这并不方便图片管理。&lt;/p&gt;
&lt;p&gt;你可以在&lt;code&gt;_config.yml&lt;/code&gt;中将&lt;code&gt;post_asset_folder&lt;/code&gt;设置为&lt;code&gt;true&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;post_asset_folder: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当在 &lt;code&gt;post_asset_folder&lt;/code&gt; 为 &lt;code&gt;true&lt;/code&gt; 时，Hexo 会在你创建新文章时自动生成一个与文章同名的文件夹。&lt;/p&gt;
&lt;p&gt;在 Markdown 文件中引用图片时，你可以使用相对路径来指向这个文件夹中的图片文件。例如，如果你有一张名为 &lt;code&gt;image.jpg&lt;/code&gt; 的图片放在
&lt;code&gt;my-article&lt;/code&gt; 文件夹中，你可以在 &lt;code&gt;my-article.md&lt;/code&gt; 文件中使用 &lt;code&gt;![](image.jpg)&lt;/code&gt; 的语法来引用这张图片。&lt;/p&gt;
&lt;p&gt;通过使用 &lt;code&gt;post_asset_folder&lt;/code&gt; 功能，你可以更好地组织和管理 Hexo 博客中的文章和资源，提高写作和发布的效率。&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot;&amp;gt;
如果你要配置封面时不可以使用上文提及的相对路径，而是应该使用相对站点根目录的路径，如&amp;lt;code&amp;gt;/my-article/image.jpg&amp;lt;/code&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;配置文章存储路径&lt;/h2&gt;
&lt;p&gt;Hexo 默认将所有文章全部存放在&lt;code&gt;source\_posts&lt;/code&gt;下，这并不利于按时间管理文章&lt;/p&gt;
&lt;p&gt;你可以在&lt;code&gt;_config.yml&lt;/code&gt;中修改&lt;code&gt;new_post_name&lt;/code&gt;设置来设置文章存放路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;new_post_name: :year/:month/:title.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;相关变量请参考&lt;a href=&quot;//hexo.io/zh-cn/docs/permalinks&quot;&gt;Hexo 官方文档&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;主题&lt;/h1&gt;
&lt;p&gt;你可以为自己的 Hexo 站点安装不同的主题，具体主题配置请参考相关主题文档&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;//hexo.io/themes/&quot;&gt;Hexo 主题列表&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Enjoy Your Writing&lt;/h1&gt;
&lt;p&gt;:D&lt;/p&gt;
</content:encoded></item><item><title>Hexo 主题 News 现已上线</title><link>https://fuwari.vercel.app/2024/hexo-theme-news/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/hexo-theme-news/</guid><pubDate>Thu, 01 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如你所见，我给博客换上了一个新主题。&lt;/p&gt;
&lt;p&gt;与别的主题不同的是，这个主题是我从 1 开始制作的。为什么是从 1
开始？因为这个主题我参考了 &lt;a href=&quot;https://www.apple.com.cn/newsroom/&quot;&gt;Apple 公司的 Newsroom 页面&lt;/a&gt;，也使用了部分 Apple 的 CSS
样式表（主要是文字相关部分），因此这个主题也被我命名为&lt;strong&gt;News「新闻中心」&lt;/strong&gt;。这篇博文是制作 &lt;strong&gt;News「新闻中心」&lt;/strong&gt; 主题的记录。&lt;/p&gt;
&lt;h1&gt;灵感&lt;/h1&gt;
&lt;p&gt;最开始的想法是在给班级网站写新闻中心页面。当时给网站主页使用的 Bootstrap 5 的 Jumbotron 模板，想着设计一个和他向契合的新闻页面，突然我想到了之前看到的
Apple Newsroom 我十分喜欢，于是便用 Bootstrap 的 Card 放置了一个差不多的页面出来，这可以称为是 &lt;strong&gt;News「新闻中心」&lt;/strong&gt; 的 **α1
** 测试版本。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此处因保护隐私原因不放出参考网址&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;之后这个站点便因为准备期考而暂停了更新，但我仍时不时的对他的样式表做一点细微的调整，直到期考结束。期考结束的这个寒假，我按照计划维护着博客，突发奇想要不把之前写的「新闻中心」改成主题吧！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;说干就干&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;过程&lt;/h1&gt;
&lt;p&gt;我使用的是 &lt;a href=&quot;https://www.npmjs.com/package/yo&quot;&gt;YO(Yeoman generators) 生成器&lt;/a&gt;来创建的 Hexo 主题模板，使用的 EJS 模板语言和
CSS 样式表，具体的技术细节就不再文中赘述了。我感觉主题的开发就和使用 PHP 写程序一样，要注重代码的**“复用”**
，即模块化编程，将不同的组件单独编写，按需调用，省去了重复造轮子的麻烦。&lt;/p&gt;
&lt;p&gt;目前，**News「新闻中心」**已经实现了以下功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基础文章的渲染&lt;/li&gt;
&lt;li&gt;友情链接页面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;计划实现的功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;灯箱 Fancybox&lt;/li&gt;
&lt;li&gt;完善配置文件&lt;/li&gt;
&lt;li&gt;代码高亮&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;特性&lt;/h1&gt;
&lt;p&gt;**News「新闻中心」**具有以下特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用了最新的 Bootstrap 5 作为框架，「新闻中心」支持其全部组件和特性&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;鸣谢&lt;/h1&gt;
&lt;p&gt;以下项目在 Newsroom 开发时提供了无可取代的帮助，特在此表达诚挚的谢意（排名不分先后）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;设计灵感和部分 CSS 代码来自：&lt;a href=&quot;//apple.com.cn&quot;&gt;Apple Inc.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;导航栏动画来自：&lt;a href=&quot;https://nero978.top/&quot;&gt;Nero978&lt;/a&gt; | &lt;a href=&quot;https://github.com/Miracle-Town/mt-web&quot;&gt;Miracal Town/mt-web&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hexo 主题启蒙，提供了部分样式和脚本代码：&lt;a href=&quot;https://github.com/fluid-dev/hexo-theme-fluid&quot;&gt;Fluid 主题&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;默认随机封面图来自我使用的第一个博客主题：&lt;a href=&quot;https://github.com/BigCoke233/miracles&quot;&gt;BigCoke233/Miracles&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;下载地址&lt;/h1&gt;
&lt;p&gt;&amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot;&amp;gt;
警告：&amp;lt;b&amp;gt;News「新闻中心」&amp;lt;/b&amp;gt;因个人原因无限期停止开发。
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://github.com/ImJingLan/hexo-theme-news&quot; target=&quot;_blank&quot; type=&quot;button&quot; class=&quot;btn btn-outline-dark btn-lg w-100&quot; &amp;gt;&amp;lt;i class=&quot;bi bi-github&quot;&amp;gt;&amp;lt;/i&amp;gt;
ImJingLan/hexo-theme-news&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>使用 GitHub Actions 部署 Hexo</title><link>https://fuwari.vercel.app/2024/github-action-depoly-hexo/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/github-action-depoly-hexo/</guid><pubDate>Mon, 15 Jan 2024 17:53:21 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;最近把博客从 Vercel 迁移到了 Netlify 了，这两家都是 ServerLess 部署平台，属于完全的无痛迁移了。&lt;/p&gt;
&lt;p&gt;无论是 Vercel 还是 Netlify，都对于应用的部署时长有限制，但相对与 Vercel 免费的每月 6000 分钟来说，Netlify 的 300
分钟就略显寒酸了。但自从去年国庆我的网站挂在 Vercel 被墙外加最近 Vercel 访问不畅之后我就在研究 Netlify 了。&lt;/p&gt;
&lt;p&gt;因为直接上传 NPM 包到 Netlify 上部署相比上传静态的 HTML 页面更耗时间，而我最近学习了 Github Actions，Github Actions 提供了每月
3000 分钟的部署时长，因此决定使用 Github Actions 来构建静态页面，之后仅同步静态页面到 Netlify 就完成了。&lt;/p&gt;
&lt;h2&gt;教程&lt;/h2&gt;
&lt;p&gt;首先在仓库中新建一个 deploy 分支用于存放构建完成的静态页面。&lt;/p&gt;
&lt;p&gt;别忘了在 &lt;strong&gt;Setting - Actions - General - Workflow permissions&lt;/strong&gt; 中将权限设置为 &lt;code&gt;Read and write permissions&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在仓库主分支下的&lt;code&gt;.github/workflows/&lt;/code&gt;文件夹新建一个 yml 文件，名称随意，如&lt;code&gt;deploy.yml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;随后在 yml 文件下写入以下代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: 部署静态页面到 Deploy 分支

on:
  push:
    branches:
      - main
  #手动触发
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 获取源码
      - name: 迁出代码
        uses: actions/checkout@master

      - name: 安装node.js环境
        uses: actions/setup-node@master

      - name: 安装Hexo-cli 和 其他 node 环境
        run: |
          npm install hexo-cli -g
          npm install

      - name: 构建静态页面
        run: |
          npm run g

      - name: 你也可以在这里执行更多Linux命令
        run: |
          echo Example

      - name: 推送到 deploy 分支 # 部署
        uses: JamesIves/github-pages-deploy-action@v4.3.3
        with:
          branch: deploy # 部署后提交到的分支
          folder: public # 打包好的目录名称
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后 Push 到 Github 就好啦&lt;/p&gt;
&lt;p&gt;别忘了把 Netlify 中的链接仓库重新绑定到 deploy 分支噢&lt;/p&gt;
</content:encoded></item><item><title>我的PHP开发之路</title><link>https://fuwari.vercel.app/2024/my-way-to-php/</link><guid isPermaLink="true">https://fuwari.vercel.app/2024/my-way-to-php/</guid><pubDate>Wed, 10 Jan 2024 17:45:49 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;新年已至，自然少不了元旦 Party，今年是我们在高中的第一个元旦派对，当然要做一些不一样的。&lt;/p&gt;
&lt;p&gt;作为班上的网管，我做了一个在线的新年祝福页面，让同学们可以在上面填写自己的新年祝福，并在新年时随机分发到每个人的手中（账号上）。&lt;/p&gt;
&lt;p&gt;这一套站点拥有完善的登录、鉴权和还在开发（咕）中的后台管理面板和现代化的前台。&lt;/p&gt;
&lt;p&gt;如这篇文章的标题所示，这次开发的技术栈便是 MySQL 和 PHP。当然，我并不想在这里赘述该系统的开发过程，而是记录一下我的 PHP
开发 &amp;amp; 学习过程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;1.webp&quot; alt=&quot;新年祝福页面&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;初识 PHP&lt;/h2&gt;
&lt;p&gt;我的第一个 PHP 小程序至今还躺在我的 Gitee 仓库中（虽然现在已经不用 Gitee
了=V=），那是一个简单的文件上传程序。当时还是初中，作为网管（对的，我一直是网管），老师让我负责收集同学们的假期实践作业。改作业要求使用
Word 软件进行排版和上传。&lt;/p&gt;
&lt;p&gt;当时的我，刚刚有了一台虚拟主机，出于 QQ 接收文件可能会遗漏且不好统计的想法，我从网上复制&amp;amp;&amp;amp;修改了一段上传&amp;amp;保存文件的 PHP
代码，并上传到了虚拟主机上，当时这个程序使我收集的工作更加便捷，当然虚拟主机的龟速也引来不少同学的友好反馈（笑）。&lt;/p&gt;
&lt;p&gt;作为第一个 PHP 程序，大部分代码都是从网上 Copy &amp;amp; Paste 下来的。因为 PHP 的大部分语法和之前为 NOIP 学习的
C++十分相像，我对程序做了一点修改，添加了格式校验和提交检测功能。&lt;/p&gt;
&lt;p&gt;这便是我的 PHP 基础。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;2.webp&quot; alt=&quot;作业提交系统的Commit&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;你好, MySQL&lt;/h2&gt;
&lt;p&gt;在我早期的观念中，PHP 和数据库一定密不可分，只是当时偷懒外加没有需求，在作业收集网站后我就再也没有写过 PHP
代码了。而一个站点的出现，让我重拾 PHP 并完成了第一个大项目，那就是&lt;a href=&quot;https://zigzagk.top/OIerdictum/&quot;&gt;机房大佬语录&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;受到&lt;a href=&quot;https://hitokoto.cn/&quot;&gt;一言&lt;/a&gt; 和 &lt;a href=&quot;https://zigzagk.top/OIerdictum/&quot;&gt;机房大佬语录&lt;/a&gt;
的影响，我也想自己搭建一个所谓的“一句话站点”，但苦于没有找到合适的开源项目，于是我决定：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自己写！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;于是我通过&lt;a href=&quot;https://www.runoob.com/php/php-tutorial.html&quot;&gt;PHP 教程 | 菜鸟教程&lt;/a&gt;照猫画虎地学习了 MySQL
创建表，插入语句，更新语句等操作，经过几个月地努力，写出了一个还算像点样地随机语句程序
『一句』 &lt;a href=&quot;https://github.com/ImJingLan/Sentence&quot;&gt;ImJingLan/Sentence&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;3.webp&quot; alt=&quot;一句 Logo&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;感想&lt;/h2&gt;
&lt;p&gt;学习一种新技术主要来自于你对他的需求，只有有了需求，你才有往下学的动力。多看看开源社区，多看看别人的代码，多看文档，哪怕 Copy
Paste 呢？&lt;/p&gt;
&lt;p&gt;我的 PHP 代码风格主要受到 Sakura Panle 的影响，这种模块的思路贯彻在了我的所有站点中。&lt;/p&gt;
</content:encoded></item><item><title>Counter-Strike 2 : 未来已来，时不我待</title><link>https://fuwari.vercel.app/2023/hello-counter-strike-2/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/hello-counter-strike-2/</guid><pubDate>Thu, 28 Sep 2023 20:34:21 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Counter-Strike、Counter-Strike 2、CS:GO 以及它们各自的标识是 Valve Corporation 的商标和/或注册商标。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;北京时间 2023 年 9 月 28 日 凌晨 4:40 , &lt;strong&gt;Valve Corporation（V 社）&lt;strong&gt;发布了&lt;/strong&gt;反恐精英：全球攻势&lt;/strong&gt;（下称 CSGO）有史以来最大的更新&lt;/p&gt;
&lt;p&gt;全新的&lt;strong&gt;反恐精英 2&lt;/strong&gt;（下称为 CS2）覆盖了原先的 CSGO 页面，预示着内测 6 个月的 CS2 正式取代 CSGO，称为下一代反恐精英系列游戏&lt;/p&gt;
&lt;p&gt;与 反恐精英 1.6（CS1.6）、反恐精英:起源（CSS）、CSGO 之间的更新不同，本次更新中 V 社直接使用过 CS2 覆盖了原先 CSGO 的页面，这意味着玩家将无法同时游玩 CS2 与 CSGO。不过你依然可以通过游戏属性-&amp;gt;测试版-&amp;gt; &lt;strong&gt;csgo_demo_viewer - 1.38.7.9&lt;/strong&gt; 来启动 CSGO&lt;/p&gt;
&lt;p&gt;今天这篇文章，咱们不聊 CS2，而是聊聊我与 CS 的故事，权当一篇琐记吧&lt;/p&gt;
&lt;h1&gt;初识&lt;/h1&gt;
&lt;p&gt;我玩的第一款 FPS，就是 CS 了。那时候我 5 岁，我哥便带我玩 CSOL（虐我）。当时主要是打一些大灾变之类的生化模式。有一次，我哥问我知不知道 Steam，我还记得他还提了一嘴：“知不知道 CSGO？”那年，我 10 岁&lt;/p&gt;
&lt;p&gt;缘分总是很巧，第二年，2017 年，我忽然想起了这款游戏，便去网上搜索了一下。那时候，CSGO 国服刚刚开始内测。&lt;/p&gt;
&lt;p&gt;我大概是第二批国服内测玩家，在游玩了几天国服之后，我又花钱购买了国际服的优先（那时候 CSGO 还是一个付费游戏）。&lt;/p&gt;
&lt;p&gt;后来，我对于他的兴趣渐渐消失，逐渐的，他便成为我 Steam 库中静静的一员。&lt;/p&gt;
&lt;p&gt;直到初一。&lt;/p&gt;
&lt;h1&gt;重逢&lt;/h1&gt;
&lt;p&gt;小学，吃鸡的风潮席卷全球，大伙都在聊着绝地求生，CSGO 却默默无闻。&lt;/p&gt;
&lt;p&gt;初中，也尝试着和朋友一起玩 PUBG，有一日，他突然问我打不打 CSGO。&lt;/p&gt;
&lt;p&gt;一发不可收拾。&lt;/p&gt;
&lt;p&gt;我不知道自己打了多少局白银段的对局，也不知道自己起过多少次&lt;strong&gt;内格夫&lt;/strong&gt;和 &lt;strong&gt;PP-野牛&lt;/strong&gt;。但是从此之后，我再也没放下他。&lt;/p&gt;
&lt;p&gt;我买了人生中第一款皮肤。&lt;/p&gt;
&lt;p&gt;很早的时候，我曾经掉落过一把皮肤，但我天真的以为如果我装备了皮肤，他的磨损值会不断下降，直到完全磨损。因此 2019 年之前我从来没用过皮肤。&lt;/p&gt;
&lt;p&gt;从初一打到高二，虽然中途有短暂的退游，却依旧在电脑上保留着他，他成为了我和朋友交流的一大方式。我依旧记得段位机制更新后我升上黄金的感动；在 Nuke 打出 1V5 残局队友的赞美（&lt;a href=&quot;https://www.bilibili.com/video/BV1aM411i7Tw&quot;&gt;点我去看&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;我买过很多把刀，但都是比较普通的折叠刀。2023 年春节，我下定决心，花了 1980 元买了一把&lt;strong&gt;折叠刀 | 多普勒 （崭新出厂）[Phase 1]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;后来，又陆续地添置了印花集 UPS、沙漠之鹰和一个手套。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;The-Teenagers-First-Knife.jpg&quot; alt=&quot;&amp;quot;The Teenagers&apos; First Knife&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;明天 _ _ _ ，后天 _ _ _ ？&lt;/h1&gt;
&lt;p&gt;2023 年 3 月 23 日，V 社公布了基于起源二引擎打造的 CS2。&lt;/p&gt;
&lt;p&gt;你要问我，那一日我记忆犹新的，居然是皮肤交易市场。年初我 1980 买的刀，一夜之间涨到 4000 元（求购）。&lt;/p&gt;
&lt;p&gt;随后就是长时间地等待资格，实际上直到最后一次大规模发放资格时我才收到了邀请。&lt;/p&gt;
&lt;p&gt;游玩了一段时间的 CS2，感觉枪械手感、Sub-Tick 等的调教有待加强，不过谁还不是 1.6 遗老了呢？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;limitest.webp&quot; alt=&quot;CS2 Limit Test&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;永远怀念&lt;/h1&gt;
&lt;p&gt;或许我有些矫情，但我昨晚熬夜到 1 点，等着 CS2 的发布。但当我早上起来，看见库中的&lt;strong&gt;Counter-Strike : Global Offensive&lt;/strong&gt; 变成了 &lt;strong&gt;Counter-Strike 2&lt;/strong&gt;。看着 CSGO 国服发的&lt;a href=&quot;https://www.bilibili.com/video/BV1PC4y1o7So&quot;&gt;《这，就是反恐精英》&lt;/a&gt;，依旧感觉有些许伤感。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我们终会理解那些依旧在玩 1.6 的人&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;时代在进步，技术在发展。一款 11 年前的游戏终将被取代。11 年，不长，但是一个人的青春。11 年，有多少人在等着起源二的上线呢？11 年，后天也变成了今天。一眼之间，我们已迈入全新的战场。&lt;/p&gt;
&lt;p&gt;2018 年 10 月 4 日，一个不知名的小网站，上传了一篇名为&lt;a href=&quot;https://www.rushb.net/csgo-update-2018-10-4.html&quot;&gt;《CSGO 2018 年 10 月 4 日更新日志【人物重制】》&lt;/a&gt;的文章&lt;/p&gt;
&lt;p&gt;从此，这个网站就记录了 CSGO 的所有更新记录、地图彩蛋、选手配置、地图推荐，直到&lt;/p&gt;
&lt;p&gt;嗨，B 哥，今天 CS2 上线了，你在那边见到了吗？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;rip_rushb.webp&quot; alt=&quot;R.I.P. - RushB&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;完&lt;/h1&gt;
</content:encoded></item><item><title>写一篇博客吧</title><link>https://fuwari.vercel.app/2023/write-a-blog/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/write-a-blog/</guid><pubDate>Sat, 16 Sep 2023 17:33:04 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;你们这些孩子哪里是真为了写博客。&lt;/p&gt;
&lt;p&gt;你们只是想体会换新工具的愉快感觉，顺便体会一下否定掉旧工具，觉得自己特别的小欣喜。&lt;/p&gt;
&lt;p&gt;—— dboy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;开篇聊聊天&lt;/h1&gt;
&lt;p&gt;2018 年，可能是我捣鼓这些站点的起点，&lt;code&gt;imjinglan.cn&lt;/code&gt;这个域名，是我注册的第一个域名，也是我第一个博客的地址。&lt;/p&gt;
&lt;p&gt;正如我开头所引用的话一样，那是一个不断尝试的年级，Wordpress、Typecho 都试过，还用过更多的主题。重装了很多次站点。&lt;/p&gt;
&lt;p&gt;众多博客，却没有留下一点记忆，所写的文章如今早已没有了印象。&lt;/p&gt;
&lt;p&gt;自 2022 年 2 月 10 日，我使用 Hugo 搭建静态博客，再到 2023 年使用 Hexo 重构了现在的博客，已经过去了 583 天，该纪录保持至今&lt;/p&gt;
&lt;p&gt;今日突发奇想，写一篇文章，聊聊博客本身&lt;/p&gt;
&lt;h1&gt;保持写作&lt;/h1&gt;
&lt;p&gt;我是怎么保持写博客的习惯的？说实话，&lt;strong&gt;我也不知道&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我喜欢炫耀，和别人炫耀我的博客。尽管这样子引流屁用没有 QAQ。但这样做我就会记得我有个博客（这很重要！）&lt;/p&gt;
&lt;p&gt;其次，博客文章最重要的就是选题，自己的博客当然想写啥就写啥了。在学校的时候我喜欢拿着一个小笔记本在上面记着我的文章草稿，周末回家了直接照着打就好了&lt;/p&gt;
&lt;h1&gt;一些写作小习惯&lt;/h1&gt;
&lt;p&gt;在写博客中，我也养成了一些自认为比较好的书写习惯，分享给大家&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对于中文引号，我更加偏向于使用直角引号**「」『』**，这样在屏幕阅读中会更加易读&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;除了需要多张截图的技术文章，我基本坚持了每个一级标题末放一张图的习惯（如 &lt;a href=&quot;/2023/ipod-classic-review&quot;&gt;『iPod Classic 上手』&lt;/a&gt; 和 &lt;a href=&quot;/2023/YGR-Raft&quot;&gt;『Raft 木筏评测』&lt;/a&gt; ），这种方法使得行文阅读更加连续&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;结语&lt;/h1&gt;
&lt;p&gt;这个博客大概会一直写下去的吧。。。是吧。。&lt;/p&gt;
</content:encoded></item><item><title>iPod Classic 上手 : 优雅永不过时</title><link>https://fuwari.vercel.app/2023/ipod-classic-review/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/ipod-classic-review/</guid><pubDate>Thu, 14 Sep 2023 18:15:53 GMT</pubDate><content:encoded>&lt;h1&gt;引言&lt;/h1&gt;
&lt;p&gt;终于下定决心写这篇文章了, 截至文章截稿，iPod Classic 陪着我走完了艰难的初三时光。随着我进入高中，每日骑车上学，iPod Classic 也成为了我背包的必备单品。&lt;/p&gt;
&lt;p&gt;回想起来，似乎我从没有为他写过一篇评测（或许以前有过，但当他不存在吧）&lt;/p&gt;
&lt;p&gt;虽然 iPod Classic 可以通过刷 Rockbox 达到原系统做不到的效果，但本文更想偏重于原版系统的体验&lt;/p&gt;
&lt;h1&gt;精心设计，浑然天成&lt;/h1&gt;
&lt;p&gt;一块金属正面，一块亮面不锈钢背板，中间镶嵌着 Click Wheel 和一块 2.5 英寸的 LCD 彩色显示屏，这便是我手上的 iPod Classic&lt;/p&gt;
&lt;p&gt;我选择的是黑色的版本，沉稳，耐用是我对它的感受&lt;/p&gt;
&lt;p&gt;尽管乔布斯说：「每一台 iPod 的划痕都是独一无二的」，我还是给他的背壳贴上了一层保护膜，以及一块早已被磨花的亚克力外壳（还好不是不锈钢边框）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;IMG_0008.jpg&quot; alt=&quot;iPod Classic 背板，贴上了一层保护膜&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;你好, Click Wheel !&lt;/h1&gt;
&lt;p&gt;或许你已经久仰大名，但当你第一次上手时仍会感到这项设计的精妙。一转一点，刷新了人们对于音乐的理解。&lt;/p&gt;
&lt;p&gt;在普通 MP3 只有几 MB 存储容量时，iPod 拥有惊人的 5GB 容量，而我手上的 iPod Classic 经过改装竟然可以高达 160GB，足以装下你一生中所有的歌曲。&lt;/p&gt;
&lt;p&gt;那么传统的按键式列表操作便不再合适。于是圆盘 Click Wheel 便诞生了，可以说 iPod 的大容量成就了 Click Wheel，Click Wheel 也成就了 iPod&lt;/p&gt;
&lt;p&gt;如果你需要切换项目，只需要将手指放在圆环上，轻轻转动，便可以看见项目的切换，配合着 iPod Classic 模拟的音效，好似实体的段落感的感觉是一种全新的操作体验&lt;/p&gt;
&lt;p&gt;搭配 Cover Flow，你还可以实现类似于在多张专辑中挑选心仪唱片的感觉&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;IMG_0001.jpg&quot; alt=&quot;Cover Flow&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;需要适应的音频管理方式&lt;/h1&gt;
&lt;p&gt;让我们请出 iTunes!&lt;/p&gt;
&lt;p&gt;苹果将把音乐导入 iPod 的行为称为 「同步」，你需要先将音乐拖进 iTunes 中后再同步才能将音乐导入到 iPod 中。同时现在许多主流格式居然不支持，如 FLAC&lt;/p&gt;
&lt;p&gt;我一般会使用 foobar2000 将所有格式转换为 &lt;a href=&quot;https://macosforge.github.io/alac/&quot;&gt;Apple Lossless Audio Codec (ALAC)&lt;/a&gt; 格式后导入&lt;/p&gt;
&lt;p&gt;不同于网络上他人对这个特性的吐槽，我个人还是比较喜欢使用 iTunes 的，他使得我整理专辑更加高效了&lt;/p&gt;
&lt;p&gt;需要注意的是，如果你是导入本地音频的话，更换计算机或者重装系统后在新设备上同步将会&lt;strong&gt;失去旧设备同步的所有歌曲！注意备份！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我一般是通过家庭存储服务器搭配 Syncthing 同步管理歌曲&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;IMG_0002.jpg&quot; alt=&quot;iTunes&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;戴上耳机，倾听她&lt;/h1&gt;
&lt;p&gt;作为一款数字音乐播放器，怎么能错过音乐？&lt;/p&gt;
&lt;p&gt;iPod Classic 的是一台简单易用的前端，也是捆绑的主力之一。在日常出行中，即使不用外置解码器也十分出色。最高 32Ω 的阻抗足以推动大部分耳机&lt;/p&gt;
&lt;p&gt;我手上的这台 iPod Classic 改装了固态硬盘，在快速读取音乐的同时塞进了更大的电池。&lt;/p&gt;
&lt;p&gt;我每日上下学骑车时都会使用它，如果注意不使用时暂停播放（当你拔出耳机时会自动暂停，但我有时会误触），可以使用两个月之久。连续播放时长估计在 30 小时左右&lt;/p&gt;
&lt;p&gt;纯粹的听歌体验，没有续航焦虑，这些都使得 iPod 成为了我外出时的必备单品&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;IMG_0006.jpg&quot; alt=&quot;iPod Classic&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;结语&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;「如果计算机成为一个中心，还可以使便携式设备变得更简单。」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2000 年左右，乔布斯着手用苹果电脑打入音乐市场，推出了 iTunes 音乐软件，所有苹果电脑用户可以免费使用该软件，而这仅仅是推动数字中枢战略的第一步。&lt;/p&gt;
&lt;p&gt;下一步便是制造一个便携式音乐播放器。乔布斯意识到，苹果可以设计一个和 iTunes 配套的设备，让收听音乐变得更加简单。由计算机来完成复杂的任务，而音乐播放器的功能要简单。iPod 因此而诞生了。&lt;/p&gt;
&lt;p&gt;iPod 代表了苹果品牌的核心价值——诗意与工程紧密相连，艺术、创意和科技完美结合，设计风格既醒目又简洁。&lt;/p&gt;
&lt;p&gt;如果你问我：「&lt;strong&gt;2023 年了,iPod Classic 还值得买吗？&lt;/strong&gt;」&lt;/p&gt;
&lt;p&gt;我会回答：「&lt;strong&gt;如果你想，买下他吧，别忘了享受音乐&lt;/strong&gt;」&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;banner.png&quot; alt=&quot;iPod Classic&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;写于 2023 年 9 月 14 日 , 柳州&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>将 Fluid 主页封面修改为随机图片</title><link>https://fuwari.vercel.app/2023/fluid-random-index-img/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/fluid-random-index-img/</guid><pubDate>Tue, 12 Sep 2023 12:27:51 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;p&gt;Fluid 是一款很好用的 Hexo 主题，但他默认的主页封面并不能做到多张图片随机。于是我决定魔改他&lt;/p&gt;
&lt;h1&gt;原理&lt;/h1&gt;
&lt;p&gt;通过查看 &lt;code&gt;layout/index.ejs&lt;/code&gt; 文件可以看出 index_img 的定义为&lt;code&gt;index_img = post.cover || theme.post.default_cover&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我们只需要将 &lt;code&gt;theme.post.default_cover&lt;/code&gt; 改为数字外加随机数取出就好了&lt;/p&gt;
&lt;p&gt;而 ejs 支持 js 的 Math.random 语法，稍微学习 Javascript 就可以修改了&lt;/p&gt;
&lt;h1&gt;修改&lt;/h1&gt;
&lt;p&gt;进入 &lt;code&gt;主题文件夹/layout&lt;/code&gt;，打开&lt;code&gt;index.ejs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;搜索 &lt;code&gt;theme.post.default_cover&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将其修改成 &lt;code&gt;theme.post.default_cover[Math.floor(Math.random() * (theme.post.default_cover.length))]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;修改 Fluid 的配置文件 &lt;strong&gt;_config.fluid.yml&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将 &lt;strong&gt;default_index_img&lt;/strong&gt; 配置项修改为这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;default_index_img:
  - 此处为图片链接
  - 此处为图片链接
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新部署就好啦！&lt;/p&gt;
&lt;h1&gt;后记&lt;/h1&gt;
&lt;p&gt;我同时也修改了 Fluid 的封面命名规则，这样子只需要设置一次封面属性就可以同时应用到 index_img 和 banner_img 啦&lt;/p&gt;
&lt;p&gt;&lt;s&gt;我也将修改后的主题改名为 Farbic 开源在 Github 仓库中 &lt;strong&gt;Rabbit-Clan/hexo-theme-farbic&lt;/strong&gt;，欢迎 Star + Fork&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;Farbic 主题还重新修改了部分页面的配置方式，使配置方式更加直观&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;只是还没来得及编写文档，可能安装后会出现无法使用的情况&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;2023.09.14 : 由于技术原因，暂时不单独提供修改的主题，您可以前往本博客仓库自行克隆后提取&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;修改后的主题仍遵循 GPL 协议公开。&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Raft 木筏 - 你也想在海上捡垃圾吗</title><link>https://fuwari.vercel.app/2023/ygr-raft/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/ygr-raft/</guid><pubDate>Sun, 10 Sep 2023 12:33:46 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;cover.webp&quot; alt=&quot;《Raft木筏》&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;有趣的物资收集系统&lt;/h1&gt;
&lt;p&gt;在木筏中，玩家出生时将会获得一个塑料勾。通过塑料勾你可以勾取到漂在洋面的材料：木板、塑料、棕榈叶等等，海面上还会刷新出包含隐藏物资的木桶，里面包含着较为丰富的奖励（当然这也取决于你是否幸运）&lt;/p&gt;
&lt;p&gt;塑料勾和金属勾同时也是在海底挖掘矿石、石头的工具&lt;/p&gt;
&lt;p&gt;当你较为深入地游玩 Raft 后，你会学习如何制作 &lt;strong&gt;收集网&lt;/strong&gt; 。收集网将会帮你自动拾取网下的物品，你只需要定期清理即可&lt;/p&gt;
&lt;p&gt;于此同时，游戏中还存在着鱼竿、斧头、铲子等工具，你可以使用它们来钓鱼（也有可能是臭皮靴），砍伐岛上的树木、挖取污泥等&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;screenshot_1.jpg&quot; alt=&quot;收集网&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;基于地点转换的剧情&lt;/h1&gt;
&lt;p&gt;当你在海上茫无目的的漂荡时，你可能会在木桶中获得 &lt;strong&gt;接收器&lt;/strong&gt; 和 &lt;strong&gt;天线&lt;/strong&gt; 的蓝图，当你按照要求连接好天线（这个过程是自动的）后，你的接收器上将会出现一个信号点，这便是你所要探索的第一个剧情区域&lt;/p&gt;
&lt;p&gt;当你探索玩一个区域后，你将会获得一个写着一串四位数字的纸条，按照纸条上的数字调整接收器，便可以根据信号指引到下一个区域&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;screenshot_2.jpg&quot; alt=&quot;接收器&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;丰富的探索元素&lt;/h1&gt;
&lt;p&gt;每一个剧情区域都有丰富的探索元素。在探索路上，你将会见到很多字条，捡起字条后会自动播放相关语音。通过这些语音，你或许可以理解关于剧情的一些细节&lt;/p&gt;
&lt;p&gt;除此之外，信号塔后的剧情区域都十分巨大，无论是大篷车镇还是唐加罗瓦号，在其中探索将会花费你大量的时间，注意！&lt;/p&gt;
&lt;p&gt;在航行的过程中，接收器上也会出现一些蓝色的小点，这些便是大型岛屿上的交易站，在其中你可以通过交易获得高级鱼饵及一些稀有物品！&lt;/p&gt;
&lt;p&gt;交易站中没有 NPC，但你可以让你的朋友钻入其中并截图，这很有趣！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;screenshot_10.jpg&quot; alt=&quot;交易站&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;强大的建筑系统&lt;/h1&gt;
&lt;p&gt;你可以随心所欲地修建你的木筏！你可以把它改造成一艘巨轮，也可以天马行空地搭建出一个只有 4 块底板的天空之城。&lt;/p&gt;
&lt;p&gt;木筏给玩家提供了丰富的材质，如木板、高级木板（这个消耗材料更多）、棕榈叶。同时，你还可以使用刷子给自己的墙体上漆（颜料需要通过花朵与染料厂获取）&lt;/p&gt;
&lt;p&gt;各种自动化的设备（你后期甚至可以建造全自动净化器）使你的木筏化身全能海上城市。你还可以在船上搭建自己的种植园&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;screenshot_4.jpg&quot; alt=&quot;我们的木筏&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;缺点&lt;/h1&gt;
&lt;p&gt;木筏是一款好游戏，他也非常适合朋友间进行联机游玩，但我们认为他还是存在一些缺点&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;存在穿模、卡入地底等 BUG。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有一次游玩时，在乘坐唐加罗瓦电梯时我们突然掉入电梯下方空间，无法操作，只能通过生命值减少来重生，同时我们也丧失了我们大部分物资&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;部分物件摆放有待加强&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们还是期待如管道可穿墙（虽然这个可以通过 BUG 做到，但十分不优雅）、引擎的注油口可以镜像对称(再见了，烦人的走线)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;种植物种子掉落概率低&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在小概率情况下，收获果实才会掉落种子（至少我们掉落的种子永远不够下一次种植），或许这样并不合理？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;光照渲染&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在天黑与天亮的转换过程中，游戏中的灯光可能会&lt;strong&gt;短暂失效&lt;/strong&gt;，并且自然环境对于全封闭室内灯光居然存在影响！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;总结&lt;/h1&gt;
&lt;p&gt;木筏的创意是无与伦比的，在海上收集物资的想法也很酷！探索元素、BOSS 战斗等使得游戏在休闲中仍然保持着一丝肾上腺素飙升的快感&lt;/p&gt;
&lt;p&gt;诚然，开发商&lt;strong&gt;Redbeet Interactive&lt;/strong&gt;实力距离超一线大厂还是有所差距，我们在游玩时还是遇到了部分痛点，不过这些都可以算是不痛不痒的特性吧&lt;/p&gt;
&lt;p&gt;如果你想和朋友一同体验海上捡垃圾的快乐，享受建造的乐趣，一同搭建自己的木筏的话，&lt;strong&gt;《Raft 木筏》&lt;/strong&gt; 值得一试&lt;/p&gt;
&lt;h1&gt;YGR 评分&lt;/h1&gt;
&lt;p&gt;《Raft 木筏》 YGR 评分为 &lt;strong&gt;7.2&lt;/strong&gt; 分&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;Rating.png&quot; alt=&quot;Rating&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Yurik’s Game Rating 简介</title><link>https://fuwari.vercel.app/2023/ygm-introduce/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/ygm-introduce/</guid><pubDate>Sat, 09 Sep 2023 13:22:49 GMT</pubDate><content:encoded>&lt;h1&gt;什么是 YGR&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Yurik&apos;s Game Rating&lt;/strong&gt; 是由 景蓝 Yurik 发起的游戏评分测评栏目&lt;/p&gt;
&lt;p&gt;在 &lt;strong&gt;YGR&lt;/strong&gt; 中，我们将会对我们玩过的进行评测并通过特定的标准进行评分&lt;/p&gt;
&lt;p&gt;我们将通过普通玩家视角带你了解这款游戏&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评分仅代表 &lt;strong&gt;景蓝 Yurik&lt;/strong&gt; 及 参与评测的成员 的观点&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;为什么创办 &lt;strong&gt;Yurik&apos;s Game Rating&lt;/strong&gt; ?&lt;/h1&gt;
&lt;p&gt;诚然，已经有类似于 IGN | GS | 游民评测 等知名打牌的测评团队，但我任希望在自己的博客中开一个评测栏目。由此表达我游玩该游戏的感受与思考&lt;/p&gt;
&lt;h1&gt;怎么访问 &lt;strong&gt;Yurik&apos;s Game Rating&lt;/strong&gt; ?&lt;/h1&gt;
&lt;p&gt;你可以访问 &lt;a href=&quot;/categories/Yurik-s-Game-Rating/&quot;&gt;&lt;strong&gt;分类-Yurik&apos;s Game Rating&lt;/strong&gt;&lt;/a&gt; 来获取关于&lt;strong&gt;Yurik&apos;s Game Rating&lt;/strong&gt;的有关内容&lt;/p&gt;
</content:encoded></item><item><title>记于 17 岁生日前</title><link>https://fuwari.vercel.app/2023/before-17/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/before-17/</guid><pubDate>Sat, 04 Mar 2023 02:25:37 GMT</pubDate><content:encoded>&lt;p&gt;记于 17 岁生日前。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这世界有那么个人 活在我飞扬的青春&lt;/p&gt;
&lt;p&gt;在泪水里浸湿过的长吻&lt;/p&gt;
&lt;p&gt;常让我想啊想出神。&lt;/p&gt;
&lt;p&gt;—— 这世界有那么多人&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;琐记，为了保持行文的统一，我还是称它为杂记吧&lt;/p&gt;
&lt;p&gt;有很多东西，在记忆中，用空间发出感到矫情，憋在心里略显可惜，写一篇博客，在这片互联网孤岛中保留痕迹······&lt;/p&gt;
&lt;p&gt;行文混乱，只供一笑尔&lt;/p&gt;
&lt;h1&gt;笔&lt;/h1&gt;
&lt;p&gt;第一个故事，要从笔开始 我不是一个文具控，甚至在初中（准确来说是初三）前对文具一无所知。对笔的态度更是能写就行&lt;/p&gt;
&lt;p&gt;一支按动中性笔，晨光的 AGPH8004，.38mm 的 ST 笔尖，是我那时最喜欢的一支.38mm 笔，来自我的同桌，这大概是我第一次对笔有深入的认识吧。虽然后面都没有找到我心心念念的 ST 笔尖的笔了 OWO。&lt;/p&gt;
&lt;p&gt;后来换同桌后又向新同桌&lt;s&gt;借用&lt;/s&gt;买了一支 Pilot 的 Juice 黑色，喜欢上了日产笔尖在顺滑与阻尼之间的平衡。&lt;s&gt;就是太贵了&lt;/s&gt;上高中前都没在用了。&lt;/p&gt;
&lt;p&gt;上了高中后，手头富裕了（&lt;s&gt;家里给钱了&lt;/s&gt;），便买了一些牌子的笔，有百乐的 Juice, Juice Up,斑马的 SARASA，KACO 的 ROCKET,现在还是使用 JUICE UP 作为主力笔，因为 ST 笔尖吧（&lt;/p&gt;
&lt;p&gt;为什么想要写这么一段，可能是对老友的思念，对时光的感慨。这真的是令人怀念过去的一年。&lt;/p&gt;
</content:encoded></item><item><title>使用 Vercel 托管静态网页</title><link>https://fuwari.vercel.app/2023/vercel-introduction/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/vercel-introduction/</guid><pubDate>Mon, 23 Jan 2023 02:25:37 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;p&gt;Vercel 是一个前端页面托管服务网站，用户可以在上面托管部署多个前端框架的项目&lt;/p&gt;
&lt;p&gt;当然，Vercel 也可以直接托管 Html 静态站点，并且 Vercel 的访问速度优于 Github Pages&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;speed-compair.png&quot; alt=&quot;速度对比&quot; /&gt;&lt;/p&gt;
&lt;p&gt;写这篇文章的想法来源于两个，一是之前发布的 Hugo 博客部署有一半烂尾了（懒.jpg）, 还有一点就是 Norphin 的博客在他自己自定义后使用了一张 3.04Mb 左右的背景图片，由于他使用 frp 服务+香港节点建站，使得整张图片我加载了大约 10s。于是决定教教他怎么使用 vercel 来规避一些流量损耗。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;BTW: 他的背景图是 4K 的，其实一般来说 1080p 到 2k 就差不多了，不必要上传那么大的图片的说...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;注册 Vercel&lt;/h1&gt;
&lt;p&gt;Vercel 的注册过程很简单，你可以直接使用自己的 GitHub、GitLab、BitBucket 账户直接登录，在本文中就不再过多赘述&lt;/p&gt;
&lt;h1&gt;使用 Vercel&lt;/h1&gt;
&lt;p&gt;首先在 Github 或者 GitLab 账户（下文简称&lt;strong&gt;你的账户&lt;/strong&gt;）中新建一个 Git 仓库，随后将自己的静态文件 Git 提交至仓库内&lt;/p&gt;
&lt;p&gt;接着在 Vercel 中点击 &lt;strong&gt;Add New..&lt;/strong&gt;，或者访问&lt;a href=&quot;https://vercel.com/new&quot;&gt;这个网址&lt;/a&gt;。连接你的你的账户，选择先前新建的仓库，点击 Import&lt;/p&gt;
&lt;p&gt;设置你的&lt;strong&gt;Project Name&lt;/strong&gt;, 如果你单纯的想要托管 Html 文档和静态资源的话 框架预设(Framework Preset)就选 &lt;strong&gt;Other&lt;/strong&gt; 就好了&lt;/p&gt;
&lt;p&gt;点击 部署(Deploy) 后稍等片刻, 你的项目就部署完成&lt;/p&gt;
&lt;h1&gt;绑定自定义域名&lt;/h1&gt;
&lt;p&gt;Vercel 会在部署项目时提供一个 &lt;strong&gt;.vercel.app&lt;/strong&gt; 结尾的二级域名，但由于某些特殊原因，vercel.app 域名可能会无法访问，这时候你就需要一个自己的域名（域名注册方法自行使用搜索引擎搜索）&lt;/p&gt;
&lt;p&gt;在&lt;a href=&quot;https://vercel.com/dashboard&quot;&gt;Dashboard&lt;/a&gt;中点击进入你刚刚部署的项目，点击上方的 Setting 进入设置页面，在左侧边栏进入&lt;strong&gt;Domains(域名)&lt;strong&gt;页面，在输入框中输入你想要的域名, 点击&lt;/strong&gt;Add&lt;/strong&gt;后按照提示在 DNS 中设置记录，返回域名管理页面点击**Refresh(刷新)**使其检测记录是否生效并注册 SSL 证书即可。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;值得注意的是，如果你添加的是一个 www 或者根域名，如 www.yurik.cafe 或者 yurik.cafe，Vercel 会跳出提示询问你是选择将 www 域名重定向至根域名还是根域名重定向至 www 域名，抑或是单纯添加你输入的域名，你可以根据自身情况选择。&lt;/p&gt;
&lt;p&gt;Vercel 推荐你将 www 域名重定向至根域名&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;访问&lt;/h1&gt;
&lt;p&gt;按照&lt;strong&gt;域名/路径/文件名&lt;/strong&gt;访问即可&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vercel 会自动为域名注册一个免费的 SSL 证书，所以你可以使用 https 访问&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>树莓派 4B 烧录 CentOS 镜像并安装宝塔面板</title><link>https://fuwari.vercel.app/2023/raspberry-pi-install-centos/</link><guid isPermaLink="true">https://fuwari.vercel.app/2023/raspberry-pi-install-centos/</guid><pubDate>Thu, 19 Jan 2023 02:25:37 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;p&gt;很古早的时候我买了一台 树莓派 4B 4GB 版本（怀念当时 4GB 版本 500 块的日子）&lt;/p&gt;
&lt;p&gt;由于 Cortex-A72 处理器，树莓派 4B 的性能其实很薄弱，当时我也只是勉强用它跑一跑 QQ 机器人和网站服务器。（宝塔跑 Mariadb 安装 CPU 占用率都能 100%）随后用旧电脑刷服务器后树莓派就闲置了。&lt;/p&gt;
&lt;p&gt;最近有朋友想尝试在家里搭建个人网站，我就把树莓派借给了他，但是尝试了很多个 Linux 发行版（Debian、Ubuntu）后宝塔+LNMP 环境还是无法安装成功，不是宝塔无法运行就是 Mysql 无法安装。&lt;/p&gt;
&lt;p&gt;在查阅了互联网资料后，发现我用的最多的 Centos 也存在 Arm 版本，在使用这个发行版后安装宝塔和 LNMP 环境也变得顺利了，于是打算写一篇博客记录一下安装过程&lt;/p&gt;
&lt;h1&gt;准备工作&lt;/h1&gt;
&lt;p&gt;需要准备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一台接入内网树莓派 4B&lt;/li&gt;
&lt;li&gt;至少 16GB 的内存卡 + 读卡器 (USB3.0 最佳)&lt;/li&gt;
&lt;li&gt;一台电脑&lt;/li&gt;
&lt;li&gt;系统镜像&lt;/li&gt;
&lt;li&gt;Raspberry Pi Imager (可前往 &lt;a href=&quot;//www.raspberrypi.com/software/&quot;&gt;https://www.raspberrypi.com/software/&lt;/a&gt; 下载)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;烧录镜像&lt;/h1&gt;
&lt;p&gt;其实 CentOS 7 为树莓派提供了专门的系统镜像，在&lt;a href=&quot;https://www.centos.org/download/&quot;&gt;CentOS - Download&lt;/a&gt;中给 Arm 架构的处理器提供了 &lt;a href=&quot;//isoredirect.centos.org/altarch/7/isos/aarch64/&quot;&gt;ARM64(aarch64)&lt;/a&gt; 和 &lt;a href=&quot;//isoredirect.centos.org/altarch/7/isos/armhfp/&quot;&gt;ARM32(armhfp)&lt;/a&gt; ，因为我的树莓派 4B 是 4GB 版本的，所以就选择了 ARM64 的版本&lt;/p&gt;
&lt;p&gt;你可以在对应架构的下载界面中选择官方推荐的镜像下载地址，国内用户可以前往&lt;a href=&quot;http://mirror.nju.edu.cn/centos-altarch/7.9.2009/isos/aarch64/images&quot;&gt;NJU Mirror&lt;/a&gt;、&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7.9.2009/isos/aarch64/images/&quot;&gt;清华大学开源软件镜像站&lt;/a&gt; 或 &lt;a href=&quot;https://mirrors.bfsu.edu.cn/centos-altarch/7.9.2009/isos/aarch64/images/&quot;&gt;北京外国语大学开源软件镜像站&lt;/a&gt; 下载&lt;/p&gt;
&lt;p&gt;下载文件名带 &lt;code&gt;RaspberryPI&lt;/code&gt; 的镜像&lt;/p&gt;
&lt;p&gt;下载完毕后使用树莓派官方的烧录工具 Raspberry Pi Imager 烧录&lt;/p&gt;
&lt;p&gt;插入读卡器，启动 Raspberry Pi Imager&lt;/p&gt;
&lt;p&gt;选择操作系统-&amp;gt;使用自定义镜像，选择刚才下载好的 CentOS 镜像，再选择要烧录的内存卡，点击&lt;strong&gt;烧录&lt;/strong&gt;按钮即可开始烧录&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;若内存卡中已烧录其它系统，请擦除一遍后在进行烧录&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意 1&lt;/strong&gt;：烧录后内存卡中原存储文件将&lt;strong&gt;永久&lt;/strong&gt;丢失，请及时备份！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意 2&lt;/strong&gt;：烧录无需使用 Imager 的高级设置，若设置永久设置请清空后烧录&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;配置系统&lt;/h1&gt;
&lt;p&gt;等待烧录完成后即可取出内存卡插入树莓派内，插上电源与网线即可启动&lt;/p&gt;
&lt;p&gt;使用 ssh 登录树莓派，默认用户名为&lt;code&gt;root&lt;/code&gt;， 初始密码为&lt;code&gt;centos&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ssh 连接命令: &lt;code&gt;ssh 用户名@主机IP&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;登录后可使用&lt;code&gt;passwd&lt;/code&gt;修改密码，请牢记修改后密码&lt;/p&gt;
&lt;p&gt;若不清楚树莓派 IP 可进入路由器后台或使用&lt;a href=&quot;https://www.advanced-ip-scanner.com/&quot;&gt;Advanced IP Scanner&lt;/a&gt;扫描&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;进入系统后输入&lt;code&gt;df -h&lt;/code&gt;查看各分区大小&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;rootfs-expand&lt;/code&gt;拓展系统空间&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;警告&lt;/strong&gt;：请务必拓展系统空间，否则可能导致空间过下使得宝塔安装失败&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;新系统启动后推荐将软件源改为国内镜像，具体请参考镜像站帮助文档，如&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/help/centos-altarch/&quot;&gt;清华大学镜像站&lt;/a&gt;可运行以下命令一键换源&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sed -e &apos;s|^mirrorlist=|#mirrorlist=|g&apos; \
         -e &apos;s|^#baseurl=http://mirror.centos.org/altarch/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/|g&apos; \
         -e &apos;s|^#baseurl=http://mirror.centos.org/$contentdir/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-altarch/|g&apos; \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，更新软件包缓存 &lt;code&gt;sudo yum makecache&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;你也可以将系统语言设置为中文，设置方式如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查看当前系统语言包 &lt;code&gt;locale&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;查看所有系统语言包 &lt;code&gt;locale -a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;检查是否存在 &lt;code&gt;zh_CN&lt;/code&gt; 开头的语言包&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;nano /etc/locale.conf&lt;/code&gt; 编辑 &lt;code&gt;/etc/locale.conf&lt;/code&gt; 文件，将其中的&lt;strong&gt;LANG&lt;/strong&gt;值改为&lt;code&gt;zh_CN.UTF-8&lt;/code&gt;（若第三步中未找到&lt;code&gt;zh_CN.UTF-8&lt;/code&gt;，可用其他&lt;code&gt;zh_CN&lt;/code&gt;开头的语言包替换）&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;reboot&lt;/code&gt;命令重启系统让修改生效&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;修改语言为中文后部分软件&lt;strong&gt;可能存在未知错误&lt;/strong&gt;，若错误发生请按照第四步将&lt;strong&gt;LANG&lt;/strong&gt;值改为&lt;code&gt;en_US.UTF-8&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;安装宝塔面板&lt;/h1&gt;
&lt;p&gt;参考&lt;a href=&quot;https://www.bt.cn/new/download.html&quot;&gt;宝塔官网-下载&lt;/a&gt;使用 CentOS 安装脚本安装&lt;/p&gt;
&lt;p&gt;&lt;code&gt;yum install -y wget &amp;amp;&amp;amp; wget -O install.sh https://download.bt.cn/install/install_6.0.sh &amp;amp;&amp;amp; sh install.sh&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;请删除命令末尾 9 位字符串后运行命令&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;警告&lt;/strong&gt;: 请在纯净环境中安装宝塔面板，若你先前已安装其他 LNMP/LAMP 运行环境或先前宝塔面板安装失败请参考&lt;strong&gt;一、烧录镜像&lt;/strong&gt;擦除内存卡并重新烧录系统后安装&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;稍等一段时间后宝塔面板将安装完成&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./console.png&quot; alt=&quot;BT-Install-Done&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>在 Linux 上搭建 MC 服务器（一）</title><link>https://fuwari.vercel.app/2022/minecraft-server-on-linux-1/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/minecraft-server-on-linux-1/</guid><pubDate>Wed, 14 Dec 2022 02:25:37 GMT</pubDate><content:encoded>&lt;p&gt;自从有了一台独立服务器后，可以玩的东西就多了&lt;/p&gt;
&lt;p&gt;于是决定开一个我的世界 Java 服务器&lt;/p&gt;
&lt;p&gt;写一篇文章记录一下&lt;/p&gt;
&lt;h1&gt;安装运行环境&lt;/h1&gt;
&lt;p&gt;Minecraft Java 版的服务器运行环境非常单纯，只需要一个 Java 就行&lt;/p&gt;
&lt;p&gt;由于我想开一个 1.16.5 的服务器，所以 Java 版本选择了 Java 17&lt;/p&gt;
&lt;p&gt;安装过程参考的这篇文章《&lt;a href=&quot;https://www.cnblogs.com/chaosmoor/p/15897693.html&quot;&gt;Linux 安装 Java 17 - ChaosMoor&lt;/a&gt;》&lt;/p&gt;
&lt;h1&gt;下载服务端&lt;/h1&gt;
&lt;p&gt;Minecraft 服务端有很多种，例如原版香草端(Vanilla)、Paper、Bukkit 等&lt;/p&gt;
&lt;p&gt;由于我希望保留原版的红石特性，所以选择了原版服务端&lt;/p&gt;
&lt;p&gt;对于最新版本的 Minecraft 服务器，可以前往&lt;a href=&quot;https://www.minecraft.net/download/server&quot;&gt;Minecraft.net&lt;/a&gt;下载 jar 文件&lt;/p&gt;
&lt;p&gt;如果你想获取特定版本的服务端文件，可以访问&lt;a href=&quot;https://minecraft.fandom.com/wiki/Minecraft_Wiki&quot;&gt;Minecraft Wiki&lt;/a&gt;搜索对应版本页面&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;wiki.png&quot; alt=&quot;1.16.5 - WIKI&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ Wiki 界面&lt;/p&gt;
&lt;p&gt;Download(下载) -&amp;gt; Server(服务端)下载服务端&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;span style=&quot;color:red !important&quot;&amp;gt;&amp;lt;b&amp;gt;注意，不开玩笑！&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;：千万不要误点括号后的(.json)文件，或错选 Obfuscation maps(混淆映射表)中的 Server(服务器)选项&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;运行服务器&lt;/h1&gt;
&lt;p&gt;进入终端&lt;/p&gt;
&lt;p&gt;在服务器上新建一个文件夹存放服务端文件&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mkdir &amp;lt;文件夹名称&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;进入文件夹&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd &amp;lt;刚才的文件夹名称&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将下载好的服务端文件上传至该文件夹&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;winscp-upload.png&quot; alt=&quot;WinSCP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ 使用 WinSCP 上传&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我在这里将服务端命名为 server.jar&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;修改文件权限&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chmod 744 &amp;lt;服务端文件名&amp;gt;.jar&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后运行服务器！&lt;/p&gt;
&lt;p&gt;&lt;code&gt;java -Xmx1024M -Xms1024M -jar &amp;lt;服务端文件名&amp;gt;.jar nogui&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;waring-1.png&quot; alt=&quot;Waring-1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ 终端报错了&lt;/p&gt;
&lt;p&gt;怎么回事，闪退啦?&lt;/p&gt;
&lt;p&gt;查了下翻译软件，发现是要你同意 Eula 文件&lt;/p&gt;
&lt;p&gt;做法很简单&lt;/p&gt;
&lt;p&gt;用文本编辑器将 eula.txt 中最后一行&lt;code&gt;eula=false&lt;/code&gt;修改为&lt;code&gt;eula=true&lt;/code&gt;再次运行即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;eula-true.png&quot; alt=&quot;Accept EULA&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ EULA.TXT 修改后&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;span style=&quot;color:green !important&quot;&amp;gt;&amp;lt;b&amp;gt;记住这点更好&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;：当你将 eula 改为&lt;strong&gt;true&lt;/strong&gt;后，即代表你同意了《&lt;a href=&quot;https://account.mojang.com/documents/minecraft_eula&quot;&gt;MINECRAFT 最终用户许可协议&lt;/a&gt;》, 因此你最好详细阅读一下&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;服务器配置&lt;/h1&gt;
&lt;p&gt;无论是什么客户端，&lt;strong&gt;server.properties&lt;/strong&gt;是必须的配置文件，当然，在第一次运行服务端时会自动生成，文件内容 + 必要注释 请查看&lt;a href=&quot;https://wiki.yurik.cafe/Game/Minecraft/Server/server.properties/&quot;&gt;这个网址&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以对应自己实际情况修改&lt;/p&gt;
&lt;h1&gt;成功&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;done.png&quot; alt=&quot;Done&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ 游戏内的显示效果&lt;/p&gt;
&lt;h1&gt;管理服务器&lt;/h1&gt;
&lt;p&gt;你可以使用命令行来管理服务器，常用的命令有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;stop&lt;/code&gt;：停止服务器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt;：列出当前在线的玩家&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kick [player]&lt;/code&gt;：将玩家踢出服务器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ban [player]&lt;/code&gt;：封禁玩家&lt;/li&gt;
&lt;li&gt;&lt;code&gt;op [player]&lt;/code&gt;：将玩家提升为服务器管理员&lt;/li&gt;
&lt;li&gt;&lt;code&gt;whitelist add [player]&lt;/code&gt;：将玩家添加到白名单&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>获取B站视频封面</title><link>https://fuwari.vercel.app/2022/get-bilibili-album/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/get-bilibili-album/</guid><pubDate>Sun, 23 Oct 2022 02:25:37 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;p&gt;最近重装了电脑，然后电脑上整理的 iTunes 资料库全没了。&lt;s&gt;草&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;在整理的时候发现有一些歌曲是直接从 B 站上下载下来的，专辑封面也是从 B 站封面扒的，全没了（呜呜呜&lt;/p&gt;
&lt;p&gt;虽然在 Bing 上一搜就有很多封面提取的网站&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;1.webp&quot; alt=&quot;网站1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;2.webp&quot; alt=&quot;网站2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;3.webp&quot; alt=&quot;网站3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但是秉承着&lt;strong&gt;用轮子不如造轮子&lt;/strong&gt;的理论(&lt;s&gt;其实就是闲着没事&lt;/s&gt;)，我决定自己用 Python 写一个提取封面的工具&lt;/p&gt;
&lt;h1&gt;准备工作&lt;/h1&gt;
&lt;p&gt;既然是造轮子，那当然要先看 B 站的 API&lt;/p&gt;
&lt;p&gt;搜了一下，发现网上公认的哔哩哔哩官方 API 文档地址是：&lt;strong&gt;&lt;a href=&quot;http://docs.bilibili.cn/wiki&quot;&gt;http://docs.bilibili.cn/wiki&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但是&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;4.webp&quot; alt=&quot;网站无法访问&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2021/07/27/HPiBuzEebg5Zclf.jpg&quot; alt=&quot;2017717113835269.jpg&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Github 上面找到的野生文档 &lt;a href=&quot;https://github.com/SocialSisterYi/bilibili-API-collect&quot;&gt;SocialSisterYi/bilibili-API-collect&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;API&lt;/p&gt;
&lt;p&gt;获取视频信息&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://api.bilibili.com/x/web-interface/view?bvid=BV号&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;丢**&lt;a href=&quot;http://json.cn&quot;&gt;json.cn&lt;/a&gt;**解析一下&lt;/p&gt;
&lt;p&gt;找到关于视频封面的&lt;code&gt;pic&lt;/code&gt;字段&lt;code&gt;&quot;pic&quot;:&quot;http://i0.hdslb.com/bfs/archive/38ee715cfe85351c790102691d01d05007092c9e.jpg&quot;,&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;那么，开搞&lt;/p&gt;
&lt;h1&gt;Python 实现&lt;/h1&gt;
&lt;p&gt;随便写了个代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import json
import requests
import os
import sys

 主程序
if __name__ == &quot;__main__&quot;:
    bvid = input(&apos;视频BV号:&apos;)#获取视频BV号
    info = requests.get(&apos;https://api.bilibili.com/x/web-interface/view?bvid=&apos;+bvid).text
    info = json.loads(info)
    cover = info[&apos;data&apos;].get(&apos;pic&apos;)
    print(cover)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;output.webp&quot; alt=&quot;封面输出&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输出成功&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PS:《噬光者与发光体的爱情》真的好听！！！！Meumy 我吹爆！！！！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;接下来写输出&lt;/h2&gt;
&lt;h3&gt;先写了封面文件夹检测&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;def mkcoverdif():
    if not os.path.isdir(&apos;cover&apos;):
        os.mkdir(&apos;cover&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;用 requests 写了图片保存的函数&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;def imgdownload(url,name):
    cover = requests.get(url)
    with open(&apos;./cover/&apos;+name+&apos;.jpg&apos;, &apos;wb&apos;) as pic:
        pic.write(cover.content)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;获取一些必要信息&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;    cover = info[&apos;data&apos;].get(&apos;pic&apos;)  封面地址
    title = info[&apos;data&apos;].get(&apos;title&apos;)  视频标题
    bvid = info[&apos;data&apos;].get(&apos;bvid&apos;)  返回的正确格式BV号
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;这是直接写入主程序块的&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;完整代码&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import json
import requests
import os
import sys
import codecs
import re

def mkcoverdir():
    if not os.path.isdir(&apos;cover&apos;):
        os.mkdir(&apos;cover&apos;)

def imgdownload(url,name):
    cover = requests.get(url)
    with open(&apos;./cover/&apos;+name+&apos;.jpg&apos;, &apos;wb&apos;) as pic:
        pic.write(cover.content)

def av2bv(av):
    info = requests.get(&apos;https://api.bilibili.com/x/web-interface/view?aid=&apos;+av).text
    info = json.loads(info)
    if info.get(&apos;code&apos;) == 0:
        vid = info[&apos;data&apos;].get(&apos;bvid&apos;)  返回的正确格式BV号
        return vid
    else:
        print(&quot;找不到该AV号&quot;)
        print(&quot;CODE:&quot;+str(info.get(&apos;code&apos;))+&quot; MESSAGE:&quot;+info.get(&apos;message&apos;))
        return 1
def bvcheck(vid):
    if vid.startswith(&apos;BV&apos;,0,2) or vid.startswith(&apos;bV&apos;,0,2) or vid.startswith(&apos;Bv&apos;,0,2) or vid.startswith(&apos;bv&apos;,0,2):
        if len(vid) == 12:
            info = info = requests.get(&apos;https://api.bilibili.com/x/web-interface/view?bvid=&apos;+vid).text
            info = json.loads(info)
            if info.get(&apos;code&apos;) == 0:
                return True
            else:
                print(&quot;找不到该BV号&quot;)
                print(&quot;CODE:&quot;+str(info.get(&apos;code&apos;))+&quot; MESSAGE:&quot;+info.get(&apos;message&apos;))
                return False


        else:
            print(&apos;这不是一个合法的BV号, BV号应为12位字符串&apos;)
            return False
    else:
        print(&apos;这不是一个合法的BV号，BV号应为 BV 开头&apos;)
        return False

def main():
    valid = True
    mkcoverdir()
    print(&quot;请选择 AV号 / BV号&quot;)
    print(&quot;1.AV号     2.BV号&quot;)
    status = input()

    if status == &apos;1&apos;:
        vid = input(&apos;AV号:&apos;)
        vid = re.sub(&apos;av&apos;, &apos;&apos;, vid, flags=re.IGNORECASE)
        if vid.isdigit():
            vid = av2bv(vid)
            if vid == 1:
                valid = False
        else:
            print(&apos;这不是一个合法的AV号&apos;)
            valid = False

    if status == &apos;2&apos;:
        vid = input(&apos;视频BV号:&apos;)#获取视频BV号

    if status == &apos;1&apos; or status == &apos;2&apos;:
        if valid:
            if bvcheck(vid):
                info = requests.get(&apos;https://api.bilibili.com/x/web-interface/view?bvid=&apos;+vid).text
                info = json.loads(info)
                bvid = info[&apos;data&apos;].get(&apos;bvid&apos;)  返回的正确格式BV号
                cover = info[&apos;data&apos;].get(&apos;pic&apos;)  封面地址d
                title = info[&apos;data&apos;].get(&apos;title&apos;)  视频标题
                if status == &apos;1&apos;:
                    vid = &quot;av&quot;+str(info[&apos;data&apos;].get(&apos;aid&apos;)) #返回的正确格式AV号
                if status == &apos;2&apos;:
                    vid = info[&apos;data&apos;].get(&apos;bvid&apos;)  返回的正确格式BV号
               print(title+&apos; - &apos;+bvid+&quot;: &quot;+cover)
                print(&apos;完成!&apos;)  提示一下
                print(&quot;保存文件名:&quot;+title+&apos; - &apos;+vid+&quot;.jpg&quot;)
                imgdownload(cover,title+&apos; - &apos;+vid)  下载
    else:
        print(&quot;这不是一个合法的状态码&quot;)


 主程序
if __name__ == &quot;__main__&quot;:
    main()
    os.system(&apos;pause&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;自己加了 AV 号与 BV 号的判断，如果是 AV 号就把 AV 转换成 BV 再用 BV 手法去找封面&lt;/p&gt;
&lt;p&gt;然后根据选择的类型进行保存&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;运行一下&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;6.webp&quot; alt=&quot;成功&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Done！&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;后记&lt;/h1&gt;
&lt;p&gt;使用 Python 的 json 库解析了 B 站官方的 API 接口，完成了封面的下载&lt;/p&gt;
</content:encoded></item><item><title>戴尔 PowerEdge R720 上手 : 年轻人的第一台家庭服务器</title><link>https://fuwari.vercel.app/2022/dell-poweredge-r720-review/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/dell-poweredge-r720-review/</guid><pubDate>Sat, 30 Jul 2022 02:25:37 GMT</pubDate><content:encoded>&lt;p&gt;假期咯，是时候折腾一些新玩意啦！&lt;/p&gt;
&lt;p&gt;假期开始的时候在一个同学家玩（下面叫他叫兽），突然有一天他说：「再过几周我想和你研究一下怎么写网页（HTML），顺便学学怎么搭建服务器。」&lt;/p&gt;
&lt;p&gt;「服务器嘛，你自己用一台电脑开就好了。」&lt;/p&gt;
&lt;p&gt;但我真的想要一台服务器啊 QwQ&lt;/p&gt;
&lt;p&gt;回到家我越想越睡不着，越想越睡不着&lt;/p&gt;
&lt;p&gt;于是我&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;qzone.webp&quot; alt=&quot;发了一条说说&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;开箱&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;U1S1&lt;/strong&gt;，这玩意是真的沉。顺丰小哥推着一个推车帮我推上来的，辛苦了 Orz&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;顺丰小哥：你买了什么啊，这么沉？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;商家发的真的结实，除了泡沫外顶上还有一层防摔垫&lt;/p&gt;
&lt;p&gt;（由于没有图，就不放了 QWQ，大家看看上面的说说吧&lt;/p&gt;
&lt;h2&gt;iDRAC YYDS？&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;得益于戴尔强大的 iDRAC 助力，使安装系统变成了一件 &lt;strong&gt;极其容易&lt;/strong&gt; 的事&lt;/p&gt;
&lt;p&gt;—— 景蓝 Yurik&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这是我问云资后得出的初结论&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真的吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事可能对于一台新的 Dell 服务器来说，易如反掌，但对于这样一台二手服务器，却花费了我和云资一个下午&lt;/p&gt;
&lt;p&gt;首先，服务器需要在原先网口的基础上再连接 iDRAC 的网口（也就是两根网线）&lt;/p&gt;
&lt;p&gt;我的解决方案是 PDD 58 元的 水星 5 口全千兆交换机&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;switch.webp&quot; alt=&quot;交换机&quot; /&gt;&lt;/p&gt;
&lt;p&gt;一开始，iDRAC 7 的默认地址一直无法连接(https)&lt;/p&gt;
&lt;p&gt;重置之后 Edge 浏览器便提示&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;使用不受支持的协议&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ERR_SSL_VERSION_OR_CIPHER_MISMATCH&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;无论是 Chrome Firefox 还是 Edge 即使进入 Windows 设置支持 SSL 3.0 后仍于事无补&lt;/p&gt;
&lt;p&gt;最后解决方案是使用 Edge 的 IE 模式访问（没想到 IE 还是蛮有用的）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2023.09.14 增添:&lt;/strong&gt; 将 iDRAC 7 的版本升级到最新版本即可解决该问题啦&lt;/p&gt;
&lt;h2&gt;点亮&lt;/h2&gt;
&lt;p&gt;既然进入的 iDRAC，我们就启动虚拟控制台吧&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;idrac-1.webp&quot; alt=&quot;控制台&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;idrac-3.webp&quot; alt=&quot;iDRAC-TOP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 虚拟介质-&amp;gt;连接虚拟介质&lt;/p&gt;
&lt;p&gt;等待连接后点 虚拟介质-&amp;gt;映射 CD/DVD，选择 ISO 镜像，选择系统镜像&lt;/p&gt;
&lt;p&gt;选择 下次引导-&amp;gt;虚拟 CD/DVD/ISO&lt;/p&gt;
&lt;p&gt;电源-&amp;gt;系统关机后再开机（冷引导）&lt;/p&gt;
&lt;p&gt;重启后就和正常安装系统一样了&lt;/p&gt;
&lt;p&gt;我安装了 Proxmox Virtual Environment ( PVE ),这样可以在一台设备上跑多个系统，ALL IN ONE YYDS!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;PVE.webp&quot; alt=&quot;Proxmox Virtual Environment&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;截图时候还在装着 Centos 用来跑 Rimetown 的 主要服务&lt;/p&gt;
&lt;p&gt;后来还装了一个 OpenMediaVault 来做 Nas&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;注意&lt;/h2&gt;
&lt;p&gt;二手服务器到了之后一定要去 BIOS 里面重置一下 iDRAC 设置，并且最好不要让 iDRAC 使用 DHCP 获取 IP，自己指定一个会方便很多&lt;/p&gt;
&lt;h2&gt;购买服务器后的部分问题 &amp;amp; 可能有用的解决方案&lt;/h2&gt;
&lt;h3&gt;风扇开机后一直全功率运行&lt;/h3&gt;
&lt;p&gt;进入 BIOS 里面的 System BIOS Settings -&amp;gt; System Profile Settings 里面检查一下 C1E 有没有设置成 Enabled&lt;/p&gt;
&lt;p&gt;设置成 Enabled 后重启，说不定就好了&lt;/p&gt;
&lt;p&gt;实在不行就只能用&lt;a href=&quot;https://github.com/cw1997/dell_fans_controller&quot;&gt;dell_fans_controller (Windows 推荐)&lt;/a&gt; 或者 &lt;a href=&quot;https://github.com/ipmitool/ipmitool&quot;&gt;ipmitool (上手成本较高)&lt;/a&gt;来手动调速了，具体方法自行百度&lt;/p&gt;
&lt;p&gt;别忘了开启主机的 IPMI&lt;/p&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;硬件&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;型号&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;数量&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;E5-2690 v2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;内存&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DDR3 8G REG ECC 1333&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;硬盘&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2T SAS&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;网卡&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;四千兆网口&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;阵列卡&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;H310 Mini&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;小插曲&lt;/h2&gt;
&lt;p&gt;我的配置单中是双路 750W 的电源，但是卖家发错成了双 495W 的电源了&lt;/p&gt;
&lt;p&gt;我找完客服之后立马给我打电话联系我补发，原先的 495W 就送我了&lt;/p&gt;
&lt;p&gt;商家真的蛮好的&lt;/p&gt;
&lt;p&gt;但是我的博客里面就不打广告，不提店名啦&lt;/p&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;这一套配置说不上好，只是我第一次捡服务器（洋垃圾）的尝试&lt;/p&gt;
&lt;p&gt;谢谢你看了那么多 Orz&lt;/p&gt;
&lt;p&gt;总的来说，戴尔的服务器还是十分优秀的，iDRAC 简直就是服务器管理的神器！&lt;/p&gt;
&lt;p&gt;就靠他陪伴我和即将开服的&lt;a href=&quot;https://rimetown.net&quot;&gt;Rime Town&lt;/a&gt; 度过未来的日子啦!&lt;/p&gt;
&lt;p&gt;话说还是期待着换 R730 或者 R740 的说...&lt;/p&gt;
&lt;h2&gt;晒图&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;photo-1.webp&quot; alt=&quot;前面板外观&quot; /&gt;
&lt;img src=&quot;photo-2.webp&quot; alt=&quot;电源  先拿495W的拍一下&quot; /&gt;
&lt;img src=&quot;photo-3.webp&quot; alt=&quot;散热器特写&quot; /&gt;
&lt;img src=&quot;photo-4.webp&quot; alt=&quot;拆下挡板后的服务器内部&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>P1425 - 小鱼的游泳时间</title><link>https://fuwari.vercel.app/2022/luogu-p1425/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/luogu-p1425/</guid><pubDate>Fri, 01 Apr 2022 02:25:37 GMT</pubDate><content:encoded>&lt;p&gt;好久没碰过 C++了，也好久没碰竞赛了&lt;/p&gt;
&lt;p&gt;今天突然想起来去洛谷注册了个账号（（（&lt;/p&gt;
&lt;p&gt;从入门题库中看到了这道入门题&lt;/p&gt;
&lt;p&gt;觉得蛮有意思的，就记一下过程&lt;/p&gt;
&lt;h1&gt;题目&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;原题&lt;/strong&gt;：洛谷 - &lt;a href=&quot;https://www.luogu.com.cn/problem/P1425&quot;&gt;P1425 小鱼的游泳时间&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;题目描述&lt;/h2&gt;
&lt;p&gt;伦敦奥运会要到了，小鱼在拼命练习游泳准备参加游泳比赛，可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。&lt;/p&gt;
&lt;p&gt;这一天，小鱼给自己的游泳时间做了精确的计时（本题中的计时都按 24 小时制计算），它发现自己从 a 时 b 分一直游泳到当天的 c 时 d 分，请你帮小鱼计算一下，它这天一共游了多少时间呢？&lt;/p&gt;
&lt;p&gt;小鱼游的好辛苦呀，你可不要算错了哦。&lt;/p&gt;
&lt;h2&gt;输入格式&lt;/h2&gt;
&lt;p&gt;一行内输入 4 个整数，分别表示 a, b, c, d。&lt;/p&gt;
&lt;h2&gt;输出格式&lt;/h2&gt;
&lt;p&gt;一行内输出 2 个整数 e 和 f，用空格间隔，依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f 应该小于 60。&lt;/p&gt;
&lt;h2&gt;输入输出样例&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;输入 #1&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;12 50 19 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;输出 #1&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;6 20
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;说明/提示&lt;/h2&gt;
&lt;p&gt;对于全部测试数据，0 ≤ &lt;em&gt;a&lt;/em&gt;,*c *≤ 24，0 ≤ b,d ≤ 600 ≤ &lt;em&gt;b&lt;/em&gt;,&lt;em&gt;d&lt;/em&gt; ≤ 60，且结束时间一定晚于开始时间。&lt;/p&gt;
&lt;h1&gt;解题&lt;/h1&gt;
&lt;p&gt;很显然，这就是一个数学问题：怎么通过时间格式计算间隔&lt;/p&gt;
&lt;p&gt;1.通过计算将时间统一到所需最小单位 - minute&lt;/p&gt;
&lt;p&gt;2.通过取整，取余计算获得结果&lt;/p&gt;
&lt;h2&gt;AC 代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;cstdio&amp;gt;
using namespace std;

int a,b,c,d;


int main()
{
	cin&amp;gt;&amp;gt;a&amp;gt;&amp;gt;b&amp;gt;&amp;gt;c&amp;gt;&amp;gt;d;

	int allminute = 60*(c-a-1)+(60-b)+d;

	int hours = allminute / 60;

	cout&amp;lt;&amp;lt;hours;

	cout&amp;lt;&amp;lt;&quot; &quot;&amp;lt;&amp;lt;allminute %60;

	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>使用Hugo搭建个人博客</title><link>https://fuwari.vercel.app/2022/hugo-blog/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/hugo-blog/</guid><pubDate>Sun, 13 Feb 2022 02:25:37 GMT</pubDate><content:encoded>&lt;h1&gt;前言&lt;/h1&gt;
&lt;h2&gt;我为什么选择 Hugo&lt;/h2&gt;
&lt;p&gt;Hugo 是一个使用&lt;strong&gt;Go&lt;/strong&gt;语言编写的静态网站生成器。
长期续费一个稳定的虚拟主机的费用是昂贵的，因此我放弃了原先的&lt;strong&gt;Typecho&lt;/strong&gt;系统，转而寻找静态博客系统。在尝试了&lt;strong&gt;Hexo&lt;/strong&gt;、&lt;strong&gt;Jekyll&lt;/strong&gt;后，我选择了&lt;strong&gt;Hugo&lt;/strong&gt;，原因首先是它支持 Markdown 语法，这使得我将文章从 Typecho 迁移至 Hugo 变得容易，其次是&lt;a href=&quot;https://github.com/CaiJimmy/hugo-theme-stack&quot;&gt;&lt;strong&gt;Stack&lt;/strong&gt;&lt;/a&gt;主题仅适用于 Hugo (搭建博客第一要领：好看)&lt;/p&gt;
&lt;h2&gt;网页托管&lt;/h2&gt;
&lt;p&gt;说起网页托管，大家第一想到的大概都是&lt;a href=&quot;https://pages.github.com&quot;&gt;&lt;strong&gt;Github Pages&lt;/strong&gt;&lt;/a&gt;吧，最初我也是使用 gh 来对生成的动态页面进行托管，可长期使用下来我发现 gh pages 存在一些问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;github pages 会对绑定的域名进行 cname 验证，而 Cloudflare 默认将主域名的 CNAME 拉平成 A 解析，这导致我的域名一周多了还没有通过验证&lt;/li&gt;
&lt;li&gt;Github Pages 默认给每个域名申请免费的 SSL 证书，而我的一个域名出现了 SSL 证书出错的情况 😓，最后也没排查出是域名还是 gh pages 的问题&lt;/li&gt;
&lt;li&gt;可能会有 DNS 污染导致 github.io 无法访问&lt;/li&gt;
&lt;li&gt;不支持 PHP，导致我原先的一些脚本无法使用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;为了解决这些问题，我在知乎游了一圈，发现了一个宝藏部署服务：&lt;a href=&quot;https://vercel.com&quot;&gt;&lt;strong&gt;Vercel&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vercel 有以下优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;访问速度比 Github Pages 快&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;比 Github Pages 稳定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;自带 SSL 证书&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持将域名 DNS 服务器迁移至 Vercel&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;vercel.png&quot; alt=&quot;Vercel主页&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;准备工作&lt;/h1&gt;
&lt;h2&gt;安装 Hugo&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;本文仅展示使用 Windows 安装 Hugo&lt;/p&gt;
&lt;p&gt;本教程中使用 &lt;a href=&quot;https://scoop.sh/&quot;&gt;&lt;strong&gt;scoop&lt;/strong&gt;软件包管理器&lt;/a&gt; 安装&lt;/p&gt;
&lt;p&gt;其余方法大同小异，请自行使用搜索引擎搜索&lt;/p&gt;
&lt;p&gt;安装 scoop，请看这篇文章：&lt;a href=&quot;/p/install-scoop/&quot;&gt;Scoop - 一款强大的 Windows 包管理工具&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; 打开运行窗口&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;run-windows.png&quot; alt=&quot;运行&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入&amp;lt;code&amp;gt;Powershell&amp;lt;/code&amp;gt;&lt;/p&gt;
&lt;p&gt;在打开的窗口中输入&lt;/p&gt;
&lt;p&gt;&amp;lt;code&amp;gt;scoop install hugo&amp;lt;/code&amp;gt;&lt;/p&gt;
&lt;p&gt;或者用以下方式安装扩展版本&lt;/p&gt;
&lt;p&gt;&amp;lt;code&amp;gt;scoop install hugo-extended&amp;lt;/code&amp;gt;&lt;/p&gt;
&lt;p&gt;当控制台显示&lt;code&gt;&apos;hugo&apos; (0.92.2) was installed successfully!&lt;/code&gt;时代表安装已完成&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;若选择安装拓展版本，则当显示&lt;code&gt;&apos;hugo&apos; (0.92.2) was installed successfully!&lt;/code&gt;时代表安装已完成&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;括号内版本号以最新版本为准&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;创建站点&lt;/h2&gt;
&lt;h3&gt;初始化站点&lt;/h3&gt;
&lt;p&gt;在控制台中输入&amp;lt;code&amp;gt;hugo new site 路径&amp;lt;/code&amp;gt;新建一个站点&lt;/p&gt;
&lt;p&gt;如&amp;lt;code&amp;gt;hugo new site E:\myblog&amp;lt;/code&amp;gt;&lt;/p&gt;
&lt;p&gt;这个命令将在 E 盘中创建一个名为 myblog 的目录并在此中创建一个新的 hugo 站点&lt;/p&gt;
&lt;h3&gt;安装主题&lt;/h3&gt;
&lt;p&gt;由于新站点中无主题，因此无法渲染，所以我们需要安装一个新主题&lt;/p&gt;
&lt;p&gt;在本文中选择从 hexo 移植的&lt;a href=&quot;https://github.com/elkan1788/hugo-theme-next&quot;&gt;Next 主题&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入站点根目录后，使用 git 获取主题&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git clone https://github.com/elkan1788/hugo-theme-next.git themes/hugo-theme-next&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;复制站点根目录/theme/hugo-theme-next/exampleSite 中的文件并粘贴至站点根目录后覆盖&lt;/p&gt;
&lt;p&gt;运行&amp;lt;code&amp;gt;hugo server&amp;lt;/code&amp;gt;&lt;/p&gt;
&lt;p&gt;恭喜你，你的 hugo 博客已成功运行&lt;/p&gt;
&lt;h1&gt;部署&lt;/h1&gt;
&lt;p&gt;参见新博文 &lt;a href=&quot;https://yurik.cafe/2023/use-vercel-introduction/&quot;&gt;使用 Vercel 托管静态网页&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>又是一种 Minecraft 外置登录解决方案：自行实现 Yggdrasil API</title><link>https://fuwari.vercel.app/2022/minecraft-yggdrasil-api-third-party-implementation/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/minecraft-yggdrasil-api-third-party-implementation/</guid><pubDate>Fri, 11 Feb 2022 02:25:37 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;原文链接&lt;/strong&gt;：PRIN BLOG - &lt;a href=&quot;https://printempw.github.io/minecraft-yggdrasil-api-third-party-implementation/&quot;&gt;又是一种 Minecraft 外置登录解决方案：自行实现 Yggdrasil API&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;共享协议&lt;/strong&gt;：本文与原文采用相同的 &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/deed.zh&quot;&gt;CC BY 4.0 协议&lt;/a&gt;而非本博客默认的共享协议&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;最近给 Blessing Skin 写了个插件，利用皮肤站本身的账号系统实现了 Yggdrasil API（就是 Mojang 的登录 API），然后配合 &lt;a href=&quot;https://github.com/to2mbn/authlib-injector/&quot;&gt;authlib-injector&lt;/a&gt; 这个项目将启动器（基于 Java 编写的支持正版登录的启动器都行）、Minecraft 游戏、Minecraft 服务端中的 Mojang Yggdrasil API 地址给替换成了自己实现的第三方 Yggdrasil API 地址（字节码替换），从而实现了与正版登录功能几乎完全相同的账户鉴权系统。&lt;/p&gt;
&lt;p&gt;通俗地讲，就是我把 Mojang 的正版登录 API 给【劫持】成自己的啦，所以可以像登录正版那样直接用皮肤站的邮箱和密码登录游戏（还支持 Mojang 都不支持的多用户选择哦）。这种外置登录系统的实现应该可以说是比市面上的软件都要完善（毕竟可以直接利用 Minecraft 本身自带的鉴权模块），因此写一篇博文介绍一下这些实现之间的不同之处，顺带记录一下实现 Yggdrasil API 时踩到的坑，算是抛砖引玉了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：本文不适合小白及问题解决能力弱的人群阅读。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;s&gt;感觉我明明好久没玩 MC 了，要玩也都是玩正版服务器，但是却一直在搞这些盗版服用的东西，我真是舍己为人造福大众普惠众生啊（不&lt;/s&gt;&lt;/p&gt;
&lt;h1&gt;服务器内置登录插件&lt;/h1&gt;
&lt;p&gt;相信维护过 Minecraft 服务器（当然，我这边说的是运行在离线模式下的服务器）的腐竹们或多或少都听说过 Authme、CrazyLogin 等登录插件的鼎鼎大名吧。由于这些服务器运作在离线模式（&lt;code&gt;online-mode=false&lt;/code&gt;，即俗称的盗版模式）下，缺少 Mojang 官方账户认证系统的支持，所以必须使用这类插件来进行玩家认证（否则随便谁都可以冒名顶替别人了，换一个登录角色名就行）。&lt;/p&gt;
&lt;p&gt;这类插件的工作原理就是在服务端维护一个数据表，表中每一条记录中存储了角色的「角色名」、「登录密码」、「注册时间」、「登录 IP 地址」等等信息，当玩家初次进入服务器时需要通过这些插件进行注册操作（e.g. &lt;code&gt;/register&lt;/code&gt; 命令）并在表中插入一条记录，注册完毕后进入服务器则需要输入密码（e.g. &lt;code&gt;/login &amp;lt;password&amp;gt;&lt;/code&gt; 命令）来认证。&lt;/p&gt;
&lt;p&gt;其实这样的解决方案也没什么不好，而且现在 Authme 等登录插件在众多的服务器中都还是主流。但是，如果你的服务器已经发展到比较大型了，或许你就比较希望有这样一个东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以直接在启动器中进行登录鉴权操作，点击「开始游戏」就可以直接进入服务器，不用在游戏里再一遍遍输入 &lt;code&gt;/login&lt;/code&gt; 等指令；&lt;/li&gt;
&lt;li&gt;有一个网页版的用户管理，可以直接对玩家进行操作（e.g. 封禁、修改积分）；&lt;/li&gt;
&lt;li&gt;玩家们可以直接在一个直观的网页上注册账号，并且可以直接用这个账号 &amp;amp; 密码登录游戏；&lt;/li&gt;
&lt;li&gt;希望这个账号系统还能对接论坛、皮肤站等乱七八糟的东西，玩家注册了一个账号之后，可以在任何地方使用；&lt;/li&gt;
&lt;li&gt;希望服务器有一个自己的网页、自定义启动器、用户管理系统、卫星地图之类的东西来装逼；&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;并不是所有腐竹都满足于 Authme + Discuz 这样的组合的（而且这类游戏内登录系统也有不少安全漏洞），毕竟在这个 Minecraft 多人联机服务器发展接近饱和的时候，如果想要你的服务器能够吸引新玩家，那么除了服务器本身建设之外的地方也是要好好考虑的。&lt;/p&gt;
&lt;h1&gt;外置登录系统&lt;/h1&gt;
&lt;p&gt;正是这样的需求催生了不少 Minecraft 的「外置登录插件」、「网页登录」等等软件（而且人气都挺高的），我随手在 MCBBS 上一搜就有很多类似的产品，用啥语言写的都有：&lt;em&gt;MadAuth、WebLogin、BeeLogin、WebRegister、冰棂登陆系统……&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这些软件的原理就是将原本的登录鉴权这一步骤从游戏里抽出来了，将其放到启动器 or 网页上去，而服务端插件的功能就只剩下「查询数据库中用户的登录状态，决定是否放行」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;Minecraft.jpg&quot; alt=&quot;原理图&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;▲ 随手画的示意流程图，这里推荐一下 &lt;a href=&quot;https://www.processon.com/&quot;&gt;ProcessOn&lt;/a&gt; 这个在线作图网站，很好用 ;)&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Printempw 的图是透明的，对灯箱显示不是很友好，所以就自己上了一层白色底&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;似乎也挺好的，不是吗？那我今天要说的「自行实现 Yggdrasil API」方法，和这些现成的方式有什么不一样呢？&lt;/p&gt;
&lt;h1&gt;自行实现 Yggdrasil API&lt;/h1&gt;
&lt;p&gt;继续看下去之前，首先你要知道 Mojang 正版的 Minecraft 是怎样登录的。Mojang 专门定义了一个用于鉴权的 API，Mojang 旗下的游戏（Minecraft、Scrolls 等）都是用的这一套 API 来正版验证的 —— 这一套 API 的名字就叫做 Yggdrasil（即北欧神话里的世界树，&lt;s&gt;这名字可真几把炫酷&lt;/s&gt;）。&lt;/p&gt;
&lt;p&gt;正版登录的好处就不用我说了吧？再也不用担心假人压测、自带外置登录（启动器里账号密码登录）、自带皮肤加载（不需要安装 CSL、USM 等皮肤补丁了）、Tab 栏显示头像……可以说，Minecraft 自带的 Yggdrasil API 鉴权系统比上面的那些什么登录插件啊什么外置登录的功能强多了，所以正版服务器（&lt;code&gt;online_mode=true&lt;/code&gt;）也不用担心那些破事，因为官方的这一套鉴权系统以及很完善了。&lt;/p&gt;
&lt;p&gt;那么问题来了，盗版用户要怎样才能把 Mojang 为正版开发的 Yggdrasil API 系统拿来用呢？&lt;/p&gt;
&lt;h2&gt;基本原理&lt;/h2&gt;
&lt;p&gt;这里必须感谢 &lt;a href=&quot;https://github.com/to2mbn/authlib-injector/&quot;&gt;to2mbn/authlib-injector&lt;/a&gt; 这个项目，正是因为这个项目，我接下来描述的方法才成为可能。是的，方法很简单，Minecraft 虽然把 Mojang 官方的 Yggdrasil API 地址（&lt;code&gt;https://authserver.mojang.com&lt;/code&gt;）给写死在源码里了，但是既然 Minecraft 是基于 JVM 的应用程序，我们就可以通过字节码替换的方法将官方的 API 地址替换成我们自己实现的 API 地址。&lt;/p&gt;
&lt;p&gt;以下内容援引自 authlib-agent（即 authlib-injector 前身）的 wiki：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;authlib-agent 是一个高可靠性, 高适用性, 用于 Minecraft 的, 游戏外登录及皮肤解决方案. 支持 Minecraft1.7+, Craftbukkit, Spigot, Bungeecord 等. 通过对正版登录 API 的重定向, 实现了一个功能和正版几乎一样的游戏外登录系统.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不过既然要把官方 API 地址替换成我们自己的，我们就得自己实现一个和官方 API 其他地方都一样的 API，也就是，&lt;strong&gt;仿造出一个第三方 Yggdrasil API 出来&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;解决方案&lt;/h2&gt;
&lt;p&gt;可以说这个系统中，就是「开发完整实现了 Yggdrasil API 的后端」这一步最难了。为啥捏？这个服务端不止要实现用户的认证、皮肤获取，你还得实现用户的注册、登录、角色管理、皮肤上传、皮肤库等等七七八八的功能吧？你还得给这些功能套上一个好看的界面吧，不然你让你的玩家怎么使用？你还得来个后台管理页面吧，不然管理员怎么进行用户管理、封禁等操作？&lt;/p&gt;
&lt;p&gt;authlib-injector 官方也提供了一个 Java 编写的后端 &lt;a href=&quot;https://github.com/to2mbn/yggdrasil-mock&quot;&gt;yggdrasil-mock&lt;/a&gt;，虽然完整实现了 Yggdrasil API，但是它并没有提供直观的管理网页，只提供了一套 RESTful API，所以距离实装要求还是差得比较远的。&lt;/p&gt;
&lt;p&gt;要重头开发一套这样的系统是非常非常够呛的，不过幸运的是，我之前一直在持续开发的 Minecraft 皮肤站 &lt;a href=&quot;https://github.com/bs-community/blessing-skin-server&quot;&gt;Blessing Skin Server&lt;/a&gt;，这个项目的 v3 版本&lt;strong&gt;正好&lt;/strong&gt;就满足的这些要求 —— 友好的用户界面、完善的用户系统、强大的后台管理、附带皮肤上传管理展示功能，再加上我之前开发的&lt;a href=&quot;https://printempw.github.io/laravel-plugin-system-1/&quot;&gt;插件系统&lt;/a&gt;（开发这玩意真是个正确的决定，一劳永逸啊），这让我可以很方便地开发一个插件出来，直接基于现成的皮肤站用户系统实现 Yggdrasil API。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;2b4204b718b92.png&quot; alt=&quot;API&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;如何使用&lt;/h2&gt;
&lt;p&gt;讲了那么多，那么到底该怎么使用呢？&lt;/p&gt;
&lt;p&gt;请参阅：&lt;a href=&quot;https://github.com/printempw/yggdrasil-api/wiki&quot;&gt;printempw/yggdrasil-api wiki&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;以上步骤完成后你将得到什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个完善的账号系统（配合数据对接插件还能与 Discuz 等论坛账号互通），包括友好的注册、登录网页界面以及强大的管理员面板，在管理后台中封禁用户后，该用户也将无法登录游戏；&lt;/li&gt;
&lt;li&gt;一个皮肤管理系统，自带皮肤库功能，在皮肤站中应用的皮肤，玩家无需安装任何皮肤 Mod，进入游戏即可看到自己设置的皮肤（支持双层皮肤、支持 Alex 模型，由于游戏本身限制不支持高清皮肤）；&lt;/li&gt;
&lt;li&gt;单账户多角色功能，玩家可以像登录正版那样用「邮箱」和「密码」登录游戏，而且如果你在皮肤站中添加了多个角色的话，还可以在启动页面选择要用哪个角色进入游戏（Yggdrasil API 实现了这个功能，但是 Mojang 的正版登录服务器并未实现该功能），HMCL 等启动器都实现了本功能；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这还不够多吗？&lt;/p&gt;
&lt;p&gt;而且你还可以自己修改 HMCL 等开源启动器的源码，在启动时自动注入 &lt;code&gt;-javaagent&lt;/code&gt; 参数，更加方便，还能得到一个服务器专用启动器，逼格更高了（笑）&lt;/p&gt;
&lt;h2&gt;实现效果&lt;/h2&gt;
&lt;p&gt;皮肤站的用户管理系统、皮肤系统、后台界面之类的我就不截图了，有兴趣可以去 MCBBS 的 &lt;a href=&quot;http://www.mcbbs.net/forum.php?mod=viewthread&amp;amp;tid=552877&quot;&gt;发布帖&lt;/a&gt; 上感受一下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;37e6d2778c77a.png&quot; alt=&quot;网页管理&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;▲ 在皮肤站「角色管理」中可添加多个角色&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;f8f9c076da123.png&quot; alt=&quot;多角色选择&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;▲ 使用皮肤站的邮箱与密码登录后，配合 HMCL 实现多角色选择&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;715850d76b7db.png&quot; alt=&quot;游戏&quot; /&gt;&lt;/p&gt;
&lt;p&gt;▲ 游戏内的显示效果&lt;/p&gt;
&lt;h1&gt;Yggdrasil API 踩坑记录&lt;/h1&gt;
&lt;p&gt;下面记录一些自己实现 Yggdrasil API 时踩到的坑，毕竟 wiki.vg 里并不会提到这些在自己实现 API 时需要注意的东西（提到的大部分都是使用 API 时应该要注意的），所以我也只能摸着石头过河，踩了不少坑，这里记录一下，希望能帮到后来人。&lt;/p&gt;
&lt;p&gt;基础的 API 定义之类的我就不说了，下面主要讲一些 &lt;a href=&quot;http://wiki.vg/Authentication&quot;&gt;文档&lt;/a&gt; 里没怎么提到的东西。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2018-02-22 加注：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最近 @yushijinhun 写了一篇 &lt;a href=&quot;https://github.com/to2mbn/authlib-injector/wiki/Yggdrasil%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%8A%80%E6%9C%AF%E8%A7%84%E8%8C%83&quot;&gt;Yggdrasil 服务端技术规范&lt;/a&gt;，大部分 API 相关的内容其中都有提及，大家去看那个就好了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;登录与鉴权&lt;/h2&gt;
&lt;p&gt;用过正版 Minecraft 的登录系统的同学应该都知道，一般只有在初次登录游戏或者太久没有开过游戏的情况下，启动器才会要求你输入账号密码，其他情况下都是可以直接点击登录并启动游戏的。&lt;/p&gt;
&lt;p&gt;但这并不是因为启动器记下了你的密码，相反，启动器保存的是 Mojang 认证服务器返回的 AccessToken。如果你曾经观察过启动器启动游戏时所用的启动参数，你就能发现其实 Minecraft 游戏本体其实只拿到了角色名、角色 Profile 对应的 UUID 以及上面提到的 AccessToken 而已。可以说，只要拿到这个 AccessToken 就可以进行几乎所有的操作了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--username 621sama
--uuid d3af753b7cda4666adc2ff9bba85e0eb
--accessToken cc1e7c7d-00ab-4f37-bbe1-983e18f1755d
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;获取 AccessToken&lt;/h3&gt;
&lt;p&gt;用正确的 &lt;code&gt;username&lt;/code&gt; 和 &lt;code&gt;password&lt;/code&gt; 请求 &lt;code&gt;/authenticate&lt;/code&gt; API 即可拿到 AccessToken，该令牌的有效期由服务端来决定（一般用 Redis 实现）。如果你请求 API 的时候没有带上 &lt;code&gt;clientToken&lt;/code&gt;，那服务端就会帮你生成一个，你要记得把这个返回值记下来，因为 clientToken 和 accessToken 是对应关系，有些 API 是要求同时提供 AccessToken 和签发该令牌的 clientToken 的。&lt;/p&gt;
&lt;p&gt;另外需要注意的是，这个 &lt;code&gt;/authenticate&lt;/code&gt; API 中请求体中的 &lt;code&gt;username&lt;/code&gt; 字段，&lt;strong&gt;填的是邮箱&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;是的，你没听错，email，在 username 字段里填的是用户的 email。惊不惊喜，意不意外？这个狗屎一样的字段命名估计和历史遗留问题也有关系，因为早期 Minecraft 账号（也就是 Profile 里的那个 &lt;code&gt;legacy&lt;/code&gt; 字段）是直接用**「角色名」&lt;strong&gt;和「密码」登录的，但是新版 Mojang 账号（Yggdrasil API）认证是用的&lt;/strong&gt;「电子邮箱账号」**，Yggdrasil API 为了兼容旧账号的登录，所以搞了这么一个坑爹的东西，真是说不出话。&lt;/p&gt;
&lt;p&gt;总之，如果想要自己实现 Yggdrasil API，是要注意一下这个神秘的 &lt;code&gt;username&lt;/code&gt; 字段的。&lt;/p&gt;
&lt;h3&gt;刷新 AccessToken&lt;/h3&gt;
&lt;p&gt;在登录成功拿到 &lt;code&gt;accessToken&lt;/code&gt; 后，启动器应该把这个令牌存起来，然后在每次玩家登录游戏之前请求一次 &lt;code&gt;/refresh&lt;/code&gt; API，提供 accessToken 和签发该令牌时用的 clientToken（这也是我为什么上面叫你要把这个存起来的原因），就可以拿到新签发的 accessToken 了（刷新令牌有效期）。只要令牌有效期没过，启动器就不会再次请求 &lt;code&gt;/authenticate&lt;/code&gt; API。&lt;/p&gt;
&lt;p&gt;所以，虽然文档上没说，但是其实 &lt;code&gt;/refresh&lt;/code&gt; 返回的结果应该是要和 &lt;code&gt;/authenticate&lt;/code&gt; 的返回结果大致相同的，包括 accessToken、clientToken、availableProfiles、selectedProfile、user 等字段（具体下面再说）。&lt;/p&gt;
&lt;h2&gt;API 中的 Token&lt;/h2&gt;
&lt;p&gt;Yggdrasil API 的定义中主要有两个 Token，&lt;code&gt;clientToken&lt;/code&gt; 与 &lt;code&gt;accessToken&lt;/code&gt;，两者为对应关系。一般来说，启动器不会频繁变动 ClientToken（通常情况下，是永远不会变的），而 AccessToken 应该在每次登录游戏时通过 &lt;code&gt;/refresh&lt;/code&gt; 重新签发一个。&lt;/p&gt;
&lt;h3&gt;Token 的生命周期&lt;/h3&gt;
&lt;p&gt;需要注意的是，AccessToken 是有生命周期的，大致如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;|---- 1. 有效 ----|---- 2. 暂时失效 ----| 3. 无效
|------------------------------------------------------&amp;gt; Time
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AccessToken 刚签发时处于「有效」状态，经过一段时间后（服务端自行设置）变成「暂时失效」状态。在这种状态下的 AccessToken 是无法进入任何开启了正版验证的服务器的（也就是 &lt;code&gt;/join&lt;/code&gt; API 不认），但是该令牌还是能拿来请求 &lt;code&gt;/refresh&lt;/code&gt; API，这会签发一个全新的处于「有效」状态的 AccessToken 并返回给客户端。&lt;/p&gt;
&lt;p&gt;但是如果处于「暂时失效」状态的 AccessToken 再放置一段时间后就会完全失效（一般的实现就是从 Redis 令牌桶中删掉该令牌），处于「无效」状态的 AccessToken 是无法进行任何操作的，只能让用户重新输入密码并请求 &lt;code&gt;/authenticate&lt;/code&gt; API 以获取一个新的 AccessToken。&lt;/p&gt;
&lt;h3&gt;Token 的格式&lt;/h3&gt;
&lt;p&gt;Yggdrasil API 中的 &lt;code&gt;clientToken&lt;/code&gt;、&lt;code&gt;accessToken&lt;/code&gt;、&lt;code&gt;id&lt;/code&gt; 等字段的格式都是一大串 16 进制数字和 &lt;code&gt;-&lt;/code&gt; 连字符组成的字符串，让人看起来很懵。其实这样的字符串格式就是 &lt;strong&gt;通用唯一识别码&lt;/strong&gt;（&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%94%AF%E4%B8%80%E8%AF%86%E5%88%AB%E7%A0%81&quot;&gt;Universally Unique Identifier&lt;/a&gt;）标准，也就是我们经常听到的 UUID 了。标准形式的 UUID 包含 32 位 16 进制数字，并且由连字符分割成形式为 8-4-4-4-12 的字符串，就像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 至于如何生成 UUID，各个语言一般都有对应的库，搜一下就有了
550e8400-e29b-41d4-a716-446655440000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;虽然文档中没说，但是 API 请求以及响应的 &lt;code&gt;clientToken&lt;/code&gt; 、&lt;code&gt;accessToken&lt;/code&gt; 以及玩家 Profile 中的 &lt;code&gt;id&lt;/code&gt; 字段格式都是**【不带连字符的 UUID】**。下面拿 wiki.vg 中的 &lt;code&gt;/authenticate&lt;/code&gt; 请求中的实例响应讲解一下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  // 不带连字符的 UUID 格式
  &quot;accessToken&quot;: &quot;869a97cb2bc841be84bfd668c299a718&quot;,
  // 无符号 UUID，与 accessToken 对应
  &quot;clientToken&quot;: &quot;c0b2bac2eb434af5ae8ae7f824cee02f&quot;,
  &quot;availableProfiles&quot;: [
    {
      // 无符号 UUID，下同
      &quot;id&quot;: &quot;d3af753b7cda4666adc2ff9bba85e0eb&quot;,
      &quot;name&quot;: &quot;621sama&quot;
    }
  ],
  &quot;selectedProfile&quot;: {
    &quot;id&quot;: &quot;d3af753b7cda4666adc2ff9bba85e0eb&quot;,
    &quot;name&quot;: &quot;621sama&quot;
  },
  &quot;user&quot;: {
    &quot;id&quot;: &quot;d3af753b7cda4666adc2ff9bba85e0eb&quot;,
    &quot;properties&quot;: []
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至于后端存储时用怎样的格式就随意了，不过在 API 返回结果中是一定要按照上面的格式来的。&lt;/p&gt;
&lt;h2&gt;多角色选择功能&lt;/h2&gt;
&lt;p&gt;虽然 Mojang 官方迄今为止仍未支持同一个&lt;strong&gt;账号&lt;/strong&gt;（Mojang 账号，用邮箱登录的那个）下添加多个&lt;strong&gt;角色&lt;/strong&gt;（角色名，就是游戏里显示的那个），但是 Yggdrasil API 本身是可以实现这个**「单账号多角色」&lt;strong&gt;功能的，并且官方启动器、HMCL 等著名的第三方启动器都支持&lt;/strong&gt;登录后选择角色进入游戏**（具体效果参见上方截图）。&lt;/p&gt;
&lt;p&gt;如果你仔细阅读过 wiki.vg 里的 API 文档的话就会发现，&lt;code&gt;/authenticate&lt;/code&gt; 里面有好几个包含了 Profile 的字段，分别是 &lt;code&gt;availableProfiles&lt;/code&gt;、&lt;code&gt;selectedProfile&lt;/code&gt; 和 &lt;code&gt;user&lt;/code&gt;。下面我稍微说一下这几个字段的功能。&lt;/p&gt;
&lt;p&gt;首先，&lt;code&gt;availableProfiles&lt;/code&gt; 中存放的是这个&lt;strong&gt;账号&lt;/strong&gt;下所有可用&lt;strong&gt;角色&lt;/strong&gt;的 Profile，格式为 JSON 数组：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;availableProfiles&quot;: [
  {
    &quot;id&quot;: &quot;不带连字符的 UUID&quot;,
    &quot;name&quot;: &quot;角色名&quot;
  },
  {
    &quot;id&quot;: &quot;d3af753b7cda4666adc2ff9bba85e0eb&quot;,
    &quot;name&quot;: &quot;621sama&quot;
  }
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;需要注意的是，每个&lt;strong&gt;角色 Profile&lt;/strong&gt; 都应该有一个唯一的 &lt;code&gt;id&lt;/code&gt;（格式为不带连字符的 UUID），而不是每个账号一个。而且，虽然官方文档上没有写，其实 &lt;code&gt;/refresh&lt;/code&gt; API 返回的结果应该和 &lt;code&gt;/authenticate&lt;/code&gt; 一样带上 &lt;code&gt;availableProfiles&lt;/code&gt; 这个属性（因为只有第一次密码登录才会请求 &lt;code&gt;/authenticate&lt;/code&gt;，之后进游戏就只会请求 &lt;code&gt;/refresh&lt;/code&gt; 了）。&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;selectedProfile&lt;/code&gt; 字段内容为&lt;strong&gt;被选中&lt;/strong&gt;的角色 Profile。如果这个字段存在，启动器就会&lt;strong&gt;直接&lt;/strong&gt;用这个角色进入游戏。只有在 &lt;code&gt;selectedProfile&lt;/code&gt; 字段不存在时，启动器才会弹出「选择角色」对话框，并根据用户的输入选择不同的角色进入游戏。如果你想要搞支持&lt;strong&gt;单账户多角色&lt;/strong&gt;的 API 的话，可以不用管这个字段（不过当该账号名下只有一个角色的话记得指定 &lt;code&gt;selectedProfile&lt;/code&gt; ，这样启动器就可以直接用这个角色进游戏了）。&lt;/p&gt;
&lt;p&gt;至于 &lt;code&gt;user&lt;/code&gt; 字段是只有在请求时带上了 &lt;code&gt;requestUser&lt;/code&gt; 属性时才会回复的，其中包括被选中角色的 UUID、语言偏好、Twitch 的 AccessToken 等等，一般来说，自己实现 Yggdrasil API 时可以忽略这玩意（而且这个属性对单账户多角色的支持并不好）。&lt;/p&gt;
&lt;h2&gt;加载皮肤与披风&lt;/h2&gt;
&lt;p&gt;这里稍微提一下 Minecraft 使用 Yggdrasil API 时加载皮肤的原理。&lt;/p&gt;
&lt;p&gt;首先你要知道，Minecraft 游戏启动时从启动器那边（i.e. 从命令行）拿到的 API 相关属性只有「AccessToken」、「选中角色的 UUID」以及「选中角色的角色名」这三样东西。获取 Profile 以及加载皮肤是 Minecraft 游戏该做的工作，具体流程如下。&lt;/p&gt;
&lt;h3&gt;获取完整 Profile&lt;/h3&gt;
&lt;p&gt;首先 Minecraft 会请求 API &lt;code&gt;/profiles/minecraft/{uuid}&lt;/code&gt; 获取角色的完整 Profile，差不多长这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;id&quot;: &quot;d3af753b7cda4666adc2ff9bba85e0eb&quot;,
  &quot;name&quot;: &quot;621sama&quot;,
  &quot;properties&quot;: [
    {
      &quot;name&quot;: &quot;textures&quot;,
      &quot;value&quot;: &quot;eyJ0aW1lc3RhbXAiOjE1MDIyMDA5OTAwMjgsInByb2ZpbGVJZCI6ImQzYWY3NTNiLTdjZGEtNDY2Ni1hZGMyLWZmOWJiYTg1ZTBlYiIsInByb2ZpbGVOYW1lIjoiNjIxc2FtYSIsImlzUHVibGljIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly9za2luLmRldi90ZXh0dXJlcy84MzRjYmQ4NDhmMGEyOTAwOGJmNWIxZDU5ZDAyZWNiMWNmMjVkZmQyMWZjODhiZTFjMTgzYzkyNjFmNWZkZDY5In0sIkNBUEUiOnsidXJsIjoiaHR0cDovL3NraW4uZGV2L3RleHR1cmVzLzI5MTE0MzhlODI4MmQ0MGU2ZDY0ZmJlZmQwNzZlZWYwYTkwMWNiOTBkM2RlYWU0MDU3ZmVjNjBjNjZlYjkzZDIifX0sInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlfQ==&quot;,
      &quot;signature&quot;: &quot;Zvox4YClUMHIAMe1tRLV/JmMaGF0pZhkmrigFpo7jOme8f559gZVyBQoTXeZsXn7Hwq5TE0b9m09MzuAGoT7dQ7kxkHA60xvVQXMQlbWP5O+EA8fzOM0hgINe8Qv7hSBG89osr+wWE7pTJ1CIKD6CBoK1a/U9UiCyQuDlO2gnfnXebBDIXJCBMKiowTu1LubZ9EQn7WkgrFD/M7TY+2dr8DOdoq15Pv0EZ2kLO1Gu9y6vOPq+5nAhce/TN/sWGAvfCJJkSYqALBSFh7QkExTJXPM7QHgP++rn96m6/nDe/ND6NwEovwdVqD5KiPnTvzRLkr92QEdZniT6hH2DUrToA==&quot;
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好吧好吧，看到这么多字符先别懵，&lt;code&gt;value&lt;/code&gt; 和 &lt;code&gt;signature&lt;/code&gt; 字段的内容都是 BASE64 编码过的，解码后 &lt;code&gt;value&lt;/code&gt; 字段就是个普通的 JSON 而已。至于 JSON 里是什么内容，就自己去看 wiki 吧。&lt;/p&gt;
&lt;h3&gt;数字签名&lt;/h3&gt;
&lt;p&gt;需要注意的是上述 Profile 中的 &lt;code&gt;signature&lt;/code&gt; 字段。顾名思义，这个字段就是 &lt;code&gt;value&lt;/code&gt; 字段的数字签名。虽然官方 API 只有在指定 &lt;code&gt;unsigned=false&lt;/code&gt; 时才会返回带签名的 Profile，但是目前（截至本文发布）authlib-injector 在服务端未返回数字签名时会出现&lt;a href=&quot;https://github.com/printempw/blessing-skin-server/issues/81&quot;&gt;神秘的错误&lt;/a&gt;，所以还是默认返回 &lt;code&gt;signature&lt;/code&gt; 字段来得好。&lt;/p&gt;
&lt;p&gt;至于数字签名如何生成，其实就是用的 OpenSSL 内置的签名算法。各个平台都有 OpenSSL 库的实现，我这里贴一下 PHP 的示例代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$privateKeyPath = __DIR__.&apos;/key.pem&apos;;

// Load private key
if (! file_exists($privateKeyPath)) {
  throw new IllegalArgumentException(&apos;RSA 私钥不存在&apos;);
}

$privateKeyContent = file_get_contents($privateKeyPath);

$key = openssl_pkey_get_private($privateKeyContent);

if (! $key) {
  throw new IllegalArgumentException(&apos;无效的 RSA 私钥&apos;);
}

openssl_sign($data, $sign, $key);

openssl_free_key($key);

return base64_encode($sign);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他语言大同小异，我就不多赘述了。&lt;/p&gt;
&lt;h3&gt;加载材质&lt;/h3&gt;
&lt;p&gt;拿到角色 Profile，并且验证了数字签名后（签名不对的话不会加载的），Minecraft 游戏就会根据 Profile 中指定的皮肤、披风图片 URL 加载材质。需要注意的是，Minecraft 自带的 authlib 是只会加载 Mojang 官方域名下的材质的（白名单之外的材质地址是不会被加载的），这也是为什么需要 CustomSkinLoader 等皮肤 Mod 的原因。不过 &lt;a href=&quot;https://github.com/to2mbn/authlib-injector/blob/master/configure.sh&quot;&gt;authlib-injector&lt;/a&gt; 自带了对 authlib 的 hack，在配置文件（或者远程配置加载）中直接指定材质加载白名单即可。&lt;/p&gt;
&lt;p&gt;如果一切正常，游戏内就会显示你的自定义皮肤了。&lt;/p&gt;
&lt;h2&gt;加入服务器&lt;/h2&gt;
&lt;p&gt;在 Minecraft 中加入一个服务器时，客户端会向 &lt;code&gt;/join&lt;/code&gt; API 发出一个请求，请求体中包含了 AccessToken、当前角色的 UUID 以及服务器的唯一标识符 &lt;code&gt;serverId&lt;/code&gt;（这玩意如何生成不用我们操心，Minecraft 游戏里会搞好的，你只管存这个就行了）。&lt;/p&gt;
&lt;p&gt;在后端实现上，一般来说就是在 Redis 这类内存数据库中放一个键值对，具体数据结构你自己想。&lt;/p&gt;
&lt;p&gt;向 Yggdrasil API 发送完 &lt;code&gt;join&lt;/code&gt; 请求后，Minecraft 客户端会向要加入的那个游戏服务器发送一个请求（这部分我们不用操心），服务器收到加入请求后，会向 Yggdrasil API 发送一个 &lt;code&gt;hasJoined&lt;/code&gt; 请求（Query String 中包含角色名、IP 以及服务器唯一标识符），如果该用户已经加入了服务器（也就是判断数据库中有没有之前 &lt;code&gt;join&lt;/code&gt; 时添加的记录），那就返回角色的完整 Profile，同时服务器允许用户进入。&lt;/p&gt;
&lt;p&gt;这也就是为什么客户端和服务端同样需要使用 authlib-injector hack 的原因，因为我们要确保两者请求的都是同一个 API，这样才能起到一个维护登录状态的功能。&lt;/p&gt;
&lt;h2&gt;经常用到的 API&lt;/h2&gt;
&lt;p&gt;虽然 Yggdrasil 规范中定义了很多 API，但是其实日常游戏中用到的没几个，这里列举一些频繁使用的 API，也方便诸君知道哪里该认真开发哪里可以小小偷懒一下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 初次登录时，用账号密码拿到 AccessToken
POST /authserver/authenticate
 之后的登录都是直接用这个 API 签发新的令牌
POST /authserver/refresh
 加入服务器
POST /sessionserver/session/minecraft/join
 验证是否加入了服务器
GET  /sessionserver/session/minecraft/hasJoined
 获取玩家完整 Profile
GET  /api/profiles/minecraft/{uuid}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他 API 感觉都是几万年用不到一次的，很神秘。&lt;/p&gt;
&lt;h1&gt;后记&lt;/h1&gt;
&lt;p&gt;上周折腾了好几天这玩意，写篇博文记录一下，既能理清自己的思路，还有可能帮到后来人~~（花时间研究了东西，却没人知道，多亏啊）~~，何乐而不为呢 :P&lt;/p&gt;
&lt;h2&gt;参考链接&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;http://wiki.vg/Authentication&lt;/li&gt;
&lt;li&gt;http://wiki.vg/Protocol_Encryption#Authentication&lt;/li&gt;
&lt;li&gt;http://wiki.vg/Mojang_API&lt;/li&gt;
&lt;li&gt;https://github.com/to2mbn/authlib-injector/&lt;/li&gt;
&lt;li&gt;https://zh.wikipedia.org/wiki/通用唯一识别码&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xbgtalk.biz/2015/11/03/php-rsa-encode-decode-sign/&quot;&gt;php-rsa - 加密解密和签名&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://printempw.github.io/minecraft-yggdrasil-api-third-party-implementation/blessing-skin-plugins/yggdrasil-api&quot;&gt;blessing-skin-plugins/yggdrasil-api&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;文章更新日志&lt;/h2&gt;
&lt;p&gt;具体的修改可以查看这篇博客在 GitHub 上源码的 &lt;a href=&quot;https://github.com/prinsss/prinsss.github.io/commits/source/source/_posts/minecraft-yggdrasil-api-third-party-implementation.md&quot;&gt;历史提交记录&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2018-02-22：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基于最新的 authlib-injector 修改文章&lt;/li&gt;
&lt;li&gt;将具体部署步骤移动至 &lt;a href=&quot;https://github.com/prinsss/yggdrasil-api&quot;&gt;yggdrasil-api&lt;/a&gt; 页面&lt;/li&gt;
&lt;li&gt;同时也更新了 MCBBS 上的 &lt;a href=&quot;http://www.mcbbs.net/thread-718219-1-1.html&quot;&gt;相关帖子&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>你好，好久不见</title><link>https://fuwari.vercel.app/2022/hello-world/</link><guid isPermaLink="true">https://fuwari.vercel.app/2022/hello-world/</guid><pubDate>Thu, 10 Feb 2022 02:25:37 GMT</pubDate><content:encoded>&lt;h1&gt;重新认识一下吧&lt;/h1&gt;
&lt;p&gt;从初一开始捣鼓自己的服务器，从一开始在一台废旧的办公电脑上安装 Windows Server 搭配 Sakura Frp 国外服务器的穿透来使自己的网站能够访问（那时候建站节点还没有收费），后来将系统装成了 CentOS 7，从此就一直泡在 Linux 系统里面了&lt;/p&gt;
&lt;p&gt;那时候 Sakura Frp 的节点对于我家的网络还不是特别的稳定，有一次一个月内换了好几个节点。（也有可能是移动网络的问题）&lt;/p&gt;
&lt;p&gt;后来接触了虚拟主机，陆陆续续换了几家主机商，可最终因为没钱而取消续费&lt;/p&gt;
&lt;p&gt;现在的博客的框架是 &lt;s&gt;Hugo&lt;/s&gt; Hexo + Vercel，优势就是免费，并且我的文章在本地留有备份&lt;/p&gt;
&lt;p&gt;就这样吧。&lt;/p&gt;
&lt;p&gt;感谢你读到这里。&lt;/p&gt;
&lt;p&gt;你好，好久不见&lt;/p&gt;
</content:encoded></item></channel></rss>