<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>谷中望月</title>
  
  <subtitle>谷月姐的个人博客</subtitle>
  <link href="https://blog.kukmoon.com/atom.xml" rel="self"/>
  
  <link href="https://blog.kukmoon.com/"/>
  <updated>2026-01-02T06:30:31.000Z</updated>
  <id>https://blog.kukmoon.com/</id>
  
  <author>
    <name>Kukmoon谷月</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Vi 练习题</title>
    <link href="https://blog.kukmoon.com/5d8cc3c3a212/"/>
    <id>https://blog.kukmoon.com/5d8cc3c3a212/</id>
    <published>2026-01-02T06:30:31.000Z</published>
    <updated>2026-01-02T06:30:31.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2026-01-02-14-38-13.png" alt="Vi 练习题"></p><p><strong>一、单项选择题</strong></p><ol><li><p>下列哪个按键<strong>不能</strong>让 vi 从命令模式进入插入模式？<br>A. i<br>B. O<br>C. s<br>D. H</p></li><li><p>有个文档共有 100 行，光标在第 31 行，现在要删除第 31 行到第 100 行的所有内容，下列命令正确的是：<br>A. dG<br>B. d0<br>C. d$<br>D. d1</p></li><li><p>下列说法正确的是：<br>A. 保存后退出的命令是 :wq 或 ZW<br>B. dd 命令同时执行删除和剪切的任务<br>C. 0,$s/a/A/g 命令是把全部 a 替换成 A<br>D. B 命令和 b 命令的功能不同</p></li></ol><p><strong>二、填空题</strong></p><ol start="4"><li>将上下两行合并，命令是_____。</li><li>删除光标所在处的字符，在命令模式下使用___，在插入模式下使用___键。</li><li>屏幕向下移动一页，命令是___或___。</li><li>h、j、___ 、l 的作用是使光标___、___ 、向上、___ 移动。</li><li>在底线命令模式下，输入的命令要以___开始，以___结束。</li></ol><p><strong>三、操作题</strong></p><ol start="9"><li>打开 /etc/ssh/sshd_config 文件，找到 <code>#Port=22</code> 一行，改成 <code>Port=22345</code>，保存退出。</li><li>打开 ~/Documents/Linux内核概论.md 文件，将所有的 selinux 替换成 SELinux，保存为 <a href="http://xn--Linux1-ms2jt31m4oc464k.md">Linux内核概论1.md</a>。</li></ol><p><strong>参考答案</strong></p><p>\1. D  2. A  3. B<br>\4. J  5. x，Del（或 Delete）  6. Ctrl+F，PgDn （或 Page Down）<br>\7. k，向左，向下，向右  8. :，回车（或 Enter）<br>\9、10 略，请读者自行尝试。</p><p><strong>图片版权</strong></p><p>题图：<a href="https://www.devapp.it/wordpress/linux-cambiare-i-colori-delleditor-vi/">https://www.devapp.it/wordpress/linux-cambiare-i-colori-delleditor-vi/</a></p><p>头图：<a href="https://pxhere.com/zh/photo/717427">https://pxhere.com/zh/photo/717427</a></p>]]></content>
    
    
    <summary type="html">一份简单的 vi 练习题。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Linux" scheme="https://blog.kukmoon.com/tags/Linux/"/>
    
    <category term="编程" scheme="https://blog.kukmoon.com/tags/%E7%BC%96%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>2025 年 12 月香港银行卡开户复盘</title>
    <link href="https://blog.kukmoon.com/b005ab4ce429/"/>
    <id>https://blog.kukmoon.com/b005ab4ce429/</id>
    <published>2025-12-16T08:07:42.000Z</published>
    <updated>2025-12-16T08:07:42.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/202512161547319.jpeg" alt="彩园广场入口之一"></p><p>我 12 月 10 日从青岛飞深圳，连夜从福田口岸过关去香港上水<strong>彩园广场</strong>，一口气开了汇丰、中银、众安、建亚（建行亚洲）四家银行的账户，再回深圳住宿。</p><p>汇丰、众安、建亚当场开户成功，中银需要审批，次日下午收到审批通过短信。</p><h2 id="一、准备">一、准备</h2><p>我准备得相当充分，做了近一个月的功课，从小红书、公众号、知乎查阅了大量攻略。</p><p>我制定的行动计划是：12 月 10 日连夜去香港线上开户，如果线上开户失败，就在 12 月 11 日去线下开户。</p><p>出发时，随身携带如下行李：</p><ul><li>大背包</li><li>手提袋</li><li>充电宝</li><li>身份证</li><li>港澳通行证（2次香港签注）</li><li>一张内地银行卡（众安开户要用）</li><li>若干港币现金</li><li>一台苹果手机，下载了银行app并开通港澳台及国际漫游，插境外流量卡并开通八达通</li><li>一台安卓手机（作为备用），下载了银行app并开通港澳台及国际漫游，订购境外流量包</li><li>以下材料本打算用于中银线下开户，最终也没用上：<ul><li>地址证明（最近一个月的信用卡账单）</li><li>投资证明（近三个月的股票或基金投资记录）</li><li>近三个月银行流水</li><li>近半年个税</li><li>近一年社保记录</li><li>存款证明</li></ul></li></ul><h2 id="二、机酒">二、机酒</h2><p>我是以<strong>综合开支最低</strong>为标准选择路线的。订了 12 月 10 日青岛飞深圳的南航 CZ8736 和 12 月 11 日深圳飞济南的深航 ZH9929。</p><p>去程有三个备选项：临沂飞深圳，青岛飞深圳，济南飞深圳。连汽车票和机票一起考虑，选择了综合开支最低的青岛飞深圳。</p><p>回程有三个备选项：深圳飞临沂，深圳飞青岛，深圳飞济南。连汽车票、酒店和机票一起考虑，选择了综合开支最低的深圳飞济南。</p><p>我是以<strong>距离目的地最近而且价格最低</strong>为标准选择酒店的。在深圳住在福田口岸附近的一家超低价酒店。在济南住在火车站附近的一家七天酒店。</p><h2 id="三、温差">三、温差</h2><p><img src="https://img.kukmoon.com/202512161555292.png" alt="山东大雪纷飞"></p><p><img src="https://img.kukmoon.com/202512161555920.png" alt="香港艳阳高照"></p><p>北方的朋友在冬季去香港一定要考虑温差。山东老家 3 度，深圳和香港 23 度。我准备了大背包和手提袋，把脱下来的厚衣服装在里面。</p><h2 id="四、为什么去上水">四、为什么去上水</h2><p>上水是香港离深圳最近的市镇，从福田或罗湖出境后只需要坐一站港铁就到。上水有两家汇丰，两家中银（其中一家中银在彩园广场），一家盈透，开银行账户和券商账户都方便。</p><p>为了赶时间，我连夜去上水开户。由于福田口岸晚10点半关闭，为了赶时间，因此我下飞机后没去住宿，而是直接坐地铁到福田，过关出境，在落马洲坐一站港铁到上水，线上开户完成后再回深圳住宿。我当时是这样想的：万一线上开户失败，还可以次日线下去上水 walk in 开户。</p><p>除了上水以外，我还调查了以下地点的，作为备选方案：粉岭、大埔、沙田、旺角、红磡、西九龙。其实我最开始的方案是西九龙，最后选择了上水。</p><h2 id="五、12-月-10-日开户经历">五、12 月 10 日开户经历</h2><p><img src="https://img.kukmoon.com/2025-12-16-16-19-50.png" alt="上水站通往彩园广场的天桥"></p><p>12 月10 日下午 5:10 落地深圳机场，晚 7:00 左右从福田出关，<strong>到港铁落马洲站后立即下载出境记录</strong>，刷八达通搭乘港铁，大约晚 7:30 抵达香港上水彩园广场。花半小时在缆车餐厅吃晚饭。</p><p>本想边吃饭边开户，但是这家茶餐厅人太多，面部识别总是把别人的面孔纳入镜头，只得吃完饭移步星巴克，背靠墙壁，才能完成面部识别。</p><p>晚 8:00 在星巴克开始开户。在苹果手机上，切换到境外流量卡，依次打开各个银行 app 进行开户操作，与此同时用安卓手机拍下重要的步骤，并记下每家银行的用户名、手机银行登录密码、流动保安编码（PIN）。</p><p>首先是汇丰，过程很顺利，当场成功开户。</p><p><img src="https://img.kukmoon.com/202512161603405.png" alt="中银开户末尾收到的通知"></p><p>第二个是中银，当场未成功，需要审核。次日下午收到审核通过短信。<strong>在拍摄身份证和港澳通行证时需要注意：最好把证件竖起来拍，以免反光导致识别失败</strong>。</p><p>第三是众安，<strong>众安要求必须连接香港 WiFi 才能开户</strong>，我连接了星巴克的 WiFi，当场开户成功。</p><p>最后一个是建亚，同样当场开户成功。</p><p>本来打算再一鼓作气把天星、蚂蚁、汇立的账户开通，但是时间已晚，担心回不去深圳，就此作罢。</p><p>晚 9:30 左右开户完毕，动身离开彩园广场，晚 10:00 左右回到深圳，在深圳住宿。</p><h2 id="六、12-月-11-日经历">六、12 月 11 日经历</h2><p>12 月 11 日上午我去了中银彩园广场分行和汇丰上水分行。</p><p><img src="https://img.kukmoon.com/202512161557051.png" alt="中银彩园广场分行贴出的反诈告示"></p><p>去中银是想尝试线下开户。因为 12 月 10 日线上开户没有成功，所以我想尝试一下线下开户。但是在等待了两个半小时以后，还是被客户经理婉拒了，<strong>理由是线上开户正在进行中，线下无法开户，也无法查询</strong>。不过与客户经理的聊天让我长进了不少知识。</p><p><img src="https://img.kukmoon.com/202512161558120.png" alt="汇丰上水分行贴出的禁止开户中介的告示"></p><p>去汇丰是为了线下补签名。在汇丰等了一个小时左右。<strong>注意：线上开的账户即使不用补签名也可以使用</strong>。我纯粹只是为了跟风才去补签名的。补签名可以提升转账额度并且允许使用支票。</p><p>本来还想去盈透线下开户，但是时间实在不够用了，只好放弃。</p><p>下午 1:25 从上水动身回深圳宝安机场，当天傍晚飞济南。</p><p>12 月 11 日的出境记录死活刷不出来，直到我傍晚飞回济南才刷出来。<strong>我实在有点小庆幸，幸亏 12 月 10 日连夜去香港开户，要是拖到 12 月 11 日就一无所获了。</strong></p><h2 id="七、其他">七、其他</h2><p>上水有很多美食。我在彩园广场缆车餐厅吃了一份叉烧焗饭套餐，很美味。上水车站的小吃档口也不错。不过当地的旅游攻略普遍推荐彩园广场的红磡冰室和符兴街的毕打奥餐厅。</p><p><img src="https://img.kukmoon.com/2025-12-16-16-21-27.png" alt="丝袜奶茶、罗宋汤和多士"></p><p><img src="https://img.kukmoon.com/2025-12-16-16-22-02.png" alt="香港市民小吃——咖喱鱼蛋"></p><p>上水是内地旅客和深圳居民的购物热点。据维基百科：</p><blockquote><p>上水因其与深圳接壤且有地铁连接边境口岸的地利条件，区内各大购物商场迅速成为内地旅客和深圳居民的购物热点，至2010年前后随着内地民众收入不断提高，加上多次爆出婴幼儿奶粉等国产品牌存在质量问题，内地民众对港货及其他进口货品需求日益殷切，造成代购活动和水货活动剧烈增长，而靠近上水站的石湖墟更变成水货热门商品的集中地和商店街，每天有大量从事水货活动和代购活动的香港本地和内地民众携带行李箱出入石湖墟和上水市中心各大商场，并通过东铁线将货物带入深圳。</p></blockquote><p>我在彩园广场的优品 360 超市买了一份伴手礼带回内地。</p><p>我还准备了万一福田/罗湖口岸关闭只好从上水绕道皇岗口岸回深圳的预案。简单地说，就是在上水站 C 出口出站，到马路对面的公交站搭乘 276B 或 N73 路的士到皇岗口岸（可刷微信或支付宝，车费 10 港币），坐到“新田运输交汇处”站下车，再跟着指示牌走到对面的“过境穿梭巴士新田总站”，搭乘黄色的“皇巴”去皇岗口岸（不用钱）。下车后按照路牌指示到出境大堂，刷证离港。之后搭乘去深圳皇岗口岸的巴士（车费 10 港币），到达深圳入境处，刷证入境。</p><h2 id="八、总结">八、总结</h2><p>我把这次去开港卡的经历总结为 12 个字：<strong>充分准备，迅速行动，大胆尝试</strong>。我也希望这篇复盘文能够为前往香港上水开港卡的朋友们提供参考。</p><h2 id="九、图片版权">九、图片版权</h2><p>题图：自己拍摄</p><p>头图：<a href="https://pxhere.com/zh/photo/1164378">https://pxhere.com/zh/photo/1164378</a></p><p>其他图片均为自己拍摄。</p>]]></content>
    
    
    <summary type="html">我连夜去香港上水，在彩园广场一口气开了汇丰、中银、众安、建亚（建行亚洲）四家银行的账户。</summary>
    
    
    
    <category term="随笔" scheme="https://blog.kukmoon.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
    <category term="复盘" scheme="https://blog.kukmoon.com/tags/%E5%A4%8D%E7%9B%98/"/>
    
  </entry>
  
  <entry>
    <title>Windows 服务器核心（Server-Core）配置 SSH 远程登录</title>
    <link href="https://blog.kukmoon.com/3a76b4140bd7/"/>
    <id>https://blog.kukmoon.com/3a76b4140bd7/</id>
    <published>2025-12-03T12:13:28.000Z</published>
    <updated>2025-12-03T12:13:28.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/20251203201058.png" alt=""></p><p>Windows Server Core 是微软从 Windows Server 2008 版开始推出的新版本。它只有命令行，没有图形桌面（当然，基本的图形界面还是具备的，可以运行部分图形界面软件，如 Notepad3），也没有 MMC（管理控制台）。对服务器的管理，需要通过 PowerShell 或 CMD 的命令行来进行。</p><p>要管理服务器，有三种方法。一是通过 RDP 远程登录到服务器上，然后在服务器上运行命令。二是使用 Azure 门户提供的基于网页的图形界面 Windows Admin Center。三是是通过 SSH 远程连接到服务器上，然后在 SSH 终端上运行命令。第三种方法对带宽和网速要求最低，所以更受网络管理员青睐。本文就介绍在 Windows Server Core 上配置 SSH 服务器并实现远程登录。</p><p>本文所讲的方法适用于 Windows Server 2016 至今的所有版本。</p><h2 id="1-安装-OpenSSH">1 安装 OpenSSH</h2><p>首先需要通过 RDP 连接到服务器，然后通过命令行操作在服务器上安装 OpenSSH Server。文中在服务器上的所有操作，都是在 RDP 远程桌面中进行的。</p><p>操作步骤如下。</p><p>若要使用 PowerShell 安装 OpenSSH，请先在服务器上以管理员身份运行 PowerShell 并执行以下命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-built_in">Get-WindowsCapability</span> <span class="hljs-literal">-Online</span> | ? Name <span class="hljs-operator">-like</span> <span class="hljs-string">&#x27;OpenSSH*&#x27;</span><br> <span class="hljs-comment">#  Name  : OpenSSH.Client~~~~0.0.1.0</span><br> <span class="hljs-comment">#  State : Installed</span><br> <span class="hljs-comment">#  Name  : OpenSSH.Server~~~~0.0.1.0</span><br> <span class="hljs-comment">#  State : NotPresent</span><br></code></pre></td></tr></table></figure><p>然后在服务器上根据需要安装 Server 或 Client 组件（上面可以看见 Client 已经安装），下面我们直接安装Server端即可：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-comment"># Install the OpenSSH Client</span><br><span class="hljs-comment"># Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0</span><br><span class="hljs-comment"># Install the OpenSSH Server</span><br><span class="hljs-built_in">Add-WindowsCapability</span> <span class="hljs-literal">-Online</span> <span class="hljs-literal">-Name</span> OpenSSH.Server~~~~<span class="hljs-number">0.0</span>.<span class="hljs-number">1.0</span><br></code></pre></td></tr></table></figure><p>安装完成会返回以下输出：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-comment"># Path          :</span><br><span class="hljs-comment"># Online        : True</span><br><span class="hljs-comment"># RestartNeeded : False</span><br></code></pre></td></tr></table></figure><p>在服务器上启动并配置 SSH 服务端自动启动：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-built_in">Get-Service</span> sshd | <span class="hljs-built_in">Start-Service</span> <span class="hljs-literal">-PassThru</span> <br><span class="hljs-built_in">Get-Service</span> sshd | <span class="hljs-built_in">Set-Service</span> <span class="hljs-literal">-StartupType</span> <span class="hljs-string">&#x27;Automatic&#x27;</span><br>  <span class="hljs-comment"># Status   Name               DisplayName</span><br>  <span class="hljs-comment"># ------   ----               -----------</span><br>  <span class="hljs-comment"># Running  sshd               OpenSSH SSH Server</span><br></code></pre></td></tr></table></figure><p>在服务器上查看防火墙规则，应该有一个名为“OpenSSH Server In TCP”的防火墙规则，应该启用该规则：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-built_in">Get-NetFirewallRule</span> <span class="hljs-literal">-Name</span> *ssh*<br>  <span class="hljs-comment"># Name                  : OpenSSH-Server-In-TCP</span><br>  <span class="hljs-comment"># DisplayName           : OpenSSH SSH Server (sshd)</span><br>  <span class="hljs-comment"># Description           : Inbound rule for OpenSSH SSH Server (sshd)</span><br>  <span class="hljs-comment"># DisplayGroup          : OpenSSH Server</span><br>  <span class="hljs-comment"># Group                 : OpenSSH Server</span><br>  <span class="hljs-comment"># Enabled               : True</span><br>  <span class="hljs-comment"># Profile               : Any</span><br>  <span class="hljs-comment"># Platform              : &#123;&#125;</span><br>  <span class="hljs-comment"># Direction             : Inbound</span><br>  <span class="hljs-comment"># Action                : Allow</span><br>  <span class="hljs-comment"># EdgeTraversalPolicy   : Block</span><br>  <span class="hljs-comment"># LooseSourceMapping    : False</span><br>  <span class="hljs-comment"># LocalOnlyMapping      : False</span><br>  <span class="hljs-comment"># Owner                 :</span><br>  <span class="hljs-comment"># PrimaryStatus         : OK</span><br>  <span class="hljs-comment"># Status                : 已从存储区成功分析规则。 (65536)</span><br>  <span class="hljs-comment"># EnforcementStatus     : NotApplicable</span><br>  <span class="hljs-comment"># PolicyStoreSource     : PersistentStore</span><br>  <span class="hljs-comment"># PolicyStoreSourceType : Local</span><br><span class="hljs-built_in">Get-NetFirewallRule</span> <span class="hljs-literal">-Name</span> *ssh* | <span class="hljs-built_in">Get-NetFirewallPortFilter</span><br>  <span class="hljs-comment"># Protocol      : TCP</span><br>  <span class="hljs-comment"># LocalPort     : 22</span><br>  <span class="hljs-comment"># RemotePort    : Any</span><br>  <span class="hljs-comment"># IcmpType      : Any</span><br>  <span class="hljs-comment"># DynamicTarget : Any</span><br></code></pre></td></tr></table></figure><p>如果这条防火墙规则不存在，请创建一个：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-built_in">New-NetFirewallRule</span> <span class="hljs-literal">-Name</span> sshd <span class="hljs-literal">-DisplayName</span> <span class="hljs-string">&#x27;OpenSSH SSH Server (sshd)&#x27;</span> <span class="hljs-literal">-Enabled</span> True <span class="hljs-literal">-Direction</span> Inbound <span class="hljs-literal">-Protocol</span> TCP <span class="hljs-literal">-Action</span> Allow <span class="hljs-literal">-LocalPort</span> <span class="hljs-number">22</span><br></code></pre></td></tr></table></figure><p>在本地测试是否通过 SSH 正常连接服务器（假设用户名是 <code>Kukmoon</code>，服务器的 IP 是 <code>999.999.999.999</code>）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell">ssh <span class="hljs-literal">-T</span> Kukmoon@<span class="hljs-number">999.999</span>.<span class="hljs-number">999.999</span><br></code></pre></td></tr></table></figure><h2 id="2-改端口">2 改端口</h2><p>把默认的端口 22 改成不常用的端口，例如 22345，以避免恶意扫描。</p><p>操作步骤如下。</p><p>在服务器上打开 <code>C:\ProgramData\ssh\sshd_config</code> 文件，找到 #Port 22，删除 # 号，另起一行，输入 Port 22345。保存退出。</p><p>在服务器上重启 sshd 服务：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">Restart-Service</span> sshd<br></code></pre></td></tr></table></figure><p>在服务器上新建一条防火墙规则：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">New-NetFirewallRule</span> <span class="hljs-literal">-Name</span> sshd2 <span class="hljs-literal">-DisplayName</span> <span class="hljs-string">&#x27;OpenSSH Server (sshd) on Port 22345&#x27;</span> <span class="hljs-literal">-Enabled</span> True <span class="hljs-literal">-Direction</span> Inbound <span class="hljs-literal">-Protocol</span> TCP <span class="hljs-literal">-Action</span> Allow <span class="hljs-literal">-LocalPort</span> <span class="hljs-number">22345</span><br></code></pre></td></tr></table></figure><p>在 VPS 的 Web 管理页面（我用的是 Azure），新建一条规则，开放 22345 端口。</p><p>在本地测试通过 22345 端口是否正常连接到服务器（假设用户名是 <code>Kukmoon</code>，服务器的 IP 是 <code>999.999.999.999</code>）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">ssh <span class="hljs-literal">-T</span> Kukmoon@<span class="hljs-number">999.999</span>.<span class="hljs-number">999.999</span> <span class="hljs-literal">-p</span> <span class="hljs-number">22345</span><br></code></pre></td></tr></table></figure><p>确定可以在本地通过 SSH 连接 22345 端口远程登录服务器以后，服务器上原来的 22 端口需要关闭。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-built_in">Set-NetFirewallRule</span> <span class="hljs-literal">-DisplayName</span> <span class="hljs-string">&#x27;OpenSSH SSH Server (sshd)&#x27;</span> <span class="hljs-literal">-Action</span> Block<br></code></pre></td></tr></table></figure><h2 id="3-配置免密登录">3 配置免密登录</h2><p>操作步骤如下。</p><p>在本地生成一对公钥和私钥：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell">ssh<span class="hljs-literal">-keygen</span> <span class="hljs-literal">-t</span> rsa <span class="hljs-literal">-C</span> <span class="hljs-string">&quot;applied for Windows Server Core&quot;</span><br></code></pre></td></tr></table></figure><p>用 Notepad3 打开公钥文件 <code>id_rsa.pub</code>，将换行符从 CRLF 改成 LF，如果有必要的话把编码也改成无 BOM 的 UTF-8。</p><p>在服务器上建立 <code>C:\Users\Kukmoon\.ssh</code> 文件夹（（假设用户名是 <code>Kukmoon</code>），在该文件夹下建立 <code>authorized_keys</code> 文件，用 Notepad3 打开它，把本地的 <code>id_rsa.pub</code> 文件的所有内容，复制粘贴到服务器上的 <code>C:\Users\Kukmoon\.ssh\authorized_keys</code> 文件。</p><p>在服务器上修改 <code>authorized_keys</code> 文件的权限：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell">icacls.exe <span class="hljs-string">&quot;C:\Users\Kukmoon\.ssh\authorized_keys&quot;</span> /inheritance:<span class="hljs-built_in">r</span> /grant <span class="hljs-string">&quot;Kukmoon:F&quot;</span> /grant <span class="hljs-string">&quot;SYSTEM:F&quot;</span><br></code></pre></td></tr></table></figure><p>打开服务器的 C:\ProgramData\ssh\sshd_config 文件，找到以下三条，去掉它们前面的 <code>#</code> 号（注意 <code>PasswordAuthentication no</code> 是禁止密码登录）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-comment">#PubkeyAuthentication yes</span><br><span class="hljs-comment">#AuthorizedKeysFile    .ssh/authorized_keys</span><br><span class="hljs-comment">#PasswordAuthentication no</span><br></code></pre></td></tr></table></figure><p>确保以下两条前面有 <code>#</code> 号：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-comment">#Match Group administrators</span><br><span class="hljs-comment">#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys</span><br></code></pre></td></tr></table></figure><p>在服务器上重启 sshd 服务：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">Restart-Service</span> sshd<br></code></pre></td></tr></table></figure><p>在本地测试通过 22345 端口是否正常连接到服务器（假设用户名是 <code>Kukmoon</code>，服务器的 IP 是 <code>999.999.999.999</code>）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">ssh <span class="hljs-literal">-T</span> Kukmoon@<span class="hljs-number">999.999</span>.<span class="hljs-number">999.999</span> <span class="hljs-literal">-p</span> <span class="hljs-number">22345</span><br></code></pre></td></tr></table></figure><p>在服务器上的 PowerShell 中，以管理员身份执行以下命令，可以把 SSH 的默认 shell 设置为 PowerShell。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-variable">$NewItemPropertyParams</span> = <span class="hljs-selector-tag">@</span>&#123;<br>    Path         = <span class="hljs-string">&quot;HKLM:\SOFTWARE\OpenSSH&quot;</span><br>    Name         = <span class="hljs-string">&quot;DefaultShell&quot;</span><br>    Value        = <span class="hljs-string">&quot;C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe&quot;</span><br>    PropertyType = <span class="hljs-string">&quot;String&quot;</span><br>    Force        = <span class="hljs-variable">$true</span><br>&#125;<br><span class="hljs-built_in">New-ItemProperty</span> @NewItemPropertyParams<br></code></pre></td></tr></table></figure><h2 id="4-图片版权">4 图片版权</h2><p>题图：<a href="https://4sysops.com/archives/windows-server-2012-server-core-part-5-tools/">https://4sysops.com/archives/windows-server-2012-server-core-part-5-tools/</a></p><p>头图：<a href="https://pxhere.com/zh/photo/1164378">https://pxhere.com/zh/photo/1164378</a></p><h2 id="5-参考文献">5 参考文献</h2><ol><li><a href="https://cloud.tencent.com/developer/article/2129857">Windows服务器核心(Server-Core)安装与基础配置使用</a></li><li><a href="https://zhuanlan.zhihu.com/p/111812831">SSH 免密登录 Windows 10 服务器</a></li><li><a href="https://zhuanlan.zhihu.com/p/592296884">解决Windows自带OpenSSH服务器无法实现免密登录</a></li><li><a href="https://learn.microsoft.com/zh-cn/windows-server/administration/OpenSSH/openssh-server-configuration">适用于 Windows Server 和 Windows 的 OpenSSH Server 配置</a></li></ol>]]></content>
    
    
    <summary type="html">全程命令行操作，为 Windows Server Core 部署 SSH 服务，并配置 SSH 远程登录。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="互联网" scheme="https://blog.kukmoon.com/tags/%E4%BA%92%E8%81%94%E7%BD%91/"/>
    
    <category term="Windows" scheme="https://blog.kukmoon.com/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>得痔疮后最大的感悟是什么？</title>
    <link href="https://blog.kukmoon.com/d0cdd96a8876/"/>
    <id>https://blog.kukmoon.com/d0cdd96a8876/</id>
    <published>2025-11-27T14:26:29.000Z</published>
    <updated>2025-11-27T14:26:29.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-11-29-12-07-36.png" alt="2025-11-29-12-07-36"></p><div class="note note-primary">            <p>首发：<a href="https://www.zhihu.com/question/1909206184713515200/answer/1977503620456023383">https://www.zhihu.com/question/1909206184713515200/answer/1977503620456023383</a> 。有改动。</p>          </div><p>谷月老师刚做完痔疮手术出院。现在屁股里夹着纱布写这篇文章。</p><p>感悟有很多，基本上是老生常谈。比方说，要注意身体，避免久坐，远离烟酒，不吃辛辣……</p><p>可是臣妾做不到啊！</p><p><img src="https://img.kukmoon.com/2025-11-29-11-50-36.png" alt=""></p><p>我们要依靠本来就脆弱的身板去硬扛 996 的工作。在 996 的职场里，屁股坐在椅子上一坐就是十一、二个小时，甚至还要加班到更晚。平常应酬免不了要抽烟喝酒。晚上呼朋唤友一起去撸串、火锅、感受辛辣的味道在味蕾上炸开的感受，然后用一大口冰镇啤酒浇灭这热辣的诱惑。</p><p>总之，劳累的工作，稀缺的睡眠，重辣的饮食，是我们不幸成为有“痔”青年的直接原因。</p><p>很多人自嘲为牛马。不，比牛马还严重。资本主义的职场将我们异化为机器，疏于保养，而且超频运转。这种运转到了 35 岁就戛然而止，因为你“毕业”了，就像杰克马说过的那样，成为了“公司输送到社会上的人才”。为了不被竞争激烈的社会所淘汰，我们兢兢业业地努力，白天拼命工作，晚上拼命加班，加完班说不定还有应酬。我们的工时全球第一。我们的平均睡眠时间却不到 7 小时。透支健康换来的是什么收获？收获之一是菊花里的痔疮。</p><p><img src="https://img.kukmoon.com/2025-11-29-11-52-07.png" alt=""></p><p><img src="https://img.kukmoon.com/2025-11-29-11-52-14.png" alt=""></p><p>为什么呢？我们的国家已经成为全球第一工业大国，全球第二 GDP 大国，按照购买力平价已经进入发达国家行列。但是为什么我们的打工人工作得这么苦，把身体搞坏也在所不惜？去做个痔疮手术还要提心吊胆地担心工作不保。毕竟，比起猝死来，痔疮的严重性要小得多了。</p><p>伟大的祖国，你发展得太快了。请等一等你的人民，他们也要休息，他们也要看病，他们也要健康的生活方式。</p><p>2025 年快要结束了，2026 年的曙光已在路上。我 2026 年的愿望就是，我们国家的职场能彻底地普及八小时工作制，让每个屁股每天都只在工作椅上坐八小时，避免久坐，减少痔疮。</p><p><strong>图片版权</strong></p><p>题图：<a href="https://zhuanlan.zhihu.com/p/75729016">https://zhuanlan.zhihu.com/p/75729016</a></p><p>头图：<a href="https://pxhere.com/zh/photo/1164378">https://pxhere.com/zh/photo/1164378</a></p><p>其他图片均从网上下载，侵删</p>]]></content>
    
    
    <summary type="html">我希望让每个屁股每天都只在工作椅上坐八小时，避免久坐，减少痔疮。</summary>
    
    
    
    <category term="随笔" scheme="https://blog.kukmoon.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
  </entry>
  
  <entry>
    <title>有一种邪修这样接收 Telegram 验证码</title>
    <link href="https://blog.kukmoon.com/c65e04bb800b/"/>
    <id>https://blog.kukmoon.com/c65e04bb800b/</id>
    <published>2025-11-26T06:21:45.000Z</published>
    <updated>2025-11-26T06:21:45.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-11-26-14-52-11.png" alt="有一种邪修这样接收 Telegram 验证码"></p><p>收不到 Telegram（下称 Tg） 的验证码短信，一直是 Tg 用户们的一块心病。在搜索引擎上搜索“can’t receive Telegram verification code”，会发现成千上万条帖子在讨论这个问题。</p><p><img src="https://img.kukmoon.com/2025-11-26-14-38-56.png" alt=""></p><p>我之前绑定 Tg 的手机号过期失效了，需要换个手机号。但是我死活收不到验证码。</p><p>我发现一篇文章<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="https://www.cursor-ide.com/blog/telegram-verify-guide-2025">[1]</span></a></sup>说，我们收不到 Tg 验证码，不一定是我们收不到，有可能是 Tg 出于风控原因，没有发送。</p><p>恰好我订阅的机场有台湾家宽节点，<a href="http://ping0.cc">ping0.cc</a> 纯净度极高。</p><p>我立刻把代理节点设置为台湾家宽节点，关闭 Tg 重新打开，再次尝试更改 Tg 手机号，立刻就收到了验证码。</p><p>这说明，用纯净度较高的家宽节点取代 IDC 机房的节点来登录 Tg，可能降低被 Tg 风控的概率。</p><p>分享这个邪修方法给大家，最后愿大家不为 Tg 验证所困扰。</p><p><strong>图片版权</strong></p><p>题图：Telegram 图标，一切权利归其开发者所有</p><p>头图：<a href="https://pxhere.com/zh/photo/1164378">https://pxhere.com/zh/photo/1164378</a></p><p><strong>参考文献</strong></p><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://www.cursor-ide.com/blog/telegram-verify-guide-2025">https://www.cursor-ide.com/blog/telegram-verify-guide-2025</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
    
    
    <summary type="html">用纯净度较高的家宽节点来登录 Tg，就可能会收到 Tg 验证码。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="互联网" scheme="https://blog.kukmoon.com/tags/%E4%BA%92%E8%81%94%E7%BD%91/"/>
    
  </entry>
  
  <entry>
    <title>自己拥有一台服务器可以做哪些很酷的事情？</title>
    <link href="https://blog.kukmoon.com/51192bb182e5/"/>
    <id>https://blog.kukmoon.com/51192bb182e5/</id>
    <published>2025-11-07T19:28:22.000Z</published>
    <updated>2025-11-07T19:28:22.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-11-08-03-43-13.png" alt="自己拥有一台服务器可以做哪些很酷的事情？"></p><div class="note note-primary">            <p>本文首发知乎：<a href="https://www.zhihu.com/question/40854395/answer/1966976871146166179">https://www.zhihu.com/question/40854395/answer/1966976871146166179</a> 。</p>          </div><p>我的服务器是一台 2C1G 的 VPS，操作系统是 Ubuntu Server 22.04 LTS。</p><p><img src="https://img.kukmoon.com/2025-11-08-03-30-23.png" alt="操作系统是 Ubuntu Server 22.04 LTS"></p><p>最早只是用 Hexo 搭建了个人博客：<a href="https://blog1.kukmoon.com">https://blog1.kukmoon.com</a> 。</p><p>至于 https 加密和 Nginx 配置，我一开始是依赖宝塔面板，后来不再依赖面板，而是纯手搓。具体的操作方式是用 nano 和 vi 编写配置文件（vi 实在用不习惯，但是硬着头皮去适应），用 Certibot （非 snap 版本，人家最讨厌 snap 了）从 Let’s Encrypt 自动获取证书。</p><p>后来又用 VuePress 搭建了一个介绍 MOS 认证考试的网站：<a href="https://mos.kukmoon.com">https://mos.kukmoon.com</a></p><p><img src="https://img.kukmoon.com/2025-11-08-03-31-11.png" alt="介绍 MOS 认证考试的网站"></p><p>用 OneManager 搭建了一个个人网盘：<a href="https://clouddrive.kukmoon.com">https://clouddrive.kukmoon.com</a> 。以后也许会用其他的第三方工具搭建更多的网盘。</p><p>搭了个梯子。自建梯子的好处是没有审计，而且在机场不能用的时候可以用自建梯子作为 Plan B。具体技术细节不便透露。</p><p>搭建了一个 Aria2 下载服务器，以后慢速下载大文件（例如，不开会员的某度网盘）就可以不必一直开着电脑了。下载到服务器上的文件，通过 Rclone 上传到 OneDrive 作为中转，再下载到我的电脑上。</p><p>因为在 nginx 中配置了 https 加密，又不想暴露服务器的 6800 端口（与 Aria2 服务通讯的端口），所以我为 Aria2 下载服务器配置了端口转发，把外界对 Aria2 的访问转发到服务器的 6800 端口。也是手搓的配置文件。</p><p>搭建了 Tiny Tiny RSS（RSS 订阅系统）和 RSSHub（RSS 源生成器），订阅 RSS，这样就可以在 Tiny Tiny RSS 中阅读最新信息，不必到每个网站上去分别浏览。</p><p>我的 RSSHub 实例（<a href="https://rsshub.kukmoon.com">https://rsshub.kukmoon.com</a>）对外开放，欢迎大家用它生成可以订阅的 RSS。</p><p>为了管理方便，我给这台 VPS 安装了桌面，桌面系统是小巧玲珑、运行快速的 LXDE，我把它的外观配置得像 Windows 2000。</p><p><img src="https://img.kukmoon.com/2025-11-08-03-32-16.png" alt="LXDE，外观配置得像 Windows 2000"></p><p>桌面的用途：一是从某些网盘下载大文件，这些网盘限制必须用浏览器下载，而且速度很慢；二是用具有图形界面的文本编辑器编辑各种配置文件，这样做的好处是具备语法高亮，而且用鼠标操作也方便。我用的文本编辑器是 LXDE 内置的 MousePad。</p><p><img src="https://img.kukmoon.com/2025-11-08-03-32-54.png" alt="MousePad"></p><p>我没有安装面板。原因一是我用过宝塔感觉不好用，二是想催促自己学点 Linux 运维技能。</p><p>还给这台 VPS 安装了 VSCode 远程开发，并且为之启用了 Root 权限（这样就可以远程用 VSCode 编辑 nginx 的配置文件了）。VSCode 的语法高亮比 MousePad 更强大，支持的格式更多。</p><p><img src="https://img.kukmoon.com/2025-11-08-03-33-37.png" alt="VSCode 远程开发"></p><p>其他的用途，正在挖掘中……</p><p><strong>图片版权</strong></p><p>题图：<a href="https://www.rawpixel.com/image/5906639/photo-image-light-desktop-wallpapers-public-domain">https://www.rawpixel.com/image/5906639/photo-image-light-desktop-wallpapers-public-domain</a></p><p>头图：<a href="https://pxhere.com/zh/photo/1164378">https://pxhere.com/zh/photo/1164378</a></p>]]></content>
    
    
    <summary type="html">我用一台 VPS 做了很多事情，包括但不限于：建站，梯子，下载服务器，RSS 订阅，VSCode 远程开发。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="VPS" scheme="https://blog.kukmoon.com/tags/VPS/"/>
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="互联网" scheme="https://blog.kukmoon.com/tags/%E4%BA%92%E8%81%94%E7%BD%91/"/>
    
  </entry>
  
  <entry>
    <title>芭蕾男娘变装被绑装箱记</title>
    <link href="https://blog.kukmoon.com/86cb38173214/"/>
    <id>https://blog.kukmoon.com/86cb38173214/</id>
    <published>2025-10-21T09:40:51.000Z</published>
    <updated>2025-10-21T09:40:51.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-10-21-18-00-21.jpg" alt="芭蕾男娘变装被绑装箱记"></p><p class="note note-warning">声明：本文内容，纯属虚构，如有雷同，是你抄我。</p><p>我在S市的一家会所做公关先生。因为身材娇小纤瘦，皮肤白皙，很受客人喜爱，尤其是gay和喜爱娈童的男人婆。他们最喜欢让我穿上各式女装，然后将我捆绑得结结实实，或是给我戴上手铐脚镣、狗链项圈，百般折辱。也许我真的是个天生的CD-M，对这些项目总是来者不拒，更加投其所好。主管也发现了我的特点，专门让我跟单位里的女孩子们一起去培训形体、化妆、成人芭蕾等女性课程，把我训练得更加女性化。</p><p>一天主管找到我，说N市有一位大客户点名让我上门服务，说这位大客户不仅希望得到我的服务，还希望得到一份惊喜。这位大客户喜欢芭蕾，口味很挑剔，所以策划部结合我的身材和练习过成人芭蕾的经历，为我量身打造了一套创新方案。希望我能予以配合。</p><p>我浏览了一遍方案计划书，也被这大胆的创意吓了一跳。但是顶头上司的意思我不能拒绝，并且方案内容激起了我血液内流淌的受虐因子，我毫不犹豫地答应了。</p><p>按照方案的要求，第二天一大早，我先痛痛快快的洗了一个澡。体毛本来就很稀疏，我又重新刮了一遍，涂上绝毛膏，腋毛和y毛也刮得干干净净。剪短脚趾甲，然后赤裸身体走出浴室，不吃早饭，接受调教。</p><p>公关部的SM调教师GG先向我的后庭里分两次注入了2000毫升灌肠液，我坐到马桶上享受那喷薄而出的快感。反复灌了三次，我感觉身体都被掏空了。</p><p>冲洗干净秽物，调教师GG向我的后庭里塞入了两枚跳蛋。他放的位置如此深入，仿佛为一根长长的假yj预留空间。我颤抖着身体等待着那个家伙的插入，但是调教师GG只是给我插入了一根细细的管子。管子弯上来沿着我的脊柱一路上行，直到后颈。然后用伤湿止痛膏把它固定在我的背上。</p><p>主管捏捏我的分身：“小姑娘，你要不吃不喝，装在箱子里关两天两夜，这根管子是给你灌肠的，把牛奶一直灌到小肠，保证两天以内营养供应。要是把你这个千娇百媚的小女人饿死了，我们的客户可不乐意。”</p><p>调教师GG用刷子在我的后庭里涂满了一种生物胶，把我的后庭紧紧的封起来，管子和跳蛋就不会滑落出来。然后调教师GG让我坐到椅子上张开双腿，把我的分身也用那种生物胶封住。生物胶可以使用特制的溶液溶解，但是在溶解以前我也被剥夺了排泄的权利，并且即使想发泄欲望，也无法射出。</p><p>这一切都做好以后，调教师MM上场了，她给我粘上一对义乳，又给我穿上一件乳白色蕾丝无肩带文胸和一条相同面料的小裤裤。我很配合地站起，转身，让她把背带勒紧，有将卫生巾粘在小裤裤底部，把分身压到后面，双腿夹紧再提上内裤。最后再由她用同色束腰把我的腰肢紧紧裹起，勒细。看看镜子里，一个婷婷玉立，娇羞动人的女孩穿着内衣优雅的站在镜前，她的胸脯是那样圆润可爱，她的下腹是那样平坦，她的腰肢是那样纤细，她的四肢是那样修长。</p><p>随后，调教师MM取来芭蕾舞衣——雪白的天鹅绒裤袜，同样雪白的tutu纱裙和头饰，以及粉红的足尖鞋。我在调教师MM的帮助下穿上裤袜——慢慢地穿，享受着双腿由自由赤裸到被天鹅绒紧紧束缚的过程，享受这束缚的感觉。</p><p>调教师GG一直在密切注意我背后的管子，确保管子不被裤袜压住。然后我又在调教师MM、调教师GG和主管的三面夹攻之下穿tutu裙。tutu裙有点像带裙摆的吊带泳装，但是上身的纱质装饰远比泳装繁复，裙摆下有龙骨支持，使得裙摆高高撑起，向四面八方辐散，下身的布料比泳装宽，勒得也紧一些。我将双脚伸入两条吊带之间，感受裤袜和裙子摩擦的感觉，然后又把双脚从裙摆下面的两个小洞里伸出来，提上裙子，把吊带缚到双肩上调整位置，tutu裙就穿好了。调教师GG一直在扶正那根管子。</p><p>最后穿足尖鞋。因为足尖套不适合我的脚形，穿上以后有点压脚趾。主管告诉我那位大客户不会让我立足尖的，其实我所参加的成人形体芭蕾培训也不要求立足尖，我只得让双脚委屈一下。把粉色的绑带缠绕在小腿上，芭蕾舞衣就穿好了。</p><p>忙里偷闲看看镜子，不看脸蛋，光看身材和穿着，谁能想到这个优雅秀气、白天鹅一般的芭蕾女孩竟是男儿身呢！转身看看，贴在背上的伤湿止痛膏都被裙子和束腰掩盖了起来。</p><p>我的头发本来就是细腻柔顺的女式披肩发型，调教师MM给我盘发，又给我戴上头饰。调教师GG在我身后给我戴上耳环、项链，调教师MM给我做了个面膜，然后画了个清雅的淡妆。再看镜子，这次从头到脚都是女儿身了。弯弯的蛾眉，长长的睫毛，大大的眼睛，淡淡的眼影，白皙的脸蛋，红艳欲滴的双唇……我的下体有一点不听话了，但是在金属环、卫生巾、小裤裤、裤袜和tutu裙的五重压迫之下，它也只好老老实实的呆在那里，它有一点热热的想要流出来，但可惜生物胶牢牢把关，我只能忍受这欲望。</p><p>我站起来走几步，挺起胸脯，扭动腰肢，自我感觉良好！调教师GG简直看傻了眼。主管急忙打圆场：“快快快，还要绑起来装箱呢！”</p><p>捆绑自然是体力充沛的调教师GG进行。他让我双手握拳，用短袜套住，这样我在受虐的时候无法用双手抓住东西以转移注意力。接着将我的上身用麻绳五花大绑。看他轻手细脚的，仿佛已经拿我当女孩对待了。捆绑激起了我的受虐欲，分身热热的，胀胀的，但可惜留不出来，只能继续鼓胀，却被金属环压制着。我终于知道这是一种什么样的虐待，我双腿夹紧，扭动了几下胯部，暂且缓解掉这种感觉。</p><p>随后调教师GG押着我来到一个大木箱前，木箱两侧洞开，里面是一张带铁箍的凳子，凳子后面是一面悬在半空中的铁栅栏，也带有铁箍。这种设计是确保我的tutu裙蓬蓬的裙摆有地方可放。他扶我坐到凳子上，用一根长绳把我的双腿分三段紧紧缚住：脚踝、膝盖和大腿。然后将我的双脚固定在箱底的凹槽里，又将我的大腿固定在凳面上，小腿固定在凳腿上。这种设计是确保我在路上随着箱子一起振动，不会晕车。</p><p>主管开始脱鞋袜。我知道是要开始堵嘴了。趁着最后能说话的机会，我问现在几点了。主管一脸坏笑：“贱女人，不好好领受主人恩赐的惩罚，居然心不在焉！要重重的罚你！”主管穿了两双袜子：一双裤袜，一双短袜。她连内裤加袜子一起脱下来，先把内裤蘸了水裹住一个口球，再塞入我的口中，随后，一双短袜搭在我的鼻梁上，脚跟正好盖住我的鼻尖，脚底正好盖住我的双唇。调教师MM按住短袜，主管把裤袜的裆部正对着我的嘴，裤袜的两条腿在我的头部绕了几圈，固定住掩盖我口鼻的短袜，最后在我的嘴上打结。我的口鼻只能尝到、闻到异样的味道，受虐感进一步加强。</p><p>主管用两条眼罩把我的眼睛蒙住，里面一条微微透光，外面一条不透光，这样是为了让我在被解开眼罩的时候有所适应，免得眼睛在黑暗中呆久了，见光会受到刺激。然后把我的耳朵堵起来，但是我还能模模糊糊听到一些响声。最后似乎给我带上了一幅面具。然后一个人把我的头部也固定在铁栅栏上，感觉好像是调教师GG。</p><p>调教师GG在我耳边说：“嘿，现在我给你把灌肠液接上，每半小时灌一次牛奶，这是第一次。”我感到背后的管子一阵颤动，有液体通过，随后微温的液体进入了我的后庭。下腹一阵振动，跳蛋打开了。灌肠和跳蛋搅动着我的身体，好舒服……</p><p>他们三个退了出去，箱子前后挡板关上了。我一个人孤零零的呆在黑暗中，等待两天两夜后那个大客户为我解除束缚，是不是会有更新更残酷的SM手段？我有点害怕，但又有点期待。箱子被人抬了起来，抬了一段时间又放下，箱子是隔音的，外面的声音我听不到。过了一段时间，箱子开始有节奏得颤动，估计是被装上了汽车运往N市。牛奶又灌入了我的后庭，有一点点温暖，一点点刺激，我睡着了……</p><p>一觉醒来，清醒了许多，我开始享受被虐的快感。牛奶灌入肠道，跳蛋搅动，尽情刺激着我的神经，我就像一个yinjian的女人那样享受，尽管嘴被堵，但是通过喉咙深处发出畅快的呐喊。我开始憋尿了，同时男人那种特殊的液体也因为变装和SM的原因不断分泌，却停在在那里根本出不来。分身即使想要鼓胀也无计可施。那种欲仙欲死的感觉让我着迷。</p><p>时间长了，舒服变成了痛苦。我动弹不得，只能以一种姿势呆着。牛奶不停的灌入肠道，又无法排泄，再加上跳蛋不停搅动，便意让我无法忍受。就是想换一换姿势也不可能。我憋尿越来越严重，尿液仿佛要喷薄而出，但是硬生生被生物胶挡回。我痛苦得呻吟着，但是无法挣扎，无法说话，只能在喉咙深处发出不成话的单音。我肚子快要涨开了！但是束腰顽固的束缚着那里，迫使尿液、JY和灌入的牛奶向上前进。我想大喊，我想挣脱，但是无能为力。我想睡一觉以忘记痛苦，但是痛苦折磨着我，使我根本无法入睡。口水分泌出来，又流到肚里——那是因为我是昂着头被绑的。我不敢咳嗽，一旦咳嗽，口水就会呛进气管。</p><p>憋尿，便意，这两种痛苦的感觉越来越强烈，让我求生不得求死不能。大家都知道憋便的痛苦，你的注意力根本无法转移，只能被迫集中在下身，结果注意力越集中，人越痛苦。我心灰意冷了，想这两天时间赶快过去，快点有个人放我出来，让我上厕所。不管是谁，只要他（她）满足了我的愿望，我就嫁给他（她）！啊，不对，我是男人！应该这样说：不管是谁，只要他（她）满足了我的愿望，他（她）让我做什么我也乐意。神啊，救救我吧！我已经没有任何尊严了，只要有人救了我，就是拿我当驴作马，我也心甘情愿。</p><p>每半小时一次灌肠……时间好快……已经灌了60多次……两天两夜的时间已经过去四分之三了……我好期待，我的真命天子，不，救世主赶快降临……（完）</p><p><strong>图片版权</strong></p><p>题图：用 Grok 生成</p><p>头图：<a href="https://stocksnap.io/photo/seasonal-leaf-WXREXGYBC6">Photo</a> by <a href="https://stocksnap.io/author/freephotos">FreePhotos</a> on <a href="https://stocksnap.io">StockSnap</a></p>]]></content>
    
    
    <summary type="html">小男娘穿上洁白的芭蕾舞裙和裤袜，被捆绑起来灌着肠蒙上眼装进大木箱，是一种什么样的体验？</summary>
    
    
    
    <category term="故事" scheme="https://blog.kukmoon.com/categories/%E6%95%85%E4%BA%8B/"/>
    
    
    <category term="跨性别" scheme="https://blog.kukmoon.com/tags/%E8%B7%A8%E6%80%A7%E5%88%AB/"/>
    
    <category term="男娘" scheme="https://blog.kukmoon.com/tags/%E7%94%B7%E5%A8%98/"/>
    
    <category term="伪娘" scheme="https://blog.kukmoon.com/tags/%E4%BC%AA%E5%A8%98/"/>
    
  </entry>
  
  <entry>
    <title>IPv6 + DDNS + RDP 实现内网穿透</title>
    <link href="https://blog.kukmoon.com/45daf17f6cf7/"/>
    <id>https://blog.kukmoon.com/45daf17f6cf7/</id>
    <published>2025-10-13T06:33:53.000Z</published>
    <updated>2025-10-13T06:33:53.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-10-13-15-08-58.png" alt="IPv6 + DDNS + RDP 实现内网穿透"></p><p>当外出时，我需要用笔记本电脑或者手机通过远程桌面（微软的 RDP）连接到家里台式机。众所周知，RDP 需要一个 IP 地址才能连接。虽然我家的宽带没有 IPv4 公网地址，但是 IPv6 已开通，所以我可以通过 RDP 直连我家台式机的 IPv6 地址。然而，运营商分配给我家宽带的 IPv6 地址是动态的，所以还需要通过 DDNS （动态 DNS 解析）将这个动态 IPv6 地址解析到一个域名，在 RDP 中连接这个域名。以下是操作步骤。</p><h2 id="一、准备工作">一、准备工作</h2><ol><li><p>找电信运营商开通 IPv6。</p></li><li><p>在光猫中将连接方式改为桥接。</p></li><li><p>需要支持 IPv6 的路由器。我的路由器是小米 AX1800 路由器，打开了 SSH，并且用 iptables 命令控制 IPv6 防火墙。（该路由器无法用图形界面控制 IPv6 防火墙）。</p></li><li><p>购买域名，注册 Cloudflare 账号，并将域名添加到 Cloudflare。</p></li><li><p>在家里的台式机上启用远程桌面。</p></li></ol><h2 id="二、安装并配置-ddns-go">二、安装并配置 ddns-go</h2><p>DDNS-GO 是动态 DNS 解析工具。下载<a href="https://github.com/jeessy2/ddns-go/releases"><em><code>DDNS-GO</code></em></a>到本地并解压，使用管理员权限运行 Windows 终端，在 PowerShell 中执行以下命令安装并设置 DDNS-GO：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">cd</span> <span class="hljs-string">&quot;c:\program files\ddns-go&quot;</span><br>.\ddns<span class="hljs-literal">-go</span>.exe <span class="hljs-literal">-s</span> install<br><span class="hljs-built_in">Set-Service</span> <span class="hljs-literal">-Name</span> <span class="hljs-string">&quot;ddns-go&quot;</span> <span class="hljs-literal">-StartupType</span> Automatic<br></code></pre></td></tr></table></figure><p>在浏览器中打开 <code>127.0.0.1:9876</code> ，配置 DDNS-GO。</p><ol><li><p>DNS 服务商设置为 Cloudflare。</p></li><li><p>在 Cloudflare 中创建一个 Token（令牌），模板为“编辑区域 DNS”，在“区域资源”中选择“所有区域”，然后点击“创建”。把创建的 Token 复制到 DDNS-GO 中，点击“保存”。</p></li><li><p>在 DDNS-GO 中，取消勾选“IPv4”，保持勾选“IPv6”，把“获取 IP 方式”设置为“通过网卡获取”，“Domains”输入域名，此处假设为 <a href="http://rdp.kukmoon.com">rdp.kukmoon.com</a>。</p></li><li><p>DDNS-GO 会在 Cloudflare 中自动新建一条 DNS 解析记录，域名为 <a href="http://rdp.kukmoon.com">rdp.kukmoon.com</a>，IP 地址为“通过网卡获取”的 IP 地址。</p></li><li><p>配置路由器防火墙，允许访问 3389 端口的流量通过。</p></li></ol><h2 id="三、为了安全，更改-RDP-端口">三、为了安全，更改 RDP 端口</h2><ol><li><p>打开注册表，<code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp</code>，导出 <code>RDP-Tcp</code> 为 reg 文件。</p></li><li><p>复制 reg 文件，然后编辑这个复制的reg文件。找到 <code>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]</code> 这行，把最后的RDP-Tcp改成RDP-Tcp-1。再把 <code>PortNumber</code> 这行的值改成 <code>0000d431</code>（对应十进制的 54321）。</p></li><li><p>将这个reg文件导入注册表，重启电脑，就可以通过 3389 和 54321 端口访问本机的远程桌面了。</p></li><li><p>配置本机防火墙和路由器防火墙，开启 54321 端口。</p></li></ol><p><strong>注意</strong>：路由器不开启 3389 端口，这样就不允许外网访问 3389 端口，3389 仅在我家内部的局域网中使用。</p><h2 id="四、测试">四、测试</h2><p>手机（网络为中国电信 4G）开热点共享给笔记本电脑，在笔记本上新建远程连接，地址为“<a href="http://rdp.kukmoon.com:54321">rdp.kukmoon.com:54321</a>”，连接很顺利，操作比较流畅。</p><h2 id="五、图片版权">五、图片版权</h2><p>题图：By Rawpixel from <a href="https://negativespace.co/man-jeans-laptop-office-work/">Negativespace.co</a></p><p>头图：<a href="https://stocksnap.io/photo/seasonal-leaf-WXREXGYBC6">Photo</a> by <a href="https://stocksnap.io/author/freephotos">FreePhotos</a> on <a href="https://stocksnap.io">StockSnap</a></p>]]></content>
    
    
    <summary type="html">本文介绍了在家庭宽带无 IPv4 公网但有动态 IPv6 地址的情况下，如何通过动态 DNS 解析来实现远程桌面（RDP）直连。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="远程桌面" scheme="https://blog.kukmoon.com/tags/%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2/"/>
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="互联网" scheme="https://blog.kukmoon.com/tags/%E4%BA%92%E8%81%94%E7%BD%91/"/>
    
  </entry>
  
  <entry>
    <title>IPv6 + DDNS + WebDAV 搭建文件访问服务</title>
    <link href="https://blog.kukmoon.com/a7d96a12ed08/"/>
    <id>https://blog.kukmoon.com/a7d96a12ed08/</id>
    <published>2025-10-12T08:23:41.000Z</published>
    <updated>2025-10-12T08:23:41.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-10-12-17-09-59.png" alt="IPv6 + DDNS + WebDAV 搭建文件访问服务"></p><p>我需要搭建一个可以从外网访问的文件服务器，当我不在家时，也可以用手机或笔记本电脑远程存取我家台式机上的部分文件。</p><p>文件服务器，可以用 Windows 内置的 IIS 搭建 WebDAV 站点来实现。从外网访问，就需要内网穿透，我选择了 IPv6 地址直连，需要 ddns-go 来实现动态 DNS 解析。</p><p>以下是操作步骤。</p><h2 id="一、找电信运营商开通-IPv6">一、找电信运营商开通 IPv6</h2><h2 id="二、在光猫中将连接方式改为桥接">二、在光猫中将连接方式改为桥接</h2><h2 id="三、需要支持-IPv6-的路由器">三、需要支持 IPv6 的路由器</h2><p>我的路由器是小米 AX1800 路由器，打开了 SSH，并且用 iptables 命令控制 IPv6 防火墙。（该路由器无法用图形界面控制 IPv6 防火墙）。</p><h2 id="四、购买域名，注册-Cloudflare-账号">四、购买域名，注册 Cloudflare 账号</h2><p>将域名添加到 Cloudflare。</p><h2 id="五、安装并配置-ddns-go">五、安装并配置 ddns-go</h2><p>下载<a href="https://github.com/jeessy2/ddns-go/releases"><code>DDNS-GO</code></a>到本地并解压，使用管理员权限运行 Windows 终端，cd 到 DDNS-GO 所在文件夹，执行以下命令安装：</p><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs vim">.\ddns-<span class="hljs-keyword">go</span>.<span class="hljs-keyword">exe</span> -s install<br></code></pre></td></tr></table></figure><p>在服务中将 DDNS-GO 设置为自启动。</p><p>在浏览器中打开 <code>127.0.0.1:9876</code> ，配置 DDNS-GO。</p><ol><li><p>DNS 服务商设置为 Cloudflare.</p></li><li><p>在 Cloudflare 中创建一个 Token（令牌），模板为“编辑区域 DNS”，在“区域资源”中选择“所有区域”，然后创建。把创建的令牌复制到 DDNS-GO 中，点击“保存”。</p></li><li><p>取消勾选“IPv4”。</p></li><li><p>保持勾选“IPv6”，把“获取 IP 方式”设置为“通过网卡获取”，“Domains”输入域名，此处假设为 <code>fileserver.kukmoon.com</code>。</p></li><li><p>DDNS-GO 会在 Cloudflare 中自动新建一条 DNS 解析记录，域名为 <code>fileserver.kukmoon.com</code>，IP 地址为“通过网卡获取”的 IP 地址。</p></li></ol><h2 id="六、安装-WebDAV">六、安装 WebDAV</h2><p>按照参考文献<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="[全面指南：在Windows上搭建WebDAV，实现高效文件访问！ - 知乎](https://zhuanlan.zhihu.com/p/685352564)">[1]</span></a></sup>操作，此处以 Windows 10 为例。</p><p>右击“开始”，选择“运行”，输入 <code>appwiz.cpl</code>，在弹出的窗口的左侧导航窗格中，点击“打开或关闭 Windows 功能”。</p><p>在弹出的“Windows 功能”窗口中，展开“Internet Information Services”，勾选下列几项：</p><ul><li>IIS 管理控制台</li><li>Windows 身份验证</li><li>基本身份验证</li><li>请求筛选</li><li>WebDAV 发布</li><li>静态内容</li><li>默认文档</li><li>目录浏览</li></ul><p><img src="https://img.kukmoon.com/20251012114120.png" alt="安装 IIS"></p><p>勾选所需的功能后，点击“确定”开始安装，安装完成后，可能需要重启电脑。</p><h2 id="七、新建并配置站点">七、新建并配置站点</h2><p>IIS 安装完成后，通过搜索或在控制面板中找到“IIS 管理器”，启动。</p><p><strong>1. 添加网站</strong>。在左侧导航栏中，展开“KM-Computer”（我电脑的名称），右击“网站”，选择“添加网站”。在弹出的对话框中设置网站的属性。“网站名称”设为“WebDAV”；新建 <code>C:\inetpub\webdav</code> 文件夹作为物理路径；由于电信运营商不允许使用 80 和 443 端口，因此将端口改成 60021，设置主机名为 <code>fileserver.kukmoon.com</code>；点击“确定”。</p><p><strong>2. 启用 WebDAV</strong>。在左侧导航栏中，选中新建的 <code>WebDAV</code> 网站。在中部的窗格中，双击“WebDAV 创作规则”（旧版 Windows 翻译成“WebDAV 授权规则”），在右侧的操作面板中，点击“启用 WebDAV”。</p><p><strong>3. 添加创作规则</strong>。在右侧的操作面板中点击“添加创作规则”。它们名为“创作规则”，实际上是“访问规则”，规定了用户可以访问什么内容，什么用户可以访问 WebDAV 内容。<em>例如我想让本机用户 <code>Kukmoon</code> 以读取的形式访问全部内容，就可以创建如图所示的一条规则</em>。</p><p><img src="https://img.kukmoon.com/20251012120427.png" alt=""></p><p><strong>4. 设置目录浏览</strong>。返回 IIS 管理器的中间窗格，双击“目录浏览”，然后在右侧点击“启用”，以便用户可以浏览目录。</p><p><strong>5. 配置防火墙</strong>。配置 Windows 防火墙和路由器的防火墙，开放 60021 端口。</p><p>这样，在浏览器中访问 <code>fileserver.kukmoon.com:60021</code>，就可以看到物理路径下的内容了。</p><h2 id="八、高级配置">八、高级配置</h2><h3 id="8-1-配置用户验证">8.1 配置用户验证</h3><p>我希望配置用户验证，当用户访问我的 WebDAV 服务器时，会弹出一个对话框要求输入用户和密码。在 AI 的帮助下，配置成功。</p><p>在 IIS 的中间窗格中，双击“身份验证”，启用“基本身份验证”，禁用“Windows 身份验证”和“匿名身份验证”。</p><p>这样，在浏览器中访问 <code>fileserver.kukmoon.com:60021</code>，浏览器会弹出一个对话框要求输入用户和密码。注意：需要输入本机真实存在的用户名及其密码。例如我在前文配置让用户 <code>Kukmoon</code> 以只读的方式访问全部内容，那么就可以在此处输入用户名 <code>Kukmoon</code> 及其密码。只有输入正确，才能访问 WebDAV 站点的内容。</p><p><img src="https://img.kukmoon.com/20251012122242.png" alt=""></p><h3 id="8-2-用目录链接为-WebDAV-站点添加子文件夹">8.2 用目录链接为 WebDAV 站点添加子文件夹</h3><p>以管理员身份启动命令提示符，输入以下命令：</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs cmd"><span class="hljs-built_in">cd</span> c:\inetpub\webdav<br>mklink /D Videos F:\Videos<br></code></pre></td></tr></table></figure><p>然后设置 <code>F:\Videos</code> 文件夹的共享，添加用户 <code>Everyone</code>，权限级别为“读取”。</p><p>这样，这样，在浏览器中访问 <code>fileserver.kukmoon.com:60021</code>，就可以看到一个名为 <code>Videos</code> 的子文件夹，点击它就可以访问里面的内容（实际上是本机 <code>F:\Videos</code> 文件夹中的内容）。</p><h3 id="8-3-配置-SSL-加密">8.3 配置 SSL 加密</h3><p>用 <a href="https://certifytheweb.com/">Certify The Web</a> 为站点 <code>fileserver.kukmoon.com</code> 获取 Let’s Encrypt 的证书，并且自动部署到 IIS。</p><p>然后，在 IIS 管理器的左侧导航窗格中选中“WebDAV”站点，在中间窗格中双击“SSL 设置”，勾选“要求 SSL”。</p><h3 id="8-4-配置-IPBan">8.4 配置 IPBan</h3><p>IPBan 是防御黑客爆破站点的工具，其工作原理是封禁多次输错密码的 IP。按照参考文献<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Windows 2012/2016系统远程访问安全配置以及安装IPBan的详细配置记录 - OMO萌](https://omo.moe/archives/968/)">[2]</span></a></sup><strong>手动</strong>安装并配置，因为一键安装脚本在我电脑上从 GitHub 下载安装包的速度极慢。</p><h2 id="九、图片版权">九、图片版权</h2><p>题图：By Lenharth Systems from <a href="https://negativespace.co/">Negativespace.co</a></p><p>头图：<a href="https://stocksnap.io/photo/seasonal-leaf-WXREXGYBC6">Photo</a> by <a href="https://stocksnap.io/author/freephotos">FreePhotos</a> on <a href="https://stocksnap.io">StockSnap</a></p><h2 id="十、参考文献">十、参考文献</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://zhuanlan.zhihu.com/p/685352564">全面指南：在Windows上搭建WebDAV，实现高效文件访问！ - 知乎</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="https://omo.moe/archives/968/">Windows 2012/2016系统远程访问安全配置以及安装IPBan的详细配置记录 - OMO萌</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
    
    
    <summary type="html">搭建通过 IPv6 直连的 WebDAV 文件服务，用 DDNS 确保外网可通过域名直连。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="互联网" scheme="https://blog.kukmoon.com/tags/%E4%BA%92%E8%81%94%E7%BD%91/"/>
    
    <category term="WebDAV" scheme="https://blog.kukmoon.com/tags/WebDAV/"/>
    
  </entry>
  
  <entry>
    <title>我的芭蕾人生-第十三章（同人创作）</title>
    <link href="https://blog.kukmoon.com/487213b411ce/"/>
    <id>https://blog.kukmoon.com/487213b411ce/</id>
    <published>2025-08-01T06:06:13.000Z</published>
    <updated>2025-08-01T06:06:13.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="我的芭蕾人生-第十三章-同人创作">我的芭蕾人生 第十三章 同人创作</h2><p>原作者：LucienMio</p><p>原作网址： <a href="https://houhuayuan.vip/%e6%88%91%e7%9a%84%e8%8a%ad%e8%95%be%e4%ba%ba%e7%94%9f-%e7%ac%ac%e4%b8%80%e7%ab%a0/">https://houhuayuan.vip/我的芭蕾人生-第一章/</a></p><p>此文为同人创作，写了一个大团圆的结局，希望各位看官喜欢。</p><hr><p>从西雅图到洛杉矶的旅程，仅仅是回到美国的旧地，便已让我心潮澎湃，仿佛经历了一场漫长的人生回溯。而此刻，苏苏说要陪我回国，我的内心深处，既是涌动的勇气，又是难以言喻的忐忑。</p><p>“佳佳，你真的想好了吗？这次只是短暂探亲，咱们还是要回美国的。”苏苏握着方向盘，轻声问道。她的侧脸在晨光中显得格外温柔，眼角细微的鱼尾纹，记录着岁月对她的雕刻，却也更添了几分成熟的魅力。</p><p>我深吸一口气，轻抚着自己平坦的小腹，感受着那不再有任何男性印记的身体。这近三十年的人生，我像一只破茧的蝶，一路跌跌撞撞，终于找到了真正的自己。现在，是时候回家了。</p><p>“嗯，我想好了。”我坚定地回答，声音带着一丝沙哑，却是前所未有的平静，“逃避解决不了任何问题。既然我已经走到这一步，就该去面对。”</p><p>苏苏笑了，那笑容如同初见时洒在我脸上的阳光，温暖而又治愈。她伸出手，轻轻拍了拍我的大腿：“好，那我陪你一起。咱们在美国的生活还长着呢，什么困难都能一起扛。”</p><p>这句话，如同定海神针，让我的心安定了下来。有苏苏在，我什么都不怕。</p><p>回国的机票并不好买，疫情让全球航班锐减，直飞更是稀少。苏苏动用了她律师事务所的关系，好不容易才弄到两张从西雅图经东京转机回国的机票，时间就在一个月后。</p><p>这一个月，我们都在紧张而有序地准备着。苏苏帮我处理了在美国的一切事务：确保绿卡和工作稳定，医疗记录备份，并安排好回美后的计划。她如同一个全能的天使，将我的生活打理得井井有条，让我可以将所有精力都放在心理建设上。</p><p>“佳佳，你要不要先给叔叔阿姨打个电话？”苏苏试探性地问。</p><p>我犹豫了。尽管我已经决定回国面对，但要我亲自拿起电话，将我这二十多年“离经叛道”的真相告诉他们，那份勇气，仍未完全鼓足。</p><p>“还是……等回去再说吧。”我低声说。</p><p>苏苏理解我的心情，没有再强求。她知道，有些话，必须当面才能说清；有些伤痛，必须当面才能治愈。</p><p>临行前，我们最后一次去医院领取我的激素药物。戴维医生看着我，眼中带着鼓励：“徐，你做出了一个勇敢的决定。记住，无论你做出怎样的选择，你的健康和幸福永远是第一位的。”</p><p>我郑重地向他道谢。他为我准备了详细的病历和用药方案，确保我在国内探亲期间也能顺利进行后续的激素治疗。</p><p>“哦，对了，上次那个瑶瑶……你还记得吗？”戴维医生忽然提起。</p><p>我心中一紧，姚瑶那悲惨而扭曲的生活像电影般在脑海中闪过。</p><p>“她还好吗？”我问。</p><p>戴维医生叹了口气：“她……她联系不上了。她的父母最终还是强行把她带回去了。希望她能平安吧。”</p><p>我的心沉了下来。姚瑶的命运，似乎在无声地警示着我。但我已不再是那个害怕逃避的自己，我有苏苏，我有勇气去面对。</p><p>飞机终于在东京转机，我看着舷窗外熟悉的亚洲面孔，心中百感交集。二十多年了，我终于要回到这片土地。</p><p>当飞机降落在上海浦东国际机场，踏上阔别二十多年的故土时，我的双脚仿佛踩在了梦境与现实的交界。机场里人头攒动，熟悉的中文广播，空气中带着一丝久违的湿润和家乡特有的味道，这一切都让我感到既亲切又陌生。</p><p>我戴着帽子，穿着宽松的中性衬衫和牛仔裤，将女性化的身体尽量隐藏起来。尽管在西雅图我已经习惯了女装生活，但在国内，我本能地感到一种无形的压力。苏苏则牵着我的手，她的手掌温暖而坚定，给我无尽的力量。</p><p>我们没有通知任何人，打车直奔火车站，买了去苏苏家所在城市的票。漫长的火车旅程中，我紧紧靠着苏苏，内心如同即将喷发的火山，既期待又恐惧。</p><p>火车到站后，我们打车直奔苏苏父母的家，她一马当先，我紧张地跟在她身后，手心满是汗水。</p><p>“妈妈，爸爸，我们回来了！”苏苏按响门铃，欢快地叫道。</p><p>门很快被打开，苏苏父母看到我们，脸上充满了惊喜。苏苏的妈妈抱着苏苏，眼眶有些湿润。苏苏的爸爸则拍着苏苏的肩膀，眼中满是欣慰。</p><p>“苏苏，你这孩子，怎么也不提前打个电话？”苏苏的妈妈嗔怪道。</p><p>“妈，我们想给你们一个惊喜！”苏苏笑着说。</p><p>苏苏的父母这才注意到我，他们的目光在我身上停留了一瞬，眼中闪过一丝疑惑，但很快就被热情所取代。他们或许内心仍有疑问，但他们对女儿的爱，让他们选择了接纳。</p><p>“佳佳，快进来，别在外面站着。”苏苏的爸爸热情地招呼道。</p><p>我紧张地走进苏苏父母家，苏苏的妈妈拉着我的手，上下打量着我，眼中满是好奇和喜爱。</p><p>“苏苏，这孩子长得真俊，跟你一样！”苏苏的妈妈笑着说。</p><p>苏苏的父母是知识分子，思想相对开明。当苏苏向他们介绍我是她的妻子时，苏苏的妈妈一向沉稳的脸上也露出了震惊，苏苏的爸爸则推了推眼镜，显然有些难以置信。</p><p>“苏苏，你……你确定吗？”苏苏的妈妈颤声问。</p><p>“妈，爸，我确定。我爱佳佳，爱她的一切。我们已经在一起了。”苏苏坚定地回答。</p><p>我则紧张地站在苏苏身边，不敢直视苏苏父母的眼睛。</p><p>苏苏的父母最终选择了支持女儿的选择。他们或许内心仍有疑问和挣扎，但他们对女儿的爱，让他们愿意去理解和接受。</p><p>“只要你幸福，苏苏，我们都支持你。”苏苏的爸爸最终说道。</p><p>“佳佳，以后你也是我们秦家的孩子了。”苏苏的妈妈拉着我的手，眼中带着一丝欣慰和疼惜。</p><p>苏苏父母的接纳，给了我极大的勇气。我心中感到温暖，也更加坚定了要面对自己父母的决心。</p><p>第二天，苏苏陪我回到了我家。</p><p>火车抵达老家县城火车站时，夜幕已降临。县城的变化让我惊讶，曾经破旧的火车站如今焕然一新，周围高楼林立，车水马龙。我心中五味杂陈，这座我曾经拼命想要逃离的小城，如今也已变得陌生。</p><p>我攥紧了苏苏的手，手心已满是汗水。苏苏回握我的手，轻声说：“别怕，我陪你。”</p><p>回到家门口，我迟疑了许久，最终还是苏苏上前，轻轻按响了门铃。</p><p>门很快被打开，露出妈妈憔悴却依然熟悉的脸。她的头发更白了，眼角的皱纹更深了，穿着一件陈旧的家居服。</p><p>“谁呀……”妈妈的声音带着疑惑，但当她看清站在门口的我时，她的声音戛然而止，眼中瞬间充满了震惊、狂喜，随即被难以置信的痛苦取代。</p><p>“佳佳……苏苏！”妈妈颤抖着伸出手，想触碰我，却又像触碰什么烫手的东西般收了回去。她的目光在我脸上、身上来回梭巡，最终定格在我带着帽子的头部，以及被宽松衣服遮掩下的女性化身躯。</p><p>“你……你……”妈妈的声音开始发抖，泪水瞬间涌出眼眶，“你怎么成了这副样子……”</p><p>“妈！”我再也忍不住，泪水夺眶而出，一下子扑进妈妈怀里，紧紧抱住了她。二十多年了，我终于再次感受到妈妈的体温，那熟悉的味道让我瞬间崩溃。</p><p>“呜呜……妈妈……我回来了……”我哭得泣不成声。</p><p>妈妈的身体僵硬了一瞬，随即也紧紧抱住了我，泪水打湿了我的肩膀：“佳佳……我的佳佳……你跑哪去了……妈妈好想你啊……”</p><p>客厅里传来爸爸的脚步声。他听到声音，快步走出来，当他看到抱在一起的我和妈妈，以及站在旁边的苏苏时，魁梧的身躯也愣在了原地。</p><p>“佳佳？苏苏？”爸爸的眼中也充满了震惊和不解。他看着我，眉宇紧皱，脸上的表情复杂得难以言喻。</p><p>苏苏上前一步，轻轻扶住妈妈的肩膀：“叔叔阿姨，我们回来了。”她的声音平静而温柔，带着一种安抚人心的力量。</p><p>妈妈从我怀里挣脱，猛地抓住我的肩膀，将我推开，双眼死死盯着我，带着泪痕的脸上充满了痛苦：“你告诉我，你这是怎么回事？！”</p><p>她指着我，声音因愤怒和悲痛而颤抖：“你……你把你自己弄成了什么样子？！你……你你你……你是个男孩子啊！你是我儿子啊！”</p><p>爸爸的脸色也变得铁青，他走到我面前，声音低沉而带着压抑的怒火：“徐佳！你给我解释清楚！”</p><p>我站在那里，身体微微颤抖。这一刻，我等待了太久，也恐惧了太久。</p><p>“爸……妈……”我深吸一口气，努力平复自己的情绪，声音带着前所未有的坚定，“我……我不是你们以为的那个男孩子。我……我从小就想成为一个女孩子。”</p><p>“胡说八道！”爸爸猛地一巴掌拍在茶几上，发出一声巨响，震得整个客厅都安静下来。他气得脸色发白，呼吸急促，“你……你你你……你学什么不好，学这种东西？！你还骗我们说考上大学，出了国，就是为了干这种伤风败俗的事情吗？！”</p><p>“徐佳！你对得起我们吗？对得起你爷爷奶奶吗？对得起我们徐家的列祖列宗吗？！”爸爸指着我，声音颤抖，身体也因为愤怒而晃动。</p><p>妈妈则捂着嘴巴，眼泪止不住地往下流，一句话也说不出来，只是痛苦地看着我。</p><p>“爸，妈，请你们冷静一下！”苏苏忽然上前一步，挡在我身前，直视着愤怒的爸爸。她的声音冷静而有力，带着一丝律师特有的职业气场，“请你们冷静一下！佳佳他没有骗你们，他一直在努力学习，也拿到了博士学位。他只是……他只是活成了他真正的样子！”</p><p>“你是谁？！”爸爸怒视着苏苏，“你……你当年是不是就带坏我儿子了？！他变成今天这样，是不是跟你有关？！”</p><p>“叔叔，我是苏苏。佳佳能够活出真实的自己，我很高兴。而且，他现在是我的妻子。”苏苏字字铿锵，毫不退缩，她牵起我的手，紧紧握住。</p><p>“妻子？！”爸爸妈妈同时发出惊呼。</p><p>妈妈听到苏苏那句“妻子”，更是眼前一黑，差点晕倒。爸爸连忙扶住她，用难以置信的眼神看着我和苏苏交握的手。</p><p>“你……你跟佳佳结婚了？！你……你也是个女孩子啊！”妈妈喃喃道，眼中充满了绝望。</p><p>客厅里陷入了死一般的寂静。</p><p>我看着父母痛苦而绝望的脸，心中一阵绞痛。但我知道，这是我必须迈过的一道坎。</p><p>“爸，妈，请你们听我说……”我拉着苏苏的手，跪了下来。苏苏也跟着我一起跪下。</p><p>“爸妈，对不起，我让你们失望了。对不起，我一直瞒着你们。但是……我从小就觉得自己是个女孩子。我讨厌自己的男性身体，我渴望像个女孩子一样生活。”我将这些年来一直深藏在心底的话，第一次毫无保留地说了出来，声音带着颤抖，却字字真诚。</p><p>“我……我偷吃激素，做了睾丸切除手术，在国外一直以女性身份生活。我不是你们引以为傲的那个男孩子，我没有办法给你们传宗接代……但我……我真的是你们的女儿啊！”我抬头看着父母，泪水模糊了双眼。</p><p>“放肆！”爸爸猛地甩开妈妈的手，冲过来抬手就要打我。</p><p>“老徐！”妈妈一声惊呼，猛地扑到我身前，挡住了爸爸落下的手掌。</p><p>“你……你打死我吧……我……我生了这样一个孩子，都是我的报应……”妈妈抱着我，哭得撕心裂裂。</p><p>爸爸的手停在半空中，最终无力地垂下。他看着抱头痛哭的我和妈妈，高大的身躯也开始颤抖。</p><p>“你们……你们让我冷静一下……”爸爸的声音嘶哑，他一步步退到沙发上，捂住了自己的脸。</p><p>客厅里只剩下我和妈妈的哭泣声，以及苏苏轻柔的安抚声。</p><p>我们不知道哭了多久，最终是苏苏轻轻拍了拍我的背：“佳佳，让叔叔阿姨休息一下吧。我们先到客房去。”</p><p>我点点头，跟着苏苏起身，走进了旁边的客房。关上门，我才感觉全身的力气都被抽干，一下子瘫软在苏苏怀里，泪水止不住地流。</p><p>“苏苏……我……我是不是伤他们太深了……”我哽咽道。</p><p>“傻瓜，这不怪你。”苏苏抱着我，轻抚我的头发，“他们需要时间来接受。慢慢来，都会好的。”</p><p>这一晚，我蜷缩在苏苏怀里，哭到深夜，才疲惫地睡去。</p><p>第二天，家里依然气氛凝重，父母对我仍旧回避。苏苏则提议，我们一起去拜访关老师。</p><p>“佳佳，关老师那么爱你，你回国了，应该去看看她。”苏苏温柔地说道，“而且，她会支持你的。”</p><p>我点点头，心里涌起一股暖流。</p><p>我们打车来到县里。县城变化很大，曾经的少年宫旧址，如今已被拆迁，变成了一座现代化的小广场。</p><p>“老师现在住在老家的房子里了。”苏苏说，“她已经不教芭蕾了，现在退休在家，偶尔去老年大学教教形体。”</p><p>我们打车来到县城的老居民区，在一条幽静的小巷里，找到了关琳老师的家。</p><p>门是开着的，院子里种满了花草，生机勃勃。关琳老师正坐在院子里晒太阳，戴着老花镜，手里拿着一本旧书。她的头发已经全白了，脸上布满了岁月的痕迹，但身姿依然挺拔，带着舞者特有的优雅。</p><p>“关老师！”苏苏喊道。</p><p>关琳老师闻声抬头，看到苏苏和我，眼中瞬间充满了震惊和难以置信。</p><p>“佳……佳佳？”关琳老师颤抖着伸出手，她的目光在我完全女性化的外表上梭巡，最终定格在我那双熟悉又陌生的眼睛上。</p><p>“关老师……”我再也忍不住，泪水滚落而下，一下子冲上前，紧紧抱住了她。</p><p>“我的佳佳……”关琳老师也抱紧了我，身体微微颤抖，泪水也模糊了她的双眼。</p><p>“你……你真的回来了……”关琳老师轻抚着我的头发，声音颤抖，“你……你还好吗？”</p><p>“我很好，老师。”我哽咽道，“对不起，我让您担心了。”</p><p>“傻孩子……”关琳老师哭着笑着，她松开我，捧着我的脸，仔细端详着，眼中充满了怜爱和理解，“你……你真的长大了，也变得……这么美了……”</p><p>她转头看向苏苏，眼中带着一丝疑惑和询问。苏苏则对她点点头，眼中带着欣慰的笑容。</p><p>“老师，我……我做了睾丸切除手术。”我鼓起勇气，向关琳老师坦白。</p><p>关琳老师的身体晃了一下，但她很快稳住了。她看着我，眼中没有丝毫的厌恶和鄙夷，只有深沉的理解和心疼。</p><p>“老师知道，你一直都想做一个女孩子。”关琳老师轻声说，她的声音带着一丝颤抖，“老师……老师真为你高兴。你能勇敢地活出自己，真好。”</p><p>我紧紧握住关琳老师的手，泪水再次涌出。她的话语，如同春风化雨，治愈了我多年来深藏在心底的恐惧和不安。</p><p>“老师，苏苏……苏苏是我的妻子。”我牵起苏苏的手，向关琳老师介绍。</p><p>关琳老师看着我们交握的手，眼中闪过一丝复杂的情绪，但随即又露出欣慰的笑容。她分别握住我和苏苏的手，轻声说：“好，好。你们都在一起了，真好。”</p><p>她为我们煮了茶，我们坐在院子里聊了很久，回忆着过去的时光。虽然关琳老师不再教芭蕾，但她对舞蹈的热爱从未改变。</p><p>我告诉她，我在美国也一直在跳舞，甚至在大学里也加入了芭蕾俱乐部。</p><p>“太好了！”关琳老师眼中闪着光，“佳佳，有空了，你再跳给老师看看，好吗？”</p><p>我点点头，心中涌起一股暖流。</p><p>我们从关琳老师家出来，回到我家门前，突然听见身后传来一声熟悉的声音。</p><p>“徐佳！你还知道回来啊！”</p><p>是赵真泽。</p><p>他果然来找我了。</p><p>他看到我，脸上露出了熟悉的惊喜表情，然后又立刻变得有些窘迫。他看着我如今完全女性化的装扮，以及我胸前微微隆起的曲线，眼神不自觉地有些躲闪。</p><p>“老赵！”我心中一暖，不由得叫出声来。</p><p>“你……你真的……这么……”他欲言又止，但眼神中却充满了关心。</p><p>“她现在是佳佳，你的佳佳。”苏苏笑着上前，挽住我的胳膊，向赵真泽介绍。</p><p>赵真泽憨笑着，用力拍了拍苏苏的肩膀：“嫂子好！”</p><p>苏苏一愣，随即也笑了。我看着赵真泽，心中既是感动又是好笑。这家伙，无论我变成什么样，他都还是那个没心没肺的赵真泽。</p><p>我们一起回到父母家，赵真泽成了父母与我之间的传声筒。他用他一贯的直爽和幽默，打破了两代人之间的坚冰。他告诉父母，我在美国过得很好，学习也很努力，苏苏对我很好，他们在美国的生活很幸福。</p><p>“叔叔阿姨，你们就放心吧，佳佳在外面过得可好了！”赵真泽说，“苏苏对她可好了，把她当小公主一样宠着！”</p><p>父母在旁边听着，脸色有些复杂。他们从赵真泽口中听到对我的赞美，既感到一丝骄傲，又因我的性别转变而感到痛苦。</p><p>“你……你和苏苏到底是什么关系啊？”赵真泽一脸无辜地开口问，切，还是像当年一样，大直男。</p><p>“我们结婚了！”苏苏牵起我的手，向赵真泽展示我们手上戴着的婚戒。</p><p>爸爸妈妈再次震惊，脸上露出难以置信的神情。赵真泽也瞪大了眼睛，惊呼道：“真的啊？！什么时候的事？！怎么不告诉我！”</p><p>“没多久。而且，你的婚礼，佳佳也还没参加呢。”苏苏笑着说。</p><p>“是啊！我结婚的时候你在美国！下次你结婚我一定要去参加！”赵真泽大声嚷嚷。</p><p>“去你的！”我忍不住笑骂一声，上前去踹了他一脚。</p><p>一家人被赵真泽的憨劲儿逗乐了，客厅里的气氛变得轻松了许多。</p><p>几天后的一个晚上，妈妈开始悄悄地走进我的房间。我正在涂抹身体乳，看到她进来，下意识地想遮掩。</p><p>“佳佳……”妈妈轻声叫道，她的眼中没有了以往的愤怒，只剩下心疼，“你的身体……真的变成这样了吗？”</p><p>我停下手，转过身，将我女性化的身体完全展现在妈妈面前。我的皮肤细腻光滑，胸部微微隆起，腰肢纤细，腿部修长。</p><p>妈妈颤抖着伸出手，轻轻抚摸着我的脸颊，然后是我的肩膀，我的手臂，我的胸部。她的手所到之处，我都感到一阵酥麻。</p><p>“我的女儿……”妈妈的眼泪再次涌出，她抱住我，哭得泣不成声，“我的佳佳……我的女儿啊……”</p><p>这是我第一次听到妈妈叫我“女儿”。</p><p>我抱着妈妈，泪如雨下。二十多年的心结，在此刻终于得到了释放。</p><p>爸爸虽然没有像妈妈那样表达，但他对我的态度也开始软化。他会偷偷地观察我，会在饭桌上给我夹菜，甚至会私下里问苏苏：“佳佳的药，是不是每天都要吃？”</p><p>我知道，父母最终还是选择了爱我。他们或许永远无法完全理解我的选择，但他们选择了接纳我。</p><p>短暂的探亲时光转瞬即逝，我们回美国的日子到了。</p><p>在机场，父母紧紧拥抱着我，妈妈的眼泪止不住地流。爸爸拍了拍我的肩膀，虽然没有说话，但眼神中充满了不舍和一丝理解。</p><p>我没有告诉他们我接下来要说的，我只是看着他们，微笑着说：“爸，妈，对不起，我让你们受苦了。”</p><p>妈妈的眼泪再次涌出，她抱紧了我。</p><p>“我们……我们只想你幸福，佳佳。你……你幸福就好。”妈妈的声音带着哭腔，却也充满了理解。</p><p>“爸，妈，你们多保重身体。”我哽咽道。</p><p>苏苏则抱着我的父母，柔声安慰。</p><p>登上飞机，我看着舷窗外渐渐缩小的家乡，心中百感交集。这次回国，虽然短暂，却弥合了二十多年的心结，让爱与理解在家庭中重新流淌。</p><p>回到美国，我和苏苏的生活恢复了往日的平静与忙碌。苏苏的律师事务所有了新的发展，我也成功获得了工作签证和绿卡，在一家心仪的药企任职。我们依然热爱芭蕾，会在闲暇时一起去俱乐部练习，也会在家里跳舞。</p><p>我不再隐藏自己的身份，在社会中以女性的身份自信地生活。我知道，未来的路也许还会有挑战，但有苏苏在身边，有父母和朋友的支持，我便无所畏惧。我的芭蕾人生，已在爱与接纳中，完成了最美丽的涅槃。</p><p><strong>终</strong></p>]]></content>
    
    
    <summary type="html">此文为同人创作，写了一个大团圆的结局，希望各位看官喜欢。</summary>
    
    
    
    <category term="故事" scheme="https://blog.kukmoon.com/categories/%E6%95%85%E4%BA%8B/"/>
    
    
    <category term="性转" scheme="https://blog.kukmoon.com/tags/%E6%80%A7%E8%BD%AC/"/>
    
    <category term="变性" scheme="https://blog.kukmoon.com/tags/%E5%8F%98%E6%80%A7/"/>
    
    <category term="药娘" scheme="https://blog.kukmoon.com/tags/%E8%8D%AF%E5%A8%98/"/>
    
  </entry>
  
  <entry>
    <title>在 Hyper-V 增强会话中测试四种 Linux 桌面的 DPI 缩放</title>
    <link href="https://blog.kukmoon.com/223f51c892a6/"/>
    <id>https://blog.kukmoon.com/223f51c892a6/</id>
    <published>2025-06-28T05:23:28.000Z</published>
    <updated>2025-06-28T05:23:28.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-06-28-15-04-37.webp" alt="在 Hyper-V 增强会话中测试四种 Linux 桌面的 DPI 缩放"></p><p>随着高分辨率显示器与 HiDPI 逐渐普及，出于某个小众的需求，我需要让 Linux 桌面在 1920x1080 分辨率下实现 150% dpi 缩放，而且最好可以在图形界面设置 DPI 缩放比例。</p><p>有鉴于此，我在 Hyper-V 中安装了微软定制版的 Ubuntu 22.04 和 Kubuntu 22.04，并使用增强会话测试了如下四个桌面：</p><ul><li><p>Gnome （随微软定制版 Ubuntu 22.04 安装），</p></li><li><p>KDE（随 Kubuntu 22.04 安装），</p></li><li><p>Xfce4（在微软定制版 Ubuntu 22.04 中通过 apt 命令安装），</p></li><li><p>LXDE（在微软定制版 Ubuntu 22.04 中通过 apt 命令安装）。</p></li></ul><h2 id="1-测试方法">1 测试方法</h2><p>在 Hyper-V 中启用增强会话，进入每个 Linux 桌面（其中 Kubuntu 需要额外安装 VM Tools 以开启增强模式），在图形界面调节其 DPI 缩放参数，观察缩放结果。</p><p>具体结果有两个指标：</p><ul><li><p>文字是否放大，</p></li><li><p>窗口、控件是否随文字放大而放大。</p></li></ul><h2 id="2-测试结果与讨论">2 测试结果与讨论</h2><h3 id="2-1-LXDE">2.1 LXDE</h3><p><strong>我在 LXDE 中没找到修改 DPI 缩放的选项</strong>。LXDE 历史比较悠久了，可能还没来得及加入 HiDPI 的支持就停止了更新。</p><h3 id="2-2-Xfce4">2.2 Xfce4</h3><p>Xfce4 要调节 DPI 缩放，需要找到“设置编辑器”→xsettings，在 Xft 下面新建一个名为 DPI 的项，修改它的数值。</p><p>如果在“设置”里找不到“设置编辑器”，可以在终端里执行 <code>xfce4-settings-editor</code>。</p><p>注意：这是 DPI 的数值，不是缩放倍数。建议设置为 96 的倍数，96 是 100% 缩放，144 是 150% 缩放，192 是 200% 缩放，以此类推</p><p><img src="https://img.kukmoon.com/2025-06-28-13-43-08.png" alt=""></p><p>这样修改，只能放大文字，不能同步放大窗口和控件。</p><p><img src="https://img.kukmoon.com/2025-06-28-13-44-16.png" alt="1920x1080 100% 缩放"></p><p><img src="https://img.kukmoon.com/2025-06-28-13-44-47.png" alt="1920x1080 150% 缩放"></p><p><strong>彩蛋</strong>：Xfce4 在 WSL2 中缩放表现良好。通过 X11 转发来显示桌面，一点也不比 Hyper-V 的增强会话差。</p><p><img src="https://img.kukmoon.com/2025-06-28-13-50-02.png" alt=""></p><h3 id="2-3-KDE">2.3 KDE</h3><p>在 Kubuntu 22.04 中，KDE 的表现堪称完美。它像 Windows 一样，不但支持分数缩放，而且放大比例可以轻松调整，甚至文字与窗体、控件是同步放大的。</p><p><img src="https://img.kukmoon.com/2025-06-28-13-52-25.png" alt="1920x1080 100% 缩放"></p><p><img src="https://img.kukmoon.com/2025-06-28-13-53-23.png" alt="1920x1080 150% 缩放"></p><h3 id="2-4-GNOME">2.4 GNOME</h3><p>GNOME 的表现并不令人满意。尽管它支持分数比例缩放，但是在 Hyper-V 的增强会话环境中，经常出 bug。有时跳到了 100% 缩放，有时一下子跳到了 200%。</p><p>不过，至少有两个好消息，一是它的文字也是与窗体、控件同步放大的，二是它在非增强会话环境中，DPI 缩放没有 Bug。</p><p><img src="https://img.kukmoon.com/2025-06-28-13-59-02.png" alt="支持分数比例缩放"></p><p><img src="https://img.kukmoon.com/2025-06-28-14-03-32.png" alt="1920x1080 100% 缩放 非增强会话"></p><p><img src="https://img.kukmoon.com/2025-06-28-14-03-57.png" alt="1920x1080 150% 缩放 非增强会话"></p><p>我为了解决这个问题，安装了 Gnome Tweaks。找到“字体”→“缩放比例”，修改这个缩放比例，也可以起到 DPI 缩放的作用。注意：使用 Gnome Tweaks 只能缩放字体，不能缩放窗体、控件。</p><p><img src="https://img.kukmoon.com/2025-06-28-14-18-59.png" alt="1920x1080 100% 缩放 增强会话"></p><p><img src="https://img.kukmoon.com/2025-06-28-14-19-54.png" alt="1920x1080 150% 缩放 增强会话"></p><h2 id="3-总结">3 总结</h2><p>对于 DPI 缩放来说，KDE 表现完美，Xfce4 可以接受，Gnome 令人不满，LXDE 无此功能。</p><h2 id="4-图片版权">4 图片版权</h2><p>题图：由 <a href="https://raphael.app/zh">raphael.app</a> 生成</p><p>头图：<a href="https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/">https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/</a></p>]]></content>
    
    
    <summary type="html">在 Hyper-V 增强会话中测试了 KDE、GNOME、Xfce4、LXDE 四种 Linux 桌面的 DPI 缩放</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Linux" scheme="https://blog.kukmoon.com/tags/Linux/"/>
    
    <category term="虚拟机" scheme="https://blog.kukmoon.com/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/"/>
    
    <category term="Hyper-V" scheme="https://blog.kukmoon.com/tags/Hyper-V/"/>
    
  </entry>
  
  <entry>
    <title>Mac 最佳桌面搭档：24 寸 4K 显示器选购指南（618 更新）</title>
    <link href="https://blog.kukmoon.com/0b45e2cba004/"/>
    <id>https://blog.kukmoon.com/0b45e2cba004/</id>
    <published>2025-06-09T09:52:53.000Z</published>
    <updated>2025-06-09T09:52:53.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-06-09-18-28-30.jpg" alt="Mac 最佳桌面搭档：24 寸 4K 显示器选购指南（618 更新）"></p><div class="note note-primary">            <p>本文首发知乎：<a href="https://zhuanlan.zhihu.com/p/1915163550537736351">https://zhuanlan.zhihu.com/p/1915163550537736351</a> 和 <a href="https://www.zhihu.com/question/494039376/answer/1915167669910504638">https://www.zhihu.com/question/494039376/answer/1915167669910504638</a></p>          </div><p>对于 Mac 用户来说，选择一款理想的外接显示器常常是个令人头疼的问题。</p><p>尺寸或分辨率过小，多任务处理受限；尺寸过大，不但占用过多桌面空间，还可能因为像素密度较低而出现文字模糊、图像锯齿（大果粒屏）等问题。</p><p>如何在保证工作效率和视觉体验的同时，又不至于牺牲桌面空间？</p><p>我们坚信，24 寸（我们把 23.6 寸、23.8 寸、24 寸统称为 24 寸） 4K 显示器是 Mac 用户的理想解决方案，它在尺寸、分辨率、像素密度和桌面空间占用之间找到了完美的平衡点，为 Mac 提供了卓越的视觉享受和高效的工作空间。</p><h2 id="一、为什么-24-寸-4K-显示器更适合Mac？">一、为什么 24 寸 4K 显示器更适合Mac？</h2><p>1️⃣24 寸 4K 显示器的像素密度最高，最接近 Mac 内屏的 Retina 体验。</p><p>像素密度决定了显示器的视觉体验，像素密度越高，显示文字越精美、细腻。Mac 用户都见识过 iPhone 和 MacBook Pro/Air 的 Retina 屏幕，几乎完全看不出像素点的存在，显示的文字像打印出来的一样清晰。</p><p>13寸Retina Macbook Pro的屏幕像素密度是 227。在桌面级显示器（排除逆天的LG UltraFine系列）中，24 寸 4K 的像素密度最接近苹果 Retina 屏幕的水平。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-04-47.jpg" alt=""></p><p>2️⃣24 寸 4K 显示器的尺寸最小，减少桌面空间的占用。</p><p>以 23.8 寸为例，其显示区域的长宽是 52.7x29.6 cm，再加上现在流行的三边窄边框，使得它的长度一般不会超过 55cm，非常适合狭小的工位办公桌。</p><p>总结：24寸4K显示器，在文字的精美细腻程度和显示器的尺寸之间，取得了完美的均衡，从而成为苹果用户购置外接显示器的最佳选择。</p><h2 id="二、24-寸-4K-显示器选购指南">二、24 寸 4K 显示器选购指南</h2><p>这是我测评了多款显示器总结出来的选购要点。大家在为自己的 Mac 选购 24 寸 4K 显示器时，可以着重关注这几点。</p><h3 id="1️⃣面板">1️⃣面板</h3><p><strong>面板</strong>相当于显示器的门面，<strong>从基础上决定了显示器的响应时间、色彩、可视角度、对比度等一系列的显示性能，所以面板的选择相当重要</strong>。常见的显示器面板类型有 TN、VA、IPS 三种，且都属于 LCD 面板的范畴。<strong>本文涉及的所有显示器都是 IPS 面板</strong>。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-12-16.webp" alt=""></p><h3 id="2️⃣刷新率与响应时间">2️⃣刷新率与响应时间</h3><p><strong>刷新率指的是屏幕每秒画面被刷新的次数</strong>。假设用显示器播放相册里的图片，如果显示器刷新率为 60Hz，那么显示器每秒钟最多播放 60 张图片，而 120Hz 显示器每秒可播放 120 张图片。刷新率越高，那么画面的稳定性就越好，移动鼠标、浏览网页就会越顺畅。<strong>本文涉及的所有显示器的刷新率都是 60Hz</strong>。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-12-36.webp" alt=""></p><p><strong>响应时间指的是“灰阶响应时间”，意思是主机给显示器输入信号后，显示屏幕像素点从某一状态经过明暗、色彩变化切换到另一状态的时间</strong>。响应时间越快越好，响应时间慢的面板，看 B 站的弹幕会拖尾，在游戏（虽然 Mac 用户几乎不会用它玩游戏）中会出现模糊拖影，画面不跟手的感觉。</p><h3 id="3️⃣亮度、对比度与-HDR-技术">3️⃣亮度、对比度与 HDR 技术</h3><p><strong>亮度是衡量显示器屏幕发光强度的重要指标</strong>，亮度越高越好。衡量亮度的参数叫尼特（nit），至少 350 nit 的显示器才适合搭配 Mac 使用。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-12-51.webp" alt=""></p><p><strong>对比度是显示屏上最亮的白色和最暗的黑色之间的亮度比值</strong>，对比度越大，画面的明暗细节和层次感就会越分明，色彩也会更艳丽一些。注意<strong>静态对比度</strong>才有意义。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-13-06.webp" alt=""></p><p><strong>HDR指的是高动态光照渲染（High-Dynamic Range）</strong>，它可以丰富画面的细节，把原先暗的画面调亮，更接近人眼的视觉效果。但是，macOS 存在 Bug，对外接显示器的 HDR 支持不好，所以 HDR 是个可有可无的选项。</p><h3 id="4️⃣色域、色深、色准">4️⃣色域、色深、色准</h3><p><strong>色域指的是显示器所能显示的颜色范围</strong>，理解色域时，我们通常会提到<strong>色彩空间</strong>和<strong>色域覆盖率</strong>。色彩空间主要有 sRGB，AdobeRGB 和 DCI-P3 这几种标准。色域覆盖率是指显示器能够覆盖某一色彩空间的百分比，例如某款显示器可以覆盖 100% sRGB，色域覆盖率越高，代表显示器显示的颜色越多。</p><p>注意有些显示器会用<strong>色域容积</strong>代替色域覆盖率，色域容积强调这台显示器显示的颜色是标准色彩空间的多少倍，但不一定恰好覆盖色彩空间，即颜色有可能偏离标准的色彩空间。</p><p><strong>Mac 的默认色域是 DCI-P3，所以为 Mac 选购的外接显示器，必须支持 DCI-P3，而且色域覆盖率不低于 92%</strong> 。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-13-21.webp" alt=""></p><p><strong>色准指的是色彩的准确度</strong>，以 ΔE 表示，数值越小，色彩的准确度就越高。一般来说 ΔE≤2 的显示器最佳。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-13-33.webp" alt=""></p><p><strong>色深的全称是色位深度，反映色彩过渡是否流畅细腻</strong>，市场主流的显示器色深是 8 bit 和 8 抖 10（原生色深为 8 bit，通过 FRC 抖动技术产生 10 bit 的色深）。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-13-50.webp" alt=""></p><h3 id="5️⃣接口">5️⃣接口</h3><p>为了与 Mac mini、MacBook Pro 的 HDMI 接口匹配，并且实现 4K@60Hz 的输出，显示器必须具有 HDMI 2.1 接口。</p><p>为了与 Mac 的雷电接口匹配，显示器最好具有 Type-C 一线通接口，至少支持 4K@60Hz 输出，支持反向充电最佳。其中 65W 适合搭配 MacBook Air，96W 适合搭配 MacBook Pro。</p><p><img src="https://img.kukmoon.com/2025-06-09-18-14-11.webp" alt=""></p><p>假如用户除了 Mac 以外还有一台 PC 需要连接这台显示器，那么显示器应该具有 KVM 功能，这样可以通过一套键鼠控制两台电脑（Mac 与 PC）。</p><h3 id="6️⃣操控与Mac-模式">6️⃣操控与Mac 模式</h3><p>五维摇杆比按键要方便，但是多数显示器都只配备了按键。</p><p>如果显示器的模式设置中有 Mac 模式，避免了手动修改色域以及其他参数的麻烦，那么将是一个加分项。</p><h2 id="三、热门-24-寸-4K-显示器推荐">三、热门 24 寸 4K 显示器推荐</h2><h3 id="1️⃣优派-VG2481-4K">1️⃣优派 VG2481-4K</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-14-27.webp" alt=""></p><p>主要参数：400 nit 亮度，HDR400，8 抖 10，100% DCI-P3覆盖率，ΔE&lt;1，Type-C 一线通，96W 反向充电，升降旋转支架。</p><p>主要优点：深度适配 Mac，搭载 SuperColor 色彩技术，支持 DC 调光和低蓝光，内置扬声器。</p><p>推荐指数：★★★★★</p><h3 id="2️⃣AOC-U24P10R">2️⃣AOC U24P10R</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-14-41.webp" alt=""></p><p>主要参数：400 nit 亮度，1300:1 静态对比度，4 ms GTG 响应时间，HDR400，8 抖 10，95% DCI-P3 覆盖率，ΔE&lt;1，Type-C 一线通，90W 反向充电，升降旋转支架。</p><p>主要优点：搭载 Clear Vision 图像处理引擎，可以让低分辨率的图像或文字显示得锐利清晰，1mm 微边框设计。</p><p>推荐指数：★★★★☆</p><h3 id="3️⃣优派-VA2462-4K-HD">3️⃣优派 VA2462-4K-HD</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-14-59.webp" alt=""></p><p>主要参数：280 nit 亮度，1300:1 静态对比度，HDR10，8 抖 10，95% DCI-P3 覆盖率。</p><p>主要优点：深度适配 Mac，搭载 SuperColor 色彩技术，支持硬件低蓝光，价格低廉。</p><p>推荐指数：★★★★</p><h3 id="4️⃣未来视野-RV100mini">4️⃣未来视野 RV100mini</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-15-27.webp" alt=""></p><p>主要参数：400 nit 亮度，1300:1 静态对比度，HDR10，8 抖 10，98% DCI-P3 覆盖率，ΔE≤1.5，Type-C 一线通，65W 反向充电，旋转升降支架。</p><p>主要优点：仿苹果风格设计，与 Mac 更搭配，搭载五维摇杆，OSD 菜单为苹果风格，更适合 Mac 用户，通过 TUV 低蓝光认证.</p><p>推荐指数：★★★★</p><h3 id="5️⃣iPiaoe-W2466T">5️⃣iPiaoe W2466T</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-15-43.webp" alt=""></p><p>它又分成三款 SKU，分别是Std 版、Pro 版、Max 版。</p><p>主要参数：350 nit/350 nit/540 nit 亮度（Std/Pro/Max），1000:1 对比度，HDR400/HDR400/HDR600（Std/Pro/Max）,99%/94%/98% DCI-P3 覆盖率（Std/Pro/Max），ΔE≤2，Type-C 一线通，65W 反向充电，升降旋转支架。</p><p>主要优点：深度适配 Mac，Max 版的面板是 LG 面板。</p><p>推荐指数：★★★☆</p><h3 id="6️⃣宏碁-MG240YK-biipx">6️⃣宏碁 MG240YK biipx</h3><p><img src="https://img.kukmoon.com/2025-06-09-18-16-21.webp" alt=""></p><p>主要参数：250 nit 亮度，1000:1 静态对比度，5 ms GTG 响应时间，HDR10，8 抖 10，72% NTSC 覆盖率。</p><p>主要优点：价格低廉。</p><p>推荐指数：★★</p><h2 id="四、总结">四、总结</h2><p>总而言之，大家在选购 24 寸 4K 显示器时，可以根据自己的实际需求和预算，选择最适合自己的那一款。</p><p><strong>如果追求与 Mac 的适配性</strong>，可以选择优派 VG2481-4K，它各项参数比较高，也是最适配 Mac 的一款，其次是AOC U24P10R。</p><p><strong>如果追求性价比</strong>，可以选择优派 VA2462-4K-HD和宏碁 MG240YK biipx，它们价格低廉，适合预算不多的用户。</p><p>未来视野 RV100mini 和 iPiaoe W2466T 并非来自大厂，但是它们也为了适配 Mac 作出了努力，<strong>适合想尝鲜的用户</strong>。</p><h2 id="五、参考文献">五、参考文献</h2><ol><li><p><a href="https://www.zhihu.com/question/35668312/answer/3313757572">https://www.zhihu.com/question/35668312/answer/3313757572</a></p></li><li><p><a href="https://www.zhihu.com/question/519119173/answer/2458255653">https://www.zhihu.com/question/519119173/answer/2458255653</a></p></li><li><p><a href="https://zhuanlan.zhihu.com/p/31537842383">https://zhuanlan.zhihu.com/p/31537842383</a></p></li><li><p><a href="https://zhuanlan.zhihu.com/p/1913525953675649174">https://zhuanlan.zhihu.com/p/1913525953675649174</a></p></li></ol><p>【完】</p>]]></content>
    
    
    <summary type="html">618 大促到来，向读者推荐一组 24 寸 4K 显示器。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="知乎" scheme="https://blog.kukmoon.com/tags/%E7%9F%A5%E4%B9%8E/"/>
    
    <category term="显示器" scheme="https://blog.kukmoon.com/tags/%E6%98%BE%E7%A4%BA%E5%99%A8/"/>
    
    <category term="Mac" scheme="https://blog.kukmoon.com/tags/Mac/"/>
    
  </entry>
  
  <entry>
    <title>在 Windows VPS 上搭建 RustDesk 服务器</title>
    <link href="https://blog.kukmoon.com/887edaa2be82/"/>
    <id>https://blog.kukmoon.com/887edaa2be82/</id>
    <published>2025-06-06T13:39:11.000Z</published>
    <updated>2025-06-06T13:39:11.000Z</updated>
    
    <content type="html"><![CDATA[<p>RustDesk 是一款用 Rust 语言编写的优秀国产远程控制软件。它有速度快、无广告、免费使用、可以直连等优点。但是，由于最近电诈肆虐，RustDesk 官方关闭了位于中国大陆的服务器。难道我们从此只能望洋兴叹，不得不改用向日葵、ToDesk 等竞品吗？答案是否定的，我们可以自行创建服务器。</p><h2 id="一、RustDesk-服务器的搭建">一、RustDesk 服务器的搭建</h2><p>我们需要一台运行 Windows 或 Linux 的服务器或 VPS 来部署 RustDesk Server（RustDesk 服务端），让它成为 RustDesk 服务器。此处以一台 2C1G 的 VPS 为例，操作系统为 Windows Server 2022 DataCenter Core。它没有图形界面，所以需要命令行操作。</p><ol><li>下载 RustServer for Windows</li></ol><p>从 GitHub 下载，然后解压，此处假设解压到 <code>C:\Users\Kukmoon\Program Files\RustDeskServer</code> 文件夹。共有两个文件：hbbs.exe、hbbr.exe。</p><ol start="2"><li>安装 PM2</li></ol><p>我打算使用 PM2 来启动 RustDesk Server。</p><p>要使用 PM2，需要先下载安装 Node.js，然后重启服务器。重启后，进入命令提示符，也可以用 PowerShell。</p><ol start="3"><li>安装 PM2</li></ol><p>进入 C:\Users\Kukmoon\Program Files\RustDeskServer 文件夹。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd"><span class="hljs-built_in">cd</span> /d &quot;C:\Users\Kukmoon\Program Files\RustDeskServer&quot;<br></code></pre></td></tr></table></figure><p>安装 PM2。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs cmd">npm install pm2 -g<br>npm install pm2-windows-startup -g<br>pm2-startup install<br></code></pre></td></tr></table></figure><ol start="4"><li>用 PM2 运行并管理 RustDeskServer 的两个服务 hbbs 和 hbbr</li></ol><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs cmd">pm2 <span class="hljs-built_in">start</span> hbbs.exe<br>pm2 <span class="hljs-built_in">start</span> hbbr.exe<br></code></pre></td></tr></table></figure><p>保存 PM2 设置。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd">pm2 save<br></code></pre></td></tr></table></figure><ol start="5"><li>查看 RustDesk 服务器的两个文件是否正常在后台运行</li></ol><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd">pm2 list<br></code></pre></td></tr></table></figure><p>绿色的 online 代表正常运行。<br><img src="https://img.kukmoon.com/2025-06-06-21-49-46.png" alt=""></p><ol start="6"><li>打开端口</li></ol><p>在 Windows 防火墙里打开 RustDesk 的端口（ 21115、21116、21117、21118、21119 端口），注意 TCP 协议的 21116 端口和 UDP 协议的 21116 端口都要打开。</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs cmd">netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=tcp localport=<span class="hljs-number">21115</span> action=allow<br>netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=tcp localport=<span class="hljs-number">21116</span> action=allow<br>netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=tcp localport=<span class="hljs-number">21117</span> action=allow<br>netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=tcp localport=<span class="hljs-number">21118</span> action=allow<br>netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=tcp localport=<span class="hljs-number">21119</span> action=allow<br>netsh advfirewall firewall add rule name=&quot;RustDesk&quot; <span class="hljs-built_in">dir</span>=<span class="hljs-keyword">in</span> protocol=udp localport=<span class="hljs-number">21116</span> action=allow<br></code></pre></td></tr></table></figure><ol start="7"><li>查看 RustDesk 的端口（21115、21116、21117、21118、21119）是否开放</li></ol><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd">netstat -anp tcp | <span class="hljs-built_in">findstr</span> &quot;<span class="hljs-number">2111</span>&quot;<br></code></pre></td></tr></table></figure><p><img src="https://img.kukmoon.com/2025-06-06-21-51-24.png" alt=""></p><p>还有，要在 VPS 的管理控制台创建上述五个端口的入站规则（注意 TCP 协议的 21116 端口和 UDP 协议的 21116 端口都要打开）。</p><p>这样，RustDesk 的服务器搭建完成。</p><h2 id="二、RustDesk-Server-的组成与使用">二、RustDesk Server 的组成与使用</h2><p>RustDesk Server 由两个进程组成。一个是 hbbs.exe，它是 ID 服务器，负责为每一个客户端生成 ID。一个是 hbbr.exe，它是中继服务器，负责在两个客户端之间建立连接，能直连就直连，不能直连就通过服务器中转。</p><p>RustDesk 客户端连接自建服务器时，每个客户端需要输入自建服务器的域名（或 IP 地址）和公钥（Key）。<br><img src="https://img.kukmoon.com/2025-06-05-21-04-18.png" alt=""></p><p>首次运行 RustDesk Server for Windows 成功后，它会在 hbbs.exe 和 hbbr.exe 所在的文件夹下生成一对公私钥文件，其中 <code>id_25519.pub</code> 是公钥文件。</p><p>如果公钥或者私钥有一个缺失，那么在每次 RustDesk Server 运行时，就会生成一对新的公私钥。RustDesk 服务器管理员需要将公钥分发给客户端用户。</p><p>RustDesk 服务器管理员可以临时停止 RustDesk Server，以免持有公钥的用户未经许可使用 RustDesk 服务，消耗服务器的流量。临时停止 RustDesk Server 的方法：</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd">pm2 stop hbbs hbbr<br></code></pre></td></tr></table></figure><p>如果要重新启用 RustDesk Server，就执行以下命令：</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd">pm2 <span class="hljs-built_in">start</span> hbbs hbbr<br></code></pre></td></tr></table></figure><h2 id="小结">小结</h2><p>我们在一台运行 Windows Server 的 VPS 上部署了 RustDesk 服务端，而且了解了 RustDesk Server 的构成、公钥及其用途，学到了停止和开启 RustDesk Server 的方法。</p><h2 id="相关阅读">相关阅读</h2><p><a href="https://blog.kukmoon.com/486783c022b7/">《在 Linux VPS 上搭建 RustDesk 服务器》</a></p><h2 id="图片版权">图片版权</h2><p>题图：RustDesk LOGO 的各项权利均归其开发者所有。</p><p>头图：<a href="https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/">https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/</a></p>]]></content>
    
    
    <summary type="html">在一台运行 Windows Server 的 VPS 上部署 RustDesk Server，自建服务器。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="远程桌面" scheme="https://blog.kukmoon.com/tags/%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2/"/>
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="Windows" scheme="https://blog.kukmoon.com/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>在 Linux VPS 上搭建 RustDesk 服务器</title>
    <link href="https://blog.kukmoon.com/486783c022b7/"/>
    <id>https://blog.kukmoon.com/486783c022b7/</id>
    <published>2025-06-05T12:49:07.000Z</published>
    <updated>2025-06-05T12:49:07.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-06-05-21-29-14.png" alt="在 Linux VPS 上创建 RustDesk 服务器"></p><p>RustDesk 是一款用 Rust 语言编写的优秀国产远程控制软件。它有速度快、无广告、免费使用、可以直连等优点。但是，由于最近电诈肆虐，RustDesk 官方关闭了位于中国大陆的服务器。难道我们从此只能望洋兴叹，不得不改用向日葵、ToDesk 等竞品吗？答案是否定的，我们可以自行创建服务器。</p><h2 id="一、RustDesk-服务器的搭建">一、RustDesk 服务器的搭建</h2><p>我们需要一台运行 Windows 或 Linux 的服务器或 VPS 来部署 RustDesk Server，让它成为 RustDesk 服务器。此处以一台 2C1G 的 VPS 为例，操作系统为 Ubuntu 22.04 LTS。</p><p>RustDesk 官网文档的坑很多，比方说，官网给的 <code>docker-compose.yml</code> 就有问题。本文给出了笔者修改过的 <code>docker-compose.yml</code> 文件，经实测可以使用。</p><ol><li>自行建立 <code>docker-compose.yml</code> 文件。</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">mkdir</span> ~/rustdeskserver<br><span class="hljs-built_in">cd</span> ~/rustdeskserver<br>nano ./docker-compose.yml<br><br></code></pre></td></tr></table></figure><ol start="2"><li>将以下内容粘贴到上述 <code>docker-compose.yml</code> 文件中：</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">&#x27;3&#x27;</span><br><br><span class="hljs-attr">networks:</span><br>  <span class="hljs-attr">rustdesk-net:</span><br>    <span class="hljs-attr">external:</span> <span class="hljs-literal">false</span><br><br><span class="hljs-attr">services:</span><br>  <span class="hljs-attr">hbbs:</span> <span class="hljs-comment"># RustDesk ID/Rendezvous 服务器</span><br>    <span class="hljs-attr">container_name:</span> <span class="hljs-string">hbbs</span><br>    <span class="hljs-attr">ports:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21115</span><span class="hljs-string">:21115</span>           <span class="hljs-comment"># 用于 NAT 类型测试的 TCP</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21116</span><span class="hljs-string">:21116</span>           <span class="hljs-comment"># TCP打孔</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21116</span><span class="hljs-string">:21116/udp</span>       <span class="hljs-comment"># UDP心跳/ID服务器</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21118</span><span class="hljs-string">:21118</span>           <span class="hljs-comment"># 如果要运行web客户端，则使用TCP进行web套接字</span><br>    <span class="hljs-attr">image:</span> <span class="hljs-string">rustdesk/rustdesk-server:latest</span><br>    <span class="hljs-attr">command:</span> <span class="hljs-string">hbbs</span><br>    <span class="hljs-attr">volumes:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">/data/rustdesk/hbbs:/root</span><br>    <span class="hljs-attr">environment:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">&quot;RELAY=x.x.x.x:21117&quot;</span>   <span class="hljs-comment"># 运行这些容器的服务器的【IP:port】或域名</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">&quot;ENCRYPTED_ONLY=1&quot;</span>      <span class="hljs-comment"># 开启加密</span><br>      <span class="hljs-comment"># - &quot;KEY=xxxxxx&quot;            # 自定义KEY，去掉这一行可以自动生成</span><br>    <span class="hljs-attr">networks:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">rustdesk-net</span><br>    <span class="hljs-attr">depends_on:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">hbbr</span><br>    <span class="hljs-attr">restart:</span> <span class="hljs-string">unless-stopped</span><br><br>  <span class="hljs-attr">hbbr:</span> <span class="hljs-comment"># RustDesk 中继服务器</span><br>    <span class="hljs-attr">container_name:</span> <span class="hljs-string">hbbr</span><br>    <span class="hljs-attr">ports:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21117</span><span class="hljs-string">:21117</span>           <span class="hljs-comment"># TCP中继</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-number">21119</span><span class="hljs-string">:21119</span>           <span class="hljs-comment"># 如果要运行web客户端，则使用TCP进行web套接字</span><br>    <span class="hljs-attr">image:</span> <span class="hljs-string">rustdesk/rustdesk-server:latest</span><br>    <span class="hljs-attr">command:</span> <span class="hljs-string">hbbr</span><br>    <span class="hljs-attr">volumes:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">/data/rustdesk/hbbr:/root</span><br>    <span class="hljs-attr">networks:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">rustdesk-net</span><br>    <span class="hljs-attr">restart:</span> <span class="hljs-string">unless-stopped</span><br></code></pre></td></tr></table></figure><ol start="3"><li>下载 RustDesk Server 镜像并启动 docker 容器。</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">docker compose up -d<br></code></pre></td></tr></table></figure><p><img src="https://img.kukmoon.com/2025-06-05-20-59-50.png" alt=""></p><p>还有，要在 VPS 的管理控制台创建上述五个端口的入站规则（注意 TCP 协议的 21116 端口和 UDP 协议的 21116 端口都要打开）。</p><p>这样，RustDesk 服务器搭建完成。</p><h2 id="二、RustDesk-Server-的组成与使用">二、RustDesk Server 的组成与使用</h2><p>RustDesk Server 由两个进程组成。一个是 hbbs，它是 ID 服务器，负责为每一个客户端生成 ID。一个是 hbbr，它是中继服务器，负责在两个客户端之间建立连接，能直连就直连，不能直连就通过服务器中转。</p><p>RustDesk 客户端连接自建服务器时，每个客户端需要输入自建服务器的域名（或 IP 地址）和公钥（Key）。<br><img src="https://img.kukmoon.com/2025-06-05-21-04-18.png" alt=""></p><p>在 RustDesk Server for Linux 上，公钥储存在 <code>/data/rustdesk/hbbs/id_ed25519.pub</code> 文件中。</p><p>如果公钥或者私钥有一个缺失，那么在每次 RustDesk Server 运行时，就会生成一对新的公私钥。RustDesk 服务器管理员需要将公钥分发给客户端用户。</p><p>RustDesk 服务器管理员可以临时停止 RustDesk Server，以免持有公钥的用户未经许可使用 RustDesk Server，消耗服务器的流量。临时停止 RustDesk Server的方法：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cd</span> ~/rustdeskserver<br>docker compose down<br></code></pre></td></tr></table></figure><p>如果要重新启用 RustDesk 服务，就执行以下命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cd</span> ~/rustdeskserver<br>docker compose up -d<br></code></pre></td></tr></table></figure><h2 id="小结">小结</h2><p>我们在一台运行 Linux 的 VPS 上部署了 RustDesk 服务端，而且了解了 RustDesk Server 的构成、公钥及其用途，学到了停止和开启 RustDesk Server 的方法。</p><h2 id="相关阅读">相关阅读</h2><p><a href="https://blog.kukmoon.com/887edaa2be82/">《在 Windows VPS 上搭建 RustDesk 服务器》</a></p><h2 id="图片版权">图片版权</h2><p>题图：RustDesk LOGO 的各项权利均归其开发者所有。</p><p>头图：<a href="https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/">https://pixabay.com/zh/photos/milky-way-sky-stars-cosmos-night-4526277/</a></p>]]></content>
    
    
    <summary type="html">在一台运行 Linux 的 VPS 上部署 RustDesk Server，自建服务器。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Linux" scheme="https://blog.kukmoon.com/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="https://blog.kukmoon.com/tags/Ubuntu/"/>
    
    <category term="远程桌面" scheme="https://blog.kukmoon.com/tags/%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2/"/>
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
  </entry>
  
  <entry>
    <title>MOS 365 考试大纲与课程目录</title>
    <link href="https://blog.kukmoon.com/c78fab8ef4b8/"/>
    <id>https://blog.kukmoon.com/c78fab8ef4b8/</id>
    <published>2025-04-27T08:01:38.000Z</published>
    <updated>2025-04-27T08:01:38.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-04-25-12-56-18.jpg" alt="MOS 365 考试大纲与课程目录"></p><h2 id="1-Word-365-Associate（助理级）考试大纲与课程目录">1 Word 365 Associate（助理级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2igt71NXqgzMV7dqllyq125dBVb">https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2igt71NXqgzMV7dqllyq125dBVb</a></p><h3 id="单元-1-管理文档（20-25-）">单元 1 管理文档（20-25%）</h3><ul><li>插入和修改页眉和页脚</li><li>定位到特定的位置或对象</li><li>检查和删除隐藏属性和个人信息</li><li>将文档保存为模板</li><li>设置文档页面布局</li><li>检查并修正可访问性问题</li><li>设置页面背景元素</li><li>以不同格式保存文档</li><li>应用样式集</li><li>修改基本文档属性</li></ul><h3 id="单元-2-插入和格式化文本、段落和节（20-25-）">单元 2 插入和格式化文本、段落和节（20-25%）</h3><ul><li>插入分页符，分节符和分栏符</li><li>插入符号和特殊字符</li><li>查找和替换多处文本</li><li>查找和替换文本</li><li>清除格式</li><li>设置行和段落间距及缩进</li><li>通过使用格式刷复制格式</li><li>为文本设置分栏效果</li><li>为文本添加内置样式</li><li>修改节的页面布局</li><li>应用文字效果</li></ul><h3 id="单元-3-管理表格和列表（20-25-）">单元 3 管理表格和列表（20-25%）</h3><ul><li>创建编号列表和项目符号列表</li><li>创建特定行数和列数的表格</li><li>调整表格大小、行高和列宽</li><li>定义个性化项目符号和编号格式</li><li>合并和拆分单元格</li><li>将文本转换为表格</li><li>排序表格数据</li><li>设置表格标题行重复显示</li><li>设置单元格边距和间距</li><li>设置列表编号起始值</li><li>修改列表级别</li><li>重新开始或者继续列表编号</li></ul><h3 id="单元-4-创建和管理引用（5-10-）">单元 4 创建和管理引用（5-10%）</h3><ul><li>插入参考文献</li><li>插入脚注和尾注</li><li>插入目录</li><li>修改脚注和尾注属性</li><li>自定义目录</li></ul><h3 id="单元-5-插入和格式化图形元素（15-20-）">单元 5 插入和格式化图形元素（15-20%）</h3><ul><li>插入3D模型</li><li>插入图片</li><li>插入形状</li><li>格式化SmartArt图形</li><li>设置文本环绕方式</li><li>为对象添加替换文字以增强可访问性</li><li>修改SmartArt图形的方向</li><li>应用图片效果和图片样式</li><li>应用艺术效果</li><li>在文本框中添加和修改文本</li></ul><h3 id="单元-6-管理文档协作（5-10-）">单元 6 管理文档协作（5-10%）</h3><ul><li>接受和拒绝修订内容</li><li>解决批注</li><li>删除批注</li></ul><h2 id="2-Excel-365-Associate-（助理级）考试大纲与课程目录">2 Excel 365 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2cUjVuk3LJvmgo5TH1S8xWeySMU">https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2cUjVuk3LJvmgo5TH1S8xWeySMU</a></p><h3 id="单元-1-管理工作表和工作簿（25-30-）">单元 1 管理工作表和工作簿（25-30%）</h3><ul><li>导入外部数据</li><li>冻结窗格</li><li>修改纸张方向</li><li>打印标题</li><li>插入页码</li><li>添加文档属性</li><li>检查辅助功能</li></ul><h3 id="单元-2-管理单元格和数据区域（25-30-）">单元 2 管理单元格和数据区域（25-30%）</h3><ul><li>删除行</li><li>设置文本对齐方式</li><li>定位数据</li><li>取消合并单元格</li><li>设置字体格式</li><li>应用会计专用格式</li><li>创建条件格式</li></ul><h3 id="单元-3-在智能表中管理数据（10-15-）">单元 3 在智能表中管理数据（10-15%）</h3><ul><li>排序数据</li><li>调整表格大小</li><li>修改表格样式</li></ul><h3 id="单元-4-使用公式和函数处理数据-15-20">单元 4 使用公式和函数处理数据 (15-20%)</h3><ul><li>公式的绝对引用</li><li>在公式中使用名称</li><li>SUM函数</li><li>MAX函数</li><li>COUNTA函数</li><li>RIGHT函数</li><li>CONCAT函数</li><li>SEQUENCE函数</li><li>UNIQUE函数</li><li>显示公式</li></ul><h3 id="单元-5-创建图表（15-20-）">单元 5 创建图表（15-20%）</h3><ul><li>创建饼图</li><li>应用图表布局</li><li>添加图表标签</li><li>添加坐标轴标题</li><li>修改图表数据源</li><li>插入迷你图</li><li>添加可选文字</li></ul><h2 id="3-PowerPoint-365-Associate-（助理级）考试大纲与课程目录">3 PowerPoint 365 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2kgNsiyEcfYQlsshMUP7010Qybc">https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2kgNsiyEcfYQlsshMUP7010Qybc</a></p><h3 id="单元-1-管理演示文稿（20-25-）">单元 1 管理演示文稿（20-25%）</h3><ul><li>创建幻灯片版式</li><li>打印全部或部分演示文稿</li><li>检查演示文稿</li><li>设置幻灯片放映选项</li><li>设置基本文件属性</li><li>修改讲义母版</li><li>创建幻灯片板式</li><li>修改幻灯片版式</li></ul><h3 id="单元-2-管理幻灯片（10-15-）">单元 2 管理幻灯片（10-15%）</h3><ul><li>插入幻灯片页眉，页脚和页码</li><li>插入摘要缩放幻灯片</li><li>创建节</li><li>修改单个幻灯片背景</li><li>插入其他演示文稿中的幻灯片</li><li>导入Word文档大纲</li><li>隐藏和取消隐藏幻灯片</li></ul><h3 id="单元-3-插入并格式化文字、形状和图像（25-30-）">单元 3 插入并格式化文字、形状和图像（25-30%）</h3><ul><li>插入超链接</li><li>插入节缩放链接和幻灯片缩放链接</li><li>调整图片大小及裁剪</li><li>调整形状和文本框的大小</li><li>对齐形状，图像和文本框</li><li>分组形状和图像</li><li>设置形状和文本框的格式</li><li>在图形元素中添加替代文本以实现辅助功能</li><li>插入节缩放定位</li><li>将内置样式和效果应用于图片</li><li>排序形状，图像和文本框</li><li>为文本分栏</li></ul><h3 id="单元-4-插入表格、图表、SmartArt、3D-模型和媒体（15-20-）">单元 4 插入表格、图表、SmartArt、3D 模型和媒体（15-20%）</h3><ul><li>插入3D模型</li><li>插入SmartArt图形</li><li>插入音频和</li><li>创建并插入图表</li><li>设置媒体播放选项</li><li>修改3D模型</li><li>修改图表的数据表</li><li>插入和删除表的行和列</li><li>将列表转换为SmartArt图形</li><li>修改图表类型</li></ul><h3 id="单元-5-应用切换和动画（10-15-）">单元 5 应用切换和动画（10-15%）</h3><ul><li>设置动画效果</li><li>设置切换持续时间</li><li>设置切换效果</li><li>设置文本和图形元素的动画</li><li>应用基本的和3D幻灯片切换</li></ul><h2 id="4-Outlook-365-Associate-（助理级）考试大纲与课程目录">4 Outlook 365 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：（正在开发中…）</p><h2 id="5-Word-365-Expert（专家级）考试大纲与课程目录">5 Word 365 Expert（专家级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2lQbzllEgKWfnvZcRn8HrAbmkdc">https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2lQbzllEgKWfnvZcRn8HrAbmkdc</a></p><h3 id="单元-1-管理文档选项和设置（20-25-）">单元 1 管理文档选项和设置（20-25%）</h3><ul><li>保护文档格式</li><li>比较并合并多个文档</li><li>使用密码保护文档</li><li>使用特定语言的功能</li><li>限制内容编辑</li><li>修改模板的默认字体</li><li>在文档中启用宏</li></ul><h3 id="单元-2-使用高级编辑和格式化功能（20-25-）">单元 2 使用高级编辑和格式化功能（20-25%）</h3><ul><li>创建字符样式</li><li>将样式复制到其他文档或模板</li><li>设置连字符和行号</li><li>修改样式</li><li>查找和替换不间断空格</li><li>查找和替换格式和样式</li><li>查找和替换手动换行符</li><li>设置高级段落格式</li><li>设置高级文本格式</li></ul><h3 id="单元-3-创建自定义文档元素（20-25-）">单元 3 创建自定义文档元素（20-25%）</h3><ul><li>标记索引项</li><li>插入和修改图表目录</li><li>插入图形和表格题注</li><li>创建文档部件</li><li>创建自定义颜色集</li><li>创建自定义样式集</li><li>创建自定义主题</li><li>创建自定义字体集</li><li>更新索引</li><li>管理构建基块</li></ul><h3 id="单元-4-使用高级-Word-功能（25-30-）">单元 4 使用高级 Word 功能（25-30%）</h3><ul><li>编辑简单的宏</li><li>插入标准内容控件</li><li>创建简单的宏</li><li>管理收件人列表</li><li>将宏复制到其他文档或模板</li><li>命名简单宏</li><li>使用现有的列表</li><li>添加自定义域</li><li>修改域属性</li></ul><h2 id="6-Excel-365-Expert（专家级）考试大纲与课程目录">6 Excel 365 Expert（专家级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2cMLb54mNaZ51jGUU1pq2hk3Y59">https://app63ffgjzw2220.xet.citv.cn/p/course/ecourse/course_2cMLb54mNaZ51jGUU1pq2hk3Y59</a></p><h3 id="单元-1-管理工作簿选项和设置（10-15-）">单元 1 管理工作簿选项和设置（10-15%）</h3><ul><li>保护工作表</li><li>保护工作簿</li><li>设置自动保存</li></ul><h3 id="单元-2-管理和格式化数据（30-35-）">单元 2 管理和格式化数据（30-35%）</h3><ul><li>填充数据</li><li>删除重复数据</li><li>设置自定义数值格式</li><li>设置自定义条件格式</li><li>修改条件格式规则</li><li>在条件格式中使用公式</li><li>分组数据</li></ul><h3 id="单元-3-创建高级公式和宏（25-30-）">单元 3 创建高级公式和宏（25-30%）</h3><ul><li>计算条件最大值</li><li>使用RANDARRAY函数生成数据</li><li>修正公式</li><li>条件求和</li><li>单变量求解</li><li>编辑宏</li><li>VLOOKUP函数</li><li>XLOOKUP函数</li><li>FILTER函数</li><li>使用函数进行排序</li></ul><h3 id="单元-4-管理高级图表和表格（25-30-）">单元 4 管理高级图表和表格（25-30%）</h3><ul><li>创建直方图</li><li>创建组合图表</li><li>创建数据透视表</li><li>在数据透视表项目下方插入空行</li><li>分组数据透视表的字段</li><li>设置数据透视图字段按钮</li><li>在数据透视表中使用切片器</li></ul><h2 id="图片版权">图片版权</h2><p>题图：<a href="https://pixabay.com/photos/to-study-to-learn-study-read-2208047/">https://pixabay.com/photos/to-study-to-learn-study-read-2208047/</a></p><p>头图：<a href="https://isorepublic.com/photo/northern-lights-sky/">https://isorepublic.com/photo/northern-lights-sky/</a></p>]]></content>
    
    
    <summary type="html">MOS 365 各科的考试大纲、课程目录、课程观看网址。</summary>
    
    
    
    <category term="考试" scheme="https://blog.kukmoon.com/categories/%E8%80%83%E8%AF%95/"/>
    
    
    <category term="学习" scheme="https://blog.kukmoon.com/tags/%E5%AD%A6%E4%B9%A0/"/>
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>MOS 2019 考试大纲与课程目录</title>
    <link href="https://blog.kukmoon.com/a8c6ad064e24/"/>
    <id>https://blog.kukmoon.com/a8c6ad064e24/</id>
    <published>2025-04-26T04:57:42.000Z</published>
    <updated>2025-04-26T04:57:42.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-04-25-12-56-18.jpg" alt="MOS 2019 考试大纲与课程目录"></p><h2 id="1-Word-2019-Associate（助理级）考试大纲与课程目录">1 Word 2019 Associate（助理级）考试大纲与课程目录</h2><p>课程观看网址：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178929d90b_SfHQFI">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178929d90b_SfHQFI</a></p><h3 id="单元-1-管理文档（20-25-）">单元 1 管理文档（20-25%）</h3><ul><li>定位到特定的位置或对象</li><li>设置文档页面布局</li><li>设置页面背景元素</li><li>应用样式集</li><li>以不同格式保存文档</li><li>将文档保存为模板</li><li>修改基本文档属性</li><li>检查和删除隐藏属性和个人信息</li><li>插入和修改页眉和页脚</li><li>检查并修正可访问性问题</li></ul><h3 id="单元-2-插入和格式化文本、段落和节（20-25-）">单元 2 插入和格式化文本、段落和节（20-25%）</h3><ul><li>设置高级文本格式</li><li>设置高级段落格式</li><li>查找和替换手动换行符</li><li>查找和替换不间断空格</li><li>查找和替换格式和样式</li><li>修改样式</li><li>设置连字符和行号</li><li>将样式复制到其他文档或模板</li><li>创建字符样式</li></ul><h3 id="单元-3-创建表格和列表（15-20-）">单元 3 创建表格和列表（15-20%）</h3><ul><li>更新索引</li><li>创建自定义字体集</li><li>创建自定义主题</li><li>创建自定义样式集</li><li>创建自定义颜色集</li><li>插入图形和表格题注</li><li>创建文档部件</li><li>插入和修改图表目录</li><li>标记索引项</li><li>管理构建基块</li></ul><h3 id="单元-4-创建和管理引用内容（5-10-）">单元 4 创建和管理引用内容（5-10%）</h3><ul><li>修改域属性</li><li>添加自定义域</li><li>使用现有的列表</li><li>命名简单宏</li><li>将宏复制到其他文档或模板</li><li>管理收件人列表</li><li>创建简单的宏</li><li>插入标准内容控件</li><li>编辑简单的宏</li></ul><h3 id="单元-5-插入和格式化图形元素（15-20-）">单元 5 插入和格式化图形元素（15-20%）</h3><ul><li>插入形状</li><li>插入图片</li><li>插入3D模型</li><li>在文本框中添加和修改文本</li><li>应用艺术效果</li><li>应用图片效果和图片样式</li><li>修改SmartArt图形的方向</li><li>为对象添加替换文字以增强可访问性</li><li>设置文本环绕方式</li><li>格式化SmartArt图形</li></ul><h3 id="单元-6-管理文件协作（5-10-）">单元 6 管理文件协作（5-10%）</h3><ul><li>删除批注</li><li>解决批注</li><li>接受和拒绝修订内容</li></ul><h2 id="2-Excel-2019-Associate-（助理级）考试大纲与课程目录">2 Excel 2019 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f433484d9cc3_hZxfN6">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f433484d9cc3_hZxfN6</a></p><h3 id="单元-1-管理工作表与工作簿（10-15-）">单元 1 管理工作表与工作簿（10-15%）</h3><ul><li>从文本文件导入数据</li><li>定位到名称</li><li>调整行高和列宽</li><li>设置打印区域</li><li>冻结工作表的行和列</li><li>修改文档属性</li><li>显示公式</li><li>插入和删除超链接</li></ul><h3 id="单元-2-管理数据单元格和数据区域（20-25-）">单元 2 管理数据单元格和数据区域（20-25%）</h3><ul><li>删除条件格式</li><li>命名表对象</li><li>插入迷你图</li><li>应用数字格式</li><li>应用内置条件格式</li><li>修改单于格对齐、文本方向和缩进</li><li>使用自动填充来填充单元格</li><li>使用格式刷格式化单元格</li><li>定义命名区域</li><li>插入和删除单元格</li><li>应用单元格样式</li><li>修改单元格内容缩进值</li><li>设置单元格自动换行</li></ul><h3 id="单元-3-管理表和表数据（15-20-）">单元 3 管理表和表数据（15-20%）</h3><ul><li>应用表格格式</li><li>添加或删除表的行和列</li><li>将表转换为区域</li><li>设置表格样式选项</li><li>筛选记录</li><li>根据多列内容排序数据</li><li>添加汇总行</li><li>从单元格区域创建Excel表对象</li></ul><h3 id="单元-4-应用公式和函数处理数据（20-25-）">单元 4 应用公式和函数处理数据（20-25%）</h3><ul><li>使用MAX()函数执行计算</li><li>使用COUNTBLANK（）函数对单元格进行计数</li><li>使用IF() 函数执行逻辑判断</li><li>使用LEFT() 函数格式化文本内容</li><li>在公式中引用命名区域和命名表</li><li>使用SUM()函数执行计算</li><li>使用AVERAGE()函数执行计算</li><li>使用UPPER()函数格式化文本</li><li>嵌套IF()函数进行多级判断</li><li>插入相对引用，绝对引用和混合引用</li></ul><h3 id="单元-5-管理图表（20-25-）">单元 5 管理图表（20-25%）</h3><ul><li>添加图表</li><li>添加图表工作表</li><li>切换行和列</li><li>设置图例项和数据标签</li><li>添加坐标轴标题</li><li>添加数据表</li><li>应用图表样式</li><li>向图表添加可选文字以增强可访问性</li><li>应用图表布局</li><li>将数据系列添加到图表</li></ul><h2 id="3-PowerPoint-2019-Associate-（助理级）考试大纲与课程目录">3 PowerPoint 2019 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f43362b92c90_fw1LL6">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f43362b92c90_fw1LL6</a></p><h3 id="单元-1-管理演示文稿">单元 1 管理演示文稿</h3><ul><li>修改讲义母版</li><li>设置幻灯片放映选项</li><li>设置基本文件属性</li><li>打印全部或部分演示文稿</li><li>检查演示文稿</li><li>修改幻灯片版式</li><li>创建幻灯片版式</li></ul><h3 id="单元-2-管理幻灯片">单元 2 管理幻灯片</h3><ul><li>插入摘要缩放幻灯片</li><li>修改单个幻灯片背景</li><li>插入幻灯片页眉，页脚和页码</li><li>创建节</li><li>隐藏和取消隐藏幻灯片</li><li>导入Word文档大纲</li><li>插入其他演示文稿中的幻灯片</li></ul><h3 id="单元-3-插入并格式化文本，形状和图片">单元 3 插入并格式化文本，形状和图片</h3><ul><li>调整形状和文本框的大小</li><li>设置形状和文本框的格式</li><li>插入超链接</li><li>插入节缩放链接和幻灯片缩放链接</li><li>调整图片大小及裁剪</li><li>在图形元素中添加替代文本以实现辅助功能</li><li>对齐形状，图像和文本框</li><li>分组形状和图像</li><li>为文本分栏</li><li>排序形状，图像和文本框</li><li>将内置样式和效果应用于图片</li><li>插入节缩放定位</li></ul><h3 id="单元-4-插入表格，图表，SmartArt-图形，3D-模型和媒体">单元 4 插入表格，图表，SmartArt 图形，3D 模型和媒体</h3><ul><li>修改图表的数据表</li><li>修改3D模型</li><li>创建并插入图表</li><li>插入SmartArt图形</li><li>插入3D模型</li><li>设置媒体播放选项</li><li>插入音频和视频片段</li><li>修改图表类型</li><li>将列表转换为SmartArt图形</li><li>插入和删除表的行和列</li></ul><h3 id="单元-5-应用切换和动画">单元 5 应用切换和动画</h3><ul><li>应用基本的和3D幻灯片切换</li><li>设置文本和图形元素的动画</li><li>设置切换效果</li><li>设置切换持续时间</li><li>设置动画效果</li></ul><h2 id="4-Outlook-2019-Associate-（助理级）考试大纲与课程目录">4 Outlook 2019 Associate （助理级）考试大纲与课程目录</h2><p>课程观看网址：（正在开发中…）</p><h3 id="单元-1-管理-Outlook-设置与过程">单元 1 管理 Outlook 设置与过程</h3><ul><li>自定义 Outlook 设置</li><li>配置邮件设置</li><li>执行搜索操作</li><li>打印和保存信息</li></ul><h3 id="单元-2-管理邮件">单元 2 管理邮件</h3><ul><li>创建邮件</li><li>插入邮件内容</li><li>组织和管理邮件</li></ul><h3 id="单元-3-管理日程">单元 3 管理日程</h3><ul><li>创建和管理日历</li><li>创建约会、会议和事件</li><li>组织和管理约会、会议、事件</li></ul><h3 id="单元-4-管理联系人和任务">单元 4 管理联系人和任务</h3><ul><li>创建和管理联系人记录</li><li>创建和管理联系人组</li><li>创建和管理任务</li></ul><h2 id="5-Word-2019-Expert（专家级）考试大纲与课程目录">5 Word 2019 Expert（专家级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178929d90b_SfHQFI">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178929d90b_SfHQFI</a></p><h3 id="单元-1-管理文档和模板（20-25-）">单元 1 管理文档和模板（20-25%）</h3><ul><li>保护文档格式</li><li>比较并合并多个文档</li><li>使用密码保护文档</li><li>使用特定语言的功能</li><li>限制内容编辑</li><li>修改模板的默认字体</li><li>在文档中启用宏</li></ul><h3 id="单元-2-使用高级编辑和格式化功能（25-30-）">单元 2 使用高级编辑和格式化功能（25-30%）</h3><ul><li>设置高级文本格式</li><li>设置高级段落格式</li><li>查找和替换手动换行符</li><li>查找和替换不间断空格</li><li>查找和替换格式和样式</li><li>修改样式</li><li>设置连字符和行号</li><li>将样式复制到其他文档或模板</li><li>创建字符样式</li></ul><h3 id="单元-3-创建自定义文档元素（25-30-）">单元 3 创建自定义文档元素（25-30%）</h3><ul><li>更新索引</li><li>创建自定义字体集</li><li>创建自定义主题</li><li>创建自定义样式集</li><li>创建自定义颜色集</li><li>插入图形和表格题注</li><li>创建文档部件</li><li>插入和修改图表目录</li><li>标记索引项</li><li>管理构建基块</li></ul><h3 id="单元-4-使用高级-Word-功能（20-25-）">单元 4 使用高级 Word 功能（20-25%）</h3><ul><li>修改域属性</li><li>添加自定义域</li><li>使用现有的列表</li><li>命名简单宏</li><li>将宏复制到其他文档或模板</li><li>管理收件人列表</li><li>创建简单的宏</li><li>插入标准内容控件</li><li>编辑简单的宏</li></ul><h2 id="6-Excel-2019-Expert（专家级）考试大纲与课程目录">6 Excel 2019 Expert（专家级）考试大纲与课程目录</h2><p>课程观看网址：<a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178d2d7c29_ITHObt">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5f6178d2d7c29_ITHObt</a></p><h3 id="单元-1-管理工作簿选项和设置（15-20-）">单元 1 管理工作簿选项和设置（15-20%）</h3><ul><li>在工作簿中启用宏</li><li>设置公式计算选项</li><li>设置编辑和显示语言</li><li>保护工作簿结构</li></ul><h3 id="单元-2-管理和格式化数据（20-25-）">单元 2 管理和格式化数据（20-25%）</h3><ul><li>使用填充系列选项</li><li>设置数据验证</li><li>删除重复的记录</li><li>管理条件格式规则</li><li>创建自定义数字格式</li><li>管理条件格式规则——修改格式</li><li>分类汇总数据</li><li>创建自定义条件格式规则</li></ul><h3 id="单元-3-创建高级公式和宏（30-35-）">单元 3 创建高级公式和宏（30-35%）</h3><ul><li>追踪引用和从属单元格</li><li>在公式中执行逻辑运算</li><li>使用合并计算功能汇总多个区域的数据</li><li>使用WORKDAY() 函数计算日期</li><li>使用VLOOKUP() 函数精确查找数据</li><li>使用VLOOKUP() 函数近似查找数据</li><li>使用TEXT()函数格式化日期</li><li>使用NPER()函数计算贷款偿还期数</li><li>使用AVERAGEIFS() 函数进行条件统计</li><li>录制简单的宏</li><li>使用错误检查工具确认公式</li></ul><h3 id="单元-4-管理高级图表（25-30-）">单元 4 管理高级图表（25-30%）</h3><ul><li>创建和修改漏斗图</li><li>创建和修改双轴图</li><li>创建和修改直方图</li><li>钻取数据透视图数据</li><li>修改图表的布局和样式</li><li>修改数据透视表字段选择和选项</li><li>添加计算字段</li><li>设置数据透视图选项</li><li>分组数据透视表数据</li><li>创建数据透视图</li><li>创建切片器</li></ul><h2 id="7-Access-2019-Expert（专家级）考试大纲与课程目录">7 Access 2019 Expert（专家级）考试大纲与课程目录</h2><p>课程观看网址：（正在开发中…）</p><h3 id="单元-1-管理数据库">单元 1 管理数据库</h3><ul><li>修改数据库结构</li><li>管理表关系与键</li><li>打印和导出数据</li></ul><h3 id="单元-2-创建和修改表">单元 2 创建和修改表</h3><ul><li>创建表</li><li>管理表</li><li>管理表中的记录</li><li>创建和修改字段</li></ul><h3 id="单元-3-创建和修改查询">单元 3 创建和修改查询</h3><ul><li>创建和运行查询</li><li>修改查询</li></ul><h3 id="单元-4-在布局视图中修改窗体">单元 4 在布局视图中修改窗体</h3><ul><li>设置窗体控件</li><li>格式化窗体</li></ul><h3 id="单元-5-在布局视图中修改报表">单元 5 在布局视图中修改报表</h3><ul><li>设置报表控件</li><li>格式化报表</li></ul><h2 id="图片版权">图片版权</h2><p>题图：<a href="https://pixabay.com/photos/to-study-to-learn-study-read-2208047/">https://pixabay.com/photos/to-study-to-learn-study-read-2208047/</a></p><p>头图：<a href="https://isorepublic.com/photo/northern-lights-sky/">https://isorepublic.com/photo/northern-lights-sky/</a></p>]]></content>
    
    
    <summary type="html">MOS 2019 各科的考试大纲、课程目录、课程观看网址。</summary>
    
    
    
    <category term="考试" scheme="https://blog.kukmoon.com/categories/%E8%80%83%E8%AF%95/"/>
    
    
    <category term="学习" scheme="https://blog.kukmoon.com/tags/%E5%AD%A6%E4%B9%A0/"/>
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>MOS 2016 考试大纲与课程目录</title>
    <link href="https://blog.kukmoon.com/f968d7cdc689/"/>
    <id>https://blog.kukmoon.com/f968d7cdc689/</id>
    <published>2025-04-25T04:41:40.000Z</published>
    <updated>2025-04-25T04:41:40.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-04-25-12-56-18.jpg" alt="MOS 2016 考试大纲与课程目录"></p><h2 id="1-Word-2016-专家级考试大纲与课程目录">1 Word 2016 专家级考试大纲与课程目录</h2><p>课程观看网址（以你已经开通可以观看的为准）：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd08c5cf0a_rYu3M28s">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd08c5cf0a_rYu3M28s</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5f0a826de4b09c1412e46647">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5f0a826de4b09c1412e46647</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz</a></p><h3 id="单元-1-管理文档选项和设置（35-40-）">单元 1 管理文档选项和设置（35-40%）</h3><ul><li>管理文档和模板</li><li>保护文档</li><li>审阅文档</li></ul><h3 id="单元-2-设计高级文档（20-25-）">单元 2 设计高级文档（20-25%）</h3><ul><li>应用高级编辑和格式化功能</li><li>创建和应用样式</li></ul><h3 id="单元-3-创建高级引用内容（20-25-）">单元 3 创建高级引用内容（20-25%）</h3><ul><li>创建和管理索引</li><li>创建和管理目录、题注和图表目录</li><li>创建和管理域</li></ul><h3 id="单元-4-创建自定义文档元素（15-20-）">单元 4 创建自定义文档元素（15-20%）</h3><ul><li>创建和编辑文档部件、宏和控件</li><li>创建自定义样式集和模板</li><li>设置文档国际化与辅助功能</li></ul><h2 id="2-Excel-2016-专家级考试大纲与课程目录">2 Excel 2016 专家级考试大纲与课程目录</h2><p>课程观看网址（以你已经开通可以观看的课程为准）：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd15b59049_IyvxrUZS">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd15b59049_IyvxrUZS</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5f0a84b7e4b09c1412e466b3">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5f0a84b7e4b09c1412e466b3</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz</a></p><h3 id="单元-1-管理工作簿选项和设置（10-15-）">单元 1 管理工作簿选项和设置（10-15%）</h3><ul><li>管理工作簿</li><li>管理工作簿审阅</li></ul><h3 id="单元-2-应用自定义数据格式和设置（20-25-）">单元 2 应用自定义数据格式和设置（20-25%）</h3><ul><li>应用自定义数据格式和数据验证</li><li>应用高级条件格式</li><li>创建与修改自定义工作簿元素</li><li>配置工作簿的国际化应用</li></ul><h3 id="单元-3-应用高级公式和数据分析工具（35-40-）">单元 3 应用高级公式和数据分析工具（35-40%）</h3><ul><li>使用函数进行逻辑判断</li><li>使用函数进行条件统计</li><li>使用函数查找数据</li><li>使用函数处理日期和时间</li><li>为单元格和表格创建名称</li><li>审核公式和查找错误</li><li>使用数据分析工具</li></ul><h3 id="单元4-分析和展示数据（25-30-）">单元4 分析和展示数据（25-30%）</h3><ul><li>创建高级图表</li><li>使用数据透视表分析数据</li><li>使用数据透视图展示数据</li></ul><h2 id="3-PowerPoint-2016-考试大纲与课程目录">3 PowerPoint 2016 考试大纲与课程目录</h2><p>课程观看网址（以你已经开通可以观看的课程为准）：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5f0a84b7e4b09c1412e466b3">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd1a90e072_nVdEaAXQ</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz</a></p><h3 id="单元-1-创建和管理演示文稿（30-35-）">单元 1 创建和管理演示文稿（30-35%）</h3><ul><li>创建演示文稿</li><li>插入和格式化幻灯片</li><li>修改幻灯片、讲义和备注母版</li><li>排序和分组幻灯片</li><li>修改演示文稿的选项和视图</li><li>演示文稿打印设置</li><li>设置和演示幻灯片</li></ul><h3 id="单元-2-插入和格式化文本、形状和图片（20-25-）">单元 2 插入和格式化文本、形状和图片（20-25%）</h3><ul><li>插入和格式化文本</li><li>插入和格式化形状</li><li>插入和格式化图片</li><li>排列和组合对象</li></ul><h3 id="单元-3-插入表格、图表、SmartArt图形和媒体（20-25-）">单元 3 插入表格、图表、SmartArt图形和媒体（20-25%）</h3><ul><li>插入和格式化表格</li><li>插入和格式化图表</li><li>插入和格式化SmartArt图形</li><li>插入和管理媒体</li></ul><h3 id="单元-4-应用切换和动画效果（10-15-）">单元 4 应用切换和动画效果（10-15%）</h3><ul><li>应用幻灯片切换</li><li>为幻灯片内容设置动画</li></ul><h3 id="单元-5-审阅和发布演示文稿（5-10-）">单元 5 审阅和发布演示文稿（5-10%）</h3><ul><li>审阅演示文稿</li><li>发布和保护演示文稿</li></ul><h2 id="4-Outlook-2016-考试大纲与课程目录">4 Outlook 2016 考试大纲与课程目录</h2><p>课程观看网址（以你已经开通可以观看的课程为准）：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/column/p_5d93614147e4e_Q4K7kodv">https://app63ffgjzw2220.xet.citv.cn/p/course/column/p_5d93614147e4e_Q4K7kodv</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz</a></p><h3 id="单元-1-配置和管理企业级-Outlook-应用环境（20-25-）">单元 1 配置和管理企业级 Outlook 应用环境（20-25%）</h3><ul><li>Outlook 2016的自定义设置</li><li>打印和保存信息</li><li>在Outlook中进行搜索</li></ul><h3 id="单元-2-管理邮件（35-40-）">单元 2 管理邮件（35-40%）</h3><ul><li>设置邮件选项</li><li>创建邮件</li><li>格式化邮件</li><li>组织和管理邮件</li></ul><h3 id="单元-3-管理日程（35-40-）">单元 3 管理日程（35-40%）</h3><ul><li>创建和管理日历</li><li>创建约会、会议和事件</li><li>组织和管理约会、会议和事件</li><li>创建和管理任务与笔记</li></ul><h3 id="单元-4-创建和管理联系人与联系人组（10-15-）">单元 4 创建和管理联系人与联系人组（10-15%）</h3><ul><li>创建和管理联系人</li><li>创建和管理联系人组</li></ul><h2 id="5-Access-2016-考试大纲与课程目录">5 Access 2016 考试大纲与课程目录</h2><p>课程观看网址（以你已经开通可以观看的课程为准）：</p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd211e0e49_4YVrZH4M">https://app63ffgjzw2220.xet.citv.cn/p/course/big_column/p_5d6fd211e0e49_4YVrZH4M</a></p><p><a href="https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz">https://app63ffgjzw2220.xet.citv.cn/p/course/camp/term_5e49f5426f288_rND6hz</a></p><h3 id="单元-1-创建和管理数据库（20-25-）">单元 1 创建和管理数据库（20-25%）</h3><ul><li>创建和修改数据库</li><li>管理关系和键</li><li>在数据库中定位与导航</li><li>保护和维护数据库</li><li>打印和导出数据</li></ul><h3 id="单元-2-构建表对象（25-30-）">单元 2 构建表对象（25-30%）</h3><ul><li>创建表</li><li>管理表</li><li>管理表中的记录</li><li>创建和修改字段</li></ul><h3 id="单元-3-创建查询（20-25-）">单元 3 创建查询（20-25%）</h3><ul><li>创建查询</li><li>修改查询</li><li>在查询中创建计算字段和分组</li></ul><h3 id="单元-4-创建窗体（15-20-）">单元 4 创建窗体（15-20%）</h3><ul><li>创建窗体</li><li>设置窗体控件</li><li>格式化窗体</li></ul><h3 id="单元-5-创建报表（15-20-）">单元 5 创建报表（15-20%）</h3><ul><li>创建报表</li><li>设置报表控件</li><li>格式化报表</li></ul><hr><div style="text-align:center;"><h2 id="学-MOS-五分钟，少加班两小时">学 MOS 五分钟，少加班两小时</h2><p><strong>MOS</strong> 认证考试的中文全称，</p><p>是<strong>微软办公软件国际认证考试</strong>，</p><p>它是微软公司针对自家 Office 软件推出的考试，</p><p>具有无可比拟的权威性和含金量，</p><p>也是世界五百强招聘考核员工的重要标准。</p><h3 id="了解-MOS-考试">了解 MOS 考试</h3><p><a href="https://blog.kukmoon.com/0d3e29c40f40/">什么是 MOS 认证考试？考什么？看完秒懂！</a></p><h3 id="MOS报名入口">MOS报名入口</h3><p><a href="https://blog.kukmoon.com/99da6e6bf0bc/">点击此处报名，可能会有优惠券或者其他礼物掉落哟~</a></p><h3 id="学习社群">学习社群</h3><p><a href="https://jq.qq.com/?_wv=1027&amp;k=U38X9e9B">点击此处，加入我们的 QQ 群找谷月老师咨询报名</a></p><p>--------------</p><h3 id="关于谷月老师：">关于谷月老师：</h3><p><strong>谷月老师拥有博士学位，</strong></p><p>多年来从事 MOS 考试的研究、培训、营销，</p><p>具有丰富的经验，</p><p>欢迎找谷月老师咨询报名哟~</p><p>谷月老师微信号： <code>kukmoon</code></p><p>或微信识别以下二维码加谷月老师</p><p><img src="https://img.kukmoon.com/kukmoon-wei-xin-er-wei-ma.jpg" alt="谷月老师微信二维码"></p><p>--------------</p></div><h2 id="图片版权">图片版权</h2><p>题图：<a href="https://pixabay.com/photos/to-study-to-learn-study-read-2208047/">https://pixabay.com/photos/to-study-to-learn-study-read-2208047/</a></p><p>头图：<a href="https://isorepublic.com/photo/northern-lights-sky/">https://isorepublic.com/photo/northern-lights-sky/</a></p>]]></content>
    
    
    <summary type="html">MOS 2016 各科的考试大纲、课程目录、课程观看网址。</summary>
    
    
    
    <category term="考试" scheme="https://blog.kukmoon.com/categories/%E8%80%83%E8%AF%95/"/>
    
    
    <category term="学习" scheme="https://blog.kukmoon.com/tags/%E5%AD%A6%E4%B9%A0/"/>
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>Word 多级列表中预设的列表库被删了如何恢复？</title>
    <link href="https://blog.kukmoon.com/2f8625392220/"/>
    <id>https://blog.kukmoon.com/2f8625392220/</id>
    <published>2025-03-31T13:14:33.000Z</published>
    <updated>2025-03-31T13:14:33.000Z</updated>
    
    <content type="html"><![CDATA[<div class="note note-primary">            <p>本文首发于知乎，链接： <a href="https://www.zhihu.com/question/12582884607/answer/1889944593610548494">https://www.zhihu.com/question/12582884607/answer/1889944593610548494</a></p>          </div><p><img src="https://img.kukmoon.com/2025-03-31-21-15-43.png" alt="图源：知乎用户 dyd"></p><p><strong>解决方案</strong>：退出 MS Word，删除 C:\Users\用户名\AppData\Roaming\Microsoft\Templates\Normal.dotm 文件（路径中的【用户名】要因人而异，不要无脑复制），重启 MS Word 即可。</p><p><strong>原因分析</strong>：MS Word 把对于样式、编号、界面的修改都保存在该 Normal.dotm 文件中，删除此文件，MS Word 会重新生成一个 Normal.dotm 并使其内容恢复到最初状态。这样，被删除的编号样式就回来了。</p><p><strong>图片版权</strong></p><p>题图：知乎用户 dyd</p><p>头图：Image by <a href="https://pixabay.com/users/kranich17-11197573/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6225833">Michaela, at home in Germany • Thank you very much for a like</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6225833">Pixabay</a></p>]]></content>
    
    
    <summary type="html">删除 Normal.dotm，可以重置 Word 的样式设置，从而恢复被删掉的列表样式。</summary>
    
    
    
    <category term="办公软件" scheme="https://blog.kukmoon.com/categories/%E5%8A%9E%E5%85%AC%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="知乎" scheme="https://blog.kukmoon.com/tags/%E7%9F%A5%E4%B9%8E/"/>
    
    <category term="谷月老师讲Office" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2Office/"/>
    
    <category term="Word" scheme="https://blog.kukmoon.com/tags/Word/"/>
    
  </entry>
  
  <entry>
    <title>史上最详细 Arm Mac 虚拟机安装 Microsoft 365 备考 MOS 考试教程 (V5.1)</title>
    <link href="https://blog.kukmoon.com/64aebf865c7b/"/>
    <id>https://blog.kukmoon.com/64aebf865c7b/</id>
    <published>2025-03-28T18:42:10.000Z</published>
    <updated>2025-04-16T06:13:00.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-03-30-18-45-31.jpg" alt=""></p><div class="note note-success"><h2 id="更新记录">更新记录</h2><ul><li><p><strong>2025/04/16 (V5.1) 更新</strong>：换了一个更容易安装和激活的 Parallels Desktop 小版本。</p></li><li><p><strong>2025/03/29 (V5.0) 更新</strong>：重磅更新！在 ARM 芯片的 Mac 上以 macOS Sequoia 15 + Parallels Desktop 20 + Windows 11 ARM64 + Microsoft 365（32位）为例重构全文，配图大规模更新。<strong>注意：本文讲述的方法适合 Parallels Desktop 高版本（18 及以上）以及与之对应的 macOS。</strong></p></li><li><p><strong>2024/11/27 (V4.0) 更新</strong>：重磅更新！以 macOS Catalina + Parallels Desktop 15 + 64 位 Windows 10 LTSB 2016 + Microsoft 365 为例重构全文，配图大规模更新，安装包更新了Parallels Desktop 全家福（12、14~20 版本）。</p></li><li><p><strong>2020/12/6 (V3.0) 更新</strong>：用 MarkDown 重构全文，修改部分文字，增加 Parallels 16 安装包。</p></li><li><p><strong>2019/12/29 (V2.2) 更新</strong>：已确定 Parallels 15 与mac OS X 10.14 Mojave 无兼容性问题，如果 Mac 配置够高，强烈建议安装Parallels 15。</p></li><li><p><strong>2019/12/28 (V2.1) 更新</strong>：增加了 Parallels 15 安装包。如果安装了 macOS X 10.15 Catalina，请安装 Parallels 15。10.14 Mojave及更低版本，还是用Parallel 14比较好，低版本的系统似乎与 Parallels 15 不兼容，谷月老师尚在实地测试中。</p></li><li><p><strong>2019/10/28 (V2.0) 更新</strong>：增加了安装和激活 Office 2019 的内容</p></li></ul></div><div class="note note-primary"><h2 id="摘要">摘要</h2><p>在 Mac 上安装虚拟机软件 Parallels Desktop ，创建虚拟机，并在虚拟机中安装 Windows 11 ARM64 和 Microsoft 365 （原 Office 365，下同），最终目的是在苹果电脑上无缝运行 Microsoft 365，助力读者复习备考 MOS 认证考试。</p></div><h2 id="引言">引言</h2><p>MOS（Microsoft Office Specialist）认证，官方中文名为「微软办公软件国际认证」，是微软官方推出的针对微软 Office 软件的认证考试。MOS 认证旨在提升学员使用Office软件解决职场实际问题的能力，它作为进入世界 500 强的敲门砖，在全球 140+ 国家和地区得到承认，是大学生和职场新人必考的证书。<br><img src="https://img.kukmoon.com/Mac-xu-ni-ji-an-zhuang-Offfice/590cd7afa78c61af9298e3151c78ff2b.jpg" alt=""></p><p>MOS 认证考试是以 Office for Windows 为准的。由于 Office for Mac 的界面和功能与 Office for Windows 存在一些区别，所以，Office for Mac 不完全适合用来复习备考MOS认证考试。<img src="https://img.kukmoon.com/Mac-xu-ni-ji-an-zhuang-Offfice/9e2692647437803ecea9ffaa26eb1982.jpg" alt=""></p><p>这样，就给Mac用户出了一道难题。难道只有放弃苹果电脑，另外买一台 PC 吗？答案是否定的，<strong>谷月老师设计了一套完整的解决方案</strong>，借助神奇的虚拟机软件 Parallels Desktop、Windows 11 ARM64 精简版和 Microsoft 365，学员就可以在苹果电脑上顺利地复习备考MOS啦！</p><p><strong>这套解决方案的优点：</strong></p><ul><li><p>兼容性优秀。Parallels Desktop 可以让 Windows 应用程序在 macOS 系统中无缝运行，兼容性很优秀。</p></li><li><p>占用硬盘空间小。考虑到 Mac 电脑的硬盘空间普遍比较小，谷月老师经过反复尝试，精心自制 Windows 11 ARM64 精简版，配合可以定制 Office 安装的工具 Office Tool Plus，<strong>在 Mac 中最低占用不到 16 GB 硬盘空间</strong>，即使 256 GB 硬盘的 Mac 也能轻松驾驭。</p></li><li><p>操作简单。本文会图文讲解详细的操作步骤。</p></li><li><p>对 Mac 续航影响极小。</p></li></ul><table><thead><tr><th></th><th style="text-align:center">谷月老师的解决方案</th><th style="text-align:center">Bootcamp 双系统</th><th style="text-align:center">另外买一台 PC</th></tr></thead><tbody><tr><td>费用</td><td style="text-align:center">极低</td><td style="text-align:center">免费</td><td style="text-align:center">昂贵，<br />数千元起</td></tr><tr><td>兼容性</td><td style="text-align:center">优秀</td><td style="text-align:center">Arm 芯片的 Mac 移除了 Bootcamp 支持</td><td style="text-align:center">优秀</td></tr><tr><td>占用 Mac 硬盘空间</td><td style="text-align:center">小，<br />经测试最小不到 16 GB</td><td style="text-align:center">大，<br /> 32 GB 起步</td><td style="text-align:center">——</td></tr><tr><td>操作复杂程度</td><td style="text-align:center">中等，<br />本文详细介绍</td><td style="text-align:center">复杂，<br />有丢失数据的危险</td><td style="text-align:center">低，<br />交钱就行</td></tr><tr><td>对 Mac 续航的影响</td><td style="text-align:center">低</td><td style="text-align:center">高，<br />功耗偏高，屏幕默认亮度最大，键盘灯不能关闭</td><td style="text-align:center">——</td></tr></tbody></table><p>**需要的软件工具，<a href="https://clouddrive.kukmoon.com/OneDrive1/Mac_%E8%99%9A%E6%8B%9F%E6%9C%BA_PD%E9%AB%98%E7%89%88%E6%9C%AC/">在此处下载</a>。<strong>声明：这些软件下载，纯为学习之用，请在下载安装24小时之内删除</strong>！</p><p><strong>声明：这些软件下载，纯为学习之用，请在下载安装24小时之内删除！</strong></p><h2 id="1-安装虚拟机软件-Parallels-Desktop">1 安装虚拟机软件 Parallels Desktop</h2><p><strong>注意：</strong></p><ol><li><p>Parallells Desktop 版本与 macOS 版本的对应关系</p><table><thead><tr><th style="text-align:center">Parallels Desktop</th><th style="text-align:center">macOS</th><th style="text-align:center">Parallels Desktop <br /> 是否支持 Arm 芯片</th></tr></thead><tbody><tr><td style="text-align:center">12</td><td style="text-align:center">10.12</td><td style="text-align:center">否</td></tr><tr><td style="text-align:center">13</td><td style="text-align:center">10.13</td><td style="text-align:center">否</td></tr><tr><td style="text-align:center">14</td><td style="text-align:center">10.14</td><td style="text-align:center">否</td></tr><tr><td style="text-align:center">15</td><td style="text-align:center">10.15</td><td style="text-align:center">否</td></tr><tr><td style="text-align:center">16</td><td style="text-align:center">11</td><td style="text-align:center">从 16.5 开始支持</td></tr><tr><td style="text-align:center">17</td><td style="text-align:center">12</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">18</td><td style="text-align:center">13</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">19</td><td style="text-align:center">14</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">20</td><td style="text-align:center">15</td><td style="text-align:center">是</td></tr></tbody></table></li><li><p>Parallels 12-16.0 都只能运行在 Intel CPU 的 Mac 。从 16.5 开始，可以运行在 Intel CPU 或 ARM 芯片的 Mac。Parallells 暂时没有终止支持 Intel 芯片的 Mac。</p></li></ol><p>本文以 Parallels Desktop 20 为例，Parallels Desktop 18 及以上版本的操作与之类似。</p><h3 id="1-1-安装流程">1.1 安装流程</h3><p>双击下载回来的 DMG 格式安装包。<br><img src="https://img.kukmoon.com/2025-04-16-12-19-50.png" alt=""></p><p><strong>双击箭头所示的 DMG 格式安装包</strong>，打开它。<br><img src="https://img.kukmoon.com/2025-04-16-12-21-08.png" alt=""></p><p>双击 Parallels Desktop 的图标，进入安装过程。<br><img src="https://img.kukmoon.com/2025-03-29-18-06-29.png" alt=""></p><p>选择“打开”。<br><img src="https://img.kukmoon.com/2025-04-16-12-22-09.png" alt=""></p><p>它问你要不要安装最新版，直接点击左上角红色按钮退出。<br><img src="https://img.kukmoon.com/2025-03-29-18-08-01.png" alt=""></p><p>然后选择“不，使用现有的”。<br><img src="https://img.kukmoon.com/2025-03-29-18-08-40.png" alt=""></p><p>对于许可协议，取消左下角的对钩，然后点击右下角的“接受”。<br><img src="https://img.kukmoon.com/2025-03-29-18-10-01.png" alt=""></p><p>选择“使用密码”，输入密码，点击“好”。<br><img src="https://img.kukmoon.com/2025-03-29-18-11-41.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-18-12-12.png" alt=""></p><p>授予权限。后面还会授予 Parallels Desktop 各种不同的权限。只要它要权限，就一律授予，否则它不能正常运行。<br><img src="https://img.kukmoon.com/2025-03-29-18-13-12.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-18-15-11.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-18-15-33.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-18-16-05.png" alt=""></p><p>等待进度条走完，就安装完毕了。<br><img src="https://img.kukmoon.com/Mac-xu-ni-ji-an-zhuang-Offfice/96d37e747c9b1c6f5040f47c510dd15c.jpg" alt=""></p><p>安装完毕后，右击程序坞中的 Parallels Desktop 图标，选择“退出”。<br><img src="https://img.kukmoon.com/2025-03-29-18-26-18.png" alt=""></p><p>双击图中的 <code>Patch SIP ON &amp; OFF</code> 目录，打开它。<br><img src="https://img.kukmoon.com/2025-04-16-12-24-37.png" alt=""></p><p>双击这个文件名中带有 ON 的 DMG 压缩包。<br><img src="https://img.kukmoon.com/2025-04-16-12-26-50.png" alt=""></p><p>将 <code>Parallels Desktop Activation Tool SIP ON</code> 拖动到 Applications 目录。<br><img src="https://img.kukmoon.com/2025-04-16-12-28-21.png" alt=""></p><p>双击 Applications 目录，在弹出的文件中找到 <code>Parallels Desktop Activation Tool SIP ON</code> 并双击。<br><img src="https://img.kukmoon.com/2025-04-16-12-33-52.png" alt=""></p><p>在弹出的这个小窗口中点击“完成”。<br><img src="https://img.kukmoon.com/2025-04-16-12-35-37.png" alt=""></p><p>进入“系统设置”➡️“隐私与安全性”➡️“安全性”，点击“仍要打开”。<br><img src="https://img.kukmoon.com/2025-04-16-12-37-19.png" alt=""></p><p>在弹出的这个小窗口中点击“仍要打开”。<br><img src="https://img.kukmoon.com/2025-04-16-12-38-02.png" alt=""></p><p>点击“使用密码”，然后输入密码。<br><img src="https://img.kukmoon.com/2025-04-16-12-38-47.png" alt=""><br><img src="https://img.kukmoon.com/2025-04-16-12-40-44.png" alt=""></p><p>在弹出的窗口中点击“安装补丁/Install”，然后输入密码。<br><img src="https://img.kukmoon.com/2025-04-16-12-41-57.png" alt=""></p><p>激活成功。<br><img src="https://img.kukmoon.com/2025-04-16-12-43-30.png" alt=""></p><p>右击程序坞中的 Parallels Desktop 图标，点击“偏好设置”，取消勾选“自动检查更新”。<br><img src="https://img.kukmoon.com/2025-03-29-18-56-57.png" alt=""></p><h3 id="1-2-修改-Hosts-文件">1.2 修改 Hosts 文件</h3><p>修改 Hosts 文件，屏蔽自动更新和激活验证，以免 Parallels Desktop 不断弹窗。</p><p>首先，打开一个终端窗口，输入以下命令（<strong>注意</strong>:macOS 会让你输入密码，密码是不可见的，不会像 Windows 那样用圆点或者星号表示密码）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo nano /etc/hosts<br></code></pre></td></tr></table></figure><p>在打开的 Nano 程序中，用方向键移动到文件末尾，按 Return 键另起一行，将以下文本粘贴（鼠标右键、双指点击触摸板、Control+点击触摸板、或 Cmd+V）到此处</p><figure class="highlight accesslog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs accesslog"># 屏蔽 Parallels Desktop 自动更新和激活验证<br><span class="hljs-number">127.0.0.1</span> download.parallels.com<br><span class="hljs-number">127.0.0.1</span> update.parallels.com<br><span class="hljs-number">127.0.0.1</span> desktop.parallels.com<br><span class="hljs-number">127.0.0.1</span> download.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> update.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> desktop.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> www.parallels.cn<br><span class="hljs-number">127.0.0.1</span> www.parallels.com<br><span class="hljs-number">127.0.0.1</span> reportus.parallels.com<br><span class="hljs-number">127.0.0.1</span> parallels.com<br><span class="hljs-number">127.0.0.1</span> parallels.cn<br><span class="hljs-number">127.0.0.1</span> pax-manager.myparallels.com<br><span class="hljs-number">127.0.0.1</span> myparallels.com<br><span class="hljs-number">127.0.0.1</span> my.parallels.com<br></code></pre></td></tr></table></figure><p>按下 Control+X 退出，nano 会提问是否保存，按 Y 保存，再按 Return 表示保持文件名不变。这样就完成了对 Hosts 文件的修改。<br><img src="https://img.kukmoon.com/2024-11-29-07-40-38.png" alt="注意截屏底部"><br><img src="https://img.kukmoon.com/2024-11-29-07-40-58.png" alt="注意截屏底部"></p><p>Parallels Desktop 20 的安装，至此大功告成。</p><h2 id="2-在虚拟机中安装-Windows-11-ARM64">2  在虚拟机中安装 Windows 11 ARM64</h2><h3 id="2-1-创建虚拟机并安装-Windows-11">2.1  创建虚拟机并安装 Windows 11</h3><p>Parallels Desktop 在安装结束后，会自动运行并提示用户下载并安装 Windows 11。在此处需要点击“其他选项”，而不是“安装 Windows”。如果选了“安装 Windows”，Paralles Desktop 会连接到境外服务器下载安装包，速度非常缓慢，时间会非常漫长。<br><img src="https://img.kukmoon.com/2025-03-29-18-59-16.png" alt=""></p><p>选择“通过映像文件安装 Windows、Linux 或 macOS”，再点击“继续”。<br><img src="https://img.kukmoon.com/2025-03-29-19-00-53.png" alt=""></p><p>Parallels Desktop 会扫描硬盘，搜索操作系统的安装包 它搜索到了我们准备的 Windows 11 ARM64 精简版安装包 <code>tiny11-core-arm64.iso</code>。直接点击选中它，再点击“继续”。<br><img src="https://img.kukmoon.com/2025-03-29-19-01-55.png" alt=""></p><p>因为创建虚拟机的主要目的是运行 Office for Windows，所以要选择“生产力”，然后点击“继续”。<br><img src="https://img.kukmoon.com/2025-03-29-19-05-54.png" alt=""></p><p>名称和位置保持默认即可，不需要在 Mac 桌面上创建别名，然后点击“创建”。<br><strong>注意</strong>：如果硬盘空间不足，可以将虚拟机保存到外部的移动硬盘，建议使用支持 USB 3.0 或更高版本的移动固态硬盘。<br><img src="https://img.kukmoon.com/2025-03-29-19-09-07.png" alt=""></p><p>等待……<br><img src="https://img.kukmoon.com/2025-03-29-19-10-44.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-11-29.png" alt=""></p><p>Parallels 申请获得一系列权限，用户只需要点击“好”即可。<br><img src="https://img.kukmoon.com/2025-03-29-19-13-33.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-14-08.png" alt=""></p><p>Windows 安装程序的欢迎页面。直接点击「下一页」。<br><img src="https://img.kukmoon.com/2025-03-29-19-27-42.png" alt=""></p><p>许可条款。在「我接受」前面打钩，然后点击「下一页」。<br><img src="https://img.kukmoon.com/2025-03-29-19-28-34.png" alt=""></p><p>给虚拟硬盘分区。直接点击「新建」。<br><img src="https://img.kukmoon.com/2025-03-29-19-29-39.png" alt=""></p><p>然后直接点击「应用」。<br><img src="https://img.kukmoon.com/2025-03-29-19-32-38.png" alt=""></p><p>直接点击「确定」。<br><img src="https://img.kukmoon.com/2025-03-29-19-33-07.png" alt="2025-03-29-19-33-07"></p><p>Windows 安装程序创建了 3 个分区，并且将会把 Windows 安装到「分区 3」。直接点击「下一页」。<br><img src="https://img.kukmoon.com/2025-03-29-19-33-38.png" alt=""></p><p>正在安装 Windows。此时只需等待。安装结束后会自动重启。<br><img src="https://img.kukmoon.com/2025-03-29-19-34-27.png" alt=""></p><p>重启之后，经过漫长的等待，终于进入了 Windows 11 的桌面。Windows 11 安装结束，撒花🎉🎉🎉！<br><img src="https://img.kukmoon.com/2025-03-29-19-35-40.png" alt=""></p><p>为什么安装结束后直接进入桌面呢？原因是，为了尽可能简化操作，这个精简版的 Windows 11 安装光盘映像中包含无人应答文件，除了个别必要的步骤（欢迎页面、许可条款、硬盘分区）以外，其它需要人工选择和设置的步骤统统跳过，安装完成就进入桌面。</p><h3 id="2-2-修改-Hosts">2.2 修改 Hosts</h3><p>修改 Hosts 文件，屏蔽自动更新和激活验证，以免其不断弹窗。</p><p>在虚拟机窗口中，右键点击 Windows 11 的开始菜单，选择“命令提示符（管理员）”，或者 Windows PowerShell（管理员）。在弹出的窗口中，输入以下命令：</p><figure class="highlight moonscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs moonscript">notepad <span class="hljs-name">C</span>:\Windows\System32\drivers\etc\hosts<br></code></pre></td></tr></table></figure><p>用鼠标或方向键定位到文件末尾，将以下内容粘贴到此处：</p><figure class="highlight accesslog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs accesslog"># 屏蔽 Parallels Desktop 自动更新和激活验证<br><span class="hljs-number">127.0.0.1</span> download.parallels.com<br><span class="hljs-number">127.0.0.1</span> update.parallels.com<br><span class="hljs-number">127.0.0.1</span> desktop.parallels.com<br><span class="hljs-number">127.0.0.1</span> download.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> update.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> desktop.parallels.com.cdn.cloudflare.net<br><span class="hljs-number">127.0.0.1</span> www.parallels.cn<br><span class="hljs-number">127.0.0.1</span> www.parallels.com<br><span class="hljs-number">127.0.0.1</span> reportus.parallels.com<br><span class="hljs-number">127.0.0.1</span> parallels.com<br><span class="hljs-number">127.0.0.1</span> parallels.cn<br><span class="hljs-number">127.0.0.1</span> pax-manager.myparallels.com<br><span class="hljs-number">127.0.0.1</span> myparallels.com<br><span class="hljs-number">127.0.0.1</span> my.parallels.com<br></code></pre></td></tr></table></figure><p>保存并退出记事本。</p><h3 id="2-3-安装-Parallels-Tools">2.3  安装 Parallels Tools</h3><p>Parallels Tools 可以理解为虚拟机的增强组件，它能让虚拟机中的Windows 10及其应用程序更好地融入 macOS 操作系统。</p><p>首先，让我们手动继续安装。<br><img src="https://img.kukmoon.com/2025-03-29-19-39-41.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-40-31.png" alt=""></p><p>然后，安装 Parallels Tools。点击菜单“操作”→“安装 Paralles Tools”（或“重新安装 Parallels Tools”）。<br><img src="https://img.kukmoon.com/2025-03-29-19-41-17.png" alt=""></p><p>在弹出的对话框中点击“继续”或“是”。<br><img src="https://img.kukmoon.com/2025-03-29-19-41-57.png" alt=""></p><p>自动播放。先点击“自动播放”弹窗，再选择“Install Parallels Tools”。<br><img src="https://img.kukmoon.com/2025-03-29-19-42-55.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-43-31.png" alt=""></p><p>在虚拟机的桌面上，会弹出一个对话框提示正在安装 Parallels Tools。<br><img src="https://img.kukmoon.com/2025-03-29-19-44-30.png" alt=""></p><p>等进度条走完以后，点击“重新启动”即可。<br><img src="https://img.kukmoon.com/2025-03-29-19-45-59.png" alt=""></p><p>Parallels Desktop 又要权限了，给予它这个权限。<br><img src="https://img.kukmoon.com/2025-03-29-19-52-04.png" alt=""></p><h3 id="2-4-启用融合模式">2.4  启用融合模式</h3><p>等虚拟机重启完毕，再次显示 Windows 10 桌面以后，点击 Mac 屏幕顶部菜单栏中的“查看”→“进入融合”。<br><img src="https://img.kukmoon.com/2025-03-29-19-53-13.png" alt=""></p><p>Parallels Desktop 从 15 开始，新增了一个向导，向新用户介绍什么是融合模式。<br><img src="https://img.kukmoon.com/2025-03-29-19-54-17.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-54-56.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-29-19-55-26.png" alt=""></p><p>哎呀，虚拟机窗口不见了！怎么办？不要急，这就是 Parallels Destkop 的特色功能——融合模式，与 VMWare Workstation/Player for Windows 的 Unity 模式类似。融合模式可以让用户在 Mac 桌面上无缝运行Windows 应用程序，不会在屏幕上显示巨大的虚拟机窗口，就像正在使用 Windows 一样。</p><p>**那么，如何调用 Windows 应用程序呢？**只需要点击程序坞（Dock）中的 Windows 11 开始按钮，就可以显示 Windows 11 的开始菜单。接下来的操作就与在 Windows 11 中一样。<br><img src="https://img.kukmoon.com/2025-03-29-19-57-00.png" alt=""></p><h3 id="2-5-输入法">2.5 输入法</h3><p>这个 Windows 11 ARM64 精简版已经默认开启了微软拼音作为中文输入法，默认状态为中文输入状态。要是在中文和英文输入状态之间切换，只需要按 Shift 键即可。</p><p>虽然在 Parallels Desktop 虚拟机中，Mac 的 CMD 键是被当作 Windows 的 WIN 键来使用的，但是我们无法使用 CMD+Space 的组合来切换输入法，因为这个组合键与 Mac 呼出“聚焦搜索”的快捷键冲突。</p><h2 id="3-在虚拟机中安装-Microsoft-365">3  在虚拟机中安装 Microsoft 365</h2><p>因为 Microsoft 365 包括 9 个组件，但是 MOS 考试仅涉及 5 个组件（Word、Excel、PowerPoint、Outlook、Access），<strong>为了定制安装组件，节约硬盘空间，谷月老师推荐使用 Office Tool Plus 来安装 Microsoft 365。</strong></p><p>（经测试，Office 2016/2019 无法在 Windows 11 ARM64 上安装运行，Office 2021 可以。）</p><h3 id="3-1-Office-Tool-Plus-简介">3.1 Office Tool Plus 简介</h3><p>Office Tool Plus 可以定制安装 Office 2016/2019/2021/2024 或 Microsoft 365，不但节约硬盘空间，而且，它是从微软官方的服务器上直接下载最新版的 Office 安装包来安装的，这样就保证了一安装就是最新版本。</p><p>本教程以 Office Tool Plus 10 为例，其他版本的操作与之类似。这款软件的主界面如下：<br><img src="https://img.kukmoon.com/2025-03-30-06-58-14.png" alt=""></p><h3 id="3-2-安装-Microsoft-365">3.2 安装 Microsoft 365</h3><p>点击 Office Tool Plus 主界面左侧的“部署”，就进入了安装 Office 的流程。这款软件按照程序员的习惯，把安装 Office 称为“部署”。保持图中红色箭头所指的四个选项与图中一致。<strong>注意</strong>：“体系结构”选“32 位”。在 Windows 11 ARM64 中，X86 架构的应用程序都是通过转译方式运行的，32 位的应用程序转译的效率和兼容性比 64 位高。而且很多 Office 第三方插件仅支持 32 位的 Office。<br><img src="https://img.kukmoon.com/2025-03-30-06-59-09.png" alt=""></p><p>在 Office Tool Plus 的窗口右侧向下翻页，或者调整窗口大小，找到并点击“添加产品”。<br><img src="https://img.kukmoon.com/202411282053284.png" alt=""></p><p>谷月老师强烈推荐 Microsoft 365。它拥有最快的功能更新，也匹配最新的 MOS 365 考试。选择 “Microsoft 365 （家庭和个人版）（产品 ID: O365HomePremiumRetail)”，点击“确定”。<br><img src="https://img.kukmoon.com/2025-03-30-07-03-55.png" alt=""></p><p>向下翻页，在“产品”组中，Word、Excel、PowerPoint 三件套是必选的；Outlook、Access 是可选的，如果你要报考 Outlook 或 Access 的考试，就选择它；其他组件一律不选。此处以三件套为例。<br><img src="https://img.kukmoon.com/2025-03-30-07-07-58.png" alt=""></p><p>向上翻页，找到并点击“开始部署”。<br><img src="https://img.kukmoon.com/2025-03-30-07-08-58.png" alt=""></p><p>在弹出的对话框中点击“是”。<br><img src="https://img.kukmoon.com/2025-03-30-07-11-55.png" alt=""></p><p>进入 Office 的部署界面。Office Tool Plus 会用 Office 部署工具从微软的服务器上直接下载“当前通道”的 Office 最新版本安装包并安装到本机。<br><img src="https://img.kukmoon.com/2025-03-30-07-12-54.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-30-07-13-20.png" alt=""></p><p>我们需要耐心等待，直到出现“一切已就绪”为止，然后点击“关闭”。<br><img src="https://img.kukmoon.com/2025-03-30-07-14-13.png" alt=""></p><p>点击 Mac 屏幕右下角的 Windows 11 开始按钮，可以看到，这里增加了 Office 三件套：Word、Excel、PowerPoint 三件套。<strong>而且这三件套都是最新版本的</strong>。<br><img src="https://img.kukmoon.com/2025-03-30-07-15-19.png" alt="2025-03-30-07-15-19"></p><h2 id="4-激活-Windows-与-Office">4 激活 Windows 与 Office</h2><div class="note note-warning"><b>关于涉及破解软件的免责声明</b>：<br/>本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的，不得将上述内容用于商业或者非法用途，否则，一切后果请用户自负。本站信息来自网络，版权争议与本站无关。您必须在下载后的24个小时之内，从您的电脑中彻底删除上述内容。如果您喜欢该程序，请支持正版软件，购买注册，得到更好的正版服务。<br/><br/><b>关于各类资源的著作权免责声明</b>：<br/>根据二○○二年一月一日《计算机软件保护条例》第十七条规定：为了学习和研究软件内含的设计思想和原理，通过安装、显示、传输或者存储软件等方式使用软件的，可以不经软件著作权人许可，不向其支付报酬！鉴于此，也希望大家按此说明研究软件！谢谢！<br/><br/><b>谷月老师推荐！正版 Microsoft 365 （原 Office 365）购买链接（活动价）</b>：<br/><a href="https://item.taobao.com/item.htm?id=653928095918" target="_blank">https://item.taobao.com/item.htm?id=653928095918</a></div><p>谷月老师之前推荐的 KMSPico 和 HEU KMS Activator ，虽然都能同时激活 Windows 与 Office，但是各有其缺点，最要命的缺点是经常被杀毒软件误报。</p><p>所以这一次谷月老师推荐一款一定不会被误报的工具，MAS（Microsoft Activation Script）。它采用了最新的 HWID2 和 Ohook 技术，可以同时永久激活 Windows 和 Office。</p><p>具体有两种方法可以运行激活工具：</p><p><strong>方法一，在 Windows PowerShell 中运行以下命令</strong>：<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">irm</span> https://get.activated.win | <span class="hljs-built_in">iex</span><br></code></pre></td></tr></table></figure><br>或者<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">irm</span> https://massgrave.dev/get | <span class="hljs-built_in">iex</span><br></code></pre></td></tr></table></figure></p><p><strong>方法二，退出融合模式，然后在虚拟机窗口里双击运行 <code>MAS_AIO.cmd</code></strong><br><img src="https://img.kukmoon.com/2025-03-30-07-23-19.png" alt=""></p><p><strong>注意</strong>：如果 MAS 版本过旧，在双击 <code>MAS_AIO.cmd</code> 时，它会弹出如图所示的提示，只需要键盘上的 [0] 键，继续使用旧版即可。<br><img src="https://img.kukmoon.com/2025-03-30-07-37-49.png" alt=""></p><p>使用上述两种方法，都会进入 MAS 的主界面，如图所示。按键盘上的 [1] 键永久激活 Windows，按键盘上的 [2] 键永久激活 Office。<br><img src="https://img.kukmoon.com/2025-03-30-07-23-48.png" alt=""></p><h3 id="5-1-激活-Windows">5.1 激活 Windows</h3><p>在 MAS 的主界面选了 [1] 以后，开始激活 Windows。</p><p>当出现黄色的 Press any key to Go back 时，表示 Windows 已经激活成功，按任意键，返回到主界面。（任意键的意思是，键盘上<strong>任意</strong>一个键，但是，一般来说，<strong>下列键不可以按</strong>：Esc、F1～F12、电源键、Shift、Fn、Control、Option、Command）<br><img src="https://img.kukmoon.com/2025-03-30-07-25-32.png" alt=""></p><p><strong>注意</strong>：如果选了 [1] 但是激活 Windows 失败，我们还可以使用方法 [3] 和 [4]。这两种方法都是包激活的。</p><h3 id="5-2-激活-Office">5.2 激活 Office</h3><p>然后，在 MAS 的主界面按键盘上的 [2] 键，进入以下界面。<br><img src="https://img.kukmoon.com/2025-03-30-07-26-22.png" alt=""></p><p>在这里按键盘上的 [1] 键，开始激活 Office。</p><p>当出现黄色的 Press any key to Go back 时，表示 Office 已经激活成功，按任意键，返回到主界面。（任意键的意思是，键盘上<strong>任意</strong>一个键，但是，一般来说，<strong>下列键不可以按</strong>：Esc、F1～F12、电源键、Shift、Fn、Control、Option、Command）<br><img src="https://img.kukmoon.com/2025-03-30-07-27-03.png" alt=""></p><p>激活完毕后，点击右上角 X 按钮退出 MAS 即可。</p><h3 id="5-3-查看是否激活">5.3 查看是否激活</h3><p>我们可以看到，Windows 和 Office 都激活了。而且 Office 还可以更新到最新版本。<br><img src="https://img.kukmoon.com/2025-03-30-07-27-56.png" alt=""><br><img src="https://img.kukmoon.com/2025-03-30-07-28-16.png" alt=""></p><h2 id="6-总结">6 总结</h2><p>我们在一台 Arm 芯片的 Mac 上安装了 Parallels Desktop 20 虚拟机，又在虚拟机里安装了 Windows 11 ARM64 精简版，以及 Microsoft 365，最后用 MAS 激活 Windows 和 Office。</p><h2 id="相关阅读">相关阅读</h2><p><a href="https://blog.kukmoon.com/539b56f15222/">史上最详细 ARM Mac 虚拟机安装 Office 2021 教程 （VMWare 版）</a></p><hr><div style="text-align:center;"><h2 id="学-MOS-五分钟，少加班两小时">学 MOS 五分钟，少加班两小时</h2><p><strong>MOS</strong> 认证考试的中文全称，</p><p>是<strong>微软办公软件国际认证考试</strong>，</p><p>它是微软公司针对自家 Office 软件推出的考试，</p><p>具有无可比拟的权威性和含金量，</p><p>也是世界五百强招聘考核员工的重要标准。</p><h3 id="了解-MOS-考试">了解 MOS 考试</h3><p><a href="https://blog.kukmoon.com/0d3e29c40f40/">什么是 MOS 认证考试？考什么？看完秒懂！</a></p><h3 id="MOS报名入口">MOS报名入口</h3><p><a href="https://blog.kukmoon.com/99da6e6bf0bc/">点击此处报名，可能会有优惠券或者其他礼物掉落哟~</a></p><h3 id="学习社群">学习社群</h3><p><a href="https://jq.qq.com/?_wv=1027&amp;k=U38X9e9B">点击此处，加入我们的 QQ 群找谷月老师咨询报名</a></p><p>--------------</p><h3 id="关于谷月老师：">关于谷月老师：</h3><p><strong>谷月老师拥有博士学位，</strong></p><p>多年来从事 MOS 考试的研究、培训、营销，</p><p>具有丰富的经验，</p><p>欢迎找谷月老师咨询报名哟~</p><p>谷月老师微信号： <code>kukmoon</code></p><p>或微信识别以下二维码加谷月老师</p><p><img src="https://img.kukmoon.com/kukmoon-wei-xin-er-wei-ma.jpg" alt="谷月老师微信二维码"></p><p>--------------</p></div><h2 id="图片版权">图片版权</h2><p>题图：自绘</p><p>头图：<a href="https://isorepublic.com/photo/northern-lights-sky/">https://isorepublic.com/photo/northern-lights-sky/</a></p>]]></content>
    
    
    <summary type="html">在 Mac 上安装虚拟机软件 Parallels Desktop ，创建虚拟机，并在虚拟机中安装 Windows 11 ARM64 和 Microsoft 365，最终目的是在苹果电脑上无缝运行  Microsoft 365，助力读者复习备考 MOS 认证考试。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Mac" scheme="https://blog.kukmoon.com/tags/Mac/"/>
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>英译汉：合译法与分译法学习笔记</title>
    <link href="https://blog.kukmoon.com/2554ebbdacf1/"/>
    <id>https://blog.kukmoon.com/2554ebbdacf1/</id>
    <published>2025-02-20T23:52:27.000Z</published>
    <updated>2025-02-20T23:52:27.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/LearnEnglish.jpg" alt="英译汉：合译法与分译法学习笔记"></p><div class="note note-primary">            <p><strong>说明</strong>：本文由 DeepSeek-R1 辅助创作。</p>          </div><p>合译法与分译法是两种常用的英译汉方法，在四六级和考研中也经常考到。本文是关于合译法和分译法的详细讲解，并结合历年四六级和考研真题案例分析。</p><hr><h2 id="一、合译法与分译法的概念">一、合译法与分译法的概念</h2><h3 id="（一）合译法（Combination-Translation）">（一）合译法（Combination Translation）</h3><p><strong>定义</strong>：将原文中多个独立短句或分散信息合并为汉语的紧凑长句，利用中文“意合”特性，通过逻辑重组和语序调整实现简洁表达。</p><p><strong>适用场景</strong>：</p><ul><li>英语中由连词（and, but, which等）连接的并列句或从句</li><li>重复性描述（如名词+同位语从句）</li><li>需要增强中文流畅度的松散结构</li></ul><h3 id="（二）分译法（Division-Translation）">（二）分译法（Division Translation）</h3><p><strong>定义</strong>：将英语长难句切割为多个汉语短句，通过增补主语、连接词或调整语序，化解英文“形合”结构的复杂性。</p><p><strong>适用场景</strong>：</p><ul><li>含多层修饰的长定语/状语从句</li><li>被动语态、插入语、独立主格结构</li><li>抽象名词化短语（如the development of…）</li></ul><h3 id="（三）两者区别">（三）两者区别</h3><table><thead><tr><th><strong>特征</strong></th><th><strong>合译法</strong></th><th><strong>分译法</strong></th></tr></thead><tbody><tr><td><strong>句子结构</strong></td><td>合并短句→中文长句</td><td>拆分长句→中文短句群</td></tr><tr><td><strong>逻辑重心</strong></td><td>突出主干信息</td><td>分层递进展开细节</td></tr><tr><td><strong>典型结构</strong></td><td>定语从句、同位语、并列连词</td><td>被动语态、插入语、抽象名词化结构</td></tr><tr><td><strong>语言风格</strong></td><td>书面化、凝练</td><td>口语化、清晰</td></tr></tbody></table><h2 id="二、真题案例解析">二、真题案例解析</h2><h3 id="案例1：四级翻译真题（2023年6月）">案例1：四级翻译真题（2023年6月）</h3><p><strong>原文</strong>：</p><p><em>Tea culture, which originated in China and has a history of over 4,000 years, is now popular worldwide.</em></p><p><strong>直译问题</strong>：</p><p>“茶文化，起源于中国并有超过4000年的历史，现在在全世界流行。”</p><p>（松散不连贯，定语从句处理生硬）</p><p><strong>合译法优化</strong>：</p><p>起源于中国且拥有四千余年历史的茶文化，如今已风靡全球。</p><p><strong>技巧解析</strong>：</p><ul><li><p>将定语从句（which…）合并为前置定语，用“且”连接两个并列信息</p></li><li><p>转换“has a history of”为“拥有…历史”，避免逐字翻译</p></li><li><p>“popular worldwide”译为“风靡全球”，符合中文四字表达习惯</p></li></ul><hr><h3 id="案例2：四级翻译真题（2021年6月）">案例2：四级翻译真题（2021年6月）</h3><p><strong>原文</strong>：</p><p><em>The Great Wall, which stretches over 21,000 kilometers, was built to protect China from northern invasions.</em></p><p><strong>直译</strong>：</p><p>长城，延伸超过21,000公里，被建造用来保护中国免受北方入侵。</p><p><strong>合译法优化</strong>：</p><p>绵延两万一千余公里的长城，是为抵御北方外敌而修建的防御工程。</p><p><strong>技巧解析</strong>：</p><ul><li><p>将定语从句（which…）合并为主语同位语</p></li><li><p>转换被动语态（was built）为中文主动式「修建」</p></li><li><p>补充「防御工程」明确功能（符合中文语境需具体化）</p></li></ul><hr><h3 id="案例3：六级翻译真题（2022年12月）">案例3：六级翻译真题（2022年12月）</h3><p><strong>原文</strong>：</p><p><em>The Silk Road, stretching from China to the Mediterranean, not only facilitated trade but also promoted cultural exchanges between East and West.</em></p><p><strong>分译+合译结合</strong>：</p><p>这条从中国延伸至地中海地区的丝绸之路，既是贸易往来的重要通道，也是东西方文化交流的桥梁。</p><p><strong>技巧解析</strong>：</p><ul><li>分词短语（stretching…）合译为前置定语</li><li>并列结构（not only…but also…）分译为“既是…也是…”的比喻句式</li><li>“facilitated trade”具体化为“重要通道”，符合中文形象化表达</li></ul><hr><h3 id="案例4：六级翻译真题（2020年12月）">案例4：六级翻译真题（2020年12月）</h3><p><strong>原文</strong>：</p><p><em>Chinese calligraphy, regarded as the quintessence of Chinese culture, has been practiced for thousands of years.</em></p><p><strong>分译+合译结合</strong>：</p><p>中国书法被视为中华文化精粹，其历史传承已达数千年之久。</p><p><strong>技巧解析</strong>：</p><ul><li>将过去分词短语（regarded as…）分译为独立短句</li><li>合并主句与时间状语（has been practiced…）为「历史传承」</li><li>用「其」指代前句，保持连贯（中文代词衔接）</li></ul><hr><h3 id="案例5：考研英语一翻译真题（2021年）">案例5：考研英语一翻译真题（2021年）</h3><p><strong>原文</strong>：</p><p><em>It is the interaction between people, rather than the events that occur in their lives, that is the main focus of social psychology.</em></p><p><strong>分译法处理</strong>：</p><p>社会心理学的主要研究对象并非人生经历的具体事件，而是人与人之间的互动。</p><p><strong>技巧分析</strong>：</p><ul><li>拆分强调句结构（It is…that…）为两个对比短句</li><li>抽象名词“interaction”转化为动词短语“人与人之间的互动”</li><li>增补“研究对象”明确逻辑主语（英文隐含，中文需显化）</li></ul><hr><h3 id="案例6：考研英语一翻译真题（2019年）">案例6：考研英语一翻译真题（2019年）</h3><p><strong>原文</strong>：</p><p><em>It is this implicit or explicit reference to nature that fully justifies the use of the word “garden” to describe these synthetic constructions.</em></p><p><strong>分译法处理</strong>：</p><p>正是这种对自然或明或暗的参照，充分证明了用“花园”一词来描述这些人造建筑的合理性。</p><p><strong>技巧解析</strong>：</p><ul><li>拆分强调句（It is…that…）为「正是…，证明了…」</li><li>抽象名词（reference）转化为动词「参照」</li><li>增补「合理性」补全逻辑（英文隐含，中文需显化）</li></ul><hr><h2 id="三、使用原则"><strong>三、使用原则</strong></h2><table><thead><tr><th><strong>场景</strong></th><th><strong>合译法</strong></th><th><strong>分译法</strong></th></tr></thead><tbody><tr><td><strong>定语从句</strong></td><td>前置为「的」字结构</td><td>拆分为独立短句+复指代词（如“这”）</td></tr><tr><td><strong>被动语态</strong></td><td>转换为中文主动式或无主句</td><td>增补主语（如“人们”“我们”）</td></tr><tr><td><strong>名词化结构</strong></td><td>保留名词作主语（书面语）</td><td>转译为动词短语（口语化）</td></tr><tr><td><strong>长状语</strong></td><td>调整语序至句首</td><td>拆分为条件/因果分句（如“由于…”）</td></tr></tbody></table><p><strong>实战口诀：</strong></p><ul><li><p><strong>合译看逻辑</strong>：并短句、去冗余、强衔接<br><strong>例</strong>：<em>He opened the door. He walked into the room.</em> → 他开门走进了房间。</p></li><li><p><strong>分译破结构</strong>：拆长句、补主语、显隐含<br><strong>例</strong>：<em>The theory proposed by the scientist who won the Nobel Prize last year is groundbreaking.</em> → 这位科学家去年荣获诺贝尔奖，他提出的理论具有突破性意义。</p></li><li><p><strong>中英思维差</strong>：英文「树状」重形式，中文「竹状」重意合</p></li></ul><hr><h2 id="四、高频考点与训练建议">四、高频考点与训练建议</h2><h3 id="（一）四六级高频结构">（一）四六级高频结构</h3><ol><li><p><strong>合译法重点</strong>：</p><ul><li><p>定语从句（which/that引导）<br><strong>真题</strong>：2020年6月四级“大运河”翻译中“which connects Beijing and Hangzhou” → <strong>连接北京与杭州的</strong>大运河</p></li><li><p>同位语（如China, the third largest country in the world…）<br><strong>处理</strong>：中国作为世界第三大国家…</p></li></ul></li><li><p><strong>分译法重点</strong>：</p><ul><li><p>被动语态（be done by…）<br><strong>真题</strong>：2021年12月六级“The book was written by a famous historian” → 这本书由一位著名历史学家所著</p></li><li><p>现在分词作状语（Seeing this,…）<br><strong>处理</strong>：见此情景，…</p></li></ul></li></ol><h3 id="（二）考研翻译难点">（二）考研翻译难点</h3><ol><li><p><strong>抽象名词分译</strong>：<br><strong>例</strong>：There is a growing awareness of the importance of environmental protection. → 人们越来越意识到环保的重要性。**（增补“人们”作主语）</p></li><li><p><strong>长定语分译</strong>：<br><strong>例</strong>：The professor known for his research on artificial intelligence published a paper. → 这位教授以人工智能研究闻名，他发表了一篇论文。</p></li></ol><h3 id="（三）真题精练推荐">（三）真题精练推荐</h3><ul><li>四级：2023年6月“茶文化”、2021年12月“乡村振兴”</li><li>六级：2022年12月“丝绸之路”、2020年9月“郑和下西洋”</li><li>考研：2021年英语一翻译题（社会科学类文本）</li></ul><hr><h3 id="（四）四步拆解练习">（四）四步拆解练习</h3><ul><li>Step 1：划出句子主干（主谓宾）</li><li>Step 2：标注修饰成分（定语/状语/补语）</li><li>Step 3：判断合译/分译需求</li><li>Step 4：重组中文语序</li></ul><hr><p>掌握合译与分译的灵活运用，能显著提升翻译的准确性与流畅度。建议每天精练2-3句真题，重点标注自己易错的复合结构，逐步培养“英文解构→中文重构”的思维转换能力。</p>]]></content>
    
    
    <summary type="html">合译法与分译法是两种常用的英译汉方法，本文是关于合译法和分译法的详细讲解，并结合历年四六级和考研真题案例分析。</summary>
    
    
    
    <category term="考试" scheme="https://blog.kukmoon.com/categories/%E8%80%83%E8%AF%95/"/>
    
    
    <category term="英语学习" scheme="https://blog.kukmoon.com/tags/%E8%8B%B1%E8%AF%AD%E5%AD%A6%E4%B9%A0/"/>
    
  </entry>
  
  <entry>
    <title>MOS 认证考试报名入口</title>
    <link href="https://blog.kukmoon.com/99bc6b41f45b/"/>
    <id>https://blog.kukmoon.com/99bc6b41f45b/</id>
    <published>2025-02-02T06:10:09.000Z</published>
    <updated>2025-02-03T01:16:10.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="01-微信报名入口（推荐）">01 微信报名入口（推荐）</h2><p>如果你正在用电脑访问本页面，请用微信识别以下二维码，在手机的微信上打开本页面。</p><p><img src="https://img.kukmoon.com/2025-04-18-07-19-33.png" alt=""></p><p>然后，在手机的微信中点击以下链接其中之一：</p><table><thead><tr><th style="text-align:center"><strong>2016 版本</strong></th><th style="text-align:center"><strong>2019 版本</strong></th><th style="text-align:center"><strong>365 版本</strong></th></tr></thead><tbody><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/4fufNH">MOS 2016 大师级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/1Ln0bG">MOS 2019 总专家级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/4wTPh1">MOS 365 总专家级</a></td></tr><tr><td style="text-align:center"><strong>以下是单科报名</strong></td><td style="text-align:center"><strong>以下是单科报名</strong></td><td style="text-align:center"><strong>以下是单科报名</strong></td></tr><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/4vUekk">Word 2016 专家级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/4bcB2">Word 2019 助理级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/3f5ISJ">Word 365 助理级</a></td></tr><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/2SQwNy">Excel 2016 专家级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/2W4rqK">Excel 2019 助理级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/3dNVFa">Excel 365 助理级</a></td></tr><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/44qPsp">PowerPoint 2016 专业级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/x1XMJ">PowerPoint 2019 助理级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/1BzQko">PowerPoint 365 助理级</a></td></tr><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/27cEuh">Outlook 2016 专业级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/2cACCo">Word 2019 专家级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/1Gj1OE">Word 365 专家级</a></td></tr><tr><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/3qKiut">Access 2016 专业级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/aVC4R">Excel 2019 专家级</a></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/1RHbKM">Excel 365 专家级</a></td></tr><tr><td style="text-align:center"></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/2k7eFn">Outlook 2019 助理级</a></td><td style="text-align:center"></td></tr><tr><td style="text-align:center"></td><td style="text-align:center"><a href="https://x14vc.xetlk.com/s/3zRfxG">Access 2019 专家级</a></td><td style="text-align:center"></td></tr></tbody></table><p>扫码加谷月老师微信（或直接添加微信号：<code>kukmoon</code>）领取优惠券并咨询更多信息。</p><p><img src="https://img.kukmoon.com/kukmoon-wei-xin-er-wei-ma.jpg" alt="谷月老师微信二维码"></p><h2 id="02-淘宝报名入口">02 淘宝报名入口</h2><h3 id="2-1-报名链接">2.1 报名链接</h3><p>适合电脑端、手机端，直接点击此链接：</p><p><span style="font-size: 2em;"><a href="https://item.taobao.com/item.htm?id=645626364597">淘宝报名链接</a></span></p><h3 id="2-2-报名二维码">2.2 报名二维码</h3><p>适合手机端，用手机淘宝扫描二维码：</p><p><img src="https://img.kukmoon.com/2025-02-02-18-40-49.jpg" alt="报名二维码"></p><hr><div style="text-align:center;"><h2 id="学-MOS-五分钟，少加班两小时">学 MOS 五分钟，少加班两小时</h2><p><strong>MOS</strong> 认证考试的中文全称，</p><p>是<strong>微软办公软件国际认证考试</strong>，</p><p>它是微软公司针对自家 Office 软件推出的考试，</p><p>具有无可比拟的权威性和含金量，</p><p>也是世界五百强招聘考核员工的重要标准。</p><h3 id="了解-MOS-考试">了解 MOS 考试</h3><p><a href="https://mos.kukmoon.com/01-INTRO/shen-me-shi-MOS-ren-zheng-kao-shi-ta-kao-shen-me.html">什么是 MOS 认证考试？考什么？看完秒懂！</a></p><h3 id="MOS报名入口">MOS报名入口</h3><p><a href="https://mos.kukmoon.com/02-ENROLL/">点击此处报名，可能会有优惠券或者其他礼物掉落哟~</a></p><h3 id="学习社群">学习社群</h3><p><a href="https://jq.qq.com/?_wv=1027&amp;k=U38X9e9B">点击此处，加入我们的 QQ 群找谷月老师咨询报名</a></p><p>--------------</p><h3 id="关于谷月老师：">关于谷月老师：</h3><p><strong>谷月老师拥有博士学位，</strong></p><p>多年来从事 MOS 考试的研究、培训、营销，</p><p>具有丰富的经验，</p><p>欢迎找谷月老师咨询报名哟~</p><p>谷月老师微信号： <code>kukmoon</code></p><p>或微信识别以下二维码加谷月老师</p><p><img src="https://img.kukmoon.com/kukmoon-wei-xin-er-wei-ma.jpg" alt="谷月老师微信二维码"></p><p>--------------</p></div><hr>]]></content>
    
    
    <summary type="html">MOS 认证考试的报名入口。</summary>
    
    
    
    <category term="考试" scheme="https://blog.kukmoon.com/categories/%E8%80%83%E8%AF%95/"/>
    
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>推送到远程私有 Git 仓库提示 checked out</title>
    <link href="https://blog.kukmoon.com/a3e006830e2b/"/>
    <id>https://blog.kukmoon.com/a3e006830e2b/</id>
    <published>2025-02-01T09:48:51.000Z</published>
    <updated>2025-02-01T09:48:52.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-10-02-02-34.jpg" alt="推送到远程私有 Git 仓库提示 checked out"></p><p>在远程主机上建立了私有 Git 仓库。</p><p>在本地执行 <code>git push</code> 向远程私有 Git 仓库推送代码时，Git 提示 <code>! [remote rejected] master -&gt; master (branch is currently checked out)</code>，无法推送。</p><p>（根据分支名称不同，也可能是 <code>! [remote rejected] main -&gt; main (branch is currently checked out)</code>）。</p><p>这个问题如何解决？</p><p>问了 ChatGPT，它回答：</p><blockquote><p>当你在非裸仓库（即带有工作区的仓库）直接 <code>git push</code> 到当前分支时，可能会导致工作区文件与提交不一致。Git 通过 <code>receive.denyCurrentBranch</code> 来防止或处理这种情况。</p><p>将 <code>receive.denyCurrentBranch</code> 设为 <code>updateInstead</code>，就允许来自外部的 <code>git push</code>，并自动更新工作区。</p></blockquote><p>具体的解决方案如下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 删除并重建仓库</span><br><span class="hljs-built_in">rm</span> -rf repo<br><span class="hljs-built_in">mkdir</span> repo<br><span class="hljs-comment"># 进入目录并初始化</span><br><span class="hljs-built_in">cd</span> repo<br>git init<br><span class="hljs-comment"># 设置 receive.denyCurrentBranch</span><br>git config --<span class="hljs-built_in">local</span> receive.denyCurrentBranch <span class="hljs-string">&quot;updateInstead&quot;</span><br></code></pre></td></tr></table></figure><p>搞定！</p><hr><p><strong>图片版权</strong></p><p>题图：<a href="https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508">https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508</a></p><p>头图：Image by <a href="https://pixabay.com/users/pexels-2286921/">Pexels</a> from <a href="https://pixabay.com/photos/dark-milky-way-night-silhouette-1867202/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">在本地执行 git push 向远程私有 Git 仓库推送代码时，Git 提示 ! [remote rejected] master -&gt; master (branch is currently checked out)，无法推送。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="git" scheme="https://blog.kukmoon.com/tags/git/"/>
    
  </entry>
  
  <entry>
    <title>通过 ChatGPT 学习反思性写作</title>
    <link href="https://blog.kukmoon.com/80b75536ae8e/"/>
    <id>https://blog.kukmoon.com/80b75536ae8e/</id>
    <published>2025-01-29T13:09:42.000Z</published>
    <updated>2025-01-29T13:09:43.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-01-29-21-54-31.jpg" alt="通过 ChatGPT 学习反思性写作"></p><h2 id="一、什么是反思性写作？">一、什么是反思性写作？</h2><p>反思性写作（Reflective writing）是一种通过记录和分析个人经历、思想、感受以及学到的东西，来促进自我理解和学习的写作方式。这种写作通常以第一人称进行，<mark>注重对某个事件或经历的深度思考和评价，而不仅仅是描述事实</mark>。反思性写作被广泛应用于教育、职业发展和个人成长等领域，尤其是在成人教育和终身学习中。</p><h3 id="1-反思性写作的核心特点：">1. 反思性写作的核心特点：</h3><ol><li><p><strong>自我表达</strong>：反思性写作以个人的观点和感受为中心，强调内在的体验和情绪。</p></li><li><p><strong>批判性思考</strong>：需要作者从多个角度审视经历，分析其原因、后果以及对自己的意义。</p></li><li><p><strong>学习与成长</strong>：目标是从经历中获得洞察力和经验，从而在未来更有效地行动或决策。</p></li><li><p><strong>结构灵活</strong>：通常没有严格的格式，但可能包括描述（What happened?）、分析（Why did it happen?）和行动计划（What will you do differently next time?）等部分。</p></li></ol><h3 id="2-反思性写作的用途：">2. 反思性写作的用途：</h3><ol><li><strong>学术用途</strong>：</li></ol><ul><li><p>在教育中，反思性写作可以帮助学生整合理论与实践，特别是在实习、项目或服务学习之后。</p></li><li><p>它也可以用于评价学习成果，例如通过反思性论文记录学习过程和收获。</p></li></ul><ol start="2"><li><strong>职业发展</strong>：</li></ol><ul><li><p>在职场中，通过记录和反思关键事件，可以提升决策能力、问题解决能力以及团队合作能力。</p></li><li><p>职业规划中，通过反思职业目标和挑战，有助于制定更清晰的发展路径。</p></li></ul><ol start="3"><li><strong>个人成长</strong>：</li></ol><ul><li><p>借助反思性写作，可以更清楚地认识自己，包括价值观、优势和需要改进的地方。</p></li><li><p>有助于应对压力、管理情绪以及培养积极的思维模式。</p></li></ul><h3 id="3-反思性写作的例子：">3. 反思性写作的例子：</h3><ul><li><p>一位教师在一堂课后反思学生的参与情况和自己的教学策略。</p></li><li><p>一名护士记录她在急诊室处理紧急情况时的情感反应和专业行为。</p></li><li><p>一个团队成员在项目结束后总结团队合作中的亮点和改进点。</p></li></ul><h2 id="二、反思性写作与批判性思维有什么关系？">二、反思性写作与批判性思维有什么关系？</h2><p>反思性写作（Reflective writing）与批判性思维（Critical thinking）之间关系密切，它们互相支持，共同促进深度学习和自我提升。以下是两者关系的几个关键点：</p><hr><h3 id="1-共同点">1. <strong>共同点</strong></h3><h4 id="分析和评估的过程"><strong>分析和评估的过程</strong></h4><ul><li><p><strong>反思性写作</strong>要求作者不仅描述经历，还要分析发生了什么、为什么会这样，以及这些经历的意义。</p></li><li><p><strong>批判性思维</strong>则注重对信息和观点的逻辑性、可靠性及关联性的审视和评价。</p></li></ul><p>两者都需要深思熟虑，并避免肤浅的或未经验证的结论。</p><h4 id="探究性问题的核心"><strong>探究性问题的核心</strong></h4><ul><li><p>反思性写作经常通过提问（如“这意味着什么？”“我能从中学到什么？”）来引导深度思考。</p></li><li><p>批判性思维依赖于类似的探究过程，例如“这些证据是否充分？”“这个观点的逻辑是否成立？”</p></li></ul><hr><h3 id="2-反思性写作依赖批判性思维">2. <strong>反思性写作依赖批判性思维</strong></h3><p>在反思性写作中，批判性思维帮助作者：</p><ul><li><p><strong>组织想法</strong>：明确经历的关键点，分清哪些信息重要。</p></li><li><p><strong>识别偏见</strong>：意识到自身的成见或假设，从而更公正地评价经历。</p></li><li><p><strong>逻辑推理</strong>：深入分析因果关系，思考行动或事件的后果。</p></li><li><p><strong>提出改进计划</strong>：基于对经历的理性分析，得出具体的改进建议，而不是停留在表面的感受上。</p></li></ul><hr><h3 id="3-批判性思维从反思性写作中获益">3. <strong>批判性思维从反思性写作中获益</strong></h3><p>反思性写作可以：</p><ul><li><p><strong>提供实践情境</strong>：通过真实经历，给批判性思维提供一个具体的背景，用来训练分析和评价能力。</p></li><li><p><strong>增强思维的深度</strong>：将批判性思维从纯逻辑或理论的分析，扩展到情感、伦理和价值观等更广泛的领域。</p></li><li><p><strong>培养自我意识</strong>：通过写作反思自己的思维模式，从而识别需要调整的思维习惯。</p></li></ul><hr><h3 id="4-两者结合的应用实例">4. <strong>两者结合的应用实例</strong></h3><ul><li><p><strong>教育领域</strong>：学生通过反思性写作，不仅总结学到的知识，还批判性地评价教学内容的应用性。</p></li><li><p><strong>职业发展</strong>：员工在反思工作表现时，结合批判性思维分析哪些行为是有效的，哪些需要改进。</p></li><li><p><strong>个人成长</strong>：在记录生活经历时，批判性地思考价值观是否与实际行为一致，并探讨如何调整。</p></li></ul><hr><h3 id="5-总结：互为支撑的关系">5. <strong>总结：互为支撑的关系</strong></h3><ul><li><p>反思性写作为批判性思维提供了实践和表达的途径。</p></li><li><p>批判性思维为反思性写作提供了逻辑框架，使反思更加深入和有条理。</p></li></ul><p>两者的结合能显著提高个人的学习能力、决策能力和自我洞察力。</p><h2 id="三、反思性写作有什么框架可以使用吗？">三、反思性写作有什么框架可以使用吗？</h2><p>反思性写作可以基于多种框架进行组织和撰写。这些框架帮助作者以结构化的方式分析经历，提取意义并制定改进计划。以下是几种常见的反思性写作框架：</p><hr><h3 id="1-Gibbs-反思模型"><strong>1. Gibbs 反思模型</strong></h3><p>这是一个非常常用的框架，结构清晰，适合初学者使用。</p><p><strong>步骤：</strong></p><ol><li><p><strong>描述（Description）：</strong> 简单陈述发生了什么。</p></li><li><p><strong>感受（Feelings）：</strong> 描述当时的情绪和感受。</p></li><li><p><strong>评价（Evaluation）：</strong> 分析哪些方面做得好，哪些需要改进。</p></li><li><p><strong>分析（Analysis）：</strong> 深入探讨问题的原因及其影响。</p></li><li><p><strong>结论（Conclusion）：</strong> 总结学到的教训和改进方向。</p></li><li><p><strong>行动计划（Action Plan）：</strong> 制定具体的未来行动。</p></li></ol><p><strong>优点：</strong> 结构完整，适合全面分析个人经验。</p><p><strong>应用：</strong> 学术写作、项目复盘、职业反思等。</p><hr><h3 id="2-Kolb-体验学习模型"><strong>2. Kolb 体验学习模型</strong></h3><p>该框架以体验为核心，强调从实践中学习。</p><p><strong>步骤：</strong></p><ol><li><p><strong>具体经验（Concrete Experience）：</strong> 描述你亲身经历的事件。</p></li><li><p><strong>观察与反思（Reflective Observation）：</strong> 回顾经验，关注重要细节。</p></li><li><p><strong>抽象概念化（Abstract Conceptualization）：</strong> 提取理论和通用原则。</p></li><li><p><strong>主动实验（Active Experimentation）：</strong> 将学到的内容应用到未来行动中。</p></li></ol><p><strong>优点：</strong> 强调理论与实践的结合，适合学习与技能发展反思。</p><p><strong>应用：</strong> 教育培训、技能实践中的反思。</p><hr><h3 id="3-Schon-的反思实践模型"><strong>3. Schön 的反思实践模型</strong></h3><p>该框架适用于专业实践中的即时反思与事后反思。</p><p><strong>步骤：</strong></p><ol><li><p><strong>实践中的反思（Reflection-in-action）：</strong> 在实践过程中立即分析和调整行为。</p></li><li><p><strong>实践后的反思（Reflection-on-action）：</strong> 事后回顾行为，总结经验教训。</p></li></ol><p><strong>优点：</strong> 适用于解决实际问题或改进技能。</p><p><strong>应用：</strong> 医学、教育、咨询等实时决策的场景。</p><hr><h3 id="4-Driscoll-的“我-我们-它”模型"><strong>4. Driscoll 的“我-我们-它”模型</strong></h3><p>这是一个简洁易用的框架，由三个核心问题组成。</p><p><strong>步骤：</strong></p><ol><li><p><strong>发生了什么？（What?）</strong> 描述事件或经历。</p></li><li><p><strong>这意味着什么？（So what?）</strong> 分析意义或影响。</p></li><li><p><strong>接下来怎么办？（Now what?）</strong> 确定下一步行动或改进措施。</p></li></ol><p><strong>优点：</strong> 简单明了，适合快速反思。</p><p><strong>应用：</strong> 学习总结、短期项目回顾。</p><hr><h3 id="5-Rolfe-et-al-的反思模型"><strong>5. Rolfe et al. 的反思模型</strong></h3><p>该模型也基于三个核心问题，但更强调批判性分析。</p><p><strong>步骤：</strong></p><ol><li><p><strong>What?（描述）：</strong> 描述发生了什么。</p></li><li><p><strong>So what?（分析）：</strong> 探讨问题的原因、影响及意义。</p></li><li><p><strong>Now what?（计划）：</strong> 制定应对未来挑战的策略。</p></li></ol><p><strong>优点：</strong> 直观易懂，适合批判性反思。</p><p><strong>应用：</strong> 医疗实践、教师培训等。</p><hr><h3 id="6-Borton-的发展框架"><strong>6. Borton 的发展框架</strong></h3><p>这是 Rolfe 模型的基础版本，以三个简单问题为核心。</p><p><strong>步骤：</strong></p><ol><li><p><strong>What?</strong> 描述情境或问题。</p></li><li><p><strong>So what?</strong> 分析其影响。</p></li><li><p><strong>Now what?</strong> 制定改进措施。</p></li></ol><p><strong>优点：</strong> 简洁高效，适合初学者或快速反思。</p><p><strong>应用：</strong> 工作日志、短期项目反思。</p><hr><h3 id="7-四环学习模型（The-4Fs）"><strong>7. 四环学习模型（The 4Fs）</strong></h3><p>这个模型强调学习过程的不同维度。</p><p><strong>步骤：</strong></p><ol><li><p><strong>Facts（事实）：</strong> 描述发生的事情。</p></li><li><p><strong>Feelings（感受）：</strong> 描述你的情感和反应。</p></li><li><p><strong>Findings（发现）：</strong> 提取经验教训或重要信息。</p></li><li><p><strong>Future（未来）：</strong> 制定改进计划。</p></li></ol><p><strong>优点：</strong> 平衡情感和逻辑，便于记录。</p><p><strong>应用：</strong> 团队活动总结、个人学习反思。</p><hr><h3 id="选择框架的建议"><strong>选择框架的建议</strong></h3><ol><li><p><strong>目标导向：</strong> 根据反思的目的选择框架（如深度分析适用 Gibbs，快速总结适用 Driscoll）。</p></li><li><p><strong>时间限制：</strong> 简单模型（如 Rolfe 或 Driscoll）适合快速反思，复杂模型（如 Gibbs 或 Kolb）适合深入反思。</p></li><li><p><strong>个人偏好：</strong> 根据你的写作习惯和主题，选择最适合自己的框架。</p></li></ol><h2 id="四、把文章（essay）写成什么样，才算是优秀的反思性写作？">四、把文章（essay）写成什么样，才算是优秀的反思性写作？</h2><p>一篇优秀的反思性写作需要在结构、内容和语言表达等方面达到一定的标准，同时体现出深刻的个人思考和对经验的批判性分析。以下是优秀反思性写作的关键要素和特征：</p><hr><h3 id="1-清晰的结构"><strong>1. 清晰的结构</strong></h3><p>优秀的反思性写作通常有一个明确的框架，使读者能够轻松跟随作者的思路。推荐采用以下结构：</p><ul><li><p><strong>引言</strong>：简要介绍反思的主题、背景和目的。</p></li><li><p><strong>主体</strong>：</p></li><li><p><strong>描述阶段</strong>：清楚描述事件或经历。</p></li><li><p><strong>分析阶段</strong>：探讨事件的意义、原因和影响。</p></li><li><p><strong>感受与评价</strong>：分享情感和批判性评价。</p></li><li><p><strong>改进与计划</strong>：提出具体的行动计划或未来改进措施。</p></li><li><p><strong>结论</strong>：总结反思的主要收获和未来发展方向。</p></li></ul><hr><h3 id="2-批判性思维"><strong>2. 批判性思维</strong></h3><p>反思性写作需要深入探讨，而不仅仅是简单地叙述经历。以下几点是批判性思维的体现：</p><ul><li><p><strong>提出问题</strong>：探究事件的本质和原因（如“为什么会这样？”“我为什么这样选择？”）。</p></li><li><p><strong>多角度分析</strong>：从不同视角评估事件（如个人角度、团队角度、社会角度等）。</p></li><li><p><strong>承认局限</strong>：坦率承认自己的不足，并思考如何改进。</p></li><li><p><strong>应用理论</strong>：将理论或框架（如 Gibbs 反思模型）结合到分析中，以提升深度。</p></li></ul><hr><h3 id="3-深刻的自我意识"><strong>3. 深刻的自我意识</strong></h3><p>反思性写作需要揭示作者的自我认识，包括：</p><ul><li><p><strong>情感体验</strong>：真实地表达当时的感受（如焦虑、兴奋或挫败）。</p></li><li><p><strong>价值观反思</strong>：探讨如何通过经历挑战自己的既有信念或假设。</p></li><li><p><strong>成长与改变</strong>：明确说明通过反思获得的成长，以及这些经验对未来行为的影响。</p></li></ul><hr><h3 id="4-平衡感"><strong>4. 平衡感</strong></h3><p>一篇优秀的反思性文章需要在不同方面达到平衡：</p><ul><li><p><strong>叙述与分析</strong>：避免过于详细的叙述，确保分析部分占据更大的比重。</p></li><li><p><strong>正面与负面</strong>：既承认成功之处，又坦率指出不足和失败。</p></li><li><p><strong>主观与客观</strong>：在表达个人感受的同时，结合客观的事实和理论支持。</p></li></ul><hr><h3 id="5-具体与有针对性"><strong>5. 具体与有针对性</strong></h3><p>优秀的反思性写作通过具体的例子来支持观点，而非泛泛而谈。例如：</p><ul><li><p><strong>具体描述</strong>：用细节展示关键事件（如“在团队讨论中，我因担心自己的观点被否定而保持沉默”）。</p></li><li><p><strong>精准分析</strong>：探讨具体行为的背景、原因及其影响，而不是模糊的总结。</p></li></ul><hr><h3 id="6-未来导向"><strong>6. 未来导向</strong></h3><p>反思性写作的核心目标是改进行为。文章需要明确阐述如何将反思的结果运用到未来：</p><ul><li><p><strong>可操作的计划</strong>：提出具体的步骤（如“我计划在未来的团队讨论中提前准备两三个观点，并主动发言”）。</p></li><li><p><strong>关注长远发展</strong>：思考反思经历如何影响个人职业生涯、学术发展或日常生活。</p></li></ul><hr><h3 id="7-专业与流畅的语言"><strong>7. 专业与流畅的语言</strong></h3><p>尽管反思性写作通常是个人化的，但语言表达仍需清晰、流畅、专业：</p><ul><li><p><strong>语气</strong>：使用适度正式的语气，不要过于随意或主观化。</p></li><li><p><strong>简洁性</strong>：避免冗长或重复，确保语言精炼。</p></li><li><p><strong>逻辑性</strong>：按事件的发展或分析的深度组织段落，确保读者能轻松理解。</p></li><li><p><strong>适当的理论支持</strong>：引用相关的理论、研究或模型增强分析深度（如 Kolb、Gibbs 或 Schön 模型）。</p></li></ul><hr><h3 id="8-体现反思的深度"><strong>8. 体现反思的深度</strong></h3><p>优秀的反思性写作往往能够触及深层次的问题，而不仅仅停留在表面：</p><ul><li><p>从“我做了什么”深入到“为什么这样做”或“如果再做一次，我会如何改变”。</p></li><li><p>将个人经验与更大的背景（如社会、文化或行业）联系起来。</p></li></ul><hr><h3 id="9-示例片段：优秀的反思性写作"><strong>9. 示例片段：优秀的反思性写作</strong></h3><p><strong>引言</strong>：</p><p>“在本学期的团队项目中，我担任了组长，但由于缺乏经验，我在协调团队任务时遇到了许多挑战。这篇文章将通过 Gibbs 反思模型，分析我在团队合作中的表现，并探讨我从中学到的经验。”</p><p><strong>描述</strong>：</p><p>“项目开始时，我试图为团队制定详细的任务计划，但由于沟通不充分，部分成员并未完全理解自己的任务，这导致了后期的工作延误。”</p><p><strong>分析与评价</strong>：</p><p>“这次经历让我意识到，作为组长，清晰的沟通比制定复杂的计划更为重要。虽然我准备了任务分工表，但我忽视了确认每个成员是否完全理解任务。这反映了我在领导和沟通方面的不足，同时也让我认识到有效沟通的重要性。”</p><p><strong>未来计划</strong>：</p><p>“在未来的团队项目中，我将定期与成员开会确认任务进展，同时采用更加开放的沟通方式，例如邀请他们提出反馈和建议。”</p><hr><p>通过清晰结构、批判性分析和行动导向，一篇反思性写作不仅能够总结经验，还能促进持续成长。</p><h2 id="五、用-Gibbs-反思模型写一个反思性写作的案例。例子要具体一些。不要空洞的指示。">五、用 Gibbs 反思模型写一个反思性写作的案例。例子要具体一些。不要空洞的指示。</h2><p>下面是基于 <strong>Gibbs反思模型</strong> 重写的案例。这种模型包括六个阶段：描述、感受、评价、分析、结论和行动计划。</p><hr><h3 id="1-描述（Description）：发生了什么？"><strong>1. 描述（Description）：发生了什么？</strong></h3><p>上个月，我第一次被任命为项目经理，负责领导一个五人团队开发客户的网站。项目的目标是在四周内完成一个功能齐全的交互式网站。刚开始，我们分工明确，我制定了任务清单并分派给各成员。然而，随着项目推进，问题开始浮现：任务进度落后、团队沟通不畅，某些成员对分配的任务感到吃力。最终，我们在截止日期前一天勉强完成了项目，但客户反馈说某些功能没有完全达到需求，表示不满意。</p><hr><h3 id="2-感受（Feelings）：当时的感受是什么？"><strong>2. 感受（Feelings）：当时的感受是什么？</strong></h3><p>刚开始我对担任项目经理感到兴奋，这是一份新的责任，让我有机会展现能力。但随着问题的出现，我开始感到焦虑和无助。特别是在中期意识到进度严重滞后时，我对自己的领导能力产生了怀疑。当客户反馈负面意见时，我感到非常失望和内疚，认为自己辜负了团队和客户的期望。</p><hr><h3 id="3-评价（Evaluation）：哪些方面做得好？哪些需要改进？"><strong>3. 评价（Evaluation）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面</strong>：</p><ul><li><p>在初期，我明确分工并设定了总体目标，为团队指明了方向。</p></li><li><p>我们最终按时完成了项目，尽管质量存在问题，但团队还是尽了最大的努力。</p></li></ul><p><strong>需要改进的方面</strong>：</p><ul><li><p>团队沟通不足，导致一些问题在初期未被发现和解决。</p></li><li><p>我低估了任务的复杂性，没有合理安排时间表或设置缓冲时间。</p></li><li><p>在面对问题时，我缺乏主动寻求帮助的意识。</p></li><li><p>对客户需求的理解不到位，导致最终结果偏离预期。</p></li></ul><hr><h3 id="4-分析（Analysis）：问题的原因是什么？"><strong>4. 分析（Analysis）：问题的原因是什么？</strong></h3><ul><li><p><strong>沟通问题</strong>：团队会议流于形式，我更注重下达任务而非倾听反馈，这让团队成员感到难以表达他们的困难或建议。</p></li><li><p><strong>计划不足</strong>：项目启动时，我没有创建详细的时间表，也没有预估潜在风险或制定应急预案。</p></li><li><p><strong>角色分配不当</strong>：一些任务分配给了经验不足的成员，而我未能及时给予足够的支持。</p></li><li><p><strong>客户需求的偏差</strong>：我们没有与客户保持持续沟通，导致对需求的理解停留在初期的设想中。</p></li></ul><hr><h3 id="5-结论（Conclusion）：从这次经历中学到了什么？"><strong>5. 结论（Conclusion）：从这次经历中学到了什么？</strong></h3><ul><li><p><strong>倾听的重要性</strong>：作为项目经理，我需要更主动地倾听团队成员的反馈，鼓励他们分享意见和挑战。</p></li><li><p><strong>计划与灵活性</strong>：制定详细的项目计划至关重要，但更重要的是在需要时能够灵活调整。</p></li><li><p><strong>支持团队成员</strong>：在任务分配后，我需要持续关注成员的工作进度并提供帮助，而不是简单地认为他们能够自行完成。</p></li><li><p><strong>以客户为中心</strong>：在项目过程中，持续与客户沟通以确保满足需求是提高工作成果的重要一步。</p></li></ul><hr><h3 id="6-行动计划（Action-Plan）：未来如何改进？"><strong>6. 行动计划（Action Plan）：未来如何改进？</strong></h3><ul><li><p><strong>改善团队沟通</strong>：建立定期的一对一沟通机制，同时在团队会议中分配更多时间用于倾听成员的意见和建议。</p></li><li><p><strong>优化项目计划</strong>：在未来的项目中，制定详细的时间表，明确每个阶段的目标，并预留缓冲时间以应对意外问题。</p></li><li><p><strong>提供培训与支持</strong>：在任务分配时评估成员的能力，必要时提供培训或资源，并随时给予支持。</p></li><li><p><strong>强化客户沟通</strong>：每周定期与客户确认进度，并在项目完成前多次演示成果，以确保与需求一致。</p></li><li><p><strong>记录反思</strong>：在每个项目结束后，通过反思性写作记录经验教训，并将改进措施纳入下一次工作。</p></li></ul><hr><h3 id="总结："><strong>总结：</strong></h3><p>通过使用 <strong>Gibbs反思模型</strong> 分析这次经历，我对自己的不足有了更清晰的认识，并制定了详细的改进计划。我相信这些措施将帮助我在未来的项目管理中更高效地带领团队，达成优质的成果。</p><h2 id="六、用-DIEP-模型改写这篇用-Gibbs-反思模型撰写的文章">六、用 DIEP 模型改写这篇用 Gibbs 反思模型撰写的文章</h2><h3 id="用-DIEP-模型改写-Gibbs-反思模型文章"><strong>用 DIEP 模型改写 Gibbs 反思模型文章</strong></h3><hr><h3 id="1-描述（Describe）：发生了什么？"><strong>1. 描述（Describe）：发生了什么？</strong></h3><p>上个月，我第一次担任项目经理，领导一个五人团队开发客户的网站，目标是在四周内完成一个交互式网站。起初，我制定了任务清单并分配给团队成员，然而，随着项目的推进，我们遇到了多重问题，包括任务进度滞后、沟通不畅，以及部分成员在技术上遇到困难。尽管团队在截止日期前一天勉强完成了项目，但客户反馈说某些功能未完全符合需求，表现出不满。</p><hr><h3 id="2-解释（Interpret）：这意味着什么？"><strong>2. 解释（Interpret）：这意味着什么？</strong></h3><p>这次经历让我意识到，领导一个项目不仅仅是分工和设定目标，还涉及团队沟通、时间管理和应对突发情况的能力。团队成员在任务中遇到困难却未能及时反馈，表明沟通机制存在问题。此外，我对项目难度的预估不足，导致任务安排不合理，没有留出足够的缓冲时间来应对突发问题。此外，与客户的沟通较少，使我们对需求的理解停留在初期设想，导致最终交付的产品未完全符合预期。</p><hr><h3 id="3-评估（Evaluate）：哪些方面做得好？哪些需要改进？"><strong>3. 评估（Evaluate）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面</strong>：</p><ul><li><p>设定了明确的目标和任务分工，使团队在项目初期方向清晰。</p></li><li><p>团队成员尽管遇到困难，但仍齐心协力完成了项目，表现出较好的协作精神。</p></li></ul><p><strong>需要改进的方面</strong>：</p><ul><li><p><strong>沟通问题</strong>：我在团队会议中更关注任务分派，而忽略了倾听团队成员的反馈，导致问题未能及时暴露和解决。</p></li><li><p><strong>计划不足</strong>：时间安排过于紧凑，没有预留缓冲时间，导致项目中期进度滞后。</p></li><li><p><strong>支持不足</strong>：部分任务分配给了经验较少的成员，而我未能提供足够的指导和帮助。</p></li><li><p><strong>客户沟通缺乏</strong>：未能与客户保持定期沟通，导致最终交付的产品偏离需求。</p></li></ul><hr><h3 id="4-计划（Plan）：未来如何改进？"><strong>4. 计划（Plan）：未来如何改进？</strong></h3><ul><li><p><strong>改善团队沟通</strong>：在未来的项目中，我将建立定期的一对一会议，确保团队成员有机会表达他们的困难和建议。同时，在团队会议中增加反馈环节，以便及时发现并解决问题。</p></li><li><p><strong>优化项目管理</strong>：制定更详细的项目计划，包括合理的时间安排和缓冲时间，以应对可能的延误和挑战。</p></li><li><p><strong>加强团队支持</strong>：在任务分配时更充分考虑团队成员的能力，并提供必要的培训和资源，以确保他们能够顺利完成任务。</p></li><li><p><strong>强化客户沟通</strong>：每周与客户确认进度，并在项目完成前多次演示成果，以确保与需求一致，减少最终交付时的偏差。</p></li><li><p><strong>持续反思与改进</strong>：在每个项目结束后，我将通过反思性写作记录经验教训，并根据总结的改进措施，优化未来的工作方式。</p></li></ul><hr><h3 id="总结：-2"><strong>总结：</strong></h3><p>通过 DIEP 模型改写后，这篇反思性写作更加聚焦于“经历的意义”和“未来的改进计划”，不仅描述了具体情况，还提供了深度分析和改进方案，使得反思更具实用性和可执行性。</p><h2 id="七、再用-Gibbs-反思模型写一个反思性写作的案例。">七、再用 Gibbs 反思模型写一个反思性写作的案例。</h2><h3 id="案例：一次公开演讲的经历（基于-Gibbs-反思模型）">案例：一次公开演讲的经历（基于 Gibbs 反思模型）</h3><hr><h3 id="1-描述（Description）：发生了什么？-2"><strong>1. 描述（Description）：发生了什么？</strong></h3><p>上周，我在公司的季度会议上进行了第一次公开演讲，主题是“提升团队协作的策略”。准备过程中，我花了大量时间制作幻灯片并背诵演讲内容。然而，当站上台后，我感到非常紧张，不仅忘记了部分内容，还在一些问题环节回答得不够清晰。整个演讲持续了约15分钟，虽然完成了，但结束后我注意到观众的反应并不积极，只有少数人提了问题。</p><hr><h3 id="2-感受（Feelings）：当时的感受是什么？-2"><strong>2. 感受（Feelings）：当时的感受是什么？</strong></h3><p>在准备阶段，我感到兴奋，认为这是展示自己能力的好机会。然而，当站上台面对听众时，我感到极度紧张，特别是在忘词的那一刻，甚至有些沮丧。演讲结束后，我感到尴尬和失落，觉得自己没有达到预期的表现。同时，我也有些懊悔，认为如果多练习几次，可能会更好。</p><hr><h3 id="3-评价（Evaluation）：哪些方面做得好？哪些需要改进？-2"><strong>3. 评价（Evaluation）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面：</strong></p><ul><li><p>我选择了一个有意义的主题，内容与听众的工作密切相关。</p></li><li><p>制作的幻灯片简洁明了，视觉效果良好。</p></li></ul><p><strong>需要改进的方面：</strong></p><ul><li><p>我的紧张情绪影响了表达，导致声音颤抖，语速不稳定。</p></li><li><p>缺乏与听众的互动，仅仅是单方面的讲述，显得缺乏吸引力。</p></li><li><p>对提问的准备不足，回答不够自信且不够清晰。</p></li></ul><hr><h3 id="4-分析（Analysis）：问题的原因是什么？-2"><strong>4. 分析（Analysis）：问题的原因是什么？</strong></h3><ul><li><p><strong>紧张情绪</strong>：由于缺乏公开演讲经验，我对台上的环境不熟悉，导致临场发挥失常。</p></li><li><p><strong>准备不充分</strong>：尽管花了很多时间准备内容，但忽视了练习演讲的实际表现，尤其是面对听众的练习。</p></li><li><p><strong>缺乏互动技巧</strong>：我专注于完成演讲内容，没有设计互动环节或提出开放性问题吸引观众的参与。</p></li><li><p><strong>忽视提问环节</strong>：对潜在问题的考虑不够深入，回答显得仓促。</p></li></ul><hr><h3 id="5-结论（Conclusion）：从这次经历中学到了什么？-2"><strong>5. 结论（Conclusion）：从这次经历中学到了什么？</strong></h3><ul><li><p><strong>演讲不仅仅是内容</strong>：准备好内容固然重要，但如何自信地表达、与听众互动才是成功的关键。</p></li><li><p><strong>练习是必不可少的</strong>：多次模拟练习，尤其是在接近真实的环境中演练，可以帮助缓解紧张情绪。</p></li><li><p><strong>预见问题</strong>：提前预想听众可能会提出的问题，并准备好清晰的回答，将有助于增强信心。</p></li><li><p><strong>互动和参与</strong>：通过提问或讨论，让听众成为演讲的一部分，可以提升他们的参与度和兴趣。</p></li></ul><hr><h3 id="6-行动计划（Action-Plan）：未来如何改进？-2"><strong>6. 行动计划（Action Plan）：未来如何改进？</strong></h3><ul><li><p><strong>提升表达技巧</strong>：参加公开演讲培训或加入类似 Toastmasters 的组织，提高表达能力和舞台自信。</p></li><li><p><strong>更多模拟练习</strong>：在演讲前邀请同事或朋友模拟观众，多次练习，并征求反馈。</p></li><li><p><strong>设计互动环节</strong>：在幻灯片中增加开放性问题或小测试，鼓励听众参与讨论。</p></li><li><p><strong>准备提问清单</strong>：提前列出与主题相关的潜在问题，并设计清晰简洁的回答方案。</p></li><li><p><strong>管理紧张情绪</strong>：学习深呼吸、冥想等放松技巧，以在演讲前缓解紧张。</p></li></ul><hr><h3 id="总结：-3"><strong>总结：</strong></h3><p>通过这次反思，我对公开演讲的要求和自身不足有了更清晰的认识，并制定了具体的改进措施。我期待在下一次演讲中能够表现得更加自信、专业，获得更好的观众反馈。</p><h2 id="八、用-DIEP-模型改写这篇用-Gibbs-反思模型撰写的文章">八、用 DIEP 模型改写这篇用 Gibbs 反思模型撰写的文章</h2><h3 id="用-DIEP-模型改写-Gibbs-反思模型文章-2"><strong>用 DIEP 模型改写 Gibbs 反思模型文章</strong></h3><hr><h3 id="1-描述（Describe）：发生了什么？-2"><strong>1. 描述（Describe）：发生了什么？</strong></h3><p>上周，我在公司的季度会议上进行了人生中的第一次公开演讲，主题是“提升团队协作的策略”。为了准备这次演讲，我花费了大量时间制作幻灯片，并努力背诵演讲内容。然而，当我站上讲台时，紧张感突然袭来，导致我忘记了部分内容，并且在提问环节回答得不够清晰。整个演讲持续了约15分钟，虽然完成了，但我注意到观众的反应并不积极，只有少数人提出了问题。</p><hr><h3 id="2-解释（Interpret）：这意味着什么？-2"><strong>2. 解释（Interpret）：这意味着什么？</strong></h3><p>这次经历让我意识到，成功的演讲不仅仅依赖于充分的内容准备，更需要自信的表达和有效的听众互动。我原以为只要熟悉演讲内容就能顺利进行，但忽略了现场的紧张感对表现的影响。此外，缺乏与听众的互动使得演讲缺乏吸引力，而对提问环节的准备不足也让我在回答问题时显得不够自信。这说明，我在演讲技巧和应对临场问题的能力上还有很大的提升空间。</p><hr><h3 id="3-评估（Evaluate）：哪些方面做得好？哪些需要改进？-2"><strong>3. 评估（Evaluate）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面：</strong></p><ul><li><p>选择了一个有意义的主题，与听众的日常工作密切相关，使内容具有实际价值。</p></li><li><p>制作的幻灯片简洁明了，视觉效果良好，增强了信息的传递。</p></li></ul><p><strong>需要改进的方面：</strong></p><ul><li><p><strong>克服紧张情绪</strong>：由于缺乏演讲经验，我的声音颤抖，语速不稳定，影响了表达效果。</p></li><li><p><strong>增加听众互动</strong>：演讲以单向讲述为主，没有设计互动环节，导致听众的参与度不高。</p></li><li><p><strong>增强提问应对能力</strong>：对可能的提问准备不足，回答时显得不够自信和流畅。</p></li></ul><hr><h3 id="4-计划（Plan）：未来如何改进？-2"><strong>4. 计划（Plan）：未来如何改进？</strong></h3><ul><li><p><strong>提升表达技巧</strong>：参加公开演讲培训或加入类似 Toastmasters 的组织，提高口才和舞台表现力。</p></li><li><p><strong>增加模拟练习</strong>：在正式演讲前，邀请同事或朋友作为模拟听众，多次练习，并征求反馈。</p></li><li><p><strong>设计互动环节</strong>：在演讲中增加提问、小测验或案例讨论，鼓励听众参与，以提升演讲的吸引力。</p></li><li><p><strong>准备应对问题的策略</strong>：列出可能被问到的问题，提前组织清晰的回答，提高回答的自信度和准确性。</p></li><li><p><strong>管理紧张情绪</strong>：在演讲前进行深呼吸或冥想练习，培养心理韧性，以更自信的心态应对演讲挑战。</p></li></ul><hr><h3 id="总结：-4"><strong>总结：</strong></h3><p>通过 DIEP 模型改写后，这篇反思性写作更加注重分析这次演讲的意义，并针对问题制定了具体的改进计划。相比 Gibbs 反思模型的写作方式，这种方式更突出“从经验中学习”的实践价值，使反思更具方向性和可操作性。</p><h2 id="九、用-Gibbs-反思模型写学生将反思性写作用于学习的案例。">九、用 Gibbs 反思模型写学生将反思性写作用于学习的案例。</h2><h3 id="案例：学生使用反思性写作改进学习方法（基于-Gibbs-反思模型）">案例：学生使用反思性写作改进学习方法（基于 Gibbs 反思模型）</h3><hr><h3 id="1-描述（Description）：发生了什么？-3"><strong>1. 描述（Description）：发生了什么？</strong></h3><p>在过去一个学期中，我发现自己的考试成绩比预期差。尽管每天花费数小时学习，但学习效果不明显。我参加了一门关于“学习技巧与反思性写作”的选修课，老师要求我们在每次学习后记录反思日志，包括学习目标、遇到的困难和改进方法。起初，我觉得这很麻烦，但坚持了一个月后，我发现学习效率有了显著提高。</p><hr><h3 id="2-感受（Feelings）：当时的感受是什么？-3"><strong>2. 感受（Feelings）：当时的感受是什么？</strong></h3><p>起初，我对写反思日志持怀疑态度，觉得只是浪费时间。然而，随着我开始记录每天的学习情况，我逐渐感受到反思的价值。每当我意识到自己的问题并找到改进方法时，会感到一种成就感。同时，看到自己的进步让我对学习更有信心。</p><hr><h3 id="3-评价（Evaluation）：哪些方面做得好？哪些需要改进？-3"><strong>3. 评价（Evaluation）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面：</strong></p><ul><li><p>通过反思性写作，我能够更清晰地识别学习中的问题，例如时间管理和注意力分散。</p></li><li><p>记录改进措施（例如分阶段学习或使用记忆宫殿法）帮助我更有效率地学习。</p></li></ul><p><strong>需要改进的方面：</strong></p><ul><li><p>反思日志一开始太过冗长，导致写作花费的时间过多。</p></li><li><p>有时我只关注问题本身，而没有制定具体的行动计划。</p></li></ul><hr><h3 id="4-分析（Analysis）：问题的原因是什么？-3"><strong>4. 分析（Analysis）：问题的原因是什么？</strong></h3><ul><li><p><strong>时间管理</strong>：在没有反思之前，我对学习时间的分配不合理，把大块时间浪费在低效的任务上。</p></li><li><p><strong>注意力分散</strong>：学习时常被手机或其他干扰分散注意力，而我没有采取足够的措施解决这个问题。</p></li><li><p><strong>反思方式</strong>：最初的反思没有关注行动计划，导致实际改进有限。</p></li><li><p><strong>学习策略</strong>：我习惯死记硬背，却忽视了更有效的学习方法，例如分散学习、实践运用等。</p></li></ul><hr><h3 id="5-结论（Conclusion）：从这次经历中学到了什么？-3"><strong>5. 结论（Conclusion）：从这次经历中学到了什么？</strong></h3><ul><li><p><strong>反思性写作的价值</strong>：通过写作，我能系统地回顾学习过程，明确自己的优势和需要改进的地方。</p></li><li><p><strong>具体行动计划的重要性</strong>：仅仅识别问题是不够的，制定切实可行的计划才能带来改变。</p></li><li><p><strong>持续改进</strong>：反思不是一次性的，而是一个需要反复进行的过程，每次反思都会带来新的收获。</p></li><li><p><strong>学习方法</strong>：采用科学的学习策略（如间隔复习）能显著提高效率，而不是一味地增加学习时间。</p></li></ul><hr><h3 id="6-行动计划（Action-Plan）：未来如何改进？-3"><strong>6. 行动计划（Action Plan）：未来如何改进？</strong></h3><ul><li><p><strong>优化反思日志格式</strong>：使用表格记录关键点（如学习目标、困难、改进措施），以减少写作时间。</p></li><li><p><strong>坚持反思习惯</strong>：每天花10分钟进行学习反思，每周总结一次进展。</p></li><li><p><strong>改善时间管理</strong>：采用番茄工作法，将学习时间分成25分钟的专注时间段，减少干扰。</p></li><li><p><strong>加强学习策略</strong>：尝试更多科学的学习方法，例如费曼技巧、主动回忆等。</p></li><li><p><strong>反馈循环</strong>：定期查看之前的反思日志，评估改进措施的有效性，并调整学习计划。</p></li></ul><hr><h3 id="总结：-5"><strong>总结：</strong></h3><p>通过将反思性写作融入学习，我逐渐摆脱了低效的学习习惯，建立了更加科学的学习方法。这一过程让我认识到，反思并不是简单的记录，而是促进学习和成长的重要工具。</p><h2 id="十、用-DIEP-模型改写这篇用-Gibbs-反思模型撰写的文章">十、用 DIEP 模型改写这篇用 Gibbs 反思模型撰写的文章</h2><hr><h3 id="1-描述（Describe）：发生了什么？-3"><strong>1. 描述（Describe）：发生了什么？</strong></h3><p>在过去一个学期中，我的考试成绩比预期差，尽管每天花费数小时学习，但学习效果不明显。后来，我选修了一门关于“学习技巧与反思性写作”的课程，老师要求我们在每次学习后记录反思日志，包括学习目标、遇到的困难和改进方法。起初，我认为这很麻烦，但坚持一个月后，我发现自己的学习效率显著提高。</p><hr><h3 id="2-解释（Interpret）：这意味着什么？-3"><strong>2. 解释（Interpret）：这意味着什么？</strong></h3><p>这次经历让我意识到，学习不仅仅是投入时间，还需要有效的方法和策略。过去，我习惯盲目地延长学习时间，却没有系统地分析问题和调整方法。而通过反思日志，我可以清楚地看到自己的学习模式，识别低效的地方，并尝试改进措施。这不仅帮助我提高了学习效率，也让我对学习更有掌控感。</p><hr><h3 id="3-评估（Evaluate）：哪些方面做得好？哪些需要改进？-3"><strong>3. 评估（Evaluate）：哪些方面做得好？哪些需要改进？</strong></h3><p><strong>做得好的方面：</strong></p><ul><li><p>通过反思日志，我能更清晰地识别学习中的问题，例如时间管理不当和注意力分散。</p></li><li><p>记录改进措施（例如分阶段学习或使用记忆宫殿法）帮助我提高了学习效率。</p></li></ul><p><strong>需要改进的方面：</strong></p><ul><li><p>反思日志初期写得过于详细，花费了过多时间，降低了可持续性。</p></li><li><p>反思时有时只关注问题，而没有制定具体的行动计划，导致改进效果有限。</p></li></ul><hr><h3 id="4-计划（Plan）：未来如何改进？-3"><strong>4. 计划（Plan）：未来如何改进？</strong></h3><ul><li><p><strong>优化反思日志格式</strong>：使用表格或简要笔记的形式记录关键点（如学习目标、困难、改进措施），减少写作时间，提高效率。</p></li><li><p><strong>坚持反思习惯</strong>：每天花10分钟进行学习反思，每周总结一次进展，并调整策略。</p></li><li><p><strong>改善时间管理</strong>：采用番茄工作法（每25分钟学习后休息5分钟），提高专注度，减少分心。</p></li><li><p><strong>强化学习策略</strong>：尝试更科学的学习方法，如费曼技巧（通过讲解加深理解）、主动回忆和间隔学习。</p></li><li><p><strong>建立反馈机制</strong>：定期回顾之前的反思日志，评估改进措施的有效性，并进行调整，以持续优化学习方式。</p></li></ul><hr><h3 id="总结：-6"><strong>总结：</strong></h3><p>通过 DIEP 反思模型改写后，这篇反思更加聚焦于学习经历的意义，并强调了具体的改进计划。这不仅有助于明确自身的学习问题，也为未来的改进提供了清晰的方向。</p><h2 id="3-图片版权">3 图片版权</h2><p>题图：用 <a href="https://raphael.app/">Raphal</a> 自制</p><p>头图：Image by <a href="https://pixabay.com/users/pexels-2286921/">Pexels</a> from <a href="https://pixabay.com/photos/dark-milky-way-night-silhouette-1867202/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">借助 ChatGPT，以一问一答的形式学习「反思性写作」。</summary>
    
    
    
    <category term="笔记" scheme="https://blog.kukmoon.com/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="自我提升" scheme="https://blog.kukmoon.com/tags/%E8%87%AA%E6%88%91%E6%8F%90%E5%8D%87/"/>
    
    <category term="写作" scheme="https://blog.kukmoon.com/tags/%E5%86%99%E4%BD%9C/"/>
    
  </entry>
  
  <entry>
    <title>部署 RSSHub 遇见的坑</title>
    <link href="https://blog.kukmoon.com/80cb34f66e0d/"/>
    <id>https://blog.kukmoon.com/80cb34f66e0d/</id>
    <published>2025-01-12T12:23:04.000Z</published>
    <updated>2025-01-12T12:23:04.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2025-01-12-21-01-25.jpg" alt="部署 RSSHub 遇见的坑"></p><p>为了增加 RSS 订阅源，我在 VPS 上部署了 RSSHub。将主要步骤以及遇到的坑简要记载如下。</p><h2 id="1-部署-RSSHub">1 部署 RSSHub</h2><p>我的 VPS 运行 Ubuntu 操作系统，已经安装了 Nginx 提供 Web 服务，已经从 Docker 官网安装了 Docker。</p><p>按照 RSSHub 的官方文档<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="https://docs.rsshub.app/zh/deploy/">[1]</span></a></sup>，用 Docker 部署 RSSHub 一切顺利。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">mkdir</span> ~/rsshub<br><span class="hljs-built_in">cd</span> ~/rsshub<br>wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml<br>docker compose up -d<br></code></pre></td></tr></table></figure><h2 id="2-掉坑与脱坑">2 掉坑与脱坑</h2><p>因为 Cloudflare 会过滤从 TTRSS 到 RSSHub 的请求<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="https://github.com/HenryQW/Awesome-TTRSS/issues/514#issuecomment-2131228771">[2]</span></a></sup>，所以当我把 TTRSS 和 RSSHub 都接入 Cloudflare 的 CDN，TTRSS 就无法订阅 RSSHub 的订阅源。</p><p>我采取的解决办法是：保持 TTRSS 不动，不再让 RSSHub 接入 CDN。</p><h3 id="2-1-在-Cloudflare-中设置-DNS-解析">2.1 在 Cloudflare 中设置 DNS 解析</h3><p>在 Cloudflare 的 DNS 解析中，将 <a href="http://rsshub.kukmoon.com">rsshub.kukmoon.com</a> 的“代理状态”设置为“仅 DNS”<br><img src="https://img.kukmoon.com/2025-01-12-20-40-57.png" alt="设置 DNS 解析"></p><h3 id="2-2-设置反向代理">2.2 设置反向代理</h3><p>新建一个站点配置文件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo nano /etc/nginx/sites-available/rsshub.kukmoon.com.conf<br></code></pre></td></tr></table></figure><p>粘贴以下内容<sup id="fnref:3" class="footnote-ref"><a href="#fn:3" rel="footnote"><span class="hint--top hint--rounded" aria-label="https://blog.kukmoon.com/e44895733a8e/">[3]</span></a></sup>：</p><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><code class="hljs nginx"><span class="hljs-section">server</span><br>&#123;<br>    <span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;<br>    <span class="hljs-attribute">server_name</span> rsshub.kukmoon.com;<br>    <br>    <span class="hljs-comment"># https &amp; ssl</span><br>    <span class="hljs-attribute">listen</span> <span class="hljs-number">443</span> ssl http2;<br>    <span class="hljs-attribute">if</span> (<span class="hljs-variable">$ssl_protocol</span> = <span class="hljs-string">&quot;&quot;</span>) &#123; <span class="hljs-attribute">return</span> <span class="hljs-number">301</span> https://<span class="hljs-variable">$host</span><span class="hljs-variable">$request_uri</span>; &#125;<br>    <span class="hljs-attribute">ssl_certificate</span> ;<br>    <span class="hljs-attribute">ssl_certificate_key</span> ;<br>    <span class="hljs-attribute">ssl_protocols</span> TLSv1.<span class="hljs-number">1</span> TLSv1.<span class="hljs-number">2</span> TLSv1.<span class="hljs-number">3</span>;<br>    <span class="hljs-attribute">ssl_ciphers</span> EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;<br>    <span class="hljs-attribute">ssl_prefer_server_ciphers</span> <span class="hljs-literal">on</span>;<br>    <span class="hljs-attribute">ssl_session_cache</span> shared:SSL:<span class="hljs-number">10m</span>;<br>    <span class="hljs-attribute">ssl_session_timeout</span> <span class="hljs-number">10m</span>;<br>    <span class="hljs-attribute">add_header</span> Strict-Transport-Security <span class="hljs-string">&quot;max-age=31536000&quot;</span>;<br><br><br>    <span class="hljs-comment"># Forbidden files or directories</span><br>    <span class="hljs-section">location</span> <span class="hljs-regexp">~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)</span><br>    &#123;<br>        <span class="hljs-attribute">return</span> <span class="hljs-number">404</span>;<br>    &#125;<br><br>    <span class="hljs-comment"># reversed proxy</span><br>    <span class="hljs-section">location</span> / &#123;<br>        <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:1200/;<br>        <span class="hljs-attribute">rewrite</span><span class="hljs-regexp"> ^/(.*)$</span> /<span class="hljs-variable">$1</span> <span class="hljs-literal">break</span>;<br>        <span class="hljs-attribute">proxy_redirect</span> <span class="hljs-literal">off</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> Host <span class="hljs-variable">$host</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> X-Real-IP <span class="hljs-variable">$remote_addr</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-Ssl <span class="hljs-literal">on</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-For <span class="hljs-variable">$proxy_add_x_forwarded_for</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-Proto <span class="hljs-variable">$scheme</span>;<br>        <span class="hljs-attribute">proxy_set_header</span> X-Frame-Options SAMEORIGIN;<br>        <span class="hljs-attribute">proxy_set_header</span> Upgrade-Insecure-Requests <span class="hljs-number">1</span>;<br><br><br>        <span class="hljs-attribute">client_max_body_size</span>        <span class="hljs-number">100m</span>;<br>        <span class="hljs-attribute">client_body_buffer_size</span>     <span class="hljs-number">128k</span>;<br><br>        <span class="hljs-attribute">proxy_buffer_size</span>           <span class="hljs-number">4k</span>;<br>        <span class="hljs-attribute">proxy_buffers</span>               <span class="hljs-number">4</span> <span class="hljs-number">32k</span>;<br>        <span class="hljs-attribute">proxy_busy_buffers_size</span>     <span class="hljs-number">64k</span>;<br>        <span class="hljs-attribute">proxy_temp_file_write_size</span>  <span class="hljs-number">64k</span>;<br><br>    &#125;<br>    <br><br>&#125;<br></code></pre></td></tr></table></figure><h3 id="2-3-自动获取证书">2.3 自动获取证书</h3><p>我一开始为了图方便，申请了 Cloudflare 的 15 年证书，该证书必须与 Cloudflare CDN 配合使用。但是现在 <a href="https://rsshub.kukmoon.com">https://rsshub.kukmoon.com</a> 既然不使用 Cloudflare 的 CDN，这个证书就不能用了。</p><p>有鉴于此，我用 Certbot 从 Let’s Encrypt 申请证书<sup id="fnref:4" class="footnote-ref"><a href="#fn:4" rel="footnote"><span class="hint--top hint--rounded" aria-label="https://blog.csdn.net/qq_34010538/article/details/133825978">[4]</span></a></sup>。</p><p>安装 Certbot（只需安装一次）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo apt update<br>sudo apt install certbot python3-certbot-nginx<br></code></pre></td></tr></table></figure><p>获取和安装证书（为 <code>kukmoon.com</code> 申请的证书，不能用于 <code>rsshub.kukmoon.com</code>）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo certbot --nginx -d rsshub.kukmoon.com<br></code></pre></td></tr></table></figure><p>测试自动更新：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo certbot renew --dry-run<br></code></pre></td></tr></table></figure><p>若测试成功，证书将自动更新，无需任何其他操作。</p><h2 id="3-图片版权">3 图片版权</h2><p>题图：Image by <a href="https://www.flickr.com/photos/gdesigneralex/">gdesigneralex</a> from <a href="https://www.flickr.com/photos/gdesigneralex/2308324544">flickr</a></p><p>头图：Image by <a href="https://pixabay.com/users/pexels-2286921/">Pexels</a> from <a href="https://pixabay.com/photos/dark-milky-way-night-silhouette-1867202/">Pixabay</a></p><h2 id="4-参考文献">4 参考文献</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://docs.rsshub.app/zh/deploy/">https://docs.rsshub.app/zh/deploy/</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="https://github.com/HenryQW/Awesome-TTRSS/issues/514#issuecomment-2131228771">https://github.com/HenryQW/Awesome-TTRSS/issues/514#issuecomment-2131228771</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:3" class="footnote-text"><span><a href="https://blog.kukmoon.com/e44895733a8e/">https://blog.kukmoon.com/e44895733a8e/</a><a href="#fnref:3" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:4" class="footnote-text"><span><a href="https://blog.csdn.net/qq_34010538/article/details/133825978">https://blog.csdn.net/qq_34010538/article/details/133825978</a><a href="#fnref:4" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
    
    
    <summary type="html">为了增加 RSS 订阅源，我在 VPS 上部署了 RSSHub。将主要步骤以及遇到的坑简要记载如下。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="前端" scheme="https://blog.kukmoon.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="RSS" scheme="https://blog.kukmoon.com/tags/RSS/"/>
    
  </entry>
  
  <entry>
    <title>巴哈姆特动画疯视频一直加载该怎么办?</title>
    <link href="https://blog.kukmoon.com/4842f012956c/"/>
    <id>https://blog.kukmoon.com/4842f012956c/</id>
    <published>2024-12-27T06:56:33.000Z</published>
    <updated>2024-12-27T06:56:34.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-27-15-27-48.png" alt="巴哈姆特动画疯视频一直加载该怎么办?"></p><p>我用 Firefox 火狐浏览器上<a href="https://ani.gamer.com.tw/">巴哈姆特动画疯</a>看动画，但是视频一直加载不出来。怎么办？</p><p><img src="https://img.kukmoon.com/2024-12-27-14-59-43.png" alt="视频一直加载不出来"></p><p>经过摸索，解决方案如下。</p><ol><li><p>科学上网。动画疯只允许台湾地区和港澳地区的用户观看，如果 IP 不在这三地，则无法观看。需要配置科学上网的代理，使用台湾、香港、或者澳门的节点连接动画疯。</p></li><li><p>广告系统被拦截。动画疯要求免费用户先看广告才能看视频。所以需要把以下域名加入科学上网代理的白名单，以及广告拦截插件（例如 uBlock、AdBlock）的白名单。巴哈姆特的广告基于谷歌广告。</p><p>与巴哈姆特自身功能有关的域名：</p> <figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">bahamut.akamaized.net<br>bahamut.com.tw<br>digicert.com<br>facebook.net<br>gamer.com.tw<br>gvt1.com<br>hinet.net<br>viblast.com<br></code></pre></td></tr></table></figure><p>与谷歌广告有关的域名</p> <figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">fonts.gstatic.com<br>g.doubleclick.net<br>googlesyndication.com<br>imasdk.googleapis.com<br>s0.2mdn.net<br>www.googletagmanager.com<br></code></pre></td></tr></table></figure></li><li><p>配置 DNS。建议使用阿里 DNS，<code>233.5.5.5</code> 和 <code>233.6.6.6</code>。如果用阿里 DNS 还不行，需要另外配置 DoH（DNS-over-https）。</p></li><li><p>关闭浏览器的硬件加速功能，需要重启浏览器才生效。<br><img src="https://img.kukmoon.com/2024-12-27-15-09-14.png" alt="关闭浏览器的硬件加速功能"></p></li></ol><p><strong>参考文献</strong></p><ol><li><a href="https://blog.csdn.net/Vox___/article/details/133956115">https://blog.csdn.net/Vox___/article/details/133956115</a></li></ol><p><strong>图片版权</strong></p><p>题图：来自巴哈姆特动画疯网站，一切权利归台湾旺普网路资讯股份有限公司 所有。</p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">在巴哈姆特动画疯看动画时，视频一直加载不出来，怎么办？</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="网络技术" scheme="https://blog.kukmoon.com/tags/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/"/>
    
    <category term="二次元" scheme="https://blog.kukmoon.com/tags/%E4%BA%8C%E6%AC%A1%E5%85%83/"/>
    
  </entry>
  
  <entry>
    <title>用 Typora 和 Sourcetree（Git）写小说</title>
    <link href="https://blog.kukmoon.com/76b61279b3aa/"/>
    <id>https://blog.kukmoon.com/76b61279b3aa/</id>
    <published>2024-12-26T15:12:41.000Z</published>
    <updated>2024-12-26T15:12:42.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-26-23-32-07.jpg" alt="用 Typora 和 Sourcetree（Git）写小说"></p><div class="note note-info">            <p>原文首发知乎，在这里（<a href="https://www.zhihu.com/pin/1850652449024647168">https://www.zhihu.com/pin/1850652449024647168</a>）和这里（<a href="https://www.zhihu.com/pin/1855057390212366336">https://www.zhihu.com/pin/1855057390212366336</a>）。</p><p>收入博客后有改动。</p>          </div><p><strong>我开始试着用 Typora + Sourcetree（Git） 来写小说。</strong></p><h2 id="优势：">优势：</h2><ol><li>用 Typora 可以专注于内容，无需为格式分心。</li><li>用 Sourcetree 进行版本管理超方便，可以记录每一次修改。Sourcetree 的背后其实是 Git，Sourcetree 是 Git 的图形界面客户端。</li><li>稿件同步到 GitHub，不用担心本地稿件丢失，还可以在不同的电脑之间同步。此处 cue 一下金山 WPS，它毁了多少写手的稿子……</li><li>用 Typora 撰写的 MarkDown（MD）文件可以直接与 Hexo 对接，发布到博客。</li></ol><h2 id="劣势：">劣势：</h2><ol><li>Typora 性能有限，处理长文档比较困难。</li><li>Sourcetree（Git）入门比较困难，需要专门学习。</li><li>Typora 是付费软件。</li></ol><h2 id="机会：">机会：</h2><ol><li>Typora + Sourcetree （Git）的竞品主要是 MS Word 和金山 WPS，后两者的版本管理功能相对比较弱。</li></ol><h2 id="威胁：">威胁：</h2><ol><li>Typora + Sourcetree （Git）需要配置才能使用，而 MS Word 和金山 WPS 开箱即用。这会削弱非程序员用户对 Typora + Sourcetree （Git）的热情。</li></ol><h2 id="实战指南">实战指南</h2><p>每写一稿，就在 Sourcetree 中提交一次，产生版本记录（图 1）。<br><img src="https://img.kukmoon.com/2024-12-26-23-17-52.jpg" alt="图 1"></p><p>每修改一次，也在 Sourcetree 中提交一次，可以比对当前文件与上一次提交的文件之间的差异（图 2）<br><img src="https://img.kukmoon.com/2024-12-26-23-18-34.jpg" alt="图 2"></p><p>如果有奇思妙想，但是偏离了小说的主线，就开一个分支（图 3），把这些奇思妙想写在新分支的小说原稿中，保存，提交，再返回原来的分支继续写主线。必要时再把新分支合并到主线。<br><img src="https://img.kukmoon.com/2024-12-26-23-19-01.jpg" alt="图 3"></p><h2 id="图片版权">图片版权</h2><p>题图：Image by <a href="https://pixabay.com/users/stocksnap-894430/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=923188">StockSnap</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=923188">Pixabay</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">用 Typora 和 Sourcetree（Git）怎样写小说？本文进行了 SWOT 分析并给出了实战指南。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="git" scheme="https://blog.kukmoon.com/tags/git/"/>
    
    <category term="GitHub" scheme="https://blog.kukmoon.com/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>逆风之约：与抑郁交织的爱情</title>
    <link href="https://blog.kukmoon.com/522a9a150c99/"/>
    <id>https://blog.kukmoon.com/522a9a150c99/</id>
    <published>2024-12-24T12:14:46.000Z</published>
    <updated>2024-12-24T12:14:47.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-24-20-41-51.jpg" alt="逆风之约：与抑郁交织的爱情"></p><h2 id="声明">声明</h2><div class="note note-warning">            <p>这篇小说原名《大风吹过抑郁和爱情》，其 <a href="https://zhuanlan.zhihu.com/p/22298602"><strong>大纲</strong></a> 是由谷月（是作者本人，不是小说主角）撰写的，而小说全文是由谷月使用 <a href="https://claude.ai"><strong>Claude</strong></a>-3.5-Sonnet-200K 创作的。文风为晋江文风。</p><p><strong>本文内容，纯属虚构，如有雷同，是你抄我。</strong></p>          </div><blockquote><p>北大六院的病房里，我遇见了他。</p><p>他说喜欢听风声，像我一样。</p><p>我们怀着帮助抑郁群体的梦想一起奋斗，考上了北大心理系。</p><p>可谁知命运的风突然转向，他离开了。</p><p>但风中永远有他的呼吸，有我们的梦想，有我继续前行的力量。</p></blockquote><h2 id="01-抑郁少女">01 抑郁少女</h2><p>我叫谷月，生在青岛这座靠海的城市。</p><p>青岛的风，总是让人猝不及防。尤其是春秋两季，阳光灿烂得像一张笑脸，风声却像太古巨兽的咆哮。海风裹挟着咸涩的气息，呼啸着穿过街道，钻进每一个角落。</p><p>这样的天气，就像我的人生，看起来明亮，可内里全是荒芜。</p><p>我总是一个人躲在房间里，听着窗外的风声发呆。</p><p>从幼儿园开始，我就觉得自己与其他人不一样，孤独像一块湿冷的石头，沉甸甸地压在心底。</p><p>当幼儿园的其他女孩子叽叽喳喳地围在一起时，我更愿意独自坐在角落，默默地看着窗外，听着窗外的风声。</p><p>「谷月，为什么不去和小朋友们一起玩呢？」老师蹲下身子，温柔地问我。</p><p>我摇摇头，把脸埋进膝盖里。我不知道该怎么回答，因为我也不明白。那种莫名的孤独感和格格不入，就像潮水一样慢慢漫上来。</p><p>小学时，情况变得更糟。</p><p>同学们组队做游戏，而我总是站在教室边缘。课间我宁愿埋头在课本里，也不愿意和他们说话。老师曾多次和我的父母沟通：「谷月似乎有些过分内向，需要关注。」</p><p>妈妈说我太安静。「月月，」她蹲下身，用力地握住我的手，「你要学会和别人交流。」</p><p>可我不知道该如何开口。那些活泼的孩子们看我的眼神里带着疑惑，仿佛我是另一个世界的生物。我害怕主动搭话，更害怕被拒绝。</p><p>风从窗户缝隙钻进来，轻轻地拍打窗帘。妈妈不知道，这阵风成了我最早的朋友。它不会嘲笑我，不会躲开我，只是静静地拂过我的脸颊。</p><p>上了初中，状态急转直下。</p><p>我开始失眠，经常整夜整夜地睡不着。躺在床上，听着窗外的风声，内心空落落的。白天上课时，常常会莫名其来地想哭，但又说不出具体为什么难过。</p><p>躁动的青春期，本应是激情澎湃的年龄，对我来说却是噩梦的开始。同学们开始谈论梦想、爱情和未来，而我只想做一只隐形的鸟儿，随着大风扶摇而上，离开这喧嚣的尘世。</p><p>「妈，我今天不想去学校。」这句话，我说过无数次。</p><p>「又怎么了？」妈妈蹲下来，握住我的手。</p><p>「我不知道…就是…很难受。」我低着头，不敢看她的眼睛。</p><p>那种感觉很难形容。就像是被一团看不见的乌云笼罩，呼吸变得困难，心跳变得沉重。有时候半夜会突然惊醒，感觉整个世界都在坍塌。</p><p>十五岁那年，妈妈第一次带我去市精神卫生中心看心理医生。</p><p>「你觉得自己是一个什么样的人？」医生问我。</p><p>我盯着诊室的天花板，轻声回答：「我是一个多余的人。」</p><p>「为什么这么说？」</p><p>「因为…即使我不存在，这个世界也不会有任何改变。」</p><p>诊断结果是重度抑郁症。我并不意外，仿佛从出生起就带着这个标签。</p><p>升上高中以后，抑郁像命运展开的一张无形的大网，慢慢地将我缠绕得越来越紧。每天早上醒来，我都感到一种无法名状的疲惫。我竭尽全力也只能勉强维持成绩不下滑，随着我的状态越来越差，父母的担心越来越明显。</p><p>十七岁的春天，我的抑郁症状达到了顶峰。</p><p>那是一个早春的日子，春寒料峭，风像刀子一样让人冷到骨子里。我站在高中教室的窗边，看着窗外的梧桐树在风中摇曳。树影婆娑，斑驳的阳光透过枝叶在课桌上留下细碎的光影。这是我最喜欢的位置，靠窗的最后一排，像一个安静的旁观者。</p><p>「谷月，该上课了。」同桌小林轻声提醒我。下一节是班主任王老师的数学课。</p><p>我机械地点点头，缓慢地挪回座位。周围的同学们三三两两地聚在一起说笑，没人注意到我。这很好，我已经习惯了。</p><p>从小到大，我似乎都是这样的存在——像一缕风，悄无声息地飘过，不被任何人记住。</p><p>我在数学课堂上突然崩溃。班主任王老师在讲台上正讲着双曲线的标准方程，我突然眼泪不受控制地流下来，呼吸变得急促，整个人蜷缩在座位上发抖。</p><p>全班同学都被我突如其来的崩溃吓到了。我听见周围传来窃窃私语，有人说我装疯卖傻，有人说我是为了博取关注。但我什么都听不进去，只觉得整个世界都在旋转，喘不过气来。</p><p>王老师赶紧叫来了校医，我被送进了医务室。那天下午，妈妈提前下班来接我。在回家的出租车上，我靠在她肩上默默流泪。车窗外的风依然在呼啸，掀起路边梧桐树的枝叶。</p><p>「对不起，妈妈…」我哽咽着说。</p><p>「傻孩子，有什么好对不起的。」妈妈紧紧握住我的手，「明天我们去医院看看，好不好？」</p><p>我知道妈妈心里有多难过。自从我小时候第一次表现出与其他孩子的不同，她就开始自责。她总是说，一定是她没有给我足够的关爱，才让我变得这么敏感脆弱。</p><p>其实不是她的错。我只是生来就与这个世界格格不入。</p><p>伴随着窗外大风的呼啸声，市精神卫生中心的江主任推了推眼镜：「谷月，你最近的情况又严重了，要不要考虑去北京的北大六院看看？那里的专家更有经验。」</p><h2 id="02-初遇小宇">02 初遇小宇</h2><p>在第一朵迎春花悄然开放的时节，我们一家三口坐上了去北京的动车。迎春花在风中轻轻地摇曳，仿佛在向我们道别。我凝视着车窗外飞速后退的景色，青岛的红瓦绿树、碧海蓝天渐渐消失在视野里。</p><p>「月月，在北京住院期间，你就安心养病。」妈妈握着我的手说，「其他的事情都不要想。」</p><p>我第一次站在北大六院的门口时，发现北京的风比青岛还要大。风卷着杨柳絮，在空中打着旋儿，凛冽的大风吹来华北平原的干燥，我忍不住舔了舔早晨涂过润唇膏的嘴唇。</p><p>我抬起头看着医院的大楼，窗户反射着阳光，不知道在这些光影后面，藏着多少和我一样抑郁的灵魂。</p><p>入院手续比想象中顺利。医生说我的情况属于重度抑郁，建议先住院观察治疗。我被安排在三楼的女性病区，和三个女病号住在一起。她们都有着自己的故事，但四个人谁都不愿意主动提起。</p><p>第二天上午，护士带我参观病房环境。</p><p>「这是阳光房，」护士推开一扇明亮的玻璃门，「每天上午九点到下午四点都开放，你可以在这里看书、画画，或者和其他病友聊天。」</p><p>阳光房很宽敞，四周都是落地窗，阳光毫无保留地洒进来。几张桌子旁零星坐着几个病人，有的在看书，有的在发呆。</p><p>我选了一个靠窗的位置坐下。外面的风很大，把远处的白杨树吹得簌簌作响。</p><p>「这个位置的阳光最好。」</p><p>一个温和的男声传来。我抬头，看见一个白净的男生站在我对面。他个子很高，略微瘦削，穿着一件浅蓝色的病号服。</p><p>「我每天都在这里晒太阳，」他指了指我的位置，「听着风声，特别舒服。」</p><p>「抱歉，我占了你的位置…」我慌忙要起身。</p><p>「没事，」他在我对面坐下，「我也只是随便找个地方坐坐。这风吹得挺大，不是吗？」</p><p>此时一阵大风正好吹进来，把桌上几张散落的纸片卷得翩翩起舞。我下意识地伸手去抓，他也跟着动作。纸片在我们头顶盘旋，像一群不愿落地的蝴蝶。</p><p>「我叫宋晓宇，你可以叫我小宇。」他把飘到自己这边的纸片递给我。</p><p>我接过纸片，注意到上面是些随手涂画的线条。</p><p>阳光透过玻璃窗洒在他的侧脸上，镀上一层柔和的金边。他的眼睛很干净，却藏着一丝我熟悉的忧郁。</p><p>「我叫谷月。」我听见自己说。</p><p>但不知道为什么，面对这个叫小宇的男生，我竟然没有感到平常的那种不安。</p><p>也许是因为他眼里那种似曾相识的忧郁。也许是因为他看起来和我一样，都在寻找一个可以安静晒太阳的角落。又或者是因为他说话时那种轻柔的语气，让我想起了家乡的海风。</p><p>那一刻，我还不知道，这个叫小宇的男生会改变我的一生。我更不知道，在未来的日子里，每当听见大风吹过，我都会想起他温柔的笑容。</p><p>从那天起，我和小宇都心照不宣地在阳光房相遇。每天上午，我们坐在落地窗前，晒着太阳，听着外面的风声。</p><p>开始时我们都不怎么说话，只是各自看书或者发呆。但渐渐地，我发现小宇是个很特别的人。</p><p>他总是带着一本书，有时是诗集，有时是小说。那天他正捧着泰戈尔的诗集，修长的手指轻轻抚过书页。</p><p>「你喜欢泰戈尔？」我鼓起勇气问道。</p><p>「嗯，」他抬起头，眼睛里闪着光，「特别是这一句：『让我感谢你，因为你没有先说再见。』」</p><p>我愣了一下。这句诗触动了我心底最柔软的地方。</p><p>「我以前，」小宇的声音很轻，「总觉得自己格格不入。好像所有人都在匆忙地向前走，只有我站在原地，看着他们离开。」</p><p>「我也是。」我听见自己说。</p><p>那一刻，我们都沉默了。外面的风呼啸着掠过树梢，带来簌簌的响声。阳光穿过玻璃窗，在地板上投下摇曳的树影。</p><p>「其实，」过了好久，小宇才开口，「能在这里遇见同类，也是一种幸运吧。」</p><p>我抬头看他，发现他正冲我微笑。那是一个很淡的笑容，却让整个阳光房都明亮了几分。</p><p>那天之后，我们开始聊起各自喜欢的书和音乐。小宇对艺术很有研究，能说出许多我从未听说过的作品。他说起这些时，眼睛里总是带着光，仿佛整个人都鲜活起来。</p><p>「你知道吗？」有一天他突然说，「我想学心理学。」</p><p>「为什么？」</p><p>「也许是想搞明白，」他望着窗外，「为什么我们会这样。而且，」他转过头看着我，「也许将来能帮助和我们一样的人。」</p><p>那一刻，我忽然觉得，原来痛苦也能开出这样温柔的花来。</p><p>正如一句网络流行语所说，「因为自己淋过雨，所以想给别人撑把伞。」</p><p>北京的春天，风总是很大。但现在的我不再害怕这样的大风。因为在这间阳光房里，我找到了一个同样在风中站立的人。</p><p>我的病情在慢慢好转，医生说这可能和我的心态变化有关。每天早上醒来，我都会期待着去阳光房，期待着见到小宇。</p><p>那些郁结在心底的阴霾，似乎真的在一天天被阳光融化。</p><p>「你认为是什么让你和其他人格格不入？」那天，小宇突然这样问我。</p><p>我愣了一下。这个问题我问过自己无数次，却从未想明白。</p><p>「也许…是因为我总能感受到别人感受不到的东西，」我斟酌着说，「比如春天的风里带着冬天的余寒，比如人群的笑声里藏着孤独…」</p><p>「你太敏感了。」小宇轻声说。</p><p>「对。从小到大，大家都这么说。」我苦笑了一下，「妈妈说我太爱胡思乱想，老师说我太内向，同学说我太奇怪。」</p><p>「但这有什么不好呢？」小宇转头看着我，「敏感的人虽然容易受伤，却也能感受到世界最细微的美。」</p><p>窗外的风掠过树梢，带来一阵沙沙声。</p><p>「你知道吗？」他继续说，「我觉得我们不是格格不入，而是太适合这个世界了。正因为能感受到那么多，所以才会觉得痛苦。」</p><p>我怔住了。从未有人这样解释过我的「与众不同」。</p><p>「可是这样的感受力有时候真的很累，」我低下头，「就好像永远戴着一个放大镜，把所有细节都放大千万倍。」</p><p>「所以我们才会在这里相遇啊，」小宇笑了，「因为我们都需要一个能理解这种感受的人。」</p><p>阳光透过玻璃窗洒在我们中间的桌面上，微尘在光束中跳跃。这一刻，我忽然明白，原来自己并不是一个人。</p><p>在这个充满阳光的房间里，我们都不再是格格不入的异类，而是彼此最好的理解者。</p><p>「你要走了吗？」在阳光房里，我轻声问他。</p><p>「嗯，」小宇望着窗外，「我想继续学习，准备高考。」</p><p>「你想报考什么专业？」</p><p>「我想上北大，学心理学，」他转过头看着我，眼睛里闪着光，「为了将来能帮助和我们一样的人。」</p><p>我不知道哪里来的勇气，脱口而出：「我也要报北大心理学，和你一起，帮助和我们一样的人！」</p><p>小宇转过头看着我，笑得特别温柔：「那我们说好了，一起考北大心理学系。」</p><p>当我意识到自己在说什么的时候，脸颊发烫，转身跑开了。</p><p>那一刻，我才明白，原来爱情就是这样悄无声息地生长，在最意想不到的地方，在最脆弱的时候，温柔地拥抱了我。</p><p>又过了半个月，我的病情也有了明显好转。医生建议我可以出院，但要定期复诊。</p><p>收拾行李那天，北京刮起了春天最大的风。为了不让风吹乱头发，我特意扎了个丸子头。</p><p>在北京南站，我们第一次在阳光房之外见面。他还是那样白净清瘦，站在人群中特别显眼。</p><p>「谷月，」他递给我一本书，是泰戈尔的诗集，「你也要加油。」</p><p>我接过书，翻开扉页，上面写着：「愿我们在北大重逢。」</p><h2 id="03-逆风前行">03 逆风前行</h2><p>回到青岛后，我开始疯狂地学习。妈妈很担心我的身体状况，但我知道，这次不一样。我不再是为了逃避现实而把自己埋进书堆，而是为了一个明确的目标在努力。</p><p>高考结束后，我和小宇都觉得考得不太理想。查分前的那个晚上，我们一直在发短信。</p><p>「睡不着吗？」他问。</p><p>「嗯，你呢？」</p><p>「我也是。明天一早我去潭柘寺帮你求签。」</p><p>看着手机屏幕，我突然红了眼眶。深夜的青岛，海风依然在呼啸，但我的心里是暖的。</p><p>第二天，我坐在电脑前，手指颤抖着输入准考证号。</p><p>分数终于显示出来。我盯着屏幕，反复确认那个数字，685，比北大在山东省的历年录取线最低记录还低了一分。</p><p>这一分的距离，将我的梦想推向了遥不可及的远方。我颓然地躺在床上，眼泪不受控制地流下来。</p><p>小宇也没考上北大。</p><p>「去复读，还是去北师大？」他在短信里问我。以我们两人的分数，上北师大都没问题，而且北师大的心理学专业也很好。</p><p>我握着手机，沉默了很久：「你愿意陪我一起拼一年？」</p><p>「当然，」他笑了，「我们说好要一起上北大的。」</p><p>就这样，我们都选择了复读。为了同一个梦想，为了在北大的重逢。</p><p>「去胶南复读吧。」妈妈建议，「那边有个复读学校，是胶南一中出来的老师教学，环境单纯，适合学习。」</p><p>我点点头。我知道，青岛市区的高中不收复读生，而且我也需要一个远离一切干扰的环境。所以，胶南很适合我。</p><p>「我要去胶南复读，离市区 40 公里。你呢？」我发短信给小宇。</p><p>「我准备去燕郊，真巧，都是 40 公里。」他回复我，「这一定是某种缘分。」</p><p>就这样，我们相隔千里却走上了同样的复读之路。我们都明白，要在第二次高考这场硬仗中拼尽全力。</p><p>八月初，爸爸开车送我去胶南。</p><p>「月月，一定要照顾好自己。」妈妈帮我整理行李时红了眼眶，「如果感觉不舒服就立刻告诉我们。」</p><p>我知道她在担心什么。抗抑郁药我还在继续吃，每个月都要回青岛复查。但我已经逐渐学会了与抑郁共处。</p><p>复读生活比想象中还要艰苦。</p><p>这是一所专门招收复读生的学校，位于远郊，据说老师来自当地升学率最高的高中——胶南一中。教学楼灰扑扑的，操场上长着稀疏的野草。</p><p>我租住在学校附近一栋老旧的民房里，房间只有十几平米，家具是房东剩下的：一张破旧的书桌，一个掉漆的衣柜，还有一张硬板床。</p><p>每天凌晨四点半，我被闹钟叫醒。黎明前的胶南特别安静，只有远处传来零星的狗叫声。</p><p>为了节省穿衣服的时间，我总是晚上穿着内衣睡觉，闹钟声一响就迅速套上外衣，洗漱、下楼。</p><p>我摸黑下楼，地上还有未散去的夜露。到了秋天，就会变成寒霜。</p><p>「你们知道吗，她是从精神病院出来的。」同学们私下议论的声音传进我的耳朵。</p><p>我假装没听见，专注地打开课本开始早读。从小到大，我早就习惯了异样的眼光。我默默地把自己沉浸到课本中。一三五读语文，二四六读英语，星期天读生物。</p><p>「谷月，你真的很厉害。」晚自习时，我在草稿纸上演算一道复杂的导数大题，前桌的女生突然转过头来，「数学总是满分。」</p><p>我笑了笑。这大概是我唯一的优势了。从小，数学就像是上天给我的礼物，是我在混沌世界中唯一能够确定的东西。那些严谨的逻辑，清晰的推理，精确的计算，总能让我的思维变得井然有序。数学是我对抗抑郁的力量。</p><p>我每天穿梭在教室、食堂和出租房之间，看书、刷题、整理错题，生活单调到几乎没有任何波澜。只有和小宇的通信，是我平淡生活中唯一的慰藉。</p><p>因为复读学校禁止带手机，所以我只好把手机放在出租屋里。晚自习结束回到出租屋，是我每天最期待的时刻，因为可以收到来自小宇的信息。</p><p>我们每天都会交流学习心得，互相鼓励。有时候我会把做错的题拍照给他看，他也会把他的疑问发给我。我们就像两个并肩作战的战友，即使相隔千里，也在为同一个目标努力。</p><p>「今天学了什么？」小宇的信息准时到达。</p><p>「物理，多选题真的很让人头疼呢。你呢？」</p><p>「语文文言文阅读，感觉比较吃力。对了，今天我去找了个老师补课，他说我的文言文基础太差。」</p><p>「我语文老师让我们背《古汉语常用字字典》，你要不要试试？」</p><p>「诶，你还别说，补课的那个老师也推荐这本书！他是北师大汉语言文学专业的！」</p><p>有时候，我们也会相互开玩笑，给单调而高压的复读生活增加一丝丝活力。</p><p>「我这里风好大。」小宇说，「早晨跑步时感觉整个人都轻飘飘的。」</p><p>「那你小心别被风吹走了。」我笑着回复。</p><p>「放心，我会紧紧抓住北大的方向。」</p><p>复读的课业压力很大。每晚十一点才放学，每月只放一天假。离开教室时，我常常感觉双腿发软，背也酸痛得厉害。这是我的老毛病了，医生说这是抑郁症的躯体化表现。</p><p>有时候痛得实在受不了，我就偷偷躲在走廊尽头的角落里，一个人抱着膝盖发抖。全身的骨头像是被人拆散了又重组，每一个关节都在叫嚣着疼痛。</p><p>我回到家，就给小宇发信息：「我又犯病了。」</p><p>「哪里不舒服？」他总是秒回。</p><p>「浑身都疼，像是被压路机碾过一样。」</p><p>「深呼吸，想象我在你身边。&quot;他说，&quot;记得六院的医生教过的正念方法吗？先把注意力集中在呼吸上，吸…然后，呼…」</p><p>我闭上眼睛，跟着他的指引一步步做着正念。慢慢地，疼痛开始消退。</p><p>「好点了吗？」</p><p>「嗯，谢谢你。」</p><p>「别怕，我一直在。」他说，「等我们上了北大，我就可以真的陪在你身边了。」</p><p>这种躯体疼痛时不时地折磨着我，但我告诉自己不能认输。为了能和小宇一起去北大，这点苦我一定要挺过去。</p><p>有时候，我们会打个简短的电话。</p><p>电话里，我们互相鼓励。有时候会聊学习，有时候会聊理想，更多时候只是静静地听着对方的呼吸声，还有从听筒里传来的风声。</p><p>「你知道吗？」有天晚上他说，「我最喜欢和你一起听风的声音。」</p><p>「为什么？」</p><p>「因为风能把我们的思念带给对方。」</p><p>这样的话，在别人说来也许会显得矫情，但从小宇口中说出来，却让我感到温暖。</p><p>复读生活很辛苦，但我们互相鼓励。每当我感到疲惫或者焦虑，就会翻看和小宇的聊天记录。那些零碎的对话，就像繁星点点，照亮了我的夜空。</p><p>我们都明白，这一年有多重要。它不仅关系到我们的未来，更关系到我们能否重逢。</p><p>日子就这样一天天过去。秋天，银杏叶铺满地面；冬天，寒风呼啸着刮过空旷的操场；春天，樱花开了又谢；夏天，知了声声不断。</p><p>在那些孤独的夜晚，我依然会忍不住怀疑：我们真的能如愿吗？如果失败了，又该怎么办？</p><p>有一次，我忍不住问他：「小宇，你有没有想过万一我们都失败了，该怎么办？」</p><p>他的回复很快就来了：「那我们就再来一次，直到成功为止。」</p><p>屏幕上的短短几个字，让我泪流满面。我不知道他哪里来的这份坚定，但他的信念让我也开始相信，无论多难，我们都可以走到那一天。</p><p>临近高考，压力越来越大。有天晚上，我突然收到小宇的电话。</p><p>「谷月，」他的声音有些沙哑，「我今天在模拟考试时，突然特别想你。」</p><p>我握紧了手机，眼泪不自觉地流下来。</p><p>「我也是。」我说，「每次做题累了，就会想起在六院的日子。」</p><p>「等我们考上北大，就可以在一起了。」他说。</p><p>「嗯。」我擦掉眼泪，「一定会的。」</p><p>高四的最后一个月，我们约定减少联系，专心复习。但每天睡前，我们都会给对方发一条信息：</p><p>「今天也很努力。晚安。」</p><p>高四这一年，像是和时间赛跑。我们都明白，这是最后的机会。每一分每一秒都不能浪费，但我们依然会在深夜里想念彼此，想念在北大六院阳光房里共处的时光。</p><p>第二次高考，我把所有的希望和勇气都压在了每一个答案上。</p><p>当我写下最后一个字时，心里突然涌上一种奇异的平静。这一年的努力，这所有的痛苦和坚持，都将在这一刻有个交代。</p><h2 id="04-北大重逢">04 北大重逢</h2><p>考完最后一科，我走出考场，和爸爸妈妈拥抱之后，打开手机。</p><p>小宇发来消息：「结束了？」</p><p>「嗯，刚考完。你呢？」</p><p>「我也是。感觉怎么样？」</p><p>我的目光穿过喧闹的胶南城区，凝望着远方的大海：「我尽力了。」</p><p>等成绩的日子像是一场漫长的煎熬。</p><p>查分那天早上，我坐在电脑前，手指颤抖着输入准考证号。</p><p>屏幕上跳出一个数字：705 。</p><p>我愣住了，反复确认这个数字。705 分，满分 750 分的卷子，我居然考出了这样的成绩。而且其中数学考了满分 150 分。</p><p>我的心像被风吹走了一样。正在我手足无措的时候，小宇的电话打来了：「谷月！你查分数了吗？」</p><p>「嗯…」我的声音有些发抖，「我考了 705 分…」</p><p>电话那头沉默了几秒，然后传来他激动的声音：「太棒了！我就知道你一定能行！」</p><p>可是，等到查询预估录取线时，我的心又沉了下去。作为一个没有任何加分、没有综合测评成绩的山东籍复读生，即使考了 705 分，也仅仅是踩在北大录取分数线的边缘。</p><p>录取前，北大招生组的老师给我打来了电话。</p><p>「同学，你的分数确实不错，」老师说，「但是今年竞争特别激烈…不能保证你一定会被录取到心理学专业。」</p><p>我深吸一口气，鼓起勇气打断了他：「老师，能不能让我说几句话？」</p><p>然后，我把自己的故事讲给他听。我说起在北大六院的日子，说起和小宇的相遇，说起我们共同的梦想。我说去年只差一分，说今年拼尽全力，说这个梦想如何支撑着我一次又一次从抑郁的深渊里爬出来。</p><p>我的声音越来越哽咽：「这不仅仅是一个高考成绩的选择，这是我拼尽全力想要治愈自己的机会…」</p><p>电话那头沉默了很久。</p><p>「谷月同学，」招生老师的声音温和了许多，「我们会为你尽量争取的。」</p><p>一周后，我收到了北大心理学专业的录取通知书。</p><p>当我拿到通知书的那一刻，青岛的海风正呼啸着掠过这座城市。我站在阳台上，泪水模糊了视线，但是模糊不了内心的激动。</p><p>想起这一年的煎熬，想起那些疼痛的夜晚，想起小宇温柔的鼓励。此刻，所有的坚持都有了答案。</p><p>「小宇，」我发出短信，「我们终于…」</p><p>字还没打完，他的电话就打来了：「月月，我也考上了北大心理学专业！我们又要在一起了！」</p><p>窗外大风呼啸，抱着通知书，我哭成了泪人。在那个夏天，我终于实现了自己的梦想，而更重要的是，我可以和小宇重逢了。</p><p>小宇说他提前报到，参加了迎新志愿者团队，迎接大一新生。</p><p>我报到那天，北京刮起了大风。为了不让大风吹乱头发，我又扎了一个丸子头。</p><p>我拖着行李箱走在未名湖畔，风吹皱了湖面，树叶沙沙作响。</p><p>远远地，我看到他站在迎新的折叠篷下，正在热心地给来报到的新生和家长指路。他还是那么白净清瘦，阳光下的侧脸依然带着那种让我心动的忧郁感。</p><p>「小宇！宋晓宇！」我喊了一声。</p><p>他转过头，看到了我在不停地向他招手，笑容灿烂得像八月下旬的阳光：「谷月！」</p><p>我们远远地对视，仿佛整个世界都安静了。</p><p>「你们认识？」旁边有戴着红袖章的迎新志愿者问道。</p><p>小宇大步走过来，二话不说抱住了我。我把脸埋在他肩膀上，闻到阳光和风的味道。</p><p>「我们终于到这里了。」他在我耳边轻声说。</p><p>眼泪不受控制地流下来。这一刻，我们等了太久太久。我们终于跨过千山万水，跨过病痛与折磨，真正地站在了彼此面前。那些痛苦和挣扎，此刻都化作了温柔的回忆。</p><p>曾经在六院的窗前，我们望着外面的世界，幻想着重逢的模样。而现在，我们真的站在了梦想的地方。</p><p>那些努力，那些等待，那些想念，都在这一刻得到了回应。</p><p>报到结束后，我们发现分在了同一个班。</p><p>「这算不算是命中注定？」小宇握着我的手说。</p><p>我看着他的眼睛，点了点头。在这个起风的下午，我们的爱情终于有了一个正式的开始。</p><h2 id="05-甜蜜时光">05 甜蜜时光</h2><p>开学第一周，我们都在适应新的生活。作为心理学系的学生，我们的课程安排很紧凑：普通心理学、实验心理学、心理统计学…每一门课都让我们着迷。</p><p>「你发现没有？」有天下课后，小宇突然说，「我们现在学的很多理论，都能解释我们以前的症状。」</p><p>我点点头。在课堂上，当老师讲到抑郁症的发病机制时，我和小宇都会不自觉地对视一眼，眼神里是只有我们才懂的默契。</p><p>我们最喜欢的是实验课。在实验室里，我们要么做被试，要么当主试，研究人的心理活动规律。</p><p>「现在请闭上眼睛，」小宇坐在我对面，轻声说着实验指导语，「慢慢回忆一个让你感到温暖的场景…」</p><p>我闭上眼睛，第一个想到的就是北大六院的阳光房里，他给我讲泰戈尔的样子。</p><p>北大的秋天，银杏叶铺满了未名湖畔的小径。我和小宇总是手牵着手走在这条路上，落叶在风中打着旋，像一场金色的雨。</p><p>我们手牵着手走在银杏道上，树叶在风中飞舞。阳光透过树隙洒下来，斑驳地落在我们身上。</p><p>「你还记得六院的阳光房吗？」小宇问我。</p><p>「记得，那里的阳光和这里一样温暖。」</p><p>「谷月，」他停下脚步，认真地看着我，「我这一年，真的很想你。」</p><p>「我也是。」我说，「每次刷题到深夜，都会想起在六院和你在一起的日子。」</p><p>「以后不会再分开了。」他握紧我的手，「我们可以一起上课，一起自习，一起在未名湖边散步。」</p><p>「一起去食堂吃饭。」我补充道。</p><p>他笑了：「对，还有好多好多地方要一起去。」</p><p>秋风萧瑟，但不再让人感到寒冷。因为我知道，从今往后的每一天，都会有他在身边。</p><p>我们最喜欢的地方是图书馆二楼的角落。每到周末，我们就坐在那里，一起复习本周学过的课程。有时候我会偷偷抬头看他，他专注的侧脸和当初在阳光房时一模一样。</p><p>「看什么呢？」他总是能察觉到我的目光。</p><p>「看你啊，」我笑着说，「觉得你比书本有趣多了。」</p><p>食堂是我们的另一个重要据点。小宇总说五食堂的鸡排盖浇饭是他的最爱。</p><p>「怎么样？」他期待地看着我。</p><p>「真的很好吃！」我夹起一块鸡排，「难怪你总惦记着。」</p><p>「你知道吗？」有一次他突然说，「我最喜欢看你吃饭的样子。」</p><p>「为什么？」</p><p>「因为在医院的时候，你都没什么胃口。现在看你吃得香，我特别开心。」</p><p>这样的时刻总是让我鼻子一酸。原来他一直都记得，一直都在关心着我的点点滴滴。</p><p>大风天气里，小宇总是习惯性地站在我的上风处。</p><p>「你这样会很冷的。」我心疼地说。</p><p>「没事，」他笑着说，「反正我比你高，替你挡挡风应该的。」</p><p>教学楼和宿舍楼之间，总能看见我们一起走过的身影。有时候下着小雨，我们就共撑一把伞。有时候月色很好，我们就在未名湖边散步，聊着彼此的梦想。</p><p>但最让我感动的，是他总能察觉到我的情绪变化。每当我有了抑郁的征兆，他就会带我去校园里走走。</p><p>在他的陪伴下，我的病情稳定了很多。那些曾经折磨我的躯体疼痛，也变得越来越少。</p><p>大一的时光就这样静静流淌。我们都在课堂上认真地做笔记，在图书馆里刻苦钻研，在实验室里互相配合。因为我们知道，终有一天，我们会用所学的知识去帮助和曾经的我们一样的人。</p><p>冬天的时候，小宇会在我的围巾里偷偷塞进暖宝宝。春天到了，他会给我带一些新开的花。夏天的傍晚，我会买两个冰激凌，每人一个。</p><p>这样的日子平淡却温暖，像秋日的阳光，像未名湖的微风，像我们一起喝过的每一杯奶茶。</p><p>有时我会想，如果没有在六院相遇，如果没有一起努力复读，我们是否还会走到今天这一步？</p><p>但现在想这些已经不重要了。重要的是，我们真的做到了。在最美好的年纪，在最好的大学，我们一起学习，一起成长，一起治愈曾经的伤痕。</p><p>「你知道吗？」大二开学后不久，有一天晚上他突然说，「有时候我会害怕。」</p><p>「害怕什么？」</p><p>「害怕这样的日子会结束。」他握紧我的手，「但只要看着你，那些害怕就都不见了。」</p><p>我们的爱情就这样在校园里静静生长，像未名湖边的柳树，在风中摇曳，却越长越深情。</p><p>每一个角落都记录着我们的故事。从东门到西门的林荫道，从静园到燕园的小径，从百年讲堂到图书馆的台阶。风起的时候，树叶沙沙作响，仿佛在诉说我们的爱情。</p><p>但我们都没想到，命运正准备给我们重重一击。就在我们都以为这样的日子会一直继续下去的时候，噩梦悄然而至。</p><h2 id="06-生离死别">06 生离死别</h2><p>北京的冬天来得特别早。大二上学期的冬天，我开始感觉到熟悉的阴霾再次笼罩心头。那种无力感，那种深入骨髓的疲惫，又一次将我包围。</p><p>「月月，你脸色不太好。」小宇担心地看着我。</p><p>我强撑着笑了笑：「可能最近太累了。」</p><p>但他知道我在逞强。当我再次住进北大六院时，他每天都来看我。</p><p>我坐在北大六院的病床上，望着窗外光秃秃的树枝。又回到这里了，只是这一次，他不在身边。</p><p>「抑郁症复发，需要住院观察。」医生说。</p><p>然而没过多久，他的身影却开始变得稀少。起初我以为他是学业太忙，发消息问他，他也不说。</p><p>直到有一天，他的室友来北大六院看我。</p><p>「嫂子，晓宇住院了，在 301 医院，是肺癌。」室友的声音很低，「他一直不让我们告诉你，但是他现在已经晚期了，我想必须告诉你一声。」</p><p>我的世界在那一刻坍塌。这个消息像一场突如其来的风暴，把我彻底击垮。我无法接受这个事实，无法相信那个总是用笑容鼓励我的人，竟然会面临这样的命运。</p><p>住院期间不能离开医院，我着急地打电话给他。</p><p>「今天感觉怎么样？」我强装着平静。</p><p>「挺好的，」他的声音虚弱却温柔，「倒是你，要好好吃药，按时休息。」</p><p>即使在这种时候，他还在关心我。</p><p>「我想去看你。」我说。</p><p>「不行，」他说，「你现在需要好好治疗。等我们都好了，再一起去未名湖散步。」</p><p>但我们都知道，这个承诺可能永远无法实现了。</p><p>深夜里，我常常偷偷地哭。想起他曾经给我讲泰戈尔的样子，想起他在阳光下的侧脸，想起他牵着我的手在校园里漫步的温暖。</p><p>「人生就像风一样，」他曾经说过，「有时温柔，有时狂暴。但只要我们互相依偎，就能找到方向。」</p><p>现在的风变得如此寒冷，而我找不到方向了。</p><p>「要不要见见心理医生？」护士小姐轻声问我。</p><p>我摇摇头。没有人能理解我的痛苦。这世界上最懂我的人，正在另一家医院与死神抗争。</p><p>一月的一个清晨，我接到了那个电话。</p><p>「小宇…走了。」他的妈妈哭着说，「他走得很安详，走之前还在念叨你的名字。」</p><p>我放下手机，机械地走到窗前。北京的风呼啸着刮过，卷起漫天的尘土。</p><p>原来，这就是永别。</p><p>小宇追悼会的那天，北京的风格外的大，灰蒙蒙的天空中夹杂着沙尘，像是整个城市都在哭泣。站在灵堂里，我看着他生前的照片，眼泪早已流干。照片里的他依然带着那种温暖的笑容，可是，我再也看不到那双会在阳光下眯起的眼睛了。</p><p>他的父母站在一旁，眼神空洞却强忍着泪水。他的母亲轻轻地拍着我的肩膀，低声说道：「谷月，他走得很安详，我们知道他最放心不下的就是你。你要好好活下去，不能辜负他。」</p><p>我点了点头，却无法说出一句话。一阵风吹进灵堂，拂过我的脸颊，像是他的手在轻轻抚摸我的头发。我紧紧地攥住拳头，拼命告诉自己不要倒下，可是我的身体却像被抽空了一样，瘫坐在地上。</p><p>后来，我坐在骨灰盒旁，久久不愿离开。我想起我们在北大六院的日子，想起他在食堂里温柔的笑容，想起他说「我们北大见」时的坚定语气。可是如今，他却在这里，变成了一抔灰烬，再也无法开口和我说话。</p><p>风吹过我的耳边，仿佛带来了他的声音：「谷月，好好活下去。」</p><p>那天晚上，我做了一个梦。梦里，我们还在六院的花园里散步，风轻柔地吹拂，阳光温暖地照耀。</p><p>「别怕，月月」他说，「你要好好活着，风会带着我的思念一直陪着你。」</p><p>我哭醒了。窗外的风依然在呼啸，可是这一次，那个陪我听风的人，永远地离开了。</p><p>「谷月，你需要休学一段时间。」医生最后说。</p><p>我点点头。此时的我，已经没有力气再坚持了。</p><p>我以为我已经尝过了生命中最深的痛苦，直到失去小宇的那一刻，我才知道什么是真正的绝望。</p><p>出院后，我休学回家。整整三个月，我把自己关在房间里，抱着小宇的照片以泪洗面。妈妈每天都要在我门外守着，生怕我做出什么傻事。</p><p>青岛的风还是那样大，但再也没有人陪我一起听风声了。每当海风呼啸的日子，我都会想起他。可偏偏青岛的大风天太多，多得让我无处可逃。</p><p>我开始厌恶风声。那些曾经让我们心动的声音，现在都变成了凌迟的刀子。</p><p>直到有一天，我收到了小宇的父母寄来的快递。</p><p>那是小宇留给我的遗书。</p><blockquote><p>亲爱的谷月：</p><p>如果你收到这封信，那说明我已经不在了。其实从确诊的那天起，我就开始写这封信。我想把那些来不及告诉你的话，都写在这里。</p><p>还记得我们第一次见面时，你说你最喜欢听风声。那时候我就在想，这个女孩真特别，和我一样喜欢这种被大多数人忽视的声音。</p><p>后来我才知道，你听风声是因为孤独，而我听风声是因为好奇。但正是这种不同，让我们走到了一起。</p><p>我很庆幸在生命中最后的日子里有你陪伴。虽然时间太短，但足够让我体会到什么是真正的幸福。</p><p>现在，我要走了。但我希望你能继续往前。风总是在流动的，生活也是。没有什么悲伤是永恒的，就像没有什么风能永远刮下去。</p><p>答应我，要好好的。完成我们的梦想，做一名优秀的心理咨询师。用你的专业知识去帮助那些和我们一样痛苦的人。</p><p>还有，别忘了去五食堂吃鸡排盖浇饭，那里的味道真的很不错。</p><p>永远爱你的</p><p>小宇</p></blockquote><p>看完信，我哭得几乎喘不过气。但这一次，眼泪里混杂着别的情绪。</p><p>那天晚上，我久久地站在阳台上。青岛的风依然在呼啸，但这一次，我似乎从风声里听到了小宇的声音。</p><p>他说：「月月，要好好的。」</p><p>是啊，我怎么能辜负他的期望？怎么能让他在天堂里担心？</p><p>也许是释然，也许是决心。第二天，我主动起床，走到阳台上。风依然在刮，但不知为什么，我突然不那么害怕了。</p><p>「妈，」我转身对正在收拾房间的妈妈说，「我要好好活下去，带着小宇那份一起。」</p><p>她愣了一下，然后露出欣慰的笑容：「好。」</p><h2 id="07-重返校园">07 重返校园</h2><p>休学半年后，我回到校园。跟下一级的同学一起学习。虽然每一步都走得异常艰难，但我知道，这是我必须完成的使命。</p><p>回到燕园的第一天，我几乎不敢抬头看路。</p><p>每一个转角，每一条小径，都藏着我们的回忆。银杏道上，曾经我坐在他自行车的后座；未名湖边，我们常常一起看夕阳；心理系的实验室里，还留着我们一起做实验时写下的记录。</p><p>有时候在走在校园里，会因为突然想起和小宇的某个回忆而失控大哭，扑倒在地上。路过的同学不知所措，只能远远地看着我。</p><p>我像是一具行尸走肉，机械地去上课，回宿舍。课堂上，每当老师讲到与死亡、哀伤相关的心理学理论，我就会不由自主地发抖。</p><p>最难熬的是实验课。每次走进实验室，看到并排的两把椅子，我就会想起小宇坐在对面，温柔地念着实验指导语的样子。</p><p>「谷月，你还好吗？」实验课的助教担心地问。</p><p>我摇摇头，冲出了实验室。那天，我在卫生间里哭到虚脱。</p><p>有一段时间，我几乎成了校园里的「幽灵」。我总是迟到，坐在教室最后一排，下课就立刻消失。我开始回避所有的社交活动，把自己封闭在宿舍里。</p><p>吃饭也成了问题。五食堂我再也不敢去了，那里的鸡排盖浇饭是我们的最爱。我只靠外卖和室友带饭度日。</p><p>直到有一天，我在心理咨询课上听到了一个概念：<strong>哀伤辅导</strong>。</p><p>「失去亲人的哀伤过程是必经的，」老师说，「但我们要学会把痛苦转化为力量。」</p><p>那一刻，我忽然明白了小宇的用意。也许，正是因为经历过这样的痛苦，我才能更好地理解和帮助那些同样处在痛苦中的人。</p><p>我开始强迫自己走出宿舍。虽然每走一步都像是在刀尖上跳舞，但我告诉自己：小宇不会希望看到我这个样子。</p><p>重返校园后，我把全部精力都投入到了学习中。我选修了所有与创伤治疗、哀伤辅导相关的课程，常常一个人在图书馆坐到深夜。</p><p>那些关于失落与哀伤的专业术语，在课本上是那么冰冷，但我却在其中找到了解释自己痛苦的答案。每读懂一个理论，就像解开了一个困住自己的结。</p><p>我开始认真研究创伤后心理治疗的理论，把自己的经历和课本上的知识结合起来。在一次课堂展示中，我第一次公开讲述了自己的故事。</p><p>那天，连老师都哭了。</p><p>我主动报名了心理学院的志愿服务项目。在辅导患有抑郁症的同学时，我能感同身受地理解他们的痛苦。而每当看到他们有一点点好转，我就会感到一丝欣慰。</p><p>慢慢地，我开始能够在课堂上专注听讲。在做实验时，我会想象小宇在天堂里看着我，为我的进步而骄傲。</p><p>大四上学期，我获得了保研资格。</p><p>毕业论文选题时，我毫不犹豫地选择了「丧亲青年的 PTSD 与哀伤辅导研究」。</p><p>导师担心地看着我：「这个选题会不断刺激你的伤口。」</p><p>「但这些伤口里，藏着别人需要的答案。」我说，「我可以用这些答案去帮助和我一样经历了哀伤的人。」</p><p>为了这个研究，我走访了很多和我有相似经历的人。听着他们讲述自己的故事，我常常泪流满面。那些痛苦是如此相似，却又各有各的深重。</p><p>慢慢地，来访者开始有了变化。他们学会了如何与失去共处，如何把痛苦的能量转化为继续生活的动力。看着他们一点点好转，我感觉自己的心也在愈合。</p><p>答辩那天，我颤抖着念出诗一样的结论：「在深入研究和个案访谈后，我发现最有效的治愈方式，不是试图忘记，而是学会带着爱继续前行。逝去的人永远活在我们心里，而我们要用行动证明，这份爱从未停止。」</p><p>本科毕业论文获得了优秀评价。</p><p>拍毕业照那天，操场上挤满了人。穿着学士服的我们，在风中笑着、闹着，拍下了一张又一张照片。我站在人群中，手里拿着毕业证书，眼眶却忍不住湿润了。</p><p>我走到一棵树下，拿出一张照片。照片里，是小宇在北大的校园里骑车的样子。他的笑容依然那么灿烂，仿佛在告诉我：「谷月，你做到了。」</p><p>「小宇，」我低声说道，「我终于学会了在风中行走。谢谢你带给我的一切，虽然你不在了，但我知道，你的爱一直都在。」</p><p>风轻轻吹过我的脸，像是一种安慰。我闭上眼睛，深吸了一口气，终于露出了一个微笑。</p><p>这就是我和小宇的故事。一个关于爱情、关于痛苦、关于疗愈，也关于希望的故事。</p><p>风还在吹，但我知道，它已经不再是冰冷的侵袭，而是带着希望的温柔陪伴。</p><h2 id="番外-获得新生">番外 获得新生</h2><p>我在导师门下继续读研，专攻 PTSD 疗愈与心理创伤修复方向。</p><p>我一边读研，一边做兼职心理咨询师。每次我走进六院的大门，就本能地试图寻找那间阳光房的窗子。每当风起时，我就知道小宇在注视着我。</p><p>我为本校的学生和社会上的病人提供心理咨询服务。我的病人大多都经历过失去了重要的人而导致的抑郁症。有人失去至亲，有人失去爱人，有人失去朋友，还有跨性别小药娘被家庭扫地出门。我告诉他们，痛苦不会消失，但会升华，成为继续生活的力量。</p><p>有个女孩失去了双胞胎妹妹，整整三年无法走出阴霾。当她说起妹妹时，我仿佛看见了自己。我告诉她，思念是一种爱的延续，我们要学会和思念共处。</p><p>「你总是能说到我心里去。」一位失去丈夫的少妇说，「好像你真的懂我。」</p><p>是的，我懂。因为我也曾在暴风中迷失，也曾以为再也找不到方向。但现在我明白，有些人离开是为了让我们学会如何帮助他人。小宇的离去，让我成为了一座桥，连接着那些迷失在悲伤中的心灵。</p><p>今天是小宇离开的第三个年头。我照例去了他最喜欢的未名湖边。夕阳西下，风轻轻地吹过湖面。</p><p>我取出一份文件，是我刚完成的硕士毕业论文：《从个人创伤到心理重建：青年群体丧亲后的治疗模式研究》。</p><p>扉页上，我写着：「谨以此文献给小宇，和所有在生命中失去挚爱的人。愿我们带着爱，继续在风中前行。」</p><p>风依然在呼啸，但不再让我心痛。因为我知道，这风里有小宇的呼吸，有他的微笑，更有我们共同的梦想。我们当初的约定，我正在一步步实现。</p><p>日落时分，最后一个来访者离开咨询室。整理桌面时，一张照片从书页中掉出来。是小宇和我当年在燕园的合影。</p><p>我把便签夹回日记本里，笑着对窗外的风说：「小宇，今天我又帮助了一个人走出了悲伤。你会为我骄傲的，对吗？」</p><p>风轻轻地吹起窗帘，像是他温柔的回答。</p><h2 id="番外（平行世界线）春暖花开">番外（平行世界线）春暖花开</h2><p>在另一个宇宙里，风的方向偏离了一点点。</p><p>我来到 301 医院，看望躺在病床上的小宇。</p><p>小宇紧握着我的手：「我不会离开你的。」</p><p>他参加了一种新型靶向抗癌药的临床三期试验。没想到这种药物对他身上的肿瘤具有惊人的特异性。医生说治愈的可能性很大。</p><p>他开始了漫长的治疗。手术、化疗、放疗，整整一年。我每天都去医院陪他，看着点滴一滴一滴地落下，听着仪器发出规律的声响。</p><p>他瘦得不成样子，但眼睛依然明亮。</p><p>「你看，」他指着窗外，「今天的风真好。」</p><p>我们就这样，在病房里数着日子。有时候他疼得睡不着，我就给他讲我们在六院相遇的故事。</p><p>「那天的风很大。」他微笑着说。</p><p>「对，风很大，阳光很好。」我握着他的手。</p><p>春去秋来，他的病情奇迹般地好转。医生说这是他们见过的最成功的案例。</p><p>「可能是因为有你在身边。」他说。</p><p>出院那天，北京刮着温柔的风。他站在阳光下，新长出的头发泛着淡淡的光泽。</p><p>「月月，」他说，「我们一起走下去吧。」</p><p>我流着泪紧紧地抱住了他。</p><p>我们两个人顺利毕业，然后我继续读研，他做心理咨询师。</p><p>我研究生毕业那年，我们结婚了，并且在北京开了一家小小的心理咨询工作室。</p><p>婚礼选在了青岛。</p><p>「因为这里的风里有咸味。」他说，「就像我们的爱情，既有甜蜜，也有咸涩。」</p><p>我们在浙江路天主教堂举行了简单的婚礼。风吹起我的头纱，他轻轻托住：「余生的日子，请让我来为你挡风。」</p><p>「月月你知道吗，」有一天他突然说，「我觉得我们好像在另一个平行世界里错过了。」</p><p>「为什么这么说？」</p><p>「因为我总觉得特别幸运，」他搂住我的肩膀，「在千万种可能里，我们选择了最好的那一种。」</p><p>有时候我会想起那些艰难的日子，那些飘散的纸屑、刷过的习题、飞舞的黄叶、输液的针头，刺鼻的消毒水味，深夜的疼痛。但这一切都过去了，就像春天的风吹散了冬天的阴霾。</p><p>今天，我们又去了什刹海。夕阳西下，春风依旧。</p><p>在这个温柔的世界里，风不再是孤独的代名词，而是爱情的见证者。它吹散了我们的忧伤，吹来了我们的幸福。</p><p>而我知道，在某个平行宇宙里，可能有另一个我正在思念着另一个他。但在这里，在这个被风眷顾的世界里，我们幸运地相遇，相知，相守。</p><p>直到永远。</p>]]></content>
    
    
    <summary type="html">北大六院的病房里，我遇见了他。他说喜欢听风声，像我一样。我们怀着帮助抑郁群体的梦想一起奋斗，考上了北大心理系。可谁知命运的风突然转向，他离开了。但风中永远有他的呼吸，有我们的梦想，有我继续前行的力量。</summary>
    
    
    
    <category term="故事" scheme="https://blog.kukmoon.com/categories/%E6%95%85%E4%BA%8B/"/>
    
    
    <category term="月光与柠檬糖" scheme="https://blog.kukmoon.com/tags/%E6%9C%88%E5%85%89%E4%B8%8E%E6%9F%A0%E6%AA%AC%E7%B3%96/"/>
    
    <category term="抑郁" scheme="https://blog.kukmoon.com/tags/%E6%8A%91%E9%83%81/"/>
    
  </entry>
  
  <entry>
    <title>Git diff 学习心得</title>
    <link href="https://blog.kukmoon.com/96f0fe9a926b/"/>
    <id>https://blog.kukmoon.com/96f0fe9a926b/</id>
    <published>2024-12-12T10:52:51.000Z</published>
    <updated>2024-12-12T10:52:52.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-10-02-02-34.jpg" alt="Git diff 学习心得"></p><ol><li><p>如果没有特别指明比较对象，在 <code>git diff</code> 的输出结果中，<code>a</code> 和 <code>-</code> 总是表示较旧的文件，而 <code>b</code> 和 <code>+</code> 总是表示较新的文件。</p></li><li><p>加上参数 <code>-U0</code> （<code>--unified=0</code>），可以精简比较结果，精确到行。因为 <code>git diff</code> 默认是以 3 行为一个单位进行比较的，如果不用这个参数，虽然不影响比较结果，但是会使统计结果（存在不同的行数）增加。</p></li></ol><p><img src="https://img.kukmoon.com/2024-12-12-19-04-41.png" alt="图源：https://blog.jerrychu.top/UnitTestParser/docs/diffParser.html"></p><ol start="3"><li>用 <code>git diff</code> 进行简单比较，用 Notepad++ 或 Total Commander 在图形界面下进行全面的全文比较。</li></ol><p>关于 <code>git diff</code> 命令的入门使用，可以参考这个教程：<a href="https://www.freecodecamp.org/chinese/news/git-diff-command/">Git diff 命令——如何比较你的代码中的变化</a></p><p>关于如何解读 <code>git diff</code> 命令的输出结果，可以参考这篇文章：<a href="https://blog.jerrychu.top/UnitTestParser/docs/diffParser.html">git diff 数据解析</a></p><p><strong>图片版权</strong></p><p>题图：<a href="https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508">https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">谷月姐学习 Git diff 命令的心得。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="git" scheme="https://blog.kukmoon.com/tags/git/"/>
    
  </entry>
  
  <entry>
    <title>Git 撤销修改的四种方法</title>
    <link href="https://blog.kukmoon.com/5c35cbca45a2/"/>
    <id>https://blog.kukmoon.com/5c35cbca45a2/</id>
    <published>2024-12-11T05:50:43.000Z</published>
    <updated>2024-12-11T05:50:44.000Z</updated>
    
    <content type="html"><![CDATA[<p>在使用 Git 的过程中，我们难免会遇到撤销修改的场景。</p><p>例如，对不小心改坏的代码进行了 <code>git add</code> 甚至 <code>git commit</code> 操作，需要改回来。</p><p>或者，对修改结果不满意，要返回以前的某个版本。</p><p>难道我们只能删库重建吗？</p><p>答案是否定的。谷月老师带你一起学习 Git 撤销修改的四种方法。</p><h2 id="1-撤销工作区文件的修改">1 撤销工作区文件的修改</h2><p>当你把工作区中的代码改得一团糟，但是还没有 <code>git add</code>，就可以采用以下两种方法之一，把工作区中的文件恢复到上一次 <code>git add</code> 或上一次 <code>git commit</code> 时的样子。</p><p>这两种方法的作用是一样的：都是用暂存区（索引、Stage）中的文件覆盖工作区（Working tree）中的同名文件；如果暂存区中的文件已经提交，那么就用 <code>HEAD</code> 中的文件覆盖工作区中的同名文件。</p><h3 id="1-1-方法-1">1.1 方法 1</h3><p>操作命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git checkout <span class="hljs-literal">--</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><h3 id="1-2-方法-2">1.2 方法 2</h3><p>操作命令（需要 Git 2.23 以上）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git restore &lt;filename&gt;<br></code></pre></td></tr></table></figure><h3 id="1-3-例题">1.3 例题</h3><p>【例 1】我要撤销对 <code>test.txt</code> 文件的修改，恢复到上一次 <code>git add</code> 或上一次 <code>git commit</code> 时的样子。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git checkout <span class="hljs-literal">--</span> test.txt<br>或<br>git restore test.txt<br></code></pre></td></tr></table></figure><h2 id="2-撤销暂存区文件的修改">2. 撤销暂存区文件的修改</h2><p>如果已经 <code>git add</code> ，只要还没有 <code>git commit</code>，那就还能补救。补救的方法，就是撤销暂存区文件的修改，换句话说，就是用版本库（默认是 <code>HEAD</code>）中的同名文件覆盖暂存区中你要撤销修改的文件，但是不会影响工作区。</p><p>这个操作也就是 <code>git add</code> 的逆操作。</p><h3 id="2-1-方法-1">2.1 方法 1</h3><p>操作命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git reset &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>完整形式：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git reset <span class="hljs-literal">--mixed</span> HEAD <span class="hljs-literal">--</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>其中，<code>--mixed</code> 表示用版本库中的文件覆盖暂存区中的同名文件，但是不会影响工作区；<code>HEAD</code> 就表示用 <code>HEAD</code> 中的文件覆盖暂存区中的同名文件。二者都是默认选项。</p><h3 id="2-2-方法-2">2.2 方法 2</h3><p>操作命令（需要 Git 2.23 以上）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git restore <span class="hljs-literal">-S</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>完整形式：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git restore <span class="hljs-literal">--source</span> HEAD <span class="hljs-literal">--staged</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>其中，<code>--source HEAD</code> 就表示用 <code>HEAD</code> 中的文件覆盖暂存区中的同名文件；<code>-S</code> 等价于 <code>--staged</code>， 表示用版本库中的文件覆盖暂存区中的同名文件，但是不会影响工作区。二者都是默认选项。</p><h3 id="2-3-例题">2.3 例题</h3><p>【例 2】刚才错误地暂存 <code>test.txt</code>，需要撤销这次暂存。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git reset test.txt<br>或<br>git restore <span class="hljs-literal">-S</span> test.txt<br></code></pre></td></tr></table></figure><h2 id="3-简单粗暴，一次性撤销工作区和暂存区所有文件的修改">3 简单粗暴，一次性撤销工作区和暂存区所有文件的修改</h2><p>这个操作是从版本库中提取<strong>所有</strong>文件，一次性覆盖工作区中<strong>所有</strong>同名文件，并清空暂存区。</p><div class="note note-warning">            <p><strong>注意</strong>：是<strong>所有</strong>文件！！！</p>          </div><p>操作命令：<code>git reset --hard</code>。</p><p>完整形式：<code>git reset --hard HEAD</code>。其中 <code>HEAD</code> 就表示用 <code>HEAD</code> 中的文件覆盖工作区中的同名文件。</p><h2 id="4-调取一个文件过去的版本">4 调取一个文件过去的版本</h2><p>反复修改了好几个版本，但是都不如开头的版本好。总之，我们需要从过去的提交中，调取一个文件过去的版本。</p><h3 id="4-1-方法-1">4.1 方法 1</h3><p>分两步走，先用 <code>git reset</code> 把这个文件从过去的某一次提交中提取出来，放进暂存区，再用 <code>git chekcout</code> 命令用暂存区中的这个文件覆盖工作区中的同名文件。</p><p>操作命令：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-comment"># 把这个文件从某一次提交中提取出来，放进暂存区</span><br>git reset <span class="hljs-literal">--mixed</span> &lt;commit<span class="hljs-literal">-id</span>&gt; <span class="hljs-literal">--</span> &lt;filename&gt;<br><span class="hljs-comment"># 用暂存区中的文件覆盖工作区中的同名文件</span><br>git checkout <span class="hljs-literal">--</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><h3 id="4-2-方法-2">4.2 方法 2</h3><p>用 <code>git restore</code> 一步到位。</p><p>操作命令（需要 Git 2.23 以上）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git restore <span class="hljs-literal">-s</span> &lt;commit<span class="hljs-literal">-id</span>&gt; <span class="hljs-literal">-SW</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>完整形式（需要 Git 2.23 以上）：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell">git restore <span class="hljs-literal">--source</span> &lt;commit id&gt; <span class="hljs-literal">--staged</span> <span class="hljs-literal">--worktree</span> &lt;filename&gt;<br></code></pre></td></tr></table></figure><p>其中 <code>-s &lt;commit-id&gt;</code> 等价于 <code>--source &lt;commit-id&gt;</code>，把这个文件从过去的某一次提交中提取出来；<code>-SW</code> 等价于 <code>--staged --worktree</code> 二者同时使用，表示把这个从版本库中提取出来的文件，分别复制到暂存区和工作区，并覆盖工作区中的同名文件。</p><h3 id="4-3-要回到最新版本怎么办？">4.3 要回到最新版本怎么办？</h3><p>操作命令：<code>git reset --hard HEAD</code></p><p>这样，<code>git</code> 会从 HEAD 中提取所有文件，一次性覆盖工作区中所有同名文件，并清空暂存区。</p><h3 id="4-4-例题">4.4 例题</h3><p>【例 3】调取第二次提交时的 test.txt，放进工作区。</p><p><img src="https://img.kukmoon.com/2024-12-11-14-34-56.png" alt="图"></p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-comment"># 查找第二次提交的 commid id 是多少</span><br>git log <span class="hljs-literal">--graph</span> <span class="hljs-literal">--oneline</span><br><span class="hljs-comment"># 第二次提交的 commit id 是 bf26f98    </span><br>git reset <span class="hljs-literal">--mixed</span> bf26f98 <span class="hljs-literal">--</span> test.txt <br>git checkout <span class="hljs-literal">--</span> test.txt<br></code></pre></td></tr></table></figure><p>或</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-comment"># 查找第二次提交的 commid id 是多少</span><br>git log <span class="hljs-literal">--graph</span> <span class="hljs-literal">--oneline</span><br><span class="hljs-comment"># 第二次提交的 commit id 是 bf26f98</span><br>git restore <span class="hljs-literal">-s</span> bf26f98 <span class="hljs-literal">-SW</span> test.txt<br></code></pre></td></tr></table></figure><h2 id="5-总结">5 总结</h2><p>本文讲解了四种撤销修改的方法：撤销工作区文件的修改、撤销暂存区文件的修改、清空工作区和暂存区<strong>所有</strong>文件的修改，调取一个文件过去的版本。</p><h2 id="6-知识扩展">6 知识扩展</h2><p>回滚提交，我们可以用 <code>git revert &lt;commit id&gt;</code>。之所以是“回滚”而不是“撤销”，是因为撤销不会留下提交记录，但是回滚会留下一次提交记录。</p><p>在不同的提交之间切换，我们可以用 <code>git reset --hard &lt;commit id&gt;</code>。其中 <code>--hard</code> 可以根据情况改成 <code>--soft</code> 或者 <code>--mixed</code>。</p><h2 id="7-图片版权">7 图片版权</h2><p>题图：<a href="https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508">https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">本文讲解了四种撤销修改的方法：撤销工作区文件的修改、撤销暂存区文件的修改、清空工作区和暂存区**所有**文件的修改，调取一个文件过去的版本。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="git" scheme="https://blog.kukmoon.com/tags/git/"/>
    
  </entry>
  
  <entry>
    <title>Git checkout 的三种用法</title>
    <link href="https://blog.kukmoon.com/71567d8d45b6/"/>
    <id>https://blog.kukmoon.com/71567d8d45b6/</id>
    <published>2024-12-09T17:54:24.000Z</published>
    <updated>2024-12-09T17:54:25.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-10-02-02-34.jpg" alt="Git checkout 的三种用法"></p><h2 id="从英文单词-checkout-说起">从英文单词 checkout 说起</h2><p>Checkout 的本意是“结账”，一般翻译成“检出、签出”。</p><p>“结账”表示住酒店或者逛超市的过程结束了，需要离开酒店或者离开超市，前往一个新的地方。</p><p>与之类似，<code>git checkout</code> 命令也是离开一个分支、提交、文件，前往到另一个分支、提交、文件。</p><p>离开，再前往另一个，这个过程可以称之为切换。</p><h2 id="Git-checkout-命令的功能和用法">Git checkout 命令的功能和用法</h2><p>在此基础上，理解和记忆<code> git checkout</code> 命令的功能，就变得比较容易了。</p><p><code>Git checkout</code> 命令有三种主要功能：</p><ol><li>切换分支，离开当前分支，前往另一分支，也可以用来新建分支。</li><li>切换提交，离开当前分支，以“<strong>分离 HEAD</strong>”（detached HEAD）前往另一提交。</li><li>撤销工作区中一个或多个文件的修改。</li></ol><p>撤销工作区中的修改，可以理解成：离开工作区中的某个文件，前往它的上一个版本，也就是用暂存区（或版本库）中的同名文件覆盖工作区的这个文件。</p><p>理解了 <code>git checkout</code> 命令的三种功能的实质都是<strong>切换</strong>，再去记忆它的用法就很容易了，更不必去死记硬背 Git 2.23 新引入的 <code>git switch</code> 和 <code>git restore</code> 命令，平白增加记忆量。</p><p>Git checkout 有三种主要用法：</p><ol><li><code>git checkout [-b] &lt;branch-name&gt;</code>：切换到另一个分支上工作，如果有 <code>-b</code> 参数，表示新建一个分支并切换到这个分支上工作。。</li><li><code>git checkout &lt;commit-id&gt;</code>：通过<strong>分离 HEAD</strong>（detached HEAD） 的方式切换到另一个提交上工作。</li><li><code>git checkout -- &lt;filename&gt;</code>：撤销工作区中一个或多个文件的修改（可以把撤销修改理解成同一个文件切换到未修改的状态）。如果已经将工作区中的文件保存到暂存区（索引、Stage），就用暂存区中的内容覆盖工作区中的文件。如果暂存区中的文件已经提交到版本库，也就是说暂存区里没有这个文件，就用版本库中的内容覆盖工作区中的文件。</li></ol><p><strong>注意</strong>：对于在工作区中新建并且尚未 <code>git add</code>（或 <code>git commit</code>）过的文件，<code>git checkout -- &lt;文件名&gt;</code> 无效。</p><p>以上三种用法的共同点都是：从表面上看，会修改工作区中的文件；实质上是移动指针，指向版本库中不同的提交。</p><ul><li>切换到另一个分支、提交，就会用版本库中的文件覆盖工作区中的文件。</li><li>撤销文件的修改，实质上是用版本库中的文件覆盖工作区中的文件。</li></ul><h2 id="切换提交与分离-HEAD">## 切换提交与分离 HEAD</h2><p>既然每一次提交都代表一个版本，那么我们可以用 <code>git checkout</code> 在不同的提交之间切换，具体用法是 <code>git checkout &lt;commit-id&gt;</code>，就像时光机一样，在不同的时间点之间飞行。</p><p>如果要切换回 master 分支上最新的提交（此处假设只有一个分支 master），需要执行 <code>git checkout master</code>。</p><p>如果要切换到其他提交，可以用 <code>git reflog</code> 拉出每一次提交的 commit-id，然后用 <code>git checkout &lt;commit-id&gt;</code> 切换到对应的提交。</p><p>前文说道，它是以“分离 HEAD”的方式切换到另一提交的，那么，<strong>分离 HEAD</strong> 是什么意思呢？</p><p>原来，按照 Git 设计的底层逻辑，HEAD 是用来引用最新快照的指针。HEAD 作为一个指针是指向当前分支的，而当前分支也是一个指针，指向最新的提交。</p><p>所谓<strong>分离 HEAD</strong> 就是让 HEAD 指向了一个未命名的分支。</p><p>在这个未命名的分支上，可以对工作区中的文件作任意修改，或者随意提交，但是不会保存。此处不会保存的意思是说，只要切换到其他的分支，那么在这个未命名的分支上做的任何修改或提交都会被丢弃。</p><p>如果想要保存修改怎么办？需要创建一个新分支，可以执行以下两条命令其中之一：<br><code>git checkout -b &lt;分支名&gt;</code><br><code>git switch -c &lt;分支名&gt;</code></p><p>如果只是为了回顾一下以前的提交，那么不需要创建分支。</p><p><a href="https://liaoxuefeng.com/books/git/introduction/index.html">廖雪峰老师的 Git 教程</a>把切换提交<a href="https://liaoxuefeng.com/books/git/time-travel/index.html">比喻成时光机</a>，不过他用的命令是 <code>git reset --hard &lt;commit-id&gt;</code>。而我倾向于使用 <code>git checkout &lt;commit-id&gt;</code> 。</p><p><strong>图片版权</strong></p><p>题图：<a href="https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508">https://www.deviantart.com/black-pixel/art/Git-Wallpaper-Clean-357130508</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">详解 git checkout 的三种主要用法。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="git" scheme="https://blog.kukmoon.com/tags/git/"/>
    
  </entry>
  
  <entry>
    <title>混血女生赴日寻母，找到了母亲的骨灰</title>
    <link href="https://blog.kukmoon.com/ec2677bf5de6/"/>
    <id>https://blog.kukmoon.com/ec2677bf5de6/</id>
    <published>2024-12-07T15:53:11.000Z</published>
    <updated>2025-01-29T13:56:12.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-12-08-00-04-51.jpg" alt="混血女生赴日寻母，找到了母亲的骨灰"></p><h2 id="声明">声明</h2><div class="note note-warning">            <p>这篇小说原名《谷月小姐找妈妈》，其 <a href="https://blog.kukmoon.com/544509a1a8a2/"><strong>大纲</strong></a> 是由谷月（是作者本人，不是小说主角）撰写的，而小说全文是由谷月使用 <a href="https://claude.ai"><strong>Claude</strong></a>-3.5-Sonnet 创作，并使用 <a href="https://claude.ai"><strong>Claude</strong></a>-3.5-Sonnet-200K 修改的。文风为晋江文风。</p><p>第一稿用 Claude 原创。</p><p>第二稿用 Claude 修改。</p><p>第三稿用 Claude 缩写，使故事更加紧凑。故事标题改名为《混血女生赴日寻母，找到了母亲的骨灰》。</p><p>第四稿修正了第三稿的时间线错误。</p><p>第五稿模糊了渡边美月的去世时间，补充了一些细节，删掉了一些重复出现的语句，例如“泪水模糊了视线”，修正了第三稿的地名错误。</p><p>第六稿修正了一些字句，将第二章的结尾改得更简练。</p><p>第七稿修正了一些字句，将第三稿删除的渡边美月与女儿的学校据理力争的情节补了回来，每一章下再分节，每节 1—2 千字。</p><p><strong>本文内容，纯属虚构，如有雷同，是你抄我。</strong></p>          </div><h2 id="Chapter-01-从此成为孤儿">Chapter 01. 从此成为孤儿</h2><h3 id="1">1</h3><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241223220000000.jpg" alt="谷月小姐站在讲台上"></p><p>「这是一场发生在东亚的连环抛弃。」</p><p>会场内一片寂静。</p><p>谷月小姐站在东京国际人权研讨会的讲台上，目光扫过台下数百张专注的面孔。会场座无虚席，记者的镜头此起彼伏地闪烁着。窗外的阳光透过玻璃洒进来，为她染上一层淡淡的光晕。</p><p>「我和姐姐，都是中日混血儿。父亲、母亲、还有社会，都抛弃了我们。」</p><p>她的声音很轻，却在安静的会场内格外清晰。</p><p>二十八岁的谷月今天穿了一袭浅蓝色真丝连衣裙。染成闷青色的长发温顺地垂在肩头，空气刘海下的眉眼带着几分东洋血统的温婉。这张在社交媒体上出现过无数次的精致脸庞，此刻却显得异常苍白。</p><p>「在开始之前，我想向大家道歉。」她停顿了一下，「这些年，我在网上塑造了一个完美的人设：在读药学博士、百万粉丝网红、知名美妆博主、护肤达人……但我的粉丝们只看到了光鲜亮丽的外表，却不知道这背后藏着怎样的伤痕。」</p><p>戴着红宝石色美甲片的手指微微颤抖，握着 PPT 翻页器的左手愈发用力，仿佛这样就能给自己多一些勇气。</p><p>「我的父亲是中国人，母亲是日本人。在我八岁那年，他们离婚了。从那以后，我就再也没见过母亲。」</p><p>她深吸一口气，目光悠悠地望向远方，仿佛穿越时空回到了父母在东京初次相遇的那个夜晚。</p><p>三十多年前的东京。年轻的谷清风在东京大学药学系实验室里，专注地记录着实验数据。作为最刻苦的博士生，他总是加班熬夜，最后一个离开实验室。</p><p>「谷君，今晚有联谊会，要不要一起去？」同学探头进来邀请。</p><p>谷清风摇头: 「实验数据还没整理完。」</p><p>「别总泡在实验室啊，」同学笑着拍拍他的肩，「都说樱花树下最容易邂逅真爱。」</p><p>或许是这句话打动了他。那个春夜，谷清风第一次参加了联谊会。</p><p>渡边美月穿着浅蓝色的吊带连衣裙，扎着俏皮的双马尾，安静地坐在角落。她是文学系的大一学生，被朋友硬拉来参加这场联谊。</p><p>觥筹交错间，谷清风端着一块蛋糕走到她面前。</p><p>「我在找一个不喝酒的人。」他说。</p><p>渡边美月抬头，对上了他温柔的目光。樱花从窗外飘进来，落在她的发间。</p><p>「谢谢。」她接过蛋糕，脸颊微红。</p><p>谷月回忆道：「每当母亲说起这个桥段，早熟的我就对母亲说：『看，爸爸一块蛋糕就把你骗走了。』」</p><p>台下传来几声低低的笑声。</p><p>那时的他们，是多么单纯而美好啊。谷清风每天在图书馆等渡边美月下课，用翻盖手机和她聊到深夜。春天陪她赏樱花，夏天带她看花火大会，秋天一起去赏枫叶，新年牵着她的手去参拜神社。</p><p>渡边美月想学中文，谷清风就从最基础的拼音教起。她去考 HSK 时，他在考场外等了整整一天。</p><p>「我一定要学好中文。」她认真地说。</p><p>「为什么？」他笑着问。</p><p>「因为……」她低头抿嘴，「将来要和你的家人交流啊。」</p><p>那时的樱花树下，她穿着谷清风最喜欢让她穿的 JK 制服，踩着粉色的花瓣，依偎在他怀里。阳光透过树叶斑驳地洒在她的脸上，照亮了她眼中的憧憬。</p><p>两年的恋爱，谷清风用尽了浪漫的招数。直到有一天，他握着她的手说：「和我一起回中国好吗？」</p><p>渡边美月毫不犹豫地点头。为了爱情，她愿意放弃一切，包括大学的学业。</p><p>谁能想到，这段跨越国境的爱情，最终会以悲剧收场。</p><p>「那是母亲这辈子最幸福的时光。」谷月的声音有些哽咽。</p><p>台下的听众屏住呼吸，等待着她继续讲述这段令人心碎的往事。</p><p>谷清风带着新婚妻子回到故乡南京，在中国药科大学任教。他们的家是一间六十平米的教师公寓，卫生间只有蹲厕，连抽水马桶都没有。</p><p>但在渡边美月眼里，这就是她梦想中的小家。</p><p>她每天早起做便当，用生疏的中文和邻居打招呼，努力适应这个陌生的城市。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224000421645.png" alt="渡边美月生下了双胞胎女儿"></p><p>婚后一年，她生下了双胞胎女儿。</p><p>「父亲用妈妈的名字给我们取名，」谷月轻声说，「姐姐叫谷美，我叫谷月。」</p><p>可这份甜蜜没能持续太久。</p><h3 id="2">2</h3><p>分娩时的大出血让渡边美月再也无法生育。这个消息像一记重锤，击碎了谷清风心中的期待。</p><p>「你连个儿子都生不出来！」深夜的争吵声穿透单薄的墙壁。</p><p>「我也想给你生个儿子啊……」渡边美月哭着说。</p><p>那时的中日关系跌入低谷。谷清风娶了日本妻子，不仅入党申请被拒，连续几年的职称评定也落选。</p><p>「谷老师娶个日本老婆，这辈子就别想往上走了。」同事们在背后议论。</p><p>生活的重压压得这位曾经温文尔雅的学者喘不过气。他开始借酒浇愁，变得暴躁易怒，时常把妻子当作出气筒。</p><p>「你的中文说得不标准！」</p><p>「你连中国菜都不会做！」</p><p>「你根本不懂中国的礼节！」</p><p>那个曾经耐心教她中文、陪她看樱花的男人不见了。</p><p>渡边美月独自在异国他乡，既要照顾双胞胎女儿，又要应付丈夫的无理取闹。她开始在网上寻找同病相怜的人，渐渐接触到女权主义思想。</p><p>「为什么我一定要做一个以丈夫为中心的大和抚子？」她开始质疑。</p><p>「你变了！」谷清风指着她的鼻子，「你以前不是这样的！」</p><p>「是啊，我变了。」渡边美月擦干眼泪，「我不再是那个为了爱情可以牺牲一切的傻女孩了。」</p><p>另一方面，谷美和谷月姐妹在学校里也遭受着苛刻的对待。老师们对她们总是格外严厉，同学们则把她们当成异类。</p><p>有一次，谷月在课堂上因为紧张读错了一个字。老师当着全班同学的面说：「你这个小日本鬼子就是来拖我们班后腿的。」</p><p>渡边美月得知此事后，第一次和学校起了正面冲突。她用不太流利的中文据理力争，要求老师向孩子道歉。</p><p>但这件事不仅没有得到解决，反而让谷清风觉得更没面子。</p><p>「都是你们母亲的错！」父亲对着两个女儿咆哮，「如果不是她，你们也不会受这种委屈！」</p><p>那个夏夜，谷清风和渡边美月爆发了激烈的争吵，也是最后的争吵。</p><p>八岁的谷美和谷月躲在房间里，听着父母的争吵，紧紧抱住对方。</p><p>「姐姐，妈妈会离开我们吗？」谷月小声问。</p><p>谷美摇摇头，却也说不出一句安慰的话。</p><p>「那个夏夜改变了一切。」谷月的声音微微发抖。</p><p>台下有人悄悄抹泪，但更多的人凝神静听。</p><p>夏夜窗外的蝉鸣声被父母激烈的争吵声打断。</p><p>「你要是不满意，就滚回日本去！」</p><p>砰——</p><p>一声巨响。像是什么东西被摔碎了。</p><p>谷月握住姐姐的手：「别怕。」</p><p>深夜，渡边美月推开女儿房间的门。月光下，她的脸上还挂着泪痕。</p><p>「小美，小月，」她轻轻抱住两个女儿，「对不起，妈妈不是一个好妈妈。」</p><p>「妈妈要去哪里？」早熟的谷月敏感地问。</p><p>渡边美月没有回答，只是一遍遍抚摸着女儿的头发，仿佛要把她们的样子永远刻在记忆里。</p><p>第二天清晨，谷清风把渡边美月赶出了家门。</p><p>渡边美月想带着两个孩子一起回日本，但是谷清风威胁说，如果她敢带走孩子，就告她拐骗。</p><p>渡边美月害怕中国的司法机关会偏向本国公民。所以她没有索要孩子的抚养权，而是在离婚协议上签过字就一个人默默地离开了。</p><p>谷清风把渡边美月留下的一切都扔掉了——</p><p>她的照片、她学中文的教材和笔记本、她和女儿们玩耍时用的玩具、她最喜欢的餐具。</p><p>他以为这样就能断了两个女儿对母亲的念想。</p><p>「但讽刺的是，」谷月苦笑，「妈妈从日本带来的日立电视机和松下录像机，却还摆在客厅里。」</p><p>「那时我们才八岁，完全不明白为什么生活会突然天翻地覆。姐姐变得沉默寡言，我则开始疯狂地学习。」</p><p>她深吸一口气：「我想，如果我足够优秀，也许有一天母亲会听说，会为我骄傲，会回来找我们……」</p><p>会场里一片寂静。有位女记者默默取下眼镜，擦拭着模糊的镜片。</p><p>「但这还不是最糟的。」谷月望向窗外，「父亲很快就再婚了，对象是一个比他小十岁的女人。直到她生下儿子后才补办婚礼，而我和姐姐，是最后才得到通知的亲人。」</p><p>「父亲把我们送进了寄宿学校。」谷月的声音有些发抖，「在那里，我们的噩梦才真正开始。」</p><p>会场里的空气仿佛凝固了。</p><h3 id="3">3</h3><p>寄宿学校的生活，对这对双胞胎姐妹来说是一场无休止的折磨。</p><p>「小鬼子的后代！」</p><p>「AV 女优！」</p><p>「绿茶婊！」</p><p>各种难听的话语如利箭般刺向她们。</p><p>清晨醒来，书本不是被扔进垃圾桶，就是被泼上脏水。校服经常不翼而飞，或者被剪得破破烂烂。</p><p>「老师，我的校服不见了。」谷月怯生生地说。</p><p>「自己不小心弄丢的，要负起责任来。」班主任冷漠地回应。</p><p>午餐时间，没人愿意和她们同桌。</p><p>「这边有位置。」谷美试图在餐桌前坐下。</p><p>「抱歉，有人了。」同学们纷纷把书包放在空位上。</p><p>食堂阿姨给她们的饭菜，份量总是特别小。</p><p>「够了，下一个。」阿姨面无表情地挥手。</p><p>谷月低头看着自己的餐盘，只有薄薄一层米饭和几片青菜。</p><p>最残酷的是，老师们对这些欺凌视而不见。有时甚至带头羞辱她们。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224001336929.png" alt="夜深人静时，姐妹俩常常爬到宿舍楼顶"></p><p>夜深人静时，姐妹俩常常爬到宿舍楼顶，相互依偎着，无声地流泪。</p><p>「姐姐，」谷月望着星空，「你说妈妈现在在做什么？」</p><p>「也许……也在看这片星空吧。」谷美轻声说。</p><p>「你说她会想我们吗？」</p><p>「会的。」谷美搂住妹妹的肩，「一定会的。」</p><p>其实谷美心里也没有答案。她只是不想让妹妹太难过。</p><p>那时的她们还不知道，更大的打击即将到来。</p><p>「最可怕的事发生在我们十五岁那年，中考前夕。」</p><p>谷月的声音开始颤抖，指尖在讲台上无意识地敲打着。</p><p>那是个平常的周末傍晚，姐妹俩在校外逛街，夕阳把姐妹俩的影子拉得很长。谷美走在前面，谷月落后几步。</p><p>一切发生得太快。</p><p>一辆面包车突然停在路边，两个男人冲出来，把谷美拖了进去。</p><p>「姐姐！」谷月拼命追赶。</p><p>但她只能眼睁睁地看着车子消失在街角。</p><p>报警电话打了一遍又一遍。</p><p>「对不起，失踪未满 24 小时不予立案。」警察公事公办的声音从听筒里传来。</p><p>谷月跑回家，跑得上气不接下气。</p><p>客厅里传来欢声笑语。父亲和继母正准备结婚纪念日的晚宴，餐桌上摆满了菜肴。</p><p>「爸，姐姐被人贩子抓走了！」谷月冲进门。</p><p>父亲正给继母倒酒，闻言皱起眉头：「你就不能消停一天吗？非要在这种日子找我麻烦？」</p><p>「可是姐姐她……」</p><p>「够了！」父亲打断她，「你姐姐那么大个人了，还能出什么事？」</p><p>继母优雅地端起酒杯，看都没看谷月一眼。同父异母的弟弟在一旁玩着新买的日本进口游戏机。</p><p>「就在那一刻，」谷月的泪水终于夺眶而出，「我明白了自己早已成为孤儿。父亲不要我，母亲抛弃我，姐姐被拐走，社会排斥我。我像一片无根的浮萍，在茫茫人海中漂泊。」</p><p>从那天起，谷月开始暗自规划，成年后就去日本寻找母亲。</p><p>她拼命学习，考进了父亲任教的中国药科大学。六年本硕连读毕业后，以优异成绩获得全额奖学金，在岐阜药科大学开始博士生涯。</p><p>「十六年过去了，我终于来到日本留学。」谷月擦干眼泪，「这些年以来，我一直在寻找母亲的踪迹。我想问问她：当年为什么要丢下我们？是不是真的如父亲所说，她已经有了新的家庭，早已忘记我们？还是她也在某个角落，同样思念着我们？」</p><p>她的目光扫过台下一张张动容的面孔：「所以，我请求在座的各位帮助我寻找渡边美月女士。如果您认识她，或者知道她的任何消息，请告诉我。即使……即使她已经不再记得我们。」</p><h3 id="4">4</h3><p>来到日本后，谷月才发现，作为混血儿，她在这里的处境并不比在中国好多少。</p><p>虽然没有人公开歧视她，但那种若有若无的疏离感始终存在。她的同学们会用奇怪的眼光打量她，私下议论她「不够 Japanese」。</p><p>「我开始研究护肤和美妆，最初只是为了更加『Japanese』一些。」谷月露出一丝苦笑。</p><p>她在社交媒体上分享美妆心得和护肤经验。逐渐成了知名网红。镜头前的她总是光彩照人，笑容温婉。没人知道，关掉直播后，她常常独自哭泣。</p><p>「各位，我是来日本找妈妈的谷月。今天教大家如何化一个日系温柔妆容……」</p><p>「喜欢这个眼妆的小伙伴请点赞……」</p><p>「记得每天给自己一个微笑哦……」</p><p>每次直播结束前，她总会对着镜头轻声说：「如果妈妈正在看这个直播，请您联系我……」</p><p>没想到，这个最初只是为了自我治愈的尝试，却意外获得了巨大成功。</p><p>「我的双语视频让很多人看到了文化融合的可能性。」谷月的眼睛亮起来，「他们告诉我，我让他们对混血儿有了新的认识。」</p><p>但粉丝越多，她越感到孤独。</p><p>每当看到「妈妈粉」的留言和弹幕，她的心就会隐隐作痛。</p><p>「小月好可爱，像邻家女儿一样～」</p><p>「想让小月当我女儿呢！」</p><p>「小月的妈妈一定很为你骄傲！」</p><p>只有她知道，自己最需要的不是粉丝的赞美，而是失散多年的母亲的一个拥抱。</p><p>「最后，感谢世界人权大会的主办方给我这次演讲的机会。」谷月深吸一口气，「今天我站在这里，不是为了控诉谁，也不是为了博取同情。我只是想说，在这个世界上，还有很多像我这样的混血儿，他们正在经历着文化认同的困惑，承受着来自两个国家、两个社会的偏见。他们需要我们的理解和关爱。」</p><p>掌声如潮水般涌来。</p><p>谷月望着台下那些或感动或震惊的面孔，突然觉得有些恍惚。这一刻，她仿佛看到了八岁的自己，正躲在角落里偷偷擦泪。</p><p>也许，未来的路还很长，但至少，她不再是一个人在战斗了。</p><h3 id="5">5</h3><p>「下面进入提问环节。」主持人露出职业性的温暖笑容。</p><p>「谷月小姐，请问寻找妈妈有资金赞助吗？」一位女记者问道。</p><p>谷月摇摇头，嘴角带着淡淡的苦涩：「没有。父亲虽然不反对我来日本，但一日元也没有给我。」</p><p>她停顿了一下：「寻找母亲的经费，全部来自我当网红赚的钱。感谢 TikTok、Twitter、OnlyFans、FC2 还有其他平台的朋友们。」</p><p>「还要感谢学校的照顾，」她补充道，「当网红和找妈妈的事，都没有影响到我的学业。」</p><p>「谷月小姐可是岐阜药科大学这一届博士生里唯一拿到全额奖学金的留学生哦～」主持人适时地补充。</p><p>台下响起一阵赞叹声。</p><p>「请问寻找妈妈的进展如何？」另一位记者问。</p><p>谷月握紧了话筒：「我多次去东大寻访，但因为校外人士不便获取历届学生的资料，所以几乎没有进展。」</p><p>会场里一片沉默。</p><p>「如果你的父亲在这里，你会对他说什么？」第三个记者问。</p><p>这个问题让谷月怔住了。她望向窗外，夕阳正好。</p><p>「父亲大人（おとうさま），」她轻声说，「我和妈妈都曾经爱过您。」</p><p>记者们安静地记录着，没人注意到她握着 PPT 翻页器的手，因为过分用力而指节发白。</p><p>会后，谷月回到酒店房间，打开笔记本电脑。</p><p>「帮谷月小姐找妈妈」已经成为多个社交平台的热搜标签。她的粉丝数量在不断上涨。评论区和私信箱里塞满了留言：</p><p>「一定能找到妈妈的！」</p><p>「支持谷月小姐！」</p><p>「我们都在为你加油！」</p><p>但这些善意的留言，却让她更加想念妈妈。</p><p>「妈妈，你在哪里……」她望着窗外的夜景，喃喃自语。</p><p>东京的灯火很美，像繁星落入凡间。也许此刻，妈妈也在某个角落，看着同样的夜景。</p><p>就在这时，手机邮件提示音响起。</p><p>看到发件邮箱的后缀是东京大学的域名，谷月的心跳漏了一拍。她颤抖着手指点开邮件：</p><blockquote><p>谷月小姐：</p><p>您好，我是您的粉丝，东京大学大学院人文社会系研究科的博士研究生小岛良太，也是日本家系研究协议会的成员。在 TikTok 上看到您今天的演讲视频后，我想我也许能帮您寻找母亲的下落。</p><p>我所在的研究团队从事人口流动、家谱传承和墓葬分布相关的研究工作。如果您愿意的话，我们可以协助您查找渡边美月女士的相关信息。</p><p>期待您的回复。</p><p>小岛良太</p></blockquote><p>窗外，东京的夜景依然璀璨。谷月凝视着远处东京塔的霓虹，心中突然涌起一丝希望。</p><p>也许，这就是命运给她的一个新的机会。</p><h2 id="Chapter-02-帮谷月小姐找妈妈">Chapter 02. 帮谷月小姐找妈妈</h2><h3 id="1-2">1</h3><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224001032491.png" alt="站在东京高层酒店的窗前，谷月凝视着闪烁的万家灯火"></p><p>收到小岛良太的邮件后，谷月的手指在键盘上方停顿了许久。</p><p>这些年来，她早已学会不轻易相信他人的承诺。但这封措辞谨慎的邮件，却让她心头泛起一丝暖意。</p><p>站在东京高层酒店的窗前，谷月凝视着闪烁的万家灯火。这位从八岁开始就立志寻母的女孩，又等来了一线希望。</p><p>她深吸一口气，开始回复邮件：</p><blockquote><p>小岛先生：</p><p>感谢您愿意帮忙。我很想了解更多关于您能如何协助我的细节。如果方便的话，我们可以约个时间详谈。</p><p>谷月</p></blockquote><p>发完邮件，她端起已经凉透的咖啡，望着杯中自己模糊的倒影。蒸腾的热气早已消散，只剩下苦涩的味道。</p><p>恍惚间，她又看到了十年前的自己。</p><p>那个夏天，高中毕业的谷月已经想好了——报考父亲任教的中国药科大学，申请学费减免。省下的钱，将来用来寻找母亲。</p><p>一个夏日的黄昏时分，她收到了中国药科大学六年制本硕连读基地班的录取通知书。烫金的校徽在夕阳下刺痛她的眼睛。</p><p>「这样至少不用他出学费。」她攥紧了录取通知书，轻轻敲响父亲书房的门。</p><p>谷清风只是淡淡地瞥了一眼：「恭喜你考上大学。」</p><p>然后继续修改他学生的论文，书房里只剩下键盘的啪啪声。空气凝固得令人窒息。</p><p>那一刻，她多希望父亲能说点别的。比如「你妈妈知道了一定很高兴」。但自从母亲离开后，父亲就再也不提起关于母亲的任何事，仿佛那段婚姻从未存在过。</p><p>本硕连读六年，谷月刻苦地学习，以专业第一的总成绩毕业。再加上 TOEFL 和 N1 的高分成绩，以及大学期间发表的高分 SCI 论文，谷月申请到了日本政府奖学金和岐阜药科大学的全额奖学金，来到日本留学。</p><p>东京塔的霓虹在玻璃窗上投下斑驳的光影。谷月轻抚着窗面，就像多年前她在学校图书馆学习的间隙，一边思念着母亲，一边抚摸图书馆的玻璃窗一样。</p><p>手机又响起提示音。是小岛良太的回复：</p><p>「这周六下午，新宿的 Blue Bird 咖啡厅如何？我可以详细告诉您关于家系研究的事。」</p><p>谷月看着手机屏幕，嘴角不自觉地扬起一丝微笑。也许，这一次会不一样。</p><p>周末，谷月在新宿的 Blue Bird 咖啡厅见到了小岛良太。</p><p>隔着氤氲的咖啡香气，这位戴着黑框眼镜的年轻人谈起了他的研究。</p><p>「我们团队主要研究战后日本的人口流动和家谱传承，」小岛推了推眼镜，「特别是战后家族结构的变迁。家系研究协议会是我们的合作伙伴。」</p><p>窗外的阳光透过玻璃洒进来，在他的镜片上投下细碎的光斑。</p><p>「我们收集全国的户籍、家谱、墓园资料，也会帮助一些失散的亲人重逢。」</p><p>谷月的手指无意识地摩挲着咖啡杯：「那一定很有意义。」</p><p>「是的。」小岛从包里拿出一个笔记本，翻开，「我可以接触到东大历届学生的学籍记录，而且家系研究协议会能帮您查询全国的户籍记录。」</p><p>他停顿了一下：「按照这个流程，对于您的母亲渡边美月女士，我做了一些初步的调查。」</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224012902784.png" alt="谷月的手微微颤抖，一滴咖啡溅在纯白的桌布上，晕开一朵暗色的花"></p><p>谷月的手微微颤抖，一滴咖啡溅在纯白的桌布上，晕开一朵暗色的花。</p><h3 id="2-2">2</h3><p>「我翻阅了二十五到三十五年前的学生资料，发现一共有十一位名叫渡边美月的学生，其中一名学生大三退学。」小岛看向谷月，「您母亲是在东大就读时退学的，对吗？」</p><p>这个问题让谷月想起了父亲唯一一次提到母亲的学业。那是在她准备申请日本留学的时候。</p><p>「你妈妈连大学都没读完。」父亲的语气里带着讥讽，「你就这么想步她的后尘？」</p><p>当时，谷月没有反驳。但在心里暗暗发誓：我一定要找到妈妈，问问她当年到底发生了什么。</p><p>「是。」谷月轻声回答。</p><p>小岛露出如释重负的表情：「那么，这位渡边美月同学就是您的母亲无疑了。巧得很，她和我的老家，都是在岐阜县飞驒市。」</p><p>岐阜县？</p><p>谷月怔住了。她在岐阜县岐阜市上学，而妈妈的老家是岐阜县飞驒市。难道神明（かみさま）真的把妈妈送到了自己身边？</p><p>「还好，我把您母亲的学籍记录复印了一份带过来。」小岛从包里取出一份复印件，递给谷月。</p><p>「妈妈（ママ）……」</p><p>看着复印件上母亲年轻时的照片，谷月的泪水夺眶而出。</p><p>二十年了，她终于再度见到了母亲的样子。那个在她模糊记忆中的温柔身影，原来曾经这么美好，这么年轻。</p><p>那一刻，她终于明白，为什么父亲的同事们都说她长得像妈妈。泪水模糊了她的视线，却模糊不了心中的疼痛。</p><p>「根据初步调查，」小岛的声音轻柔却沉重，「渡边美月女士最后的活动轨迹，是在她的故乡飞驒（tuó）市。」</p><p>谷月的手指紧紧扣住咖啡杯，指节微微发白。二十年的寻找，终于要有结果了吗？</p><p>「需要我陪您去看看吗？」小岛温和地问。</p><p>窗外的樱花随风飘落，在玻璃窗上留下淡淡的影子。</p><p>「那里可能会有我不认识的亲人，」谷月轻声说，「有您在的话，沟通起来会方便一些。而且，我的学校就在岐阜市，需要的话，我随时可以请假去隔壁的飞驒市。」</p><p>小岛的表情忽然变得严肃：「不过……二十年是很长的时间，期间可能发生了很多事情。」</p><p>他推了推眼镜：「无论找到什么样的结果，您都需要足够的勇气去面对。要有心理准备，有些真相可能并不如我们期待的那样。」</p><p>谷月沉默了片刻，抬起头，目光坚定：「明白。二十年来，我一直在准备着这一天。无论结果如何，我都想知道真相。」</p><h3 id="3-2">3</h3><p>樱花飞舞的春日，小岛和谷月各自从东京和岐阜县岐阜市出发，在飞驒古川火车站汇合。</p><p>飞驒市古川町的空气里飘着淡淡的木香，和记忆中母亲身上的气息那么相似。</p><p>在谷月的记忆里，八岁的自己坐在母亲身边，听着她温柔的声音用日语唱着家乡的童谣。木质香调的香水混合着晚霞的味道，是她关于母亲最深刻的记忆。</p><p>「渡边美月女士回国后，」小岛轻声说，「在东京找过几份工作，但都不太顺利。后来她回到了故乡飞驒市古川町，投奔娘家。」</p><p>「怎么会这样？」谷月问，心头涌上不祥的预感。</p><p>「那时候的日本，对于未完成学业又带着跨国婚姻经历的女性并不友好。」小岛叹了口气，「而且……她的精神状态似乎一直不太好。」</p><p>想到母亲为了父亲中断大学学业，以及父母婚姻最后阶段的不断争吵，谷月也跟着叹息。</p><p>两人走在古川町的小路上，春风掀起谷月的发梢，樱花瓣在空中轻轻飘舞。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224014400930.png" alt="两人先去气多若宫神社见到了藤原惠子女士"></p><p>两人先去气多若宫神社见到了藤原惠子女士。这位年长的巫女也是家系研究协议会的志愿者。</p><p>藤原惠子见到谷月时愣住了：「真像……你长得真像小美月（みつきちゃん）啊。」</p><p>春日的阳光透过神社的枝叶洒下斑驳光影，照在谷月苍白的脸上。</p><p>「请问……您认识我妈妈吗？」她的声音微微发抖。</p><p>「认识，当然认识。」藤原惠子的目光有些恍惚，「我看着她从小长大呢……」</p><p>二十年的等待，二十年的期盼，二十年的寻找，终于在这一刻迎来答案。谷月紧张地攥紧了拳头：「那……她现在在哪呢？」</p><p>藤原惠子的表情黯淡下来。</p><p>原来，藤原惠子是渡边家几十年的老邻居。她看着渡边美月长大，也见证了她的青春年华。</p><p>然而，渡边美月回国后，因为没有完成学业又带着跨国离婚的经历，在职场上屡屡受挫。她找不到正式工作，只能回到娘家，在便利店打零工糊口。</p><p>后来，渡边美月患上了重度抑郁症，失去了劳动能力。当她的父母在一场车祸中双双离世后，失去依靠的她陷入了深深的绝望。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224173605778.png" alt="在父母去世不久后的一个大雪天，渡边美月服用亚硝酸钠，结束了自己的生命"></p><p>在父母去世不久后的一个大雪天，她服用亚硝酸钠，结束了自己的生命。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241223221356120.png" alt="上气多地图（部分）"></p><p>藤原惠子为她处理了后事，把她安葬在离神社不远的飞驒市营上气多 1 号公墓。</p><p>谷月怔住了，泪珠无声地滑落：「不会的……妈妈一定还在某个地方……」</p><p>「很抱歉，谷月小姐……」小岛轻声说。</p><p>「啊……对了，」藤原惠子戴上老花镜，「小美月（みつきちゃん）留下了一些东西，我一直保管着。」</p><p>藤原惠子从檀木老柜里取出一个信封，里面躺着一封遗书和一张泛黄的照片。</p><p>遗书的最后一句话是：「小美（みちゃん），小月（つきちゃん），请原谅我，我是个软弱的母亲……」</p><p>照片上是渡边美月高中时的半身照——乌黑的长发扎成俏皮的双马尾，穿着白身绀领水手服，她站在樱花树下，眉眼弯弯，笑容明媚灿烂。</p><p>那张脸，谷月再熟悉不过——长大以后，每天早晨她都会在镜子里看到相似的容颜。</p><p>只是照片中的少女，眼神比谷月清澈明亮得多。那是还未经世事打磨的纯真目光，是谷月再也找不回的青春光芒。</p><p>藤原惠子轻声说，「这是她高三时的照片，那时她刚考上东大，是我们这儿第一个考上东大的女孩子呢。」</p><p>这张照片，是渡边美月人生最辉煌时刻的见证。那时的她，怀揣着无限憧憬，正要启程去追逐属于自己的梦想。</p><p>谁能想到，这个笑靥如花的少女，会在多年后选择离开人世？</p><p>「妈妈……」谷月轻声呼唤，「这才是您本该有的样子啊……」</p><p>她终于明白，为什么父亲当年会为这个东洋女孩倾倒。那样青春洋溢的笑容，那样纯净无瑕的眼神，足以融化任何人的心。</p><p>可命运何其残酷。那个曾经充满梦想的少女，最终却在异国他乡的生活中丢失了自己的光芒，在重重打击下走向了生命的尽头。</p><p>谷月小心翼翼地把照片贴在心口，仿佛这样就能拥抱住母亲逝去的青春，挽留住她最美好的年华。</p><p>这样一个品学兼优的女孩，为什么会放弃大学的学业？为什么会选择远赴异国他乡？</p><p>「原来，爱情真的可以改变一个人的一生啊……」谷月轻抚照片，喃喃自语。</p><p>那时的渡边美月，大概做梦也想不到自己会有怎样的结局。她满怀憧憬地奔赴中国，却在异国的土地上逐渐失去自我。语言不通、文化差异、生活压力，还有最重要的——孩子作为混血儿，在异国他乡的身份认同困境。</p><p>「妈妈，您最后悔的，是遇见父亲吗？」谷月轻声问，「还是……后悔生下了我们？」</p><p>窗外的樱花依然在飘落，没有人能回答她的问题。</p><p>这些，都是照片中那个笑靥如花的少女无法预见的。</p><p>思绪翻涌间，谷月突然明白了什么。母亲的死，与其说是一次自我了断，不如说是一场迟到的殉情。她用生命诠释了自己对爱情的忠诚，也用死亡控诉了这个世界对她的不公。</p><p>那个在便利店打工的落魄女人，那个独自承受抑郁折磨的离婚母亲，那个最终选择离开人世的可怜女子——她们都是这个天真少女的未来剪影。</p><p>她忽然懂了，为什么母亲选择这张高中照片作为遗照。那个站在樱花树下的少女，代表着母亲最美好的时光，是母亲最想留在世间的模样。</p><h3 id="4-2">4</h3><p>从神社出来时已是下午。春日的暖阳温柔地洒在石阶上，却怎么也温暖不了谷月冰凉的手指。</p><p>「小岛先生，」她突然停下脚步，声音哽咽，「如果……如果我当时再努力一点，是不是就能早点找到妈妈？」</p><p>小岛摇摇头：「不要这样想。你已经做得很好了。」</p><p>樱花纷纷扬扬地落下，谷月看着满地落英，想象着母亲生前是否也曾这样望着樱花，想着远在中国的女儿们。那个模糊的身影，那些支离破碎的记忆，终究永远定格在了那个下大雪的冬日。</p><p>小岛带着谷月抄小路穿过气多公园，来到公园另一侧的公墓。在一片樱花树下，有一座朴素的灰色花岗石墓碑，上面刻着「渡边美月之墓」。</p><p>墓碑正中镶嵌着一张遗照，正是那张高中时代的照片。少女时代的渡边美月眼神清澈明亮，嘴角微微上扬，仿佛正对着镜头轻声说着什么。</p><p>曾经，谷月在无数次直播中说过：「如果妈妈正在看这个直播，请您联系我……」</p><p>但是，从找到妈妈坟墓的这一刻开始，再也不需要对着镜头说这句话了。</p><p>谷月跪倒在墓碑前，颤抖着手指轻轻抚摸着冰冷的玻璃。那张青春洋溢的脸庞和她记忆中温柔的母亲重叠在一起，让她再也控制不住自己的情绪。</p><p>「母亲（おかあさん）……」</p><p>她扑在墓碑前失声痛哭，泪水打湿了照片前的玻璃，模糊了那张永远停留在青春年华的面容。</p><p>「您年轻的时候真的好美……好可爱……」她哽咽着说，「您看起来那么阳光，那么快乐……为什么后来会变成那样呢？」</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224015338624.png" alt="粉白的花瓣轻轻落在墓碑上，像是母亲温柔的安慰"></p><p>春风拂过墓园，带起一阵樱花雨。粉白的花瓣轻轻落在墓碑上，像是母亲温柔的安慰。</p><p>「对不起，我来得太晚了……」谷月的声音颤抖，「如果我能早点找到您就好了……」</p><p>八岁的那个早晨，她在半梦半醒间感觉母亲亲吻了她的额头。那是母亲最后一次触碰她。如果知道那是永别，她一定会紧紧抱住母亲，求她不要离开。</p><p>「妈妈，我是小月（つきちゃん）……我终于找到妈妈了。」她轻抚着冰冷的墓碑，「二十年了，我一直在找您……一直在等您……」</p><p>泪水彻底冲垮了脸上精致的妆容。</p><p>「姐姐在我们十五岁那年被拐走了，到现在都没有消息……」谷月低声诉说，「我多希望能和您一起去找她……可是现在……」</p><p>樱花继续纷纷扬扬地落下，像是在为这对阴阳两隔的母女无声地哭泣。遗照中少女甜美的笑容，与她最后的选择形成了多么强烈的对比。</p><p>谷月从包里取出手帕，小心地擦拭着照片前的玻璃。阳光透过樱花树枝洒落下来，给遗照笼罩上一层淡淡的粉色光晕。年轻的渡边美月仿佛就站在樱花树下，对着女儿露出温柔的微笑。</p><p>看着母亲青春的笑脸，谷月忽然理解了自己这些年的执着。</p><p>不是为了责备，不是为了追问。</p><p>仅仅是想确认那个教她唱童谣、给她梳辫子的温柔女子，是否真实存在过。那些支离破碎的童年片段，是否只是她在孤独中编织的梦。</p><p>小岛站在远处，默默注视着这一切。樱花瓣偶尔落在他的西装上，却无人拂去。</p><p>谷月逐渐平复了情绪，掏出手机拍下了渡边美月的墓碑。</p><p>「妈妈……」她的声音渐渐平静，「我知道您这些年过得很辛苦。您一定经历了很多痛苦和挣扎，才会做出那样的选择。」</p><p>她深吸一口气：「但是请您相信，您从来都不是一个软弱的人。您是这个世界上最坚强的妈妈。即使分开了，您依然深深地爱着我们。我们也是，深深地爱着您。」</p><p>樱花依然在飘落，像是母女间道不尽的思念，说不完的话语。</p><p>「谢谢您，小岛先生。」谷月擦干泪水，深深鞠了一躬，「如果没有您的帮助，我可能这辈子都找不到妈妈。」</p><p>「您太客气了。」小岛先生推了推眼镜，「作为您的粉丝，又恰好从事这方面的研究，能帮上忙是我的荣幸。」</p><p>从墓园出来时，天已经黑了。</p><p>小岛提议带谷月去看看母亲生前工作过的便利店，但被她婉拒了。今天的打击已经够大，她需要一些时间独自消化。</p><p>错过了末班车，谷月回不了岐阜市，只能在古川町找酒店住一晚。</p><p>夜色中的古川町古朴宁静。街道两旁的樱花树在路灯照耀下，显出一种朦胧的美。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224163527503.png" alt="窗外的樱花在夜风中轻轻摇曳，恍惚间，谷月仿佛看到了年轻时的母亲正站在樱花树下"></p><p>窗外的樱花在夜风中轻轻摇曳。恍惚间，谷月仿佛看到了年轻时的母亲——那个在两个国度之间奔波但是始终保持着温柔笑容的倔强女子，正站在樱花树下。</p><p>一瞬间，谷月的思绪飞向了三十多年前。当年，穿着水手服的渡边美月，是否也曾这样走在古川町的街头，满怀对未来的憧憬？然而，当十八岁的渡边美月在暮春四月坐上列车，出发去东京求学时，却不知道自己带着对爱情的期盼，驶向命运为她准备的深渊。</p><p>手机提示音把谷月的思绪拉回现实。她轻声自问：「如果父亲知道我找到了妈妈的坟墓，会有什么反应呢？」</p><h2 id="Chapter-03-爸爸和妈妈重逢">Chapter 03 爸爸和妈妈重逢</h2><h3 id="1-3">1</h3><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224163955794.png" alt="谷月正专注地进行着实验"></p><p>岐阜药科大学药学系的实验室里，谷月正专注地进行着实验。</p><p>右手稳稳握着移液枪，左手轻轻打开离心管的盖子。这是她精心制备的新型靶向抗癌药物，接下来需要进一步分离纯化，每一步操作都不容有失。</p><p>「先辈，流式细胞仪的数据出来了。」研二的后辈小林春子递来一张刚打印的数据报告，「我们的 HepG2 细胞存活率比上次低了 15%，和对照组已经出现统计学差异了。这说明我们的药物开始起效了。」</p><p>谷月正要接过数据，手机突然震动起来。</p><p>+8625 开头的号码让她愣了一下。南京的来电，这个时间？</p><p>「你好，我是谷月。」</p><p>「谷月，你爸爸病重住院了。」电话那头是谷月本硕连读期间的硕士导师郭林峰教授，他也是谷清风的同事和朋友。</p><p>郭林峰沉重地说，「你爸肺癌晚期，已经多处转移。他在鼓楼医院，一直在问你，想见你最后一面。」</p><p>窗外的樱花随风飘落，粉白的花瓣打着旋儿，轻轻落在窗台上。谷月望着那些脆弱的花瓣，不由感慨人生无常。</p><p>谷清风年轻时，为了赶科研进度，他做实验总是不注意防护，而且整日整夜泡在实验室里。那些有毒的化学试剂，或许就是从那时开始，一点一点侵蚀着他的肺部。</p><p>「我知道了。」她轻声说，声音有些发紧。</p><p>挂掉电话，谷月靠在走廊的墙上，双眼有些发涩。</p><p>四年了，自从来日本留学，她就再也没有回过国。一方面是忙着科研和寻母，另一方面是不愿面对那个被继母和异母弟弟占据的家。<br>「先辈……」春子担忧地看着她，「发生什么事了吗？」</p><p>「父亲病重了，我需要请假回国一趟。」谷月挤出一个淡淡的微笑。</p><p>「这样啊……」春子露出难过的表情，「前辈要保重啊，实验这边我会负责看着的。」</p><p>回到工位，谷月发邮件向导师请假，然后仔细记录下实验进度，将未完成的部分详细标注在记录本上。即使收到这样的噩耗，她依然保持着一贯的严谨。</p><p>一切安排妥当后，她打开笔记本电脑，预订了最早的回国航班。收拾行李时，她小心地把母亲墓碑的照片夹在透明的护照保护套里。</p><p>这一次回国，她不知道等待她的，会是怎样的告别。</p><h3 id="2-3">2</h3><p>飞机在南京禄口机场降落时已是凌晨。谷月没有回家，直接打车去了鼓楼医院，到达医院时已经快要黎明，黎明前的天空是最黑暗的。</p><p>医院的走廊上弥漫着刺鼻的消毒水味。拖着行李箱，她在指示牌的引导下找到了父亲的病房。</p><p>推开病房门的瞬间，她愣住了。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224164153267.png" alt="谷清风已经瘦得不成人形，鼻孔里插着氧气管，呼吸微弱"></p><p>病房里，谷清风已经瘦得不成人形，鼻孔里插着氧气管，呼吸微弱。让她意外的是，继母和同父异母的弟弟并不在场，只有一位护工在照看。</p><p>「小月……你来了……」谷清风的声音像是从很远的地方传来，微弱得几乎听不见。他试图抬起头，却只能微微转动脖子。</p><p>「嗯。」谷月走到床尾站住，既不远离，也不靠近。</p><p>多讽刺啊，一个研究了半辈子抗癌药的教授，最终却没能逃过癌症的魔爪。</p><p>「你现在……过得怎么样？」谷清风问道，浑浊的眼睛里闪过一丝光芒。</p><p>「还行。」谷月语气平淡，「博士第四年了，研究靶向抗癌药，发了四篇一区论文，累计影响因子 30 多，想发一篇影响因子更高的再毕业。」</p><p>她表面波澜不惊，内心却翻涌不息。曾经，父亲对她出国深造百般嘲讽，如今，她终于可以在父亲面前展示自己的科研成绩。这种报复般的快感，却让她感到一丝苦涩。</p><p>谷清风眼中闪过欣慰：「这么说……我们父女……走上了同样的路……」</p><p>话未说完，一阵剧烈的咳嗽打断了他，氧气管随之晃动。</p><p>看着父亲痛苦的样子，谷月心中的坚冰开始松动。她快步上前，轻轻扶起父亲，递上一杯温水。</p><p>她注意到父亲枯瘦的手背上插着针头，监护仪上跳动的数字让她心揪成一团。</p><p>「阿姨和弟弟去哪了？」等父亲平静下来后，她问道。</p><p>「他们……」谷清风苦笑一声，「带着我的积蓄和房产证……不知去向了。」</p><p>谷月沉默了，扭头看向窗外。晨光熹微，第一缕阳光透过玻璃洒进病房，为这场人生悲剧镀上一层讽刺的金边。</p><p>这些年来父亲对继母和弟弟百般疼爱，而当年的母亲，在一次据理力争之后，被他狠心赶出家门，然而最终背叛他的，恰恰是他倾尽所有去爱的人。</p><p>「人生总是这样讽刺。」谷月扭回头对父亲轻声说，「您给了阿姨最好的一切，她却带着钱和弟弟跑了。妈妈什么都没要，临终前还念着我们……」</p><p>原来爱与背叛，都是这么难以预料。这就是人性吗？谷月望着父亲苍老的脸庞，心中五味杂陈。</p><p>那些表面的温情脉脉之下，却往往藏着算计与背叛。而那些最真诚的爱，却往往被践踏、被辜负。</p><p>就像母亲，放弃学业远嫁他乡，换来的是无情的驱逐。</p><p>就像父亲，倾尽所有重组家庭，换来的是晚年的凄凉。</p><p>求而不得之苦，正是人生的无常。</p><p>病房里只剩下监护仪规律的滴答声，和父亲微弱的呼吸声。晨光渐亮，新的一天开始了，但对这对父女来说，某些东西永远地结束了。</p><h3 id="3-3">3</h3><p>谷清风突然回光返照清醒过来。他眼中涌出浑浊的泪水，顺着凹陷的脸颊缓缓流下。</p><p>「对不起……」他哽咽着，「我对不起你们姐妹，对不起你妈妈……」</p><p>「别说这些了。」谷月摇摇头，声音有些发紧，「现在说这些还有什么用？」</p><p>「不，我要说。」父亲用尽全力，「她当初和我谈恋爱的时候，眼里有光，可是我最后……」</p><p>话音未落，又是一阵剧烈的咳嗽。</p><p>「小月……爸还有一笔私房钱，存折在郭林峰那里，密码是你生日，是留给你的……」他喘息着，「爸这辈子没求过你什么，你能不能……看在你妈的份上……让爸和你妈合葬？」</p><p>病房里安静得能听见时钟走动的声音。</p><p>谷月瞪大了眼睛：「爸……你……都知道？」</p><p>「知道……你妈死后埋在她老家……」父亲的声音越来越微弱，「我每次去日本开会，都去给她扫墓…我爱她，而且……」</p><p>谷月苦笑着摇摇头，她用二十年寻找的信息，原来父亲早就知道，只是瞒着自己。那一刻，谷月觉得这二十年过得像一个笑话。</p><p>父亲还在继续低语：</p><p>「中国这边的墓地，二十年就要清理……」</p><p>「我不想变成无主的游魂……」</p><p>「你妈妈那边……是永久的……」</p><p>「至少……死后能守着她……」</p><p>谷月轻笑一声。即使临终，父亲考虑问题仍是那么现实。但不知为何，这一刻她心里反而轻松了一些。或许正是这种不加修饰的真实，让她看到了父亲最后的坦诚。</p><p>她取出护照保护套里母亲墓碑的照片，问道：「爸，你为什么瞒着我？」</p><p>谷清风看到照片上熟悉的墓碑，瞪大了浑浊的眼睛。原来女儿也找到了那里，那个他曾独自前往祭拜的地方。</p><p>他老泪纵横，往事如潮水般涌来。那个穿着水手服、扎着双马尾的女孩，那个为了爱情放弃一切的倔强女子，那个最终被他亲手推开的妻子……</p><p>「美月（みつき），我们的女儿和你长得真像啊……」</p><p>这是他的最后一句话。</p><p>谷月再也无法从父亲嘴里问出真相了。她看着父亲安详的遗容，终于明白，在这个倔强的老人心里，也许一直深藏着对母亲的爱恋和愧疚。只是这份愧疚，来得太迟，说得太晚。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224165054552.png" alt="阳光正好。一只白鸽落在窗台上，停留片刻后振翅高飞"></p><p>她没有说话，眼泪划过脸颊。她扭头看向窗外，阳光正好。一只白鸽落在窗台上，停留片刻后振翅高飞。生命和爱就像那只白鸽，来去匆匆，留下的只有转瞬即逝的痕迹。</p><p>谷清风的遗愿在同事和朋友间传开，引起了不小的议论。</p><p>「渣男就是渣男，临死还要麻烦前妻。」</p><p>「当年把人赶出家门时怎么不想想？」</p><p>「分明是想省钱，死了都在算计。」</p><p>但谷月已经超越了这些论断。</p><p>「生前没能好好相处，就让他们死后在一起吧。」她对前来慰问的人说，「父母曾经相爱过，那份感情值得被纪念。」</p><h3 id="4-3">4</h3><p>在中国办理骨灰出境的过程异常艰难。每个工作日，她都在各个部门之间来回奔波。印章、表格、证明材料，仿佛永无止境。</p><p>民政部门的工作人员充满怀疑地反复询问：「你能保证不会在境外随意倾倒骨灰吗？你不会是为了规避我国的殡葬管理制度吧？」</p><p>海关人员更是直截了当：「为什么一定要运往国外？需要确保骨灰中没有夹带违禁品。」</p><p>谷月不得不一次次解释这是父亲的遗愿。她提供遗嘱原件，找公证处开具证明，请律师出具法律意见书。她甚至找来了郭林峰教授作证。</p><p>她的脚被鞋子磨出了水泡，却仍然奔走不停。</p><p>办理骨灰入境日本的手续同样繁琐，让她一度陷入绝望。走投无路之际，她想到了小岛良太，犹豫再三后发去了求助邮件。</p><p>出乎意料的是，小岛的回复很快：「我来帮您。」</p><p>他不但主动查询规定，与谷月一起核对需要提交的材料，还每天汇报办事进展。深夜常常打来电话，耐心解答她的疑问。</p><p>「实在过意不去，这么晚还打扰您。」一次深夜通话中，谷月有些歉疚。</p><p>「没关系，」小岛的声音透着关切，「我知道你一个人在中国处理这些有多难。」</p><p>最后一个文件确认的那天，谷月收到了小岛寄来的特快专递。文件夹里整齐地装着所有材料，每份都配有详细说明。</p><p>在最后一页，小岛用工整的字迹写道：「节哀。等你回来的时候，一切都会好起来的。」</p><p>三天后，南京禄口机场，谷月抱着装有父亲骨灰的素白色骨灰盒走上飞机。</p><p>空乘人员特意给她升了舱。</p><p>飞机起飞时，她望着窗外渐渐变小的城市，泪水默默地流下来。故乡南京承载了她太多的记忆，有快乐，有悲伤，有遗憾，有对母亲的思念，有刻苦学习的回忆。如今带着父亲的骨灰离开，既是告别过往，又是带着对这座城市最后的牵绊，飞向大海彼岸母亲的故乡。</p><p>在东京羽田机场，即使有小岛发来的详细攻略，办理入境手续时她还是因为海关工作人员充满质疑的问询而几度哽咽。</p><p>工作人员认真查看着每一份文件，连父亲的死亡证明都要反复核对。</p><p>终于，在第三遍检查后，一位年长的女性工作人员将文件递还给她。她像一位母亲安慰女儿一样，温柔地对谷月说：「请节哀。这在日本很少见，但既然文件齐全，我们会按程序处理。」</p><p>穿过机场航站楼，谷月看到小岛已经在出口等候。他穿着一身深灰色西装，手里拿着一束洁白的菊花。</p><p>看到她疲惫的样子，他默默接过她手中的行李，目光在她怀中的骨灰盒上停留了片刻。</p><h3 id="5-2">5</h3><p>第二天清晨，两人从东京出发，乘火车来到飞驒市古川町。春日的晨雾还未散去，远山若隐若现，像一幅淡淡的水墨画。</p><p>上气多 1 号公墓，樱花纷纷扬扬地飘落。谷月穿着黑色绉绸和服，头发挽起一个简单的髻。这身装扮是小岛的母亲特意为她准备的，据说这是最庄重的日式祭服。和服的领口处，还别着一枚小小的白色胸花，那是小岛母亲坚持要为她戴上的。</p><p>远处，小岛静静等候。他仍穿着那身深灰色西装，即使樱花瓣偶尔落在肩头，也始终保持着原来的姿势，仿佛怕惊扰了这庄重的时刻。</p><p>公墓的工作人员敲响了钟声。一声声回荡在山谷间，庄严而悲凉。钟声渐止时，一群白鸽从檐角惊起，盘旋着飞向远方。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224165750226.png" alt="谷月跪坐在母亲的墓前"></p><p>工作人员恭敬地打开墓室。谷月跪坐在母亲的墓前，双手微微发抖地打开两个骨灰盒。晨风拂过，几缕骨灰随风飘起，在阳光中化作细碎的光点，消散在远方的山际。</p><p>「爸爸，妈妈，你们终于又在一起了。」她低声呢喃。</p><p>她小心翼翼地将父亲的骨灰倒入母亲的骨灰盒。两堆灰白色的粉末缓缓交融，就像神明终究将这对饱经磨难的夫妻的人生轨迹重新编织在了一起。</p><p>新的墓碑是用上等的中国进口花岗岩制作的，温润如玉。除了刻着父母的名字，还嵌着一张父母合照，这是谷月用父亲年轻时的照片和母亲留下的那张照片精心合成的。</p><p>照片里，父亲穿着笔挺的西装，目光坚定而温柔；母亲穿着水手服，扎着双马尾。他们都笑得那么灿烂，仿佛时光从未将他们分开。</p><p>「爸爸，妈妈，」她抚摸着冰凉的墓碑，声音轻柔，「你们好好相伴。我也该去追寻自己的人生了。」</p><p>樱花依然在飘落，像无数片洁白的蝶翼，轻轻落在墓碑上。谷月在心中默默祈祷：愿天国没有仇恨，没有偏见，没有遗憾，只有永恒的爱与温柔。</p><p>夕阳西斜，墓园里寂静无声。小岛送谷月回她下榻的酒店，两人的影子被夕阳拉长，融合在一起，仿佛十指相扣的恋人。她的和服下摆沾了些许泥土，却似乎谁都没有注意。</p><p>天边最后一抹晚霞渐渐消散，春日的暮色温柔地笼罩着这座小城。远处，一列火车驶过，卷起的风声像是生命延续的回响。</p><p>谷月走在醉人的春风里，看着飘落的樱花瓣。她想，或许这就是造化弄人。一个人永远不知道，努力的尽头会是什么样的结局。</p><p>就像她跨国寻母，最后却得到了母亲的噩耗。</p><p>就像父母的跨国爱情，开始时那么浪漫、那么炽热，最后却化作了一抔冰冷的骨灰。</p><p>但至少，自己找到了母亲的坟墓，而父母也在永恒中重逢。这或许就是最好的结局。</p><p>她望着手机里父母的合照，知道自己终将向百万粉丝讲述这个关于寻找、遗憾与跨国爱情的故事。</p><p>而这个故事，或许还会延伸出一段新的篇章。</p><h2 id="番外篇：樱花未眠">番外篇：樱花未眠</h2><h3 id="1-4">1</h3><p>小岛提议去飞驒市古川町一家历史悠久的咖啡馆坐坐。这家店据说有百年历史，门前的樱花树已经长得比屋檐还要高，粉白的花瓣随风飘落，为古朴的店面增添了几分浪漫气息。</p><p>两人选了靠窗的位置。夕阳透过樱花枝桠洒进来，在桌布上投下斑驳的光影，在雪白的桌布上投下斑驳的光影，像一幅淡淡的水墨画。</p><p>「小岛先生，」谷月双手捧着咖啡杯，「这次真的很感谢你。」</p><p>「不用这么客气。」小岛停下搅拌咖啡的动作。</p><p>「不，」谷月摇摇头，「如果不是你帮忙，我可能这辈子都找不到妈妈。而且也无法让父母合葬在一起。」</p><p>她停顿了一下，望向窗外飘落的樱花：「这段时间，你一直在默默关心我。我都注意到了。」</p><p>小岛有些不好意思地推了推眼镜，镜片上反射着温暖的夕阳：「于公来说，助人寻亲是我们协议会的职责，于私来说，我是你的粉丝，能帮上你，我很开心。」</p><p>谷月第一次认真打量起对面这个男人：清秀的五官，温和的眉眼，精致的发型，带着一副黑框眼镜，显得知性又内敛。他微微低着头搅拌咖啡的样子，让人莫名感到安心。</p><p>他们认识不过几个月，可每次她需要帮助的时候，他总是默默出现。</p><p>从最初帮她寻找母亲的线索，到后来为她办理各种手续，再到这次的奔波相助。这个看似内向的男人，用行动诠释着什么是真正的温柔。</p><p>「小岛先生，」谷月深吸一口气，「我想告诉你一件事。」</p><p>「嗯？」</p><p>「我喜欢你，请和我交往。」她鼓起勇气，直视着他的眼睛，「不是因为感激，是真的喜欢。」</p><p>咖啡馆里很安静，只能听见窗外樱花瓣落在地上的细微声响。</p><p>小岛愣住了，他的眼镜上映着落日的余晖。过了好一会儿，他才开口：</p><p>「其实，我从第一次看到你的视频，就……」</p><p>话未说完，一阵清风拂过，樱花纷纷扬扬地飘进窗来，落在两人之间的桌布上。</p><p>「我也喜欢你，」他轻声说，「很久了。」</p><p>「真的吗？」</p><p>「四年前我刷到了你 TikTok 的第一个视频，你在视频里说：『我一定要找到妈妈。』那种坚定的眼神，让我一见钟情。」小岛认真地说，「所以我给你打赏了 1000 日元，然后把你设为了『特别关注』。」</p><p>谷月张大了嘴：「诶……所以小岛先生是给我打赏的第一个粉丝？」</p><p>「嗯。我每天都在等你更新。「小岛认真地说，「看着你独自打拼的样子，我就在想：如果能帮上你就好了。」</p><p>谷月突然觉得眼眶发热。一个人在异国他乡追寻了那么久，终于在找到妈妈的同时，也找到了心的归处。</p><p>「以前，我帮不上你，只能默默围观。但是读博以后，我加入了家系研究协议会，我发现自己的研究方向和协议会的工作恰好可以帮上你，所以就主动联系你了。」</p><p>「谢谢您，小岛先生！」</p><p>「已经是恋人了，还要用敬语吗？」小岛微笑着握紧了谷月的手。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224223649613.png" alt="小岛微笑着握紧了谷月的手"></p><p>咖啡的醇香在空气中缓缓弥漫，窗外的樱花树在晚风中轻轻摇曳，花瓣纷纷扬扬地飘落，像是在祝福这对有情人。在这个百年老店里，在飞驒的暮色中，一段新的故事正悄然开始。</p><h3 id="2-4">2</h3><p>五年的博士生涯即将结束，谷月的论文答辩非常成功。每位评委都给出了极高的评价，尤其是她在抗癌药物研发方面的创新成果，让评审团印象深刻。</p><p>可是，在投出几十份简历后，她收到的不是礼貌的拒绝，就是令人难堪的沉默。少数面试机会，也都在得知她是外国人后戛然而止。</p><p>「我觉得您很优秀，」一位人事主管私下对她说，「但是……您明白的，日本的企业文化比较……」</p><p>对方没有说完，但谷月懂得她的意思。即使拥有优秀的科研成果，作为一位外国女性，谷月在日本找工作依然困难重重。</p><p>「谷月，」某个夜晚，小岛打开戒指盒，「请和我结婚吧。」</p><p>窗外的樱花在夜色中若隐若现，像是无数漂浮的星辰。</p><p>「这样你就能归化日本，为找工作减少阻碍」小岛轻声说，「而且我会继续在东大做博士后，工资足够养活我们两个，你即使做家庭主妇也没问题。」</p><p>谷月看着窗外飘落的樱花，想起了妈妈。那个为了爱情放弃一切的倔强女孩，逞强地退学随丈夫前往中国，最终在重重压力下选择了结束生命。</p><p>「良太先生，谢谢你。」她轻轻抽回手，「但我不能重蹈妈妈的覆辙。」</p><p>「怎么又说敬语了？」小岛着急地说，「时代不同了！我不会像你爸爸那样……」</p><p>「不是你的问题。」谷月打断他的话，「我需要证明自己的价值，需要在药学领域有所作为。但是日本社会很难接纳这样的我。」</p><p>「可是……」</p><p>「还记得我对你告白的那天吗？」谷月露出一丝苦笑，「那天你说，看到我在视频里说『一定要找到妈妈』时，就被我的坚定打动了。」</p><p>「那个坚定的女孩，现在也要用同样的决心去追求自己的梦想。」</p><p>房间里陷入短暂的沉默，只有樱花拍打窗户的细微声响。</p><p>小岛望着谷月的侧脸，看到她眼中闪烁的泪光。他突然想起了那些守在电脑前，一遍遍看她视频的日子。那时的她，为了寻找母亲，独自一人在异国坚持打拼，从未想过放弃。</p><p>「对不起，」小岛轻声说，「是我太自私了。」</p><p>他站起身，走到窗前：「你说得对，我喜欢上的就是那个坚定的你。如果因为结婚就让你放弃梦想，那就不是真正的爱了。」</p><p>谷月抬起头，惊讶地看着他。</p><p>「你知道吗？」小岛转过身，推了推眼镜，露出温柔的笑容，「看着你追寻梦想的样子，比看着你因为妥协而留在身边更让我心动。」</p><p>「良太君……」</p><p>「去追寻你的梦想吧，」他走回谷月身边，轻轻擦去她脸上的泪水，「就像当初追寻妈妈的下落一样。我会一直在这里，等你凯旋。」</p><p>樱花依旧在窗外纷飞，像是在见证这对恋人之间无声的承诺。那一刻，谷月明白，真正的爱情不是束缚，而是彼此成就。</p><p>谷月收到加州大学旧金山分校的 offer 时，手指颤抖得几乎握不住手机。</p><p>实验室主任在邮件里称赞她的抗癌药物研发项目极具创新性，愿意提供全额资助的博士后岗位。这是多少人梦寐以求的机会。</p><p>可是，为什么眼泪会不受控制地流下来？</p><p>整理行李的那天，她一遍遍告诉自己：这是最好的选择。留在日本，即使和小岛结婚，即使获得国籍，她依然会因为自己的身份而被区别对待。就像妈妈当年在中国一样，永远都是个外人。</p><p>可是，当她在箱子里发现小岛悄悄塞进来的相册时，还是崩溃了。</p><p>藏青色的相册封面上用烫金字印着「樱花未眠」。这是什么时候放进来的？是那天他来帮她搬行李时吗？</p><p>翻开第一页，泪水就在眼眶里打转。那是他们相恋以来，谷月第一次给父母扫墓时，在父母墓前的合影。用谷月的话说，是向父母介绍男朋友。那天她刚扫完墓，脸上还带着泪痕。小岛站在她身边，目光温柔地看着她。</p><p>「对不起，」她对着照片轻声说，「良太君，对不起。」</p><p>四月的羽田机场，樱花纷飞如雪。</p><p>谷月故意选了最早的一班飞机，没有告诉任何人。她知道，如果见到小岛，如果看到他温柔的眼神，自己一定会心软。</p><p>可是不能心软，不能重蹈妈妈的覆辙。她不能为了爱情放弃自己的追求，然后在异国他乡承受着无形的歧视，最终在绝望中放弃生命。</p><p>这一走，就是永别。</p><p>永别于她最爱的人，永别于她的母亲长眠之地，永别于她短暂的甜蜜时光。</p><p>登机前，她最后一次打开手机。小岛发来一条信息：</p><p>「无论你在哪里，我都祝福你。」</p><p>这么简单的一句话，却让她在安检口站了很久很久。他早就猜到了吧？所以才提前放了相册在她的箱子里。所以才没有像那些深陷热恋的恋人一样，用电话和信息轰炸她。</p><p>原来，他一直都懂她。</p><p>飞机起飞的那一刻，谷月闭上眼睛，泪水终于决堤。窗外的樱花渐渐远去，如同她终将逝去的青春，和那场注定无法圆满的爱情。</p><p>也许多年以后，当她在旧金山的实验室里取得成果时，会想起这个选择。那时的她一定会庆幸今天的决定——选择了自己，选择了梦想，选择了不再重复母亲的悲剧。</p><p>但此刻，在这万米高空，在这片被阳光染成粉色的云海之上，她只想让自己任性地哭一场。因为她终究要离开这个深爱着的人，永远地离开。</p><h2 id="番外篇：若樱不落（平行世界线）">番外篇：若樱不落（平行世界线）</h2><h3 id="1-5">1</h3><p>在谷月向小岛告白的前一年，日本迎来了历史性的一刻：史上首位女性首相村上真纪当选。</p><p>她以「多元共生社会」为其施政纲领的核心，推动国会通过了一系列改革法案。</p><p>「日本要扭转高龄少子化的困境，需要更加包容、更加开放。」村上首相发表就职演讲时说，「我们要打破性别歧视，消除对外国人才的壁垒。这不仅关乎个人的幸福，更关乎国家的未来。」</p><p>在她的推动下，越来越多的企业开始重视女性人才，海外精英的工作签证和永居身份也变得更加容易获得，「准时下班回家就是不努力工作」的社会氛围悄然改变，人们逐渐开始接纳更多元的价值观。</p><p>就在这样的时代浪潮中，谷月迎来了她的博士毕业季。</p><p>她的毕业论文答辩非常成功。每位评委都给出了极高的评价，尤其是她在抗癌药物研发方面的创新成果，让评审团印象深刻。</p><p>专门请假来旁听的小岛坐在会议室的角落里，目光始终追随着台上从容不迫的谷月。她自信而专业的表现，让他感到无比骄傲。</p><p>「恭喜。」答辩结束后，在校园的樱花树下，小岛递给她一束花，「今天的答辩，你让整个评审团都折服了。」</p><p>谷月接过花束，脸上泛起红晕：「还不是因为有人一直在角落里给我加油。」</p><p>「以后要叫你谷月教授了。」</p><p>「别闹了，我还在找工作呢。」</p><p>「找什么工作？」小岛推了推眼镜，露出神秘的笑容，「东京药科大学不是挺好的吗？」</p><p>谷月一愣：「我刚投过简历还在等消息……」</p><p>「我托人打听过了，」小岛说，「他们正在筹建一个新的抗癌药物研发中心，你的研究方向正好契合。」</p><p>果然，面试非常顺利。「您在抗癌药物研发方面的创新思路令人印象深刻。」东京药科大学的药学系主任在面试时说，「特别是您在生化药物方面的经验积累，正有 利于我们开拓新的领域。」</p><p>药物研发中心汇集了来自世界各地的精英。印度籍的主任研究员在蛋白质组学领域享有盛名，韩国来的博士后在临床试验数据分析方面独具慧眼，还有将人工智能引入药物研发的美国教授。这样充满活力的国际化团队让谷月感受到了崭新的学术氛围。</p><p>很快，他们在抗癌新药研发上取得了突破性进展。以谷月为第一作者的论文发表在国际顶级期刊《Nature》上，引起了学界广泛关注。</p><p>在新闻发布会上，她用流利的日英双语介绍研究成果，台下闪烁的相机见证着这个开放包容的新时代。而坐在观众席上的小岛，依然用那样温柔的目光注视着她。</p><p>「你知道吗？」回程的电车上，谷月靠着小岛的肩膀说，「我特别感谢你当初支持我在日本找工作的决定。」</p><p>「我知道那对你意味着什么。」小岛轻声说，「你母亲的悲剧，永远不会在你身上重演了。」</p><h3 id="2-5">2</h3><p>第二年春天，小岛在东京上野公园的樱花树下向谷月求婚。没有华丽的场景，没有精心设计的惊喜，只是一个一起散步的周末。</p><p>「小月（つきちゃん），」小岛突然停下脚步，从口袋里掏出一个小盒子，「请和我结婚吧，我想和你共度余生。」</p><p>樱花纷纷扬扬地落在两人身上，谷月看着眼前这个与自己并肩走过风雨的男人，握紧了他的手，说：「我愿意。」</p><p>两人紧紧地拥吻在一起。</p><p>婚礼前，谷月专门给父母扫墓，对天国的母亲说：「请您放心，我找到了值得托付终身的人。他会永远尊重我的选择，支持我的梦想。」</p><p>婚礼在飞驒市古川町举行。郭林峰教授担当女方父亲的角色，藤原惠子则代替谷月的母亲，将她交到小岛手中。</p><p><img src="https://img.kukmoon.com/gu-yue-xiao-jie-zhao-ma-ma/image-20241224170057420.png" alt="小岛先生和谷月小姐的婚礼"></p><p>婚后的生活平淡而温馨。他们在东京按揭了一套朝南的小公寓，从阳台望出去，能看到一排樱花树。每到春天，粉白的花瓣纷纷扬扬，像是在庆祝他们的幸福。</p><p>工作日里，两人都很忙碌。谷月在实验室带领团队继续抗癌药物的研发，小岛则专注于自己的课题。但他们都会准时下班回家，一起做饭，聊天，分享各自的研究进展。</p><p>「你知道吗？」有一天晚上，谷月在厨房帮小岛择菜时说，「我最喜欢现在这样的生活。」</p><p>「怎样的生活？」小岛一边煮汤一边问。</p><p>「能做自己热爱的研究，又能和最爱的人在一起。」谷月靠在料理台上，看着忙碌的丈夫，「不用在事业和家庭之间做选择。」</p><p>小岛放下汤勺，走过来轻轻抱住她：「这就是我们这一代人的幸福。」</p><p>窗外的樱花依旧年年盛开。不同的是，这一次的花瓣不再预示着别离，而是见证着一对跨国夫妇携手同行的幸福约定。</p><h2 id="彩蛋">彩蛋</h2><p>以下截图均来自对应的 AI 网站。</p><p><img src="https://img.kukmoon.com/2024-12-24-22-51-48.png" alt=""></p><h2 id="图片版权">图片版权</h2><p>题图：用 <a href="https://x.com/i/grok">Grok</a> 自绘。</p><p>头图：Image by <a href="https://pixabay.com/users/tayebmezahdia-4194100/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3174729">Tayeb MEZAHDIA</a> from <a href="https://pixabay.com//?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3174729">Pixabay</a></p><p>文中插图：用 <a href="https://x.com/i/grok">Grok</a> 自绘。</p>]]></content>
    
    
    <summary type="html">一位中日混血女孩在历经父母离异、姐姐失踪的磨难后，追寻母亲足迹，最终在日本找到已故母亲，并促成父母合葬，实现了一场迟到的和解。</summary>
    
    
    
    <category term="故事" scheme="https://blog.kukmoon.com/categories/%E6%95%85%E4%BA%8B/"/>
    
    
    <category term="月光与柠檬糖" scheme="https://blog.kukmoon.com/tags/%E6%9C%88%E5%85%89%E4%B8%8E%E6%9F%A0%E6%AA%AC%E7%B3%96/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 博客部署到 Ubuntu 服务器</title>
    <link href="https://blog.kukmoon.com/20dafc3ac0e9/"/>
    <id>https://blog.kukmoon.com/20dafc3ac0e9/</id>
    <published>2024-11-18T03:19:18.000Z</published>
    <updated>2024-11-18T03:19:19.000Z</updated>
    
    <content type="html"><![CDATA[<p>本文主要参考了 <a href="https://easyhexo.com">EasyHexo 网站</a> 上的<a href="https://easyhexo.com/1-Hexo-install-and-config/1-4-deploy-hexo.html#%E9%83%A8%E7%BD%B2%E5%88%B0-centos-servers">《部署到 CentOS Servers》</a>，结合 Ubuntu 的实际，对<a href="https://easyhexo.com/1-Hexo-install-and-config/1-4-deploy-hexo.html#%E9%83%A8%E7%BD%B2%E5%88%B0-centos-servers">《部署到 CentOS Servers》</a> 作了修改和补充。文中使用的服务器是一台运行 Ubuntu 的 VPS。</p><p><img src="https:///img.kukmoon.com/2024-11-18-12-10-00.png" alt="一台运行 Ubuntu 的 VPS"></p><h2 id="远程连接到服务器并配置环境">远程连接到服务器并配置环境</h2><p>用 SSH 远程连接到服务器。此处假定已经配置好服务器的 SSH 免密登录，假定用户名为 <code>kukmoon</code>，服务器的 IP 为 <code>999.999.999.999</code>，</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ ssh kukmoon@999.999.999.999<br></code></pre></td></tr></table></figure><p>在服务器上安装 Git，如果已有 Git，可以跳过。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo apt install git<br></code></pre></td></tr></table></figure><p>在服务器上新建名为 <code>git</code> 的用户：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo useradd -m git<br></code></pre></td></tr></table></figure><p>在服务器上设置 <code>git</code> 用户的密码：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo passwd git<br></code></pre></td></tr></table></figure><h2 id="配置-SSH-免密登录">配置 SSH 免密登录</h2><p>在本地电脑上生成一对公钥和私钥。如果已经生成，可以跳过。输入 <code>ssh-keygen</code> 后一路回车，结束后会在 <code>C:\Users\&lt;用户名&gt;\.ssh</code> 目录下生成一对公钥（<code>id_rsa.pub</code>）和私钥（<code>id_rsa</code>）。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs Powershell"><span class="hljs-built_in">PS</span> C:\Users\Kukmoon&gt; ssh<span class="hljs-literal">-keygen</span><br></code></pre></td></tr></table></figure><p>接下来要把公钥复制到服务器上。在服务器上新建 <code>/home/git/.ssh</code> 目录，并修改其属性：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">mkdir</span> /home/git/.ssh<br>$ sudo <span class="hljs-built_in">chmod</span> 700 /home/git/.ssh<br></code></pre></td></tr></table></figure><p>在服务器上临时修改 <code>/home/git/.ssh</code> 目录及所有文件与子目录的所有权为当前用户，此处当前用户名是 <code>kukmoon</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">chown</span> -R kukmoon:kukmoon /home/git/.ssh<br></code></pre></td></tr></table></figure><p>在本地电脑上操作，将公钥添加到服务器上的 <code>authorized_keys</code> 文件中，并修改其属性。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs Powershell"><span class="hljs-built_in">cat</span> ~/.ssh/id_rsa.pub | ssh kukmoon@<span class="hljs-number">999.999</span>.<span class="hljs-number">999.999</span> <span class="hljs-string">&#x27;cat &gt;&gt; /home/git/.ssh/authorized_keys;chmod 700 /home/git/.ssh;chmod 600 /home/git/.ssh/authorized_keys&#x27;</span><br></code></pre></td></tr></table></figure><p>在服务器上把 <code>/home/git/.ssh</code> 及其全部内容的所有权归还给 <code>git</code> 用户：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_">$ </span><span class="language-bash">sudo <span class="hljs-built_in">chown</span> -R git:git /home/git/.ssh</span><br></code></pre></td></tr></table></figure><h2 id="测试免密登录">测试免密登录</h2><p>在本地测试一下能否能用 <code>git</code> 用户免密登录服务器，假设 <code>999.999.999.999</code> 是服务器的 IP 地址：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs powershell"><span class="hljs-built_in">PS</span> C:\Users\Kukmoon&gt;ssh <span class="hljs-literal">-i</span> ~/.ssh/hexo<span class="hljs-literal">-deploy-key</span> git@<span class="hljs-number">999.999</span>.<span class="hljs-number">999.999</span><br></code></pre></td></tr></table></figure><p>如果不能免密登录，就需要在服务器上进行以下检查。</p><ol><li>检查 <code>/etc/ssh/</code> 目录下的 <code>sshd_config</code> 文件，确认以下关键选项是否正常：</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell">RSAAuthentication yes<br>PubkeyAuthentication yes<br>AuthorizedKeysFile      .ssh/authorized_keys<br><span class="hljs-meta prompt_">#</span><span class="language-bash">GSSAPIAuthentication <span class="hljs-built_in">yes</span></span><br><span class="hljs-meta prompt_">#</span><span class="language-bash">GSSAPICleanupCredentials <span class="hljs-built_in">yes</span></span><br></code></pre></td></tr></table></figure><ol start="2"><li>若还是不能正常工作，则检查用户权限和组权限</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">chmod</span> 0755 /home/git<br>$ sudo <span class="hljs-built_in">chmod</span> 700 /home/git/.ssh<br>$ sudo <span class="hljs-built_in">chmod</span> 600 /home/git/.ssh/authorized_keys<br></code></pre></td></tr></table></figure><p>如果能免密登录，就需要剥夺 <code>git</code> 用户的 Shell 登录权限。用 <code>sudo vi /etc/passwd</code> 打开 <code>passwd</code> 文件，将<code>git:x:1001:1001:,,,:/home/git:/bin/bash</code> 最后的 <code>/bin/bash</code> 改成 <code>/usr/bin/git-shell</code>。出于安全考虑，<code>git</code> 用户登录后将不得接触 Linux 的 shell，但不影响它执行 <code>git</code> 命令。</p><h2 id="配置-Git-仓库">配置 Git 仓库</h2><p>如果能免密登录，下一步工作就是配置 Git 仓库。</p><p>创建并初始化 Git 仓库。在服务器上执行以下命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">mkdir</span> -p /var/repo<br>$ <span class="hljs-built_in">cd</span> /var/repo<br>$ sudo git init --bare blog.git<br>$ sudo <span class="hljs-built_in">chown</span> -R git:git blog.git<br></code></pre></td></tr></table></figure><h2 id="配置-Git-Hooks">配置 Git Hooks</h2><p>在服务器上创建 <code>post-receive</code> 文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo vi /var/repo/blog.git/hooks/post-receive<br></code></pre></td></tr></table></figure><p>并且在上述 post-receive 文件中写入以下内容：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-meta">#!/bin/sh</span><br>git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f<br></code></pre></td></tr></table></figure><p>提升上述 post-receive 的可执行权限。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">chmod</span> +x /var/repo/blog.git/hooks/post-receive<br></code></pre></td></tr></table></figure><p>在服务器上创建静态页面目录。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo <span class="hljs-built_in">mkdir</span> -p /var/www/hexo<br>$ <span class="hljs-built_in">chown</span> -R git:git /var/www/hexo<br></code></pre></td></tr></table></figure><p>这样，只要我们在本地电脑上用 <code>hexo d</code> 命令发布博客，本地的 Hexo 就会调用 Git，将博客的静态页面文件上传到服务器的 Git 仓库（<code>/var/repo/blog.git</code>）中，而服务器的 Git 则会将仓库中的所有静态文件都转移到静态页面目录（<code>/var/www/hexo</code>）中，当用户访问我们的博客时，服务器的 Nginx 就会读取并显示静态页面目录中的内容。</p><h2 id="安装与配置-Nginx">安装与配置 Nginx</h2><p>在服务器上安装 Nginx。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo apt install nginx<br></code></pre></td></tr></table></figure><p>在服务器上设置防火墙打开 80 和 443 端口。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo ufw allow 80<br>$ sudo ufw allow 443<br></code></pre></td></tr></table></figure><p>在服务器上为站点创建配置文件。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ sudo vi /etc/nginx/sites-availbale/blog.kukmoon.com.conf<br></code></pre></td></tr></table></figure><p>在服务器上向 <code>blog.kukmoon.com.conf</code> 写入以下内容。</p><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs nginx"><span class="hljs-comment"># blog.kukmoon.com</span><br><span class="hljs-comment">#</span><br><span class="hljs-section">server</span> &#123;<br>        <span class="hljs-comment"># 设置监听端口</span><br>        <span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;<br>        <span class="hljs-attribute">listen</span> [::]:<span class="hljs-number">80</span>;<br><br>        <span class="hljs-comment"># 设置域名</span><br>        <span class="hljs-attribute">server_name</span> blog.kukmoon.com;<br><br>        <span class="hljs-comment"># 重定向对网站根目录的访问 </span><br>        <span class="hljs-section">location</span> / &#123;<br>            <span class="hljs-attribute">root</span> /var/www/hexo;<br>            <span class="hljs-attribute">index</span> index.html index.htm index.nginx-debian.html index.php;<br>        &#125;<br><br>        <span class="hljs-comment"># 对用户屏蔽某些文件</span><br>        <span class="hljs-section">location</span> <span class="hljs-regexp">~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)</span><br>        &#123;<br>            <span class="hljs-attribute">return</span> <span class="hljs-number">404</span>;<br>        &#125;<br>&#125;<br></code></pre></td></tr></table></figure><p>假如你有 SSL、TLS 证书，就可以配置 https 访问和 http 跳转 https，那么需要在上述 <code>blog.kukmoon.com.conf</code> 中写入以下内容：</p><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><code class="hljs nginx"><span class="hljs-comment"># blog.kukmoon.com</span><br><span class="hljs-comment">#</span><br><span class="hljs-section">server</span> &#123;<br>        <span class="hljs-comment"># 设置监听端口</span><br>        <span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;<br>        <span class="hljs-attribute">listen</span> [::]:<span class="hljs-number">80</span>;<br><br>        <span class="hljs-comment"># 设置域名</span><br>        <span class="hljs-attribute">server_name</span> blog.kukmoon.com;<br>        <span class="hljs-comment">## SSL 配置</span><br><br>        <span class="hljs-comment"># 设置监听端口</span><br>        <span class="hljs-attribute">listen</span> <span class="hljs-number">443</span> ssl http2;<br><br>        <span class="hljs-attribute">listen</span> [::]:<span class="hljs-number">443</span> ssl http2;<br><br>        <span class="hljs-comment"># http 跳转到 https</span><br>        <span class="hljs-attribute">if</span> (<span class="hljs-variable">$ssl_protocol</span> = <span class="hljs-string">&quot;&quot;</span>) &#123; <span class="hljs-attribute">return</span> <span class="hljs-number">301</span> https://<span class="hljs-variable">$host</span><span class="hljs-variable">$request_uri</span>; &#125;<br><br>        <span class="hljs-comment"># 证书配置</span><br>        <span class="hljs-attribute">ssl_certificate</span>     /var/www/kukmoon.com/cert/cert.pem;<br>        <span class="hljs-attribute">ssl_certificate_key</span>     /var/www/kukmoon.com/cert/privkey.pem;<br><br>        <span class="hljs-comment"># SSL 参数配置</span><br>        <span class="hljs-attribute">ssl_protocols</span> TLSv1.<span class="hljs-number">1</span> TLSv1.<span class="hljs-number">2</span> TLSv1.<span class="hljs-number">3</span>;<br>        <span class="hljs-attribute">ssl_ciphers</span> EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;<br>        <span class="hljs-attribute">ssl_prefer_server_ciphers</span> <span class="hljs-literal">on</span>;<br>        <span class="hljs-attribute">ssl_session_cache</span> shared:SSL:<span class="hljs-number">10m</span>;<br>        <span class="hljs-attribute">ssl_session_timeout</span> <span class="hljs-number">10m</span>;<br>        <span class="hljs-attribute">add_header</span> Strict-Transport-Security <span class="hljs-string">&quot;max-age=31536000&quot;</span>;<br>        <span class="hljs-attribute">error_page</span> <span class="hljs-number">497</span>  https://<span class="hljs-variable">$host</span><span class="hljs-variable">$request_uri</span>;<br><br>        <span class="hljs-comment"># 关闭 gzip 压缩</span><br>        <span class="hljs-attribute">gzip</span> <span class="hljs-literal">off</span>;<br><br>        <span class="hljs-comment"># 重定向对网站根目录的访问 </span><br>        <span class="hljs-section">location</span> / &#123;<br>            <span class="hljs-attribute">root</span> /var/www/hexo;<br>            <span class="hljs-attribute">index</span> index.html index.htm index.nginx-debian.html index.php;<br>        &#125;<br><br><br>        <span class="hljs-comment"># 对用户屏蔽某些文件</span><br>        <span class="hljs-section">location</span> <span class="hljs-regexp">~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)</span><br>        &#123;<br>            <span class="hljs-attribute">return</span> <span class="hljs-number">404</span>;<br>        &#125;<br>&#125;<br></code></pre></td></tr></table></figure><p>在服务器上使站点生效。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ <span class="hljs-built_in">cd</span> /etc/nginx/sites-enabled<br>$ sudo <span class="hljs-built_in">ln</span> -s /etc/nginx/sites-availbale/blog.kukmoon.com.conf blog.kukmoon.com.conf<br></code></pre></td></tr></table></figure><p>当配置好 DNS 以后，就可以在浏览器中访问 <a href="http://blog.kukmoon.com">http://blog.kukmoon.com</a> 或 <a href="https://blog.kukmoon.com">https://blog.kukmoon.com</a> ，查看博客主页。</p><h2 id="从本地发布博客文章">从本地发布博客文章</h2><p>首先，在本地电脑上安装 Hexo 的部署插件，此处假设博客源文件在 <code>C:\Users\Kukmoon\kukmoon_blog</code> 目录。<strong>注意</strong>：部署插件只需要安装一次。</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs Powershell"><span class="hljs-built_in">PS</span> C:\Users\Kukmoon\&gt;<span class="hljs-built_in">cd</span> kukmoon_blog<br><span class="hljs-built_in">PS</span> C:\Users\Kukmoon\kukmoon_blog&gt; npm install hexo<span class="hljs-literal">-deployer-git</span> <span class="hljs-literal">-s</span><br><span class="hljs-built_in">PS</span> C:\Users\Kukmoon\kukmoon_blog&gt; npm install hexo<span class="hljs-literal">-server</span> <span class="hljs-literal">-s</span><br></code></pre></td></tr></table></figure><p>在本地电脑上修改博客源文件目录下的 <code>_config.yml</code> 中的 deploy 选项。<strong>注意</strong>：这个步骤也只需要做一次。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">deploy:</span><br>  <span class="hljs-bullet">-</span> <span class="hljs-attr">type:</span> <span class="hljs-string">git</span><br>    <span class="hljs-attr">repo:</span> <span class="hljs-string">ssh://git@999.999.999.999/var/repo/blog.git</span><br>    <span class="hljs-attr">branch:</span> <span class="hljs-string">master</span><br></code></pre></td></tr></table></figure><p>此处的 <code>999.999.999.999</code> 是服务器的 IP 地址。<code>ssh://git@999.999.999.999/var/repo/blog.git</code> 是之前在服务器上建立的仓库。</p><p>在本地电脑上发布博客：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs Powershell">hexo d <span class="hljs-literal">-g</span><br></code></pre></td></tr></table></figure><h2 id="其他问题">其他问题</h2><p>如有其他问题，请参见 <a href="https://easyhexo.com">EasyHexo 网站</a> 上的<a href="https://easyhexo.com/1-Hexo-install-and-config/1-4-deploy-hexo.html#%E9%83%A8%E7%BD%B2%E5%88%B0-centos-servers">《部署到 CentOS Servers》</a>。</p><h2 id="图片版权">图片版权</h2><p>题图：<a href="https://archive.org/details/ubuntux86x64distros">https://archive.org/details/ubuntux86x64distros</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">把 Hexo 博客部署到 Ubuntu 服务器。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Ubuntu" scheme="https://blog.kukmoon.com/tags/Ubuntu/"/>
    
    <category term="Hexo" scheme="https://blog.kukmoon.com/tags/Hexo/"/>
    
    <category term="博客" scheme="https://blog.kukmoon.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>《从本能寺开始与信长统一天下》第 1 卷书评</title>
    <link href="https://blog.kukmoon.com/a1edf80cd28a/"/>
    <id>https://blog.kukmoon.com/a1edf80cd28a/</id>
    <published>2024-11-10T06:00:48.000Z</published>
    <updated>2024-11-10T06:00:49.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-11-10-14-38-15.png" alt="2024-11-10-14-38-15"></p><div class="note note-info">            <p>首发知乎，<a href="https://www.zhihu.com/pin/1837229129541488640">点击 这里 观看</a>。</p><p>博客里的这一篇是修改版。</p>          </div><h2 id="说明">说明</h2><p>这是按照「书评七步法」，为《从本能寺开始与信长统一天下》第 1 卷写的书评。</p><p>书评是用自己的话去翻译作者的观点、态度、主张，去解释某个实际生活中存在的问题。</p><p>「书评七步法」是一种结构化思维方式，它将一篇书评分为七个模块，分别是：</p><ul><li>话题引入</li><li>书名和作者</li><li>一句话说明本书讲什么</li><li>书的结构或一个精彩点、触动点</li><li>书评的正文</li><li>总结收获</li></ul><h2 id="书评的结构及其全文">书评的结构及其全文</h2><table><thead><tr><th>模块</th><th>文本</th></tr></thead><tbody><tr><td>话题引入</td><td>粗制滥造的、甚至有明显历史错误的穿越小说实在是太多了！连读一页都感到辣眼睛。</td></tr><tr><td>书名和作者</td><td>不过，假如你是追求真实感的细节控，或者是织田信长的粉丝，那么，「常陆之介博浩」老师的轻小说《从本能寺开始与信长统一天下》非常适合你。它曾荣获第 5 届 OVERLAP 文库 WEB 小说大奖金奖、AlphaPolis 第四届历史·时代小说大奖读者奖。<br /></td></tr><tr><td>一句话说明本书讲什么</td><td>我用两天时间读完了第 1 卷。它讲述了男主「黑坂真琴」从平成年代穿越到战国初年，在「本能寺之变」救下了织田信长，改变了历史的故事。</td></tr><tr><td>书的结构或一个精彩点、触动点</td><td><strong>这部小说与一般粗制滥造的穿越文不同，它相当重视细节与逻辑。作者在这方面花了大量笔力。</strong></td></tr><tr><td>书评的正文</td><td><strong>一开篇，作者就用详细的笔法叙述男主的修学旅行与时空穿越</strong>。<br />男主在修学旅行途中参观的佛寺的地道里穿越到战国时代的「本能寺之变」现场，而且误打误撞击毙了明智光秀，救下了织田信长。<br />当织田信长询问男主的来历，男主介绍自己来自 21 世纪。信长则是仔细地检查了男主的背包，提出一系列关于未来的深刻问题。而且，他们还讨论了「祖父悖论」。其中的逻辑性一丝不苟，环环相扣，令人称奇。<br />假如说，男主击杀明智光秀的武戏引起了我的兴趣，那么信长与男主问答的文戏让我决定开始追这部书。<br /><strong>作者对男主穿越到古代之后的行动，也进行了详细描述。</strong><br />例如，男主写给父亲的信成为历史遗物，在 600 多年后的平成年间被发掘出来；男主穿不习惯宽松的和服，而是找南蛮工匠（应该是西洋工匠吧）定制类似于男生制服的现代服饰。作者还用大量笔墨介绍了男主精密地复刻唐扬鸡、天妇罗、炸猪排、咖喱饭等现代食物的桥段，进一步增强了真实感和可读性。<br /><strong>更重要的是，作者还写出了男主思想立场的变化。</strong><br />男主一开始是想要回去的，但是经历了很多事情，在第 1 卷的末尾决定留在古代。这是很不容易的。名著与流行小说的区别在于名著会写出主角前后思想立场的改变，而流行小说往往只着重于故事的新奇或者文笔的华美，其作者的笔力无法驾驭一个思想立场发生改变的主角。然而，常陆之介博浩老师做到了。</td></tr><tr><td>总结收获</td><td>尽管作者曾经谦虚地说「历史迷会不会因此感到不是十分满意，这点让我有点不安」，但是《从本能寺开始与信长统一天下》仍然是一部可圈可点的穿越小说。至少它把战国历史和平成时代的社会交织在一起，让读者既欣赏男主的神奇故事，又对战国历史和平成社会了解得更深刻。</td></tr></tbody></table><h2 id="图片版权">图片版权</h2><p>题图：<a href="https://zh-tw.ac-illust.com/clip-art/24832074/%E5%A4%A9%E4%B8%8B%E7%B5%B1%E4%B8%80">https://zh-tw.ac-illust.com/clip-art/24832074/天下統一</a></p><p>头图：Image by <a href="https://pixabay.com/users/michael_pointner-28601164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8026468">Michael Pointner</a> from <a href="https://pixabay.com/photos/agriculture-field-farming-farmer-8026468/">Pixabay</a></p>]]></content>
    
    
    <summary type="html">这是按照「书评七步法」，为《从本能寺开始与信长统一天下》第 1 卷写的书评。</summary>
    
    
    
    <category term="随笔" scheme="https://blog.kukmoon.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
    <category term="知乎" scheme="https://blog.kukmoon.com/tags/%E7%9F%A5%E4%B9%8E/"/>
    
    <category term="读书" scheme="https://blog.kukmoon.com/tags/%E8%AF%BB%E4%B9%A6/"/>
    
  </entry>
  
  <entry>
    <title>史上最详细 ARM Mac 虚拟机安装 Office 2021 教程 （VMWare 版）</title>
    <link href="https://blog.kukmoon.com/88855f442714/"/>
    <id>https://blog.kukmoon.com/88855f442714/</id>
    <published>2024-07-07T23:06:15.000Z</published>
    <updated>2024-11-29T11:55:59.000Z</updated>
    
    <content type="html"><![CDATA[<div class="note note-success">            <h2 id="更新记录">更新记录</h2><ul><li><strong>2024/7/8 (V1.0)</strong>：详细讲解在 ARM Mac 上安装虚拟机软件 VMWare Fusion，并在虚拟机中安装 Windows 11 ARM 和 Office 2021 LTSC x86 for Windows。</li></ul>          </div><div class="note note-primary">            <h2 id="摘要">摘要</h2><p>在 ARM 芯片（Apple Silicon 芯片）的 Mac 上安装虚拟机软件 VMWare Fusion，创建虚拟机，并在虚拟机中安装 Windows 11 ARM 和 Office 2021 LTSC x86，最终目的是在苹果电脑上无缝运行 Windows 版的 Office 2021，满足读者在 Mac 上使用 Windows 版 Office 办公和复习备考 MOS 认证考试的需求。</p>          </div><h2 id="1-引言">1 引言</h2><p>随着 2020 年 M1 MacBook Air 闪亮登场，全新 ARM 架构的 Apple Silicon M 系列芯片也走进了人们的视线。凭借高速低功耗的突出优点，Apple Silicon M 系列芯片让用户对采用这一产品线的 Mac 电脑赞不绝口。到 2024 年，经历了后续的 M2、M3，该系列芯片已经迭代到第四代 M4。ARM 芯片也已经覆盖到了 Mac 的每一条产品线。</p><p>但是，这一局面让购置 ARM Mac 用于运行微软 Office 办公软件的用户一度陷入了两难境地：该放弃 ARM Mac？还是该放弃 Office？</p><p>这是为什么呢？原因主要在于以下三方面：</p><ol><li><p>Office x86 （以及 Office x64） 与 ARM Mac 互不兼容，全新的 Apple Silicon M 系列芯片是 ARM 架构，然而，事实上已经形成业界标准的微软 Office 软件只能运行在 X86 架构的计算机上，这样，以前的老办法——在 Intel 芯片的 Mac 上安装 Windows 和 Office ——就失效了。</p></li><li><p>其次，Office for Mac 缺点众多。Office for Mac 主要有三大缺点：不够稳定（时常卡死，尤其当处理某些来自 PC 的文档时），功能限制（不能运行大多数流行的功能组件或第三方插件，除非开发商单独开发一个 Mac 版；而且 VBA 有 Bug）和使用不便（界面和快捷键与 Office for Windows 不同）。与 Office for Mac 相比，用户更倾向于选用 Office for Windows。</p></li><li><p>有些用户必须用 Office for Windows 在 Mac 上办公。这些用户一般需要运行一些第三方插件，包括但不限于 VBA 宏、COM 组件、用 VSTO 开发的插件等。</p></li></ol><p>难道就没有办法让鱼与熊掌两者兼得吗？</p><p>当然有的。就是在 ARM Mac 上用虚拟机安装 Windows ARM，然后在 Windows ARM 中安装 Office x86。</p><p>早期，这条路线还不成熟、不稳定，所以不建议普通用户使用，更不建议生产力环境用。2024 年以来，随着 Windows 11 ARM 日益稳定、转译（此处特指把 x86 指令翻译成 ARM 指令，从而在 ARM 计算机及操作系统上运行 x86 应用软件）能力日益增强，在虚拟机上用 Windows 11 ARM 运行 Office 2021 x86 的时机终于成熟。再加上老牌虚拟机软件 VMWare Fusion 突然对个人用户免费，为个人普通用户消除了最后一道阻碍。</p><p>谷月老师这篇教程，就是为零基础个人用户满足在 ARM Mac 上安装运行 Office 2021 x86 的需求而写的。操作非常简单，每个步骤都有配图，只需要按照步骤操作就可以。</p><p>**需要的软件工具，在此处下载：<a href="https://clouddrive.kukmoon.com/OneDrive1/Mac_%E8%99%9A%E6%8B%9F%E6%9C%BA_Apple_Silicon/">https://clouddrive.kukmoon.com/OneDrive1/Mac_%E8%99%9A%E6%8B%9F%E6%9C%BA_Apple_Silicon/</a>。<strong>声明：这些软件下载，纯为学习之用，请在下载安装24小时之内删除</strong>！</p><h2 id="2-准备工作">2 准备工作</h2><p>准备要用到的软件，如图所示：</p><ul><li><code>Microsoft-Activation-Scripts-master-开源WIN和Office激活.zip</code> ：激活工具。</li><li><code>Office_LTSC_2021_x86_2108_离线安装包_适合WIN11ARM64.iso</code> ：Office LTSC 2021 x86 离线安装包，自带 Office Tool Plus。</li><li><code>Office_Tool_with_runtime_v10.11.5.0_arm64.zip</code> ：Office Tool Plus ARM64 版，可用于在线安装 Office。</li><li><code>ToDesk_4.7.2.1.pkg</code> ：ToDesk 远程桌面软件，可用于远程安装。</li><li><code>VMware_Fusion_Pro_13_for_Personal_Use.zip</code> ：VMWare Fusion 虚拟机。</li><li><code>tiny11-core-arm64.iso</code> ：精简版 Windows 11 ARM64 安装光盘映像，由谷月老师制作，其中的无人值守文件由谷月老师根据虚拟机实际情况编写。</li></ul><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2020.52.02.png" alt="要用到的软件"></p><p><strong>声明：这些软件下载，纯为学习之用，请在下载安装24小时之内删除！</strong></p><h2 id="3-安装-VMWare-Fusion-虚拟机">3 安装 VMWare Fusion 虚拟机</h2><p>双击解压 <code>VMware_Fusion_Pro_13_for_Personal_Use.zip</code>。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2020.59.33.png" alt="解压"></p><p>在解压得到的文件夹 <code>VMware Fusion Pro 13 for Personal Use</code> 中，双击 VMWare Fusion 的安装包 <code>VMware-Fusion-13.5.2-23775688_universal.dmg</code> 。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.06.22.png" alt="双击 DMG 安装包"></p><p>在新打开的「VMWare Fusion」窗口中，双击正中间的「VMWare Fusion」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.08.38.png" alt="双击 VMWare Fusion"></p><p>稍候片刻，然后按照提示，输入登录密码，然后点击「好」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.10.57.png" alt="输入密码"></p><p>系统会提示 VMWare Fusion 已经添加了后台项之类。接下来，在此处点击「同意」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.13.35.png" alt="点击「同意」"></p><p>授予许可。VMWare Fusion 13 面向个人免费使用，所以此处应该选择「我希望授予将 VMWare Fusion 13 Pro 用于个人用途的许可」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.14.15.png" alt="授予许可"></p><p>点击「完成」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.16.15.png" alt="点击「完成」"></p><p>允许 VMWare Fusion 控制系统事件（System Events）。点击「允许」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.17.15.png" alt="System Events"></p><p>设置辅助功能。点击「好」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.17.22.png" alt="辅助功能"></p><p>点击「打开系统设置」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.19.23.png" alt="点击「打开系统设置」"></p><p>在「辅助功能」的设置中，允许 VMWare Fusion 控制你的电脑。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.20.43.png" alt="允许 VMWare Fusion 控制你的电脑"></p><p>再输入密码。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.26.09.png" alt="输入密码"></p><p>VMWare Fusion 安装成功，撒花🎉🎉🎉！记得右击桌面上的「VMWare Fusion」（它是 VMWare Fusion 安装包的磁盘映像），选择「推出 VMWare Fusion」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.36.55.png" alt="推出 VMWare Fusion"></p><p>接下来，我们要安装 Windows 11 ARM64。</p><h2 id="4-安装-Windows-11-ARM64">4 安装 Windows 11 ARM64</h2><h3 id="4-1-新建虚拟机">4.1 新建虚拟机</h3><p>VMWare Fusion 安装成功以后，它会新建一个「选择安装方法」窗口。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2021.33.34.png" alt="「选择安装方法」窗口"></p><p>只需要把 Windows 11 ARM64 安装光盘映像（<code>tiny11-core-arm64.iso</code>）拖进这个窗口就可以安装了。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.06.27.png" alt="把安装光盘映像拖进这个窗口"></p><p>点击「继续」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.09.02.png" alt="点击「继续」"></p><p>Windows 11 需要开启「UEFI 安全引导」，所以需要选择「UEFI」和「UEFI 安全引导」。然后点击「继续」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.12.41.png" alt="UEFI 安全引导"></p><p>设置 TPM 密码。Windows 11 需要开启 TPM，VMWare Fusion 需要为 TPM 指定一个加密密码。选择「快速加密」（Partial Encryption），然后输入一个至少 8 位字符的密码。这个密码必须牢记，以免无法恢复虚拟硬盘中的数据。最后点击「继续」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.17.01.png" alt="TPM 密码"></p><p>虚拟机配置完成，撒花🎉🎉🎉！注意：我们的 Windows 11 是精简版的，所以默认 4 GB 内存够用了；如果只是运行 Office，那么默认的 2 内核也够用了。最后点击「完成」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.19.23.png" alt="虚拟机配置完成"></p><p>点击「完成」以后，再点击一次「存储」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.20.59.png" alt="点击「存储」"></p><p><strong>注意</strong>：虚拟机的默认存储位置是在家目录下面的「虚拟机」子目录（<code>~/Virtual\ Machines.localized/</code>）</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.21.49.png" alt="虚拟机的默认存储位置"></p><p>蓝牙。点击「允许」</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2022.22.58.png" alt="截屏2024-06-14%2022.22.58"></p><p>接下来进入操作系统的安装过程。</p><h3 id="4-2-在虚拟机安装-Windows-11-ARM64">4.2 在虚拟机安装 Windows 11 ARM64</h3><p>在上文中，点击「存储」按钮后，VMWare Fusion 就会自动启动虚拟机，并进入 Windows 11 ARM64 的安装流程。</p><p>在虚拟机窗口中出现「Press any key to boot from CD or DVD」时，<strong>迅速</strong>点击虚拟机窗口内任意一处地方，然后按下键盘上<strong>任意</strong>一个键（一般来说，<strong>下列键不可以按</strong>：Esc、F1～F12、电源键、Shift、Fn、Control、Option、Command）。这样才能进入 Windows 安装程序。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.27.24.png" alt="「Press any key to boot from CD or DVD」"></p><p>小贴士：此时鼠标被虚拟机捕获，无法移出虚拟机窗口。如果要把鼠标移出虚拟机窗口，需要同时按下 Control 和 Command。</p><p>Windows 安装程序的欢迎页面。直接点击「下一页」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.32.36.png" alt="欢迎页面"></p><p>许可条款。在「我接受」前面打钩，然后点击「下一页」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.33.51.png" alt="许可条款"></p><p>给虚拟硬盘分区。直接点击「新建」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.36.52.png" alt="新建分区"></p><p>然后直接点击「应用」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.37.50.png" alt="点击「确定」"></p><p>直接点击「确定」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.38.23.png" alt="直接点击「确定」"></p><p>Windows 安装程序创建了 3 个分区，并且将会把 Windows 安装到「分区 3」。直接点击「下一页」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.44.05.png" alt="自动选择「分区 3」"></p><p>正在安装 Windows。此时只需等待。安装结束后会自动重启。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.44.45.png" alt="正在安装 Windows"></p><p>重启之后，经过漫长的等待，终于进入了 Windows 11 的桌面。Windows 11 安装结束，撒花🎉🎉🎉！</p><p>为什么安装结束后直接进入桌面呢？原因是，为了尽可能简化操作，这个精简版的 Windows 11 安装光盘映像中包含无人应答文件，除了个别必要的步骤（欢迎页面、许可条款、硬盘分区）以外，其它需要人工选择和设置的步骤统统跳过，安装完成就进入桌面。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.48.26.png" alt="安装完成就进入桌面"></p><h3 id="4-3-安装-VMWare-Tools">4.3 安装 VMWare Tools</h3><p>VMWare Tools 是虚拟机的增强组件，它为虚拟机中的 Windows 补全了驱动程序和增强组件，让虚拟机中的 Windows 能够更好地与宿主机的 macOS 协同工作。</p><p>点击「Windows 11 64 位 ARM」窗口，然后点击屏幕顶部菜单栏中的「虚拟机」➡️「安装 VMWare Tools」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.54.01.png" alt="安装 VMWare Tools"></p><p>直接点击「安装」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.58.29.png" alt="点击「安装」"></p><p>稍等片刻，点击虚拟机屏幕<strong>右下角</strong>出现的「自动播放」弹窗。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.59.19.png" alt="「自动播放」弹窗"></p><p>在屏幕右上角出现的「DVD 驱动器 (D:) VMware…」弹窗中，选择「运行 setup.exe」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-14%2023.59.31.png" alt="选择「运行 setup.exe」"></p><p>VMWare Tools 的欢迎页面。直接点击「下一步」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.02.08.png" alt="VMWare Tools 的欢迎页面"></p><p>安装类型。选择「典型安装」，点击「下一步」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.03.06.png" alt="安装类型"></p><p>单击「安装」。然后等待安装完成。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.04.23.png" alt="单击「安装」"></p><p>安装已完成，撒花🎉🎉🎉！点击「完成」结束。为什么安装结束后变这么小？这是因为 VMWare Tools 安装了虚拟显卡的驱动程序，并且开启了 HiDPI。需要重启虚拟机才恢复正常。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.05.47.png" alt="安装已完成"></p><p>点击「是」重启虚拟机。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.09.32.png" alt="点击「是」重启虚拟机"></p><p>重启后桌面恢复正常。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.13.17.png" alt="重启后桌面恢复正常"></p><h3 id="4-4-修改分辨率和-DPI-缩放比例">4.4 修改分辨率和 DPI 缩放比例</h3><p>右击 Windows 11 的桌面，在菜单中选择「显示设置」，通过平滑清晰的字体我们可以看出，虚拟机中的 Windows 11 已经开启了 HiDPI。但是默认的分辨率（2048 x 1536）和 DPI 缩放比例（250%）不够合理。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.16.18.png" alt="显示设置"></p><h4 id="4-4-1-为什么要修改分辨率和-DPI-缩放比例？">4.4.1 为什么要修改分辨率和 DPI 缩放比例？</h4><p>接下来我们把虚拟机的分辨率修改为 2560 x 1600，DPI 缩放比例修改为 200%，让它更加匹配 macOS。</p><p>因为VMWare 的特色 Unity 技术（直接在 Mac 的桌面上显示 Windows 应用程序的窗口，相当于Parallels Desktop 的「融合模式」）不支持 ARM Mac，所以 VMWare Fusion 只能以窗口或全屏模式在 Mac 上运行。</p><p>一般来说，虚拟机分辨率不低于 2560 x 1600 ，DPI 缩放比例设置为 200%，就可以保证良好的使用体验。</p><p>早期的 M1 Air 和 M1 Pro 的屏幕分辨率是 2560 x 1600，这样的话，还是全屏运行虚拟机比较好。</p><h4 id="4-4-2-操作步骤">4.4.2 操作步骤</h4><p>第一步是点击上图中的「关闭自定义缩放并注销」。</p><p>第二步是重新登录。登录时无须输入密码，因为这个 Windows 11 ARM64 精简版默认没有设置密码。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.18.40.png" alt="登录时无须输入密码"></p><p>登录后，我们可以看到文字又变小了。右击 Windows 11 的桌面，在菜单中选择「显示设置」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.20.45.png" alt="选择「显示设置」"></p><p>将「分辨率」改成 2560 x 1600，然后点击「保留更改」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.38.11.png" alt="修改分辨率"></p><p>将「缩放」改成 200%，它会自动生效，无需再次确认。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2000.44.44.png" alt="截屏2024-06-15%2000.44.44"></p><h3 id="4-5-激活-Windows">4.5 激活 Windows</h3><p>参见「6 激活 Windows 与 Office」，把 Windows 与 Office 一起激活。</p><h2 id="5-离线安装-Office-LTSC-2021-x86">5 离线安装 Office LTSC 2021 x86</h2><p>为什么选择离线安装？因为最近一段时间以来受到网络波动的影响，有些地方的用户，或者有些运营商的用户，在线安装 Office 非常容易失败，所以谷月老师向读者介绍离线安装，并提供正版离线安装包，其来源是通过微软官方的 Office 部署工具从官方服务器下载的。</p><p>为什么选择 Office LTSC 2021 而不是其他版本？目前市面上有四个主流版本：Office 2016、Office 2019、Office LTSC 2021 和 Microsoft 365。经过反复测试，确定 Office 2016/2019 无法在本文所述的平台上安装。而 Microsoft 365 自有其离线安装包与激活方式（输入微软账号密码登录），无需另行赘述。</p><p>为什么选择 x86（32 位）而不是 amd64（64 位）？这是因为 x86 版的 Office 兼容性最好，它既能运行 PowerQuery、PowerPivot 之类半独立于 Office 的功能组件，又能运行 iSlide 之类的第三方插件，还能无缝运行 VBA 宏。而且借助微软 Windows 11 ARM64 强大的转译能力，x86 版的 Office 也能顺利地运行在 ARM 芯片的 Mac 的虚拟机上运行。这样，Office 高级用户就可以摆脱 Office for Mac 的功能限制（不能运行功能组件、第三方插件，VBA 有 Bug）和使用不便（界面和快捷键与 Office for Windows 不同）。</p><h3 id="5-1-安装步骤">5.1 安装步骤</h3><p>启动虚拟机，点击菜单「虚拟机」➡️「CD/DVD (SATA)」➡️「选择光盘或光盘映像」，然后打开 Office 2021 离线安装包 <code>Office_LTSC_2021_x86_2108_离线安装包_适合WIN11ARM64</code>。这个光盘映像文件包含 Office LTSC 2021 五件套的离线安装包，以及 Office 安装和高级设置工具 Office Tool Plus。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2021.09.46.png" alt="选择光盘或光盘映像"></p><p>忽略 Windows 11 的自动播放，而是直接打开文件资源管理器，双击 D 盘里的 <code>Office Tool Plus.exe</code> 。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-15%2021.15.54.png" alt="双击 D 盘里的 Office Tool Plus.exe"></p><p>许可条款。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.26.05.png" alt="许可条款"></p><p>不要更新！不要更新！不要更新！直接点击「否」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.28.32.png" alt="不要更新！不要更新！不要更新！"></p><p>点击左侧的「部署」，部署在这里是安装的意思。<strong>首先</strong>，在右侧必须把「安装模块」设置为「Office Tool Plus」，否则会出错。<strong>其次</strong>，点击「添加产品」，必须选择「Office LTSC 专业增强版 2021 - 批量许可证」（产品 ID 是 ProPlus2021Volume），注意后缀是「Volume」，否则无法离线安装。<strong>第三</strong>，只保留 Word、Excel、PowerPoint、Outlook、Access 五件套，微软办公软件国际认证考试（MOS 考试）也是考这五个软件。<strong>最后</strong>，点击右上角的「开始部署」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.43.33.png" alt="部署"></p><p>点击「是」。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.55.25.png" alt="点击「是」"></p><p>稍候片刻……</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.56.37.png" alt="正在安装 Office"></p><p>安装完成。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2011.56.38.png" alt="安装完成"></p><p>「开始」菜单中出现了新安装的 Office 套件。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2012.12.24.png" alt="「开始」菜单中出现了新安装的 Office 套件"></p><h3 id="5-2-激活-Office">5.2 激活 Office</h3><p>参见「6 激活 Windows 与 Office」，把 Windows 与 Office 一起激活。</p><h2 id="6-激活-Windows-与-Office">6 激活 Windows 与 Office</h2><div class="note note-warning"><b>关于涉及破解软件的免责声明</b>：<br/>本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的，不得将上述内容用于商业或者非法用途，否则，一切后果请用户自负。本站信息来自网络，版权争议与本站无关。您必须在下载后的24个小时之内，从您的电脑中彻底删除上述内容。如果您喜欢该程序，请支持正版软件，购买注册，得到更好的正版服务。<br/><b>关于各类资源的著作权免责声明</b>：<br/>根据二○○二年一月一日《计算机软件保护条例》第十七条规定：为了学习和研究软件内含的设计思想和原理，通过安装、显示、传输或者存储软件等方式使用软件的，可以不经软件著作权人许可，不向其支付报酬！鉴于此，也希望大家按此说明研究软件！谢谢！<br/></div><p>测试了多个激活工具，谷月老师选择了开源的 Microsoft Activation Scripts All In One（MAS_AIO）。它完全开源，整个程序全部以 Windows 命令提示符脚本（*.cmd）的形式存在，不会给系统带来任何安全风险。相对而言，操作就稍微麻烦些。如果读者不喜欢，也可以使用其他的一键激活工具来激活。</p><p>双击解压 <code>Microsoft-Activation-Scripts-master-开源WIN和Office激活.zip</code>，再双击打开解压得到的目录 <code>Microsoft-Activation-Scripts-master-开源WIN和Office激活</code>，在 <code>All-In-One-Version</code> 子目录中找到 <code>MAS_AIO.cmd</code>。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2012.23.13.png" alt="MAS_AIO.cmd"></p><p>在虚拟机中打开「文件资源管理器」，找到「下载」文件夹，将 <code>MAS_AIO.cmd</code> 拖动到这里。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2012.25.43.png" alt="拖动过来"></p><p>右击 <code>MAS_AIO.cmd</code>，选择“以管理员身份运行”。<br><img src="https://img.kukmoon.com/2025-04-14-21-53-47.png" alt=""></p><p>注意：如果本地的 MAS 版本比云端的 MAS 版本要旧，在运行 MAS_AIO.cmd 时，它会弹出如图所示的提示，只需要按键盘上的 [0] 键，继续使用旧版即可。<br><img src="https://img.kukmoon.com/2025-03-30-07-37-49.png" alt=""></p><p>在命令提示符窗口内出现 Microsoft Activation Scripts （MAS）的主界面。<br><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-06-17%20123305.png" alt="MAS_AIO 主界面"></p><p>我们选择最流行、最通用的 KMS 激活方式。在上图界面中按下「5」键，选择「[5] Online KMS  |  Windows / Office  |  180 Days」，出现下图所示的 Online KMS 界面。我们可以在此处一次性激活 Windows 和 Office。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-06-17%20123548.png" alt="Online KMS 界面"></p><p>在上图界面中按下「3」键，选择「[3] Activate - All」，稍候片刻，静等激活完成，出现下图界面。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-06-17%20123958.png" alt="激活完成"></p><p>按下键盘上<strong>任意</strong>一个键（一般来说，Esc、F1～F12、电源键、Shift、Fn、Control、Option、Command 这些键不可以按），回到刚才的 Online KMS 界面。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-06-17%20123548.png" alt="Online KMS 界面"></p><p>KMS 激活方式的有效期是 180 天，到期后需要续期，但是好在 MAS_AIO 提供了自动续期功能，我们需要安装自动续期服务，免去每 180 天手动续期的麻烦。在上图界面中按下「4」键，选择「[4] Install Auto-Renewal」，稍候片刻，静等自动续期服务安装，出现下图界面。然后直接关闭这个窗口就可以了。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-06-17%20124819.png" alt="自动续期"></p><p>我们可以看到，Windows 和 Office 均已激活。（注意：首次启动 Office 组件时，它会提示你接受许可协议和隐私提示，点击「确定」即可，此处不再配图）</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2012.52.03.png" alt="Windows 已激活"></p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2012.54.10.png" alt="Office 已激活"></p><h2 id="7-硬盘占用及其他">7 硬盘占用及其他</h2><p>在虚拟机中安装 Windows 11 ARM64 精简版和 Office LTSC 2021 x86 五件套后，虚拟机占用硬盘空间约 14 GB。</p><p><img src="https://img.kukmoon.com/ARM64-Mac-an-zhuang-VMWare-xu-ni-ji/%E6%88%AA%E5%B1%8F2024-06-17%2018.23.13.png" alt="截屏2024-06-17%2018.23.13"></p><h2 id="8-总结及预告">8 总结及预告</h2><p>我们在 ARM 芯片（Apple Silicon 芯片）的 Mac 上安装虚拟机软件 VMWare Fusion，创建虚拟机，并在虚拟机中安装 Windows 11 ARM 和 Office 2021 LTSC x86，最终目的是在苹果电脑上无缝运行 Windows 版的 Office 2021，满足读者在 Mac 上使用 Windows 版 Office 办公和复习备考 MOS 认证考试的需求。</p><p>接下来谷月老师会推出基于 Paralles Desktop 的教程，敬请期待(^_^)</p><h2 id="相关阅读">相关阅读</h2><p><a href="https://blog.kukmoon.com/a4afcfa86990/">史上最详细 Mac 虚拟机安装 Office 2016/2019/365 备考 MOS 考试教程 (V4.0)</a></p><hr><div style="text-align:center;"><h2 id="学-MOS-五分钟，少加班两小时">学 MOS 五分钟，少加班两小时</h2><p><strong>MOS</strong> 认证考试的中文全称，</p><p>是<strong>微软办公软件国际认证考试</strong>，</p><p>它是微软公司针对自家 Office 软件推出的考试，</p><p>具有无可比拟的权威性和含金量，</p><p>也是世界五百强招聘考核员工的重要标准。</p><h3 id="了解-MOS-考试">了解 MOS 考试</h3><p><a href="https://blog.kukmoon.com/0d3e29c40f40/">什么是 MOS 认证考试？考什么？看完秒懂！</a></p><h3 id="MOS报名入口">MOS报名入口</h3><p><a href="https://blog.kukmoon.com/99da6e6bf0bc/">点击此处报名，可能会有优惠券或者其他礼物掉落哟~</a></p><h3 id="学习社群">学习社群</h3><p><a href="https://jq.qq.com/?_wv=1027&amp;k=U38X9e9B">点击此处，加入我们的 QQ 群找谷月老师咨询报名</a></p><p>--------------</p><h3 id="关于谷月老师：">关于谷月老师：</h3><p><strong>谷月老师拥有博士学位，</strong></p><p>多年来从事 MOS 考试的研究、培训、营销，</p><p>具有丰富的经验，</p><p>欢迎找谷月老师咨询报名哟~</p><p>谷月老师微信号： <code>kukmoon</code></p><p>或微信识别以下二维码加谷月老师</p><p><img src="https://img.kukmoon.com/kukmoon-wei-xin-er-wei-ma.jpg" alt="谷月老师微信二维码"></p><p>--------------</p></div><h2 id="图片版权">图片版权</h2><p>题图：自绘，其中背景部分来自 <a href="https://pixabay.com/photos/laptop-digital-device-technology-5673901/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5673901">Pixabay</a>，作者为<a href="https://pixabay.com/users/deactivated-12734309/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5673901">Deactivated</a></p><p>头图：Image by <a href="https://pixabay.com/users/deactivated-12734309/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5673901">Deactivated</a> from <a href="https://pixabay.com/photos/laptop-digital-device-technology-5673901/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5673901">Pixabay</a></p>]]></content>
    
    
    <summary type="html">在 ARM 芯片（Apple Silicon 芯片）的 Mac 上安装虚拟机软件 VMWare Fusion，创建虚拟机，并在虚拟机中安装 Windows 11 和 Office 2021 LTSC x86。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Mac" scheme="https://blog.kukmoon.com/tags/Mac/"/>
    
    <category term="谷月老师讲MOS" scheme="https://blog.kukmoon.com/tags/%E8%B0%B7%E6%9C%88%E8%80%81%E5%B8%88%E8%AE%B2MOS/"/>
    
  </entry>
  
  <entry>
    <title>如何迁移OneDrive中的文件到另一个OneDrive？</title>
    <link href="https://blog.kukmoon.com/2be6cab6eec4/"/>
    <id>https://blog.kukmoon.com/2be6cab6eec4/</id>
    <published>2024-07-06T05:40:41.000Z</published>
    <updated>2024-07-06T05:40:42.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-07-06-14-21-46.png" alt="如何迁移OneDrive中的文件到另一个OneDrive？"><br><img src="https://img.kukmoon.com/2024-07-06-14-24-53.webp" alt="如何迁移OneDrive中的文件到另一个OneDrive？"></p><p>谷月老师看到有人在知乎提问：</p><div class="note note-primary"><span style="font-size:0.8rem;"><h2>请问onedrive教育版的文件怎么迁移到个人版？</h2></span><br />onedrive教育版突然限制到100G，一直提示没有空间了。只能开office365会员，把文件迁移过去。网上教程使用mover搬家onedrive，但好像是教育版的原因，无法从教育版账号迁移到个人账号。迁移的时候一直弹错。尝试过把所有文件下载下来，但是一天才下载6G，按照这个速度下载完得几个月。请问有办法将onedrive教育版的文件迁移到个人版吗？<br />出处：<a href="https://www.zhihu.com/question/658248294/answer/3522716295" target="_blank">https://www.zhihu.com/question/658248294/answer/3522716295</a></div><h2 id="巧了，我正好也碰上了同样的问题，并且已经解决。">巧了，我正好也碰上了同样的问题，并且已经解决。</h2><p>这个问题，本质上是个<strong>网盘同步</strong>问题，不是<strong>使用网盘来同步文件</strong>，而是<strong>在不同网盘之间保持同步</strong>，有点像 20 多年前的 FlashFXP。</p><p>我认为下面这个方法应该是最快而且最适合题主的：<strong>题主以学生身份白嫖微软 Azure 云服务器，然后在云服务器上用 Rclone （或者其他的网盘管理工具）把教育版的文件迁移到个人版</strong>。</p><p>其他知友不是学生也不要紧，Azure 新注册用户送一百美元额度，这些额度足够用了。</p><p><strong>这个方法有三个好处</strong>：</p><p><strong>一是无人操作</strong>。只需一行命令，就可以在 7x24 小时运行的云服务器上昼夜不停地完成数据迁移，就不需要人工干预了。</p><figure class="highlight pgsql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs pgsql">nohup rclone <span class="hljs-keyword">copy</span> -P <span class="hljs-string">&#x27;onedrive_q:/ballet&#x27;</span> <span class="hljs-string">&#x27;onedrive_d:/!对外分享/ballet&#x27;</span> &gt; <span class="hljs-keyword">copy</span>.<span class="hljs-keyword">log</span> <span class="hljs-number">2</span>&gt;&amp;<span class="hljs-number">1</span> &amp;<br></code></pre></td></tr></table></figure><p>放张图证明我亲手实战过。远程连接到 Azure 云服务器，用 <code>nohup</code> 命令后台运行 <code>rclone</code>，把输出保存到 <code>copy.log</code>，就可以高枕无忧了。注意源目录和目标目录的路径要用单引号引起来。<br><img src="https://img.kukmoon.com/2024-07-06-13-58-04.png" alt="在两个OneDrive盘之间转移数据"></p><p><strong>二是快</strong>。Azure 云服务器与 OneDrive 都构建在微软的 Azure 云计算平台之上，在 Azure 云服务器与 OneDrive 之间交换数据非！常！快！</p><p>用 <code>tail -n 10 copy.log</code> 可以查看日志文件 <code>copy.log</code> 的最后十行，从而可以查看最新的输出。从这张图上可以看出，传输速度高达 37 MB/s。考虑到它的原理是先下载后上传，而不是像 FlashFXP 那样的 FXP（从一个远程主机直接上传到另一个远程主机），这个妥妥地把一条 300 Mbps 宽带跑到了满速。堪称极速。<br><img src="https://img.kukmoon.com/2024-07-06-13-59-06.png" alt="速度还挺快"></p><p><strong>三是适合于任意两个 OneDrive 之间互相迁移文件</strong>。推而广之，只要 Rclone 支持，任意两个网盘之间互相迁移文件也可以。</p><p>这个方法只有一个坏处：题主得有一点 Linux 基础。</p><hr><p>另一个方法是在电脑上挂个梯子，从教育版 OneDrive 下载回来再上传到个人版 OneDrive。梯子可以加速 OneDrive 的上传下载。</p><hr><p><strong>图片来源</strong></p><p>题图：Azure LOGO 的著作权等其他权利归 Microsoft 所有</p><p>头图：<a href="https://pixabay.com/users/seidenperle-41220675/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8750430">Seidenperle</a> from <a href="https://pixabay.com/illustrations/ai-generated-summer-vacation-beach-8750430/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8750430">Pixabay</a></p>]]></content>
    
    
    <summary type="html">有办法将 Onedrive 教育版的文件迁移到个人版吗？</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="知乎" scheme="https://blog.kukmoon.com/tags/%E7%9F%A5%E4%B9%8E/"/>
    
    <category term="Linux" scheme="https://blog.kukmoon.com/tags/Linux/"/>
    
    <category term="OneDrive" scheme="https://blog.kukmoon.com/tags/OneDrive/"/>
    
  </entry>
  
  <entry>
    <title>批量生成当前文件夹下全部文件的 Hash</title>
    <link href="https://blog.kukmoon.com/ea8661737383/"/>
    <id>https://blog.kukmoon.com/ea8661737383/</id>
    <published>2024-07-01T02:26:51.000Z</published>
    <updated>2024-07-01T02:26:52.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-07-01-10-34-51.png" alt="题图"></p><h2 id="S-场景">S.场景</h2><p>当前文件夹下有若干个文件。我需要批量生成它们的哈希值（Hash）。</p><p>只显示主文件名和后缀，不显示所在文件夹路径，每个文件显示三种 Hash：MD5、SHA1、SHA256。如题图（大标题正下方的图、正文第一张大图）所示。</p><h2 id="C-冲突">C.冲突</h2><p>用图形界面软件，没法批量操作。</p><p>结合使用 Powershell 的 <code>Get-ChildItem</code> 和 <code>Get-FileHash</code> 命令，可以批量操作，但是 <code>Get-FileHash</code> 一次只能输出一种 Hash，输出格式不符合上图的要求。</p><h2 id="Q-问题">Q.问题</h2><p>我们该怎么办？</p><h2 id="A-解决办法">A.解决办法</h2><p>可以用 Powershell 脚本来解决。</p><p>在这里，谷月姐用了数组。代码如下：</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-variable">$excluded_files</span> = <span class="hljs-string">&#x27;Hash.txt&#x27;</span>,<span class="hljs-string">&#x27;!Write_All_Files_Hashes_to_Hash_txt.ps1&#x27;</span>,<span class="hljs-string">&#x27;password.txt&#x27;</span>,<span class="hljs-string">&#x27;readme.txt&#x27;</span><br><span class="hljs-variable">$files</span> = <span class="hljs-selector-tag">@</span>(<span class="hljs-built_in">Get-ChildItem</span> <span class="hljs-literal">-Name</span> <span class="hljs-literal">-Exclude</span> <span class="hljs-variable">$excluded_files</span>)<br><span class="hljs-variable">$hashes_md5</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><span class="hljs-variable">$hashes_sha1</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><span class="hljs-variable">$hashes_sha256</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><span class="hljs-keyword">If</span> (<span class="hljs-built_in">Test-Path</span> Hash.txt) &#123; <span class="hljs-built_in">Clear-Content</span> Hash.txt &#125;<br><span class="hljs-keyword">For</span> (<span class="hljs-variable">$i</span>=<span class="hljs-number">0</span>; <span class="hljs-variable">$i</span> <span class="hljs-operator">-le</span> (<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>); <span class="hljs-variable">$i</span>++) &#123; <br>    <span class="hljs-variable">$hashes_md5</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> MD5).Hash<br>    <span class="hljs-variable">$hashes_sha1</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> SHA1).hash<br>    <span class="hljs-variable">$hashes_sha256</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> SHA256).hash<br>    <span class="hljs-built_in">Write-Output</span> (<span class="hljs-string">&quot;File   : &quot;</span> + <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;MD5    : &quot;</span> + <span class="hljs-variable">$hashes_md5</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;SHA1   : &quot;</span> + <span class="hljs-variable">$hashes_sha1</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;SHA256 : &quot;</span> + <span class="hljs-variable">$hashes_sha256</span>[<span class="hljs-variable">$i</span>]) `r`n  &gt;&gt; Hash.txt<br>&#125;<br></code></pre></td></tr></table></figure><p>将上述代码另存为 <code>!Write_All_Files_Hashes_to_Hash_txt.ps1</code>，右击这个 PS1 文件，选择「使用 PowerShell运行」，就会在当前文件夹下生成 <code>Hash.txt</code> 文件。<code>Hash.txt</code> 文件的内容是所有文件的 Hash 值，当然，排除 <code>Hash.txt</code> 和  <code>!Write_All_Files_Hashes_to_Hash_txt.ps1</code> 。</p><p>逐句解释</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><code class="hljs PowerShell"><span class="hljs-comment"># 要排除的文件列表。注意 `Hash.txt` 和我们的脚本文件 `!Write_All_Files_Hashes_to_Hash_txt.ps1` 一定要放进要排除的文件列表。</span><br><span class="hljs-variable">$excluded_files</span> = <span class="hljs-string">&#x27;Hash.txt&#x27;</span>,<span class="hljs-string">&#x27;!Write_All_Files_Hashes_to_Hash_txt.ps1&#x27;</span>,<span class="hljs-string">&#x27;password.txt&#x27;</span>,<span class="hljs-string">&#x27;readme.txt&#x27;</span><br><br><span class="hljs-comment"># 获取当前文件夹下所有文件，排除上一语句要排除的文件。</span><br><span class="hljs-variable">$files</span> = <span class="hljs-selector-tag">@</span>(<span class="hljs-built_in">Get-ChildItem</span> <span class="hljs-literal">-Name</span> <span class="hljs-literal">-Exclude</span> <span class="hljs-variable">$excluded_files</span>)<br><br><span class="hljs-comment"># 建立三个数组</span><br><span class="hljs-variable">$hashes_md5</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><span class="hljs-variable">$hashes_sha1</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><span class="hljs-variable">$hashes_sha256</span> = <span class="hljs-number">0</span>..(<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>)<br><br><span class="hljs-comment"># 如果 Hash.txt 存在，就清除其内容</span><br><span class="hljs-keyword">If</span> (<span class="hljs-built_in">Test-Path</span> Hash.txt) &#123; <span class="hljs-built_in">Clear-Content</span> Hash.txt &#125;<br><br><span class="hljs-comment"># For 循环，循环次数等于当前文件夹下文件的数量，注意是从 0 开始计数的</span><br><span class="hljs-keyword">For</span> (<span class="hljs-variable">$i</span>=<span class="hljs-number">0</span>; <span class="hljs-variable">$i</span> <span class="hljs-operator">-le</span> (<span class="hljs-variable">$files</span>.Count - <span class="hljs-number">1</span>); <span class="hljs-variable">$i</span>++) &#123; <br><br>    <span class="hljs-comment"># 分别计算文件 $files[$i] 的 MD5、SHA1、SHA256，并写入对应的三个数组的第 $i 号元素</span><br>    <span class="hljs-variable">$hashes_md5</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> MD5).Hash<br>    <span class="hljs-variable">$hashes_sha1</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> SHA1).hash<br>    <span class="hljs-variable">$hashes_sha256</span>[<span class="hljs-variable">$i</span>] = (<span class="hljs-built_in">Get-FileHash</span> <span class="hljs-literal">-Path</span> <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>] <span class="hljs-literal">-Algorithm</span> SHA256).hash<br>    <br>    <span class="hljs-comment"># 将每个文件的文件名（主文件名和后缀） 、MD5、SHA1、SHA256 输出到 Hash.txt</span><br>    <span class="hljs-comment"># 注意冒号前后的空格 ;-)</span><br>    <span class="hljs-built_in">Write-Output</span> (<span class="hljs-string">&quot;File   : &quot;</span> + <span class="hljs-variable">$files</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;MD5    : &quot;</span> + <span class="hljs-variable">$hashes_md5</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;SHA1   : &quot;</span> + <span class="hljs-variable">$hashes_sha1</span>[<span class="hljs-variable">$i</span>]) (<span class="hljs-string">&quot;SHA256 : &quot;</span> + <span class="hljs-variable">$hashes_sha256</span>[<span class="hljs-variable">$i</span>]) `r`n  &gt;&gt; Hash.txt<br>&#125;<br></code></pre></td></tr></table></figure><p>注意：这样生成的 Hash.txt 默认编码是带 BOM 的 UTF-16LE。如果需要跨平台使用，最好用 Notepad3、Notepad++、Emeditor、EditPlus 等专门为程序员开发的文本编辑器转码为<strong>不带 BOM 的 UTF-8</strong> 格式。</p><h2 id="P-图片来源">P. 图片来源</h2><p>题图：自制</p><p>头图：<a href="https://pixabay.com/users/seidenperle-41220675/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8750430">Seidenperle</a> from <a href="https://pixabay.com/illustrations/ai-generated-summer-vacation-beach-8750430/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8750430">Pixabay</a></p>]]></content>
    
    
    <summary type="html">当前文件夹下有若干个文件。我需要批量生成它们的哈希值（Hash），只显示主文件名和后缀，不显示所在文件夹路径。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="脚本" scheme="https://blog.kukmoon.com/tags/%E8%84%9A%E6%9C%AC/"/>
    
    <category term="编程" scheme="https://blog.kukmoon.com/tags/%E7%BC%96%E7%A8%8B/"/>
    
    <category term="PowerShell" scheme="https://blog.kukmoon.com/tags/PowerShell/"/>
    
  </entry>
  
  <entry>
    <title>用 GitHub Actions 把博客部署到腾讯云 COS</title>
    <link href="https://blog.kukmoon.com/a21035aed7e1/"/>
    <id>https://blog.kukmoon.com/a21035aed7e1/</id>
    <published>2024-06-27T05:56:34.000Z</published>
    <updated>2024-06-27T09:13:01.000Z</updated>
    
    <content type="html"><![CDATA[<p>在上一篇文章<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="[谷月：双线 DNS 解析我的博客到腾讯云 COS 和 CFPages](https://blog.kukmoon.com/7dc752917138/)">[1]</span></a></sup>中，谷月姐费了九牛二虎之力，终于把我的博客（以下简称<a href="https://blog.kukmoon.com">本博</a>）同时部署到腾讯云 COS、Cloudflare Pages，并用 DNSPod 实现了双线解析域名，把境内访问解析到腾讯云 COS，把境外访问解析到 Cloudflare Pages。</p><p>这篇文章记录如何通过 GitHub Actions 来自动部署<a href="https://blog.kukmoon.com">本博</a>。写完 GitHub Actions Workflow 脚本以后，只需要在本地执行一条 <code>git push</code> 命令，后面的任务由 GitHub Actions 在云端完成。</p><h2 id="1-添加-Actions-Secrets">1. 添加 Actions Secrets</h2><p>进入 GitHub，打开博客源码仓库 <code>kukmoon_blog</code>，点击仓库上方导航栏的 Settings，点击左侧导航栏 Security 下方的 Secrets → Actions，点击右上方的 New repository secret，添加三个 Secrets：</p><ul><li><code>COSBUCKET</code>：存储桶的名称（连同后面的一串数字）。例如<a href="https://blog.kukmoon.com">本博</a>对应的存储桶是 <code>kukmoon-blog-12345678</code>。</li><li><code>COSSECRET_ID</code>：API 密钥的 ID。从【<a href="https://console.cloud.tencent.com/cam/capi">「腾讯云控制台」➡「密钥管理」</a>】获取。</li><li><code>COSSECRET_KEY</code>：API 密钥，获取方法同 <code>COSSECRET_ID</code>。</li></ul><h2 id="2-修改-Actions-工作流脚本">2. 修改 Actions 工作流脚本</h2><p>在本地打开并修改 <code>kukmoon_blog/.github/workflows/deploy.yaml</code>，其中 <code>kukmoon_blog</code> 是博客源文件所在的本地文件夹。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">name:</span> <span class="hljs-string">CI</span><br><br><span class="hljs-comment"># 只监听 master 分支的改动</span><br><span class="hljs-attr">on:</span><br>  <span class="hljs-attr">push:</span><br>    <span class="hljs-attr">branches:</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-string">master</span><br><br><span class="hljs-comment"># 自定义环境变量</span><br><span class="hljs-attr">env:</span><br>  <span class="hljs-attr">GIT_USER:</span> <span class="hljs-string">Kukmoon</span><br>  <span class="hljs-attr">GIT_EMAIL:</span> <span class="hljs-string">kukmoon@outlook.ie</span><br> <br><span class="hljs-comment"># 每个 jobs 分别同时在独立的运行器（虚拟机）中运行</span><br><span class="hljs-attr">jobs:</span><br>  <span class="hljs-attr">deploy_to_All:</span><br>    <span class="hljs-comment"># 1. Build</span><br>    <span class="hljs-comment"># 2. Deploy to GitHub pages, and then checkouted and deployed to CF Pages</span><br>    <span class="hljs-comment"># 3. Deploy to CF Workers</span><br>    <span class="hljs-comment"># 4. Replace URLs of images and deploy to the Web hosting service using CPanel</span><br>    <br>    <span class="hljs-attr">name:</span> <span class="hljs-string">Build&#x27;n&#x27;deploy</span><br>    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-20.04</span><br>    <span class="hljs-attr">env:</span><br>      <span class="hljs-attr">VPS2:</span> <span class="hljs-string">my.vps.banwagong.com</span><br>    <span class="hljs-attr">strategy:</span><br>      <span class="hljs-attr">matrix:</span><br>        <span class="hljs-attr">os:</span> [<span class="hljs-string">ubuntu-20.04</span>]<br>        <span class="hljs-attr">node_version:</span> [<span class="hljs-number">20</span>]<br><br>    <span class="hljs-attr">steps:</span><br>      <span class="hljs-comment"># 检出（获取博客源码和主题）</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span><br>        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span><br>      <span class="hljs-comment"># 用 checkout 检出仓库，是把仓库里所有的文件，保存到了虚拟主机的 /home/runner/work/kukmoon_blog/kukmoon_blog 目录，</span><br>      <span class="hljs-comment"># 这个目录对应的环境变量是 $GITHUB_WORKSPACE</span><br>      <span class="hljs-comment"># 可以直接在这里执行 git push，推送到其他的远端仓库</span><br>      <span class="hljs-comment"># 如果有子模块（例如主题），需要设置 with: submodules: &#x27;true&#x27;。我已经不用子模块了，姑且跳过。</span><br>      <br>      <span class="hljs-comment"># 用 Node.js 20 渲染</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Use</span> <span class="hljs-string">Node.js</span> <span class="hljs-string">$&#123;&#123;</span> <span class="hljs-string">matrix.node_version</span> <span class="hljs-string">&#125;&#125;</span><br>        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-node@v4</span><br>        <span class="hljs-attr">with:</span><br>          <span class="hljs-attr">node-version:</span> <span class="hljs-string">$&#123;&#123;</span> <span class="hljs-string">matrix.node_version</span> <span class="hljs-string">&#125;&#125;</span><br>          <br>      <span class="hljs-comment"># 安装 Hexo-cli    </span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">hexo</span>      <br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          npm install -g hexo-cli</span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 安装依赖</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">dependencies</span>      <br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          npm install</span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 配置环境（用于通过SSH协议部署到GitHub和虚拟主机）</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Configuration</span> <span class="hljs-string">environment</span><br>        <span class="hljs-attr">env:</span><br>          <span class="hljs-attr">HEXO_DEPLOY_PRI:</span> <span class="hljs-string">$&#123;&#123;secrets.HEXO_DEPLOY_PRI&#125;&#125;</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          sudo timedatectl set-timezone &quot;Asia/Shanghai&quot;</span><br><span class="hljs-string">          mkdir -p ~/.ssh/</span><br><span class="hljs-string">          echo &quot;$HEXO_DEPLOY_PRI&quot; &gt; ~/.ssh/id_rsa</span><br><span class="hljs-string">          chmod 600 ~/.ssh/id_rsa</span><br><span class="hljs-string">          # 从 GitHub 获取公钥并保存到 known_hosts 文件</span><br><span class="hljs-string">          ssh-keyscan github.com &gt;&gt; ~/.ssh/known_hosts</span><br><span class="hljs-string">          # 从 VPS 获取公钥并保存到 known_hosts 文件</span><br><span class="hljs-string">          ssh-keyscan $&#123;VPS2&#125; &gt;&gt; ~/.ssh/known_hosts</span><br><span class="hljs-string">          git config --global user.name $GIT_USER</span><br><span class="hljs-string">          git config --global user.email $GIT_EMAIL</span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 生成静态页面文件</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">hexo</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          hexo clean</span><br><span class="hljs-string">          hexo g</span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 部署到 GitHub Pages</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">GitHub</span> <span class="hljs-string">Pages</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          cd $&#123;GITHUB_WORKSPACE&#125;/public</span><br><span class="hljs-string">          git init</span><br><span class="hljs-string">          git config --global user.name $GIT_USER</span><br><span class="hljs-string">          git config --global user.email $GIT_EMAIL          </span><br><span class="hljs-string">          git add .</span><br><span class="hljs-string">          git commit -m &quot;Deploy to GitHub Pages at $(date +&#x27;%Y-%m-%d %H:%M:%S&#x27;)&quot;</span><br><span class="hljs-string">          git push --force --set-upstream git@github.com:Kukmoon/kukmoon.github.io.git master  # 避免出现 exit code 128</span><br><span class="hljs-string"></span>       <br>      <span class="hljs-comment"># 安装腾讯云 COS 命令行工具 coscmd，因为 GitHub Actions 的运行器自带 Python 运行环境，所以可以直接用 pip 安装</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">COSCMD</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          pip install coscmd</span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 用 coscmd config 命令生成腾讯云 COS 配置文件，注意此处用到了 Action Secrets</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">config</span> <span class="hljs-string">file</span> <span class="hljs-string">for</span> <span class="hljs-string">COSCMD</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          coscmd config -a $&#123;&#123; secrets.COSSECRET_ID &#125;&#125; -s $&#123;&#123; secrets.COSSECRET_KEY &#125;&#125; -b $&#123;&#123; secrets.COSBUCKET &#125;&#125; -r ap-hongkong          </span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 部署到腾讯云 COS</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">Tencent</span> <span class="hljs-string">Cloud</span> <span class="hljs-string">COS</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          cd $&#123;GITHUB_WORKSPACE&#125;/public</span><br><span class="hljs-string">          # 注意：如果 `.` 后面不加 `/`，就会把当前目录下的所有文件上传到 COS 根目录下面的一个名为 `.` （目录名只有一个点）的子目录，而不是上传到根目录</span><br><span class="hljs-string">          # -rfs 表示递归上传（r）、同名文件不提示直接覆盖（f）、不上传MD5相同的同名文件（s）</span><br><span class="hljs-string">          # --delete 表示让远端文件与本地文件同步，即删除仅在远端存在但本地不存在的文件</span><br><span class="hljs-string">          # --ignore 表示不需要上传的文件，可以用通配符，如果有多组文件不需要上传，就要使用多个 --ignore 参数</span><br><span class="hljs-string">          coscmd upload -rfs --delete ./ / --ignore &quot;*.DS_Store&quot; --ignore &quot;*.git*&quot;      </span><br><span class="hljs-string"></span><br>      <span class="hljs-comment"># 先改图床，然后，部署到 VPS （改了 SSH 端口）</span><br>      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">VPS</span><br>        <span class="hljs-attr">run:</span> <span class="hljs-string">|</span><br><span class="hljs-string">          pwd</span><br><span class="hljs-string">          sed -i &#x27;s/https:\/\/img.kukmoon.com/https:\/\/clouddrive.kukmoon.com\/OneDrive2\/github\/img/g&#x27; `grep https:\/\/img.kukmoon.com -rl ./source/_posts/*.md`    # 修改图床的 URL</span><br><span class="hljs-string">          hexo clean</span><br><span class="hljs-string">          hexo g  </span><br><span class="hljs-string">          cd $&#123;GITHUB_WORKSPACE&#125;/public</span><br><span class="hljs-string">          pwd</span><br><span class="hljs-string">          git init</span><br><span class="hljs-string">          git config --global user.name $GIT_USER</span><br><span class="hljs-string">          git config --global user.email $GIT_EMAIL</span><br><span class="hljs-string">          git add .</span><br><span class="hljs-string">          git commit -m &quot;Deploy to VPS at $(date +&#x27;%Y-%m-%d %H:%M:%S&#x27;)&quot;                 </span><br><span class="hljs-string">          git push --force --set-upstream ssh://git@$&#123;VPS2&#125;/var/repo/blog.git master  # 避免出现 exit code 128         </span><br></code></pre></td></tr></table></figure><p>修改完毕后，<code>git add</code>、<code>git commit</code>、<code>git push</code> 三连。</p><h2 id="图片来源">图片来源</h2><p>题图：GitHub Actions 的著作权、商标权等权利归 GitHub 所有。</p><p>头图：Image by <a href="https://pixabay.com/users/michasager-6459346/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Micha Sager</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Pixabay</a></p><h2 id="参考文献">参考文献</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://blog.kukmoon.com/7dc752917138/">谷月：双线 DNS 解析我的博客到腾讯云 COS 和 CFPages</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
    
    
    <summary type="html">用 GitHub Actions 把博客部署到腾讯云 COS、GItHub Pages、VPS。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Hexo" scheme="https://blog.kukmoon.com/tags/Hexo/"/>
    
    <category term="GitHub" scheme="https://blog.kukmoon.com/tags/GitHub/"/>
    
    <category term="博客" scheme="https://blog.kukmoon.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>卖补佳乐的小药娘</title>
    <link href="https://blog.kukmoon.com/fb26403c1514/"/>
    <id>https://blog.kukmoon.com/fb26403c1514/</id>
    <published>2024-06-23T22:35:10.000Z</published>
    <updated>2024-06-23T22:35:11.000Z</updated>
    
    <content type="html"><![CDATA[<h1>卖补佳乐的小药娘</h1><p><img src="https://img.kukmoon.com/2024-06-24-07-26-38.jpg" alt="卖补佳乐的小药娘"></p><p>天冷极了，下着雪，又快黑了。这是一年的最后一天——大年夜。在这又冷又黑的晚上，一个乖巧的小药娘，赤着脚在街上走着。她从家里出来的时候还穿着一双拖鞋，但是有什么用呢？那是一双很大的拖鞋——那么大，一向是她妈妈穿的。她穿过马路的时候，两辆马车飞快地冲过来，吓得她把鞋都跑掉了。一只怎么也找不着，另一只叫一个清蒸小编捡起来拿着跑了。他说，将来他有了孩子可以用它当摇篮。</p><p>小药娘只好赤着脚走，一双小脚冻得红一块青一块的。她的旧围裙里兜着许多补佳乐，手里还拿着一把。这一整天，谁也没买过她一盒补佳乐，谁也没扫过她一次收款二维码。</p><p>可怜的小药娘！她又冷又饿，哆哆嗦嗦地向前走。雪花落在她金黄的长头发上，那头发打成卷披在肩上，看上去很美丽，不过她没注意这些。每个窗子里都透出灯光来，街上飘着一股烤鹅的香味，因为这是大年夜——她可忘不了这个。</p><p>她在一座房子的墙角里坐下来，蜷着腿缩成一团。她觉得更冷了。她不敢回家，因为她没卖掉一颗补佳乐，没挣到一个钱，主人一定会打她的。再说，家里跟街上一样冷。他们头上只有个房顶，虽然最大的裂缝已经用草和破布堵住了，风还是可以灌进来。</p><p>她的一双小手几乎冻僵了。啊，哪怕一颗小小的补佳乐，对她也是有好处的！她敢从成盒的补佳乐里取出一颗，吞进肚子，给自己补充点雌激素吗？她终于取出了一颗，吞了下去。哧！仿佛有什么东西燃起来了，冒出火焰来了！她把小手拢在火焰上。多么温暖多么明亮的火焰啊，简直像一支小小的蜡烛。这是一道奇异的火光！小药娘觉得自己好像坐在一个大火炉前面，火炉装着闪亮的铜脚和铜把手，烧得旺旺的，暖烘烘的，多么舒服啊！唉，这是怎么回事呢？她刚把脚伸出去，想让脚也暖和一下，火焰灭了，火炉不见了。她坐在那儿，手里只有一片补佳乐铝塑包装。</p><p>她又吞了一颗。仿佛又有火焰燃起来了，发出亮光来了。亮光落在墙上，那儿忽然变得像薄纱那么透明，她可以一直看到屋里。桌上铺着雪白的台布，摆着精致的盘子和碗，肚子里填满了苹果和梅子的烤鹅正冒着香气。更妙的是这只鹅从盘子里跳下来，背上插着刀和叉，摇摇摆摆地在地板上走着，一直向这个穷苦的小药娘走来。这时候，火焰灭了，她面前只有一堵又厚又冷的墙。</p><p>她又吞了一颗补佳乐。这一回，她坐在美丽的圣诞树下。这棵圣诞树，比她去年圣诞节透过富商家的玻璃门看到的还要大，还要美。翠绿的树枝上点着几千支明晃晃的蜡烛，许多幅美丽的彩色画片，跟挂在商店橱窗里的一个样，在向她眨眼睛。小药娘向画片伸出手去。这时候，火焰又灭了。只见圣诞树上的烛光越升越高，最后成了在天空中闪烁的星星。有一颗星星落了下来，在天空中划出了一道细长的红光。“有一个什么人快要死了。”小药娘说。唯一疼她的谷月姐姐曾经告诉过她∶一颗星星落下来，就有一个人要离去了。</p><p>她又吞了一颗补佳乐。这一回，火焰把周围全照亮了。谷月姐姐出现在亮光里，是那么温和，那么慈爱。“姐姐！”小药娘叫起来，“啊！请把我带走吧！我知道，火焰一灭，您就会不见的，像那暖和的火炉，喷香的烤鹅，美丽的圣诞树一个样，就会不见的！”</p><p>她赶紧吞了一大把补佳乐，要把姐姐留住。火焰发出强烈的光，照得跟白天一样明亮。谷月姐姐从来没有像现在这样高大，这样美丽。谷月姐姐把小药娘抱起来，搂在怀里。她俩在光明和快乐中飞走了，越飞越高，飞到那没有寒冷，没有饥饿，也没有痛苦的参宿四去了。</p><p>第二天清晨，这个小药娘坐在墙角，两腮通红，嘴上带着微笑。她死了，在旧年的大年夜冻死了。新年的太阳升起来了，照在她小小的尸体上。小药娘坐在那儿，手里还捏着一把吃完了的补佳乐铝塑包装与盒子。</p><p>“她肯定是od导致死亡了……”人们说。谁也不知道她曾经看到过多么美丽的东西，她曾经多么幸福，跟着谷月姐姐一起走向新年的幸福中去。</p><p>————————————</p><p>注：根据丹麦作家安徒生的童话《卖火柴的小女孩》（中译：叶君健）改编。</p><p><strong>简要分析</strong></p><p><em>本文根据《卖火柴的小女孩》改编，讲了一个卖补佳乐的小药娘在富人欢乐、举杯共庆的大年夜冻死在街头的故事。小药娘死了，嘴角却带着微笑，通过od补佳乐的美好幻想与她饥寒交迫的现实生活形成了鲜明的对比。作者通过这个童话，表达了对 MTF 悲惨命运的同情，和对父权女本位社会歧视跨性别的不满。</em></p><p><strong>图片版权</strong></p><p>题图：自绘，其中小女孩素材部分来自 <a href="https://pixabay.com/users/alban_gogh-28413822/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8820123">Alban_Gogh</a> 的 <a href="https://pixabay.com/illustrations/ai-generated-girl-matches-8820123/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8820123">Pixabay 作品</a>，补佳乐盒子设计版权归拜耳公司所有</p><p>头图：Image by <a href="https://pixabay.com/users/michasager-6459346/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Micha Sager</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Pixabay</a></p>]]></content>
    
    
    <summary type="html">根据《卖火柴的小女孩》改编，讲了一个卖补佳乐的小药娘在富人欢乐、举杯共庆的大年夜冻死在街头的故事。小药娘死了，嘴角却带着微笑，通过od补佳乐的美好幻想与她饥寒交迫的现实生活形成了鲜明的对比。</summary>
    
    
    
    <category term="随笔" scheme="https://blog.kukmoon.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
    <category term="跨性别" scheme="https://blog.kukmoon.com/tags/%E8%B7%A8%E6%80%A7%E5%88%AB/"/>
    
    <category term="药娘" scheme="https://blog.kukmoon.com/tags/%E8%8D%AF%E5%A8%98/"/>
    
    <category term="MTF" scheme="https://blog.kukmoon.com/tags/MTF/"/>
    
  </entry>
  
  <entry>
    <title>跨女不是顺女的下位替代品</title>
    <link href="https://blog.kukmoon.com/6e8a9ae32c24/"/>
    <id>https://blog.kukmoon.com/6e8a9ae32c24/</id>
    <published>2024-06-22T00:59:16.000Z</published>
    <updated>2024-06-22T00:59:17.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://img.kukmoon.com/2024-06-22-09-27-13.jpg" alt="#TGTOW 【跨女不是顺女的下位替代品】"></p><h1>#TGTOW 【跨女不是顺女的下位替代品】</h1><p>跨女喊出这个口号，恰恰反映了古今中外的父权女本位社会还真的就是把跨女（广义的，包括MTF、CD、甚至母0）当作顺女的下位替代品，给找不到老婆或者玩顺女玩腻的男人释放欲望。既然跨女不会怀孕，就不会产生生孩子带来的各种危险和麻烦。毕竟，「男孩子又不会怀孕」……</p><p>无论是古代中国的象姑、兔儿爷，古代日本的女形艺伎，古代伊斯兰世界的义子（在阿富汗保留至今），古代南亚的海吉拉（保留至今），现代出现的泰国人妖（最早可追溯到越战期间为驻泰美军提供性服务），当今中日韩的男娘，都没有跳出这个窠臼。</p><p>跨女要自立，要自强，要追求独立平等。</p><p>然而，只要父权女本位社会存在一天，跨女就一天得不到真正的平等。只要传宗接代的父权思想继续统治社会，只要「彩礼是生育补偿」「我给你生孩子那么痛苦你要对我XXX」的女本位思想继续甚嚣尘上，那么跨女就只能屈辱地继续当顺女的下位替代品。</p><p>说到这里，我们的结论已经不言自明：</p><ul><li>打倒父权，</li><li>打倒女本位，</li><li>反对借传宗接代索取高额彩礼，</li><li>实现顺跨平等。</li></ul><p><img src="https://img.kukmoon.com/2024-06-22-09-04-09.png" alt="全文截图，可用于发长微博"></p><p><strong>图片版权</strong></p><p>题图：Image by <a href="https://pixabay.com/users/greyerbaby-2323/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=254708">lisa runnels</a> from <a href="https://pixabay.com/photos/girl-woman-sexy-lingerie-posing-254708/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=254708">Pixabay</a></p><p>头图：Image by <a href="https://pixabay.com/users/michasager-6459346/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Micha Sager</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Pixabay</a></p>]]></content>
    
    
    <summary type="html">跨女不是顺女的下位替代品</summary>
    
    
    
    <category term="随笔" scheme="https://blog.kukmoon.com/categories/%E9%9A%8F%E7%AC%94/"/>
    
    
    <category term="跨性别" scheme="https://blog.kukmoon.com/tags/%E8%B7%A8%E6%80%A7%E5%88%AB/"/>
    
    <category term="TGTOW" scheme="https://blog.kukmoon.com/tags/TGTOW/"/>
    
    <category term="LGBT" scheme="https://blog.kukmoon.com/tags/LGBT/"/>
    
  </entry>
  
  <entry>
    <title>双线 DNS 解析我的博客到腾讯云 COS 和 CFPages</title>
    <link href="https://blog.kukmoon.com/7dc752917138/"/>
    <id>https://blog.kukmoon.com/7dc752917138/</id>
    <published>2024-06-21T16:37:35.000Z</published>
    <updated>2024-06-27T09:58:00.000Z</updated>
    
    <content type="html"><![CDATA[<p class="note note-primary">双线部署完毕，撒花庆祝🎉🎊！<br />现在用浏览器访问 <a href="https://blog.kukmoon.com" target="_blank">https://blog.kukmoon.com</a>，DNSPod 就会进行双线解析。</a><p><img src="https://img.kukmoon.com/2024-06-23-14-59-15.jpg" alt="双线 DNS 解析我的博客到腾讯云 COS 和 CFPages"></p><h2 id="1-引言">1 引言</h2><p>我有一个博客（以下简称<a href="https://blog.kukmoon.com">本博</a>），希望能够让全球用户都顺畅访问。</p><p>但是，简中互联网和全球互联网已经相行渐远。它们不但在内容和用户偏好方面裂痕明显，而且 GFW 的建设和中美海底光缆建设计划的取消也使得简中和全球互联网从网络结构到物理线路上都出现了脱钩的趋势。</p><p>那么，我应该怎样才能在简中互联网和全球互联网相行渐远的背景下，勉强维持全球用户顺畅访问<a href="https://blog.kukmoon.com">本博</a>呢？</p><p>显然，部署双线访问是个好主意。在国内部署一个镜像，在国外部署一个镜像。再为<a href="https://blog.kukmoon.com">本博</a>的域名部署双线 DNS 解析，让境内用户跳转到国内镜像，让境外用户跳转到国外镜像。</p><p>笔者采取了 A/B 测试方式，暂时保持原域名 <a href="https://blog.kukmoon.com">blog.kukmoon.com</a> 不动，另建一个新域名 <a href="https://blog.kukmoon.tech">blog.kukmoon.tech</a> 作为测试双线 DNS 解析的统一域名。</p><p class="note note-warning">警告：域名 <a href="https://blog.kukmoon.tech" target="_blank">blog.kukmoon.tech</a> 将在 2025-06-21 失效。</span><h2 id="2-方法、步骤与结果">2 方法、步骤与结果</h2><h3 id="2-1-在国外部署博客镜像">2.1 在国外部署博客镜像</h3><p>我不想花钱买服务器，所以想找免费的无服务器（Serverless）平台搭建博客。还真让我找到了国外的 Cloudflare Pages 和国内的腾讯云 COS。</p><p><a href="https://blog.kukmoon.com">本博</a>的国外镜像，就是部署在 Cloudflare Pages（下文简称 CFPages）的平台上<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="[谷月：Cloudflare Pages 不支持 Hexo 怎么办？](https://blog.kukmoon.tech/1abcd8ce26b4/)">[1]</span></a></sup>。CFPages 的功能实在太强大了，使用实在太简单了，堪称全球最伟大的全栈应用部署工具也毫不为过，用它搭个静态博客还不是小菜一碟？而且免费版本对我来说就足够了。</p><p>我为上述镜像设置了两个域名：<code>blog2.kukmoon.com</code> 和 <code>kukmoon.pages.dev</code>。后续还会用到。</p><h3 id="2-2-在国内部署博客镜像">2.2 在国内部署博客镜像</h3><p><a href="https://blog.kukmoon.com">本博</a>的国内镜像，部署在腾讯云 COS 香港区域。理由如下：一是免备案，二是从内地访问很快，三是从内地访问的费用相对低廉（目前平均一天一分钱）。</p><p class="note note-danger"><b>注意</b>：<br/><br/>香港是国内，也是境外。<br/>香港是国内，也是境外。<br/>香港是国内，也是境外。<br/><br/>重要的事说三遍！</span><p>之前考虑过阿里云 OSS，但是它要求香港区域用户即使搭建静态网站也必须备案，所以我就果断把它从采购名单上划掉了。</p><h4 id="2-2-1-新建存储桶">2.2.1 新建存储桶</h4><p>参照官方文档<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="[创建存储桶](https://cloud.tencent.com/document/product/436/13309)">[2]</span></a></sup>，在腾讯云 COS 控制台中新建一个存储桶。</p><p>所属地域为香港，名称为 <code>kukmoon-blog-12345678</code>（其中 <code>kukmoon-blog</code> 为存储桶的名称，<code>kukmoon-blog-12345678</code> 为存储桶的全名，注意 <code>12345678</code> 是我的 APPID，后面会用到）。访问权限为公有读私有写。</p><p>高级可选配置中的选项不作修改。</p><h4 id="2-2-2-将博客部署到存储桶">2.2.2 将博客部署到存储桶</h4><p><strong>Step 1</strong> 安装 Hexo 插件 <code>hexo-deployer-qcloud-cos</code> 并配置 Hexo 博客的 <code>_config.yml</code> 文件<sup id="fnref:3" class="footnote-ref"><a href="#fn:3" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Wertycn: 一键部署hexo博客到腾讯云COS对象存储 ](https://werty.cn/2019/06/hexo/%E8%85%BE%E8%AE%AF%E4%BA%91COS%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E9%83%A8%E7%BD%B2hexo%E5%8D%9A%E5%AE%A2%E5%B9%B6%E5%AE%9E%E7%8E%B0%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2/)">[3]</span></a></sup>。</p><p>注意：</p><ol><li>腾讯云 COS 存储桶的名称被<strong>从右往左数的第一个 <code>-</code></strong> 分成两部分，它后面的纯数字是你的 APPID，它前面的字符串（可以包含字母、数字、其他的<code>-</code>）才是存储桶的内部名称。例如我的存储桶名称是 <code>kukmoon-blog-12345678</code>。</li><li>在配置 <code>_config.yml</code> 时，<code>cosBucket</code> 只需要填写<strong>从右往左数的第一个 <code>-</code> 前面的字符串</strong>就可以了。例如我这里只需要填写 <code>kukmoon-blog</code>。</li></ol><p><img src="https://img.kukmoon.com/2024-06-22-11-36-14.png" alt="配置 Hexo 博客的 "></p><p><strong>Step 2</strong> 保存 <code>_config.yml</code>，然后生成并部署。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">hexo d -g<br></code></pre></td></tr></table></figure><h4 id="2-2-3-为存储桶配置静态网站">2.2.3 为存储桶配置静态网站</h4><p>参照官方文档<sup id="fnref:4" class="footnote-ref"><a href="#fn:4" rel="footnote"><span class="hint--top hint--rounded" aria-label="[设置静态网站](https://cloud.tencent.com/document/product/436/14984)">[4]</span></a></sup>，在腾讯云 COS 控制台中，找到刚才建立的存储桶 <code>kukmoon-blog-12345678</code>，在「基础配置」➡「静态网站」中，进行设置。我在此处只是把「当前状态」设置为打开，其他选项没有修改。</p><p>腾讯云 COS 为这个存储桶自动生成一个域名，<code>kukmoon-blog-12345678.cos-website.ap-hongkong.myqcloud.com</code>，后续还会用到。</p><h3 id="2-3-部署-DNS-双线解析">2.3 部署 DNS 双线解析</h3><p>部署 DNS 双线解析是用已经被腾讯云收购的 DNSPod。我在此处用 <code>blog.kukmoon.tech</code> 作为测试双线解析使用的域名。</p><h4 id="2-3-1-注册域名并用-DNSPod-提供-DNS-解析">2.3.1 注册域名并用 DNSPod 提供 DNS 解析</h4><p>注册二级域名 <code>kukmoon.tech</code>，在它的注册商网站上，把它的 NS 服务器设置为 DNSPod 提供的 NS 服务器。</p><p>然后，静等 NS 服务器的修改生效（不超过 24 小时）。</p><h4 id="2-3-2-在-Cloudflare-中添加自定义主机名">2.3.2 在 Cloudflare 中添加自定义主机名</h4><p>参照这篇文章<sup id="fnref:5" class="footnote-ref"><a href="#fn:5" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Luminous：【CloudFlare】官方免费CNAME接入教程](https://luotianyi.vc/6185.html)">[5]</span></a></sup>，在 Cloudflare 中打开我的站点 <code>kukmoon.com</code>，点击左侧的「SSL/TLS」➡「自定义主机名」，点击右侧的「启用CloudFlare for SaaS」，根据指示绑定外币卡或者PayPal，订阅CloudFlare for SaaS 功能。<br><img src="https://img.kukmoon.com/2024-06-22-20-27-23.jpg" alt="图源：https://luotianyi.vc/6185.html"></p><p>这样就开启了「自定义主机名」功能，如图所示。注意：该功能最多可以容纳 50 个自定义主机名，超过 50 个才开始收费。<br><img src="https://img.kukmoon.com/2024-06-22-20-30-12.png" alt="自定义主机名"></p><p>在右侧的「回退源」中输入 <code>blog2.kukmoon.com</code>，这是我在 CFPages 中为博客设置的域名之一。此处不可以使用 CFPages 的默认域名 <code>*.pages.dev</code>。<br><img src="https://img.kukmoon.com/2024-06-22-22-43-51.png" alt="2024-06-22-22-43-51"></p><p>点击右侧的「添加自定义主机名」，将「自定义主机名」设为 <code>blog.kukmoon.tech</code>，其他保持不变，点击右下角的「添加自定义主机名」。回到「自定义主机名」画面。<br><img src="https://img.kukmoon.com/2024-06-22-22-44-47.png" alt="2024-06-22-22-44-47"></p><p>点开新出现的「kukmoon.tech」，可以看到 Cloudflare 给出了一组 TXT 记录，要求我添加到 <code>blog.kukmoon.tech</code> 的 DNS 中作为验证，验证通过后，Cloudflare 才能给 <code>blog.kukmoon.tech</code> 颁发 SSL 证书。<br><img src="https://img.kukmoon.com/2024-06-22-22-45-50.png" alt="2024-06-22-22-45-50"></p><p>那么在 DNSPod 中添加一条 TXT 记录。注意：由于 Cloudflare 和 DNSPod 规则的不同，在 DNS 中添加的记录，「主机记录」必须是 <code>_cf-custom-hostname.blog</code>（不包括 <code>.kukmoon.tech</code> 后缀），「记录值」是 <code>104d36cc-cbd3-43f1-aa03-6b8f2349a2aa</code> 不变。点击「确认」。<br><img src="https://img.kukmoon.com/2024-06-22-22-48-05.png" alt="2024-06-22-22-48-05"></p><p>过一会儿（一般不超过 15 分钟），回到 Cloudflare 刷新一下，出现如下图所示的提示，说明已经把 <code>blog.kukmoon.tech</code> 添加到了 Cloudflare，而且 Cloudflare 给这个域名颁发了 SSL 证书。<br><img src="https://img.kukmoon.com/2024-06-22-22-52-48.png" alt="2024-06-22-22-52-48"></p><h4 id="2-3-3-在-CFPages-中绑定自定义域名">2.3.3 在 CFPages 中绑定自定义域名</h4><p>在 「Workers 和 Pages」 的「概述」页面中，点击打开<a href="https://blog.kukmoon.com">本博</a>所对应的项目。<br><img src="https://img.kukmoon.com/2024-06-22-01-48-05.png" alt="2024-06-22-01-48-05"></p><p>点击「自定义域」➡「设置自定义域」。<br><img src="https://img.kukmoon.com/2024-06-22-01-50-34.png" alt="2024-06-22-01-50-34"></p><p>输入 <code>blog.kukmoon.tech</code>，点击「继续」。<br><img src="https://img.kukmoon.com/2024-06-22-01-53-00.png" alt="2024-06-22-01-53-00"></p><p>Cloudflare 会提示配置 DNS 记录。<br><img src="https://img.kukmoon.com/2024-06-22-01-53-47.png" alt="2024-06-22-01-53-47"></p><p>点击「开始 CNAME 设置」，Cloudflare 会出现如下提示。<br><img src="https://img.kukmoon.com/2024-06-22-01-56-40.png" alt="CNAME 设置"></p><p>打开 DNSPod 的控制台，点击「我的域名」➡「kukmoon.tech」。<br><img src="https://img.kukmoon.com/2024-06-22-02-00-24.png" alt="2024-06-22-02-00-24"></p><p>点击「添加记录」，在 <code>kukmoon.tech</code> 下面，增加一条「境外」记录，「主机记录」是 <code>blog</code>，「记录类型」是 「CNAME」，「记录值」指向 <code>kukmoon.pages.dev</code>。<br><img src="https://img.kukmoon.com/2024-06-27-17-51-19.png" alt="2024-06-27-17-51-19"></p><p>回到 CFPages，点击「检查 DNS 记录」，然后点击右下角的「稍后完成 DNS 设置」。静等 DNS 设置生效。<br><img src="https://img.kukmoon.com/2024-06-22-01-56-40.png" alt="CNAME 设置"></p><p>通过境外线路访问 <a href="https://blog.kukmoon.tech">https://blog.kukmoon.tech</a>，可以正常访问，这说明 DNS 配置正确而且路由无误。而且 SSL 加密正常。<br><img src="https://img.kukmoon.com/2024-06-22-23-01-21.png" alt="2024-06-22-23-01-21"></p><h4 id="2-3-4-在腾讯云-COS-中设置自定义域名">2.3.4 在腾讯云 COS 中设置自定义域名</h4><p>参照官方文档<sup id="fnref:6" class="footnote-ref"><a href="#fn:6" rel="footnote"><span class="hint--top hint--rounded" aria-label="[开启自定义源站域名](https://cloud.tencent.com/document/product/436/36638)">[6]</span></a></sup>，在腾讯云 COS 控制台中，找到刚才建立的存储桶 <code>kukmoon-blog-12345678</code>，在「域名与传输管理」➡「自定义源站域名」中，点击「添加域名」。把「自定义域名」设为 <code>blog.kukmoon.tech</code>，「源站类型」设置为「静态网站源站」，其他不需要改动。点击「创建」。<br><img src="https://img.kukmoon.com/2024-06-22-12-58-49.png" alt="设置自定义域名"></p><p>创建完成后需要绑定证书。<br><img src="https://img.kukmoon.com/2024-06-23-08-18-53.png" alt="2024-06-23-08-18-53"></p><p>点击上图中的「绑定证书」，再点击下图中的「申请腾讯云证书」。<br><img src="https://img.kukmoon.com/2024-06-23-08-19-57.png" alt="2024-06-23-08-19-57"></p><p>跳转到腾讯云证书申请界面，点击「申请免费证书」。<br><img src="https://img.kukmoon.com/2024-06-23-08-21-08.png" alt="2024-06-23-08-21-08"></p><p>证书绑定域名填写 <code>blog.kukmoon.tech</code>，再填上邮箱，其他不需要改动。点击左下角「提交申请，进行域名验证」。<br><img src="https://img.kukmoon.com/2024-06-23-08-22-45.png" alt="2024-06-23-08-22-45"></p><p>等待域名完成验证和审批通过。不超过一个工作日。点击左下角「完成」可以退出这个界面。<br><img src="https://img.kukmoon.com/2024-06-23-08-23-50.png" alt="2024-06-23-08-23-50"></p><p>又回到腾讯云证书申请界面。点击「关闭」。<br><img src="https://img.kukmoon.com/2024-06-23-08-21-08.png" alt="2024-06-23-08-21-08"></p><p>必须要等到新申请的证书处于「已签发」状态时，才能进行下一步操作。<br><img src="https://img.kukmoon.com/2024-06-23-13-07-53.png" alt="2024-06-23-13-07-53"></p><p>可以先给它重命名一下，取个新名字，例如「blog.kukmoon.tech 的 SSL 证书」。<br><img src="https://img.kukmoon.com/2024-06-23-13-09-01.png" alt="2024-06-23-13-09-01"></p><p>点击「去托管」。设置一下托管（自动续期什么的）。<br><img src="https://img.kukmoon.com/2024-06-23-13-10-46.png" alt="2024-06-23-13-10-46"></p><p>如图所示操作。最后点击最后一行的「托管」。<br><img src="https://img.kukmoon.com/2024-06-23-13-11-33.png" alt="2024-06-23-13-11-33"></p><p>选择「自动托管」。<br><img src="https://img.kukmoon.com/2024-06-23-13-12-10.png" alt="2024-06-23-13-12-10"></p><p>回到「自定义源站域名」界面，点击 <code>blog.kukmoon.tech</code> 最右边「操作」一列中的「绑定证书」。<br><img src="https://img.kukmoon.com/2024-06-23-13-13-36.png" alt="2024-06-23-13-13-36"></p><p>选择「已托管证书」，并选中之前申请的证书，点击「确定」。静等证书绑定生效，一般不超过 30 分钟。<br><img src="https://img.kukmoon.com/2024-06-23-13-14-25.png" alt="2024-06-23-13-14-25"></p><h4 id="2-3-5-在-DNSPod-中部署境内解析">2.3.5 在 DNSPod 中部署境内解析</h4><p>在 DNSPod 中，点击「我的域名」➡「kukmoon.tech」➡「添加记录」，新增一条 CNAME 记录，将主机记录 <code>blog</code> 指向 <code>kukmoon-blog-12345678.cos-website.ap-hongkong.myqcloud.com</code>，「线路」为「境内」。<br><img src="https://img.kukmoon.com/2024-06-22-23-22-06.png" alt="2024-06-22-23-22-06"></p><p>首次部署这条记录后，需要等一段时间（最多 15 分钟）才能生效。如果尚未生效就通过境内线路访问 <a href="http://blog.kukmoon.tech">http://blog.kukmoon.tech</a>，会看到如下错误提示。<br><img src="https://img.kukmoon.com/2024-06-22-13-06-49.png" alt="2024-06-22-13-06-49"></p><p>部署生效后，从境内线路访问 <a href="http://blog.kukmoon.tech">http://blog.kukmoon.tech</a> ，会顺利访问<a href="https://blog.kukmoon.com">本博</a>的首页，SSL 加密正常。<br><img src="https://img.kukmoon.com/2024-06-23-13-35-49.png" alt="2024-06-23-13-35-49"></p><h2 id="3-讨论">3 讨论</h2><p>在设置 DNS 解析的过程中，为了同时满足腾讯云 COS、DNSPod、Cloudflare 三方的规则，我特么走了太多弯路。</p><h3 id="3-1-香港是国内又是境外">3.1 香港是国内又是境外</h3><h4 id="3-1-1-为什么把境内线路解析到香港？">3.1.1 为什么把境内线路解析到香港？</h4><p>原因有二：</p><ol><li><p>在境内搭建网站需要备案，而且如果没有服务器就不能备案（相当于境内无法搭建无服务器网站），偏偏对象存储就是无服务器（Serverless）的；</p></li><li><p>境内用户访问腾讯云香港区域的速率比较快，至少比访问 CFPages 快。这是为了改善用户体验。</p></li></ol><h4 id="3-1-2-为什么不把香港-IP-的访问请求解析到香港？">3.1.2 为什么不把香港 IP 的访问请求解析到香港？</h4><p>原因是：DNSPod 免费版的颗粒度太大，只有境内/境外可选，境外流量选不了具体来自哪个国家或地区。这样，只能把来自香港 IP 的访问请求连同其他境外请求一起解析到 CFPages。反正 CFPages 在香港的访问速度也很快。而且 Cloudflare 的安全措施比腾讯更有力，能更好地遏止境外势力（例如「恶俗维基」「MTF清蒸协会」）对<a href="https://blog.kukmoon.com">本博</a>的破坏。</p><h3 id="3-2-用-GitHub-Action-把本博部署到腾讯云-COS">3.2 用 GitHub Action 把本博部署到腾讯云 COS</h3><p>本文 2.2 节讲的内容，是借助 Hexo 插件，在运行 <code>hexo d</code> 命令时把<a href="https://blog.kukmoon.com">本博</a>部署到腾讯云 COS。</p><p>如果需要用 GitHub Action 部署，请另行参见这篇文章<sup id="fnref:7" class="footnote-ref"><a href="#fn:7" rel="footnote"><span class="hint--top hint--rounded" aria-label="[谷月： 用 GitHub Actions 把博客部署到腾讯云 COS](https://blog.kukmoon.tech/7dc752917138/)">[7]</span></a></sup>。</p><h3 id="3-3-Cloudflare-新规导致不能随便-CNAME">3.3 Cloudflare 新规导致不能随便 CNAME</h3><p>由于 Cloudflare 禁用了 Partner 使用的 zone_setAPI 以避免滥用（因为该 API 接入不需要验证域名所有权）<sup id="fnref:5" class="footnote-ref"><a href="#fn:5" rel="footnote"><span class="hint--top hint--rounded" aria-label="[Luminous：【CloudFlare】官方免费CNAME接入教程](https://luotianyi.vc/6185.html)">[5]</span></a></sup>，换句话说，官方从此以后就不允许阿猫阿狗随便通过 CNAME 方式跳转到 Cloudflare 旗下的服务了。Cloudflare 用户必须给外部的主机开白名单——2.3.2 节提到的「自定义主机名」就是一张可以容纳 50 个外部主机的白名单。——这导致我走了 N 多弯路。</p><h3 id="3-4-CFPages-的自定义域名被停用？">3.4 CFPages 的自定义域名被停用？</h3><p>按照 2.3.3 节的操作结束后，在我的 CFPages ➡ <a href="https://blog.kukmoon.com">本博</a>项目 ➡ 「自定义域」中，会出现这个错误。它让我一直百思不得其解，但是完全不影响 <code>blog.kukmoon.tech</code> 跳转到 <code>kukmoon.pages.dev</code>。所以我就随便它去了。<br><img src="https://img.kukmoon.com/2024-06-22-23-03-46.png" alt="2024-06-22-23-03-46"></p><h3 id="3-5-Cloudflare-的证书只能访问自家资源">3.5 Cloudflare 的证书只能访问自家资源</h3><p>我前文说过，Cloudflare 给我的域名 <code>blog.kukmoon.tech</code> 配置了一个 SSL 证书。可惜只有用境外线路访问 <a href="https://blog.kukmoon.tech">https://blog.kukmoon.tech</a> 时，SSL 才有效。然而，用境内线路访问 <a href="https://blog.kukmoon.tech">https://blog.kukmoon.tech</a> 时，SSL 根本无效。这就说明 Cloudflare 的证书不是白发的，必须访问 Cloudflare 自家资源，证书才网开一面.</p><h3 id="3-6-为存储桶配置静态网站和域名">3.6 为存储桶配置静态网站和域名</h3><p>腾讯云 COS 可以把存储桶作为静态网站来使用。这样，我们就可以让存储桶摇身一变，化身成为一个无服务器的（Serverless）静态网站。与购买 VPS 或虚拟主机来搭建静态网站相比，使用对象存储（例如腾讯云 COS、阿里云 OSS、Amazon S3、Cloudflare R2……）建站，访问速度快，费用低，维护容易，还可以与大厂旗下的其他服务整合。</p><p>理论上说，在浏览器中输入这个存储桶的域名， <code>http://kukmoon-blog-12345678.cos-website.ap-hongkong.myqcloud.com</code>，就可以访问<a href="https://blog.kukmoon.com">本博</a>首页了。</p><p>但是，由于腾讯云 COS 采取新的安全政策，因此在浏览器中输入上述域名是无法直接访问<a href="https://blog.kukmoon.com">本博</a>的，必须为存储桶中的博客绑定一个<strong>静态源站域名</strong>，在浏览器中输入这一域名才能访问。</p><h3 id="3-7-究竟能不能为腾讯云-COS-上的博客镜像配置-HTTPS？">3.7 究竟能不能为腾讯云 COS 上的博客镜像配置 HTTPS？</h3><p>按照腾讯云 COS 的某个官方文档<sup id="fnref:8" class="footnote-ref"><a href="#fn:8" rel="footnote"><span class="hint--top hint--rounded" aria-label="[自定义源站域名](https://cloud.tencent.com/document/product/436/56559)">[8]</span></a></sup>说，存储桶的自定义域名支持 HTTPS 的区域不包括香港。我一开始相信了它，没有为<a href="https://blog.kukmoon.com">本博</a>配置 SSL 加密。<br><img src="https://img.kukmoon.com/2024-06-23-00-24-15.png" alt="2024-06-23-00-24-15"></p><p>一开始，从境内线路访问<a href="https://blog.kukmoon.com">本博</a>，浏览器确实会因为 https 无效而告警。这是因为从没有配置 SSL 证书的自定义域名 <code>blog.kukmoon.tech</code> 跳转到已经配置了 SSL 证书的域名 <code>*.cos.ap-hongkong.myqcloud.com</code> ，证书与域名不匹配而导致告警。<br><img src="https://img.kukmoon.com/2024-06-22-13-44-04.png" alt="2024-06-22-13-44-04"></p><p>忽略告警，就可以正常访问<a href="https://blog.kukmoon.com">本博</a>了。。由于没有配置 SSL 证书，因此，尽管 http 跳转到 https，但是<a href="https://blog.kukmoon.com">本博</a>依然处于未加密状态。<br><img src="https://img.kukmoon.com/2024-06-22-13-45-39.png" alt="2024-06-22-13-45-39"></p><p>但是，腾讯云 COS 的另一个官方文档<sup id="fnref:9" class="footnote-ref"><a href="#fn:9" rel="footnote"><span class="hint--top hint--rounded" aria-label="[开启自定义源站域名](https://cloud.tencent.com/document/product/436/36638)">[9]</span></a></sup>说，腾讯云 COS 香港区域的存储桶支持为自定义域名绑定 SSL 证书了。<br><img src="https://img.kukmoon.com/2024-06-23-13-41-53.png" alt="2024-06-23-13-41-53"></p><p>我经过反复摸索，终于找到了为自定义域名开启 https 的方法。写在了本文 2.3.4 和 2.3.5 节。只要按照上述两节来操作，并且<strong>在操作步骤中一定要等到证书的验证或签发生效后再执行下一步</strong>，就一定能给自定义域名绑定 SSL 证书，从境内线路访问也能开启 https。</p><p>如果浏览器因为证书与域名不匹配而告警，只需要按照本文 2.3.4 和 2.3.5 节重新配置证书即可。注意：<strong>在操作步骤中一定要等到证书的验证或签发生效后再执行下一步</strong>。</p><h2 id="4-图片来源">4 图片来源</h2><p>题图：Image by <a href="https://pixabay.com/users/fotofixautomat-6459159/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755782">Steven Helmis</a> from <a href="https://pixabay.com/cable-technology-red-yellow-plug-2755782/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755782">Pixabay</a></p><p>头图：Image by <a href="https://pixabay.com/users/michasager-6459346/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Micha Sager</a> from <a href="https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2755858">Pixabay</a></p><h2 id="5-参考文献">5 参考文献</h2><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span><a href="https://blog.kukmoon.tech/1abcd8ce26b4/">谷月：Cloudflare Pages 不支持 Hexo 怎么办？</a><a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span><a href="https://cloud.tencent.com/document/product/436/13309">创建存储桶</a><a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:3" class="footnote-text"><span><a href="https://werty.cn/2019/06/hexo/%E8%85%BE%E8%AE%AF%E4%BA%91COS%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E9%83%A8%E7%BD%B2hexo%E5%8D%9A%E5%AE%A2%E5%B9%B6%E5%AE%9E%E7%8E%B0%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2/">Wertycn: 一键部署hexo博客到腾讯云COS对象存储 </a><a href="#fnref:3" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:4" class="footnote-text"><span><a href="https://cloud.tencent.com/document/product/436/14984">设置静态网站</a><a href="#fnref:4" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:5" class="footnote-text"><span><a href="https://luotianyi.vc/6185.html">Luminous：【CloudFlare】官方免费CNAME接入教程</a><a href="#fnref:5" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:6" class="footnote-text"><span><a href="https://cloud.tencent.com/document/product/436/36638">开启自定义源站域名</a><a href="#fnref:6" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:7" class="footnote-text"><span><a href="https://blog.kukmoon.tech/7dc752917138/">谷月： 用 GitHub Actions 把博客部署到腾讯云 COS</a><a href="#fnref:7" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:8" class="footnote-text"><span><a href="https://cloud.tencent.com/document/product/436/56559">自定义源站域名</a><a href="#fnref:8" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:9" class="footnote-text"><span><a href="https://cloud.tencent.com/document/product/436/36638">开启自定义源站域名</a><a href="#fnref:9" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
    
    
    <summary type="html">把我博客的镜像分别部署到腾讯云 COS 和 Cloudflare Pages，在 DNSPod 设置双线解析，境内线路解析到前者，境外线路解析到后者。</summary>
    
    
    
    <category term="IT技术" scheme="https://blog.kukmoon.com/categories/IT%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="Hexo" scheme="https://blog.kukmoon.com/tags/Hexo/"/>
    
    <category term="博客" scheme="https://blog.kukmoon.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="对象存储" scheme="https://blog.kukmoon.com/tags/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8/"/>
    
  </entry>
  
</feed>
