<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>kj’s blog</title><link>https://kfjie.me/en/algolia.json</link><description>Recent content from kj’s blog</description><generator>Hugo</generator><language>en</language><managingEditor>None (Kfjie)</managingEditor><webMaster>None (Kfjie)</webMaster><copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright><lastBuildDate>Thu, 29 Oct 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://kfjie.me/en/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Fine-Tune a Video Model with a 12GB Graphics Card: A Log of My ZeRO-3 Multi-GPU Experiment</title><link>https://kfjie.me/en/post/zero3-multigpu-debugging/</link><pubDate>Thu, 29 Oct 2026 00:00:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/zero3-multigpu-debugging/</guid><description>
<![CDATA[<h1>How to Fine-Tune a Video Model with a 12GB Graphics Card: A Log of My ZeRO-3 Multi-GPU Experiment</h1><p>Author: Kfjie(None)</p>
        
          <p>This post documents the process of fine-tuning a video model on the server that I worked on earlier.</p>
<p>We&rsquo;re using Video-ORA. The task is to have the model watch a video, output the time intervals worth keeping, and then pass that information to a subsequent program for editing. I&rsquo;m working on SFT, which involves supervised fine-tuning using the video and corresponding answers to train a small number of additional parameters using LoRA.</p>
        
        <hr><p>Published on 2026-10-29 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-10-29</p>]]></description><category>Notes</category></item><item><title>Notes: Reversing a Linked List</title><link>https://kfjie.me/en/post/reverse-linked-list/</link><pubDate>Sun, 18 Oct 2026 20:00:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/reverse-linked-list/</guid><description>
<![CDATA[<h1>Notes: Reversing a Linked List</h1><p>Author: Kfjie(None)</p>
        
          <p>r: Reverse the entire singly linked list</p>
<h2 id="first-lets-look-at-this-set-of-linked-lists">
<a class="header-anchor" href="#first-lets-look-at-this-set-of-linked-lists"></a>
First, let&rsquo;s look at this set of linked lists
</h2><p>For example, suppose we have the following linked list:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">head
</span></span><span class="line"><span class="cl"> ↓
</span></span><span class="line"><span class="cl"> 1 → 2 → 3 → 4 → null
</span></span></code></pre></div><p>While keeping the positions of the nodes in the diagram unchanged, we need to reverse the directions of the edges between the nodes:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">null ← 1 ← 2 ← 3 ← 4
</span></span><span class="line"><span class="cl">                   ↑
</span></span><span class="line"><span class="cl">                  head
</span></span></code></pre></div><p>It turns out that <code>1</code> It is a leaf node; there is no previous node. After reversal,<code>1</code> It then becomes a leaf node, and its <code>next</code> Should point to <code>null</code>, and the new root node is <code>4</code>。</p>
        
        <hr><p>Published on 2026-10-18 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-10-18</p>]]></description><category>Notes</category></item><item><title>Receiving Notifications via China Mobile's New Messaging Service: CMCC Notify Development Log</title><link>https://kfjie.me/en/post/cmcc-notify-development/</link><pubDate>Thu, 17 Sep 2026 00:00:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/cmcc-notify-development/</guid><description>
<![CDATA[<h1>Receiving Notifications via China Mobile's New Messaging Service: CMCC Notify Development Log</h1><p>Author: Kfjie(None)</p>
        
          <p>This post is meant to document another project I&rsquo;ve been working on recently:<code>CMCC Notify</code>。</p>
<p>Project Address:<br>
<a href="https://github.com/thekfjie/cmcc-notify">github.com/thekfjie/cmcc-notify</a></p>
<p><s>Thank you to OpenClaw for open-sourcing this project</s>, allowing major<s>Inflexible service providers</s>They’ve also released quite a few cool APIs (🙏). This time, I’m using China Mobile’s New Message Channel API, which was originally designed to allow tools like OpenClaw and MClaw to integrate with conversations, but I’m using it to receive server notifications.</p>
<p>Both email and Gotify work, but it’s nice to have an additional way to view messages directly on your phone. Server alerts, script results, and NAS notifications can all be sent here.</p>
        
        <hr><p>Published on 2026-09-17 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-09-17</p>]]></description><category>Project</category></item><item><title>iDEAL Withdrawal History for the ChatGPT Discount Checkout</title><link>https://kfjie.me/en/post/chatgpt-trial-ideal-redirect-extraction/</link><pubDate>Thu, 20 Aug 2026 00:10:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/chatgpt-trial-ideal-redirect-extraction/</guid><description>
