<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>博客运营 | 元吉的博客</title>
	<atom:link href="https://blog.yuanji.dev/categories/meta/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.yuanji.dev</link>
	<description>Yuanji&#039;s Blog</description>
	<lastBuildDate>Mon, 03 Nov 2025 14:15:36 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.yuanji.dev/wp-content/uploads/2025/10/icon_512x512-300x300.png</url>
	<title>博客运营 | 元吉的博客</title>
	<link>https://blog.yuanji.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>博客更新：从 Hugo 转到 WordPress</title>
		<link>https://blog.yuanji.dev/posts/blog-updates-switch-from-hugo-to-wordpress/</link>
					<comments>https://blog.yuanji.dev/posts/blog-updates-switch-from-hugo-to-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Mon, 03 Nov 2025 14:15:35 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=585</guid>

					<description><![CDATA[以前就订阅我博客的朋友在读到这篇文章的时候可能注意到了我的博客怎么突然大变样了。没错我用了几天时间基本把之前基 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">以前就订阅我博客的朋友在读到这篇文章的时候可能注意到了我的博客怎么突然大变样了。没错我用了几天时间基本把之前基于静态站点生成器 <a rel="noopener" target="_blank" href="https://gohugo.io/">Hugo<span class="fa fa-external-link external-icon anchor-icon"></span></a> 的博客迁移到了目前基于 <a rel="noopener" target="_blank" href="https://wordpress.org">WordPress<span class="fa fa-external-link external-icon anchor-icon"></span></a> 的动态博客上来了。</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">原因</a></li><li><a href="#toc2" tabindex="0">你好 WordPress</a></li><li><a href="#toc3" tabindex="0">谢谢 Hugo</a></li><li><a href="#toc4" tabindex="0">最后</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">原因</span></h2>



<p class="wp-block-paragraph">其实不管是使用 Hugo 还是 WordPress，对于我来说一个写博客的程序都是为了自己能多记录，勤记录。通过阅读以前的文章，我发现自己花了很多时间来折腾博客本身，通过这些折腾，有意无意地让我这个博客差不多也更新了近 10 年，这一次折腾当然也是为了鼓励自己能接着把博客写下去。</p>



<p class="wp-block-paragraph">为什么是 WordPress，我知道很多人尤其是年轻人对于这个老古董的 PHP 程序可能嗤之以鼻，我曾经也一样，但这几年下来我渐渐感觉一件事情能坚持很多年本身就是值得尊重的，而在博客界占有压倒性地位的就是 WordPress，无数人为了让写博客这件事变得容易花费了很多精力。<strong><span class="marker-under">并不说 Hugo 不好，只是不得不说同样编辑、发表一篇文章而言，所见即所得以及图形化界面的 WordPress 要容易很多。</span></strong>或许单纯因为我变老了，时间变少了才做出这一决定也说不准，但要说 10 年之后依然存在的博客程序是什么，我想 WordPress 可能依然是不可取代的一部分。</p>



<p class="wp-block-paragraph">虽然放弃 Hugo 有一种推翻过去 10 年自己做法的艰难感觉，但是为了能在接下来的 10 年继续更容易地更新博客，现在做出这个转变又何尝不是一个好的决定呢？</p>



<h2 class="wp-block-heading"><span id="toc2">你好 WordPress</span></h2>



<p class="wp-block-paragraph">实际上在去年写<a href="https://blog.yuanji.dev/posts/introduction-of-riyumi-com/" data-type="post" data-id="488">介绍我最近做的新网站「日语迷.com」</a>的时候我就已经在这个新的网站上使用上了 WordPress 也是因为这一年下来感觉 WordPress 其实让很多事情变得简单。比如说使用 WordPress 你可以不需要烦恼使用什么评论系统，可以接入邮箱与读者交流，可以很快速地修改文章内容。另外，不需要考虑怎么编译部署博客，一个 Web Server 加一个数据库就转起来的这种感觉是我最熟悉的。这些都是 WordPress 吸引我的原因，它丰富的主题和插件系统对于我来说其实并没有太大的吸引力。</p>



<h2 class="wp-block-heading"><span id="toc3">谢谢 Hugo</span></h2>



<p class="wp-block-paragraph">过去这么多年由 Hugo 编译的我的博客从今天起就告一段落了，过去<a href="/tags/Hugo">我也多次尝试自己写过 Hugo 主题</a>，甚至给上游提交过 Bug 报告。这么多年基本一直<a href="https://blog.yuanji.dev/posts/always-using-latest-hugo-to-build-my-blog/" data-type="post" data-id="335">使用着最新版的程序编译自己的博客</a>，虽然时不时有一些小问题发生，但总体上都是非常稳定的。在这里对 Hugo 以及它背后的开发者说一声感谢。</p>



<p class="wp-block-paragraph">最后，按照惯例在博客主题更新或者像是这次连背后的程序都改了的情况下贴上上一代博客的留念截图。</p>



<div class="wp-block-cocoon-blocks-column-2 column-wrap column-2 column-2-2-1-1 layout-box">
<div class="wp-block-cocoon-blocks-column-left column-left">
<figure class="wp-block-image size-large"><a href="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light.png"><img fetchpriority="high" decoding="async" width="800" height="659" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light-800x659.png" alt="" class="wp-image-590" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light-800x659.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light-500x412.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light-300x247.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light-768x633.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-light.png 1208w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">2025 年 11 月之前基于 Hugo 的博客（白天模式）</figcaption></figure>
</div>



<div class="wp-block-cocoon-blocks-column-right column-right">
<figure class="wp-block-image size-large"><a href="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark.png"><img decoding="async" width="800" height="659" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark-800x659.png" alt="" class="wp-image-591" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark-800x659.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark-500x412.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark-300x247.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark-768x633.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji-blog-hugo-dark.png 1208w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption class="wp-element-caption">2025 年 11 月之前基于 Hugo 的博客（夜间模式）</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading"><span id="toc4">最后</span></h2>



<p class="wp-block-paragraph">如果有读者好奇我是怎么做的从 Hugo 到 WordPress 的迁移。虽然这听起来很蠢，但我就是从老博客一篇一篇复制 HTML 粘贴到 WordPress 的编辑器里然后替换掉媒体文件，手动把 110 篇文章给搬了过来，顺便借此机会读一读之前写的文章。接下来可能考虑把 Disqus 上的评论给想办法搬过来，就以后花点儿时间看看能不能写个脚本吧。当然啦，欢迎你来本文下方体验 WordPress 原生自带的评论功能。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-updates-switch-from-hugo-to-wordpress/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>博客更新：头部及分享图显示头像等</title>
		<link>https://blog.yuanji.dev/posts/blog-updates-add-icon-to-header-and-cover/</link>
					<comments>https://blog.yuanji.dev/posts/blog-updates-add-icon-to-header-and-cover/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sat, 15 Feb 2025 11:38:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=520</guid>

					<description><![CDATA[自从上次斥资 1283 日元定制了一个新头像之后，总想着既然有了新的头像就得用起来，这不陆陆续续把一些账号的头 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">自从上次<a href="https://blog.yuanji.dev/posts/new-icon/">斥资 1283 日元定制了一个新头像</a>之后，总想着既然有了新的头像就得用起来，这不陆陆续续把一些账号的头像都换了个遍。</p>



<p class="wp-block-paragraph">这还不够，这周又花了点时间给博客的头部和分享图前也加上这个新头像。</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">在博客头部显示头像</a></li><li><a href="#toc2" tabindex="0">在博客分享图显示头像</a></li><li><a href="#toc3" tabindex="0">检测 HTML 是否合理的动态徽章</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">在博客头部显示头像</span></h2>



<figure class="wp-block-image size-full"><img decoding="async" width="320" height="100" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-old.png" alt="" class="wp-image-521" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-old.png 320w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-old-300x94.png 300w" sizes="(max-width: 320px) 100vw, 320px" /><figcaption class="wp-element-caption">旧博客头部</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="320" height="100" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-new.png" alt="" class="wp-image-522" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-new.png 320w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-header-new-300x94.png 300w" sizes="(max-width: 320px) 100vw, 320px" /><figcaption class="wp-element-caption">新博客头部</figcaption></figure>



<p class="wp-block-paragraph">新旧博客头部的对比如上，如果你也是 Google One 会员的话，你可能留意到我偷了下会员专享的那个彩色圈圈，套在了博客头部的头像上。</p>



<h2 class="wp-block-heading"><span id="toc2">在博客分享图显示头像</span></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="420" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old-800x420.png" alt="" class="wp-image-523" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old-800x420.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old-500x263.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old-300x158.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old-768x403.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-old.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">旧博客分享图</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="420" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new-800x420.png" alt="" class="wp-image-524" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new-800x420.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new-500x263.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new-300x158.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new-768x403.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/blog-ogp-image-new.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">新博客分享图</figcaption></figure>



<p class="wp-block-paragraph">分享图的话除了加上了头像，也趁机改了改之前旧的域名，也换上了一个较为圆润的字体叫做<a rel="noopener" target="_blank" href="https://github.com/ButTaiwan/gensen-font">源泉圓體<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<h2 class="wp-block-heading"><span id="toc3">检测 HTML 是否合理的动态徽章</span></h2>



<p class="wp-block-paragraph">因为期间修改了博客的一些 HTML 结构，一般新的改动上线后我会手动检测一下新的 HTML 是否合理，结果还真出了一些问题，现在已经修复。</p>



<p class="wp-block-paragraph">之前在页面最下方有一个静态图标<a href="https://html5.validator.nu/?doc=https%3a%2f%2fblog.yuanji.dev%2fposts%2fblog-updates-add-icon-to-header-and-cover%2f&amp;showoutline=yes" target="_blank"><img loading="lazy" decoding="async" width="48" height="16" style="margin:0;display:inline" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/html5-validator-badge.svg" alt="HTML5 Validator"></a>，点击这个图标就可以一键打开检测网站直接查看检测结果，这次更进一步通过利用 <a rel="noopener" target="_blank" class="external-link" href="https://shields.io/">Shields.io<span class="fa fa-external-link external-icon anchor-icon"></span></a> 可以在图标上动态显示检验结果，像是这样：<a rel="noopener" target="_blank" href="https://html5.validator.nu/?doc=https%3a%2f%2fblog.yuanji.dev%2fposts%2fblog-updates-add-icon-to-header-and-cover%2f&amp;showoutline=yes"><img decoding="async" loading="lazy" style="margin:0;display:inline" src="https://img.shields.io/w3c-validation/html?targetUrl=https%3a%2f%2fblog.yuanji.dev%2fposts%2fblog-updates-add-icon-to-header-and-cover%2f&amp;style=flat-square" alt="W3C Validation"></a>，如果 HTML 有问题这个图标会自动显示错误数量。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-updates-add-icon-to-header-and-cover/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>博客更新：增加 hugo-notice 功能</title>
		<link>https://blog.yuanji.dev/posts/blog-updates-introduce-hugo-notice/</link>
					<comments>https://blog.yuanji.dev/posts/blog-updates-introduce-hugo-notice/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sun, 05 Jan 2025 11:54:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=506</guid>

					<description><![CDATA[自从上次重写博客的样式以来，一直有一些不痛不痒的坑没有填完，其中有一个就是显示提示、警告框之类的功能。老实说我 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">自从<a href="https://blog.yuanji.dev/posts/be-water-my-friend/">上次重写博客的样式</a>以来，一直有一些不痛不痒的坑没有填完，其中有一个就是显示提示、警告框之类的功能。老实说我不太清楚怎么用中文准确表达这个功能，英文方面好像也乱乱的，比如在 GitHub 的 Markdown 语法里叫 <a rel="noopener" target="_blank" href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts">Alerts<span class="fa fa-external-link external-icon anchor-icon"></span></a>，在 Obsidian 里叫 <a rel="noopener" target="_blank" href="https://help.obsidian.md/Editing+and+formatting/Callouts">Callouts<span class="fa fa-external-link external-icon anchor-icon"></span></a>，在 Material for MkDocs 里叫 <a rel="noopener" target="_blank" href="https://squidfunk.github.io/mkdocs-material/reference/admonitions/">Admonitions<span class="fa fa-external-link external-icon anchor-icon"></span></a>……</p>



<p class="wp-block-paragraph">而在今天要使用的 Hugo 组件又把它叫作 <a rel="noopener" target="_blank" href="https://github.com/martignoni/hugo-notice">Notice<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">hugo-notice 功能展示</a></li><li><a href="#toc2" tabindex="0">使用 hugo-notice</a></li><li><a href="#toc3" tabindex="0">微调 hugo-notice（可选）</a></li><li><a href="#toc4" tabindex="0">快速输入 shortcode 的代码片段（可选）</a></li><li><a href="#toc5" tabindex="0">最后</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">hugo-notice 功能展示</span></h2>



<p class="wp-block-paragraph">总而言之，说了这么多其实这个功能非常常见，大概就是长下面这些样子：</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">这是一条信息。</p>
</div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box alert-box">
<p class="wp-block-paragraph">这是一条警告信息。</p>
</div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="wp-block-paragraph">这是一条注释信息。</p>
</div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box good-box">
<p class="wp-block-paragraph">这是一条提示信息。</p>
</div>



<p class="wp-block-paragraph">突然感觉我这个朴素的博客文章样式一下子鲜艳起来了。而且，这个 hugo-notice 组件<strong>在日间模式和夜间模式下还使用了不同的配色</strong>，完成度很高，这也是我直接拿来主义懒得自己从头写的一个原因。</p>



<h2 class="wp-block-heading"><span id="toc2">使用 hugo-notice</span></h2>



<p class="wp-block-paragraph">看文档有两种使用方法，一是用 Hugo module，另一种是当作 Hugo 的主题放到 themes 目录下。我个人没有用过 Hugo module，就用最简单直接的方法——当作主题导入使用它提供的 shortcode。</p>



<ol class="wp-block-list">
<li>把 <code>hugo-notice</code> 当作一个 git submodule 放到 themes 目录下</li>
</ol>



<pre class="wp-block-code"><code>git submodule add https://github.com/martignoni/hugo-notice.git themes/hugo-notice</code></pre>



<ol start="2" class="wp-block-list">
<li>把 <code>hugo-notice</code> 加到 Hugo 配置文件中 <code>theme</code> 选项的列表中的最左边。比如我的配置像是这样：</li>
</ol>



<pre class="wp-block-code"><code>theme = &#91;"hugo-notice", "futu"]</code></pre>



<ol start="3" class="wp-block-list">
<li>完成了上面两步，基本上就可以使用 hugo-notice 提供的 shortcode 了，基本用法如下：</li>
</ol>



<pre class="wp-block-code"><code>{{&lt; notice info >}}
这是一条信息。
{{&lt; /notice >}}</code></pre>



<p class="wp-block-paragraph">除了 <code>info</code>，还提供了 <code>warning</code>、<code>note</code> 以及 <code>tip</code> 这几种不同的样式可供使用。</p>



<h2 class="wp-block-heading"><span id="toc3">微调 hugo-notice（可选）</span></h2>



<p class="wp-block-paragraph">完成上面的步骤如果你没遇到什么问题，基本上这里的微调并不需要。但如果你本身使用的主题使用的多语言功能不被 hugo-notice 支持，又或者你使用的主题支持的夜间模式不是在 body 标签的 class 属性里加入 <code>dark</code>，你可能需要稍微调整一下相关的代码。比如我这个博客的语言使用了 <code>zh-Hans</code> 以及夜间模式我是在 html 标签的 class 里加入 <code>dark-mode</code>。于是我就 fork 了原来的仓库，在此基础上做了些许修改使它可以与我的博客主题相兼容。感兴趣的话可以查看 <a href="https://github.com/yuanji-dev/hugo-notice/commit/6ff58460fc2ccebddbe9a80eec9694364922bd9a" target="_blank">yuanji-dev/hugo-notice@6ff5846</a> 这个 commit。</p>



<h2 class="wp-block-heading"><span id="toc4">快速输入 shortcode 的代码片段（可选）</span></h2>



<p class="wp-block-paragraph">为了让 Hugo 的 shortcode 在编辑器里用得更容易，我通常会制作一些代码片段（snippet）。虽然我使用 Neovim 的插件来输入这个代码片段，但理论上 VS Code 或者支持 VS Code 代码片段格式的编辑器应该也能用。这样在编辑器输入 <code>h-notice</code> 就可以快速输入这个 shortcode 了。</p>



<pre class="wp-block-code"><code>{
  "Hugo notice shortcode": {
    "prefix": "h-notice",
    "body": &#91;"{{&lt; notice ${1|warning,info,note,tip|} >}}", "${0}", "{{&lt; /notice >}}"],
    "description": "Add notice box to document"
  }
}</code></pre>



<h2 class="wp-block-heading"><span id="toc5">最后</span></h2>



<p class="wp-block-paragraph">本来在写另一篇博客，当时想加入一些提示的话，才发现现在的主题还没有这个功能。结果就花时间找到了 hugo-notice 这个组件，以及又花了点时间写了这篇博客，导致原本在写的那篇博客却被耽搁了。感觉这样的事情经常出现，甚至已经渐渐习惯为了做某件事情，却被做那件事情的途中产生的支线剧情而支配做完了另一件看似毫不相关的事情。（这样的情况，想必读我博客的读者应该不难理解，对吗？）</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-updates-introduce-hugo-notice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>2024 年博客回顾</title>
		<link>https://blog.yuanji.dev/posts/2024-recap/</link>
					<comments>https://blog.yuanji.dev/posts/2024-recap/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Fri, 03 Jan 2025 06:40:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=502</guid>

					<description><![CDATA[去年写了一篇 2023 年博客回顾，没想到时间过得飞快，又一年过去了。为了延续去年的传统，也写一篇 2024  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">去年写了一篇 <a href="https://blog.yuanji.dev/posts/2023-recap/">2023 年博客回顾</a>，没想到时间过得飞快，又一年过去了。为了延续去年的传统，也写一篇 2024 年博客回顾好了。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="429" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot-800x429.png" alt="" class="wp-image-503" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot-800x429.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot-500x268.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot-300x161.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot-768x412.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami-2024-vs-2023-screenshot.png 1362w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">2023、2024 年访问统计对比</figcaption></figure>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">被阅读最多的文章</a></li><li><a href="#toc2" tabindex="0">回顾和展望</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">被阅读最多的文章</span></h2>



<p class="wp-block-paragraph">按照惯例，我下载了 Umami 上统计的信息，使用去年写的 Hugo 的 shortcode 渲染出 2024 年博客文章访问前 10 名大概是这样：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>文章</th><th>发布日期</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td><a href="https://blog.yuanji.dev/posts/anki-the-best-memory-app-for-learning-japanese/">Anki：最强日语单词记忆软件</a></td><td>2019/03/17</td><td>2710</td><td>3089</td></tr><tr><td>2</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-bluesky/">Bluesky 初体验</a></td><td>2024/02/12</td><td>2454</td><td>2819</td></tr><tr><td>3</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-astronvim/">开始使用 AstroNvim</a></td><td>2023/08/25</td><td>2347</td><td>2785</td></tr><tr><td>4</td><td><a href="https://blog.yuanji.dev/posts/fundamental-information-technology-engineer-examination/">日本软考之基本情报技术者</a></td><td>2022/04/16</td><td>1249</td><td>1515</td></tr><tr><td>5</td><td><a href="https://blog.yuanji.dev/posts/setup-wireguard-vpn/">使用 WireGuard 搭建私有网络</a></td><td>2021/01/31</td><td>1341</td><td>1490</td></tr><tr><td>6</td><td><a href="https://blog.yuanji.dev/posts/one-year-of-using-obsidian/">使用 Obsidian 的一年</a></td><td>2024/01/13</td><td>1059</td><td>1224</td></tr><tr><td>7</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-yubikey/">开始使用 Yubikey</a></td><td>2022/10/15</td><td>1024</td><td>1175</td></tr><tr><td>8</td><td><a href="https://blog.yuanji.dev/posts/creating-a-hugo-theme/">动手写一个 Hugo 博客主题</a></td><td>2021/08/29</td><td>828</td><td>1093</td></tr><tr><td>9</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-gotify/">Gotify 介绍和使用指南</a></td><td>2024/10/20</td><td>906</td><td>1062</td></tr><tr><td>10</td><td><a href="https://blog.yuanji.dev/posts/unlock-more-languages-for-sony-a6400/">让 Sony α6400 支持更多语言</a></td><td>2023/07/13</td><td>644</td><td>816</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">今年给那个 shortcode 加了个新功能，可以显示文章的发布日期，可以看到 2024 年写的文章里共有 3 篇文章上榜。</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>点击查看博客 2024 年其他统计数据</summary>
<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>Referrer</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>blog.gimo.me</td><td>2052</td><td>9222</td></tr><tr><td>2</td><td>cn.bing.com</td><td>6258</td><td>7088</td></tr><tr><td>3</td><td>google.com</td><td>5052</td><td>5867</td></tr><tr><td>4</td><td>blog.yuanji.dev</td><td>1263</td><td>5055</td></tr><tr><td>5</td><td>bing.com</td><td>2130</td><td>2425</td></tr><tr><td>6</td><td>google.com.hk</td><td>988</td><td>1147</td></tr><tr><td>7</td><td>v2ex.com</td><td>492</td><td>556</td></tr><tr><td>8</td><td>duckduckgo.com</td><td>318</td><td>372</td></tr><tr><td>9</td><td>github.com</td><td>149</td><td>182</td></tr><tr><td>10</td><td>baidu.com</td><td>104</td><td>173</td></tr></tbody></table></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>操作系统</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>Windows 10</td><td>11281</td><td>21053</td></tr><tr><td>2</td><td>Mac OS</td><td>3980</td><td>7908</td></tr><tr><td>3</td><td>Android OS</td><td>4039</td><td>6737</td></tr><tr><td>4</td><td>Linux</td><td>1608</td><td>3216</td></tr><tr><td>5</td><td>iOS</td><td>1954</td><td>3078</td></tr><tr><td>6</td><td>Windows 7</td><td>95</td><td>140</td></tr><tr><td>7</td><td>Chrome OS</td><td>17</td><td>26</td></tr><tr><td>8</td><td>Windows 8.1</td><td>15</td><td>20</td></tr><tr><td>9</td><td>Windows 8</td><td>12</td><td>12</td></tr><tr><td>10</td><td>Windows Vista</td><td>8</td><td>8</td></tr></tbody></table></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>地区</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>CN</td><td>9588</td><td>15563</td></tr><tr><td>2</td><td>JP</td><td>3476</td><td>7093</td></tr><tr><td>3</td><td>HK</td><td>3430</td><td>6886</td></tr><tr><td>4</td><td>US</td><td>2838</td><td>5677</td></tr><tr><td>5</td><td>SG</td><td>1297</td><td>2295</td></tr><tr><td>6</td><td>TW</td><td>866</td><td>1858</td></tr><tr><td>7</td><td>KR</td><td>155</td><td>304</td></tr><tr><td>8</td><td>CA</td><td>167</td><td>303</td></tr><tr><td>9</td><td>DE</td><td>145</td><td>249</td></tr><tr><td>10</td><td>GB</td><td>119</td><td>235</td></tr></tbody></table></figure>
</details>



<h2 class="wp-block-heading"><span id="toc2">回顾和展望</span></h2>



<p class="wp-block-paragraph">回顾去年一年写的博客，感觉最大的变化是换上了新的域名 blog.yuanji.dev，一个原因是为了和博客的标题保持统一，另外也是因为夏天的时候<a href="https://blog.yuanji.dev/posts/introduction-of-riyumi-com/">做了一个新的网站</a>，想着在日本的生活渐渐稳定下来，准备在那个网站专门用来分享一些日语学习、日本生活的文章。（虽然目前也停更几个月了 😂）</p>



<p class="wp-block-paragraph">至于 2025 年，这个博客就主要分享一些技术相关的记录和一些随笔吧！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/2024-recap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>博客更新：增加分享按钮</title>
		<link>https://blog.yuanji.dev/posts/blog-updates-add-share-buttons/</link>
					<comments>https://blog.yuanji.dev/posts/blog-updates-add-share-buttons/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sat, 06 Jan 2024 10:27:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=450</guid>

					<description><![CDATA[上次在2023 年博客回顾中提到准备给博客文章加上分享按钮，这一次趁着新年假期还没结束，尝试着做了一下，大概花 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">上次在<a href="https://blog.yuanji.dev/posts/2023-recap/">2023 年博客回顾</a>中提到准备给博客文章加上分享按钮，这一次趁着新年假期还没结束，尝试着做了一下，大概花了一下午时间。本文就把这个过程记录一下。</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">分享到哪？</a></li><li><a href="#toc2" tabindex="0">分享按钮的实现方法</a></li><li><a href="#toc3" tabindex="0">纯 HTML + CSS 实现分享按钮</a></li><li><a href="#toc4" tabindex="0">在 Hugo 中启用分享按钮</a></li><li><a href="#toc5" tabindex="0">最后</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">分享到哪？</span></h2>



<p class="wp-block-paragraph">首先摆在面前的一个问题是，我希望把文章都分享到哪？稍微参考了一下一些平时浏览的网站，我大致列出了下面几个，简单附加了我个人对这些网站的看法：</p>



<ul class="wp-block-list">
<li>X（Twitter）：我目前（2024 年 1 月）浏览最多的社交网络</li>



<li>Telegram：我目前（同上）使用最多的通讯软件</li>



<li>豆瓣：我之前最活跃使用的社交网络，目前半隐退中</li>



<li>Reddit：打发时间的好帮手，潜水 10 年以上</li>



<li>Facebook：虽然自己不用，但谈到社交网络就不得不说起的存在</li>



<li>Pocket：似乎是稍后阅读类最知名软件</li>



<li>电子邮件：为了本格互联网使用者</li>
</ul>



<h2 class="wp-block-heading"><span id="toc2">分享按钮的实现方法</span></h2>



<p class="wp-block-paragraph">调查了一些现有网站上的实现方法，发现大体上有两大类：</p>



<ol class="wp-block-list">
<li>使用现成的服务，好处是非常方便，只需要引入一个 JavaScript 脚本，然后在需要的地方添加一个 <code>div</code> 元素即可。目前常见的还在提供服务的有：
<ul class="wp-block-list">
<li><a rel="noopener" target="_blank" href="https://sharethis.com/">ShareThis: Digital Behavioral Data Solutions | Global &amp; Real-Time<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>



<li><a rel="noopener" target="_blank" href="https://www.addtoany.com/">AddToAny: Share Buttons by the Universal Sharing Platform<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>
</ul>
</li>



<li>完全不使用 JavaScript，每个分享按钮就是一个可点击的图标链接。虽然从使用者的角度不如上面简单，但是只要稍微有一些 Hugo 模板和 CSS 的知识，再加上下面这个脚手架网站，自己做一个也并非难事。
<ul class="wp-block-list">
<li><a rel="noopener" target="_blank" href="https://sharingbuttons.io/">Social Media Sharing Buttons. No JavaScript. No tracking. Super fast and easy.<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>
</ul>
</li>
</ol>



<h2 class="wp-block-heading"><span id="toc3">纯 HTML + CSS 实现分享按钮</span></h2>



<p class="wp-block-paragraph">本着让本博客最大限度不依赖于 JavaScript 就能使用大部分功能的宗旨，我当然选择了第二个方法。通过 <a href="https://sharingbuttons.io" target="_blank">https://sharingbuttons.io</a> 生成了一个基本的 HTML 骨架和一个能用的 CSS 之后，魔改之路就开始了。</p>



<p class="wp-block-paragraph">主要的更改大概是下面几个：</p>



<ol class="wp-block-list">
<li>替换最新的图标和配色，最显然的 Twiiter 已经改成 X，Facebook 和 Reddit 等也都有细微改动，通过 <a rel="noopener" target="_blank" href="https://simpleicons.org/">Simple Icons<span class="fa fa-external-link external-icon anchor-icon"></span></a> 可以获得各种品牌最新 Logo 的 SVG 和配色。</li>



<li>添加缺失的服务，比如豆瓣和 Pocket，除了需要跟上面一样获得 Logo 和配色之外，还需要构造分享的 URL，比如豆瓣的像是这样：<code>https://www.douban.com/share/service/?href={{ .Permalink }}&amp;amp;name={{ .Title }}</code>，各家虽然名称不尽相同，但基本都是需要提供链接和一个可选的标题就行。</li>



<li>最后可选的一步就是清理一下最初生成的 HTML 和 CSS，我甚至把 CSS 转写成了 SCSS 以保持本博客主题样式的一贯性。</li>
</ol>



<p class="wp-block-paragraph">代码虽然不复杂但是稍微有点冗长，感兴趣的朋友可以直接参考 <a rel="noopener" target="_blank" href="https://github.com/yuanji-dev/futu/commit/1ce599375e66e524e54f9fb810e9ce315e409b27">feat: add share buttons for post · yuanji-dev/futu@1ce5993<span class="fa fa-external-link external-icon anchor-icon"></span></a> 主题仓库里这个 commit。其实也许可以做得更灵活一些，比如支持在 Hugo 可以按需配置生成分享按钮，不过目前的功能已经够我自已用了。</p>



<h2 class="wp-block-heading"><span id="toc4">在 Hugo 中启用分享按钮</span></h2>



<p class="wp-block-paragraph">在 Hugo 主题里添加了这个分享按钮的功能后，使用起来就很简单了，就像博客的其他一些非主要的功能（比如显示目录、显示相关文章）一样，我提供了相同的启用逻辑：</p>



<ol class="wp-block-list">
<li>如果需要全局所有文章启用分享按钮，就在配置文件（比如 <code>config.toml</code>）里设置 <code>enableShare</code> 为 <code>true</code> 。</li>



<li>如果只需要部分页面启用分享按钮，那就在那些文章的 <a href="https://gohugo.io/content-management/front-matter/" target="_blank">front matter</a> 里设置 <code>enableShare</code> 为 <code>true</code>。</li>



<li>同样地，如果需要在特定页面禁用分享按钮，就在那些文章的 front matter 里设置 <code>enableShare</code> 为 <code>false</code> 。</li>
</ol>



<h2 class="wp-block-heading"><span id="toc5">最后</span></h2>



<p class="wp-block-paragraph">通过差不多一下午的努力，给自己的博客加上了社交属性。虽然不知道多少人会使用，但是不管怎么说从我的角度当然希望自己的文章能被更多的人读到，所以读者朋友们，请毫不犹豫地使用这些分享按钮，分享你觉得有意思的文章给亲朋好友吧！</p>



<p class="wp-block-paragraph">对于那些不使用 Hugo 的朋友，如果也想给自己的网站加上类似的功能，我做了一个<a href="https://blog.yuanji.dev/wp-content/uploads/2025/11/share-buttons-demo.html">单 HTML 文件的 demo</a>，也许你可以直接拿它改一改加到自己的网站。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-updates-add-share-buttons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>2023 年博客回顾</title>
		<link>https://blog.yuanji.dev/posts/2023-recap/</link>
					<comments>https://blog.yuanji.dev/posts/2023-recap/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Mon, 01 Jan 2024 02:06:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=439</guid>

					<description><![CDATA[如果没有记错，这似乎是博客开张以来第一次写这样类似年度总结的文章。考虑到通常总结类型的文章都很无聊，我只挑选两 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">如果没有记错，这似乎是博客开张以来第一次写这样类似年度总结的文章。考虑到通常总结类型的文章都很无聊，我只挑选两点有意思的分享，然后简单回顾一下目前为止的博客情况和今后的展望。</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">被认证的博客</a></li><li><a href="#toc2" tabindex="0">被阅读最多的文章</a></li><li><a href="#toc3" tabindex="0">回顾和展望</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">被认证的博客</span></h2>



<p class="wp-block-paragraph">之前单纯觉得有趣，<a href="https://blog.yuanji.dev/remarks/2022-11-15/">给自己的博客加上了类似 X（Twitter）上的认证标识</a>，一转眼一年多过去了。前几天试着用 Google 搜索了一下自己的博客，没想到还在试运行的 Google 生成 AI（Bard）对我的博客似乎非常了解，在它看来我的博客是通过认证了😂。另外，看起来它已经收录了我最新的博客文章，还擅自（褒义）把一些文章的标题翻译成了日文，看起来似乎是个很勤快的 AI 呢。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="726" height="377" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji_blog_from_bard.png" alt="" class="wp-image-440" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji_blog_from_bard.png 726w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji_blog_from_bard-500x260.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/yuanji_blog_from_bard-300x156.png 300w" sizes="(max-width: 726px) 100vw, 726px" /><figcaption class="wp-element-caption">Bard 眼中的我的博客</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">被阅读最多的文章</span></h2>



<p class="wp-block-paragraph">另一个值得一提的是，2023 年年初<a href="https://blog.yuanji.dev/remarks/2023-02-04/">给博客加了一个自建的统计功能</a>以来，现在一年过去也积累了一些数据。其中最有价值的信息大概是哪些文章的访问量最大，我把前十名列在了下面：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>文章</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td><a href="https://blog.yuanji.dev/posts/2023-vps-usage-report/">我的 2023 年 VPS 使用报告</a></td><td>2384</td><td>2961</td></tr><tr><td>2</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-yubikey/">开始使用 Yubikey</a></td><td>1751</td><td>2063</td></tr><tr><td>3</td><td><a href="https://blog.yuanji.dev/posts/setup-wireguard-vpn/">使用 WireGuard 搭建私有网络</a></td><td>1673</td><td>1871</td></tr><tr><td>4</td><td><a href="https://blog.yuanji.dev/posts/creating-a-hugo-theme/">动手写一个 Hugo 博客主题</a></td><td>1209</td><td>1571</td></tr><tr><td>5</td><td><a href="https://blog.yuanji.dev/posts/anki-the-best-memory-app-for-learning-japanese/">Anki：最强日语单词记忆软件</a></td><td>1031</td><td>1189</td></tr><tr><td>6</td><td><a href="https://blog.yuanji.dev/posts/fundamental-information-technology-engineer-examination/">日本软考之基本情报技术者</a></td><td>894</td><td>1055</td></tr><tr><td>7</td><td><a href="https://blog.yuanji.dev/posts/getting-started-with-astronvim/">开始使用 AstroNvim</a></td><td>719</td><td>842</td></tr><tr><td>8</td><td><a href="https://blog.yuanji.dev/posts/what-do-water-electricity-and-gas-bills-look-like-in-japan/">日本的水、电、燃气账单长什么样？</a></td><td>729</td><td>822</td></tr><tr><td>9</td><td><a href="https://blog.yuanji.dev/posts/creating-a-hugo-theme-2/">动手写一个 Hugo 博客主题（性能篇）</a></td><td>524</td><td>693</td></tr><tr><td>10</td><td><a href="https://blog.yuanji.dev/posts/welcome-to-yuanji-telegram-channel/">Yuanji&#8217;s Channel 开通啦！</a></td><td>587</td><td>656</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">另外一些有关访客来源、操作系统、地区分布等的信息我也放在这里，感兴趣的读者朋友可以自行阅读。</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>点击查看博客 2023 年其他统计数据</summary>
<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>Referrer</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>blog.gimo.me</td><td>3375</td><td>16604</td></tr><tr><td>2</td><td>google.com</td><td>4300</td><td>4957</td></tr><tr><td>3</td><td>v2ex.com</td><td>2203</td><td>2569</td></tr><tr><td>4</td><td>cn.bing.com</td><td>1746</td><td>1986</td></tr><tr><td>5</td><td>google.com.hk</td><td>740</td><td>843</td></tr><tr><td>6</td><td>bing.com</td><td>625</td><td>714</td></tr><tr><td>7</td><td>duckduckgo.com</td><td>226</td><td>256</td></tr><tr><td>8</td><td>disqus.com</td><td>189</td><td>251</td></tr><tr><td>9</td><td>github.com</td><td>179</td><td>228</td></tr><tr><td>10</td><td>riyu.io</td><td>169</td><td>218</td></tr></tbody></table></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>操作系统</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>Windows 10</td><td>7162</td><td>16133</td></tr><tr><td>2</td><td>Mac OS</td><td>3760</td><td>9370</td></tr><tr><td>3</td><td>Android OS</td><td>2467</td><td>4931</td></tr><tr><td>4</td><td>iOS</td><td>2007</td><td>3770</td></tr><tr><td>5</td><td>Linux</td><td>1035</td><td>2361</td></tr><tr><td>6</td><td>Windows 7</td><td>86</td><td>147</td></tr><tr><td>7</td><td>Open BSD</td><td>3</td><td>57</td></tr><tr><td>8</td><td>Chrome OS</td><td>20</td><td>40</td></tr><tr><td>9</td><td>Windows 8.1</td><td>8</td><td>10</td></tr><tr><td>10</td><td>Windows 8</td><td>2</td><td>2</td></tr></tbody></table></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>No.</th><th>地区</th><th>访客</th><th>浏览量</th></tr></thead><tbody><tr><td>1</td><td>CN</td><td>4579</td><td>9535</td></tr><tr><td>2</td><td>HK</td><td>3141</td><td>7576</td></tr><tr><td>3</td><td>JP</td><td>2999</td><td>7118</td></tr><tr><td>4</td><td>US</td><td>2706</td><td>5756</td></tr><tr><td>5</td><td>SG</td><td>926</td><td>2110</td></tr><tr><td>6</td><td>TW</td><td>650</td><td>1397</td></tr><tr><td>7</td><td>CA</td><td>171</td><td>479</td></tr><tr><td>8</td><td>KR</td><td>160</td><td>324</td></tr><tr><td>9</td><td>DE</td><td>160</td><td>314</td></tr><tr><td>10</td><td>FR</td><td>116</td><td>300</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">附：<a href="https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_2023_screenshot.png">Umami 2023 年统计数据截图</a></p>
</details>



<p class="wp-block-paragraph">也许你会好奇上面表格里这么多数字我都是自己一个个打字上去的吗？当然不是，为此我专门做了一个叫做 <code>json2table</code> 的 Hugo Shortcodes，可以通过它直接把网站统计的 JSON 数据渲染成表格，之后可能会单独写一篇文章介绍一下。</p>



<h2 class="wp-block-heading"><span id="toc3">回顾和展望</span></h2>



<p class="wp-block-paragraph">虽然断断续续，但我还是很庆幸 2023 年还在写博客，本文应该是第 90 篇。写着写着也算是写出了一些自己的风格，我自己总结如下：</p>



<ul class="wp-block-list">
<li>博客从主题到写作环境基本稳定下来（基于自己写的 Hugo 主题，用 AstroNvim 书写 Markdown）</li>



<li>博客的内容之间不再那么孤立，文章之间开始出现联系（甚至可以开始写本文这样总结型的文章了）</li>



<li>博客有了一些固定的访问量（目前差不多日均 50 人，100 多浏览量，新文章发布日大概 2 倍）</li>
</ul>



<p class="wp-block-paragraph">通过上面这些观察，我估计在新的 2024 年会开始做一些小的改进，目前想到的有：</p>



<ul class="wp-block-list">
<li>更新目前一些访问量大的文章或是出续集（上面访问量 Top 10 里的文章好几篇都是几年前写的了）</li>



<li>博客文章的主旨尽量明确，每一篇文章尽量只关注一个主题展开</li>



<li>给文章增加鼓励分享的按钮（方便自己以及读者可以分享到社交网络等）</li>



<li>尝试翻译一些文章到英文和日文（看到 Bard 已经主动用日文介绍我的博客而受到启发）</li>
</ul>



<p class="wp-block-paragraph">当然了，不管怎么说，最重要的还是再接再厉继续写下去。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/2023-recap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>给 Hugo 博客添加月历功能</title>
		<link>https://blog.yuanji.dev/posts/adding-calendar-view-for-hugo-blog-posts/</link>
					<comments>https://blog.yuanji.dev/posts/adding-calendar-view-for-hugo-blog-posts/#comments</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sat, 23 Dec 2023 03:36:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=431</guid>

					<description><![CDATA[虽然日本似乎有忙碌的十二月（忙しい師走）的说法，但作为外国人的我反而感觉比较闲。月初的时候翻新了下博客主题，一 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">虽然日本似乎有忙碌的十二月（忙しい師走）的说法，但作为外国人的我反而感觉比较闲。月初的时候翻新了下博客主题，一发不可收拾，又花了点时间给博客整了点新活儿——添加了<a href="https://blog.yuanji.dev/calendar/">月历页面</a>。</p>



<p class="wp-block-paragraph">最早的契机来自身边的书店、超市等，推出了很多月历相关的商品。无意识地感觉到月历这个东西一下子存在感高了起来。另外，可能国内没有这样的习俗，似乎日本在进入 12 月之后，会有一个叫做 <a rel="noopener" target="_blank" href="https://ja.wikipedia.org/wiki/%e3%82%a2%e3%83%89%e3%83%99%e3%83%b3%e3%83%88%e3%82%ab%e3%83%ac%e3%83%b3%e3%83%80%e3%83%bc#%e4%bc%81%e7%94%bb%e3%81%a8%e3%81%97%e3%81%a6%e3%81%ae%e3%82%a2%e3%83%89%e3%83%99%e3%83%b3%e3%83%88%e3%82%ab%e3%83%ac%e3%83%b3%e3%83%80%e3%83%bc">Advent Calendar<span class="fa fa-external-link external-icon anchor-icon"></span></a> 的企划活动，尤其在网络上的技术社区。大体上，这个活动从 12 月的第一天开始，直到圣诞节结束，参加活动的每个人分别负责其中一天，写一篇与某个特定主题相关的文章，比如下面这些：</p>



<ul class="wp-block-list">
<li><a rel="noopener" target="_blank" href="https://adventar.org/calendars/8783">Obsidian Advent Calendar 2023 &#8211; Adventar<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>



<li><a rel="noopener" target="_blank" href="https://adventar.org/calendars/8540">語学・言語学・言語創作 Advent Calendar 2023 &#8211; Adventar<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>
</ul>



<p class="wp-block-paragraph">于是我就想，何不给我自己的博客也加上个月历呢，一方面可以观察一下我过去都在什么时候写博客，另一方面也许有了这么个月历，可以更好地激励我写更多的博客文章呢？</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">使用 FullCalendar</a></li><li><a href="#toc2" tabindex="0">Hugo 布局文件</a></li><li><a href="#toc3" tabindex="0">Hugo 提供 FullCalendar 可用的 events</a></li><li><a href="#toc4" tabindex="0">注意点</a></li><li><a href="#toc5" tabindex="0">总结</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">使用 FullCalendar</span></h2>



<p class="wp-block-paragraph">就像去实体店里买月历一样，要给博客做一个月历功能，我首先想到的去挑选一个现成的。虽然似乎没有看到哪个 Hugo 主题标榜自己有这么个月历功能，不过果然我也不是第一个有这个想法的人，网上已经有一些<a href="https://discourse.gohugo.io/t/calendar-view/5186" target="_blank">类似功能的讨论</a>，通过一番研究比较，我选择了一个基于 JavaScript 的日历库 <a rel="noopener" target="_blank" href="https://fullcalendar.io/">FullCalendar<span class="fa fa-external-link external-icon anchor-icon"></span></a>。</p>



<p class="wp-block-paragraph">虽然这个库提供各种各样丰富的功能，实际上我需要的仅仅是展示一个基本月历而已。所以使用起来并不是太复杂，基本上直接复制下方的官网示例代码，原型就差不多了。</p>



<pre class="wp-block-code html"><code>&lt;!doctype html>
&lt;html lang="en">
  &lt;head>
    &lt;meta charset="utf-8" />
    &lt;script src="https://cdn.jsdelivr.net/npm/fullcalendar@6.1.10/index.global.min.js">&lt;/script>
    &lt;script>
      document.addEventListener("DOMContentLoaded", function () {
        var calendarEl = document.getElementById("calendar");
        var calendar = new FullCalendar.Calendar(calendarEl, {
          initialView: "dayGridMonth",
          events: &#91;],
        });
        calendar.render();
      });
    &lt;/script>
  &lt;/head>
  &lt;body>
    &lt;div id="calendar">&lt;/div>
  &lt;/body>
&lt;/html></code></pre>



<p class="wp-block-paragraph">然后只要想办法往上面示例代码中高亮的 <code>events</code> 里填入实际的数据即可，在我的博客里自然就是博客文章了。</p>



<h2 class="wp-block-heading"><span id="toc2">Hugo 布局文件</span></h2>



<p class="wp-block-paragraph">有了上面使用 FullCalendar 的代码原型后，紧接着产生两个疑问：</p>



<ol class="wp-block-list">
<li>这个显示月历的代码应该放在哪？</li>



<li>应该怎样使用（调用）这个月历？</li>
</ol>



<p class="wp-block-paragraph">因为我之前以前已经有较为丰富的 <a href="https://blog.yuanji.dev/tags/hugo/">Hugo 主题开发经验</a>，要回答这两个问题并非什么难事。</p>



<ol class="wp-block-list">
<li>在 Hugo 博客的目录下创建一个布局文件 <code>layouts/_default/calendar.html</code></li>



<li>在 Hugo 博客的内容目录下随便创建一个 <code>.md</code> 文件，只需要在 front matter 里加入 <code>layout: calendar</code> 即可。比如我想在 <code>/calendar</code> 访问月历，就创建一个 <code>content/calendar/_index.md</code> 这样的文件就可以了。</li>
</ol>



<h2 class="wp-block-heading"><span id="toc3">Hugo 提供 FullCalendar 可用的 events</span></h2>



<p class="wp-block-paragraph">通过上面两步的分析，大体上解决思路都已经确定，接下来就是按部就班让 Hugo 生成一个 JavaScript 对象 <code>events</code> 使得 FullCalendar 可以读取即可。整个 <code>events</code> 是一个数组，数组中的元素 <a href="https://fullcalendar.io/docs/event-object" target="_blank">Event Object</a> 可以点击查看官网的文档。</p>



<p class="wp-block-paragraph">虽然 <code>event</code> 支持很多很多属性可以定制，但对于我的博客来说很简单，我希望在月历上显示两种文章：</p>



<ol class="wp-block-list">
<li>已发布的文章</li>



<li>未来将要发布，目前还是草稿的文章。（也就是我希望督促自己挖的坑啦）</li>
</ol>



<p class="wp-block-paragraph">它们俩在 FullCalendar 层面的区别，仅仅是颜色不一样，以及未发布的文章没有链接不能点击而已。在 Hugo 里虽然这个代码谈不上多好看，但是也够直白。下面这几行就得到了包含所有上面两类文章的 <code>$events</code> 了 ，之后把它们放到 JavaScript 代码里即可。</p>



<pre class="wp-block-code"><code>{{- $events := slice }}
{{- $posts := where .Site.RegularPages "Draft" "eq" false }}
{{- $drafts := where .Site.RegularPages "Draft" "eq" true }}
{{- range $posts }}
  {{- $events = $events | append (dict "title" .Title "start" (time.Format "2006-01-02" .Date) "url" .RelPermalink "allDay" true ) }}
{{- end -}}
{{- range $drafts }}
  {{- $events = $events | append (dict "title" .Title "start" (time.Format "2006-01-02" .Date) "allDay" true "color" "var(--text-muted)" ) }}
{{- end -}}
</code></pre>



<h2 class="wp-block-heading"><span id="toc4">注意点</span></h2>



<p class="wp-block-paragraph">虽然整体上，这个功能并不复杂，但是一些小细节却占用了我不少时间，回想起来大概有下面这几点。</p>



<ol class="wp-block-list">
<li>Hugo 默认会忽略任何草稿文件，所以不改一下默认设置的话，上面的 <code>$drafts</code> 将永远是空值。最简单的方法就是在配置文件里加上：<code>buildDrafts = true</code> 以及 <code>buildFuture = true</code></li>



<li>但是经过上面这么一设置，首页，归档页和 RSS 输出都自动出现了草稿，这是我不希望看到的结果，于是分别修改相应的模板文件。</li>



<li>另外一个小问题是 FullCalendar 默认的点击行为是直接在当前页打开链接，我希望改成在新标签中打开。</li>



<li>因为网络上删库跑路的事情太多了，虽然像这样知名的库不太至于，我还是保险起见将 FullCalendar 里需要的 JS 文件下载到了本博客自己的仓库里。</li>



<li>此外就是一些关于月历显示大小，周末颜色区别，以及多语言之类的微调了。</li>
</ol>



<p class="wp-block-paragraph">代码在此就不一一解释了，总之整个月历功能的实现，我都包含在下面两个 commit 里了，有需要可以自行查看。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/yuanji-dev/nikki/commit/cc5f4cc952a590872bb881528e7122ab921dce7c" target="_blank">feat(theme): add calendar page for posts · yuanji-dev/nikki@cc5f4cc</a></li>



<li><a rel="noopener" target="_blank" href="https://github.com/yuanji-dev/futu/commit/3499b50742ef4e0ebc376e12d6f7331761a74d8f">feat: hide draft page in all list pages · yuanji-dev/futu@3499b50<span class="fa fa-external-link external-icon anchor-icon"></span></a></li>
</ul>



<h2 class="wp-block-heading"><span id="toc5">总结</span></h2>



<p class="wp-block-paragraph">在做完这个小功能之后，我马上新建了包括本文在内的 4 篇草稿，使用自己做的功能的感觉很不错。希望我能让它们准时发布，我甚至开始乐观地估计，基于今年 15 篇博客的数量，明年倍增达到 30 篇也不是难事？</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/adding-calendar-view-for-hugo-blog-posts/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>统计博客的访客</title>
		<link>https://blog.yuanji.dev/posts/blog-visitor-analytics/</link>
					<comments>https://blog.yuanji.dev/posts/blog-visitor-analytics/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sat, 04 Feb 2023 08:01:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=360</guid>

					<description><![CDATA[最近因为工作，日语课以及去年年末的搬家等等，一直没有怎么写博客。虽然它们每一个都可以写上很长一篇，但不知为啥没 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">最近因为工作，日语课以及去年年末的搬家等等，一直没有怎么写博客。虽然它们每一个都可以写上很长一篇，但不知为啥没有什么太大的动力去写。</p>



<p class="wp-block-paragraph">另一方面，这段时间研究了一些其他人怎么做笔记的方式，深受启发，也因此改进了记笔记的方式，很多时候一些记录都放到了自己的笔记本里也就没有特意写到博客上来。如果目前的记笔记方法可以维持下去的话，倒是有机会可以分享一下。</p>



<p class="wp-block-paragraph">不过期间也没有完全闲着，出于好奇在新年伊始（2023/01/02 晚上）的时候给博客安装了一个统计访问的功能。</p>



<p class="wp-block-paragraph">现在一个月过去，差不多也有近千人访问了大概两千多次页面。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="444" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-800x444.png" alt="" class="wp-image-361" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-800x444.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-500x278.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-300x167.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-768x427.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-120x68.png 120w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301-160x90.png 160w, https://blog.yuanji.dev/wp-content/uploads/2025/11/umami_202301.png 1174w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">2023/01 博客访问量统计</figcaption></figure>



<p class="wp-block-paragraph">这个统计的功能是我用 <a rel="noopener" target="_blank" href="https://umami.is/">umami<span class="fa fa-external-link external-icon anchor-icon"></span></a> 自建的，搭建在自己的服务器上，好处大概是比较简单而且可以很好地绕过浏览器去广告插件的规则，所以这个数据应该是比较可信的。另外它可以生成一个公共的页面，感兴趣的朋友可以查看详情：<a rel="noopener" target="_blank" href="https://uma.yuanji.dev/share/JdzqlJyb/Yuanji%27s%20Blog">Yuanji’s Blog 访问统计<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-visitor-analytics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>给博客加上认证</title>
		<link>https://blog.yuanji.dev/posts/blog-verification/</link>
					<comments>https://blog.yuanji.dev/posts/blog-verification/#comments</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 13:24:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=356</guid>

					<description><![CDATA[最近读到这篇博客 Verified Personal Website &#8211; Jim Nielsen’ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">最近读到这篇博客 <a rel="noopener" target="_blank" href="https://blog.jim-nielsen.com/2022/verified-personal-website/">Verified Personal Website &#8211; Jim Nielsen’s Blog<span class="fa fa-external-link external-icon anchor-icon"></span></a> 感觉很有意思。</p>



<p class="wp-block-paragraph">于是我也糊弄上了这么一个认证的徽章，不需任何费用，只需<a rel="noopener" target="_blank" href="https://github.com/yuanji-dev/futu/commit/37d6808dbe85ced5ace3045479a666e20a3ca95b">几行 CSS<span class="fa fa-external-link external-icon anchor-icon"></span></a>。</p>



<p class="wp-block-paragraph">效果如下 👇</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="762" height="272" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/featured_verified_yuanji_blog.png" alt="" class="wp-image-357" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/featured_verified_yuanji_blog.png 762w, https://blog.yuanji.dev/wp-content/uploads/2025/11/featured_verified_yuanji_blog-500x178.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/featured_verified_yuanji_blog-300x107.png 300w" sizes="(max-width: 762px) 100vw, 762px" /><figcaption class="wp-element-caption">被认证的我的博客</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/blog-verification/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>把 emoji 当作 favicon</title>
		<link>https://blog.yuanji.dev/posts/using-emoji-as-favicon/</link>
					<comments>https://blog.yuanji.dev/posts/using-emoji-as-favicon/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sat, 01 Oct 2022 11:41:00 +0000</pubDate>
				<category><![CDATA[博客运营]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=339</guid>

					<description><![CDATA[平时逛 V2EX 的时候会注意到这个网站一些设计上的细节，其中之一就是不同的节点页面会有自己特有的 favic [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">平时逛 <a rel="noopener" target="_blank" href="https://www.v2ex.com/">V2EX<span class="fa fa-external-link external-icon anchor-icon"></span></a> 的时候会注意到这个网站一些设计上的细节，其中之一就是不同的节点页面会有自己特有的 favicon，这相对于全站只使用一个统一的图案来说活泼不少，对于喜欢在浏览器里打开许多标签的用户来说也非常友好。</p>



<p class="wp-block-paragraph">另外日常使用的 <a rel="noopener" target="_blank" href="https://slack.com/">Slack<span class="fa fa-external-link external-icon anchor-icon"></span></a> 和 <a rel="noopener" target="_blank" href="https://logseq.com/">logseq<span class="fa fa-external-link external-icon anchor-icon"></span></a>（包括之前使用的 <a rel="noopener" target="_blank" href="https://www.notion.so/">Notion<span class="fa fa-external-link external-icon anchor-icon"></span></a>）之类的软件，emoji 的存在对我来说也是让人乐于使用的一个重要原因。</p>



<p class="wp-block-paragraph">于是我就想是不是可以把 emoji 作为 favicon 给我这个博客也加入一点儿这样的生机？</p>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目录</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">原理</a></li><li><a href="#toc2" tabindex="0">Hugo 模板</a></li><li><a href="#toc3" tabindex="0">问题</a></li><li><a href="#toc4" tabindex="0">最后</a></li><li><a href="#toc5" tabindex="0">2022/10/08 更新</a></li><li><a href="#toc6" tabindex="0">2022/10/09 更新</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">原理</span></h2>



<p class="wp-block-paragraph">稍微搜索了一下 Google，很快找到了答案，具体感兴趣的朋友可以参考 <a href="https://zenn.dev/catnose99/articles/3d2f439e8ed161" target="_blank">絵文字をファビコンとして表示する簡単な方法</a> 这篇文章。</p>



<pre class="wp-block-code html"><code>&lt;link
  rel="icon"
  href="data:image/svg+xml,&lt;svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22>&lt;text x=%2250%%22 y=%2250%%22 style=%22dominant-baseline:central;text-anchor:middle;font-size:90px;%22>😸&lt;/text>&lt;/svg>"
/></code></pre>



<p class="wp-block-paragraph">简单来说因为现在很多现代浏览器支持 <a rel="noopener" target="_blank" href="https://caniuse.com/link-icon-svg">SVG 作为 favicon<span class="fa fa-external-link external-icon anchor-icon"></span></a>，而 emoji（或是普通文字）可以直接嵌入 <code>&lt;text&gt;</code> 中，于是 emoji 就直接在 favicon 上显示出来了。</p>



<h2 class="wp-block-heading"><span id="toc2">Hugo 模板</span></h2>



<p class="wp-block-paragraph">首先定义用法，就是在 Mardkown 文件的 <a href="https://gohugo.io/content-management/front-matter/" target="_blank">Front Matter</a>，定义一个 <code>icon</code> 属性像是这样：<code>icon: 🎉</code>，然后更新相应的模板即可，代码如下：</p>



<pre class="wp-block-code"><code>diff --git a/layouts/partials/head/icon.html b/layouts/partials/head/icon.html
index cab9c41..1f47494 100644
--- a/layouts/partials/head/icon.html
+++ b/layouts/partials/head/icon.html
@@ -1,5 +1,8 @@
 &lt;link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}" /&gt;
 &lt;link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}" /&gt;
 &lt;link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}" /&gt;
+{{ with .Params.icon }}
+&lt;link rel="icon" href="data:image/svg+xml,&lt;svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22&gt;&lt;text x=%2250%%22 y=%2250%%22 style=%22dominant-baseline:central;text-anchor:middle;font-size:90px;%22&gt;{{ . }}&lt;/text&gt;&lt;/svg&gt;"&gt;
+{{ end }}
 &lt;link rel="manifest" href="{{ "site.webmanifest" | relURL }}" /&gt;
-&lt;link rel="shortcut icon" href="{{ "favicon.ico" | relURL }}" /&gt;
+&lt;link rel="icon" sizes="16x16" href="{{ "favicon.ico" | relURL }}" /&gt;</code></pre>



<p class="wp-block-paragraph">顺便用此机会回顾了一下模板里 link 标签的使用：</p>



<ol class="wp-block-list">
<li>按照最新 <a rel="noopener" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types">MDN 的 Links types 文档<span class="fa fa-external-link external-icon anchor-icon"></span></a>，<strong><code>shortcut</code> 已经不推荐使用（原文是 must not use it anymore）</strong></li>



<li>我才发现一直以来 Chrome 无论如何都只会下载 <code>favicon.ico</code> 而不是其他 <code>png</code> 文件，研究了一下加上 <code>sizes=16x16</code> 就好了。</li>
</ol>



<h2 class="wp-block-heading"><span id="toc3">问题</span></h2>



<p class="wp-block-paragraph">虽然说大部分现代浏览器都支持在 favicon 里显示 SVG，但目前（2022 年现在）为止 Safari 浏览器并不支持，不过最多也就是沿用原有的逻辑使用全站统一的图标而已。当然也可以用一些公共 CDN 提供的 emoji png 图片作为 fallback，这个就日后再研究吧。</p>



<h2 class="wp-block-heading"><span id="toc4">最后</span></h2>



<p class="wp-block-paragraph">今天晚上托妻子的福，看到了来日本之后的第一次烟火大会，本文就使用 🎆 作为 favicon 吧。</p>



<h2 class="wp-block-heading"><span id="toc5">2022/10/08 更新</span></h2>



<p class="wp-block-paragraph">发现改完之后 <a href="https://html5.validator.nu/" target="_blank">Nu Html Checker</a> 提示有错误，原因是 <code>link</code> 的 <code>href</code> 属性需要转义特殊字符，更新见 <a rel="noopener" target="_blank" href="https://gitlab.com/yuanji/futu/-/commit/bf04517a2c2a5d1dee8f43cad647db75d298bc63">bf04517a<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p class="wp-block-paragraph">参考： <a rel="noopener" target="_blank" href="https://stackoverflow.com/a/7109208">https://stackoverflow.com/a/7109208<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<h2 class="wp-block-heading"><span id="toc6">2022/10/09 更新</span></h2>



<p class="wp-block-paragraph">又发现了一个有关 Hugo 的 <code>minify</code> 带来的副作用，它会转义 <code>%</code> 符号本身，为了避免这一问题发生，于是在模板里直接输出 emoji 而非 URL encoding 之后的编码。这个代码就显得很丑陋了，我甚至有点儿后悔加上这个 emoji 功能了 😂，代码见 <a href="https://gitlab.com/yuanji/futu/-/commit/7417fe78d7daa0cd588c3898a86bf6cb058f7546" target="_blank">7417fe78</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/using-emoji-as-favicon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
