<?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/tags/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/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>2025-10-08</title>
      <link>https://jinpeng.cv/en/diary/2025/october/2025-10-08/</link>
      <pubDate>Wed, 08 Oct 2025 18:47:46 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/october/2025-10-08/</guid>
      <description>&lt;h3 id=&#34;1247-have-lunch&#34;&gt;12:47 Have lunch&lt;/h3&gt;
&lt;p&gt;I felt that my speaking and listening ability had decreased.&lt;/p&gt;
&lt;h3 id=&#34;1249-janice&#34;&gt;12:49 Janice&lt;/h3&gt;
&lt;p&gt;Janice is a cross-platform open-source software, especially for viewing and simply handling JSON files. It&amp;rsquo;s perfect to help me solve the big JSON file problem.&lt;/p&gt;
&lt;h3 id=&#34;1815-get-out-of-work&#34;&gt;18:15 Get out of work&lt;/h3&gt;
&lt;p&gt;Today is a focus day.&lt;/p&gt;
&lt;h3 id=&#34;2059-eat-dumplings&#34;&gt;20:59 Eat dumplings&lt;/h3&gt;
&lt;p&gt;Recently, I became busier than before. I am already lazy for cooking.&lt;/p&gt;
&lt;p&gt;Prepare to do some assignments after eating dumplings.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="1247-have-lunch">12:47 Have lunch</h3>
<p>I felt that my speaking and listening ability had decreased.</p>
<h3 id="1249-janice">12:49 Janice</h3>
<p>Janice is a cross-platform open-source software, especially for viewing and simply handling JSON files. It&rsquo;s perfect to help me solve the big JSON file problem.</p>
<h3 id="1815-get-out-of-work">18:15 Get out of work</h3>
<p>Today is a focus day.</p>
<h3 id="2059-eat-dumplings">20:59 Eat dumplings</h3>
<p>Recently, I became busier than before. I am already lazy for cooking.</p>
<p>Prepare to do some assignments after eating dumplings.</p>
<h3 id="2134-improve-powershell-profile">21:34 Improve PowerShell profile</h3>
<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><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Record now</span>
</span></span><span class="line"><span class="cl"><span class="k">function</span> now <span class="o">{</span>
</span></span><span class="line"><span class="cl">    param<span class="o">(</span>
</span></span><span class="line"><span class="cl">        <span class="o">[</span>switch<span class="o">]</span><span class="nv">$t</span>,
</span></span><span class="line"><span class="cl">        <span class="o">[</span>string<span class="o">]</span><span class="nv">$TyporaPath</span>
</span></span><span class="line"><span class="cl">    <span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">&amp;</span> <span class="s2">&#34;D:\blog\assets\code\now.ps1&#34;</span> @PSBoundParameters
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">function</span> push <span class="o">{</span>
</span></span><span class="line"><span class="cl">    param<span class="o">(</span>
</span></span><span class="line"><span class="cl">        <span class="o">[</span>string<span class="o">]</span><span class="nv">$Message</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="o">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># ���û���ṩ��Ϣ��ʹ�õ�ǰ����ʱ��</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">([</span>string<span class="o">]</span>::IsNullOrWhiteSpace<span class="o">(</span><span class="nv">$Message</span><span class="o">))</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="nv">$date</span> <span class="o">=</span> Get-Date -Format <span class="s2">&#34;MMMM d, yyyy&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="nv">$time</span> <span class="o">=</span> Get-Date -Format <span class="s2">&#34;HH:mm&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="nv">$Message</span> <span class="o">=</span> <span class="s2">&#34;diary: </span><span class="nv">$date</span><span class="s2"> </span><span class="nv">$time</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    Write-Host <span class="s2">&#34;Adding all changes...&#34;</span> -ForegroundColor Cyan
</span></span><span class="line"><span class="cl">    git add .
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    Write-Host <span class="s2">&#34;Committing with message: </span><span class="nv">$Message</span><span class="s2">&#34;</span> -ForegroundColor Yellow
</span></span><span class="line"><span class="cl">    git commit -m <span class="nv">$Message</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    Write-Host <span class="s2">&#34;Pushing to remote...&#34;</span> -ForegroundColor Green
</span></span><span class="line"><span class="cl">    git push
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    Write-Host <span class="s2">&#34;Done!&#34;</span> -ForegroundColor Green
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Set-Alias -Name n -Value now
</span></span></code></pre></td></tr></table>
</div>
</div><p>Now can directly call Typora to edit diary so that can get Grammarly support.</p>
<h3 id="2300-learn-how-to-input-en-dash-and-em-dash-">23:00 Learn how to input en dash(–) and em dash (—)</h3>
<p>An en dash is used to express a range and to build a relationship.</p>
<p>An em dash is used to express a stop or supplementary explanation and tone shift.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 14, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-14/</link>
      <pubDate>Mon, 14 Apr 2025 03:02:23 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-14/</guid>
      <description>&lt;h3 id=&#34;1102-totally-blind&#34;&gt;11:02 Totally Blind&lt;/h3&gt;
&lt;p&gt;The website&amp;rsquo;s Sitemap kept generating empty files, and I spent time troubleshooting the issue. After a round of debugging, I realized the &lt;code&gt;disable&lt;/code&gt; flag in the configuration file was set to &lt;code&gt;true&lt;/code&gt;. The local &lt;code&gt;hugo.yaml&lt;/code&gt; had already been changed to &lt;code&gt;false&lt;/code&gt;, but I still wasted two hours.&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;/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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;sitemap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;changefreq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;disable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;priority&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0.8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&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;h3 id=&#34;1149-after-eating-liangfen&#34;&gt;11:49 After Eating Liangfen&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;pre-commit&lt;/code&gt; always makes me wait forever during submissions, and the &lt;code&gt;node_modules&lt;/code&gt; directory also slows down Obsidian&amp;rsquo;s startup. So, I deleted it.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="1102-totally-blind">11:02 Totally Blind</h3>
<p>The website&rsquo;s Sitemap kept generating empty files, and I spent time troubleshooting the issue. After a round of debugging, I realized the <code>disable</code> flag in the configuration file was set to <code>true</code>. The local <code>hugo.yaml</code> had already been changed to <code>false</code>, but I still wasted two hours.</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">sitemap</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">changefreq</span><span class="p">:</span><span class="w"> </span><span class="l">always</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">disable</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">priority</span><span class="p">:</span><span class="w"> </span><span class="m">0.8</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="1149-after-eating-liangfen">11:49 After Eating Liangfen</h3>
<p><code>pre-commit</code> always makes me wait forever during submissions, and the <code>node_modules</code> directory also slows down Obsidian&rsquo;s startup. So, I deleted it.</p>
<p>I also removed Front Matter (CMS). Obsidian itself is already sufficient—no need to chase after redundant tools.</p>
<h3 id="1446-trying-to-shelve-my-thoughts">14:46 Trying to Shelve My Thoughts</h3>
<p>I couldn’t fall asleep at noon, thinking about learning <code>Sass</code> and <code>Tailwind CSS</code>, wondering why lunch wasn’t over yet, and stressing over things like the provincial civil service exam (CSC). These thoughts swirled in my head, and in the end, I didn’t sleep at all.</p>
<p>There’s no need to learn so many things—time is limited. Mastering basic CSS is enough for me. Why bother with more? I’m not someone who makes a living as a front-end developer. What I need now is a way to earn a living, or at least something that brings me peace of mind.</p>
<h3 id="1949-after-dinner">19:49 After Dinner</h3>
<p>So many thoughts.</p>
<p>Yesterday, I bought liangfen and liangpi, and it took me the whole day to finish them today. But these things aren’t filling—they’re mostly water, so I got hungry again quickly. Then, my stomach took control of my brain, ordering my mouth to eat an ice cream, a ham sausage, a fried egg, and a pot of vegetables.</p>
<p>Supermarket eggs are ridiculously cheap—only 3.99 yuan per pound—so I quickly put the packaged eggs in my cart back on the shelf.</p>
<p>Later, my mom asked me to go for a walk, but I was too lazy to move, so I told her to come to me instead.</p>
<h3 id="2142-back-from-a-walk-with-mom">21:42 Back from a Walk with Mom</h3>
<p>I always get super hungry after walks. Came back and ate some fruit and bread—so much for losing weight.</p>
<h3 id="2214-finished-writing-a-reply-to-huanhuan-about-charlie">22:14 Finished Writing a Reply to Huanhuan About Charlie</h3>
<p>When similar incidents occur around us, there are many issues worth reflecting upon.</p>
<h3 id="2349-some-eternal-things-only-can-be-discovered-by-ourselves">23:49 Some eternal things only can be discovered by ourselves</h3>
<blockquote>
<p>When we discuss things like love, truth, and the supreme goodness that others speak or write about, we need to be rational and recognize that the preciousness of these things lies in the fact that not everyone can see and recognize them.</p>
<p>Therefore, we must carefully discuss the things they write about, and firmly believe that our own judgment comes from our own things.</p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>April 2, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-02/</link>
      <pubDate>Wed, 02 Apr 2025 07:44:01 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-02/</guid>
      <description>&lt;h3 id=&#34;0936-getting-ready-to-get-up&#34;&gt;09:36 Getting Ready to Get Up&lt;/h3&gt;
&lt;p&gt;The sky is already bright, and I haven’t slept enough. So annoying.&lt;/p&gt;
&lt;h3 id=&#34;1230-actually-getting-up-now&#34;&gt;12:30 Actually Getting Up Now&lt;/h3&gt;
&lt;p&gt;Made a simple lunch of ham and shredded pork noodles—delicious!&lt;/p&gt;
&lt;p&gt;Then I started thinking about how many of the articles on my blog lack depth. Exposing shallow thoughts isn’t necessarily a good thing, and it also makes the blog structure messy.&lt;/p&gt;
&lt;p&gt;So I restructured the blog’s categorization logic: removed diary entries from the homepage and archive page, created a separate menu button for them, and organized them by year.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="0936-getting-ready-to-get-up">09:36 Getting Ready to Get Up</h3>
<p>The sky is already bright, and I haven’t slept enough. So annoying.</p>
<h3 id="1230-actually-getting-up-now">12:30 Actually Getting Up Now</h3>
<p>Made a simple lunch of ham and shredded pork noodles—delicious!</p>
<p>Then I started thinking about how many of the articles on my blog lack depth. Exposing shallow thoughts isn’t necessarily a good thing, and it also makes the blog structure messy.</p>
<p>So I restructured the blog’s categorization logic: removed diary entries from the homepage and archive page, created a separate menu button for them, and organized them by year.</p>
<blockquote>
<p>Cherish every idea you have. Follow the thread of each thought and explore it carefully. Consider whether it’s worth writing about. If it is, then make sure to articulate each idea clearly.</p>
</blockquote>
<p>Spending too much time realizing how precious time is can also be a waste of time.</p>
<div class="encrypted-content" data-cipher="GlkNTQ0LWZpbmFsbHktZmVlbGluZy1zbGVlcHktYWZ0ZXItdGlua2VyaW5nLXdpdGgtdGhlLWJsb2ciPjE1OjQ0IEZpbmFsbHkgRmVlbGluZyBTbGVlcHkgQWZ0ZXIgVGlua2VyaW5nIHdpdGggdGhlIEJsb2c8L2gzPgo8cD5IYWQgaW5zb21uaWEgYWdhaW4gbGFzdCBuaWdodC4gV2VudCB0byBiZWQgYXQgbWlkbmlnaHQgYnV0IHdhcyBzdGlsbCBhd2FrZSBhdCAyIGEubS4gR290IHVwLCB0b29rIG1hdHRlcnMgaW50byBteSBvd24gaGFuZHMgKDxlbT5ESVk8L2VtPiksIGFuZCBxdWlja2x5IGZlbGwgYXNsZWVwIGFmdGVyd2FyZC4gTWlnaHQgbmVlZCB0byBnZXQgc29tZSBtZWxhdG9uaW4gb3Igc2ltaWxhciBtZWRpY2F0aW9uIGp1c3QgaW4gY2FzZS48L3A&#43;CjxwPlNvbWV0aW1lcywgd2hlbiB5b3Ugc3VkZGVubHkgbmVlZCBzb21ldGhpbmcgbGlrZSB0aGlzLCBzZWFyY2hpbmcgZm9yIHZpZGVvcyBpcyBoYXJkIGFuZCB0aW1lLWNvbnN1bWluZy4gU28gaXTigJlzIGJldHRlciB0byBjb2xsZWN0IHJlc291cmNlcyBpbiBhZHZhbmNlLjwvcD4KPHA&#43;V2lzaCBJIGNvdWxkIHNwZW5kIGV2ZXJ5IGRheSB3aXRoIEh1YW5odWFuLjwvcD4KPGgzIPSIx" data-hint="Content Here is Encrypted" data-error="Password Error">
  <div class="locked-state">
    <p>🔒 Content Here is Encrypted</p>
    <div class="password-prompt">
      <div class="password-input-wrapper">
        <input type="password" class="password-input"
               placeholder="Please input password"
               id="pwd-input-0"
               aria-label="加密内容密码">
        <button type="button"
                class="toggle-visibility-btn"
                aria-pressed="false"
                aria-label="显示或隐藏密码"
                onclick="toggleVisibility(this, 'pwd-input-0')">
          <svg class="icon icon-eye-open" viewBox="0 0 24 24" aria-hidden="true">
            <path d="M12 5C6 5 2 12 2 12s4 7 10 7 10-7 10-7-4-7-10-7Zm0 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm0-6a2 2 0 1 0 0 4 2 2 0 0 0 0-4Z"/>
          </svg>
          <svg class="icon icon-eye-closed" viewBox="0 0 24 24" aria-hidden="true">
            <path d="M3.5 4.5 2 6l3.2 3.2A13 13 0 0 0 2 12s4 7 10 7a9.7 9.7 0 0 0 4.7-1.2L18 19l2.5 2.5 1.5-1.5-18-18Zm8.5 12c-5.1 0-8-4-8-4a11 11 0 0 1 2.6-2.9l1.6 1.6a4 4 0 0 0 5.2 5.2l1.6 1.6A7.7 7.7 0 0 1 12 16.5Zm8-4.5a12.5 12.5 0 0 0-4.2-3.6l1.6-1.6A13.6 13.6 0 0 1 22 12s-1.1 2-3 4.1l-1.4-1.4A11.2 11.2 0 0 0 20 12Z"/>
          </svg>
        </button>
      </div>
      <button class="decrypt-btn" onclick="decryptContent(event, 'pwd-input-0')">
        Unlock
      </button>
    </div>
    <div class="status-message"></div>
  </div>
  <div class="decrypted-content markdown-body" hidden></div>
</div>



<style>
.encrypted-content {
  border: 1px solid #878787;
  border-radius: 0.5rem;
  padding: 1.5rem;
  margin: 1.5rem 0;
  transition: all 0.3s ease;
}

.encrypted-content.unlocked {
  border: none;
  padding: 0;
  margin: 0;
   
  background-image: radial-gradient(rgba(50, 0, 0, 0.1) 1px, transparent 0) !important;
  background-size: 10px 10px;
   
}

.password-prompt {
  display: flex;
  gap: 0.75rem;
  margin: 1rem 0;
}

.password-input-wrapper {
  position: relative;
  flex: 3;
}

.password-input {
  width: 100%;
  min-width: 150px;
  padding: 0.75rem;
  padding-right: 2.5rem;
  border: 1px solid #ddd;
  border-radius: 0.25rem;
}

.password-input.error {
  border-color: #dc3545;
}

.toggle-visibility-btn {
  position: absolute;
  top: 50%;
  right: 0.75rem;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  cursor: pointer;
  line-height: 0;
  padding: 0;
  color: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
}

.toggle-visibility-btn .icon {
  width: 1.25rem;
  height: 1.25rem;
  fill: currentColor;
}

.toggle-visibility-btn .icon-eye-closed {
  display: none;
}

.toggle-visibility-btn.is-visible .icon-eye-open {
  display: none;
}

.toggle-visibility-btn.is-visible .icon-eye-closed {
  display: block;
}

.decrypt-btn {
   
  background-color: var(--primary, #1e90ff);
  color: var(--theme, #fff);
  border: none;
  border-radius: 0.25rem;
  cursor: pointer;
  transition: opacity 0.3s;
  font-weight: 500;
  flex: 1;
}

.decrypt-btn:hover {
  opacity: 0.9;
}


.status-message {
  color: #6c757d;
  font-size: 0.9em;
  min-height: 1.2em;
}

.status-message.error {
  color: #dc3545;
}
</style>

<script>
  function toggleVisibility(btn, inputId) {
    const input = document.getElementById(inputId);
    const isPwd = input.type === 'password';
    input.type = isPwd ? 'text' : 'password';
    btn.setAttribute('aria-pressed', String(isPwd));
    btn.classList.toggle('is-visible', isPwd);
  }

  function decryptContent(event, inputId) {
    event.preventDefault();
    const input = document.getElementById(inputId);
    const container = input.closest('.encrypted-content');
    const statusEl = container.querySelector('.status-message');
    const decryptedContent = container.querySelector('.decrypted-content');
  
    statusEl.textContent = '';
    statusEl.classList.remove('error');
    input.classList.remove('error');
  
    
    const today = new Date();
    const mmdd = String(today.getUTCMonth() + 1).padStart(2, '0') + String(today.getUTCDate()).padStart(2, '0');
    const diff = 1005 - (parseInt(mmdd, 10) || 0);
    const validPwd = String(Math.abs(diff)).padStart(4, '0');
  
    if (input.value !== validPwd) {
      input.classList.add('error');
      statusEl.textContent = container.dataset.error || '';
      statusEl.classList.add('error');
      input.focus();
      return;
    }
  
    try {
      let cipherText = container.dataset.cipher.replace(/\s+/g, '');
  
      
      
      
      
      
      
      
      
      
      if (cipherText.length > 12) {
        const part1 = cipherText.slice(0, 3);               
        const part2 = cipherText.slice(3, -9);              
        const part3 = cipherText.slice(-9, -4);             
        const part4 = cipherText.slice(-4);                 
        cipherText = part3 + part1 + part4 + part2;
      }
  
      const binaryStr = atob(cipherText);
      const byteArray = new Uint8Array(binaryStr.length);
      for (let i = 0; i < binaryStr.length; i++) {
        byteArray[i] = binaryStr.charCodeAt(i);
      }
  
      const decoded = new TextDecoder("utf-8").decode(byteArray);
      const fragment = document.createRange().createContextualFragment(decoded);
  
      decryptedContent.innerHTML = '';
      decryptedContent.appendChild(fragment);
  
      container.querySelector('.locked-state').hidden = true;
      decryptedContent.hidden = false;
      container.classList.add('unlocked');
  
    } catch (e) {
      console.error(e);
      statusEl.textContent = 'Decode Failed: ' + e.message;
      statusEl.classList.add('error');
    }
  }
  
  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.password-input').forEach(input => {
      input.addEventListener('keypress', e => {
        if (e.key === 'Enter') {
          decryptContent(e, input.id);
        }
      });
    });
  });
  
</script>

<h3 id="2237-bought-a-domain-for-12-bucks">22:37 Bought a Domain for 12 Bucks</h3>
<p>Domain: <a href="https://jeapo.top">jeapo.top</a> or <a href="https://www.jeapo.top">www.jeapo.top</a></p>
<p>Configuring the DNS resolution was a bit tricky. Now I understand it requires settings on both ends: Alibaba Cloud resolves to another network server, so accessing the domain will direct you to that server. If the server stores the domain’s information, it will provide the corresponding data to requests for that domain.</p>
<h3 id="2307-time-to-sleep">23:07 Time to Sleep</h3>
<p>I won&rsquo;t toss and turn before bed anymore; I&rsquo;ll just play with my phone, hoping to get a good night&rsquo;s sleep.</p>
]]></content:encoded>
    </item>
    <item>
      <title>April 1, 2025</title>
      <link>https://jinpeng.cv/en/diary/2025/april/2025-04-01/</link>
      <pubDate>Tue, 01 Apr 2025 02:06:27 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/april/2025-04-01/</guid>
      <description>&lt;h3 id=&#34;1006-stayed-up-late-again&#34;&gt;10:06 Stayed up late again&lt;/h3&gt;