<![CDATA[<h1>iDEAL Withdrawal History for the ChatGPT Discount Checkout</h1><p>Author: Kfjie(None)</p>
        
          <p>This post summarizes the iDEAL withdrawal routes that were briefly available around July–August 2026. Later, iDEAL significantly tightened its restrictions and began implementing a &ldquo;one QR code per account&rdquo; policy. I’m keeping a record here of the request and status changes I observed at the time.</p>
<blockquote>
<p><strong>Statement</strong> : This article draws on existing projects and link-extraction scripts from the open-source community. My contribution primarily involved integrating the link extraction process with the subsequent payment workflow. Since the relevant APIs and risk control rules are subject to change at any time, this document serves solely as a record of protocol research and troubleshooting.</p>
        
        <hr><p>Published on 2026-08-20 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-08-20</p>]]></description><category>Notes</category></item><item><title>ChatGPT Discount Checkout: Direct Card Linking History</title><link>https://kfjie.me/en/post/chatgpt-trial-direct-card-extraction/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/chatgpt-trial-direct-card-extraction/</guid><description>
<![CDATA[<h1>ChatGPT Discount Checkout: Direct Card Linking History</h1><p>Author: Kfjie(None)</p>
        
          <p>This post is a follow-up documenting the process of successfully using a direct-issued Checkout card with a ChatGPT discount around August 2026. At the time, I used the approach of “linking the card first, then creating the Checkout” to address the issue where certain card issuers were prone to rejecting transactions when submitted directly on the checkout page.</p>
<blockquote>
<p><strong>Statement</strong> : This article draws on existing projects from the open-source community. My contribution primarily involved integrating the order creation and automatic payment processes. Since the relevant APIs and risk control rules are subject to change at any time, this document is intended solely for protocol research and troubleshooting purposes; please do not use it for any illegal activities.</p>
        
        <hr><p>Published on 2026-08-20 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-08-20</p>]]></description><category>Notes</category></item><item><title>Share the Large Model with Your Family: Connect Codex to WeChat</title><link>https://kfjie.me/en/post/weixin-household-gateway/</link><pubDate>Thu, 21 May 2026 00:00:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/weixin-household-gateway/</guid><description>
<![CDATA[<h1>Share the Large Model with Your Family: Connect Codex to WeChat</h1><p>Author: Kfjie(None)</p>
        
          <p>This post is meant to document a project I’ve almost finished working on recently:<code>weixin-household-gateway</code>。</p>
<p>Project Address:<br>
<a href="https://github.com/thekfjie/weixin-household-gateway">github.com/thekfjie/weixin-household-gateway</a></p>
<p>Simply put, it’s a home gateway that integrates the Codex/AI backend into WeChat.<br>
It’s not a web-based agent, nor is it simply a chatbot; rather, it’s a WeChat gateway deployed on my own server: I can use it within WeChat to manage servers, code, files, and attachments, and I can also let my family members use it to have casual AI conversations in a relatively secure way.</p>
        
        <hr><p>Published on 2026-05-21 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-05-21</p>]]></description><category>Project</category></item><item><title>Guide to Reinstalling the Raspberry Pi System and Configuring VNC Remote Desktop</title><link>https://kfjie.me/en/post/raspberry-pi-vnc-setup-guide/</link><pubDate>Sat, 14 Mar 2026 00:50:27 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/raspberry-pi-vnc-setup-guide/</guid><description>
<![CDATA[<h1>Guide to Reinstalling the Raspberry Pi System and Configuring VNC Remote Desktop</h1><p>Author: Kfjie(None)</p>
        
          <p>It’s been a long time since I’ve tinkered with my Raspberry Pi. I recently bought a new TF card and wanted to start messing around with it again, but I realized that since it’s been so long, I’d forgotten how to do a lot of the steps… It took me a while to figure things out, so I decided to write down these setup steps in this tutorial. That way, when memory prices drop and I want to set it up again, I can just follow along step by step.</p>
        
        <hr><p>Published on 2026-03-14 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-03-14</p>]]></description><category>Guide</category></item><item><title>Meting-API User Guide</title><link>https://kfjie.me/en/post/meting-api-usage-guide/</link><pubDate>Sat, 28 Feb 2026 11:57:05 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/meting-api-usage-guide/</guid><description>
