<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Mason's Blog</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/</link><description>Recent content in Posts on Mason's Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 26 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://2e1a95c2.masonblog-b7a.pages.dev/post/index.xml" rel="self" type="application/rss+xml"/><item><title>借助 AI，我做了一个各省假期政策查询网站</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260426/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260426/</guid><description>我是如何借助 Vibe Coding，用一个周末做出了这个各省假期政策查询网站的。</description><content:encoded><![CDATA[<h2 id="起心动念一个法学生的不务正业">起心动念：一个法学生的&quot;不务正业&quot;</h2>
<p>作为一名公司律师，我每天打交道最多的就是各种法规条文，以及来咨询各种法律条文的亲戚朋友。其中一个最常被问到的问题，就是各种劳动法规。尤其是各地假期政策，比如婚假怎么请，产假有多长……这些是每个人都会遇到的问题。</p>
<p>前段时间，我有个朋友跳槽到一家深圳的公司，问我：&ldquo;深圳的陪产假到底是几天？网上查的乱七八糟的。&ldquo;我翻了一圈，发现确实如此。国家层面有一套规定，各省又有各自补充的地方规定，信息散落在各级人社厅的官网、政府公报、地方性法规里，没有一个能一站式对比查看的地方。</p>
<p>我当时就想：要是有一个网站，选一个省份，所有假期政策一目了然，中央规定和地方特别规定并列展示，每条规则还附上法律出处，那该多好。</p>
<p>然后我脑子里蹦出另一个念头——<strong>我为什么不自己做一个呢？</strong></p>
<p>放在以前，这个念头冒出来三秒钟就会被我自己摁回去。我不会写前端，不会画地图，不知道怎么部署网站。但最近这一年，情况变了。</p>
<h2 id="当法学撞上-vibe-coding">当法学撞上 Vibe Coding</h2>
<p>先聊聊什么是 Vibe Coding。这个词是 Andrej Karpathy 在 2025 年初提出来的，大意是：你不再需要逐行手写代码，而是用自然语言描述你想要什么，AI 帮你写。你要做的不是&quot;编程&rdquo;，而是&quot;指挥&rdquo;。<strong>你负责想法和品位，AI 负责执行。</strong></p>
<p>我刚接触 Vibe Coding 的时候，也经历过一段迷茫期。看别人用 Cursor、用 Claude Code 三下五除二搞出一个项目，自己上去一试，发现根本不是那么回事。AI 确实能写代码，但写出来的东西经常有这样那样的问题：组件渲染不出来、类型报错、样式错乱、路由不对……</p>
<p>后来我慢慢悟出来一个道理：<strong>Vibe Coding 不是&quot;不用动脑子&quot;，而是&quot;换一种方式动脑子&quot;。</strong> 你不能真的完全放手，你得学会审阅代码、提出精准的修改指令、在 AI 卡壳的时候指出方向。某种意义上，这和 review 一篇法学论文没什么区别——你不是从头到尾自己写每一个字，但你必须判断哪里有问题、该怎么改。</p>
<p>而我的法律背景，在这个项目里扮演了一个意想不到的角色。</p>
<h2 id="法律思维如何重塑我的开发流程">法律思维如何重塑我的开发流程</h2>
<p>法学的核心训练是什么？如果只让我说一点，那就是<strong>体系化的分类与归入</strong>。面对一个案件，你要做的第一件事不是拍脑袋下结论，而是把事实拆解成若干个法律要件，逐一检视，最后得出结论。</p>
<p>这套思维方式，在我做这个假期政策查询网站的时候，天然地映射到了数据结构的搭建上。</p>
<p>假期政策说白了，就是一个多层级的规则体系：</p>
<ul>
<li><strong>第一层，国家法定基准</strong>。比如产假 98 天、婚假 3 天，这是写在《女职工劳动保护特别规定》和《人口与计划生育法》里的，全国通用。</li>
<li><strong>第二层，各省地方补充规定</strong>。比如上海在 98 天基础上再加 30 天产假，广东的陪产假是 15 天，少数民族自治地方还有特殊政策。</li>
<li><strong>第三层，兜底规则</strong>。如果地方没有特别规定，就自动沿用中央标准。</li>
</ul>
<p>这个三层结构，我用法学里&quot;一般法与特别法&quot;的关系来理解：特别法优先于一般法，特别法没有规定的，适用一般法。这恰恰就是代码里 <code>mergePolicy()</code> 函数的核心逻辑——先加载中央基准数据，再用各省的覆盖字段去 merge，本地有的覆盖中央，本地没有的 fallback 到中央。</p>
<p>所以当 AI 问我要怎么设计数据结构的时候，我几乎没有犹豫就画出了这个 YAML schema：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">婚姻假</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">天数</span>: <span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">适用条件</span>: <span style="color:#ae81ff">依法办理结婚登记的夫妻</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">工资待遇</span>: <span style="color:#ae81ff">正常发放</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">法律依据</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">名称</span>: <span style="color:#ae81ff">国家劳动总局、财政部关于国营企业职工请婚丧假和路程假问题的通知</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">条款</span>: <span style="color:#ae81ff">第一条</span>
</span></span></code></pre></div><p>然后在各省的文件里，只写和中央不同的部分。比如江苏：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">婚姻假</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">天数</span>: <span style="color:#ae81ff">13</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">法律依据</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">名称</span>: <span style="color:#ae81ff">江苏省人口与计划生育条例</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">条款</span>: <span style="color:#ae81ff">第二十七条</span>
</span></span></code></pre></div><p>这个设计思路，法学圈的人一眼就能看出来是&quot;特别法优于一般法&quot;的逻辑，但你要让我从头手写代码实现这个 merge 逻辑，放一年前的我绝对写不出来。现在呢？我把思路描述给 AI，半分钟代码就出来了，而且类型检查全过。</p>
<p>Zod 数据校验也是同样的道理。法律讲究&quot;形式要件&quot;，合同缺了某个必要条款就无效。映射到项目里，就是数据文件必须有严格的 schema 验证——<code>central.yaml</code> 必须包含全部 7 类假期，省份文件里每个假期必须包含&quot;天数&quot;字段，法律依据不能为空。我把这些约束用自然语言描述给 AI，它生成了一套 Zod schema，build 之前自动跑一遍验证脚本，任何一个省份的 YAML 格式不对，整个 CI 直接报错。</p>
<p>说起来有点好笑，我的导师要是知道我拿法律方法论去&quot;调教&quot; AI 写代码，不知道会怎么想。但说实话，<strong>这种跨学科的思维迁移，恰恰是 Vibe Coding 时代最有意思的部分</strong>——你不需要是一个科班出身的软件工程师，但你需要有一套成体系的思考框架，不管这套框架是来自法律、医学、建筑还是音乐。</p>
<h2 id="从想法到产品一个周末的构建记录">从想法到产品：一个周末的构建记录</h2>
<p>想法有了，方法论也理顺了，接下来就是动手。</p>
<p>整个项目的技术栈选择，我基本遵循一个原则：<strong>选最主流、AI 最熟悉的方案</strong>。这不是炫技的时候，我是拿来主义的信徒——Next.js + Tailwind CSS + shadcn/ui，这套组合是 AI 训练数据里最充分的技术栈，意味着 AI 出错的概率最低。</p>
<h3 id="数据层31-个省的假期政策汇编">数据层：31 个省的假期政策汇编</h3>
<p>这其实是最耗时的部分。代码可以靠 AI 生成，但内容不行。</p>
<p>我花了差不多两个完整的周末，逐一翻查了 31 个省级行政区的卫健委、人社厅官网，以及各地方人大发布的计划生育条例修正案。每一条规则我都在旁边标注了原文件的名称、条款号和官方链接。有些省份的规定藏得特别深——比如某个自治区的陪产假规定，写在一份 2016 年的《关于修改〈XX 自治区人口与计划生育条例〉的决定》里，要顺着修正案的指示往前翻原文才能拼出完整的规则。</p>
<p>这件事 AI 帮不了忙，至少现在帮不了。它可能会&quot;编造&quot;一些看起来很像真的法条，但在这种事上，一个法律人的底线还是有的——<strong>数据必须可溯源</strong>。</p>
<p>所有整理好的数据，我按照 <code>XX-pinyin.yaml</code> 的命名规范放在 <code>data/provinces/</code> 目录里，一共 31 个文件，加上一个 <code>central.yaml</code> 做基准。</p>
<h3 id="前端svg-中国地图的三天折磨">前端：SVG 中国地图的三天折磨</h3>
<p>整个项目里最让我头疼的部分，是中国地图。</p>
<p>一开始我想得很简单：找个现成的 ECharts 图表库，把中国地图渲染出来就完了。结果发现 ECharts 的中国地图用的是 GeoJSON 格式，数据量巨大不说，暗黑模式下的颜色适配也很麻烦。AI 建议我用原生 SVG，但网上找到的中国地图 SVG 大多质量堪忧——边界线粗糙，有些省份的路径数据甚至不完整。</p>
<p>最后我采取了一个折中方案：让 AI 帮我生成一个精确的 SVG 路径数据，存储为 JSON 文件，每个省份一条 path，包含 viewBox、路径坐标和省份中心的经纬度。然后自己写了一个 React 组件来做交互。</p>
<p>这里有个细节值得一提：<strong>小省份的点击区域</strong>。北京、天津、上海这些直辖市在地图上实在太小了，鼠标根本点不到。我当时跟 AI 反复来回了好几轮，最后想到一个办法——在路径外面套一层不可见的圆形点击热区，半径放大 3 倍，覆盖周围的空白区域。这个方案 AI 没有主动提出来，但当我描述给它之后，它很快就实现了。</p>
<p>地图的热力图配色也调了很久。我定义了一个&quot;假期热度值&quot;，把婚假天数、产假天数和陪产假天数相加，然后分成四档：</p>
<ul>
<li><strong>绿色（≥200）</strong>：假期福利比较到位的省份</li>
<li><strong>黄色（190-199）</strong>：中上水平</li>
<li><strong>红色（180-189）</strong>：中等偏下</li>
<li><strong>深红色（&lt;180）</strong>：假期天数较少的地方</li>
</ul>
<p>说实话，这个&quot;热度值&quot;的算法相当粗糙，但我就是想给用户一个直观的视觉感受——一眼扫过去，大致知道哪个&quot;颜色区域&quot;假期多一些。未来如果有时间，我打算引入更多权重因素，比如育儿假、探亲假也纳入计算。</p>
<h3 id="每个省的详情页七类假期的卡片式展示">每个省的详情页：七类假期的卡片式展示</h3>
<p>省份详情页的设计灵感来自我手机上的健康 App 仪表盘——每一类假期是一张独立的信息卡片，顶部显示天数，中间是适用条件和工资待遇，底部折叠了资格认定和注意事项的详细说明。</p>
<p>最有价值的设计是 <strong>&ldquo;来源标签&quot;系统</strong>。每条规则右侧都会有一个小标签：</p>
<ul>
<li><strong>&ldquo;中央规定&rdquo;</strong>（灰色标签）：表示这条来自国家层面的法律法规</li>
<li><strong>&ldquo;本地特别规定&rdquo;</strong>（蓝色标签）：表示这是该省在中央基础上额外制定的政策</li>
</ul>
<p>两者并列展示，用户一眼就能分辨出哪些是国家给的、哪些是本省额外补充的。</p>
<h3 id="部署github-actions--github-pages零成本上线">部署：GitHub Actions + GitHub Pages，零成本上线</h3>
<p>部署部分反而是整个项目最简单的一环。</p>
<p>Next.js 有个特性叫 Static Export，简单说就是把整个网站预渲染成纯静态的 HTML + CSS + JS 文件，不需要服务器。我只需要在 <code>next.config.mjs</code> 里加一行 <code>output: &quot;export&quot;</code>，然后配置 GitHub Actions 在每次 push 代码到 main 分支的时候自动 <code>npm run build</code>，把产物推到 GitHub Pages 上。</p>
<p>CI 流水线也很干净：</p>
<ol>
<li>Checkout 代码</li>
<li><code>npm ci</code> 装依赖</li>
<li><code>npm run validate-data</code> 校验所有 YAML 数据文件的格式</li>
<li><code>npm run typecheck</code> TypeScript 类型检查</li>
<li><code>npm run build</code> 构建静态产物</li>
<li>部署到 GitHub Pages</li>
</ol>
<p>从 push 代码到网站更新，全自动，整个过程不到两分钟。</p>
<p>最终线上地址：<a href="https://masonblog.github.io/HolidayGO-CN">masonblog.github.io/HolidayGO-CN</a></p>
<h2 id="写在最后ai-时代创意才是真正的稀缺资源">写在最后：AI 时代，创意才是真正的稀缺资源</h2>
<p>这个项目做完，我最大的感触不是&quot;AI 好厉害&rdquo;，而是——<strong>在 AI 时代，有想法的人太少了，能把想法落地的人更少。</strong></p>
<p>你不信的话，想想看：全中国每年有多少法学生、律师、HR 从业者，每天都在查假期政策，查完之后该干嘛干嘛。有多少人会冒出&quot;我为什么不做一个查询工具&quot;这个念头？又有多少人冒出了这个念头之后，真的打开电脑，开始做了？</p>
<p>AI 拉平了技术实现的鸿沟，但没有拉平&quot;想不想做&quot;和&quot;能不能坚持做完&quot;的鸿沟。</p>
<p>我不是什么编程大神。在开始这个项目之前，我连 Next.js 的路由是怎么写的都不知道。但现在呢？一个可用的产品摆在这里，31 个省的数据覆盖齐全，有暗黑模式、有交互地图、有来源溯源，CI/CD 全自动部署。这些东西，<strong>放在两年前，是我一个文科生想都不敢想的事情</strong>。而在 2026 年，我用业余时间，借助 AI，做到了。</p>
<p>所以我想说的是：如果你的脑子里一直有一个&quot;要是能有个什么东西就好了&quot;的想法，别犹豫，现在就动手。不需要等到你&quot;学会了编程&quot;才开始——那个时代已经过去了。你只需要：</p>
<ul>
<li><strong>一个清晰的想法</strong>（这是你最独特的资产，AI 抢不走）</li>
<li><strong>一套成体系的思维框架</strong>（不管来自哪个学科）</li>
<li><strong>愿意花时间去打磨细节的耐心</strong>（AI 能帮你写代码，但打磨产品只能靠你自己）</li>
</ul>
<p>剩下的，交给 AI 和时间。</p>
<hr>
<p><em>这个项目的所有代码开源在 GitHub：<a href="https://github.com/masonblog/HolidayGO-CN">masonblog/HolidayGO-CN</a>。如果你对假期政策数据有补充或纠错，欢迎提 PR。</em></p>
<p><em>如果你也是一个非技术背景、但用 AI 做出了自己作品的&quot;野生开发者&quot;，欢迎在评论区聊聊你的故事——我很想听听。</em></p>
]]></content:encoded></item><item><title>Claude Code 源代码泄露：一个 .npmignore 引发的连锁风暴</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260406/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260406/</guid><description>深度解析 2026 年 3 月 Anthropic 意外泄露 Claude Code 全部源代码的事件始末。</description><content:encoded><![CDATA[<p>2026 年 3 月 31 日，AI 圈迎来了一场意想不到的&quot;愚人节前夕大礼&quot;：Anthropic 旗下明星产品 <strong>Claude Code</strong> 的全部源代码，因一个打包失误意外流向了互联网。</p>
<p>这不是黑客攻击，不是内鬼泄密，而是有人忘记在 <code>.npmignore</code> 里加了一行 <code>*.map</code>。</p>
<p>就这样，51 万行 TypeScript 代码、44 个隐藏功能开关、以及一个叫做 KAIROS 的神秘&quot;后台自主代理&quot;，在几小时内暴露在所有人面前。</p>
<h2 id="事件经过一个-map-文件引发的雪崩">事件经过：一个 .map 文件引发的雪崩</h2>
<h3 id="泄露是如何发生的">泄露是如何发生的？</h3>
<p>2026 年 3 月 31 日，Anthropic 在 npm 上发布了 <code>@anthropic-ai/claude-code</code> 的 <strong>2.1.88 版本</strong>。这次更新本是例行维护，但却附带了一个巨大的&quot;彩蛋&quot;——一个 <strong>59.8 MB 的 JavaScript Source Map 文件</strong>（<code>.map</code> 后缀）。</p>
<p>Source Map 是开发者用于调试压缩/混淆代码的工具，它能将编译后的代码映射回原始的 TypeScript 源码。正是这个本应只存在于内部的调试文件，被意外打入了公开发布的 npm 包里。</p>
<p>更关键的是，这个 <code>.map</code> 文件还指向了一个 Anthropic 自家云存储上的 ZIP 压缩包，里面存放着<strong>完整的源代码仓库</strong>。所有人只需要顺着这条线索，就能下载到全部代码。</p>
<p><strong>根本原因</strong>：有人忘记在 <code>.npmignore</code> 文件中添加 <code>*.map</code> 规则，导致 Source Map 文件随包一起发布。</p>
<h3 id="传播有多快">传播有多快？</h3>
<p>代码在公开后数小时内便被开发者社区察觉，随即被备份到 GitHub 上。根据 Layer5 的统计，相关仓库的 Fork 数量迅速突破 <strong>41,500 次</strong>，一度成为 <strong>GitHub 历史上增长最快的仓库</strong>。</p>
<p>Anthropic 很快确认了这一事件，但表示这只是一次&quot;发布打包失误&quot;，没有泄露用户数据或凭证信息。</p>
<h2 id="泄露的内容512000-行代码里藏着什么">泄露的内容：512,000 行代码里藏着什么？</h2>
<p>源代码共包含 <strong>1,906 个 TypeScript 文件</strong>，整个 AI 圈的开发者和研究者们开始像考古学家一样，在代码里挖掘 Anthropic 从未公开过的秘密。</p>
<h3 id="秘密一kairos--始终在线的自主-ai-代理">秘密一：KAIROS —— 始终在线的自主 AI 代理</h3>
<p>这是泄露内容中最受关注的发现之一。代码中一个名为 <strong>KAIROS</strong> 的功能标志被提及超过 <strong>150 次</strong>。</p>
<p>KAIROS 来自古希腊语，意为&quot;恰当的时机&quot;。从代码逻辑来看，它代表着 Claude Code 的一次重大范式转变：<strong>从被动响应变为主动的后台自主守护进程（Daemon）</strong>。</p>
<p>具体来说，KAIROS 模式包含一个叫做 <strong>autoDream</strong> 的子机制：当用户处于空闲状态时，Claude 会在后台自动进行&quot;记忆整合&quot;，将分散的观察合并、消除逻辑矛盾，并将模糊的认知转化为具体的知识。</p>
<p>这本质上是让 AI 拥有了一种<strong>持续学习和自我优化</strong>的能力——不仅是在你主动使用时，而是随时随地都在运转。</p>
<h3 id="秘密二buddy--一只赛博电子宠物">秘密二：BUDDY —— 一只赛博电子宠物</h3>
<p>是的，你没看错。代码里藏着一个完整的<strong>电子宠物系统</strong>，叫做 <strong>BUDDY</strong>。</p>
<p>它有：</p>
<ul>
<li><strong>18 个物种</strong>可供选择</li>
<li><strong>稀有度分级</strong>：普通（60%）→ 稀有 → 史诗 → 传说（1%）</li>
<li><strong>闪光变体</strong>（类似宝可梦的色违）</li>
<li><strong>专属属性值</strong>，包括 <code>DEBUGGING</code>（调试力）、<code>PATIENCE</code>（耐心）、<code>CHAOS</code>（混乱值）、<code>WISDOM</code>（智慧）和 <code>SNARK</code>（毒舌度）</li>
</ul>
<p>根据代码注释，BUDDY 原本计划作为<strong>愚人节彩蛋</strong>于 4 月 1 日悄悄上线预告，并在 5 月正式发布。结果，在 3 月 31 日就被这次意外泄露提前&quot;剧透&quot;了——时机不可谓不讽刺。</p>
<h3 id="秘密三隐身模式--anthropic-员工的马甲">秘密三：隐身模式 —— Anthropic 员工的&quot;马甲&quot;</h3>
<p>代码中还发现了一个被称为&quot;隐身模式&quot;（Stealth Mode）的功能，其设计目的是<strong>隐藏 Anthropic 员工对开源项目的贡献</strong>。</p>
<p>简单来说，当 Anthropic 工程师使用 Claude Code 向开源社区提交代码时，该模式会对外屏蔽其 Anthropic 员工的身份。这一发现在开源社区引发了一定的讨论和争议。</p>
<h3 id="秘密四反蒸馏机制--给竞争对手的毒药">秘密四：反蒸馏机制 —— 给竞争对手的&quot;毒药&quot;</h3>
<p>代码中的 <code>ANTI_DISTILLATION_CC</code> 功能标志揭示了一个更具攻击性的策略：<strong>向 API 请求中注入虚假的工具定义</strong>。</p>
<p>其目的在于污染那些监听 API 流量、试图通过&quot;知识蒸馏&quot;来学习和复制 Claude 能力的竞争对手的训练数据。此外，代码还会对 AI 的推理过程进行摘要并附上加密签名，使得窃听者只能获取摘要，而非完整的思维链输出。</p>
<h2 id="安全警告趁火打劫的黑客">安全警告：趁火打劫的黑客</h2>
<p>意外泄露事件本身危害有限，但随之而来的安全风险不可小觑。</p>
<h3 id="axios-npm-遭投毒北朝鲜黑客的精准狙击">Axios npm 遭投毒：北朝鲜黑客的精准狙击</h3>
<p>就在同一天（3 月 31 日），黑客攻陷了流行 HTTP 库 <strong>Axios 的 npm 账号</strong>，发布了两个恶意版本（<code>1.14.1</code> 和 <code>0.30.4</code>）。这些版本通过一个名为 <code>plain-crypto-js</code> 的隐藏依赖，植入了一个<strong>跨平台远程访问木马（RAT）</strong>。</p>
<p>恶意版本在被 npm 下架前存活了约 <strong>2-3 小时</strong>。</p>
<p>Google 威胁情报团队将此次攻击归因于 <strong>UNC1069</strong>——一个具有朝鲜背景的、以经济利益为驱动的威胁行为者，所使用的恶意软件为 <strong>WAVESHAPER.V2</strong>。</p>
<p><strong>高危时间窗口</strong>：如果你在 <strong>3 月 31 日 00:21 UTC 至 03:29 UTC</strong> 之间通过 npm 安装或更新了 Claude Code，你的机器可能已被植入恶意代码。</p>
<h3 id="github-上的假冒仓库">GitHub 上的假冒仓库</h3>
<p>除了 npm 投毒，威胁行为者还在 GitHub 上散布了伪装成&quot;Claude Code 源代码镜像&quot;的恶意仓库。这些仓库诱骗用户运行一个 Rust 编写的投放程序，最终部署 <strong>Vidar Stealer</strong>（信息窃取木马）和 <strong>GhostSocks</strong>（代理恶意软件）。</p>
<h3 id="应急自查步骤">应急自查步骤</h3>
<p>如果你是开发者，请立即执行以下检查：</p>
<ol>
<li>检查你的项目 <code>lockfile</code>（<code>package-lock.json</code> 或 <code>yarn.lock</code>），查找 <code>axios</code> 版本 <code>1.14.1</code> 或 <code>0.30.4</code>。</li>
<li>检查是否存在 <code>plain-crypto-js</code> 依赖项。</li>
<li>如果发现上述任一情况，<strong>立即将该主机视为已完全沦陷</strong>：轮换所有密钥和凭证，并考虑重装操作系统。</li>
</ol>
<h2 id="影响与反思">影响与反思</h2>
<h3 id="对-anthropic-的影响">对 Anthropic 的影响</h3>
<p>这次事件对 Anthropic 的直接损失是<strong>竞争情报的泄露</strong>。KAIROS、反蒸馏机制等未发布的战略功能，已被竞争对手和研究者提前看到。</p>
<p>但从另一个角度看，Anthropic 的处理方式——快速承认、如实说明原因——在一定程度上维护了公众信任。</p>
<h3 id="对供应链安全的警示">对供应链安全的警示</h3>
<p>这次事件是一个关于 <strong>软件供应链安全</strong> 的经典案例：</p>
<ul>
<li><strong>开发侧</strong>：一个被遗忘的打包规则（<code>.npmignore</code>）可以造成灾难性的信息泄露。</li>
<li><strong>攻击侧</strong>：黑客能够以惊人的速度（同日）利用高关注度事件实施供应链攻击。</li>
<li><strong>用户侧</strong>：在重大事件发酵期间，来自&quot;官方渠道&quot;之外的任何下载都极度危险。</li>
</ul>
<p>这提醒每一个维护开源项目的团队：<strong>发布流程的审计和自动化检查，与代码本身的质量同等重要。</strong></p>
<h2 id="结语">结语</h2>
<p>Claude Code 源代码泄露事件，是 2026 年 AI 领域最戏剧性的事故之一。它以一种意想不到的方式，让公众得以一窥顶尖 AI 工具背后的工程逻辑与产品野心——从重塑人机交互范式的 KAIROS，到充满极客趣味的电子宠物 BUDDY。</p>
<p>然而，伴随着这场意外透明化而来的，是供应链攻击的真实威胁。它再次提醒我们：在这个软件高度依赖开源生态的时代，安全从来不只是代码里的事，更是发布流程、依赖管理和应急响应能力的综合体现。</p>
<hr>
<p><strong>延伸阅读：</strong></p>
<ul>
<li><a href="https://venturebeat.com/technology/claude-codes-source-code-appears-to-have-leaked-heres-what-we-know">Claude Code 源代码泄露事件详情 - VentureBeat</a></li>
<li><a href="https://thehackernews.com/2026/04/claude-code-tleaked-via-npm-packaging.html">Anthropic 确认 npm 打包失误 - The Hacker News</a></li>
<li><a href="https://decodethefuture.org/en/axios-npm-attack-rat-claude-code/">Axios npm 投毒与 RAT 事件 - Decode the Future</a></li>
<li><a href="https://www.theregister.com/2026/04/02/trojanized_claude_code_leak_github/">伪造 Claude Code 下载传播恶意软件 - The Register</a></li>
<li><a href="https://wavespeed.ai/blog/posts/claude-code-leaked-source-hidden-features/">KAIROS 与隐藏功能完整分析 - WaveSpeed AI</a></li>
<li><a href="https://coder.com/blog/what-the-claude-code-leak-tells-us-about-supply-chain-security">供应链安全的启示 - Coder Blog</a></li>
</ul>
]]></content:encoded></item><item><title>高铭暄逝世，中国现代刑法学论争</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260310/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260310/</guid><description>缅怀中国刑法学泰斗高铭暄，并深入剖析四要件与三阶层这场影响深远的中国刑法学论争。</description><content:encoded><![CDATA[<p>2026年2月26日，当代著名法学家、中国刑法学&quot;泰斗&quot;<strong>高铭暄</strong>，因病逝世，享年98岁。</p>
<p>作为新中国培养的第一代法学家，高铭暄的一生堪称<strong>中国刑法的活化石</strong>。他是<strong>唯一一位全程参与新中国第一部刑法制定的学者</strong>；他是<strong>新中国第一位刑法专业的博士生导师</strong>；他撰写了<strong>改革开放后我国第一部法学专著</strong>，并主编了<strong>第一部全国统编的刑法学教科书</strong>。毫不夸张地说，今天中国大地上每一份刑事判决书的背后，都有高铭暄奠定的理论基石。</p>
<p>然而，科学的规律就在于不断地反思与超越，法学自然也不例外。在缅怀高铭暄历史功绩的今天，我们也正处于中国刑法学经历<strong>深刻转型</strong>的节点。近年来，中国刑法学界围绕着 <strong>&ldquo;四要件&quot;与&quot;三阶层&rdquo;</strong> 两个犯罪构成体系，展开了一场旷日持久、影响深远的学术论争。这场论争，表面上看是学者们在书斋里的争辩，但其底层逻辑，却是<strong>国家刑罚权如何行使，以及每一个普通公民的权利如何得到保障</strong>的宏大命题。</p>
<h2 id="高铭暄一部中国刑法的活化石">高铭暄：一部中国刑法的活化石</h2>
<p>要理解高铭暄对中国刑法的贡献，我们要把目光投向1928年5月的浙江省玉环县，一个叫鲜叠的小渔村。高铭暄就出生在这里的一个<strong>书香门第与法律世家</strong>。在国民党统治时期，他的父亲曾历任杭州地方法院推事（相当于现在的法官），以及浙江高等法院审判员，他的叔叔和大哥也都从事法律相关的工作。</p>
<p>在这种浓厚的家学渊源熏陶下，高铭暄自幼便对法律产生了强烈的向往。9岁那年，抗日战争全面爆发，高铭暄的父亲不愿为日本侵略者卖命，愤然弃官回乡，赋闲在家，并在闲暇之余严格督促高铭暄读书。初中毕业后，他考入当时全国闻名的温州中学。当时的温中校长，著名的教育家金嵘轩举办全校征文大赛，题目是《如何建设新温中》，年少的高铭暄凭借扎实的文字功底一举夺冠，扬名全校。</p>
<p><img alt="高铭暄年轻时求学期间的意境再现" loading="lazy" src="/images/blog20260310/young_scholar.png"></p>
<p>1947年高中毕业时，高铭暄展现出极高天赋，他同时被<strong>复旦大学、武汉大学和浙江大学</strong>录取。他选择了浙江大学法律系，随后因时代变迁和院校调整，他又转入了<strong>北京大学法律系</strong>，并在1951年升入<strong>中国人民大学</strong>法律系刑法研究生班深造。在人大，他遇到了对他一生影响深远的苏联法学专家<strong>贝斯特洛娃、达马亨</strong>等人，系统地接受了刑法学的专业训练。1953年，高铭暄以全优的成绩毕业并留校任教，从此开启了他<strong>躬耕教坛七十余载</strong>的传奇生涯。</p>
<h2 id="漫漫立法路从第22稿到第38稿">漫漫立法路：从第22稿到第38稿</h2>
<p>新中国成立前夕，基于彻底摧毁旧国家机器的政治考量，中央作出决定，<strong>废除国民党政府&quot;六法全书&quot;</strong>，另起炉灶建设社会主义法制。这一破旧立新的决定，导致在建国初期的一段时间里，国家在惩治犯罪时处于 <strong>&ldquo;无法可依&quot;的真空状态</strong>，司法机关办理案件往往单凭政策，或者依赖《惩治反革命条例》、《惩治贪污条例》等零星的单行法规。</p>
<p>1954年9月，新中国第一部 <strong>《宪法》<strong>正式颁布，制定一部统一的《刑法》终于被提上了日程。同年10月，全国人大常委会办公厅组建了</strong>刑法起草班子</strong>，受中央书记处的直接领导。当时，刚刚留校任教一年的高铭暄，凭借扎实的学术功底，被抽调参与起草工作。这一年，他<strong>年仅26岁</strong>，是整个起草小组中<strong>最年轻的一员</strong>。</p>
<p>那时的他或许未曾料到，这项工作，他<strong>一干就是25年</strong>。</p>
<p>刑法的起草过程，是一场常人难以想象的漫长跋涉。起草班子夜以继日地工作，广泛收集案例、研究国内外立法，到1957年6月写出了<strong>第22稿</strong>，又在1963年10月，打磨出了<strong>第33稿</strong>。这个第33稿甚至已经通过了<strong>中共中央政治局常委会的审查同意</strong>，眼看就要正式完成。</p>
<p>然而，随之而来的 <strong>&ldquo;文化大革命&rdquo;</strong>，让中国的法制建设陷入了<strong>长达十余年的停滞</strong>。起草工作被迫全部中断，中国人民大学甚至一度停止办学，高铭暄本人也经历了下放劳动，后被分配到北京医学院，一待就是八年。在这漫长而苦闷的岁月里，高铭暄<strong>始终保存着当年起草刑法的各种资料文献</strong>，等待着法治春天的再次来临。</p>
<p>终于，1978年10月，随着<strong>中共十一届三中全会</strong>的临近，国家明确提出了 <strong>&ldquo;有法可依、有法必依、执法必严、违法必究&rdquo;<strong>的原则，刑法立法迎来了 <strong>&ldquo;第三次上马&rdquo;</strong>。起草班子在1963年第33稿的基础上迅速重启修订。经过反复推敲和激烈争论，最终形成了历史性的</strong>第38稿</strong>。</p>
<p><img alt="1970年代刑法起草工作的意境再现" loading="lazy" src="/images/blog20260310/criminal_law_drafting.webp"></p>
<p><strong>1979年7月1日</strong>，第五届全国人大第二次会议表决通过了 <strong>《中华人民共和国刑法》</strong>。高铭暄百感交集，他后来回忆说，这<strong>结束了新中国三十年没有刑法的历史</strong>，也宣告了&quot;不引用法律条文的刑事司法文书一去不复返了&rdquo;。从当初26岁的青年学者，到此时已是两鬓斑白的中年汉子，高铭暄把人生最宝贵的年华，全部倾注在了这38稿的字里行间。</p>
<p><img alt="1979年刑法典的意境再现" loading="lazy" src="/images/blog20260310/criminal_law_book.png"></p>
<p>为了留下这份珍贵的历史记忆，高铭暄在1981年出版了 <strong>《刑法的孕育和诞生》<strong>一书。这不仅详细记录了1979年刑法从第22稿到第38稿定稿阶段的争议与修改过程，更是</strong>改革开放后我国第一部法学学术专著</strong>，出版不到一个月便被抢购一空。</p>
<h2 id="四要件理论的确立">&ldquo;四要件&quot;理论的确立</h2>
<p>有了刑法，面临的下一个问题就是：司法机关在具体的办案中，到底应该用什么样的逻辑去认定一个人是否构成了犯罪？这就引入了刑法学中最核心、也是争议最大的理论——<strong>犯罪构成理论</strong>。</p>
<p>正如我们前面所说，建国初期废除了旧法统，新中国的法学教育走上了一条 <strong>&ldquo;以苏俄为师&rdquo;<strong>的道路。20世纪50年代初，以贝斯特洛娃为代表的苏联专家来到中国政法院校授课，他们带来的，正是当时在苏联占据统治地位的</strong>&ldquo;四要件&quot;理论</strong>。</p>
<p>为了让大家在当时的百废待兴中迅速掌握定罪规律，1957年，高铭暄所在的中国人民大学法律系刑法教研室集体撰写了 <strong>《刑法总则讲义》</strong>，重点引介了&quot;四要件&quot;理论，标志着这套学说在中国的落地。到了1982年，为了适应恢复高考和法制重建的需求，司法部组织全国著名学者编写全国统编教材。高铭暄与武汉大学的<strong>马克昌</strong>教授（当时学术界并称 <strong>&ldquo;北高南马&rdquo;</strong>）合作主编了新中国第一部**《刑法学》统编教材**。这本教材总发行量接近<strong>200万册</strong>，彻底将&quot;四要件&quot;理论确立为中国刑法学<strong>不可动摇的基本框架</strong>。</p>
<p>什么是&quot;四要件&quot;理论？该理论认为，要判定一个行为构成犯罪，必须<strong>同时具备四个像拼图一样的要件</strong>：</p>
<p><img alt="四要件与三阶层两种犯罪构成逻辑的意象对比" loading="lazy" src="/images/blog20260310/four_vs_three_framework.webp"></p>
<p><strong>第一，犯罪客体</strong>：也就是这个行为侵犯了什么样的社会关系。比如杀人犯侵犯了他人的生命权，盗窃犯侵犯了财产权。</p>
<p><strong>第二，犯罪客观方面</strong>：这指的是犯罪活动在客观外在的表现。包括行为人做了什么、造成了什么后果，以及行为和结果之间有没有因果关系。</p>
<p><strong>第三，犯罪主体</strong>：也就是实施这个行为的人，是不是达到了法定的刑事责任年龄，是不是精神正常。</p>
<p><strong>第四，犯罪主观方面</strong>：这指的是行为人做这件事时的心理状态。他是故意的，还是过失的？</p>
<p>在&quot;四要件&quot;理论的逻辑体系下，这四个条件是一种 **&ldquo;一存俱存，一损俱损&rdquo;**的关系。法官在审理案件时，需要在脑海中画一个十字架，把这四个要件一一填入。只有四个条件全部齐备、严丝合缝地拼在一起，才能认定犯罪成立。这种强调 <strong>&ldquo;主客观相统一&rdquo;<strong>的思维模式，直观、清晰、极易上手。在当时司法人员法律素养普遍不高的历史背景下，&ldquo;四要件&quot;就像是一把极其高效的快刀，为中国司法机关迅速理清案情、准确打击犯罪</strong>立下了汗马功劳</strong>。</p>
<h2 id="从四要件到三阶层一场刑法学界的世纪之争">从&quot;四要件&quot;到&quot;三阶层&rdquo;：一场刑法学界的世纪之争</h2>
<p>然而，随着1978年改革开放的推进，中国的社会结构、经济模式和思想观念都发生了翻天覆地的变化。原有的计划经济体制逐渐向市场经济转轨，社会矛盾和犯罪形态也变得日益复杂（比如出现了各种新型的经济犯罪、金融犯罪等）。</p>
<p>在这样的背景下，仅仅规定了130个罪名的1979年刑法，开始显得捉襟见肘，难以满足社会发展的需求。从1981年到1996年间，全国人大常委会密集出台了20多个单行刑法和附属刑法规范来&quot;打补丁&rdquo;。直到<strong>1997年</strong>，国家决定对刑法进行<strong>全面、系统的修订</strong>。高铭暄作为立法专家，再次全程参与了这次修法。1997年刑法不仅大幅增加了罪名、调整了刑罚结构，更重要的是，它明文规定了**&ldquo;罪刑法定&rdquo;、&ldquo;适用刑法人人平等&rdquo;、&ldquo;罪责刑相适应&rdquo;<strong>这三大基本原则。高铭暄一生都在坚持和呼吁</strong>&ldquo;罪刑法定&rdquo;——罪名绝不能类推，法无明文规定不为罪**。这一原则的最终确立，标志着<strong>中国刑法真正走向了现代化</strong>，也为中国刑法学走向世界奠定了坚实基础。</p>
<p>立法的完善为刑法学理论的繁荣提供了土壤。进入20世纪90年代，随着中国法学教育的开放，大批中青年学者（如<strong>陈兴良、周光权、张明楷</strong>等）开始远赴德国、日本等传统法制强国深造，并系统地翻译引入了大量<strong>德日刑法学文献</strong>。</p>
<p>这些&quot;新兴学者&quot;们带回了一套全新的定罪逻辑——也就是源于德国的**&ldquo;三阶层&quot;理论**。这套理论主张，在认定犯罪时，法官的思维不能像四要件那样是&quot;平面拼图&rdquo;，而应该像是一个<strong>有着三个严密过滤网的漏斗</strong>。</p>
<p><img alt="学术论争的意境再现" loading="lazy" src="/images/blog20260310/legal_debate.png"></p>
<p>具体来说，&ldquo;三阶层&quot;分为三步：</p>
<blockquote>
<p><strong>第一层，构成要件该当性</strong>：这纯粹是一个事实判断。法官只看行为人的动作和结果，是不是表面上符合刑法条文的描述。比如你拿刀把人捅死了，这就是符合了故意杀人罪的&quot;该当性&rdquo;。</p>
<p><strong>第二层，违法性</strong>：这是对行为的客观价值判断。行为虽然符合法条描述，但是在整体法律秩序下，这种行为有没有正当的理由？如果存在这种正当理由（比如你是为了正当防卫，或者紧急避险），那么你的行为在法律上就是被允许的，自然就不违法。</p>
<p><strong>第三层，有责性</strong>：这是对行为人的主观谴责。如果你的行为符合法条描述，又没有正当理由，法官还要看能不能在道义上谴责你。如果你是一个没有辨认能力的重度精神病人，或者你是在他人的胁迫下干的，那么法律认为你没有&quot;责任&rdquo;，同样不构成犯罪。</p></blockquote>
<p>&ldquo;三阶层&quot;理论的引入，在中国刑法学界无异于投下了一枚深水炸弹。<strong>陈兴良</strong>等学者旗帜鲜明地主张，应当进行 <strong>&ldquo;刑法知识转型&rdquo;</strong>，实现犯罪论体系的 <strong>&ldquo;去苏俄化&rdquo;</strong>，全面拥抱德日阶层理论。他们尖锐地批评四要件体系，认为它<strong>不能明确区分&quot;违法&quot;和&quot;责任&rdquo;</strong>，缺乏递进过滤的逻辑，在面对复杂疑难案件时容易导致无章可循，法官&quot;只能在一种难以名状的感悟中完成生杀予夺的裁决&quot;。</p>
<p>而传统学者阵营则坚决反击。他们认为，四要件在中国经过几十年的司法实践打磨，已经形成了深厚的<strong>路径依赖和制度契合</strong>。如果彻底&quot;另起炉灶&quot;，会导致基层司法人员思想混乱。而且，将人权保障不力的黑锅完全扣在四要件理论头上也是荒谬的。<strong>人权的保障靠的是刑事诉讼程序的公正和具体制度的落实</strong>，而不是单纯玩弄概念游戏。</p>
<p>这场学术交锋在<strong>2009年的国家司法考试</strong>中达到了高潮。当年的司考命题在某些案件的定性判断上，开始明显向&quot;三阶层&quot;的逻辑倾斜，这在法学界引发了巨大的震动与争议，甚至有学者戏称这是刑法学界的**&ldquo;诸神之战&rdquo;**。</p>
<h2 id="四要件-vs-三阶层一场逻辑上的深度剖析">四要件 vs 三阶层：一场逻辑上的深度剖析</h2>
<p>各位看到这里可能会有疑问：四要件和三阶层，不都是把犯罪的条件拆分开来吗？无非一个是四个篮子，一个是三个漏斗，本质上到底有什么区别？为什么那么多顶尖的新生代学者笃定地认为，三阶层在逻辑上更加严密？</p>
<p>为了解答这个硬核的专业问题，我们需要在逻辑层面进行一次深度的剖析。</p>
<p>在处理简单案件时，任何理论都会显得游刃有余。<strong>检验一个理论是否严密，必须把它放在边缘的、极限的疑难案件中去施压</strong>。陈兴良等学者正是通过对极端案例的分析，犀利地指出了<strong>四要件的逻辑硬伤</strong>。</p>
<h3 id="场景一正当防卫的逻辑困境">场景一：正当防卫的逻辑困境</h3>
<p>假设你走在街上，一个歹徒拿刀要杀你，你为了自保，夺过刀把他反杀了。这在法律上叫正当防卫，不构成犯罪。</p>
<p><strong>在四要件看来</strong>，这件事很别扭。因为法官认定你不构成犯罪时，必须解释你缺少了哪个要件。你杀人客观上造成了死亡（有客观方面），你是个正常成年人（有主体），你就是想弄死他来自保（有主观故意）。那到底缺了啥？传统教材只能勉强解释为&quot;排除了社会危害性&quot;，于是硬生生地在四要件的理论大厦旁边，搭了一个**&ldquo;排除犯罪事由&quot;的独栋别墅**，把正当防卫塞了进去。这在<strong>逻辑上是断裂的</strong>。</p>
<p><strong>但在三阶层理论看来</strong>，逻辑如丝般顺滑：你的反杀行为符合杀人的&quot;构成要件&rdquo;（事实成立）；但是到了第二步&quot;违法性&quot;审查时，因为你是在面临不法侵害时正当防卫，这在法律价值上是受鼓励的正当行为，因此<strong>阻却违法</strong>。因为不具有违法性，所以无罪。逻辑闭环，完美解释。</p>
<h3 id="场景二共同犯罪中的教唆犯">场景二：共同犯罪中的教唆犯</h3>
<p>这是另一个最能体现三阶层理论逻辑严密性的经典场景。假设一个成年人张三，教唆一个13岁的未成年人李四去入室盗窃。</p>
<p>在四要件的逻辑下，一个人只有同时满足犯罪客体、客观方面、犯罪主体和主观方面这四个要件，才能被认定犯罪。但是，13岁的李四没有达到法定的刑事责任年龄，所以他缺乏&quot;犯罪主体&quot;这个要件，因而不构成犯罪。问题来了：<strong>如果李四连犯罪都不构成，那张三的&quot;教唆犯&quot;身份依附于谁呢？</strong> 为了给张三定罪，传统理论往往只能绕开共同犯罪，引入&quot;间接正犯&quot;的概念来打补丁，也就是把李四当成张三作案的、不具有自主性的工具，这在理论的自洽性上显得十分局促。因此，在四要件论中，所有的要件都是混在一起来说明社会危害性的，<strong>违法与责任没有区分</strong>，从而导致了这种定性上的逻辑困境。</p>
<p>但在三阶层理论看来，这个问题迎刃而解，因为<strong>阶层论清晰地区分了违法与责任</strong>。13岁的李四实施了入室盗窃，完全符合盗窃罪的客观事实，满足了第一阶层构成要件该当性。同时，李四没有任何正当防卫等合法理由，满足了第二阶层违法性。因此，李四干的这件事情，在法律评价上绝对是一件非法的、错误的事情。阶层理论认为，<strong>教唆犯等共犯的成立，只要被教唆的人实施了&quot;违法&quot;的行为就足够了，不要求被教唆的人最终必须受到处罚</strong>。既然李四的行为已经跨过了前两阶层，被认定为&quot;违法&quot;，张三作为教唆者，自然就理所当然地成立了教唆犯。最后，法官在第三阶层单独审查李四的责任。因为李四才13岁，心智尚未成熟，法律在主观上不对他进行谴责。所以<strong>李四不用承担责任，无需受到刑罚处罚。但张三作为一个成年人，具有完全的责任能力，必须承担教唆犯罪的刑事责任</strong>。</p>
<p>大家看懂了吗？三阶层极其明确地区分了&quot;违法&quot;和&quot;责任&quot;。行为是错的，所以教唆者要受罚；但实施行为的小孩情有可原，所以小孩不受罚。这种**&ldquo;从客观违法到主观责任&quot;层层递进的体系**，就像外科医生的手术刀一样精准，<strong>将行为的客观对错与行为人的主观可谴责性完美剥离</strong>。这就是为什么刑法学界呼吁引入三阶层的深层原因所在。</p>
<h2 id="不可抹杀的历史丰碑">不可抹杀的历史丰碑</h2>
<p>当然，在探讨理论升级与变革时，我们<strong>绝不能陷入历史虚无主义</strong>。不管四要件理论在今天面临着怎样的批评和挑战，以高铭暄为代表的<strong>第一代刑法学家所立下的历史丰碑，是任何人、任何时代都不容抹杀的</strong>。</p>
<p>在建国初期那种法治资源极度匮乏、甚至法律虚无主义盛行的时代中，是高铭暄这代人，为新中国的刑事法制搭建了<strong>最初的避风港</strong>。四要件理论虽然在逻辑上有瑕疵，但在过去的几十年里，它凭借着简单易懂、便于操作的优势，成功指导了<strong>数以百万计的司法案件</strong>，为维护中国社会的稳定、建立法制权威立下了<strong>不可磨灭的功绩</strong>。</p>
<p>高铭暄一生对刑法事业的卓绝贡献，也赢得了国际国内的最高赞誉。2015年4月，因在刑法学领域的杰出贡献，高铭暄荣获国际社会防卫学会颁发的**&ldquo;切萨雷·贝卡里亚&quot;奖**，该奖项素有**&ldquo;刑法学界的诺贝尔奖&rdquo;<strong>之称，高铭暄也成为</strong>获得该奖的亚洲第一人**。2019年，在新中国成立70周年前夕，党和国家授予他**&ldquo;人民教育家&quot;国家荣誉称号**，这也是<strong>法学界迄今为止唯一的代表</strong>。</p>
<p>学术之所以能够进步，往往就在于<strong>前人的肩膀足够宽阔</strong>。高铭暄最令人敬佩的，不仅是他等身的著作，更是他<strong>海纳百川的学术胸襟与&quot;仁而爱人&quot;的教育家精神</strong>。</p>
<p>他自1984年成为新中国刑法学专业第一位博士生导师以来，培养了<strong>60多名刑法学博士</strong>，这些弟子如今已是法学界的中流砥柱。有趣的是，很多激烈批评&quot;四要件&rdquo;、积极倡导&quot;知识转型&quot;的领军学者（如陈兴良教授），正是<strong>高铭暄的亲传弟子</strong>。</p>
<p>面对来自后辈的颠覆性挑战，<strong>高铭暄从未运用权威进行打压</strong>。他曾在教导青年教师时留下这样一段话：&ldquo;给本科生讲课要注重打基础，有争议的问题先不要讲；给研究生讲课要把正面和反面的意见都讲明白讲透彻；而给博士生讲课，则要讲最前沿的内容，启发他们自己思考&rdquo;。他一生践行着**&ldquo;弟子不必不如师&rdquo;<strong>的理念，这种</strong>容忍异见、鼓励创新的大家气象**，正是中国法学得以不断自我迭代、生生不息的根本动力。</p>
<h2 id="展望未来">展望未来</h2>
<p>站在高铭暄逝世的历史节点上眺望未来，中国刑法学的发展趋势已经非常清晰。</p>
<p><strong>首先，理论体系将从封闭走向全面兼容。</strong> 关于犯罪构成模式的改革，目前学界有&quot;重新排列四要件顺序论&rdquo;、&ldquo;在原四要件基础上增减要件论&quot;以及&quot;另起炉灶全面引入三阶层论&quot;等多种主张。我们可以预见，中国未来的刑法理论不会是纯粹的德日照搬，更不会退回苏联老路。而是在深刻总结中国本土司法实践的基础上，将现有的要件要素统合于&quot;构成要件&quot;之下，进而构建出一个既兼顾逻辑严密性，又符合中国国情的&quot;构成要件符合性+违法性+刑事当罚性&quot;的新型阶层模式。高铭暄生前也曾告诫年轻学子，一定要重视刑法学的国际合作交流，既学习他国长处，又要敢于宣传自己。</p>
<p><strong>其次，刑罚理念将彻底完成从单纯的&quot;社会防卫&quot;向&quot;人权保障&quot;的深刻转型。</strong> 随着法治文明的进步，刑法不仅仅是惩罚犯罪的&quot;刀剑&rdquo;，更应当是限制国家权力、保护公民权利的&quot;大宪章&rdquo;。通过引入阶层理论中严密的逻辑过滤机制，未来的司法裁判将能够最大限度地防止刑罚权的滥用，确保每一次生杀予夺的裁决，都经得起最苛刻的逻辑检验和伦理拷问。</p>
<p><strong>最后，面对新时代的挑战，立法修法机制将更加精细。</strong> 正如高铭暄晚年所指出的，未来新中国刑法需要坚持以&quot;刑法修正案&quot;的方式修正刑法，持续推动刑法体系和立法技术的进一步科学化。无论是应对复杂多变的网络犯罪，还是应对人工智能时代的法律空白，都需要理论界提供更加精密的法律工具。</p>
<p>高铭暄离开了，带走了一个充满激情与筚路蓝缕的时代。但他<strong>亲手铺下的第一块法治基石</strong>，以及他<strong>鼓励变革、追求真理的科学精神</strong>，将永远指引着后来的中国法律人。<strong>对高铭暄最好的纪念，不是把他的学说封在神龛里顶礼膜拜，而是继承他的胆识，勇敢地推动中国法治的转型与升级</strong>，在严密的逻辑与深厚的人文关怀中，将中国的法治大厦建设得更加坚固。</p>
]]></content:encoded></item><item><title>为了寻找 ATMB 美国住宅地址，我专门写了一个小程序</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260214/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260214/</guid><description>介绍一个能帮你快速筛选美国住宅地址的开源小工具</description><content:encoded><![CDATA[<p>如果你是“云居民”或数字游民，相信你对 <strong>Anytime Mailbox (ATMB)</strong> 一定不陌生。它是目前最流行的美国云信箱服务之一，提供了海量的美国地址供我们租赁使用。</p>
<p>但是，对于很多需要申请美国银行账户（如 Capital One, Chase 等）或注册美国券商账号的朋友来说，ATMB 最大的痛点在于：<strong>绝大多数地址都是“商业地址” (Commercial / CMRA)，而银行往往要求提供“住宅地址” (Residential / RDI)。</strong></p>
<p>要在 ATMB 浩如烟海的地址列表中，手动一个个去查哪个是住宅地址，简直是大海捞针，费时费力。</p>
<p>为了解决这个问题，我写了一个开源的小程序：<strong>ATMB-Addresses</strong>。</p>
<h2 id="这个工具能做什么">这个工具能做什么？</h2>
<p>简单来说，它就像一个自动化的“探针”，可以帮我们：</p>
<ol>
<li><strong>自动爬取</strong> ATMB 上指定州（或全美）的所有地址信息。</li>
<li><strong>自动识别</strong> 每个地址的属性，帮我们判断它究竟是 <strong>住宅 (Residential)</strong> 还是 <strong>商业 (Commercial)</strong> 地址。</li>
<li><strong>整理成表</strong>，将结果保存为 Excel/CSV 文件，方便我们筛选。</li>
</ol>
<h2 id="如何使用无需编程基础">如何使用（无需编程基础！）</h2>
<p>虽然这是一个 Python 程序，但我知道很多朋友可能对代码并不熟悉。没关系！为了方便大家，我已经把<strong>爬取并验证好的现成数据</strong>直接上传到了仓库里。</p>
<p>如果你懒得自己跑程序，只需要直接下载我跑好的数据即可。</p>
<h3 id="步骤如下">步骤如下：</h3>
<ol>
<li>访问我的 GitHub 仓库：<a href="https://github.com/masonblog/ATMB-Addresses">https://github.com/masonblog/ATMB-Addresses</a></li>
<li>点击页面上的 <strong>&ldquo;Public&rdquo;</strong> 文件夹。</li>
<li>在里面找到你感兴趣的州（比如 <code>new-york.csv</code> 或 <code>california.csv</code>）。</li>
<li>下载这个 CSV 文件，用 Excel 打开。</li>
<li>在表格中寻找 <strong><code>rdi</code></strong> 这一列：
<ul>
<li>如果显示 <strong><code>Residential</code></strong>，恭喜你！这很可能就是一个银行认可的住宅地址。</li>
<li>如果显示 <code>Commercial</code>，那就是普通的商业地址。</li>
</ul>
</li>
</ol>
<p>就是这么简单！</p>
<h2 id="进阶玩家如何自己运行代码">进阶玩家：如何自己运行代码</h2>
<p>如果你是技术党，或者你想获取最新的实时数据（毕竟地址库会更新），你也可以把代码下载到本地自己运行。</p>
<h3 id="1-准备工作">1. 准备工作</h3>
<p>首先，你需要确保电脑上安装了 Python 3.x 环境，并安装必要的依赖库。在终端中运行以下命令：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install requests beautifulsoup4
</span></span></code></pre></div><p>其次，这个工具最核心的“验证”功能依赖于 <strong>Smarty API</strong>。你需要去 <a href="https://www.smarty.com/">Smarty.com</a> 注册一个账号（它提供免费1000条地址验证的试用额度，够我们跑很多数据了）。注册好后，获取你的 <code>Auth ID</code> 和 <code>Auth Token</code>，把它们保存好，后面会用到。</p>
<p>然后，访问我的 GitHub 仓库：<a href="https://github.com/masonblog/ATMB-Addresses">https://github.com/masonblog/ATMB-Addresses</a>，点击<strong>Code</strong>按钮，再点击<strong>Download ZIP</strong>打包下载代码。</p>
<p><img alt="Download_ZIP" loading="lazy" src="/images/blog20260214/download_zip.png"></p>
<p>在代码**根目录（解压后的文件夹）**下创建一个名为 <code>smarty_api_key.txt</code> 的文件，将刚刚保存的 Smarty API 的 <code>Auth ID</code> 和 <code>Auth Token</code> 填入这个文件并保存：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>auth_id=你的AUTH_ID
</span></span><span style="display:flex;"><span>auth_token=你的AUTH_TOKEN
</span></span></code></pre></div><h3 id="2-开始运行">2. 开始运行</h3>
<p>整个流程分为三步：爬取 -&gt; 补充详情（可选） -&gt; 验证。</p>
<h4 id="第一步爬取基本地址信息">第一步：爬取基本地址信息</h4>
<p>在代码文件夹右键单击，选择“在终端中打开”，然后输入以下命令运行 <code>ATMB_scrape.py</code>。你可以指定爬取某个州，或者直接爬取全美所有地址。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 爬取纽约州</span>
</span></span><span style="display:flex;"><span>python ATMB_scrape.py --input new-york
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 爬取全美（耗时较长）</span>
</span></span><span style="display:flex;"><span>python ATMB_scrape.py --input us
</span></span></code></pre></div><p>程序运行后，会在 <code>Public</code> 文件夹下生成一个 CSV 文件，比如 <code>Public/new-york.csv</code>，里面包含了 ATMB 上最新爬取的地址信息，包括街道地址、城市、州、邮编等。</p>
<h4 id="第二步补充单元号信息可选">第二步：补充单元号信息（可选）</h4>
<p>ATMB 的列表页通常只显示街道地址，但很多时候我们需要知道具体的<strong>单元号信息</strong>，比如 <code>Suite #</code> 或 <code>Unit #</code>。这一步就要在终端中输入以下命令，程序会访问每个地址的详情页，把这些信息抓取下来：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python ATMB_detail.py --input Public/new-york.csv
</span></span></code></pre></div><p>运行完成后，会生成一个新的文件 <code>Public/new-york_detailed.csv</code>。</p>
<h4 id="第三步验证地址性质关键步骤">第三步：验证地址性质（关键步骤）</h4>
<p>最后，我们使用 Smarty API 来验证这些地址是<strong>住宅</strong>还是<strong>商业</strong>。在终端中运行以下命令：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>python ATMB_verify.py --input Public/new-york_detailed.csv
</span></span></code></pre></div><p>程序会逐行验证，并生成最终的文件 <code>Public/new-york_detailed_verified.csv</code>。</p>
<p>打开这个最终文件，查看 <strong><code>rdi</code></strong> 列：</p>
<ul>
<li><strong><code>Residential</code></strong>: 住宅地址（银行喜欢这个！✅）</li>
<li><strong><code>Commercial</code></strong>: 商业地址（⚠️）</li>
</ul>
<p>详细的技术文档和使用参数，我都写在仓库的 <code>README.md</code> 里了，欢迎大家去 Star 和 Fork！</p>
<h2 id="结语">结语</h2>
<p>寻找一个靠谱的美国住宅地址是很多“云居民”迈向全球化的第一步。希望这个小工具能帮你节省宝贵的时间，少走弯路。</p>
<p>如果你觉得好用，别忘了分享给身边有需要的朋友！</p>
]]></content:encoded></item><item><title>凯文·沃什是谁？他将如何影响世界经济</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260130/</link><pubDate>Fri, 30 Jan 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260130/</guid><description>凯文·沃什是如何从华尔街金童成为美联储主席提名人的，以及他的政策主张对世界经济的影响。</description><content:encoded><![CDATA[<p>2026年1月30日，在经历了数月的猜测、公开与隐秘的政治斗争后，川普在他的社交媒体平台Truth Social上投下了一颗重磅炸弹。他正式宣布提名凯文·沃什（Kevin Warsh）担任下一任联邦储备委员会（Federal Reserve）主席 。川普的措辞充满了其标志性的个人色彩，他称沃什为“中央选角”（central casting）的完美人选，并预言这位前美联储理事将成为“伟大的、甚至是历史上最好的美联储主席” 。</p>
<p>这一决定标志着现任主席杰罗姆·鲍威尔（Jerome Powell）时代的终结，也预示着美联储这家百年老店即将迎来一场剧烈的“政权更迭” 。然而，这并非是一次在鲜花与掌声中完成的平稳交接。就在提名宣布的同时，美联储总部——那座位于宪法大道上的宏伟建筑——正处于一场前所未有的法律风暴中心。司法部针对鲍威尔的刑事调查正在进行，关于大楼翻修成本超支的指控如同达摩克利斯之剑，悬在每一位美联储官员的头顶 。</p>
<p>凯文·沃什，这位曾经的华尔街金童、最年轻的美联储理事、雅诗兰黛家族的女婿，如今肩负着川普总统对“低利率”和“去监管”的双重厚望，从斯坦福大学的象牙塔重返权力的角斗场。世界不禁要问：这位曾经的通胀鹰派，将如何在一个民粹主义盛行、地缘政治动荡且债务高企的时代，掌舵全球金融体系的旗舰？他的上位，究竟是美联储回归传统的开始，还是其独立性彻底丧失的序曲？</p>
<p><img loading="lazy" src="/images/blog20260130/image-2.jpg"></p>
<h2 id="权力游戏的棋局美联储主席的王座之争">权力游戏的棋局——美联储主席的王座之争</h2>
<p>要理解这场权力斗争的惨烈程度，首先必须通过透视镜审视美联储主席这一职位的真实分量。在现代全球经济体系中，美联储主席被广泛认为是仅次于美国总统的第二大实权人物，甚至在某些维度上，其对市场的影响力有过之而无不及。</p>
<p>美联储不仅仅是美国的中央银行，它是全球美元体系的心脏。它设定的联邦基金利率（Federal Funds Rate）是全球资产定价的基准锚；它管理的资产负债表规模直接决定了全球美元流动性的松紧。从东京的股市到伦敦的债券市场，从巴西的出口商到上海的房地产开发商，每一个经济微粒的震动都与美联储在华盛顿埃克尔斯大楼内的决策息息相关。</p>
<p><img alt="美联储通过利率和资产负债表影响全球资产定价" loading="lazy" src="/images/blog20260130/fed-power-map.svg"></p>
<p><em>美联储不仅影响美国本土经济，也通过美元体系牵动全球股市、债券、汇率与信贷。</em></p>
<p>然而，这一职位的权力结构设计极其复杂且微妙，这为后来的政治冲突埋下了伏笔。美联储主席由总统提名，参议院确认，任期为四年。但这只是故事的一半。主席必须同时是联邦储备委员会的七名理事之一，而理事的任期长达14年 。这种“双轨制”任期设计的初衷是为了保障美联储的独立性，防止总统通过频繁更换理事来操控货币政策。但在2026年的政治现实中，这种旨在制衡的设计却演变成了一场宪制危机的导火索。</p>
<p><strong>鲍威尔与川普：从“我的选择”到“国家的敌人”</strong></p>
<p>杰罗姆·鲍威尔与唐纳德·川普之间的恩怨，堪称一部现代政治惊悚剧。这一关系的破裂并非始于今日，而是有着漫长且痛苦的铺垫。</p>
<p>回溯至2017年，正是川普打破了延续数十年的惯例，没有续聘时任主席珍妮特·耶伦（Janet Yellen），而是选择了共和党人鲍威尔，希望这位非经济学博士出身的律师能够通过维持低利率来刺激经济，为他的任期增光添彩 。然而，鲍威尔上任后展现出的技术官僚本色迅速激怒了川普。面对经济过热的风险，鲍威尔坚持渐进加息，这在川普看来简直是背叛。</p>
<p>在川普的第一个任期内，他打破了总统不公开评论货币政策的禁忌，在推特上对鲍威尔发起了猛烈攻击，称其为“死脑筋”、“由于缺乏‘胆量’、‘理智’和‘远见’而犯下可怕错误的人” 。这种攻击在2024年竞选期间达到了高潮，川普甚至在社交媒体上发问：“谁是我们更大的敌人，杰罗姆·鲍威尔还是习主席？” 。</p>
<p>尽管拜登总统在2022年提名鲍威尔连任，暂时为美联储提供了一层政治保护伞，但随着川普在2024年大选中获胜重返白宫，两人之间的决战已不可避免。进入2025年，随着通胀的反复和川普对经济刺激的渴望，白宫对美联储的耐心消耗殆尽。川普公开宣称：“我认为美联储主席应该是一个能够与总统‘对话’的人，而不是一个躲在数据背后的官僚。”</p>
<p><strong>翻修门：一场精心策划的“逼宫”大戏</strong></p>
<p>如果说之前的攻击还停留在口水战层面，那么2025年底至2026年初爆发的“翻修门”则标志着斗争进入了残酷的法律肉搏阶段。这场危机的核心并非货币政策，而是美联储总部大楼的翻修工程。</p>
<p>美联储位于华盛顿宪法大道的总部——埃克尔斯大楼，以及邻近的马丁大楼，自1930年代建成以来已显老态。美联储启动了一项大规模的翻修计划，旨在移除石棉、更新老化的管线系统并提升安保标准 。然而，这一原本属于行政后勤范畴的工程，被川普政府敏锐地捕捉为攻击鲍威尔的致命武器。</p>
<p>川普亲自上阵，在视察翻修现场时与鲍威尔发生了面对面的激烈争执。镜头记录下了这尴尬的一幕：川普指着建筑工地质问成本超支，而鲍威尔则无奈地摇着头，试图解释总统手中的数据混淆了已完工的马丁大楼和正在施工的埃克尔斯大楼 。</p>
<p>随后，事态急剧升级。司法部正式对鲍威尔启动刑事调查，指控其在国会作证时隐瞒了翻修工程的真实情况 。这一举动震惊了华盛顿法律界和金融界。对此，鲍威尔发布了一份措辞强硬的视频声明，直斥调查是“前所未有的”，并指出：“刑事指控的威胁是美联储坚持基于最佳评估而非总统偏好来设定利率的后果。”</p>
<p>正是在这种近乎宪制危机的背景下，寻找继任者的工作加速推进。川普需要一个能够替代鲍威尔的人，一个既能安抚市场、又能执行其意志，且身家清白足以通过参议院审查的人。</p>
<p><strong>为什么是凯文·沃什？</strong></p>
<p>在候选人名单上，除了凯文·沃什，还有国家经济委员会主任凯文·哈塞特（Kevin Hassett）、美联储理事克里斯托弗·沃勒（Christopher Waller）以及贝莱德集团高管里克·里德（Rick Rieder） 。这场选拔被媒体戏称为“两个凯文的战争” 。</p>
<p>最终，沃什胜出。这并非偶然，而是川普在多重考量下的最优解：</p>
<p>首先，沃什英俊、富有、谈吐优雅，符合川普对高官“中央选角”的审美标准 。更关键的是，他是雅诗兰黛家族的女婿，其岳父罗纳德·兰黛（Ronald Lauder）是川普几十年的密友和金主 。在川普的世界里，这种私人纽带往往比博士学位更重要。</p>
<p>其次，与哈塞特相比，沃什在华尔街拥有更深厚的根基。他曾是摩根士丹利的合伙人，并在2008年金融危机中扮演了关键角色。市场倾向于认为沃什是一个“安全”的选择，即便他政治上顺从，也不会让美元崩溃 。</p>
<p>此外，沃什曾是著名的通胀鹰派，这似乎与川普的低利率诉求相悖。然而，沃什在近年来成功地重塑了自己的经济哲学，提出“通过供给侧改革和去监管来抑制通胀，从而允许降息”的理论 。这种理论完美契合了川普“既要低利率又要高增长”的政治需求。</p>
<h2 id="凯文沃什从华尔街金童到权力核心">凯文·沃什——从华尔街金童到权力核心</h2>
<p><strong>精英之路：斯坦福、哈佛与摩根士丹利</strong></p>
<p>凯文·沃什的人生轨迹堪称美国精英阶层的教科书范本。1970年4月13日，他出生于纽约上州的一个富裕家庭 。他在斯坦福大学攻读公共政策，专注于经济学和统计学，随后在哈佛法学院获得法学博士学位。这种“西海岸+常春藤”的教育背景，赋予了他跨越学术界、法律界与商界的能力。</p>
<p>1995年，年仅25岁的沃什加入了摩根士丹利的并购部门（M&amp;A） 。在这个华尔街的顶级竞技场，他迅速展现出了惊人的商业天赋。在七年的投资银行家生涯中，他参与了无数起涉及制造业、科技业和金融服务业的大型并购案。这段经历不仅让他积累了财富，更重要的是，让他深刻理解了金融市场的微观结构——银行如何运作、信贷如何流动、以及当流动性枯竭时市场会发生什么。这与大多数从未离开过大学校园的经济学博士出身的央行官员形成了鲜明对比。</p>
<p><img alt="凯文·沃什的职业轨迹示意图" loading="lazy" src="/images/blog20260130/warsh-profile.svg"></p>
<p><em>沃什的履历横跨投行、白宫、美联储和学术圈，这也是他被视为“市场友好型”候选人的原因之一。</em></p>
<p><strong>白宫岁月与最年轻的美联储理事</strong></p>
<p>2002年，沃什穿过“旋转门”，进入布什政府担任国家经济委员会（NEC）的特别助理 。在白宫，他成为了布什总统在资本市场问题上的核心顾问，学会了如何在政治与经济的交汇点上周旋。</p>
<p>2006年，在布什总统的提名下，35岁的沃什成为美联储历史上最年轻的理事 。当时，外界对这位年轻律师能否胜任这一技术性极强的职位充满质疑。毕竟，美联储理事会通常是白发苍苍的经济学教授的聚集地。然而，历史很快就给了沃什一个证明自己的机会——而且是以一种极其残酷的方式。</p>
<p><strong>烈火试炼：2008年金融危机中的“联络官”</strong></p>
<p>沃什上任仅两年，次贷危机爆发，全球金融体系濒临崩溃。在那个风雨飘摇的时刻，美联储主席本·伯南克（Ben Bernanke）发现，他身边这位年轻的前银行家拥有其他学者型官员所不具备的特质：对华尔街恐惧的直观嗅觉和深厚的人脉网络。</p>
<p>沃什成为了伯南克与华尔街CEO们之间的关键联络人 。在危机最黑暗的时刻，他深入一线，2008年3月，沃什直接参与了摩根大通收购贝尔斯登的紧急谈判，试图在周末到来前阻止系统性风险的蔓延 。</p>
<p>2008年9月，那个决定雷曼兄弟命运的周末，沃什作为美联储的耳目驻扎在纽约联储的作战室，亲历了那些决定无数人命运的深夜会议 。他不仅要向学术派的伯南克解释为什么某个复杂的衍生品会导致银行破产，还要向恐慌的市场传递美联储的意图 。</p>
<p>在那段日子里，沃什展现出了超越年龄的冷静和决断力。他支持了美联储最初的量化宽松（QE1）政策，认为这是在市场失灵时的必要急救措施——“打破玻璃，取出灭火器” 。</p>
<p><strong>挂冠而去：对量化宽松的决裂</strong></p>
<p>然而，随着危机的紧急阶段过去，沃什与伯南克的蜜月期也走到了尽头。当美联储在2010年推出第二轮量化宽松（QE2）时，沃什的态度发生了根本性的转变。</p>
<p>他在《华尔街日报》上发表专栏文章，并在美联储内部会议上提出异议。他担心，长期的非常规货币政策会产生严重的副作用：</p>
<ol>
<li><strong>资本错配：</strong> 廉价的资金会流向投机领域，而不是生产性投资 。</li>
<li><strong>财政纪律丧失：</strong> 央行购买国债会变相鼓励政府无节制地借贷 。</li>
<li><strong>通胀隐忧：</strong> 他警告“通胀主要风险仍在”，并对美联储过度自信地控制通胀预期表示怀疑 。</li>
</ol>
<p>2011年，沃什选择辞职，离开了尚未结束任期的美联储理事会 。这一决定在当时显得颇为孤傲，但也为他日后在保守派经济圈中赢得了“有原则的鹰派”的声誉，这成为了他今日获得提名的重要政治资本。</p>
<p><strong>豪门联姻：从华尔街到第五大道的权力网络</strong></p>
<p>在分析沃什的崛起时，无法回避他显赫的婚姻背景。2002年，沃什与简·兰黛（Jane Lauder）结婚 。简是雅诗兰黛化妆品帝国的继承人，目前担任倩碧（Clinique）的全球品牌总裁，个人身家数十亿美元 。</p>
<p>这段婚姻将沃什带入了一个顶级的社交与政治网络。简的父亲罗纳德·兰黛（Ronald Lauder）不仅是世界犹太人大会的主席，更是唐纳德·川普几十年的密友和主要捐款人 。有报道称，川普任内关于“购买格陵兰岛”的奇思妙想，最初也是受到了罗纳德·兰黛的启发 。</p>
<p>在川普的用人哲学中，这种私人关系的信任度往往超越了专业能力。正如传记作家蒂姆·奥布莱恩所言：“如果有人与有权势或名望的人有联系，这对唐纳德·川普来说非常重要。” 罗纳德·兰黛在川普耳边的低语，无疑为沃什在这场激烈的角逐中加分不少。对于川普来说，沃什不仅仅是一个技术官僚，他是“自己人”圈子的一部分。</p>
<h2 id="凯文沃什的经济学新旧世界的融合">凯文·沃什的经济学——新旧世界的融合</h2>
<p>沃什并非传统的凯恩斯主义者，也非纯粹的货币主义者。他的经济思想混合了华尔街的实用主义、传统的财政保守主义以及对新技术的狂热信仰。通过分析他近年来的言论，我们可以勾勒出“沃什主义”（Warshism）的轮廓。</p>
<p><strong>核心观点一：美联储需要“政权更迭”</strong></p>
<p>沃什最激进的观点在于他对美联储现状的批判。他认为美联储已经遭受了“体制漂移”（institutional drift），不仅在通胀判断上屡次失误，而且在职能上过度扩张，介入了气候变化、社会公平等不该管的领域 。</p>
<p>他提出了“政权更迭”的概念，这不仅指人事变动，更指政策框架的重置 。具体而言，他批评鲍威尔的“数据依赖”模式是“看着后视镜开车”。他主张美联储应更具前瞻性，通过理论模型和市场信号来预判经济，而不是等待滞后的就业数据 。同时，他主张美联储应专注于“价格稳定”，减少对短期就业波动的关注，甚至认为不需要为了降低通胀而刻意制造失业 。</p>
<p><strong>核心观点二：通胀是“选择”，AI是解药</strong></p>
<p>与主流经济学家将通胀归咎于供应链或地缘政治不同，沃什坚持认为“通胀是一种政策选择”，其根源在于美联储过度印钞和政府过度开支 。</p>
<p>然而，为了调和这一观点与川普的降息要求，沃什引入了一个新的变量——<strong>人工智能</strong>。他极度看好AI带来的生产率革命，认为AI将是一股强大的“反通胀力量” 。他的逻辑是：AI将大幅提高生产效率，从而降低商品和服务的成本。因此，即使在货币政策相对宽松的情况下，这种供给侧的繁荣也能压低通胀。这为他在不引发通胀恐慌的前提下支持降息提供了理论基础 。</p>
<p><img alt="AI 通过提高生产率压低单位成本的示意图" loading="lazy" src="/images/blog20260130/ai-disinflation.svg"></p>
<p><em>在沃什的叙事中，AI 是一个关键变量：它被寄望于用生产率增长抵消通胀压力。</em></p>
<p><strong>核心观点三：加密货币的盟友，CBDC的敌人</strong></p>
<p>沃什对数字资产的态度泾渭分明，这让他成为了加密货币社区的宠儿：</p>
<p>他明确表示“比特币并不让我感到不安”，并将其视为一种可以为政策制定者提供信号的“重要资产”，甚至是对美元体系的一种有益的监督机制 。他坚决反对美联储发行零售型央行数字货币（CBDC），称其为“金融全景监狱”，认为这将导致政府对公民隐私的过度监控，并挤压私营部门的创新空间 。同时，他倾向于通过受监管的私营稳定币来推动美元的数字化，而非由政府亲自下场 。</p>
<p><strong>核心观点四：影子银行与去监管</strong></p>
<p>尽管出身华尔街，沃什对“大而不倒”的银行体系持批判态度。他曾呼吁通过更严格的市场纪律来迫使银行对风险负责，而不是依赖政府救助 。然而，在当前的政治环境下，他似乎更倾向于放松对传统银行的束缚（如巴塞尔协议III终局之战的资本要求），同时警惕“影子银行”和私人信贷（Private Credit）的无序扩张 。他认为过度的银行监管反而将风险推向了不透明的影子银行体系，这也是他主张“去监管”的深层逻辑 。</p>
<h2 id="展望沃什时代的世界经济风云">展望——沃什时代的世界经济风云</h2>
<p>随着沃什的提名尘埃落定，全球目光聚焦于未来。如果他顺利通过参议院确认，并在5月（或更早）接掌美联储，世界经济将面临怎样的变局？</p>
<p><strong>货币政策的新范式：紧缩资产，宽松利率</strong></p>
<p>沃什可能会尝试一种大胆的政策组合实验：<strong>“量化紧缩（QT） + 降息”</strong>。</p>
<p>他一直批评美联储庞大的7万亿美元资产负债表是扭曲市场的元凶。他可能会加速缩表，回收过剩的流动性 。作为交换，通过缩表腾出的通胀空间，将被用来满足川普的降息要求。这种策略试图在安抚鹰派（通过缩表）和取悦鸽派（通过降息）之间寻找平衡。这种操作难度极高。如果缩表过快，可能导致回购市场冻结（如2019年9月）；如果降息过快，可能再次点燃通胀。</p>
<p><img alt="量化紧缩与降息之间的政策平衡" loading="lazy" src="/images/blog20260130/policy-balance.svg"></p>
<p><em>“缩表 + 降息”看似兼顾两端，实际却要求央行精确控制流动性与通胀预期。</em></p>
<p><strong>美元汇率的“沃什悖论”</strong></p>
<p>尽管川普一直抱怨美元过强损害出口，但沃什的上任在短期内可能反而推高美元。</p>
<p>市场认为沃什虽然政治上顺从，但在骨子里仍保留着鹰派底色。此外，如果美国经济在AI和去监管的刺激下表现优于欧洲和中国，资本将继续回流美国 。因此，强势美元将继续挤压新兴市场的生存空间，增加其偿债压力。但如果川普强行干预汇率，沃什可能需要配合财政部进行“口头干预”甚至协同行动，这对其独立性将是巨大考验。</p>
<p><strong>鲍威尔的“影子主席”困局</strong></p>
<p>一个巨大的悬念依然存在：<strong>杰罗姆·鲍威尔会走吗？</strong> 鲍威尔的主席任期在2026年5月结束，但他作为理事的任期要到2028年1月才到期 。如果鲍威尔因为对司法部调查的愤怒而选择留任理事，美联储将出现前所未有的“双头政治”。</p>
<p>1948年，马里纳·埃克尔斯在被杜鲁门总统撤换主席职位后，依然留在理事会直到1951年，并最终推动了著名的《美联储-财政部协议》，确立了美联储的独立性 。留在理事会的鲍威尔可能成为FOMC内部事实上的“反对党领袖”，利用其影响力和投票权制衡沃什的激进政策 。这将导致美联储内部决策陷入僵局，增加市场的不确定性。</p>
<p><strong>对全球央行的连锁反应</strong></p>
<p>欧洲的央行行长们已经表达了对鲍威尔的声援，强调央行独立性的重要性 。面对一个更加政治化的美联储，拉加德和贝利可能会被迫采取更加独立的货币政策，以防被美国的政策溢出效应（如输入性通胀）所吞噬。</p>
<p>同时，沃什支持的贸易保护主义倾向可能意味着中美金融脱钩的加速。如果美联储配合贸易战维持特定汇率政策，中国可能会加快人民币国际化及资产多元化的步伐，以减少对美元体系的依赖。</p>
<h2 id="在钢丝上跳舞">在钢丝上跳舞</h2>
<p>凯文·沃什的提名，不仅是一个职位的更替，它是那个我们在教科书上熟悉的、强调技术中立和政治独立的中央银行时代的谢幕。沃什代表了一种新的时代精神：市场与政治的深度纠缠，精英与民粹的奇异融合。</p>
<p>他将在钢丝上起舞：一边是白宫椭圆形办公室内那位要求“更低、更快”的总统，另一边是时刻准备惩罚政策错误的万亿美元债券市场。而在他脚下，是正在经历AI革命、债务危机和地缘分裂重塑的世界经济。</p>
<p>如果他成功了，他或许真如川普所言，成为重塑美国经济活力的“伟大的主席”，证明供给侧改革可以战胜通胀魔咒；但如果他失败了，美联储百年的信誉可能在他手中毁于一旦，而世界经济将不得不面对一个没有“货币锚”的混乱时代。</p>
<p>对于凯文·沃什来说，真正的考验才刚刚开始。</p>
]]></content:encoded></item><item><title>如何在 Windows 上使用 ClawdBot ：用 Gemini 和 Telegram 打造你的私人 AI 助理</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260127/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20260127/</guid><description>在 Windows 上安装 ClawdBot 的详细教程</description><content:encoded><![CDATA[<p>你听说过 <strong>ClawdBot</strong> 吗？这是一个目前非常热门的开源个人 AI 助手。与那些只会“坐等指令”的传统聊天机器人不同，ClawdBot 具有 <strong>主动性</strong>——它可以主动给你发消息、管理任务，而且是运行在你自己的本地设备上。</p>
<p>虽然很多教程都推荐在 Mac Mini 或 Linux 服务器上运行它，但其实 <strong>在 Windows 上运行它也完全没问题</strong>。</p>
<p>在这篇文章中，我将手把手教你在 <strong>Windows</strong> 上安装 ClawdBot，将其配置为使用 Google 的 <strong>Gemini API</strong>（目前最好的 AI 模型，并且赠送有免费额度），并连接到 <strong>Telegram</strong>，让你随时随地都能与你的 AI 助手聊天。</p>
<hr>
<h2 id="-准备工作">🛠️ 准备工作</h2>
<p>在开始之前，请确保你准备好了以下几样东西：</p>
<ol>
<li>一台运行 <strong>Windows 11</strong> 的电脑。</li>
<li><strong>一个 Google Gemini API Key（密钥）：</strong> 你可以在 <a href="https://aistudio.google.com/">Google AI Studio</a> 免费获取。</li>
<li><strong>一个 Telegram 账号：</strong> 用于创建你的机器人。</li>
</ol>
<h2 id="第一步安装-wsl2-windows-subsystem-for-linux">第一步：安装 WSL2 (Windows Subsystem for Linux)</h2>
<p><strong>关键点：</strong> ClawdBot 无法直接在 Windows 的 PowerShell 或 CMD 中原生运行。它需要一个 Linux 环境。幸运的是，Windows 自带了一个完美的工具——<strong>WSL2</strong>。</p>
<ol>
<li>
<p>点击 Windows 开始菜单，找到 <strong>PowerShell</strong>，右键选择 <strong>“以管理员身份运行”</strong>。</p>
</li>
<li>
<p>输入以下命令并回车：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>wsl --install
</span></span></code></pre></div></li>
<li>
<p><strong>重启你的电脑。</strong></p>
</li>
<li>
<p>重启后，打开 应用商店（Microsoft Store），搜索“Ubuntu”，下载并安装 “<strong>Ubuntu 24.04.1 LTS</strong>” 。</p>
</li>
<li>
<p>打开 Ubuntu ，它会要求你创建一个 <strong>用户名和密码</strong>。
<em>提示：输入密码时屏幕上不会显示任何字符，这是正常的，输完回车即可。</em></p>
</li>
</ol>
<p>一旦你进入了这个 Ubuntu 终端窗口，我们就可以继续了。</p>
<h2 id="第二步安装-nodejs-正确姿势">第二步：安装 Node.js (正确姿势)</h2>
<p>ClawdBot 需要较新版本的 <strong>Node.js (v22+)</strong>。Ubuntu 默认自带的版本通常太旧了，所以我们要使用 <strong>NVM</strong> (Node Version Manager) 来安装最新版。</p>
<p><strong>请在刚才打开的 Ubuntu 终端中运行以下命令：</strong></p>
<ol>
<li>
<p><strong>下载并安装 NVM：</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
</span></span></code></pre></div></li>
<li>
<p><strong>刷新环境变量</strong> (让系统识别 NVM)：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>source ~/.bashrc
</span></span></code></pre></div></li>
<li>
<p><strong>安装 Node.js 最新版：</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm install --lts
</span></span></code></pre></div></li>
<li>
<p><strong>验证安装是否成功：</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>node -v
</span></span><span style="display:flex;"><span>npm -v
</span></span></code></pre></div></li>
</ol>
<p>只要这两个命令能打印出版本号，就说明安装成功了！</p>
<h2 id="第三步安装并配置-clawdbot">第三步：安装并配置 ClawdBot</h2>
<p>最简单的部分来了。ClawdBot 提供了一键安装脚本。在你的 Ubuntu 终端中运行：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -fsSL https://clawd.bot/install.sh | bash
</span></span></code></pre></div><p>脚本会自动下载必要的文件，并将 ClawdBot 全局安装到你的虚拟 Linux 系统中。</p>
<p>安装完成后，看到如下界面，说明已经安装成功了：</p>
<p><img alt="Clawdbot 初始化界面" loading="lazy" src="/images/blog20260127/cli_setup.png"></p>
<p>安装完成后，我们需要进行简单的快速配置</p>
<ol>
<li>
<p><strong>启动设置向导的命令如下：</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>clawdbot onboard
</span></span></code></pre></div></li>
<li>
<p><strong>按照提示操作：</strong></p>
<ul>
<li>Understand this is risky（同意风险）: 选 <strong>Yes.</strong></li>
<li>Onboarding mode（启动模式）: 选 <strong>QuickStart.</strong></li>
<li>Model provider: <strong>按需选择</strong>，这里选择 Google Gemini.</li>
<li>API key: 粘贴你之前申请的 Google AI <strong>密钥</strong>。</li>
<li>Defualt model: <strong>按需选择</strong>，推荐选择 gemini-2.0-flash (速度快/成本低) 或 gemini-2.0-pro (更聪明)。</li>
<li>Select channel: <strong>按需选择</strong>，推荐选择 Telegram.</li>
</ul>
</li>
</ol>
<h2 id="第四步配置-telegram-机器人">第四步：配置 Telegram 机器人</h2>
<p>选择 Telegram ，它会要求你输入 <strong>Bot Token</strong>。打开手机或电脑上的 Telegram，搜索 <a href="https://t.me/BotFather"><strong>@BotFather</strong></a>。</p>
<p>发送消息 <code>/newbot</code> 给它，它会让你给你的机器人起个名字（例如 &ldquo;My Jarvis&rdquo;）和用户名（例如 <code>my_private_clawd_bot</code>）。BotFather 会给你一串 API Token（看起来像 <code>123456:ABC-DEF...</code>）。<strong>将这个 Token 粘贴回 Ubuntu 终端窗口中。</strong></p>
<p>继续配置 Clawdbot ，<strong>Skills 和 Hooks 这些都可以先暂时跳过</strong>，监看方式 (how to hatch your bot) 可以按需选择，这里推荐直接在 <strong>命令行 (TUI)</strong> 上监看。</p>
<p>上面这些都配置完成后，你的 Clawbot 就正式开始运行了。</p>
<h2 id="第五步设备配对-pairing">第五步：设备配对 (Pairing)</h2>
<p>为了安全起见，你的机器人不会随便理睬陌生人。你需要将它与 <em>你</em> 的 Telegram 账号进行配对。</p>
<ol>
<li>确保 ClawdBot 正在终端中运行。打开 Telegram 中你刚才创建的机器人，点击 <strong>Start</strong> (或发送 <code>/start</code>)。</li>
<li>机器人会回复一个 <strong>配对码 (Pairing Code)</strong>。</li>
<li>回到你的 Ubuntu 终端。你应该会看到一个请求批准的提示。</li>
<li>根据屏幕提示输入刚才的配对码批准命令。</li>
</ol>
<p><strong>🎉 成功！你的机器人上线，随时待命。</strong></p>
<h2 id="第六步如何使用">第六步：如何使用</h2>
<p>现在，你可以直接在 Telegram 上与你的机器人聊天了。试试这些指令：</p>
<ul>
<li><strong>&ldquo;帮我总结这篇文章：&rdquo;</strong> (粘贴一个文章链接)</li>
<li><strong>&ldquo;提醒我 20 分钟后关烤箱。&rdquo;</strong> (它到时候会主动给你发消息！)</li>
<li><strong>&ldquo;东京现在的天气怎么样？&rdquo;</strong></li>
</ul>
<p><img alt="how to use" loading="lazy" src="/images/blog20260127/bot_chat.jpg"></p>
<h3 id="如何保持后台运行">如何保持后台运行</h3>
<p>因为这个程序运行在你的电脑上，如果你关闭了 Ubuntu 窗口或关机，机器人就会下线。 为了让它在你使用 Windows 时保持后台运行，你可以：</p>
<ol>
<li>简单地将 Ubuntu 终端窗口 <strong>最小化</strong>（不要关闭）。</li>
<li>或者在 Ubuntu 中学习使用 <code>tmux</code> 或 <code>screen</code> 等工具来保持会话。</li>
</ol>
<h3 id="常见问题排查">常见问题排查</h3>
<ul>
<li><strong>错误：&ldquo;Command not found&rdquo;：</strong> 确保你是在 Ubuntu (WSL) 终端中输入命令，而不是在 Windows 的 PowerShell 中。</li>
<li><strong>机器人不回复：</strong> 检查终端里的日志。如果你看到 Gemini API 报错，可能是你的 Key 无效，或者因为请求过多触发了限制（如果用量大，可能需要在 Google Cloud 开启按量付费）。</li>
</ul>
<p><strong>享受你的新 AI 伙伴吧！</strong> 与 ChatGPT 不同，它住在你的硬盘里，了解你的上下文，并且会在 <em>它</em> 觉得你需要知道某些事情时，主动联系你。</p>
]]></content:encoded></item><item><title>年费15元的奥地利 eSIM 电话卡：RedteaGo</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250317/</link><pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250317/</guid><description>可在国内漫游的奥地利保号神卡介绍，支持eSIM</description><content:encoded><![CDATA[<p>由于个人的一些特殊需求，我经常需要用到海外手机号，也因此一直在寻找经济实惠、性能稳定的海外电话卡。之前，我一直在使用美国 UltraMobile 每月 3 美元 的 PayGo 卡，以及香港 3HK 每年 268HKD、45G 流量的漫游卡。这两张卡都各有各的劣势：PayGo 卡在国内只能接打电话、收发短信，无法漫游上网；3HK 可以在国内漫游上网，但它使用的 IP 地址是香港的，无法登录 ChatGPT，也无法接打电话或收发短信。因此，长久以来我一直在寻找一款既能在国内漫游上网（非香港 IP 地址）、又能接收短信，并且价格不能太贵的海外电话卡，直到我发现了一家奥地利运营商 RedteaMobile 的全球上网手机卡——<a href="https://www.redteamobile.com/redtea-go-consumer/#">RedteaGo</a>。</p>
<p>RedteaGo 的全球套餐有以下几点优势：</p>
<ol>
<li>
<p>有效期内（最长365天，可续费）可<strong>免费接收短信</strong>，注册各类 APP【仅全球套餐】</p>
</li>
<li>
<p>支持全球130+地区（包括中国大陆）的漫游上网，<strong>且 IP 地址在欧洲</strong>，可以轻松登录 ChatGPT【仅全球套餐】</p>
</li>
<li>
<p>价格低廉，100MB 保号套餐仅需 3.2 美元/年，若叠加邀请码赠金，则<strong>最低 2 美元（约合人民币15元）即可保号一年</strong></p>
</li>
<li>
<p><strong>支持 eSIM</strong>，无需实体卡即可轻松激活</p>
</li>
<li>
<p>无需实名登记</p>
</li>
</ol>
<p><img loading="lazy" src="/images/blog20250317/plan.jpg"></p>
<p>RedteaGo 的套餐可以在<a href="https://www.redteamobile.com/redtea-go-consumer/#">官方网站</a>或者<a href="https://www.bing.com/search?q=Redteago%20app&amp;qs=n&amp;form=QBRE&amp;sp=-1&amp;ghc=1&amp;lq=0&amp;pq=redteago%20ap&amp;sc=10-11&amp;sk=&amp;cvid=D381E19FE4DF4851B12936EAE9837E7E&amp;ghsh=0&amp;ghacc=0&amp;ghpl=">官方APP</a>上直接购买，如果你的手机支持 eSIM，那么可以通过官方APP直接购买；如果你的手机不支持 eSIM，需要借助第三方实体 eSIM 卡，那么最好在官方网站上下单，因为<strong>只有官方网站下单的套餐才会提供 eSIM 二维码</strong>。</p>
<p>先用邮箱注册一个 RedteaGo 账号，注册时可以使用我的邀请码<code>MASO0042</code>，这样你和我都可以获得 3 美元的赠金，后续购买套餐时可以直接抵用。叠加邀请码赠金后，最低只要 2 美元就能保号一整年。</p>
<p>注册完成后，就可以选购套餐了。<strong>如果想要在购买套餐时使用上面的 3 美元赠金，一定要先往账户里充值，再购买套餐</strong>，因为如果购买套餐时账户余额低于套餐金额的话，就只能选择直接支付套餐金额，无法抵扣邀请码赠金，这点一定切记。</p>
<p>账户充值的最小金额是 2 美元，支付方式可以选择Apple Pay、国际信用卡或支付宝等，下图为  RedteaGo APP 内的充值演示。<strong>注意充值前先看好你想购买套餐的价格，确保充值金额+3美元赠金要大于套餐价格，才能在购买套餐时抵扣</strong>。</p>
<p>以最便宜的 3.2 美元套餐为例，用邀请码注册账号的初始余额为 3 美元（赠送），那么我们只要充值最低的 2 美元，即可拥有 3+2=5 美元的余额。购买套餐时选择用余额支付，则购买完成后，账户中还剩下 5-3.2=1.8 美元，可用于下次购买其他套餐使用。 <img loading="lazy" src="/images/blog20250317/topup.jpg"></p>
<p>充值完成后，就可以开始购买套餐了。这里我推荐以下三个套餐：</p>
<ol>
<li>
<p>全球（130+地区）100MB/365天 免费接收短信 3.2 美元（欧洲 IP）</p>
</li>
<li>
<p>全球（130+地区）1GB/365天 免费接收短信 19.9 美元（欧洲 IP）</p>
</li>
<li>
<p>中国大陆 50GB/365天 不支持短信 26.19 美元（香港 IP）</p>
</li>
</ol>
<p>以上 3 个套餐均可在中国大陆漫游上网，其中<strong>全球套餐为欧洲 IP、中国大陆套餐为香港 IP</strong>。<strong>全球套餐带一个 +43 电话号码，可以免费收短信，中国大陆套餐没有号码，无法收短信</strong>，各位可以按需选择。可以看到，同样是 365 天有效的香港 IP 漫游，第 3 个套餐的价格仅为 190 元，远低于 268 元的 3HK 45G 的套餐（但比 3HK 少了电话号码和短信功能）。如果考虑邀请码赠送的 3 美元，那么最低 170 元即可拿下 50GB/365 天的漫游，岂不美哉~</p>
<p><img loading="lazy" src="/images/blog20250317/check.jpg"></p>
<p>套餐的激活方式也很简单，以支持 eSIM 的 iPhone 为例，直接点击激活按钮，按步骤操作即可。</p>
<p><img loading="lazy" src="/images/blog20250317/activate.jpg"></p>
<p>激活成功后，可以看到手机左上角的运营上是 RedteaMobile，且套餐页面有套餐剩余的流量和有效期。</p>
<p><img loading="lazy" src="/images/blog20250317/use.jpg"></p>
<p>套餐自激活成功后开始计算有效期，不管是什么套餐，遇到以下条件之一即告失效，<strong>失效后必须重新购买套餐才能继续使用，且无法找回之前的电话号码</strong>：</p>
<ol>
<li>
<p>激活后连续 30 天未使用</p>
</li>
<li>
<p>套餐内流量用尽</p>
</li>
<li>
<p>套餐有效期结束</p>
</li>
</ol>
<p><strong>如果想在套餐失效前保留自己的电话号码，那么请务必记得在以上三个条件达成前续费套餐</strong>，否则一旦套餐失效，原先的号码也就离你而去了。</p>
<p>综上，RedteaGo 是一款能够以较低成本获得原生欧洲 IP 的海外手机卡产品，适合有特殊需求的用户，可以完美平替 3HK，且无需实名登记。最后，再次贴出我的邀请码：<code>MASO0042</code>，使用我的邀请码注册，你和我都能获得 3 美金的赠金，可以直接抵扣套餐费用。</p>
]]></content:encoded></item><item><title>战后秩序的瓦解：川普与泽连斯基白宫争论分析</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250301/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250301/</guid><description>川普与泽连斯基白宫会晤爆发激烈冲突，一场外交灾难的全面分析</description><content:encoded><![CDATA[<p>2025年2月28日，川普与泽连斯基在白宫椭圆办公室的会晤演变成一场前所未有的公开冲突。这次原本旨在签署重要矿产协议的高级别会谈，却因双方在俄乌冲突解决方案上的分歧而演变成激烈争吵，美国副总统万斯更加入指责泽连斯基对美国援助不够感恩。这场在电视直播中发生的外交冲突使两国关系急剧恶化，川普最终取消了联合新闻发布会并要求泽连斯基离开白宫，用社交媒体表示&quot;他不尊重美国神圣的椭圆办公室&quot;。此事件展现了川普政府&quot;美国优先&quot;外交政策的极端表现，对乌克兰未来命运和西方联盟团结产生了严重影响，同时凸显了川普对普京态度的根本转变。</p>
<h2 id="会晤的背景与准备">会晤的背景与准备</h2>
<p>这次高风险会晤发生在乌克兰未来命运悬而未决之际，各方对此寄予厚望。泽连斯基此行主要目的是与美国签署一项关于稀土矿产的协议，这被认为是换取美国继续军事援助的条件[2]。在会晤前几周，美国盟友曾进行了紧张谈判，试图调和华盛顿与基辅之间的分歧。法国总统马克龙和英国首相斯塔默都曾会见川普，试图说服他与泽连斯基进行建设性对话[2]。这些外交努力采取了奉承策略，马克龙回忆川普参观巴黎圣母院的经历，斯塔默则亲自递交了查尔斯国王的信[2]。</p>
<p>此次会晤的一个关键背景是川普政府之前已经与俄罗斯举行了和平谈判，但将乌克兰和欧洲排除在外[3]。这种单边行动引发了基辅的强烈不满，进一步加剧了双方的紧张关系。在泽连斯基抵达白宫前，他的团队曾被迫在周三正式同意川普提出的方案，才最终促成了星期五的会面[1]。根据美联社的报道，美国官员曾明确表示，除非泽连斯基愿意接受与俄罗斯谈判的方案，否则川普不会见他[1]。</p>
<h2 id="白宫会晤的激烈冲突">白宫会晤的激烈冲突</h2>
<h3 id="从和平开始到激烈争吵">从和平开始到激烈争吵</h3>
<p>会晤初期的氛围相对友好，据报道在前半小时内，川普和泽连斯基互相表达了礼貌和尊重[1]。川普甚至表示愿意继续向乌克兰提供一些军事援助，直到与俄罗斯达成持久和平协议[1]。然而，当泽连斯基表达对普京停火承诺的不信任时，局势急转直下[1]。</p>
<p>情况恶化的关键转折点出现在泽连斯基讲话中，他直接称普京为&quot;杀人犯和恐怖分子&quot;，并表示希望川普能以强硬立场阻止普京[3]。这一评论明显触怒了川普，他认为泽连斯基对普京的&quot;仇恨&quot;是和平谈判的障碍[1][3]。当泽连斯基试图解释俄罗斯曾多次违反停火协议时，副总统万斯介入并责备他&quot;在美国媒体面前试图在椭圆办公室进行争辩是不尊重的&quot;[1][3]。</p>
<h3 id="川普与万斯的指责">川普与万斯的指责</h3>
<p>川普向泽连斯基发出了严厉警告，直接威胁说：&ldquo;你要么达成协议，要么我们退出。如果我们退出，你就自己战斗吧。我认为那样结果不会很好看，但你会战斗下去。&quot;[3] 他进一步指责泽连斯基&quot;在冒世界第三次大战的风险&rdquo;，并表示泽连斯基的行为&quot;对这个支持你超过许多人认为应有程度的国家非常不尊重&quot;[1][3]。</p>
<p>川普在争论中夸大了美国对乌克兰的援助金额，宣称已经提供了3500亿美元，而实际数字不到2000亿美元[2]。他还声称如果没有美国的军事支持，冲突本可以在&quot;两周内&quot;结束[2]。川普明确表示自己处于&quot;中间立场&quot;，与普京没有&quot;结盟&quot;，但他对泽连斯基对普京的仇恨感到不满，认为这使他很难促成协议[1][3]。</p>
<p>万斯在争论中更加激进，质问泽连斯基是否曾经说过一次&quot;谢谢&quot;[3]。他指出乌克兰正在&quot;强制征召前线士兵因为你们有人力问题&quot;，并表示泽连斯基&quot;应该感谢总统试图结束这场冲突&quot;[3]。万斯还暗示先前的拜登政府对普京的谴责只是延长了冲突[2]。</p>
<h3 id="泽连斯基的回应">泽连斯基的回应</h3>
<p>面对这些指责，泽连斯基试图为自己辩护。当万斯提到&quot;外交&quot;是和平之路时，泽连斯基反问：&ldquo;你指的是什么样的外交，JD？&ldquo;并列举了俄罗斯过去违反停火的例子[1]。他还提醒万斯，普京曾在2019年川普执政期间违反过协议[2]。</p>
<p>当被指责缺乏感恩之情时，泽连斯基试图表达更多感谢，但被川普打断[2]。在一个特别尖锐的时刻，泽连斯基对万斯说：&ldquo;首先，战争期间，每个人都有问题，包括你们。但你们有美丽的海洋，现在感受不到，但未来你们会感受到。&quot;[3] 这一言论立即引发川普的反击：&ldquo;不要告诉我们我们会感受到什么。我们正试图解决问题。不要告诉我们我们会感受到什么。&quot;[3]</p>
<h2 id="冲突的后果与影响">冲突的后果与影响</h2>
<h3 id="即时后果">即时后果</h3>
<p>这场激烈冲突导致原定的联合新闻发布会和经济协议签署被取消[1][3]。会后，川普要求泽连斯基离开白宫，并在社交媒体上发表了简短但严厉的声明：&ldquo;我已经确定，如果美国参与，泽连斯基总统还没有准备好接受和平，因为他认为我们的参与会给他在谈判中带来巨大优势。我不想要优势，我想要和平。他在珍贵的椭圆办公室不尊重美利坚合众国。当他准备好接受和平时，他可以回来。&quot;[2][3]</p>
<p>泽连斯基随后在福克斯新闻上出现，试图修复受损关系，他表示与川普和万斯的公开分歧&quot;对双方都没有好处&rdquo;[1]。然而，他坚持认为乌克兰不会在没有获得未来免受侵略的安全保障的情况下与俄罗斯进行和平讨论[1]。&ldquo;这对我们的人民来说是一个非常敏感的问题，&ldquo;泽连斯基补充道，&ldquo;他们只想听到美国站在我们这边，而不是俄罗斯，而是我们。仅此而已。&quot;[1]</p>
<h3 id="对乌克兰未来的影响">对乌克兰未来的影响</h3>
<p>这场外交冲突严重危及了美国与乌克兰关系的未来，以及基辅保卫自己免受俄罗斯侵略的能力[1]。泽连斯基在福克斯新闻采访中承认，没有美国的支持，乌克兰的情况将变得更加&quot;困难&rdquo;[1]。这一事件表明，川普政府对乌克兰的支持正在迅速减弱，可能导致乌克兰在未来的和平谈判中处于更加弱势的地位。</p>
<p>美国南卡罗来纳州参议员林赛·格雷厄姆，作为防务倡导者和川普的坚定支持者，此前曾警告泽连斯基在与川普会面时&quot;不要上当&rdquo;[1]。这一建议凸显了许多美国政界人士对川普外交风格的担忧，以及对乌克兰未来前景的忧虑。</p>
<h2 id="外交关系转变与地缘政治意义">外交关系转变与地缘政治意义</h2>
<h3 id="川普外交政策的转向">川普外交政策的转向</h3>
<p>这次冲突清晰地展示了川普正如何将美国外交政策转向他的&quot;美国优先&quot;理念，其力度远超他第一任期的政策[1]。这场意外的冲突被形容为近期椭圆办公室中全球领导人之间最激烈的公开争论之一，传统外交礼仪演变为指责、喊叫和明显的蔑视[1]。</p>
<p>这次事件发生在美国盟友试图解决华盛顿和基辅之间分歧的一周之后，他们曾尝试说服川普不要向莫斯科示好[1]。周一，法国总统马克龙曾与川普会面，讨论在乌克兰建立一支由欧洲主导的维和部队，旨在阻止俄罗斯未来的侵略，并鼓励美国总统对普京采取更加怀疑的态度[1]。</p>
<h3 id="川普对普京的态度">川普对普京的态度</h3>
<p>各方观察到川普对普京显示出明显的偏向。当被问及是否&quot;结盟&quot;普京时，川普回应说：&ldquo;我没有与普京结盟。我没有与任何人结盟。我与美利坚合众国结盟，为了世界的利益。我与世界结盟，我想结束这一切。&quot;[3] 然而，他随后暗示泽连斯基是谈判的主要障碍：&ldquo;你看到他对普京的仇恨了吗？这让我很难达成协议。&quot;[3]</p>
<p>川普对普京的态度可能源于他认为俄罗斯在他第一任期中被不公正地对待。他在会晤中提到：&ldquo;普京在我这里经历了很多。他面对一场欺诈性的猎巫行动，他们利用他和俄罗斯。俄罗斯，俄罗斯，俄罗斯。&quot;[2] 这一评论指的是美国情报机构发现俄罗斯干预2016年大选以有利于川普竞选的调查结果[2]。</p>
<p>乔纳森·艾伯特（Susan Glasser），一位撰写过普京崛起书籍的记者，评论道：&ldquo;唐纳德·川普已经在冲突中改变了立场，我相信这一背景解释了我们刚才看到的冲突。&quot;[2] 这一评论暗示川普现在更倾向于俄罗斯的立场，而不是传统的美国对乌克兰的支持。</p>
<h2 id="结论">结论</h2>
<p>2025年2月28日白宫的这场外交争执标志着美国与乌克兰关系的重大转折点，反映了川普政府的&quot;美国优先&quot;外交政策正在彻底重塑美国在国际舞台上的立场。这次公开冲突不仅损害了两国关系，还暴露了西方联盟在应对俄罗斯侵略问题上的深刻分歧。川普对普京的明显倾斜态度与他对泽连斯基的严厉批评形成鲜明对比，引发了对美国外交政策方向转变的广泛担忧。</p>
<p>对于乌克兰来说，这一事件可能标志着西方支持的转折点，迫使基辅在未来的和平谈判中处于更加不利的位置。泽连斯基的困境体现了小国领导人在大国地缘政治利益面前的脆弱处境，尤其是当强大盟友的支持开始动摇时。随着俄乌冲突进入第四年，这次白宫争执可能成为决定冲突最终解决方案的关键时刻，其影响将远远超出椭圆办公室的墙壁，重塑整个欧洲安全格局。</p>
<h2 id="来源">来源</h2>
<ol>
<li>
<p><a href="https://apnews.com/article/trump-zelenskyy-oval-office-ukraine-russia-blowup-8aa63e55c859e8fea963911478c376ee">Trump&rsquo;s Oval Office thrashing of Zelenskyy shows limits of Western allies&rsquo; ability to sway US leader | AP News</a></p>
</li>
<li>
<p><a href="https://www.cnn.com/2025/02/28/politics/zelensky-trump-russia-ukraine-war/index.html">Zelensky invades Trump’s ‘disinformation space’ | CNN Politics</a></p>
</li>
<li>
<p><a href="https://abcnews.go.com/Politics/key-takeaways-tempers-flare-trump-vance-confront-ukraines/story?id=119299758">Trump and Zelenskyy key takeaways: Oval Office meeting explodes into shouting match - ABC News</a></p>
</li>
<li>
<p><a href="https://www.nytimes.com/2025/02/28/us/politics/trump-zelensky-us-ukraine-russia.html">Trump Berates Zelensky in Fiery Exchange at the White House - The New York Times</a></p>
</li>
<li>
<p><a href="https://nationalpost.com/news/world/transcript-trump-zelenskyy-vance-arguement">Full transcript: Trump, Zelenskyy and Vance argue in the Oval Office | National Post</a></p>
</li>
<li>
<p><a href="https://www.cfr.org/blog/trump-and-zelensky-clash-oval-office">Trump and Zelensky Clash in the Oval Office | Council on Foreign Relations</a></p>
</li>
<li>
<p><a href="https://www.cnbc.com/2025/03/01/trump-zelenskyy-white-house-tone-elon-musk.html">Trump objected to Zelenskyy disrespect, White House says</a></p>
</li>
<li>
<p><a href="https://apnews.com/article/zelenskyy-security-guarantees-trump-meeting-washington-eebdf97b663c2cdc9e51fa346b09591d">apnews.com/article/zelenskyy-security-guarantees-trump-meeting-washington-eebdf97b663c2cdc9e51fa346b09591d</a></p>
</li>
<li>
<p><a href="https://www.pbs.org/newshour/politics/what-trump-and-zelenskyy-said-during-their-heated-argument-in-the-oval-office">What Trump and Zelenskyy said during their heated argument in the Oval Office | PBS News</a></p>
</li>
<li>
<p><a href="https://www.cnn.com/politics/live-news/trump-zelensky-news-02-28-25/index.html">February 28, 2025: Donald Trump presidency news | CNN Politics</a></p>
</li>
<li>
<p><a href="https://www.aljazeera.com/news/2025/2/28/key-takeaways-from-the-fiery-white-house-meeting-with-trump-and-zelenskyy">Key takeaways from the fiery White House meeting with Trump and Zelenskyy | Donald Trump News | Al Jazeera</a></p>
</li>
<li>
<p><a href="https://www.cbsnews.com/news/ukraine-rare-earth-minerals-trump-zelenskyy/">Zelenskyy&rsquo;s White House meeting ends in blowup with Trump and Vance over Ukraine&rsquo;s future - CBS News</a></p>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=7pxbGjvcdyY">Full Meeting between President Trump, VP Vance and Ukrainian President Zelenskyy in Oval Office</a></p>
</li>
<li>
<p><a href="https://www.kcl.ac.uk/news/understanding-the-fallout-from-the-trump-zelensky-oval-office-meeting">Understanding the fallout from the Trump-Zelenskyy Oval Office meeting | King&rsquo;s College London</a></p>
</li>
<li>
<p><a href="https://www.nytimes.com/2025/02/28/us/politics/trump-zelensky-transcript.html">Excerpts From the Fiery Exchange Between Trump and Zelensky at the White House - The New York Times</a></p>
</li>
<li>
<p><a href="https://www.atlanticcouncil.org/content-series/fastthinking/the-trump-zelenskyy-meeting-just-blew-up-what-now/">The Trump-Zelenskyy meeting just blew up. What now? - Atlantic Council</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/trump-zelenskiy-sign-minerals-deal-white-house-meeting-2025-02-28/">Trump and Zelenskiy clash, leaving Ukraine exposed in war with Russia | Reuters</a></p>
</li>
<li>
<p><a href="https://www.nytimes.com/2025/02/28/us/politics/trump-zelensky-putin.html">In Showdown With Zelensky, Trump Takes Offense on Putin’s Behalf - The New York Times</a></p>
</li>
<li>
<p><a href="https://www.pbs.org/newshour/politics/what-u-s-lawmakers-are-saying-about-trump-and-zelenskyys-clash-at-the-white-house">What U.S. lawmakers are saying about Trump and Zelenskyy’s clash at the White House | PBS News</a></p>
</li>
<li>
<p><a href="https://www.washingtonpost.com/world/2025/02/28/zelensky-trump-meeting-europe-ukraine-reactions/">Tears and shock in Ukraine and Europe after heated Zelensky-Trump meeting</a></p>
</li>
<li>
<p><a href="https://www.washingtonpost.com/politics/2025/02/28/trump-ukraine-russia-zelensky/">Contentious Trump-Zelensky meeting threatens U.S. support for Ukraine</a></p>
</li>
<li>
<p><a href="https://thehill.com/homenews/house/5169941-trump-zelensky-ukraine-clash-congress/">Trump-Zelensky clash highlights Congress at a crossroads over foreign policy</a></p>
</li>
<li>
<p><a href="https://foreignpolicy.com/2025/02/28/trump-zelensky-white-house-meeting-ukraine-global-reaction/">Trump’s Angry Meeting With Zelensky Prompts Reactions Worldwide</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/world-reacts-zelenskiy-trump-oval-office-clash-2025-02-28/">World reacts to Zelenskiy-Trump Oval Office clash</a></p>
</li>
<li>
<p><a href="https://www.nytimes.com/2025/02/28/us/politics/trump-zelensky-us-ukraine-russia.html">Trump Berates Zelensky in Fiery Exchange at the White House</a></p>
</li>
<li>
<p><a href="https://www.nbcnews.com/politics/national-security/trump-zelenskyy-clash-marks-defining-turn-away-us-defense-democracies-rcna193975">Trump-Zelenskyy clash marks a defining turn away from U.S. defense of democracies</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/us/trump-zelenskiy-clash-divides-us-republicans-dims-aid-prospects-2025-03-01/">Trump-Zelenskiy clash divides US Republicans, dims aid prospects</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/trumps-zelenskiy-outburst-culmination-weeks-frustration-2025-03-01/">Trump&rsquo;s Zelenskiy outburst a culmination of weeks of frustration</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/how-they-are-reporting-it-trump-zelenskiys-oval-office-shouting-match-2025-03-01/">How they are reporting it: Trump and Zelenskiy&rsquo;s Oval Office shouting match</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/lawmakers-us-congress-react-zelenskiy-trump-oval-office-clash-2025-02-28/">Lawmakers in US Congress react to Zelenskiy-Trump Oval Office clash</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/zelenskiy-trump-clash-will-accelerate-us-probe-fraud-ukraine-aide-senior-2025-02-28/">Zelenskiy, Trump clash will accelerate US probe of fraud in Ukraine aide, senior official says</a></p>
</li>
<li>
<p><a href="https://www.cnn.com/2025/03/01/politics/inside-trump-zelensky-meeting/index.html">Inside the 139 minutes that upended the US-Ukraine alliance</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/trump-touts-fair-deal-with-zelenskiy-white-house-2025-02-28/">Trump touts fair deal with Zelenskiy at White House</a></p>
</li>
<li>
<p><a href="https://foreignpolicy.com/2025/02/28/zelensky-trump-oval-office-meeting-critical-minerals-peace-talks-russia-ukraine-war/?tpcc=recirc_latest062921">White House Talks Between Trump, Zelensky Collapse</a></p>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=K0RYieZ4LBY">Week in Review: Trump Scolds Ukrainian President Zelenskyy</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/video/watch/idRW531928022025RP1/">Trump speech to Congress likely to be &lsquo;imperial,&rsquo; say analysts</a></p>
</li>
<li>
<p><a href="https://www.forbes.com/sites/mollybohannon/2025/02/28/trump-zelenskyy-vance-face-off-in-oval-office-shouting-match-heres-everything-they-said/">Trump, Zelenskyy, Vance Face Off In Oval Office Shouting Match—Here’s Everything They Said</a></p>
</li>
</ol>
]]></content:encoded></item><item><title>利用第三方 Deepseek API 实现 AI 辅助应用</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250207/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250207/</guid><description>利用硅基流动等第三方API替代Deepseek官方</description><content:encoded><![CDATA[<p>最近一段时间，AI 圈最热的话题莫过于 <a href="https://www.deepseek.com/">Deepseek</a>。它作为国内团队“弯道超车”的典型案例，同时受到两种不同立场群体的吹捧与批评。不过，抛开政治和技术上的争论，单从普通人使用 AI 的成本与门槛来看，Deepseek 确实做到了“AI 的普惠性”。与 OpenAI 等国外大模型运营商相比，Deepseek 的价格极为低廉，对想要学习 AI 应用，而经济条件又非常有限的用户来说，确实是最好的选择。</p>
<p>然而，<strong>受自身承载能力和大规模黑客攻击的限制，Deepseek 的官方服务器在最近一段时间经常会出现连接不稳定的问题</strong>，这给用户带来了不便。<strong>所幸，Deepseek 大模型的开源属性使其能够被部署在任何第三方服务器上</strong>。<a href="https://siliconflow.cn/zh-cn/">硅基流动</a>便是众多第三方 AI 大模型供应商之一，它与<a href="https://www.huaweicloud.com/intl/zh-cn/">华为云</a>合作，以低廉的价格，向用户提供Deepseek r1大模型的API接口应用。用户可以通过这一接口顺利使用 Deepseek 的模型功能。</p>
<p><img loading="lazy" src="/images/blog20250207/SiliconFlow.png"></p>
<h2 id="获取第三方-deepseek-api">获取第三方 Deepseek API</h2>
<p>首先，我们需要在硅基流动的<a href="https://cloud.siliconflow.cn/i/1MwHUt0X">官网</a>注册一个账号。你可以使用我的邀请码<code>1MwHUt0X</code>注册，这样，<strong>你和我都会得到 14 CNY 的免费额度</strong>，可以用来免费体验各个大模型的功能。<strong>如果免费额度用完，想要付费充值的话，就必须完成实名认证</strong>，这也是中国特色的监管要求。</p>
<p>登录硅基流动的后台，我们就能看到它所支持的一系列大模型，其中就包含当下最热门的 Deepseek R1。</p>
<p><img loading="lazy" src="/images/blog20250207/SiliconFlow2.png"></p>
<p>想要调用这些大模型为我们服务，首先要生成我们自己的 API Key。点击硅基流动后台左侧的<code>API 密钥</code>，再点击右上角的<code>新建 API 密钥</code>按钮，来新建一个 API Key。</p>
<p><img loading="lazy" src="/images/blog20250207/SiliconFlow3.png"></p>
<h2 id="结合-chatbox-使用-deepseek-r1-大模型">结合 Chatbox 使用 Deepseek R1 大模型</h2>
<p><a href="https://chatboxai.app/zh">Chatbox</a> 是一款开源的AI聊天机器人客户端，支持包括个人电脑和移动端几乎所有平台（包括网页端），能够调用多种AI模型，以实现文字对话、文生图、程序编写、文案创作等诸多用途。</p>
<p><img loading="lazy" src="/images/blog20250207/Chatbox.png"></p>
<p>出于数据安全与隐私保护的考虑，Chatbox 的所有运行数据都只存储在本地。也就是说，Chatbox 本身只是一个向AI大模型传递数据的工具，它本身并不记录用户的数据。因此，即使我们在不同设备上同时使用 Chatbox，也无法做到配置设置和历史记录的多设备共享。</p>
<p>硅基流动的<a href="https://docs.siliconflow.cn/usercases/use-siliconcloud-in-chatbox">官方文档</a>中提供了将其API接入 Chatbox 的指引。这里简单讲一下配置的重点。软件安装好以后，第一次打开会自动弹出设置界面。<del>选择&quot;添加自定义提供方&quot;，API 域名填写https://api.siliconflow.cn即可</del>。<strong>更新版本的 Chatbox 已经原生支持了硅基流动的 API 接口</strong>，只要在模型提供方处选择<code>SILICONFLOW API</code>，再填写自己的 API Key，并选择想要调用的模型即可。</p>
<p><img loading="lazy" src="/images/blog20250207/Chatbox2.png"></p>
<p>值得注意的是，硅基流动同时提供了<code>Pro/deepseek-ai/DeepSeek-R1</code>和<code>deepseek-ai/DeepSeek-R1</code>两个R1模型，只有不带<code>Pro</code>的那个模型支持消耗平台赠送的免费额度，带<code>Pro</code>的必须付费充值后才能使用，选的时候不要选错了。</p>
<p>配置好后点击保存，就可以开始和我们的AI大模型聊天了。Chatbox 软件内预置了很多好用的 Prompt 场景，可以都尝试一下。</p>
<p><img loading="lazy" src="/images/blog20250207/Chatbox3.png"></p>
<h2 id="结合vs-code的cline插件使用deepseek-r1大模型">结合VS Code的Cline插件使用Deepseek R1大模型</h2>
<p>对于开发者，<a href="https://code.visualstudio.com/">Visual Studio Code</a> 是一个非常流行的代码编辑器，同时也支持丰富的AI插件。我们可以通过这些插件让 VS Code 调用硅基流动的 Deepseek R1 大模型 API，以实现AI辅助编程的应用。</p>
<p>下载和安装好 VS Code 软件后，在它的扩展市场中搜索“AI”相关插件，比如<a href="https://github.com/cline/cline">Cline</a>，它是一款能够调用各种AI大模型来辅助用户编写程序的插件，可以提供超越代码完成或技术支持的帮助。Cline 支持 OpenRouter、Deepseek、OpenAI、Google Gemini 和 GCP Vertex 等 API 提供商。你还可以配置任何兼容 OpenAI 的 API，或通过 LM Studio/Ollama 使用本地模型。</p>
<p><img loading="lazy" src="/images/blog20250207/Cline.png"></p>
<p>打开 VS Code 软件，点击左侧的<code>插件商店</code>按钮，在搜索框中输入<code>Cline</code>，再搜索到的 Cline 页面中点击<code>安装</code>，即可在VS Code软件中安装 Cline 插件。</p>
<p><img loading="lazy" src="/images/blog20250207/Cline2.png"></p>
<p>安装完成后，点击左侧多出来的 Cline 小机器人图标打开插件。点击插件右上角的设置按钮，开始配置我们的 API 接口。在对应位置选择或填写相应的内容即可。</p>
<ul>
<li>
<p>API Provider：<code>OpenAI Compatible</code></p>
</li>
<li>
<p>Base URL：<code>https://api.siliconflow.cn/</code></p>
</li>
<li>
<p>API Key：<code>你的硅基流动API Key</code></p>
</li>
<li>
<p>Model ID：<code>deepseek-ai/DeepSeek-R1</code></p>
</li>
</ul>
<p><img loading="lazy" src="/images/blog20250207/Cline3.png"></p>
<p>最后点击保存，就可以开始通过和AI大模型聊天的方式进行代码编写了。Cline 支持一键创建目录和文件，只要使用得当，即使零基础的人也可以编写出对应需求的程序。</p>
<h2 id="结语">结语</h2>
<p>由于 Deepseek 官方服务器偶尔出现连接不上的情况，我们仍然可以通过硅基流动的第三方 API 顺利使用 Deepseek R1 大模型。通过结合 Chatbox 和 VS Code 两大工具，我们不仅可以轻松进行 AI 对话，还可以获得专业的代码编写建议。</p>
]]></content:encoded></item><item><title>美国新奥尔良新年夜恐袭事件</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250105/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20250105/</guid><description>新奥尔良新年夜恐袭事件调查</description><content:encoded><![CDATA[<p>新奥尔良的法国区，以其独特的文化和热闹的夜生活而闻名于世。1 波旁街，这条古老的街道，是法国区的心脏地带，也是游客们体验新奥尔良魅力的必经之地。这里遍布着酒吧、餐馆和各种娱乐场所，霓虹闪烁，音乐震耳欲聋。每当夜幕降临，波旁街便会化身为欢乐的海洋，游客们在这里品尝着鸡尾酒，欣赏着爵士乐，感受着这座城市的活力与激情。新年夜的波旁街更是热闹非凡，来自世界各地的人们聚集于此，共同迎接新年的到来。</p>
<p><img loading="lazy" src="/images/blog20250105/BourbonStreet.jpg"></p>
<p>然而，2025年的新年，对新奥尔良来说，注定是一个不眠之夜。午夜的狂欢还未散去，凌晨3点15分，一辆白色皮卡突然冲入波旁街拥挤的人群，尖叫声、枪声瞬间撕裂了节日欢乐的喧嚣……糖罐杯的狂欢之城，顷刻间变成了人间炼狱。14人死亡，35人受伤，这冰冷的数字背后，是14个家庭的破碎，是35个生命的重创。</p>
<h2 id="事件经过">事件经过</h2>
<p>监控画面记录下了这骇人的一幕：一辆白色福特皮卡，为了躲避一辆警车，竟然疯狂地冲上人行道，径直撞向毫无防备的人群。随后，袭击者跳下车，手持AR-10半自动步枪和格洛克手枪，疯狂扫射，两名警察在交火中受伤。最终，三名警察赶到现场，将袭击者击毙。但这短短的几分钟，却给新奥尔良的夜晚，刻下了永远无法抹去的伤痕。</p>
<p><img loading="lazy" src="/images/blog20250105/map.webp"></p>
<p>FBI将此次袭击定性为恐怖袭击，并很快查到了袭击者的身份。他是42岁的美国公民Shamsud-Din Jabbar。Jabbar来自德克萨斯州，是一名退伍军人，案发前，他租了一辆福特F-150皮卡，并在车内携带了AR-15步枪、格洛克手枪和简易爆炸装置。他甚至还留下了遗嘱。袭击发生前几个小时，Jabbar入住了他在新奥尔良通过网络平台租下的一间房屋，并在那里放置了爆炸装置，但这些爆炸装置并没有被引爆。FBI公布了一张照片，照片中是一个装有简易爆炸装置的冷藏箱。是故障还是另有原因？此外，Jabbar作案时还穿着防弹衣。种种迹象表明，这是一场有预谋、有准备的恐怖袭击。</p>
<p><img loading="lazy" src="/images/blog20250105/Jabbar.webp"></p>
<h2 id="isis-的幽灵">ISIS 的幽灵</h2>
<p>更令人震惊的是，Jabbar在袭击发生前几个小时，在社交媒体上发布了多个视频，宣称自己效忠于ISIS，并表示自己在去年夏天加入了该组织。袭击发生时，他的卡车后保险杠上，赫然悬挂着一面黑色的ISIS旗帜。ISIS，全称“伊拉克和黎凡特伊斯兰国”，也称为“伊拉克和叙利亚伊斯兰国”（ISIS）或“达伊沙”（Daesh），是一个跨国逊尼派伊斯兰主义叛乱和恐怖组织。该组织起源于 2003 年至 2011 年的伊拉克战争，其前身是“伊拉克基地组织”（AQI）。</p>
<p>ISIS 以其极端暴力和残酷的行径而臭名昭著，包括大规模处决俘虏和少数民族、性奴役妇女和女孩以及斩首士兵和平民。2014 年，ISIS 在伊拉克取得重大领土 gains 后，宣布建立一个由 ISIS 领导的哈里发国。在其控制的领土内，ISIS 对其他信仰的成员进行杀戮、强奸和虐待，并以偏离其对伊斯兰教的 harsh 解释的逊尼派穆斯林为目标。</p>
<p><img loading="lazy" src="/images/blog20250105/Destroyed_neighborhood_in_Raqqa.webp"></p>
<p>为了消灭 ISIS，国际社会付出了巨大的努力。由美国领导的军事干预最终将 ISIS 赶出了其自称的国家的城镇。2019 年 10 月，ISIS 的领导人 Abu Bakr al-Baghdadi 在叙利亚北部被美军击毙。尽管 ISIS 已经被击溃，但其意识形态的影响依然存在，一些受其极端思想吸引的“独狼”式袭击者，仍会以 ISIS 的名义发动恐怖袭击。新奥尔良的袭击事件，或许就是这样一个例子。</p>
<p><img loading="lazy" src="/images/blog20250105/Bradleys_in_Syria_2020.jpg"></p>
<h2 id="拉斯维加斯的疑云">拉斯维加斯的疑云</h2>
<p>巧合的是，就在新奥尔良恐怖袭击发生的同一天，拉斯维加斯也发生了一起爆炸案。一辆特斯拉 Cybertruck 在拉斯维加斯<strong>特朗普酒店</strong>外爆炸，造成 7 人轻伤，司机当场死亡。调查显示，这辆 Cybertruck 装载了汽油罐、野营燃料罐和大型烟花弹。警方在爆炸车辆中发现了一具尸体和一把手枪，死者身份被确认为 37 岁的现役军人 Matthew Livelsberger。拉斯维加斯警方表示，这起爆炸案似乎是一起“自杀悲剧”。调查人员认为，Livelsberger 在引爆车内爆炸物的同时开枪自杀。FBI 表示，没有证据表明 Livelsberger 对当选总统特朗普怀有敌意，他可能患有创伤后应激障碍（PTSD）和其他问题。</p>
<p><img loading="lazy" src="/images/blog20250105/vegas-cybertruck.webp"></p>
<p>新奥尔良的袭击和拉斯维加斯的爆炸案，都发生在新年第一天，都使用了租来的车辆，并且都造成了人员伤亡，这不禁让人怀疑这两起事件之间是否存在关联。更令人感到蹊跷的是，这两辆车都是通过同一个在线租车平台 Turo 租用的。尽管存在这些巧合，但 FBI 表示，目前没有发现这两起事件之间存在明确关联。新奥尔良的袭击者显然是为了造成大量人员伤亡，而拉斯维加斯的爆炸案则更像是自杀事件。然而，随着调查的深入，这两起事件之间的关联，或许会变得更加扑朔迷离……</p>
<h2 id="美国梦魇">美国梦魇</h2>
<p>在这场悲剧中，14 条鲜活的生命逝去。他们中有学生、有工人、有挚爱的家人，年龄从 18 岁到 63 岁不等，其中大多数是 20 多岁的年轻人。他们来自阿拉巴马州、路易斯安那州、密西西比州、纽约州、新泽西州，甚至还有来自英国的游客。他们的故事，令人心碎。</p>
<ul>
<li>
<p>Kareem Badawi，18岁，来自路易斯安那州巴吞鲁日，是阿拉巴马大学的大一新生。30 他成绩优异，对朋友友善，对未来充满憧憬，却不幸在这场袭击中遇难。30 他的朋友们难以接受这个事实，只能通过纹身来纪念他。30 41</p>
</li>
<li>
<p>Martin “Tiger” Bech，27岁，来自纽约市，前普林斯顿大学橄榄球明星球员，毕业后在纽约市从事网络安全领域的债券交易工作。31 他的教练和队友都记得他是一位充满活力、才华横溢的运动员。32 他的弟弟 Jack 在社交媒体上写道：“永远爱你，哥哥！你每天都激励着我，现在你可以在每一刻都陪伴着我。我会照顾好家人的，别担心。这是为了我们。” 31</p>
</li>
<li>
<p>Nikyra Dedeaux，18岁，来自密西西比州格尔夫波特，怀揣着成为护士的梦想，却在人生刚刚绽放的时候凋零。33 她的朋友 Zion Parsons 亲眼目睹了皮卡车冲向她的那一刻，至今仍无法从恐惧中走出来。33 他说：“一辆卡车撞到了拐角处，然后横冲直撞，像电影场景一样，把人抛向空中。它撞到了她，把她甩了至少 30 英尺远，我很幸运还活着。” 33</p>
</li>
<li>
<p>Reggie Hunter，37岁，来自路易斯安那州普莱里维尔，是两个孩子的父亲，在新年夜与表弟一起庆祝时不幸遇难。8 他的表弟 Shirell Robinson Jackson 说，Hunter 总是充满活力，喜欢开玩笑，他的离去给家人带来了巨大的悲痛。8 她说：“他爱他的孩子们，他的姐妹们，他的爸爸，我们所有人。他不应该这样死去。” 8</p>
</li>
</ul>
<p>这起恐怖袭击事件震惊了美国社会，各界人士纷纷表示哀悼和谴责。路易斯安那州州长 Jeff Landry 称这是一起“可怕的暴力行为”，并表示他和他的妻子正在“为所有受害者和现场的急救人员祈祷”。新奥尔良市长 LaToya Cantrell 表示，新奥尔良不会被恐怖主义吓倒，将继续举办大型活动。美国总统拜登表示，新奥尔良人民传递了一个明确的信息：他们不会让这次袭击或袭击者的妄想意识形态战胜我们。他还表示，美国将继续 relentless 地追捕 ISIS 和其他恐怖组织，他们将在这里找不到任何 safe harbor。然而，悲剧已经发生，逝去的生命无法挽回，这起事件，再次敲响了美国社会安全的警钟。</p>
<h2 id="警钟长鸣">警钟长鸣</h2>
<p>近年来，美国社会极端主义抬头，政治极化加剧，社会撕裂严重，这些都是恐怖主义滋生的温床。新冠疫情、种族不平等、政治选举等因素导致美国一些城市地区示威和反示威活动激增，意识形态对立的个人和团体相互对抗，导致了激进化、极端言论和暴力的螺旋式上升，这种现象通常被称为相互激进化。互联网的普及也为恐怖主义的传播提供了便利，一些极端组织，例如“数字哈里发”，利用网络平台招募成员、传播极端思想，煽动仇恨和暴力。此外，美国社会中存在的种族歧视、宗教冲突等问题也加剧了社会矛盾，为恐怖主义的发生提供了土壤。美国的反恐战略必须与时俱进，才能有效应对“数字哈里发”等新兴威胁。</p>
<p>新奥尔良新年恐怖袭击事件不仅夺走了 14 条无辜的生命，也给美国社会带来了深深的伤痛，并引发了人们对美国国家安全和社会凝聚力的担忧。这起事件再次提醒我们，恐怖主义是人类共同的敌人，需要国际社会携手应对。同时，我们也需要反思，如何才能消除恐怖主义滋生的土壤，例如网络极端主义和社会极化，构建一个更加和平、安全的世界。这需要政府、社会和个人的共同努力，加强监管，促进对话，消除隔阂，增进理解，才能有效预防类似悲剧的再次发生。</p>
<h2 id="来源链接">来源链接</h2>
<ol>
<li>
<p><a href="https://en.wikipedia.org/wiki/Bourbon_Street">Bourbon Street - Wikipedia</a></p>
</li>
<li>
<p><a href="https://64parishes.org/entry/bourbon-street-3">Bourbon Street - 64 Parishes</a></p>
</li>
<li>
<p><a href="https://www.aljazeera.com/gallery/2025/1/3/new-orleans-mourns-as-bourbon-street-reopens-after-truck-ramming-attack">New Orleans mourns as Bourbon Street reopens after truck-ramming attack | In Pictures News | Al Jazeera</a></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/2025_New_Orleans_truck_attack">en.wikipedia.org/wiki/2025_New_Orleans_truck_attack</a></p>
</li>
<li>
<p><a href="https://www.pbs.org/newshour/nation/new-orleans-new-years-day-ramming-is-the-latest-attack-to-use-a-vehicle-as-a-deadly-weapon">New Orleans New Year’s Day ramming is the latest attack to use a vehicle as a deadly weapon | PBS News</a></p>
</li>
<li>
<p><a href="https://www.cbsnews.com/news/new-orleans-deadly-attack-new-years-victims/">Victims of Bourbon Street attack in New Orleans include former Princeton football star, aspiring nurse, loving dad - CBS News</a></p>
</li>
<li>
<p><a href="https://www.bbc.com/news/articles/c205ek63433o">New Orleans: What we know about the attack and suspect Shamsud-Din Jabbar</a></p>
</li>
<li>
<p><a href="https://www.cbsnews.com/news/new-orleans-vehicle-crash-bourbon-street-crowd-casualties-shooting/">At least 14 killed, dozens hurt on Bourbon Street in New Orleans as driver intentionally slams truck into crowd; attacker dead - CBS News</a></p>
</li>
<li>
<p><a href="https://www.bbc.com/news/articles/crl378x8nnjo">New Orleans attacker acted alone, FBI now believes</a></p>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=N9wxkk7i9KQ">LIVE: Latest on deadly New Orleans terror attack investigation</a></p>
</li>
<li>
<p><a href="https://apnews.com/article/new-orleans-crash-islamic-state-lone-wolves-4bb6446c484737fbe9dd1b9c26a899a9">What is the Islamic State group, and what attacks has it inspired? | AP News</a></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Islamic_State">Islamic State - Wikipedia</a></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/War_against_the_Islamic_State">War against the Islamic State - Wikipedia</a></p>
</li>
<li>
<p><a href="https://www.keranews.org/2025-01-02/a-father-talks-about-losing-his-18-year-old-son-in-the-new-orleans-attack">Destroyed neighborhood in Raqqa - Islamic State - Wikipedia</a></p>
</li>
<li>
<p><a href="https://www.aljazeera.com/news/2025/1/3/fbi-suspects-soldier-behind-las-vegas-cybertruck-blast-suffered-from-ptsd">FBI suspects soldier behind Las Vegas Cybertruck blast suffered from PTSD | Crime News | Al Jazeera</a></p>
</li>
<li>
<p><a href="https://www.cbsnews.com/news/watch-live-updates-investigation-tesla-cybertruck-explosion-las-vegas/">Investigation into Cybertruck explosion in Las Vegas shows driver shot himself before the blast, officials say - CBS News</a></p>
</li>
<li>
<p><a href="https://www.cbsnews.com/news/las-vegas-cybertruck-explosion-updates/">Las Vegas Cybertruck bombing outside Trump hotel appears to be suicide of veteran who had PTSD, FBI says - CBS News</a></p>
</li>
<li>
<p><a href="https://www.hindustantimes.com/world-news/us-news/shocking-connection-between-tesla-cybertruck-explosion-and-new-orleans-massacre-revealed-101735791713253.html">Shocking connection between Tesla truck that exploded and pickup truck used in New Orleans massacre revealed - Hindustan Times</a></p>
</li>
<li>
<p><a href="https://www.start.umd.edu/publication/why-united-states-targeted-terrorism">Why the United States is Targeted by Terrorism | START.umd.edu</a></p>
</li>
</ol>
]]></content:encoded></item><item><title>Hugo &amp; PaperMod 建站技术记录</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241230/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241230/</guid><description>此页面记录了我利用 Hugo 搭建本站的部分技术细节</description><content:encoded><![CDATA[<p>早在4年前刚开始搭建本博客时，我曾写过一篇简短的<a href="/post/blog20200310/">文章</a>，介绍了我建站时使用的一些工具。如今，那篇文章中提到的很多工具都已过时。加之本次博客整体迁移，又使用了全新的 <a href="https://github.com/adityatelange/hugo-PaperMod">PaperMod </a>主题，很多功能的配置方式都发生了变化。于是我决定重新写一篇文章，记录一下我在折腾这个新主题过程中的一些技术细节。</p>
<h1 id="配置文件语法">配置文件语法</h1>
<p>Hugo 同时支持3钟配置文件语法，分别为 <code>YAML</code>、<code>TOML</code>和<code>JSON</code>。它们都是常用的数据序列化和配置文件格式，且各有特点和适用场景。</p>
<h2 id="yaml-yaml-aint-markup-language">YAML (YAML Ain&rsquo;t Markup Language)</h2>
<p><code>YAML</code>是一种人类可读的数据序列化格式，常用于配置文件和数据交换，它的语法格式为：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">John Doe</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">age</span>: <span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">city</span>: <span style="color:#ae81ff">New York</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">hobbies</span>:
</span></span><span style="display:flex;"><span>- <span style="color:#ae81ff">reading</span>
</span></span><span style="display:flex;"><span>- <span style="color:#ae81ff">traveling</span>
</span></span></code></pre></div><p>它的特点为：</p>
<ul>
<li>
<p>语法简洁，易于阅读和编写</p>
</li>
<li>
<p>支持注释、多行字符串和复杂的数据结构</p>
</li>
<li>
<p>使用缩进表示层级关系</p>
</li>
</ul>
<h2 id="toml-toms-obvious-minimal-language">TOML (Tom&rsquo;s Obvious, Minimal Language)</h2>
<p><code>TOML</code>是一种旨在成为最小配置文件格式的语言，设计目标是易于阅读和编写，它的语法格式为：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[<span style="color:#a6e22e">person</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">name</span> = <span style="color:#e6db74">&#34;John Doe&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">age</span> = <span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">city</span> = <span style="color:#e6db74">&#34;New York&#34;</span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">person</span>.<span style="color:#a6e22e">hobbies</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">favorite</span> = <span style="color:#e6db74">&#34;reading&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">others</span> = [<span style="color:#e6db74">&#34;traveling&#34;</span>, <span style="color:#e6db74">&#34;photography&#34;</span>]
</span></span></code></pre></div><p>它的特点为：</p>
<ul>
<li>
<p>语法直观，易于理解</p>
</li>
<li>
<p>支持注释</p>
</li>
<li>
<p>支持多种数据类型，包括日期时间</p>
</li>
<li>
<p>允许创建嵌套的数据结构</p>
</li>
</ul>
<h2 id="json-javascript-object-notation">JSON (JavaScript Object Notation)</h2>
<p>JSON是一种轻量级的数据交换格式，最初源于JavaScript，但现在已广泛应用于各种编程语言，它的语法格式为：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;name&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;John Doe&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;age&#34;</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">30</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;city&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;New York&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>它的特点为：</p>
<ul>
<li>
<p>简洁易读</p>
</li>
<li>
<p>解析速度快</p>
</li>
<li>
<p>与JavaScript高度兼容</p>
</li>
<li>
<p>支持基本数据类型：字符串、数字、布尔值、null、对象和数组</p>
</li>
</ul>
<p>综合考虑易读性及与当前主题的兼容性，我选择的配置文件语法为<code>YAML</code>，以下所有配置命令，都将以<code>YAML</code>格式呈现。值得注意的是，<strong>YAML对缩进非常敏感，在利用 Hugo 进行渲染时，哪怕某一行少了一个空格，都会渲染失败，所以要特别注意</strong>。</p>
<h1 id="添加文章时间轴页面archives">添加文章时间轴页面（Archives）</h1>
<p>在<code>/Content/</code>目录下新建<code>archieves.md</code>，写入以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>title: &#34;Archive&#34;
</span></span><span style="display:flex;"><span>layout: &#34;archives&#34;
</span></span><span style="display:flex;"><span>url: &#34;/archives/&#34;
</span></span><span style="display:flex;"><span>summary: archives
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><h1 id="添加搜索页面search">添加搜索页面（Search）</h1>
<p>第1步：在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">outputs</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">home</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#ae81ff">HTML</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#ae81ff">RSS</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#ae81ff">JSON</span> <span style="color:#75715e"># 搜索页所必需</span>
</span></span></code></pre></div><p>第2步：在<code>/Content/</code>目录下新建<code>archieves.md</code>，写入以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#e6db74">&#34;Search&#34;</span> <span style="color:#75715e"># 以你想要的任何语言</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">layout</span>: <span style="color:#e6db74">&#34;search&#34;</span> <span style="color:#75715e"># 搜索页所必需</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># url: &#34;/archive&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># description: &#34;Description for Search&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">summary</span>: <span style="color:#e6db74">&#34;search&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">placeholder</span>: <span style="color:#e6db74">&#34;在此输入搜索关键词&#34;</span>
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><h1 id="添加菜单">添加菜单</h1>
<p>在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">menu</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">main</span>:
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">文章</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">url</span>: <span style="color:#ae81ff">archives</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">weight</span>: <span style="color:#ae81ff">5</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">搜索</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">url</span>: <span style="color:#ae81ff">search/</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">weight</span>: <span style="color:#ae81ff">10</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">标签</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">url</span>: <span style="color:#ae81ff">tags/</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">weight</span>: <span style="color:#ae81ff">10</span>
</span></span><span style="display:flex;"><span>    - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">关于</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">url</span>: <span style="color:#ae81ff">about/</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">weight</span>: <span style="color:#ae81ff">10</span>
</span></span></code></pre></div><h1 id="启用-emoji-white_check_mark">启用 Emoji &#x2705;</h1>
<p>Hugo 原生支持 Emoji 渲染，只要在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">enableEmoji</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><p>这样，只要在<code>.md</code>文件中输入符合 Markdown 语法的<code>:emojiname:</code>（两个半角冒号中间写上 Emoji 名称），即可输入一个 Emoji。你可以在<a href="https://gist.github.com/rxaviers/7360908">这个列表</a>中查询 Markdown 语法中的 Emoji 名称。</p>
<h1 id="添加-favicon-图标">添加 Favicon 图标</h1>
<p>可以参考我的这篇<a href="/post/blog20210527/">文章</a>，访问<a href="https://favicon.io/">这个网站</a>，将你喜欢的站点图标图片转换成<code>Favicon</code>专用格式，将生成的所有文件放入<code>/static/</code>目录下。</p>
<p>可选：如果想将图标文件放入<code>/static/</code>的子目录下，例如<code>/static/favicon/</code>，则还需在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">assets</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">favicon</span>: <span style="color:#e6db74">&#34;/favicon/favicon.ico&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">favicon16x16</span>: <span style="color:#e6db74">&#34;/favicon/favicon-16x16.png&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">favicon32x32</span>: <span style="color:#e6db74">&#34;/favicon/favicon-32x32.png&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">apple_touch_icon</span>: <span style="color:#e6db74">&#34;/favicon/apple-touch-icon.png&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">safari_pinned_tab</span>: <span style="color:#e6db74">&#34;/favicon/safari-pinned-tab.svg&#34;</span> 
</span></span></code></pre></div><h1 id="启用代码复制按钮">启用代码复制按钮</h1>
<p>在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">ShowCodeCopyButtons</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><h1 id="翻页按钮显示页数">翻页按钮显示页数</h1>
<p>在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">ShowPageNums</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><h1 id="文章列表页面添加rss订阅按钮">文章列表页面添加RSS订阅按钮</h1>
<p>在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">ShowRssButtonInSectionTermList</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><h1 id="rss-feed-输出全文">RSS Feed 输出全文</h1>
<p>在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">ShowFullTextinRss</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><h1 id="以新标签页打开站外链接">以新标签页打开站外链接</h1>
<p>在<code>/themes/主题名/layouts/_default/_markup/</code>目录下新建<code>render-link.html</code>，写入以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;{{ .Destination | safeURL }}&#34;</span><span style="color:#960050;background-color:#1e0010">{{</span> <span style="color:#a6e22e">with</span> <span style="color:#960050;background-color:#1e0010">.</span><span style="color:#a6e22e">Title</span><span style="color:#960050;background-color:#1e0010">}}</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;{{ . }}&#34;</span><span style="color:#960050;background-color:#1e0010">{{</span> <span style="color:#a6e22e">end</span> <span style="color:#960050;background-color:#1e0010">}}{{</span> <span style="color:#a6e22e">if</span> <span style="color:#a6e22e">strings</span><span style="color:#960050;background-color:#1e0010">.</span><span style="color:#a6e22e">HasPrefix</span> <span style="color:#960050;background-color:#1e0010">.</span><span style="color:#a6e22e">Destination</span> <span style="color:#960050;background-color:#1e0010">&#34;</span><span style="color:#a6e22e">http</span><span style="color:#960050;background-color:#1e0010">&#34;</span> <span style="color:#960050;background-color:#1e0010">}}</span> <span style="color:#a6e22e">target</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;_blank&#34;</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;noopener&#34;</span><span style="color:#960050;background-color:#1e0010">{{</span> <span style="color:#a6e22e">end</span> <span style="color:#960050;background-color:#1e0010">}}</span>&gt;{{ .Text | safeHTML }}&lt;/<span style="color:#f92672">a</span>&gt;
</span></span></code></pre></div><h1 id="自定义超链接样式">自定义超链接样式</h1>
<p>PaperMod 主题支持自定义CSS，我们可以通过自定义CSS改变网站默认的超链接样式，如颜色、下划线，以及鼠标悬停时的变化等。</p>
<p>在<code>/themes/主题名/assets/css/extended/</code>目录下新建<code>custom.css</code>，写入以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-css" data-lang="css"><span style="display:flex;"><span>.<span style="color:#a6e22e">post-content</span> <span style="color:#f92672">a</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">color</span>: <span style="color:#ae81ff">#0969da</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">box-shadow</span>: <span style="color:#66d9ef">none</span>;
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">text-decoration</span>: <span style="color:#66d9ef">none</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>.<span style="color:#a6e22e">post-content</span> <span style="color:#f92672">a</span>:<span style="color:#a6e22e">hover</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">text-decoration</span>: <span style="color:#66d9ef">underline</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>这段代码会将文章内容中的超链接颜色设置为蓝色(#0969da)，并在鼠标悬停时添加下划线。</p>
<h1 id="seo-优化相关">SEO 优化相关</h1>
<p><strong>SEO (Search Engine Optimization) 是一种通过优化网站内容和结构来提高网站在搜索引擎结果页面中自然排名的方法</strong>。SEO的目标是增加网站的有机流量，提升网站的可见度，吸引更多目标受众。要为 Hugo 站点做 SEO 优化，我们需要做好以下工作：</p>
<h2 id="配置文件优化">配置文件优化</h2>
<p>在配置文件<code>config.yml</code>中添加网站描述：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">description</span>: <span style="color:#e6db74">&#34;您的网站描述&#34;</span>
</span></span></code></pre></div><p>同样，我们也可以为每篇文章设置标题、关键词和描述，在<code>.md</code>文件的头部添加以下内容，来定义文章的基本信息：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>title: &#34;文章标题&#34;
</span></span><span style="display:flex;"><span>keywords:
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">-</span> 关键词1
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">-</span> 关键词2
</span></span><span style="display:flex;"><span>description: &#34;文章描述&#34;
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><h2 id="创建-sitemap-站点地图">创建 sitemap 站点地图</h2>
<p>站点地图是一个重要的网站文件，它为搜索引擎和用户提供了网站结构的概览。要为 Hugo 站点创建站点地图，在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">sitemap</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">changefreq</span>: <span style="color:#ae81ff">weekly</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">filename</span>: <span style="color:#ae81ff">sitemap.xml</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">priority</span>: <span style="color:#ae81ff">0.5</span>
</span></span></code></pre></div><p>其中，<code>changefreq</code>表示更新频率，<code>filename</code>表示生成的站点地图文件名，<code>priority</code>表示页面的默认优先级。这样，Hugo 会在网站根目录下生成一个<code>sitemap.xml</code>文件，以便搜索引擎了解网站结构。</p>
<h2 id="创建-robotstxt-爬虫索引">创建 robots.txt 爬虫索引</h2>
<p><code>Robots.txt</code>是一个位于网站根目录的纯文本文件，用于将站点地图提交给搜索引擎，指导搜索引擎如何访问和索引网站内容。要为 Hugo 站点创建<code>robots.txt</code>，在配置文件<code>config.yml</code>中添加以下内容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">enableRobotsTXT</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><p>这样，Hugo 会自动在网站根目录下生成<code>Robots.txt</code>文件。</p>
<h1 id="参考链接">参考链接</h1>
<p><a href="https://gohugo.io/about/introduction/">Introduction | Hugo</a></p>
<p><a href="https://github.com/adityatelange/hugo-PaperMod/wiki">Home · adityatelange/hugo-PaperMod Wiki</a></p>
<p><a href="https://dvel.me/posts/hugo-papermod-config/">折腾 Hugo &amp; PaperMod 主题 - Dvel&rsquo;s Blog</a></p>
<p><a href="https://eddy.lu/posts/hugo/">搭建 Hugo 个人网站｜PaperMod 主题 | ed</a></p>
<p><a href="https://www.shaohanyun.top/posts/env/blog_build2/">PaperMod主题配置 | 🚀 田少晗的个人博客</a></p>
]]></content:encoded></item><item><title>2024阿塞拜疆航空8243号航班空难</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241228/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241228/</guid><description>阿塞拜疆航空8243号空难调查</description><content:encoded><![CDATA[<p>2024年12月25日上午9点25分，一架载有67人的飞机，在哈萨克斯坦阿克套国际机场附近发生坠毁。事故导致38人遇难，震惊全球。直到目前，事故背后的真相仍未完全揭开，迷雾笼罩之下，事故的原因、影响以及后续正吸引着全世界的目光。</p>
<h2 id="事故背景">事故背景</h2>
<p>事发地点阿克套，位于哈萨克斯坦西部、里海沿岸。这个城市的名字在哈萨克语中意为“白色山地”，因为从里海望去，阿克套的地貌和城市景色呈现出一片苍白的色调。根据2019年的统计数据，阿克套的常住人口仅为18万人。起初，这里因石油开采而兴起，直到如今，仍带有浓厚的工业气息。然而，正是在这座湖滨小城，一场突如其来的灾难打破了宁静。</p>
<p>发生事故的J2-8243航班，是阿塞拜疆航空公司的一趟国际航班，由阿塞拜疆首都巴库飞往俄罗斯的格罗兹尼国际机场。航班的机型为巴西航空工业生产的E190AR型客机，是一款中短程窄体客机。飞机长36米，能够容纳98~114人。</p>
<p><img loading="lazy" src="https://cdn.jetphotos.com/full/5/1141744_1702215378.jpg"></p>
<p>12月25日清晨，巴库国际机场，航班的起飞时间已临近，乘客们陆续登上飞机。随着塔台的指令，飞机开始滑行进入跑道。此时，乘客们或许并未意识到，这趟本应平凡无奇的航班，正朝着一个充满未知与危机的方向飞去。</p>
<h2 id="事故经过">事故经过</h2>
<p>简单看一眼地图就会发现，<strong>这趟航班从阿塞拜疆的巴库起飞，目的地是西北方的格罗兹尼。然而飞机最终跨越了一整个里海，飞向了远在湖对岸阿克套，明显不符合常理</strong>。航班追踪网站 Flightrader24 显示，事发航班从巴库飞往格罗兹尼的途中，在跨越俄罗斯国境线时，GPS 信号受到异常干扰。紧接着，航班开始偏离原定航线，先是朝向西方，而后又180度掉头，朝向东边的里海飞去。最终来到里海对岸的阿克套，向当地塔台请求迫降。</p>
<p><img loading="lazy" src="/images/blog20241228/flightrader24.webp"></p>
<p>根据纽约时报对一位空难幸存者的采访，当时航班上，起初的一切如常。然而，随着飞行的继续，一些乘客开始察觉到异样的震动——最初是一阵轻微的颠簸，几乎无人注意；接着是更加剧烈的颤动，窗外的云层翻滚，机舱内传来细碎的杂音。接着，剧烈的震动几乎把所有人从座位上抛起。氧气面罩从头顶掉落，机舱内响起了混乱的呼喊声。乘客们慌乱地抓住面罩，试图恢复平静。机组人员的声音此刻也变得急促，但不完全清晰。在这一瞬间，他们意识到，这并不是一次简单的气流颠簸，而是某种更加致命的威胁。</p>
<p>从当地居民拍摄的视频中不难看出，在飞机迫降的过程中，尽管驾驶员竭尽全力想要控制飞机的降落姿势，但巨大的冲击力和瞬间的失速已经使飞机机身失去平衡。最终，飞机以过大的角度俯冲向地面，右翼先触地，随后翻滚爆炸，机体分裂为两部分。机头部分在触地瞬间被爆炸摧毁，尾部则倒置在主要残骸之外。</p>
<p>公开数据显示，事故航班上共有67人，其中来自阿塞拜疆的有37人，占比一半以上；其次是俄罗斯16人，哈萨克斯坦6人、吉尔吉斯斯坦3人。事故发生前一刻，有乘客用手机拍下了机舱内的情况。</p>
<p><img loading="lazy" src="/images/blog20241228/passengers.png"></p>
<p>这是一起极其严重的空难事故，机上67人中，有38人遇难。最后生还者中也不乏颅脑损伤、脑震荡、胸部损伤及创伤性休克等重伤患者。事故发生次日，阿塞拜疆总统宣布进行全国哀悼。</p>
<h2 id="事故原因分析">事故原因分析</h2>
<p>事故发生后，俄罗斯联邦航空运输署发表声明称，初步相信飞机遭遇鸟群撞击，因机上紧急情况，机长决定改道飞往阿克套机场。然而事实真的如此吗？</p>
<p>从事故现场的拍摄的视频中不难看出，<strong>事发飞机的残骸上，存在多处类似单孔的痕迹</strong>。结合 Flightrader24 网站上显示的异常 GPS 干扰信息，我们不得不怀疑，此次事故是否与俄罗斯境内的防空系统有关。</p>
<p>自从2022年2月俄乌战争爆发以来，俄罗斯在中亚和东欧的国境线附近一直都火药味十足。就在事故发生前的12月21日，乌克兰对俄罗斯境内的喀山市发动无人机空袭，造成市内两栋高层住宅楼受损，这是战争爆发以来，乌克兰罕见地对俄罗斯境内城市发动空袭。在这种情况下，俄罗斯的防空系统一直处于高度警戒状态。</p>
<p>因此，此次的阿航8243航班，很可能是被俄罗斯的防空系统所击落。<strong>飞机在飞跃俄罗斯国境线附近时，被俄罗斯防空系统误认，进而发生 GPS 干扰和防空射击。又由于附近机场因大雾天气而无法降落，机长不得不调转方向，操控着受损的机身朝东边的里海飞去</strong>。最后在里海沿岸的哈萨克斯坦境内迫降失败，导致飞机坠落。</p>
<p>路透社的几篇报道也有相同观点。该社援引部分事故幸存者的说法称，当飞机接近最初目的地格罗兹尼时，他们听到几声巨响；四名了解事故调查初步结果的消息人士称，事故飞机是被俄军的铠甲-S（Pantsir-S）地对空导弹系统击中。飞机在接近格罗兹尼时，机上的通讯系统被电子战系统瘫痪。</p>
<p>虽然截至目前，事故的最终调查报告还未发布，我们无法100%断言此次事故就是与俄罗斯有关。但在历史上，俄罗斯已经不止一次地与民航空难产生联系。</p>
<h2 id="类似事故">类似事故</h2>
<p>早在10年前，彼时正值乌克兰克里米亚危机时期。2014年7月17日，中午12点15分，马来西亚航空MH17航班从荷兰阿姆斯特丹机场起飞，飞往马来西亚吉隆坡。下午16点20分，执飞该航班的波音777-200ER型客机在乌克兰东部空域巡航时突然坠毁，机上283名乘客和15名机组成员全部遇难。事故<a href="https://onderzoeksraad.nl/wp-content/uploads/2023/11/debcd724fe7breport_mh17_crash.pdf">调查报告</a>表明，马航MH17航班是被俄军发射的山毛榉导弹摧毁。然而，俄罗斯官方至今都否认这起空难是俄军攻击导致，并声称乌克兰空军才是事故的真正元凶。</p>
<p><img loading="lazy" src="/images/blog20241228/MH17.jpg"></p>
<p>自从人类发明民航飞机以来，大大小小的空难便从未停歇。不论是这次的阿航8243空难、还是十年前的马航MH17空难，都是一次深刻的警示。无论是因技术故障、恶劣天气，还是因人为错误，空难的发生无一不带来深刻的痛苦和反思。然而，有些空难的背后，隐藏着更为沉重的代价——战争、恐怖袭击、政治斗争。这些无辜的生命，因全球纷争和冲突而被夺去，他们不仅是航班上的乘客，更是和你我一样的普通人，他们也曾有过梦想、有过家人、有过属于自己的生活轨迹。</p>
<p>我们对逝者的缅怀，同时也是对自己的缅怀，丧钟正为每个人而孤鸣。未来，我们必须呼吁和平的声音，寻求一种更理性、更宽容的世界秩序。让那些逝去的灵魂得到安宁，让所有家庭不再因纷争而遭受无辜的破坏。</p>
<h2 id="来源链接">来源链接</h2>
<ol>
<li>
<p><a href="https://zh.wikipedia.org/wiki/%E9%98%BF%E5%A1%9E%E6%8B%9C%E7%96%86%E8%88%AA%E7%A9%BA8243%E5%8F%B7%E7%8F%AD%E6%9C%BA%E7%A9%BA%E9%9A%BE">阿塞拜疆航空8243号班机空难 - 维基百科，自由的百科全书</a></p>
</li>
<li>
<p><a href="https://zh.wikipedia.org/wiki/%E9%98%BF%E5%85%8B%E5%A5%97">阿克套 - 维基百科，自由的百科全书</a></p>
</li>
<li>
<p><a href="https://zh.wikipedia.org/wiki/%E5%B7%B4%E8%A5%BF%E8%88%AA%E7%A9%BA%E5%B7%A5%E4%B8%9AE%E7%B3%BB%E5%88%97">巴西航空工业E系列 - 维基百科，自由的百科全书</a></p>
</li>
<li>
<p><a href="https://www.flightradar24.com/data/flights/j28243#3879c26d">Flight history for Azerbaijan Airlines flight J28243</a></p>
</li>
<li>
<p><a href="https://www.nytimes.com/2024/12/27/world/europe/azerbaijan-airlines-crash-kazakhstan-survivors.html">Kazakhstan Plane Crash Survivors Describe Chaos on Azerbaijan Airlines Flight - The New York Times</a></p>
</li>
<li>
<p><a href="https://gbcode.rthk.hk/TuniS/news.rthk.hk/rthk/ch/component/k2/1784982-20241225.htm">阿塞拜疆航空客机坠毁　俄监管机构相信与鸟群相撞后出现紧急情况 - RTHK</a></p>
</li>
<li>
<p><a href="https://www.rfi.fr/cn/%E5%9B%BD%E9%99%85%E6%8A%A5%E9%81%93/20241222-%E4%B9%8C%E5%85%8B%E5%85%B0%E6%97%A0%E4%BA%BA%E6%9C%BA%E6%B7%B1%E5%85%A5%E4%BF%84%E5%A2%83-%E5%87%BB%E4%B8%AD%E5%96%80%E5%B1%B1%E5%B8%82%E9%AB%98%E6%A5%BC%E5%B1%82%E5%85%AC%E5%AF%93">乌克兰无人机深入俄境 击中喀山市高楼层公寓</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/asia-pacific/passenger-crashed-plane-says-there-was-least-one-loud-bang-before-it-went-down-2024-12-27/">Exclusive: Survivors on Azerbaijani plane say they heard bangs before it went down | Reuters</a></p>
</li>
<li>
<p><a href="https://www.reuters.com/world/asia-pacific/azerbaijan-airlines-flight-was-downed-by-russian-air-defence-system-four-sources-2024-12-26/">Russian air-defense system downed Azerbaijan plane, sources say | Reuters</a></p>
</li>
<li>
<p><a href="https://www.rfi.fr/cn/%E5%9B%BD%E9%99%85/20241226-%E5%88%9D%E6%AD%A5%E8%B0%83%E6%9F%A5%E6%98%BE%E7%A4%BA%E9%98%BF%E5%A1%9E%E6%8B%9C%E7%96%86%E8%88%AA%E7%A9%BA%E5%85%AC%E5%8F%B8%E8%88%AA%E7%8F%AD%E8%A2%AB%E4%BF%84%E7%BD%97%E6%96%AF%E9%98%B2%E7%A9%BA%E9%83%A8%E9%98%9F%E5%87%BB%E8%90%BD">初步调查显示阿塞拜疆航空公司航班被俄罗斯防空部队击落</a></p>
</li>
<li>
<p><a href="https://zh.wikipedia.org/wiki/%E9%93%A0%E7%94%B2-S1%E5%AF%BC%E5%BC%B9">铠甲-S1导弹 - 维基百科，自由的百科全书</a></p>
</li>
<li>
<p><a href="https://www.government.nl/topics/mh17-incident/investigation-by-the-dutch-safety-board">Investigation by the Dutch Safety Board | MH17 incident | Government.nl</a></p>
</li>
</ol>
]]></content:encoded></item><item><title>HomeAssistant 米家官方集成的安装与使用</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241227/</link><pubDate>Fri, 27 Dec 2024 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241227/</guid><description>日常技术记录</description><content:encoded><![CDATA[<h2 id="背景">背景</h2>
<p>我在2022年4月的<a href="/post/blog20220409/">一篇文章</a>中介绍了 <a href="https://www.home-assistant.io/">Home Assistant</a> 的安装与配置方法。彼时，要将小米的众多智能家居接入 HA，我们必须安装一个第三方 HA 集成，即 <a href="https://github.com/al-one/hass-xiaomi-miot">Hass-Xiaomi-Miot</a>。它由个人开发者 <a href="https://github.com/al-one">al-one</a> 在 Github 上发布，一直以来都是我们将米家接入 HA 的唯一选择。直到最近，<a href="https://github.com/XiaoMi">小米</a>在 Github 上发布了官方的 HA 集成：<a href="https://github.com/XiaoMi/ha_xiaomi_home">HA_Xiaomi_Home</a>，填补了米家接入 HA 的空白。</p>
<p>虽然这又是一个“官方逼死同人”的故事，但小米的开源精神仍然值得称赞。与第三方集成相比，小米官方的集成对自家产品支持更好， 能够帮助我们更加轻松地将米家接入 HA，进而实现米家与 Homekit 生态的互联互通。今天，我们将跟随 HA_Xiaomi_Home 的<a href="https://github.com/XiaoMi/ha_xiaomi_home/blob/main/doc/README_zh.md">官方文档</a>，详细介绍一下这个集成的安装及使用方法。</p>
<h2 id="通过-hasc-安装米家官方集成">通过 HASC 安装米家官方集成</h2>
<p>米家官方集成有多种安装方式，其中最简单，也是最新手友好的方式，就是通过 <a href="https://www.hacs.xyz/">HACS</a> 进行安装。HASC 的安装方法详见我的这篇文章，此处不再赘述。<strong>由于米家官方集成暂未加入 HASC 的官方库，我们需要通过添加自定义库链接的方式，将米家官方集成的库链接添加到 HASC 目录</strong>。登入 HA 后台，点击左侧的<code>HASC</code>，再点右上角的三个点，选择<code>Custom Repositories</code>，新建一个自定义库链接，如下图所示。</p>
<p><img alt="image" loading="lazy" src="/images/blog20241227/hacs1.png"></p>
<p>库类型（Catagory）选择<code>Integration</code>；库链接填写下面的链接：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>https://github.com/XiaoMi/ha_xiaomi_home.git
</span></span></code></pre></div><p>最后点击ADD按钮，如果网络没有问题的话，米家官方集成的安装链接就会被添加到 HASC 的自定目录中。再依次点击设置—设备与集成—添加集成，在搜索框中输入<code>Xiaomi</code>，在弹出的结果中选择<code>XIaomi Home</code>。接下来，按照提示登录米家账号即可。</p>
<p><img alt="image" loading="lazy" src="/images/blog20241227/hacs2.png"></p>
<p><img loading="lazy" src="/images/blog20241227/xiaomi-home-auth1.png"></p>
<p>注意&#x26a0;&#xfe0f;：<strong>如果你和我一样，使用 Docker 作为 HA 的安装环境，那么大概率会在米家账号验证时遇到无法跳转的问题</strong>。无法跳转的核心原因在于，米家官方集成默认使用 <code>homeassistant.local:8123</code>这个本地域名来跳转回 HA 页面，而 Docker 容器中的 HA 无法在本地局域网中广播<code>.local</code>本地域名。因此，在验证米家账号并跳转回 HA 页面时，我们需要手动将浏览器地址栏中的<code>homeassistant.local:8123</code>改为<code>IP:8123</code>。这样就能完成米家账号的验证工作。以上方法参考自米家集成仓库的 <a href="https://github.com/XiaoMi/ha_xiaomi_home/issues/8">Issue#8</a>。</p>
<p><img loading="lazy" src="/images/blog20241227/xiaomi-home-auth.png"></p>
<h1 id="停用多余的米家实体">停用多余的米家实体</h1>
<p>当我们安装好米家官方集成并完成账号验证后，HA 就会自动搜索并添加米家的各种设备。同时，我们的家庭中会出现一堆乱七八糟的实体。<strong>所谓实体（Unit）是 HA 用来定义设备最小子功能单元的概念</strong>。通常一个设备会对应多个实体。例如，一台『热水器』设备，可以同时拥有『当前水温』、『目标水温』、『预热开关』、『增压开关』等多个实体。</p>
<p>然而在日常使用过程中，我们并不需要将每一个设备都拆分成诸多零碎的子功能单元，这样不仅使人迷惑，还会让我们的家庭界面变得极其繁琐。因此，在将 HA 链接到 Homekit 之前，我们需要对米家集成添加进来的众多实体进行筛选，仅保留我们日常使用过程中最需要的开关和数值即可。</p>
<p>依次点击设置—设备与集成—实体，在列表中点击我们不需要的实体，在弹出的对话框中关闭该实体，最后点击保存。这样，我们便停用了一个不需要的实体。</p>
<p><img loading="lazy" src="/images/blog20241227/ha-unit.png"></p>
<h1 id="将-ha-桥接到-homekit">将 HA 桥接到 Homekit</h1>
<p>筛选掉不需要的米家实体后，我们就可以将 HA 桥接到 Homekit 了。对于大多数人而言，将米家接入 HA 的唯一目的，便是实现米家与 Homekit 的联通。Homekit 是苹果原生的智能家居协议，能够让用户在 iOS、Mac 和 Apple Watch 等苹果设备上直接操控家中的电器，而无需借助第三方 APP。众所周知，Homekit 家居生态远不如米家繁荣，且支持 Homekit 协议的产品价格大多高昂。因此，如果将米家生态接入 Homekit，便能实现便利性与性价比的两全。而 HA 正是联通米家与 Homekit 的最佳桥梁。</p>
<p>将 HA 实体桥接到 Homekit，我们需要安装另一个集成：<a href="https://www.home-assistant.io/integrations/homekit/">Homekit Bridge</a>。依次点击设置—设备与集成—添加集成，在搜索框中输入<code>Homekit Bridge</code>，再按提示安装即可。安装完成后，HA 通知栏会弹出一个二维码。打开苹果设备的 Home APP，点击右上角加号——添加配件，扫描通知中的这个二维码，就能将 HA 上现有的实体全部桥接到 Home APP中了。</p>
]]></content:encoded></item><item><title>关于个人博客迁移的絮叨</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241226/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20241226/</guid><description>关于博客迁移和主题更换</description><content:encoded><![CDATA[<h2 id="关于博客迁移">关于博客迁移</h2>
<p>由于一些个人原因，<strong>我在今年年中时注销了我的Google账号。这导致我的<a href="https://github.com/ibrights/">原 Github 账号</a>无法进行 2FA 认证，也就无法继续在<a href="https://ibrights.github.io/">原博客地址</a>更新文章</strong>。于是我重新申请了新的 <a href="https://github.com/masonblog/">Github 账号</a>，并将之前的文章都迁移到了这里。</p>
<p>不知道有多少人收藏了我的原博客地址？可能从他们的视角看来，我已经永久停更了吧。在弱社交的静态博客平台发布个人文章，最大的弊端就是无法与读者取得联系。我无法将这篇博客迁移的通知转发给任何老读者，实在非常遗憾&#x1f61e;。</p>
<p>既然同时更换了 Github 账号和博客地址，我索性把自己的笔名也从 Bright 变为了 Mason。说起来，Bright 这个看上去并不那么 Native 的名字，其实来源于一款我最喜欢的电子游戏——《英雄传说：空之轨迹》（Bright 是游戏主角一家的姓）。在我读研期间，我的 Legal English 老师，一位名叫 David 的旧金山老男孩，曾委婉地告诉我，Bright这个名字并不适合我。于是我启用了 Mason 这个更加 Native 的名字，虽然我依然非常喜欢 Bright 这个词&#x1f642;。</p>
<p>我说这些，是想告诉那些碰巧发现这篇新博客的老读者们：<strong>Bright 和 Mason 其实是同一个人</strong>。不过说这些大概也是徒劳，就让一切都随风吧&#x1f44b;。</p>
<h2 id="关于博客主题更换">关于博客主题更换</h2>
<p>一直以来，我都用 <a href="https://gohugo.io/">Hugo</a> 生成自己的静态博客（具体方法可以参考我的<a href="/post/blog20200310">这篇文章</a>），使用的主题是一位国人开发者写的 <a href="https://github.com/dsrkafuu/hugo-theme-fuji">Hugo-fuji</a>。这款主题非常简洁，我很喜欢。<strong>可惜 Hugo 的更新版本弃用了几个 Hugo-fuji 所依赖的模块，导致这一主题无法兼容当前版本的 Hugo。而该主题的作者似乎早在两三年前就停止了对项目的维护。因此，我不得不更换博客主题</strong>。</p>
<p>搜了一圈，发现简洁好看的主题实在很少，最终我选择了 <a href="https://github.com/adityatelange/hugo-PaperMod">Hugo-papermod</a>，也就是大家现在看到的这个主题。这个主题支持更多的自定义功能，对各平台的适应性支持也做得很好，只不过用起来不如 Hugo-fuji 那样简单。</p>
<p>以上就是关于博客迁移和主题更换的絮叨，希望你没有不耐烦。后面，我会继续在这里更新文章，并稍微提高一点更新频率。致于 YouTube 和播客，我也想重启更新。不知这次又能坚持多久？</p>
]]></content:encoded></item><item><title>保持谦逊，对抗虚无</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20240215/</link><pubDate>Thu, 15 Feb 2024 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20240215/</guid><description>偶尔记录生活</description><content:encoded><![CDATA[<p>于我而言，2023无疑是漫长的一年。年底时，各大媒体和自媒体照例都会制作一些“年度总结“式的专题。每当我看到这些专题，并且恰好读到2023年初的新闻回顾，都会惊讶于它居然发生在2023，而不是更早的2022或2021。这对于一个即将步入30年的我来说很不寻常，因为在我的印象里，只有身处迷茫而无所事事的童年时代，才会觉得时间过得太慢。</p>
<h1 id="为什么要对抗虚无">为什么要对抗虚无</h1>
<p>2023年，我经历了工作与感情方面的许多变故。虽然好在事情基本都已解决，但新的问题仍然层出不穷。我没法断定自己乃至整个时代是否还在走上坡路，未来的巨大不确定性也无时无刻不将我推向虚无。我是一个不想苟活的人，但是随着时间的推移，我越来越感受到世界的荒诞，以及身为这荒诞世界一部分的人生的虚无。</p>
<p>就在2023年的最后一个工作日，我发了一条朋友圈，将过去一年的经历草草总结为“工伤、手术、换房、买车、求婚”。就像在编写另一个时空中与我无关的某个人的编年史一般，我的经历也不过是寥寥几个简单的词汇。过去的我总是傲慢地将这些毫无重要性可言的经历视为自己重要历史的一部分，甚至在一篇又一篇潦草的“年末总结”中对它们加以记录，似乎是想要对抗人生的这种无意义性。但我渐渐发现，人生的虚无并非仅限于叙述层面，它是结结实实的存在。这种存在远高于我们本身的存在，也远早于我们本身的历史。</p>
<p>那我们是否就要因此接受这种虚无呢？我们在进行人生的某些看似重要的选择时，是否还需要认真对待？既然世界本就荒诞，人生也本就虚无，那我们还为什么要挣扎着做出选择？对于这个问题，我思考了很久，尤其是车祸受伤后躺在医院病床上的时候。尽管现在仍然没有确切的答案，但一个模糊的想法已经出现在我脑中：我要对抗虚无。</p>
<p>世界的荒诞性也许无法被撼动，但这不影响我们对抗人生的虚无。所谓“人生的虚无”，是结果论上的说法，即无论我们如何努力挣扎，从结果上都不会有任何意义。但我们出生在这世上，可能并非为了追求某种结果，也并非为了创造某种意义。我们存在的过程本身才应该是我们所追求的。</p>
<p>多年以前，有人和我严肃地讨论过这样一个问题：如果事先知道一段感情最终不会有任何好的结果，那我们是否还要坚持维护这段感情？当时的我对这个问题模棱两可，不知道其中的深意在哪。现在想去，它刚好诠释了我们对抗虚无的理由。一段感情存在的意义并不在于它是否能有一个好的结果，而在于它是否给身处其中的人带来片刻的平静与喜悦。即使事先知道一段感情没有结果，我也应该努力接受、维护并享受它。这既是对抗虚无的过程，也是对抗虚无的理由。</p>
<p>即使我们已经走向一个动荡的时代，即使未来的巨大风险无可避免，即使我可能会遭遇更多的苦难，我也要尽全力挣扎，并享这一挣扎的过程。对抗虚无的目的不是消灭虚无，而是接受虚无、享受虚无。我就是要在大厦崩塌前追求内心的平静与灵魂的自由，这样才能在最后审判来临时，带着微笑与世界一起毁灭。</p>
<h1 id="如何对抗虚无">如何对抗虚无</h1>
<p>既然要对抗虚无，那就要找到正确的方式。我成长在一个对先秦儒家高度污名化的时代，从官方到民间，大多数人要么是在篡改和利用儒家思想，要么是在攻击和否定儒家思想。儒家告诉我们，要先修身、再齐家、再治国、再平天下。而我们的教科书却告诉我们要反过来，要先人后己、先国后家，要向雷锋同志学习。这种过于”现代性“的方式摧毁了原本的社会结构，使所有人都脱离原本的小共同体，转而服从于一个被构建出来的大共同体。荒诞性与虚无感借此变得更加凸显，笼罩在所有人的头顶，渐渐蚕食了所有人的生活。</p>
<p>要对抗这种现代的、被强加的虚无感，就要回到老地方，回到原本“自然”的社会结构，回到扎根于这种”自然“的社会结构中的思想，那就是最初的、被融合或篡改前的儒家思想。要对抗虚无，就要先修身、再齐家，先使自己平静而充盈，再让家庭和睦而富足，最后再考虑那些被构建出来的概念。在面对诸多复杂的社会事件时，以上思路同样适用。我们都要先尊重和关心”人“本身，然后再关注由一个个“人”所组成的其他东西。我想如果每个人都愿意这样思考并采取行动，世界肯定会变得更好。</p>
<p>2023年，我仍然在修身、齐家的道路上，在对抗虚无的道路上挣扎。我努力做了很多事，也做砸了很多事。2024年，这依然是我的主题。在这其中，于我而言的重中之重，是修身。更具体地说，是保持谦逊。</p>
]]></content:encoded></item><item><title>自由、荒诞与虚无</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20230121/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20230121/</guid><description>2022年终总结</description><content:encoded><![CDATA[<p>2022年，我们的生活有很多变化。比如城市里消失了多年的爆竹声，今年终于又回来了。尽管官方一再严令禁止，但不管是人们心中压抑已久的情绪，还是这片土地绵延千年的古老传统，都是无法抹销的。</p>
<p>2022年，我们见证了文明的低谷。黄钟毁弃，瓦釜雷鸣，无数人在权力的倾轧中痛苦煎熬。但好在无声处总有惊雷，文明衰落的曲线总有暂时的反弹。可能不会有人料到，乌鲁木齐的大火会蔓延全国，而人们与久违的勇气之间，只差一张白纸。</p>
<p>2022年，我们终于窥见了正常生活，而代价却是爆满的药店、医院、殡仪馆……1月18号下午，我走进了有些陌生的出入境大厅，看到里面人头攒动，护照办理窗口前排着长长的队伍。人们似乎已经已经做好了奔向世界的准备，但谁知道呢？没准过不了多久，开放的大门又要适时地关上。</p>
<p>面对荒诞的世界，我也思考过人生的目的。尤其在辛苦耕耘的土地无法开花结果、找寻良久的彼岸无法拨云见日的时候，我也感到遗憾哀伤。但世界不会给我答案，它就像钟表上不知停歇的单摆，永远重复着毫无目的的寻回。后来我读到加缪，才知道世界本就荒诞、人生本无目的，或者说，<strong>存在本身就是目的</strong>。我们无需绞尽脑汁思考人生的目的，因为带有目的的人生是可悲的，也与世界的荒诞性背道而驰。我们能做的，只是认识荒诞、拥抱虚无。</p>
<p>2022年，我用自己的方式拥抱虚无。前年，我在三线老家买了一套不大的房子，以作为结婚的物质条件之一。而这一买，就踩在了房价和利率的最高点上。如果非要计算损益，我已经在一年之内领取了近20万的亏损。我的心态一度是很不好的，尤其是买房的目的本身也似乎离我远去的时候。后来，我终于找回了存在主义的真谛。我就是那个不停将石头推向山顶的西西弗斯，而我的生活就是那块不停落回山下的石头。我告诉自己，<strong>我的房子并不是实现某种目的的手段，而是目的本身</strong>。它是我一个人独处时的安静空间，也是我在海上航行时的锚点，更是我一切灵魂自由的基础。</p>
<p>没错，<strong>追求灵魂的自由、认识世界的荒诞、拥抱人生的虚无</strong>——这就是2022年带给我的最大收获。2023年，我会努力不再执着于所谓的目的性，不再纠结于世界的荒诞性，用心地生活、自由地生活。</p>
<p>最后，在这壬寅年的最后一刻，祝各位都能走出旧年的低谷，过上自己想要的生活。</p>
]]></content:encoded></item><item><title>如何配置路由器的 DHCP ?</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220518/</link><pubDate>Wed, 18 May 2022 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220518/</guid><description>日常技术记录</description><content:encoded><![CDATA[<h2 id="开场">开场</h2>
<hr>
<p>经常折腾家里网络的你，一定经常遇到这些问题：</p>
<ol>
<li>为什么明明插上了网线，却<strong>打不开</strong>路由器的后台？</li>
<li>为什么 NAS 的 IP 地址经常<strong>变化</strong>？</li>
<li>为什么用上了高价的软路由，打开网页的速度反而<strong>变慢</strong>？</li>
<li>为什么跟着大佬的视频一通配置，却还是玩不转<strong>旁路由</strong>？</li>
</ol>
<p>以上这些问题其实都和 DHCP 有关。</p>
<h2 id="什么是-dhcp">什么是 DHCP？</h2>
<hr>
<p>DHCP 是 Dynamic Host Configuration Protocol 的缩写，意思是<strong>动态主机配置协议</strong>。它的作用，是为每一个接入局域网的设备自动分配一个 IP 地址，并为这些设备自动配置默认网关和 DNS 服务器。</p>
<h3 id="名词解释">名词解释</h3>
<p>如果你不理解网关和 DNS 是什么意思，也不要紧。你可以把<strong>网关</strong>理解成一个中转站，局域网内的所有设备都要通过这个中转站来与外界联系，而家用网络的网关通常只有一个，那就是路由器。<strong>DNS</strong> 则要更加复杂一点，我后面会单独制作一期视频来讲解。这里你只要把它理解成一个“电话簿”就可以了。</p>
<h2 id="dhcp-的工作原理">DHCP 的工作原理</h2>
<hr>
<p>DHCP 协议由一个服务端，和多个客户端组成。<strong>服务端</strong>一般就是你的路由器，而<strong>客户端</strong>就是你用来上网的设备。</p>
<h3 id="discoer">Discoer</h3>
<p>每当一个<strong>新设备</strong>初次连入局域网，它就会向整个网络广播自己的 MAC 地址。所谓的 <strong>MAC 地址</strong>，是每个设备的硬件地址，它被写在设备的网卡上，一般情况下无法更改，相当于设备的“身份证号码”。当新设备初次连入，它会向局域网广播自己的 MAC 地址，相当于新员工的自我介绍。这段自我介绍有一个很洋气的名字，叫做 <strong>Discover</strong>。</p>
<h3 id="offer">Offer</h3>
<p>当路由器接收到新设备的广播，就会在现有的 IP 地址中，挑选一个还没有被其他设备占用的空缺地址，并将这个地址和其他配置信息（比如默认网关和 DNS）打包发给这个设备，相当于领导给新员工安排工位。这段安排也有一个非常洋气的名字，叫做 <strong>Offer</strong>。</p>
<h3 id="request">Request</h3>
<p>接下来的事情就非常简单了，当设备收到路由器发出的配置信息，并且决定套用这些配置，会再次答复路由器，相当于接受领导的安排。这段答复同样有一个很洋气的名字，叫做 <strong>Request</strong>。</p>
<p>这里要注意一点，如果局域网内有两个以上路由器，并且这些路由都开启了 DHCP 服务，那么它们在收到新设备的广播后，会同时给这个设备发送配置信息。当设备同时收到多个配置信息，会优先回复最先收到的那个。因此，为了避免网络混乱，即使你家里有多个路由器，也最好只开启一个 DHCP 服务。</p>
<h3 id="ack">ACK</h3>
<p>回到正题，当路由器收到设备的肯定答复后，就会再给设备回个话，表示占位成功。这时，设备会根据路由器下发的 IP 地址、默认网关和 DNS 服务器，自动配置自己的网络，实现成功联网。路由器的这个回话，叫做 <strong>ACK</strong>。</p>
<h4 id="解答问题一">解答问题一</h4>
<p>说到这里，我们就解决了视频开头提到的第一个问题：</p>
<ul>
<li>为什么明明插上了网线，却<strong>打不开</strong>路由器的后台？</li>
</ul>
<p>这里有两种可能：
1. 你的路由器没有开启 DHCP 服务，你的电脑没有收到路由器下发的 IP 地址。
2. 你的路由器开启了 DHCP 服务，但你的电脑之前设置了静态 IP 地址，而这个静态地址和路由器的地址，不在同一个网段。</p>
<p>要解决”打不开后台“的问题，方法也很简单：
1. 如果是第一种情况，那么我们就要先在电脑上手动配置一个静态 IP 地址，并且这个地址要和路由器在同一个网段。比如路由器的 IP 地址是 192.168.31.1，那么电脑的静态地址就要设置成 192.168.31.x，这里的 x 可以是 2~255中的任何一个数字，但要注意不能和其他设备重合。
2. 如果是第二种情况，那么我们就要清除电脑的静态 IP 地址，并将 IP 地址的获取方式改为”自动获得 IP 地址“。这样，我们的电脑就会重新接受 DHCP 服务的分配。</p>
<h3 id="nak-报文">NAK 报文</h3>
<p>再次回到正题，上面提到的这一整个流程，都是新设备<strong>初次</strong>连入局域网的流程。如果不是初次连入的新设备，而是之前连过的老设备，断开后重新连入，就会跳过前两个步骤，直接从 Request 切入，相当于老员工离职后又重新回归，直接省略客套的过程，让领导给个工位。</p>
<p>这时，路由器会检查之前的 <strong>DHCP 租约表</strong>。如果设备之前对应的 IP 地址仍然空缺，则照旧返回一个 ACK。租约继续有效，设备继续沿用之前的 IP 地址。如果设备之前对应的 IP 地址已被其他设备占用，则只能拒绝设备的这次请求。那么这个拒绝的动作，叫做 <strong>NAK</strong>。</p>
<h4 id="解答问题二">解答问题二</h4>
<p>说到这里，我们又解决了视频开头提到的第二个问题：</p>
<ul>
<li>为什么 NAS 的 IP 地址经常<strong>发生变化</strong>？</li>
</ul>
<p>原因就是，NAS 关机下线期间，原本占用的 IP 地址空缺出来，并被其他设备占用，当 NAS 重新开机上线时，路由器只能为它重新分配一个新的 IP 地址。这时候我们就会找不到 NAS 的后台，而要借用 Synology finder 这类软件才能重新搜索到 NAS 的新地址。</p>
<p>要解决这个问题也很简单，那就是开启路由器的 <strong>IP/MAC 绑定</strong>，将某个固定的 IP 地址分配给特定的 MAC 地址，做到”一个萝卜一个坑“，这样就不会发生混乱了。</p>
<h2 id="dhcp-的应用">DHCP 的应用</h2>
<hr>
<p>知道了 DHCP 的工作原理，我们就可以解决上网过程中的很多问题。</p>
<h3 id="解答问题三">解答问题三</h3>
<ul>
<li>为什么用上了高价的软路由，打开网页的速度反而<strong>变慢</strong>？</li>
</ul>
<p>打开网页的速度很慢，或者明明 QQ 可以联网，但网页却死活打不开，多半是因为 DNS 服务器出了问题。我们家用网络的 DNS 服务器，一般是通过光猫从运营商处获得，再经过路由器的 DHCP 服务层层下发。如果我们在路由器的 DHCP 服务里没有指定 DNS 服务器，那么路由器就会默认适用运营商的 DNS，众所周知，运营商的 DNS 经常被劫持，用起来既不安全也不稳定。</p>
<p>所以，要解决”浏览网页慢“的问题，我们可以在路由器的 DHCP 服务里，手动指定一个稳定的 DNS 服务器地址，让局域网里的所有设备，都套用路由器 DHCP 下发的 DNS。至于有哪些好用的公共 DNS 服务器，网上一搜一大堆，比较常见的，国外的有著名的谷歌 8.8.8.8，国内的有阿里 223.5.5.5 等。</p>
]]></content:encoded></item><item><title>利用 Home Assistant 搭建智能家居中枢</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220409/</link><pubDate>Sat, 09 Apr 2022 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220409/</guid><description>日常技术记录</description><content:encoded><![CDATA[<h2 id="背景">背景</h2>
<p>随着智能家居的日益普及，各大互联网巨头纷纷进场，导致智能家居的平台和品牌越来越多，且各个平台和品牌间的产品无法互通。例如，你无法用米家的智能开关来控制 homekit 的智能灯，除非你的产品支持双平台，但目前同时支持两个以上平台的智能家居少之又少。</p>
<p><a href="https://www.home-assistant.io/">Home Assistant</a>（以下简称 HA）很好地解决了智能家居平台不互通的问题，它是一个开源的智能家居集成平台，可将各个常见平台的产品接入，并通过网页、<a href="https://apps.apple.com/us/app/home-assistant/id1099568401">手机app</a>等多种客户端统一操控，实现真正的「万物互联」。并且最重要的是，这么好用的工具不仅支持 Windows、MacOS、Linux 等多种操作系统，其本身也是开源免费的，并且其极高的扩展性也为爱折腾的数码爱好者提供了全新的研究对象。</p>
<h2 id="通过-docker-部署-ha-容器">通过 Docker 部署 HA 容器</h2>
<p>正如前文所述，HA 支持多种操作系统，但如果我们打算将其作为 7x24 小时待机的智能家庭中枢，那么最好的选择就是 Linux 系统，因为它可以运行在诸如<a href="https://www.raspberrypi.org/">树莓派</a>这类低功耗的设备上，随时准备着为我们提供服务。</p>
<p>提到 Linux，我们就不得不提 Docker，它是一种兼容性极高的容器系统，可以适应几乎所有 Linux 环境，做到即装即用。今天，我们将着重介绍通过 Docker 容器部署 HA 的方法。</p>
<p>我的<a href="/post/blog20210909/">这篇文章</a>详细介绍了 <a href="https://hub.docker.com/r/portainer/portainer-ce">Portainer</a> 这个非常好用的 Docker 管理容器，<strong>由于每位读者的系统环境不尽相同，因此本博客往后介绍的所有 Docker 容器安装，不再拘泥于群晖、威联通或者 Unraid，而是统一通过 Portainer 进行</strong>。</p>
<p>Portainer 本身的安装可以参考上面提到的文章，本文不再赘述。要安装 HA，我们首先需要登录 Portainer 后台，然后进入本地终端界面，也就是 Local，接着点击左侧的 Containers，进入本地容器管理界面。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/portainer01.png"></p>
<p>点击 Add container，创建一个新容器，Name 随便填，Image 写 HA 官方提供的映像索引 <code>homeassistant/home-assistant:latest</code>，Always pull the image 可以打开，这样以后每次修改容器配置，都会从服务器重新拉取最新的映像。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/portainer02.png"></p>
<p>接着点击下方 Advanced container settings 中的 Volumes，进入目录映射选项卡，点击 map additional volume 按钮新增一个目录映射，右侧的映射方式选 bind，container 里的目录只能写 <code>/config</code>，这是 HA 配置文件的所在目录，host 上的目录可以根据自己需要填写。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/portainer03.png"></p>
<p>继续点击 Advanced container settings 中的 Env，进入环境变量选项卡，点击 add environment variable 按钮新增一条环境变量，左侧的 name 填写 <code>TZ</code>，右侧的 value 填写 <code>Asia/Shanghai</code>，这是将 HA 的默认时区（Time Zone）设置为亚洲/上海。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/portainer04.png"></p>
<p>剩下的高级设置就比较简单了，Network 设置成 host，Restart policy 设置成 Always 即可。最后点击 Deploy the container，等待一段时间，如果网络连接通畅的话，即可完成 HA 容器的部署。</p>
<p>HA 的后台默认端口是 8123，因此只要我们在局域网中访问 HA 运行设备的 <code>ip地址:8123</code> 即可登录 HA 的网页端。初次打开 HA 网页端需要进行一些基本的初始化配置，例如用户名、密码这些，此处不再赘述。需要注意的是，<strong>HA 管理员账户的密码无法找回，如果我们忘记此处设置的密码，后面只能通过重装容器的方式解决</strong>。</p>
<h2 id="安装-hacs-集成">安装 HACS 集成</h2>
<p><a href="https://hacs.xyz">HACS</a> 的全称是 Home Assistant Community Store，是一个 HA 社区商店，里面提供了各种外观主题，以及第三方集成的下载，使用起来非常方面，建议所有 HA 用户安装。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/hacs.png"></p>
<p>要安装 HACS，首先需要将它的安装包放入 HA 容器。在 HA 映射的 /config 目录中创建两个新目录，名称分别为 <code>www</code> 和 <code>custom components</code>，点击<a href="/resources/blog20220409/hacs.zip">这里</a>下载 HACS 安装包，将压缩包内的 hacs 目录解压到刚刚创建的 <code>personal components</code> 目录，然后重启 HA 容器。登录 HA 网页端，依次点击左下角配置—设备与服务—集成，进入集成选项卡。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20220409/ha01.png"></p>
<p>点击右下角的添加集成按钮，搜索 HACS，点击安装 HACS 集成，接着按照提示走流程就能顺利安装。安装过程中需要跳转登录一次 Github，如果没有账号需要注册一个。此外就是安装过程需要科学的网络环境，这个只能靠各位自行解决。安装完成后再次重启 HA 容器。不出意外的话，网页端的左侧会多出一个 HACS 按钮，点击它就能进入 HACS 的商店界面了。</p>
<h1 id="将米家接入-ha">将米家接入 HA</h1>
<p>以往，要将小米的众多智能家居接入 HA，我们必须安装一个第三方 HA 集成，即 <a href="https://github.com/al-one/hass-xiaomi-miot">Hass-Xiaomi-Miot</a>。它由个人开发者 <a href="https://github.com/al-one">al-one</a> 在 Github 上发布，一直以来都是我们将米家接入 HA 的唯一选择。直到2024年12月，<a href="https://github.com/XiaoMi">小米</a>在 Github 上发布了官方的 HA 集成：<a href="https://github.com/XiaoMi/ha_xiaomi_home">HA_Xiaomi_Home</a>，填补了米家接入 HA 的空白。</p>
<p>虽然这又是一个“官方逼死同人”的故事，但小米的开源精神仍然值得称赞。与第三方集成相比，小米官方的集成对自家产品支持更好， 能够帮助我们更加轻松地将米家接入 HA，进而实现米家与 Homekit 生态的互联互通。小米官方集成的安装与使用方法详见我的<a href="/post/blog20241227/">最新文章</a>，此处不再更新。</p>
]]></content:encoded></item><item><title>与苦难共存，与希望共生</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220201/</link><pubDate>Tue, 01 Feb 2022 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20220201/</guid><description>2021年终总结</description><content:encoded><![CDATA[<p>可能并不存在颠簸不破的传统。早在五年前，老家的除夕夜还得在持续不断、直至破晓的爆竹声中度过，但在政府的“大力倡导”下，短短几年间，这一延续了上千年的古老传统，便已经烟消云散了。而此时的我，就在这寂静的除夕夜里，独自回忆业已过去的2021，带着一如往常的“辞旧迎新”的仪式感。</p>
<p>过去的一年，我与世界都活在新冠疫情的余波中，逐渐放弃了“战胜”疫情的幻想，转而思考如何与病毒共生共存。<a href="/post/blog20210416/">4月中旬</a>，我结束了漂泊于深圳、重庆和南京三点之间的律所实习，并在急性中耳炎的痛苦中享受了一个月的闲暇时光。6月的毕业季随风而逝，而我又辗转来到杭州，正式开启了职场社畜的生涯。</p>
<p>作为一个处处与北上广对标的“新一线”城市，杭州早已失去了昔日的中古风情，转而成为一个充斥着铜臭味的暴发户聚集地，在高歌猛进的基建开发与乌烟瘴气的互联网风潮中寻找着自己的方向。在这样一种“淘金热”似的奇特氛围中，就连那些“中”字头的所谓央企，也不得不开始鼓吹“创业精神”。</p>
<p>我向来不喜欢这样的风气，因为<strong>一切看似蓬勃发展的景象背后，都是对个体身心的极致剥削</strong>，何况高楼之下，衰败的基础早已奠定。对于像我这样初尝过开放与自由滋味的90年代人来说，文明的衰退是肉眼可见的。而与文明衰退相伴而生的，则是深深的不适与悲观。</p>
<p>好在不景气的大背景下总会存在个体的逆势好转。2021年，我终于在父母的帮助下买到了人生的第一套房，并努力用自己的劳动所得支付了装修费用。在不久的将来，我也将与张老师步入婚姻殿堂，努力承担起家庭责任。这可能是在普遍猥琐的大时代里，所谓“天生骄傲”者的最后一丝倔强的念想，即“<strong>通过干干净净地挣钱，让人相信干干净净地挣钱是可能的</strong>”，尽管当初说这句话的人，现在成了抖音带货主播前三。</p>
<p>我始终相信，<strong>对于人类而言，受苦是必修课、幸福是选修课</strong>，这就是为什么我会对他人遭受的人生无常缺乏同情，因为从广义来讲，每个人都苟活在无常之中。但我同时又相信，人是可以通过后天努力，将无常之外的苦难消灭殆尽，例如通过个体的团结与努力，排除体制的恶，让暴力与特权无处容身，在无常的世界里创造有限的公平。</p>
<p>壬寅年伊始，冬天确实已经过去，春风也确实即将吹拂。<strong>纵然2021充满转机，但请不要忘记这片土地上正在发生的种种苦难</strong>，不要忘记那一度令人愤怒、令人愤懑、令人作呕的罪恶与不公。我还是我，还带着是非观、带着常识与敬畏心过着自己的人生，只是因为无处不在的权力倾轧，大声疾呼变成了阴阳怪气。但愿只要荧光不散，世界就还有救。</p>
]]></content:encoded></item><item><title>利用 Portainer 实现 Docker 端 Jellyfin 硬件解码</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210909/</link><pubDate>Thu, 09 Sep 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210909/</guid><description>日常技术记录</description><content:encoded><![CDATA[<h2 id="原理及环境检测">原理及环境检测</h2>
<p>随着版本的不断迭代，<a href="https://jellyfin.org">Jellyfin</a> 已经逐渐超过 <a href="https://www.plex.tv">Plex</a>  和自家兄弟 <a href="https://emby.media">Emby</a>，成为用户数量最所的个人媒体管理方案，这不仅因为它的所有功能均为免费，更是因为它的源代码完全开源，具有极高的维护与拓展空间。</p>
<p>不论用于运行 Jellyfin 的具体是哪款操作系统，只要该系统是基于 Linux，我们就可以通过 Docker 容器来实现极为简单且方式一致的部署。<strong>但相比于原生套件，Docker 有一个显而易见的缺点，即无法直接调用各类系统资源</strong>，核显驱动就是其中之一。</p>
<p>要让 Jellyfin 的 Docker 容器实时调用核显驱动（也就是人们常说的开启硬解），要满足两个条件：</p>
<ol>
<li>拥有支持视频解码的核心显卡，且核心显卡的<strong>驱动程序</strong>运行正常；</li>
<li>将核显驱动<strong>直通</strong>给 Docker 容器，并赋予 Docker 容器调用该驱动的权限。</li>
</ol>
<p>对于系统是否满足上述第一个条件，可以通过以下方式进行检验：首先用 ssh 工具连接到服务器，确保登陆 ssh 的账户拥有系统管理权限，再输入以下命令：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>ls /dev/dri
</span></span></code></pre></div><p>如果返回的结果为 <code>card0 renderD128</code> ，那么恭喜，核显驱动运行正常，硬件系统满足视频解码的基本条件。接下来便是将 renderD128 这个核显驱动直通给 Docker 容器的方法。</p>
<h2 id="为什么必须用-portainer">为什么必须用 Portainer?</h2>
<p>无论是群辉、威联通还是 <a href="https://www.unraid.net">Unraid</a>，市场上绝大多数 NAS 系统都提供了图形化的 Docker 容器管理工具。但无论上述哪一个，都不支持核显驱动的直通功能。群辉的 Docker 套件无法编辑容器的系统资源参数，威联通的 Container Station 干脆无法编辑已经创建好的容器。</p>
<p><strong>这里所说的“直通”，其实是将 <code>/dev/dri/renderD128</code> 这个驱动文件映射到 Docker 容器的相同位置</strong>。这一点利用命令行可以非常轻松地实现，即在 Jellyfin 容器的拉取命令中加入下列参数：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>--device<span style="color:#f92672">=</span>/dev/dri/renderD128 <span style="color:#ae81ff">\
</span></span></span></code></pre></div><p>因此，要快速拉取并创建一个开启硬件解码的 Jellyfin 容器，只要在 NAS 的命令行界面输入以下命令即可：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo docker run -d --name jellyfin <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>-v /share/Container/Jellyfin/config:/config <span style="color:#ae81ff">\ </span><span style="color:#75715e">#冒号左边为存放配置文件的目录</span>
</span></span><span style="display:flex;"><span>-v /share/Container/Jellyfin/cache:/cache <span style="color:#ae81ff">\ </span><span style="color:#75715e">#冒号左边为存放媒体缓存的目录</span>
</span></span><span style="display:flex;"><span>-v /share/Media/:/media <span style="color:#ae81ff">\ </span><span style="color:#75715e">#冒号左边为存放电影文件的目录</span>
</span></span><span style="display:flex;"><span>-p 8096:8096 <span style="color:#ae81ff">\ </span><span style="color:#75715e">#web界面访问端口（http）</span>
</span></span><span style="display:flex;"><span>-p 8920:8920 <span style="color:#ae81ff">\ </span><span style="color:#75715e">#web界面访问端口（https）</span>
</span></span><span style="display:flex;"><span>--device<span style="color:#f92672">=</span>/dev/dri/renderD128 <span style="color:#ae81ff">\ </span><span style="color:#75715e">#映射核显驱动</span>
</span></span><span style="display:flex;"><span>--restart<span style="color:#f92672">=</span>always <span style="color:#ae81ff">\ </span><span style="color:#75715e">#重启策略</span>
</span></span><span style="display:flex;"><span>jellyfin/jellyfin
</span></span></code></pre></div><p>但对许多轻度用户来说，命令行不仅不便理解，也断绝了后续对容器进行修改和自定义的空间。因此对于绝大多数日常用户来说，我个人强烈推荐使用 <a href="https://hub.docker.com/r/portainer/portainer-ce">Portainer</a>。它本身也是一个运行在 Docker 容器里的程序，但它拥有强大的 Docker 管理功能，是目前市面上功能最完善的网页端 Docker 容器管理界面。</p>
<p>因此，对于那些既不想用命令行，又希望对 Docker 有较为全面管控的用户来说，Portainer 几乎是唯一的选择。通过 Portainer，即使是初学者也能轻松为 Jellyfin 开启硬件解码。</p>
<h2 id="portainer-的安装与使用">Portainer 的安装与使用</h2>
<p>由于 Portainer 需要调用 <code>/var/run/docker.sock</code> 这个文件以实现对 Docker 的直接管理，因此 Portainer 也无法通过群辉或威联通自带的 Docker 管理界面进行安装，因为上述管理界面均不支持针对单个文件的映射。但由于 Portainer 需要配置的参数较少，且容器创建完成后不需要频繁修改，因此普通用户可以直接复制一以下命令进行安装。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>sudo docker run -d --name prtainer <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>-v /var/run/docker.sock:/var/run/docker.sock <span style="color:#ae81ff">\ </span><span style="color:#75715e">#关键</span>
</span></span><span style="display:flex;"><span>-p 9000:9000 <span style="color:#ae81ff">\ </span><span style="color:#75715e">#web界面访问端口</span>
</span></span><span style="display:flex;"><span>--restart<span style="color:#f92672">=</span>always <span style="color:#ae81ff">\ </span><span style="color:#75715e">#重启策略</span>
</span></span><span style="display:flex;"><span>portainer/portainer
</span></span></code></pre></div><p>容器创建完成后，即可通过 IP:端口的方式访问 Portainer 的管理界面，Portainer 的默认访问端口是 9000。初次登陆需要设置管理员账号和密码。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-1.png"></p>
<p>因为是单机使用，所以连接模式选择“local”，然后点击“Connect”即可连接到服务器上的docker。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-2.png"></p>
<p>配置完成后，再次点击 local，选择左侧的 Container 便可使用 Portainer 对系统上现有的所有 Docker 容器进行管理了。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-3.png"></p>
<h2 id="安装-jellyfin-并直通核显驱动开启硬解">安装 Jellyfin 并直通核显驱动（开启硬解）</h2>
<p>后续的安装及配置过程都将在 Portainer 界面上完成。首先点击“Containers”选项卡上的“Add container”按钮添加新容器，进入容器创建界面。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-4.png"></p>
<p>“Name”随便写，“Image”填写 Jellyfin 官方的 Docker Hub 映像路径 <code>jellyfin/jellyfin</code>，“Always pull the image”可以打开，这样当我们配置完成创建容器时，Portainer 会自动从 Docker Hub 拉取最新的官方映像。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-5.png"></p>
<p>“Network ports configuration”处选择“Manual network port publishing”，点击“publish a new network port”创建两个端口映射，分别是 8096 和 8920，作为 Jellyfin 网页界面的访问端口。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-6.png"></p>
<p>接着点击“volumes”选项卡，进行容器内目录的映射。Jellyfin 默认需要映射的目录分别是 <code>/media</code>、<code>/cache</code> 和 <code>/config</code>，点击“bind”按钮选择服务器上对应的目录进行映射。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-7.png"></p>
<p>“Network”选择“host”，“Restart policy”选择“always”。最重要的是，“Runtime &amp; Resources”处一定要点击“add device”，两边分别输入 <code>/dev/dri/renderD128</code>，这是开启硬解的关键步骤。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/portainer-8.png"></p>
<p>以上配置完成后，即可点击“Deploy the container”按钮创建容器。如果网络环境较好，等待半分钟左右即可完成容器的创建。至此，我们不仅手动配置完成了 jellyfin 的 Docker 容器，还将核心显卡的驱动文件直通给了该容器。最后，只要进入 Jellyfin 的控制台，在“播放”选项卡中，将“硬件加速”类型选为“Video Acceleration API (VAAPI)”，并在“VA API 设备”处填写 <code>/dev/dri/renderD128</code>，即可调用服务器的核显驱动进行硬件解码了。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210909/jellyfin-config.png"></p>
]]></content:encoded></item><item><title>利用 Favicon 为 Hugo 静态站点添加图标</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210527/</link><pubDate>Thu, 27 May 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210527/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>我们在使用 <a href="https://gohugo.io">Hugo</a> 生成静态站点时，经常会遇到一些虽不致命，但很不爽的小问题，例如没有自定义站点图标的问题。假如我们跟随了所用主题的默认配置，通常情况下生成的站点要么没有图标，要么直接套用主题自带的图标，这显然无法满足我那强烈的 DIY 欲望。</p>
<p>经常访问本博客的读者可能会注意到，我所使用的 Hugo 主题是一个支持自动切换明暗模式的第三方主题——<a href="https://github.com/dsrkafuu/hugo-theme-fuji">AutoFuji</a>. 今天在阅读这个主题的说明文档时，我发现原来它是支持 <a href="https://baike.baidu.com/item/favicon">Favicon</a> 图标代码的。于是经过一通简单的操作，我的博客终于有了自己的图标。</p>
<p>为 Hugo 站点添加 Favicon 代码的方法非常简单。首先访问<a href="https://realfavicongenerator.net">这个网站</a>上传一张图片作为网站图标的母本。其实类似的 Favicon 生成器还有很多，大家可以根据自己的习惯或喜好自由选择，基本功能都是一样的。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210527/favicon-generator.png"></p>
<p>图片上传完成后，会自动跳转到参数配置页面。如无特殊需求，保持默认配置即可。点击页面下方的生成按钮生成我们的图标和代码。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210527/favicon-generator2.png"></p>
<p>生成完成后，点击如图所示按钮下载各类格式的图标包，再将自动生成的 HTML 代码复制到剪贴板。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210527/favicon-generator3.png"></p>
<p>之后，来到 Hugo 站点的根目录，将刚刚下载的压缩包里的所有文件解压到 <code>/static/</code> 文件夹下。</p>
<p>用文本编辑器打开 <code>/layouts/partials/favicon.html</code> 文件，清空原有代码，将刚刚复制到代码粘贴进去，保存并退出。</p>
<p>最后，打开 <code>/themes/正在使用的主题名/layouts/partials/head.html</code> 文件（不同主题需要编辑的文件可能不同，例如我所使用的 Fuji 主题就是直接编辑同一目录下的 favicon.html 文件），找到下列代码：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">link</span> <span style="color:#a6e22e">rel</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;shortcut icon&#34;</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;xxx&#34;</span> /&gt;
</span></span></code></pre></div><p>将 xxx 替换成 <code>favicon.ico</code> ，保存并退出即可。</p>
<p>此时，我们的 favicon 图标安装工作就宣告完成了。使用 <code>hugo</code> 命令重新生成站点，不出意外的话，就能看到我们刚才上传的站点图标了。</p>
]]></content:encoded></item><item><title>桥接模式下 Openwrt 软路由直接访问光猫后台</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210505/</link><pubDate>Wed, 05 May 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210505/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>光猫开启桥接模式后，软路由作为默认网关进行拨号与 NAT，导致客户端设备无法获取与光猫相同网段的 IP 地址，进而也就无法登陆光猫的后台管理界面。虽然在日常使用的过程中，光猫的配置几乎是一次性的，其后台管理界面的使用频率很低，但是每次登陆光猫后台都要通过有线或无线（若有）的方式将设备直接与光猫相连也着实麻烦。因此需要通过一些简单的配置，实现桥接模式下，连接软路由的同时可以随时访问光猫后台。</p>
<p>实现原理其实很简单，只要<strong>在现有 DHCP 服务端正常工作的前提下，为软路由的 WAN 口再行分配一个与光猫网段相同的 IP 地址</strong>即可，前提是你的软路由支持多 WAN。</p>
<p>以 Openwrt 系统为例，在“网络—接口”界面点击“添加新接口”，进入新接口创建页面。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210505/wan-config-1.png"></p>
<p>接口名称随意填写，接口协议选择“静态地址”，包括的接口选择当前 WAN 口绑定的物理接口。<strong>注意，接口协议尽量不要选择 DHCP，因为桥接模式下的光猫基本都会关闭自身的 DHCP 功能，不会给新接口自动分配 IP 地址，所以此时需要通过“静态地址”协议来手动指定新接口的 IP 地址</strong>。完成上述配置后，点击“提交”按钮进入新接口的详细配置页面。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210505/wan-config-2.png"></p>
<p><strong>IPv4 地址一定要设置成与光猫位于相同网段的地址</strong>。例如光猫连接软路由的 LAN 口的地址（即光猫后台地址）为 192.168.1.1，那么这里新接口的静态 IP 地址就要设置为 192.168.1.x。子网掩码设为 255.255.255.0，默认网关就是光猫 LAN 口的 IP 地址。有关 IP 网段和子网掩码的相关知识，可以参考<a href="https://www.zhihu.com/question/56895036">这篇文章</a>。完成上述设置后，点击“保存&amp;应用”按钮即可完成配置。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210505/wan-config-3.png"></p>
<p>新接口配置完成后，DNS 缓存会有一定延迟，导致无法正常浏览网页，此时重启一下软路由即可解决问题。如果软路由之前配置了端口映射，则<strong>新接口创建完成后，所有的端口映射都将失效，此时仍需经过一番针对防火墙的额外设置才能恢复正常</strong>。</p>
<p>重新进入新接口的详细设置页面，在“防火墙设置”中，将原先 WAN 口的防火墙区域绑定到新接口。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210505/wan-config-4.png"></p>
<p>然后进入“网络—防火墙—端口转发”页面，将原有的端口映射配置重新“保存&amp;应用”一下即可。</p>
<p>至此，如果不出意外的话，我们便可在桥接模式下随时随地访问光猫的后台管理界面了。</p>
]]></content:encoded></item><item><title>利用 Parsec 实现远程游戏串流</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210502/</link><pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210502/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>最近，我终于放弃了 Steam 或 Epic Games 等平台的买断制游戏模式，转而投靠了 <a href="https://www.xbox.com/zh-HK/xbox-game-pass">Xbox Game Pass (XGP)</a> 这样的订阅制模式。尽管买断制可以极大地满足“喜加一”式的收集欲，但自从开始实习之后，我已经很难抽出整块的时间来通关各类单机游戏，以致于我的游戏库中屯了大量已购买的但未通关的游戏，这不仅降低了我购买和尝试最新游戏的欲望，也在资金上造成了很大的浪费。不知从什么时候起，玩游戏竟也成了一种待完成的“任务”，失去了工作之余放松心情的初衷。</p>
<p>因此，我纠结许久，终于决定以后不再购买任何单机游戏。如果某段时间我不是那么忙了（例如辞职在家的现在），就去订阅一个月的 XGP，体验一下最新的单机游戏。事实上，Xbox 账户是可以随时切换区域的。因此我们可以简单地通过将 Win10 的系统区域切换成香港的方式来享受港区 XGP 79 港元每月（首月10港币）的优惠价格。在一个单机游戏动辄就要三百块以上的当下，XGP 确实是一种非常合算方案。毕竟，一个月的时间，完全够我通关一个中型单机游戏，而买断这款游戏的价格远远不止 79 港币。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210502/xgp-price.png"></p>
<p>开通了 XGP 之后，我又开始琢磨如何在出差的时候利用“零碎的时间”玩游戏。例如驻场期间每天下班以后，住在酒店里的我只有一台性能羸弱的 MacBook，如何利用现有设备在酒店里玩上 XGP 上的单机游戏呢？其实解决方案只有一个：远程桌面。只要在家里的 PC 上<a href="https://zhuanlan.zhihu.com/p/302835122">开启网络唤醒功能</a>，在将某款远程桌面软件设置成开机自动启动，我就可以在任何地方，通过网络唤醒 + 远程操控的方式随时随地游玩家里电脑上的游戏。</p>
<p>思路虽然很简单，但找到合适的远程桌面软件着实费了我一番工夫。经过仔细的搜索，我发现了一款叫做 <a href="https://parsec.app/">Parsec</a> 的远程桌面软件。它不仅同时支持 Windows 和 macOS 双平台，还专门针对远程游戏进行了优化。不仅如此，Parsec 还支持 <a href="https://baike.baidu.com/item/HEVC">Hevc 编码</a>。只要客户端设备支持 Hevc 解码，就能大大降低串流数据体积，减少网络带宽和流量的消耗，提升远程游戏的体验。</p>
<p>Parsec 的使用方式非常简单，只要去官网注册一个账号并分别在服务端（用于运行游戏的设备）和客户端（用于远程操控的设备）下载安装 Parsec 客户端即可。在两台设备上同时安装并登陆软件后，软件界面应该是这样的：</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210502/parsec-interface.png"></p>
<p>此时只要点击相应设备上的 Connect 按钮即可建立远程连接了。但为了提升我们的游戏体验，在正式使用前还需要进行一些简单的设置。点击左侧的齿轮图标进入设置界面，将客户端设备的“硬件解码”和“Hevc 编码”功能打开即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210502/parsec-settings.png"></p>
<p>连接成功后，软件会自动将被操控的设备调至静音，而将所有系统声音转到操控的设备上播放，这一细节非常人性化。经测试，在局域网（千兆带宽）环境下，两台设备基本可以实现零延迟的远程控制，但在广域网环境下，由于带宽和延迟的限制，远程控制略有延迟和卡顿，但仍能满足一些对操作要求不是那么高的游戏。例如，我最近正在补完的《歧路旅人》。这是一款“高清马赛克”游戏，且所有战斗均为回合制，非常适合远程游玩。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210502/IMG_2477.JPG"></p>
<p>由于 macOS 原生支持 Xbox 和 switch pro 手柄，同时 Parsec 也能直接识别上述两款手柄的所有按键，因此在远程游戏时，可以直接通过将手柄连接客户端设备的方式来操控服务端的游戏。网络状况较好的时候，远程游戏的体验和本地几乎没有区别。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210502/controller.png"></p>
]]></content:encoded></item><item><title>解决蜗牛星际B双安装黑群晖失败“文件已损毁（13）”</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210423/</link><pubDate>Fri, 23 Apr 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210423/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>去年疫情期间，由于滞留家中实在无聊，我开始折腾软路由和 DIY NAS，而被折腾得最多的莫过于黑<a href="https://www.synology.com/en-us/dsm">群晖</a>系统。为此，我特意买来两台蜗牛星际（B双和C），其中B双用作软路由，C则用于黑群晖。时隔一年，忙于工作的我已不再有闲暇时间折腾黑群晖，而出于对数据安全和便捷性的考虑，我于今年年初购买了一台威联通的 NAS 主机。俗话说得好，黑群晖折腾到头，就会转去白群辉。但奈何威联通的性价比要比群晖高太多，因此我只好无耻地叛变了革命。</p>
<p>昨天心血来潮，想把放在角落吃灰许久的蜗牛星际B双刷成黑群晖，用作重要数据的冷备工具，平常都会处于关机状态，只有冷备的时候才会开机。由于我的B双之前一直都用作软路由，因此从来都没有刷过黑群晖。但鉴于蜗牛星际的配置都差不多，我简单地以为直接用之前C上现成的黑群晖引导U盘即可直接安装黑群晖系统。然而天真的我还是遇到了困难。</p>
<p>问题出在新系统安装的过程中，每当进度走到 56% 的时候，都会跳出编号为 13 的错误，提示“系统安装失败，文件可能已经损毁（13）”。为了解决这一问题，我尝试了很多方法，包括但不限于格式化所有硬盘（包括 SSD）以及更换各个版本的官方或非官方 DSM 安装包，但都不奏效，错误 13 依然存在。</p>
<p>最后，在电报群里高人的指点下，我终于解决了这一问题。其实，新系统安装的过程中之所以会出现错误 13， 是因为机器主板的 BIOS 没设置好。只要给主机插上键盘和显示器，在开机时进入 BIOS 界面（通常是在开机后显示主板厂商 logo 时按键盘上的 DEL 键进入），然后依次进入 <strong>Advanced—Miscellaneous Configuration—OS Selection</strong>，将 Win 7 改为 Win 8.x 即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210423/bios.jpeg"></p>
<p>忙活了半天，最后才知道原来只是这么简单的一个问题。为了不让后来的小白们像我一样浪费时间，特此记录一下。本文也谈不上什么教程了。</p>
]]></content:encoded></item><item><title>告别，为了新的开始：记一次迂回的返乡行</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210416/</link><pubDate>Fri, 16 Apr 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210416/</guid><description>逃离深圳</description><content:encoded><![CDATA[<h1 id="起因">起因</h1>
<p>我不知道此时的我正带着怎样的心情写这篇游记，因为它本来算不上游记——返回自己的家乡怎么能算旅行呢？但当我终于站在凌晨一点的芜湖站东广场时，我才明确意识到：终于回家了。</p>
<p>一切开始于一周前。在一个阴郁的下午，我独自走在成都大熊猫基地的竹荫路上，漫无目的地思考着——关于工作、关于婚姻，甚至关于一些无关紧要的东西。大熊猫并没有太吸引我，毕竟都是长相相似的生物，看一会、拍几张照就会觉得无聊。所以这时就非常适合将脑子装满，不管装的是什么。</p>
<p>这场思考的结果，就是决定辞职。虽然单就职业发展前景来说，目前的这份工作非常不错。但其较低的起薪，以及长期出差的性质使得我不得不面对“工作与家庭平衡”的问题。如果我选择回到老家附近的省会城市，将会有一份起薪较高、无需出差的工作等着我。于是在经过激烈的思想斗争以后，我得出结论：所谓的“发展前景”都是相对的，即使回到老家，也不意味着完全没有发展前景，但与生活本身相比，目前这份工作的“前景”不值得我继续追求。如果努力赚钱的最终目的是为了生活得更好，那当自己完全另有选择余地的情况下，不应该为了挣钱而放弃生活本身，这是本末倒置的做法。</p>
<p>因此我决定，4月15日从重庆返回深圳，办完最后的工作交接手续后，再经珠海飞回老家安徽。至于为什么要途径珠海，完全是因为最后返程的机票无法报销。为了节省费用，我购买了相对较为便宜的珠海飞合肥的航班。而在此前的绝大多数时候（公司报销机票的时候），我都是直接从深圳飞往南京，而后者才是最快捷的路线。</p>
<h1 id="启程">启程</h1>
<p>说做就做。平日里养成的“极简生活“的习惯此时显出了它的威力——我在重庆和深圳两个住所的所有个人物品加起来，也不过一个20寸旅行箱外加一个双肩背包的体量。因此我得以在短短一天半的时间里，清空两个住所，跨越三千多公里的路程返回故乡。</p>
<p>办好该办的手续，已经是上午十点。我背着包走出公司大楼，打了辆车回公寓。上车前，我给身后的公司大楼拍了可能是最后一张照片。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2319.JPG"></p>
<p>我们的公寓是公司为实习生免费提供的四人间宿舍，距公司约半小时车程（坐公交要一小时才能到达）。到公寓后，我火速上楼取下旅行箱，并在前台办理了退押金手续（入住宿舍时缴了一百元押金）。然后步行至临近的地铁站，经一次换成后，抵达“蛇口港”站。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2323.jpg"></p>
<p>出站后步行了大约二十分钟，终于抵达此次返乡行的第一站——蛇口邮轮中心。这是个内外装修都很别致的码头，内部构造与高铁站或机场非常相似：一楼是进站口，二楼以上是餐饮或休息区。取票方式也很简单，将购票时登记的身份证号码对应的身份证放在进站口附近的自助机器上即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2325.JPG"></p>
<p>我所乘坐的航班是从蛇口港往横琴港的客轮——迅隆号。仓位分普通仓和头等舱两种，价格只相差三十元。头等舱不仅客人较少，而且座位更舒适、视野也更好。上船后我发现了一个很有趣的标牌，上面写着“招商局，创办于1872年”的字样，瞬间给我一种梦回大清的感觉。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2336.JPG"></p>
<p>航程经过了港珠澳大桥和澳门友谊大桥，并从珠海与澳门间的狭窄航路穿过。期间手机信号一度飘到澳门，还收到了海关发送的警示短信。虽然短短几分钟的时间不足以使我的行程码变红，但这短暂的“出境”仍使我感慨万千。经过一个多小时的航行后，客轮在珠海横琴港稳稳靠岸。很久之前就听人说起珠海环境之优美、空气之纯净，这回我总算亲身感受到了这点。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2358.JPG"></p>
<h1 id="曲折">曲折</h1>
<p>但就在我带着愉悦的心情走出美丽的横琴码头时，收到了航班延迟三小时的短信。今年一月的时候，海航正式传出破产重组的消息，当时我还产生了“眼看他起高楼，眼看他楼塌了”的感慨。但这航班一口气延迟三小时，并且航空公司又刚好是海航的时候，我便又有了“时代的尘埃落在个人头上”时的无措感。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2378.JPG"></p>
<p>由于时间瞬间变得无比宽裕，因此我也放慢了赶路的脚步，一边欣赏珠海沿途的风景，一边坐公交往机场大巴站去。离横琴港最近的机场大巴车站位于横琴假日酒店。这是一座外观装修得很像童话城堡的酒店，虽然我没有入住过这家酒店，但单看外部环境感觉很适合度假时居住。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210416/IMG_2366.JPG"></p>
<p>在酒店一楼等了近四十分钟，终于等来了机场大巴。在去机场的途中，大巴会在澳门大学横琴校区短暂停留。这所大学与澳门隔海相望，虽然地址位于珠海，但行政上归澳门管辖。无论从哪一方面来说，这也都算“一国两制”的典范了吧。于是在去机场路程的后半段，我便与一群澳门大学的学生同行。这些人虽然还是学生，但已经沾染上“在大巴车上外放看视频”的社会恶习。</p>
<p>到达珠海金湾机场后，我又无所事事地分别在肯德基和候机厅等待了两个多小时。期间广播曾略带歉意地表示，要为所有被延误了的海航乘客发放晚餐。但当我看到候机厅邻座的中年男人手拿一盒热腾腾的盒饭套餐悻悻然归来时，便放弃了这“免费的晚餐”。相比而言，还是飞机上的“海南特色鸡肉粉”更吸引我。</p>
<p>等到晚上七点半，广播里终于通知我们准备登机。我于是重新拖起行李箱，排进长长的队伍里，等待登上这趟原本应在三小时前起飞的航班。</p>
<h1 id="尾声">尾声</h1>
<p>除了上海虹桥机场以外，几乎所有我去过的城市的机场都位于偏僻的郊外。这或许符合某些经济学原理，但实在与乘机人的便利性背道而驰。可能也是因为考虑到了便利性这个问题，合肥新桥机场设置了专门的城市班车，定时将旅客送往火车站等市内地址。晚上九点半，飞机缓缓着陆以后，我便跟着人群，火速前往机场到达大厅外的城市班车上车点。花十五块钱买了张去合肥火车站的票。班车等到十点才“准时”出发，晃晃悠悠到十一点零八分才到达距离合肥火车站还有两百多米的地方。</p>
<p>是的，你没有听错。目的地为合肥火车站的班车居然没有真正进入合肥火车站，而是在离火车站老远的地方把我们放了下来。当天晚上最后一班火车的发车时间是十一点二十一分，这也就意味着，我要在十三分钟内，拖着箱子和背包，跑过两百多米的距离，过安检，上楼，再找到正确的站台后挤进火车。虽然以上过程非常艰难且疲惫，但我好歹在火车车门关上的前一秒成功上了车。</p>
<p>由于时间过晚，我只能坐绿皮车回家。因此我在满是难闻气味的绿皮车车厢里又待了一个半小时。最终，我终于在凌晨一点回到了芜湖。</p>
]]></content:encoded></item><item><title>Openwrt Luci Openvpn 服务器多设备同时接入</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210413/</link><pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210413/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>我们日常使用的 Openwrt 软路由系统几乎都集成了 <a href="https://openwrt.org/docs/guide-user/luci/start">Luci 界面</a>，它不仅可以为用户提供便利的可视化后台管理界面，还在各路大神的贡献下，适配了众多简单易用的图形化 App。<a href="https://github.com/DavBfr/luci-app-openvpn-server">Luci-app-openvpn-server</a> 就是众多 Luci 应用中最常用的 VPN 服务器之一。</p>
<p>简单来说，luci-app-openvpn-server 就是 Openvpn 服务器端的 Luci 界面版本。有了它，你就可以告别难搞的命令行，通过图形化的网页直接配置你的 Openvpn 服务器端。结合各主流平台的 Openvpn 客户端软件，你可以随时随地接入自己家里的局域网，实现内网访问或文件传输等功能。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210413/luci-openvpn.png"></p>
<p>正常情况下，只要按照 Luci 界面的提示填写相应的配置信息，即可成功运行 Openvpn 的服务器端。此时只要点击“一键下载.Ovpn 文件”按钮，再将下载下来的配置文件直接导入 Openvpn 客户端软件即可开始使用。但 luci-app-openvpn-server 的默认配置支支持同时登陆一个客户端，当有第二个客户端尝试接入时，先前接入的第一个客户端就会被强制断线。然而在日常使用的过程中，多设备同时接入的情况是十分常见的，那么怎样才能使 luci-app-openvpn-server 可以同时接入多个设备呢？</p>
<p>其实，Openvpn 的服务端是支持多设备同时接入的。根据 Github 上<a href="https://github.com/coolsnowwolf/lede/issues/6175">这个 Issue</a> 中的介绍，我们能够得知，只要在 Openvpn 的配置文件中加入一行代码，即可开启 Openvpn 的多设备同时接入功能：</p>
<p>具体如何操作呢？首先，用 ssh 工具登陆你的 Openwrt 软路由。具体的工具及方法可自行搜索，我日常使用的是微软官方发布的 <a href="https://www.microsoft.com/en-us/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab">Windows Terminal</a> 终端工具。成功登陆 ssh 后，输入以下命令开始编辑 Openvpn 的配置文件：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>vim /etc/config/openvpn
</span></span></code></pre></div><p>如果没能成功打开配置文件的编辑界面，很可能是因为你的 Openwrt 系统没有安装 vim （一款命令行文本编辑器）。至于 vim 的安装方法，还请自行搜索，本文不再赘述。</p>
<p>进入配置文件的编辑界面后，按键盘上的 I 健进入文本编辑模式，将光标移到配置文件末尾，将以下代码复制粘贴到配置文件最后一行。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>option duplicate_cn <span style="color:#e6db74">&#39;1&#39;</span>
</span></span></code></pre></div><p>编辑完成后，按键盘上的 ESC 健，再依次输入以下命令保存并退出编辑器：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>:qw
</span></span></code></pre></div><p>完成上述步骤后，重启路由器。不出意外的话，你就可以同时使用多个客户端接入自己的局域网了。</p>
]]></content:encoded></item><item><title>利用 Docker 搭建 Trilium Notes 服务器</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210320/</link><pubDate>Sat, 20 Mar 2021 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20210320/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>由于平时需要处理大量结构复杂的内容，并且各内容板块间还存在相互交叉的引用关系，因此长久以来我一直在寻找一款既能满足需求，又简洁易用的内容管理工具。印象笔记或 OneNote 等笔记类服务似乎最为常见，但一来，将所有的私人内容存储在商业公司的服务器上总会让我缺乏安全感；二来这些软件要么不够轻便，要么对重要功能额外收费，因此一直都无法让我十分满意。</p>
<p>两年前，我接触到一款叫做 <a href="https://www.notion.so/">Notion</a> 的跨平台软件，无论是功能还是界面都令我十分满意，但它的价格并不便宜，我毕竟不是靠内容吃饭的职业创作者，无论如何也不愿为一款笔记软件搞月付。另外，Notion 仍然无法实现在牢牢掌控内容数据的同时实现便捷的多端同步，这也是一个不大不小的遗憾。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210320/Notion.png"></p>
<p>直到今天，偶然在<a href="https://sspai.com/post/59739">少数派这篇文章</a>的介绍下了解到一个叫 <a href="https://github.com/zadam/trilium">Trilium</a> 的 Github 开源项目，几乎完美地满足我的所有需求。首先，它是一个开源项目，支持自建笔记服务器，可以让我在牢牢掌控笔记控制权的同时实现多端同步；其次，它界面简洁，非常轻量，甚至可以丢掉客户端，完全实现网页端访问；最后，它完全免费，这点非常重要。</p>
<p>自从买了<a href="https://www.qnap.com/zh-cn/">威联通</a> NAS 后，我越来越倾向于将自己的各种数据保存在 NAS 上，再通过各类开源软件实现多端同步。这样既能保证数据安全和个人隐私，又能方便地管理自己的文件和数据。<strong>用几千元的成本和少许的电费换得对个人数据的完全掌控，我认为是值得的</strong>。因此，在意识到 Trilium 提供开源的服务端软件后，我立刻开始本地服务器的搭建工作。</p>
<p>Trilium 的官方文档中提供了通过 <a href="https://hub.docker.com/r/zadam/trilium">Docker</a> 安装 Trilium Server 的具体方式。但由于文档为全英文，且只提供了 SSH 命令安装的方式，一些新手阅读起来可能有些困难，因此本文将以图形化的方式简单陈述 Trilium Server 的安装方式。</p>
<p>首先，在你的 NAS 上安装 Docker 套件（在威联通的 QTS 中叫做 Container Station）并打开它。</p>
<p><img alt="Container Station 介绍页面" loading="lazy" src="https://masonblog.github.io/images/blog20210320/Container-Station.png"></p>
<p>进入“创建”，并在搜索框中搜索 Trilium，找到 zadam/trilium，点击右侧的“安装”。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210320/Docker-Trilium.png"></p>
<p>在弹出的创建窗口中，点选“高级设置”，首先在“网络”选项卡中设置 Trilium 的端口转发，trilium 的默认 web 界面默认端口是 8080，因此 Container 的端口必须写 8080，而映射出的主机端口则可以根据自身需求填写。为了记忆方便，我倾向于内外端口一致的设置，即主机端口同样设置成 8080，但如果你的 NAS 的 8080 端口已被其他程序占用，请填写其他端口。</p>
<p><img loading="lazy" src="/images/blog20210320/Docker-Trilium2.png"></p>
<p>接着，在“共享文件夹”选项卡中，将一个共享文件夹挂在到 Trilium 的容器中。容器中的挂载路径必须写 /trilium-data，而本机共享文件夹则可根据自身需求进行选择，注意挂载共享文件夹的权限必须为读取和写入均有。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20210320/Docker-Trilium3.png"></p>
<p>上述设置完成后，点击“创建”按钮，系统会自动下载镜像文件并根据你的配置安装容器。容器安装完成后，便可通过在浏览器中输入 NAS IP/端口的方式访问 Trilium 的 web 界面。初次使用 Trilium 时要进行一些简单的初始化设置，例如创建用户名和密码等。虽然界面只有英文，但非常简单，这里不做赘述。</p>
<p>至此，我们便搭建完成了自己的笔记服务器。关于 Trilium 的具体使用方法，可自行摸索或搜索，总体来说，这款工具的使用门槛并不高。我的这篇文章就是全称用 Trilium 撰写的。Trilium 支持 Marddown 语法，因此对我而言几乎没有任何使用门槛。另外，Trilium 的 web 界面支持移动端布局，只要做好 DDNS 和路由器端口映射，便可在任何地方随时随地访问自己的笔记，无论用电脑还是手机。</p>
]]></content:encoded></item><item><title>身后，岸边，安徽全椒县</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20201231/</link><pubDate>Thu, 31 Dec 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20201231/</guid><description>2020年终总结</description><content:encoded><![CDATA[<p>此刻的我，正坐在巴南工业区的某间宿舍里，对着充满指纹的笔记本电脑，回想着在这艰难的一年里，任何能够使我留恋的事物。</p>
<p>按照惯例，我在写狗屁不通的所谓年终总结时，会戴着耳机，单曲循环一首多少能够令我或感慨、或亢奋的音乐。而今年，我一直在听的，还是李志在2018年跨年演唱会上的那首不插电版的《热河》。说来吊诡，这首歌明明叫“热河”，写的确是南京。就像我在上海时每天都会经过顺义路，却一次也没去过北京。</p>
<p>不知从什么时候起，南京已经成了“家乡”的代名词。这或许是因为每次放假回家，我都会先飞到南京禄口机场，再坐动车回芜湖；或许是因为每次跟人介绍自己家乡时，都会不自觉地和对方说 “我老家，安徽芜湖，就在南京旁边”；又或许是因为每次提起“中国”时，我都会想起南京。</p>
<p>不是与我同年毕业的人根本不会知道，新冠疫情之后，在中国找工作有多难。尽管我一度非常想在上海定居，但无比艰辛的求职历程使我伤心透顶，以至于在我登上去深圳的飞机时，没有一丝留恋，连头也没回一下。当然我对大众刻板印象中的“上海人”没有任何看法，也不觉得上海是一座多么难以融入的城市。我只是单纯地觉得，或许只有像深圳这样缺乏传统的地方，才更加适合我生存。毕竟我不喜欢历史，也讨厌传统。</p>
<p>国浩是家好律所，因为它在我最无助的时候收留了我，并为我提供了一个足以磨练技艺的好平台。虽然一心想做诉讼的我，已经阴差阳错地踏入了非诉律师的道路，但如果放弃扶贫济困的理想，一心只想着过上体面生活的话，律师不过是门谋生的手艺而已。所以我早就放弃幻想了。自从我背着书包、拖着箱子来到南方的这片文化沙漠上的那一刻起，青春就已经随风而去了。</p>
<p>一年前的今天，我正发着40度的高烧，在谢春花的演唱会上瑟瑟发抖。而就在同时，李文亮发出了那条足以载入人类史册的微信消息。之后，哨声响起，整个世界都变了。我依稀记得，谢春花那场演唱会的主题是“2020，请对我好一点”。好吧，它确实对我挺好，至少在它最后的两个月里，我的人生多少出现了一丝转机。</p>
<p>夜深人静时，我时常在心里咒骂那些给我们这代人留下一片狼藉的父辈们。这个国家已经在她的“接班人”身上压了太多重担，以至于完全不需要人流和结扎，新生儿的数量也在逐年下降。这或许会挫败杜蕾斯的股价。不过也好，我向来不喜欢垄断资本，如果杜蕾斯具有垄断型的话。但往后又该怎么办呢？至少我想不到出路。可能对于个人来说，逃离索多玛才是上策。奈何这时又来了新冠肺炎，使得国与国之间那条最后的虚伪的友好纽带，也被拦腰截断。</p>
<p>明天，我将从巴南出发，坐上两个小时的轻轨，去渝北坐飞机回家。当然，芜湖没有机场，我的目的地仍然是南京。但对南京来说，我的老家在身后，在岸边，在安徽全椒县。</p>
<p>2020年12月31日于重庆巴南</p>
]]></content:encoded></item><item><title>通过群晖与 Openwrt 软路由实现自动端口映射</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200914/</link><pubDate>Mon, 14 Sep 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200914/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>要在家庭或公司的局域网以外（俗称外网）访问家中或公司内网的设备（例如 <a href="https://baike.baidu.com/item/NAS">NAS</a>），通常有两种方式。第一种方式是在局域网的路由器上架设一个 VPN 服务器，再将外网的终端设备作为 VPN 客户端接入内网。在这种情况下，<a href="https://baike.baidu.com/item/VPN">VPN（虚拟专有网络）</a>充当了网线的角色，即接入 VPN 的外网设备，就相当于拉了一根通往内网的网线。因此在 VPN 网络中，即使这根网线是虚拟的，也能实现如同身处局域网内一般的访问体验。</p>
<p>第二种方法则更为简单直接，即通过<a href="https://baike.baidu.com/item/DDNS">动态 DNS</a> 服务将一个域名绑定到局域网服务器的外网 ip，再议端口映射的方式将内网设备暴露在公网中，以供外网设备连接。由于众所周知的原因，我国境内的 VPN 连接并不稳定，因此大多数人都会选择第二种方式进行内网穿透。</p>
<p>在路由器上进行端口映射的操作非常简单。这里以 <a href="https://openwrt.org/">Openwrt</a> 系统为例，仅需在网络 - 防火墙 - 端口转发中新建转发规则，将相应内网设备的端口映射为外网端口即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200914/port-transfer.png"></p>
<p>然而，由于内网设备的内部 ip 地址会随着 DHCP 租约的更新而不断变化，尽管我们可以通过 IP/MAC 绑定的方式人为地固定内网设备的 ip 地址，但实践证明这种方式并不稳定。因此，我们经常需要手动修改端口映射规则，这就使得相关的维护工作变得非常繁琐。如果我们长期在外，无法接入内网环境，上述规则修改的工作就很难进行。这时，我们就需要用到 UPnP（通用即插即用）服务。顾名思义，它是一种自动配置端口映射的工具。只要服务器和内网其他设备同时开启 UPnP 服务并稍加简单的配置，即可一劳永逸地解决端口映射的问题。</p>
<p>以群晖和 Openwrt 系统为例，我们首先需要在 Openwrt 路由器上安装并开启 UPnP 服务。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200914/upnp.png"></p>
<p>然后，登陆群晖的管理后台，在控制面板 - 外部访问 - 路由器配置选项卡中，选择“设置路由器”。此时系统会自动检测网络环境以及路由器型号与配置，不出意外的话，整个过程能够由系统自动完成，无须人工配置。之后，点击“新增”按钮，并根据自己的需求选择要转发的应用和端口，再点击“保存”即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200914/synology-upnp.png"></p>
<p>最后，我们可以回到路由器后台的 UPnP 页面，查看已经被系统自动添加好的端口映射规则。值得注意的是，国内的网络运营商一般会禁用个人和家庭宽带的 443 和 445 端口（前者是 https 的默认端口，后者是 smb 服务的默认端口），因此，即使我们在 UPnP 服务中添加了上述两个端口的自动映射，也无法实现 443 和 445 端口的外网访问。此时，就需要我们在防火墙的端口映射中手动进行端口映射，即将 443 和 445 两个内网端口映射到外网的非 443 或 445 端口（如 444 和 446，全凭个人喜好）。这样，我们才能绕过运营商的封锁，成功进行上述两个端口的外部访问。</p>
]]></content:encoded></item><item><title>开学计</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200913/</link><pubDate>Sun, 13 Sep 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200913/</guid><description>偶尔记录生活</description><content:encoded><![CDATA[<p>所谓的“14天自我健康管理”制度，亦即“14天隔离”制度的美化提法，真是一个彻底的懒政行为。今天下午，当我拖着一大箱行李以及一大包快递（里面装着用于替换的被褥，我之所以要抱着它到处跑，正是因为封闭管理的学校不让快递员进入，从而使我不得不自己去菜鸟驿站取件并带回学校）来到光复西路的校门前时，一个笨手笨脚的保安让我们排队进行“身份验证”。由于那个该死的人脸识别系统不管看到谁都是一副“识别失败，请刷卡重试”的死样，我们不得不挨个进行纸质登记。我后来才知道，那个用于返校身份验证的系统，似乎没有被录入任何一个学生的信息。也就是说，那个不断重复着“识别失败，请刷卡重试”的机器是个彻彻底底的摆设，所有排队进行“身份验证”的学生都不得不进行手动登记。</p>
<p>可能是因为我那十位数的学号过于复杂，以致于那名奉旨办事的保安根本无法在厚厚的学生名册上找到我的信息，因此我不得不在身后数名与我同样拖着大箱行李的女生的焦急等待下，自己翻找名册、自己填写表格，并从一个没有任何工作人员驻守的“体温检测间”中通过，最终顺利而快速地进入到了阔别已久的校园。</p>
<p>一番整顿以后，我将疫情期间孤独地横躺长达8个月之久的一床被褥，连同一个小米手环3一起打包寄回了老家。因为我这次返校已经准备了一床全新的被褥，所以旧的似乎发霉的那床“孤独被褥”便沦为不得不被邮寄的多余之物。之所以我要连那个早已耗空点亮的小米手环3一并寄回，是因为33想用它来做自己的闹钟兼手机的消息提醒仪（与我如出一辙的用法）。自从当上十一中国际班的班主任后，她那无论有怎样的急事都死活打不通电话的“失联症”似乎得到了缓解。看来真正能使一个人走向成熟的，不是爱人的循循善诱，而是社会铁拳的毒打。对于她的这一点变化，我还是很感到欣慰的。</p>
<p>我没想到这座神奇学校的注册报到时间到今天下午四点就会截止，因此当我不慌不忙地享用完河西食堂那堪比人间美味的丰盛晚餐，走到40栋正门附近的报到机器前（它一直到下午四点以前还呆愣愣地杵在那里等人刷卡），发现本该位于那里的机器已经消失。紧接着我便接到班长大人的通知：“报到时间截止到13号下午四点，以下名单中的同学（当然包括我在内）未能及时报到，请于明天在40栋一楼终端处（也就是我此时正站立的同一位置）进行补报。”</p>
<p>晚上“跨区洗澡”时突然下起大雨。这里有必要解释一下，我之所以在“洗澡”前加上“跨区”二字，绝非因为我故弄玄虚，而是因为在这所神奇的学校，居住在河东的几乎所有学生（一号楼除外，因为他们有自己的浴室）都要越过苏州河，来到河西的公共浴室洗澡。而众所周知，苏州河是普陀区和长宁区的界河，所以我们每晚的洗澡行动，都要不折不扣地跨区进行。考虑到上海的直辖市地位，我们洗澡时所跨越的居然是两个市级单位。所以可想而知，当跨区洗澡的我们遇到瓢泼大雨时会是一种怎样的好心情。尤其当我们看到路边有两床被大雨淋得湿透了的被褥（很遗憾，晾晒它们的主人似乎忘记了他们需要在天黑前收被子的常识）时。这股好心情变得愈发地好了。</p>
]]></content:encoded></item><item><title>华为“南泥湾”项目与中国社会的内卷化</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200804/</link><pubDate>Tue, 04 Aug 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200804/</guid><description>谷月杂谈第十六期逐字稿</description><content:encoded><![CDATA[<h1 id="华为启动南泥湾项目">华为启动“南泥湾”项目</h1>
<p>今天，网络上突然传出一则关于华为的<a href="https://tech.163.com/20/0804/13/FJ6L182N00097U7S.html">新闻</a>。《科创板日报》报道，华为已启动“南泥湾”项目，加速推进其笔记本电脑和智能电视等产品的开发，意在规避含有美国技术的产品。这标志着，在日益严峻的外部压力下，华为不得不将其注意力从 5g、芯片等技术密度较高的领域移开，转而投入到电子消费品等技术密度较低的领域。因为相比于前者，对电子消费品的投入不仅能够规避西方国家的技术封锁和制裁，还能使华为以较少的研发成本获得较高的销售利润。作为一家上有股东、下有员工的企业，这一战略转移完全符合华为的利益需要，可谓一举多得。</p>
<p>但令人倍感惋惜的是，作为一家以高技术闻名的企业，一度被众多爱国人士奉为“民族骄傲”的华为公司，也终究逃不过”内卷化“命运。个人认为， <strong>被迫启动”南泥湾“项目的华为，与被迫卖掉 Tiktok 的字节跳动一起，共同构成了这个时代我国民族企业所处尴尬境地的缩影。它们同样拥有着非凡的创新能力，同样试图走出中国、走向世界，也曾一度真正拥有过世界级的影响力。却在政府的一系列不合时宜的战略或政策的影响下，不得不自废武功，把原本瞄准国际市场的远大眼光转向国内，成为业已厮杀得如同红海的国内竞争的参与者之一</strong>。</p>
<p>一部分人会将华为和字节跳动的这一尴尬境地归咎于以美国为首的西方国家的排挤和打压，认为美国为了维护自身的霸权，不得不用尽各种手段打压中国的优秀企业。而另一部分人则将中国企业的不利处境归咎于中国政府的战略误判与政策失误，认为政府的信誉降低和一系列过激的外交言行才是拖累民族企业“走出去”，从而使中国社会陷入内卷化的真正原因。无论哪种观点，都不否认这样一个事实，即包括民族企业在内的几乎所有社会主体，都已不可避免地走出了中国发展的黄金年代。随之而来的，将是一段不会太短的“寒冬”。</p>
<h1 id="中国社会的内卷化危机">中国社会的内卷化危机</h1>
<p>前文提到了两次“内卷化”的概念。<strong>所谓内卷化，指的是某一社会在发展到一定阶段后即陷入停滞，其内部成员之间发生无比激烈但毫无意义的竞争，从而导致社会整体无法走向更高级阶段的现象</strong>。尽管人类社会的发展是否一定遵循“由低级向高级”的规律仍然可疑，但不可否认的是，作为一种纯粹经验主义的归纳，内卷化这一现象确实在人类历史上时有发生。例如，学界的主流观点认为，如果没有西方文明的介入，大清帝国仅靠自身的力量无法发展出近代资本主义，也无法在政治或意识形态上走向近代化。可以说，与西欧诸国相比，19世纪、甚至更早以前的中国，实际上已经陷入了内卷化的泥潭。</p>
<p>与内卷化的提法类似的，还有所谓**“中等收入陷阱”的概念。它是指一个国家由于某种优势达到了一定收入水准，而停留在该经济水准，无法进一步发展的情况**。目前为止，世界公认的已经陷入中等收入陷阱的国家有巴西和南非等。它们都曾经历过一段为时不短的高速增长期，但随着劳动力成本的不断提高，这些国家失去了原本的竞争优势。与此同时，产业转型和科技进步并未及时到来。因此，这些国家在达到中等收入水平后，便陷入了长久的停滞，直至今日。</p>
<p><strong>当下的中国社会正处于内卷化或中等收入陷阱的边缘</strong>。随着体制改革和产业转型的陆续失败，中国经济的发展已经逐渐失去动力，加之新冠疫情与全国性洪涝等诸多“黑天鹅”事件的影响，要恢复到过往的高速增长状态已不可能。在这种情况下，大规模的降薪乃至失业便不可避免。工作时间的延长以及员工待遇的降低，无非只是这一历史潮流下的几朵浪花，更加汹涌的现实还在不远的将来。</p>
<p>2018年以来，弥漫在城市中产间的焦虑感正在与日俱增。增长迟缓的收入与不断攀升的房价之间所形成的巨大张力，正在侵蚀中产阶级的生活。尤其是刚步入社会的年轻一代，由于高校的过度扩招以及教学体制与社会需求的脱节，他们原已面临巨大的竞争压力。经济形势的整体劣化更是令业已激烈的竞争态势愈发严峻。近年来，非专业技能类岗位应聘者的高学历化趋势日趋明显。在十年前仅需大专学历即可获得面试机会的工作岗位，如今却要本科及以上学历作为敲门砖。这一现象并非我国高等教育普及率提升的表现，而是社会内卷化的表现。在内卷化的社会中，原本应当起到促进社会整体发展的个体竞争，已经沦为了毫无意义的内耗。</p>
<h1 id="内卷化的原因与出路">内卷化的原因与出路</h1>
<p>从根本上说，<strong>一个社会之所以会走向内卷化，是因为其自身的发展模式过于激进、产业结构缺乏后劲，而非因为所谓发达国家的剥削或别有用心的阻拦</strong>。与后一种归因方式有关的一个著名的阴谋论就认为，日本之所以会从80年代的高速增长阶段迅速滑向崩盘和衰落，以至于走入“失落的30年（1990～2020）”，是因为其与以美国为首的西方国家签订了《广场协议》。这份协议协议因此被许多国人认为是美国为了维护其世界霸主地位、从而打压当时作为世界第二大经济体的日本的发展的明证。</p>
<p>然而事实并非如此简单。《广场协议》原本旨在使美元贬值，以促进美国的产品出口，却在日本大藏省一系列财政和货币政策的助推之下，导致日元极速升值。大量热钱于是涌入日本市场，使日本的股市和房价自《协议》签订的1985年开始便一路飙升，直至1990年代初期泡沫破灭。在这一过程中，日本大藏省的决策失误和处置不当，是导致泡沫膨胀和破灭的真正原因，而被许多国人津津乐道的《广场协议》，充其量只是一个导火索而已。因此，一味将一国经济的停滞或衰落归咎于外部势力的打压无济于事。<strong>要避免社会整体的衰退与内卷，我们必须直面自身发展模式的弊病，反思政策上的失误和教训，不断寻求符合国情的产业转型方式</strong>。</p>
<p>现代化的主流政治理论中，政府应当承担为个人与企业的发展保驾护航的职能，至于发展的方向及途径，即使不出现在民意机关（如国会）的经济蓝图中，也应当交由民间自己来决定。缺乏审视的空泛规划，只会成为个人与企业发局的枷锁，约束自身前进的步伐。至于施行“战狼外交”，激起国际社会的反感，进而反噬自己的民族企业，则更是与现代政府的职责相去甚远。如果无视这一点，对任何失误都不加检视，推出再多输出产能的“战略”或“倡议”都于事无补。内卷化的到来不因个人意志的排斥而延缓，而中国人的命运也必须掌握在自己手中。</p>
]]></content:encoded></item><item><title>天灾与民生，孟子的社会福利观</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200728/</link><pubDate>Tue, 28 Jul 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200728/</guid><description>格物志第五期逐字稿</description><content:encoded><![CDATA[<p>今年夏天，我国南方地区遭受了史上罕见的洪涝灾害。许多农村地区的居民由于泄洪或决堤，不仅蒙受了巨大的经济损失，还不得不离开自己的家乡，成为流落异地的难民。在巨大的损失与伤痛面前，对政策的质疑和指责就会不可避免地出现。不少因泄洪而濒临破产或无家可归的居民，通过社交网络表达了自己的抱怨。这些抱怨在多数情况下能够得到网民的认可与同情，但批评与指责也随之而来。</p>
<p>批评者认为，无论是瘟疫还是洪水，都属人力无法掌控的天灾范围。天灾面前人人平等，落难与损失是无法避免的。那些因此经济破产或无家可归的难民只能说是运气不好，怨不得别人。况且政府在抗洪救灾方面已经尽了最大努力，它已经很努力了，你们凭什么怪他？</p>
<p>对于这种声音，孟子早在两千多年前就已经给出过有力的回应。《孟子·梁惠王》中有一段著名的论述，它被后世认为是孟子“仁政”思想的基础。</p>
<blockquote>
<p>梁惠王曰：“寡人之于国也，尽心焉耳矣。河内凶，则移其民于河东，移其粟于河内。河东凶亦然。察邻国之政，无如寡人之用心者。邻国之民不加少，寡人之民不加多，何也？”</p></blockquote>
<p>梁惠王〔对孟子〕说：“我对这个国家，也算是费尽心力了。河内遭了饥荒，我就把那儿的百姓迁到河东，再把河东的粮食运到河内；河东受灾了我也会这么办。我也曾考察过邻国的内政，它们没有一个能像我这么用心。但是那些国家的百姓却并没有因此减少，我的百姓也没有因此增多，这是什么缘故呢？</p>
<p>这里有一个背景需要交代一下。<strong>孟子作为“仁政”思想的鼓吹手，他每见到一个君主，都会告诉对方：施行仁政的国家会不断吸引别国的百姓过来定居；而不施行仁政的国家则留不住人，那儿的百姓会用脚投票，不断地向施行仁政的国家移民</strong>。在这种情况下，由于人丁是一国兴盛的基础，因此“仁政”就是让国家人丁兴旺，最终走向国富兵强的绝佳方法。</p>
<p>孟子试图通过这套说辞，来诱导各国君主，使他们在大国梦的驱使下施行仁政。因为在孟子的理论中，仁政是强国的必要条件。而梁惠王之所以会发出前文中的那段疑问，正是因为他听到了孟子的这套关于仁政的说辞。至于梁惠王是真心发问，还是有意刁难孟子，我们就不得而知了。但无论如何，梁惠王的这段话，是对孟子仁政理论的有力挑战。那么面对这样的挑战，孟子又是如何回应的呢？</p>
<blockquote>
<p>孟子对曰：“王好战，请以战喻。  填然鼓之，兵刃既接，弃甲曳兵而走。或百步而后止，或五十步而后止。以五十步笑百步，则何如？”曰：“不可；直不百步耳，是亦走也。”曰：“王如知此，则无望民之多于邻国也。”</p></blockquote>
<p>孟子答道：“大王您喜欢打仗，那就让我用战争来打个比方吧。如果有些人在战争刚开始，就抛下盔甲拖着兵器向后逃跑。只是有的人跑了一百步才停下来，而有的人跑了五十步就停住脚。在这样的情况下，那些跑了五十步的人能不能耻笑那些跑了一百步的人呢？”梁惠王说：“当然不能，他虽然没有跑到一 百步，但这也是逃跑呀。”这不是五十步笑百步嘛？对，没错！“五十步笑百步”这个成语就出自这里。</p>
<p>听到梁惠王的回答后，孟子窃喜，心想你终于上了我的套了。孟子说：“既然大王您懂得这个道理，那就不要再希望您的百姓比邻国多了。”接下来，  孟子用一大段严谨的论述，论证了为什么梁惠王尽心尽力地赈灾纾困，也还是与那些没有施行仁政的国家一样，无法获得仁政的红利。梁惠王嘲笑别国没有仁政，其实是在“五十步笑百步”，他的政策与别国并无本质区别。</p>
<blockquote>
<p>谷与鱼鳖不可胜食，材木不可胜用，是使民养生丧死无憾也。养生丧死无憾，王道之始也。</p></blockquote>
<p>粮食和鱼肉多到吃不完，木材也多到用不尽，这样便使百姓对生养死葬没有什么不满。百姓对于生养死葬都没什么不满了，王道也就开始了。</p>
<blockquote>
<p>百亩之田，勿夺其时，数口之家可以无饥矣。谨庠序⒂之教，申之以孝悌之义，颁白者不负戴于道路矣。七十者衣帛食肉，黎民不饥不寒， 然而不王者，未之有也。</p></blockquote>
<p>一家人有百亩耕地，不去妨碍他们的生产，那么，这个家庭可以吃得饱饱的了。好好地办些学校，用孝悌之义训导他们，  那么，〔人人都会尊老爱幼〕头发花白的老人也就不用背负着沉重的货物在路上行走了。连七十岁以上的老人都有衣穿、有肉吃，黎民百姓不饥不寒，这样的国家是不可能不使天下归顺的。</p>
<blockquote>
<p>狗彘食人食而不知检，涂有饿莩而不知发；人死，则曰，‘非我也，岁也。’是何异于刺人而杀之，曰，‘非我也，兵也。’王无罪岁，斯天下之民至焉。</p></blockquote>
<p>〔现在的情况却不是这样〕富人家的猪狗吃掉了百姓的粮食，却不加以检查和制止。平常年月道路上有饿死的人的尸体，却不曾想到应该打开粮仓加以赈救。等到把人害死了，就说：‘这不是我的错，是年成不好。’这种说法就相当于拿着刀子把人捅死，却说，人不是我杀的，是兵器杀的。大王您如果不把责任推给天灾，〔而是对体制进行根本的改革〕那么，别国的百姓自然都会来投奔的。</p>
<p>相比于天灾之后的补救措施，孟子显然更加看重社会整体的福利状况。<strong>只要政府不再横征暴敛，不再用繁重的税收和高涨的房价把老百姓的经济耗空，那么即使瘟疫和洪水来了，人民自身也会有很强的抵抗能力，而不至于一失业就破产、一失业就断供</strong>。因此，在孟子看来，自由市场和社会福利是帮助百姓抵御天灾的安全网。有了这些，才能称得上真正的“王道”，才能吸引别国的百姓心向往之，最终使得天下归心。而那些动不动就把责任推卸给天灾的人，无论再怎么费尽心力救灾抢险，都与王道相去甚远。这些人嘲笑别国，就是五十步笑百步。</p>
]]></content:encoded></item><item><title>游戏的流媒体化趋势于中国的版权拉锯战</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200628/</link><pubDate>Sun, 28 Jun 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200628/</guid><description>格物志第四期逐字稿</description><content:encoded><![CDATA[<p>多年以后，当我翻开这本已经发霉的、十多年前的光碟簿时，我想起中学时代、的那些闷热的下午，挤进电脑城二楼的小隔间，挑选盗版游戏光碟的日子。那个时代，中国正处于游戏机尚未解禁，数字版权没有普及，实体渠道极为稀少的年代。那时候的穷学生们，只能靠这种街边的盗版光碟，以及破解游戏论坛接触和游玩最新的单机游戏。我也不例外。</p>
<p>与传统音像产业类似，<strong>中国电子游戏的盗版时代，随着实体时代的结束而结束</strong>。在音像产品还在以实体光碟或磁带为主要分发形式的实体时代，一个知识产权执法不严的国家，必定会出现盗版遍地的局面。像这种2元钱一张的盗版光碟，几乎没有任何生产上的技术门槛。但随着互联网的普及，数字版权逐渐代替了实体渠道，成为了音像制品最主要的发行方式。人们对音像产品的使用习惯也在这一过程中逐渐改变，传统的DVD放映机、和磁带随身听被逐渐淘汰，手机、电脑，以及一系列便携式的数字媒体播放器成为了主流。这时，实体的盗版光碟已经走向了没落。</p>
<p>道高一尺、魔高一丈。早期的线上数字发行，由于网络带宽和流量的诸多限制，还只能以数字拷贝的方式进行。这就为盗版提供了新的可乘之机。虽然传统的实体盗版产业在此时已经日薄西山，但由于数字拷贝极易复制和传播，因此以BT和电驴等形式的盗版传播日益猖獗。即使发行商们绞尽脑汁对数字拷贝服务进行技术上的保护，例如对数字拷贝的文件格式进行加密，或者要求购买者必须使用自家的播放软件进行播放等等。但这些努力都无济于事。破解或逆向工程在相当长的一段时间里，成为线上盗版渠道的主要技术武器。</p>
<p>时至今日，<strong>数字串流服务，或者叫网络流媒体服务，为这场纷争彻底画上了句号</strong>。与早些年间通过下载或拷贝的方式进行售卖或发行的方式不同，数字串流服务为消费者提供了无需下载，即点即播的便利体验。例如 Spotify 和  Netflix，虽然后者一开始也是靠做实体光碟出租业务起家，但这两者如今的主营业务，都是订阅制的数字串流服务。网络基础设施的完善，以及流量资费的降低，使得随时随地通过网络享受串流服务成为可能。在这场有关知识产权的拉锯战中，科技的进步无疑使版权方胜利在望。</p>
<p>电子游戏也经历了类似的发展历程，只是相比于传统音像行业，游戏所占用的数据容量更大，并且其互动式的消费方式对特定环境和硬件的要求也更多。因此，以 Steam  为代表的数字拷贝服务，要比音乐或电影行业普及得更晚。如今，只要接一根网线，我们就可以高速地下载数字版游戏，而无需购买实体的游戏光碟。那些充满回忆的“番茄盘”“香蕉盘”，也逐渐推出了历史舞台。</p>
<p>正如我前文所说，电子游戏的消费方式是交互式的，它对操作与回馈的及时性有着极高的要求。这就是游戏产业迟迟未能从数字拷贝时代跨入到串流时代的真正原因。所谓电子游戏的数字串流服务，是指玩家无需将游戏数据下载到本地，而只是通过网络接受游戏画面并发送操作指令，即可完成游玩过程的新型消费方式。它也被一些人称为“云游戏”，因为游戏数据会一直被储存在服务商的云端服务器上。</p>
<p>2019年，Google在它一年一度的游戏开发者大会，也就是GDC 2019上发布了它的游戏串流服务  Stadia。Google称，通过Stadia，玩家无需下载任何游戏数据到本地，只需通过Chrome浏览器，即可在不同平台的设备上，以4K60帧的画面游玩最新的电子游戏。这便是Netflix等数字串流服务在电子游戏领域的实现。</p>
<p>目前看来，<strong>游戏串流服务所面临的唯一阻碍，便是网络延迟</strong>。我们平时在游玩网络游戏的时候，100ms左右的延迟便已可以带来极佳的游戏体验。但这里的网络延迟只发生在我们与其他玩家的互动上面，换句话说，我们玩家自己操控的角色，是不存在延迟的问题的。因为我们所看到的所有游戏资源，都已事先被下载到本地。游戏串流则完全不同，它要求我们的网络不仅能够实时传输大量游戏资源数据，还要能够及时地将我们的操控指令回传到云端，再由云端计算出与我们操控指令相对应的反馈，以及这些反馈所对应的游戏画面。而这一整个过程都必须在10ms以内的时间里完成，玩家才不至于感受到明显的操作滞后性。</p>
<p>传统的光纤网络或蜂窝移动网，当然无法满足游戏串流对于网络延迟的严苛要求。但在不远的未来，随着5G标准的普及，高带宽、低延迟的网络几乎已经近在眼前。在这些新技术的加持下，原先人们一度认为不可能实现的游戏串流服务，也将切实地来到人们面前。</p>
<p>6月12日，索尼终于公布了 PlayStation 的下一世代游戏主机：PS5。而微软也在几个月前公布了自家次世代主机 xbox series x  的详细信息。这两款新主机相比于前代，在性能上的提升其实非常有限，远不如PS2到PS3的进步程度，这也是这两款新主机一经公布便引起争议的原因。而作为PS5最大亮点的高速固态硬盘，更是被许多人嗤为噱头。</p>
<p>可以预见到的是，<strong>随着PC硬件价格的不断降低，以及未来游戏串流服务的逐渐普及，游戏主机的生存空间将会越来越小</strong>。电视游戏将会一直存在下去，只是承载它的载体将从实体转为线上。就像我们现在再也不用购买专门的MP3播放器来听歌一样，我们也终有一天不需要专门的游戏主机。PS5或将是最后一个世代，游戏主机终将消亡，游戏的流媒体化趋势不可阻挡。</p>
<p>我本人其实是一个忠实的 Sony 和 Nintendo 玩家，主机游戏给我带来过非常多的快乐时光。就像中学时代的我，在慵懒的午休时光，拿出 Sony 的音乐播放器，戴上耳机听 Pink Floyd 的日子。它终将随着我的青春一同成为美好的过去。</p>
<p>我是谷月，感谢收听收看《格物志》，我将在这档节目里尽我所学，厘清历史与社会。如果你喜欢本期节目，请订阅我的频道，或者给我的视频点一个顶，并在评论区留下你的想法，我们下期再见。</p>
]]></content:encoded></item><item><title>饱受批评的《最后生还者2》：自我表达与大众需求间的矛盾</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200622/</link><pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200622/</guid><description>格物志第三期逐字稿</description><content:encoded><![CDATA[<p>6月19号，曾被许多玩家奉为神作的索尼 PlayStation  第一方大作《最后生还者》终于解锁了它的续作。然而，尽管此前一众游戏媒体都对《最后生还者2》给予了极高的评价，<strong>但游戏发售的仅仅第二天，其在  Metacritic 上的评分被玩家刷到了 3.8  的低分</strong>。媒体与玩家对《最后生还者2》两极分化的评价，更是将这款原本应该成为2020年度游戏有力竞争者的3A大作推上了风口浪尖。</p>
<p><strong>玩家对《最后生还者2》如此失望乃至愤怒的主要原因，是这款游戏的剧本</strong>。作为前代男主角，也是前代最主要可操控角色的乔尔，在本作的序章就领了便当。试想一下，一位曾经与你共度了几十小时的游戏角色，一位在前代故事中被刻画得极为丰满的硬汉父亲，却在本作游戏开场后不到2小时的时间里，被一个你完全不认识的女人，用高尔夫球棍如此虐杀。并且就在这个女人虐杀乔尔的十几分钟前，她还被乔尔从一群僵尸的手下救过一命。这当真是教科书级别的“农夫与蛇”的故事。</p>
<p>之后，女主艾莉便和她的小女友一起，踏上了“为父报仇”的漫漫长路。你以为这就完了？你以为接下来的故事就是女主如何克服千难万险，终于来到西雅图，手刃仇敌，然后潇洒而去，过上了穷且意坚的末世生活？你还是 too  simple！这款游戏的剧本最恶心人的地方在于，它不仅要强行让你接受前代主角一开场就领便当的事实，还要让你亲手操控那个对乔尔恩将仇报的女人，强行让你体会她的心路历程。最后，当艾莉终于历经千辛万苦来到这位杀父仇人面前，经过一番激烈的肉搏后，艾莉居然放了她！是的，当我看着杀父仇人的船缓缓地开走，而艾莉孤身一人在水中泣不成声的那一刻，我差点摔了手柄。</p>
<p><strong>同样经历过这种“玩家滑铁卢”式遭遇的3A游戏，还有2018年发布的EA旗下著名FPS游戏《战地5》</strong>。与《最后生还者2》发布即吃瘪的境遇相比，《战地5》则要惨得多。它在游戏正式发布前的第一支预告片，就已经在玩家中引起了轩然大波。对这支宣传片的批评主要来自《战地》系列的传统玩家，即广大第一人称射击游戏爱好者。他们认为，《战地5》宣传片中的画面与真实的二战历史严重脱节。无论是带着机械义肢的女兵也好，还是不属于任何一场二战经典战役的游戏场景也好，都让多数玩家怀疑，这到底是不是一部关于二战的游戏。</p>
<p>而负责《战地5》开发的DICE工作室CEO、EA首席设计官Patrick  Soderlund在面对玩家质疑时的回应则引起了更加广泛的愤怒和不满。他在面对采访时说：“这些人缺乏教育，他们不知道这是合理的场景。”还说：“对这件事玩家只有两种选择：要么接受这种设定，要么别买我们的游戏。”要知道，uneducated 在英语中是一个非常难听的单词。许多《战地》系列的核心玩家被彻底惹毛了，他们的怒火，使得《战地5》在发售之前就已经凉了半截。</p>
<p>无论是媒体和玩家对《最后生还者2》评价的两极分化，还是作者和玩家有关《战地5》的争论，都反映出一个有关电子游戏的根本矛盾，即<strong>艺术品与商品之间的矛盾</strong>。很多人喜欢将电子游戏称为“第九艺术”，原因是游戏和电影类似，都能通过各种技巧来表达某些观点或讲述某些故事，从而引起观众或玩家的情绪反应。但就如同电影要靠票房来获取收益一样，游戏的本质也不过是厂商用来盈利的产品。<strong>一旦一样东西兼具了艺术表达和商业盈利的双重使命，它就不可避免地会陷入这种艺术品与商品之间的矛盾之中</strong>。</p>
<p><strong>艺术品的构建是高度私人化的，它更多地是作者个人或创作团队在价值观、审美和技法上的私人表达</strong>。既然是私人表达，就自然会引起一部分人的认同、而另一部分人的不认同。但在纯艺术的领域，表达者与欣赏者之间处于不对等的关系，即表达者无需在意欣赏者的感受，他只管尽情表达就好。从这层意义上来说，艺术家都应该是高傲的。</p>
<p>然而另一方面，<strong>商品的构建则具有高度的公共性，它只有尽可能地迎合自己的受众，才能获得商业利益的最大化</strong>。因此，商人们往往并不在乎自己想要表达什么，而更加在意受众们想要什么。因为在商业领域，生产者与消费者之间处于相对平等的关系，只有二者达成共识，经济效益才能产生。如果一个商品得不到市场的认可，那它就是失败的，没有任何回旋的余地。</p>
<p><strong>商业电影和电子游戏恰好横跨了艺术与商业两个领域，它们自诞生之初起就要挣扎在自我表达和大众需求之间，在双方不断的拉锯中谋求生存</strong>。《最后生还者2》的制作团队或许的确很有想法，他们想让这部游戏超出商品的范畴，进而承载一些高尚的价值观。但这显然不合玩家们的胃口。身为一家身负重担的索尼第一方游戏团队，顽皮狗不应该摆出一副高高在上的模样，将自己的价值观强行灌输给玩家，而完全不考虑玩家的感受。这样做既不符合商业逻辑，也会为工作室日后的发展蒙上一层不可知的阴影。</p>
<p>毕竟，<strong>《最后生还者》不是一部自娱自乐的独立游戏，也不是放在游戏博物馆里供后人瞻仰的艺术品，它是一件实实在在的商品。它的诞生只有一个目的，那就是盈利</strong>。当然，能在盈利之余兼顾自我表达当然更好，但当两者发生冲突，明显只能选择其一的时候， 作为一家拿着投资人钱的厂商，你只能选择商业的逻辑，而非艺术的逻辑。这或许听上去不够浪漫，但它就是我们这个社会的基本运作方式。</p>
<p>我至今仍然记得乔尔和艾莉两人骑着马，走过长颈鹿身边的那段美好场景。顽皮狗是一家带给我们太多美好回忆的工作室。希望他们能够汲取这次教训，在以后的日子里做出更多既叫好、又叫座游戏。</p>
<p>我是谷月，感谢收听收看《格物志》，我会在这档节目里尽我所学，厘清历史与社会。如果你喜欢本期节目，别忘了订阅我的频道，或给我的视频点个顶，并在评论区留下你的想法。我们下期再见。</p>
]]></content:encoded></item><item><title>缪可馨的悲剧是我们共同的悲剧</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200617/</link><pubDate>Wed, 17 Jun 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200617/</guid><description>谷月杂谈第二期逐字稿</description><content:encoded><![CDATA[<p>最近，江苏常州金坛区的一名小学生坠楼事件传遍了中文互联网。其实我本来是不太想专门出一期节目来讨论这件事情的，毕竟小女孩刚走没多久，把这件事情翻出来蹭热点、吸流量确实不太好。但我转念一想，逝者已矣，生者奋发。我们这些多多少少体会过缪可馨感受的人，是时候站出来好好讨论以下，如何避免类似的悲剧再次发生了。</p>
<p>我今天主要想讨论两个问题。首先，关于很多人都在批评的“传递正能量”的问题，我个人对此的看法可能和主流观点不太一样。可能对于我们这些成年人来说，一味地“传递正能量”确实是一种自我麻痹的精神鸦片，它除了粉饰太平以外，无益于解决任何现实的问题。但对于像缪可馨这样十岁左右的小朋友来说，在正常情况下，我们是不是应该以“传递正能量”为主呢？至少在我个人看来，让十岁左右的小孩，提前了解到成年人世界的复杂和丑陋，是一件极其残酷的事情。所以<strong>在一个正常的社会里，无论成年人间的尔虞我诈有多激烈，我们都应当努力让下一代在一个充满善意和温暖的环境中长大</strong>。这就是我支持向孩子们“传递正能量”的原因。</p>
<p>然而我上面所说的这些，只在一个正常的、理想的社会中才能成立。在我们当下的社会现实中，像缪可馨这一代人，他们从小就生活在大大小小的补习班、考试和比赛当中。他们所面临的竞争之残酷、压力之巨大，可能是我们这些成年人都无法体会的。<strong>在这样的环境中，孩子们其实已经提前步入成年阶段了。对于他们来说，早就没有什么温暖而纯真的童年了。这也就是为什么缪可馨能够写出《三打白骨精》这样文章的原因</strong>。因为他们不是不想“传递正能量”，而是他们从很小的时候开始，就已经尝到了本该只属于成年人世界的苦涩。在这种情况下，你们老师还要一味地要求孩子们“传递正能量”，这不是逼孩子撒谎，是什么呢？</p>
<p>归根结底，在“正能量”这件事情上，错的不是孩子，而是这一整个社会。是我们这些成年人无能，我们没能尽到我们的本分，没能为我们的下一代创造一个充满纯真和温暖的童年世界，才最终酿成了这样的悲剧。</p>
<p>我今天要讨论的第二个问题，是关于教师这个群体，在我们每个人成长过程中所扮演的角色的问题。我想你们很多人都跟我一样，经历过被班主任或任课老师不人道对待的滋味。北上广这些一线发达地区我不清楚，我是在三线城市的棚户区长大的。我上幼儿园时就经历过体罚和殴打。那时候年纪小，精力旺盛，午休的时候总是睡不着觉，于是老师就让我们几个不睡觉的小孩在墙角做深蹲。那时候我才5岁。上小学的时候就更厉害了，没交作业的排队打手背。注意，不是打手心，而是手背。我们老师亲口说过，手背比手心疼，他要让我们“长记性”。至于语言上的侮辱和谩骂更是数不胜数。上课回答不上问题就会被说成“脑子里有花岗岩”，同一道题反复做错就会被说成“弱智”“无药可救”等等。家里不给红包的学生会被安排到教师后排，班干部都会给家里有钱并且愿意包红包的学生。</p>
<p>我在这里就不继续列举了。我今天想说的是，<strong>无论在哪个国家，教师都是一个先天就具有专制色彩的职业。因为他们面对的是一群处于绝对弱势的小朋友，他们手上掌握着，对于学生来说巨大的权力</strong>。我们都说政府和国家的权力应该受到制约，那教师们对于学生的权力是不是也应该受到监督和制约呢？如果各位加入过所谓的班级群或者家长群应该有所体会，现在的那些家长，在老师面前，比在单位领导面前还低声下气。是什么样的原因导致了今天这个局面？我想这个问题值得我们所有人反思。</p>
<p>缪可馨走了也有些时日了，我想套用约翰·多恩的布道词来结束今天的节目：</p>
<blockquote>
<p>没有人是自成一体、
与世隔绝的孤岛，
每一个人都是广袤大陆的一部分。
如果海浪冲掉了一块岩石，
欧洲就减少。
如同一个海岬失掉一角，
如同你的朋友或者你自己的领地失掉一块。
每个人的死亡都是我的哀伤，
因为我是人类的一员。
所以，
不要问丧钟为谁而鸣，
它就为你而鸣！</p></blockquote>
]]></content:encoded></item><item><title>十分钟读懂政治光谱</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200616/</link><pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200616/</guid><description>格物志第二期逐字稿</description><content:encoded><![CDATA[<p>许多出生在新时代的后浪们可能并不了解，就在不远的几十年前，我们国家还会以“左”和“右”来划分人群。<strong>而这里所说的“左右”是一个政治学指标，它被广泛地用于划分每个人的政治倾向</strong>。在法国大革命时期，当时的国民议会中既有皇室贵族、宗教人士，也有新兴资本家和城市手工业者。前者坐在议会大厅的右侧，支持君主制和天主教会；而后者则坐在大厅左侧，支持共和制，反对教会独裁。<strong>从此，在政治上，那些主张维护现行体制、反对激进改革或革命的人被称为“右派”；而主张打破现行体制，支持激进改革甚至革命的人就被称为“左派”</strong>。</p>
<p>我们在面对这24字的核心价值观时，可能并没发现，<strong>“自由”与“平等”实际上是一对相互矛盾的概念</strong>。因为在一个自由竞争的市场中，由于人们各自在背景出身、家庭教育、社会机遇等各方面的差异，不平等会无法避免地产生。而这种不平等，是会随着时间的积累而不断加剧的，这就是所谓的“马太效应”。而如果要人为地抑制这种自然的不平等趋势，以促进“人人平等”局面的形成，就必须对社会整体的自由度加以限制。虽然这并不意味着一个社会永远无法兼顾自由与平等，但是，这两种价值确实存在着内在的矛盾。</p>
<p>因此，<strong>在自由与平等这对相互矛盾的价值中，认为自由高于平等的人，可以笼统地被划为右派；而那些反过来认为平等高于自由的人，就可以大致被划为左派</strong>。例如，在一条从左到右的一维坐标轴上，推行“全民医保”的奥巴马，肯定会位于一上任就宣布废除该法案的特朗普的左侧。</p>
<p><strong>时间进入20世纪以后，随着现代经济学的快速发展，传统的一维坐标轴已不再能准确地反应人们的政治立场</strong>。例如，人们通常会将斯大林放在坐标轴的左端，而将希特勒放在右端。然而这两人在许多政策的主张上却是非常相近的。这就体现出传统一维政治坐标系的缺陷。因为一个人完全可能在经济上是左派，而在政治上却是右派，斯大林就是一个很好的例子，他有希特勒在政治上都是极右，二者的分歧主要在经济上。</p>
<p>为了弥补传统一维坐标轴的缺陷，人们又引入了一条纵向的坐标轴，将政治坐标系扩展到了二维。<strong>在这个二维平面的坐标系中，横轴代表经济，纵轴代表政治。横轴的左侧代表经济上的平等主义，主张通过国家干预对社会财富进行再分配，以缩小社会整体的贫富差距；右侧代表经济上的自由主义，认为一个自由竞争的市场是解决大多数问题的良方，反对国家对经济的过多干预；纵轴的上方代表政治上的威权主义，主张通过较为严厉的法制来约束个人和企业的行为，国家的利益高于一切；下方代表政治上的自由主义，主张个体价值才是最终目标，而国家只是实现个人价值的一种手段</strong>。</p>
<p>在二维的政治光谱中，每个人都会有一个由横坐标和一个纵坐标构成的点。这个点越接近哪个方向， 就表明这个人对哪一种主义的认同越强烈。这样一来，斯大林同志便找到了自己应有的位置，即经济极左、政治极右；而元首在这里，经济中间偏右  、政治极右。从这张图上我们不难看出，一味将元首判定为“极右”其实是不准确的。</p>
<p><strong>这种二维的政治坐标系通常被称为“政治光谱”，它是政治学上的一种量化工具，用于标度每个人在政治和经济立场上的倾向</strong>。如今，你只需要抽出十分钟时间，做一张测试问卷，就能大致找到自己在这个坐标系中的位置，以及哪些历史名人会是你的知音。</p>
<p>在历史上，关于政治光谱，有几个比较有意思的现象。众所周知，当今美国的民主、共和两党分别汇聚了该国左派和右派的各界精英，即民主党偏左、共和党偏右。但这一局面在一百年前与现在刚好相反。民主党在建立之初其实是一个保守的右派政党，它主要代表美国农场主的利益。因此民主党在19世纪中期通过法案强制驱逐印第安人，发动美墨战争，获得大量土地以供农耕。在南北战争中则支持奴隶制，以维护成型的农业体制。在相当长的一段时间里，民主党获得南方各州的支持。然而，自从1930年代以来，作为民主党候选人的小罗斯福总统，在大萧条后推行“新政”以挽回美国经济，这些在当时看来非常左倾的做法，成为了日后民主党的主要政策走向。于是，民主党从一个保守的右派政党逐渐变为一个激进的左派政党，直至今日。</p>
<p>而如今的共和党在建立之初却是一个主张进行经济改革的左翼政党，同时反对奴隶制。共和党的第一位总统就是亚布拉罕·林肯，他的上任称为南北战争爆发的直接诱因。直到1980年代里根总统上任后，现代共和党的政治立场才最终定型。但在一百年后，共和党已经转变为一个代表白人、男性、中老年人、农民和低学历人士的保守的右翼政党。<strong>也就是说，在过去的一百多年时间里，美国两大主要政党的立场发生了有趣的互换</strong>。这也从侧面反映了现代资本主义党派政治的某些本质。</p>
<p>还有一个比较有意思的现象。<strong>如今一提到纳粹，我们便会下意识地将它归为极右翼。但如果我们看一眼纳粹的全称——国家社会主义德国工人党，就会惊奇地发现，原来它在一开始也是一个代表工人利益的左翼政党</strong>。至于纳粹的历史，以及希特勒是如何从一个默默无闻的奥地利艺术生蜕变成双手沾满鲜血的元首，就是另外一个故事了。</p>
<p>我们这期节目主要介绍了一些关于政治学的常识，如果你对这类话题还有兴趣，可以自行搜寻相关资料进行阅读。</p>
<p>我是谷月，感谢收听收看《格物志》，我会在这档节目里尽我所学厘清历史与社会。如果你喜欢本期节目，不妨订阅我的频道，或者给我点个顶，并在评论区留下你的想法。我们下期再见。</p>
]]></content:encoded></item><item><title>弗洛伊德事件与美国的种族歧视传统</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200613/</link><pubDate>Sat, 13 Jun 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200613/</guid><description>格物志第一期节目逐字稿</description><content:encoded><![CDATA[<h1 id="弗洛伊德事件的前因后果">弗洛伊德事件的前因后果</h1>
<p>2020年5月25日，在美国明尼苏达州，一位名叫乔治·弗洛伊德（George  Floyd）的非裔美国人在被逮捕的过程中被一名当地的白人警察过失杀害。这一事件成为一场全国性暴乱的导火索，美国各州相继爆发了大大小小的抗议活动。这些抗议活动从最初的和平游行发展成了暴力的打砸抢烧，各地都出现了商店被暴徒打砸并洗劫一空的恶性事件。</p>
<p>故事的起因还要从20天前的“弗洛伊德事件”说起。5月25号晚上8点，位于美国北部的明尼苏达州首府明尼阿波利斯市（嗯对，就是东哥被曝出“性侵丑闻”的地方），一家便利店的店员拨通了911报警电话。根据警方公布的通话记录，店员在报警时说，一位非裔男性在店内结账时使用了假钞，但被这位店员发现。店员要求他归还所购买的香烟，却遭到拒绝。</p>
<p>这位使用假钞的非裔美国人就是故事的主人公——乔治·弗洛伊德。他出生于美国德克萨斯州，今年46岁。2009年，也就是距今11年前，弗洛伊德曾因持械抢劫被判入狱，并在德州监狱服刑5年。出狱后，他搬到了明尼苏达州，在明尼阿波利斯的一家餐厅当了5年的保安。直到最近，由于新冠肺炎疫情的原因失去了工作。</p>
<p>在接到报警后，当地警方迅速赶到现场。警察赶到时，弗洛伊德仍在事发的便利店附近没有离开。根据报警店员的描述，当时的弗洛伊德“醉德不省人事”，并坐在了自己的车里。警方的执法记录仪显示，当时坐在车里的除了弗洛伊德之外，还有一男一女两个人。一名警察用枪指向弗洛伊德，令其将手放在方向盘上，弗洛伊德遵从了他的命令。之后，在场的另一位警察将弗洛伊德拉出车外，并给他戴上了手铐，期间，弗洛伊德曾有过几次反抗。之后，弗洛伊德坐在路边，警察对他进行了简单的讯问，并告知他因为使用伪钞被捕。</p>
<p>之后的情形被路人用手机拍摄下来：弗洛伊德在被警察带往警车的途中突然跌倒，还说自己有幽闭恐惧症。此时，本案的另一位主人公，也就是44岁的白人警察德里克·迈克尔·肖万（Derek Michael  Chauvin）乘另一辆警车抵达了现场。根据检方事后对肖万的起诉状记载，4名警察数次试图将弗洛伊德押上一辆警车的后座，但是弗洛伊德故意跌倒、歪斜着站立，还不断说自己不能呼吸。然后，肖万在两名同事的帮助下，将弗洛伊德拉入警车。</p>
<p>晚上8点19分，肖万将弗洛伊德从警车的右后座拉出，三名警察同时将他按倒在地，肖万用左膝顶在弗洛伊德的脖子上。身边的同事曾经询问是否应该将弗洛伊德翻过来，但都遭到了肖万的拒绝。就这样，肖万用膝盖压着弗洛伊德的脖子长达数分钟的时间。执法记录仪显示，期间弗洛伊德一直在挣扎和呼救，但肖万对此置若罔闻。根据诉状，肖万跪在弗洛伊德脖颈处总计8分46秒，在弗洛伊德没有反应之后仍然持续了2分53秒，直到8点27分才挪开了他的膝盖。救护车到场后，警察将弗洛伊德抬上担架。但不幸的是，抢救并没有成功，当晚9点25分，医院宣告了弗洛伊德的死讯。</p>
<p>由于肖万在这起事件中的表现极其冷酷，且事发的全过程都被在场的围观群众用手机拍摄下来，因此事件迅速在社交媒体上传播开来。<strong>5月26号，也就是弗洛伊德死后的第二天，数千名示威者走上街头，后与警方发生冲突并演变为全国性暴乱。除美国以外，抗议的风潮还席卷了英国、法国、澳大利亚和新西兰等其他国家。人们打出“我不能呼吸”的标语，以此表达对弗洛伊德的同情，以及对美国根植多年的种族歧视和警察暴力执法等问题的不满</strong>。</p>
<p>虽然此次暴动的发生也与新冠疫情导致的全国性失业潮，以及两党的总统竞选运动有所关联，但种族歧视问题确实是美国社会的一大顽疾。要了解美国为什么会有如此严峻的种族问题，还要从美国独立之前的殖民地历史说起。</p>
<h1 id="美国的种族歧视传统">美国的种族歧视传统</h1>
<p>1492年，当哥伦布的船队初次抵达北美大陆的时候，这片土地上的种族冲突就已经拉开了序幕。冲突首先爆发于欧洲殖民者和北美原住民之间。由于双方在科技水平和身体条件上有着巨大的悬殊，北美的绝大多数原住民要么被欧洲人杀死、要么被欧洲人带来的病菌病死、要么被从自己时代生活的土地上被赶走。这也是许多人津津乐道的美国的“黑历史”之一。</p>
<p>然而，<strong>我们今天所说的美国的种族歧视，其实指的并不是欧洲人对原住民的歧视，而是白人对有色人种的歧视</strong>。这里的有色人种其实和白人一样，也是外来族裔。他们抵达北美的时间，与欧洲白人也就是前后脚区别。<strong>这些种族之间除了肤色和文化以外，唯一不同的就是移民的先后顺序</strong>。这里开一个脑洞，假如第一批抵达北美的殖民者不是欧洲的白种人，而是东亚的黄种人，那么今天美国种族歧视的顺序可能就会颠倒过来。当然历史没有如果，我打这个比方的目的只是想让各位理解美国种族歧视的本质。</p>
<p><strong>尽管包括华人在内的其他有色人种也是美国种族歧视的受害者，但不得不承认，美国种族歧视最主要、也是最尖锐的对象还是黑人，也就是我们所说的非裔美国人</strong>，例如这位。假如你以后到了美国，最好不要习惯性地称呼这些人为“黑人（Black）”，而要严谨地称呼他们为“非裔美国人（African American）”，否则你将可能会受到“政治正确”铁拳的无情打击。</p>
<p><strong>与其他族裔主动移民北美大陆的情况不同，如今绝大多数非裔美国人的祖先，都是被动地移民到美洲的</strong>。在欧洲人热热闹闹地开辟新航线的同时，非洲大陆仍处于群雄割据的状态。各个部落或族群之间往往进行着你死我活的斗争。这点恰恰被欧洲人利用，他们通常会拉一艘空船到非洲，花点小钱从当地的一些部落那里买来一些奴隶塞进船舱。这些黑奴通常都是部落战争战败一方的俘虏。欧洲人用船将黑奴运到“新大陆”，换来一船“新大陆”的农副产品（例如茶叶、咖啡或是烟草），再将这些东西运回欧洲，高价卖出。这是一个完整的贸易闭环，也就是我们中学历史书里说的“三角贸易”。</p>
<p>“三角贸易”之所以能够成立，是因为北美殖民地早期的经济模式高度以来劳动力。像农作物种植、农副产品加工这些产业，都需要用到大量的劳动力。由于欧洲移民本身人数就少，而且工资也高，因此从非洲运来的黑奴就成了殖民地种植园主们的不二选择。毕竟他们力气大、吃得少，并且价格便宜、关键还是一次性投资，作为生产资料来说，可谓性价比极高。</p>
<p><strong>这就很好地说明了美国为什么会有如此严峻的种族歧视问题。因为对那些殖民地的种植园主及其后代来说，黑人不是人，而只是他们花钱买来的工作机器，是庄园经济生产资料的一部分</strong>。你会不会对你们公司办公室的电脑产生共情？当然不会。那你可能会说，黑奴毕竟不是机器，他们至少看上去和我们并没有多大差别，大家都是人，为什么那些庄园主就那么狠心呢？这些问题在当下当然成立，但在几百年前的古代，那时候中国的省部级高官还会被太监用木棍活活打死呢。时代不同，人的观念和社会的文明程度当然也不同。</p>
<p>这种以蓄奴的方式进行集约化农业生产的庄园经济一直存续到了19世纪。尤其在农业发达的南方各州，庄园经济几乎成为各地的支柱性产业。用我们现在的话来讲，当时美国的南方就是个“大农村”。而与南方的“大农村”相对的，是北方日益崛起的城市工业。<strong>从古至今，城市一直都是先进思想最先萌芽和传播的地区，因此在19世纪的美国北方，残酷的奴隶制几乎已经成了“过街老鼠”</strong>。这是意识形态的方面，在经济方面，北方同样拥有反对蓄奴的理由。众所周知，城市工业和种植园农业有个共同点，那就是它们都对劳动力有着巨大的需求。<strong>北方人肯定不愿意像南方一样使用奴工，于是他们开始鼓吹解放黑奴，因为一旦南方的黑奴被放出来了，北方的工厂将获得大量的廉价劳动力</strong>。</p>
<p><strong>就这样，当时美国的北方各州一面通过发展现代工业而变得越来越富裕，一面又老是站在道德的制高点上批评南方的奴隶制。就这样，南北双方在经济和意识形态上的差距越来越大</strong>。要知道，在美国成立之初，南北双方就在联邦政府的组织形式上有过分歧。当时的南方更偏向保守的自由主义，主张建立一个”小政府“，尽量减少政府对私权的干预；而北方则更偏向激进的联邦主义，主张建立一个”大政府“，以更好地维护人民的福祉。在南方人看来，北方人尽是一群自视清高的暴发户。他们本来对《宪法》的内容就不太满意，现在则更是想要远走高飞。</p>
<p>1860年，新成立的共和党在大选中获得多数席位，其候选人亚伯拉罕·林肯也成功当选总统，南方彻底失去了在新联邦政府中的话语权。于是，被称为“深南七州（Deep South）”的七个州宣布脱离美利坚联邦，组建了自己的美利坚联盟国（Confederate States of  America）。南北战争一触即发。</p>
<p><strong>尽管导致南北战争爆发的原因极为复杂，但不可否认的是，有关解放黑奴的争论是导致内战爆发的直接诱因</strong>。虽然战争最终以北方的胜利而告终，南方种植园里的黑奴终于得到解放。但无论南方还是北方都因此付出了惨痛的代价。可以说，20世纪60年代的黑人民权运动，以及当下正在发生的全国性暴乱，都早在南北战争的时代就已经埋下了祸根。美国绵延百年的种族歧视的历史，并未就此结束。黑人虽然在国家层面获得了与其他种族同等的权利，但系系统性的歧视仍然存在，并持续至今。</p>
<p>我今天这期节目主要讲的是美国种族歧视的起源问题。随着时代的进步，歧视的具体情况和方式也在不断地发生着这样或那样的变化。美国这个国家始终无法摆脱种族歧视及其衍生问题的阴影。下至今天的全国暴乱，上至南北战争，都与种族问题有着千丝万缕的联系。至于种族问题如何演流变、激荡，直至引发一次又一次的骚乱，以及黑人在这一过程中如何奋起反抗，就是咱们后面节目的内容了。</p>
<h1 id="后续">后续</h1>
<p>听了上面这些内容后，很多人可能又要开始批评美国“是腐朽的资本主义”“美国人民生活在水生火热之中”，搬出这些陈词滥调了。但我想说的是，你可能只看到了事情的一面，而忽略（或选择性忽略）了事情的另一面。</p>
<p><strong>美国这套政治制度已经相对平稳地运行了两百多年。在这两百多年的时间里，美国人不断地踩坑、纠正再踩坑，他们的政治制度也在这一过程中被不断地打磨和完善，拥有了许多其他国家所不具备的纠错机制</strong>。5月26日，明尼阿波利斯警察局宣布停职涉事警察；5月27日，美国联邦调查局开始对弗洛伊德事件展开调查；5月29日，德里克·肖万被明尼苏达州刑事侦查局逮捕；6月3日，德里克·肖万被以二级谋杀罪正式起诉。目前审理工作仍在继续。</p>
<p><strong>在过去的20天里，美国各地的部分警察，以单膝下跪的方式向和平示威运动表示支持</strong>。我前面也提到过，乔治·弗洛伊德其实是一个有着多次案底的“社会不良人士”，而他使用假钞的行为在美国也确实是犯罪行为。然而这些都不足以洗白警察暴力执法的行为，也不足以抹消美国仍然存在严重的种族歧视的事实。那些走上街头的绝大多数和平抗议的人们，也并非要为一个罪犯做辩护，他们想要的，只是改变美国警察暴力执法和种族歧视尚且严重的现状。</p>
<p>我是谷月，感谢你收看《格物志》，我会在这档节目里尽我所学厘清历史与社会。如果你觉得这部视频还有点意思，请给我点个顶，或在评论区留下你自己的想法，我们下期再见。</p>
<h1 id="视频素材">视频素材</h1>
<ul>
<li>CBS Evening News - Derek Chauvin charged with third degree murder in death of George Floyd</li>
<li>CBS Evening News - New video shows Minneapolis police arrest of George Floyd before death</li>
<li>CBS News - 4 Minneapolis officers fired after arrest of man who later died</li>
<li>CNBC Television - Scenes from protests, riots across the U.S. after killing of George Floyd</li>
<li>Sky News Australia - The Left has tried to define deadly US riots as ‘peaceful’ protests</li>
<li>The New York Times - How George Floyd was killed in police custody_visual Investigations</li>
<li>The New York Times - Thousands March to the White House _ George Floyd Protests</li>
<li>TODAY - 4 Minneapolis Officers Fired After Death Of George Floyd In Police Custody</li>
<li>VICE News - Cops Are Taking a Knee. Not Everyone Is Convinced</li>
<li>VICE News - George Floyd Protests Around the World Are Calling for Racial Justice</li>
<li>大明王朝1566.EP01.2007</li>
<li>act.tv - Systemic Racism Explained</li>
<li>CCTV纪录 - 《历史的拐点·下西洋》第一集 梦断大明</li>
<li>Mrs. Martinez - life of a plantation slave</li>
<li>Newsy - Remembering Chinese railroad workers</li>
<li>Shotgun BomBom - French Defensive from American Natives Attack</li>
<li>Anthony Hazard - The Atlantic slave trade What too few textbooks told you</li>
<li>Vox - Why the US celebrates Columbus Day</li>
<li>WatchMojo.com - History of the Civil Rights Movement</li>
<li>Yesterday Today - 43 Haunting Photos Of The American Civil War</li>
<li>mixkit-highway-between-trees-506</li>
<li>mixkit-traffic-in-an-underground-tunnel-4067</li>
<li>FreeSchool - The Statue of Liberty for Kids Famous World Landmarks for Children</li>
</ul>
]]></content:encoded></item><item><title>利用 NAS、Docker 和 Calibre Web 搭建个人线上书库</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200512/</link><pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200512/</guid><description>日常技术记录</description><content:encoded><![CDATA[<p>经常阅读电子书并且用过 Kindle 的人应该都体会过整理电子书时的痛苦。尤其是像我这种经常下载电子书文件再导入到 Kindle 上进行阅读的人（或是为了省钱、或是因为 Kindle 商城中没有我们想要阅读的书），对于那些有着各自不同的标题、作者、封面，以及文件格式的纷繁复杂的电子书，缺乏一套行之有效的管理方案，进而充分管理自己的阅读进度与时间。</p>
<p>长期以来，PC 和 Mac 端的 <a href="https://calibre-ebook.com/" title="Calibre 官网">Calibre</a> 都是一个差强人意的电子书管理解决方案。它不仅支持多平台、功能强大（支持电子书整理、编辑、格式转换、一键推送到 Kindle 等），而且完全免费。那我为什么要将这么厉害的软件说成是“差强人意”呢？因为 Calibre 已经多年没有较大的功能更新，作为一款电子书管理软件，它已经无法适应当下人们已经习以为常的需求。具体而言，Calibre 具有以下缺点：</p>
<ol>
<li>界面老旧（或曰古朴？），看起来像是十年前的软件；</li>
<li>启动和运行速度较慢，操作繁琐；</li>
<li>不支持多设备同步，不提供云存储服务（这是最重要的一点）。</li>
</ol>
<p>对于像我这样学习或工作繁忙，几乎没有固定的整段时间使用同一台终端设备的人来说，多端同步和云存储几乎是不可或缺的功能。而且在网页程序和微信小程序等日益普及的今天，有时连下载一个专门的应用程序都显得繁琐（可能是被这几年的技术进步惯坏了把）。因此，最好有一款类似于 <a href="https://www.plex.tv/" title="Plex 官网">Plex</a> 影视库的电子书管理服务器应用，能够让我随时随地打开一个网页就能管理和阅读自己的电子书。幸运的是，这样的软件确实存在，它便是 Calibre 的继任者—— <a href="https://github.com/janeczku/calibre-web" title="Calibre Web 的 Github 页面">Calibre Web</a>。</p>
<p>下图就是我用 Calibre Web 在自己的 <a href="https://baike.baidu.com/item/NAS/3465615" title="NAS 的百度百科页面">NAS</a> 上搭建的个人电子书管理网站（或曰个人电子图书馆？）。通过这个网站，我可以轻松地在各种终端设备上上传、修改、整理、推送各种格式的电子书。由于是网页端，因此我不用担心海量电子书会占用手机或电脑的硬盘容量，也不用担心多端同步的问题。更加难能可贵的是，由于 Calibre Web 开发得比较晚近，因此它的界面也很符合当下的主流审美标准。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_10-29-50.jpeg"></p>
<p>关于 Calibre Web 的搭建方法，网络上有很多前辈们撰写的教程，他们已经说得非常详细了。首先，你必须拥有一台能够稳定运行的服务器或 NAS（其实任意一台普通电脑都是可以的，只要你舍得让它 7*24 小时运行）。然后，你需要在你的设备上搭建一个 <a href="https://www.docker.com/" title="docker 官网">docker</a> 环境，因为 Calibre Web 需要 docker 作为运行的载体。最后，经过简单的安装和配置，你就可以拥有一个属于自己的电子书管理网站了。</p>
<p>这里以<a href="https://www.synology.cn/zh-cn" title="群辉官网">群辉</a>为例。首先在“控制面板”中创建一个新的共享文件夹，用于存放 Calibre Web 的数据库和电子书资源。我这里将它命名为&quot;Books&quot;。创建完成后切记要开放该文件夹对所有用户的读写权限，否则 Calibre Web 将无法正常运行。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_10-59-19.jpeg"></p>
<p>共享文件夹配置完成后，在群辉的套件中心中选择安装 docker 并打开它。再在“注册表”页面中搜索“Calibre-web”，此处途中框选的三个镜像都可以下载，它们的区别并不大，这里主要推荐 linuxserver/Clibre-web，在双击后弹出的对话框中选择“latest”并点“确定”开始下载。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_10-47-03.jpeg"></p>
<p>镜像下载成功后（系统右上角会弹出提示），进入 docker 的“镜像”页面选择刚刚下载好的 linuxserver/Clibre-web 镜像，点击启动。在弹出的对话框中，点击“高级设置”，再按下图所示进行设置即可。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_10-53-51.jpeg"></p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_10-54-25.jpeg"></p>
<p>之后，启动 Calibre Web，并在浏览器地址栏中输入群辉的内网 IP 地址 + 半角冒号 + 上图中设置的端口号（默认为8083）。例如，我的群辉内网 IP 地址是 10.10.10.34，Calibre Web 的端口号是 3096，那么我输入的地址就是：</p>
<pre><code>http:10.10.10.34:3096
</code></pre>
<p>初次进入 Clibre Web 时需要进行一些简单的配置，例如指定数据库目录（一定要和上图中设置的“装载路径”相匹配）、创建用户，以及配置邮件推送等。关于 Calibre Web 的配置和使用方法，这里就不再赘述了，网上教程一搜一大把。顺带一提，如果想在非家庭内网的环境中（例如出门在外的 4G 网络）继续使用 Calibre Web，你还需要进行内网穿透或动态 DDNS 的相关配置。至于这些内容，已经超出今天这篇文章的讨论了范围了，以后我们有机会在说把。</p>
<p>最后，推荐一本我最近正在读的书——理想国译丛的《布达佩斯往事》，希望你们能够喜欢。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200512/Snipaste_2020-05-13_11-13-44.jpeg"></p>
]]></content:encoded></item><item><title>可能是最好用的记忆辅助工具 Anki</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200326/</link><pubDate>Thu, 26 Mar 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200326/</guid><description>日常科技见闻</description><content:encoded><![CDATA[<p>对包括我在内的相当一部分人来说，记单词几乎已经成为一种刚需。无论是为了应付考试、取得各类等级证书还是单纯提高语言能力，词汇都是我们不得不正面应对的挑战。而在如今这个互联网时代，捧着厚重的词汇书或者词典进行背诵的方式已经被大多数人所抛弃，因为它既枯燥又低效，不仅会消磨我们学习一门语言的热情，还不利于培养语感、付诸实用。</p>
<p>在这样的背景下，一众“背单词”软件应运而生。这其中就包括<a href="https://cichang.hujiang.com/" title="开心词场官网">开心词场</a>、<a href="https://www.shanbay.com/" title="扇贝英语官网">扇贝英语</a>和<a href="https://www.baicizhan.com/" title="百词斩官网">百词斩</a>等较为优秀的产品。但是，这些软件或多或少都存在着以下几点无法弥补的缺陷：</p>
<ul>
<li>词库多为厂商事先制作而成，缺乏根据个人情况进行定制的空间，灵活性不强。</li>
<li>支持的语种多为英、日、韩等热门语种，无法满足小语种（如希伯来语）学习者的需求。</li>
<li>出于营利目的，集成了许多不常用的花哨功能，洁面不够简洁。</li>
<li>同样出于营利目的，部分功能仅对付费用户开放，免费用户的使用体验受限。</li>
</ul>
<p>凡此种种，都构成了我长期无法找到适合自己的背单词软件的原因。然而，就在将近两年前，也就是我正在准备研究生考试的时候，我遇到了 <a href="https://apps.ankiweb.net/">Anki</a> 这个神一样的记忆软件。之所以称它为“记忆软件”而非“背单词软件”，是因为它几乎支持所有需要记忆的内容格式，而不像上文提到的众多“专业软件”那样只能用来背特定语种的单词。实际上，只要你愿意，Anki 可以被用来记忆唐诗、成语，甚至<a href="https://baike.baidu.com/item/%E7%BA%B3%E7%93%A6%E9%9C%8D%E5%AF%86%E7%A0%81/9482868?fromtitle=%E7%BA%B3%E7%93%A6%E8%8D%B7%E5%AF%86%E7%A0%81&amp;fromid=6646373" title="那瓦霍密码的百度百科词条">纳瓦霍语</a>。</p>
<p>简单来说，Anki 是一种利用类似于 Flash Cards 的卡片机制来辅助记忆的，支持高度定制化的工具。到目前为止，我发现它具有以下几个传统背单词软件所不具备的优点：</p>
<ul>
<li>支持几乎所有内容形式，只有你想不到，没有 Anki 不支持的内容。</li>
<li>不仅支持传统的翻面单词卡，还支持诸如填空题、选择题等多种答题形式，满足各类需求。</li>
<li>根据<a href="https://baike.baidu.com/item/%E9%81%97%E5%BF%98%E6%9B%B2%E7%BA%BF/7278665?fromtitle=%E8%89%BE%E5%AE%BE%E6%B5%A9%E6%96%AF%E9%81%97%E5%BF%98%E6%9B%B2%E7%BA%BF&amp;fromid=3905802" title="艾宾浩斯遗忘曲线的百度百科词条">艾宾浩斯遗忘曲线</a>科学定制学习和温习计划，保证高效利用精力和时间。</li>
<li>云端实时备份词库和学习进度，并支持包括 PC、Mac、iOS、Android 等类操作系统，让用户可以轻松跨平台同步学习进度，随时随地进行学习。</li>
<li>支持牌组导出导入，结合活跃的社区和各类资源分享渠道，使那些不愿意自己制作牌组的用户也能通过下载并导入前人制作好的卡组来高效进入学习状态。</li>
</ul>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200326/anki3.png"></p>
<p>Anki 的桌面端（包括 Windows 和 Mac）和手机端（包括 iOS 和 Android）的功能几乎完全相同，但前者完全免费而后者必须付费。如果你既不愿意付费也不想使用盗版，那么只使用桌面版即可。这样除了无法获得多平台同步学习的体验外，不会受到任何具体功能上的限制。</p>
<p>Anki 的桌面端界非常简洁，你可以通过点击“新建记忆库”来自定义录入自己的牌组，也可以点击“获取牌组”以进入 Anki 官网浏览和下载其他用户上传的现成牌组。另外，在诸如淘宝或闲鱼等交易网站上也会有卖家有偿销售自己制作的 Anki 牌组，如果你购买了那些牌组，那么只要点击“导入文件”按钮即可将买来的牌组轻松导入。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200326/anki2.png"></p>
<p>以手机端为例，在学习牌组的过程中，我们可以根据自己的答题状况点选下方不同颜色的按钮。这样，Anki 就会将相应卡片加入对应的温习序列中，并根据艾宾浩斯遗忘曲线，结合我们后续的回忆状况，动态地安排学习计划。可以说，Anki 的这种根据个人记忆状况动态定制学习计划的特点，是使它从众多“背单词软件”中脱颖而出的最根本原因。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200326/anki4.jpg"></p>
<p>去年的这个时候，我正在准备所报考学校的研究生复试。如果说我的研究生外语考试能够取得理想成绩“多半”是我自己努力的结果的话，那么 Anki 便是那“少半”的原因。</p>
]]></content:encoded></item><item><title>MacOS 10.15.4 更新 iCloud 文件分享功能</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200325/</link><pubDate>Wed, 25 Mar 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200325/</guid><description>日常科技见闻</description><content:encoded><![CDATA[<p>相比于国外而言，中国国内的公共网盘生态好似一潭死水。这其中固然也有厂商不思进取的缘故，但更主要的还是政府对网络信息的严密审查，使得公共网盘服务提供商很难在维持自身生存和提升用户体验之间取得平衡。</p>
<p>经过几年前的一阵腥风血雨之后，目前国内叫得上号的公共网盘只剩下<a href="https://pan.baidu.com/" title="百度网盘官网">百度网盘</a>、<a href="https://union.ctfile.com/" title="域通网盘官网">域通网盘</a>和<a href="https://www.jianguoyun.com/" title="坚果云官网">坚果云</a>等。其中最臭名昭著的非百度莫属，其不仅对非会员用户有着苛刻的功能限制（地容量+下载限速），并且身型极其臃肿、拥有很多大多数用户完全用不到的冗余功能。相比之下，坚果云就要好不少，它对免费用户只做月流量方面的限制，除此之外既不限制速度也无冗余内容，可以说非常良心了。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/jianguoyun.png"></p>
<p>然而与百度网盘生成链接直接分享的便捷性相比，坚果云在文件分享方面又稍显不足。因此在目前国内的公共网盘生态中，想要免费使用一个功能简洁、分享方便又不限速的网盘产品，几乎是不可能的。在这种情况下，很多用户开始转向<a href="https://baike.baidu.com/item/NAS/3465615" title="NAS 的百度百科词条">私有云（NAS）</a>方案，即建立私人的网络存储服务器，如购买<a href="https://www.synology.cn/zh-cn" title="群晖官网">群晖</a>或 <a href="https://www.qnap.com.cn/">QNAP</a> 的 NAS 主机或自行组装一台 DIY 主机。但无论是前者还是后者，都具有一定的技术门槛，并不适合所有用户。</p>
<p>作为苹果产品生态的基础性服务，<a href="https://www.icloud.com/" title="iCloud 官网">iCloud</a> 几乎为所有苹果设备用户所使用。无论你是否意识到，只要你用 iPhone 拍过照，你的照片就会自动被存储到你的 iCloud 中。无论你是否付费，只要你注册一个 Apple ID，你就会得到 5GB 的 iCloud 存储空间。虽然这个容量并不算大，但仅用于存储日常拍摄的照片和办公文档，是完全足够的。多年来，icloud 的封闭性一致为人们诟病。可能是出于数据安全的考虑，苹果并不允许用户将自己 iCloud 网盘中的文件分享给其他人。但好消息是，这一状况在最新一次的 MacOS 系统更新中被彻底改变。</p>
<p>今天上午，当我打开电脑准备开始今天的工作时，发现苹果推送了最新版本的 MacOS 10.15.4 系统更新，更新说明里面赫然写着羡慕一段话：</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/mac-update-10.15.4.png"></p>
<p>也就是说，<strong>iCloud 终于支持对外分享文件了</strong>！于是我立刻更新了系统，想尽快体验一下用 icloud 分享文件的感觉。在新版本的系统中，只要在 icloud 文件上右击鼠标，选择“共享”，再点“添加用户”，即可生成该文件的分享链接。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/icloud-share-0.png"></p>
<p>打开“添加用户”对话框后，我们可以对共享链接进行相应的设置。如果我们只想对受邀请的用户共享文件，那么不仅要在下方将“有权访问的用户”设置为“仅限于受邀用户”，还要在上方填写我们所邀请用户的邮箱。注意，目前“受邀用户”功能只对其他 Apple ID 开放，填写的邮箱也必须是 Apple ID 的登陆邮箱。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/icloud-share-1.png"></p>
<p>如果我们想要创建公开共享链接，而不是只针对特定用户开放浏览，那么我们可以选择“任何拥有链接的用户”。这样，只要将我们创建的共享链接发送给其他人，拥有链接的用户就可以随时打开相应链接浏览文件。</p>
<p>另外，我们可以在下方的选项中设置共享文件的访问权限。其中“仅查看”是只读权限；“可更改”是读写权限。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/icloud-share-2.png"></p>
<p>设置完成后，通过点击下方的“共享”按钮，我们就为指定文件创建了一个共享链接。共享链接创建完成后，它会自动地被复制到我们的剪贴板中，并且相应 iCloud 文件的名称后面会出现“由我共享”字样，便于我们事后查找。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/icloud-share-3.png"></p>
<p>现在，我们就可以将复制好的共享链接发给其他用户，让他们通过浏览器打开该共享链接来读取或更改相应文件了。值得一提的是，如果共享文件是 PDF 等格式的文件，打开共享链接即可直接预览其内容，而无需先下载再查看，非常方便。</p>
<p><img loading="lazy" src="https://masonblog.github.io/images/blog20200325/icloud-share-4.jpg"></p>
]]></content:encoded></item><item><title>当我们反对“感恩教育”时，我们究竟在反对什么？</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200311/</link><pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200311/</guid><description>新冠疫情时事评论</description><content:encoded><![CDATA[<p>2020年3月7日，<a href="http://cjrb.cjn.cn/html/2020-03/10/node_1.htm" title="长江日报头版">《长江日报》</a>刊载了一篇题为“在全市开展感恩教育，形成强大正能量”的文章，披露了现任武汉市委书记<a href="https://baike.baidu.com/item/%E7%8E%8B%E5%BF%A0%E6%9E%97/63180" title="王忠林的百度百科词条">王忠林</a>在武汉市新冠肺炎疫情防控指挥部视频座谈会上关于对广大市民及党员干部开展以“听党话、跟党走、形成强大正能量”为主题的感恩教育的指示。该文一经刊出，立即引来舆论哗然。人们纷纷指责武汉政府在疫情尚未得到有效控制的情况下将宝贵精力投入到如此“细枝末节”的工作中。在人民的一致声讨中，相关媒体悄然将该文章撤回。</p>
<p>但文章的撤回并不意味着“感恩教育”的结束，抑或说，此次“感恩教育”的偃旗息鼓并不意味着所有“感恩教育”的绝迹。相反，在中国自秦汉以来2000多年的漫长历史中，“感恩权力”或“感恩国家”的文化一直都是最大的“正能量”。只要这种文化及其所生长的土壤依然存在，数不尽的“感恩教育”就不会真正消失。</p>
<p>在中国走向现代化的过程中，许多人误将上述“感恩文化”归咎于中国的传统文化或所谓“儒家思想”，并就此展开对中国传统的全面批评。然而在我看来，这些人似乎在革命的最开始便找错了敌人。</p>
<blockquote>
<p>谁是我们的敌人？谁是我们的朋友？这个问题是革命的首要问题。中国过去一切革命斗争成效甚少，其基本原因就是因为不能团结真正的朋友，以攻击真正的敌人。</p>
<p>——毛泽东《中国社会各阶层的分析》</p></blockquote>
<p>首先，<strong>他们所批评的”儒家思想“究竟指的是哪种思想就很成问题</strong>。战国时期的孟子，这位在我们现代人眼中几乎与孔子是”同时代人“的”亚圣“，在许多问题上就已经与后者产生了严重的分歧。何况儒学上下绵延2000多年，其流变程度堪比<a href="https://baike.baidu.com/item/%E5%BF%92%E4%BF%AE%E6%96%AF%E4%B9%8B%E8%88%B9/19890027" title="忒修斯之船的百度百科词条">忒修斯之船</a>，要将“儒家思想”统而论之，并扣上“封建礼教”的帽子加以攻击，实属“找错了敌人”。那些攻击儒学的人，似乎只能看到“”身体发肤，受之父母；不敢毁伤，孝之始也“，而看不到”民为贵，社稷次之，君为轻“。儒学内容之丰富、流派之众多，尽被这些”进步“的攻击者们”统一”成了落后腐朽的模样。</p>
<p>其次，<strong>儒学之所以会在近现代以“落后腐朽”的模样示人，自身内容的丰富性与攻击者的蓄意“归纳”固然各有功劳，但更主要的原因还是封建帝制的霸道本性</strong>。中国的封建帝制是一个高度注重实用性的体系，对中国的封建帝王来说，凡是有利于维系统治的，皆可拿来一用。在这样的环境下，各派学说无论最初有多么迥然不同的主张，最终都会在权力的倾轧下变得高度同质化。换句话说，即使汉武帝时在思想领域取得胜利的不是董仲舒的儒学，而是黄老、阴阳或其他流派的学说，后来的历史也不会有任何改变。事实上，董仲舒的儒学与孔孟的儒学已经想去甚远，前者为了迎合权力的需要，已经褪去了太多“不合时宜”的棱角。</p>
<p>那么，我们真正应该攻击的“敌人”到底是谁？或者换一个问法，中国源远流长的“感恩文化”究竟源自哪里？这正是我今天要讨论的主题。如前所述，如果说中国古代的封建帝制一直在玩“外儒内法”的把戏，即表面上遵从儒学道德以增添自身统治的合法性、实质上却无时无刻不践行着法家的残酷驭民术，那么培育出“感恩文化”的罪魁祸首就应该是“内法”而非“外儒”。至此，问题的答案就很明显了——<strong>我们在反对“感恩文化”的时候，真正反对的应该是封建帝制及其“法家”心法，而不是被其披在身上充当外衣的无辜的“儒家思想”</strong>。</p>
<p>“感恩教育”及其背后的“感恩文化”都是历久弥新的封建帝制的一部分，它们不会随着时代的前进而自然地归于消灭。如果我们始终找不到真正要反对的东西，“感恩教育”就会一直继续下去。在“中华人民共和国的一切权力属于人民”赫然写在《宪法》第一条的今天，我们不能再有“感恩教育”。</p>
]]></content:encoded></item><item><title>利用 Hugo 和 Github Pages 搭建自己的个人博客</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200310/</link><pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200310/</guid><description>此页面记录了我利用 Hugo 和 Github Pages 搭建本站的全过程</description><content:encoded><![CDATA[<p>如你所见，此博客是一个完全静态的 HTML 站点。相比于 PHP 编写的动态站点，静态站点不仅访问速度更快，而且部署门槛低。一个完全不会编程的新手，只要花点时间掌握一些工具的用法，也能轻松建立属于自己的站点。</p>
<p>本站由 <a href="https://gohugo.io/" title="Hugo官网">Hugo</a> 渲染而成。它的使用方式非常简单，想要自学的朋友可以阅读 Hugo 的<a href="https://gohugo.io/documentation/" title="Hugo官方文档">官方文档</a>。与其他博客系统一样，Hugo 也拥有着众多简洁美观的<a href="https://themes.gohugo.io/" title="Hugo 官网主题页面">主题</a>，本站所使用的主题是 <a href="https://github.com/flysnow-org/maupassant-hugo" title="Github库">maupassant</a>（2024年更新：播客迁移后最新使用的主题为<a href="https://github.com/adityatelange/hugo-PaperMod">PaperMod</a>）<del>，它最初是由 <a href="https://github.com/pagecho" title="Github主页">cho</a> 开发于 <a href="https://typecho.org/" title="Typecho官网">Typecho</a> 平台的主题，后被移植到众多其他平台，并被加入了许多新功能</del>。</p>
<p>Hugo 的所有页面都支持 Markdown 语法，借助它，我们可以在任何环境下撰写出格式统一的博文，而不用担心外观问题。Markdown 的学习成本很低，任何人都可以在极短的时间内学会。如果你有兴趣，可以通过<a href="https://www.runoob.com/markdown/md-tutorial.html" title="Markdown菜鸟教程">这份教程</a>入门 Markdown。<a href="https://typora.io/" title="Typora官网">Typora</a> 是我目前正在使用的一款支持多平台的轻量级 Markdown 编辑器，界面非常干净简洁，<del>并且免费开源</del>（2024年更新：该软件已于2022年开始收费，目前我使用的编辑器是<a href="https://github.com/marktext/marktext"> MarkText</a>）。</p>
<p><img loading="lazy" src="/images/blog20200310/marktext.png"></p>
<p>通过 Hugo 生成好完整的 HTML 页面之后，我们便可以将这些页面放到我们的服务器上了。你可以购买一台虚拟主机，或者更加省时省力地，利用 Git 仓库托管自己的网站。<a href="https://git-scm.com/" title="Git官网">Git</a> 是一个应用非常广泛的版本管理工具，而 Git 仓库则是用于托管源代码的小型服务器。最著名的 Git 仓库非 <a href="https://github.com/" title="Gitlab官网">Github</a> 和 <a href="https://gitlab.com/" title="Gitlab官网">Gitlab</a>，它们在提供免费的源代码托管服务的同时，还支持 Pages 托管服务。所谓 Pages，原本是用于介绍和传播开源项目的说明文档，但其本身也是一个小型的 HTML 静态 Web 服务器。利用 Pages，我们可以轻松而免费地部署自己的静态网站。</p>
<p><img loading="lazy" src="/images/blog20200310/Github.PNG"></p>
<p>如果你不希望通过手动的方式创建页面或修改配置，而是习惯于通过类似于 PHP 动态博客后台的可视化界面来编辑自己的网站，那么你可以尝试 <a href="https://forestry.io/" title="Forestry官网">Forestry</a>。它是一个支持多种环境的可视化内容管理系统（CMS）。通过 Forestry，你可以像编辑动态博客那样管理自己的静态网站，并实时地将编辑好的网站推送到你的 Git 库中，实现真正的无代码建站。</p>
<p><img loading="lazy" src="/images/blog20200310/Forestry.PNG"></p>
<p>本站即通过 Hugo + ~~Forestry ~~+ Github 搭建而成，从开始自学到写这篇文章总共花费三天时间。在此感谢所有为开发上述工具或撰写相关教程而无偿付出时间与精力的前人们，若不是站在他们伟岸的肩膀上，本站不会有问世的这天。</p>
]]></content:encoded></item><item><title>这个世界不需要英雄</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200121/</link><pubDate>Tue, 21 Jan 2020 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20200121/</guid><description>2019年末总结</description><content:encoded><![CDATA[<p>2019年12月底，谷歌照例公布了去年的年度词汇——“英雄（Hero）”.这或许和过去一年上映的众多超级英雄电影不无关系，但在这个充满混乱与焦虑的时代，呼唤英雄也确实会成为人们的选择之一。因为历史毕竟只是过去事件的缩略记录，难免会给人一种“英雄史观”的错觉，所以越是善于“以史为鉴”的民族，越会在自身无法应付的历史关口前，翘首期盼英雄的出现。就像拿破仑之于法国、希特勒之于德国，尽管二者为各自民族留下了性质完全不同的精神遗产——前者留下了伟大的《法国民法典》、并将法国的自由与民主精神遍撒欧洲，而后者则留下了恐怖的战争与屠杀，并使德国化为一片废墟——但他们无一不是被自己的人民亲手推上的英雄宝座。</p>
<p><strong>每一部英雄史诗——无论是悲剧还是喜剧——都离不开两个要素，即懒汉与野心家</strong>。人民天生便具有将眼前的复杂局势交给一名能力超群的英雄来解决的倾向。毕竟公共事务复杂而多变，其处理过程充满了枯燥的盘算，相较于参与其中并耗费自己的精力与时间，人们更愿意投身于短暂而刺激的“公审大会”或“造神运动”。至于无聊的公共事务，交给英雄就好。填补这种“懒汉需求”的便是野心家，他们总是带着不切实际的“救世计划”进入公众视野，并向人们许诺一个流淌着奶和蜜的美丽新世界。众多野心家中，总会有少数“出类拔萃”的人会被人们选中，成为应对危机、带领人民前往新世界的“领袖”。</p>
<p>翻遍史书，懒汉与野心家的默契配合无不以悲剧收场。因为复杂而多变的公共议题根本不存在所谓“一劳永逸”的解决之道，即使有，也不是一小撮高居庙堂的“领袖”们所能想出。<strong>公共事务的解决需要全体公民的参与，关注、讨论、投票、请愿等都是参与的方式</strong>。这是公民在享受各项权利的同时，应当尽到的基本义务。懒汉们无视除纳税以外的其他公民义务，转而寄希望于“英雄”于“领袖”的出现，最终只会招致野心家，酿成无法挽回的悲剧。</p>
<p><strong>身为一个尚未走出此类悲剧的古老民族的我们，更应当铭记历史的教训，拒绝充当自食其果的懒汉、拒绝满嘴美好愿景的野心家，与其他公民一起打拼、真正尽到一位公民的义务</strong>。这才是真正的“以史为鉴”。“公审大会”与“造神运动”固然精彩刺激，但公民不能沉浸于这种虚假的参与感、止步于肉欲上的的满足。伟大的民族必然需要伟大的公民，而懒汉们永远无法实现“民族复兴“</p>
<p>2019年是个多事之秋，我隐约嗅到了人类文明周期性衰落的味道。在这场无法避免的衰落中，哪些民族会走入沉沦、哪些又能度过难关？这是一个值得思考的问题。毫无疑问，中国人的勤劳与勇敢是值得骄傲的，他们能在体制的重重阻碍之下创造出世界第二的经济奇迹。但正如前总理温家宝所言，没有政治体制改革的成功，经济体制改革无法进行到底。30年前的枪声使全民噤声，也使中国的改革步入了“改无可改”的尴尬境地。但人们的沉默并不代表他们选择充当懒汉，因为这个世界需要的永远不是英雄，而是所有人抛弃“主义”、研究“问题”，共同努力，对这个古老的民族负起责任。</p>
<p>我的手机铃声是美国乐队 Family of the Year 为一部年更剧集写的一首插曲《Hero》，它的歌词很好地表达了年轻一代拒绝宏大叙事，但热情地迎接未来生活的精神。</p>
<blockquote>
<p>Let me go,
I don&rsquo;t wanna be your hero.
I don&rsquo;t wanna be your big man,
I just wanna fight witheveryone else.
You&rsquo;re a masquerade,
I don&rsquo;t wanna be a part of your parade.
Everyone deserves a chance to,
Walk with everyone else.</p></blockquote>
<p>如今，中国的年轻一代承受着远超其负荷的生存压力。房价畸高、公司压榨、食品毒害、环境污染，加之愈发严重的人口老龄化以及随之而来的社保将空，这些压在中国年轻人身上的重担没有一个是可以被“英雄”轻松解决的。我们受够了“大众创业、万众创新”或“中华民族伟大复兴”这样的宏大叙事，在即将到来的复杂时代面前，这些口号显得无比苍白。在这样的艰难境地中，我们不能寄希望于“英雄”的出现。抑或说，我们自己才能做自己的英雄。</p>
]]></content:encoded></item><item><title>雪花的“正义性”与“屋子里的大象”</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191209/</link><pubDate>Mon, 09 Dec 2019 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191209/</guid><description>《韬奋芳华》杂志命题投稿</description><content:encoded><![CDATA[<p>近年来，随着勒庞所著《乌合之众》在阅读界的流行，中文社会掀起了一场污名化“大众”的浪潮。人们似乎从勒庞那缺乏逻辑连续性和实证支撑的“论述”中，找到了“管制”大众舆论的合法性。本着“带着论点找论据”的精神，一系列大众舆论的“恶行”被公之于众。于是，“舆论吃人”的论点开始被“舆论”本身所接受，形成了一派“自废武功”的奇特景致。</p>
<p>事实上，<strong>舆论并非全无“恶行”，雪花也并非全然“正义”</strong>。中国自古便有“三人成虎”“众口铄金”等典故，并且随着移动互联网的普及，舆论的“原罪”也被空前放大，使得原先仅能作用于熟人社区的“三人”“众口”变成了具有巨大破坏性的“雪崩”。然而，我们必须认识到，<strong>雪花的“非正义性”仅在其所身处的“个案”中才能成立。要在更普适的层面上探讨雪花的“正义”与否，就必须突破“个案”的桎梏，发现舆论之所以作出“恶行”的更本质原因</strong>。</p>
<p>纵观历次中文社交媒体上的“舆论风波”，不难看出<strong>大众舆论先天便具有的三个“原罪”——多元性、反复性与破坏性</strong>。所谓多元性，是指因社会个体在社会背景、价值取向等方面的差异而导致的，大众舆论与生俱来的多样性。然而，仅具有多元性的大众舆论不仅不具有“雪崩”式的破坏性，还能促进公众对社会热点事件的讨论，使人们在与不同意见的交锋中深化对社会议题的认识、弥合因个体差异而产生的矛盾。从这层意义上来说，<strong>大众舆论的“多元性”构成了其“中立性”的基础，不仅不是“原罪”，反而应是“原善”</strong>。</p>
<p>因此，“雪崩”的发生主要缘于大众舆论的另外两个“原罪”，即反复性与破坏性。所谓反复性，是指随着有关事件的信息的不断披露，舆论主流立场所发生的前后反复。由于公众对自己的立场与观点大多投入了一定感情（这种感情既可源于对相关事件当事人的共情，又可源于对“公共认识”的认同），所以主流立场的每一次反复都会加剧公众对事件“反派”的义愤。如此一来，舆论的破坏性便在这种情绪累积的过程中不断加大。倘若舆论最终的矛头指向了“正确”的“反派”，则舆论便做了一件大快人心的“善事”；而倘若该矛头指向了“错误”的“反派”，则“三人成虎”的悲剧就会上演，最终导致“雪崩”的发生。</p>
<p>判断一个结果是否符合“正义”的标准，需要经过一段漫长的时间，这与公众注意力先天便具有的短期性相冲突；加之“正义”的标准本身便具有多元性，使得空泛地讨论雪花的“正义性”变得毫无意义。<strong>要降低舆论引发“雪崩”的几率，就必须从舆论的反复性与破坏性着手，在不奢求舆论“行善”的前提下，让舆论尽量少“作恶”</strong>。</p>
<p>大众舆论的反复性缘于相关信息披露的不及时或不真实。因此，提高信息披露的速度与信度是减少舆论反复的最佳途径。<strong>一个社会的健康运行离不开独立而自由的新闻媒体。后者不仅可以成为弱势群体的有效发声渠道，化解因信息流通受阻而不断积累的不满情绪；还可以为社会热点事件及时而准确地披露信息，使舆论不至于因信息的不对称而摇摆反复</strong>。可以说，具有广泛公信力的新闻媒体可以充当大众舆论的“润滑剂”，最大限度地降低舆论的反复性和破坏性，使“雪崩”化解于未然。</p>
<p>如今，针对大众舆论的社会作用，形成了两种截然对立的观点。一种观点认为，大众舆论的三个“原罪”决定了其只会导致“雪崩”式的言论暴力，因而具有“非正义性”；另一种观点则认为，舆论可以在公力救济失灵的情况下，自发地“主持正义”，因而具有“正义性“。<strong>前者在妖魔化大众舆论的同时，无视了前文所述导致或加剧舆论“作恶”的深层原因；而后者则过于理想化，赋予舆论本不该被赋予的使命</strong>。无论哪种观点，都忽略（或选择性忽略）了新闻媒体的重要性：<strong>前者忽略了媒体对舆论的引导和制约作用；后者则忽略了媒体对公权力的监督和制衡作用</strong>。</p>
<p>中文互联网上充斥着低质量的“谣言”和对各类群体的“网络暴力”，人们似乎逐渐背离了互联网“连接人”的初衷。<strong>造成这一现状的部分原因，正是正规媒体公信力与独立性的丧失</strong>。弱势群体失去了有效的发声渠道、社会公众失去了可靠的信息来源，人们无时无刻不生活在恐惧与焦虑之中。于是，义愤与戾气开始蔓延，而那些屡屡出现在社会热点事件中的“反派”们——无论是否真的是“反派”——便成了发泄的出口。因此，争论“雪花是否正义”无非隔靴搔痒，问题的症结如同屋子里的大象，聪明人都知道它的存在，只是不愿说出罢了。</p>
]]></content:encoded></item><item><title>革命与改革：李侃如对中国的洞见与误读</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191202/</link><pubDate>Mon, 02 Dec 2019 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191202/</guid><description>《治理中国》读书笔记</description><content:encoded><![CDATA[<p>与经济快速增长所带来的新的民族自豪感相伴而生的，是所谓“中国特殊论”的兴起。它一边强调中国与其他国家的差异，为现行体制穿上“符合国情”的合法外衣，从而在基础理论上排斥结构性改革；一边夸大中国文化对于外国人的“不可理解性”，拒绝接受中国文化圈以外的人对自身的解剖和批评。无论如何，<strong>中国特殊论都构成了李侃如所言“排外主义”的支柱之一，为部分保守人士的“闭门造车”大开方便之门</strong>。</p>
<p><strong>无论哪个国家、哪个民族，都必然既拥有所有国家或民族都拥有的全人类的共性，又拥有其他国家或民族所不具备的特性，这正是马克思主义哲学的基本主张</strong>。从这层意义上来说，一个出身于文化风土与社会结构皆不同于中国的美国的学者，其对中国的观察与解释，势必既存在跳脱出中国固有观念的“旁观者”所特有的洞见，又存在因语言或文化的隔阂而不可避免的误读。因此，身为美国著名中国问题专家，曾在白宫担任重要公职的李侃如所著《治理中国：从革命到改革》就并非可以一笑了之的“外国人著作”。</p>
<p>《治理中国》的中文版出版于2010年，彼时正值中国经济持续增长、社会福利持续提升、政治相对开明的“黄金时代”，改革开放所取得的喜人成果令无数国人对未来充满信心。然而大多数人未曾料到，仅仅9年之后，中国体制积蓄多年的流弊就开始显出其恶果。<strong>如今，面对国内外出现的一系列问题，人们再次陷入一如90年代初期时的迷茫。而越是在这种时候，越需要汲取“局外人”的养分</strong>。我们不妨翻开这本20多年前问世的著作，看看那时的美国人如何看待中国近百年来的历史发展。</p>
<p>本书共11章，第一部分大致梳理了中国帝制时代的总体特征以及中华民国的历史；第二部分介绍了1949年以来的共和国历史并对毛泽东、邓小平，以及后邓小平时代中国领导人所面临的治理问题进行了详细地分析；第三部分详细介绍了中国现行政治体制的运作模式及决策过程；第四部分则分别从经济发展、环境保护和社会治理的角度分析了中国模式在未来将要面临的挑战以及可能的解决方法[①]。</p>
<p>本文将结合笔者自身对中国政治及文化的理解，从“洞见”和“误读”两个角度出发，来分析本书值得重视或商榷的观点。“文以载道”向来为中国知识分子所推崇，因此本文的分析也难免融入笔者自身的价值判断。</p>
<h2 id="外儒与内法中国现代化道路的第一次分野">“外儒”与“内法”：中国现代化道路的第一次分野</h2>
<p>同大多数中国近代史研究者一样，李侃如将近代以来兴起的反传统思潮与“反儒家”等而视之，认为帝制中国遗留下来的等级秩序与厚黑权术均是“儒家”的主张。然而，自汉武帝罢黜百家、独尊儒术以降，帝制中国实际上一直奉行黄老与法家之术，只是为了维护自西周时开始延续的“以德配天”的法统，统治者不得不给残酷的统治术披上温婉的儒学外衣。<strong>尽管作为维护法统的代价，学习并信奉儒学的文官确实会对帝王产生些许道义上的约束，但帝制中国自始至终充满政治权术、军事阴谋、官僚堕落和社会动荡的本质并未被改变</strong>[②]。</p>
<p><strong>这便是所谓“外儒内法”的帝制传统，其核心实为 “内法”，而仅仅作为外衣的“儒”可以被替换成任何其他思想。无论统治者如何努力包装，帝制的残酷本质不会因为外衣的改变而改变</strong>。李侃如一面意识到“虽然在两千年中国历史的大多数时间里，儒学是官方意识形态，但在实际做法上则大量采用法家的主张”，一面又将“学生听从师长，子女遵从父母，下级服从上级，所有人都要尊崇皇帝”的帝制模式归功于“儒家”的影响。他错误地将中国的“封建礼教”归功于“儒学的影响”，而忽略了帝制中国“外儒内法”的本质。</p>
<p>西方近代的代议制民主发端于中世纪的封建制度[③]，在这套等级森严的制度中，社会关切是由近及远的，因此产生了“我的附庸的附庸不是我的附庸”的政治原则。这种依据社会关系的亲疏远近来分配权利义务的体制，与儒家所倡导的“修齐治平”不谋而合。<strong>代议制民主的有效运行，必须建立在熟人社区和本土意识的基础之上，而这恰恰是欧洲的封建制度和同样产生于西周封建制度环境下的儒家学说的自然延伸。如果说“内法”构成了帝制的核心原则，那么“外儒”则蕴含着近代民主制度的基础</strong>。</p>
<p>当闭关已久的帝制中国开始被动地与西方文明直接接触时，那些首先“开眼看世界”的中国人敏锐地意识到，西方人普遍奉行的社会制度与他们多年以来潜心研习的儒家经典中所设想的社会制度高度相似。他们将西方社会描述为“上下同心，以礼自处，顾全国事如此[④]”的理想状态，并以“天下为公”来概括这种理想社会的基本原则。因此，<strong>在清末民初的相当一段时间里，那些日后被称为“守旧派”的知识分子从民主制度与儒家经典的共同点中受到启发，开始对残酷的帝制进行反思</strong>。他们之所以被后世的活动家称为“守旧派”，正是因为他们只反“内法”而不反“外儒”，进而给人一种“封建礼教卫道士”的印象。</p>
<p>“五四”新文化运动以后，在国内外一系列复杂因素的共同作用下，“反外儒”的“进步思潮”开始成为中国思想界的主流，这正是李泽厚先生所谓“救亡压倒启蒙”的转折。然而，<strong>压倒“启蒙”的可能并非“救亡”，而是经过现代性包装的“内法”</strong>。与倡导“有差等的爱”、重视远近亲疏的社会关系的儒学形成鲜明对照，法家所倡导的是“无差等的服从”，意图打破封建社会固有的社会关系网、以将原子化的个人紧密地团结到统治者周围[⑤]。<strong>“进步思潮”将德日式的高度集中的国族主义视为中国现代化的捷径，进而从“学习英美”转向“通过德日学习英美”，以使中国不至于在斯宾塞式的“国族竞争”中落后太多</strong>。与其说“五四”以后的中国是“救亡压倒启蒙”，不如说是“内法压倒外儒”、“德日压倒英美”。</p>
<p>正如李侃如在书中所描述的那样，<strong>二次革命之后的孙中山所建立的国民党，是一个高度集中的“列宁主义式的政党”，而与国民党几乎同时发展起来的共产党则同样具有列宁主义式的组织方式，并“具有相似的社会和政治来源”</strong>。因此，无论国民党还是共产党，都是“五四”以来“进步思潮”的实践者，只不过二者在实现现代化的途径问题上产生了严重的分歧。</p>
<h2 id="精英与群众两种革命主体的尖锐交锋">“精英”与“群众”：两种革命主体的尖锐交锋</h2>
<p>苏俄十月革命的胜利，给“五四”以后的“进步思潮”提供了一条不同于德日的新的现代化途径。李侃如认为，<strong>马克思主义作为一种“预言西方资本主义制度将在革命巨变中崩溃的‘科学’、‘进步’的西方理论”，让当时的部分知识分子看到了“迅速使中国进入这一学说所界定的文明先锋的行列”的可能</strong>。在共产国际的帮助下，这些知识分子组建了中国共产党。</p>
<p><strong>与德日主要通过中上层阶级推动改革或革命的方式不同，苏俄社会主义革命的主体是被广泛动员起来的工人、农民与基层军人</strong>。李大钊将这场革命的胜利称为“庶民的胜利”[⑥]。德日式的“精英革命”的前提，是发生革命的国家存在一个成规模的新兴贵族群体。这些新贵族既拥有足以推动社会革命的可供支配的社会资源，又对旧有体制心存不满。而对于像帝制俄罗斯和帝制中国这样资本主义经济尚不成熟、新兴贵族尚未形成革命力量的国家来说，德日式的精英化途径可能并不适用。</p>
<p>共产党的早期创始者们正是意识到了这一点。由于清末的中国尚未形成具有一定规模的资产阶级，辛亥革命成功后，革命党迅速失去了对新政权的控制权。尽管孙中山重返广州后确实建起了一支武装力量，但北伐革命的成功也与其“联俄联共”的群众化路线，以及北方中国军阀割据的现实情况密不可分。</p>
<p><strong>以蒋介石为首的国民党右翼阵营并不赞同共产党的群众革命方式，他们坚持走德日式的精英化路线。双方的矛盾在孙中山去世以后一触即发，后者在蒋介石发动的“清党”运动中几乎死伤殆尽</strong>。彼时正值1920年代后叶，德日等新兴列强正在迅速滑向法西斯主义和军国主义。受这股思潮的影响，蒋介石开始倡导“新生活运动”，并与主张群众革命路线的共产党分道扬镳。<strong>“新生活运动”虽然有着儒家思想和基督教的外衣，但其本质却是利用政治高压培养国民服从的习惯，这仍是帝制中国“外儒内法”的翻版</strong>[<a href="#_ftn7">⑦]</a>。从这层意义上来说，中国的现代化进程从未真正完成过。</p>
<p>李侃如将国民党的最终失败归因于“传统中国政治文化中根深蒂固的三个弊病”，即“任人唯亲、腐败和光说不干”。这实际上是小视了中国人对帝制的忍耐力以及共产党所奉行的“群众革命”路线的号召力。<strong>尽管共产党的土地政策在抗日战争时期出现了短暂的松弛，但其广泛发动底层农民“打土豪、分田地”的土地革命运动确实将占当时中国人口多数的农民群体有效地纳入到了自己的革命活动中</strong>。至解放战争后期，当时的中国已经没有什么力量可以抗拒“共产党革命性的社会变革”。</p>
<h2 id="正统与国情两种革命路线的分歧与动荡的三十年">“正统”与“国情”：两种革命路线的分歧与动荡的三十年</h2>
<p><strong>早在第一次国共合作期间，共产党内部就存在着有关革命路线的分歧：一边是以共产国际代表与党内具有留学背景的知识分子为首的“正统的马克思主义者”，他们主张以产业工人为革命主体、以城市暴动的方式夺取政权、最终建立一个无产阶级专政的政府；另一边则是以中国本土农民与传统知识分子为首的“结合国情的马克思主义者”，他们主张以农民为革命主体、以农民战争的方式夺取政权、最终建立一个由进步阶级共同领导的联合政府</strong>[<a href="#_ftn8">⑧]</a>。尽管在蒋介石发动“四·一二”政变以后，双方在纠正陈独秀等“右倾投降主义”方面达成了一致，但是党内有关革命路线的分歧一直存在。直到因“正统派”的错误指挥导致全党在第五次“反围剿”中损失惨重、“国情派”取得党内主要领导权后，该分歧才暂时告一段落。</p>
<p>然而，正如李侃如所言，<strong>“国情派”的农民路线使得共产党在1949年夺取政权时“党员绝大多数由农民构成”，这些人“本能地倾向于反对城市、反对知识分子”。他们“无法掌握大规模行政机构所特有的纸上作业，但却获得了在治理国家的政治机构中身居高位的权力”</strong>。正是这种由革命者向执政者角色转换的不成功，最终导致了共和国前三十年激烈动荡的历史结果。</p>
<p>毛泽东身为“国情派”乃至整个共产党的领袖，也存在着上文所述“角色转换”的问题。李侃如认为，<strong>毛泽东作为一位成功的革命者，其“必须保持高度的热情”，而这“很难与平稳的行政管理兼容”</strong>。革命者“倾向于把复杂的管理看作实现其目标的障碍”，而公务员则“常常要对革命者决策冲动中的热情和缺乏技术专长泼凉水”。正是这种革命领袖与官僚体制之间长期的紧张关系，使得毛泽东不得不一次又一次地运用他的“斗争哲学[⑨]”与他自己亲手建立的官僚体制进行对抗。而<strong>正是这种“周期性地与自己的创造物的作战”，给1976年时接手政权的共产党领导人们留下了一个“因社会冲突而精疲力竭的国家”以及一个“互不信任与派系斗争已积重难返的政府体制”</strong>。</p>
<p><strong>在共和国建立之初的动荡的三十年中，以邓小平和周恩来为代表的技术官僚在客观上对毛泽东起到了一定的制约作用。也正因如此，他们始终被毛视为“腐朽落后”的官僚体制的一部分，不断在权力斗争中被打压</strong>。直到1976年毛泽东与周恩来相继去世后，邓小平才逐渐走上权力中心，开启了“拨乱反正”的改革进程。尽管在同一时期，党内再次出现了关于改革路线的争论，但邓小平凭借自己超常的政治手腕，平衡各方势力，带领迷茫的中国走上了一条“务实主义”的发展之路。</p>
<h2 id="政治与经济体制改革的推进与停滞">“政治”与“经济”：体制改革的推进与停滞</h2>
<p>用李侃如的话来说，1980年代的改革，是一个“首先采取大胆的行动、然后努力去适应其结果并尽力继续前进”的过程。改革的主要对象，是以毛泽东的平均主义与集体主义为原则的政治与经济体制。它开始于思想领域，即“灵活运用毛泽东思想”，以“把中国从教条主义的桎梏中解放出来” [⑩]；在经济领域达到顶峰，将中国经济从毛泽东晚期濒临崩溃的境地中拯救了出来；并最终结束于政治领域。</p>
<p>尽管多数人将中国1980年代的改革归功于“改革的总设计师”邓小平，但实际在政策层面推进改革的，是“改革的总工程师”胡耀邦以及接替其工作的赵紫阳。关于改革路线的激烈争论几乎伴随了一整个1980年代的改革进程，<strong>争论的一方便是以胡耀邦和赵紫阳为代表的“开明派”，他们“确信要建立更加人性化的政治体制和市场经济，就必须进行更多的根本性变革”；而另一方则是以老一辈革命家为首的“保守派”，他们“渴望恢复一连串‘左’倾激进主义之前的时光”</strong>。</p>
<p><strong>1989年“春夏之交的政治风波”宣告了这场持续多年的争论的结束，“开明派”彻底失去了党内的话语权，改革也因此一度陷入停滞</strong>。好在邓小平的“南方谈话”重启了经济体制改革的进程，使迷茫的党和国家走上了“市场经济”的发展之路。始于1990年代初期的新一轮体制改革将政府的合法性建立在“绩效主义”的原则之上，即一切体制改革都必须为提高经济效益服务。这一策略直到最近还效果显著，中国的经济总量以平均每年接近10% 的速率增长。<strong>然而政治体制改革的长期停滞，也为经济体制改革的深化以及中国的长远发展蒙上了一层阴影</strong>。</p>
<p>2012年，前任国务院总理温家宝在全国人大记者招待会上呼吁：“没有政治体制改革的成功，经济体制改革不可能进行到底。[⑪]”这一说法一语中的地指出了当今中国所面临的一个根本问题。李侃如从政治体制的角度分析了中国在经济、环保和社会等方面将要面临的挑战，其核心症结正是存在于中国政治体制中的一系列根本矛盾。</p>
<p>《治理中国》成书于1990年代，距今已二十余年。<strong>尽管中国在这二十多年时间里已经发生了翻天覆地的变化，但政治体制改革停滞的根本问题并未解决</strong>。从这层意义上来说，李侃如的书中所述并未完全过时。正如前文所述，李侃如对中国近现代史的理解既有洞见又有误读。我们这代人要做的，正是审慎地剔除其误读的部分，吸收其洞见的部分。</p>
<p>2019年的中国，正面临着数十年未有之变局。在这样的历史转折处，我们必须带着开放的胸怀和谦卑的心态，将改革开放进行到底。中国的土地与人民，已经遭受了数千年的绵延不绝的苦难。我们不能让苦难的历史重演，不能让“文革”的逆流再来。</p>
<hr>
<p>[①] 李侃如. 治理中国: 从革命到改革[M]. 中国社会科学出版社, 2010.</p>
<p>[②] 熊逸. 春秋大义: 中国传统语境下的皇权与学术[M]. 陕西师范大学出版社, 2007.</p>
<p>[③] 此处的“封建制度”仅指“封邦建国”的社会体制，并非中国学界通常所说的作为一种历史形态的“封建时期”，下同。</p>
<p>[④] 刘锡鸿. 英轺私记[M]. 岳麓书社, 1986.</p>
<p>[⑤] 秦晖. “大共同体本位”与传统中国社会 (下)[D]. 社会科学研究, 1999.</p>
<p>[⑥] 李大钊. 庶民的胜利[J]. 新青年, 1918, 5(5): 436-4.</p>
<p>[⑦] 刘文楠. 规训日常生活: 新生活运动与现代国家的治理[J]. 南京大学学报: 哲学. 人文科学. 社会科学, 2013 (5): 89-102.</p>
<p>[⑧] 毛泽东. 论联合政府[M]. 青苹果数据中心, 2013.</p>
<p>[⑨] 李侃如在书中将毛泽东思想的特点总结为：意识形态挂帅、人民意志论、反对知识分子、矛盾分析法和擅用群众运动。</p>
<p>[⑩] 此处主要指的是“关于真理标准问题的讨论”。</p>
<p>[⑪] 人民网前方报道组. 温家宝：没有政治体制改革的成功 经济体制改革不可能进行到底[EB/OL] 人民网, 2012.</p>
]]></content:encoded></item><item><title>专制与革命：历史周期律中的奥威尔精神</title><link>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191023/</link><pubDate>Wed, 23 Oct 2019 00:00:00 +0000</pubDate><guid>https://2e1a95c2.masonblog-b7a.pages.dev/post/blog20191023/</guid><description>《动物庄园》读书笔记</description><content:encoded><![CDATA[<p>某种程度上，奥威尔是我的政治启蒙者。当我还在读初中的时候，历史老师曾在一个慵懒的午后，送给我一本薄薄的小册子，作为考试成绩进步的奖励。这本书就是《动物农场》。那天晚上回到家后，我一口气读完了整本书。尽管当时的我并不了解苏联历史，也不知道斯大林和托洛茨基的内斗，但这则短小的寓言仍然使我感到了深深的震撼。自那以后，我开始阅读启蒙运动以来的一系列哲学与伦理学著作，并对始于卢梭的近代左翼思潮产生了浓厚的兴趣。</p>
<h2 id="奥维尔生平">奥维尔生平</h2>
<p>与大多数出身上流社会的左翼活动者一样，<strong>奥威尔的“革命生涯”始于对印度殖民地底层民众的深切同情</strong>。他毕业于著名的贵族学校——伊顿公学，却在西班牙内战期间毅然抛弃了优渥的生活，加入了“国际纵队”。然而，当目睹了共和国政府与苏联在西班牙内战期间实施的红色恐怖之后，奥威尔开始重新审视所谓的社会主义革命。西班牙内战最终以弗朗哥政权的胜利告终。回到英国后，奥威尔开始了自己的创作生涯[1]。<strong>他的作品多以反思社会主义革命与社会主义制度为主旨，其代表作——《动物农场》和《1984》——更是成为冷战期间资本主义阵营的宣传读物</strong>。有些人就此认为，奥威尔在西班牙内战后转变了自己的政治立场。</p>
<p>可我不这么认为。反思并不意味着反对。作为一个真实投身过社会主义运动的活动家，奥威尔比那些坐在温暖的书房里，凭着一腔热血与同情对革命进行臆想的“理论家”要更了解革命的本质。<strong>他对革命的反思与对社会主义运动的讽刺，是基于他继承自启蒙时代的理性与良心而作出的审慎的决定，绝非一句简单的“立场转变“所能解释</strong>。</p>
<h2 id="动物农场的故事">《动物农场》的故事</h2>
<p>《动物农场》的情节很简单：农场中的一群饱受人类剥削的动物,在猪的带领下发起了革命。它们把人类农场主赶走后，按照老少校（马克思）当初的设想，建立起了一个动物平等的理想社会。然而，新政权建立之初的美好时光稍纵即逝。革命领袖拿破仑（斯大林）将自己的革命同志雪球（托洛茨基）驱逐出农场后，开始了自己的独裁之路。整本书在结尾处达到了其讽刺意味的高潮——原本与人类势同水火的革命领袖开始变得与人类一样用两条腿走路，并将原先人类对动物的剥削变本加厉地重新带回农场。与人类统治时期有所不同的是，新社会的剥削在宣传部门的粉饰下变得更具欺骗性，动物们在一遍又一遍的政治宣传中，不仅默默接受了重新被奴役的现实，还开始对新的剥削者感恩戴德[2]。<strong>这其实是另一个“屠龙勇士变成恶龙”的故事，即革命者在革命成功后成为另一个独裁者。历史往往会在这种专制与革命的拉锯中不断循环，人们将这种循环称为历史周期率</strong>。</p>
<h2 id="历史周期律">历史周期律</h2>
<p>奥威尔与托克维尔一起，被许多后来的知识分子亲切地称为“同时代人”[3]。这不仅是因为他们的思想具有预见性与普适性，更是因为他们所经历的历史并没有因为时代的变迁而归于陈迹。<strong>人们总是感叹“历史的惊人相似”，但真正对历史及其“相似性”进行严肃思考的却少之又少</strong>。中国自有文字记载以来的近四千年历史中，专制与革命的循环反复上演，并且每次王朝更替都伴随着恐怖的屠杀与饥荒。单就这点而言，奥维尔和托克维尔这两位远在异乡的冷峻思考者，在历史的吊诡中，成了中国的“同时代人”。</p>
<p>关于如何走出历史周期律的问题，毛泽东曾与黄炎培有过一段讨论，前者将“民主”作为解决这一问题的唯一出路[4]。然而多年之后的我们重新回望历史，在轮番上演的一幕幕悲剧面前，毛泽东的回答显得过于轻描带写，且其日后实践也没能回应自己的回答。对此我们不经要问：<strong>专制与革命的历史周期律究竟缘何而起？走出历史周期律需要满足哪些条件？世界各民族的共性是否足以支撑一项历史经验的移植与传播</strong>？</p>
<p>这一系列问题看似老生常谈，却对当下的现实世界有着厚重的现实意义。自十九世纪后半叶至今的这一百多年的时间里，世界各国都经历了自己的民主化进程，这其中有的平和，有的激烈。而历史的吊诡之处在于，<strong>暴力革命似乎常常与专制独裁相伴而生</strong>。如克伦威尔之于英国革命、罗伯斯庇尔之于法国革命、斯大林之于俄国革命、墨索里尼之于意大利革命……可能的解释大抵如此：要在错综复杂的局势中团结该派势力完成革命，必须要有一个具有超强执行力且充满人格魅力的领袖。这位伟大的革命领袖正是现代型暴力革命的一切矛盾的焦点，即<strong>革命的过程必须是专制的，而革命的结果应当是民主的</strong>[5]。因此，想要跳出专制与革命的历史周期率，理论上其实很简单——革命领袖处理好革命成功后的身份转换问题。</p>
<p>然而真实的历史总是比理论要复杂得多。各国的民主化进程无不伴随着复杂的民族关系与文化冲突。在这些复杂的关系与冲突中，个人的选择反而沦为次要。单就这点而言，<strong>一概将历史周期律的责任归于革命领袖的做法过于武断</strong>。人有利己的本性、权力有扩张的本性，指责这些本性于事无补，思考如何通过外物制约这些本性才是历史正道。</p>
<h2 id="奥威尔精神">奥威尔精神</h2>
<p>对于生活在今天的我们而言，解决问题的第一步是正视问题。<strong>生活的进步与社会的变革，从来都需要一群敢于直面问题的人，他们能够在歌舞升平中闻到危机的味道，在所有人都沉浸于宏大叙事之时回归个体价值。他们有时会被污名化，有时又会被奉为英雄。他们是奥威尔、托克维尔和托尔斯泰，是梁启超、陈天华和鲁迅。他们有着理性的精神和冷峻的良心。他们就是知识分子</strong>。相比于一腔热血的革命青年，社会的进步更需要知识分子。</p>
<p>我们中国上下近四千年的漫长历史中，充满了暴力、血腥和悲剧，这其中不乏对知识分子的打压与迫害。要跳出专制与革命的历史周期律，我们不能轻描带写地说一句“民主”，也不能虚与委蛇地喊一声“自由”。我们要切实地正视问题的存在，并以最大的包容和善意来面对批评与指责。我们要使“奥威尔精神”有自己的一席之地，使人人都能通顺地表达自己的思想。唯有如此，才能使日益高升的维稳经费回归提升人民福祉的用途，让通往北京的火车变得不再拥挤。</p>
<hr>
<p>[1] 段怀清. 一代人的冷峻良心: 奥威尔的思想遗产[J]. 社会科学论坛, 2006 (5): 29-41.</p>
<p>[2] 乔治, 奥威尔, 孙仲旭. 动物农场[J]. 当代外国文学, 2007 (1): 103-103.</p>
<p>[3] 倪玉珍. 托克维尔理解民主的独特视角: 作为一种 “社会状况” 的民主[J]. 社会学研究, 2008, 3: 79-91.</p>
<p>[4] 杨津涛. 黄炎培与毛泽东畅谈 “历史周期率”[J]. 协商论坛, 2013 (11): 56-57.</p>
<p>[5] 汉娜, 阿伦特, 陈周旺. 论革命[J]. 当代外国文学, 2007 (3): 171-171.</p>
]]></content:encoded></item></channel></rss>