&lt;p&gt;Electric blankets may affect sleep quality. This is just a speculation, but thinking back to times when I slept well, it was usually when the ambient temperature was lower than the blanket&amp;rsquo;s temperature, and the blanket&amp;rsquo;s warmth was evenly distributed. Electric blankets might create excessive heat or uneven heating, which could disrupt sleep.&lt;/p&gt;
&lt;h3 id=&#34;1202-integrating-conventional-commits&#34;&gt;12:02 Integrating Conventional Commits&lt;/h3&gt;
&lt;p&gt;Implemented Conventional Commits into the submission workflow. Since it&amp;rsquo;s a blog repository, I added the main article types. Later, I can analyze my commit history to track how I spend my time.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="1006-stayed-up-late-again">10:06 Stayed up late again</h3>
<p>Electric blankets may affect sleep quality. This is just a speculation, but thinking back to times when I slept well, it was usually when the ambient temperature was lower than the blanket&rsquo;s temperature, and the blanket&rsquo;s warmth was evenly distributed. Electric blankets might create excessive heat or uneven heating, which could disrupt sleep.</p>
<h3 id="1202-integrating-conventional-commits">12:02 Integrating Conventional Commits</h3>
<p>Implemented Conventional Commits into the submission workflow. Since it&rsquo;s a blog repository, I added the main article types. Later, I can analyze my commit history to track how I spend my time.</p>
<h3 id="1519-doing-laundry">15:19 Doing laundry</h3>
<blockquote>
<p>Information, for humans, is like food and sexual desire.</p>
</blockquote>
<p>As long as a person can continuously consume information, even someone without deep thoughts will experience a kind of physiological satisfaction. This is also why people are so obsessed with gossip.</p>
<p>This process may seem harmless, but it consumes a lot of time and leaves people feeling exhausted and empty.</p>
<p>Properly controlling and resisting such temptations allows us to recognize our own existence—rather than just being a vessel for generating and filling desires.</p>
<h3 id="2356-late-at-night">23:56 Late at night</h3>
<p>Migrated Typehco&rsquo;s articles to Hugo and did some initial optimizations for the <code>archives</code> page.</p>
<p>There are still so many things I want to do but haven&rsquo;t gotten around to. Time to sleep—I&rsquo;ll tackle them tomorrow when I wake up.</p>
]]></content:encoded>
    </item>
    <item>
      <title>联动Obsidian和Hugo</title>
      <link>https://jinpeng.cv/en/diary/2025/february/2025-02-08/</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://jinpeng.cv/en/diary/2025/february/2025-02-08/</guid>
      <description>&lt;p&gt;今天很开心，因为小欢欢来了。&lt;/p&gt;
