<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Hugo on Ben&#39;s Blog</title>
    <link>https://jinpeng.cv/en/series/hugo/</link>
    <description>Recent content in Hugo on Ben&#39;s Blog</description>
    <generator>Hugo -- 0.154.0</generator>
    <language>en</language>
    <copyright>©️ 2025 Ben</copyright>
    <lastBuildDate>Mon, 09 Mar 2026 22:26:59 -0600</lastBuildDate>
    <atom:link href="https://jinpeng.cv/en/series/hugo/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>May 13, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/may/2025-05-13/</link>
      <pubDate>Tue, 13 May 2025 15:23:42 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/may/2025-05-13/</guid>
      <description>&lt;h3 id=&#34;2348-shoulders-feel-so-sore&#34;&gt;23:48 Shoulders Feel So Sore&lt;/h3&gt;
&lt;p&gt;Another day has come to an end, and I can barely recall what I did today.&lt;/p&gt;
&lt;p&gt;Let me think: studying, helping Mom with her phone, playing on my phone, sleeping.&lt;/p&gt;
&lt;h3 id=&#34;2349-created-a-new-templater-template-for-callouts&#34;&gt;23:49 Created a New Templater Template for Callouts&lt;/h3&gt;
&lt;p&gt;I often use callouts in my notes for exercises, notes, tips, and the like. Writing them in native syntax gets tedious, especially with all the switching between Chinese and English. So, I made a Templater template to make it easier.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="2348-shoulders-feel-so-sore">23:48 Shoulders Feel So Sore</h3>
<p>Another day has come to an end, and I can barely recall what I did today.</p>
<p>Let me think: studying, helping Mom with her phone, playing on my phone, sleeping.</p>
<h3 id="2349-created-a-new-templater-template-for-callouts">23:49 Created a New Templater Template for Callouts</h3>
<p>I often use callouts in my notes for exercises, notes, tips, and the like. Writing them in native syntax gets tedious, especially with all the switching between Chinese and English. So, I made a Templater template to make it easier.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="k">&gt; </span><span class="ge">[!&lt;% tp.system.suggester((item) =&gt; item, [&#34;question&#34;, &#34;note&#34;, &#34;tip&#34;]) %&gt;]+ &lt;% tp.system.prompt(&#34;Please input callout title&#34;, &#34;Example&#34;) %&gt;  
</span></span></span><span class="line"><span class="cl"><span class="k">&gt; </span><span class="ge">&lt;% tp.system.clipboard() %&gt;  
</span></span></span><span class="line"><span class="cl"><span class="k">&gt; </span><span class="ge"> 
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>For the main content, I used Metan AI to transcribe it, which made things much more convenient.</p>
<h3 id="2353-added-an-stime-attribute-to-my-journal">23:53 Added an <code>stime</code> Attribute to My Journal</h3>
<p>This attribute tracks daily phone usage time to analyze long-term changes in my habits.</p>
<p>I originally wanted to log sleep time too, but I sometimes nap at noon, and phone tracking isn’t accurate enough. So, I’ll leave it at that for now.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 29, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-29/</link>
      <pubDate>Tue, 29 Apr 2025 07:14:27 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-29/</guid>
      <description>&lt;p&gt;Woke up in the middle of the night suddenly wanting to listen to this song. In the morning, after waiting for Huanhuan to wake up, I asked Xiao Ai to have Jeff Chang sing it for us.&lt;/p&gt;

&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.webstatic.cn/ajax/libs/aplayer/1.10.1/APlayer.min.css&#34; integrity=&#34;sha512-CIYsJUa3pr1eoXlZFroEI0mq0UIMUqNouNinjpCkSWo3Bx5NRlQ0OuC6DtEB/bDqUWnzXc1gs2X/g52l36N5iw==&#34; crossorigin=&#34;anonymous&#34;&gt;
&lt;script src=&#34;https://cdnjs.webstatic.cn/ajax/libs/aplayer/1.10.1/APlayer.min.js&#34; integrity=&#34;sha512-RWosNnDNw8FxHibJqdFRySIswOUgYhFxnmYO3fp+BgCU7gfo4z0oS7mYFBvaa8qu+axY39BmQOrhW3Tp70XbaQ==&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;

&lt;script src=&#34;https://cdnjs.webstatic.cn/ajax/libs/meting/2.0.1/Meting.min.js&#34; integrity=&#34;sha512-/IDbuuVE9yEqGRO0rCzXN1jIU1ZFkVd3TMLuK3HkmD4fCCwoIAkrqcK8KPYcIMDF/Z/pQ2mMOTPYS07qM/7VsA==&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&lt;meting-js server=&#34;netease&#34; type=&#34;song&#34; id=&#34;33599439&#34; theme=&#34;#448aff&#34;&gt;&lt;/meting-js&gt;
&lt;blockquote&gt;
&lt;p&gt;Two people shining together, their radiance outshines the stars of the night.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Every separation always brings a tinge of reluctance, but today’s emotions felt particularly strong.&lt;/p&gt;
&lt;p&gt;We went to a place called Panxian Flavor for breakfast, having sticky rice, mushroom meatball noodles, and meat pies. Afterward, she went to attend a team-building event organized by the city branch, while I picked up a package and wandered around.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Woke up in the middle of the night suddenly wanting to listen to this song. In the morning, after waiting for Huanhuan to wake up, I asked Xiao Ai to have Jeff Chang sing it for us.</p>

<link rel="stylesheet" href="https://cdnjs.webstatic.cn/ajax/libs/aplayer/1.10.1/APlayer.min.css" integrity="sha512-CIYsJUa3pr1eoXlZFroEI0mq0UIMUqNouNinjpCkSWo3Bx5NRlQ0OuC6DtEB/bDqUWnzXc1gs2X/g52l36N5iw==" crossorigin="anonymous">
<script src="https://cdnjs.webstatic.cn/ajax/libs/aplayer/1.10.1/APlayer.min.js" integrity="sha512-RWosNnDNw8FxHibJqdFRySIswOUgYhFxnmYO3fp+BgCU7gfo4z0oS7mYFBvaa8qu+axY39BmQOrhW3Tp70XbaQ==" crossorigin="anonymous"></script>

<script src="https://cdnjs.webstatic.cn/ajax/libs/meting/2.0.1/Meting.min.js" integrity="sha512-/IDbuuVE9yEqGRO0rCzXN1jIU1ZFkVd3TMLuK3HkmD4fCCwoIAkrqcK8KPYcIMDF/Z/pQ2mMOTPYS07qM/7VsA==" crossorigin="anonymous"></script><meting-js server="netease" type="song" id="33599439" theme="#448aff"></meting-js>
<blockquote>
<p>Two people shining together, their radiance outshines the stars of the night.</p>
</blockquote>
<p>Every separation always brings a tinge of reluctance, but today’s emotions felt particularly strong.</p>
<p>We went to a place called Panxian Flavor for breakfast, having sticky rice, mushroom meatball noodles, and meat pies. Afterward, she went to attend a team-building event organized by the city branch, while I picked up a package and wandered around.</p>
<p>A few days ago, I submitted my resume at the Guizhou Talent Expo. This afternoon, the Energy Bureau called to ask if I was certain about joining. Personally, I’m not too keen—there’s a five-year service commitment, the benefits aren’t great, and if it involves frequent mine visits, I’d be quite averse to it. For now, I agreed to see how things unfold.</p>
<p>Later, I chatted with Niuwa, who mentioned that her colleague has a friend in the Energy Bureau and gave me a brief rundown of the situation. The meal allowance they provide is only enough for 13 meals a month, and the dormitory is still a communal setup. This isn’t talent recruitment—it’s more like recruiting workhorses. Niuwa then mentioned that her boyfriend is in Gui&rsquo;an and said the benefits there are quite good, suggesting I give it a try.</p>
<h3 id="1655-added-custom-title-to-callout">16:55 Added custom title to callout</h3>
<p>The most important thing in programming is understanding the existing code logic—otherwise, even the smartest AI won’t be of much help. The better you grasp the underlying logic, the better you can solve problems. The same goes for everything else.</p>
<h3 id="2019-continued-refining-obsidian-compatible-callout-folding">20:19 Continued refining Obsidian-compatible callout folding</h3>
<p>Noticed that Hugo’s source code supports folding tags, so I spent some effort combining it with AI to achieve callout folding compatible with Obsidian.</p>
  

  


  
  <blockquote class="alert-blockquote alert-question" data-collapsible="&#43;">
    <p class="alert-heading callout-title">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path>
      </svg>
      
      <span>Question</span>
      
    </p>
    <div class="alert-content callout-content">
      <p>CSS always has its share of inexplicable issues. With flex as the parent node, the span tags inside never seem to center vertically.</p>
    </div>
  </blockquote>
  

<script>
  document.addEventListener("DOMContentLoaded", function () {
    document.querySelectorAll(".alert-blockquote").forEach(function (e) {
        
        var foldAttr = e.getAttribute("data-collapsible");
        if (foldAttr === "+" || foldAttr === "-") {
            e.classList.add("is-collapsible");

            var titleElem = e.querySelector(".callout-title");
            var contentElem = e.querySelector(".callout-content");

            if (titleElem && contentElem && !titleElem.querySelector(".callout-fold")) {
                var isCollapsed = foldAttr === "-"; 
                var toggleState = function () {
                    updateState(!isCollapsed, true);
                };

                var updateState = function (collapsed, animate) {
                    isCollapsed = collapsed;
                    e.classList.toggle("is-collapsed", collapsed);
                    contentElem.style.display = collapsed ? "none" : "block";

                    
                    
                    var svgIcon = foldButton.querySelector("svg");
                    if (svgIcon) {
                        svgIcon.style.transform = collapsed ? "rotate(-90deg)" : "rotate(0deg)";
                        svgIcon.style.transition = "transform 0.2s ease-in-out";
                    }
                };

                
                var foldButton = document.createElement("div");
                foldButton.className = "callout-fold";

                
                foldButton.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-chevron-down">
                        <path d="m6 9 6 6 6-6"></path>
                    </svg>
                `;

                foldButton.addEventListener("click", function (event) {
                    event.preventDefault();
                    toggleState();
                });

                
                titleElem.appendChild(foldButton);

                
                titleElem.addEventListener("click", function (event) {
                    if (!event.defaultPrevented) {
                        event.preventDefault();
                        toggleState();
                    }
                });

                
                updateState(isCollapsed, false);
            }
        }
    });
});
</script>
<h3 id="2202-packed-up-some-things">22:02 Packed up some things</h3>
<p>Heading home with Mom tomorrow.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 25, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-25/</link>
      <pubDate>Fri, 25 Apr 2025 02:27:01 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-25/</guid>
      <description>&lt;h3 id=&#34;1045-completed-the-integration-of-volcano-engines-api&#34;&gt;10:45 Completed the integration of Volcano Engine&amp;rsquo;s API&lt;/h3&gt;
&lt;p&gt;The money I topped up in DeepSeek always gets used up suddenly—not sure if it&amp;rsquo;s due to an API leak or issues with the calls. Switched to the API provided by Volcano Engine instead; it&amp;rsquo;s also cheaper.&lt;/p&gt;
&lt;h3 id=&#34;1052-optimized-the-quickadd-action-for-adding-records&#34;&gt;10:52 Optimized the QuickAdd action for adding records&lt;/h3&gt;
&lt;p&gt;Now it can all be done in a single input box. Even with longer text, there’s no need to open the diary again to continue adding more.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="1045-completed-the-integration-of-volcano-engines-api">10:45 Completed the integration of Volcano Engine&rsquo;s API</h3>
<p>The money I topped up in DeepSeek always gets used up suddenly—not sure if it&rsquo;s due to an API leak or issues with the calls. Switched to the API provided by Volcano Engine instead; it&rsquo;s also cheaper.</p>
<h3 id="1052-optimized-the-quickadd-action-for-adding-records">10:52 Optimized the QuickAdd action for adding records</h3>
<p>Now it can all be done in a single input box. Even with longer text, there’s no need to open the diary again to continue adding more.</p>
<h3 id="1318-failed-attempt-at-using-typeit-as-a-shortcode">13:18 Failed attempt at using TypeIt as a shortcode</h3>
<p>Gave up on this. These trivial things aren’t worth the effort—remember, less is more. At all times, focus on the main content and grasp the essence. Unless I’m someone who produces appearances or tools, there’s no need to overcomplicate things.</p>
<h3 id="2004-suddenly-discovered-the-benefits-of-nearsightedness">20:04 Suddenly discovered the benefits of nearsightedness</h3>
<p>My left eye has about 200 degrees of myopia. After staying indoors all day, I decided to go out for a walk. My eyes felt a bit uncomfortable, so I tried closing one eye—and made a novel discovery.</p>
<p>As someone who strongly dislikes the overwhelming presence of advertisements in every aspect of life, I suddenly realized that mild nearsightedness can, to some extent, reduce the ads around us—because they become blurry.</p>
<p>Those eye-catching slogans are like being intelligently blurred out, no longer able to grab our attention. Of course, this only works with around 200 degrees of myopia. If the prescription is too high, it might also affect our ability to appreciate the beauty in life.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 11, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-11/</link>
      <pubDate>Fri, 11 Apr 2025 01:56:37 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-11/</guid>
      <description>&lt;h3 id=&#34;0956-completed-not-by-ai-and-nonbot-declaration-citations&#34;&gt;09:56 Completed Not-By-AI and NonBot Declaration Citations&lt;/h3&gt;
&lt;p&gt;Started tinkering with code again—sometimes it&amp;rsquo;s hard to resist the temptation. Especially when I see someone else&amp;rsquo;s great implementation or when a novel idea suddenly pops into my head.&lt;/p&gt;
&lt;h3 id=&#34;1014-ported-the-chat-bubble-shortcode&#34;&gt;10:14 Ported the Chat Bubble Shortcode&lt;/h3&gt;
&lt;p&gt;Inspired by &lt;a href=&#34;https://www.xalaok.top/post/hugo-shortcodes/#%E8%81%8A%E5%A4%A9%E6%B0%94%E6%B3%A1&#34;&gt;Some Hugo Shortcodes | Naive Koala&lt;/a&gt;, the effect is as follows:&lt;/p&gt;

&lt;div class=&#34;chat --other&#34;&gt;
    &lt;div class=&#34;chat__inner&#34;&gt;
        &lt;div class=&#34;chat__meta&#34;&gt;Jeapo&amp;nbsp;&amp;nbsp;&amp;nbsp;2025-04-11 09:20&lt;/div&gt;
        &lt;div class=&#34;chat__text&#34;&gt;
              
Little Huanhuan is hungry  

        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: &#34;&#34;;
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: &#34;&#34;;
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme=&#34;dark&#34;] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
&lt;/style&gt;


&lt;div class=&#34;chat --self&#34;&gt;
    &lt;div class=&#34;chat__inner&#34;&gt;
        &lt;div class=&#34;chat__meta&#34; style=&#34;text-align: right;&#34;&gt;2025-04-11 09:37&amp;nbsp;&amp;nbsp;&amp;nbsp;Huan&lt;/div&gt;
        &lt;div class=&#34;chat__text&#34;&gt;
              
The noodles Sister Sha brought, hahaha  

        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: &#34;&#34;;
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: &#34;&#34;;
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme=&#34;dark&#34;] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
&lt;/style&gt;


&lt;div class=&#34;chat --self&#34;&gt;
    &lt;div class=&#34;chat__inner&#34;&gt;
        &lt;div class=&#34;chat__meta&#34; style=&#34;text-align: right;&#34;&gt;2025-04-11 09:37&amp;nbsp;&amp;nbsp;&amp;nbsp;Huan&lt;/div&gt;
        &lt;div class=&#34;chat__text&#34;&gt;
              
So fragrant  

        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;style&gt;
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: &#34;&#34;;
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: &#34;&#34;;
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme=&#34;dark&#34;] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
&lt;/style&gt;

&lt;p&gt;From now on, meaningful conversations can be preserved in this format, like the one I had with Manman before: &lt;a href=&#34;2023/2023-06-22.en.md&#34;&gt;Is Our Earth Real?&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="0956-completed-not-by-ai-and-nonbot-declaration-citations">09:56 Completed Not-By-AI and NonBot Declaration Citations</h3>
<p>Started tinkering with code again—sometimes it&rsquo;s hard to resist the temptation. Especially when I see someone else&rsquo;s great implementation or when a novel idea suddenly pops into my head.</p>
<h3 id="1014-ported-the-chat-bubble-shortcode">10:14 Ported the Chat Bubble Shortcode</h3>
<p>Inspired by <a href="https://www.xalaok.top/post/hugo-shortcodes/#%E8%81%8A%E5%A4%A9%E6%B0%94%E6%B3%A1">Some Hugo Shortcodes | Naive Koala</a>, the effect is as follows:</p>

<div class="chat --other">
    <div class="chat__inner">
        <div class="chat__meta">Jeapo&nbsp;&nbsp;&nbsp;2025-04-11 09:20</div>
        <div class="chat__text">
              
Little Huanhuan is hungry  

        </div>
    </div>
</div>


<style>
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: "";
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: "";
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme="dark"] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
</style>


<div class="chat --self">
    <div class="chat__inner">
        <div class="chat__meta" style="text-align: right;">2025-04-11 09:37&nbsp;&nbsp;&nbsp;Huan</div>
        <div class="chat__text">
              
The noodles Sister Sha brought, hahaha  

        </div>
    </div>
</div>


<style>
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: "";
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: "";
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme="dark"] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
</style>


<div class="chat --self">
    <div class="chat__inner">
        <div class="chat__meta" style="text-align: right;">2025-04-11 09:37&nbsp;&nbsp;&nbsp;Huan</div>
        <div class="chat__text">
              
So fragrant  

        </div>
    </div>
</div>


<style>
    .chat {
        margin: 10px;
        padding: 10px;
        position: relative;
         
        transition: transform 0.2s;
         
        max-width: 80%;
        min-width: 15%;
    }
    
    .chat:hover {
        transform: scale(1.05);
    }
    
    .chat.--self {
        text-align: left;
        background-color: #ecf5ff;
        color: #000000;
        border-radius: 15px;
        width: fit-content;
        margin-left: auto;
        margin-right: 20px;
    }
     
    
    .chat.--self::before {
        content: "";
        position: absolute;
        right: -18px;
         
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 0 0 20px;
        border-style: solid;
        border-color: transparent transparent transparent #ecf5ff;
         
    }
     
    
    .chat.--other {
        text-align: left;
        background-color: #ffecec;
        color: #333;
        border-radius: 15px;
        position: relative;
        width: fit-content;
        margin-left: 20px;
    }
     
    
    .chat.--other::before {
        content: "";
        position: absolute;
        left: -18px;
        bottom: 5px;
        transform: translateY(-50%);
        border-width: 15px 20px 0 0;
        border-style: solid;
        border-color: transparent #ffecec transparent transparent;
    }
     
    
    .chat__meta {
        font-weight: bold;
        font-size: 0.67em;
        color: #707070;
        margin-bottom: 5px;
    }
     
    
    .chat__text {
        font-size: 0.9em;
        margin-left: 10px;
        word-break: break-all;
    }
    
    [data-scheme="dark"] {
        .chat.--self {
            color: #fefefe;
            background-color: #253958;
        }
        .chat.--self::before {
            border-color: transparent transparent transparent #253958;
        }
        .chat.--other {
            color: #fefefe;
            background-color: #1a1a1a;
        }
        .chat.--other::before {
            border-color: transparent #1a1a1a transparent transparent;
        }
        .chat__meta {
            color: #b1b1b1;
        }
    }
</style>

<p>From now on, meaningful conversations can be preserved in this format, like the one I had with Manman before: <a href="2023/2023-06-22.en.md">Is Our Earth Real?</a></p>
<h3 id="1055-hidden-posts">10:55 Hidden Posts</h3>
<p>Some draft-like posts that won’t be edited later, so I added a <code>hidden</code> attribute to the site to hide them. Unlike the <code>draft</code> attribute, these posts will still be rendered and accessible via direct links. Reference: <a href="https://mantyke.icu/posts/2024/hidden-posts/">Hugo | Adding Hidden Posts Functionality to the Cactus Theme | Little Flying Fish</a>.</p>
<h3 id="1219-introduced-heti">12:19 Introduced Heti</h3>
<p>Heti (hè tí) is an open-source project for enhancing Chinese typography, making page layouts more aesthetically pleasing. Project address: <a href="https://sivan.github.io/heti/#intro">Heti - A Simple and Minimalist Web Chinese Typography Enhancement</a></p>
<h3 id="1314-csc-has-reached-the-review-stage-at-the-china-scholarship-council">13:14 CSC Has Reached the Review Stage at the China Scholarship Council</h3>
<p>Suddenly realized I hadn’t checked the CSC application status in a while—it had been stuck at &ldquo;Pending Acceptance by the Unit.&rdquo; Just logged in and saw that the provincial education department has approved it, and now it’s under review by the China Scholarship Council.<br>
<img loading="lazy" src="../../../../static/images/diary/CSC%E5%AE%A1%E6%A0%B8%E8%BF%9B%E5%BA%A6-%E5%9F%BA%E9%87%91%E5%A7%94%E5%AE%A1%E6%A0%B8%E4%B8%AD.png"><br>
One step closer to a successful application. Feeling a mix of excitement and nervousness.</p>
<h3 id="1418-why-cant-i-keep-things-to-myself">14:18 Why Can’t I Keep Things to Myself?</h3>
<p>Couldn’t fall asleep. Kept worrying about my passport still being at my former workplace—it might become an issue.</p>
<h3 id="1551-tidied-up-the-room">15:51 Tidied Up the Room</h3>
<p>Living alone really makes me lazy. Huanhuan is coming over this afternoon, so I cleaned up the room a bit—it looks slightly more presentable now.</p>
<h3 id="1724-eyes-feeling-sore">17:24 Eyes Feeling Sore</h3>
<p>Synced recent diary entries to a notebook.<br>
Tried adding an info stats page inspired by <a href="https://www.eallion.com/stats/">Big Little Snail</a>, but rendering took too long, so I gave up.</p>
<p>Time to read for a while.</p>
<h3 id="1936-2024-guizhou-provincial-exam-results-are-out">19:36 2024 Guizhou Provincial Exam Results Are Out</h3>
<p>Saw the results on WeChat—they’re out. I applied for the Guiyang Disabled Persons’ Federation position, and this score basically means no chance for an interview.</p>
<table>
  <thead>
      <tr>
          <th>Category</th>
          <th>Civil Service</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Subcategory</td>
          <td>Class A</td>
      </tr>
      <tr>
          <td>Test Score</td>
          <td>99.9</td>
      </tr>
      <tr>
          <td>Essay Score</td>
          <td>105.5</td>
      </tr>
      <tr>
          <td>Bonus Points</td>
          <td>0</td>
      </tr>
      <tr>
          <td>Written Exam Score</td>
          <td>68.47</td>
      </tr>
  </tbody>
</table>
<h3 id="2335-happiness">23:35 Happiness</h3>
<p>For the past four days, I’ve been guiding my mom around the main streets of Shuicheng. Today, to help her practice exploring the city on her own, I asked her to walk along Gongyuan Road to find me. She successfully followed the path and made it to me. We took a short stroll, and she got to know the surrounding streets a little better.</p>
<p>After dropping my mom off, I walked along the Shuicheng River to pick up Huanhuan.<br>
Winter is truly over—the cherry blossoms along the riverbank are in full bloom, clustered in thick bunches. Crowds of people gathered beneath them: girls in all kinds of dresses, middle-aged men and women, elderly folks, and children. Shuicheng is coming alive again.</p>
<p>After meeting Huanhuan, we walked the cherry blossom-lined path once more. It had been a long time since we were alone together, and we both felt relaxed and at ease. The only downside was that I’d walked too much—my lower back was aching terribly.</p>
<p>We took a taxi back from Minghu Road and cooked a bowl of Buldak ramen with crayfish flavor, along with some leftover vegetarian dishes from the morning. It was absolutely delicious—everything was just perfect, even the chilled broth from the vegetables.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 10, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-10/</link>
      <pubDate>Wed, 09 Apr 2025 16:15:33 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-10/</guid>
      <description>&lt;h3 id=&#34;0016-time-flies-so-fast&#34;&gt;00:16 Time Flies So Fast&lt;/h3&gt;
&lt;p&gt;It&amp;rsquo;s time to sleep again. Need to go to bed early, or else I won’t be able to fall asleep.&lt;/p&gt;
&lt;p&gt;Submitted all the code I wrote today.&lt;/p&gt;
&lt;h3 id=&#34;1034-swelling-and-pain-around-my-eyes&#34;&gt;10:34 Swelling and Pain Around My Eyes&lt;/h3&gt;
&lt;p&gt;Not sure if it’s because I slept face down, but this morning I woke up with a painful swelling around my eyes. Nothing seems to help—lying still in bed, applying a cold towel, sitting in meditation, or even DIY remedies—nothing works.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="0016-time-flies-so-fast">00:16 Time Flies So Fast</h3>
<p>It&rsquo;s time to sleep again. Need to go to bed early, or else I won’t be able to fall asleep.</p>
<p>Submitted all the code I wrote today.</p>
<h3 id="1034-swelling-and-pain-around-my-eyes">10:34 Swelling and Pain Around My Eyes</h3>
<p>Not sure if it’s because I slept face down, but this morning I woke up with a painful swelling around my eyes. Nothing seems to help—lying still in bed, applying a cold towel, sitting in meditation, or even DIY remedies—nothing works.</p>
<p>Might as well get up and take a shower. Even if I’m uncomfortable, life has to go on.</p>
  

  


  
  <blockquote class="alert-blockquote alert-tip" >
    <p class="alert-heading callout-title">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z"></path>
      </svg>
      
      <span>Tip</span>
      
    </p>
    <div class="alert-content callout-content">
      <p>I learned that mom also feels dizzy at the middle of last night and this morning, so I guess that this may be food poisoning.<br>
I rarely get dizzy.</p>
    </div>
  </blockquote>
  

<script>
  document.addEventListener("DOMContentLoaded", function () {
    document.querySelectorAll(".alert-blockquote").forEach(function (e) {
        
        var foldAttr = e.getAttribute("data-collapsible");
        if (foldAttr === "+" || foldAttr === "-") {
            e.classList.add("is-collapsible");

            var titleElem = e.querySelector(".callout-title");
            var contentElem = e.querySelector(".callout-content");

            if (titleElem && contentElem && !titleElem.querySelector(".callout-fold")) {
                var isCollapsed = foldAttr === "-"; 
                var toggleState = function () {
                    updateState(!isCollapsed, true);
                };

                var updateState = function (collapsed, animate) {
                    isCollapsed = collapsed;
                    e.classList.toggle("is-collapsed", collapsed);
                    contentElem.style.display = collapsed ? "none" : "block";

                    
                    
                    var svgIcon = foldButton.querySelector("svg");
                    if (svgIcon) {
                        svgIcon.style.transform = collapsed ? "rotate(-90deg)" : "rotate(0deg)";
                        svgIcon.style.transition = "transform 0.2s ease-in-out";
                    }
                };

                
                var foldButton = document.createElement("div");
                foldButton.className = "callout-fold";

                
                foldButton.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-chevron-down">
                        <path d="m6 9 6 6 6-6"></path>
                    </svg>
                `;

                foldButton.addEventListener("click", function (event) {
                    event.preventDefault();
                    toggleState();
                });

                
                titleElem.appendChild(foldButton);

                
                titleElem.addEventListener("click", function (event) {
                    if (!event.defaultPrevented) {
                        event.preventDefault();
                        toggleState();
                    }
                });

                
                updateState(isCollapsed, false);
            }
        }
    });
});
</script>
<h3 id="1117-still-a-headache">11:17 Still a Headache</h3>
<p>Did some coding, but now it’s not just my eyes—I feel terrible all over.</p>
  

  


  
  <blockquote class="alert-blockquote alert-warning" >
    <p class="alert-heading callout-title">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path>
      </svg>
      
      <span>Warning</span>
      
    </p>
    <div class="alert-content callout-content">
      <p>From now on, focus more on content creation and output, and open VSCode less!</p>
    </div>
  </blockquote>
  

<script>
  document.addEventListener("DOMContentLoaded", function () {
    document.querySelectorAll(".alert-blockquote").forEach(function (e) {
        
        var foldAttr = e.getAttribute("data-collapsible");
        if (foldAttr === "+" || foldAttr === "-") {
            e.classList.add("is-collapsible");

            var titleElem = e.querySelector(".callout-title");
            var contentElem = e.querySelector(".callout-content");

            if (titleElem && contentElem && !titleElem.querySelector(".callout-fold")) {
                var isCollapsed = foldAttr === "-"; 
                var toggleState = function () {
                    updateState(!isCollapsed, true);
                };

                var updateState = function (collapsed, animate) {
                    isCollapsed = collapsed;
                    e.classList.toggle("is-collapsed", collapsed);
                    contentElem.style.display = collapsed ? "none" : "block";

                    
                    
                    var svgIcon = foldButton.querySelector("svg");
                    if (svgIcon) {
                        svgIcon.style.transform = collapsed ? "rotate(-90deg)" : "rotate(0deg)";
                        svgIcon.style.transition = "transform 0.2s ease-in-out";
                    }
                };

                
                var foldButton = document.createElement("div");
                foldButton.className = "callout-fold";

                
                foldButton.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-chevron-down">
                        <path d="m6 9 6 6 6-6"></path>
                    </svg>
                `;

                foldButton.addEventListener("click", function (event) {
                    event.preventDefault();
                    toggleState();
                });

                
                titleElem.appendChild(foldButton);

                
                titleElem.addEventListener("click", function (event) {
                    if (!event.defaultPrevented) {
                        event.preventDefault();
                        toggleState();
                    }
                });

                
                updateState(isCollapsed, false);
            }
        }
    });
});
</script>
<h3 id="1605-cooking">16:05 Cooking</h3>
<p>Today I’m making a stew with minced meat, potatoes, and tea tree mushrooms. Sounds absolutely delicious!<br>
It’s already simmering. By evening, I’ll just add some veggies, and it’ll be ready to eat.</p>
<h3 id="1802-headache-finally-eases-up">18:02 Headache Finally Eases Up</h3>
<p>Did some more coding—added a heatmap to the About page. Realized that shortcodes can achieve endless functionalities, and treating them merely as div containers isn’t ideal for website development. So, I refactored the shortcodes for frequently used websites and blog links, separating data from the page structure for easier maintenance.</p>
<h3 id="2218-back-from-a-walk-with-mom">22:18 Back from a Walk with Mom</h3>
<p>Lately, my exercise routine has been excessive—walking five or six kilometers every day. It’s a bit much for me, but Mom seems to enjoy it, probably because she gets bored at home.</p>
<p>My patience always wears thin when I’m with my parents—not sure if that’s good or bad. Maybe I should encourage them more instead of feeling impatient.</p>
<p>Got home and immediately felt hungry. Even though I’d already eaten dinner (and hadn’t even cleared the dishes yet), I had another meal. Eating made me feel much better.</p>
<h3 id="2313-writing-a-diary">23:13 Writing a Diary</h3>
<p>After resting for a while, I got up to complete my diary entry and then submitted today&rsquo;s code changes.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 9, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-09/</link>
      <pubDate>Wed, 09 Apr 2025 02:50:54 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-09/</guid>
      <description>&lt;h3 id=&#34;1050-trying-to-tinker-with-website-seo&#34;&gt;10:50 Trying to Tinker with Website SEO&lt;/h3&gt;
&lt;p&gt;There seems to be a lot of demand for this from others. I feel like I could dive deeper into it as a side gig and offer services to people.&lt;/p&gt;
&lt;p&gt;The principle isn’t complicated—just understand how major search engines and the web gather information, then adjust your website accordingly.&lt;/p&gt;
&lt;h3 id=&#34;1238-fixed-the-mermaid-theme-switching-function&#34;&gt;12:38 Fixed the Mermaid Theme Switching Function&lt;/h3&gt;
&lt;p&gt;Functions from different partials ultimately end up on the same page. So, declaring functions or variables repeatedly can cause interference, which needs to be debugged and eliminated. Another solution is to prefix names with the file name.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="1050-trying-to-tinker-with-website-seo">10:50 Trying to Tinker with Website SEO</h3>
<p>There seems to be a lot of demand for this from others. I feel like I could dive deeper into it as a side gig and offer services to people.</p>
<p>The principle isn’t complicated—just understand how major search engines and the web gather information, then adjust your website accordingly.</p>
<h3 id="1238-fixed-the-mermaid-theme-switching-function">12:38 Fixed the Mermaid Theme Switching Function</h3>
<p>Functions from different partials ultimately end up on the same page. So, declaring functions or variables repeatedly can cause interference, which needs to be debugged and eliminated. Another solution is to prefix names with the file name.</p>
<h3 id="1428-made-callout-compatible-with-obsidian">14:28 Made Callout Compatible with Obsidian</h3>
<p>Reference:<br>
<a href="https://blog.grew.cc/posts/hugo-alert-blockquote">Hugo Series (8): Adding GitHub-Style Alert Blockquotes - Tom&rsquo;s Blog</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
  

  


  
  <blockquote class="alert-blockquote alert-bug" >
    <p class="alert-heading callout-title">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
        <path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path>
      </svg>
      
      <span>Bug</span>
      
    </p>
    <div class="alert-content callout-content">
      <p>Testing the note block&rsquo;s style.</p>
    </div>
  </blockquote>
  

<script>
  document.addEventListener("DOMContentLoaded", function () {
    document.querySelectorAll(".alert-blockquote").forEach(function (e) {
        
        var foldAttr = e.getAttribute("data-collapsible");
        if (foldAttr === "+" || foldAttr === "-") {
            e.classList.add("is-collapsible");

            var titleElem = e.querySelector(".callout-title");
            var contentElem = e.querySelector(".callout-content");

            if (titleElem && contentElem && !titleElem.querySelector(".callout-fold")) {
                var isCollapsed = foldAttr === "-"; 
                var toggleState = function () {
                    updateState(!isCollapsed, true);
                };

                var updateState = function (collapsed, animate) {
                    isCollapsed = collapsed;
                    e.classList.toggle("is-collapsed", collapsed);
                    contentElem.style.display = collapsed ? "none" : "block";

                    
                    
                    var svgIcon = foldButton.querySelector("svg");
                    if (svgIcon) {
                        svgIcon.style.transform = collapsed ? "rotate(-90deg)" : "rotate(0deg)";
                        svgIcon.style.transition = "transform 0.2s ease-in-out";
                    }
                };

                
                var foldButton = document.createElement("div");
                foldButton.className = "callout-fold";

                
                foldButton.innerHTML = `
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-chevron-down">
                        <path d="m6 9 6 6 6-6"></path>
                    </svg>
                `;

                foldButton.addEventListener("click", function (event) {
                    event.preventDefault();
                    toggleState();
                });

                
                titleElem.appendChild(foldButton);

                
                titleElem.addEventListener("click", function (event) {
                    if (!event.defaultPrevented) {
                        event.preventDefault();
                        toggleState();
                    }
                });

                
                updateState(isCollapsed, false);
            }
        }
    });
});
</script>
<p>For regular styling, it’s achieved by modifying CSS selectors:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="cl"><span class="nt">blockquote</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="p">.</span><span class="nc">alert-blockquote</span><span class="o">,</span> <span class="p">.</span><span class="nc">quote-center</span><span class="o">,</span> <span class="p">.</span><span class="nc">quote</span><span class="o">)</span> <span class="p">{</span>  
</span></span><span class="line"><span class="cl">    <span class="k">font-style</span><span class="p">:</span> <span class="kc">italic</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">position</span><span class="p">:</span> <span class="kc">relative</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">margin</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">gap</span><span class="p">)</span> <span class="kc">auto</span> <span class="nb">calc</span><span class="p">(</span><span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="n">gap</span><span class="p">)</span><span class="o">*</span><span class="mf">.6</span><span class="p">)</span> <span class="kc">auto</span> <span class="cp">!important</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">font-style</span><span class="p">:</span> <span class="kc">italic</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">color</span><span class="p">:</span> <span class="mh">#666666</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">padding</span><span class="p">:</span> <span class="mf">1.1</span><span class="kt">em</span> <span class="mi">30</span><span class="kt">px</span> <span class="mf">.2</span><span class="kt">em</span> <span class="mi">55</span><span class="kt">px</span> <span class="cp">!important</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">border-left</span><span class="p">:</span> <span class="mi">8</span><span class="kt">px</span> <span class="kc">solid</span> <span class="mh">#3e5a72</span> <span class="cp">!important</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">line-height</span><span class="p">:</span> <span class="mf">1.5</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">position</span><span class="p">:</span> <span class="kc">relative</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl">    <span class="k">background</span><span class="p">:</span> <span class="mh">#EDEDED</span><span class="p">;</span>  
</span></span><span class="line"><span class="cl"><span class="p">}</span>  
</span></span></code></pre></td></tr></table>
</div>
</div><p>The effect is as follows:</p>
<blockquote>
<p>Hello there<br>
How should multiple quotes be handled? <span>Test</span></p>
</blockquote>
<h3 id="1636-spent-a-long-time-on-my-phone">16:36 Spent a Long Time on My Phone</h3>
<p>I took a nap at noon but ended up oversleeping without actually falling asleep. A regular routine is the foundation of healthy sleep.</p>
<h3 id="2132-came-back-from-a-walk-with-mom">21:32 Came Back from a Walk with Mom</h3>
<p>Mom called and said my brother and sister-in-law weren’t home for dinner, so she had made too much food and didn’t want it to go to waste, so she asked me to come over and eat.</p>
<p>I had already cooked my own meal—just tossed some fish mint salad and ate it. But it seemed like Mom also wanted to take a walk, so I put on my socks and shoes and went over.</p>
<h3 id="2320-added-a-link-collection-page-to-navi">23:20 Added a Link Collection Page to Navi</h3>
<p>I’m really satisfied with this page—it looks very aesthetically pleasing. I’ll be adding some great blogs here in the future.</p>
<p>When I have time, I can open them up for reference and learning, to see what other outstanding people are up to.</p>
<h3 id="0016-time-flies">00:16 Time Flies</h3>
<p>It’s time to sleep again. I should go to bed early, or I won’t be able to fall asleep.</p>
<p>Committed all the code I wrote today.</p>
<h3 id="reflection">Reflection</h3>
<p>Recently, I&rsquo;ve been too focused on technology and tools, neglecting the creation of content itself. More attention should be given to content output rather than the refinement of techniques.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://blog.grew.cc/posts/hugo-alert-blockquote">Hugo Series (8): Adding GitHub-Style Alert Blockquotes - Tom&rsquo;s Blog</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>April 8, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-08/</link>
      <pubDate>Tue, 08 Apr 2025 03:48:17 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-08/</guid>
      <description>&lt;h3 id=&#34;0913-woke-up&#34;&gt;09:13 Woke Up&lt;/h3&gt;
&lt;p&gt;Today, I integrated Mermaid&amp;rsquo;s flowchart into my blog, and it also displays correctly in Obsidian.&lt;/p&gt;
&lt;p&gt;Testing the cover page a bit more—this will allow me to create richer content in the future.&lt;/p&gt;
&lt;div class=&#34;mermaid&#34;&gt;graph LR;  
    A--&gt;B;  
    A--&gt;C;  
    B--&gt;D;  
    C--&gt;D;  
&lt;/div&gt;



&lt;h3 id=&#34;2040-back-from-a-walk-with-mom&#34;&gt;20:40 Back from a Walk with Mom&lt;/h3&gt;
&lt;p&gt;Took Mom around the area where I live, passing by my brother’s workplace, and then walked her back home.&lt;/p&gt;
&lt;p&gt;A few more trips like this, and I’ll get familiar and comfortable with the route.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="0913-woke-up">09:13 Woke Up</h3>
<p>Today, I integrated Mermaid&rsquo;s flowchart into my blog, and it also displays correctly in Obsidian.</p>
<p>Testing the cover page a bit more—this will allow me to create richer content in the future.</p>
<div class="mermaid">graph LR;  
    A-->B;  
    A-->C;  
    B-->D;  
    C-->D;  
</div>



<h3 id="2040-back-from-a-walk-with-mom">20:40 Back from a Walk with Mom</h3>
<p>Took Mom around the area where I live, passing by my brother’s workplace, and then walked her back home.</p>
<p>A few more trips like this, and I’ll get familiar and comfortable with the route.</p>
<h3 id="2152-fixed-the-missing-404-page-issue">21:52 Fixed the Missing 404 Page Issue</h3>
<p>Placed a default <code>404.html</code> page directly in the <code>static</code> folder to address the missing 404 page issue across multiple sites. Additionally, I implemented automatic language switching (Chinese/English) via script based on path matching.</p>
<p>As long as it works, it’s good enough.</p>
<h3 id="2225-taking-a-shower-and-getting-ready-for-bed">22:25 Taking a Shower and Getting Ready for Bed</h3>
<p>Indeed, getting proper sleep makes a huge difference—I feel so much more energetic now.</p>
<p>Today I slept in quite a bit longer, and my health bar slowly refilled.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hugo &#43; Obsidian: An Elegant Image Hosting-Free Solution</title>
      <link>https://jinpeng.cv/en/posts/note/code/note_20250331012336/</link>
      <pubDate>Sun, 30 Mar 2025 17:23:36 +0000</pubDate>
      <guid>https://jinpeng.cv/en/posts/note/code/note_20250331012336/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;When managing images for a Hugo blog in Obsidian, using an image hosting service can be unstable. Without one, inserting images becomes difficult and maintenance is cumbersome. Common issues include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Path Confusion&lt;/strong&gt;: Manual maintenance of the &lt;code&gt;/static/images&lt;/code&gt; directory structure is required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-language Adaptation&lt;/strong&gt;: Duplicate configuration is needed for Chinese and English paths.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Poor Development Experience&lt;/strong&gt;: Frequent 404 errors occur during local debugging and file operations.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;demonstration&#34;&gt;Demonstration&lt;/h2&gt;
&lt;p&gt;Direct rendering may result in errors due to incorrect paths, as shown below:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="problem">Problem</h2>
<p>When managing images for a Hugo blog in Obsidian, using an image hosting service can be unstable. Without one, inserting images becomes difficult and maintenance is cumbersome. Common issues include:</p>
<ol>
<li><strong>Path Confusion</strong>: Manual maintenance of the <code>/static/images</code> directory structure is required.</li>
<li><strong>Multi-language Adaptation</strong>: Duplicate configuration is needed for Chinese and English paths.</li>
<li><strong>Poor Development Experience</strong>: Frequent 404 errors occur during local debugging and file operations.</li>
</ol>
<h2 id="demonstration">Demonstration</h2>
<p>Direct rendering may result in errors due to incorrect paths, as shown below:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">GET http://192.168.3.29:1313/en/static/images/diary/two-ways.png <span class="m">404</span> <span class="o">(</span>Not Found<span class="o">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>After applying the script, the image path is corrected and re-requested:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Replaced: http://192.168.3.29:1313/en/static/images/diary/two-ways.png -&gt; http://192.168.3.29:1313/images/diary/two-ways.png
</span></span></code></pre></td></tr></table>
</div>
</div><p>The image is then rendered correctly.</p>
<img loading="lazy" src="../../../../static/images/note/%E6%88%AA%E5%9B%BE%E7%A4%BA%E4%BE%8B.png"><h2 id="solution">Solution</h2>
<p>This section provides a conceptual reference. Anyone can easily implement it. If you need the source code, feel free to request it in the comments.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="c1">// instead_images.js
</span></span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">IMAGE_REWRITER_CONFIG</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">pathPatterns</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nx">test</span><span class="o">:</span> <span class="sr">/(\/zh|\/en)\/static\/images\/(.*)/</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nx">replace</span><span class="o">:</span> <span class="s1">&#39;/images/$2&#39;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="nx">debug</span><span class="o">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">function</span> <span class="nx">rewriteImageSource</span><span class="p">(</span><span class="nx">src</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// Implement smart path conversion
</span></span></span><span class="line"><span class="cl">  <span class="c1">// [Core logic code...]
</span></span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Hijack the native image creation method
</span></span></span><span class="line"><span class="cl"><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">tagName</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// [Image object hijacking code...]
</span></span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Dynamic content handling
</span></span></span><span class="line"><span class="cl"><span class="k">new</span> <span class="nx">MutationObserver</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// [Auto-processing for new images code...]
</span></span></span><span class="line"><span class="cl"><span class="p">});</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="configuration">Configuration</h2>
<h3 id="configure-hugo">Configure Hugo</h3>
<p>In <code>config.yaml</code>, set:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yml" data-lang="yml"><span class="line"><span class="cl"><span class="nt">params</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">InsteadPicture</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Then, simply include the following in the head section:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="p">{{</span><span class="o">-</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">.</span><span class="nx">Site</span><span class="p">.</span><span class="nx">Params</span><span class="p">.</span><span class="nx">InsteadPicture</span><span class="w"> </span><span class="o">-</span><span class="p">}}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nx">script</span><span class="w"> </span><span class="nx">src</span><span class="p">=</span><span class="s">&#34;{{ &#34;</span><span class="o">/</span><span class="nx">js</span><span class="o">/</span><span class="nx">instead_images</span><span class="p">.</span><span class="nx">js</span><span class="s">&#34; | relURL }}&#34;</span><span class="p">&gt;&lt;</span><span class="o">/</span><span class="nx">script</span><span class="p">&gt;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">{{</span><span class="o">-</span><span class="w"> </span><span class="nx">end</span><span class="w"> </span><span class="o">-</span><span class="p">}}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>After configuring Obsidian, the solution will take effect.</p>
<h3 id="configure-obsidian">Configure Obsidian</h3>
<ol>
<li>Set file references to use <strong>relative path</strong> mode.</li>
<li>Configure the image storage directory as needed. For example, mine is <code>static\images\</code>.</li>
<li>No need to worry about file changes—Obsidian automatically updates links when files are moved.</li>
</ol>
<h2 id="advantages">Advantages</h2>
<ol>
<li><strong>No Dependency on Image Hosting</strong>: All images are managed locally without any file operations.</li>
<li><strong>Developer-Friendly</strong>: Real-time reloading doesn’t disrupt the writing flow.</li>
<li><strong>SEO Optimization</strong>: Ensures consistency in static resource paths.</li>
<li><strong>Multi-platform Compatibility</strong>: Works seamlessly with static site generators like Hugo/Hexo.</li>
<li><strong>Easy Organization</strong>: Moving file paths can rely on Obsidian to automatically update links.</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>Follow rss index</title>
      <link>https://jinpeng.cv/en/posts/note/code/follow_rss/</link>
      <pubDate>Wed, 16 Oct 2024 23:10:53 +0800</pubDate>
      <guid>https://jinpeng.cv/en/posts/note/code/follow_rss/</guid>
      <description>&lt;p&gt;This message is used to verify that this feed (feedId:68937012824908800) belongs to me (userId:67576575445741568). Join me in enjoying the next generation information browser &lt;a href=&#34;https://follow.is&#34;&gt;https://follow.is&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>This message is used to verify that this feed (feedId:68937012824908800) belongs to me (userId:67576575445741568). Join me in enjoying the next generation information browser <a href="https://follow.is">https://follow.is</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Debug | Emoji cheat sheet</title>
      <link>https://jinpeng.cv/en/posts/note/code/emoji-cheat-sheet/</link>
      <pubDate>Sat, 16 Mar 2024 23:10:53 +0800</pubDate>
      <guid>https://jinpeng.cv/en/posts/note/code/emoji-cheat-sheet/</guid>
      <description>&lt;p&gt;This front matter is not work&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;title: &amp;#39;Emoji cheat sheet&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: 2024-03-16T23:39:55+08:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;draft: false
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;series: [emoji]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;categories: [cheatsheet]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tags: [markdown, emoji]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;language: en
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This front matter is work&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;title: &amp;#39;Emoji Sheet&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;date: 2024-03-16T23:10:53+08:00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;draft: false
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;series: [emoji]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;categories: [cheatsheet]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tags: [markdown, emoji]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;language: en
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;math: false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>This front matter is not work</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">title: &#39;Emoji cheat sheet&#39;
</span></span><span class="line"><span class="cl">date: 2024-03-16T23:39:55+08:00
</span></span><span class="line"><span class="cl">draft: false
</span></span><span class="line"><span class="cl">series: [emoji]
</span></span><span class="line"><span class="cl">categories: [cheatsheet]
</span></span><span class="line"><span class="cl">tags: [markdown, emoji]
</span></span><span class="line"><span class="cl">language: en
</span></span></code></pre></td></tr></table>
</div>
</div><p>This front matter is work</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">title: &#39;Emoji Sheet&#39;
</span></span><span class="line"><span class="cl">date: 2024-03-16T23:10:53+08:00
</span></span><span class="line"><span class="cl">draft: false
</span></span><span class="line"><span class="cl">series: [emoji]
</span></span><span class="line"><span class="cl">categories: [cheatsheet]
</span></span><span class="line"><span class="cl">tags: [markdown, emoji]
</span></span><span class="line"><span class="cl">language: en
</span></span><span class="line"><span class="cl">math: false
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
