[{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/tags/blowfish/","section":"标签","summary":"","title":"Blowfish","type":"tags"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/tags/hugo/","section":"标签","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/","section":"RustyPiano的空间","summary":"","title":"RustyPiano的空间","type":"page"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/tags/","section":"标签","summary":"","title":"标签","type":"tags"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/tags/%E5%8D%9A%E5%AE%A2/","section":"标签","summary":"","title":"博客","type":"tags"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/categories/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/","section":"分类","summary":"","title":"博客搭建","type":"categories"},{"content":"距离上次更新博客，已经过去了一年多。\n趁着最近重新拾起写作的念头，我顺手检查了一下博客的技术状态——结果发现积累的问题比预想的要多。这篇文章就记录一下这次升级的过程和踩到的坑。\n检查出了哪些问题 # 博客用的是 Hugo + Blowfish 的组合。一年多没动，Hugo 和主题都更新了不少版本，配置文件也出现了一些历史遗留问题。\n主要发现了以下几类问题：\n版本严重滞后\n项目 当时版本 最新版本 Blowfish 主题 v2.89.1 v2.98.0 Hugo（Vercel 部署） 0.140.0 0.156.0 更严重的是，Blowfish v2.89.1 之后的版本将 Hugo 最低要求提升到了 0.141.0，而 Vercel 上部署的版本恰好是 0.140.0，意味着每次部署都会触发版本警告，甚至出现功能缺失。\n已编译的 CSS 缺失\nBlowfish 主题使用 Tailwind CSS v4 构建样式，需要在本地执行 npm 编译后将生成的 assets/css/compiled/main.css 提交到仓库。由于一年多没有更新，这个编译步骤一直没有执行，仓库里这个文件是空的。好在 Vercel 部署不依赖这个文件重新编译（它只运行 Hugo），所以线上样式一直正常——但只要主题升级，这个文件就必须重新生成。\n过时的自定义 partial\n为了调整文章卡片和元数据的显示，我之前从主题复制了几个 partial 并做了微调。这一年多，主题对这些文件做了相当大的改动，我的版本早已过时：\nlayouts/partials/article-link/card.html：主题完全重写了图片处理逻辑 layouts/partials/article-meta/basic.html：修复了 showDateOnlyInArticle 的判断逻辑 layouts/partials/footer.html：移除了旧版 Hugo resource pipeline 写法（resources.Fingerprint），新版 Hugo 下这段代码会直接报错导致构建失败 其他小问题\ncategories frontmatter 写成了字符串而非数组（Hugo 期望是数组） 一篇测试文章 test.md 的 draft = false，一直处于公开状态 版权年份还停在 2024 升级过程 # 1. 更新 Blowfish 主题 # 主题通过 git submodule 管理，直接切换到 v2.98.0 tag：\ncd themes/blowfish git fetch --tags git checkout v2.98.0 v2.89.1 到 v2.98.0 跨越了 639 个提交，9 个大版本。主要新增功能包括：\n面包屑导航结构化支持（enableStructuredBreadcrumbs） 远程封面图 hotlink 控制（hotlinkFeatureImage） TOC bug 修复和多处 RTL 方向适配改进 Tailwind CSS 升级到 ^4.1.18 2. 重新编译 Tailwind CSS # 主题升级后必须重新编译 CSS，否则新版主题的样式类不会生效：\ncd themes/blowfish npm install cd ../.. ./themes/blowfish/node_modules/.bin/tailwindcss \\ -c ./themes/blowfish/tailwind.config.js \\ -i ./themes/blowfish/assets/css/main.css \\ -o ./assets/css/compiled/main.css 编译完成后生成了 139KB 的 CSS 文件，提交到仓库。\n3. 清理过时的自定义 partial # 对比了三个自定义 partial 与主题新版的差异，发现当初的改动实际上都很小，而主题的更新量很大。决定全部放弃自定义版本，直接使用主题最新版本。\n删除 card.html 和 basic.html，用主题新版的 footer.html 覆盖本地版本。\n4. 更新配置 # vercel.json 中的 Hugo 版本从 0.140.0 升至 0.156.0，module.toml 中将 extended = false 改为 true 并更新最低版本要求。params.toml 中添加了两个新参数。\n5. 清理历史遗留问题 # 修复了两篇文章中 categories 字段的类型（字符串改为数组），将测试文章设为草稿，更新版权年份。\n构建结果 # 本地执行 hugo build，输出：\nTotal in 137 ms 36 个页面，无任何错误。只剩一条可以忽略的警告——主题声明的 max = \u0026quot;0.155.3\u0026quot; 比本地 Hugo 0.156.0 低一个小版本，等主题下次发布时会自动消失。\n总结 # 这次升级的核心教训是：不要让依赖长时间不更新。如果当初每隔一两个月小幅跟进，每次的改动量会很小，也不会积累这么多自定义 partial 与主题的分叉问题。\n另外，自定义主题的 partial 要保持克制——改动越多，跟进上游更新的成本就越高。如果改动很小，有时候不如直接不覆盖，等主题本身支持了再说。\n博客重新上线了，希望这次能坚持更新。\n","date":"2026年2月20日","externalUrl":null,"permalink":"/posts/blog/blog-update-2026-02/","section":"文章","summary":"博客沉寂超过一年，趁着重新捡起来的机会，做了一次彻底的技术升级：Blowfish 主题跨越 9 个大版本，Hugo 版本同步更新，并清理了几个历史遗留的小问题。","title":"博客重启：沉寂一年后的主题升级记录","type":"posts"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/categories/","section":"分类","summary":"","title":"分类","type":"categories"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/tags/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/","section":"标签","summary":"","title":"技术分享","type":"tags"},{"content":"","date":"2026年2月20日","externalUrl":null,"permalink":"/posts/","section":"文章","summary":"","title":"文章","type":"posts"},{"content":"","date":"2024年12月19日","externalUrl":null,"permalink":"/series/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/","section":"合集","summary":"","title":"博客搭建","type":"series"},{"content":" 本文旨在给小白科普基本概念，如果你已经了解目录中的内容，可以直接跳过。 刚开始接触博客的时候，网上很多教程都只是讲怎么办，不讲是什么和为什么，导致搭建完了都不知道咋回事。为了防止你们跟我当时一样，所以我觉得还是有必要先介绍一下一些基本概念，方便大家更好理解整个流程和背后的原理，也能更好的将这些知识应用到其他网站的搭建上。\n搭建博客的核心要素是服务器和域名，下面我来简单介绍一下这两个概念。\n一、什么是服务器？ 🖥️ # 服务器本质上和你用的电脑没什么区别，只不过一般说来服务器使用的操作系统是 Linux，而且通常会配置一些 Web 服务器软件（如 Nginx、Apache）来提供网站服务，且一般没有图形界面，只能通过命令行操作。\n简单来说，服务器就是一个24小时运行的计算机，存储着你的博客内容，并通过互联网让其他人访问。\n服务器大致可以分为两种：\n虚拟主机：虚拟主机就跟你电脑里的虚拟机一样，它将一台物理服务器分割成多个虚拟的独立空间。它适合刚开始搭建博客的人，配置简单，价格便宜，但性能一般较低，且受其他用户影响。 独立服务器：独立服务器指的是你独占一台物理服务器的资源。它适合需要更多控制和定制化的用户，适合网站流量较大或功能要求较高的博客。 搭建博客需要选择一个服务器，主机提供商有很多，如阿里云、腾讯云、DigitalOcean、Linode等。不同的服务器配置有不同的性能和价格，选择适合自己需求的即可，对于搭建博客来说，一般1核1G的配置就够用了。\n二、什么是域名？ 🌍 # 在互联网上访问网站，实际上是访问运行该网站的服务器。每台服务器都有一个唯一的 IP 地址，这是服务器在网络上的数字标识。用户可以通过 IP 地址直接访问服务器，服务器则根据网站程序将网页内容返回给用户。但是，IP 地址通常是一串数字，例如 192.168.1.1，难以记忆。为了方便用户访问网站，就有了域名。域名是互联网上用于标识网站的地址，类似于现实生活中的门牌号。例如，www.rustypiano.com 就是一个域名，它对应着一个特定的 IP 地址。当用户在浏览器中输入域名时，系统会自动进行 域名解析，将域名转换为对应的 IP 地址，然后才能访问到服务器，获取网页内容。\n域名的购买过程很简单，你可以通过一些域名注册商（如阿里云、腾讯云等）购买一个自己喜欢的域名。一般来说，域名每年需要续费一次。\n三、如何将域名和服务器连接起来？ 🔗 # 购买了服务器和域名后，接下来就是将两者连接起来，称为域名解析。为了让别人通过域名访问到你的博客，你需要在域名注册商的管理后台设置 DNS 记录，将域名指向你购买的服务器的 IP 地址。\n具体来说，你需要：\n登录域名注册商的后台。 找到 DNS 设置选项。 添加 A 记录，将域名指向你的服务器 IP 地址。 TTL（Time To Live） 设置为默认值（一般是 600 秒）：简单解释一下 TTL，它是 DNS 记录的生存时间，单位是秒。设置 TTL 的目的是为了减少 DNS 查询的次数，提高访问速度。 完成这些设置后，经过一段时间（通常是几分钟到几个小时），你就可以通过域名访问到你的博客了。\n四、动态博客与静态博客的区别 ⚡ # 博客系统大体可以分为两类，在搭建博客前需要根据自己的需求选择合适的博客类型：\n动态博客：动态博客通常使用像 WordPress、Typecho、Jekyll 等内容管理系统（CMS）。当访问者访问你的博客时，服务器会根据请求动态生成页面。优点是功能非常强大，能够满足你的各种需求，有完善的后台、用户系统、评论系统、插件系统，适合有复杂需求的用户；缺点是性能较差，通常需要数据库支持。 静态博客：静态博客的内容是提前生成好的 HTML 页面，服务器直接返回静态页面给用户。这样不仅加载速度快，而且不需要数据库，维护简单，适合内容不频繁更新的博客。Hugo、Hexo 等静态网站生成器就属于这种类型。缺点是门槛较高，需要掌握 Markdown、Git、命令行等，功能相对有限，想要集成其他功能需要另外折腾。 对于刚开始搭建博客的朋友来说，如果有服务器和域名，首先推荐动态博客，基本上可以做到开箱即用，有完善的图形化管理界面，不需要掌握太多技术。而且访问量不大的情况下，性能也能满足需求。但对于没有服务器和域名以及想折腾的朋友来说，静态博客也许是入门的不错选择，有很多免费的静态博客托管服务，如 GitHub Pages、Vercel、Netlify 等可以使用。\n五、博客搭建的整体流程 🚀 # 选择服务器和域名：根据预算和需求选择合适的服务器（虚拟主机或独立服务器）以及域名，静态博客可以直接选择免费的静态博客托管服务。 配置服务器环境：通过 SSH 登录到服务器，配置 Web 服务器（如 Nginx、Apache）和 PHP、MySQL 等支持环境（如果你使用动态博客）。 安装博客系统：根据选择的博客类型，安装静态博客生成器（如 Hugo、Hexo）或内容管理系统（如 WordPress、Typecho）。 设置域名解析：将域名指向服务器 IP 地址。 部署和测试：完成博客配置后，测试网站是否能顺利访问。 六、常见问题与小贴士 💡 # 到底选择动态博客还是静态博客？\n动态博客： 需要购买服务器和域名，功能强大，操作相对简单，适合需要复杂功能或计划搭建其他网站的用户。 静态博客： 可以使用免费托管服务，无需购买服务器和域名，适合只需要简单博客、对技术有一定兴趣的用户。 如何选择合适的服务器？\n地区：选择离你用户群体最近的服务器，可以提高访问速度。另外国内的服务器需要备案，如果你没有备案，可以选择国外服务器。 配置：根据自己的需求选择合适的配置，对于刚入门的人来说，虚拟主机是一个性价比高的选择，能有效降低成本。等到博客流量增加时，再考虑升级为独立服务器。 域名是每年都需要续费的吗？\n是的，域名每年都需要续费。大多数注册商会提前提醒你续费，以避免失效。\n如何加速网站加载速度？\n如果你使用静态博客，加载速度本身就很快。如果你使用动态博客，可以考虑启用缓存机制、使用 CDN（内容分发网络）来加速访问速度。\n接下来我会分别从动态博客和静态博客两个方面，详细介绍如何搭建博客，包括如何选择服务器和域名、如何配置服务器环境、如何安装博客系统等。希望这篇文章能帮助到你，让你更好地理解博客搭建的整个流程，也能更好地将这些知识应用到搭建其他网站上。\n","date":"2024年12月19日","externalUrl":null,"permalink":"/posts/blog/blog-setup-basics-for-beginners/","section":"文章","summary":"本文介绍了博客搭建的基本概念，包括服务器、域名和域名解析，帮助新手更好地理解博客搭建的流程和原理。","title":"博客搭建入门：新手指南","type":"posts"},{"content":"","date":"2024年12月19日","externalUrl":null,"permalink":"/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/","section":"标签","summary":"","title":"服务器","type":"tags"},{"content":"","date":"2024年12月19日","externalUrl":null,"permalink":"/series/","section":"合集","summary":"","title":"合集","type":"series"},{"content":"","date":"2024年12月19日","externalUrl":null,"permalink":"/tags/%E5%9F%9F%E5%90%8D/","section":"标签","summary":"","title":"域名","type":"tags"},{"content":"","date":"2024年12月18日","externalUrl":null,"permalink":"/tags/hexo/","section":"标签","summary":"","title":"Hexo","type":"tags"},{"content":" 我的博客搭建之路 🚀 # 五年前，我第一次尝试搭建个人博客。那时候，我对技术几乎一无所知，从最初的 emlog 到 Typecho、WordPress，再到 Hexo，最后我找到了今天的 Hugo。每一步都走得不容易，但也充满了成长的快乐。\n从白嫖虚拟主机到购买自己的域名和服务器 🌐 # 从小学开始，我就接触过一个叫“葫芦侠”的修改器，那时它是一个极客社区，分享如何破解软件、搭建网站、编写软件。虽然现在回头看，那些内容显得非常基础，甚至可以说并不是“正统”方法，但正是通过这些教程，我第一次接触了编程的世界。\n最初，我按照社区里的教程，使用了免费的虚拟主机和三级域名搭建了自己的第一个博客。那时候，我对博客的概念还不清晰，只是觉得能在网上写点东西，给别人看看，已经是很大的成就了。\n那时，我没有自己的电脑，博客的搭建全靠手机编辑代码。因为不懂 Linux 命令，我只能到处复制教程上的命令来部署应用程序。不过，这种方式让我对 Web 开发和服务器管理有了初步的了解，也学到了域名解析、服务器配置、数据库管理等基础知识。\n但是，免费主机的性能始终不稳定，网站加载速度也很慢。随着我的知识不断增加，我逐渐认识到，只有真正拥有自己的域名和服务器，才能让博客变得更专业、更加稳定。于是，我买了自己的域名，并租用了第一台云服务器。这时，我才第一次接触到如何通过命令行管理服务器，尽管那时我对 Linux 系统还不熟悉，但已经能够自己通过教程搭建一些基础服务了。\n踩坑与成长：从小白到自信的开发者 🛠️ # 在搭建博客的过程中，我踩了不少坑。当时，稍微一个代码或样式的错误就可能让我整天都在调试，不知道问题出在哪里。由于当时没有 AI 辅助，所有的知识都需要通过自己在网上查找资料来解决，虽然问题解决了，但有时我也无法理解背后的原理。\n但正是这些坑，让我学会了如何从零开始查找资料、调试环境，逐渐掌握了基础的 Linux 操作命令（如 ls, cd, chmod），并能够搭建一些常见的 Web 应用。每一次解决问题，都让我更加自信，并且对 Web 开发和系统运维有了更深入的理解。\n动态博客与静态博客的选择：哪一个更适合你？ ⚙️ # 博客系统大体可以分为两类：动态博客系统 和 静态博客系统。\n动态博客（如 WordPress、Typecho）通常开箱即用，提供图形化管理界面，方便用户直接在后台编辑文章。它们能够快速部署，但需要数据库支持，也需要定期维护服务器和更新插件。常见的缺点是对服务器资源的消耗较大，且因为内容存储在数据库中，迁移和备份也不如静态博客方便。\n静态博客（如 Hexo、Hugo）则将 Markdown 文件转换为静态的 HTML 页面，不需要数据库支持，生成的页面直接由服务器提供，速度极快，也不需要经常进行维护。静态博客系统适合那些喜欢极简和轻量级博客的人，但对于普通用户来说，可能需要掌握 Markdown、Git、命令行等技术，门槛相对较高。\n我从最初使用动态博客系统开始，像 WordPress 和 Typecho 这类博客系统虽然容易上手，但当时并不懂静态博客的存在。我更喜欢的是快速搭建和管理，不用太多配置，所以我一直使用动态博客。\n但随着时间的推移，我开始意识到静态博客系统的优点。WordPress 的缺点在于需要消耗更多服务器资源，而且请求页面时需要经过服务器处理，导致页面加载较慢。而静态博客将内容直接存储为 Markdown 文件，文件管理和版本控制都更加便捷，迁移时也不会出现数据库迁移的问题。此外，静态博客的页面加载速度更快，无需复杂的数据库查询，整个系统更轻便。\nHexo vs. Hugo：为何从 Hexo 转向 Hugo 💡 # 我最初选择了 Hexo，它的上手相对容易，社区插件和主题也非常丰富。然而，随着使用时间的增加，我决定转向 Hugo，主要有以下几个原因：\n速度：Hugo 是用 Go 语言写的，因此生成静态页面的速度非常快。相比 Hexo，Hugo 在大规模内容生成时的性能优势更加明显。 灵活性：Hugo 提供了更多的自定义选项，模板和功能更具扩展性。我可以更加自由地调整页面结构，满足个人需求。 简洁性：Hugo 的配置相对简单，没有那么多复杂的插件和依赖，整体结构更为清晰。 对于我来说，Hugo 更加符合我的需求，尤其是在需要大量内容生成时，Hugo 的速度和效率无可比拟。\n未来的分享：帮助每个人拥有自己的博客 🌟 # 搭建博客的过程充满挑战，每一个技术难点的解决都让我更加深入理解 Web 开发和系统运维的知识。我希望通过这个博客，分享我在搭建过程中积累的经验，帮助更多的人能够轻松搭建起属于自己的个人网站。\n接下来，我将分享一些实用的技巧，包括如何购买域名、如何选择服务器、如何使用 Hugo 进行博客部署，甚至是如何实现无服务器部署，帮助你轻松实现个人博客的搭建。\n感谢你阅读这篇文章！如果你对博客搭建感兴趣，欢迎关注我的博客，我们一起交流，一起成长！ ✨\n","date":"2024年12月18日","externalUrl":null,"permalink":"/posts/blog/my-blog-building-journey/","section":"文章","summary":"分享我从零开始搭建博客的历程，探讨动态与静态博客的优缺点，以及 Hexo 和 Hugo 的对比。","title":"我的博客搭建之路","type":"posts"},{"content":"你好！我是 RustyPiano，一个热衷于探索计算机科学、深度学习和物理学的大学生。通过这个博客，我分享我在学习、工作和生活中积累的经验、想法和资源。🌱\n我的旅程 🚀 # 我目前是一名物理学专业的学生，兴趣广泛，尤其是在编程、系统优化以及搭建各种服务方面 🖥️。虽然我最初没有编程背景，但我通过自学逐渐掌握了 Python、JavaScript 等各种编程语言，并且在多个项目中应用，尤其是在搭建个人网站、自动化工具开发和服务部署等方面 🌐。\n最近，我还开始折腾 NAS（网络附加存储）和各种服务搭建，探索如何通过自建服务器和云端服务提升日常生活和工作的效率 📦💻。这些经历让我更加深入地了解了计算机网络、系统管理和数据存储等领域 ⚙️。\n博客的初衷 ✍️ # RustyPiano 的空间是一个分享我的技术学习和生活感悟的地方 🌟。无论是分享我对计算机科学的理解，还是探讨深度学习在物理实验中的应用，或者是简单记录我在个人项目中的收获，这里都是一个记录与分享的空间 📚。\n你能找到什么？ 🔍 # 技术文章 💡：涵盖从 Python 编程到深度学习模型的各种话题。 生活随笔 📝：记录我在学习和工作的过程中遇到的有趣事物。 资源分享 📖：包括学习资料、工具、课程推荐等。 项目展示 💻：分享我开发的一些工具和项目。 NAS 和服务搭建 🏠：记录我在折腾 NAS 和搭建各种自用服务中的经验和挑战。 感谢你访问我的博客！如果你对我的内容感兴趣，欢迎订阅并与我交流 📬。\n","externalUrl":null,"permalink":"/about/","section":"RustyPiano的空间","summary":"你好！我是 RustyPiano，一个热衷于探索计算机科学、深度学习和物理学的大学生。通过这个博客，我分享我在学习、工作和生活中积累的经验、想法和资源。🌱\n","title":"欢迎来到 RustyPiano 的空间 🎹","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"作者","summary":"","title":"作者","type":"authors"}]