<![CDATA[<h1>Meting-API User Guide</h1><p>Author: Kfjie(None)</p>
        
          <p><a href="https://github.com/thekfjie/Meting_Api_Kugou">Meting_kugou</a>This site does not provide any services; the following is provided solely as a repository demo.</p>
<h2 id="1-base-address">
<a class="header-anchor" href="#1-base-address"></a>
1. Base Address
</h2><ul>
<li><strong>Main Address</strong>：<code>https://api.kfjie.me/music</code></li>
<li><strong>Request Method</strong>：<code>GET</code></li>
<li><strong>Uses</strong> : Provides a unified data interface for MetingJS, APlayer, and the site&rsquo;s custom player</li>
</ul>
<hr>
<h2 id="2-common-parameters">
<a class="header-anchor" href="#2-common-parameters"></a>
2. Common Parameters
</h2><p>The three most commonly used parameters for the interface are as follows:</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Parameters</th>
					<th style="text-align: left">Note</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><code>server</code></td>
					<td style="text-align: left">Platforms, such as <code>netease</code>、<code>tencent</code>、<code>kugou</code></td>
			</tr>
			<tr>
					<td style="text-align: left"><code>type</code></td>
					<td style="text-align: left">Operation types, such as <code>search</code>、<code>song</code>、<code>playlist</code>、<code>album</code></td>
			</tr>
			<tr>
					<td style="text-align: left"><code>id</code></td>
					<td style="text-align: left">Resource IDs, keywords, and hashes for the corresponding platform, or Kugou Desktop playlist share shortcodes/links</td>
			</tr>
	</tbody>
</table>
<p>Common <code>type</code>：</p>
        
        <hr><p>Published on 2026-02-28 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-02-28</p>]]></description><category>Guide</category></item><item><title>Solution for a Blank Screen on the Raspberry Pi 4 When Using VNC</title><link>https://kfjie.me/en/post/raspberry-pi-4-vnc-white-screen-solution/</link><pubDate>Tue, 17 Feb 2026 23:55:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/raspberry-pi-4-vnc-white-screen-solution/</guid><description>
<![CDATA[<h1>Solution for a Blank Screen on the Raspberry Pi 4 When Using VNC</h1><p>Author: Kfjie(None)</p>
        
          <p>When using a Raspberry Pi 4B (4GB, Rev 1.5) running Raspberry Pi OS (64-bit), after initially configuring SSH and enabling the VNC server, you may encounter a blank screen when connecting with RealVNC Viewer (only the right-click menu is displayed). This is typically caused by incompatibility between the Wayland display server—which the system uses by default—and RealVNC.</p>
<h2 id="1-problem-analysis">
<a class="header-anchor" href="#1-problem-analysis"></a>
1. Problem Analysis
</h2><p>After ruling out resolution settings and driver issues, the root cause is that Raspberry Pi OS has Wayland enabled by default in these newer versions, and RealVNC does not yet fully support it.</p>
        
        <hr><p>Published on 2026-02-17 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-02-17</p>]]></description><category>Notes</category></item><item><title>A Detailed Explanation of the Linux Server Directory Structure</title><link>https://kfjie.me/en/post/understanding-the-server/</link><pubDate>Sat, 07 Feb 2026 21:18:00 +0800</pubDate><author>None (Kfjie)</author><guid>https://kfjie.me/en/post/understanding-the-server/</guid><description>
