[{"content":"之前写过这个博客没有后台、手机上不好写文章。其实有办法：GitHub 网页版就能发文章，整个过程不需要电脑，也不需要装任何 App。\n原理 这个博客是 Hugo + GitHub Pages，文章就是一个 Markdown 文件。GitHub 的网页版支持直接编辑仓库里的文件，编辑完保存就是一次提交，提交后 GitHub Actions 自动构建部署。\n所以\u0026quot;在手机上写文章\u0026quot; = \u0026ldquo;在 GitHub 网页版新建一个 Markdown 文件\u0026rdquo;。\n操作步骤 1. 打开仓库的 posts 目录\n手机浏览器访问： https://github.com/AntarcticaLin/antarct-blog/tree/main/content/posts\n2. 新建文件\n点右上角 Add file → Create new file。\n文件名规则：文章名.md（用英文或拼音，比如 my-new-post.md）。中文文件名 GitHub 也支持，但英文更保险。\n3. 写内容\n文件开头要有 front matter（文章的\u0026quot;身份证\u0026quot;）：\n+++ title = \u0026#39;文章标题\u0026#39; date = 2026-08-16 # 改成写文章当天的日期 description = \u0026#39;一句话摘要，会显示在搜索结果里\u0026#39; tags = [\u0026#39;tag1\u0026#39;, \u0026#39;tag2\u0026#39;] +++ 正文从这里开始，用 Markdown 写。 正文写好保存，文章就发布了。整个流程约 1 分钟。\n小技巧 手机浏览器打开 GitHub 网页版，用\u0026quot;桌面版网站\u0026quot;模式，界面更好操作 先写一篇测试文章试试流程，成功后再删掉 图片暂时不方便传，手机发文先以文字为主 没灵感的时候可以先把标题和 front matter 写好，正文慢慢填，随时保存（GitHub 允许中途保存为草稿，只要文件不推送到 main 就行——新建文件时选 Create a new branch 即可，之后合并） 局限性 GitHub 网页版的编辑器比 VS Code 弱，没有实时预览 图片上传麻烦（GitHub 支持拖拽上传，但手机上不太好操作） 每次保存就是一次提交，GitHub Actions 会重新部署，频繁保存会触发多次构建（GitHub 免费版 Actions 有额度，个人博客完全够用） 对偶尔想记点东西的场景，这个方案足够了。正经写长文还是电脑上舒服，但\u0026quot;手机只能看不能写\u0026quot;的痛点算解决了。\n","permalink":"https://antarct.qzz.io/posts/mobile-blogging/","summary":"\u003cp\u003e之前写过这个博客没有后台、手机上不好写文章。其实有办法：\u003cstrong\u003eGitHub 网页版就能发文章\u003c/strong\u003e，整个过程不需要电脑，也不需要装任何 App。\u003c/p\u003e","title":"如何用手机更新这个博客"},{"content":"这个博客的简介里写着\u0026quot;用文字对抗遗忘，用分享连接世界\u0026quot;。听起来有点大，但这一年写下来，我发现这句话比我当初写它时想象的更诚实。\n写着写着就明白了 很多事在脑子里是一团浆糊，写下来才变成观点。\n我在关于页写过：\u0026ldquo;把想不明白的事写下来，写着写着就明白了。\u0026ldquo;这不是修辞。我搭博客时的很多决定——为什么不用 WordPress、为什么接受免费域名、为什么坚持 Git 管理文章——都是在写的过程中才真正想清楚的。\n写的过程强制你面对自己没想透的部分。你会发现一个论点写着写着站不住脚，或者一个理由其实是另一个理由的借口。这些在脑子里永远不会被发现。\n对抗遗忘是真实的 程序员都懂：三个月前的代码，注释不写就忘。思想也一样。\n我翻自己一年前的文章，有些当时觉得理所当然的判断，现在看已经不那么确定了——比如对免费域名的乐观。但重要的是，我能看到自己\u0026quot;当时为什么这么想\u0026rdquo;。这比\u0026quot;现在正确\u0026quot;更有价值。\n博客是我的外部记忆。搜索引擎收录它，GitHub 备份它，就算本地硬盘炸了，git clone 一下，记忆还在。\n分享是副产品 我最初以为写博客是为了分享，后来发现分享只是副产品。\n写的时候并不知道谁会看，甚至不确定有没有人看。但写下来的东西放在那里，偶尔收到一条评论、一封邮件说\u0026quot;你的文章帮到我了\u0026rdquo;，那种连接是真实的——它让\u0026quot;被看到\u0026quot;从抽象的愿望变成了具体的时刻。\n写就是了 这一年最大的教训：不要等\u0026quot;准备好了\u0026quot;再写。\n第一篇文章不完美，语法有错，观点有漏洞。但那又怎样？它是我一年前的真实水平。如果非要等写得好才动笔，那就永远不会开始。\n想写什么就写什么，技术、生活、思考都行。写下来，发出去，然后下一篇会更好。\n","permalink":"https://antarct.qzz.io/posts/why-i-blog/","summary":"\u003cp\u003e这个博客的简介里写着\u0026quot;用文字对抗遗忘，用分享连接世界\u0026quot;。听起来有点大，但这一年写下来，我发现这句话比我当初写它时想象的更诚实。\u003c/p\u003e","title":"为什么写博客：用文字对抗遗忘"},{"content":"学了无数次 Git，记住的就那么几个命令。这是我每天真正在用的：\n核心循环 git status # 先看看改了什么 git add -A # 全部暂存 git commit -m \u0026#34;feat: xxx\u0026#34; # 提交 git push # 推送 就这四个。\n分支 git checkout -b feature/xxx # 开新分支 git checkout main # 切回主分支 git merge feature/xxx # 合并 git branch -d feature/xxx # 删掉已合并的分支 命名规范：feature/xxx、fix/xxx、refactor/xxx。\n拉取代码 git pull --rebase 我配了 pull.rebase true，所以直接 git pull 就是 rebase 模式。好处是提交历史是直线，没有多余的 merge commit。\nrebase 冲突了怎么办：\n# 解决文件冲突 git add . git rebase --continue 搞不定就 git rebase --abort 回到之前的状态。\n撤销 这是 Git 里最有用的知识——不同状态用不同命令：\n状态 命令 改了还没 add git restore 文件名（旧写法：git checkout -- 文件名） 已经 add 了 git reset HEAD 文件名 已经 commit 了 git reset --soft HEAD~1 已经 push 了 git revert HEAD（不是 reset） 记住 git revert 而不是 git reset 去撤销已经推送的提交——reset 会改写历史，其他人会遭殃。\n看历史 git log --oneline # 简洁版 git log --oneline --graph # 带分支图 我配了别名：\ngit config --global alias.lg \u0026#34;log --oneline --graph --all\u0026#34; 现在用 git lg 看所有分支的拓扑。\n.gitignore 每个项目第一时间配 .gitignore。我遇到过同事把 .env 提交到仓库的事，密钥全在 GitHub 上裸奔。\n.env node_modules/ build/ .idea/ .DS_Store 一些习惯 提交信息按 Conventional Commits 规范：feat: fix: chore: docs:。不是为了好看，是为了以后能 git log --grep \u0026quot;feat\u0026quot; 快速筛选 一个提交只做一件事。\u0026ldquo;修复登录页白屏和更新 README\u0026rdquo; 应该拆成两个提交 git push 前先 git pull --rebase，避免推送被拒绝 不确定的命令先用 git xxx --help 看文档 这套流程配合 Hugo 就是完整的博客工作流——写完 git push 自动部署，具体见我为什么选 Hugo + GitHub Pages 搭博客。\nGit 不需要背命令，记住 add → commit → push 这个循环，其他随用随查就行。\n","permalink":"https://antarct.qzz.io/posts/git-basics/","summary":"\u003cp\u003e学了无数次 Git，记住的就那么几个命令。这是我每天真正在用的：\u003c/p\u003e","title":"工作中真正在用的 Git 命令"},{"content":"Markdown 没什么好教的，语法就那么多。说几个我写博客时注意到的小事情。\n标题 Markdown 本身可以写一级标题，但在这个博客里，PaperMod 已经把文章标题渲染成一级标题，所以正文从 ## 开始写，层级更清楚。\n# 和标题文字之间一定要空格，否则有些渲染器不认。##标题 → 改成 ## 标题。\n列表 有序列表的每一项我都写 1.。大部分渲染器会自动递增编号，调整顺序时不用改数字：\n1. 第一项 1. 第二项 1. 第三项 链接 链接描述文字不要写\u0026quot;点击这里\u0026quot;或\u0026quot;详情\u0026quot;。写有意义的话：\n❌ 详情请看这里 ✅ 详情请看 [Hugo 官方文档](https://gohugo.io) 屏幕阅读器会一条条读链接，\u0026ldquo;点击这里\u0026quot;没有任何上下文。\n代码块 代码块一定要标注语言。不标的话没有语法高亮，代码看起来一片灰：\ndef hello(): print(\u0026#34;hi\u0026#34;) 纯文本内容 图片 图片放 static/images/ 下，引用路径 /images/xxx.jpg。写的时候我习惯在图片下面加一行说明：\n![Hugo 目录结构](/images/hugo-dir.jpg) *`hugo new site` 生成的目录* Front matter 我会给每篇文章写 description。它会出现在 RSS 和搜索引擎结果里；不填时 Hugo 通常会截取文章前几句，有时不够完整。\ndescription: \u0026#34;没多少技巧，但有些小细节\u0026#34; tags: [\u0026#34;writing\u0026#34;, \u0026#34;markdown\u0026#34;] 我也会补上 tags，让 PaperMod 生成标签导航，方便读者找到同类文章。\n写作流程 我不用任何 Markdown 编辑器。VS Code 写，Hugo server 实时预览，git push 发布。写完后第二天再看一遍——当天检查永远发现不了问题。\n这套流程跑在 Hugo + GitHub Pages 上，选型过程见我为什么选 Hugo + GitHub Pages 搭博客，部署相关的 Git 命令见工作中真正在用的 Git 命令。\n","permalink":"https://antarct.qzz.io/posts/markdown-guide/","summary":"\u003cp\u003eMarkdown 没什么好教的，语法就那么多。说几个我写博客时注意到的小事情。\u003c/p\u003e","title":"我写博客的 Markdown 习惯"},{"content":"去年想搭博客，看了几个方案：\nWordPress — 太臃肿，还得租服务器。而且 WordPress 被攻击的新闻看多了，不想给自己找事。\nHexo — 朋友在用，说文章多了构建越来越慢。我看他博客有几百篇，每次部署要等十几秒，对我来说能忍，但还是想找个更快的。\nGhost — 界面确实漂亮，但还是要服务器，免费版限制太多。\nHugo — 同事推荐的。一个 .exe 搞定所有，不用装 Node、Ruby、PHP。我试了一下 hugo new site 到 hugo server 不到一分钟，当场就定了。\n搭博客的过程 实际搭起来比想象中简单：\n装 Hugo Extended 版（我当时用的主题需要它处理 SCSS，第一次装错版本后构建才报错） hugo new site 创建项目 装 PaperMod 主题（Git submodule 的方式，方便以后升级） 配 GitHub Actions 自动部署到 GitHub Pages 绑域名 全部弄完大概半小时。之后每次写文章就是：hugo new content posts/xxx.md → 写完 → git push，GitHub Actions 自动部署。\n用了一年的感受 好的方面：\n构建很快，普通博客通常几乎感觉不到等待 Markdown 写东西很专注，不用调格式 零成本，唯一花钱的是域名（其实也是免费的，用的 qzz.io） Git 管理文章，历史记录清晰，不用担心写坏 不爽的方面：\n没有后台，手机没法写文章（有时候想记个灵感，只能开 GitHub 网页版） 图片处理麻烦，得先压缩再放 static/ 下引用 PaperMod 主题虽然不错，但有些小细节还是得自己改 CSS 总结 Hugo + GitHub Pages 适合愿意在本地写 Markdown、懂一点 Git 的人。如果你想要\u0026quot;打开浏览器就能写\u0026quot;的体验，可能 Ghost 或 WordPress 更合适。但对我来说，用了一年了，没想过换。\n相关阅读：我的 qzz.io 免费域名用了大半年 讲了域名这块的取舍；我写博客的 Markdown 习惯 讲写作细节；日常的 Git 操作见工作中真正在用的 Git 命令。\n","permalink":"https://antarct.qzz.io/posts/hugo-blog-tutorial/","summary":"\u003cp\u003e去年想搭博客，看了几个方案：\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWordPress\u003c/strong\u003e — 太臃肿，还得租服务器。而且 WordPress 被攻击的新闻看多了，不想给自己找事。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHexo\u003c/strong\u003e — 朋友在用，说文章多了构建越来越慢。我看他博客有几百篇，每次部署要等十几秒，对我来说能忍，但还是想找个更快的。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGhost\u003c/strong\u003e — 界面确实漂亮，但还是要服务器，免费版限制太多。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHugo\u003c/strong\u003e — 同事推荐的。一个 .exe 搞定所有，不用装 Node、Ruby、PHP。我试了一下 \u003ccode\u003ehugo new site\u003c/code\u003e 到 \u003ccode\u003ehugo server\u003c/code\u003e 不到一分钟，当场就定了。\u003c/p\u003e","title":"我为什么选 Hugo + GitHub Pages 搭博客"},{"content":"这个博客的域名 antarct.qzz.io 是免费域名，来自 DigitalPlat FreeDomain 项目，用了大半年了，目前一切正常。\n怎么来的 去年搭博客时不想花钱买域名——不是花不起，是觉得万一博客没坚持下来，域名白买了。\n搜了一圈免费域名方案：\nFreenom（.tk .ml 等）— 曾经最火，但已经被回收了，现在注册不了 EU.org — 波兰的免费域名，审核要等很久，我等了两周没消息放弃了 DigitalPlat FreeDomain — 操作简单，当天生效，就它了 DigitalPlat 注册流程 我在 dash.domain.digitalplat.org 注册账号，填了用户名、邮箱、WHOIS 信息（用英文填的，地址没写真实门牌号），然后申请了 antarct.qzz.io。\n整个流程很简单：\n注册账号 → 验证邮箱 去 Dashboard → Register Domain → 输入前缀 → 选后缀 → 确认 配 DNS 第三步最麻烦。DigitalPlat 不提供 DNS 托管，得自己去 Cloudflare 或者 DNSPod 配 Nameserver。我用的 Cloudflare，添加域名后它给了两个 Nameserver 地址，填回 DigitalPlat 的控制面板就好了。\n坑：注册完后不要立刻去 Cloudflare 添加域名——DNS 还没生效，Cloudflare 会报错说查不到记录。等 10-30 分钟再去。\n用了大半年的感受 好的方面：\n一直稳定，没掉过链子 HTTPS 正常（Cloudflare 代理的） 截至 2026 年 6 月，搜索引擎收录正常 需要注意的：\n有效期一年，到期前 120 天才能续期。我在手机日历设了提醒 有自动续期脚本，但我没用——怕脚本哪天突然不能用了反而不如自己手动续可靠 Telegram 官方群被入侵过，别信上面的任何消息 总结 如果你只是想搭个个人博客或测试项目，免费域名完全够用。我现在用了大半年，没遇到任何问题。即使哪天这个域名不能用了，也就换个域名的事——文章数据在 GitHub 上丢不了。\n毕竟，git push 才是真正的\u0026quot;域名\u0026quot;。\n相关阅读：整体方案见我为什么选 Hugo + GitHub Pages 搭博客，日常部署用的 Git 操作见工作中真正在用的 Git 命令。\n","permalink":"https://antarct.qzz.io/posts/free-domain-guide/","summary":"\u003cp\u003e这个博客的域名 \u003ccode\u003eantarct.qzz.io\u003c/code\u003e 是免费域名，来自 DigitalPlat FreeDomain 项目，用了大半年了，目前一切正常。\u003c/p\u003e","title":"我的 qzz.io 免费域名用了大半年"},{"content":"你好，我是南极LIN，一个开发者。\n这个博客记录三样东西：技术、生活和思考。正如首页写的：用文字对抗遗忘，用分享连接世界。\n技术：写真正在工作中用到的工具和方法，尽量是踩过坑之后的第一手经验，不写重复的教程。 生活：想到什么写什么，随缘更新。 思考：把想不明白的事写下来，写着写着就明白了。 博客用 Hugo + GitHub Pages 搭建，纯静态、零成本，源码在 GitHub。\n想交流的话，可以在 GitHub 上找到我：@antarctlin。\n","permalink":"https://antarct.qzz.io/about/","summary":"\u003cp\u003e你好，我是\u003cstrong\u003e南极LIN\u003c/strong\u003e，一个开发者。\u003c/p\u003e\n\u003cp\u003e这个博客记录三样东西：技术、生活和思考。正如首页写的：用文字对抗遗忘，用分享连接世界。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e技术\u003c/strong\u003e：写真正在工作中用到的工具和方法，尽量是踩过坑之后的第一手经验，不写重复的教程。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e生活\u003c/strong\u003e：想到什么写什么，随缘更新。\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e思考\u003c/strong\u003e：把想不明白的事写下来，写着写着就明白了。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e博客用 Hugo + GitHub Pages 搭建，纯静态、零成本，源码在 \u003ca href=\"https://github.com/AntarcticaLin/antarct-blog\"\u003eGitHub\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e想交流的话，可以在 GitHub 上找到我：\u003ca href=\"https://github.com/antarctlin\"\u003e@antarctlin\u003c/a\u003e。\u003c/p\u003e","title":"关于"}]