&lt;p&gt;之前放弃了使用Obsidian，现在又重新捡起来了。因为我发现现在借助Obsidian可以很好的联动Git 完成文章的发布和记录。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>今天很开心，因为小欢欢来了。</p>
<p>之前放弃了使用Obsidian，现在又重新捡起来了。因为我发现现在借助Obsidian可以很好的联动Git 完成文章的发布和记录。</p>
<p>毋庸置疑Obsidian是一个超级好用的软件，希望输出一些东西使用这个软件是相当可靠的。开源也不用担心啥，今天花了整整一天的时间来调试联动Obsidian和Hugo。</p>
<p>靠近目标的工作是一点儿也没做。虽然总说磨刀不误砍柴工，但是天天磨刀是肯定当不了一个合格的砍柴工的。</p>
<p>后面就好好学习，好好记录吧，除了周末可以用来sharpening之外，平时工作时间还是好好地学习，好好地工作和折磨副业的事情。</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> 学会搁置</li>
<li><input checked="" disabled="" type="checkbox"> 数量关系 P37</li>
<li><input checked="" disabled="" type="checkbox"> 可折叠适配移动端，仅显示图标</li>
<li><input checked="" disabled="" type="checkbox"> Nav-toggle 仅放置在navi页面</li>
<li><input checked="" disabled="" type="checkbox"> 删除border-right</li>
<li><input checked="" disabled="" type="checkbox"> 禁用Navi滚动条</li>
<li><input checked="" disabled="" type="checkbox"> （放弃）尝试缓存iframe页面。</li>
<li><input checked="" disabled="" type="checkbox"> obsidian Hugo插件</li>
<li><input checked="" disabled="" type="checkbox"> （放弃）开发一个Obsidian插件，同步到一本日记</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