<![CDATA[<h1>A Detailed Explanation of the Linux Server Directory Structure</h1><p>Author: Kfjie(None)</p>
        
          <p>The Linux file system uses a tree-like structure, and all files and directories start at <strong>Root Directory</strong> (<code>/</code>)。</p>
<h2 id="diagram-of-the-linux-file-system-structure">
<a class="header-anchor" href="#diagram-of-the-linux-file-system-structure"></a>
Diagram of the Linux File System Structure
</h2><pre class="mermaid">
  graph LR
    Root["/ (根目录)"]

    subgraph sg_core [核心系统]
        Usr["/usr/"]
        Boot["/boot/"]
        LinkBin["/bin, /sbin, /lib*"]
    end
    
    LinkBin -.-> Usr
    Root --> Usr
    Root --> Boot

    Usr --> UsrBin["bin/ (git, python3)"]
    Usr --> UsrSbin["sbin/ (nginx)"]
    Usr --> UsrLocal["local/ (手动安装)"]
    Usr --> UsrLib["lib/ (库文件)"]

    subgraph sg_data [配置与数据]
        Etc["/etc/"]
        Var["/var/"]
        Tmp["/tmp/"]
    end

    Root --> Etc
    Root --> Var
    Root --> Tmp

    Etc --> NginxConf["nginx/"]
    Etc --> Systemd["systemd/system/"]
    Etc --> Ssh["ssh/"]

    Var --> Log["log/"]
    Var --> Www["www/"]

    subgraph sg_apps [应用软件]
        Opt["/opt/"]
        Snap["/snap/"]
    end

    Root --> Opt
    Root --> Snap
    
    Opt --> OpenList["openlist/"]

    subgraph sg_users [用户空间]
        Home["/home/"]
        RootHome["/root/"]
    end
    
    Root --> Home
    Root --> RootHome

    subgraph sg_virtual [虚拟文件系统]
        DirProc["/proc/"]
        DirSys["/sys/"]
        DirDev["/dev/"]
        DirRun["/run/"]
    end

    Root --> DirProc
    Root --> DirSys
    Root --> DirDev
    Root --> DirRun

    subgraph sg_mounts [外部存储]
        Mnt["/mnt/"]
        Media["/media/"]
    end

    Root --> Mnt
    Root --> Media
</pre><hr>
<h2 id="1-core-system-directory">
<a class="header-anchor" href="#1-core-system-directory"></a>
1. Core System Directory
</h2><h3 id="bin--sbin-binaries">
<a class="header-anchor" href="#bin--sbin-binaries"></a>
bin &amp; sbin (Binaries)
</h3><ul>
<li><strong>Uses</strong> : Stores executable commands.</li>
<li><strong>Note</strong>：
<ul>
<li><strong>bin</strong> : Contains basic commands that all users can use, such as <code>ls</code>, <code>cp</code>, <code>mv</code> etc.</li>
<li><strong>sbin</strong> : Contains commands primarily used for system administration; typically, only users with administrator privileges can execute them, such as <code>reboot</code>, <code>fdisk</code> etc.</li>
</ul>
</li>
</ul>
<h3 id="etc-etceteraconfiguration">
<a class="header-anchor" href="#etc-etceteraconfiguration"></a>
etc (Etcetera/Configuration)
</h3><ul>
<li><strong>Uses</strong> : Stores system and software configuration files.</li>
<li><strong>Note</strong> : Nginx configuration, user account information, network configuration, and other items are all located here. Modifying files in this directory will directly affect the behavior of the system or services.
<ul>
<li>For example: My Nginx configuration file is located at <code>/etc/nginx/nginx.conf</code>。</li>
</ul>
</li>
</ul>
<h3 id="lib-lib64-libraries">
<a class="header-anchor" href="#lib-lib64-libraries"></a>
lib, lib64 (Libraries)
</h3><ul>
<li><strong>Uses</strong> : Stores system shared libraries.</li>
<li><strong>Note</strong> : Similar to Windows <code>.dll</code> Files that provide runtime support for programs in the system.</li>
</ul>
<h3 id="systemd-system-daemons">
<a class="header-anchor" href="#systemd-system-daemons"></a>
systemd (System Daemons)
</h3><ul>
<li><strong>Key Index</strong>：<code>/etc/systemd/system/</code></li>
<li><strong>Uses</strong>：<strong>Housekeeper Headquarters</strong>。</li>
<li><strong>Note</strong> : This is where the &ldquo;service configuration files&rdquo; are stored (<code>.service</code> (file).
<ul>
<li>When you run <code>systemctl enable nginx</code> or <code>systemctl start frps</code> At that point, the system actually looks here for the corresponding file.</li>
<li><strong>docker.service.d/</strong> : Custom configuration directories for Docker services (such as proxy settings).</li>
<li>If you want a program to run automatically at startup, you&rsquo;ll need to place a configuration file here.</li>
</ul>
</li>
</ul>
<h3 id="boot-boot-loader">
<a class="header-anchor" href="#boot-boot-loader"></a>
boot (Boot Loader)
</h3><ul>
<li><strong>Uses</strong> : Startup file.</li>
<li><strong>Note</strong> : Store the kernel (<code>vmlinuz</code>) and the boot loader (GRUB). You generally don&rsquo;t need to change these unless you&rsquo;re troubleshooting boot issues on this machine.</li>
</ul>
<hr>
<h2 id="2-where-is-the-software-located-software-locations">
<a class="header-anchor" href="#2-where-is-the-software-located-software-locations"></a>
2. Where is the software located? (Software Locations)
</h2><p>On Linux, software isn&rsquo;t centralized the way it is on Windows <code>Program Files</code>...but are scattered across different locations depending on how they are installed. Here is the actual situation on my server:</p>
        
        <hr><p>Published on 2026-02-07 at <a href='https://kfjie.me/'>kj’s blog</a>, last modified on 2026-02-07</p>]]></description><category>Notes</category></item></channel></rss>