<?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/tags/blog/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>斥资 1283 日元定制了一个新头像</title>
		<link>https://blog.yuanji.dev/posts/new-icon/</link>
					<comments>https://blog.yuanji.dev/posts/new-icon/#comments</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Wed, 05 Feb 2025 12:22:00 +0000</pubDate>
				<category><![CDATA[杂文随笔]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[日本]]></category>
		<category><![CDATA[日记]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=509</guid>

					<description><![CDATA[不知道各位有没有同样的感受，每当注册一个新的什么账号上传头像时总会有点儿犹豫，使用哪张照片比较好呢？为了解决这 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">不知道各位有没有同样的感受，每当注册一个新的什么账号上传头像时总会有点儿犹豫，使用哪张照片比较好呢？为了解决这个问题，上个周末花了点时间想着能不能想办法做一个简单、却又容易分辨的头像。经过一番思考，结合自己的属相等综合情况，于是准备以“鸡”来代表自己在网络上的形象。</p>



<p class="wp-block-paragraph">当然了，没有任何绘画天赋的我是不可能凭空画出什么来的，灵机一动想到了去日本这里的技能交易平台<a rel="noopener" target="_blank" href="https://coconala.com/">ココナラ<span class="fa fa-external-link external-icon anchor-icon"></span></a>找人画一张。因为要求简单，加上有新人优惠，一共花费 1283 日元就有了我现在新的头像。话不多说，下面就请欣赏我的新头像。</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">我的新头像</a></li><li><a href="#toc2" tabindex="0">与画师的沟通</a></li><li><a href="#toc3" tabindex="0">自己的再创作</a></li><li><a href="#toc4" tabindex="0">最后</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">我的新头像</span></h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="103" height="103" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_100x100.png" alt="" class="wp-image-510"/></figure>



<h2 class="wp-block-heading"><span id="toc2">与画师的沟通</span></h2>



<p class="wp-block-paragraph">为了和画师沟通我要什么样的照片，我简单描述了下：</p>



<ol class="wp-block-list">
<li>图片为鸡的全身照</li>



<li>样子比照星露谷物语里鸡的形象（附上截图一张）</li>



<li>结构保持简单，最好在小尺寸屏幕上也容易分辨出是一只鸡</li>
</ol>



<p class="wp-block-paragraph">过了一会儿，画师收到消息表示感谢后马上回我：</p>



<ol class="wp-block-list">
<li>成果是 2000x2000px 的图片可以吗？还是特意需要分辨率小的</li>



<li>以及鸡需要是正面照还是侧面照</li>
</ol>



<p class="wp-block-paragraph">我跟她说照最大分辨率出图就可以我可以自己调整，鸡要侧面照。然后很快就收到了草图，不过她跟我抱歉说没有画像素画的技术，给了一张她作品集里风格的草图，问我有没有问题，没有问题就可以接下来的涂色环节了。我看了下除了鸡脚有点粗之外没有太大问题，就让她修改了。之后双方确认后就上色了。</p>



<p class="wp-block-paragraph">最后的成品是透明背景的 png 图，问我要不要加背景颜色，我说你看着自己的喜好加吧。其实主要是我也不知道加什么好，于是她给我绿色、蓝色、粉色和水蓝四种背景的图片。在我确认完后，双方互评结束了本次交易。以下是交易账单的详情。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="801" height="612" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/coconala_payment_details.png" alt="" class="wp-image-512" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/coconala_payment_details.png 801w, https://blog.yuanji.dev/wp-content/uploads/2025/11/coconala_payment_details-500x382.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/coconala_payment_details-300x229.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/coconala_payment_details-768x587.png 768w" sizes="(max-width: 801px) 100vw, 801px" /><figcaption class="wp-element-caption">ココナラ上的订单详情</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc3">自己的再创作</span></h2>



<p class="wp-block-paragraph">后来我想到其实背景可以用 ImageMagick 自己加，于是就去 <a href="https://tailwindcss.com/docs/colors" target="_blank">Tailwind CSS</a> 偷了它们的配色版，按照白、绿、蓝、紫、橙、金这样<a rel="noopener" target="_blank" href="https://warcraft.wiki.gg/wiki/Quality">稀有度排序<span class="fa fa-external-link external-icon anchor-icon"></span></a>生成了下面这带不同背景的头像图片，虽然平时基本还是用白色背景居多。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="614" height="102" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_500.png" alt="" class="wp-image-513" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_500.png 614w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_500-500x83.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_500-300x50.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="614" height="102" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_400.png" alt="" class="wp-image-514" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_400.png 614w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_400-500x83.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_400-300x50.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="614" height="102" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_300.png" alt="" class="wp-image-515" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_300.png 614w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_300-500x83.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/niwatori_300-300x50.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></figure>



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



<p class="wp-block-paragraph">不知道各位对于我的新头像有什么看法。</p>



<p class="wp-block-paragraph">如果你也想去那个网站平台找人画头像你甚至可以使用我的邀请链接 <a href="https://coconala.com/invite/KNHHG3" target="_blank">https://coconala.com/invite/KNHHG3</a> 据说能得到 1000 日元的点券（不知道能不能直接用，未经证实）日本海外的用户似乎也可以用 PayPal 支付，只是交流上可能还是需要日语。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/new-icon/feed/</wfw:commentRss>
			<slash:comments>2</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-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">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-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></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-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">纯 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-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">被认证的博客</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>日本的节假日</title>
		<link>https://blog.yuanji.dev/posts/public-holidays-in-japan/</link>
					<comments>https://blog.yuanji.dev/posts/public-holidays-in-japan/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Tue, 26 Dec 2023 11:32:00 +0000</pubDate>
				<category><![CDATA[杂文随笔]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[日本]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=434</guid>

					<description><![CDATA[日本在进入令和时代以来，十二月就没有了任何节日（日语叫「祝日」）了。可能是因为这个原因，在给博客加上月历的时候 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">日本在进入令和时代以来，十二月就没有了任何节日（日语叫「祝日」）了。可能是因为这个原因，在<a href="https://blog.yuanji.dev/posts/adding-calendar-view-for-hugo-blog-posts/">给博客加上月历</a>的时候竟然忘了把节日给加上。</p>



<p class="wp-block-paragraph">这篇文章就作为上一篇的后续，介绍一下我观察到的日本的节日、日本月历有关的有意思的发现，然后顺便将这些观察反映到我博客的月历上。</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>👉 点击查看日历预览效果</summary>
<figure class="wp-block-image size-full"><img decoding="async" width="885" height="1031" fetchpriority="low" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_preview.gif" alt="" class="wp-image-435"/><figcaption class="wp-element-caption">带有节日功能的博客月历</figcaption></figure>
</details>




  <div id="toc" class="toc tnt-disc tnt-disc border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目录</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">Hugo 处理数据</a></li><li><a href="#toc4" tabindex="0">FullCalendar 渲染数据</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">作为一个来日本工作的社会人而言，不用说最先关心的几件事之一就是节假日。听职场上的中国人前辈们经常用「红日子」来指代周末和放假的节日。我在网上搜了下，确实也有日本人把这些节假日称为<ruby>赤日<rp>(</rp><rt>あかび</rt><rp>)</rp></ruby>，但我在字典中并没有找到，字典里有的词叫「<ruby>旗日<rp>(</rp><rt>はたび</rt><rp>)</rp></ruby>」，据说这些节日的时候会升旗庆祝。但不管怎么说把节假日称为红日子还是很形象的，因为在日本的月历确实节假日是印刷成红色的。据说这甚至影响了 iOS 系统的日历图标，将系统的区域设置成日本后，在非节假日的时候图标上的文字是普通的黑色，而只有节假日会变成红色。在<ruby>日本亚马逊<rp>(</rp><rt>amazon.co.jp</rt><rp>)</rp></ruby>搜索<ruby>カレンダー<rp>(</rp><rt>Calendar</rt><rp>)</rp></ruby>的结果也很清晰地反映出，日本月历配色的特点。（读者朋友要是愿意可以上<ruby>美国亚马逊<rp>(</rp><rt>amazon.com</rt><rp>)</rp></ruby>搜索 Calendar 试试，这个区别还是一目了然的）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="621" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp-800x621.png" alt="" class="wp-image-436" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp-800x621.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp-500x388.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp-300x233.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp-768x597.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/calendar_on_amazon_jp.png 1214w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">日本亚马逊上搜索月历</figcaption></figure>



<h2 class="wp-block-heading"><span id="toc2">星期六是蓝色的</span></h2>



<p class="wp-block-paragraph">看了上面的截图，你可能也注意到，<ruby>土曜日<rp>(</rp><rt>星期六</rt><rp>)</rp></ruby>的颜色区别于<ruby>日曜日<rp>(</rp><rt>星期日</rt><rp>)</rp></ruby>的红色，竟然是蓝色的。通过一番调查，发现这篇<a rel="noopener" target="_blank" href="https://www.543life.com/campus115.html">こよみの学校&nbsp;第115回『土日の色はいろいろ』｜暦生活<span class="fa fa-external-link external-icon anchor-icon"></span></a>文章解释地非常清楚。简单来说星期六使用不同的颜色和上世纪 70 年代日本开始推行周休两天制度有关系，但使用蓝色大概和印刷技术有关系，因为印刷原色黄、红、蓝、黑四种颜色，而红和黑已经被使用，剩下黄色和蓝色二选一的话，因为黄色不够醒目，自然就有蓝色来当此大任了。</p>



<p class="wp-block-paragraph">顺便说一句，不知道是不是这个周休两天制度落实得不够彻底，直到今天，在日本如果某个节日和星期日重合的话，之后最近的一个非节日的日子（通常就是星期一啦）会补假。然而如果节日和星期六重合，法律并没有提到会补假。2023 年非常不幸，竟然有 3 个节日和星期六重合。</p>



<h2 class="wp-block-heading"><span id="toc3">Hugo 处理数据</span></h2>



<p class="wp-block-paragraph">铺垫了这么多背景，终于到了改造我博客日历功能的时候了，简单总结一下我要做的：</p>



<ul class="wp-block-list">
<li>按照传统，把日历里的星期六的颜色设置成蓝色</li>



<li>在日历中加入节日信息（因为 2019 年年底来的日本，我决定把 2020 年开始的日本节日放上去）</li>
</ul>



<p class="wp-block-paragraph">把星期六的颜色改成绿色，只需简单一句 CSS 即可，就不细说了。这里主要介绍一下如何在日历上放上节日信息。首先要做的就是去<a href="https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html" target="_blank">政府网站</a>找到准确的节日信息，这个网页很清楚的列出了今明两年的节日信息，顺便附带了一个 CSV 文件，包含从 1955 年开始的所有节日。虽然 Hugo 也可以处理 CSV，但显然比起 JSON、YAML 或是 TOML 格式而言处理起来并没有那么友好。不过好在已经有其他人考虑到了这一点，<a rel="noopener" target="_blank" href="https://national-holidays.jp/about.html">国民の祝日API<span class="fa fa-external-link external-icon anchor-icon"></span></a> 这个网站直接提供了简单的 API 可以获取到 JSON 格式的节日信息。虽然我们可以直接使用 <a rel="noopener" target="_blank" href="https://gohugo.io/functions/data/getjson/">data.GetJSON<span class="fa fa-external-link external-icon anchor-icon"></span></a> 这个方法让 Hugo 编译博客的时候，从远端下载必要的 JSON 文件，不过考虑到我们只需要每年更新一次节日信息，我选择把从 2020 年开始的 JSON 文件放到了我的博客仓库，减少一个不必要的外部依赖。比如 <code>https://api.national-holidays.jp/2024</code> 通过访问这个地址就可以得到 2024 年的节日信息，将其保存为 <code>2024.json</code> 放到 <code>data/calendar/holidays_jp</code> 目录下，所有下载的文件像是这样：</p>



<pre class="wp-block-code"><code>❯ ls -alh data/calendar/holidays_jp
Permissions Size User   Date Modified Name
.rw-r--r--  1.4k yuanji 25 Dec 18:55  2020.json
.rw-r--r--  1.4k yuanji 25 Dec 18:56  2021.json
.rw-r--r--  1.3k yuanji 25 Dec 18:56  2022.json
.rw-r--r--  1.4k yuanji 25 Dec 18:56  2023.json
.rw-r--r--  1.7k yuanji 22 Dec 23:16  2024.json</code></pre>



<p class="wp-block-paragraph">根据 <a rel="noopener" target="_blank" href="https://gohugo.io/templates/data-templates/">Data templates | Hugo<span class="fa fa-external-link external-icon anchor-icon"></span></a> 文档，只要把这些数据文件放到 <code>data</code> 目录下，就可以在模板中通过 <code>$.Site.Data</code> 访问，比如我在模板里使用了如下代码：</p>



<pre class="wp-block-code"><code>{{- range $.Site.Data.calendar.holidays_jp -}}
  {{ range . }}
    {{- $holidayEvents = $holidayEvents | append (dict "title" .name "start" (time.Format "2006-01-02" .date) "allDay" true "color" "red" "kind" "holidays_jp" ) }}
  {{ end }}
{{- end -}}</code></pre>



<p class="wp-block-paragraph">因为 <code>holidays_jp</code> 是一个目录，<code>$.Site.Data.calendar.holidays_jp</code> 就会得到以该目录下文件名为 Key，文件内容为 Value 的 <code>map</code> 了，虽然有点儿怪，但是直接 <code>range</code> 这个 <code>$.Site.Data.calendar.holidays_jp</code> map 会遍历所有 Value（某一年的节日内容）而不是 Key，再 <code>range .</code> 一下就得到每一条节日信息了。</p>



<h2 class="wp-block-heading"><span id="toc4">FullCalendar 渲染数据</span></h2>



<p class="wp-block-paragraph">原理上和上一篇渲染博客文章信息到月历上并没有太大的不同，只是我做了一点小小的重构，比起把所有信息放到一个 <code>$events</code> 对象里，我试着做了下区分，分为了三个不同的对象，用来分别存储已发布文章、草稿，以及今天的主角——节日。</p>



<pre class="wp-block-code"><code>- events: {{ $events }},
+ eventSources: &#91;{{ $postEvents }}, {{ $draftEvents }}, {{ $holidayEvents }}],</code></pre>



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



<p class="wp-block-paragraph">本来<a href="https://blog.yuanji.dev/posts/adding-calendar-view-for-hugo-blog-posts/">上一篇文章</a>就是今年最后一篇了，本文对于月历的更新部分在那篇文章里增补即可。但那样的话就失去了一个介绍日本节日、月历配色等有趣地方的机会了。</p>



<p class="wp-block-paragraph">另外想到今年好几个之前的同事、同学来日本玩，网上也读到不少来日本游玩的游记，想必来年还会有更多的游客来日本旅游，或许有一篇有关日本节日的文章可以帮助想来日本旅游的朋友做计划也不一定。</p>



<p class="wp-block-paragraph">最后，提前祝各位读者朋友新年快乐！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/public-holidays-in-japan/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-18" checked><label class="toc-title" for="toc-checkbox-18">目录</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>Be Water, My Friend</title>
		<link>https://blog.yuanji.dev/posts/be-water-my-friend/</link>
					<comments>https://blog.yuanji.dev/posts/be-water-my-friend/#respond</comments>
		
		<dc:creator><![CDATA[yuanji]]></dc:creator>
		<pubDate>Sun, 10 Dec 2023 11:53:00 +0000</pubDate>
				<category><![CDATA[杂文随笔]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[博客]]></category>
		<guid isPermaLink="false">https://blog.yuanji.dev/?p=426</guid>

					<description><![CDATA[有的老读者可能注意到我的博客的样式似乎发生了一些变化。 没错，自上次重写主题以来，我的博客差不多有一年半没有太 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">有的老读者可能注意到我的博客的样式似乎发生了一些变化。</p>



<p class="wp-block-paragraph">没错，自上次重写主题以来，我的博客差不多有一年半没有太大样式上的变化了。如果有读者有读过我<a href="https://blog.yuanji.dev/posts/creating-a-hugo-theme-2/">上次那篇折腾博客主题的文章</a>的话，应该知道我的主题主要基于一套 classless 的 CSS 样式，叫作 awsm.css。</p>



<p class="wp-block-paragraph">然而最近当我想访问 awsm.css 的网站时，竟然发现原作者已经删库跑路了。虽然我有<a rel="noopener" target="_blank" href="https://github.com/yuanji-dev/awsm.css">自己的 fork<span class="fa fa-external-link external-icon anchor-icon"></span></a>，但作为一个契机，差不多是时候再折腾一下主题了，毕竟也临近年末了。</p>



<p class="wp-block-paragraph"><strong>从结论上而言，我从 awsm.css 转到了 <a rel="noopener" target="_blank" href="https://github.com/kognise/water.css">water.css<span class="fa fa-external-link external-icon anchor-icon"></span></a></strong></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">改善点</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">因为 water.css 也是一套 classless 主题，所以替换 awsm.css 并不是很费力，而且两套主题很相似，所以说实话如果没看出啥区别也不奇怪。不过就是一些小的细节花了几个晚上的业余时间微调了一下。简单列了一些问题点，大部分显著的毛病我已经修了，于是想着差不多可以释出第一版了。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="499" src="https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water-800x499.png" alt="" class="wp-image-428" srcset="https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water-800x499.png 800w, https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water-500x312.png 500w, https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water-300x187.png 300w, https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water-768x479.png 768w, https://blog.yuanji.dev/wp-content/uploads/2025/11/migrate_to_water.png 832w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">迁移到 water.css 的经过</figcaption></figure>



<p class="wp-block-paragraph">其中一个值得注意的决定是，我尽量没有更改原主题的样式（除了少数 postcss 特有语法），额外的修改我都在主文件 <code>main.scss</code> 引入 water.css 的源文件之后加以覆盖，主要是为了以后如果上游有更新，可以比较容易地做相应更改。</p>



<h2 class="wp-block-heading"><span id="toc2">改善点</span></h2>



<p class="wp-block-paragraph">我个人感觉用了 water.css 之后的一大改善点就是用上了 <a rel="noopener" target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties">CSS 自定义属性<span class="fa fa-external-link external-icon anchor-icon"></span></a>。一个直接的好处就是让支持夜间模式变得简单，这也是这次折腾主题的一个比较大的动力。虽然我自己基本从来不用夜间模式，但也许有喜欢我博客的读者使用，这一次重点支持了一下，如果对我的这次新改动的主题感兴趣，欢迎使用和反馈。（可以点击导航栏右侧的🌙/☀图案切换）</p>



<h2 class="wp-block-heading"><span id="toc3">关于标题</span></h2>



<p class="wp-block-paragraph">一方面是因为这次样式的改变主要是因为选择了 <mark>water</mark>.css，另一方面也让我想起了李小龙之前在采访中关于“水”的一段谈话（见下面视频），借此就用作了我这篇短文的标题。</p>



<p class="wp-block-paragraph">以上就是这周有关修改博客样式的介绍了，希望各位读者喜欢。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Be formless, shapeless, like water.</p>



<p class="wp-block-paragraph">Now you put water into a cup, it becomes the cup, you put water into a bottle, it becomes the bottle, you put it in a teapot, it becomes the teapot.</p>



<p class="wp-block-paragraph">Now water can flow or it can crash.</p>



<p class="wp-block-paragraph">Be water, my friend.</p>
</blockquote>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 854 / 480;" width="854" controls src="https://blog.yuanji.dev/wp-content/uploads/2025/11/bruce_lee_be_water_my_friend.mp4"></video></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.yuanji.dev/posts/be-water-my-friend/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://blog.yuanji.dev/wp-content/uploads/2025/11/bruce_lee_be_water_my_friend.mp4" length="0" type="video/mp4" />

			</item>
	</channel>
</rss>
