<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Log4D</title>
  <link href="https://blog.alswl.com/atom.xml" rel="self"/>
  <link href="https://blog.alswl.com/"/>
  <updated>2026-10-18T00:00:00+08:00</updated>
  <id>https://blog.alswl.com/</id>
  <author>
    <name>alswl</name>
  </author>
  <generator>Hugo -- gohugo.io</generator>
  <entry>
    <title type="html"><![CDATA[AI Native 实践续篇：迈向 Stage 8]]></title>
    <link href="https://blog.alswl.com/2026/10/ai-native-stage-8/"/>
    <id>https://blog.alswl.com/2026/10/ai-native-stage-8/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2026-10-18T00:00:00+08:00</published>
    <updated>2026-10-18T00:00:00+08:00</updated>
    
    <content type="html"><![CDATA[<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-agent-coordination-cover.png" alt="AI Native 实践续篇题图：从多个终端窗口到统筹者组织的协作网络"  />



</p>
<p>最近，我重新梳理了自己的工作方式。变化最明显的地方，是我开始把完整任务交给一个负责调度的统筹者，由它组织其他 Agent 推进，自己逐步退出逐个窗口盯进度的状态。</p>
<p>这篇接着<a href="https://blog.alswl.com/2026/10/ai-native-work/">八月那篇 AI Native 实践</a>往下写：Stage 7 留下了哪些验证问题，迈向 Stage 8 时，我在调度上做了哪些尝试，以及实际跑起来以后遇到的新问题。</p>
<p><a class="banner-link" href="https://blog.alswl.com/2026/10/ai-native-work/">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-e7a22f6096cba86a.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">我怎么在 AI Native 下工作 due 2026-08</span><span class="banner-link__description">在 2025 年终总结 里我写过一句：写代码（Code Typing）未来会成为低效的工程方式，AI Native 应该成为默认选项。 话说出去容易。真到自己每天这么干，问题就具体了：AI 写代码很快，那信息从哪来、方案谁来定、产出怎么验、人到底还管什么？这一年实际跑下来，我对它的理解变了几轮，关注点从「代码写得快」慢慢移到了信息、研发、落地和工具链这一整条链路上。 这篇文章讲的是我目前的工作方式(截止 8 月底）：信息怎么处理、代码怎么写、工具链怎么搭，以及在这套方式跑了大半年之后，我形成的几个判断。</span><span class="banner-link__source">Log4D</span></span>
</a></p>
<p>我用这张 Stage 1—8 演进图定位自己的工作方式：从编辑器辅助，到多个 Coding Agent 并行，再到由统筹者组织执行。下文聚焦 Stage 7 之后的验证问题，以及迈向 Stage 8 的组织实践。</p>
<p>这些还是阶段性的尝试。我开始把调度交给 Agent，但距离完整实现 Stage 8，还需要更多实际任务中的实践和效果呈现。能组织多个 Agent 运行，并不意味着已经能稳定地完成从需求到上线的全过程。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-stage-overview.png" alt="Stage 1 到 Stage 8：从编辑器辅助、多个 Coding Agent 并行，到统筹者组织执行"  />



</p>
<p>图 1：从编辑器辅助到多 Agent 调度的八阶段演进。</p>
<h2 id="达成-stage-7-之后验证还没结束">达成 Stage 7 之后：验证还没结束</h2>
<p>我把达成 Stage 7 的实践归成四项：Spec Driven、Guides、验证和工具链。沿着这条路径走下来，我发现现有的验证还不够。测试通过之后，我还需要确认：这些测试真的能发现问题吗？</p>
<p>规格驱动工具与规范仓库入口如下。</p>
<p><a class="banner-link" href="https://github.com/github/spec-kit">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-09f8bc864d898a1a.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">GitHub - github/spec-kit: 💫 Toolkit to help you get started with SDD or any other process!</span><span class="banner-link__description">💫 Toolkit to help you get started with SDD or any other process! - github/spec-kit</span><span class="banner-link__source">github.com</span></span>
</a></p>
<h3 id="测试也要被测试">测试也要被测试</h3>
<p>最近我在一个内部测试工具里加了一层验证，也就是「测试测试」。</p>
<p>先完成开发和测试，再有意拆掉一个被测功能的目标代码，重新运行相关测试。预期应该出现失败。如果功能已经被破坏，测试仍然全部通过，就得回头检查：这条测试到底有没有触及它要验证的行为？</p>
<p>失败在这里提供了另一种证据：至少这条测试能抓住这次故障。它不能证明整个系统没有问题，但比单看一片绿色更能回答「测试是否有效」。</p>
<p>这与 <strong>mutation testing（变异测试）</strong> 的思路相通：有意改变代码，再看测试能不能发现变化。Stryker 的文档把引入的代码变体称为 mutant；测试失败表示这个变体被「杀死」，测试仍通过则表示它「存活」。代码覆盖率说明测试执行到了哪里，变异测试进一步检查测试能否识别故障。我这里先从破坏目标功能入手，还不能把一次故障注入等同于完整的变异测试评估。</p>
<p><a class="banner-link" href="https://stryker-mutator.io/docs/">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-377646a896425a08.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">What is mutation testing? | Stryker Mutator</span><span class="banner-link__description">TL; DR: Mutation testing introduces changes to your code, then runs your unit tests against the changed code. It is expected that your unit tests will now fail. If they don&#39;t fail, it might indicate your tests do not sufficiently cover the code.</span><span class="banner-link__source">stryker-mutator.io</span></span>
</a></p>
<p>我把验证分成两层：先验证交付物，再检查验证本身是否可信。这个环节值得单独花精力。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/mutation-testing-demo.png" alt="测试测试：破坏被测功能后重新运行测试，检查测试能否捕获故障"  />



</p>
<p>图 2：测试测试的判断路径。故意引入故障后，测试失败才符合预期；这只说明捕获了本次故障。</p>
<h3 id="让-agent-说明选择的依据">让 Agent 说明选择的依据</h3>
<p>另一个变化，是我会要求 Agent 交代判断依据：考虑过哪些方案，最后选了哪个，为什么这么选，拿什么证据支持这个选择。</p>
<p>给它作判断的空间，也让它解释判断。等到需要我介入时，我能围绕具体分歧讨论，而不用从一大段执行记录里重新猜它为什么走到了这里。</p>
<h3 id="工具链里新增的几个具体用途">工具链里新增的几个具体用途</h3>
<p>最近，我还在使用这些 Skill：</p>
<table>
	<thead>
			<tr>
					<th>Skill</th>
					<th>我的用途</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>asr</code></td>
					<td>语音输入，与后面记录思考过程的做法相连</td>
			</tr>
			<tr>
					<td><code>pr-visual</code></td>
					<td>PR 可视化，帮助查看改动</td>
			</tr>
			<tr>
					<td><code>ablation</code></td>
					<td>通过消融检查哪些代码可以删减</td>
			</tr>
	</tbody>
</table>
<p>这些 Skill 收录在我的 Skills 仓库中。</p>
<p>配套的 skm 用来管理 Skills。</p>
<p><a class="banner-link" href="https://github.com/alswl/skm">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-694646ef30044df5.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">GitHub - alswl/skm: a tiny local-first AI Skill Manager</span><span class="banner-link__description">a tiny local-first AI Skill Manager. Contribute to alswl/skm development by creating an account on GitHub.</span><span class="banner-link__source">github.com</span></span>
</a></p>
<p>我用知识库工具管理信息与文章。</p>
<h2 id="迈向-stage-8把调度交给-captain">迈向 Stage 8：把调度交给 Captain</h2>
<h3 id="社区实践持续运行与组织工作">社区实践：持续运行与组织工作</h3>
<p>我参考了下面两种 <code>/loop</code> 的运行方式。一张要求持续关注 issues、审查 PR、实际运行验证，并处理社区反馈；另一张先筛选反馈，再决定是否进入修复和上线流程。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/loop-community-maintenance.png" alt="loop 提示词示例：关注 issues、逐行审查 PR、实际运行验证并处理社区反馈"  />



</p>
<p>图 3：持续处理 issues、PR 和社区反馈的运行示例。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/loop-feedback-triage.png" alt="loop 提示词示例：先筛选有关反馈，再推进实现或修复"  />



</p>
<p>图 4：先判断反馈是否相关，再投入后续处理。</p>
<p><a class="banner-link" href="https://x.com/yetone/status/2109855710444237018">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-yetone-loop.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">Yetone on X：并行运行 3 个 loop</span><span class="banner-link__description">很多人想让我分享一下工作流，我一直没想好怎么分享，因为其实我没有任何的魔法，甚至还特别简陋，总觉得分享出来毫无意义。其实我就是用 Claude Code，然后用官方的 Opus 5.5 模型执行 loop 就可以了。 我会并行执行图里的 3 个 loop，然后每晚抽一点时间铲铲屎（主要是 UI/UX 的问题），然后就没活儿了。</span><span class="banner-link__source">x.com</span></span>
</a></p>
<p>另一场分享来自 Lauren Tan，标题是「i shipped 2000 PRs last month」。我听完这场分享，更关注的是怎样组织工作：像经营餐厅一样，安排厨师、改善流程，而不是自己始终下场做每一道菜。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/lauren-tan-2000-prs-talk.png" alt="Lauren Tan 分享截图：i shipped 2000 PRs last month"  />



</p>
<p>图 5：Lauren Tan 的分享；2000 PR 为分享者自述。</p>
<p><a class="banner-link" href="https://www.youtube.com/watch?v=NjoZoUm85x0">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-ae97ec5fd18858a6.jpg" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">How I Shipped 2000 PRs Last Month — Trusting AI Agents｜Grok Bot｜Lauren Tan</span><span class="banner-link__source">www.youtube.com</span></span>
</a></p>
<p>我会参考这些社区案例，也会留意它们的适用范围：端侧、客户端应用的经验，不能直接代表所有业务系统。公开开发的项目可以沿着提交过程学习它怎样组织工作；面对自己的系统，仍要检查权限、部署和验收这些环节能不能接上。</p>
<h3 id="我的实践由-captain-组织执行">我的实践：由 Captain 组织执行</h3>
<p>我现在用的是 1+N 的组织方式。一个统筹者对任务负责，其他 Agent 由它按需启动。我看统筹者的进展和结果，下面每个 Agent 的动向交给它管理。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/multi-agent-orchestration.png" alt="从单个 Claude Code、多个 Agents，到由统筹者统一调度的演进图"  />



</p>
<p>图 6：从单个 Agent、多个 Agent 并行，到统筹者统一调度。</p>
<h3 id="captain-主要负责调度避免陷入实现细节">Captain 主要负责调度，避免陷入实现细节</h3>
<p>统筹者负责组织任务、分配工作、处理分歧和汇总结果。启动时，它先和我把需求、目标和边界理清楚；短平快的小任务，也可以直接处理。对于复杂任务，我会限制它亲自做实现，有些场景甚至限制它读取具体代码。</p>
<p>这是为了保护它的上下文。如果它持续陷入复杂任务的实现细节，Context 很快会被占满，最初的目标和约束反而容易丢。具体工作分出去，也方便让执行发生在不同机器上。</p>
<p>我没有预先定义一个固定的 Agent Team。需要什么角色、启动多少 Agent，由统筹者按任务决定。保留的是调度职责，执行队伍可以变化。</p>
<p>这套限制目前主要通过 Skill 和 logbook 框架表达，仍然是软约束，Agent 可能忘记。我的做法是给统筹者配更可靠的模型、减少它接触的细节，并把状态落盘；真迷失了，可以重新启动。</p>
<h3 id="用-herdr-管会话和注意力">用 Herdr 管会话和注意力</h3>
<p>我使用的 Herdr 版本帮我管理 Agent 会话、消息和注意力，也支持跨机器运行。工具可以换，我更在意的是它能不能让我看清哪些任务在推进、哪些地方需要我介入。</p>
<h2 id="用-logbook-串起交付流程">用 logbook 串起交付流程</h2>
<h3 id="写清目标路径和交付约定">写清目标、路径和交付约定</h3>
<p>我希望串起的完整路径是：<strong>需求 → 设计 → 确认 → 开发 → 验证 → 验证验证 → 上线</strong>。这些环节全部在 1+N Agent 的管理下推进；确认目标和边界、检查验证是否有效，也是流程中的独立环节。</p>
<p>我用 logbook Kit（lbkit）来组织这套流程。logbook 管的是另一层事情：我要什么，沿什么路径推进，有哪些约束，最终交付什么。</p>
<p><a class="banner-link" href="https://github.com/alswl/lbkit">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-03fe3a0c63df7885.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">GitHub - alswl/lbkit: logbook kit</span><span class="banner-link__description">logbook kit. Contribute to alswl/lbkit development by creating an account on GitHub.</span><span class="banner-link__source">github.com</span></span>
</a></p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/delivery-workflow-overview.png" alt="我的端到端工作流与工具职责：1&#43;N Agent 管理任务，herdr 管注意力，logbook 管目标和路径"  />



</p>
<p>图 7：端到端工作流与工具职责；两层验证分别检查交付物和测试本身。</p>
<p>我对 logbook 的要求很具体：<strong>约束运行时，约束方案，强制流程，明确交付内容</strong>。我会写清预算、运行位置、权限、可用上下文、必要流程和交付内容。该给的信息要给足，该限制的权限也要写清楚。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/logbook-structure.png" alt="logbook 完整结构示例：图例、目标与非目标、技能、链接、工作目录及运行约定"  />



</p>
<p>图 8：logbook 结构示例：目标与非目标、技能、关联材料、工作目录和运行约定。</p>
<p>这里有一个边界：<strong>logbook 约束方案，但不承载具体方案和代码</strong>。设计与实现仍在各自的工作位置，logbook 负责把目标、路径和交付要求串起来。</p>
<p>流程有一定强制性，同时给执行留下自由。每一步需要什么结果要清楚，具体怎么把结果做出来，交给负责它的 Agent。</p>
<h3 id="用阶段和人工关口记录进展">用阶段和人工关口记录进展</h3>
<p>我把任务分成阶段，在阶段内记录待办、产物位置和验证依据。需要人介入的地方单独标记；人工完成合并或登录后，Agent 接着做后续验证。这样看进展时，我能分清任务还在执行，还是已经走到需要我处理的关口。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/delivery-stage-checkpoints.png" alt="logbook 完整阶段截图：方案设计、开发测试、评审修复、人工合并与登录、后续验收"  />



</p>
<p>图 9：从方案设计、开发测试、评审修复到人工关口与后续验收。勾选和数字表示该任务在截图时的状态。</p>
<p>我遇到的一个实际问题是：只要 Agent 不断停下来找人确认，任务就很难持续跑下去。我的调整主要有三处。</p>
<h3 id="把关键决策放到开始">把关键决策放到开始</h3>
<p>先把目标、边界和交付要求谈清楚，再进入执行。开放式问题还没想明白时，我会先和一个高能力 Agent 充分讨论，等方向明确，再交给多 Agent 推进。</p>
<p>多 Agent 更适合承接已经有方向的交付任务。设计本身还在发散时，急着拆给一群 Agent，沟通成本会先上来。</p>
<h3 id="用-preflight-预演全流程">用 Preflight 预演全流程</h3>
<p>logbook 的 Preflight 会在执行前预演路径，提前找出需要哪些资源、哪里可能遇到权限问题、哪些节点需要人确认。它把这些点暴露出来后，我再扫一遍。</p>
<p>这样，有些原本要跑到中间才发现的阻碍，可以在出发前处理。Preflight 当然不能消灭所有变化，但能减少一批可以预见的停顿。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/preflight-workflow.png" alt="Preflight：执行前预演需求到上线的完整路径，检查资源、权限与人工确认点"  />



</p>
<p>图 10：Preflight 在执行前检查完整路径，提前暴露资源、权限与人工确认点。</p>
<h3 id="让确认发生在能看见结果的时候">让确认发生在能看见结果的时候</h3>
<p>有些事情不必在半成品阶段反复问人。可以先推进已明确的部分，把材料准备到足以判断，再把需要我确认的内容一起交过来；遇到不阻塞其他工作的事项，也可以先记录，继续做能做的部分。</p>
<p>需要人工权限或最终决定的关口仍然要保留。目前，合并仍由我来做。我想减少的是中途零碎的打断，让自己能在更完整的结果上作决定。</p>
<h2 id="让-delivery-和-verify-站在不同立场">让 Delivery 和 Verify 站在不同立场</h2>
<p>我最关心的两种角色是 Delivery 和 Verify。Delivery 负责推动交付，Verify 负责验证。两边各自有要守住的事情，出现分歧是正常的。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/delivery-verification-collaboration.png" alt="完整多 Agent 协作图：需求与规范输入、开发测试评审闭环、人工关口、上线核验及待办"  />



</p>
<p>图 11：多 Agent 协作案例，涵盖输入、开发与验证往返、人工关口和后续验收。轮次、PR 数及完成状态仅对应这次任务。</p>
<p>在这个任务里，我先让 Agent 对齐需求和前端规范，再让开发、测试和评审形成往返。测试发现问题，交回开发修复，再复测；有分歧时，几个 Agent 建立沟通，把问题讨论清楚。</p>
<p>Agent 达成一致以后，我还会看截图和验证证据，再处理人工合并、登录等关口。随后验证重新交回 Agent。图里同时保留了已经完成和仍待人工验证的分支，因此「交付」不能只看开发任务有没有结束。</p>
<p>如果所有 Agent 都把「赶紧做完」当作唯一目标，很容易一起跳过问题。我希望验证者认真找缺陷，让交付者拿出解释和证据。它们先讨论，能收敛就继续；收敛不了，统筹者介入；统筹者仍然解决不了，再找我。</p>
<p>Agent 之间的沟通，我用 chatta 来支持。讨论也需要轮次边界。统筹者要负责推动收敛，不能让对话无限延长。最后我会看证据，例如运行结果和截图，而不只看它们有没有说「一致同意」。</p>
<p><a class="banner-link" href="https://github.com/alswl/chatta">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-42ecbf2dfe02b79a.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">GitHub - alswl/chatta: chatta is chat to agent, tiny CLI and SKILL</span><span class="banner-link__description">chatta is chat to agent, tiny CLI and SKILL. Contribute to alswl/chatta development by creating an account on GitHub.</span><span class="banner-link__source">github.com</span></span>
</a></p>
<h3 id="多-agent-有成本要挑任务">多 Agent 有成本，要挑任务</h3>
<p>上下文传递和沟通都要付出成本，多开几个 Agent 不会自动得到更好的结果。</p>
<p>我愿意承担多 Agent 的成本，主要有两个理由。一个是单个 Agent 的上下文有限，把不同工作分开，能减少所有细节挤在同一段上下文里的压力。另一个是立场：即使以后上下文窗口更大，交付、质量和稳定性之间的不同关注点，仍然值得保留。前者是当前能力的限制，后者是组织工作的选择。</p>
<p>我会按任务的规模作一个粗略区分：按传统开发方式估算，半小时、半天的活，通常一个 Agent 就够了；接近一周量级、执行过程中还会不断遇到变化的任务，才更值得引入这套调度和对抗机制。这是个人选任务的经验，不是固定门槛。</p>
<p>即使目标已经明确，执行中也可能出现新情况。让不同立场的 Agent 留在流程里，是为了处理这些变化，而不是只在开工前把任务拆一次。</p>
<h2 id="一些新的思考">一些新的思考</h2>
<h3 id="让带宽落实到完整工作流程">让带宽落实到完整工作流程</h3>
<p>我越来越在意自己的决策密度和带宽。我需要一套适合自己的标准工作流程，涵盖完整路径，让 Agent 运行长一点，让自己轻松一些。</p>
<p>决策密度一直是我的卡点。现在我尝试把端到端路径交给统筹者和 logbook 组织，减少逐个窗口追进展的时间。流程从接到需求一直管到交付，哪个环节缺资源、缺证据或需要人决定，就在哪个环节处理。</p>
<p>我给自己留了一条约定：每个复杂 session 结束都要反思 Retro，把执行中发现的问题回写到 Skill 和文档，让下一次运行用得上。</p>
<p>反思不必等整个任务结束。事情仍在推进时，就可以把这一步的思考和教训记下来，给下一步提供启示。复杂 session 的结束只是一个记录节点，不等于必须等项目收尾才回看。</p>
<h3 id="对抗可能比循环更重要">对抗可能比循环更重要</h3>
<p>我认为，对抗可能比循环更重要。现在更值得追问的是：循环里的哪个角色会质疑结果，哪条测试能发现错误，发现分歧以后由谁判断？</p>
<p>Delivery 和 Verify 的不同立场、让 Agent 自证判断、故意破坏目标代码来检查测试，都在回答这个问题。只有推进机制，系统可能很顺畅地把错误往下传。把质疑安排进流程，才有机会让问题在交付前暴露出来。</p>
<h3 id="保护一段完整的注意力">保护一段完整的注意力</h3>
<p>我希望 Agent 能连续运行更久，减少对人的打断。并行任务多了以后，一会儿切进这个窗口、一会儿回复那个问题，很容易让自己的思考断掉。</p>
<p>截至 10 月中旬，我对手头统筹者连续运行时长的个人观察是：常见的中间水平大约在 30—50 分钟，最长接近两小时。这不是统计测量，也不是能力承诺；即便如此，我仍然觉得累，还希望减少中途需要我接手的次数。</p>
<p>这也是我愿意花额外执行成本，让 Agent 先把材料和证据准备好的原因。模型消耗和人的注意力不能只按同一种成本来算。我需要留下完整的时间，去想架构、判断方案，以及处理真正需要我参与的问题。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/protect-focus-with-agents.png" alt="Agent 持续推进任务，非阻塞问题进入待回答区，人保留完整思考时间并处理关键关口"  />



</p>
<p>图 12：非阻塞问题先记录，让人保留完整的思考时间；必要的人工关口仍然保留。</p>
<h3 id="把思考过程留下来">把思考过程留下来</h3>
<p>我需要掌控自己的注意力、思考过程和决策。保护时间之外，我还希望保留问题是怎么想清楚的：考虑过哪些选择，哪里出现过分歧，最终为什么作这个判断。</p>
<p>我会用语音把正在形成的想法传递给 Agent，再把讨论中考虑过的内容沉淀到 thinking。最终产物和原始材料之外，还要有这一层记录，方便后续继续判断。</p>
<p>记录 thinking 的一个启发来自 DeepSeek-R1。它的论文讨论了通过强化学习发展推理能力，并展示了模型重新审视解题路径、进行自我检查的现象。我由此更在意把考虑过的选择和判断依据留下来。落实到工作里，我保存的是可以回看的方案、取舍与验证证据；这与论文中的模型训练机制有区别，也还需要在自己的任务里验证效果。</p>
<p><a class="banner-link" href="https://arxiv.org/abs/2501.12948v1">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-ab77af3fa25e0e90.png" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning</span><span class="banner-link__description">We introduce our first-generation reasoning models, DeepSeek-R1-Zero and DeepSeek-R1. DeepSeek-R1-Zero, a model trained via large-scale reinforcement learning (RL) without supervised fine-tuning (SFT) as a preliminary step, demonstrates remarkable reasoning capabilities. Through RL, DeepSeek-R1-Zero naturally emerges with numerous powerful and intriguing reasoning behaviors. However, it encounters challenges such as poor readability, and language mixing. To address these issues and further enhance reasoning performance, we introduce DeepSeek-R1, which incorporates multi-stage training and cold-start data before RL. DeepSeek-R1 achieves performance comparable to OpenAI-o1-1217 on reasoning tasks. To support the research community, we open-source DeepSeek-R1-Zero, DeepSeek-R1, and six dense models (1.5B, 7B, 8B, 14B, 32B, 70B) distilled from DeepSeek-R1 based on Qwen and Llama.</span><span class="banner-link__source">arxiv.org</span></span>
</a></p>
<p>《思考，快与慢》中，Daniel Kahneman 讨论了快速、直觉式思考与缓慢、审慎思考的区别。这给理解判断过程提供了一个参照。不过，我下面对语音和文字的感受是个人经验，不能直接把两种输入方式对应成书中的两类思考。</p>
<p><a class="banner-link" href="https://www.penguin.co.uk/books/563861/thinking-fast-and-slow-by-kahneman-daniel/9780141033570">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-db774a5a922c7c90.jpg" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">Thinking, Fast and Slow</span><span class="banner-link__description">Why is there more chance we&#39;ll believe something if it&#39;s in a bold type face? Why are judges more likely to deny parole before lunch? Why do we assume a good-looking person will be more competent? The answer lies in the two ways we make choices: fast, intuitive thinking, and slow, rational thinking. This book reveals how our minds are tripped up by error and prejudice (even when we think we are being logical), and gives you practical techniques for slower, smarter thinking, enabling you to make better decisions at work, at home, and in everything you do.</span><span class="banner-link__source">www.penguin.co.uk</span></span>
</a></p>
<p>对我来说，语音和文字是两种不同的思考方式：有些想法在说话时更容易顺着展开，打字时则会停下来整理。因此语音输入的价值不只是快，也在于先把正在形成的思路说出来，再整理成文字。</p>
<p>我不会轻易相信 Agent，也一直在想，怎样才能更有依据地信任它。我的做法是给 Agent 判断和决策的空间，同时要求它证明自己；Delivery 和 Verify 站在不同立场讨论，也服务于这个目的。</p>
<h3 id="架构判断还要自己碰">架构判断还要自己碰</h3>
<p>我仍然会自己画架构图、作架构决策，偶尔抽查代码。这几件事不能因为执行已经交出去，就跟着一起放下。</p>
<p>调度方式给了我更大的执行范围，也要求我更清楚地知道哪些地方需要亲自判断。画图和抽查，是我保留这种接触的具体办法。</p>
<h2 id="人和-ai-的关系执行交出去以后人站在哪里">人和 AI 的关系：执行交出去以后，人站在哪里</h2>
<p>让 Agent 多做一些以后，我还需要回答一个问题：执行交出去了，我自己要做什么？</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/human-agent-collaboration.png" alt="人和 AI 的协作：目标与约束交给 Agent，作品与验证证据交回人"  />



</p>
<p>图 13：人负责问题、判断与认可，Agent 执行、验证并交付，用证据建立信任。</p>
<h3 id="从提效回到判断和共识">从提效回到判断和共识</h3>
<p>执行密度、决策密度、共识达成，是我持续关注的三个问题。多 Agent 可以加快执行，但开工前要什么、交付时接受什么、分歧出现后怎么取舍，仍然要有人作判断。</p>
<p>这次我把这些判断落实到具体位置：开始时谈清目标和边界，执行中让统筹者处理调度和一般分歧，必要时再升级给我；最后带着证据交付。AI 的兴奋期过去以后，我更在意这套流程能不能在真实任务里跑通。</p>
<h3 id="让分歧出现也让人作出承诺">让分歧出现，也让人作出承诺</h3>
<p>我不喜欢开会，但现在越来越觉得，交流很重要，需要多开会，让分歧更快出现，让大家作出决策和承诺。问题需要被不同立场看见，不能因为执行快了，就把分歧一并跳过。</p>
<p>Agent 之间可以先讨论、验证和收敛。到了目标取舍、人工权限或仍无法收敛的地方，我要接住这个问题。让 Agent 运行更久，是为了把我的参与集中到这些关口。</p>
<h3 id="多一点人味">多一点人味</h3>
<p>我把创作拆成「创」和「作」：创是问题、判断、设计；作是生产、展开、润色。AI 可以参与生产，但交出去的内容，我得自己认可。<strong>我不能把一篇 AI 生成、连自己都不认可的文档扔给别人。</strong></p>
<p>亲自画图、抽查代码、看运行证据，也包括读完并认可自己交出去的文章，都是我继续参与作品的方式。Agent 可以做更多执行，我仍然要知道自己为什么接受这个结果。</p>
<p>「多一点人味，人味是稀缺的。」最终留下来的，应当有我自己的问题、判断和表达。</p>
<h3 id="隐藏的信息与知识的边界">隐藏的信息与知识的边界</h3>
<p>这里可以借用 <strong>tacit knowledge（隐性知识）</strong> 这个概念。Michael Polanyi 在《The Tacit Dimension》中用「我们知道的，比能说出来的更多」概括这一问题。它帮助我把关注点说得更具体：交给 Agent 的文字，未必已经包含我判断时依赖的全部经验。至于这些经验能否被表达、学习，乃至用于新的发现，还需要分别讨论。</p>
<p><a class="banner-link" href="https://press.uchicago.edu/ucp/books/book/chicago/T/bo6035368.html">
  <span class="banner-link__thumbnail" aria-hidden="true"><img class="banner-link__image" src="https://e25ba8-log4d-c.dijingchao.com/202610/banner-6d676977a487fead.jpg" alt="" loading="lazy"></span>
  <span class="banner-link__content">
    <span class="banner-link__title">The Tacit Dimension</span><span class="banner-link__description">A classic work in the philosophy of science that changed how we think about knowledge itself“I shall reconsider human knowledge by starting from the fact that we can know more than we can tell,” writes Michael Polanyi, whose work paved the way for the likes of Thomas Kuhn and Karl Popper. The Tacit Dimension argues that tacit knowledge—tradition, inherited practices, implied values, and prejudgments—is a crucial part of scientific knowledge. As relevant today as it was when it was first published, this volume challenges the assumption that skepticism, rather than established belief, lies at the heart of scientific discovery.&#34;The reissuing of this remarkable book give us a new opportunity to see how far-reaching—and foundational—Michael Polanyi’s ideas are, on some of the age-old questions in philosophy.&#34;—Amartya Sen, from the Foreword</span><span class="banner-link__source">press.uchicago.edu</span></span>
</a></p>
<p>我还有一个没想清楚的问题：有些影响判断的信息没有被说出来，也没有进入现成材料；另一些发现，可能超出沿已有知识直接推演的范围。比如，相对论能不能被 AI 发现？我还没有足够依据回答这个问题，但它让我继续思考：人的判断、隐性知识和新发现，在这样的协作中究竟起什么作用？</p>
<h2 id="写在最后">写在最后</h2>
<h3 id="现场的一次非代码交付">现场的一次非代码交付</h3>
<p>分享开始前，我还给 Agent 下了一个任务：基于这次分享的文档和内容，做一个介绍视频。到收尾时，我现场打开并播放了生成的结果，再看统筹者和下属 Agent 的协作情况。这个例子把「作品交付」从代码扩展到了内容制作；现场演示说明这次任务产出了可播放的结果，不代表已经完成全面的质量验收。</p>
<p>我更愿意把目前的状态称为「迈向 Stage 8」。调度多 Agent 的方式已经开始用起来，但距离完整实现 Stage 8，还有不少需要继续实践和验证的地方。</p>
<p>接下来，需要用更多真实任务呈现效果：交付质量是否稳定，流程能否可靠地走到上线，遇到变化时能否处理，以及究竟还需要多少人工介入。现在展示的案例只是阶段性的进展，还不足以说明整套方式已经成熟。</p>
<p>对接下来的实践，我给自己留下三个提醒：</p>
<ul>
<li><strong>方法：模拟传统软件开发成功路径。</strong> 把需求、设计、确认、开发、验证和上线串起来。</li>
<li><strong>思想：创建循环。</strong> 执行结果带着证据回来，分歧推动修正和复测。</li>
<li><strong>挑战：洞察工程流程的本质。</strong> 亲自理解每个环节为什么存在，才能判断哪些工作适合交给 Agent、哪些关口需要自己守住。</li>
</ul>
<p>我给自己的挑战是「一个月 2000 个 PR，并推上线」。这是尚未达成的目标，后半句和前半句同样重要。接下来要打磨的，是这套组织方式能不能持续把任务交付出去，以及人在其中究竟需要介入多少次。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[AI Native 时代的工作方式：从信息到交付]]></title>
    <link href="https://blog.alswl.com/2026/10/ai-native-work/"/>
    <id>https://blog.alswl.com/2026/10/ai-native-work/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2026-10-06T00:00:00+08:00</published>
    <updated>2026-10-06T00:00:00+08:00</updated>
    
    <content type="html"><![CDATA[<p>在 <a href="/2026/02/my-2025/">2025 年终总结</a> 里我写过一句：写代码（Code Typing）未来会成为低效的工程方式，AI Native 应该成为默认选项。</p>
<p>话说出去容易。真到自己每天这么干，问题就具体了：AI 写代码很快，那信息从哪来、方案谁来定、产出怎么验、人到底还管什么？这一年实际跑下来，我对它的理解变了几轮，关注点从「代码写得快」慢慢移到了信息、研发、落地和工具链这一整条链路上。</p>
<!-- more -->
<p>这篇文章讲的是我目前的工作方式(截止 8 月底）：信息怎么处理、代码怎么写、工具链怎么搭，以及在这套方式跑了大半年之后，我形成的几个判断。</p>
<p>我的背景是 Infra、Kubernetes、PaaS 方向，最近主要语言是 Go。下面的内容都来自我自己的实践，不是方法论综述。本文不是某个产品或团队流程的操作手册，也不打算论证 AI 可以替代负责决策的人。</p>
<h2 id="ai-native-x-工作">AI Native X 工作</h2>
<p>认知演进：</p>
<ul>
<li>2 月：<strong>Code Typing is unnecessary</strong>，快速写代码的兴奋感，每天写到 2 点钟</li>
<li>5 月：AI 放大执行；人负责判断，从 2-3 Agents 并行到 7-8 个 Agents 并行</li>
<li>8 月：信息、研发、落地、工具链</li>
</ul>
<h3 id="我们的工作形式和内容到底是什么">我们的工作，形式和内容到底是什么？</h3>
<blockquote>
<p>问题分析 → 方案设计 → 产品制作 → 上线运营 → 反馈增强</p>
</blockquote>
<p>核心载体：<strong>作品（Artifact）</strong>。</p>
<p>为什么翻译最容易被替代？因为作品更静态、结构化更强、表意向量空间更小。软件工程的复杂性，决定了这条链路相对漫长。</p>
<p>文档、代码、会议、报告，都只是工作中的不同形式。</p>
<p>工作本身：</p>
<ol>
<li>信息整理、结构化、提炼、发展；形成方案，让别人理解和接受。</li>
<li>方案变成产品；写代码、验证、上线、运行。</li>
<li>隐藏线路；优化工具链路，进行效率提升。</li>
</ol>
<p><strong>小结</strong>：文档、代码、会议、报告这些形式会变，工作本身还是这三条线。后面讲信息、AI Coding 和工具链，基本就是顺着这三条线展开的。</p>
<h2 id="ai-native-加入了什么">AI Native 加入了什么？</h2>
<p>一直在讨论 AI Native。那它到底是什么？</p>
<p>我的理解：把 AIGC 的推理能力放进工作的各个方面。</p>
<ul>
<li>决策</li>
<li>内容产出</li>
<li>作品产出</li>
<li>以及支撑这套工作方式的环境和平台</li>
</ul>
<p>不是单点工具。是工作方式。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-overview.png" alt="AI Native 下面工作是一个循环"  />



</p>
<p>现实信息和任务目标进入 AI 工作区，分析、生成、检查之后，交给人做优先级、边界、取舍和责任的判断，再产出可上线、可验收的作品；作品产生反馈和新目标，回到起点。</p>
<p><strong>小结</strong>：AI 进到了分析、生成、检查的每一环，循环转得更快；中间那道「人的判断」没有被拿掉，反而因为转得快，卡得更紧。这也是 5 月那条认知：<mark>AI 放大执行，人负责判断。</mark></p>
<h2 id="当下我怎么处理信息">当下我怎么处理信息</h2>
<h3 id="从信息到洞见">从信息到洞见</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-information-to-insight.png" alt="数据 → 信息 → 知识 → 洞见 → 智慧"  />



</p>
<p><small>图源：网络</small></p>
<p>数据本身没有价值，连起来才是知识，连对了才是洞见。信息处理的目标不是把材料存下来，而是让它能被继续加工。</p>
<h3 id="我的工作流">我的工作流</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-information-workflow.png" alt="个人知识仓库工作流"  />



</p>
<p>每天给自己提 10+ 个知识经营 PR。</p>
<p>本地创作、会议、各类文档、IM 消息，统一进入 Agent；Agent 开 worktree 改文件、提交、推分支、发 PR。我只做一件事：看 diff，决定合不合。</p>
<p>我本地有两个知识仓库，一新一旧，两种工作方式：</p>
<table>
	<thead>
			<tr>
					<th>仓库</th>
					<th>作用</th>
					<th>AI 参与度</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>minds</code></td>
					<td>AI 协作、文章与项目材料</td>
					<td>90%+</td>
			</tr>
			<tr>
					<td><code>my-kms</code></td>
					<td>个人传统知识库、每日记录</td>
					<td>5%</td>
			</tr>
	</tbody>
</table>
<h3 id="minds-信息库"><code>minds</code> 信息库</h3>
<p><code>minds</code> 管理 AI 协作产生的信息：材料很杂，也需要反复加工。最近的大部分文章，都是在这里完成。我用自己写的 mind-forge 管理这个仓库。</p>
<p><a href="https://github.com/alswl/mind-forge">GitHub - alswl/mind-forge: Forge minds into articles.</a></p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-minds-layout.png" alt="仓库 → 项目 → 文档 / 原始素材 / 图片资产"  />



</p>
<p>一个仓库装若干项目，一个项目里分四个区：</p>
<ul>
<li><code>sources/</code> 输入区，只读，原始素材进来之后不改</li>
<li><code>docs/</code> 文章区，长文按 <code>NN-title.md</code> 切成章节碎片，可以独立迭代</li>
<li><code>outputs/</code> 构建产物，由 <code>mf build</code> 生成，不手工编辑</li>
<li><code>prompts/</code> 和 <code>thinking/</code> 记录目标、约束与推理过程</li>
</ul>
<p>这套结构的意义在于：材料、在写的东西、发布物是分开的。Agent 可以改 <code>docs/</code>，但不会污染 <code>sources/</code>；我 review 的时候，看的是 <code>docs/</code> 的 diff。</p>
<p>仓库根上还有几件东西：一份 <code>CLAUDE.md</code> 写协作原则和红线，一份术语表统一专有名词和口述纠错，一批 skill 承担重复动作。约定写在仓库里，而不是每次对话里重讲一遍。</p>
<p>仓库根目录还用 <code>minds.yaml</code> 注册项目，用术语表和跨项目 thinking 管理共用信息；文章、素材与配置则各自在项目内维护。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-minds-overview-v2.png" alt="minds 仓库结构总览（重绘）"  />



</p>
<h3 id="my-kms-知识库"><code>my-kms</code> 知识库</h3>
<p><code>my-kms</code> 是持续了多年的个人知识库。产品换过几代（2010 年写过一篇 <a href="/2010/09/my-kms/">我所使用的知识管理系统</a>），后来落到 Obsidian（任务管理也一起搬了进去，见 <a href="/2023/02/gtd/">从 Toodledo 到 Obsidian Tasks</a>）；内容仍以人工写入为主，至少自己口述。只有少量会议摘要交给 AI 录入。</p>
<p>我的日常信息流：</p>
<blockquote>
<p>会议转写 → 摘要 → 当日记录 → 日报 → 方案、文章与分享</p>
</blockquote>
<p>每一场会议拿到转写和摘要；每天收口成日报。材料不留在聊天窗口里，而是进入可以回看、检索、继续加工的仓库。</p>
<p>两个仓库都托管在本机自建的 Forgejo 上。好处很实在：私有数据不出机器，但仍然有分支、PR、diff 和历史——也就是说，Agent 的每一次改动都是可 review、可回滚的。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-kms-overview-v2.png" alt="my-kms 仓库结构（重绘）"  />



</p>
<h3 id="如何保持人味">如何保持人味</h3>
<table>
	<thead>
			<tr>
					<th>环节</th>
					<th>我的做法</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>框架</td>
					<td>自己构思；结构自己把控</td>
			</tr>
			<tr>
					<td>长内容</td>
					<td>先语音；AI 整理、汇总、润色、结构化</td>
			</tr>
			<tr>
					<td>观点</td>
					<td>来自自己的输入；不是一段 AI 生成文本</td>
			</tr>
			<tr>
					<td>图</td>
					<td>尽量自己画；没有图再用截图</td>
			</tr>
	</tbody>
</table>
<p>效果和效率都会更好。更重要的是，内容里还留着自己的观点。</p>
<p>下面是和一位运营同学聊写文章的产出：</p>
<blockquote>
<p>一点看不出来AI痕迹</p>
<p>都是 AI生成。</p>
<p>是手搓嘛
我丢，
大哥，可以求赐教下不
AI怎么能写出这么活人感且专业的文章哇
全仰仗您</p>
<p>我写框架，AI生成。
另外，我还需要给很多批注反馈。就像大学导师里面给学生改论文。
我写框架，AI 生成，然后我给很多批注反馈——像导师给学生改论文。人味不是靠 AI 模仿出来的，是因为框架和观点本来就是自己的。</p>
</blockquote>
<h3 id="小结">小结</h3>
<p>信息这一段，我的做法可以归成三条：</p>
<ol>
<li>材料进仓库，不留在聊天窗口里；</li>
<li>Agent 负责搬运和加工，改动走 PR，我看 diff 决定合不合；</li>
<li>框架和观点自己出，AI 负责展开和润色。</li>
</ol>
<p>两个仓库的 AI 参与度一个 90%+、一个 5%，差别很大，但材料都落在可以回看、可以 review 的仓库里。</p>
<h2 id="当下我怎么-ai-coding">当下我怎么 AI Coding</h2>
<p>和之前相比，有三个明显变化。</p>
<h3 id="1-spec-driven从个人选择到团队要求">1. Spec-driven：从个人选择到团队要求</h3>
<p>规格、边界、验收标准：研发的起点。</p>
<p>现在是强制要求：用 speckit、superpower，或者任何一个 well-known 的 spec 框架。从个人选择变成团队要求，这是今年最明显的一条变化。</p>
<h3 id="2-细节代码越来越少看但不能不管">2. 细节代码：越来越少看，但不能不管</h3>
<p>在结构比较稳定的系统里，大家对细节代码的关注确实越来越少。过去积累的 Code Review 经验和知识，反而要持续沉淀成约束。</p>
<p>这些约束我统一放在一份 guides 里，把「看什么、不看什么、什么情况下必须看」固化下来：</p>
<p><a href="https://github.com/alswl/guides">GitHub - alswl/guides</a></p>
<p>公开版目前是 <code>v0.0.1-alpha1</code>，收了这几份：</p>
<table>
	<thead>
			<tr>
					<th>指南</th>
					<th>技术栈</th>
					<th>定下了什么</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>go-cli-guides.md</code></td>
					<td>cobra · viper · <code>log/slog</code></td>
					<td>命令树结构、flag 与配置优先级、输出/退出码/错误处理约定</td>
			</tr>
			<tr>
					<td><code>go-server-guides.md</code></td>
					<td>huma v2 · chi · GORM</td>
					<td>分层 <code>pkg/</code> 结构、声明式 API 与自动生成 OpenAPI、GORM 只做表映射与基础 CRUD</td>
			</tr>
			<tr>
					<td><code>python-server-guides.md</code></td>
					<td>FastAPI · SQLAlchemy Core · Alembic</td>
					<td>分层 <code>src/</code> 结构、Pydantic schema、只用 Core 显式查询</td>
			</tr>
			<tr>
					<td><code>go-tui-guides.md</code></td>
					<td>Bubble Tea · Lip Gloss · Bubbles</td>
					<td>Elm 架构落到真实应用，业务分层复用 CLI 指南</td>
			</tr>
			<tr>
					<td><code>fe-page-guide-antd.md</code></td>
					<td>Ant Design v5 · ProComponents</td>
					<td>高密度信息页面怎么组织</td>
			</tr>
	</tbody>
</table>
<p>每份指南只选一套技术栈、固定一种项目结构，规则写成祈使句。它们同时写给人和 AI Coding 工具看，所以每条规则都要短、可核对，不写「视情况而定」。用法也简单：在项目的 <code>CLAUDE.md</code> / <code>AGENTS.md</code> 里引用对应文件，让 Agent 写代码时照着做。前端那份的来龙去脉，我单独写过一篇 <a href="/2026/09/high-density-page-organization/">高密度页面怎么组织</a>。</p>
<h3 id="3-自测-agent-验证">3. 自测 Agent 验证</h3>
<p>AI Coding 让需求交付密度爆发。测试资源很难按同样的速度扩张。</p>
<p>我为此提出的方案是一个自测 Agent，核心链路是：</p>
<blockquote>
<p>规格 → 分层验证 → 判决 → 回写验收</p>
</blockquote>
<p>规格既是开发的起点，也是断言的来源。验证按成本从低到高分层，fail-fast：</p>
<table>
	<thead>
			<tr>
					<th>层</th>
					<th>回答什么</th>
					<th>引擎</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>smoke</td>
					<td>服务能起来吗？健康闸口通吗？</td>
					<td>组合</td>
			</tr>
			<tr>
					<td>API</td>
					<td>REST API 合约对吗？</td>
					<td>Hurl</td>
			</tr>
			<tr>
					<td>CLI</td>
					<td>命令行的行为对吗？</td>
					<td>bash + Go (testify)</td>
			</tr>
			<tr>
					<td>E2E</td>
					<td>前端关键交互还在吗？</td>
					<td>Playwright</td>
			</tr>
	</tbody>
</table>
<p>最后一步是判决和回写：跑完不是给一堆日志，而是给一个带运行证据的结论，回写到工作项的验收里。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-ai-tests-e2e-v2.png" alt="自测 Agent 端到端链路（重绘）"  />



</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202610/ai-native-verify-engine-v2.png" alt="验证引擎内部三步（重绘）"  />



</p>
<h3 id="小结-1">小结</h3>
<p>三个变化放在一起看，是一条线：规格定起点，约束替人看细节，分层验证给结论。代码越来越少需要人逐行盯；写什么、按什么写、怎么算做完，反而要写得更清楚。</p>
<h2 id="我的个人工具链">我的个人工具链</h2>
<p>工程师本质上就是通过工具的提升，来加强自己的管理、工作效率和产出速度。所以在这个时代，工具确实比过去更重要。</p>
<p>我自己投入了不少时间来打造自己的工具链。我觉得目前还不错的有这么几个：</p>
<ul>
<li>mind-forge</li>
<li>skills 集合</li>
<li>skm 管理器，可以跨电脑管理 SKILL，快速部署到远程机器</li>
<li>mind-forge 知识库管理器</li>
<li>一个好用的评审编辑器（我选择了 Vim）</li>
</ul>
<p><a href="https://github.com/alswl/skm">GitHub - alswl/skm: a tiny local-first AI Skill Manager</a></p>
<p>我最常用的 skills，一部分来自社区：</p>
<ul>
<li><code>speckit</code> —— 基于 spec 的套件</li>
<li><code>grilling</code> —— 追问我</li>
<li><code>humanizer</code> —— 说人话</li>
</ul>
<p>一部分是自己写的：</p>
<ul>
<li><code>spec-report-html</code> —— 把本次 spec 汇报成一页纸方案</li>
<li><code>spec-status</code> / <code>spec-update</code> —— 更新 spec 状态</li>
<li><code>session-retro</code> —— 反思当前 session，改进本地 SKILL</li>
<li><code>chat</code> —— 基于 IRC 的 Agent 协作</li>
<li><code>distill-memory</code> —— 蒸馏本机 jsonl 记忆</li>
<li><code>repo-analyzer</code> —— 仓库快速分析，类似 deepwiki</li>
<li><code>mf-cli</code> —— mind-forge 配套 SKILL</li>
</ul>
<p>前面说工作本身有三条线，第三条是「隐藏线路」：优化工具链路，进行效率提升。这份清单就是我在这条线上的投入。</p>
<h2 id="一些观点">一些观点</h2>
<h3 id="提效很快会到瓶颈">提效很快会到瓶颈</h3>
<ul>
<li>执行密度上升</li>
<li>决策密度：新的卡点</li>
<li>信息、判断、共识：不可跳过</li>
</ul>
<h3 id="ai-wow-time-正在过去">AI WoW Time 正在过去</h3>
<ul>
<li>新概念：短期兴奋</li>
<li>持续价值：如何落地</li>
<li>真实业务、真实系统、真实用户，要真刀真枪</li>
</ul>
<h3 id="开会变得更重要">开会变得更重要</h3>
<ul>
<li>AI 加速产出</li>
<li>分歧更快出现</li>
<li>共识形成：更高价值</li>
<li>决策、承诺、责任：需要人</li>
</ul>
<h3 id="创作--创--作">创作 = 创 + 作</h3>
<ul>
<li>AI 善于「作」：生产、展开、润色</li>
<li>人负责「创」：问题、判断、表达</li>
<li>大家会对纯 AI 生产的内容乏味</li>
<li>保留观点、经验、个人棱角</li>
</ul>
<h2 id="写在最后">写在最后</h2>
<p>从 2 月的「Code Typing is unnecessary」，到 5 月的「AI 放大执行；人负责判断」，再到 8 月把信息、研发、落地、工具链连成一条线，这大半年变来变去的，其实是我对「人站在哪里」的理解。</p>
<p>AI 善于「作」：生产、展开、润色。「创」还是得自己来：问题自己提，判断自己下，观点、经验和个人棱角自己留着。</p>
<p>Update 2026-10-05：因为各种档期问题，我内部的分享延迟了一个月才开展，因此这篇文章发晚了 1 个月。
Agentic 发展太快了，我最新的实践已经和这篇文章相比，已经更进了一步，摸到了 Stage 8 门槛。
当然我依然推荐工程师们一步步走过来，在当下日新月异的时代，亲自体验和上手是完全不一样的感觉。</p>
<p>等我下篇文章吧。</p>
<h2 id="扩展阅读">扩展阅读</h2>
<ul>
<li><a href="https://github.com/alswl/mind-forge">alswl/mind-forge</a>：<code>minds</code> 仓库用的知识锻造 CLI</li>
<li><a href="https://github.com/alswl/skm">alswl/skm</a>：跨电脑管理 SKILL 的小工具</li>
<li><a href="https://github.com/alswl/guides">alswl/guides</a>：写给人和 Agent 一起看的开发指南</li>
<li><a href="https://github.com/github/spec-kit">github/spec-kit</a>、<a href="https://github.com/obra/superpowers">obra/superpowers</a>：文中提到的两个 spec 框架</li>
<li><a href="/2026/02/my-2025/">2025 年终总结 - 临界点</a></li>
<li><a href="/2026/09/high-density-page-organization/">高密度页面怎么组织：一份信息呈现指南</a></li>
<li><a href="/2023/02/gtd/">从 Toodledo 到 Obsidian Tasks - 我的 GTD 最佳实践</a></li>
<li><a href="/2010/09/my-kms/">我所使用的知识管理系统</a></li>
</ul>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[高密度页面怎么组织：一份信息呈现指南]]></title>
    <link href="https://blog.alswl.com/2026/09/high-density-page-organization/"/>
    <id>https://blog.alswl.com/2026/09/high-density-page-organization/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2026-09-12T00:00:00+08:00</published>
    <updated>2026-09-12T00:00:00+08:00</updated>
    
    <content type="html"><![CDATA[<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-hero.png" alt="高密度信息被梳理为清晰页面结构的示意"  />



</p>
<p>最近我开始自己做一个基础设施项目的前端。AI 很快就能把页面搭出来，增删改查、筛选、状态标签一项不少，第一眼甚至挺像那么回事。</p>
<p>真正用起来，别扭的地方就出来了：页面里的信息很多，却不知道先看什么；关联资源、上下文和状态散在各处；下一步该做什么，也得靠人自己在一堆字段里拼出来。</p>
<p>组件其实没有选错。问题在于，我一开始只把它当成 CRUD 页面来做：先列字段，再补筛选和操作，最后才发现用户还是不知道该从哪里开始。数据是齐的，页面却没有帮用户排出理解和行动的顺序。</p>
<p>后来我把自己会做的判断整理成了一份页面组织指南。表格、看板、日历这些组织信息的基本方式，我在指南里统称为“表达骨架”。</p>
<h2 id="当大家都来写产品页面">当大家都来写产品页面</h2>
<p>我的工作一直以后端为主。虽然我也对前端和其他技术感兴趣，平时会做一些尝试，但真正投入工作的，还是后端。最近团队的前端资源缩减，我开始亲自承担前端项目。</p>
<p>这次我没有打算从零设计一套组件规范，而是选择 Ant Design 加 Ant Design Pro 作为基础。原因很实际：企业后台里常见的表格、表单、布局、导航和描述信息，都有比较成熟的现成方案，页面外壳和组件行为也容易保持一致。基础问题交给组件库处理，我可以把时间花在信息怎么组织、用户先看什么上面。</p>
<p>这套规范并不会替页面做决定。它只是先把实现的起点固定下来，避免每个页面都重新讨论颜色、间距和组件样式。真正需要判断的，还是页面要围绕什么对象展开，以及用户准备拿这些信息做什么。</p>
<p>这件事让我重新碰到一个老问题：代码写出来，页面不一定就设计好了。用 AI 写前端时，这个差别尤其明显。它能补组件、样式和交互，却不知道用户来到页面后最该先理解什么、判断什么，下一步又要做什么。</p>
<p>我想把自己在这方面的一些方案和判断拎出来，让团队同学也能用。页面“看着不对”往往只是一个感觉，只有具体说出主信息没立住、关联信息散了、操作放错了位置，才有办法一起讨论，也才好交给 AI 修改。</p>
<p>这份页面组织指南就是其中一部分。它既是我自己写前端时的检查表，也希望成为团队把 AI 用到前端项目里时，共用的一套判断依据。</p>
<h2 id="如何组织信息架构">如何组织信息架构</h2>
<p>我看一个高密度页面，通常不会先去找组件。先把下面三个问题想清楚，后面的选择会容易很多。</p>
<ol>
<li>用户打开页面时，最重要的是看到什么？</li>
<li>为了理解这件主信息，还要看到哪些关联资源、关联模型和上下文？</li>
<li>用户看完后要作出什么反应、执行什么动作，或者继续思考什么？</li>
</ol>

<pre class="mermaid">mindmap
  root((页面信息架构))
    主信息[主信息]
      用户首先看到什么(用户首先看到什么)
    关联信息[关联信息]
      资源(资源)
      模型(模型)
      上下文(上下文)
    用户动作[用户动作]
      判断(判断)
      操作(操作)
      下一步(下一步)</pre>
<p>我先把这三个问题过一遍，至少能知道用户进来要做什么。等这件事清楚了，再回头看表格、看板还是日历，通常不会选得太偏。</p>
<p>目前的 demo 用 Ant Design 实现。判断本身和组件库无关，换到其他技术栈时，具体组件还得结合项目调整。</p>
<h2 id="从列表和详情走向复杂信息组织方式">从列表和详情走向复杂信息组织方式</h2>
<p>CRUD 很适合处理数据操作，列表和详情页也一直有用。只是它们主要回答“这条记录怎么增删改查”，不太回答用户进入页面后先看什么、需要什么反馈，以及要依据哪些信息做决定。</p>
<p>API 只负责把数据和操作交出来，页面还得把它们之间的关系摆清楚：用户先看什么，接着比较什么，最后在哪里操作。</p>
<h2 id="范例github-projects-信息布局">范例：GitHub Projects 信息布局</h2>
<p><a href="https://docs.github.com/en/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view">GitHub Projects 的布局说明</a>很适合拿来做对照。同一个项目条目，可以放进表格、看板，也可以放到时间线式的路线图里。数据没变，用户读它的方式变了。</p>
<p>如果拿一批待开发任务来对照这些布局，三种视图分别会把注意力带到不同的地方：</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-github-table.png" alt="GitHub Projects 的表格布局"  />



</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-github-board.png" alt="GitHub Projects 的看板布局"  />



</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-github-roadmap.png" alt="GitHub Projects 的路线图布局"  />



</p>
<table>
	<thead>
			<tr>
					<th>眼前要回答的问题</th>
					<th>需要放在一起的信息</th>
					<th>可选择的表达骨架</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>哪些任务优先处理，分别由谁负责？</td>
					<td>优先级、负责人等字段</td>
					<td>表格，按列对照和排序</td>
			</tr>
			<tr>
					<td>哪些任务还在进行，哪些已经完成？</td>
					<td>任务所处阶段</td>
					<td>看板，按状态分组</td>
			</tr>
			<tr>
					<td>几项工作安排在什么时间，是否重叠？</td>
					<td>开始、结束日期和持续时间</td>
					<td>路线图，在时间轴上观察</td>
			</tr>
	</tbody>
</table>
<p>排下一轮工作时，我会把优先级和负责人放在固定的列里，排好序后逐行看分工。换成卡片，同一个字段的位置就没那么稳定，比较起来反而要来回找。表格在这里的价值很简单：让比较发生在固定的位置。</p>
<p>跟进进度时，我关心的是“还有哪些在处理中”。把任务按状态排成几列，先找到阶段，再看里面的条目，会更符合这个动作。如果还能直接拖动卡片推进状态，页面位置和操作也能接上。</p>
<p>安排交付时间时，只知道“进行中”就不够了。把开始和结束日期放到时间轴上，几项工作的区间是否重叠会立刻显出来。至于是不是真的排不开，还要回头看负责人和工作量。</p>
<p>后台页面不需要把三种视图都做一遍。页面主要服务一种任务，就先把这一种做好；只有确实有多种高频用法时，才值得增加视图。每多一种视图，筛选、状态和操作就多一份维护成本。</p>
<p><a href="https://www.notion.com/help/views-filters-and-sorts">Notion 的数据库视图</a>也是类似的例子。准备发布一批内容时，挑封面可以切到图库，检查发布日期可以切到日历。日历能让我看到日期分布，但它不会自动告诉我资源有没有冲突；要回答这个问题，还得有时间范围和资源占用这些信息。</p>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-notion-views.png" alt="Notion 数据库视图"  />



</p>
<p>我平时也会看一些产品怎么处理类似问题。GitHub 让我印象最深的是，它总是围绕一个核心对象展开，不急着把所有信息都塞进来。Twitter 更像是把同一个对象放到不同场景里处理。淘宝面对的数据量很大，但商品和交易动作一直很突出。豆瓣的数据类型很多，页面却各有自己的组织方式。它们的样式当然不能直接搬过来，但看这些页面时，我会留意用户眼前到底要做什么。</p>
<p>所以我现在会先把页面要解决的事说清楚：用户来到这里，究竟要看懂什么、比较什么，还是推进什么。这样比一上来想着“做一个现代化后台”更容易找到方向。</p>
<h2 id="如何选择合适的信息结构">如何选择合适的信息结构</h2>
<p>guide 的 2.2 里，这个选择过程被画成了一条完整路径：先看系统里有哪些对象和关系，再看用户要完成什么，接着判断信息本身是什么结构，最后才落到具体的表达方式。</p>

<pre class="mermaid">flowchart TD
    A[Confirm the user, trigger scenario, and success outcome] --&gt; B{Does it need a standalone page?}
    B --&gt;|No independent address, permission, or ongoing task| B1[Fold into an existing page or task flow]
    B --&gt;|Needs sharing, recovery, wide space, or independent permissions| C[Determine the single primary task]
    B1 --&gt; C
    C --&gt; D{Primary task intent}
    D --&gt;|Find, locate| D1[Collection / hierarchy / space]
    D --&gt;|Understand, judge| D2[Single object / relationship / document]
    D --&gt;|Compare, analyze| D3[Collection / diff / metrics]
    D --&gt;|Advance, process| D4[Queue / process state / config rules]
    D --&gt;|Trace, collaborate| D5[Event sequence / discussion &amp; collaboration]
    D1 --&gt; E[Choose one primary information model]
    D2 --&gt; E
    D3 --&gt; E
    D4 --&gt; E
    D5 --&gt; E
    E --&gt; F{Expression that directly answers the primary question}
    F --&gt;|Field-by-field comparison| F1[Table]
    F --&gt;|Identify and enter a resource| F2[List / resource catalog]
    F --&gt;|Image is the recognition anchor| F2B[Card grid]
    F --&gt;|Parent-child or path| F3[Tree / tree table]
    F --&gt;|Dependency or impact| F4[Adjacency list / relationship graph]
    F --&gt;|Object identity and current state| F5[Object summary / sectioned detail]
    F --&gt;|Stage and next step| F6[Steps / status workspace]
    F --&gt;|Stage flow, moving is the action| F6B[Kanban / swimlanes]
    F --&gt;|What already happened| F7[Timeline / activity feed / log]
    F --&gt;|Who said what and how it was answered| F7A[Discussion thread / review thread]
    F --&gt;|What changed, before vs after| F7B[Diff view]
    F --&gt;|Trend, distribution, or anomaly| F8[Metrics / chart / analytics drill-down]
    F --&gt;|Location, boundary, or spatial distribution| F8A[Map / spatial canvas]
    F --&gt;|When is it occupied, when does it conflict| F8B[Calendar / scheduling]
    F --&gt;|Policy and constraints| F9[Grouped form / rule table / matrix]
    F --&gt;|Continuous reading and section navigation| F10[Document body / table of contents]
    F --&gt;|What to work on next| F11[Queue / inbox]
    F1 --&gt; G{How to maintain task context?}
    F2 --&gt; G
    F2B --&gt; G
    F3 --&gt; G
    F4 --&gt; G
    F5 --&gt; G
    F6 --&gt; G
    F6B --&gt; G
    F7 --&gt; G
    F7A --&gt; G
    F7B --&gt; G
    F8 --&gt; G
    F8A --&gt; G
    F8B --&gt; G
    F9 --&gt; G
    F10 --&gt; G
    F11 --&gt; G
    G --&gt;|Repeatedly switching objects or evidence| G1[Master-detail split / workbench]
    G --&gt;|Supporting content is light and transient| G2[Expandable section / Drawer]
    G --&gt;|Content is shareable or needs wide space| G3[Standalone page]
    G --&gt;|Short confirmation or minimal input| G4[Modal / Popconfirm]
    G1 --&gt; H[Add the necessary supporting models to form the page type and skeleton]
    G2 --&gt; H
    G3 --&gt; H
    G4 --&gt; H</pre>
<p>不能因为 API 返回了一个数组，就顺手做成表格；也不能因为路由里有一个 ID，就默认做成详情页。同一个对象，用户在查找时可能需要列表，处理时可能需要状态流转，协作时又可能需要讨论线程。</p>
<p>guide 里的完整分支图还会继续追问主任务和主问题。例如逐字段比较适合表格，图片是识别锚点时可以用卡片网格，阶段流转适合看板，关注时间占用和冲突才使用日历。记录有日期，只能说明数据里有日期，不能直接决定页面应该用哪种结构。</p>
<p>选完以后，我会再走一遍真实操作：用户最常比较的信息有没有放在一起，最常做的操作是不是就在旁边。如果还得反复打开详情，记住上一条记录再回来比较，结构和字段安排大概还得重看。</p>
<h2 id="反列表和详情示例卡片看板日历排期仪表盘等">反列表和详情示例：卡片、看板、日历排期、仪表盘等</h2>
<p>demo 把这些判断做成了几组可以直接打开的页面。看页面时，我主要会问：如果用户要认图、推进状态、安排时间，或者找出异常，哪些信息应该先出现？</p>
<p>demo 的代码在 <a href="https://github.com/alswl/guides"><code>alswl/guides</code></a> 仓库的 <a href="https://github.com/alswl/guides/tree/master/fe-page-guide-antd-demo"><code>fe-page-guide-antd-demo</code></a> 目录里。它是一个可以直接运行的配套项目：用 Vite + React 18 + TypeScript 搭起来，页面基础能力由 Refine 承接，界面使用 Ant Design v5 和 Ant Design Pro 的 ProComponents。数据是内存里的 mock，19 种表达骨架各自对应一个路由，打开就能看到具体页面长什么样。</p>
<p>这些页面用的是同一套技术栈，所以对照时更容易看出差别来自信息怎么排，而不是组件库换了。</p>
<h3 id="卡片网格以识别对象为主">卡片网格：以识别对象为主</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-gallery.png" alt="卡片网格"  />



</p>
<p>挑素材或模板时，用户通常先看缩略图，确认它是不是自己要找的东西。这个时候图片应该是主要入口。要是还要比较价格、规格等字段，表格可能更省事。</p>
<p>拿模板来说，我一般先认版式，再看名称。把预览缩成表格最左边的一张小图，识别时最重要的内容反而被压掉了。卡片能把预览放在显眼的位置，名称和其他字段围着它排。如果每次选择都要核对一堆参数，那就不能只靠大图。</p>
<h3 id="看板让阶段一眼可见">看板：让阶段一眼可见</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-board.png" alt="看板"  />



</p>
<p>看板最重要的是列的含义，以及卡片在列之间怎么移动。用户先看阶段分布，再决定下一步怎么推进。若只是按负责人筛选任务，列表已经够用，没必要硬做成看板。</p>
<p>“待处理、进行中、已完成”这种列名，位置本身就在表达进度。卡片里保留标题、负责人等识别信息就可以。列如果只是换了个名字的筛选条件，用户看起来会很累，操作也未必更快。</p>
<h3 id="日历与排期把时间占用摊开">日历与排期：把时间占用摊开</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-calendar.png" alt="日历与排期"  />



</p>
<p>日历适合处理真正和时间占用有关的事情，比如排班、会议室预订。要是只是想知道审批先提交还是先通过，时间线就更直接。</p>
<p>预订会议室时，用户要马上知道某个时间段有没有被占用，开始和结束时间不能藏在详情页里。审批记录则不一样，重点是事件先后，按时间线排开即可。</p>
<h3 id="仪表盘按问题组织指标">仪表盘：按问题组织指标</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-dashboard.png" alt="仪表盘"  />



</p>
<p>仪表盘最容易做成一堆大小相同的卡片。真正该先看的，是指标之间的关系，以及用户从概览进入细节的顺序。</p>
<p>如果所有指标都用一样的卡片摆开，用户还是得自己猜哪些应该一起看。我会先按问题分组：哪些数字用来发现异常，哪些趋势用来解释变化，明细入口放在什么位置。信息多，不代表每一块都要抢注意力。</p>
<h3 id="层级树保留对象的归属关系">层级树：保留对象的归属关系</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-tree.png" alt="层级树"  />



</p>
<p>树适合那些“我得知道它属于哪里”的信息。组织架构、分类目录需要保留父子关系；如果用户经常跨层级查找，再配一个列表或搜索框。</p>
<p>用户沿目录往下找时，树能保留“我现在在哪一层”的感觉。已经知道名称、只想快速定位时，搜索更快。这两种入口可以同时存在，不用让用户为了找一个已知条目，把整棵树一层层展开。</p>
<h3 id="状态墙先发现异常再进入细节">状态墙：先发现异常，再进入细节</h3>
<p>


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-status-wall.png" alt="状态墙"  />



</p>
<p>状态墙先解决一个很现实的问题：异常到底在哪里。监控页面可以密，但不能让颜色、装饰和状态标识互相打架。</p>
<p>用户先找到需要关注的对象，再进去查原因。对象名称和状态要容易辨认，详细日志放到下一步就好。颜色确实方便扫视，但最好再配文字或其他标识，否则用户很难准确说出自己看到的是什么。</p>
<h2 id="参考表十九种信息呈现方式">参考表：十九种信息呈现方式</h2>
<p>下面把其余页面也放在一起，想看细节时可以点击图片打开原图。</p>
<table>
	<thead>
			<tr>
					<th>表达骨架</th>
					<th>表达骨架</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-detail.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-detail.png" alt="分区详情"  />



</a> 分区详情</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-table.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-table.png" alt="二维对照表"  />



</a> 二维对照表</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-discovery.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-discovery.png" alt="目录与发现"  />



</a> 目录与发现</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-gallery.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-gallery.png" alt="卡片网格"  />



</a> 卡片网格</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-tree.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-tree.png" alt="层级树"  />



</a> 层级树</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-relations.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-relations.png" alt="关系列表"  />



</a> 关系列表</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-wizard.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-wizard.png" alt="分步向导"  />



</a> 分步向导</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-drilldown.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-drilldown.png" alt="追踪下钻"  />



</a> 追踪下钻</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-board.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-board.png" alt="看板"  />



</a> 看板</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-status-wall.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-status-wall.png" alt="状态墙"  />



</a> 状态墙</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-timeline.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-timeline.png" alt="事件时间线"  />



</a> 事件时间线</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-discussion.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-discussion.png" alt="讨论线程"  />



</a> 讨论线程</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-doc.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-doc.png" alt="连续文档"  />



</a> 连续文档</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-compare.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-compare.png" alt="并排比较"  />



</a> 并排比较</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-spatial.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-spatial.png" alt="地图与画布"  />



</a> 地图与画布</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-calendar.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-calendar.png" alt="日历排期"  />



</a> 日历排期</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-dashboard.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-dashboard.png" alt="仪表盘"  />



</a> 仪表盘</td>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-workbench.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-workbench.png" alt="主从工作台"  />



</a> 主从工作台</td>
			</tr>
			<tr>
					<td><a href="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-config.png">


<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202609/fe-page-guide-antd-config.png" alt="配置表单"  />



</a> 配置表单</td>
					<td></td>
			</tr>
	</tbody>
</table>
<h2 id="直接让-agent-来使用这套指南">直接让 Agent 来使用这套指南</h2>
<p>这份指南可以直接放进项目仓库，作为 AI 检查前端页面时的参考。人先从业务出发，想清楚用户来这里要完成什么，再决定信息结构和表达骨架；AI 根据这些判断补方案、找不一致的地方，再把修改做出来。</p>
<p>可以把下面这段直接交给 Agent：</p>
<blockquote>
<p>页面组织指南地址：</p>
<p><a href="https://github.com/alswl/guides/blob/master/fe-page-guide-antd.md">https://github.com/alswl/guides/blob/master/fe-page-guide-antd.md</a></p>
<p>先阅读页面组织指南，并检查当前项目的目录结构。根据项目已有的文档约定，把指南复制到合适的位置；如果没有更合适的目录，放在 docs/fe-page-guide-antd.md。复制完成后告诉我实际保存路径，不要只把远程 URL 当作参考。</p>
<p>检查当前项目的任务管理页面。这个页面主要用来比较任务优先级和负责人，同时需要查看任务所处阶段。</p>
<p>结合需求、页面源码和实际页面，给出信息架构和页面表达方式的检查结果与改造建议：列出主信息、关联信息、用户要完成的动作，说明当前表达骨架是否适合、具体问题在哪里、对应的指南依据是什么，以及建议采用什么页面结构。无法从现有资料确定的业务意图请指出来。</p>
<p>先把检查结果和改造方案发给我，等我确认后再完成页面改造。保留现有业务功能、权限和数据交互，沿用项目的组件库。修改后运行项目已有检查，并在页面中验证字段比较、状态切换等操作，给出修改前后的截图和仍需人工判断的问题。</p>
</blockquote>
<p>页面和任务描述要换成自己的业务。AI 可以列出几种候选方案，但主骨架和信息顺序不能只看它的输出，业务出发点还得由人来定。</p>
<p>检查报告要落到具体位置。只说“信息层次不清晰”没有多少用处，最好说明哪些信息应该放在一起、现在分散在哪里、准备怎么改。这样才能看出 AI 是不是解决了真正的问题。</p>
<p>把指南放进仓库，只是给了 AI 一份依据。还要告诉它页面入口和主要任务。如果 AI 只能看到源码，就先做源码检查；等页面跑起来，再补截图和实际交互验证。</p>
<p>验收时，我还是会沿着真实任务走一遍：信息是不是更容易找到，下一步操作有没有变清楚，原来的筛选、权限和数据交互是否还正常。</p>
<p><a href="https://github.com/alswl/guides">指南与 demo 仓库</a>里放了完整规则和示例。至于页面是否真的好用，还是得回到具体业务里试一遍。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[2025 年终总结 - 临界点]]></title>
    <link href="https://blog.alswl.com/2026/02/my-2025/"/>
    <id>https://blog.alswl.com/2026/02/my-2025/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2026-02-08T23:16:56+08:00</published>
    <updated>2026-02-08T23:16:56+08:00</updated>
    
    <content type="html"><![CDATA[<blockquote>
<p>好是卓越的敌人。</p>
<p>吉姆·柯林斯，《从优秀到卓越》</p>
</blockquote>
<p>年终总结拖到二月才动笔。想写的东西很多，落笔时又觉得这一年很难用几句话收束，像是被推着走到某个坎上，迈了一步。</p>
<hr />
<h2 id="生活">生活</h2>
<p>2025 年，我继续用照片来记录生活。
不同的光影，落在过去一年的不同时刻。
有些旅行源于一时心动，说走就走；有些则是酝酿已久的奔赴。</p>
<p>经历不同的旅途，遇见各异的风景，触摸历史的温度，也投身自然的怀抱。
转一圈回来，还是要回到自己的生活里，平淡亦浓烈。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/fuji-yamanakako.jpeg" alt="fuji-yamanakako"  />


</p>
<p><small>富士山山中湖，摄于日本山梨县。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/national-mosque-of-malaysia.jpeg" alt="national-mosque-of-malaysia"  />


</p>
<p><small>国家清真寺，摄于马来西亚吉隆坡。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/langkawi.jpeg" alt="langkawi"  />


</p>
<p><small>霞光落日，摄于马来西亚兰卡威。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/dali.jpeg" alt="dali"  />


</p>
<p><small>婚礼的蓝调时光，摄于大理云想山。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/dalian.jpeg" alt="dalian"  />


</p>
<p><small>海鸥，摄于大连星海广场。</small></p>
<p>家中小朋友已经过了随便做什么都显得可爱的年龄。
他开始收到学业的要求：课业、体育、音乐，各类教育轮番上阵。
训练大模型固然困难，训练家中小模型也挺不容易的，
尤其这个小模型一开始就是智力涌现，并且叛逆因子还挺高。😄</p>
<p>家庭生活中，双方亲密关系永远是最重要的支柱。
我和我老婆在温暖、摩擦、包容、依赖中不断调整，寻找更舒服的相处方式。
伴侣是最接近世界上另一个我的形态，好的亲密关系会相互扶持，一起探索和体验世间。</p>
<p>年初设定的 OKR 明显落后，主要受精力投入影响，今年可支配时间比我预期还要少：
阅读与开源项目进展良好，健康与投资几乎停滞。
年底精简了目标，计划再砍掉一批 KR，只保留职业、家庭关系与身体三类。
减少目标帮助更稳定更聚焦，也不用再持续占用注意力去权衡优先级。</p>
<h2 id="工作">工作</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/a-park.jpeg" alt="a-park"  />


</p>
<p>回看这一年时，很难用单一词汇去概括。
这既是忙碌的一年，也是成长的一年。</p>
<p>我挑了三个关键词：跃升 / 黑天鹅 / Be True。
它们对应三种感受：能力变化、环境变化，以及对人的重新理解。</p>
<p>年初我启动了一个基础设施项目，负责集团算力资源交付。
在 AI 推理规模快速增长的背景下，这块业务增长速度惊人。
24 年年中我接手了集团的算力交付，一度也是站到悬崖边缘，
穿越风雨，历经艰难才稳住。</p>
<p>困难并不在技术和工程本身，更多是问题定义、持续履约、螺旋严谨。
跨 BU 协作、历史系统复杂、责任边界模糊，却要求极高稳定性。
好在这个项目在资源投入、关注度提升、技术持续升级下，年底有了不错的结果。</p>
<p>年中时我接手团队，尽管业务、工程我都相当熟悉，但如何成事、成人对我来说都是新的命题和挑战。
我一度做梦时都在思考业务和产品发展路线。
还好一段时间就恢复到平静，发展不是靠大炼钢铁，还是要回到工程和产品原则，回到时代发展脉搏上。
我持续在思考到底如何经营好团队，最后我得到两个词：Be True，做正确的事情，做真实的自己，对人对己。</p>
<p>我捋了一份团队和组织的书籍清单，放到这里：
<a href="https://www.douban.com/doulist/163363861/">Be True 团队和组织</a></p>
<p>12 月遇到一次黑天鹅生产事故，细节不再阐述，但影响很深远。
这件事并非真正随机。历史债务、责权、安全生产意识不足，必然会在某个时间点集中爆发。
所谓黑天鹅，更多是复杂系统不可预测性的体现。</p>
<p>如何去应对这种不确定性？工程上的问题始终回到第一性原理，去定义问题，去解问题。
业务和团队上，则是要持续围绕客户、解决真实问题，变化只会改变路径。
穿过风暴时，不要被定义，而是自己把定义想清楚。</p>
<p>这一年，AI 对工程工作的影响开始变得具体。
6 月份时我还对 AI Coding 存疑，以为基础设施领域会有更长缓冲期，因为上下文复杂且依赖经验，
但实际体验下来并非如此。使用 AI Coding 工具后，开发效率明显提升，重复劳动减少，探索成本下降。
写代码（Code Typing）未来会成为低效的工程方式，AI Native 应该成为默认选项。
AI 降低执行门槛，同时放大决策质量差异。
能力差距没有被抹平，而是被加速放大：工程师价值逐渐从实现能力转向问题选择与约束设计能力。</p>
<h2 id="个人成长">个人成长</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/beach.jpeg" alt="image"  />


</p>
<p>今年基本没写博客，虽然在内网还是保持每个月有点文字输出，但在社区和自我成长关注上投入非常有限。</p>
<p>回想今年，倒是年初春节时候动心起念，决定一年内完成多邻国英语流程。
130 级打完花了 278 天，起于初春，结束在秋。
接下来我主要围绕 YouTube 和 Bilibili 的原声听力做练习。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/duolingo.png" alt="duolingo"  />


</p>
<p>书籍继续是我思想的避风港，不管工作如何繁忙，还是可以在书本中寻找到智慧和答案。
去年给自己的期望是深刻又朴素，今年在读书选择上，更多添加了一些哲思、组织的输入。</p>
<p>前主管每个月都在大团队分享会给出他的读书心得，我也获益蛮多。
这是一种蛮难得的体验，我一直觉得读书是一件有点私密的事情，但这种形式也让我受益匪浅，
好几本书都丰富了我的读书范围。
未来我也会学习一下这种思想碰撞和交流方式，不用太在意反馈，回到自己初心。</p>
<h3 id="不拘一格--网飞的自由与责任工作法"><a href="https://book.douban.com/subject/35102294/">不拘一格 : 网飞的自由与责任工作法</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183632645.png" alt="image"  />


</p>
<p>Netflix 采用了一种与众不同的人才观。
他们提供行业顶尖的薪酬标准，没有采用末位淘汰制，
而是以是否达到岗位标准作为人才留存的核心依据。
在组织决策方面，Netflix 给予员工较高的信任度，
并通过事后审查的方式进行补充。
基于目标（北极星），日常决策采用情境决策模式，而非领导拍板式决策，
Context, not Control。</p>
<p>对管理者而言，有哪些可以立即执行的行动？
第一，提供更多的信息透明度，给予成员更多的技术决策机会，
同时做好事后的效果追踪和复盘工作。
第二，在各种会议中，特别是月会、周会，不断明确和校准团队的「北极星」目标。</p>
<h3 id="仿生人会梦见电子羊吗"><a href="https://book.douban.com/subject/36701790/">仿生人会梦见电子羊吗?</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184438705.png" alt="image"  />


</p>
<p>自然人和人造人的边界到底是什么。
长得像鸭子，叫声像鸭子，什么都像鸭子，真的是鸭子么？
穿过时间叩问一众 LLM 和 Agent。</p>
<h3 id="松本行弘的程序世界"><a href="https://book.douban.com/subject/6756090/">松本行弘的程序世界</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184428378.png" alt="image"  />


</p>
<p>松本行弘这本书我在十几年前就想读，
彼时的我甚至还去面试了一家使用 Ruby 的创业公司。
没想到读完居然是十几年后了。</p>
<p>书中以高手的姿态评点了当时比较热门的语言，
介绍了自己设计 Ruby 时候的思考和品味判断。
书中也讨论了云的出现、算力的增长、分布式的严谨对技术的影响。
高屋建瓴的视角让大部分知识即便放到今天还是不过气。</p>
<p>时光荏苒，物是人非，Ruby 还是局限在 Web 领域，
Python 则靠 AI 打了翻身仗。
NoSQL 也是进入了稳态，GPU 占领了计算模式高低，
Dart 已经完蛋了，笑。</p>
<p>真希望松本行弘能再出一本新的点评书。</p>
<h3 id="西方思想史十二讲"><a href="https://book.douban.com/subject/34971549/">西方思想史十二讲</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184408610.png" alt="image"  />


</p>
<p>探索宇宙，探索自身，探索存在和真理，这是西方思想史的研究命题。
历史上提出了许多主张，这些主张都需要逻辑自洽，
要么能够服务人的意义感，要么服务于宗教或者国家，
总之是适应时代、适应威权。
我想，学哲学（思想）的朋友是不是会感慨哲学发展的太慢，
几十年几百年才能演进一点点，有种脱离感，脱离当下朝夕发展的科技速度。
但反过来想，正是因为发展太快，变化太多，
我们更需要寻找到一些自我和世界的确定感和稳定感。</p>
<h3 id="从优秀到卓越"><a href="https://book.douban.com/subject/1059769/">从优秀到卓越</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184348960.png" alt="image"  />


</p>
<p>这本书虽然看上去是写给卓越公司管理者的，
谁又不是从一开始就想持续卓越呢，后进生也该看看优等生如何获得成功。
秘诀是：人、思想、行为、持续积累和发展，这是本书的核心结构。
卓越公司需要五级经理人（谦逊、意志、持续贯彻）。
需要去设定方向、远景、战略。
使用刺猬三环分析出：优势、热情、经济增长引擎。
认清信念（憧憬成功）和原则（面对困难）。
经典书籍，常读常新。</p>
<h3 id="格鲁夫给经理人的第一课"><a href="https://book.douban.com/subject/27178870/">格鲁夫给经理人的第一课</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184326348.png" alt="image"  />


</p>
<p>面向管理本质展开：提升团队杠杆率；识别业务限制步骤；目标管理、时间管理、绩效管理。</p>
<h3 id="看见孩子--洞察共情与联结"><a href="https://book.douban.com/subject/36427596/">看见孩子 : 洞察、共情与联结</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184251100.png" alt="image"  />


</p>
<p>没有真正不合格的孩子。
关键是通过耐心和理解去回应真实需求，
即使在困难和变化的时候，也尽量保持自身情绪的稳定去承载孩子的情绪。
这样做其实不仅仅是教育孩子，也在某种程度上再次养育自己。</p>
<h3 id="小米创业思考"><a href="https://book.douban.com/subject/36057097/">小米创业思考</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184235053.png" alt="image"  />


</p>
<p>无比真诚，相当受用。
本来对小米故事不抱多高的预期，以为是讲故事讲奋斗。
读完之后发现雷军真的是敞开心扉说亮话：
从创业的使命问题到战略问题，从宏观方向到微观管理，
都做了不藏着掖着的分享。
有时候觉得讲企业管理已经变成一个显学，
但是从身边的实际感受来看，世界真的是一个草台班子，有大草台班子小草台班子。
雷军的分享是将管理学很多经典著作映照到现实。
这些道理和经验就应该持续讲，反复讲，持续学习，反复学习。</p>
<h3 id="我看见的世界--李飞飞自传"><a href="https://book.douban.com/subject/36672955/">我看见的世界 : 李飞飞自传</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184149026.png" alt="image"  />


</p>
<p>见今年仅有的几篇博客之一：
<a href="https://blog.alswl.com/2025/06/li-feifei/">李飞飞如何获得成功？ - 读「我看见的世界」 | Log4D</a></p>
<h3 id="置身事内--中国政府与经济发展"><a href="https://book.douban.com/subject/35546622/">置身事内 : 中国政府与经济发展</a></h3>
<p>五星评价，看懂中国经济。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184127615.png" alt="image"  />


</p>
<h3 id="芯片浪潮--纳米工艺背后的全球竞争"><a href="https://book.douban.com/subject/36462444/">芯片浪潮 : 纳米工艺背后的全球竞争</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222184104291.png" alt="image"  />


</p>
<p>这本书几乎是台积电发展史，
从台湾当局招商引凤凰，到张忠谋到台湾，
再从代工模式发展到纳米时代各项突破，看得叫一个惊心动魄。
时代给机遇，也需要强人能够抓住。
冒着计算过的风险，跨越式发展，美式管理风格都让人印象深刻。
对中芯国际也有了更深的认识。加油吧。</p>
<h3 id="卓有成效的管理者"><a href="https://book.douban.com/subject/1322025/">卓有成效的管理者</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260223150150345.png" alt="image"  />


</p>
<p>推荐给所有电脑前工作者阅读。</p>
<p>不仅仅带团队的 TL 是管理者，知识工作者也是管理者。
德鲁克提出了 5 个核心要点：时间管理、看重贡献、发挥长处、要事优先、有效决策。
对于普通知识工作者来说，我觉得先从时间管理入手，再做好 OKR 管理和关键决策，
关键决策核心点是充分调研、找到核心问题、明确优势、面向未来。
如果有机会管理团队，则要持续关注团队成员长处。</p>
<p>几个主题我也写过一些文字：
时间管理 <a href="https://blog.alswl.com/2023/02/gtd/">https://blog.alswl.com/2023/02/gtd/</a>；
决策（技术决策）https://blog.alswl.com/2023/07/architecture-design-the-easy-way/ 。
今年争取再写一个关于目标管理的。</p>
<p>每次学习，都感受到德鲁克洞察本质的思考，常读常新。</p>
<h3 id="我的重生日记"><a href="https://book.douban.com/subject/37467106/">我的重生日记</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183452774.png" alt="image"  />


</p>
<p>要是人生像大梦一场，关关卡，困难重，到底该怎么办？
书里写的是作者生病的经历。
现在大家活得越来越久，生病这事，自己或家人都很可能碰上，
这本书就像个真诚的朋友，把生病后的种种感受和经历，一点不藏地告诉我们。
作者生病后日子特别难熬，书里把这些痛苦都写出来了。
他一边和病魔斗争，一边在心里给自己打气，
这些描写很真实，让我们能感受到他的害怕、坚持和对活下去的渴望。
面对风暴的办法只有一个，穿过去。</p>
<h3 id="简读日本史"><a href="https://book.douban.com/subject/35540708/">简读日本史</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183138418.png" alt="image"  />


</p>
<p>富士山的壮丽美景都历历在目。
漫步在东京国立博物馆中，我曾隐隐觉得其历史底蕴稍显单薄，
部分瓷器藏品也显得简陋，直至幕府时代的展品出现，才让人眼前一亮，印象深刻。
而读完这本书我才明白，在大化改新之前，日本的开化程度确实较低，
这也解释了博物馆早期展品相对逊色的缘由。</p>
<p>「山川异域，风月同天」这句诗我们并不陌生，甚至有人说中日同文同种。
但事实上，日本的发展历程有着自己的曲折轨迹，
它历经无序、混乱、贫苦与自卑，也有过爆发式的变革。
如今，日本已然成为东亚文明的重要代表之一，
拥有独特的精神内核与国民性，
与中国既有文化传承上的关联，又走出了截然不同的发展道路。</p>
<h3 id="devops实践指南第2版"><a href="https://book.douban.com/subject/36868981/">DevOps实践指南（第2版）</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183109381.png" alt="image"  />


</p>
<p>我一开始有点轻视这本书，想着自己搞了这么久，工程和方法论应该都是耳熟能详。
但细看之后感觉挺高屋建瓴的，写得很简练精要，
有一些观念梳理比自己想要结构化很多。</p>
<p>有几个印象深刻和反直觉的点：</p>
<ol>
<li>价值流对 DevOps 落地很重要，要帮助上下游团队解决他们的问题</li>
<li>多大的权利解决多大的问题，设定目标很关键</li>
<li>20% 时间用来创建用户不可见的正面价值</li>
<li>形成流动，从 Source 到 Product 的流动</li>
<li>指派运维联络人，不要多点联系</li>
<li>建设反馈机制，前期研发 Owner 要自己运维，如果服务质量下降要做退还托管机制</li>
</ol>
<h3 id="资本论"><a href="https://book.douban.com/subject/4267216/">资本论</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183955397.png" alt="image"  />


</p>
<p>资本不是洪水猛兽，资本主义也不是洪水猛兽。
资本主义的终局最终会发生么？
有没有可能进入一个多种资方互相平衡的状态。
政府也出台了反垄断法来避免资本无限扩张，
通过基本的人道主义保障来兜底最底层。
第三册写到资本逐利是根本的问题。
但逐利是一个组织存在的基本要素，人也是逐利的，
商业组织逐利有什么问题么？
逐利是生命体的表现，是存在的体现，只要不成为社会的癌细胞就行。
金融危机一定是坏事么？
是不是一个去泡沫、降温过程，那是不是只要是有序的反而是一件好事？
总体来说，马克思描述了一种在无序、小政府、割据政权下面，
资本主义会走向一个什么最差的结果，以及最终会被社会主义替代。
资本主义是家养野兽，需要套上项圈，让政府进行管制，
不管这个政府是三权分立的还是中央政权。
我怀疑在可预见未来改良式资本主义一直存在，
靠政府治理、反垄断保持着平衡。</p>
<h3 id="论中国"><a href="https://book.douban.com/subject/26607419/">论中国</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202602/image-20260222183026761.png" alt="image"  />


</p>
<p>《论中国》这本书基本可以分成两个部分。</p>
<p>第一部分是清末到新中国建立的中国对外外交史。</p>
<p>第二部分就是基辛格自己参与的中美关系发展史。基辛格是一个很有意思的人，他既流露出一种看上去的亲华派，但骨子里还是国家利益至上。他是幸运的，和中国四代（甚至可能是五代）领导人都有近距离的接触，堪称近代历史活化石。</p>
<p>把历史的进程拉近视角，以一个外交官（事实上）的视角呈现出来，可以更有血有肉地反映时代的细节。</p>
<p>相关阅读推荐：B 站大象放映室的晚清最后 13 年，邓小平时代，他改变了中国。（似乎找不到一本有代表性的书来介绍毛泽东晚年的历史。）</p>
<h2 id="尾注">尾注</h2>
<p>2026 将继续探索发现世界，持续的亲子陪伴和家庭经营，并在 Infra + AI Infra 领域有更多输入输出。</p>
<p>临界不是终点，蓄势待发。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[实用软件项目管理最佳实践]]></title>
    <link href="https://blog.alswl.com/2025/08/project-management/"/>
    <id>https://blog.alswl.com/2025/08/project-management/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2025-08-24T10:04:24+08:00</published>
    <updated>2025-08-24T10:04:24+08:00</updated>
    
    <content type="html"><![CDATA[<h2 id="概述">概述</h2>
<p>本文阐述一套适用于工程应用开发项目的迭代管理实践，重点解决如何高效低成本推进项目的问题。该方案适用于小型团队协作，核心特征在于<strong>固定产研节奏、标准化交付物以及高频异步协作机制</strong>。</p>
<p>本文仅针对技术方案与实施路径明确的项目场景，不涉及工程决策或目标管理范畴。本文也更注重实操，注重立即可以上手实施，不会花太多篇幅去解释这套方案背后的思考和原因。</p>
<p>关于<strong>实用（Pragmatic）</strong> 的定位：该理念贯穿于我的多项实践方案，包括
<a href="https://blog.alswl.com/2023/07/architecture-design-the-easy-way/">架构设计 the Easy Way</a>
<a href="https://blog.alswl.com/2023/04/web-api-guidelines/">实用 Web API 规范</a>
<a href="https://blog.alswl.com/2021/06/prr/">如何做好 PRR（Production Rediness Review）？</a>
等等。实用意味着注重可操作性和实际效果，要领是简单易实施落地，任何人都可以上手执行操作。我对实用的追求来自于《The Pragmatic Programmer》这本书。</p>
<p>注：本文不特定区分项目（Project）和产品迭代（Product Sprint）区别，可以将这里项目管理等同于研发过程管理。</p>
<p>免责申明：没有银弹，本文方法论不一定适合所有场景，并且方案也在持续迭代。如果你的项目有 PM，请优先咨询 Ta。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100608820.png" alt="image-20250824100608820"  />



Mural of La Bre Tar Pits（C.R. 奈特雷阿的焦油坑壁画)，图片被人月神话所引用。</p>
<h2 id="在软件项目管理中我们遇到什么问题">在软件项目管理中我们遇到什么问题</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100620884.png" alt="image-20250824100620884"  />


</p>
<p>软件项目管理常面临各类挑战。就个人经验而言，最直接的困境在于项目无法按期交付。其原因可归纳如下：</p>
<ul>
<li>我的协作方依赖方有问题，他没时间没空或者方案无法满足我</li>
<li>需求频繁变更，没想清楚做着做着要改方案，或者实施过程中插入新的需求</li>
<li>产出的东西质量不达标，测试阶段一堆问题，迟迟无法交付</li>
<li>产出的东西不是想要的，和需求方一对发现偏差太大</li>
<li>依赖资源未能及时到位</li>
<li>项目计划过于乐观，过度承诺，交付时间比预计的要长，工作量比预期大，难以完成</li>
<li>工程难度大，实施过程遇到技术风险，成本高或者难以完成，</li>
<li>多项目进行，人力资源挤占</li>
<li>多项目并行导致工程上无法满足</li>
<li>项目成员的档期不一致，无法有效协作</li>
</ul>
<p>问题不可怕，定义清楚问题就成功了一半，回到问题本身，让我们来看如何解决。</p>
<h2 id="问题根因分析">问题根因分析</h2>
<p>现实中遇到的问题可能更多，我分分类说到底是这么几个原因：</p>
<ul>
<li><strong>需求问题</strong>：描述模糊、频繁变更及沟通未对齐</li>
<li><strong>协作问题</strong>：衔接断层、预期差异及信息同步失效</li>
<li><strong>时间问题</strong>：周期限制及过程中突发需求插入</li>
<li><strong>工程问题</strong>：技术实现难度超预期或成本制约</li>
</ul>
<h2 id="我的项目管理最佳实践">我的项目管理最佳实践</h2>
<p>基于上述问题分析，我将这些问题的解法归到几个方向：<strong>节奏、交接物、协作</strong>。</p>
<p>注意，本文不聚焦解决工程难度问题，也不解决架构师要解决的问题，最多能从项目管理的思路来降低技术风险。</p>
<p>另：对架构问题如何处理问题请移步
<a href="https://blog.alswl.com/2023/07/architecture-design-the-easy-way/">架构设计 the Easy Way</a>
；遇到了具体工程难题的同学请咨询团队技术专家。</p>
<h2 id="节奏---固定产研节奏比-ddl-更重要">节奏 - 固定产研节奏比 ddl 更重要</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100635582.png" alt="image-20250824100635582"  />


</p>
<p>什么是项目的节奏，什么是好项目节奏？</p>
<p>项目节奏的本质在于建立<strong>可预期的周期化交付机制</strong>。相较于单纯设定最终截止期限（Deadline），采用 Scrum 敏捷框架中的冲刺（Sprint）模式更为有效。每个冲刺构成包含需求分析、设计、开发、测试及上线的完整闭环。良好的迭代节奏具备三重价值：1. 建立明确的时间预期，实现周期化交付；2. 强制需求拆解，推动产品从最小可行版本（MVP）向完善形态演进，避免关门憋大招，最后拉了一泡稀的；2. 规避长期封闭开发导致的交付风险，最怕大搞 58 天，最后 2 天都交不了货</p>
<h3 id="双周迭代">双周迭代</h3>
<p>一个好的迭代周期多长比较合适呢？在小型团队协作里面，最长不要超过 1 个月，<strong>尽量保持在 2 周</strong>，最好能做到 1 周。以一次迭代的周期来看，我自己体感是 1/2 时间用来设计， 1/2 用来建设（开发测试和上线）。不要低估设计花费时间，投入少了后面想追也追不会来。</p>
<p>迭代管理需设置专职<strong>迭代经理</strong>，该角色承担三项核心职责：规划迭代排期、协调各类会议安排、核验交付材料规范性（依据标准化模板执行，不负责方案质量，材料质量由架构师+下游签收）。此岗位实质承担部分项目管理职能，若短期内无合适人选，应由项目负责人兼任。迭代经理通常从项目成员中产生，建议实施轮值机制。轮岗制度具有双重价值：使成员亲身体验管理挑战，促进跨角色理解；同时通过岗位实践识别流程瓶颈，推动协作机制优化。执行时需确保轮值期间管理职能的完整履行。</p>
<p>高频迭代带来的不少附加优势：直接化解了需求插入问题（任何需求最长等待周期 ≤1 周），紧急需求则通过紧急修复流程（hotfix）处理；大型需求必须进行拆分验证，无法拆解者需通过概念验证（PoC）先行评估技术风险。</p>
<h3 id="迭代中评估需求耗时">迭代中评估需求耗时</h3>
<p>这是一个一直被提及的问题，我有两个方案来解决，第一个是提供一个需求时间评估公式：工作量 = （最乐观 + 最悲观） / 2。</p>
<p>第二个是避免搞大需求，所有需求需要评估一下规模，我提供这几种级别标准，extra-large（月级别）/ large（周级别） / medium（天级别） / small（小时级别），我不接受 xl / l 需求，必须拆成 m / s。</p>
<p>需求时间评估是一个普遍存在的挑战，我提出两种解决方案。</p>
<p>第一种方案采用工作量估算公式：工作量 = （最乐观 + 最悲观） / 2。这个公式相当实用，比单一指标更多考虑到不确定性。（其实我还有一套更复杂的通过技术采纳性角度的评估方式，但是不如上一个公式简单易操作）</p>
<p>第二种方案聚焦需求规模控制，要求所有需求划分规模级别，包括 extra-large（月级别）、large（周级别）、medium（天级别）和 small（小时级别）。迭代中要尽量避免 extra-large 与 large 规模需求，将其拆解为 medium 或 small 规模后再行处理。</p>
<h3 id="迭代范例">迭代范例</h3>
<p>我们的一个实际<strong>案例分享</strong>，这是 我负责 产品的 7 月 两个迭代，分成 07a 和 07b 两个迭代。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100659418.png" alt="image-20250824100659418"  />


</p>
<h2 id="交接物---标准化每个环节输入和交付物">交接物 - 标准化每个环节输入和交付物</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100711540.png" alt="image-20250824100711540"  />


</p>
<p>软件的<strong>不可见性和抽象性</strong>是导致软件复杂性的根本原因。</p>
<p>清楚明确的交接物可以有效降低不可见性和抽象性，这是用来抵抗交付复杂性的核心武器。掌握这个核心武器的最重要口诀是：<strong>写下来</strong>。</p>
<p>把你的长远需求规划写下来，不管是年度计划，还是月度计划。把你的需求明细写下来；把你的系统设计写下来；把你的发布功能写下来；</p>
<p>整个过程中，我推荐使用到这些面向项目管理的<strong>交接物</strong>，大部分交接物我们都耳熟能详，但请特别注意我这里的最佳实践：<strong>需求清单</strong>和 <strong>Release Note</strong>。</p>
<table>
	<thead>
			<tr>
					<th>阶段</th>
					<th>输入 / 输出</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>产品规划</td>
					<td>产品项目 OKR</td>
					<td></td>
			</tr>
			<tr>
					<td>产品思路</td>
					<td>需求清单</td>
					<td>需求清单是一个非常特别的形式，是我个人发明的，正面对抗一句话需求。</td>
			</tr>
			<tr>
					<td>产品需求</td>
					<td>需求文档</td>
					<td>我们产品经常不配置 PD，所以需要自己写需求文档。我们有两种文档格式：文字型 / 配图型</td>
			</tr>
			<tr>
					<td>系统设计</td>
					<td>系统设计</td>
					<td>文字内容设计结构必须是明确的，大家应该使用相同的模式来进行文字创作。比如系统设计文档可以使用语雀自带的模板。</td>
			</tr>
			<tr>
					<td>开发</td>
					<td>自测报告</td>
					<td>截图证明你可以。</td>
			</tr>
			<tr>
					<td>测试</td>
					<td>测试报告</td>
					<td></td>
			</tr>
			<tr>
					<td>发布</td>
					<td>发布计划</td>
					<td></td>
			</tr>
			<tr>
					<td>上线</td>
					<td>Release Note</td>
					<td>Release Note 做轻薄一些，尽量链接到产品功能使用文档。</td>
			</tr>
			<tr>
					<td>日常使用</td>
					<td>产品说明文档</td>
					<td>多截图，常更新，跟随产品上线发布。</td>
			</tr>
	</tbody>
</table>
<p>下面我会展示一些我实践的需求范例（可能来自不同的产品和迭代）。</p>
<h3 id="需求清单范例">需求清单范例</h3>
<p>这是我使用的需求清单范例：</p>
<table>
	<thead>
			<tr>
					<th></th>
					<th></th>
					<th></th>
					<th></th>
					<th></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>功能描述</strong></td>
					<td><strong>Owner</strong></td>
					<td><strong>优先级</strong></td>
					<td><strong>前端页面数</strong></td>
					<td><strong>质量介入</strong></td>
			</tr>
			<tr>
					<td>用户 A 可以使用 功能 B 完成授权</td>
					<td>狗哥</td>
					<td>高</td>
					<td>2 页</td>
					<td>是</td>
			</tr>
			<tr>
					<td>用户 B 可以使用 功能 C 查看报表</td>
					<td>谢宝</td>
					<td>高</td>
					<td>2 页</td>
					<td>否</td>
			</tr>
			<tr>
					<td>用户 C 可以使用 功能 C 发布视频</td>
					<td>落九</td>
					<td>高</td>
					<td>很少</td>
					<td>是</td>
			</tr>
	</tbody>
</table>
<h3 id="需求文档范例">需求文档范例</h3>
<p><strong>需求文档模板</strong>：</p>
<blockquote>
<p>需求标题：简洁明了地描述需求
用户角色：谁会使用这个功能
用户目标：用户想要达成什么
前置条件：使用该功能需要满足的条件
主要流程：详细描述用户如何使用该功能
替代流程：描述可能的例外情况
验收标准：如何判断需求已经被正确实现</p>
</blockquote>
<p>一个<strong>需求文档范例（文字型）</strong>：</p>
<blockquote>
<p><strong>视频发布流程 MVP</strong></p>
<p><strong>用户角色</strong>：内容运营者
<strong>需求标题</strong>：用户上传视频并完成自动化发布流程
<strong>用户目标</strong>：</p>
<ul>
<li>运营者通过标准化流程完成视频从上传到发布的完整生命周期管理。</li>
<li>关键步骤自动化处理（如转码、审核），减少人工操作，关键节点保留人工确认机制。</li>
<li>支持异常处理（如审核失败、转码错误），允许人工介入重试或跳过。</li>
</ul>
<p><strong>主要流程</strong></p>
<ol>
<li><strong>创建视频发布任务</strong>
<ul>
<li>用户上传原始视频文件（支持主流格式：MP4/MOV/AVI）</li>
<li>填写基础元数据（标题、分类、标签、封面图）</li>
</ul>
</li>
<li><strong>自动化预处理</strong>
<ul>
<li><strong>转码引擎</strong>：自动生成多分辨率版本（1080P/720P/480P）</li>
<li><strong>内容审核</strong>：
<ul>
<li>AI自动审核（敏感画面、违禁内容）</li>
<li>若AI审核通过 → 进入发布队列</li>
<li>若AI审核失败 → 暂停流程并通知人工复审</li>
</ul>
</li>
</ul>
</li>
<li><strong>人工确认节点</strong>（流程暂停点）
<ul>
<li><strong>人工复审</strong>：运营者在后台查看AI标注的违规片段，选择：
<ul>
<li>通过（继续流程）</li>
<li>驳回（需编辑视频后重新上传）</li>
<li>强制跳过（需填写跳过原因）</li>
</ul>
</li>
</ul>
</li>
<li><strong>发布执行</strong>
<ul>
<li>自动推送至指定发布渠道（Web/APP/第三方平台）</li>
<li>生成可跟踪的发布ID（用于效果分析）</li>
</ul>
</li>
<li><strong>异常处理机制</strong>
<ul>
<li><strong>转码失败</strong>：自动重试（≤3次）→ 仍失败则通知人工</li>
<li><strong>发布中断</strong>：支持手动重试/跳过/终止任务</li>
</ul>
</li>
</ol>
<p><strong>替代流程</strong></p>
<ul>
<li><strong>转码模块不可用</strong>：允许上传预转码视频文件（需符合分辨率规范）</li>
<li><strong>AI审核服务宕机</strong>：切换为全人工审核模式（需在SOP中注明应急预案）</li>
</ul>
<p><strong>验收标准</strong></p>
<ol>
<li><strong>全流程验证</strong>：
<ul>
<li>运营者从上传到发布成功耗时 ≤15分钟（不含人工审核等待）。</li>
<li>模拟审核失败场景，人工强制跳过步骤后流程可继续。</li>
</ul>
</li>
<li><strong>异常处理验证</strong>：
<ul>
<li>转码失败时，系统自动告警并允许手动替换文件。</li>
<li>发布中断后重试，视频状态可恢复至中断前节点。</li>
</ul>
</li>
<li><strong>文档交付</strong>：
<ul>
<li>提供《视频发布SOP手册》，含人工操作指引及故障处理方案（A负责维护）。</li>
</ul>
</li>
</ol>
</blockquote>
<h3 id="产品-release-note-范例">产品 Release Note 范例</h3>
<p>Discord 的 Change Log（Release Note）发布大纲，没有前端产品用那么多 emoji。




<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100749328.png" alt="image-20250824100749328"  />


</p>
<p>妙言 <a href="https://github.com/tw93/MiaoYan">tw93/MiaoYan</a> 的某个 Release 更新日志：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100805177.png" alt="image-20250824100805177"  />


</p>
<h3 id="产品使用手册范例">产品使用手册范例</h3>
<p>我建议可以使用基于 Git 仓库管理的 markdown 方案，比如 <a href="https://www.mkdocs.org/">MkDocs</a> 这类方案：</p>
<p>我推荐的范例是 NebulaGraph Operator 的文档范例，注意这仅仅是 NebulaGraph 的其中一个子产品，但是规模更小更适合起步。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100817905.png" alt="image-20250824100817905"  />


</p>
<p>关于交付物，特别是文档类型的交付物，虽然我列了这么多类型，但是我认为一定不要写多写复杂，<strong>提纲挈领，量少为宽</strong>。</p>
<h2 id="高频异步沟通---同步和异步-风险和透明">高频异步沟通 - 同步和异步 风险和透明</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100844728.png" alt="image-20250824100844728"  />


</p>
<p>不要陷入巴别塔。</p>
<p>在分布式协作场景下，需建立「<strong>异步为主、同步为辅</strong>」的沟通范式，重点解决信息孤岛、风险滞后及依赖阻塞三大痛点。有效的协作机制应包含三个核心要素：<strong>全局可视化任务管理、结构化风险预警及精准化依赖协调</strong>。</p>
<p>我讨厌开会，甚至从某种意义上我痛恨开会。我之前写过关于会议的暴论：</p>
<p>这个月代码写得太少了，会议时间占据了 1/3，这很可怕。</p>
<p>会议很低效，很低效，很低效。有些会缺少材料准备，问题不聚焦，主持人不控场，一拉一大把人，不少人又不好意思走就硬挂着。</p>
<p>如果我有权利，我甚至想禁止公司开会，全都回归到基于文档的异步交互模式。</p>
<p>还是多建设，少空谈，有明确主张，材料提前分发，开会不当聋哑人，非干系勇敢离开会议。让大家回到方案设计和代码上吧。</p>
<p>有效沟通需规避信息失真，核心在于建立风险透明机制与依赖协同体系。具体实施包含三个维度：全局可视化看板：实时呈现任务进度与风险状态；精准进度追踪：量化每个节点的完成度；异步协作平台：通过在线任务管理工具（如 Jira）实现全周期信息同步。</p>
<h3 id="开两种会---方案评审和日会">开两种会 - 方案评审和日会</h3>
<p>我们不需要开会了么？还要，但是只要两种：<strong>方案评审会与日会</strong>。</p>
<p>评审会的要点在于：</p>
<ol>
<li>明确评审会的对象是谁，<strong>谁负责为方案点头</strong>，没有人负责点头的会不用开，既没有对抗又没有讨论，是纯走过长</li>
<li>不要做无准备的讨论，在方案宣讲之前，尽量先和受众对象达成一致，让评审会变成一个<strong>宣讲会</strong></li>
<li>评审会要有结论，通过还是不通过要有人确认。通知之后的执行项全部落入在线协作平台，特别是需求类，一定要记录，这是未来日会跟踪的依据</li>
</ol>
<p>日常进度沟通模式，我推荐<strong>每日站会沟通</strong>，最少也得双日沟通（每周二、四）。每天都进行站会同步，每次 15m 搞定。一般一个项目成员在 7 人左右（披萨原理），每人一两分钟。</p>
<p><strong>站会的主持人很重要</strong>，要引导参与人同步进度，同步风险，寻求帮助，帮助需要有明确的接收方。</p>
<h3 id="基于看板的在线沟通">基于看板的在线沟通</h3>
<p>核心准则：<strong>以文档异步协同为基础</strong>，将同步会议压缩至必要场景，最大化建设性工作时间。</p>
<p>下面是会议看板范例，根据迭代过滤，根据 Assginee 分组（其实也很普通，没什么特别的）：




<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202508/image-20250824100907586.png" alt="image-20250824100907586"  />


</p>
<p>每天迭代经理在日会上面就是拿着这个看板，先明确我们几号提测几号上线，再挨个成员自述进展如何，最后挨个问有没有上线风险。</p>
<h2 id="最后">最后</h2>
<p>没有万灵的项目管理机制，根据自己面临的问题进行实际调整。本文的命题对我（一个开发工程师）来说也是极具挑战。我在过去有多次因为项目无法交付问题失眠无法入睡。现在来看，其实大可不必，平常心来应对问题，<strong>对预期内问题建立预案，对计划外变更保持弹性</strong>。当团队已完成可行性范围内的最大努力，即应视作有效交付。项目管理的终极目标，是在资源约束下实现可持续的技术价值输出。</p>
<h2 id="扩展阅读">扩展阅读</h2>
<p><a href="https://book.douban.com/subject/1102259/">人月神话 (豆瓣)</a>
软件工程项目管理的圣经，20 年后读起来仍然觉得字字珠玑。</p>
<p><a href="https://book.douban.com/subject/4058336/">项目管理修炼之道 (豆瓣)</a>
这是我的项目管理入门指导书，更通用更适合 PM。我写过一个读书笔记 <a href="https://blog.alswl.com/2014/08/manage-it/">《项目管理修炼之道》笔记 | Log4D</a>。</p>
<p><a href="https://book.douban.com/subject/24284853/">代码之殇 (豆瓣)</a>
作者是微软高级架构师/管理者，而本书实际上是一个随笔式的文章集合。尽管如此，书中的许多观点犀利且具有独特的见解，展现了从一线到高层的全方位视野。其中关于工程过程管理（比如死亡行军）事项，确实值得深思。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[李飞飞如何获得成功？ - 读「我看见的世界」]]></title>
    <link href="https://blog.alswl.com/2025/06/li-feifei/"/>
    <id>https://blog.alswl.com/2025/06/li-feifei/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2025-06-24T07:14:49+08:00</published>
    <updated>2025-06-24T07:14:49+08:00</updated>
    
    <content type="html"><![CDATA[<blockquote>
<p>读一本好书，就是和许多高尚的人谈话 - 歌德</p>
</blockquote>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202506/the-worlds-i-see.png" alt="img"  />


</p>
<p>第一次听闻李飞飞的名字，是在 2013 年与前公司 CTO 的中午干饭闲谈中。
彼时他正深耕 CUDA 并行计算领域，反复提及 ImageNet 竞赛与 AlexNet 的突破性表现，
而我对这场即将席卷全球的深度学习革命尚处懵懂——当时全身心投入业务系统优化，
面对「算法黑箱」既无暇探究，更难预见其对技术世界的重构力量。</p>
<p>如今读到李飞飞自传，方觉这场对话暗藏玄机：那个曾被视作实验室小众技术的计算机视觉项目，
竟成为改写 AI 发展轨迹的关键节点。在学科交叉处开疆拓土的战略眼光，在技术拐点期破除质疑的前瞻判断，
以及贯穿始终的&quot;北极星&quot;式价值锚点——这些要素如何在特定历史坐标中交汇，
最终塑造李飞飞成为改变机器认知方式的科学家。</p>
<h2 id="李飞飞如何获得成功">李飞飞如何获得成功</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202506/triangle.png" alt="triangle"  />


</p>
<h3 id="好奇心是原动力">好奇心是原动力</h3>
<p>李飞飞的成就源于多重维度的深度交织。其科研旅程始于对世界本质的探索欲。父亲带她
观鸟、捕捉昆虫的经历，在她心中种下好奇的种子，而母亲引导的跨学科阅读（涵盖海洋
生物、机器人、神话等）则拓宽了她的认知边界。中学时期她对航空航天等冷门领域的痴
迷，更展现出对抗性别偏见的独立思考能力。这种探索精神在普林斯顿大学攻读物理学时
得到深化，她将物理视为「西方科学最高深的创造性学科」，以此锤炼逻辑思维。这种对
知识本质的追求，成为她转向人工智能研究的底层动力。</p>
<h3 id="逆境中的坚韧与适应力">逆境中的坚韧与适应力</h3>
<p>逆境中的韧性塑造了她的核心竞争力。移民美国初期，语言障碍与经济压力如影随形。她
通过多重兼职（中餐馆打杂、家庭保洁、干洗店经营）维持生计，却仍以 SAT 数学满分的
成绩进入普林斯顿。更艰难的是母亲重病期间，她在手术室旁穿着隔离服完成学业，同时
充当医患翻译，展现出极限压力下的抗压与时间管理能力。外界质疑（如教师贬低女性数
理能力）反而强化了她「超越现实障碍」的信念。</p>
<h3 id="大平台才能让你起飞">大平台才能让你起飞</h3>
<p>顶尖平台的阶梯式跃迁为研究提供了关键支撑。普林斯顿时期奠定其学术基础，并促使她
转向计算机科学。加州理工学院攻读博士期间，她选择当时冷门的计算机视觉方向，在神
经科学与 AI 的交叉研究中确立「让机器理解人类视觉世界」的核心命题。斯坦福大学时
期，她创立人工智能实验室（SAIL），将 ImageNet 从构想变为现实。后续在谷歌的产业
实践，则加速了技术落地与应用转化。</p>
<h3 id="风口与机遇">风口与机遇</h3>
<p>把握技术拐点的决断力最终引爆突破。2006 年 AI 寒冬期，创建海量数据集被视为「学术
自杀」。面对终身教职可能受阻的警告，她创新采用亚马逊众包模式，发动全球数万人协
作标注，解决人工需耗时百年的难题。2012 年 ImageNet 竞赛中，GPU 算力支撑的
AlexNet 以压倒性优势胜出，验证了数据驱动路线的正确性，直接推动深度学习革命。</p>
<h3 id="ai-科学与人文融合">AI 科学与人文融合</h3>
<p>李飞飞独特的 AI 哲学观始终指引其技术路径。她批判当时学界对算法的过度专注，提出
计算机视觉的瓶颈在于缺乏「视觉常识」。ImageNet 的构建（1500 万图像/2.2 万类别）
本质是为机器建立认知世界的「视觉图谱」，其初衷是赋予 AI 感知现实的能力，而非单
纯追求技术指标。这种将人文认知融入技术设计的理念，后来成为斯坦福「以人为本人工
智能研究院」（HAI）的核心理念。</p>
<h2 id="作为父母我应该如何教育小孩">作为父母我应该如何教育小孩</h2>
<p>李飞飞的成长轨迹为家庭教育提供了深刻启示：她的父母并非教育专家，却以最朴素的方
式践行了「守护好奇心」与「培养独立人格」的核心理念。</p>
<p><strong>关注孩子对自然世界的探索</strong>。父亲是李飞飞科学启蒙的「引路人」。他带着女儿在成
都街头观鸟、捕捉竹节虫、观察水牛，将自然视为开放的实验室。这种实践教育不仅培养
了她对生命现象的敏锐观察力，更塑造了「提问—探索—验证」的科学思维雏形。当同龄人
被规训于课本知识时，李飞飞已通过昆虫的复眼结构理解光学原理，从鸟类迁徙模式感知
生态系统的复杂性。这种源于真实世界的认知体验，远比抽象概念更深刻地影响了她日后
选择计算机视觉作为研究方向的决策。</p>
<p>母亲则是李飞飞精神世界的「守护者」。面对中学教师对其阅读《不能承受的生命之轻》
等「非主流书籍」的质疑，母亲断然反驳：「我的努力只是为了成为更好的自己」，并以
此教导女儿<strong>不必迎合外部标准</strong>。这种教育哲学解构了传统权威的绝对性——当老师公开
贬低女生数理能力时，母亲的态度成为李飞飞对抗偏见的心理支柱：「他们无法阻止我在
这里上场参赛，我暗下决心，一定要赢」。更关键的是，父母始终以行动传递价值观：在
移民美国后陷入经济困境时，他们拒绝向现实妥协，反而将生存压力转化为家庭凝聚力，
让李飞飞在干洗店账本间隙研读学术期刊成为可能。</p>
<p>回归到教育的本质 - 培育「<strong>反叛的底气</strong>」。20 后是 AI Native 小孩，需要去成功
AI Master 而不是 AI Slave，不要去被 AI 替代而要不 AI 赋能，很大的一个要点是要有
<strong>独立思考能力，有思辨、批判精神</strong>，从而去指挥 AI。李飞飞父母的教育智慧，在于将
探索精神与批判性思维内化为孩子的生存本能。他们既不刻意塑造「完美人设」，也不焦
虑于短期得失，而是通过持续支持孩子的兴趣选择（如允许剪短发、痴迷航空航天设
计），让独立人格在真实生活场景中自然生长。这种教育模式的当代启示在于：真正的素
质教育不是资源堆砌，而是父母能否在物质匮乏时仍坚持精神富养，在世俗标准前守护孩
子的独特性。正如李飞飞在 ImageNet 项目受质疑时所展现的韧性，其根源正是童年期形
成的「质疑—坚持—突破」的行为模式。</p>
<h2 id="你找到你的北极星了么">你找到你的北极星了么？</h2>
<p>李飞飞在自传中反复提及指引她前行的「北极星」——
一种<strong>超越短期利益与外界评价的内在驱动力</strong>。对她而言，
这颗星是对知识本质的追问与对人文价值的坚守的融合。
从成都街头的观鸟少年到斯坦福实验室的领航者，她始终以「探索未知」与「服务人类」
为双轴校准方向：在华尔街高薪诱惑前，她选择回归科学本心；在算法主导的 AI 浪潮中，
她坚持构建让机器理解现实世界的视觉常识库；当技术突破引发伦理争议时，
她强调「AI 的胜利必须是人文的胜利」。这种贯穿始终的清醒，
源于父母传递的价值观——母亲病榻上的灵
魂拷问「人工智能还能如何帮助他人」，最终化作她推动医疗环境智能研究的持久动力。</p>
<p>真正的北极星，从来不是某个具体目标，而是驱动人穿越迷雾的底层信念：
对李飞飞而言，那是永远追问「为什么」的好奇心，与永远不忘「为了谁」的责任感。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[2024 年终总结]]></title>
    <link href="https://blog.alswl.com/2025/01/2024-review/"/>
    <id>https://blog.alswl.com/2025/01/2024-review/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2025-01-11T13:52:48+08:00</published>
    <updated>2025-01-11T13:52:48+08:00</updated>
    
    <content type="html"><![CDATA[<h2 id="生活---show-me-your-photos">生活 - Show me your photos</h2>
<p>地球不停息绕太阳一周，时光交替中，我们与生活擦肩，带着过去的记忆，迎接未来的未知。</p>
<p>去年，我给自己设立了一个关于生活的目标：<strong>家庭和陪伴</strong>。其中，一项是「高质量陪伴」，而另一项则是“学会摄影糖水片”。每次出行时，我希望通过照片记录下光与影的交织，捕捉那一瞬间的温度。今年，这个部分的主题便是 - <strong>Show me your photos</strong>。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/9C5FC713-AE62-40DF-9346-9959BFB73460_1_105_c.jpeg" alt="image"  />


</p>
<p><small>2024 新年伊始，海边的灯塔。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/2D5E7F7F-D848-431E-BCA8-35F66E2B2A42_1_105_c.jpeg" alt="image"  />


</p>
<p><small>春寒料峭，拎着一个喜气的龙灯出来转转。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/52514E49-D7FA-435E-9D2C-6F63ADDC7BE3_1_105_c.jpeg" alt="image"  />


</p>
<p><small>从烟火气潮汕到宗教多元的泉州。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/0626DA1D-13EB-4E84-BBD5-F1E917A43F1E_1_105_c.jpeg" alt="image"  />


</p>
<p><small>京都清水寺，小朋友许了一个有禅意的愿：我希望佛天天开心。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/2F9CE840-12AD-4530-94BA-4F6547432939_1_105_c.jpeg" alt="image"  />


</p>
<p><small>丽水，浙南梯田</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/8EF8406E-C56F-4520-A486-F253792E6A4E_1_105_c.jpeg" alt="image"  />


</p>
<p><small>壶口瀑布，红旗招展，黄河怒吼。</small></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/20CE5D94-12A4-4BE6-B326-9130FC654C7B_1_102_o.jpeg" alt="image"  />


</p>
<p><small>迪士尼，年末的花火。</small></p>
<h2 id="工作---基建狂魔">工作 - 基建狂魔</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/D2C3997C-CDA6-4518-90B4-2214E7F79449_1_105_c.jpeg" alt="image"  />


</p>
<p><small>草原上的加特林烟花。</small></p>
<p>去年，我从一名探索者转变为有组织推进系统演进的人。在年初的时候，我甚至隐隐觉得大厦的框架已经显现，接下来就是持续建设，让飞轮稳步前进，甚至开始规划探索 AIGC 上的一些新方向，想要在这个领域找到新的突破。</p>
<p>然而，现实很快给了我一个巨大的逼兜。随着 AIGC 急速发展，见证历史的同时，也面临着算力需求的剧烈增长。一波又一波的压力压下来，新需求和旧债交织在一起，给基础设施交付带来了巨大的挑战。这期间几位在这个领域的核心同僚几个月内相继离开。人走了，工作还得继续做。从 6 月份开始，我便与一群兄弟们直接走上了战场。</p>
<p>我甚至感到自己一度快要被压垮了，写了一系列关于「<a href="https://x.com/alswl/status/1791341868439195945">死亡行军</a>」的故事。</p>
<p>痛苦总是让人深思，尤其在那些看似无法承受的时刻，它反而带来了更多的洞察。一切接近触底时反而能迎来反弹的力量。有一个瞬间我终于明白，问题是阶段性的，真正在持久修炼的是正面看待问题和以清明的心态面对困难的内心力量。</p>
<p>无需惧怕外界的评价，也不必厌倦合作中的复杂性，现状和问题本就存在于那里，解决的方案并非高深莫测，关键在于直面问题本身。保持平和的心态和现实的预期，便能在混乱中看到问题的根源，在困难中捕捉到机遇，在当下洞察到未来的可能。真正的力量，是从每一次挑战中提取智慧，从每一个困境中找到前行的勇气。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/2DF11EEA-9872-4B84-8723-AFF155E951B6_1_105_c.jpeg" alt="image"  />


</p>
<p><small>摄于苏州美人腿附近</small></p>
<h2 id="业余---聊胜于无">业余 - 聊胜于无</h2>
<p>今年被工作挤占了几乎所有的时间，也导致业务已经没有精力产出内容。只有两个很小的产品。</p>
<p><a href="https://github.com/alswl/dbml-editor">dbml-editor</a> ，一个免费的 DBML 在线编辑器。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/dbml-editor.png" alt="img"  />


</p>
<ul>
<li>支持 dbml 语法检查和反馈，DBML 是一门描述关系型数据库的 Schema，面向终态，比 SQL 要更易读</li>
<li>支持 Web 响应式</li>
<li>所见即所得</li>
<li>支持导入导出 SQL</li>
</ul>
<p><a href="https://github.com/alswl/random-apple-music">random-apple-music</a> 是一个播放列表，随机挑选 Top250 的豆瓣音乐专辑，并且可以一键跳转到 Apple Music 播放。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/random-apple-music.png" alt="Image"  />


</p>
<ul>
<li>🎵 音乐迷们，快来发现新宝藏！</li>
<li>🍏 随机播放豆瓣音乐Top250，一键跳转Apple Music！</li>
<li>🎧 享受音乐的无限可能！</li>
</ul>
<p>今年在 X（Twitter）上面的最受欢迎的内容是：</p>
<ul>
<li>169k <a href="https://x.com/alswl/status/1742558249260286368">学英语技巧</a></li>
<li>83k <a href="https://x.com/alswl/status/1781907605239238759">分布式系统工程实践</a></li>
<li>75k <a href="https://x.com/alswl/status/1748941468277100617">代理协议转换 gost</a></li>
<li>56k <a href="https://x.com/alswl/status/1791341868439195945">死亡行军</a></li>
<li>52k <a href="https://x.com/alswl/status/1754053512877781012">endoflife 信息</a></li>
<li>46k <a href="https://x.com/alswl/status/1769195102126153880">红警 on Steam</a></li>
<li>44k <a href="https://x.com/alswl/status/1753269221872771463">Git rebase 合并技巧</a></li>
<li>43k <a href="https://x.com/alswl/status/1780990211885023699">dbdiagram.io</a></li>
<li>40k <a href="https://x.com/alswl/status/1754759307172962496">cors.sh</a></li>
<li>38k <a href="https://x.com/alswl/status/1748941468277100617">每年的 24 个问题</a></li>
<li>37k <a href="https://x.com/alswl/status/1764671403872383348">如何扩大工作影响力</a></li>
<li>21k <a href="https://x.com/alswl/status/1791747889628430632">如何写好文档</a></li>
</ul>
<h2 id="读书---意外之喜">读书 - 意外之喜</h2>
<p>今年，买了 Boox 文石之后，读书量一下子就上来了。总共读了 34 本书，大多数是非虚构类书籍，其中有 10 本我给了 5 星评价。Kindle 离开中国，只能拥抱微信读书。虽然无法拥有实体书，但读书成本大大降低，每月上传两本书，已经足够了。更有意思的是。我也逐渐改变了对听书的看法，曾经对它嗤之以鼻，但现在，我发现做家务或者在路上听书，成了提高大脑利用率的好方式。</p>
<p><a href="https://book.douban.com/subject/26925171/">大明王朝1566 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s29249996.jpg" alt="大明王朝1566"  />


</p>
<p>太牛了，原来演员的词几乎不用改就能直接用。</p>
<p><a href="https://book.douban.com/subject/36328704/">太白金星有点烦 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s34544956.jpg" alt="太白金星有点烦"  />


</p>
<p>妙趣横生。</p>
<p><a href="https://book.douban.com/subject/26874220/">华为内训 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s29042375.jpg" alt="华为内训"  />


</p>
<p>华为的经营哲学与阿里巴巴的&quot;六脉神剑&quot;在客户至上和目标导向上有共通之处。尽管理念相似，但华为的手册缺乏案例支撑，而企业文化往往是在解决实际冲突中塑造的。书中强调的几个关键点，如明确方向、专业精神、执行力和自我批评，对企业成长至关重要。华为从网络设备市场起步，现已成为多元化的科技巨头，其硬件基因可能助其稳健发展。相比之下，阿里巴巴等互联网公司近年来在资本市场的表现略显逊色。</p>
<p><a href="https://book.douban.com/subject/35328607/">起源 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s33804010.jpg" alt="起源"  />


</p>
<p>很推荐，讲述了宇宙的起源，生命的诞生和演进。让我想起了小时候看的一部纪录片，宇宙与人。如果有时间的话，我想仔细研究里面的术语，囊括了宏观物理、微观物理、化学、生物。</p>
<p><a href="https://book.douban.com/subject/36449803/">这就是ChatGPT (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s34566250.jpg" alt="这就是ChatGPT"  />


</p>
<p>武林泰斗亲自下场，给新人们介绍秘笈心法。之前读论文比较枯燥，一些知识和细节理解不连贯，借本文可以梳理脉络。 关于 Transformer 注意力机制介绍的比较少，好在热心的读者评论里面提供了更多信息。</p>
<p><a href="https://book.douban.com/subject/30270959/">深度学习入门 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s29815955.jpg" alt="深度学习入门"  />


</p>
<p>这是一本相当不错的深度学习入门书。不同于 How to use，本书着重 How to build，书中通过 Python 实现了一套简单的框架，并将这个框架应用在手写识别上。文章深入浅出非常详细的介绍每一层网络解决什么问题，相关的数学公式和原理是什么。 虽然已经出版了接近五年，但是书中内容并没有过期，甚至在最后面的展望描述的场景，包括物体识别，RNN（GPT 基础）在当下异常火热。</p>
<p><a href="https://book.douban.com/subject/35876121/">纳瓦尔宝典 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s34241855.jpg" alt="纳瓦尔宝典"  />


</p>
<p>本书像是提供精神 massage，片刻愉悦之后还是得落到知行二字。 有时候精神困顿，也需要按摩解乏。比如读到情绪管理这章，就回忆起上周工作冲突失控愤怒上头怼人时刻。我并非不知道要点，也许早一点读到纳瓦尔这一章我就可以唤醒理性，好书还是需要常读常新。 财富和判断力这两章给我的输入和触动最大：做高杠杆效应事情，积累财富；使用稳定可靠心智模型，学习数学，特别是概率和统计。</p>
<p><a href="https://book.douban.com/subject/30175059/">李光耀观天下 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s33687518.jpg" alt="李光耀观天下"  />


</p>
<p>作为政治家，有意愿有行动力，思想有深度视野开阔不受框架束缚已经是一流。 难能可贵是李光耀还如此坦诚。我想应该是和新加坡人口规模和民众素质有关系。 这本书是书友评论密度很高的一本书，靠书友补充了很多视角（以及后来发生的事情）。</p>
<p><a href="https://book.douban.com/subject/26171466/">筚路维艰 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s33986279.jpg" alt="筚路维艰"  />


</p>
<p>这本书是一本神作，作者用相当大的尺度在讨论从建国到现在政治路线和经济路线的纷争。作为党史研究员，作者不避讳描述毛泽东，让我看到一位急迫地想一把到位共产主义，并且留下一个无阶级矛盾的国家，为此不断发起运动、斗争。好在邓公拨乱反正改革开放。 感慨，看过去一代人的牺牲，一个数字代表一个家庭的破碎。希望未来少一些宏大叙事，多一些关注日常民生。</p>
<p><a href="https://book.douban.com/subject/35317149/">在峡江的转弯处 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s33945521.jpg" alt="在峡江的转弯处"  />


</p>
<p>从无人知晓过来。 文字之间跳跃着一股真诚质朴，数次为其感动眼眶湿润。被陈行甲正直、热情、生命活力感动。 有人质疑这是表演，我倒更愿意相信其诚朴，相信愿意相信的，坚持自己坚持的。</p>
<p><a href="https://book.douban.com/subject/36480389/">不败者 (豆瓣)</a></p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202501/s34996310.jpg" alt="不败者"  />


</p>
<p>不败者，一本让我挺惊喜的国内科幻小说集。 墨熊的风格有一种深入宇宙边界的探索力，截取了一小段太空歌剧的碎片展现出来，将遥远星际故事拉到读者身边。 《信鸽》有种软硬结合的科幻感，被光速约束的理性和感性的理念交付。 《白鬼篇》有点爽文既视感。 《不可战胜者》让我想起了神秘博士里的哭泣天使，以一种跨越时间线方式进行绞杀。绞杀的方式和破解的方式都精巧且出乎意料。</p>
<h2 id="last">Last</h2>
<p>期望新的一年可以热烈又恬静，深刻又朴素。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[2023 年终总结]]></title>
    <link href="https://blog.alswl.com/2024/01/2023-review/"/>
    <id>https://blog.alswl.com/2024/01/2023-review/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2024-01-08T23:38:59+08:00</published>
    <updated>2024-01-08T23:38:59+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/flower.png" alt="flower"  />


</p>
<blockquote>
<p>时间已做了选择，太多感受，绝非三言两语能形容</p>
</blockquote>
<h2 id="生活---陪伴和成长">生活 - 陪伴和成长</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/boy.png" alt="boy"  />


</p>
<p>这是第 35 个年头，我熟悉地扮演着多个角色，父亲、丈夫、儿子，每一刻都在陪伴和成长中交织。
生活的步伐似乎匆匆，但我努力让自己拥有一颗年轻的心，渴望保持对世界的好奇和激情。</p>
<p>时光大多被生活所占据，只有地铁上和饭桌上我能成为时间主宰。
好在我并未感到疲惫或沉闷，反而逐渐适应了这个身份的变化。
或许，正是在这些琐碎的日常中，我找到了一种生活的节奏，一种平和而温馨的状态。</p>
<p>今年我们走过了北京、汉中、西安、淳安、长沙、张家界、台州。
新年即将到来，准备给孩子办理一下护照，走出去看看。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/tower.png" alt="tower"  />


</p>
<p>在陪伴孩子的过程中，参与各种自然知识课程，参观各种展览，我发现在陪伴的同时，我们也在不知不觉中共同成长。
生活中的另一个领域，我从母亲那里薅了两只相机，终于决心好好学习摄像，
我把 Canon 6D 出售，保留了 SONY a6500 这支轻便的 APS-C 相机。
期望摄影成为我表达内心、记录生活的一种方式，每一张照片都是时光的凝固，是岁月的见证。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/five.png" alt="five"  />


</p>
<p>游戏的世界中，我似乎进入了一段电子阳痿期。购买的游戏几乎只能玩上一个小时就变得索然无味，
也许现实生活才是最引人入胜的游戏吧。</p>
<p>或许，人生就是一场不断变化的冒险。在时间的舞台上，我们扮演着各色角色，
演绎着属于自己的故事。</p>
<h2 id="工作---精进">工作 - 精进</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/balloon.png" alt="balloon"  />


</p>
<p>工作上一直压力和张力巨大，我开始进一步成为探索者。
这两年，我在工作中不断推动项目的上线，部门推出的新产品中的一半是我负责的，我很喜欢这个领域，也确实想把事情做好。</p>
<p>但有时候，我感觉自己有点像是公司招进来的清理工，身处于一个「散多垂」的状态，
面对复杂的环境，解决问题绝非易事。在整理垃圾的过程中还在自动产生垃圾，而清理的工作永远不会终结。
现实往往是，大家注意力持续被新事物（比如 AIGC）吸引走，对现存的问题更容易选择性忽视。</p>
<p>企业的大环境在不断变化，一些老朋友选择离开，大部门也经历了一些变革。
从面向风险的团队 re-org 到面向算力的基础设施团队。我认为这是一个好的信号，
AI Infra将继续裹挟着整个 Infra 领域前进，算力管理将成为一个新的命题。</p>
<h2 id="业余---更多连接">业余 - 更多连接</h2>
<p>在 Github 数据的细碎图形中，映射出一年的自娱自乐，可惜的是，未给开源社区更多的贡献。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/contributions.png" alt="contributions"  />


</p>
<p>今年，我在开源领域主要的贡献是 <a href="https://github.com/alswl/excalidraw-collaboration">alswl/excalidraw-collaboration</a>。
这个 self-host 的 Excalidraw 版本集协作和中文化字体于一身。这个项目以及相关项目吸引了近300个
star，成为我个人最有影响力的开源项目之一，尽管它是一个前端产品。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/excalidraw-collboration.png" alt="excalidraw-collboration"  />


</p>
<p>在暑假期间，趁着家中小神兽不在，我开发了一个关于起名的小程序。虽然这款产品目前有点烂尾，
亏损严重，但我依然希望花更多时间进行开发和改进。一个美好的名字可以给家庭带来无限愉悦，
希望这个项目可以养活服务器资源~</p>
<p>另外，今年我重新活跃在 Twitter 上，分享一些技巧和心得。我的 Follower 从几百人增长到近 4000 人，
虽然离有影响力的推友还有差距，但与许多有趣的朋友交流本身就是一种有趣的事情。</p>
<p>今年一年最受欢迎的内容是：</p>
<ul>
<li>167k 转载：对抗软件复杂度的战争 <a href="https://twitter.com/alswl/status/1714467723567329309">X</a></li>
<li>160k 英语学习经验介绍 <a href="https://twitter.com/alswl/status/1742558249260286368">X</a></li>
<li>127k 介绍 Lightboard <a href="https://twitter.com/alswl/status/1726526339568795667">X</a></li>
<li>120k Web 框架讨论 - Kratos <a href="https://twitter.com/alswl/status/1666118124276699136">X</a></li>
<li>90k 介绍 dumi <a href="https://twitter.com/alswl/status/1684951997752168448">X</a></li>
</ul>
<p>今年最具价值的文章是介绍「许世伟的架构课」<a href="https://twitter.com/alswl/status/1738411522756665350">X</a>，赚了几个月 Twitter 的订阅费。</p>
<p>今年我还重新开始听播客，聆听了一大半「内核恐慌」的存档，虽然未能赶上他们活跃的时期。
幸运的是，在外滩大会上我有机会参与了他们的聚会，与 Rio 和吴涛面对面交流。搞笑的是，虽然现场还有一位同事，
但我们却没有互相认出来，令人感叹在庞大的公司中，有时即便共事也未必能够相识（我们一起担任 Go 语言评委）。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/panic.png" alt="panic"  />


</p>
<p>除了内核恐慌，我还一直在听「硬地骇客」，一集都没拉，最近还开始听「有知有行」的播客。</p>
<p>在博客输出方面，我分享了两篇关于工程实践心得的文章，希望能够对读者有所帮助。</p>
<ul>
<li><a href="https://blog.alswl.com/2023/04/web-api-guidelines/">实用 Web API 规范</a></li>
<li><a href="https://blog.alswl.com/2023/07/architecture-design-the-easy-way/">架构设计 the Easy Way</a></li>
</ul>
<p>我最想分享的是 Obsidian Tasks 插件，详细信息可以在我的博客文章中找到，
<a href="https://blog.alswl.com/2023/02/gtd/">从 Toodledo 到 Obsidian Tasks - 我的 GTD 最佳实践</a>。我也很高兴成为 Obsidian Tasks 的 Sponser。</p>
<p>回顾一年的时间，我意识到自己在业余时光中的每周时间仅有10小时左右，非常宝贵。
期许着未来能够实现财务自由，以获得更多的自由时间，投入更多的兴趣爱好。</p>
<h2 id="读书">读书</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202401/cup.png" alt="cup"  />


</p>
<p>读书仍然大部分都是非虚构类书籍。</p>
<p><a href="https://book.douban.com/subject/26318286/">牛棚杂忆 (豆瓣)</a></p>
<p>士可杀亦可辱；过去带来惆怅，现在带来迷惘，未来带来希望。</p>
<p><a href="https://book.douban.com/subject/26628557/">素书 (豆瓣)</a></p>
<p>讲述做人做事的道理，古人的智慧。常读常新，尤其烦躁时候可以翻出来静一下。</p>
<p><a href="https://book.douban.com/subject/26279084/">翻译乃大道 (豆瓣)</a></p>
<p>就是为了看 中文的常态与变态。</p>
<p><a href="https://book.douban.com/subject/26836970/">沙丘 (豆瓣)</a></p>
<p>老男爵举家迁新球，贵公子初入沙漠星。 老皇帝密授哈克南，雷托族全体遭判断。 小保罗掌权弗雷曼，杰西卡诞下遗腹子。 穆阿迪布反攻沙丘，娶伊勒朗再封帝位。</p>
<p><a href="https://book.douban.com/subject/30147790/">跌荡一百年 (豆瓣)</a></p>
<p>国、企、民、央、地。 悲观。</p>
<p><a href="https://book.douban.com/subject/36150914/">被讨厌的勇气 (豆瓣)</a></p>
<p>好希望自己能在 20 岁时候读到这本书。（现在的我已经不需要啦）。教读者如何和自己、周边、世界相处，如何和自己对话以及改变自己。和遇见未知的自己属于同一个路数。</p>
<p><a href="https://book.douban.com/subject/24530465/">旧制度与大革命 (豆瓣)</a></p>
<p>治乱循环在反复。群体的无意识；民主和精英政治是否是解药？评估稳定性一个指标是贫富差距。极权下也孕育变革风险。</p>
<p><a href="https://book.douban.com/subject/5401859/">门后的秘密 (豆瓣)</a></p>
<p>管理入门快速操作手册</p>
<p><a href="https://book.douban.com/subject/33438811/">为什么 (豆瓣)</a></p>
<p>这本书我给不出星级，超出了我的评价范围。 它可能是一个新学科（因果推断）理论，也可能是统计学中的一个星火闪烁。 作者 Pearl 是统计学大拿，也是人工智能领域权威专家，他确在晚年提出了反对自己过去一系列方法路线。 今天为我们所熟知的大部分机器学习技术，都是基于概率上相关性，从啤酒和尿布，到今天 GPT 大杀四方，AIGC 智能涌现。Peral 认为真正有意义的是提出「为什么」，即解释因果关系。因果关系的论述需要智能能够想象不存在的事物，而这正是当前人工智能无法理解的（Maybe？） 本书成于 2019 年，作者今年已经 87 高龄，不知道他对当前 AIGC 风起云涌是怎么看待的。</p>
<p><a href="https://book.douban.com/subject/3248513/">为什么中国人勤劳而不富有 (豆瓣)</a></p>
<p>作者说的正确但是不全面。</p>
<h2 id="flag">Flag</h2>
<blockquote>
<p>高质量陪伴家人，放下手机，走向户外</p>
</blockquote>
<p>执行了周三、周五家庭日给小朋友陪伴；每天早上送小朋友上学；周末一定有一天陪出行。</p>
<p>陪伴小孩这块我做的不如我老婆好，感谢老婆对家庭的贡献。</p>
<blockquote>
<p>每月输出文章，特别是 Kubernetes / 研发设计领域可以写一些心得</p>
</blockquote>
<p>今年输出 6 篇文章，达标率 50%。其中两篇 <a href="https://blog.alswl.com/2023/04/web-api-guidelines/">实用 Web API 规范</a> 和 <a href="https://blog.alswl.com/2023/07/architecture-design-the-easy-way/">架构设计 the Easy Way</a> 我都是很满意的。</p>
<blockquote>
<p>经历了新冠，今年计划安排个私教教我健身房运动</p>
</blockquote>
<p>没有完成。</p>
<blockquote>
<p>投资收益率能做到 10%，今年新手阶段投资以股票型基金为主，投资收益 3.9%，跑赢了大盘和余额宝</p>
</blockquote>
<p>今年投资收益率 -1.35%，刚出新手村就被暴击，我还是缺乏对市场和商业的理解。</p>
<p>新的一年 Flag：</p>
<ul>
<li>高质量陪伴家人，走向户外，一起参与</li>
<li>持续高质量输出文章，特别是 Kuberntes / PaaS 领域</li>
<li>更多运动</li>
<li>学习投资的基本框架，建立常识和投资逻辑</li>
</ul>
<h2 id="last">Last</h2>
<p>每段经历，每次重逢，每本书籍，都是独特的命运线。新的一年已经来临，
期待着与家人、朋友一同继续探寻生活的真谛，去体验伟大与渺小。</p>
<p>往年总结：</p>
<ul>
<li><a href="https://blog.alswl.com/2022/12/2022-review/">2022 年终总结</a></li>
<li><a href="https://blog.alswl.com/2022/01/20-21/">20 21</a></li>
<li><a href="https://blog.alswl.com/2020/03/2019/">再见 2019</a></li>
<li><a href="https://blog.alswl.com/2019/04/2018/">从 2018 到 2019</a></li>
<li><a href="https://blog.alswl.com/2018/01/2017-2018/">从 2017 到 2018</a></li>
<li><a href="https://blog.alswl.com/2015/01/2014/">2014 惑</a></li>
<li><a href="https://blog.alswl.com/2013/01/my_2012/">My 2012</a></li>
<li><a href="https://blog.alswl.com/2011/12/my-2011/">My 2011</a></li>
</ul>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[如何免费用云服务搭建博客评论系统]]></title>
    <link href="https://blog.alswl.com/2023/11/build-blog-comment-system-based-on-free-cloud-service/"/>
    <id>https://blog.alswl.com/2023/11/build-blog-comment-system-based-on-free-cloud-service/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-11-25T17:23:35+08:00</published>
    <updated>2023-11-25T17:23:35+08:00</updated>
    
    <content type="html"><![CDATA[<h2 id="问题">问题</h2>
<p>博客自 2012 年从 WordPress 迁移到静态站点后，就选择了 Disqus 作为评论系统。
但最近 Disqus 硬广告过于频繁，迫切<mark>寻找新的评论系统</mark>。</p>
<p><a href="https://help.disqus.com/en/articles/1717119-ads-faq">Disqus 官方</a> 明确说明，要去掉广告就付费。</p>
<blockquote>
<p>What if I want to remove Ads?
If you&rsquo;d like to remove Disqus Ads from your integration, you may purchase and ads-free subscription from your Subscription and Billing page. More information on Disqus ads-free subscriptions may be found here.</p>
</blockquote>
<p>OK，那再见吧 Disqus，我会找到可靠、免费、易用的评论系统。
最后既然是寻找新的评论系统，现在 2023 年了，
我希望这个新系统<mark>充分使用云服务的便利</mark>，要做到
<mark>免费、可靠、易运维</mark>。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/no-disqus-twitter.png" alt="no-disqus-twitter"  />


</p>
<h2 id="选型原则">选型原则</h2>
<p>在进入探索之前，我先梳理一下自己的原则和选型要求：</p>
<ul>
<li>数据自有是核心要求
<ul>
<li>确保评论数据完全归属于博主，不会因为使用第三方服务而失去对数据的控制。</li>
</ul>
</li>
<li>服务部署和存储是难点
<ul>
<li>考虑到服务的稳定性和成本，选择一个易于部署且存储成本较低的方案。</li>
</ul>
</li>
<li>访问速度是考虑项
<ul>
<li>评论系统的访问速度直接关系到用户体验，
因此需要选择一个能够提供较快访问速度的系统。</li>
</ul>
</li>
</ul>
<p>从功能上面分析需要的能力：</p>
<ul>
<li>邮件通知</li>
<li>Markdown</li>
<li>内容安全：No Injection</li>
<li>评论审核和删除</li>
<li>授权登录（Optional）</li>
</ul>
<p>非功能需求：</p>
<ul>
<li>低成本：控制在 12 元 / 年</li>
<li>系统稳定</li>
</ul>
<p>通过明晰这些原则和要求，可以更有针对性地选择合适的评论系统，确保满足核心功能和非功能需求。接下来，将根据这些原则，继续探讨如何选择和搭建评论系统。</p>
<h2 id="初步方案探索">初步方案探索</h2>
<p>现在我们初步试验一些方案并进行一些探索，以方便我们熟悉一下当前常见系统的<mark>特性和水准</mark>。</p>
<h3 id="utterances"><a href="https://utteranc.es/">utterances</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/utterances.png" alt="utterances"  />


</p>
<ul>
<li>经常见到的一个评论系统，流行于程序员群体，基于 Github Issues 系统因此免费，需要使用 Github 账号登录</li>
<li>7.8k star</li>
<li>托管在 Github Issues</li>
</ul>
<h3 id="twikoo"><a href="https://twikoo.js.org/quick-start.html">Twikoo</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/twikoo.png" alt="twikoo"  />


</p>
<ul>
<li>国产方案，基于云服务展开，需要寻找云函数部署环境（大部分收费）</li>
<li>880 star</li>
</ul>
<h3 id="cusdis"><a href="https://cusdis.com/">Cusdis</a></h3>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/cusdis.png" alt="cusdis"  />


</p>
<ul>
<li>国产方案，提供免费的 Cloud 服务（但是额度比较受限）</li>
<li>2.4k star</li>
<li>支持迁移</li>
<li>手工通过评论</li>
<li>活跃度不高</li>
</ul>
<p>我同时还看了一些外部的一些方案评测报告：</p>
<ul>
<li><a href="https://gohugo.io/content-management/comments/">Comments | Hugo</a></li>
<li><a href="https://cloud.tencent.com/developer/article/2196035?areaSource=&amp;traceId=">静态博客评论系统的选择 - 腾讯云开发者社区-腾讯云</a></li>
<li><a href="https://sspai.com/post/73412">轻量级开源免费博客评论系统解决方案 （Cusdis + Railway） - 少数派</a></li>
</ul>
<p>根据初步方案探索，我可以明确部署形态基本如下：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/comment-system-deploy-diagram.png" alt="comment-system-deploy-diagram"  />


</p>
<h2 id="横向对比">横向对比</h2>
<p>这是一个横向对比表格，列举我一些关心的特性以及候选者在这些特性方面的表现。除了上述提到几款常见软件，
我还额外调研了<mark>海外常用的评论 SaaS 服务</mark>：</p>
<table>
	<thead>
			<tr>
					<th>Name</th>
					<th>self-host</th>
					<th>Official SaaS</th>
					<th>SaaS Free</th>
					<th>Star</th>
					<th>Import Disqus</th>
					<th>export data</th>
					<th>Comments</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Utterances</td>
					<td>x</td>
					<td>v</td>
					<td>v</td>
					<td>7.8k</td>
					<td></td>
					<td>v</td>
					<td>Github account required</td>
			</tr>
			<tr>
					<td>Cusdis</td>
					<td>v</td>
					<td>v</td>
					<td>v?</td>
					<td>2.3k</td>
					<td>v</td>
					<td>v?</td>
					<td>import from Disqus failed</td>
			</tr>
			<tr>
					<td>Cactus Comments</td>
					<td>v</td>
					<td>v</td>
					<td></td>
					<td>100</td>
					<td></td>
					<td></td>
					<td>Matrix Protocol, blocked</td>
			</tr>
			<tr>
					<td>Commento</td>
					<td>x</td>
					<td>v</td>
					<td>$10/month</td>
					<td></td>
					<td>v</td>
					<td>v</td>
					<td></td>
			</tr>
			<tr>
					<td>Graph Comment</td>
					<td></td>
					<td>v</td>
					<td>Free to $7</td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>Hyvor Talk</td>
					<td>x</td>
					<td>v</td>
					<td>$12/month</td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>IntenseDebate</td>
					<td></td>
					<td>v</td>
					<td>?</td>
					<td></td>
					<td>x</td>
					<td></td>
					<td>too old</td>
			</tr>
			<tr>
					<td>Isso</td>
					<td>v</td>
					<td>x</td>
					<td></td>
					<td>4.8k</td>
					<td>v</td>
					<td></td>
					<td>sqlite storage</td>
			</tr>
			<tr>
					<td>Mutt</td>
					<td></td>
					<td>v</td>
					<td>$16/month</td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>Remark42</td>
					<td>v</td>
					<td>x</td>
					<td></td>
					<td>4.3k</td>
					<td>v</td>
					<td>v</td>
					<td>full featured, one file storage</td>
			</tr>
			<tr>
					<td>ReplyBox</td>
					<td></td>
					<td>v</td>
					<td>$5/month</td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>Staticman</td>
					<td>v</td>
					<td></td>
					<td></td>
					<td>2.3k</td>
					<td></td>
					<td>v</td>
					<td>using github as storage</td>
			</tr>
			<tr>
					<td>Talkyard</td>
					<td></td>
					<td>v</td>
					<td>€4.5/ month</td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>Waline</td>
					<td>v</td>
					<td></td>
					<td></td>
					<td>1.5k</td>
					<td>v</td>
					<td>v</td>
					<td>Multi Storage / Service Provider supported</td>
			</tr>
			<tr>
					<td>Twikoo</td>
					<td>v</td>
					<td>x</td>
					<td></td>
					<td>1.1k</td>
					<td>v</td>
					<td>v</td>
					<td>FaaS / MongoDB</td>
			</tr>
	</tbody>
</table>
<p>根据横向对比我们可以得出几个结论：</p>
<ul>
<li>海外传统评论系统数据透明度低，风格也是是古早型系统</li>
<li>官方提供 SaaS 服务普遍需要收费</li>
<li>self-host 的几个产品需要自己搭建服务，没有一键使用免费的 Cloud Provider 路径</li>
</ul>
<p><strong>小结</strong></p>
<p>符合我需求的几款产品是：Utterances、Cusdis、Waline。</p>
<h2 id="poc-和实施">PoC 和实施</h2>
<p>我最后选择了 utterances 和 Waline 进行 PoC，
其中我的<a href="https://en.blog.alswl.com/">英文博客</a>使用了 utterances，
<a href="https://blog.alswl.com/">中文博客</a>使用了 Waline。</p>
<p>为什么不选择 Cusdis 和 Twikoo？因为 Cusdis 使用 PostgreSQL，
而 Twikoo 存储使用腾讯云函数（免费额度有限）或者 MongoDB，
存储上 Waline 选择更多。
另外，作为同类型方案，Waline 是三者贡献者数量最多的，Commit 数量也最多，
社区更有保障。</p>
<h3 id="waline-实施">Waline 实施</h3>
<blockquote>
<p>一个搞笑的点，如果这里使用 h3 标题叫做「Waline」，会直接在这里插入一个当前博客的评论框</p>
</blockquote>
<ul>
<li>优点
<ul>
<li>多平台部署</li>
<li>多数据库支持（MongoDB、sqlite、PostgreSQL、MySQL）</li>
<li>评论功能强大</li>
<li>导入工具</li>
<li>活跃度尚可</li>
</ul>
</li>
<li>缺点
<ul>
<li>功能太多，不够克制（好在可以自定义配置）</li>
<li>国产产品</li>
</ul>
</li>
<li>接入流程：
<ul>
<li>找个 Storage 供应商（我选择 <mark>LeanCloud</mark>）</li>
<li>找个 Server 供应商部署（我选择 <mark>Vercel</mark>）</li>
<li>找个邮件发送供应商（我选择了 <mark>Brevo</mark>（原来叫 SendinBlue））</li>
<li>前端部署（Hugo 内集成一下）</li>
</ul>
</li>
</ul>
<p>部署图：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202311/waline.png" alt="waline"  />


</p>
<p>具体操作，跟随官方文档即可：</p>
<ul>
<li><a href="https://waline.js.org/guide/get-started/">快速上手 | Waline</a></li>
<li><a href="https://waline.js.org/guide/deploy/vercel.html#%E5%A6%82%0E4%BD%95%E9%83%A8%E7%BD%B2">Vercel 部署 | Waline</a></li>
<li>绑定 CName</li>
<li>导入数据
<ul>
<li>转换 <a href="https://waline.js.org/migration/tool.html">数据迁移助手 | Waline</a></li>
<li>导入 <a href="https://console.leancloud.app/apps/yours/storage/import-export">https://console.leancloud.app/apps/yours/storage/import-export</a></li>
</ul>
</li>
<li>配置页面
<ul>
<li>参考配置系统禁用一些评论功能 <a href="https://waline.js.org/reference/client/props.html">https://waline.js.org/reference/client/props.html</a></li>
<li>启用 SMTP
<ul>
<li>配置 <code>AUTHOR_EMAIL</code></li>
<li>配置 <code>SENDER_NAME</code></li>
<li>配置 <code>SENDER_EMAIL</code></li>
</ul>
</li>
<li>服务端配置 <a href="https://waline.js.org/reference/server/config.html#tgtemplate">https://waline.js.org/reference/server/config.html#tgtemplate</a></li>
</ul>
</li>
<li>遇到的问题
<ul>
<li>Disqus 导出的用户数据没有邮箱，导致 gravatar 没有照片显示，无解</li>
<li>邮箱配置需要额外配置环境变量，否则会暴露自己的个人邮箱</li>
</ul>
</li>
</ul>
<p>实施 PR（仅包含前端，因为后端代码包含了密钥，不便于分享）：
<a href="https://github.com/alswl/blog.alswl.com/commit/e34e34810298fd0d716d4c4a467fada25b3a6622">feat: comments on waline · alswl/blog.alswl.com@e34e348</a></p>
<h3 id="utterances-实施">Utterances 实施</h3>
<p>utterances 的部署则更为简单，一个 PR 就可以启用。
<a href="https://github.com/alswl/en.blog.alswl.com/commit/29028f677e362570a8bcaf5316847ddfa3e9d685">feat: comment using utteranc · alswl/en.blog.alswl.com@29028f6 (github.com)</a></p>
<p>也没有什么特色，主打简单省事，考虑我英文博客访问量极低，就简单方案。</p>
<h2 id="小结">小结</h2>
<p>最后我选择了 Waline / utterances 作为我的评论系统，两者的部署成本都是 0。</p>
<p>妥协牺牲了一些访问速度、安全性，但进一步增强了数据可控性，完成了 self-host。
从稳定性上面来看，尽管这个系统链路变复杂了，单机上也存在可用性风险，
但依托 Vercel / LeanCloud / Brevo 三家 SaaS 服务商，整体风险可控。</p>
<p>毕竟只是一个小小评论系统，0 成本 + 正常工作就行了。</p>
<p>欢迎在下面评测测试一下哦~</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[GitOps 和版本管理]]></title>
    <link href="https://blog.alswl.com/2023/09/gitops-and-version-management/"/>
    <id>https://blog.alswl.com/2023/09/gitops-and-version-management/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-09-23T18:22:27+08:00</published>
    <updated>2023-09-23T18:22:27+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202309/car.png" alt="car"  />


</p>
<p><small>image via <a href="https://www.shipvehicles.com/step-by-step-guide-for-state-to-state-transport/">shipvehicles</a></small></p>
<p>使用 GitOps 管理交付内容是一个常见的 DevOps 使用模式。
我们会使用 Git 进行版本管理，
并通过 Git Tag 来跟踪部署软件的版本。
虽然这看上去可以工作，但在云原生技术的推动下，版本的概念远非如此简单。</p>
<h2 id="版本问题">版本问题</h2>
<p>在引入 GitOps 到 DevOps 流程后，我们可以借助 GitOps 的能力进行持续集成和持续交付。
GitOps 解决了三个核心问题：<strong>内容</strong>、<strong>版本</strong> 和 <strong>协作</strong>。然而，我们经常将注意力集中在内容上，却经常忽略了版本管理问题。</p>
<p>在 GitOps 过程中，有哪些版本管理问题需要解决呢？</p>
<p>一套完整的 GitOps 解决方案包括内容描述（Manifest）、构建方案（Builder）和生效方案（Applier）。其中，内容描述衍生出多种描述语言，从最传统的 <a href="https://www.ansible.com/">Ansible</a> / <a href="https://www.chef.io/products/chef-infra">Chef</a>，到云计算和云原生流行起来的 <a href="https://www.terraform.io/">Terraform</a>、<a href="https://helm.sh/">Helm</a>、<a href="https://kustomize.io/">Kustomize</a> 等。引入了这么多内容描述方式之后，当我们想要明确一个应用的版本时，变得非常复杂。</p>
<p>当提到版本时，我们是<mark>指应用源代码的版本？还是指镜像的版本？或者是指某个基础设施即代码（IaC）仓库的版本</mark>？进一步地，如果我们要发布一组相互关联的应用，例如前端和后端，或者由多个后端应用组成的系统，如何清晰地描述它们之间的<mark>版本依赖关系</mark>？</p>
<p>一旦版本描述不准确，就会引入一系列问题，例如错误的上线版本、混乱的应用依赖关系、无法回滚等。</p>
<p>大多数团队对于这个问题的解决方案比较模糊：发布最新的版本，先发布后端再发布前端。然而，在一个复杂的业务团队或需要同时保留多个稳定版本的团队中，这种粗暴的方案是无法接受的。</p>
<p>版本管理不仅解决了<mark>版本定位</mark>的问题，还可以用于管理应用之间的<mark>依赖关系</mark>。因此，GitOps 版本管理需要解决以下问题：</p>
<ul>
<li>如何构建交付给客户的制品，如何定义这些制品的版本以及如何展示所有版本的制品。</li>
<li>如果有一组软件存在版本依赖关系，如何解决这些依赖问题。</li>
<li>如果一组软件形成了一个系统，如何描述这个系统。</li>
</ul>
<p>在所有的交付产品中，版本管理都是一个重要问题。我们将逐步拆分版本管理这个命题，并从原始问题过渡到 GitOps 的版本管理最佳实践。</p>
<h2 id="gitops-简介">GitOps 简介</h2>
<p>在开始正文之前，我将简要介绍 GitOps，以避免对关键概念的理解出现分歧。</p>
<p>GitOps 最核心的技术是<mark>基础设施即代码（IaC）</mark>，即使用声明式描述来取代命令式描述。
通常，IaC 的内容基于某种范式，用于描述特定目标的期望状态。这个范式可以是 Terraform、Kubernetes YAML、<a href="https://www.pulumi.com/">Pulumi</a>，甚至是 Ansible。而特定目标可以是云服务、Kubernetes，甚至是物理机。
直观的说，通过使用 YAML 取代过去的 Bash 命令，我们可以大大提高变更的准确性和可控性。</p>
<p>对于 GitOps 来说，是否使用 Git 并不是最重要的，我们也可以使用 SVN 来实现 GitOps。只是 Git 具有更广泛的适用范围，并可以充分发挥 Git 仓库在团队协作和持续集成/持续部署中的能力。</p>
<p>引入 Git 仓库后，我们还同时拥有了基于 Git Revision / Tag / Branch 的版本管理能力，这体现在业务上就是版本记录、多版本并行管理等方面。</p>
<p>简单地基于 Git Revision 进行描述还不足以满足我们的实际需求。</p>
<h2 id="问题的源头---二进制文件和启动配置文件版本">问题的源头 - 二进制文件和启动配置文件版本</h2>
<p>在探索版本的源头时，我们会发现最原始的版本是代码的版本。</p>
<p>代码的版本是什么？是代码仓库的版本还是代码编译出来应用的版本。
这个版本并不是代码所在的版本管理系统（如 Git / Mercurial / SVN 等）的版本。尽管这两者经常相关，但事实上，一份代码本身只是一组代码文件，只要构建成功，就会有一个版本。如果没有定义，版本就是未知的，此时与仓库管理没有关联。</p>
<blockquote>
<p>注意：下文我们不再区分 Git / Mercurial / SVN 多种版本管理方案，统一使用 Git 进行描述</p>
</blockquote>
<p>还需要注意的是，中文中有两个概念（库 Libray 和仓库 Repository）。
无论是哪种定义，都没有表示一个库一定是一个版本化（Git / SVN）仓库，
这意味着我们并没有假设代码库一定是被版本化管理的。当我们将代码文件打包成一个 zip 文件时（GitHub 的 zip 下载就是这种形式），即使这个 zip 文件失去了所有的 Git 历史，它仍然是一个代码库。</p>
<p>代码的版本实质上是<mark>应用的版本</mark>，这是作者的意图表达。这个版本往往是 <code>vx.y.z</code> 这种形式，而不是 Git commit hash，
最常见的管理方案是基于<a href="https://semver.org/">语义化版本</a>。</p>
<p>我推荐的版本存储方式是使用一个 <code>VERSION</code> 文件将版本存储在代码目录中。例如，Git 的 <a href="https://github.com/git/git/blob/master/GIT-VERSION-GEN">Version</a> 文件可以清楚地看到当前 Git 的版本是：</p>
<pre tabindex="0"><code>GVF=GIT-VERSION-FILE
DEF_VER=v2.42.GIT
</code></pre><p>其中的 <code>.GIT</code> 也明确说明了这个代码是一个开发模式下的版本。如果我们切换到一个发布版本的代码，例如 <a href="https://github.com/git/git/blob/v2.39.3/GIT-VERSION-GEN">v2.39.3</a> 版本，我们可以看到 <code>DEF_VER=v2.39.3</code>，这是一个遵循标准的制品（Artifacts）格式。这里还有两个最佳实践：</p>
<ul>
<li>使用文件来保存源代码的版本。</li>
<li>源代码中的版本文件始终处于 <code>dev</code> 模式，只有在进行标记封版之后才会成为正式版本号。</li>
</ul>
<p>源代码的最终产物不仅包括二进制文件、可执行文件和动态库（<code>.dll</code> / <code>.so</code> / <code>.dylib</code>），还包括相应的启动配置文件。这些启动配置文件通常与对应的版本一起进行管理。例如，Nginx 的启动文件 <code>nginx.conf</code> 和 Redis 的启动文件 <code>redis.conf</code>，这些启动配置文件也应该纳入版本管理。</p>
<p>从源代码仓库构建出来的内容就是制品（Artifacts）。制品已经具有两个版本：</p>
<ul>
<li>源代码版本，即使用 <code>VERSION</code> 文件中定义的版本。</li>
<li>源代码仓库版本，即 Git Revision</li>
</ul>
<h2 id="制品版本管理">制品版本管理</h2>
<p>引入制品版本管理后，问题变得更加复杂，因为制品带来了更多的问题：</p>
<ul>
<li>制品是什么，由什么构成？（上文已经回答）</li>
<li>制品如何进行安装，安装程序（Installer）是什么，运行时（Runtime）是什么？</li>
<li>制品信息如何进行集中管理，数据如何管理？</li>
<li>制品之间是否存在依赖关系，如何处理依赖关系，版本如何约束？</li>
</ul>
<p>制品的概念非常重要，其中最核心的一个理念是：<mark>制品可以通过打包器形成新的制品</mark>。</p>
<p>由于制品具有版本，而新的制品将形成新的版本，我们将进入多层嵌套。为了避免最原始的版本信息丢失，我们将 Version 的概念扩展为 <mark>Upstream Version</mark>，这是软件作者人为指定的版本，是所有版本的源头。</p>
<p>为什么制品可以形成新的制品呢？我举一个 Kubernetes 容器环境下的例子。
容器是一种交付形式，它将可执行文件和启动配置文件写入镜像文件中，并可以在容器环境中运行。形成的镜像文件存在于镜像仓库中，本身也是一种制品。</p>
<p>另外，Helm / Kustomize 也是一种交付形式（打包工具链）。
每个构建层解决其特定问题，并且可以在特定环境（例如容器、Kubernetes、云基础设施）中运行。</p>
<p>每个制品都需要构建，过程中会有自己的<mark>额外描述信息（Packaging Info）</mark>，这些额外的描述信息本身也会发生变化，因此会增加一个版本。在实践中，我们希望制品的版本与其上游版本绑定。每种打包机制可能会包含自己的一些定义配置，但仍然遵循上游的版本。例如，Kubernetes 的 Workload 包含一个镜像，Workload 的描述是附加信息，而镜像仍然受到上游控制。</p>
<p><mark>Artifact + Packaging Info = New Artifact</mark>，制品经过打包可以形成新的制品。直到最后的 Installer 放置到相应的环境中生效。</p>
<p>如果这些制品可以通过文件（IaC）进行描述，就形成了各种 IaC 仓库，这些仓库成为了 GitOps 的核心对象。</p>
<h2 id="概念梳理">概念梳理</h2>
<p>让我们来理清一下这些略有晦涩的概念：</p>
<table>
	<thead>
			<tr>
					<th>中文</th>
					<th>英文</th>
					<th>解释</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>源代码</td>
					<td>Source Code</td>
					<td>程序、应用的源文件集合</td>
			</tr>
			<tr>
					<td>代码仓库</td>
					<td>Source Code Repo</td>
					<td>源代码放到版本管理系统中的管理单元</td>
			</tr>
			<tr>
					<td>版本</td>
					<td>Version</td>
					<td>源代码对应的应用版本，人为定义，语义化，有些场景会说 Upstream Version</td>
			</tr>
			<tr>
					<td>可执行文件</td>
					<td>Executable File</td>
					<td>源代码构建出来的结果，一般是 ELF 可执行文件，也可以是 Lib 文件</td>
			</tr>
			<tr>
					<td>启动配置文件</td>
					<td>Configuration File</td>
					<td>配套 ELF / Lib 的启动配置文件，区别于广泛意义上的配置文件（比如 Kubernetes YAML）</td>
			</tr>
			<tr>
					<td>制品</td>
					<td>Artifact</td>
					<td>包含可执行文件和启动配置文件的集合，可以运行在运行时下面，一般是文件形态。制品可以嵌套制品。</td>
			</tr>
			<tr>
					<td>安装器</td>
					<td>Installer</td>
					<td>将制品安装到运行时的工具</td>
			</tr>
			<tr>
					<td>运行时</td>
					<td>Runtime</td>
					<td>制品的运行环境，比如特定操作系统，Kubernetes，Docker Engine。</td>
			</tr>
			<tr>
					<td>打包器</td>
					<td>Packer</td>
					<td>将制品打包成特定格式（新的制品）的工具</td>
			</tr>
			<tr>
					<td>打包附属信息</td>
					<td>Packaging Info</td>
					<td>制品打包时候需要的额外信息，比如容器的操作系统，进程的运行容量，默认环境变量等</td>
			</tr>
	</tbody>
</table>
<p>这些概念共同构成了制品版本管理的核心要素，帮助我们管理和跟踪制品的不同版本，以及它们之间的关联和依赖关系。</p>
<h3 id="打包器-packer">打包器 Packer</h3>
<p>打包器是一种工具，通过打包操作（Packaging）将制品组织成特定的格式，形成全新的制品。
打包的过程涉及编译、链接、合并和存档等常见概念。</p>
<p>它通常以上游（Upstream）作为输入，上游可以是源码，也可以是其他系统生成的制品（Artifacts）。</p>
<p>例如，在打包 Docker Compose 时，输入是镜像（Image），而对于 Helm，输入则包括镜像、启动配置文件和 Helm 模板，而输出则是 YAML 文件。</p>
<h3 id="制品-artifacts">制品 Artifacts</h3>
<p>制品是一种数据集合，可以在特定环境中运行。
它由可执行文件和启动配置文件等组成，通常以文件形式存在，并且可以在运行时环境下运行。制品具有嵌套的能力，可以包含其他制品。</p>
<p>最常见的形态是二进制文件（ELF），也可以是适用于特定环境的运行物，如容器镜像。</p>
<p>制品通常以文件形式进行传输。</p>
<h3 id="安装器-installer">安装器 Installer</h3>
<p>安装器是一种工具，用于将制品安装到运行时环境中。
它负责将制品部署到目标环境并确保其正常运行。
例如，dpkg、Pacman 是常见的安装器工具，而在 Windows 平台上，我们常见自引导的安装器。</p>
<p>对于特定的环境如 Kubernetes，我们可以使用 kubectl 命令进行安装，而 Helm 则使用<code>helm</code>命令来进行安装。</p>
<h2 id="linux-社区实践">Linux 社区实践</h2>
<p>当我们理解了这些概念后，我们或许会惊讶地发现，这些概念与 Linux 社区多年来的实践是如此相似。抛开云原生等新概念，Linux 社区早就拥有了完整的解决方案。</p>
<p>每一层制品都会引入新的配置（Config）/ 扩展（Extension）/ 值（Values）/ 环境变量（Env）等等，无论如何称呼，
我们统一称之为配置。
这些新加入的 Packaging Info 的描述在大规模集群管理下也带来了新的问题。</p>
<blockquote>
<p>自豪地使用 ArchLinux。</p>
</blockquote>
<h3 id="arch-linux-社区的实践">Arch Linux 社区的实践</h3>
<p>Arch Linux 使用 <a href="https://wiki.archlinux.org/title/Pacman">Pacman</a> 作为包安装器，并且拥有一套完整的<a href="https://wiki.archlinux.org/title/Arch_build_system">构建方案</a>。</p>
<p>在 Arch Linux 中，<code>PKGBUILD</code> <a href="https://wiki.archlinux.org/title/PKGBUILD">link</a>用于描述包的构建方式，它本身是 Bash 的子集，是描述包的核心文件。</p>
<p>版本管理方面，Arch Linux 提供了清晰明确的方案，并且设计了完整的<mark>制品嵌套</mark>解决方案。
在 <code>PKGBUILD</code> 中，<code>pkgver</code> 表示上游版本，并经过适当的修正，使用 <code>_</code> 替代 <code>-</code>，并调整了时间戳的格式。而 <code>pkgrel</code> 则表示发布号，而不是构建号，每次发布都会增加该号码，用于管理 Arch Linux 的发布动作。当大部分 <code>PKGBUILD</code> 发生变化时，发布号都会发生变化。</p>
<p>此外，<code>epoch</code> 是一个强制构建版本的机制，默认为 0 并且隐藏起来。使用 <code>epoch</code> 是一种兜底的解决方案，通过破坏版本对比来强制进行新版本的升级。</p>
<p>另外，在 <code>PKGBUILD</code> 中，使用了版本依赖的方式来优雅地解决模块的问题。
例如，<code>base-devel</code> 包是对 26 个基础软件的依赖，而<a href="https://gitlab.archlinux.org/archlinux/packaging/packages/base-devel/-/blob/main/PKGBUILD">该包本身</a>并<mark>没有具体的内容</mark>。这种方案非常优雅，避免了引入一个新的模型（比如叫做 Group / 产品）。</p>
<h2 id="基于-gitops-的版本管理解决方案">基于 GitOps 的版本管理解决方案</h2>
<p>最后让我们回归到 GitOps 版本管理本身，让我们重新面对文中的几个问题，通过以上的分析和调研，是否已经解决了这些问题呢？</p>
<ul>
<li>交付给客户的制品如何构成，如何定义这个制品的版本，以及如何呈现所有版本的制品？
<ul>
<li>使用 <code>VERSION</code> 文件来确定软件版本，也就是上游版本（Upstream Version）</li>
<li>不同形式的制品有独立的版本号，这些版本号需要与上游版本关联。例如，可以使用 <code>v1.2.3-afe12c</code> 的形式来追踪 Git 仓库中的版本，使用 <code>v1.2.3-afe12c-b1</code> 来追踪镜像构建物的版本。</li>
</ul>
</li>
<li>如果存在一组软件，如何解决这组软件之间的版本依赖问题？
<ul>
<li>这个问题可以交给具体的安装器处理，一般这些元信息会在对应的打包信息（Packaging Info）中定义，并由 Installer 识别和处理。</li>
</ul>
</li>
<li>如果一组软件形成了一套体系，如何表达这个体系？
<ul>
<li>创建一个没有上游版本的新制品，其中交付的内容可能为空，但包含相应的打包信息和依赖信息。</li>
<li>（或者）也可以真正抽象出一个新的概念来进行管理，这取决于打包器和安装器之间的协作。</li>
</ul>
</li>
</ul>
<h2 id="总结">总结</h2>
<p>版本管理的智慧，其实已经体现在当年的 RPM / DEB / PKGBUILD 中。
我们通过明确版本定义权交给应用作者，提出制品嵌套的概念，允许版本的概念进行多层嵌套。</p>
<p>我们希望，最后运行的制品版本仍然是原始应用版本（Upstream Version）的衍生。毕竟，
让每个运行的程序都知道自己来自何处、自己是谁，在大规模集群管理下已经变得相当重要。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[架构设计 the Easy Way]]></title>
    <link href="https://blog.alswl.com/2023/07/architecture-design-the-easy-way/"/>
    <id>https://blog.alswl.com/2023/07/architecture-design-the-easy-way/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-07-29T14:54:27+08:00</published>
    <updated>2023-07-29T14:54:27+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/arch-easy.png" alt="arch-easy"  />


</p>
<p><small>image via <a href="https://pixabay.com/photos/child-tower-building-blocks-blocks-1864718/">Pixabay</a></small></p>
<h2 id="概览">概览</h2>
<p>前几日，我在团队内部举行了一场技术分享，我介绍了关于架构设计的最佳实践。将这些实践凝练成了 <mark>20 字口诀</mark>：</p>
<ol>
<li>架构看问题</li>
<li>需求看用例</li>
<li>设计看模型</li>
<li>细节看时序</li>
</ol>
<p>我将顺口溜转到了 <a href="https://twitter.com/alswl/status/1683778487726006272">Twitter</a>，不少朋友对这些顺口溜产生了浓厚兴趣，希望深入了解。因此，我将我分享中的观点扩展成了这篇文章。</p>
<h2 id="架构设计和系统分析">架构设计和系统分析</h2>
<p>让我们首先澄清 <mark>什么是架构设计和系统分析</mark>（简称系分）。有些朋友对前者很熟悉，对后者却不太了解。
不过没关系，以下是维基百科上的介绍：</p>
<blockquote>
<p>架构，<strong>软件架构</strong>是有关软件整体结构与组件的抽象描述，用于指导大型软件系统各个方面的设计。</p>
<p>系统分析，旨在研究特定系统结构中各部分（各子系统）的相互作用，系统的对外接口与界面，以及该系统整体的行为、
功能和局限，从而为系统未来的变迁与有关决策提供参考和依据。</p>
</blockquote>
<p>来看一下英文定义可能会更清晰：</p>
<ul>
<li>架构 = 软件架构（设计） = Software Architecture <a href="https://en.wikipedia.org/wiki/Software_architecture">Software architecture - Wikipedia</a></li>
<li>系分 = 系统分析 = System Analysis
<a href="https://en.wikipedia.org/wiki/Systems_analysis">Systems analysis - Wikipedia</a> + <a href="https://en.wikipedia.org/wiki/Systems_design">Systems design - Wikipedia</a></li>
</ul>
<p>我们有时候提到的设计文档，可能涵盖整个设计过程，包括架构设计、系统分析以及其他设计活动（交流、PoC）。</p>
<p>软件架构（设计）= Software Architecture</p>
<ul>
<li>设计和实现软件系统的基本结构和组织形式</li>
<li>在业务层面：明确问题，厘定概念，呈现价值</li>
<li>在技术层面：确定基础框架，将不确定性转化为确定性</li>
<li>工程层面：识别边界和拆分各个模块，提高应用开发效率</li>
</ul>
<p>系统分析 = System Analysis</p>
<ul>
<li>对业务需求和问题进行分析和研究的过程</li>
<li>在业务层面：需求收集、需求分析</li>
<li>在技术层面：建模，绘制流程图、数据流图和接口设计</li>
<li>工程层面：在应用、系统框架内实现需求</li>
</ul>
<p>最后，我来解释一下我对这两者边界的理解。实际上，我认为<mark>架构设计和系统分析并没有明显的界限</mark>。
一个系统或模块不管如何都会进行系统分析，而当出现以下几个特征时，就开始考虑架构设计问题：</p>
<ul>
<li>当有超过 3 个团队在协作时，因为这时涉及到利益和边界的问题。</li>
<li>当开始主动或被动引入不确定性。</li>
<li>当开始平衡取舍，需要先做到什么程度，再做到什么程度。</li>
<li>当不系统过于复杂，太容易达成一致，开始有解释成本时。</li>
<li>当能够提供别人不了解的信息。</li>
</ul>
<h2 id="什么是架构">什么是架构</h2>
<p>在这里，我们讨论的是技术架构，不会涉及业务架构或产品架构等方面。
技术方面的讨论重点是<mark>如何更高效地利用技术能力和方法来解决特定类型的问题</mark>。</p>
<p>进一步地，技术架构可以分为两种：一种是<mark>从顶层向下</mark>看，包括业务、战略和框架划分；
另一种是<mark>关注工程实现（编码）</mark>层面需要解决的架构问题。</p>
<p>那些经验丰富的人常常有较宏观的视角，使用的常见名词有：全局、宏观、领域、战略、平衡、规划。我将这些词汇整理成了一个词云如下：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/word-cloud-arch-biz.png" alt="word-cloud-arch-biz"  />


</p>
<p><small>generted by <a href="https://tendcode.com/tool/word-cloud/">https://tendcode.com/tool/word-cloud/</a></small></p>
<p>以上这些概念在架构设计和系统分析中都非常重要，因为它们帮助我们在整体上考虑问题，甚至超越技术层面，
从业务价值、商业策略和业务战略的角度思考问题。</p>
<p>另一种架构偏重于工程设计和实现。常见的关键词有：领域建模、UML、GoF23，SOLID，高内聚低耦合等等。对应的词云如下：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/word-cloud-arch-impl.png" alt="word-cloud-arch-impl"  />


</p>
<p><small>generted by <a href="https://tendcode.com/tool/word-cloud/">https://tendcode.com/tool/word-cloud/</a></small></p>
<p>架构的话题非常广泛，本文选择从一个切入点出发：<mark>通过实践和方法论，使架构意识在日常工作中发挥作用，以满足 80%的工程设计开发场景</mark>。
我称之为「架构设计 the easy way」。</p>
<h2 id="极简架构设计---架构看问题">极简架构设计 - 架构看问题</h2>
<p>理解架构的第一步，也是最重要的一步，就是关注「问题」。也就是说，<mark>你遇到了什么问题，你将如何去解决它</mark>？</p>
<p>通常情况下，如果我们的业务和系统都稳定运行，没有遇到任何问题，我们就不太需要进行架构设计。但是，只要涉及到架构设计，
必定是因为我们遇到了问题。这些问题可能源自新的需求，也可能是外部环境的变化，
亦或是系统自身随着时间的发展而出现的。无论问题的来源如何，我们都遇到了问题。</p>
<p>遇到问题之后，我们该如何解决？就像将大象装进冰箱一样，需要分成几个步骤。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/elephant.png" alt="把大象装进冰箱"  />


</p>
<p><small>image via unkown</small></p>
<p>因此，解决问题也有三个步骤：第一步是将问题描述清楚，第二步是进行协商和决策达成一致，第三步则是着手解决问题。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/q-n-a.png" alt="问题-一致-行动"  />


</p>
<p>我还想问一个听上去很愚蠢的问题：为什么不能直接解决问题？</p>
<p>因为问题是复杂的，有许多解决路径，不同的解决方案各有优劣和成本。在架构设计中，我们需要完成这些决策。</p>
<p>那为什么不直接进行决策，甚至直接开始动手？</p>
<p>首先可能涉及到职权问题，架构师未必有最终决策权，需要有决策权的人来做最后的决定。
第二个原因是架构师未必是方方面面的专家，设计一个复杂系统时候需要协调多个部分和领域专家来一起评估决策。</p>
<h3 id="案例">案例</h3>
<p>我举 Prometheus 的架构设计来作为例子。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/prometheus-architecture.png" alt="Prometheus architecture"  />


</p>
<p><small>image via <a href="https://prometheus.io/docs/introduction/overview/">Prometheus</a></small></p>
<p>这个架构图回答了很多问题，我举几个例子：</p>
<ul>
<li>问题：数据采集使用 Push 还是 Pull？使用什么存储？如何设计告警链路？</li>
<li>决策：采用 Pull（少量情况下使用 Pushgateway）；使用自己实现的 TSDB；使用 Alertmanager 与外部系统对接</li>
<li>ROI：采用 Pull 降低 Target 观测成本，不需要使用 Push-based 的 Registry；
没有现成的外部实现（当时）；提供 Router / Sub 的告警机制以便灵活接入外部系统</li>
</ul>
<h3 id="小结">小结</h3>
<p>问题驱动架构变化，架构方案应对问题，架构评审统一解决方案。</p>
<p>关于决策拍板问题。我强烈推崇架构师根据自己具备的领域知识、对行业的判断以及对现状的了解，
做出自己的思考和独立判断。这些思考过程应该有因果关系的支持，<mark>一个优秀的架构师必定拥有自己的观点</mark>。</p>
<p>最后，我补充一个小问题：为什么这里没有提到架构分层、模块分层？</p>
<p>不是因为分层和框架不重要，而是在因为大家都很专业。分层和模块化已经是基本常识和技能，因此反而往往不会成为争论和决策的焦点。
如果分层和框架无法快速形成一致，有可能团队构成上存在问题，也可能问题过于复杂已经不是 80% case。</p>
<p>在本阶段，产出的成果包括架构图以及对问题、价值、成本、风险和分工达成一致的认识。</p>
<h2 id="极简架构设计---需求看用例">极简架构设计 - 需求看用例</h2>
<p>需求是对问题的解答。我个人喜欢用<mark>思维导图或白纸来画图</mark>，将需求讲清楚。
画什么内容呢？理清角色，并列出各种动作和行为。</p>
<p>那有什么技巧可以将事项都整理出来呢？我经常使用<mark>主谓宾状从</mark>的方法。
也就是说，明确哪些人，在什么场景（可选），以什么状态（可选）做着什么事情。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/gramma.jpg" alt="主谓宾"  />


</p>
<p><small>image via unkown</small></p>
<p>通过用例将需求清晰地拆解，并在这个过程中不断与需求提供方进行交流和沟通。</p>
<p><mark>Demo 稿是产品经理的武器，而需求用例则是工程师的武器。</mark></p>
<p>有些初入职场的研发人员会不自然地变成需求的执行者。我比较果断地判断，不了解业务的工程师和外包没什么区别。而需求分析环节是最重要的，
是对业务输入进行理解、梳理、重新设计的机会。通过用例的整理，我们可以将一些不切实际、不可靠的需求反馈给需求方。</p>
<p>这是少数可以推动（反馈）需求方的阶段，一定要珍惜。</p>
<h3 id="案例-1">案例</h3>
<p>这里有一个产品用例的范例：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/netease-music.png" alt="网易云音乐"  />


</p>
<p><small>image via <a href="https://www.woshipm.com/evaluating/3493594.html">网易云音乐产品分析报告</a></small></p>
<p>实际上，这个用例是敌对势力那边总结的 😄，但仍然能够体现用例的重要性。</p>
<h3 id="小结-1">小结</h3>
<p>除了使用主谓宾的方式来进行设计，还有一些其他技巧：</p>
<ul>
<li>使用动线（行动路线）：想象用户（或行动者）完成他们目标的行动路线</li>
<li>可以优先考虑解决核心路径中的 20%问题</li>
<li>通过分角色、正交拆分等方式将用例整理得更加清晰；将用例分类分到各个模块</li>
</ul>
<p>本阶段的产出物包括：Demo 稿、用例图。</p>
<h2 id="极简架构设计---设计看模型">极简架构设计 - 设计看模型</h2>
<p>在我看来，设计的核心在于模型：<mark>模型确定了数据的载体和边界</mark>。而<mark>数据确定了组成部分，边界则确定了归属和职责</mark>。
在 UML 中，大量的 Entity 和 Object 用于确定模型的边界。
随着业务系统复杂程度的增加，建模也会面临更加复杂的挑战。</p>
<p>我总结了一下我建模的几个要点：</p>
<ul>
<li>明确术语（中英文）、含义、备注。</li>
<li>确定核心模型（重点放在最关键的 20%）。</li>
<li>提炼和抽象模型。</li>
<li>明确模型之间的关联关系。</li>
<li>结合动态和静态：少量模型具有行为，关注其提供的功能（Functions）。</li>
<li>业务模型 &lt;-&gt; 数据模型转换。</li>
</ul>
<p>很多人对中英文术语表不屑一顾，但我却很在意这点。有一个效应叫做「外语陌生感」（Foreign Language Effect），
就像博物学使用拉丁语 / 希腊语来描述物种一样。我们非英语母语的工程师，使用英文描述术语可以快速地聚焦问题。</p>
<p>始终牢记 80/20 原则的存在，特别是在设计阶段，一定要关注核心对象，将其放大而非过度关注细节。
一般来说，关注最核心的 20%模型就可以满足大部分场景。</p>
<p>在模型的提炼和抽象过程中要反复斟酌，并且可以将这个过程联动到前期的用例定义和后期的时序设计，
这需要大量领域知识的支持。我个人喜欢在这个阶段参考外部的代码和设计。</p>
<p>模型之间的关联关系主要是 1:1 / 1:N / M:N 关系，需要使用箭头清楚地标记主从关系。主从关系意味着从属关系，
这会影响后续一系列细节设计（如 URL、数据库、生命周期管理等）。
我个人推荐避免使用 M:N 关系，这种形式通常表明中间会有一个凭证（Credential）或关系（Relationship / Binding）。</p>
<p>除了关注静态的数据，还要关注模型的行为（极少量模型才有）。这个阶段可以进一步做一些识别，方便下一步的细节设计。</p>
<p>完成业务模型设计之后，同时要考虑数据模型。对于普通业务系统，这个转换会非常直观简单。业务系统通常是无状态系统，
完全依赖数据库进行存储。如果面临 DIA（Data Intensive Application）系统，就要考虑运行时数据的管理，
以及一系列复杂的生命周期管理和可用性管理（我估计有这个需求的朋友，不会看到这里了）。</p>
<h3 id="案例-2">案例</h3>
<p>我举例一个 Kubernetes 的 RBAC（Role-Based Access Control）系统，这是常见的 AuthZ 授权鉴权系统（注意，不是 AuthN 认证系统）。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/rbac.png" alt="Kubernetes RBAC"  />


</p>
<p><small>image via <a href="https://dev.to/alcide/kubernetes-rbac-moving-from-it-s-complicated-to-in-a-relationship-1bbm">Kubernetes RBAC - DEV Community</a></small></p>
<p>这里我抛几个问题：</p>
<ul>
<li>为什么需要使用 Role / ClusterRole 两种？它们的结构如何？</li>
<li>为什么不使用 ACL？使用 ACL 和使用 RBAC 有什么差异？</li>
<li>为什么不用 Policy？为什么不使用 Policy？</li>
</ul>
<p>这些答案都需要建模来回答的。</p>
<h3 id="非业务系统的模型">非业务系统的模型</h3>
<p>在我们的讨论中，更多关注的是业务模型，即用户能感知并产品能理解的模型，通常需要存储在数据库中。</p>
<p>但在基础设施领域，也是有模型的，有时候称之为&quot;概念&quot;（Concept）。基础设施领域的模型通常会简单得多，
而业务模型可能会非常复杂，因为世界本身就很复杂，而基础设施则专注于解决非常垂直领域的问题，因此相对简单。</p>
<p>此外，基础设施领域的特殊性会导致有很多抽象的建模，例如最简单到我们常常忽略的（Manager / Service）类别。
一些带有数据和状态的模型，比如 Executor，是常见的概念，而 Registry / Queue 也是常见的概念。</p>
<p>这是 Kubernetes的 <a href="https://kubernetes.io/docs/concepts/">Concepts</a>，十几个子类，上百个概念更显这个系统的复杂性。</p>
<h3 id="小结-2">小结</h3>
<p>模型不仅仅是数据，还涉及边界，边界决定了其归属和职责。</p>
<p>模型的设计需要动静结合来看，静态方面关注其持有的内容，动态方面则关注其提供的功能。</p>
<p>在基础设施领域，模型的产出可能包括 UML Model 图、ER 图、数据库 DML、类文件、OpenAPI Swagger（部分）等。</p>
<h2 id="极简架构设计---细节看时序">极简架构设计 - 细节看时序</h2>
<blockquote>
<p>程序设计 = 数据结构 + 算法 + 流程控制</p>
</blockquote>
<p>在将设计转换为模型之前，最后一个重要的步骤是控制细节。对于需求方和决策者来说，这一步可能并不重要，
但对于实施方（开发团队）来说，这个步骤直接影响交付结果的质量和时间。</p>
<p>我认为细节应该在时序图上进行呈现。</p>
<p>通常我们有两种常用的图形来展示细节：<mark>流程图和时序图</mark>。两者实际上有很多相似之处，
但我个人更喜欢时序图，因为它不仅包含顺序的概念，还清晰地展示了流程和系统之间的交互边界。</p>
<p>我的技巧是，一般每个用例都会对应一个时序图。</p>
<h3 id="案例-3">案例</h3>
<p>这里以 AWS 一个官方博客作为范例：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202307/aws-seq.png" alt="Header-based API Gateway versioning with CloudFront"  />


</p>
<p><small>via <a href="https://aws.amazon.com/blogs/architecture/sequence-diagrams-enrich-your-understanding-of-distributed-architectures/">AWS Architecture Blog</a></small></p>
<p>在上图中，展示了 AWS 中使用 CloudFront 的一个时序图，从时序图中可以清晰地看到多个系统之间请求的流转以及多种异常状态的处理。</p>
<h3 id="小结-3">小结</h3>
<p>这里我总结一下时序图的小技巧：</p>
<ul>
<li>用户动作是发起</li>
<li>系统边界要清晰</li>
<li>有去有回是同步</li>
<li>有去无回是异步</li>
</ul>
<p>一般来说，时序图画好了，就可以放心地交给项目团队开始实施，不会有大的错误。如果没有时序图，依赖的就完全是彼此之间的合作经验和信任度了。</p>
<p>产出：时序图、API 文档（Open API Swagger）、前端 service 生成（如果有）。</p>
<h2 id="极简架构设计---小结">极简架构设计 - 小结</h2>
<p>在这个阶段，尽管我们还没有开始编写代码，但已经清楚了需要做什么，以及实现的样子。
我们也有了类结构、API 定义、前端服务生成等产出。多个团队可以同时开始协作，没有明显的瓶颈。</p>
<ul>
<li>✅ 问题定义</li>
<li>✅ 解决方法</li>
<li>✅ 类结构、API 定义</li>
<li>✅ 服务端代码生成</li>
<li>✅ 流程确定</li>
<li>✅ 汇报材料 1/3</li>
<li>✅ 技术分享材料 1/2</li>
</ul>
<p>如果未来需要汇报，汇报材料已经有了 1/3 的内容。如果需要撰写技术分享文档，也已经具备了 1/2 的内容。</p>
<p>如果这个项目是一个简单的 CRUD 应用系统，那么基本不会有什么难点。</p>
<p>如果是一个 DIA 系统（Data Intensive Application），则需要开始设计和实施数据存储部分，并考虑数据一致性和并发相关的问题。对于一个复杂的系统，
还需要继续实施多个系统连接处是否存在不确定性。如果在工程上面临同步方面的挑战，例如应用框架改造、通讯系统改造等，
也要提前进行风险排除。（我认为同时进行技术升级和业务开发并不明智）。</p>
<h2 id="番外---画图工具">番外 - 画图工具</h2>
<p>我有一套自己的画图工具套件，涵盖了系统架构图、流程图等绘制。
PS：我甚至还给自己的产品设计 Logo，或许这与我内心渴望成为一名设计师有关吧~</p>
<p>作为一名工程师，必须积累自己的画图 UI Kit，熟练掌握其技巧，构建一套属于自己的工具包，
从而能够将脑海中的构思快速还原到文档中。</p>
<p>我的画图工具组合相当丰富。用于绘制架构图的工具包括：</p>
<ul>
<li>框图
<ul>
<li>OmniGraffle（收费，复杂、美观）</li>
<li>Excalidraw（简单、随性）</li>
</ul>
</li>
<li>部署图
<ul>
<li>Excalidraw</li>
</ul>
</li>
<li>脑图 MindMap
<ul>
<li>SimpleMind（收费）</li>
<li>XMind（收费）</li>
</ul>
</li>
</ul>
<p>用来做工程设计（UML）的工具如下：</p>
<ul>
<li>use case 用例
<ul>
<li>语雀画图</li>
<li>plantuml（语雀支持渲染）</li>
</ul>
</li>
<li>sequence 时序图
<ul>
<li>plantuml</li>
</ul>
</li>
<li>state 状态图
<ul>
<li>语雀</li>
</ul>
</li>
<li>ER 图
<ul>
<li>Excalidraw</li>
</ul>
</li>
<li>Gantt 甘特图
<ul>
<li>plantuml</li>
</ul>
</li>
</ul>
<p>这里我再软广一下我维护的 <a href="https://excalidraw.alswl.com/">Excalidraw（Fork）</a>，支持中文手写字体，保持风格的统一。</p>
<h2 id="番外---the-hard-way">番外 - the Hard Way</h2>
<p>回到本次分享的出发点，给大家一份简单可行的架构设计方案。
但是对于你这样好学的人来说，肯定不会满足于如此简单的流程，
毕竟还有那 20% 的复杂场景无法完全涵盖。
我给你一个关键词列表和一些建议的书单，帮助你进一步加深学习：</p>
<ul>
<li>原则</li>
<li>理念</li>
<li>思想</li>
<li>规律</li>
<li>方法论</li>
<li>案例</li>
</ul>
<p>以下是一些书单，可以帮助你深入学习：</p>
<ul>
<li>业务架构
<ul>
<li><a href="https://book.douban.com/subject/1792387/">UML 和模式应用 - Craig Larman</a></li>
<li><a href="https://book.douban.com/subject/5344973/">领域驱动设计 - Eric Evans</a></li>
</ul>
</li>
<li>技术架构
<ul>
<li><a href="https://book.douban.com/subject/30468597/">重构 - Martin Fowler</a></li>
<li><a href="https://book.douban.com/subject/4199741/">代码整洁之道 - Robert C. Martin</a></li>
</ul>
</li>
</ul>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[实用 Web API 规范]]></title>
    <link href="https://blog.alswl.com/2023/04/web-api-guidelines/"/>
    <id>https://blog.alswl.com/2023/04/web-api-guidelines/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-04-03T11:34:18+08:00</published>
    <updated>2023-04-03T11:34:18+08:00</updated>
    
    <content type="html"><![CDATA[<p>当开始创建一个新系统，或参与一个新团队或项目时，都会面临一个简单却深刻的问题：这个系统（Web Server）的 API 是否有设计规范？</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/pyramid.png" alt="pyramid"  />


</p>
<p><small>image by stable difussion, prompt by alswl</small></p>
<p>这个问题困扰了我很长时间，始于我求学时期，每一次都需要与团队成员进行交流和讨论。
从最初的自由风格到后来的 REST，我经常向项目组引用 <a href="https://docs.github.com/en/rest?apiVersion=2022-11-28">Github v3</a> 和
Foursqure API（已经无法访问，暴露年龄） 文档。
然而，在实践过程中，仍然会有一些与实际工作或公司通用规范不匹配的情况，
这时候我需要做一些补充工作。最终，我会撰写一个简要的 <code>DEVELOPMENT.md</code> 文档，以描述设计方案。</p>
<p>但我对该文档一直有更多的想法，它还不够完善。因此，我想整理出一份<mark>简单（Simple）而实用（Pragmatic）</mark>的 Web API 最佳实践，也就是本文。</p>
<h2 id="为什么我们需要-api-统一规范">为什么我们需要 API 统一规范</h2>
<p>这个问题似乎很明显，但是深入剖析涉及团队协作效率和工程设计哲学。</p>
<p>API（Application Programming Interface，应用程序编程接口）是不同软件系统之间交互的桥梁。在不同软件系统之间进行通信时，
API 可以通过标准化的方式进行数据传输和处理，从而实现各种应用程序的集成。</p>
<p>当我们开始撰写 API 文档时，就会出现一个范式（Design Pattern），这是显式还是隐式的，
是每个人一套还是公用同一套。这就像我们使用统一的 USB 接口一样，统一降低了成本，避免了可能存在的错误。具体来说，这有以下几个原因：</p>
<ul>
<li>容易理解，提高效率：服务提供方和消费方使用统一形式、结构和使用方式，以及统一的生产消费协议，从而减少沟通成本。</li>
<li>专家经验：它包含最佳的工程实践，常见场景都有对应的解决方案，避免了每个人都要重新思考整个 API 系统。
例如，如何处理 API 缓存？如何进行鉴权？如何进行数据格式处理？</li>
<li>面向未来的扩展，需要稳定的协议：协议是抽象的、独立于实现的，不是每个人都具备
设计面向不确定系统的能力，一些广泛使用的技术则为更广泛的场景做了规划。</li>
</ul>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/why.png" alt="why"  />


</p>
<p><small>image by alswl</small></p>
<p>虽然使用统一规范确实有一些成本，需要框架性的了解和推广，但我相信在大部分场景下，
统一规范所带来的收益远远高于这些成本。</p>
<p>然而，并非所有的情况下都需要考虑 API 规范。对于一些短生命周期的项目、影响面非常小的内部项目和产品，
可能并不需要过多关注规范。 此外，在一些特殊的业务场景下，
协议底层可能会发生变化，这时候既有的规范可能不再适用。但即使如此，我仍然建议重新起草新的规范，而不是放弃规范不顾。</p>
<h2 id="规范的原则">规范的原则</h2>
<p>在制定 API 规范时，我们应该遵循一些基本原则，以应对技术上的分歧，我总结了三个获得广泛认可的原则：</p>
<ul>
<li>简洁：简洁是抵抗复杂性的最直接和最有效的策略，利用简洁原则降低复杂度，避免复杂性的滋生和扩散；</li>
<li>一致性：统一的设计模式和延续的设计风格有助于降低工程成本和工程师的心理负担；</li>
<li>遵循现实：遵循现有工程领域的抽象和分层（例如 HTTP，REST，RBAC，OIDC 等），不要自己发明新的概念，
要始终思考这个问题是否只有自己遇到了（答案肯定是否定的）。</li>
</ul>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/principle.png" alt="principle"  />


</p>
<p><small>image by alswl</small></p>
<h2 id="rest-到底行不行">REST 到底行不行？</h2>
<p>在 Web API 领域，<a href="https://en.wikipedia.org/wiki/Representational_state_transfer">RESTful API</a> 已经成为广受欢迎的协议。
其广泛适用性和受众范围之广源于其与 HTTP 协议的绑定，这使得 RESTful API 能够轻松地与现有的 Web 技术进行交互。如果您对 REST 不熟悉，
可以查看 <a href="https://www.ruanyifeng.com/blog/2014/05/restful_api.html">阮一峰的 RESTful API 设计指南</a> 以及
<a href="https://www.oschina.net/translate/best-practices-for-a-pragmatic-restful-api?print">RESTful API 设计最佳实践</a>。</p>
<p>REST 是一种成熟度较高的协议，<a href="https://martinfowler.com/articles/richardsonMaturityModel.html#level0">Leonard Richardson</a>
将其描述为四种成熟度级别：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/rest-four-level.png" alt="rest-four-level"  />


</p>
<p><small>image by alswl</small></p>
<ol>
<li>The Swamp of POX，使用 HTTP 承载 Legacy 协议（XML）</li>
<li>Resources：使用资源抽象</li>
<li>HTTP Verbs：使用丰富的 HTTP Verbs</li>
<li>Hypermedia Controls：使用 <code>rel</code> 链接进行 API 资源整合，<a href="https://jsonapi.org/">JSON:API</a> 是登峰造极的表现</li>
</ol>
<p>REST 的核心优势在于：</p>
<ul>
<li>它充分利用了 HTTP 协议的设计（HTTP Protocol）</li>
<li>它具有出色的资源定位能力（Identification of resources）</li>
<li>它设计了完备的资源操作方式（Manipulation of resources）</li>
<li>它具备自解释性（Self-descriptive messages）</li>
<li>它支持多种形态的呈现方式（hypermedia as the engine of application state）</li>
</ul>
<p>然而，<mark>REST 并非一种具体的协议或规范，而是一种风格理念</mark>。尽管 REST 定义了一些规则和原则，如资源的标识、统一接口、无状态通信等，
但它并没有规定一种具体的实现方式。因此，在实际开发中，不同的团队可能会有不同的理解和实践，
从而导致 API 的不一致性和可维护性降低。</p>
<p>此外，REST 也有一些局限性和缺陷：</p>
<ul>
<li>并非所有请求都可以用资源描述，比如登录（<code>/login</code>）操作，转换成 <code>session</code> 就非常绕口；
同样的问题在转账这种业务也会出现。HTTP 有限的动词无法支撑所有业务场景。</li>
<li>REST 并未提供针对必然面临的问题，如分页、返回体具体结构、错误处理和鉴权等，明确的解决方案。</li>
<li>对于复杂的查询（如搜索 Search），RESTful API 的查询参数可能会变得非常复杂，难以维护。</li>
</ul>
<p>因此，虽然 REST 风格是一个不错的指导思想，但在具体实现时需要结合具体业务需求和技术特点，有所取舍，才能实现良好的 API 设计。
最后，我们是否需要 Web API 设计规范，遵循 REST 风格呢？我认为 REST 能够解决 90% 的问题，但还有 10% 需要明确规定细节。</p>
<h2 id="web-api-规范的选择题">Web API 规范的选择题</h2>
<p>因为我们的协议基于 HTTP 和 REST 设计，我们将以 HTTP 请求的四个核心部分为基础展
开讨论，这些部分分别是：URL、Header、Request 和 Response。</p>
<h3 id="url-最佳实践">URL 最佳实践</h3>
<p>我的 URL 设计启蒙来自于 <a href="https://guides.rubyonrails.org/routing.html">Ruby on Rails</a>。
在此之前，我总是本能地将模型信息放到 URL 之上，但实际上良好的 URL 设计应该是针对系统信息结构的规划。
因此，URL 设计不仅仅要考虑 API，还要考虑面向用户的 Web URL。</p>
<p>为了达到良好的 URL 设计，我总结了以下几个规则：</p>
<ul>
<li>定位资源（这就回答分页是否应该在 Header）</li>
<li>自解释（可读性强，URL 自身即包含核心信息）</li>
<li>安全（不能包含用户认证信息，OAuth 为了解这个花了很多精力，防伪造）</li>
</ul>
<p>通常情况下，URL 的模型如下所示：</p>
<p><code>/$(prefix)/$(module)/$(model)/$(sub-model)/$(verb)?$(query)#${fragment}</code></p>
<p>其中，Prefix 可能是 API 的版本，也可能是特殊限定，如有些公司会靠此进行接入层分流；
Module 是业务模块，也可以省略；Model 是模型；SubModel 是子模型，可以省略；
Verb 是动词，也可以省略；Query 是请求参数；Fragment 是 HTTP 原语 Fragment。</p>
<p>需要注意的是，并非所有的组成部分都是必须出现的。例如，SubModel 和 Verb 等字段可
以在不同的 URL 风格中被允许隐藏。</p>
<p><strong>设计风格选择</strong></p>
<p>注：<strong>请注意，方案 A / B / C 之间没有关联，每行上下也没有关联</strong></p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>解释（见下方单列分析）</th>
					<th>方案 A</th>
					<th>方案 B</th>
					<th>方案 C</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>API Path 里面 Prefix</td>
					<td></td>
					<td><code>/apis</code></td>
					<td><code>/api</code></td>
					<td>二级域名</td>
			</tr>
			<tr>
					<td>Path 里面是否包含 API 版本</td>
					<td><strong>版本在 URL 的优势</strong></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 是否包含 Group</td>
					<td></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 是否包含动作</td>
					<td><strong>HTTP Verb 不够用的情况</strong></td>
					<td>✅</td>
					<td>🚫 （纯 REST）</td>
					<td>看情况（如果 HTTP Verb CRUD 无法满足就包含）</td>
			</tr>
			<tr>
					<td>模型 ID 形式</td>
					<td><strong>Readable Stable Identity 解释</strong></td>
					<td>自增 ID</td>
					<td>GUID</td>
					<td><mark>Readable Stable ID</mark></td>
			</tr>
			<tr>
					<td>URL 中模型单数还是复数</td>
					<td></td>
					<td>单数</td>
					<td>复数</td>
					<td>列表复数，单向单数</td>
			</tr>
			<tr>
					<td>资源是一级（平铺）还是多级（嵌套）</td>
					<td><strong>一级和多级的解释</strong></td>
					<td>一级（平铺）</td>
					<td>多级（嵌套）</td>
					<td></td>
			</tr>
			<tr>
					<td>搜索如何实现，独立接口（<code>/models/search</code>）还是基于列表<code>/models/</code> 接口</td>
					<td></td>
					<td>独立</td>
					<td>合并</td>
					<td></td>
			</tr>
			<tr>
					<td>是否有 Alias URL</td>
					<td><strong>Alias URL 解释</strong></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型是否允许缩写（或精简）</td>
					<td><strong>模型缩写解释</strong></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型多个词语拼接的连字符</td>
					<td></td>
					<td><code>-</code></td>
					<td><code>_</code></td>
					<td>Camel</td>
			</tr>
			<tr>
					<td>是否要区分 Web API 以及 Open API（面向非浏览器）</td>
					<td></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
	</tbody>
</table>
<p><strong>版本在 URL 的优势</strong></p>
<p>我们在设计 URL 时遵循一致性的原则，无论是哪种身份或状态，都会使用相同的 URL 来访问同一个资源。
这也是 Uniform Resource Location 的基本原则。虽然我们可以接受不同的内容格式（例如 JSON / YAML / HTML / PDF / etc），
但是我们希望资源的位置是唯一的。</p>
<p>然而，问题是，对于同一资源在不同版本之间的呈现，是否应该在 URL 中体现呢？这取决于设计者是否认为版本化属于位置信息的范畴。</p>
<p>根据 RFC 的设计，除了 URL 还有 <a href="https://en.wikipedia.org/wiki/Uniform_Resource_Name">URN（Uniform Resource Name）</a>，
后者是用来标识资源的，而 URL 则指向资源地址。实际上，URN 没有得到广泛的使用，以至于 URI 几乎等同于 URL。</p>
<p><strong>HTTP Verb 不够用的情况</strong></p>
<p>在 REST 设计中，我们需要使用 HTTP 的 GET / POST / PUT / DELETE / PATCH / HEAD 等动词对资源进行操作。
比如使用 API <code>GET /apis/books</code> 查看书籍列别，这个自然且合理。
但是，当需要执行类似「借一本书」这样的动作时，
我们没有合适的动词（BORROW）来表示。针对这种情况，有两种可行的选择：</p>
<ol>
<li>使用 POST 方法与自定义动词，例如 <code>POST /apis/books/borrow</code>，表示借书这一动作；</li>
<li>创建一个借书记录，使用资源新增方式来结构不存在的动作，例如 <code>POST /apis/books/borrow-log/</code>；</li>
</ol>
<p>这个问题在复杂的场景中会经常出现，例如用户登录（<code>POST /api/auth/login</code> vs <code>POST /api/session</code>）和帐户转账（vs 转账记录创建）等等。
<mark>API 抽象还是具体，始终离不开业务的解释。</mark>我们不能简单地将所有业务都笼统概括到 CRUD 上面，
而是需要合理划分业务，以便更清晰地实现和让用户理解。</p>
<p>在进行设计时，我们可以考虑是否需要为每个 API 创建一个对应的按钮来方便用户的操作。
如果系统中只有一个名为 <code>/api/do</code> 的 API 并将所有业务都绑定在其中，虽然技术上可行，
但这种设计不符合业务需求，每一层的抽象都是为了标准化解决特定问题的解法，TCP L7 设计就是这种理念的体现。</p>
<p><strong>Readable Stable Identity 解释</strong></p>
<p>在标记一个资源时，我们通常有几种选择：</p>
<ul>
<li>使用 ID：ID 通常与数据库自增 ID 绑定。</li>
<li>使用 GUID：例如 UUID，尽管不那么精确。</li>
<li>使用可读性和稳定性标识符（Readable Stable Identity）：通常使用名称、UID 或特定 ID（如主机名、IP 地址或序列号）来标识，
要求该标识符具有稳定性且全局唯一，在内部系统中非常有用。</li>
</ul>
<p>我个人有一个设计小技巧：使用 <code>${type}/${type-id}</code> 形式的 slug 来描述标识符。Slug 是一种人类可读的唯一标识符，
例如 <code>hostname/abc.sqa</code> 或 <code>ip/172.133.2.1</code>。
这种设计方式可以在可读性和唯一性之间实现很好的平衡。</p>
<blockquote>
<p>A slug is a human-readable, unique identifier, used to identify a resource instead of a less human-readable identifier like an id .</p>
</blockquote>
<p>from <a href="https://itnext.io/whats-a-slug-f7e74b6c23e0">What’s a slug. and why would I use one? | by Dave Sag</a></p>
<p>PS：文章最末我还会介绍一套 Apple Music 方案，这个方案兼顾了 ID / Readable / Stable 的特性。</p>
<p><strong>一级和多级的解释</strong></p>
<p>URL 的层级设计可以根据建模来进行，也可以采用直接单层结构的设计。具体问题的解决方式，
例如在设计用户拥有的书籍时，可以选择多级结构的 <code>/api/users/foo/books</code> 或一级结构的 <code>/api/books?owner=foo</code>。</p>
<p>技术上这两种方案都可以，<mark>前者尊重模型的归属关系，后者则是注重 URL 结构的简单</mark>。</p>
<p>多级结构更直观，但也需要解决可能存在的多种组织方式的问题，例如图书馆中书籍按照作者或类别进行组织？
这种情况下，可以考虑在多级结构中明确模型的归属关系，
例如 <code>/api/author/foo/books</code>（基于作者）或 <code>/api/category/computer/books</code>（基于类别）。</p>
<p><strong>Alias URL 解释</strong></p>
<p>对于一些频繁使用的 URL，虽然可以按照 URL 规则进行设计，但我们仍然可以设计出一个更为简洁的 URL，
以方便用户的展示和使用。这种设计在 Web URL 中尤其常见。比如一个图书馆最热门书籍的 API：</p>
<pre tabindex="0"><code># 原始 URL
https://test.com/apis/v3/books?sort=hot&amp;limit=10

# Alias URL
https://test.com/apis/v3/books/hot
</code></pre><p><strong>模型缩写解释</strong></p>
<p>通常，在对资源进行建模时，会使用较长的名称来命名，例如书籍索引可能被命名为 <code>BookIndex</code> ，而不是 <code>Index</code>。
在 URL 中呈现时，由于 <code>/book/book-index</code> 的 URL 前缀包含了 Book，我们可以减少一层描述，
使 URL 更为简洁，例如使用 <code>/book/index</code>。这种技巧在 Web URL 设计中非常常见。</p>
<p>此外，还有一种模型缩写的策略，即提供一套完整的别名注册方案。别名是全局唯一的，
例如在 Kubernetes 中， <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#deployment-v1-apps">Deployment</a>
是一种常见的命名，而 <code>apps/v1/Deployment</code> 是通过添加 Group 限定来表示完整的名称，
同时还有一个简写为 <code>deploy</code>。这个机制依赖于 Kubernetes 的 API Schema 系统进行注册和工作。</p>
<h3 id="header-最佳实践">Header 最佳实践</h3>
<p>我们常常会忽略 Header 的重要性。实际上，HTTP 动词的选择、HTTP 状态码以及各种身
份验证逻辑（例如 Cookie / Basic Auth / Berear Token）都依赖于 Header 的设计。</p>
<p><strong>设计风格选择</strong></p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>解释（见下方单列分析）</th>
					<th>方案 A</th>
					<th>方案 B</th>
					<th>方案 C</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>是否所有 Verb 都使用 POST</td>
					<td><strong>关于全盘 POST</strong></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>修改（Modify）动作是 POST 还是 PATCH？</td>
					<td></td>
					<td>POST</td>
					<td>PATCH</td>
					<td></td>
			</tr>
			<tr>
					<td>HTTP Status 返回值</td>
					<td><strong>2XX 家族</strong></td>
					<td>充分利用 HTTP Status</td>
					<td>只用核心状态（200 404 302 等）</td>
					<td>只用 200</td>
			</tr>
			<tr>
					<td>是否使用考虑限流系统</td>
					<td></td>
					<td>✅ 429</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>是否使用缓存系统</td>
					<td></td>
					<td>✅ ETag / Last Modify</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>是否校验 UserAgent</td>
					<td></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>是否校验 Referrral</td>
					<td></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
	</tbody>
</table>
<p><strong>关于全盘 POST</strong></p>
<p>有些新手（或者自认为有经验的人）可能得出一个错误的结论，即除了 GET 请求以外，
所有的 HTTP 请求都应该使用 POST 方法。甚至有些人要求 <a href="https://www.zhihu.com/question/336797348">所有行为（即使是只读的请求）也应该使用 POST 方法</a>。
这种观点通常会以“简单一致”、“避免缓存”或者“运营商的要求”为由来支持。</p>
<p>然而，我们必须明白 HTTP 方法的设计初衷：它是用来描述资源操作类型的，从而派生出了包括缓存、安全、幂等性等一系列问题。
在相对简单的场景下，省略掉这一层抽象的确不会带来太大的问题，但一旦进入到复杂的领域中，
使用 HTTP 方法这一层抽象就显得非常重要了。<mark>这是否遵循标准将决定你是否能够获得标准化带来的好处</mark>，
类比一下就像一个新的手机厂商可以选择不使用 USB TypeC 接口。
技术上来说是可行的，但同时也失去了很多标准化支持和大家心智上的约定俗成。</p>
<p>我特别喜欢一位 <a href="https://www.zhihu.com/people/huixiong-19">知乎网友</a> 的
<a href="https://www.zhihu.com/question/336797348/answer/2198634068">评论</a>：「<mark>路由没有消失，只是转移了</mark>」。</p>
<p><strong>2XX 家族</strong></p>
<p>HTTP 状态码的用途在于表明客户端与服务器间通信的结果。2XX 状态码系列代表服务器已经成功接收、
理解并处理了客户端请求，回应的内容是成功的。以下是 2XX 系列中常见的状态码及其含义：</p>
<ul>
<li>200 OK：请求已成功处理，服务器返回了响应。</li>
<li>201 Created：请求已经被成功处理，并且在服务器上创建了一个新的资源。</li>
<li>202 Accepted：请求已被服务器接受，但尚未执行。该状态码通常用于异步处理。</li>
<li>204 No Content：请求已成功处理，但是服务器没有返回任何响应体内容。</li>
</ul>
<p>2XX 系列的状态码表示请求已被成功处理，这些状态码可以让客户端明确知晓请求已被正确处理，从而进行下一步操作。</p>
<p>是否需要全面使用 2XX 系列的状态码，取决于是否需要向客户端明确/显示的信息，
告知它下一步动作。如果已经通过其他方式（包括文档、口头协议）描述清楚，
那么确实可以通盘使用 200 状态码进行返回。但基于行为传递含义，
或是基于文档（甚至口头协议）传递含义，哪种更优秀呢？是更为复杂还是更为简洁？</p>
<h3 id="request-最佳实践">Request 最佳实践</h3>
<p><strong>设计风格选择</strong></p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>解释（见下方单列分析）</th>
					<th>方案 A</th>
					<th>方案 B</th>
					<th>方案 C</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>复杂的参数是放到 Form Fields 还是单独一个 JSON Body</td>
					<td></td>
					<td>Form Fields</td>
					<td>Body</td>
					<td></td>
			</tr>
			<tr>
					<td>子资源是一次性查询还是独立查询</td>
					<td></td>
					<td>嵌套</td>
					<td>独立查询</td>
					<td></td>
			</tr>
			<tr>
					<td>分页参数存放</td>
					<td></td>
					<td>Header</td>
					<td>URL Query</td>
					<td></td>
			</tr>
			<tr>
					<td>分页方式</td>
					<td><strong>分页方式解释</strong></td>
					<td>Page based</td>
					<td>Offset based</td>
					<td>Continuation token</td>
			</tr>
			<tr>
					<td>分页控制者</td>
					<td><strong>分页控制者解释</strong></td>
					<td>客户端</td>
					<td>服务端</td>
					<td></td>
			</tr>
	</tbody>
</table>
<p><strong>分页方式解释</strong></p>
<p>我们最为常见的两种分页方式是 Page-based 和 Offset-based，可以通过公式进行映射。
此外，还存在一种称为 Continuation Token 的方式，其技术类似于 Oracle 的
<a href="https://stackoverflow.com/questions/241622/paging-with-oracle">rownum 分页方案</a>，使用参数 <code>start-from=?</code> 进行描述。
虽然 Continuation Token 的优缺点都十分突出，使用此种方式可以将顺序性用于替代随机性。</p>
<p><strong>分页控制者解释</strong></p>
<p>在某些情况下，我们需要区分客户端分页（Client Pagination）和服务器分页（Server Pagniation）。
客户端分页是指下一页的参数由客户端计算而来，而服务器分页则是由服务器返回 <code>rel</code> 或 JSON.API 等协议。
使用服务器分页可以避免一些问题，例如批量屏蔽了一些内容，如果使用客户端分页，可能会导致缺页或者白屏。</p>
<h3 id="response-最佳实践">Response 最佳实践</h3>
<p><strong>设计风格选择</strong></p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>解释（见下方单列分析）</th>
					<th>方案 A</th>
					<th>方案 B</th>
					<th>方案 C</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>模型呈现种类</td>
					<td><strong>模型的几种形式</strong></td>
					<td>单一模型</td>
					<td>多种模型</td>
					<td></td>
			</tr>
			<tr>
					<td>大模型如何包含子模型模型</td>
					<td><strong>模型的连接、侧载和嵌入</strong></td>
					<td>嵌入</td>
					<td>核心模型 + 多次关联资源查询</td>
					<td>链接</td>
			</tr>
			<tr>
					<td>字段返回是按需还是归并还是统一</td>
					<td></td>
					<td>统一</td>
					<td>使用 <code>fields</code> 字段按需</td>
					<td></td>
			</tr>
			<tr>
					<td>字段表现格式</td>
					<td></td>
					<td>Snake</td>
					<td>Camel</td>
					<td></td>
			</tr>
			<tr>
					<td>错误码</td>
					<td></td>
					<td>无自定，使用 Message</td>
					<td>自定义</td>
					<td></td>
			</tr>
			<tr>
					<td>错误格式</td>
					<td></td>
					<td>全局统一</td>
					<td>按需</td>
					<td></td>
			</tr>
			<tr>
					<td>时区</td>
					<td></td>
					<td>UTC</td>
					<td>Local</td>
					<td>Local + TZ</td>
			</tr>
			<tr>
					<td>HATEOAS</td>
					<td></td>
					<td>✅</td>
					<td>🚫</td>
					<td></td>
			</tr>
	</tbody>
</table>
<p><strong>模型的几种形式</strong></p>
<p>在 API 设计中，对于模型的表现形式有多种定义。虽然这并不是 API 规范必须讨论的话题，但它对于 API 设计来说是非常重要的。</p>
<p>我将模型常说的模型呈现方式分为一下几类，这并非是专业的界定，借用了 Java 语境下面的一些定义。
这些名称在不同公司甚至不同团队会有不一样的叫法：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/models.png" alt="models"  />


</p>
<p><small>image by alswl</small></p>
<ul>
<li>Business Object（BO）：原始的业务模型</li>
<li>Data Object（DO）：存储到 RDBMS 的模型，所以必须是打平的字段结构，有时候一个 BO 会对应到多个 DO</li>
<li>View Object（VO）：呈现到表现层的模型，只保留用户需要看到信息，比如会去掉敏感信息</li>
<li>Data Transfer Object（DTO）：用来在 RPC 系统进行传输的模型，一般和 原始的 Model 差异不大，根据不同序列化系统会有差异
（比如枚举的处理）</li>
</ul>
<p>除此之外，还经常使用两类：Rich Model 和 Tiny Model（请忽略命名，不同团队叫法差异比较大）：</p>
<ul>
<li>Rich Model：用来描述一个丰富模型，这个模型包含了几乎所有需要用的的数据，也允许子资源进行嵌套</li>
<li>Tiny Model：是一个精简模型，往往用来在列表 API 里面被使用</li>
</ul>
<p><strong>模型的连接、侧载和嵌入</strong></p>
<p>在 API 设计中，我们经常需要处理一个模型中包含多个子模型的情况，例如 Book 包含 Comments。
对于这种情况，通常有三种表现形式可供选择：链接（Link）、侧载（Side）和嵌入（Embed）。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/models-with-children.png" alt="models-with-children"  />


</p>
<p><small>image by alswl</small></p>
<p>链接（有时候这个 URL 也会隐藏，基于客户端和服务端的隐式协议进行请求）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;朝花夕拾&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;relationships&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;comments&#34;</span><span class="p">:</span> <span class="s2">&#34;http://www.domain.com/book/42/comments&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;author&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;http://www.domain.com/author/鲁迅&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>侧载：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;朝花夕拾&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;relationships&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;comments&#34;</span><span class="p">:</span> <span class="s2">&#34;http://www.domain.com/book/42/comments&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;authors&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;http://www.domain.com/author/鲁迅&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;includes&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;comments&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="mi">91</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;author&#34;</span><span class="p">:</span> <span class="s2">&#34;匿名&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;content&#34;</span><span class="p">:</span> <span class="s2">&#34;非常棒&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;authors&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;鲁迅&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;鲁迅原名周树人&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>嵌入：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;朝花夕拾&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;comments&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="mi">91</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;author&#34;</span><span class="p">:</span> <span class="s2">&#34;匿名&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;content&#34;</span><span class="p">:</span> <span class="s2">&#34;非常棒&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;authors&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">      <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;鲁迅&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;鲁迅原名周树人&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h3 id="其他">其他</h3>
<p>还有一些问题没有收敛在四要素里面，但是我们在工程实践中也经常遇到，我将其捋出来：</p>
<p><strong>我不是 HTTP 协议，怎么办？</strong></p>
<p>Web API 中较少遇到非 HTTP 协议，新建一套协议的成本太高了。在某些特定领域会引入一些协议，
比如 IoT 领域的 <a href="https://mqtt.org/">MQTT</a>。</p>
<p>此外，RPC 是一个涉及广泛领域的概念，其内容远远不止于协议层面。
通常我们会将 HTTP 和 RPC 的传输协议以及序列化协议进行对比。
我认为，本文中的许多讨论也对 RPC 领域具有重要意义。</p>
<p>有些团队或个人计划使用自己创建的协议，但我的观点是应尽量避免自建协议，因为真正需要创建协议的情况非常罕见。
如果确实存在强烈的需要，那么我会问两个问题：是否通读过 HTTP RFC 文档和 HTTP/2 RFC 文档？</p>
<p><strong>我不是远程服务（RPC / HTTP 等），而是 SDK 怎么办？</strong></p>
<p>本文主要讨论的是 Web API（HTTP）的设计规范，并且其中一些规则可以借鉴到 RPC 系统中。
然而，讨论的基础都是建立在远程服务（Remote Service）的基础之上的。
如果你是 SDK 开发人员，你会有两个角色，可能会作为客户端和远程服务器进行通信，
同时还会作为 SDK 提供面向开发人员的接口。对于后者，以下几个规范可以作为参考：</p>
<p>后者可以参考一下这么几个规范：</p>
<ul>
<li>Azure SDK 设计规范 <a href="https://azure.github.io/azure-sdk/general_design.html">General Guidelines: API Design | Azure SDKs</a></li>
<li>Posix API 范例（比如 File <a href="https://www.gnu.org/software/libc/manual/html_node/Low_002dLevel-I_002fO.html">Low-Level I/O (The GNU C Library)</a>)</li>
</ul>
<p><strong>认证鉴权方案</strong></p>
<p>一般而言，Web API 设计中会明确描述所采用的认证和鉴权系统。
需要注意区分「认证」和「鉴权」两个概念。关于「认证」这一话题，可以在单独的章节中进行讨论，因此本文不会展开这一方面的内容。</p>
<p>在 Web API 设计中，常见的认证方式包括：HTTP Basic Auth、OAuth2 和账号密码登录等。
常用的状态管理方式则有 Bearer Token 和 Cookie。此外，在防篡改等方面，还会采用基于 HMac 算法的防重放和篡改方案。</p>
<p><strong>忽略掉的话题</strong></p>
<p>在本次讨论中，我未涉及以下话题：异步协议（Web Socket / Long Pulling / 轮训）、CORS、以及安全问题。
虽然这些话题重要，但是在本文中不予展开。</p>
<p><strong>什么时候打破规则</strong></p>
<p>有些开发者认为规则就是为了打破而存在的。现实往往非常复杂，我们难以讨论清楚各个细节。
如果开发者觉得规则不符合实际需求，有两种处理方式：修改规则或打破规则。
然而，我更倾向于讨论和更新规则，明确规范不足之处，确定是否存在特殊情况。
如果确实需要创建特例，一定要在文档中详细描述，告知接任者和消费者这是一个特例，说明特例产生的原因以及特例是如何应对的。</p>
<h2 id="一张风格-checklist">一张风格 Checklist</h2>
<h3 id="github-风格">Github 风格</h3>
<p>Github 的 API 是我常常参考的对象。它对其业务领域建模非常清晰，提供了详尽的文档，使得沟通成本大大降低。
我主要参考以下两个链接：
API 定义 <a href="https://docs.github.com/en/rest?apiVersion=2022-11-28">GitHub REST API documentation</a> 和
面向应用程序提供的 API 列表 <a href="https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps?apiVersion=2022-11-28">Endpoints available for GitHub Apps</a>
，该列表几乎包含了 Github 的全部 API。</p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>选择</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>URL</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>API Path 里面 Prefix</td>
					<td>二级域名</td>
					<td><a href="https://api.github.com">https://api.github.com</a></td>
			</tr>
			<tr>
					<td>Path 里面是否包含 API 版本</td>
					<td>🚫</td>
					<td>Header <code>X-GitHub-Api-Version</code> <a href="https://docs.github.com/en/rest/overview/api-versions?apiVersion=2022-11-28">API Versions</a></td>
			</tr>
			<tr>
					<td>Path 是否包含 Group</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 是否包含动作</td>
					<td>看情况（如果 HTTP Verb CRUD 无法满足就包含）</td>
					<td>比如 <code>PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge</code> <code>POST /repos/{owner}/{repo}/releases/generate-notes</code></td>
			</tr>
			<tr>
					<td>模型 ID 形式</td>
					<td>Readable Stable Identity</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型单数还是复数</td>
					<td>复数</td>
					<td></td>
			</tr>
			<tr>
					<td>资源是一级（平铺）还是多级（嵌套）</td>
					<td>多级</td>
					<td></td>
			</tr>
			<tr>
					<td>搜索如何实现，独立接口（<code>/models/search</code>）还是基于列表<code>/models/</code> 接口</td>
					<td>独立</td>
					<td></td>
			</tr>
			<tr>
					<td>是否有 Alias URL</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型是否允许缩写（或精简）</td>
					<td>🚫</td>
					<td>没有看到明显信息，基于多级模型也不需要，但是存在 <code>GET /orgs/{org}/actions/required_workflows</code></td>
			</tr>
			<tr>
					<td>URL 中模型多个词语拼接的连字符</td>
					<td><code>-</code> 和 <code>_</code></td>
					<td><code>GET /repos/{owner}/{repo}/git/matching-refs/{ref}</code> vs <code>GET /orgs/{org}/actions/required_workflows</code></td>
			</tr>
			<tr>
					<td>是否要区分 Web API 以及 Open API（面向非浏览器）</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Header</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>是否所有 Verb 都使用 POST</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>修改（Modify）动作是 POST 还是 PATCH？</td>
					<td>PATCH</td>
					<td></td>
			</tr>
			<tr>
					<td>HTTP Status 返回值</td>
					<td>充分利用 HTTP Status</td>
					<td>常用，包括限流洗损</td>
			</tr>
			<tr>
					<td>是否使用考虑限流系统</td>
					<td>✅ 429</td>
					<td></td>
			</tr>
			<tr>
					<td>是否使用缓存系统</td>
					<td>✅ ETag / Last Modify</td>
					<td><a href="https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#client-errors">Resources in the REST API#client-errors</a></td>
			</tr>
			<tr>
					<td>是否校验 UserAgent</td>
					<td>✅</td>
					<td></td>
			</tr>
			<tr>
					<td>是否校验 Referrral</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Request</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>复杂的参数是放到 Form Fields 还是单独一个 JSON Body</td>
					<td>Body</td>
					<td>参考 <a href="https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#create-a-pull-request">Pulls#create-a-pull-request</a></td>
			</tr>
			<tr>
					<td>子资源是一次性查询还是独立查询</td>
					<td>嵌套</td>
					<td>从 Pulls 进行判断</td>
			</tr>
			<tr>
					<td>分页参数存放</td>
					<td>URL Query</td>
					<td></td>
			</tr>
			<tr>
					<td>分页方式</td>
					<td>Page</td>
					<td><a href="https://docs.github.com/en/rest/guides/using-pagination-in-the-rest-api?apiVersion=2022-11-28">Using pagination in the REST API</a></td>
			</tr>
			<tr>
					<td>分页控制者</td>
					<td>服务端</td>
					<td>同上</td>
			</tr>
			<tr>
					<td><strong>Response</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>模型呈现种类</td>
					<td>多种模型</td>
					<td>比如 Commits 里面的 明细和 Parent <a href="https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28">Commits</a></td>
			</tr>
			<tr>
					<td>大模型如何包含子模型模型</td>
					<td>核心模型 + 多次关联资源查询？</td>
					<td>没有明确说明，根据几个核心 API 反推</td>
			</tr>
			<tr>
					<td>字段返回是按需还是归并还是统一</td>
					<td>统一</td>
					<td></td>
			</tr>
			<tr>
					<td>字段表现格式</td>
					<td>Snake</td>
					<td></td>
			</tr>
			<tr>
					<td>错误码</td>
					<td>无</td>
					<td><a href="https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#client-errors">Resources in the REST API#client-errors</a></td>
			</tr>
			<tr>
					<td>错误格式</td>
					<td>全局统一</td>
					<td><a href="https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#client-errors">Resources in the REST API#client-errors</a></td>
			</tr>
			<tr>
					<td>时区</td>
					<td>复合方案（ISO 8601 &gt; Time-Zone Header &gt; User Last &gt; UTC）</td>
					<td><a href="https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#timezones">Resources in the REST API#Timezones</a></td>
			</tr>
			<tr>
					<td>HATEOAS</td>
					<td>🚫</td>
					<td></td>
			</tr>
	</tbody>
</table>
<h3 id="azure-风格">Azure 风格</h3>
<p>Azure 的 API 设计遵循 <a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md">api-guidelines/Guidelines.md at master · microsoft/api-guidelines</a>，
这篇文章偏原理性，另外还有一份实用指导手册在 <a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/index-best-practices">Best practices in cloud applications</a>
和 <a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design">Web API design best practices</a>。</p>
<p>需要注意的是，Azure 的产品线远比 Github 丰富，一些 API 也没有遵循 Azure 自己的规范。
在找实例时候，我主要参考
<a href="https://learn.microsoft.com/en-us/rest/api/?view=Azure">REST API Browser </a>，
<a href="https://learn.microsoft.com/en-us/rest/api/storageservices/">Azure Storage REST API Reference </a>。
如果具体实现和 Guidelines.md 冲突，我会采用 Guidelines.md 结论。</p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>选择</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>URL</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>API Path 里面 Prefix</td>
					<td>二级域名</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 里面是否包含 API 版本</td>
					<td>🚫</td>
					<td><code>x-ms-version</code></td>
			</tr>
			<tr>
					<td>Path 是否包含 Group</td>
					<td>✅</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 是否包含动作</td>
					<td>🚫？</td>
					<td>没有明确说明，但是有倾向使用 <code>comp</code> 参数来进行动作，保持 URL 的 RESTful 参考 <a href="https://learn.microsoft.com/en-us/rest/api/storageservices/lease-container?tabs=azure-ad">Lease Container (REST API) - Azure Storage</a></td>
			</tr>
			<tr>
					<td>模型 ID 形式</td>
					<td>Readable Stable Identity</td>
					<td><a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#73-canonical-identifier">Guidelines.md#73-canonical-identifier</a></td>
			</tr>
			<tr>
					<td>URL 中模型单数还是复数</td>
					<td>复数</td>
					<td><a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#93-collection-url-patterns">Guidelines.md#93-collection-url-patterns</a></td>
			</tr>
			<tr>
					<td>资源是一级（平铺）还是多级（嵌套）</td>
					<td>多级 / 一级</td>
					<td><a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design#define-api-operations-in-terms-of-http-methods">api-design#define-api-operations-in-terms-of-http-methods</a>，注 MS 有 <code>comp=?</code> 这种参数，用来处理特别的命令</td>
			</tr>
			<tr>
					<td>搜索如何实现，独立接口（<code>/models/search</code>）还是基于列表<code>/models/</code> 接口</td>
					<td>?</td>
					<td>倾向于基于列表，因为大量使用 <code>comp=</code> 这个 URL Param 来进行子命令，比如 <a href="https://learn.microsoft.com/en-us/rest/api/storageservices/incremental-copy-blob">Incremental Copy Blob (REST API) - Azure Storage</a></td>
			</tr>
			<tr>
					<td>是否有 Alias URL</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型是否允许缩写（或精简）</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型多个词语拼接的连字符</td>
					<td>Camel</td>
					<td><a href="https://learn.microsoft.com/en-us/rest/api/storagemover/job-runs/list?tabs=HTTP">Job Runs - List - REST API (Azure Storage Mover)</a></td>
			</tr>
			<tr>
					<td>是否要区分 Web API 以及 Open API（面向非浏览器）</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Header</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>是否所有 Verb 都使用 POST</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>修改（Modify）动作是 POST 还是 PATCH？</td>
					<td>PATCH</td>
					<td><a href="https://learn.microsoft.com/en-us/rest/api/storagemover/agents/update?tabs=HTTP">Agents - Update - REST API (Azure Storage Mover)</a></td>
			</tr>
			<tr>
					<td>HTTP Status 返回值</td>
					<td>充分利用 HTTP Status</td>
					<td><a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#711-http-status-codes">Guidelines.md#711-http-status-codes</a></td>
			</tr>
			<tr>
					<td>是否使用考虑限流系统</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>是否使用缓存系统</td>
					<td>✅</td>
					<td><a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#75-standard-request-headers">Guidelines.md#75-standard-request-headers</a></td>
			</tr>
			<tr>
					<td>是否校验 UserAgent</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>是否校验 Referrral</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Request</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>复杂的参数是放到 Form Fields 还是单独一个 JSON Body</td>
					<td>Body</td>
					<td>参考 <a href="https://learn.microsoft.com/en-us/rest/api/storagemover/agents/create-or-update?tabs=HTTP">Agents - Create Or Update - REST API (Azure Storage Mover)</a></td>
			</tr>
			<tr>
					<td>子资源是一次性查询还是独立查询</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>分页参数存放</td>
					<td>?</td>
					<td>没有结论</td>
			</tr>
			<tr>
					<td>分页方式</td>
					<td>Page based</td>
					<td></td>
			</tr>
			<tr>
					<td>分页控制者</td>
					<td>服务端</td>
					<td><a href="https://learn.microsoft.com/en-us/rest/api/storagemover/agents/list?tabs=HTTP">Agents - List - REST API (Azure Storage Mover)</a></td>
			</tr>
			<tr>
					<td><strong>Response</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>模型呈现种类</td>
					<td>单一模型</td>
					<td>推测</td>
			</tr>
			<tr>
					<td>大模型如何包含子模型模型</td>
					<td>?</td>
					<td>场景过于复杂，没有单一结论</td>
			</tr>
			<tr>
					<td>字段返回是按需还是归并还是统一</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>字段表现格式</td>
					<td>Camel</td>
					<td></td>
			</tr>
			<tr>
					<td>错误码</td>
					<td>使用自定错误码清单</td>
					<td>至少在各自产品内</td>
			</tr>
			<tr>
					<td>错误格式</td>
					<td>自定义</td>
					<td></td>
			</tr>
			<tr>
					<td>时区</td>
					<td>?</td>
					<td></td>
			</tr>
			<tr>
					<td>HATEOAS</td>
					<td>?</td>
					<td><a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design#use-hateoas-to-enable-navigation-to-related-resources">api-design#use-hateoas-to-enable-navigation-to-related-resources</a></td>
			</tr>
	</tbody>
</table>
<p>Azure 的整体设计风格要比 Github API 更复杂，同一个产品的也有多个版本的差异，看
上去统一性要更差一些。这种复杂场景想用单一的规范约束所有团队的确也是更困难的。
我们可以看到 Azaure 团队在 Guidelines 上面努力，他们最近正在推出 vNext 规范。</p>
<h3 id="我个人风格">我个人风格</h3>
<p>我个人风格基本继承自 Github API 风格，做了一些微调，更适合中小型产品开发。
我的改动原因都在备注中解释，改动出发点是：简化 / 减少歧义 / 考虑实际成本。如果备注里面标记了「注」，则是遵循 Github 方案并添加一些观点。</p>
<table>
	<thead>
			<tr>
					<th>问题</th>
					<th>选择</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>URL</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>API Path 里面 Prefix</td>
					<td><code>/apis</code></td>
					<td>我们往往只有一个系统，一个域名要承载 API 和 Web Page</td>
			</tr>
			<tr>
					<td>Path 里面是否包含 API 版本</td>
					<td>✅</td>
					<td></td>
			</tr>
			<tr>
					<td>Path 是否包含 Group</td>
					<td>✅</td>
					<td>做一层业务模块拆分，隔离一定合作边界</td>
			</tr>
			<tr>
					<td>Path 是否包含动作</td>
					<td>看情况（如果 HTTP Verb CRUD 无法满足就包含）</td>
					<td></td>
			</tr>
			<tr>
					<td>模型 ID 形式</td>
					<td>Readable Stable Identity</td>
					<td></td>
			</tr>
			<tr>
					<td>URL 中模型单数还是复数</td>
					<td>复数</td>
					<td></td>
			</tr>
			<tr>
					<td>资源是一级（平铺）还是多级（嵌套）</td>
					<td>多级 + 一级</td>
					<td>注：80% 情况都是遵循模型的归属，少量情况（常见在搜索）使用一级</td>
			</tr>
			<tr>
					<td>搜索如何实现，独立接口（<code>/models/search</code>）还是基于列表<code>/models/</code> 接口</td>
					<td>统一 &gt; 独立</td>
					<td>低成本实现一些（早期 Github Issue 也是没有 <code>/search</code> 接口</td>
			</tr>
			<tr>
					<td>是否有 Alias URL</td>
					<td>🚫</td>
					<td>简单点</td>
			</tr>
			<tr>
					<td>URL 中模型是否允许缩写（或精简）</td>
					<td>✅</td>
					<td>一旦做了精简，需要在术语表标记出来</td>
			</tr>
			<tr>
					<td>URL 中模型多个词语拼接的连字符</td>
					<td><code>-</code></td>
					<td></td>
			</tr>
			<tr>
					<td>是否要区分 Web API 以及 Open API（面向非浏览器）</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Header</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>是否所有 Verb 都使用 POST</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td>修改（Modify）动作是 POST 还是 PATCH？</td>
					<td>PATCH</td>
					<td></td>
			</tr>
			<tr>
					<td>HTTP Status 返回值</td>
					<td>充分利用 HTTP Status</td>
					<td></td>
			</tr>
			<tr>
					<td>是否使用考虑限流系统</td>
					<td>✅ 429</td>
					<td></td>
			</tr>
			<tr>
					<td>是否使用缓存系统</td>
					<td>🚫</td>
					<td>简单一些，使用动态数据，去除缓存能力</td>
			</tr>
			<tr>
					<td>是否校验 UserAgent</td>
					<td>✅</td>
					<td></td>
			</tr>
			<tr>
					<td>是否校验 Referrral</td>
					<td>🚫</td>
					<td></td>
			</tr>
			<tr>
					<td><strong>Request</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>复杂的参数是放到 Form Fields 还是单独一个 JSON Body</td>
					<td>Body</td>
					<td></td>
			</tr>
			<tr>
					<td>子资源是一次性查询还是独立查询</td>
					<td>嵌套</td>
					<td></td>
			</tr>
			<tr>
					<td>分页参数存放</td>
					<td>URL Query</td>
					<td></td>
			</tr>
			<tr>
					<td>分页方式</td>
					<td>Page</td>
					<td></td>
			</tr>
			<tr>
					<td>分页控制者</td>
					<td>客户端</td>
					<td>降低服务端成本，容忍极端情况空白</td>
			</tr>
			<tr>
					<td><strong>Response</strong></td>
					<td></td>
					<td></td>
			</tr>
			<tr>
					<td>模型呈现种类</td>
					<td>多种模型</td>
					<td>使用的 BO / VO / Tiny / Rich</td>
			</tr>
			<tr>
					<td>大模型如何包含子模型模型</td>
					<td>核心模型 + 多次关联资源查询</td>
					<td></td>
			</tr>
			<tr>
					<td>字段返回是按需还是归并还是统一</td>
					<td>统一</td>
					<td>Tiny Model（可选） / Model（默认） / Rich Model（可选）</td>
			</tr>
			<tr>
					<td>字段表现格式</td>
					<td>Snake</td>
					<td></td>
			</tr>
			<tr>
					<td>错误码</td>
					<td>无</td>
					<td>注：很多场景只要 message</td>
			</tr>
			<tr>
					<td>错误格式</td>
					<td>全局统一</td>
					<td></td>
			</tr>
			<tr>
					<td>时区</td>
					<td>ISO 8601</td>
					<td>只使用一种格式，不再支持多种方案</td>
			</tr>
			<tr>
					<td>HATEOAS</td>
					<td>🚫</td>
					<td></td>
			</tr>
	</tbody>
</table>
<h2 id="题外话---apple-music-的一个有趣设计">题外话 - Apple Music 的一个有趣设计</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202304/apple-music.png" alt="Apple Music"  />


</p>
<p><small>image from Apple Music</small></p>
<p>我最近在使用 Apple Music 时注意到了其 Web 页面的 URL 结构：</p>
<p><code>/cn/album/we-sing-we-dance-we-steal-things/277635758?l=en</code></p>
<p>仔细看这个 URL 结构，可以发现其中 Path 包含了人类可读的 slug，分为三个部分：<code>alumn/$(name)/$(id)</code> （其中包含了 ID）。
我立即想到了一个问题：中间的可读名称是否无机器意义，纯粹面向自然人？
于是我测试了一个捏造的地址：<code>/cn/album/foobar/277635758?l=en</code>。
在您尝试访问之前，您能猜出结果是否可以访问吗？</p>
<p>这种设计范式比我现在常用的 URL 设计规范要复杂一些。我的规范要求将资源定位使用两层 slug 组织，即 <code>$(type)/$(id)</code>。
而苹果使用了 <code>$(type)/(type-id)/$(id)</code>，同时照顾了可读性和准确性。</p>
<h2 id="题外话---为什么-graphql-不行">题外话 - 为什么 GraphQL 不行</h2>
<p><a href="https://graphql.org/">GraphQL</a> 是一种通过使用自定义查询语言来请求 API 的方式，它的优点在于可以提供更灵活的数据获取方式。
相比于 RESTful API 需要一次请求获取所有需要的数据，GraphQL 允许客户端明确指定需要的数据，从而减少不必要的数据传输和处理。</p>
<p>然而，GraphQL 的过于灵活也是它的缺点之一。由于它没有像 REST API 那样有一些业务场景建模的规范，
开发人员需要自己考虑数据的处理方式。
这可能导致一些不合理的查询请求，对后端数据库造成过度的压力。此外，GraphQL 的实现和文档相对较少，也需要更多的学习成本。</p>
<p>因此，虽然 GraphQL 可以在一些特定的场景下提供更好的效果，但它并不适合所有的 API 设计需求。
实际上，一些公司甚至选择放弃支持 GraphQL，例如 Github 的 <a href="https://github.blog/changelog/2022-08-18-deprecation-notice-graphql-for-packages/">一些项目</a>。</p>
<h2 id="最后">最后</h2>
<blockquote>
<p>Complexity is incremental （复杂度是递增的）</p>
<ul>
<li>John Ousterhout (<a href="https://web.stanford.edu/~ouster/cgi-bin/cs190-winter18/lecture.php?topic=complexity">via</a>）</li>
</ul>
</blockquote>
<p><mark>风格没有最好，只有最适合，但是拥有风格是很重要的。</mark></p>
<p>建立一个优秀的规则不仅需要对现有机制有深刻的理解，还需要对业务领域有全面的掌握，并在团队内进行有效的协作与沟通， 推广并实施规则。
不过，一旦规则建立起来，就能够有效降低系统的复杂度，避免随着时间和业务的推进而不断增加的复杂性， 并减少研发方面的沟通成本。</p>
<p>这是一项长期的投资，但能够获得持久的回报。希望有长远眼光的人能够注意到这篇文章。</p>
<p>主要参考文档：</p>
<ul>
<li><a href="https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md">api-guidelines/Guidelines.md at master · microsoft/api-guidelines</a></li>
<li><a href="https://docs.github.com/en/rest/overview/about-githubs-apis?apiVersion=2022-11-28">GitHub&rsquo;s APIs</a></li>
<li><a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design">Web API design best practices - Azure Architecture Center | Microsoft Learn</a></li>
<li><a href="https://developer.aliyun.com/article/701810">API 设计最佳实践的思考 - 谷朴</a></li>
</ul>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[从 Toodledo 到 Obsidian Tasks - 我的 GTD 最佳实践]]></title>
    <link href="https://blog.alswl.com/2023/02/gtd/"/>
    <id>https://blog.alswl.com/2023/02/gtd/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-02-26T18:50:50+08:00</published>
    <updated>2023-02-26T18:50:50+08:00</updated>
    
    <content type="html"><![CDATA[<p>最近我完成了从 Toodledo 到 Obsidian Tasks（Obsidian 插件）的切换。
这两款软件都是极其强大的时间管理工具。虽然 Toodledo 几乎是我最喜欢的 GTD 软件，
但服务愈发不稳定让我烦恼，正好发现 Obsidian Tasks 在查询和知识库结合方面的能力发挥出了 1+1 &gt; 2 的效果。
经过试用我决定迁移到 Obsidian Tasks。</p>
<p>放弃一个合作了十几年的老朋友 Toodledo 让我有些伤感，但是这个过程也促使我总结了一下我在时间管理这个命题上的尝试，并分享了一些我的经验。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/clock.png" alt="time"  />


</p>
<p><small>Image frrom Pixelbay</small></p>
<h2 id="什么是-gtd">什么是 GTD</h2>
<p>在这个快节奏的现代生活中，我们都会遇到大量的任务和信息，而如何有效地管理时间和任务成为了许多人的挑战。在读书时期，我也曾经陷入任务管理的困境。从 2009 年开始，我尝试过使用<a href="https://blog.alswl.com/2010/01/use-google-calendar-to-manage-the-time/">日历</a>、<a href="https://blog.alswl.com/2010/04/desktop-recording-tool-boogunote/">笔记</a>等工具来组织我的任务和信息，但效果并不理想。直到后来我接触到了 <a href="https://doit.im/">DoIt.im</a>，进而发现了 David Allen 的书《<a href="https://book.douban.com/subject/1316569/">Getting Things Done</a>》，这本书带给了我一种全新的任务管理思路——GTD。往后数十年，我一直使用这个模式来管理自己的时间。</p>
<p>GTD 是由 David Allen 所创立的一种个人时间管理方法 ，旨在帮助人们更有效地管理自己的时间和任务，从而提高工作效率和生产力。这种方法的基本思想是<mark>将所有任务分解为具体的行动步骤，并将它们组织在一个可靠的系统中，以便于跟进和管理</mark>通过这种方法，人们可以更轻松地掌控自己的工作和生活，减少压力和焦虑，从而更加专注和高效地完成任务。</p>
<p>那么如何实现 GTD 呢？以下是基本的步骤：</p>
<ol>
<li>收集：收集所有任务、想法、计划、待办事项，可以用笔记本、手机、电脑等多种工具。</li>
<li>组织：审视待办任务，分类所有任务和行动步骤，并回顾过往未完成的项目。
<ul>
<li>分类：审视收集到的任务，将所有任务和行动步骤分类，常见分类包括项目、上下文、时间等，以更清晰地了解任务的优先级和关联性。如果可以快速执行（&lt;2m）就立刻执行。</li>
<li>回顾：定期回顾任务和行动步骤，确保它们的进度和状态得到及时跟进，更好地掌控任务和生活，从而更加高效地完成任务。</li>
</ul>
</li>
<li>执行：专注于当前任务，避免分散注意力，借助时间管理和注意力控制的技巧提高效率。</li>
</ol>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/gtd.png" alt="gtd"  />


</p>
<p>注，我整理的结构和外部工具略有差异。<mark>我将分类、回顾都合并到组织步骤</mark>因为我发现组织本质是做计划，做计划纪要看收集的待办事项，也要回顾进行中项目和已完成项目，何不都在组织环节一起做好？</p>
<h2 id="我使用过的在线-gtd-服务">我使用过的在线 GTD 服务</h2>
<p>我曾使用过多个在线任务管理软件，包括 Doit.im、Remember The Milk、OmniFocus 和 Toodledo 等，下面分享一下我的使用历程和对比这些软件的差异。</p>
<h3 id="doitim">Doit.im</h3>
<p>我接触 GTD 就是从 <a href="http://doit.im/">Doit.im</a> 开始。这是一款国产软件，也是我非常喜欢的一款应用程序。Doit.im 支持 GTD 的基本功能，提供了清晰的任务列表、分类、优先级等功能，还支持多种回顾模式和多平台同步。然而，我后来放弃了它，因为我发现了更为强大的 Toodledo。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/doit-im.png" alt="doit.im"  />


</p>
<p><small>Image frrom doit.im</small></p>
<h3 id="remember-the-milk">Remember The Milk</h3>
<p>我寻找下一款管理工具时，找到了 <a href="http://www.rememberthemilk.com/">Remember The Milk</a>（RTM）这个应用。RTM 提供了基本的任务管理功能，如添加任务、设置提醒、归档任务等等，并支持多平台同步，可以在电脑、手机等多个设备上使用。</p>
<p>然而，有些人可能不太喜欢 RTM 的用户界面设计，因为它看起来可能有些过时，不够现代化。此外，一些高级功能需要付费使用。当时我还是一个穷学生，没有为软件付费的能力，所以很快放弃了使用 RTM。</p>
<h3 id="toodledo">Toodledo</h3>
<p>我从<a href="https://xbeta.info/gtd-toodledo.htm">善用佳软</a>了解到 <a href="https://www.toodledo.com/">Toodledo</a> 这款任务管理工具（善用佳软是一个著名的软件使用分享网站，我在学生时代从这里获取了相当多的工具和思路）。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/toodledo.png" alt="toodledo"  />


</p>
<p><small>Image frrom toodledo.com</small></p>
<p>我很快在 <a href="http://www.productivelife.cn/">葡挞生活</a> 找到了一份非常完整的教程介绍 Toodledo 高级使用手法，尤其从其中获得了使用 Search 模块的方法。可惜现在网站已经无法打开了。不过，我们可以从一些其他渠道的截图中，略窥当时 Toodledo 的风采：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/productive-life.png" alt="productive-life"  />


</p>
<p><small>Image frrom twitter.com/productivelife</small></p>
<p>Toodledo 很快成为了我最喜欢的任务管理工具。它提供了非常全面的任务管理功能，支持任务分类、排序、筛选等，同时还支持多种回顾模式和自定义字段。此外，Toodledo 还支持多平台同步，并且具有强大的 API，可以方便地与其他应用程序集成。</p>
<h3 id="omnifocus">OmniFocus</h3>
<p>由于 Toodledo 产品功能上一直不思进取，访问比较慢。我还曾经探索式短暂使用了 <a href="https://www.omnigroup.com/omnifocus/">OmniFocus</a>，这是一款专业的 Mac 平台任务管理工具，它提供了任务分解、项目管理、上下文等功能，并可通过 AppleScript 等方式进行扩展。OmniFocus 支持多种同步服务，包括 Omni Sync Server、WebDAV、FTP 等，用户可以根据自己的需求选择不同的服务。所有任务数据都是存储在本地的，因此用户可以在没有网络连接的情况下继续使用软件。</p>
<p>付费使用一段时间之后，我发现 <mark>OmniFocus 的搜索功能和 Toodledo 的 Search 功能实在无法相提并论</mark>它不能满足我的需求。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/omnifocus.png" alt="OmniFocus"  />


</p>
<p><small>Image frrom <a href="https://www.omnigroup.com/omnifocus">www.omnigroup.com/omnifocus</a></small></p>
<h3 id="其他一些">其他一些</h3>
<p>我还曾经尝试过一些任务管理工具，包括 Trello、Asana、Basement、Tower、Teambition 等等，</p>
<p>但是由于它们的功能设计往往是为团队协作设计的，而我主要是个人使用，因此使用起来不够便捷。另外，这些软件的自定义搜索功能（当时）往往也比较弱，无法满足我的需求。最终我都返回到了 Toodledo 怀抱，直到现在。</p>
<h2 id="我如何组织一天的任务">我如何组织一天的任务？</h2>
<p>我认为在 GTD 的体系中，收集和处理阶段相对机械和简单，真正考验人的是<strong>组织</strong>阶段：</p>
<ul>
<li>分类：如何快速检阅所有任务并对它们进行分类和标记；</li>
<li>下一步：如何确定下一个任务的优先级。</li>
</ul>
<p>下面我将分享一些我个人的理念和操作方法。</p>
<h3 id="分类即快速检阅">分类即快速检阅</h3>
<p>为了更好地组织任务，我们需要注意任务的重要属性，包括 <mark>Context（环境）、Project（项目）、Status（状态）和 Due（截止时间）</mark>Context 决定了当前环境下要做什么，是一个简单的过滤器。我将 Context 分为 Computer / Work / Mobile。Project 则将任务归属到不同的项目中，一个项目的周期比较长，并且其中的任务具有强相关性。Status 描述这个任务是立即可处理（Next）还是需要等待（Waiting），有些任务是周期性的则为 Active。Due 则是描述时间属性，一般有到点干（On），在这个时间之前（Due）以及尽量（Optional）。</p>
<p>除此之外，其他属性，如优先级（Priority）、类型（Folder）也需要考虑，但不是最重要的。</p>
<p>为了更好地管理任务，我每天早上都会打开<mark>四个视图：single、subtask、project-xxx 和 inbox</mark></p>
<ul>
<li><strong>single</strong> 是单独任务（包括重复任务），这里面的任务都是独立的，可以根据优先级进行排序。</li>
<li><strong>subtask</strong> 是父子任务，有些任务并不是当天可以完成，必须将任务拆分为小任务，否则会打击完成任务的信心。</li>
<li><strong>project-xxx</strong> 针对特定项目做的分类，我会按照固定模板对每个项目进行分类成十几个任务。</li>
<li><strong>inbox</strong> 其实就是收集的产物，需要进行简单分类处理。</li>
</ul>
<h3 id="下一个任务是什么">下一个任务是什么</h3>
<p>以下是筛选清单，用于确定需要立即进行的任务：</p>
<ul>
<li><strong>Top</strong>：任务优先级高</li>
<li><strong>Due 3 天内且非重复类型</strong>：需要进行检查和准备工作</li>
<li><strong>Due 明天</strong>：需要立即进行</li>
<li><strong>High + Next</strong>：任务优先级较高，且已经具备行动条件</li>
<li><strong>计时器不为空</strong>：说明已经开始执行，但可能会被其他事情打断</li>
<li><strong>Waiting</strong>：表示需要和别人合作，需要检查进度</li>
</ul>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/now.png" alt="toodledo-now"  />


</p>
<p>清单中的任务按照优先级、截止日期和执行状态的综合考虑排序。每次进入工作状态之后，只需要从这个清单中筛选出靠前的几个任务进行执行。</p>
<h2 id="曾经的王者---toodledo">曾经的王者 - Toodledo</h2>
<p>我使用它已经超过了 12 年，付费了 8 年，而且它的产品理念深刻影响了我时间管理的策略。
我介绍一些 Toodledo 中做得相当很不错的功能以及细节：</p>
<h3 id="细节功能">细节功能</h3>
<h4 id="循环任务功能">循环任务功能</h4>
<p>Toodledo 支持循环任务功能，用户可以将一个任务设置为循环任务，并指定它的重复周期，比如每天、每周、每月等。当任务完成后，它会自动重复出现在任务列表中，以便用户再次处理。这个功能可以帮助用户更好地管理一些常规性的任务：日常会议、每日邮件处理、每日 Review 等等。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/repeat-1.png" alt="repeat-1"  />


</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/repeat-2.png" alt="repeat-2"  />


</p>
<h4 id="丰富时间功能类型">丰富时间功能类型</h4>
<p>Toodledo 对日期的支持非常丰富，用户可以根据任务的具体情况选择不同的 Due 类型，比如 Due（截止时间）、Timer（计时器）、Length（时常评估） 等等。这样一来，用户可以更加精细地管理任务的时间，有效地提高工作效率。另外，基于 Timer 计时器，我可以<mark>方便地统计一天的时间耗用情况</mark>更好地把控时间成本。我还开发了一个 <a href="https://github.com/alswl/toodledo_a">Python 脚本</a>用来分析每周的时间耗用。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/toodledo-due.png" alt="Toodledo Due"  />


</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/toodledo-timer.png" alt="Toodledo Timer"  />


</p>
<h4 id="search-功能">Search 功能</h4>
<p>Toodledo 的 Search 功能非常强大，<mark>支持丰富的逻辑查询（提供了条件组合的与或查询）</mark>用户可以根据任务名称、标签、日期、优先级等多个条件进行查询。这个功能可以帮助用户组织任务，提高任务管理的效率，我一度无法离开 Toodledo 也是因为，任务组织这个步骤我高度依赖这项功能。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/toodledo-search.png" alt="Toodledo Search"  />


</p>
<h3 id="我开发的工具和插件">我开发的工具和插件</h3>
<p>整体而言，我还是愿意给大家推荐 Toodledo。我自己也在 Toodledo 之上基于它提供的 API 开发了
多款工具和插件。我给大家介绍一下：</p>
<h4 id="buff-1-优雅订阅-toodledo-日历">Buff 1 优雅订阅 Toodledo 日历</h4>
<p>Toodledo 提供了日历订阅能力，将待办事项显示在各类日历软件中。但原始的信息非常混乱，没有考虑任务的 Time，并且时间也是计算错误。为此我开发了一个 Web 服务，叫做 <a href="https://github.com/alswl/toodledo_calendar_filter">toodledo_calendar_filter</a>。</p>
<p>它可以将 Toodledo 的任务更友好地显示在日历系统上。具体来说，它可以过滤 <a href="https://www.toodledo.com/info/help_ical.php">Toodledo 的 iCal</a>，只显示那些具有到期日期和时长的任务。如果你也有相关需求可以直接使用我提供的在线服务（https://toodledo-calendar-filter.alswl.com）。</p>
<p>Before：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/calendar-before.png" alt="calendaer-before"  />


</p>
<p>After：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/calendar-after.png" alt="calendar-after"  />


</p>
<h4 id="buff-2-让-toodledo-具备-gmail-快捷键">Buff 2 让 Toodledo 具备 Gmail 快捷键</h4>
<p>当你使用 Toodledo 进行任务管理时，你是否感到操作繁琐，鼠标使用效率不高，非常怀念 Gmail 风格的快捷键？如果是这样，那么我的项目 <a href="https://github.com/alswl/my-toodledo">alswl/my-toodledo</a> 可以帮助你解决这个问题。</p>
<p>它是一个针对 Toodledo 的油猴脚本（User Script），提供了一系列 Gmail 风格的快捷键，让你可以像使用 Gmail 一样快速操作 Toodledo，包括移动任务（<code>j</code> / <code>k</code>）、任务操作（<code>x</code> 标记完成，<code>enter</code> 启动任务）、切换任务视图（<code>g s</code> 跳转搜索）等等。它在 Chrome / Safari / Firefox 上运行稳定，如果你想要提高 Toodledo 的使用效率，不妨试一试吧。</p>
<h4 id="buff-3-命令行工具-go-toodledo">Buff 3 命令行工具 go-toodledo</h4>
<p>为了快速收集任务，我曾经使用一个 Github 上面 CLI 小工具（<a href="https://github.com/wsargent/toodledo">wsargent/toodledo</a>）。但它是基于 v1 版本的 API，官方已经在七八年前就说 v1 版本 API 要下线。于是我自己做了一个叫做 <a href="https://github.com/alswl/go-toodledo">go-toodledo </a>小项目。</p>
<p>一开始 go-toodledo 只是提供最简单的 CLI 功能。后来我逐步补充了完整 SDK、CLI 全功能，甚至还提供了一个<mark>互动式的 TUI 小应用</mark>让用户可以方便在 Terminal 地使用 Toodledo。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/go-toodledo.png" alt="go-toodledo"  />


</p>
<p>Toodledo 官方并没有提供 OpenAPI 接口，我以逆向的方式生成了一份 <a href="https://github.com/alswl/go-toodledo/blob/master/api/swagger.yaml">go-toodledo/swagger.yaml</a>，如果还有其他人有对 Toodledo API 开发需求，可以基于这份 API 直接使用。</p>
<h3 id="离开">离开</h3>
<p>最近，我对一直使用的任务管理服务 Toodeldo 的<mark>稳定性</mark>越来越失望。
他们<a href="https://blog.toodledo.com/hello-from-the-new-toodledo-team/">换了新的服务提供商</a>，
服务出现不稳定的频率更高，而新团队的产品能力也让我产生了一些质疑。
因此，我决定开始寻找下一个更好的任务管理服务。
因为 <a href="https://mp.weixin.qq.com/s/jJG36Hbrw2-ZeUT3aDXKBA">Kindle 在中国停止服务的事件</a>让我对云服务的可靠性产生了疑虑。
因此，我开始寻找一些<mark>本地化的任务管理方案</mark>这些方案可以通过网盘（例如 iCloud）进行服务，
这样可以更好地保护我的数据和隐私。</p>
<h2 id="最终获胜者---obsidian-tasks">最终获胜者 - Obsidian Tasks</h2>
<p><a href="https://obsidian.md/">Obsidian</a>是一款基于本地文件的个人知识管理（KMS）和笔记应用程序，可帮助用户将其笔记和想法组织、链接和分析。它是一款纯粹的本地软件，我们可以使用网盘 / NAS 等方式进行多端同步。</p>
<p><a href="https://github.com/obsidian-tasks-group/obsidian-tasks">Obsidian Tasks</a> 则是一款<mark>强大的 Obsidian 插件</mark>它可以让你在 Obsidian 中轻松地管理任务和待办事项。这个插件可以通过简单的语法将任务添加到你的笔记中，并根据任务的完成情况自动标记任务的状态。你可以使用 Obsidian Tasks 来跟踪个人任务、工作任务、学习任务等等。此外，它还具有一些其他功能，例如自定义任务样式、创建过滤器来查找任务，以及可以根据任务状态自动移动任务。Obsidian + Obsidian Tasks 是一个完美组合，可以帮助你更好地管理你的待办事项，提高你的生产力。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/obisidian-tasks.png" alt="Obsidian Tasks"  />


</p>
<p><small>Image frrom <a href="https://github.com/obsidian-tasks-group/obsidian-tasks">https://github.com/obsidian-tasks-group/obsidian-tasks</a></small></p>
<p>我的个人 KMS 已经完整地从 <a href="http://notion.com/">Notion</a> 迁移到了 Obisidian，现在使用 Obisidan Tasks 迁移成本很低。经过一段时间对 Obsidian Tasks 的学习，我将原来的使用模式较为顺利搬到了 Obsidian Tasks。我接着之前两个场景<strong>整理</strong>和<strong>下一个任务</strong>来介绍如何高效使用 Obsidian Tasks。</p>
<p>我通过以下几种形式组织待办任务：</p>
<ul>
<li>使用 <code>[ ]</code> 标记的普通文档任务，一般是零散小任务。</li>
<li>使用以 <code>.todo.md</code> 结尾的专用文档，以对项目进行统筹。</li>
<li>使用带有 <code>#todo</code> 标签的文档，一般是一个大事项，我会在顶部拆分出一个 <code>TODO</code> 队列，拆分出若干个 Tasks，拆完之后我会去掉 <code>#todo</code> 标签。</li>
</ul>
<p>基于这个组织结构，我轻松搞定<strong>整理</strong>和<strong>下一个任务</strong>这两个：</p>
<h3 id="分类即快速检阅-1">分类即快速检阅</h3>
<p>使用几个视图<mark>将 Obsidian Tasks 中记录的任务进行多个视图呈现</mark>分别是：</p>
<ul>
<li>今日视角
<ul>
<li>non repeated：一次性任务，往往更重要</li>
<li>repeat：重复性任务，比如周会、约会，往往偏事务性</li>
</ul>
</li>
<li>时间视角
<ul>
<li>即将到期时间（7 天内）</li>
</ul>
</li>
<li>Single Tasks：没有在 <code>.todo</code> 结尾的文件内，即分散在各个日常事务的碎任务</li>
<li>Project：按项目进行排列的任务</li>
<li>有 <code>#todo</code> 标签的任务，往往是一个文档需要整体来处理</li>
</ul>
<p>这几个视图可以让你更好地将任务进行分类，并快速检阅各个任务。通过这些视图，你可以更好地管理你的待办事项，提高你的生产力。</p>
<p>这是我的 projects/View.todo.md`：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gu">## Today
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**WIP**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">status.type is IN_PROGRESS
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**High（规划、设计都是高优先级）**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">priority is above medium
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**None repetead due today**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">((not done) AND (due before in 1 day)) OR (done on today)
</span></span><span class="line"><span class="cl">is not recurring
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Repeated due today**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">((not done) AND (due before in 1 day)) OR (done on today)
</span></span><span class="line"><span class="cl">is recurring
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Over due before today**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">due before today
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Today complete**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">done
</span></span><span class="line"><span class="cl">done on today
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Future (no repeat)
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**in 1 day**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">due before in 1 day
</span></span><span class="line"><span class="cl">is not recurring
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl">sort by due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**in 3 day**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">due after in 1 day
</span></span><span class="line"><span class="cl">due before in 3 day
</span></span><span class="line"><span class="cl">is not recurring
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl">sort by due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**in 7 day**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">due after in 3 day
</span></span><span class="line"><span class="cl">due before in 7 day
</span></span><span class="line"><span class="cl">is not recurring
</span></span><span class="line"><span class="cl">sort by priority
</span></span><span class="line"><span class="cl">sort by due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Singles Tasks
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**in 7d（non project x no repeate）**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">status.type is not CANCELLED
</span></span><span class="line"><span class="cl">NOT (path includes .index)
</span></span><span class="line"><span class="cl">NOT (path includes .todo)
</span></span><span class="line"><span class="cl">NOT (path includes .notodo)
</span></span><span class="line"><span class="cl">due after in 7 days
</span></span><span class="line"><span class="cl">sort by priority, due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**none project x no due x no repeat**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">status.type is not CANCELLED
</span></span><span class="line"><span class="cl">NOT (path includes .index)
</span></span><span class="line"><span class="cl">NOT (path includes .todo)
</span></span><span class="line"><span class="cl">NOT (path includes .notodo)
</span></span><span class="line"><span class="cl">no due date
</span></span><span class="line"><span class="cl">sort by priority, due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Projects
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">TODO
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## Help
</span></span></span><span class="line"><span class="cl"><span class="k">
</span></span></span><span class="line"><span class="cl"><span class="k">&gt; </span><span class="ge">[Queries Syntax](https://obsidian-tasks-group.github.io/obsidian-tasks/queries/)
</span></span></span></code></pre></div><h3 id="下一个任务是什么-1">下一个任务是什么</h3>
<p>在 Obsidian 的 <a href="https://help.obsidian.md/Plugins/Daily&#43;notes">Daily Note</a> 插件中，设置模板为 <code>_templates/daily</code>，这样每天就获得一个随时可以使用的当天待办事项。</p>
<p>这是我的 Dailly 设置，通过四个区块区分：今天到期单任务 / 今天到期重复任务（事务性，不重要） / 今日已完成 / 今日新任务（一般是 Single）。</p>
<p>这是我的 <code>_template/daily.md</code> 文件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gu">## TODO
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**WIP**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">status.type is IN_PROGRESS
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**New tasks**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Tasks view - today**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">((not done) AND (due before {{date}})) OR ((not done) AND (due on {{date}})) OR (done on {{date}})
</span></span><span class="line"><span class="cl">is not recurring
</span></span><span class="line"><span class="cl">sort by priority, due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Tasks view - today(repeated)**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">((not done) AND (due before {{date}})) OR ((not done) AND (due on {{date}})) OR (done on {{date}})
</span></span><span class="line"><span class="cl">is recurring
</span></span><span class="line"><span class="cl">sort by priority, due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Over due date**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">not done
</span></span><span class="line"><span class="cl">due before {{date}}
</span></span><span class="line"><span class="cl">sort by priority, due
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Projects**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">YOURS
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gs">**Tasks view - today done**</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s">```tasks
</span></span></span><span class="line"><span class="cl">done
</span></span><span class="line"><span class="cl">done on {{date}}
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span></code></pre></div><h3 id="obsidian-tasks-有什么缺点">Obsidian Tasks 有什么缺点？</h3>
<p>首先，需要注意的是，Obsidian Tasks 是 Obsidian 的插件，如果之前没有使用 Obsidian，可能需要花费一些时间上手。不过，如果您已经使用了 Obsidian，那么 Obsidian Tasks 的双链功能将为您在 GTD 场景中提供极佳的支持，这既是其优点也是劣势。</p>
<p>其次，Obsidian Tasks 目前还没有提供计时器功能。不过，对于我个人而言，这一点已经不再重要了。随着年龄的增长以及十多年的 GTD 训练，我已经不需要通过工具来保持专注力。在工作状态下，我会比较专注，并且不会经常性分心。</p>
<p>最后，需要注意的是 Obsidian 自身的问题。Obsidian 是一个基于本地文件的工具，这意味着它没有在线工具（尽管有其他基于云存储的解决方案）。如果您希望找到一个电脑和手机都可以访问的在线服务，那么 Obsidian Tasks 可能不太适合您。对我来说，我使用 Obsidian 的方案是因为我拥有 Apple 全家桶，并购买了 iCloud 存储服务，因此我的数据都存储在 <a href="https://www.icloud.com/">iCloud Drive</a> 上。我使用 <a href="https://obsidian.md/download">Obsidian 的 macOS 应用程序</a>和 <a href="https://apps.apple.com/us/app/obsidian-connected-notes/id1557175442">iOS 版本</a>应用程序，这使我可以轻松地在 Macbook 和 iPhone 之间使用同一个 Vault（即 Obsidian 知识库）。启动应用程序之前，我会确认 Vault 同步完成后再进入应用程序。</p>
<h2 id="最后">最后</h2>
<p>时间管理是现代工作者不可避免的话题，也是我们时常为之烦恼的问题。GTD 的方法论恰恰提供了一种轻松而高效的管理方式，让我们能够<mark>迅速结束拖延、分心的状态，全身心地投入工作</mark></p>
<p>工具很重要，但并不能解决所有问题。要做好时间管理，最重要的是要清楚<mark>自己的目标是什么</mark>当你心里有一个重要的使命时，它会不断地在你脑海中浮现，这时候甚至不需要 GTD 工具的管理。</p>
<p>希望本文介绍的 GTD 方法可以在你的工作和生活中带来帮助，让你更高效地完成自己的任务，同时也不要忘记享受生活的美好。记住，时间是有限的，珍惜每分每秒，抓住每一个机会，让自己的人生更加精彩！</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[让 Apple Music 播放豆瓣音乐 Top 250]]></title>
    <link href="https://blog.alswl.com/2023/02/douban-music-top-250-in-apple-music/"/>
    <id>https://blog.alswl.com/2023/02/douban-music-top-250-in-apple-music/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2023-02-07T23:50:50+08:00</published>
    <updated>2023-02-07T23:50:50+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675665150507-502b11ac-0720-4799-8a23-1d7cb27ec553.png" alt="image"  />


</p>
<p>乐坛少有新歌，我经常听一些老歌，有时候顺着豆瓣音乐 Top 250 一点点听下去，感觉还是挺不错。
这中间一直有个麻烦地方：每次都要从豆瓣复制标题去 Apple Music 搜索。有没有简单便捷的方式直接一键抵达呢？
我没有找到答案，于是我自己整理了这批 Apple Music 链接，点击就可以直接跳转到 Apple Music 直接播放了</p>
<p>如上图所示，在本文点击「▶️ Apple Music」按钮，会打开 Apple Music 网站，点左侧的「Open in Music」即可在 Apple Music 打开。</p>
<p>PS：iPhone 上点击链接（Notes / Safari 等）会直接在 Apple Music 打开。</p>
<p>Update 2024-07：我提供了一个在线小网页可以随机选择一个专辑给你，并且一键播放 Apple Music。
<a href="https://random-apple-music.alswl.com/">Random Apple Music</a>
源码 <a href="https://github.com/alswl/random-apple-music">alswl/random-apple-music</a>。</p>
<h2 id="we-sing-we-dance-we-steal-things"><a href="https://music.douban.com/subject/2995812/">We Sing. We Dance. We Steal Things.</a></h2>
<p>Jason Mraz / 2008-05-13 / Import / Audio CD / 民谣</p>
<p>9.1 ( 115738人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205563-60b7e811-e094-4f0a-a40f-656ad2c5b991.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/we-sing-we-dance-we-steal-things/277635758?l=en">▶️ Apple Music</a></p>
<h2 id="viva-la-vida--death-and-all-his-friends"><a href="https://music.douban.com/subject/3040149/">Viva La Vida | Death And All His Friends</a></h2>
<p>Coldplay / 2008-06-17 / 专辑 / CD / 摇滚</p>
<p>9.0 ( 117391人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205664-15960011-481e-4736-ad81-617656f3d315.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/viva-la-vida-or-death-and-all-his-friends/1122773394?l=en">▶️ Apple Music</a></p>
<h2 id="华丽的冒险--華麗的冒險"><a href="https://music.douban.com/subject/1427374/">华丽的冒险 | 華麗的冒險</a></h2>
<p>陈绮贞 / 2005-09-23 / 专辑 / CD / 流行</p>
<p>9.0 ( 88220人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205663-d9bf1dcd-cdf6-4130-aaae-860132d9b084.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%8F%AF%E9%BA%97%E7%9A%84%E5%86%92%E9%9A%AA/1598245172?l=en">▶️ Apple Music</a></p>
<h2 id="范特西--fantasy"><a href="https://music.douban.com/subject/1403307/">范特西 | Fantasy</a></h2>
<p>周杰伦 / 2001-09-14 / 专辑 / CD / 流行</p>
<p>9.5 ( 172202人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205725-1c5abbe2-f81c-4376-822d-e50fb076dbe5.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%8C%83%E7%89%B9%E8%A5%BF/535739206?l=en">▶️ Apple Music</a></p>
<h2 id="後青春期的詩--后青春期的诗"><a href="https://music.douban.com/subject/3259411/">後。青春期的詩 | 后青春期的诗</a></h2>
<p>五月天 / 2008-10-23 / 专辑 / CD / 摇滚</p>
<p>9.0 ( 94647人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205708-46036223-c88d-4ffd-88ff-888afbd98254.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%BE%8C-%E9%9D%92%E6%98%A5%E6%9C%9F%E7%9A%84%E8%A9%A9/1081381033?l=en">▶️ Apple Music</a></p>
<h2 id="是时候--its-time"><a href="https://music.douban.com/subject/5958397/">是时候 | It's Time</a></h2>
<p>孙燕姿 / 2011-03-08 / 专辑 / CD / 流行</p>
<p>8.7 ( 81241人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205798-97ec29af-1730-4b16-9e83-1f9b9b050f9c.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%98%AF%E6%99%82%E5%80%99/1442430575?l=en">▶️ Apple Music</a></p>
<h2 id="lenka"><a href="https://music.douban.com/subject/3184419/">Lenka</a></h2>
<p>Lenka / 2008-09-23 / 专辑 / Audio CD / 流行</p>
<p>8.6 ( 83181人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664205975-676de89e-1c57-4b28-b74d-dff4c8ededb9.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/lenka-expanded-edition/1460863383?l=en">▶️ Apple Music</a></p>
<h2 id="start-from-here--从这里开始"><a href="https://music.douban.com/subject/3041487/">Start from Here | 从这里开始</a></h2>
<p>王若琳 / 2008-01-11 / 专辑 / CD / 爵士</p>
<p>8.8 ( 75301人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206159-9abef793-a1a6-4ea7-a25e-ef32d0f960a6.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/start-from-here/307678054?l=en">▶️ Apple Music</a></p>
<h2 id="旅行的意义"><a href="https://music.douban.com/subject/1395089/">旅行的意义</a></h2>
<p>陈绮贞 / 2004-02-02 / 单曲 / CD / 流行</p>
<p>9.1 ( 98494人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206079-9c7f33a4-a97f-4a59-bba9-d444bdfb228a.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%97%85%E8%A1%8C%E7%9A%84%E6%84%8F%E7%BE%A9-single/1229089359?l=en-GB">▶️ Apple Music</a></p>
<h2 id="太阳--immortal"><a href="https://music.douban.com/subject/3390002/">太阳 | Immortal</a></h2>
<p>陈绮贞 / 2009-01-22 / 专辑 / CD / 流行</p>
<p>8.7 ( 74979人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206088-a049fe9c-b2e4-4353-aefd-65f75d7b63a0.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A4%AA%E9%99%BD/1598246570?l=en">▶️ Apple Music</a></p>
<h2 id="once-soundtrack--once--电影曾经原声大碟"><a href="https://music.douban.com/subject/2131368/">Once (Soundtrack) | Once / 电影《曾经》原声大碟</a></h2>
<p>Glen Hansard,Marketa Irglova / 2007-05-22 / Soundtrack / CD / 原声</p>
<p>9.2 ( 72580人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206346-4b33fee3-b443-4129-918e-199c055d6732.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/once-music-from-the-motion-picture/254347531?l=en">▶️ Apple Music</a></p>
<h2 id="not-going-anywhere--守候"><a href="https://music.douban.com/subject/1394765/">Not Going Anywhere | 守候</a></h2>
<p>Keren Ann / 2004-08-24 / Import / Audio CD / 民谣</p>
<p>8.9 ( 62347人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206390-30dae134-17f9-4d6c-8a93-ffa2b805f3c8.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/not-going-anywhere/1240300677?l=en">▶️ Apple Music</a></p>
<h2 id="american-idiot"><a href="https://music.douban.com/subject/1396380/">American Idiot</a></h2>
<p>Green Day / 2004-09-21 / Explicit Lyrics / Audio CD / 摇滚</p>
<p>9.0 ( 72130人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206483-be8b534c-1c46-4401-a47f-c0aa5faeea33.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/american-idiot/1161539183?l=en">▶️ Apple Music</a></p>
<h2 id="思念是一种病--ok"><a href="https://music.douban.com/subject/2134548/">思念是一种病 | OK</a></h2>
<p>张震岳 Csun Yuk / 2007-07-06 / 专辑 / CD / 流行</p>
<p>8.8 ( 81378人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206580-c4c32d06-45c2-4209-aa05-73b8c1539343.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/ok/661608562?l=en">▶️ Apple Music</a></p>
<h2 id="無與倫比的美麗--无与伦比的美丽"><a href="https://music.douban.com/subject/3717116/">無與倫比的美麗 | 无与伦比的美丽</a></h2>
<p>苏打绿 / 2007-11-02 / 专辑 / CD / 流行</p>
<p>8.8 ( 89048人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206698-2bce39cf-a530-4758-bd99-3df7e1e3978b.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%84%A1%E8%88%87%E5%80%AB%E6%AF%94%E7%9A%84%E7%BE%8E%E9%BA%97/1443209385?l=en">▶️ Apple Music</a></p>
<h2 id="亲爱的我还不知道--親愛的我還不知道"><a href="https://music.douban.com/subject/2131595/">亲爱的...我还不知道 | 親愛的...我還不知道</a></h2>
<p>张悬 / 2007-07-20 / 专辑 / CD / 流行</p>
<p>8.7 ( 64429人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206690-53fdb594-ba51-4a75-a696-a23db26466d4.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%A6%AA%E6%84%9B%E7%9A%84-%E6%88%91%E9%82%84%E4%B8%8D%E7%9F%A5%E9%81%93/312524587?l=en">▶️ Apple Music</a></p>
<h2 id="城市--the-city"><a href="https://music.douban.com/subject/3801228/">城市 | The City</a></h2>
<p>张悬 / 2009-05-22 / 专辑 / CD / 流行</p>
<p>8.6 ( 62928人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206746-c1516671-7398-4776-8427-d95ba70fb529.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%9F%8E%E5%B8%82/317557859?l=en">▶️ Apple Music</a></p>
<h2 id="o"><a href="https://music.douban.com/subject/1394590/">O</a></h2>
<p>Damien Rice / 2003 / 专辑 / CD / 流行</p>
<p>9.1 ( 52588人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664206904-59b667b8-7d22-419c-9309-ecfc7d5bd95d.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/o/41864569?l=en">▶️ Apple Music</a></p>
<h2 id="wake-me-up-when-september-ends--九月结束的时候叫醒我"><a href="https://music.douban.com/subject/1431596/">Wake Me Up When September Ends | 九月结束的时候叫醒我</a></h2>
<p>Green Day / 2005-06-13 / 单曲 / CD / 摇滚</p>
<p>9.4 ( 54233人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207006-87df91f6-84db-4f1f-80d8-ea3aa979c90b.png" alt="image"  />


</p>
<p>nil</p>
<h2 id="叶惠美--葉惠美"><a href="https://music.douban.com/subject/1406522/">叶惠美 | 葉惠美</a></h2>
<p>周杰伦 / 2003-07-31 / 专辑 / CD / 流行</p>
<p>9.2 ( 103849人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207024-11e3d721-7e13-4305-bc11-f3612b415722.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%91%89%E6%83%A0%E7%BE%8E/535824731?l=en">▶️ Apple Music</a></p>
<h2 id="七里香--common-jasmin-orange"><a href="https://music.douban.com/subject/1401853/">七里香 | Common Jasmin Orange</a></h2>
<p>周杰伦 / 2004 / 专辑 / CD / 流行</p>
<p>9.1 ( 159642人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207089-76946c6b-bfcf-4334-b52d-d88c28d85942.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%91%89%E6%83%A0%E7%BE%8E/535824731?l=en">▶️ Apple Music</a></p>
<h2 id="21"><a href="https://music.douban.com/subject/5351500/">21</a></h2>
<p>Adele / 2011-01-24 / 专辑 / CD / 流行</p>
<p>9.3 ( 72900人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207161-c5e3a421-8a38-4381-a5f7-ceebee153a3a.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/21/403037872?l=en">▶️ Apple Music</a></p>
<h2 id="my-life-will"><a href="https://music.douban.com/subject/1788174/">My Life Will...</a></h2>
<p>张悬 / 2006-06-09 / 专辑 / CD / 流行</p>
<p>8.8 ( 56634人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207316-c4cf8f55-2297-4af4-807f-a643f7b83d2c.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/my-life-will/300117892?l=en">▶️ Apple Music</a></p>
<h2 id="寓言"><a href="https://music.douban.com/subject/1402531/">寓言</a></h2>
<p>王菲 / 2000 / 专辑 / CD / 流行</p>
<p>9.4 ( 66995人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207334-6cc04ec8-020a-410d-973b-904748ba8a90.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AF%93%E8%A8%80/966489223?l=en">▶️ Apple Music</a></p>
<h2 id="你在煩惱什麼--你在烦恼什么"><a href="https://music.douban.com/subject/6816154/">你在煩惱什麼 | 你在烦恼什么</a></h2>
<p>苏打绿 / 2011-11-11 / 专辑 / CD / 流行</p>
<p>9.0 ( 57675人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664207566-519cfac2-39e8-4556-9b80-88ed3bb69521.png" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%BD%A0%E5%9C%A8%E7%85%A9%E6%83%B1%E4%BB%80%E9%BA%BC/1461040610?l=en">▶️ Apple Music</a></p>
<h2 id="感官世界--senses-around"><a href="https://music.douban.com/subject/4738592/">感官/世界 | Senses Around</a></h2>
<p>林宥嘉 / 2009-10-30 / 专辑 / CD / 流行</p>
<p>8.6 ( 59038人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664269836-c21322a3-f883-4a1d-89c3-0319c813cdf8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%84%9F%E5%AE%98-%E4%B8%96%E7%95%8C/547158777?l=en">▶️ Apple Music</a></p>
<h2 id="nevermind--别介意"><a href="https://music.douban.com/subject/1394568/">Nevermind | 别介意</a></h2>
<p>Nirvana / 1991 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 62973人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664269974-5193065d-c934-4e83-97bb-3bd16603ab3b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/nevermind/1440783617?l=en">▶️ Apple Music</a></p>
<h2 id="八度空间--the-eight-dimensions"><a href="https://music.douban.com/subject/1403832/">八度空间 | The Eight Dimensions</a></h2>
<p>周杰伦 / 2002-07-19 / 专辑 / CD / 流行</p>
<p>9.2 ( 87077人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664269895-8bab66e3-b354-471b-83c0-c46cddc44acb.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%85%AB%E5%BA%A6%E7%A9%BA%E9%96%93/536161722?l=en">▶️ Apple Music</a></p>
<h2 id="jay"><a href="https://music.douban.com/subject/1422300/">Jay</a></h2>
<p>周杰伦 / 2000-11-13 / 专辑 / Audio CD / 流行</p>
<p>9.3 ( 90828人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664269973-734d794b-21b2-4592-9bf6-86a11c7c500e.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%8C%83%E7%89%B9%E8%A5%BF/535739206?l=en">▶️ Apple Music</a></p>
<h2 id="parachutes--降落伞"><a href="https://music.douban.com/subject/1463061/">Parachutes | 降落伞</a></h2>
<p>Coldplay / 2000-07-10 / 专辑 / CD / 摇滚</p>
<p>9.2 ( 54165人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664269841-cef9ab04-da90-4b43-b1a3-bf930bb1b654.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/parachutes/1122782080?l=en">▶️ Apple Music</a></p>
<h2 id="我要的幸福--my-desired-happiness"><a href="https://music.douban.com/subject/1405028/">我要的幸福 | My Desired Happiness</a></h2>
<p>孙燕姿 / 2000-12-7 / 专辑 / CD / 流行</p>
<p>9.0 ( 60779人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270370-e0ce1360-e4e8-4c9e-b93d-65c806850072.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E8%A6%81%E7%9A%84%E5%B9%B8%E7%A6%8F/298837646?l=en">▶️ Apple Music</a></p>
<h2 id="还是会寂寞--还是会寂寞"><a href="https://music.douban.com/subject/1394547/">还是会寂寞 | 还是会寂寞</a></h2>
<p>陈绮贞 / 2000 / 专辑 / CD / 流行</p>
<p>9.1 ( 51164人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270498-aa153c89-45f2-4bc5-844a-7995e395f286.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%82%84%E6%98%AF%E6%9C%83%E5%AF%82%E5%AF%9E/152200437?l=en">▶️ Apple Music</a></p>
<h2 id="let-go--展翅高飞"><a href="https://music.douban.com/subject/1394992/">Let Go | 展翅高飞</a></h2>
<p>Avril Lavigne / 2002 / Enhanced / Audio CD / 摇滚</p>
<p>8.9 ( 55425人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270456-21f8a5b0-a592-4a7e-8481-4b41f4b4e544.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/let-go/315025768?l=en">▶️ Apple Music</a></p>
<h2 id="十一月的萧邦--novembers-chopin"><a href="https://music.douban.com/subject/1436975/">十一月的萧邦 | November's Chopin</a></h2>
<p>周杰伦 / 2005-11-01 / 专辑 / CD / 流行</p>
<p>8.9 ( 94955人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270492-d44fb400-df3b-4449-9fe7-7bc102c42795.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/11%E6%9C%88%E7%9A%84%E8%95%AD%E9%82%A6/536009641?l=en">▶️ Apple Music</a></p>
<h2 id="橙月--orange-moon"><a href="https://music.douban.com/subject/3313612/">橙月 | Orange Moon</a></h2>
<p>方大同 / 2008-12-19 / 专辑 / CD / 放克/灵歌/R&amp;B</p>
<p>8.6 ( 49661人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270668-e735c119-203d-4c43-9c12-0b55a3da9dc1.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%A9%99%E6%9C%88/313404785?l=en">▶️ Apple Music</a></p>
<h2 id="小宇宙--little-universe"><a href="https://music.douban.com/subject/1900796/">小宇宙 | Little Universe</a></h2>
<p>苏打绿 / 2006-10-20 / 专辑 / CD / 流行</p>
<p>8.9 ( 51741人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271051-0122a465-9c4d-441b-a58a-ae20488bcf6c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B0%8F%E5%AE%87%E5%AE%99/1461046017?l=en">▶️ Apple Music</a></p>
<h2 id="若你碰到他--若你碰到他"><a href="https://music.douban.com/subject/4323489/">若你碰到他 | 若你碰到他</a></h2>
<p>蔡健雅 / 2009-08-19 / 专辑 / CD / 流行</p>
<p>8.1 ( 51151人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270826-242ef23d-ae32-4735-afc4-2487315042e0.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%8B%A5%E4%BD%A0%E7%A2%B0%E5%88%B0%E4%BB%96/672641879?l=en">▶️ Apple Music</a></p>
<h2 id="lady--bird"><a href="https://music.douban.com/subject/1394763/">Lady &amp; Bird</a></h2>
<p>Lady &amp; Bird / 2003 / Import / Audio CD / 民谣</p>
<p>8.8 ( 43532人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664270894-a3d2d89d-a432-4d00-aeb3-0b4d424d92e6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/lady-bird/1240196666?l=en">▶️ Apple Music</a></p>
<h2 id="万能青年旅店"><a href="https://music.douban.com/subject/5344708/">万能青年旅店</a></h2>
<p>万能青年旅店 / 2010-11-12 / 专辑 / CD / 摇滚</p>
<p>9.5 ( 84135人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271119-81ab9004-4943-476e-8b0a-e5af3b860482.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%87%E8%83%BD%E9%9D%92%E5%B9%B4%E6%97%85%E5%BA%97/1538548871?l=en">▶️ Apple Music</a></p>
<h2 id="meteora--流星圣殿"><a href="https://music.douban.com/subject/1395785/">Meteora | 流星圣殿</a></h2>
<p>Linkin Park / 2003-03-25 / Enhanced / Audio CD / 摇滚</p>
<p>9.1 ( 45142人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271308-ce8eec50-4589-4721-b627-db0f2b77295d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/meteora/528435845?l=en">▶️ Apple Music</a></p>
<h2 id="back-to-bedlam--不安於室"><a href="https://music.douban.com/subject/1401550/">Back To Bedlam | 不安於室</a></h2>
<p>James Blunt / 2004 / Explicit Lyrics / Audio CD / 流行</p>
<p>9.0 ( 43229人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s1461123.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/back-to-bedlam/714602877?l=en">▶️ Apple Music</a></p>
<h2 id="苏打绿同名专辑"><a href="https://music.douban.com/subject/1421488/">苏打绿同名专辑</a></h2>
<p>苏打绿,蘇打綠 / 2005年9月 / 国语 / CD / 流行</p>
<p>8.9 ( 53849人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2360790.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%98%87%E6%89%93%E7%B6%A0%E5%90%8C%E5%90%8D%E5%B0%88%E8%BC%AF/1443094831?l=en">▶️ Apple Music</a></p>
<h2 id="静茹情歌-别再为他流泪--别再为他流泪"><a href="https://music.douban.com/subject/3427630/">静茹&amp;情歌 别再为他流泪 | 别再为他流泪</a></h2>
<p>梁静茹 / 2009-01-16 / 专辑 / Audio CD / 流行</p>
<p>8.5 ( 46781人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s3551584.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%88%AB%E5%86%8D%E4%B8%BA%E4%BB%96%E6%B5%81%E6%B3%AA/1095630068?l=en">▶️ Apple Music</a></p>
<h2 id="美妙生活--perfect-life"><a href="https://music.douban.com/subject/6113840/">美妙生活 | Perfect Life</a></h2>
<p>林宥嘉 / 2011-05-06 / 专辑 / CD / 流行</p>
<p>8.7 ( 48384人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271859-d244ea46-7e74-4417-a56c-d1165b4c678c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%BE%8E%E5%A6%99%E7%94%9F%E6%B4%BB/545213762?l=en">▶️ Apple Music</a></p>
<h2 id="le-fabuleux-destin-damélie-poulain--天使爱美丽"><a href="https://music.douban.com/subject/1394798/">Le Fabuleux destin d'Amélie Poulain | 天使爱美丽</a></h2>
<p>Yann Tiersen / 2001-04-23 / Soundtrack / Audio CD / 原声</p>
<p>9.4 ( 44514人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271974-b020ffff-cd08-44b7-9134-618768121695.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/le-fabuleux-destin-dam%C3%A9lie-poulain-bande-originale-du-film/1575400412?l=en">▶️ Apple Music</a></p>
<h2 id="joanna--王若琳"><a href="https://music.douban.com/subject/3335374/">Joanna &amp; 王若琳</a></h2>
<p>王若琳 / 2009-01-16 / 专辑 / CD / 爵士</p>
<p>8.3 ( 43076人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664271893-97ef9a5c-5a32-4896-9378-53fc703c6dd8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/joanna-%E7%8E%8B%E8%8B%A5%E7%90%B3/311238877?l=en">▶️ Apple Music</a></p>
<h2 id="a-plea-en-vendredi"><a href="https://music.douban.com/subject/1776145/">A Plea En Vendredi</a></h2>
<p>Tamas Wells / 2006 / Import / Audio CD / 民谣</p>
<p>9.0 ( 39351人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664272264-54ef06d3-6e9c-46b9-96ec-ca9d461d4cd6.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="to-hebe--給-自己"><a href="https://music.douban.com/subject/4935955/">To Hebe | 給 自己</a></h2>
<p>田馥甄 Hebe / 2010-09-03 / 专辑 / CD / 流行</p>
<p>8.2 ( 45022人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664272585-46959c4b-f062-4631-a8bc-d3fddbc08393.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/to-hebe/545945568?l=en">▶️ Apple Music</a></p>
<h2 id="逆光--against-the-light"><a href="https://music.douban.com/subject/2009904/">逆光 | Against the Light</a></h2>
<p>孙燕姿 / 2007-03-22 / Import / CD / 流行</p>
<p>8.6 ( 69921人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664272542-2d3e1e97-a114-470f-b0bf-1e1d766047fd.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%80%86%E5%85%89/905226289?l=en">▶️ Apple Music</a></p>
<h2 id="只爱陌生人"><a href="https://music.douban.com/subject/3590980/">只爱陌生人</a></h2>
<p>王菲 / 1999-09-10 / Import / CD / 流行</p>
<p>9.4 ( 56383人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664272622-cb5513ff-91dc-4da7-b390-c3947071e0ca.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%8F%AA%E6%84%9B%E9%99%8C%E7%94%9F%E4%BA%BA/966481932?l=en">▶️ Apple Music</a></p>
<h2 id="music-for-tourists"><a href="https://music.douban.com/subject/1960229/">Music For Tourists</a></h2>
<p>Chris Garneau / 2007-01-23 / 引进版 / Audio CD / 民谣</p>
<p>8.8 ( 39023人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664281858-b63fcadb-95ad-4309-a263-fb13d23a7037.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="the-moment--关键时刻"><a href="https://music.douban.com/subject/1402385/">The Moment | 关键时刻</a></h2>
<p>孙燕姿 / 2003-08-22 / 专辑 / CD / 流行</p>
<p>9.1 ( 42823人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664281766-2180c5dc-ed15-4644-881e-9112f1a7d665.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-moment/541856819?l=en">▶️ Apple Music</a></p>
<h2 id="七"><a href="https://music.douban.com/subject/1406094/">七</a></h2>
<p>陈奕迅 / 2003-11-20 / 选集 / CD / 流行</p>
<p>9.4 ( 42728人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664281812-e3e5f9c0-260b-45e5-b979-d01cc139b33d.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="春日光日光"><a href="https://music.douban.com/subject/3671026/">春·日光日光</a></h2>
<p>苏打绿 / 2009-05-08 / 专辑 / CD / 民谣</p>
<p>8.3 ( 45534人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664281716-4abb547c-bdd5-47da-b119-1a9ea0dae698.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%98%A5-%E6%97%A5%E5%85%89/1461726842?l=en">▶️ Apple Music</a></p>
<h2 id="100种生活"><a href="https://music.douban.com/subject/3039969/">100种生活</a></h2>
<p>盧廣仲 / 2008-5-27 / 专辑 / CD / 民谣</p>
<p>8.4 ( 42135人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664281718-03da8b26-a698-4e59-9ad0-3201edc8ed26.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/100%E7%A8%AE%E7%94%9F%E6%B4%BB/1601147680?l=en">▶️ Apple Music</a></p>
<h2 id="崇拜--jadore"><a href="https://music.douban.com/subject/2282388/">崇拜 | J'adore</a></h2>
<p>梁静茹 / 2007-11-09 / 专辑 / CD / 流行</p>
<p>8.5 ( 49186人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282565-997eb77f-074a-41c7-a5f6-943bd2ba240e.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B4%87%E6%8B%9C/1097016060?l=en">▶️ Apple Music</a></p>
<h2 id="陈绮贞精选--cheer-精选"><a href="https://music.douban.com/subject/1408468/">陈绮贞精选 | Cheer 精选</a></h2>
<p>陈绮贞 / 2005 / 选集 / CD / 民谣</p>
<p>9.2 ( 36799人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282636-cbb9c2a0-67a0-42f1-bee7-d202ff66050f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%99%B3%E7%B6%BA%E8%B2%9E%E7%B2%BE%E9%81%B8/661575397?l=en">▶️ Apple Music</a></p>
<h2 id="菊次郎の夏--kikujiro-1999-film"><a href="https://music.douban.com/subject/1419282/">菊次郎の夏 | Kikujiro (1999 Film)</a></h2>
<p>Joe Hisaishi / 1999-05-19 / 专辑 / CD / 原声</p>
<p>9.5 ( 49564人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282731-4b45123c-f497-438a-8ceb-ccbd27b654de.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/kikujiro-original-motion-picture-soundtrack/1498700467?l=en">▶️ Apple Music</a></p>
<h2 id="fearless"><a href="https://music.douban.com/subject/3220185/">Fearless</a></h2>
<p>Taylor Swift / 2008-11-11 / Enhanced / Audio CD / 流行</p>
<p>8.7 ( 53119人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282725-5c70ef68-4b39-48f2-b746-98e32e55adaa.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/fearless-platinum-edition/1440670509?l=en">▶️ Apple Music</a></p>
<h2 id="life-in-cartoon-motion"><a href="https://music.douban.com/subject/1968390/">Life In Cartoon Motion</a></h2>
<p>Mika / 2007-02-05 / 专辑 / CD / 流行</p>
<p>8.8 ( 37038人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282790-25e976db-7d5a-4b2f-bdea-0995dbcd3ee9.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/life-in-cartoon-motion/1440802991?l=en">▶️ Apple Music</a></p>
<h2 id="hm--h3m"><a href="https://music.douban.com/subject/3603814/">H³M | H3M</a></h2>
<p>陈奕迅 / 2009-03-23 / 专辑 / CD / 流行</p>
<p>8.7 ( 44462人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282985-cad5eecb-8546-4719-9538-e937d5f84617.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/h3m/1443774258?l=en">▶️ Apple Music</a></p>
<h2 id="神秘嘉宾--神秘嘉宾"><a href="https://music.douban.com/subject/3076388/">神秘嘉宾 | 神秘嘉宾</a></h2>
<p>林宥嘉 / 2008-06-03 / 专辑 / CD / 流行</p>
<p>8.5 ( 45772人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664282919-a698e8ea-f4fb-4ca3-9db0-0cbc8b1b9ce5.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%A5%9E%E7%A7%98%E5%98%89%E8%B3%93-mystery/547510844?l=en">▶️ Apple Music</a></p>
<h2 id="les-choristes--放牛班的春天"><a href="https://music.douban.com/subject/1394803/">Les Choristes | 放牛班的春天</a></h2>
<p>Bruno Coulais / 2004-05-03 / Soundtrack / Audio CD / 原声</p>
<p>9.5 ( 37888人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283178-5314e9a4-c0aa-457e-ba29-cc5254439d8e.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-chorus-original-motion-picture-soundtrack/589789036?l=en">▶️ Apple Music</a></p>
<h2 id="赤子--innocent"><a href="https://music.douban.com/subject/3871896/">赤子 | Innocent</a></h2>
<p>范晓萱&amp;100% / 2009-08-10 / 专辑 / CD / 摇滚</p>
<p>8.2 ( 39589人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283195-648851eb-7e03-4980-9bb3-ffe84e0fd332.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%80%E8%B5%B7/1080301589?l=en">▶️ Apple Music</a></p>
<h2 id="9"><a href="https://music.douban.com/subject/1889074/">9</a></h2>
<p>Damien Rice / 2006-11-06 / 专辑 / Audio CD / 民谣</p>
<p>9.0 ( 36862人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283200-1c44fc54-4d05-4339-b49e-794fbe98550d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/9/203880553?l=en">▶️ Apple Music</a></p>
<h2 id="将爱"><a href="https://music.douban.com/subject/1401392/">将爱</a></h2>
<p>王菲 / 2003 / 专辑 / CD / 流行</p>
<p>8.9 ( 46704人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283321-71ff8169-aa75-4f74-850d-8637c39cc28b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B0%87%E6%84%9B/966483493?l=en">▶️ Apple Music</a></p>
<h2 id="遇见我"><a href="https://music.douban.com/subject/1449452/">遇见我</a></h2>
<p>曹方 / 2005年12月 / 专辑 / CD / 流行</p>
<p>8.4 ( 39449人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283506-91656fee-534b-478d-bf27-b32bcabbd132.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="梵高先生--bb"><a href="https://music.douban.com/subject/1958731/">梵高先生 | B&amp;BⅡ</a></h2>
<p>李志 / 2007-01-11 / CD / CD / 民谣</p>
<p>9.1 ( 51735人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283770-041cfa16-c15c-4843-b736-bffbb4b62e5f.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="timeless--可啦思刻方大同-2009全新大碟-自選輯--可啦思刻"><a href="https://music.douban.com/subject/3821598/">Timeless | 可啦思刻方大同 2009全新大碟 自選輯 / 可啦思刻</a></h2>
<p>方大同 / 2009-08-11 / 自选集 / CD / 放克/灵歌/R&amp;B</p>
<p>8.4 ( 38003人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283685-c4f168a4-2c77-49ba-b37c-0e261188142c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%8F%AF%E5%95%A6%E6%80%9D%E5%88%BB/537029543?l=en">▶️ Apple Music</a></p>
<h2 id="依然范特西--still-fantasy"><a href="https://music.douban.com/subject/2210561/">依然范特西 | Still Fantasy</a></h2>
<p>周杰伦 / 2006-09-05 / 专辑 / CD / 流行</p>
<p>8.6 ( 71242人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283683-c19b85ea-5794-4f65-8e43-a606c7b8c455.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%BE%9D%E7%84%B6%E8%8C%83%E7%89%B9%E8%A5%BF/536285027?l=en">▶️ Apple Music</a></p>
<h2 id="风筝--kite"><a href="https://music.douban.com/subject/1407437/">风筝 | Kite</a></h2>
<p>孙燕姿 / 2001-07-09 / 专辑 / CD / 流行</p>
<p>8.9 ( 44131人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283695-b58984f6-6b0d-48fb-b2b7-7188c33e7e3a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%A2%A8%E7%AE%8F/297994281?l=en">▶️ Apple Music</a></p>
<h2 id="完美的一天--a-perfect-day"><a href="https://music.douban.com/subject/4725615/">完美的一天 | A Perfect Day</a></h2>
<p>孙燕姿 / 2005-10-07 / 专辑 / CD / 流行</p>
<p>8.3 ( 45359人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664283852-83215e2a-3c16-4ee0-9c17-fa7ace08c499.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AE%8C%E7%BE%8E%E7%9A%84%E4%B8%80%E5%A4%A9/255921008?l=en">▶️ Apple Music</a></p>
<h2 id="say-i-am-you"><a href="https://music.douban.com/subject/1547155/">Say I Am You</a></h2>
<p>The Weepies / 2006 / Import / Audio CD / 民谣</p>
<p>8.6 ( 39732人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664284155-40b4dfff-eca5-4cbe-9b63-4e4434f2c431.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/say-i-am-you/102807420?l=en">▶️ Apple Music</a></p>
<h2 id="黑色柳丁--black-tangerine"><a href="https://music.douban.com/subject/1395092/">黑色柳丁 | Black Tangerine</a></h2>
<p>陶喆 / 2002-08-09 / 专辑 / CD / 流行</p>
<p>9.1 ( 51691人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664284146-241fbd46-7fce-49d3-8f17-ab712f9b90ab.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%BB%91%E8%89%B2%E6%9F%B3%E4%B8%81/914664926?l=en">▶️ Apple Music</a></p>
<h2 id="under-my-skin"><a href="https://music.douban.com/subject/1394994/">Under My Skin</a></h2>
<p>Avril Lavigne / 2004-05-12 / Import / Audio CD / 摇滚</p>
<p>8.6 ( 40059人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664284187-91a8d4ef-2c76-4821-ba17-9e207e48789a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/under-my-skin/533016327?l=en">▶️ Apple Music</a></p>
<h2 id="stefanie"><a href="https://music.douban.com/subject/1406256/">Stefanie</a></h2>
<p>孙燕姿 / 2004-10-1 / 专辑 / CD / 流行</p>
<p>8.7 ( 39004人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664290835-f419f319-ae49-4a8b-9be1-60e9eaa54cc9.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AD%AB%E7%87%95%E5%A7%BFstefanie%E5%90%8C%E5%90%8D%E5%B0%88%E8%BC%AF/255921035?l=en-GB">▶️ Apple Music</a></p>
<h2 id="the-fame"><a href="https://music.douban.com/subject/3179585/">The Fame</a></h2>
<p>Lady Gaga / 2008-08-19 / Import / Audio CD / 流行</p>
<p>8.5 ( 42436人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664290787-efbda386-7a8d-45b9-89b9-7070282c24ad.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-fame/1440818588?l=en">▶️ Apple Music</a></p>
<h2 id="mr-a-z--英语老师"><a href="https://music.douban.com/subject/1823439/">Mr. A-Z | 英语老师</a></h2>
<p>Jason Mraz / 2005-07-04 / Import / Audio CD / 流行</p>
<p>9.0 ( 34498人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664290811-aab04f9d-c6a2-4684-b4b7-f08812fe9b2e.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/mr-a-z/416042620?l=en">▶️ Apple Music</a></p>
<h2 id="为爱而生--為愛而生--born-to-love"><a href="https://music.douban.com/subject/1948359/">为爱而生 | 為愛而生 / BORN TO LOVE</a></h2>
<p>五月天 / 2006-12-28 / 引进版 / CD / 流行</p>
<p>8.6 ( 40435人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664290798-c2b5d430-db52-49c0-91c8-d302ebfb125c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%82%BA%E6%84%9B%E8%80%8C%E7%94%9F/1081397791?l=en">▶️ Apple Music</a></p>
<h2 id="daniel-powter--dp"><a href="https://music.douban.com/subject/1421922/">Daniel Powter | dp</a></h2>
<p>Daniel Powter / 2006 / 专辑 / Audio CD / 流行</p>
<p>8.7 ( 35302人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664290815-5a4f0ba7-31b4-4ebc-88c6-95f52702e41d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/daniel-powter/63816246?l=en">▶️ Apple Music</a></p>
<h2 id="im-yours"><a href="https://music.douban.com/subject/3097879/">I'm Yours</a></h2>
<p>Jason Mraz / 2008-12-16 / Single / Audio CD / 民谣</p>
<p>9.4 ( 39203人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291313-f6d372c8-2e77-44f6-a9c0-cb97fa821af7.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/im-yours-single/280594755?l=en">▶️ Apple Music</a></p>
<h2 id="时光漫步"><a href="https://music.douban.com/subject/1408378/">时光·漫步</a></h2>
<p>许巍 Wei Xu / 2002-12-01 / 专辑 / CD / 民谣</p>
<p>9.1 ( 38564人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291398-ece34f03-2dcb-4a36-9a44-fbfa8663f005.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%99%82%E5%85%89-%E6%BC%AB%E6%AD%A5/905191001?l=en">▶️ Apple Music</a></p>
<h2 id="生如夏花--life-like-summer-flowers"><a href="https://music.douban.com/subject/1407656/">生如夏花 | Life Like Summer Flowers</a></h2>
<p>朴树 / 2003-11-28 / 专辑 / CD / 流行</p>
<p>9.0 ( 59817人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291377-c9b45145-6133-4e76-a54f-cd102a46b2eb.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%94%9F%E5%A6%82%E5%A4%8F%E8%8A%B1/369655124?l=en">▶️ Apple Music</a></p>
<h2 id="我很忙--jay-chou-on-the-run"><a href="https://music.douban.com/subject/1846771/">我很忙 | JAY CHOU ON THE RUN</a></h2>
<p>周杰伦 / 2007-11-01 / 专辑 / CD / 流行</p>
<p>8.2 ( 69903人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291307-cb1f205b-d2f4-4398-864c-10488ff69924.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E5%BE%88%E5%BF%99/536030690?l=en">▶️ Apple Music</a></p>
<h2 id="夏--狂热fever"><a href="https://music.douban.com/subject/3838018/">夏 / 狂热Fever</a></h2>
<p>苏打绿 / 2009-09-11 / 专辑 / CD / 摇滚</p>
<p>8.7 ( 41388人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291412-7362d9c3-1e3d-4b72-b10c-9f451b9b94a9.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A4%8F-%E7%8B%82%E7%86%B1/1461735092?l=en">▶️ Apple Music</a></p>
<h2 id="绝世名伶"><a href="https://music.douban.com/subject/1424317/">绝世名伶</a></h2>
<p>范晓萱 / 2001-08-25 / 专辑 / CD / 爵士</p>
<p>8.8 ( 35543人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291721-79dc6f0e-2563-44b1-a029-e39ae6fc188c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%B5%95%E4%B8%96%E5%90%8D%E4%BC%B6/994062930?l=en">▶️ Apple Music</a></p>
<h2 id="哼一首歌-等日落"><a href="https://music.douban.com/subject/4116446/">哼一首歌 等日落</a></h2>
<p>曹方 / 2009-11-11 / 专辑 / CD / 流行</p>
<p>8.2 ( 33443人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291697-6541292a-aa2a-496e-9f54-8928110be643.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%93%BC%E4%B8%80%E9%A6%96%E6%AD%8C%E7%AD%89%E6%97%A5%E8%90%BD/1564068486?l=en">▶️ Apple Music</a></p>
<h2 id="未完成--to-be-continued"><a href="https://music.douban.com/subject/1408461/">未完成 | To Be Continued......</a></h2>
<p>孙燕姿 / 2003-01-10 / 专辑 / CD / 流行</p>
<p>8.7 ( 37301人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291881-3c92dbb5-ab55-4c1e-8a02-a29c44bb28ea.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%9C%AA%E5%AE%8C%E6%88%90/255920420?l=en">▶️ Apple Music</a></p>
<h2 id="ok-computer"><a href="https://music.douban.com/subject/1394653/">OK Computer</a></h2>
<p>Radiohead / 1997 / 专辑 / Audio CD / 摇滚</p>
<p>9.4 ( 43284人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291885-d06cbf3a-b3ad-4377-b4a9-105dcc71ff26.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/ok-computer/1097861387?l=en">▶️ Apple Music</a></p>
<h2 id="born-to-die--向死而生大陆--生死相守-台"><a href="https://music.douban.com/subject/10448971/">Born to Die | 向死而生（大陆） / 生死相守 （台）</a></h2>
<p>Lana Del Rey / 2012-01-31 / 专辑 / Audio CD / 流行</p>
<p>8.8 ( 48967人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664291945-fd005e11-2020-4de8-8b78-fb388c0ce8b6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/born-to-die/1440809572?l=en">▶️ Apple Music</a></p>
<h2 id="the-wall--迷墙"><a href="https://music.douban.com/subject/1394664/">The Wall | 迷墙</a></h2>
<p>Pink Floyd / 1979 / 专辑 / Audio CD / 摇滚</p>
<p>9.4 ( 45083人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292176-1984fed2-7826-49d8-bcec-0adfd75a2fad.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-wall/1065975633?l=en">▶️ Apple Music</a></p>
<h2 id="不要停止我的音乐--the-music-wont-be-stopped"><a href="https://music.douban.com/subject/3236064/">不要停止我的音乐 | The Music Won't Be Stopped</a></h2>
<p>痛仰 / 2008-10 / 专辑 / CD / 摇滚</p>
<p>8.7 ( 46100人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292310-438ffa63-de85-4e42-a61c-5929351b288b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%8D%E8%A6%81%E5%81%9C%E6%AD%A2%E6%88%91%E7%9A%84%E9%9F%B3%E6%A8%82/1656209263?l=en">▶️ Apple Music</a></p>
<h2 id="hybrid-theory--混合理论"><a href="https://music.douban.com/subject/1394771/">Hybrid Theory | 混合理论</a></h2>
<p>Linkin Park / 2000 / 专辑 / CD / 摇滚</p>
<p>9.0 ( 33231人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292415-c6d6fff1-d690-49b1-82eb-c506f45442d0.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/hybrid-theory/528436018?l=en">▶️ Apple Music</a></p>
<h2 id="mtv-unplugged-in-new-york"><a href="https://music.douban.com/subject/1394566/">MTV Unplugged in New York</a></h2>
<p>Nirvana / 1994-11-01 / Live / Audio CD / 摇滚</p>
<p>9.6 ( 34354人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292413-64e0a335-5f48-4425-8bca-2d55214b5bba.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/mtv-unplugged-in-new-york-live-acoustic/1440892370?l=en">▶️ Apple Music</a></p>
<h2 id="after-17"><a href="https://music.douban.com/subject/1400651/">After 17</a></h2>
<p>陈绮贞 / 2004年12月 / EP / CD / 流行</p>
<p>9.2 ( 31467人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292416-fa709147-3269-46ca-832c-60d1152aaef1.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/after-17-single/815423735?l=en">▶️ Apple Music</a></p>
<h2 id="in-between-dreams"><a href="https://music.douban.com/subject/1395432/">In Between Dreams</a></h2>
<p>Jack Johnson / 2005-03-22 / 专辑 / Audio CD / 民谣</p>
<p>9.1 ( 29785人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292612-9d105b9e-19df-474a-a935-24eebafde4a3.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/in-between-dreams-bonus-track-version/1440857781?l=en">▶️ Apple Music</a></p>
<h2 id="神的孩子都在跳舞"><a href="https://music.douban.com/subject/3526294/">神的孩子都在跳舞</a></h2>
<p>五月天 Mayday / 2004-11-05 / 专辑 / CD+VCD / 流行</p>
<p>9.0 ( 35355人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664292762-a4f60bee-a145-42e0-b7f2-156b16515d4b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%A5%9E%E7%9A%84%E5%AD%A9%E5%AD%90%E9%83%BD%E5%9C%A8%E8%B7%B3%E8%88%9E/183919330?l=en">▶️ Apple Music</a></p>
<h2 id="离开地球表面jump"><a href="https://music.douban.com/subject/2150115/">离开地球表面Jump!</a></h2>
<p>五月天 / 2007-07-20 / 专辑 / CD+DVD / 流行</p>
<p>8.8 ( 41018人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664293107-31e2cd4a-a07d-475e-88fc-2ed0e4b8e6e8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%9B%A2%E9%96%8B%E5%9C%B0%E7%90%83%E8%A1%A8%E9%9D%A2/1081738606?l=en">▶️ Apple Music</a></p>
<h2 id="不想放手--dont-want-to-let-go"><a href="https://music.douban.com/subject/3088329/">不想放手 | Don't Want to Let Go</a></h2>
<p>陈奕迅 / 2008-06-30 / 专辑 / CD / 流行</p>
<p>8.4 ( 36475人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664293030-b50a5320-1358-4402-be8c-cc4dd938077f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%8D%E6%83%B3%E6%94%BE%E6%89%8B/1443493887?l=en">▶️ Apple Music</a></p>
<h2 id="我的歌声里"><a href="https://music.douban.com/subject/5395505/">我的歌声里</a></h2>
<p>曲婉婷 / 2010-02-24 / 单曲 / 数字(Digital) / 流行</p>
<p>8.7 ( 46762人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s9127241.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E7%9A%84%E6%AD%8C%E8%81%B2%E8%A3%A1-deluxe-version/1442661002?l=en">▶️ Apple Music</a></p>
<h2 id="the-legend-of-1900--海上钢琴师"><a href="https://music.douban.com/subject/1415369/">The Legend of 1900 | 海上钢琴师</a></h2>
<p>Ennio Morricone / 1999-10-12 / Soundtrack / Audio CD / 原声</p>
<p>9.5 ( 35883人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664314969-b3d2e570-48bd-482d-a3cb-f5018f685efd.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-legend-of-1900-original-motion-picture-soundtrack/214334120?l=en">▶️ Apple Music</a></p>
<h2 id="孤独的人是可耻的--shameful-being-left-alone"><a href="https://music.douban.com/subject/1407472/">孤独的人是可耻的 | Shameful being left alone</a></h2>
<p>张楚 / 1994 / 专辑 / CD / 摇滚</p>
<p>9.2 ( 39886人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315047-40ae40d8-39b5-4515-9020-3d63ebc3fbcd.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AD%A4%E7%8D%A8%E7%9A%84%E4%BA%BA%E6%98%AF%E5%8F%AF%E6%81%A5%E7%9A%84/553151287?l=en">▶️ Apple Music</a></p>
<h2 id="徐佳瑩la-la首张创作专辑--la-la首張創作專輯"><a href="https://music.douban.com/subject/3746394/">徐佳瑩La La首张创作专辑 | La La首張創作專輯</a></h2>
<p>徐佳莹 / 2009-05-29 / 专辑 / CD / 流行</p>
<p>8.4 ( 37502人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315311-118d7def-3e1c-4e50-a88f-c5df0da6ccaf.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%BE%90%E4%BD%B3%E7%91%A9lala%E9%A6%96%E5%BC%B5%E5%89%B5%E4%BD%9C%E5%B0%88%E8%BC%AF/672648486?l=en">▶️ Apple Music</a></p>
<h2 id="the-best-damn-thing--美丽坏东西"><a href="https://music.douban.com/subject/2044199/">The Best Damn Thing | 美丽坏东西</a></h2>
<p>Avril Lavigne / 2007-04-17 / Import / Audio CD / 摇滚</p>
<p>7.9 ( 36865人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315028-ea00afe8-370a-462f-975b-400d2af1ef4f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-best-damn-thing-expanded-edition/268993318?l=en">▶️ Apple Music</a></p>
<h2 id="知足-just-my-pride-最真杰作选"><a href="https://music.douban.com/subject/1422072/">知足 just my pride 最真杰作选</a></h2>
<p>五月天 / 2005-11-18 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 33223人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315612-207dc786-ec26-45cb-8b3e-4b80ec95a2fa.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%9F%A5%E8%B6%B3-just-my-pride-%E6%9C%80%E7%9C%9F%E5%82%91%E4%BD%9C%E9%81%B8/1554431588?l=en">▶️ Apple Music</a></p>
<h2 id="1--the-beatles-1--no1"><a href="https://music.douban.com/subject/1394818/">1 | The Beatles 1 / No.1</a></h2>
<p>The Beatles / 2000 / 选集 / CD / 摇滚</p>
<p>9.5 ( 31020人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315840-6d59fd3e-ac23-4a43-9c1d-b89659049a35.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/1/1440833098?l=en">▶️ Apple Music</a></p>
<h2 id="魔杰座--capricorn"><a href="https://music.douban.com/subject/3222423/">魔杰座 | Capricorn</a></h2>
<p>周杰伦 / 2008-10-09 / 专辑 / CD / 放克/灵歌/R&amp;B</p>
<p>7.9 ( 59439人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315668-d1e0ace2-bd29-4e58-abc0-3bea01fabcac.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%AD%94%E6%9D%B0%E5%BA%A7/1624000713?l=en">▶️ Apple Music</a></p>
<h2 id="xy--染色体"><a href="https://music.douban.com/subject/1394600/">X&amp;Y | 染色体</a></h2>
<p>Coldplay / 2005-06-07 / 专辑 / CD / 摇滚</p>
<p>8.6 ( 34819人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315902-8f700582-dfc7-4dc2-af6c-92a5648db23c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/x-y/1123076757?l=en">▶️ Apple Music</a></p>
<h2 id="19"><a href="https://music.douban.com/subject/2347182/">19</a></h2>
<p>Adele / 2008-01-28 / Import / Audio CD / 放克/灵歌/R&amp;B</p>
<p>8.6 ( 35491人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664315873-7258dedb-cd13-4c1c-8c80-6b550ce63e00.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/19/270409624?l=en">▶️ Apple Music</a></p>
<h2 id="时光机--maydays-time-machine"><a href="https://music.douban.com/subject/1408748/">时光机 | mayday's time machine</a></h2>
<p>五月天 / 2003-11-11 / 专辑 / CD / 摇滚</p>
<p>9.1 ( 33602人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664316504-9ac61fa1-fa23-4e67-9faa-075b15868b34.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%99%82%E5%85%89%E6%A9%9F/153785619?l=en">▶️ Apple Music</a></p>
<h2 id="yan-zi--孙燕姿同名专辑"><a href="https://music.douban.com/subject/1405022/">Yan Zi | 孙燕姿同名专辑</a></h2>
<p>孙燕姿 / 2000-06-08 / 专辑 / CD / 流行</p>
<p>9.1 ( 34442人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664316431-bb3b26ab-f448-41d0-8f31-19e33bad07aa.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%90%8C%E5%90%8D%E5%B0%88%E8%BC%AF-remastered/990152978?l=en-GB">▶️ Apple Music</a></p>
<h2 id="time-flies--时日如飞"><a href="https://music.douban.com/subject/4706451/">Time Flies | 时日如飞</a></h2>
<p>陈奕迅 / 2010-03-12 / EP / CD+DVD / 流行</p>
<p>8.9 ( 32688人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664316466-6ef45d7d-7ba0-4f55-b0bf-67233d8cf7ed.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/time-flies-2010-ep/1443717418?l=en">▶️ Apple Music</a></p>
<h2 id="失败者的飞翔"><a href="https://music.douban.com/subject/3143363/">失败者的飞翔</a></h2>
<p>陈绮贞 / 2008-07-13 / 单曲 / CD / 流行</p>
<p>8.6 ( 29389人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664316690-fcbd43f5-7da8-4891-a8d7-7fa8deee6815.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A4%B1%E6%95%97%E8%80%85%E7%9A%84%E9%A3%9B%E7%BF%94-single/816000160?l=en">▶️ Apple Music</a></p>
<h2 id="my-love"><a href="https://music.douban.com/subject/6722110/">My Love</a></h2>
<p>田馥甄 / 2011-09-02 / 专辑 / CD / 流行</p>
<p>8.4 ( 35566人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664316688-45dd22f9-7aa9-4932-bae4-7ca9499f6df6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/my-love/544154095?l=en-GB">▶️ Apple Music</a></p>
<h2 id="亲亲--親親"><a href="https://music.douban.com/subject/1891318/">亲亲 | 親親</a></h2>
<p>梁静茹 / 2006-10-06 / 专辑 / CD / 流行</p>
<p>8.2 ( 34393人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s1876827.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/my-love/544154095?l=en">▶️ Apple Music</a></p>
<h2 id="你王菲所以我王菲"><a href="https://music.douban.com/subject/1769327/">你王菲所以我王菲</a></h2>
<p>王菲 / 2002 / 选集 / CD / 流行</p>
<p>9.5 ( 35275人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2951748.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%BA%B2%E4%BA%B2/1095245171?l=en">▶️ Apple Music</a></p>
<h2 id="stranger-under-my-skin"><a href="https://music.douban.com/subject/6082657/">Stranger Under My Skin</a></h2>
<p>陈奕迅 / 2011-02-22 / EP / CD / 流行</p>
<p>8.8 ( 31725人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4644120.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/stranger-under-my-skin/1443711302?l=en">▶️ Apple Music</a></p>
<h2 id="come-away-with-me--远走高飞"><a href="https://music.douban.com/subject/1394747/">Come Away with Me | 远走高飞</a></h2>
<p>Norah Jones / 2002 / 专辑 / CD / 爵士</p>
<p>8.9 ( 30541人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317124-06f5f0fc-e45f-48eb-9fba-66fc5c899162.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/come-away-with-me-remastered/1624173298?l=en">▶️ Apple Music</a></p>
<h2 id="平凡之路--电影后会无期宣传曲"><a href="https://music.douban.com/subject/25927970/">平凡之路 | 电影《后会无期》宣传曲</a></h2>
<p>朴树 / 2014-07-16 / 单曲 /</p>
<p>数字(Digital) / 原声 9.1 ( 79295人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317148-ff5df9c4-e08d-491f-822f-2c91a6ff7ac1.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="认了吧--admit-it"><a href="https://music.douban.com/subject/2052256/">认了吧 | Admit it</a></h2>
<p>陈奕迅 / 2007-04-24 / 专辑 / CD / 流行</p>
<p>8.9 ( 37928人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317286-1e8774f3-31a3-4966-ab4c-3c7010e235e6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%AA%8D%E4%BA%86%E5%90%A7-%E5%8F%B0%E7%81%A3%E7%89%88/1443352354?l=en">▶️ Apple Music</a></p>
<h2 id="21st-century-breakdown"><a href="https://music.douban.com/subject/3533452/">21st Century Breakdown</a></h2>
<p>Green Day / 2009-05-15 / 专辑 / CD / 摇滚</p>
<p>8.7 ( 30578人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317389-30076337-8816-4dde-87af-265c5d5a11a8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/21st-century-breakdown/1156538220?l=en">▶️ Apple Music</a></p>
<h2 id="神的游戏--games-we-play--神的遊戲"><a href="https://music.douban.com/subject/11027027/">神的游戏 | Games We Play / 神的遊戲</a></h2>
<p>張懸 / 2012-08-10 / 专辑 / CD / 流行</p>
<p>9.1 ( 39638人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317514-d8c15d58-bf50-4816-8625-2839241a45be.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%A5%9E%E7%9A%84%E9%81%8A%E6%88%B2/547978486?l=en">▶️ Apple Music</a></p>
<h2 id="唱游"><a href="https://music.douban.com/subject/1394808/">唱游</a></h2>
<p>王菲 / 1998 / 专辑 / CD / 流行</p>
<p>9.4 ( 39092人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664317599-fc1b98d0-4097-44ab-82b2-5ecc34f8534a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%94%B1%E9%81%8A/965771664?l=en">▶️ Apple Music</a></p>
<h2 id="花的姿态演唱会经典实录--花的姿態經典實錄精裝版2cddvd"><a href="https://music.douban.com/subject/2078050/">花的姿态：演唱会经典实录 | 花的姿態經典實錄精裝版2CD+DVD</a></h2>
<p>陈绮贞 / 2007-05-18 / 演唱会/Live / CD DVD / 民谣</p>
<p>9.3 ( 26500人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664324658-a855c6c7-a6b5-411a-ad30-c7d0de953a1d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%8A%B1%E7%9A%84%E5%A7%BF%E6%80%81%E6%BC%94%E5%94%B1%E4%BC%9A%E7%BB%8F%E5%85%B8%E5%AE%9E%E5%BD%95/1601807862?l=en">▶️ Apple Music</a></p>
<h2 id="我去2000年"><a href="https://music.douban.com/subject/1405324/">我去2000年</a></h2>
<p>朴树 / 1999-1 / 专辑 / CD / 流行</p>
<p>9.4 ( 44055人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664324571-1fe0cab1-eca2-4b08-8449-1020dea5ad00.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E5%8E%BB2000%E5%B9%B4/1063212942?l=en">▶️ Apple Music</a></p>
<h2 id="young-for-you"><a href="https://music.douban.com/subject/1758337/">Young For You</a></h2>
<p>GALA / 2004 / 专辑 / CD / 摇滚</p>
<p>8.8 ( 30290人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664324647-256da2b4-a0a2-4e9b-8906-5b79fe6f16d7.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/young-for-you/1678931109?l=en-GB">▶️ Apple Music</a></p>
<h2 id="自选集--start-yan-zi"><a href="https://music.douban.com/subject/1405050/">自选集 | Start Yan-zi</a></h2>
<p>孙燕姿 / 2002年1月 / 专辑 / CD / 流行</p>
<p>9.0 ( 29171人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664324654-73a05a52-07b6-42bc-ba06-76b18440d85f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%87%AA%E9%81%B8%E9%9B%86/255923688?l=en">▶️ Apple Music</a></p>
<h2 id="理性与感性-作品音乐会--sense-and-sensibility"><a href="https://music.douban.com/subject/2266925/">理性与感性 作品音乐会 | Sense and Sensibility</a></h2>
<p>李宗盛 Jonathan / 2007-09-28 / 专辑 / CD / 流行</p>
<p>9.6 ( 28244人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664324590-2875c488-92bf-4807-a952-c5b09e632947.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%9D%8E%E5%AE%97%E7%9B%9B%E7%9A%84%E7%90%86%E6%80%A7%E8%88%87%E6%84%9F%E6%80%A7%E4%BD%9C%E5%93%81%E9%9F%B3%E6%A8%82%E6%9C%83/1329432176?l=en">▶️ Apple Music</a></p>
<h2 id="比天空还远"><a href="https://music.douban.com/subject/2350942/">比天空还远</a></h2>
<p>曹方 / 2007-11-20 / EP / CD / 流行</p>
<p>8.5 ( 27597人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664325614-9d05da08-2cd6-455c-af14-1839ea98f46f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%AF%94%E5%A4%A9%E7%A9%BA%E9%82%84%E9%81%A0-ep/1564061786?l=en">▶️ Apple Music</a></p>
<h2 id="黑梦"><a href="https://music.douban.com/subject/2299845/">黑梦</a></h2>
<p>窦唯 / 1994-10 / 专辑 / CD / 摇滚</p>
<p>9.4 ( 41855人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664325299-f6c103fd-fd57-4556-b4ec-a4fc6280238b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%BB%91%E5%A4%A2/158796449?l=en">▶️ Apple Music</a></p>
<h2 id="不能说的秘密--不能說的秘密"><a href="https://music.douban.com/subject/2164654/">不能说的秘密 | 不能說的秘密</a></h2>
<p>周杰倫,Terdsak Janpan,詹宇豪,陳承麒,黃婉琦,姚蘇蓉,黃俊郎,江語晨,長榮交響樂團 / 2007-08-13 / Soundtrack / CD / 原声</p>
<p>9.1 ( 45209人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2652097.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%8D%E8%83%BD%E8%AA%AC%E7%9A%84%E7%A7%98%E5%AF%86-original-soundtrack/1624051140?l=en">▶️ Apple Music</a></p>
<h2 id="丝路--通往爱的路途"><a href="https://music.douban.com/subject/1427941/">丝路 | 通往爱的路途</a></h2>
<p>梁静茹 Fish / 2005-9-16 / 专辑 / CD / 流行</p>
<p>8.3 ( 32166人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s1966952.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%B5%B2%E8%B7%AF/151338382?l=en">▶️ Apple Music</a></p>
<h2 id="all-the-lost-souls"><a href="https://music.douban.com/subject/2153935/">All The Lost Souls</a></h2>
<p>James Blunt / 2007-09-18 / Import / Audio CD / 流行</p>
<p>8.6 ( 26484人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2609413.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/all-the-lost-souls-deluxe/714586416?l=en">▶️ Apple Music</a></p>
<h2 id="fir"><a href="https://music.douban.com/subject/1408794/">F.I.R.</a></h2>
<p>飞儿乐团 F.I.R. / 2004-04-29 / 专辑 / CD / 摇滚</p>
<p>8.9 ( 41045人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4124010.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%A3%9B%E5%85%92%E6%A8%82%E5%9C%98/255920685?l=en">▶️ Apple Music</a></p>
<h2 id="上五楼的快活"><a href="https://music.douban.com/subject/4009831/">上五楼的快活</a></h2>
<p>陈奕迅 / 2009-09-23 / 专辑 / CD / 流行</p>
<p>7.8 ( 29505人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664325851-2bc14503-f222-46a6-967e-c4905ef67663.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%8A%E4%BA%94%E6%A8%93%E7%9A%84%E5%BF%AB%E6%B4%BB/1442260565?l=en">▶️ Apple Music</a></p>
<h2 id="minutes-to-midnight"><a href="https://music.douban.com/subject/2042799/">Minutes to Midnight</a></h2>
<p>Linkin Park / 2007-05-15 / 专辑 / CD / 摇滚</p>
<p>8.4 ( 27501人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326025-ef37cf53-dd39-456d-9ed1-94708f396778.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/minutes-to-midnight-deluxe-edition/1622307157?l=en">▶️ Apple Music</a></p>
<h2 id="goodbye--hello"><a href="https://music.douban.com/subject/2264207/">GOODBYE &amp; HELLO</a></h2>
<p>蔡健雅,Tanya / 2007-10-19 / 专辑 / CD / 流行</p>
<p>8.6 ( 28081人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326019-b203b517-724a-4608-955a-c2297b67c73f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/goodbye-hello/672617526?l=en">▶️ Apple Music</a></p>
<h2 id="someone-like-you"><a href="https://music.douban.com/subject/6064884/">Someone Like You</a></h2>
<p>Adele / 2011-01-24 / 单曲 /</p>
<p>数字(Digital) / 放克/灵歌/R&amp;B 9.5 ( 40674人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326345-a5c38f0d-0ceb-4513-ac9f-beefac95c978.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="迟到千年"><a href="https://music.douban.com/subject/1875211/">迟到千年</a></h2>
<p>苏打绿 / 2006-09-18 / EP / CD / 流行</p>
<p>9.0 ( 27165人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326410-839c4e79-555e-42e3-8a29-8372ac2c1d60.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%81%B2%E5%88%B0%E5%8D%83%E5%B9%B4-single/1475228248?l=en">▶️ Apple Music</a></p>
<h2 id="the-dark-side-of-the-moon"><a href="https://music.douban.com/subject/1395685/">The Dark Side of the Moon</a></h2>
<p>Pink Floyd / 1973 / 专辑 / 黑胶 / 摇滚</p>
<p>9.5 ( 45690人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326619-83127c01-4664-4ab8-886a-4acdc0175f2a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-dark-side-of-the-moon/1065973699?l=en">▶️ Apple Music</a></p>
<h2 id="王菲--faye-wong-2001"><a href="https://music.douban.com/subject/3837067/">王菲 | Faye Wong 2001</a></h2>
<p>王菲 / 2001 / 专辑 / CD / 流行</p>
<p>9.2 ( 31937人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326635-1248dac7-85a0-49c9-a1fa-fdd9911f9eec.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%8E%8B%E8%8F%B22001/966478364?l=en">▶️ Apple Music</a></p>
<h2 id="夜空中最亮的星"><a href="https://music.douban.com/subject/6974122/">夜空中最亮的星</a></h2>
<p>逃跑计划 / 2011-04-12 / 单曲 /</p>
<p>数字(Digital) / 摇滚 9.2 ( 60184人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664326664-e8ef8692-01df-46c6-afee-a27d136dae5b.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="追梦痴子心"><a href="https://music.douban.com/subject/6047523/">追梦痴子心</a></h2>
<p>GALA / 2011-03-24 / 专辑 / CD / 摇滚</p>
<p>8.9 ( 36650人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664327135-83af5816-fbe1-4359-a504-53db8376d7f9.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%BF%BD%E5%A4%A2%E7%97%B4%E5%AD%90%E5%BF%83/1181339803?l=en">▶️ Apple Music</a></p>
<h2 id="宝贝"><a href="https://music.douban.com/subject/4884299/">宝贝</a></h2>
<p>莫文蔚 / 2010-07-26 / 专辑 / CD / 流行</p>
<p>8.0 ( 27226人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664327230-b98cbbc4-527a-4081-8f85-a2d13596d84b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AE%9D%E8%B4%9D-2nd-edition/1656868716?l=en">▶️ Apple Music</a></p>
<h2 id="黑白灰--black-white--grey--黑白灰"><a href="https://music.douban.com/subject/1401759/">黑白灰 | Black, White &amp; Grey / 黑·白·灰</a></h2>
<p>陈奕迅 / 2003 / 专辑 / CD / 流行</p>
<p>9.1 ( 27667人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664327356-e61f9262-10ed-4d85-bfd1-a8692bdc9f59.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%BB%91-%E7%99%BD-%E7%81%B0/542923554?l=en">▶️ Apple Music</a></p>
<h2 id="安和桥北--献给张先诺先生"><a href="https://music.douban.com/subject/25709562/">安和桥北 | 献给张先诺先生</a></h2>
<p>宋冬野 / 2013-08-26 / 专辑 / CD / 民谣</p>
<p>8.9 ( 46048人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664327381-2dd4bd5c-76da-4d7e-a8c1-bbc28f8cebd2.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%AE%89%E5%92%8C%E6%A1%A5%E5%8C%97/1437746477?l=en">▶️ Apple Music</a></p>
<h2 id="prisoner-of-love--爱情的俘虏"><a href="https://music.douban.com/subject/3035043/">Prisoner of Love | 爱情的俘虏</a></h2>
<p>宇多田ヒカル / 2008-05-21 / CD IMPORT / Audio CD / 流行</p>
<p>9.3 ( 26585人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664327353-3c79181a-d0b1-4bc8-aedd-e1bd171d0def.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/prisoner-of-love-ep/1444873685?l=en-GB">▶️ Apple Music</a></p>
<h2 id="groupies-吉他手--groupies"><a href="https://music.douban.com/subject/1394549/">Groupies 吉他手 | Groupies</a></h2>
<p>陈绮贞 / 2002-08-02 / 专辑 / CD / 流行</p>
<p>9.3 ( 30585人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s3268875.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/prisoner-of-love-ep/1444873685?l=en">▶️ Apple Music</a></p>
<h2 id="now-the-day-is-over--美好的一天"><a href="https://music.douban.com/subject/1404703/">Now The Day Is Over | 美好的一天</a></h2>
<p>The Innocence Mission / 2004 / 专辑 / CD / 民谣</p>
<p>8.5 ( 24692人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s1506405.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%90%89%E4%BB%96%E6%89%8B/152197399?l=en">▶️ Apple Music</a></p>
<h2 id="apologize--抱歉"><a href="https://music.douban.com/subject/2285727/">Apologize | 抱歉</a></h2>
<p>Timbaland,OneRepublic / 2007-11-06 / Single / Audio CD / 放克/灵歌/R&amp;B</p>
<p>9.2 ( 32971人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s6780751.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/now-the-day-is-over/270127395?l=en">▶️ Apple Music</a></p>
<h2 id="阿菲正传--阿菲正傳"><a href="https://music.douban.com/subject/3815932/">阿菲正传 | 阿菲正傳</a></h2>
<p>王菲 / 2009-06-25 / 选集 / CD / 流行</p>
<p>9.4 ( 26218人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s3850703.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%98%BF%E8%8F%B2%E6%AD%A3%E5%82%B3/1443424435?l=en">▶️ Apple Music</a></p>
<h2 id="跨时代"><a href="https://music.douban.com/subject/4820650/">跨时代</a></h2>
<p>周杰伦 / 2010-05-14 / 专辑 / CD / 流行</p>
<p>7.8 ( 41601人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4364499.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%B7%A8%E6%99%82%E4%BB%A3/536247746?l=en">▶️ Apple Music</a></p>
<h2 id="leave--離開"><a href="https://music.douban.com/subject/1949354/">Leave | 離開</a></h2>
<p>孙燕姿 / 2002-5-21 / 专辑 / CD / 流行</p>
<p>8.8 ( 27012人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335087-6931ea7b-fc7e-406e-9f92-acbcaec411a4.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/leave/541825411?l=en">▶️ Apple Music</a></p>
<h2 id="被禁忌的游戏"><a href="https://music.douban.com/subject/1933017/">被禁忌的游戏</a></h2>
<p>李志 / 2004-12 / 专辑 / CD / 民谣</p>
<p>9.0 ( 29948人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335236-23d91e63-bbee-486f-8d00-ababaa293242.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="whats-going-on"><a href="https://music.douban.com/subject/1920622/">What's Going On.&hellip;?</a></h2>
<p>陈奕迅 / 2006 / 专辑 / CD / 流行</p>
<p>9.3 ( 29133人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335193-aa490b5f-c709-4e18-bde2-af809350669b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/whats-going-on/1443345687?l=en">▶️ Apple Music</a></p>
<h2 id="第二人生-末日版--second-round---no-where"><a href="https://music.douban.com/subject/7065468/">第二人生 末日版 | SECOND ROUND - NO WHERE</a></h2>
<p>五月天 / 2011-12-20 / 专辑 / CD / 流行</p>
<p>9.2 ( 26729人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335264-50a97b68-f480-4042-970d-170825076b1f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%AC%AC%E4%BA%8C%E4%BA%BA%E7%94%9F-%E6%9C%AB%E6%97%A5%E7%89%88/1081297124?l=en">▶️ Apple Music</a></p>
<h2 id="樂之路--ultrasound-1997-2003--乐之路"><a href="https://music.douban.com/subject/1407536/">樂之路 | Ultrasound 1997-2003 / 乐之路</a></h2>
<p>陶喆 / 2003-08-08 / 选集 / CD / 流行</p>
<p>9.2 ( 26071人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335274-c06cdfbf-246d-4b0e-9d49-09f360bf2e09.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%A8%82%E4%B9%8B%E8%B7%AF/1372031877?l=en">▶️ Apple Music</a></p>
<h2 id="it-wont-be-soon-before-long--it-wont-be-soon-before-long"><a href="https://music.douban.com/subject/2032823/">It Won't Be Soon Before Long | It Won't Be Soon Before Long</a></h2>
<p>Maroon 5 / 2007-05-22 / 专辑 / CD / 流行</p>
<p>8.4 ( 25476人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335520-fedacb47-c078-416f-b9f9-969ab56f7e13.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/it-wont-be-soon-before-long/1440744741?l=en">▶️ Apple Music</a></p>
<h2 id="如果你冷--如果你冷"><a href="https://music.douban.com/subject/3264192/">如果你冷 | 如果你冷</a></h2>
<p>张悬 / 2008-10-20 / Bootleg / 数字 / 民谣</p>
<p>8.5 ( 26320人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335614-72d4bc8e-bfe0-49b7-8281-d886afa0021a.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="陌生人"><a href="https://music.douban.com/subject/1408650/">陌生人</a></h2>
<p>蔡健雅 Tanya Chua / 2003-06-00 / 专辑 / CD / 流行</p>
<p>8.7 ( 26152人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335738-9142bd9f-131f-461b-9b76-2abd30c3a63a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%99%8C%E7%94%9F%E4%BA%BA/297906289?l=en">▶️ Apple Music</a></p>
<h2 id="浮躁"><a href="https://music.douban.com/subject/1395176/">浮躁</a></h2>
<p>王菲 / 1996 / Audio CD / 流行</p>
<p>9.4 ( 37119人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335791-d5ceec9f-0555-43c4-b3d4-ae023898adc1.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/eco-pack-%E6%B5%AE%E8%BA%81/1443287350?l=en">▶️ Apple Music</a></p>
<h2 id="cest-la-vie--这就是生活"><a href="https://music.douban.com/subject/1442576/">C'est La Vie | 这就是生活</a></h2>
<p>自然卷 / 2004 / 专辑 / CD / 民谣</p>
<p>8.3 ( 24874人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664335821-d4b7cf86-e094-4135-a6b9-e14000069746.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="在一起--together"><a href="https://music.douban.com/subject/5355197/">在一起 | Together</a></h2>
<p>刘若英 / 2010-04-16 / 专辑 / CD / 流行</p>
<p>7.9 ( 24721人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664336044-801a127b-3eab-480c-9677-60110ab357df.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%9C%A8%E4%B8%80%E8%B5%B7/1092407531?l=en">▶️ Apple Music</a></p>
<h2 id="these-friends-of-mine"><a href="https://music.douban.com/subject/1999781/">These Friends Of Mine</a></h2>
<p>Rosie Thomas / 2007-03-13 / 专辑 / Audio CD / 民谣</p>
<p>8.8 ( 23227人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664336055-0bd782df-150a-43b4-8e2f-d140925aa54f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/these-friends-of-mine-expanded-edition/1598408766?l=en-GB">▶️ Apple Music</a></p>
<h2 id="陪我歌唱--苏打绿台北小巨蛋演唱会live-cd陪我歌唱"><a href="https://music.douban.com/subject/3226297/">陪我歌唱 | 苏打绿台北小巨蛋演唱会Live Cd:陪我歌唱</a></h2>
<p>苏打绿 / 2008 / 引进版 / CD</p>
<p>9.2 ( 23965人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664336156-05a4dbb0-4260-4b16-ad8e-08cd47b6a236.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%99%AA%E6%88%91%E6%AD%8C%E5%94%B1-live/1461050682?l=en-GB">▶️ Apple Music</a></p>
<h2 id="its-not-me-its-you--非我即你"><a href="https://music.douban.com/subject/3770091/">It＇s Not Me It＇s You | 非我即你</a></h2>
<p>Lily Allen / 2009-02-09 / 专辑 / Audio CD / 流行</p>
<p>8.2 ( 24122人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4716636.jpg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%99%AA%E6%88%91%E6%AD%8C%E5%94%B1-live/1461050682?l=en">▶️ Apple Music</a></p>
<h2 id="the-rosei-love-cinemas"><a href="https://music.douban.com/subject/2977909/">The Rose~I Love Cinemas~</a></h2>
<p>手嶌葵 / 2008-03-05 / Import / CD / 流行</p>
<p>9.3 ( 24179人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2969728.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/its-not-me-its-you/732024535?l=en">▶️ Apple Music</a></p>
<h2 id="我爱南京"><a href="https://music.douban.com/subject/4060882/">我爱南京</a></h2>
<p>李志 / 2009-10-16 / 专辑 / CD / 民谣</p>
<p>8.9 ( 32777人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4008894.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/la-vie-en-rose-i-love-cinemas/1609484079?l=en">▶️ Apple Music</a></p>
<h2 id="消失的光年--消失的光年"><a href="https://music.douban.com/subject/2144752/">消失的光年 | 消失的光年</a></h2>
<p>大乔小乔 / 2007-07-12 / 平装版 / CD / 民谣</p>
<p>8.3 ( 23581人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s2616588.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%B6%88%E5%A4%B1%E7%9A%84%E5%85%89%E5%B9%B4/1728807828?l=en-GB">▶️ Apple Music</a></p>
<h2 id="还有别的办法吗"><a href="https://music.douban.com/subject/1439133/">还有别的办法吗</a></h2>
<p>范晓萱 / 2004 / 专辑 / CD / 流行</p>
<p>8.7 ( 22928人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s1399764.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%BF%98%E6%9C%89%E5%88%AB%E7%9A%84%E5%8A%9E%E6%B3%95%E5%90%97/1080303347?l=en">▶️ Apple Music</a></p>
<h2 id="日光倾城"><a href="https://music.douban.com/subject/2058669/">日光倾城</a></h2>
<p>卡奇社 / 2007-04-20 / 专辑 / CD / 流行</p>
<p>8.2 ( 24481人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664336641-34105e2d-9427-42d9-8536-0cfe63065678.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%97%A5%E5%85%89%E5%80%BE%E5%9F%8E/1663150375?l=en">▶️ Apple Music</a></p>
<h2 id="a-little-love--一点爱"><a href="https://music.douban.com/subject/3566603/">A Little Love | 一点爱</a></h2>
<p>冯曦妤 / 2008-11-20 / 专辑 / CD / 流行</p>
<p>8.5 ( 23442人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664336876-88f291c4-954d-48e0-8d48-80394187677c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/a-little-love/299850343?l=en">▶️ Apple Music</a></p>
<h2 id="yellow--黄色"><a href="https://music.douban.com/subject/1458367/">Yellow | 黄色</a></h2>
<p>Coldplay / 2000-07-03 / EP / Audio CD / 摇滚</p>
<p>9.5 ( 37346人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345419-70cf462d-3af1-4737-95ca-843a894cad8b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/yellow-single/695721212?l=en">▶️ Apple Music</a></p>
<h2 id="hopes-and-fears"><a href="https://music.douban.com/subject/1395452/">Hopes And Fears</a></h2>
<p>Keane / 2004 / 专辑 / Audio CD / 摇滚</p>
<p>8.9 ( 22915人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345425-6010c07c-6585-4256-94f8-b48bc54e9443.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/hopes-and-fears/1440798025?l=en">▶️ Apple Music</a></p>
<h2 id="u87"><a href="https://music.douban.com/subject/1394541/">U87</a></h2>
<p>陈奕迅 / 2005-06-07 / 专辑 / CD+DVD / 流行</p>
<p>9.4 ( 29071人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345436-47655480-5a77-47db-992a-22aa1cc845a1.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/u-87/1443374875?l=en">▶️ Apple Music</a></p>
<h2 id="lady-sleep--睡美人"><a href="https://music.douban.com/subject/1419566/">Lady Sleep | 睡美人</a></h2>
<p>Maximilian Hecker / 2005 / Import / Audio CD / 摇滚</p>
<p>8.8 ( 21513人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345417-c3025373-8d3d-4215-a586-fcf1b60325cc.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/lady-sleep/1475889291?l=en-GB">▶️ Apple Music</a></p>
<h2 id="天空の城ラピュタ-サウンドトラック-飛行石の謎--天空之城-原声碟"><a href="https://music.douban.com/subject/1395762/">天空の城ラピュタ サウンドトラック 飛行石の謎 | 天空之城 原声碟</a></h2>
<p>久石譲(Joe Hisaishi),杉並児童合唱団,井上杏美 / 1993-12-21 / Soundtrack / Audio CD / 原声</p>
<p>9.6 ( 26336人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345430-87cc570a-1e0d-455a-929a-15697ddc7e83.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/castle-in-the-sky-original-soundtrack/882407903?l=en">▶️ Apple Music</a></p>
<h2 id="新长征路上的摇滚"><a href="https://music.douban.com/subject/1394742/">新长征路上的摇滚</a></h2>
<p>崔健 / 1989 / 专辑 / CD / 摇滚</p>
<p>9.4 ( 31792人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664345890-e6b3faf3-4800-4739-9f27-6f5fba29f239.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%96%B0%E9%95%BF%E5%BE%81%E8%B7%AF%E4%B8%8A%E7%9A%84%E6%91%87%E6%BB%9A/1585625540?l=en">▶️ Apple Music</a></p>
<h2 id="小飞行"><a href="https://music.douban.com/subject/3567851/">小飞行</a></h2>
<p>棉花糖,katncandix2 / 2009-05-01 / 专辑 / CD / 民谣</p>
<p>8.0 ( 22804人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346127-dfbf1ce8-da7f-4795-8a77-4133cd4784ca.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B0%8F%E9%A3%9B%E8%A1%8C/683098218?l=en">▶️ Apple Music</a></p>
<h2 id="春生"><a href="https://music.douban.com/subject/10831759/">春生</a></h2>
<p>好妹妹乐队 / 2012-07-01 / 专辑 / CD / 民谣</p>
<p>8.9 ( 23906人评价</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346086-ab88a83b-66fb-48f3-b867-8094f83ab49c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%98%A5%E7%94%9F/1595226668?l=en">▶️ Apple Music</a></p>
<h2 id="讓我想一想--让我想一想"><a href="https://music.douban.com/subject/1788941/">讓我想一想 | 让我想一想</a></h2>
<p>陈绮贞 / 1998-07-14 / 专辑 / CD / 民谣</p>
<p>9.1 ( 24812人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346107-4cfac7d7-7dc5-4205-96c3-374fc1250e42.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%AE%93%E6%88%91%E6%83%B3%E4%B8%80%E6%83%B3/152235788?l=en">▶️ Apple Music</a></p>
<h2 id="未来--wonderland"><a href="https://music.douban.com/subject/2359692/">未来 | Wonderland</a></h2>
<p>方大同 / 2007-12-28 / 专辑 / CD / 放克/灵歌/R&amp;B</p>
<p>8.4 ( 23802人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346124-4f62857f-96ba-4c5f-bada-adf089176c54.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%9C%AA%E4%BE%86/272875165?l=en">▶️ Apple Music</a></p>
<h2 id="爱爱爱--愛愛愛--this-love"><a href="https://music.douban.com/subject/1950025/">爱爱爱 | 愛愛愛 / THIS LOVE</a></h2>
<p>方大同 / 2006-12 / 专辑 / CD / 流行</p>
<p>8.7 ( 25456人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346415-61931118-c0a0-4c33-8e2a-5d5f035158d6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%84%9B%E6%84%9B%E6%84%9B/220365864?l=en">▶️ Apple Music</a></p>
<h2 id="世界--earth"><a href="https://music.douban.com/subject/10430415/">世界 | Earth</a></h2>
<p>逃跑计划 / 2014-12-09 / 专辑 / CD / 摇滚</p>
<p>9.0 ( 26819人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346464-f2acbe40-fd0a-478d-9860-6b8740b499ed.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%96%E7%95%8C/1542187294?l=en-GB">▶️ Apple Music</a></p>
<h2 id="七天--盧廣仲-crowd-lu-2009-new-album-2009-全新創作專輯"><a href="https://music.douban.com/subject/4032611/">七天 | 盧廣仲 Crowd Lu 2009 New Album 2009 全新創作專輯</a></h2>
<p>盧廣仲,卢广仲 / 2009-10-30 / 专辑 / CD / 民谣</p>
<p>7.9 ( 22531人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s4039256.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%96%E7%95%8C/1542187294?l=en">▶️ Apple Music</a></p>
<h2 id="nirvana"><a href="https://music.douban.com/subject/1416697/">Nirvana</a></h2>
<p>Nirvana / 2002-10-29 / Extra tracks / Audio CD / 摇滚</p>
<p>9.3 ( 22711人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/s3020073.jpg" alt="img"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%83%E5%A4%A9/1601755025?l=en">▶️ Apple Music</a></p>
<p>nil</p>
<h2 id="a-rush-of-blood-to-the-head"><a href="https://music.douban.com/subject/1455695/">A Rush of Blood to the Head</a></h2>
<p>Coldplay / 2002 / 专辑 / Audio CD / 摇滚</p>
<p>8.8 ( 25535人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346554-79dae34e-e28f-4082-948b-392235132f17.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/a-rush-of-blood-to-the-head/1122775993?l=en">▶️ Apple Music</a></p>
<h2 id="the-velvet-underground--nico--地下丝绒与妮可"><a href="https://music.douban.com/subject/1986653/">The Velvet Underground &amp; Nico | 地下丝绒与妮可</a></h2>
<p>The Velvet Underground,Nico / 1967-04 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 31513人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346781-444c2d07-2c04-463c-a7cb-3538da09db64.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-velvet-underground-nico-45th-anniversary-edition/1440851613?l=en">▶️ Apple Music</a></p>
<h2 id="love-the-way-you-lie"><a href="https://music.douban.com/subject/5322559/">Love The Way You Lie</a></h2>
<p>Eminem,Rihanna / 2010-08-20 / Single / Audio CD / 说唱</p>
<p>9.3 ( 28411人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346807-76196291-1afd-4724-88b3-f96c1774b2fb.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="天空--sky"><a href="https://music.douban.com/subject/1776070/">天空 | Sky</a></h2>
<p>王菲 / 1994 / 专辑 / CD / 流行</p>
<p>9.4 ( 29503人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346909-a3791c86-1102-463b-ba8a-a45fe83656ea.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A4%A9%E7%A9%BA/1443363496?l=en">▶️ Apple Music</a></p>
<h2 id="the-boat-that-rocked"><a href="https://music.douban.com/subject/3788747/">The Boat That Rocked</a></h2>
<p>Original Soundtrack / 2009-03-30 / Import / Soundtrack / CD / 原声</p>
<p>9.3 ( 20223人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664346896-ad0df3b0-dca3-4965-8fa0-7c924a17f78d.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="whats-the-story-morning-glory"><a href="https://music.douban.com/subject/1395617/">(What's The Story) Morning Glory?</a></h2>
<p>Oasis / 1995 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 27765人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347015-7e2eb5ae-b37b-4197-bdbc-ce7ddc1d9369.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/whats-the-story-morning-glory-remastered/894949345?l=en">▶️ Apple Music</a></p>
<h2 id="pussy"><a href="https://music.douban.com/subject/1982538/">PUSSY</a></h2>
<p>陈绮贞 / 2007-02-08 / 单曲 / Audio CD / 民谣</p>
<p>8.7 ( 21369人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347157-a14900eb-dcf6-4fb0-b83f-165458d79549.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="呼吸--breathe---all-about-lily-chou-chou--lily-chou-chou呼吸"><a href="https://music.douban.com/subject/1421569/">呼吸 | Breathe - All About Lily Chou-Chou / Lily Chou-Chou：呼吸</a></h2>
<p>Salyu / 2001 / 专辑 / CD / 原声</p>
<p>9.1 ( 22021人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347219-548510bc-97d7-487a-a56e-d81aac0bf4db.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/kokyuu/1297925080?l=en">▶️ Apple Music</a></p>
<h2 id="fallen"><a href="https://music.douban.com/subject/1394997/">Fallen</a></h2>
<p>Evanescence / 2003 / 专辑 / Audio CD / 摇滚</p>
<p>8.5 ( 21152人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347494-25fdca4c-a476-41cf-b715-b059ed210cd8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/fallen/1440665838?l=en">▶️ Apple Music</a></p>
<h2 id="黑豹"><a href="https://music.douban.com/subject/1413627/">黑豹</a></h2>
<p>黑豹 / 1992-12-01 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 27065人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347486-eb936f5e-a76b-4170-8256-8fe46ca8dd9c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%BB%91%E8%B1%B9/177025348?l=en">▶️ Apple Music</a></p>
<h2 id="十年一刻"><a href="https://music.douban.com/subject/4923069/">十年一刻</a></h2>
<p>苏打绿 / 2010-08-27 / 视频 / CD+DVD / 流行</p>
<p>9.0 ( 23902人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664347533-25abbb3c-f560-40df-9e52-ed2ed5aade76.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%8D%81%E5%B9%B4%E4%B8%80%E5%88%BB/1461461752?l=en">▶️ Apple Music</a></p>
<h2 id="恋爱的力量--the-power-of-love-songs"><a href="https://music.douban.com/subject/1403802/">恋爱的力量 | The Power Of Love Songs</a></h2>
<p>梁静茹 / 2003年3月 / 专辑 / CD / 流行</p>
<p>9.0 ( 22492人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354465-1b7f51d8-a512-4757-b84a-fc409cc83cba.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%80%E6%84%9B%E7%9A%84%E5%8A%9B%E9%87%8F/181199815?l=en">▶️ Apple Music</a></p>
<h2 id="suede"><a href="https://music.douban.com/subject/1394569/">Suede</a></h2>
<p>Suede / 1993 / 专辑 / CD / 摇滚</p>
<p>9.0 ( 24460人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354463-e85d911c-d85a-4376-bbb9-14fb812eafb8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/suede-remastered/435030227?l=en">▶️ Apple Music</a></p>
<h2 id="the-bends"><a href="https://music.douban.com/subject/1394652/">The Bends</a></h2>
<p>Radiohead / 1995 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 30381人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354657-f841ecd5-63bb-48a1-aa24-1a4461a4dfe8.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/the-bends/1097862703?l=en">▶️ Apple Music</a></p>
<h2 id="琵琶相--pipa-images-lin-hai--friends-2"><a href="https://music.douban.com/subject/1462686/">琵琶相 | Pipa images LIN HAI &amp; FRIENDS 2</a></h2>
<p>林海 / 2004 / 专辑 / CD / 轻音乐</p>
<p>9.4 ( 21797人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354434-b4a3e422-79c1-40d8-8d8f-c13fff62ea4b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%90%B5%E7%90%B6%E7%9B%B8/698628164?l=en">▶️ Apple Music</a></p>
<h2 id="-问号"><a href="https://music.douban.com/subject/6903119/">？| 问号</a></h2>
<p>陈奕迅 / 2011-11-11 / 专辑 / CD / 流行</p>
<p>8.1 ( 24284人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354444-762b1478-089d-4733-8f15-e9ce82c6d6ba.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/1443783500?l=en">▶️ Apple Music</a></p>
<h2 id="少年故事"><a href="https://music.douban.com/subject/2154228/">少年故事</a></h2>
<p>彭坦 / 2007-07-23 / 专辑 / CD / 流行</p>
<p>8.2 ( 22022人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355027-40230330-3e11-4113-b503-2b4a52f55172.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B0%91%E5%B9%B4%E6%95%85%E4%BA%8B/1062498297?l=en">▶️ Apple Music</a></p>
<h2 id="黑暗之光"><a href="https://music.douban.com/subject/1923738/">黑暗之光</a></h2>
<p>雷光夏 / 2006-12-01 / 专辑 / CD / 民谣</p>
<p>8.9 ( 21264人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355021-6de8a1ad-faab-475c-91f8-fb31018435e1.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%BB%91%E6%9A%97%E4%B9%8B%E5%85%89/312519836?l=en">▶️ Apple Music</a></p>
<h2 id="我要我们在一起"><a href="https://music.douban.com/subject/1419831/">我要我们在一起</a></h2>
<p>范晓萱 / 1999-11-1 / 国语 / CD / 流行</p>
<p>8.8 ( 24064人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664354973-674195c4-bd9b-400d-a762-8937b90f638c.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E8%A6%81%E6%88%91%E5%80%91%E5%9C%A8%E4%B8%80%E8%B5%B7/536509559?l=en">▶️ Apple Music</a></p>
<h2 id="人生海海"><a href="https://music.douban.com/subject/1419375/">人生海海</a></h2>
<p>五月天 / 2001-07-06 / 专辑 / CD / 摇滚</p>
<p>9.3 ( 25704人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355014-abf07477-efe7-46c9-9b29-f89b299b1bb6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%BA%BA%E7%94%9F%E6%B5%B7%E6%B5%B7/541019015?l=en">▶️ Apple Music</a></p>
<h2 id="maybe-im-dreaming--可能我在做梦"><a href="https://music.douban.com/subject/3021469/">Maybe I'm Dreaming | 可能我在做梦</a></h2>
<p>Owl City / 2008-03-18 / Import / CD / 流行</p>
<p>8.4 ( 20707人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355245-41457aa6-5d4a-4279-bc94-c4a226bcd000.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/maybe-im-dreaming/1444005810?l=en">▶️ Apple Music</a></p>
<h2 id="工体东路没有人"><a href="https://music.douban.com/subject/3435496/">工体东路没有人</a></h2>
<p>李志 / 2009-01-22 / 专辑 / 数字 / 民谣</p>
<p>9.2 ( 23029人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355285-533bff48-3ee6-45e1-b163-4d27450ce609.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="let-it-be"><a href="https://music.douban.com/subject/1401365/">Let It Be</a></h2>
<p>The Beatles / 1990-10-25 / Enhanced / Audio CD / 摇滚</p>
<p>9.5 ( 25678人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355343-aa4d014f-cc9c-4865-8fdd-d9bc9cb22a8f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/let-it-be/1441164495?l=en">▶️ Apple Music</a></p>
<h2 id="alrightstill--一如既往"><a href="https://music.douban.com/subject/1796484/">Alright,Still | 一如既往</a></h2>
<p>Lily Allen / 2006 / Import / Audio CD / 流行</p>
<p>8.4 ( 20280人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355523-3b78be97-a28f-43dc-93a7-60235ed707db.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/alright-still/726141687?l=en">▶️ Apple Music</a></p>
<h2 id="大小說家--fiction"><a href="https://music.douban.com/subject/10767657/">大小說家 | Fiction</a></h2>
<p>林宥嘉 / 2012-06-22 / 专辑 / CD / 流行</p>
<p>8.2 ( 24828人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355554-3ccf1775-1012-4e11-9f95-2254220ea535.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A4%A7%E5%B0%8F%E8%AA%AA%E5%AE%B6/539443343?l=en">▶️ Apple Music</a></p>
<h2 id="越长大越孤单"><a href="https://music.douban.com/subject/3013779/">越长大越孤单</a></h2>
<p>牛奶@咖啡 / 2008-03-18 / 专辑 / CD / 流行</p>
<p>7.8 ( 27754人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355628-391e22f3-5cde-4cda-9ac6-bfb482743b35.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%B6%8A%E9%95%BF%E5%A4%A7%E8%B6%8A%E5%AD%A4%E5%8D%95/1437768300?l=en">▶️ Apple Music</a></p>
<h2 id="燕尾蝶--燕尾蝶-下定愛的決心"><a href="https://music.douban.com/subject/1403801/">燕尾蝶 | 燕尾蝶-下定愛的決心</a></h2>
<p>梁静茹 / 2004 / 专辑 / CD / 流行</p>
<p>8.1 ( 25599人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355661-1bd68cca-c6c8-43be-ad6c-cee968316e91.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%87%95%E5%B0%BE%E8%9D%B6-%E4%B8%8B%E5%AE%9A%E6%84%9B%E7%9A%84%E6%B1%BA%E5%BF%83/558471475?l=en">▶️ Apple Music</a></p>
<h2 id="原谅我就是这样的女生--原諒我就是這樣的女生"><a href="https://music.douban.com/subject/3729307/">原谅我就是这样的女生 | 原諒我就是這樣的女生</a></h2>
<p>戴佩妮 / 2009-05-16 / 专辑 / CD+DVD / 流行</p>
<p>7.7 ( 21671人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355702-ef3bce7d-8aa7-4b48-8531-2d39dcd5b954.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="传奇"><a href="https://music.douban.com/subject/5365287/">传奇</a></h2>
<p>王菲 / 2010-11-05 / 单曲 / CD / 民谣</p>
<p>9.0 ( 26139人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355923-77a6e982-b7c6-4f0c-9769-8b5804b48602.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="under-the-radar--墜入琴網"><a href="https://music.douban.com/subject/3158576/">Under the Radar | 墜入琴網</a></h2>
<p>Daniel Powter / 2008-10-14 / 专辑 / Audio CD / 流行</p>
<p>8.5 ( 19397人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664355990-78ca4e0e-9bb4-4313-80bf-ead0ebf95190.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/under-the-radar/290075008?l=en">▶️ Apple Music</a></p>
<h2 id="知足-mv--karaoke-dvd"><a href="https://music.douban.com/subject/2083053/">知足 MV / Karaoke DVD</a></h2>
<p>五月天 / 2006 / 视频 / DVD / 流行</p>
<p>9.3 ( 20016人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356004-709e5cc6-8270-4011-91df-4060dbb5006d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%9F%A5%E8%B6%B3-just-my-pride-%E6%9C%80%E7%9C%9F%E5%82%91%E4%BD%9C%E9%81%B8/1554431588?l=en">▶️ Apple Music</a></p>
<h2 id="我的歌声里-1"><a href="https://music.douban.com/subject/11524982/">我的歌声里</a></h2>
<p>曲婉婷 / 2012-07-01 / 专辑 / CD / 流行</p>
<p>8.1 ( 21550人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356210-4f01713d-43b9-46aa-a92f-b992e1818827.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E7%9A%84%E6%AD%8C%E8%81%B2%E8%A3%A1-deluxe-version/1442661002?l=en">▶️ Apple Music</a></p>
<h2 id="王菲快樂不快樂"><a href="https://music.douban.com/subject/1394693/">王菲快樂/不快樂</a></h2>
<p>王菲 / 1997-09-30 / 专辑 / CD / 流行</p>
<p>9.4 ( 30662人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356231-1c93a9c6-a43b-4b0c-8784-e0ea6b251bc2.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="信仰在空中飘扬"><a href="https://music.douban.com/subject/3843530/">信仰在空中飘扬</a></h2>
<p>汪峰 / 2009-07-25 / 专辑 / CD / 摇滚</p>
<p>8.8 ( 20801人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356445-146b8336-2e98-4150-9651-c57415bf22b0.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="heading"><a href="https://music.douban.com/subject/1403573/">[i]Karen Love</a></h2>
<p>莫文蔚 / 2002-04-29 / 专辑 / CD / 流行</p>
<p>8.8 ( 22357人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356404-91b4575e-b306-43df-b778-7913f9a60d8a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/no-1-%E6%96%B0%E6%9B%B2-%E7%B2%BE%E9%81%B8%E5%85%A8%E7%B4%80%E9%8C%8420%E9%A6%96/657683547?l=en">▶️ Apple Music</a></p>
<h2 id="songs-about-jane"><a href="https://music.douban.com/subject/1395446/">Songs About Jane</a></h2>
<p>Maroon 5 / 2002 / 专辑 / Audio CD / 流行</p>
<p>8.8 ( 21946人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664356609-97d4e3bc-6e73-4571-8c96-15630ea93f2f.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/songs-about-jane/1440851650?l=en">▶️ Apple Music</a></p>
<h2 id="back-to-black"><a href="https://music.douban.com/subject/1937036/">Back To Black</a></h2>
<p>Amy Winehouse / 2006-10-30 / 专辑 / Audio CD / 放克/灵歌/R&amp;B</p>
<p>8.9 ( 22840人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664369989-46843cc3-a610-4432-9d2d-b6a578ffc864.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/back-to-black/1422677780?l=en">▶️ Apple Music</a></p>
<h2 id="demo-3"><a href="https://music.douban.com/subject/5292091/">Demo 3</a></h2>
<p>陈绮贞 / 2001-11-09 / Demo / CD / 流行</p>
<p>9.2 ( 19720人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664369996-00be4fbc-7598-4bdb-bc82-4f2df538658f.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="克卜勒--kepler"><a href="https://music.douban.com/subject/25811077/">克卜勒 | Kepler</a></h2>
<p>孙燕姿 / 2014-02-27 / 专辑 / CD / 流行</p>
<p>8.7 ( 32216人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664369984-15d47a3d-50ea-4c2a-aea6-482d1a3dd4cd.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%85%8B%E5%8D%9C%E5%8B%92/1443147411?l=en">▶️ Apple Music</a></p>
<h2 id="emc--爱的方程式"><a href="https://music.douban.com/subject/3005450/">E=MC² | 爱的方程式</a></h2>
<p>Mariah Carey / 2008-04-16 / 专辑 / CD / 放克/灵歌/R&amp;B</p>
<p>8.6 ( 21245人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664369984-be32023c-1e63-4e4a-b20d-9a447fbc1d2d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/e-mc2/1550208941?l=en">▶️ Apple Music</a></p>
<h2 id="9-crimes"><a href="https://music.douban.com/subject/2286005/">9 Crimes</a></h2>
<p>Damien Rice / 2006-11-27 / 单曲 / Audio CD / 民谣</p>
<p>9.4 ( 18711人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664370025-15beb713-7a47-4987-8ba1-2cfa4b118039.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/9-crimes-single/196317754?l=en">▶️ Apple Music</a></p>
<h2 id="如果有一件事是重要的--如果有一件事是重要的粉红色demo"><a href="https://music.douban.com/subject/3579420/">如果有一件事是重要的 | 如果有一件事是重要的+粉红色(demo)</a></h2>
<p>陈珊妮 / 2008-11-22 / 专辑 / CD / 流行</p>
<p>8.3 ( 20153人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664370996-727b3744-2df0-422b-ad25-f5ce6dc2c9a6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%80%E4%BB%B6%E4%BA%8B%E6%98%AF%E9%87%8D%E8%A6%81%E7%9A%84-single/715675386?l=en">▶️ Apple Music</a></p>
<h2 id="赤裸裸--赤裸裸"><a href="https://music.douban.com/subject/1404457/">赤裸裸 | 赤裸裸?!</a></h2>
<p>郑钧 / 1994 / 专辑 / CD / 摇滚</p>
<p>8.9 ( 24139人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664370993-53b5b035-1b09-4810-a024-ad6ac508f90a.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E8%B5%A4%E8%A3%B8%E8%A3%B8/1060026302?l=en">▶️ Apple Music</a></p>
<h2 id="阿岳正传--useless-guy"><a href="https://music.douban.com/subject/1410613/">阿岳正传 | Useless Guy</a></h2>
<p>张震岳 / 2004-06-24 / 选集 / CD / 流行</p>
<p>9.0 ( 20320人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664371026-55c646f6-fddc-46e7-b792-7077f0f77433.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%98%BF%E5%B6%BD%E6%AD%A3%E5%82%B3/164050980?l=en">▶️ Apple Music</a></p>
<h2 id="3颗猫饼干--三颗猫饼干--three-cat-cookies"><a href="https://music.douban.com/subject/1408372/">3颗猫饼干 | 三颗猫饼干 / Three Cat Cookies</a></h2>
<p>朱玫玲,董運昌,王雁盟,何真真 / 2004/04/26 / CD / 轻音乐</p>
<p>9.2 ( 17459人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664371102-238f2759-fd43-404e-a4bb-e93cc3153afd.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E4%B8%89%E9%A1%86%E8%B2%93%E9%A4%85%E4%B9%BE/594089031?l=en">▶️ Apple Music</a></p>
<h2 id="21-guns"><a href="https://music.douban.com/subject/3807272/">21 Guns</a></h2>
<p>Green Day / 2009-07-14 / Single / Audio CD / 流行</p>
<p>9.2 ( 20417人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664371089-88baecc0-ec45-431d-9c28-b97a67ed8690.jpeg" alt="image"  />


</p>
<p>nil</p>
<h2 id="看我72变"><a href="https://music.douban.com/subject/6540851/">看我72变</a></h2>
<p>蔡依林 Jolin Tsai / 2003-03-07 / 专辑 / CD / 流行</p>
<p>8.1 ( 34974人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373200-1d78e649-6036-48df-a88b-17e7c6c4b0f0.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%9C%8B%E6%88%9172%E8%AE%8A/320494434?l=en-GB">▶️ Apple Music</a></p>
<h2 id="第二人生-明日版--second-round---now-here"><a href="https://music.douban.com/subject/7065469/">第二人生 明日版 | SECOND ROUND - NOW HERE</a></h2>
<p>五月天 / 2011-12-20 / 专辑 / CD / 流行</p>
<p>9.2 ( 20376人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373241-f16e0da6-eb61-41ee-8c59-31e79fd87b77.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%AC%AC%E4%BA%8C%E4%BA%BA%E7%94%9F-%E6%98%8E%E6%97%A5%E7%89%88/1081308968?l=en">▶️ Apple Music</a></p>
<h2 id="definitely-maybe--绝对可能"><a href="https://music.douban.com/subject/1395280/">Definitely Maybe | 绝对可能</a></h2>
<p>Oasis / 1994-08-30 / 专辑 / CD / 摇滚</p>
<p>9.2 ( 24503人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373235-a3fc538e-bdde-47f6-bc0c-629fc2e8f955.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/definitely-maybe-remastered/828325577?l=en">▶️ Apple Music</a></p>
<h2 id="first-love--初恋"><a href="https://music.douban.com/subject/1397751/">First Love | 初恋</a></h2>
<p>宇多田ヒカル / 1999 / 专辑 / CD / 流行</p>
<p>9.2 ( 24302人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373121-e954b562-1c1c-496a-b527-3a629c6708ab.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/first-love-remastered-2014/1440763349?l=en">▶️ Apple Music</a></p>
<h2 id="阿密特意识专辑"><a href="https://music.douban.com/subject/5325161/">阿密特意识专辑</a></h2>
<p>张惠妹 / 2009-06-26 / 专辑 / CD / 流行</p>
<p>8.1 ( 23719人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373206-8f6cc334-67b4-438f-9351-ae08870a28da.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E9%98%BF%E5%AF%86%E7%89%B9%E6%84%8F%E8%AD%98%E5%B0%88%E8%BC%AF/1546976857?l=en">▶️ Apple Music</a></p>
<h2 id="心跳心跳"><a href="https://music.douban.com/subject/3323600/">心·跳心跳</a></h2>
<p>王力宏 Leehom Wang / 2008-12-26 / 专辑 / CD / 流行</p>
<p>7.3 ( 23629人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373634-d089bf72-5142-4f3d-947f-62f7f2fcb491.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%8E%8B%E5%8A%9B%E5%AE%8F%E5%85%A8%E6%96%B0%E5%89%B5%E4%BD%9C%E5%A4%A7%E7%A2%9F-%E5%BF%83-%E8%B7%B3/1448353705?l=en">▶️ Apple Music</a></p>
<h2 id="xx同名专辑"><a href="https://music.douban.com/subject/4010504/">xx同名专辑</a></h2>
<p>The xx / 2009-08-17 / 专辑 / CD / 摇滚</p>
<p>8.9 ( 22501人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373763-e1e1cd18-927f-41e7-8b97-084f402f17e6.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/xx/325808192?l=en">▶️ Apple Music</a></p>
<h2 id="回蔚"><a href="https://music.douban.com/subject/3767208/">回蔚</a></h2>
<p>莫文蔚 / 2009-06-23 / 专辑 / CD+DVD / 流行</p>
<p>8.1 ( 20095人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373837-ae34bf22-2cf1-454a-adb4-8cd71e169600.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%9B%9E%E8%94%9A/1656628842?l=en">▶️ Apple Music</a></p>
<h2 id="如果看見地獄我就不怕魔鬼--if-i-see-hell-i-wont-be-afraid-of-demons"><a href="https://music.douban.com/subject/3313756/">如果看見地獄，我就不怕魔鬼 | If I See Hell, I Won't Be Afraid of Demons</a></h2>
<p>Tizzy Bac / 2009-02-13 / 专辑 / CD / 流行</p>
<p>8.2 ( 19128人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664373792-9f32023e-ed71-4f69-b6da-b882852e426b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A6%82%E6%9E%9C%E7%9C%8B%E8%A6%8B%E5%9C%B0%E7%8D%84-%E6%88%91%E5%B0%B1%E4%B8%8D%E6%80%95%E9%AD%94%E9%AC%BC/1388258063?l=en">▶️ Apple Music</a></p>
<h2 id="我们是五月天"><a href="https://music.douban.com/subject/1438249/">我们是五月天</a></h2>
<p>五月天 / 2003年4月17日 / 专辑 / CD / 流行</p>
<p>9.4 ( 21570人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664374088-ce00f6fe-e2e0-404a-b3be-53b4c6007d1d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E6%88%91%E5%80%91%E6%98%AF%E4%BA%94%E6%9C%88%E5%A4%A9/1078528641?l=en">▶️ Apple Music</a></p>
<h2 id="王妃--王妃"><a href="https://music.douban.com/subject/3803120/">王妃 | 王妃</a></h2>
<p>萧敬腾 / 2009-07-17 / 专辑 / CD / 流行</p>
<p>7.9 ( 24245人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664375116-b76a3cfe-65d2-4032-9896-c7cbff4c1cef.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E7%8E%8B%E5%A6%83/359075405?l=en">▶️ Apple Music</a></p>
<h2 id="poker-face--扑克脸"><a href="https://music.douban.com/subject/3313848/">Poker Face | 扑克脸</a></h2>
<p>Lady Gaga / September 23, 2008 / Single / Audio CD / 流行</p>
<p>8.8 ( 25206人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664375065-352a6084-0232-4635-9515-47b55181f96b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/poker-face/1444401032?l=en">▶️ Apple Music</a></p>
<h2 id="唐朝--梦回唐朝"><a href="https://music.douban.com/subject/1395143/">唐朝 | 梦回唐朝</a></h2>
<p>唐朝 / 1992-12 / CD＋DVD / CD / 摇滚</p>
<p>9.1 ( 22391人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664375304-7c50a6a7-e9c5-4e5d-95e0-3f45a06a5b7b.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%94%90%E6%9C%9D/1622563433?l=en">▶️ Apple Music</a></p>
<h2 id="寻找周杰伦"><a href="https://music.douban.com/subject/1407700/">寻找周杰伦</a></h2>
<p>周杰伦 / 2003-12-1 / EP / 音乐CD / 流行</p>
<p>9.1 ( 29108人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664375235-d52723a7-eff1-4b7a-aeb2-d5961fad77e2.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%B0%8B%E6%89%BE%E5%91%A8%E6%9D%B0%E5%80%AB-ep/536108118?l=en">▶️ Apple Music</a></p>
<h2 id="她说--概念自选辑"><a href="https://music.douban.com/subject/5360525/">她说 | 概念自选辑</a></h2>
<p>林俊杰 / 2010-12-08 / 专辑 / CD / 流行</p>
<p>8.3 ( 34938人评价 )</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202302/1675664375278-ae265213-f6bd-4e7a-a582-e0fcd7a99f6d.jpeg" alt="image"  />


</p>
<p><a href="https://music.apple.com/cn/album/%E5%A5%B9%E8%AA%AA/1071506928?l=en">▶️ Apple Music</a></p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[2022 年终总结]]></title>
    <link href="https://blog.alswl.com/2022/12/2022-review/"/>
    <id>https://blog.alswl.com/2022/12/2022-review/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-12-31T21:52:08+08:00</published>
    <updated>2022-12-31T21:52:08+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202212/w.png" alt="img"  />



<small>上海解封后，摄于北外滩酒店</small></p>
<h2 id="生活---封锁和开放">生活 - 封锁和开放</h2>
<blockquote>
<p>「暴风雨结束后，你不会记得自己是怎样活下来的，你甚至不确定暴风雨真的结束了。
但有一件事是确定的：当你穿过了暴风雨，你早已不再是原来那个人。」</p>
<p>- 村上春树《海边的卡夫卡》</p>
</blockquote>
<p>2022 开场非常魔幻，3 月份我们在上海迎来了长达两个多月的封城。
从浦东浦西鸳鸯封再到浦东上海全域静态管理，从开始说的几天封闭到持续两个多月的封闭，
我第一次切身体会到自由是无价的，也学会了如何在复杂多变的环境参与集体活动，
保护自己和家人。</p>
<p>疫情拉近了人和人之间的距离，本来在线的网友纷纷变成了线下的团长、志愿者。
在缺少物资（包括后来开放后阶段缺少布洛芬）情况下，印证了「远亲不如近邻」。
我和夫人两人都是社区积极参与者，早在疫情之前就通过贴二维码方式组件了小区微信群。
这次疫情中，我们两人也轮流参与志愿者，我搞了若干次团购，还总结了一篇
<a href="https://docs.qq.com/doc/DVERvclhWZU5oQVBJ">如何组织疫情团购</a>。</p>
<p>年底的开放也是突如其来。
开放之后很快一家人都阳了。不幸中的万幸是阳的有序，至少还有「牧羊人」来做饭。</p>
<p>但一位亲人没有挺过这次疫情，她刚进行了手术。
手术很顺利，已经转入普通病房等待苏醒恢复，
结果遇上了新冠病毒。最后去世的原因不是原来脑部出血问题，而是新冠引起的呼吸衰竭。
我匆匆赶过去做了最后的送别，恍惚间，前几周还在家中健谈小辈各种趣事，突然就变成了天人永别。
悲痛之余，感叹人生命运无常和个人渺小无力，希望生者坚强，穿越阴霾继续前行。</p>
<p>我不想过多谈及政策、医疗制度、清零派和共存派的斗争。
只是感慨普通老百姓的生存不易、疫情的无情和生活的残酷的真相。
人到中年，愈发觉得好消息都是顺其自然应理所应当，而坏消息都是猝不及防怎会这样。</p>
<h2 id="工作---跬步和千里">工作 - 跬步和千里</h2>
<blockquote>
<p>大问题并不需要大规模的解决方案，而是一个行动上的基本框架加无数个微小决策</p>
</blockquote>
<p>这是我完全投入 Kubernetes 领域的第二年，
这一年精力都投入在如何大规模集群的优化和相应的工具平台。</p>
<p>目前我管理的核心集群规模超过一万节点，集群数量也近百，
规模带来了性能、容量、爆炸半径的管理难度，用户的需求也常常千变万化。
大规模集群面临的挑战在变多，历史债务却持续积累一直没有偿还干净，
而且还在不断要处理新加入的复杂问题：监管、多环境、对公云服务等等。</p>
<p>公司有稳定的业务和相当多试错场景，但是也包裹着海量的债务。
业务的压力导致了今年还不断在解决问题，没有投入太多的精力去做创造性的事情。
现在工作中面临最大的问题是体系化建设，挑战是如何繁琐的事情中将碎片的事情捏成团，
解决问题同时还要有创新。</p>
<p>今年还陆续给 ArgoCD 提了几个 PR，以解决在如此规模集群下 ArgoCD 工作性能问题。
可惜我投入最多时间的 lock-free 和 lazy watch
两个特性一直还没合入上游，几个前置的小 PR 都处理比较缓慢。</p>
<p>除了本职工作，还做了一些其他有意思的事情。
今年担任了大团队首席学习官，组织了两季 Infra SRE Meetup，
给大团队同学们搭建了一个场子分享，
我充分发挥了运营能力和设计能力，整了好多花活。
另外，我还意外地成为了一位厂里 Go 语言专家评委，参与了我厂 Go 语言规范的制定。
虽然我只是过去水了几场会议，倒是有这个机会跟更多技术老炮们交流学习。</p>
<p>新年的期望：能够持续做正确的事情，最重要的是不仅解决领域中具体的问题，
还能够保持高专业水平，构建一些系统化方案，加速问题解决。
如果还有时间，能好能给社区做做一些反馈，贡献一些代码。</p>
<h2 id="业余---工具还是工具">业余 - 工具还是工具</h2>
<p>可能是差生文具多的缘故，我一直对制作工具有浓烈的兴趣，今年有两个产出 excalidraw-collaboration 和 go-toodledo。</p>
<p>在封城 Remote 过程中，同事给我介绍了一个产品 <a href="https://excalidraw.com/">Excalidraw</a>。
这款在线协作画图工具产品感非常好，
它的手写风格解决了我画图强迫症的问题，
我挺想给工友们提供这个产品使用，但是首要解决是 SaaS 服务产品数据安全问题。</p>
<p>于是我做了 Excalidraw 的
<a href="https://blog.alswl.com/2022/10/self-hosted-excalidraw/">私有化</a>
不少朋友给了关注，还有人来咨询如何部署，
于是我又给出了一套一键部署方案 <a href="https://github.com/alswl/excalidraw-collaboration">excalidraw-collaboration</a>。</p>
<p>除了 Excalidraw之外，我还投入了不少时间撰写一个 GTD 的 CLI / TUI 工具
<a href="https://github.com/alswl/go-toodledo">go-toodledo</a>。
在实现了 CLI 功能之后，我又再接再厉，基于 <a href="https://github.com/charmbracelet/bubbletea">bubbletea</a> 实现了基于 TUI 的大部分的交互功能。
目前已经堪堪能用。明年还会继续打磨一下，将 go-toodledo 变成一个通用化的 GTD 管理工具，
对接更多平台，甚至提供一个类似 Obsidian 的 GUI 工具。</p>
<h2 id="读书">读书</h2>
<p>今年读书不多，主题阅读的话围绕投资相关入门书籍和 Go 相关的书籍：</p>
<p><strong><a href="https://book.douban.com/subject/30176774/">第一本经济学 (豆瓣)</a></strong></p>
<p>又薄又好读，语言生动但又不过于活泼，适合入门。</p>
<p><strong><a href="https://book.douban.com/subject/26582822/">重新定义公司 (豆瓣)</a></strong></p>
<p>做到世界第一流公司要志向远大，雇佣最一流的人才，并且给他们提供孵化创新的土壤。
更多书评 <a href="https://blog.alswl.com/2022/07/company/">跟 Google 学开公司 - 谈谈方向、文化和人</a></p>
<p><strong><a href="https://book.douban.com/subject/26163553/">投资中最简单的事 (豆瓣)</a></strong></p>
<p>化繁为简，剖析投资的技巧和手段手段。</p>
<p><strong><a href="https://book.douban.com/subject/24851460/">历代经济变革得失 (豆瓣)</a></strong></p>
<p>一直以来，我想学会几件事：看懂国家政策消息、看懂公司财报、学会投资。 于是我陆陆续续看了一些关于经济 / 投资的入门书籍，
《投资中最简单的事》，《第一本经济学》，《世界上最简单的会计书》等。 这次读完吴晓波的《历代经济变革得失》，给我带来不少
新的输入，特别是书中对中央、地方、有产、 无产的四种力量和四大基本制度分析法，提供非常好的视角来分析各种事件。
更多书评 <a href="https://blog.alswl.com/2022/11/economic-revolution-in-china/">读《历代经济变革得失》</a></p>
<p><strong><a href="https://book.douban.com/subject/35498378/">活着就是冲天一喊 (豆瓣)</a></strong></p>
<p>我挺少读文学类书籍，更别说是非虚构类文体。这本「活着就是冲天一喊」以一种异样的姿态，进入了我的阅读列表。 坦白说，我多少
有些大城市生活久了人的「固定思维」。中国经济在腾飞发展，乡村在不断变革，教育医疗一次次改革帮助群众生活的更好。虽然还有很
多历史困难，也有很多现实问题，但总体是向上的。这当然也是真的，从各类数据都能看大发展，但写灰尘之中的生活太少太少了，为这
些人发声的人太少，没有声音不代表不存在。 我刚开始拿起这本书时候，甚至还有些猎奇的想法：爆破工人能写出什么样的文字；他们
的日常生活是什么样子的？读着读着才知道，这是一个爆破工人的事情，一个有尘肺病的工人，也记录了一些他的工友、朋友、家庭的故
事。书中没有刻意去渲染苦难，没有唉声叹气和麻木不仁。除了苦难，还能看到的还有生命的活力，对美好的向往。</p>
<p><strong><a href="https://book.douban.com/subject/3674537/">明朝那些事儿（1-9） (豆瓣)</a></strong></p>
<p>叙事恢弘，读了小一年才读完。朝代问题除了是军事问题还是经济问题。</p>
<h2 id="flag">Flag</h2>
<p>回顾一下去年立的 Flag：</p>
<blockquote>
<p>希望新的一年有更多时间高质量陪伴家人，</p>
</blockquote>
<p>自我评价一下：今年在夫人带动下做到了几乎每周末都陪伴小朋友去户外，
郊野公园，市区公园，无动力乐园，滨江绿地，博物馆，科普馆，
亲子互动展，城市市集，玩水赶海……
夫人的溜娃知乎号半年都在知乎知势榜榜单中，甚至还拿到了成长榜单第一名。</p>
<blockquote>
<p>有时间和机会写更多高水平代码，更多外部输出，</p>
</blockquote>
<p>高水平代码写的还不够，很多事情都要自己亲力亲为，不少精力投入在从 0 到 1 的工作。
比如初始化项目底座，约束设计风格、代码规范等等事情。
少量有意思的代码（比如 ArgoCD 的 patch）都是在忙里偷闲产出的。</p>
<p>坦率地说，我司人效比不够高，日常能有 1/4 时间输出已经是不错了。
复杂环境和对 KPI 极其看中的环境中，能有一些有价值的输出还是挺难的。
偷偷看了大团队研发产出数据，我输出几乎是每个月的榜首，
我自我感觉在这个环境下面做的还不错，遗憾的是没有更多的精力给社区做一些贡献。</p>
<blockquote>
<p>产生更大的组织影响。</p>
</blockquote>
<p>组织影响力，emm~ 可能还是局限在大部门，无法走出团队，缺少好的撬动点。
今年还是得多写多输出多分享。</p>
<p>2023 的 <del>Flag</del> 方向：</p>
<ul>
<li>高质量陪伴家人，放下手机，走向户外</li>
<li>每月输出文章，特别是 Kubernetes / 研发设计领域可以写一些心得</li>
<li>经历了新冠，今年计划安排个私教教我健身房运动</li>
<li>投资收益率能做到 10%，今年新手阶段投资以股票型基金为主，投资收益 3.9%，跑赢了大盘和余额宝</li>
</ul>
<h2 id="last">Last</h2>
<p>2023 愿年家人健康平安，我继续保持乐观和积极，在工作和生活上有些突破，
在人生马拉松中有一段中途加速跑。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[读《历代经济变革得失》]]></title>
    <link href="https://blog.alswl.com/2022/11/economic-revolution-in-china/"/>
    <id>https://blog.alswl.com/2022/11/economic-revolution-in-china/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-11-24T00:07:25+08:00</published>
    <updated>2022-11-24T00:07:25+08:00</updated>
    
    <content type="html"><![CDATA[<p>一直以来，我想学会几件事：看懂国家政策消息、看懂公司财报、学会投资。
于是我陆陆续续看了一些关于经济 / 投资的入门书籍，《投资中最简单的事》，《第一本经济学》，《世界上最简单的会计书》等。
这次读完吴晓波的《历代经济变革得失》，给我带来不少新的输入，特别是书中对中央、地方、有产、
无产的四种力量和四大基本制度分析法，提供非常好的视角来分析各种事件。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/four.png" alt="四种力量"  />


</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/method.png" alt="四大基本制度分析法"  />


</p>
<p>吴晓波是经济史大家，我读过他的《激荡三十年》、《腾讯传》，笔法锋利，时常有深刻洞见评价。
这次是从经济变革的角度出发，历数从秦朝起著名的经济变革，介绍其发生的政治经济背景、手段和成果。
变革有成功的也有失败，但是往往逃不出政治局势的影响力。剖析隐藏逻辑和规律，辩驳得失，让读者酣畅淋漓。</p>
<p>我希望从读史（经济学历史书也算史吧）获取一些对当下有用的信息，回答现实中的一些问题：</p>
<ul>
<li><mark>经济改革，究竟改的是什么？为什么要改革？</mark></li>
<li><mark>改革开放的改革，是改了什么？</mark></li>
<li><mark>我们对未来经济是否还应该保持充足信心？</mark></li>
</ul>
<h2 id="为何发起经济变革">为何发起经济变革</h2>
<p>变革（改革）这个词经常提到，为什么要变革？变革发起方是谁？</p>
<p>答案是中央，即国家的掌权者。为什么历朝历代这么多次发起改革呢？一言以蔽之，中央没钱了，需要通过一些制度的调整，增加收入。</p>
<p>至于为什么中央要收钱？这就是著名的<mark>桑弘羊之问</mark>：</p>
<blockquote>
<ol>
<li>帝国运转光靠农业的税收远远不够，如果不实行国有专营制度，钱从何来？</li>
<li>一旦爆发战争、灾荒等急需用钱，国库却空空如也，该怎么做？</li>
<li>如果中央不把重要财源掌控在手上，一旦国内分裂势力起兵造反，该如何抵挡？</li>
</ol>
</blockquote>
<p>总结一下，历史上（也包括现在）国家要用钱做建设；光靠农业税不行，中央要管钱否则国家会分裂。</p>
<p>PS：我们现在的政府收入以税收为大头，专营占比小。由于实行分税制，也不存在中央和地方财源掌握问题。</p>
<h2 id="经济改革改什么收钱方式">经济改革改什么？收钱方式</h2>
<p>每次改革都是在特定的历史背景下面，比如商鞅要强国、汉武帝要打匈奴等等。古时中央政权需要钱办事，总需要钱，钱不够就要想办法。
这个就涉及到<mark>国家的钱从哪里来</mark>？我看看看，国家的收入有这么几种：</p>
<ul>
<li>税收，古时最多的就是农业税，现在则是增值税和企业所得税</li>
<li>专营，即某些领域只能国家经营，不允许民间资本进入（往往是资源型或必需品）</li>
<li>其他（比如卖地、卖官）</li>
</ul>
<p>古时收钱路子不多，也不是金本位或纸币，常见方式：</p>
<ul>
<li>税收方式：纳粮，有的 1/30，有的 1/10 比例不等</li>
<li>徭役或者对应付费免除</li>
<li>专营方式，盐铁 / 烟草 都是专营，现在的银行也是专营，广泛意义上面来说，国营企业都是专营</li>
</ul>
<p>纳粮往往是实体，而且纳粮过程中可能存在巨大猫腻，也就是中央政权和地方政权的博弈。
强中央和弱中央在纳粮这块控制能力差异比较大。这也是为什么古代无法依赖农业税的一个重要原因。
专营则不一样，流通的的金属货币，不容易在流通过程中产生损失，或者偷报瞒报。</p>
<p>每次变革的核心内容就是通过<mark>归属、制度的调整，重新厘定财源</mark>。
经济变革的内容都是搭配着相应的政治制度而来，影子脱离不了实体。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/goverment-macro-adjustment.png" alt="国家宏观调控手段"  />


</p>
<h2 id="一句话介绍历代经济变革">一句话介绍历代经济变革</h2>
<p>尽管每次变革并非单纯经济层面的变革。我这边还是用一句话讲讲每次变革是怎么回事：</p>
<ul>
<li>管仲：贸易自由，但铁矿和海盐只允许国营</li>
<li>商鞅：不仅矿是国家的，人也别乱动，全部种田去</li>
<li>汉武帝 / 桑弘羊：少交税（1/30 ），全盘国营（铸钱、盐铁酿酒产业、统一物价、金融、税收）</li>
<li>王莽：桑弘羊说的都对，我还要土地国有化、币值改革，啊，我完蛋了</li>
<li>李世民：古代版本小政府，大社会，轻税简政，宽松政策</li>
<li>王安石：前面宋朝方案（宽松民间强专营（茶盐酒醋都要管））不行；换我的：计划经济上，官方放贷（青苗法）</li>
<li>明清：宏观经济管制、特许和官商、关闭国际贸易</li>
<li>洋务运动：发展总是被稳定压制；资本阶级萌芽</li>
<li>北洋和南京：以邻为壑、没王法的自由经济；南京政府的计划经济</li>
<li>建国后：计划经济、消灭私营、土地国有化、十年动乱</li>
<li>改革开放：务实和功利，尊重市场力量，从均贫走向先富起来，不均衡不彻底；地方政府和集体经济发发光</li>
<li>朱总理：分税让中央重新掌控主动权；地给你地方政府；激活国营从下岗开始</li>
</ul>
<h2 id="了解一下我国的政府财政收入情况">了解一下我国的政府财政收入情况</h2>
<p>我们可以看当前我国的 <a href="http://www.gov.cn/xinwen/2022-01/29/content_5671104.htm">2021年财政收支情况</a>，
看一下我们当前政府收入情况：</p>
<table>
	<thead>
			<tr>
					<th><strong>类目</strong></th>
					<th><strong>收入（亿元）</strong></th>
					<th><strong>备注</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>一般公共预算收入</td>
					<td>202539</td>
					<td></td>
			</tr>
			<tr>
					<td>政府性基金预算收入</td>
					<td>98024</td>
					<td>注：土地使用权、彩票公益、政府住房基金等</td>
			</tr>
			<tr>
					<td>国有资本经营预算收入</td>
					<td>5180</td>
					<td></td>
			</tr>
	</tbody>
</table>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/china-2021-revenue-1.png" alt="china 2021 revenue"  />


</p>
<p>一般公共预算收入构成：</p>
<table>
	<thead>
			<tr>
					<th><strong>类目</strong></th>
					<th><strong>收入（亿元）</strong></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>国内增值税</td>
					<td>63519</td>
			</tr>
			<tr>
					<td>企业所得税</td>
					<td>42041</td>
			</tr>
			<tr>
					<td>出口退税</td>
					<td>18158</td>
			</tr>
			<tr>
					<td>进口货物增值税、消费税</td>
					<td>17316</td>
			</tr>
			<tr>
					<td>个人所得税</td>
					<td>13993</td>
			</tr>
			<tr>
					<td>国内消费税</td>
					<td>13881</td>
			</tr>
			<tr>
					<td>契税</td>
					<td>7428</td>
			</tr>
			<tr>
					<td>土地增值税</td>
					<td>6896</td>
			</tr>
			<tr>
					<td>城市维护建设</td>
					<td>5217</td>
			</tr>
			<tr>
					<td>印花税</td>
					<td>4076</td>
			</tr>
			<tr>
					<td>车辆购置税</td>
					<td>3520</td>
			</tr>
			<tr>
					<td>房产税</td>
					<td>3278</td>
			</tr>
			<tr>
					<td>关税</td>
					<td>2806</td>
			</tr>
			<tr>
					<td>证券交易印花税</td>
					<td>2478</td>
			</tr>
			<tr>
					<td>资源税</td>
					<td>2288</td>
			</tr>
			<tr>
					<td>城镇土地使用税</td>
					<td>2126</td>
			</tr>
			<tr>
					<td>车船税、船舶吨税、烟叶税等其他各项税收收入合计</td>
					<td>1236</td>
			</tr>
			<tr>
					<td>耕地占用税</td>
					<td>1065</td>
			</tr>
			<tr>
					<td>环境保护税</td>
					<td>203</td>
			</tr>
	</tbody>
</table>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/china-2021-revenue-2.png" alt="China 2021 revenue detail"  />


</p>
<p>从饼图可以看到，目前我国的政府收入大头还是税收，<mark>税收中大头是增值税和消费税</mark>。而国营收入仅占整体收入 2%，
我对经济不够专业，所以对这个 2% 非常震惊。
另外从「政府性基金预算收入」这项占比 32%，也能够显著感受到我国对<mark>土地经济</mark>的依赖。</p>
<h2 id="对经济未来发展还有信心么">对经济未来发展还有信心么？</h2>
<p>读完中国历代经济变革历史，能从其中感受到强烈的治乱循环。经济只是政治的影子。
治乱循环就是从四个阶段的循环，一次治乱往往对应一次朝代的重建。




<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202211/cycle.png" alt="治乱循环"  />


</p>
<p>那么问题是：现在到底是恒纪元还是乱纪元。从军事、民生、国际影响等来看，目前是恒纪元。
那问题就变成现在是恒纪元的上升箭头中，还是下降箭头中？</p>
<p>回顾一下改革开放的重要动作：</p>
<ul>
<li>从均贫到先富带动后富的理念变化，直接反应在农村允许包干</li>
<li>从计划经济（全面国营）转向允许民营经济发展</li>
<li>通过分税制，将地方财源回收到中央，再重新分配</li>
<li>允许地方通过卖地方式增加收入（这点在当时很重要，避免了政府被第一波启动资金绑架，参考香港的问题）</li>
</ul>
<p><mark>我们至今还生活在改革开放的增长曲线中</mark>。</p>
<p>从中国历史来看，和平发展 10 年小康，30 年盛世，50 年强国。然后进入不确定性时间。现在可能正在不确定的期间。
是否有信心取决于我们对治乱循环的周期判断。我的几个观察视角，从几个视角出发：</p>
<ul>
<li>工业发展趋势</li>
<li>民营和中小型企业发展状况</li>
<li>资源型、能源型行业的垄断和创新</li>
<li>新闻、文化、教育的开放度</li>
<li>社会奓靡程度</li>
<li>重大风险：战争、天灾</li>
</ul>
<p>最后，我的观点是：目前经济发展基本盘看好，但是贫富分化在加剧、权贵经济在崛起，后疫情时代绑架了经济发展发动机。
我整体持谨慎乐观，从全书行文之间，也能够感受到吴晓波对国进民退的忧虑。</p>
<h2 id="更多阅读">更多阅读</h2>
<ul>
<li><a href="https://book.douban.com/subject/24851460/">历代经济变革得失 (豆瓣)</a></li>
<li>吴晓波在央视的视频分享：<a href="https://www.bilibili.com/video/BV1BG4y1H7wH/">上</a> / <a href="https://www.bilibili.com/video/BV1RP4y1U7zu/">下</a></li>
</ul>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[码转电子厂 - 教你修键盘]]></title>
    <link href="https://blog.alswl.com/2022/10/fix-keyboard/"/>
    <id>https://blog.alswl.com/2022/10/fix-keyboard/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-10-19T10:51:01+08:00</published>
    <updated>2022-10-19T10:51:01+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/fu-tu-kang.png" alt="fu-tu-kang"  />


</p>
<blockquote>
<p>为了做好万全的准备，如何在 35 岁毕业后能够顺利入职电子厂？</p>
<p>从修键盘学起</p>
</blockquote>
<h2 id="原因">原因</h2>
<p>我使用的键盘是 ErgoDox，一个人体工程学设计的分体键盘。关于 ErgoDox 更多详情可以见我之前的 <a href="https://www.zhihu.com/question/52088337/answer/141073759">回答</a>。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/keyboard-view.png" alt="keyboard-view"  />


</p>
<p>（前任键帽配色 + 手托）：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/keyboard-view-2.png" alt="keyboard-view-2"  />


</p>
<p>经过七八年工作，它进过水，进过咖啡，还进过豆浆，现在终于有几个键不灵活了，按起来有粘滞感，无法提供顺畅的 coding feel 了。</p>
<p>在使用备胎 Filco 几个月之后，我终于下定决心，要将 ErgoDox 修好。</p>
<h2 id="准备">准备</h2>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/prepare.png" alt="prepare"  />


</p>
<ul>
<li>电烙铁</li>
<li>吸锡器</li>
<li>焊锡</li>
<li>键轴</li>
<li>精工螺丝起子套件</li>
<li>拔键器</li>
<li>起键轴小起子</li>
</ul>
<p>没有焊接经验的朋友，可以学习一下如何焊接：</p>
<p><a href="https://www.bilibili.com/video/BV1xt4y157LM/">女生都能学会的键盘焊接换轴教程_哔哩哔哩_bilibili</a></p>
<p><a href="https://www.bilibili.com/video/BV1Ui4y177kk/">电烙铁的错误和正确使用方法_哔哩哔哩_bilibili</a></p>
<h2 id="过程">过程</h2>
<center><mark><b>检查要换哪些键轴，按一按，听一听</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-1.png" alt="step-1"  />


</p>
<center><mark><b>卸下外壳卸下伪装</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-2.png" alt="step-2"  />


</p>
<center><mark><b>去除对应的键帽（注意，F J 键帽不一样哦）</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-3.png" alt="step-3"  />


</p>
<center><mark><b>融化焊锡，用吸锡器将融化的焊锡吸走</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-4.png" alt="step-4"  />


</p>
<center><mark><b>用键轴小起子，将其从正面摘除，记得有个软卡子，要上下方向（即 cherry logo 方向 + 对面用力）</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-5.png" alt="step-5"  />


</p>
<center><mark><b>看看进去的咖啡和豆浆</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-6.png" alt="step-6"  />


</p>
<center><mark><b>将新的键轴焊上去，效果</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-7.png" alt="step-7"  />


</p>
<center><mark><b>吸锡器吸走的碎屑吐出来的样子</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/step-8.png" alt="step-8"  />


</p>
<center><mark><b>最后完成组装</b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/keyboard-final.png" alt="keyboard-final"  />


</p>
<h2 id="总结">总结</h2>
<p>又有了那种打字畅快的感觉了~</p>
<p>青春回来了~</p>
<p>最后分享一下我的 ErgoDox Layout 配置：</p>
<ul>
<li><a href="https://link.zhihu.com/?target=https%3A//github.com/alswl/ergodox-firmware/blob/master/src/keyboard/ergodox/layout/alswl-layout.c">alswl/ergodox-firmware/blob/master/src/keyboard/ergodox/layout/alswl-layout.c</a> 我的 Layout，一共五层：普通模式 / Funtion Key / Number Pad / MediaKey / Arrow</li>
<li><a href="https://link.zhihu.com/?target=https%3A//github.com/alswl/ergodox-firmware/blob/master/src/main.c%23L127">alswl/ergodox-firmware/blob/master/src/main.c#L127</a> 修改了 LED 灯，让 LED 灯来表示 Layout 状态</li>
<li><a href="https://link.zhihu.com/?target=https%3A//github.com/alswl/teensy_loader_cli">alswl/teensy_loader_cli</a><a href="https://link.zhihu.com/?target=https%3A//github.com/alswl/teensy_loader_cli">alswl/teensy_loader_cli</a> Mac 下面可以工作的 teensy loader cli，官方提供的点击 Reset 按钮没有响应</li>
</ul>
<p>若有收获，就点个赞吧。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[私有化在线协同画图平台 Excalidraw]]></title>
    <link href="https://blog.alswl.com/2022/10/self-hosted-excalidraw/"/>
    <id>https://blog.alswl.com/2022/10/self-hosted-excalidraw/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-10-17T00:08:31+08:00</published>
    <updated>2022-10-17T00:08:31+08:00</updated>
    
    <content type="html"><![CDATA[<blockquote>
<p>首先感谢岳父岳母带家中神兽去过暑假了，我才能有周末的时间来改这个系统。</p>
<p>另外感谢老婆，周末我两天都搞自己的事情，也没批评我。</p>
<p>最后感谢公司团建，提供酒店住，花了一个晚上时间搞定了中文手写体。</p>
<p>注：这是魔改私有化 excalidraw 开源版本，感谢社区</p>
</blockquote>
<h2 id="1-excalidraw">#1 Excalidraw</h2>
<blockquote>
<p>介绍一下 Excalidraw，产品特性</p>
</blockquote>
<p>什么是 Excalidraw，<mark>这（可能）是最强的在线协同画图工具</mark> ，你可以访问 <a href="https://excalidraw.com/">Excalidraw</a> 试试看。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/anatomy_of_an_azure_function.png" alt="anatomy_of_an_azure_function.png"  />


</p>
<p>如果你觉得打开来都是空白，那么也可以访问这个公共面板 <a href="https://excalidraw.com/#room=e630a562422e6e9d94db,IXndkz3JfOSGrlswJRC83Q">Excalidraw</a> 参与一起创作。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/excalidraw-share-room.png" alt="excalidraw-share-room.png"  />


</p>
<p>Excalidraw 非常好用，我总结几个点：</p>
<ul>
<li>手写风格（Hand Writing）避免了强迫症，什么一像素差异，都没了躺平到底</li>
<li>无延迟在线协作，非常适合后疫情时代的沟通协作</li>
<li>产品素质过硬，快捷键、对象连接粘滞、选定文件直接存储到本地等细节都有，挑不出毛病</li>
</ul>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/excalidraw-homepage.png" alt="excalidraw-homepage.png"  />


</p>
<p>这个产品我们经内部同学内部安利之后，大家迅速的喜欢上了，在 Excalidraw 上面了好多图，但也引来一个问题。</p>
<center><mark><b>「公有 SaaS 服务存在数据安全隐患」</b></mark></center>
<center><mark><b> 怎么办？我要把他私有化部署！</b></mark></center>
<h2 id="2-部署之前先来了解一下-excalidraw-的工作原理">#2 部署之前，先来了解一下 Excalidraw 的工作原理</h2>
<p><strong>Excalidraw 工作原理和私有化原理</strong>：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/excalidraw-arch.png" alt="excalidraw-arch.png"  />


</p>
<p>那私有化的核心难点是什么：</p>
<p>解决 excalidraw-storage 的数据存储问题，即替换掉 Google Cloud Platform 的 firebase 服务。</p>
<h2 id="3-私有化尝试">#3 私有化尝试</h2>
<blockquote>
<p>事有不顺反求诸己</p>
<p>- 孟子</p>
<p>求与诸己，不如求于 GayHub</p>
<p>- alswl</p>
</blockquote>
<p>让我们先先研究 Excalidraw 的存储系统。
Firebase 是 Google 的 Serverless 服务，以前是独立公司（还挺火），后来给 GCP 收购了。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/firebase.png" alt="firebase.png"  />


</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/firebase-features.png" alt="firebase-features.png"  />


</p>
<p>我一开始想法是替换 Firebase，找了一个社区服务 <a href="https://supabase.com/">Supabase</a>（意外发现还有免费的 SaaS 服务，良心啊）</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/supabase.png" alt="supabase.png"  />


</p>
<p>但是仔细研究一下，发现 Supabase 的 API 和 firebase 不兼容，并 <mark>不能平替</mark>。</p>
<p>Excalidraw 还要靠 Excalidraw+ 卖钱（Plus 服务），怎么可能让你这么轻松就私有化，官方原来有个 excalidraw-json 的仓库，现在也被移除了。但是我们不怕，我们有来自社区的力量：</p>
<ul>
<li><a href="https://github.com/excalidraw/excalidraw/issues/1772">Self hosting Excalidraw - Umbrella issue · Issue #1772 · excalidraw/excalidraw</a></li>
<li><a href="https://github.com/excalidraw/excalidraw/discussions/3879">Collaboration mode - Self-hosting vs Collab on top of · Discussion #3879 · excalidraw/excalidraw (github.com)</a></li>
</ul>
<p>他们给了条路（虽然后来被证实还是有歪路的）：</p>
<ul>
<li><a href="https://gitlab.com/kiliandeca/excalidraw-fork">Kilian Decaderincourt / Excalidraw Fork · GitLab</a> 魔改版本 excalidraw</li>
<li><a href="https://gitlab.com/kiliandeca/excalidraw-storage-backend">Kilian Decaderincourt / excalidraw-storage-backend · GitLab</a></li>
</ul>
<p>于是我开始检视他们方案，打开代码一看，思路正确（替换 firebase 的几个接口），使用自己的 KV 存储（Redis / MySQL / Mongo）替换。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/jing-shen.png" alt="jing-shen.png"  />


</p>
<p>尝试部署，立马遇到问题：</p>
<center><mark><b> Dockerfile 无法正常构建 </b></mark></center>
<center><mark><b> 版本落后 upstream 太久（2020 -\> 2022）</b></mark></center>
<center><mark><b> Rebase 方式 merge 上游无法 follow </b></mark></center>
<p>怎么这么巧，我是 <mark><b> 前端实习生 // 社区打补丁专家 // Kubernetes 清洁工 // YAML 资深专家 </b></mark>，专治这么几个毛病。</p>
<h2 id="4-你让开我来写">#4 你让开，我来写</h2>
<ul>
<li><a href="https://github.com/alswl/excalidraw-storage-backend">alswl/excalidraw-storage-backend: Excalidraw Backend</a>
<ul>
<li>使用二阶段构建 Dockerfile <a href="https://github.com/alswl/excalidraw-storage-backend/commit/d841d734ab02659df370a6bdef3f1d8947696580]%28https://github.com/alswl/excalidraw-storage-backend/commit/d841d734ab02659df370a6bdef3f1d8947696580%29">https://github.com/alswl/excalidraw-storage-backend/commit/d841d734ab02659df370a6bdef3f1d8947696580](https://github.com/alswl/excalidraw-storage-backend/commit/d841d734ab02659df370a6bdef3f1d8947696580)</a></li>
<li>中国特供 <a href="https://github.com/alswl/excalidraw-storage-backend/commit/30a6da9c87b367bb1fbde449f754923638545fa8">feat: china mirror · alswl/excalidraw-storage-backend@30a6da9</a></li>
</ul>
</li>
<li><a href="https://github.com/alswl/excalidraw">alswl/excalidraw: Virtual whiteboard for sketching hand-drawn like diagrams</a>
<ul>
<li>调整代码，使用 http stroage 替代 firebase</li>
<li><a href="https://github.com/alswl/excalidraw/pull/2">Feat/self host backend by alswl · Pull Request #2 · alswl/excalidraw</a></li>
</ul>
</li>
</ul>
<center><mark><b> 改造代码设计图 </b></mark></center>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/self-hosted-excalidraw.png" alt="self-hosted-excalidraw.png"  />


</p>
<h2 id="5-未来可能不存在">#5 未来（可能不存在）</h2>
<p>Excalidraw 是 SaaS 服务的免费版，<mark><b> Excalidraw+ 是付费版 </b></mark>，有什么区别呢</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/excalidraw-price.png" alt="excalidraw-price.png"  />


</p>
<p>总结：</p>
<ul>
<li>更可靠的存储，集成到云存储（比如 Dropbox / iCloud）</li>
<li>用户身份识别，连接到通用的身份系统</li>
<li>更个性化的权限控制（密码访问、定向分享）、租户控制、项目组控制</li>
<li>域内共享的 Library</li>
<li>跟其他系统集成（语雀、钉钉文档、飞书等等）</li>
</ul>
<p>或者还是直接购买 Excalidraw 企业版本服务吧，少折腾多享受。</p>
<h2 id="6-中文手写体优化">#6 中文手写体优化</h2>
<p>有个问题，<mark><b> 中文字体不是手写体 </b></mark> ，很违和。先看看哪些字体能用吧：</p>
<p>macOS 支持的中文手写体：</p>
<ul>
<li><a href="https://support.apple.com/zh-cn/HT212587">https://support.apple.com/zh-cn/HT212587</a></li>
<li><a href="https://support.apple.com/zh-cn/HT212587">macOS Monterey 附带的字体 - 官方 Apple 支持 (中国)</a></li>
</ul>
<p>cursive 家族：</p>
<ul>
<li>PanziPen</li>
<li>LingWai</li>
<li>Hannotate</li>
</ul>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/hanzipen-sc.png" alt="hanzipen-sc.png"  />


</p>
<p>windows 中文支持手写体比较差劲，必须安装 Office 才有更多选择：<br />
华文行楷；方正舒体；（Office）</p>
<ul>
<li><a href="https://www.zhihu.com/question/22703287">https://www.zhihu.com/question/22703287</a></li>
<li><a href="https://www.zhihu.com/question/22703287">Windows 系统内置的中文字体为什么只有那几种？不多内置几种字体呢？ - 知乎 (zhihu.com)</a></li>
<li><a href="https://zh.m.wikipedia.org/zh-hans/Microsoft_Windows%E5%AD%97%E5%9E%8B%E5%88%97%E8%A1%A8">https://zh.m.wikipedia.org/zh-hans/Microsoft_Windows字型列表</a></li>
</ul>
<p>不行的话，只有系统自带的楷体 KaiTi 可以工作。</p>
<p>最后，靠我三脚猫的前端水平，做了一个 PoC，并给官方提交了一个 PR：<a href="https://github.com/excalidraw/excalidraw/pull/5604">feat: simple impl of multi font support, for chinese font by alswl · Pull Request #5604 · excalidraw/excalidraw</a></p>
<p>这是最终的效果：</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/202210/chinese-hand-writing.png" alt="chinese-hand-writing.png"  />


</p>
<p>可以访问 <a href="https://excalidraw.alswl.com/">excalidraw.alswl.com</a> 查看效果，这是一个静态站点，
支持中文字体，但是无法在线协作。</p>
<hr />
<h2 id="update-2022-12">Update 2022-12</h2>
<p>有几个网友来咨询如何进行部署。于是基于上述的方案，我提供了一套基于 Docker Compose 的一键拉起服务：带协作、中文字体支持。
仓库见 <a href="https://github.com/alswl/excalidraw-collaboration">alswl/excalidraw-collaboration</a>。</p>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[跟 Google 学开公司 - 谈谈方向、文化和人]]></title>
    <link href="https://blog.alswl.com/2022/07/company/"/>
    <id>https://blog.alswl.com/2022/07/company/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-07-15T23:40:00+08:00</published>
    <updated>2022-07-15T23:40:00+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/upload_dropbox/202207/google-900x500.png" alt="image via pixabay"  />


</p>
<blockquote>
<p>我居然也有胆来想这个命题了。</p>
</blockquote>
<h2 id="困惑---换个视角看待公司">困惑 - 换个视角看待公司</h2>
<p>大部分年轻人都在一个商业组织（即公司）中工作。
我们似乎对这个商业组织的运作已经很熟悉：
接触公司并进行面试和岗位匹配，在特定的岗位里面工作，过程也许开心或沮丧，通过组织的种种管理手段（KPI / OKR）来完成上级分发的任务。</p>
<p>这个过程中，我们往往遇到不少困惑，有些朋友还经历过职场 PUA（Pick-Up Artist）；有些朋友可能感觉自己已经干的足够出色却无法得到晋升；有些朋友感慨合作的上下游太不专业了；总之，<strong>我们对公司不满是常态，而对公司满意则是反常</strong>。</p>
<!-- more -->
<p>其实很多时候，雇员的感受是公司运行的规律的投影。
我们制定 OKR 时候想去创造，应该通过什么方法论去开拓工作？这是公司战略决定的。
公司是怎么定义优秀人选的，我有没有机会获得晋升？这是公司用人态度决定的。
996 这么辛苦，我们该怎么去保持生活工作平衡？这是公司价值观和文化决定的。</p>
<p>Google 在这个方面似乎做得不错，从 2022 福布斯雇主（<a href="https://www.forbes.com/lists/best-large-employers/">America&rsquo;s Best Large Employers 2022</a>）排名来看，Google 排在 34 名，互联网领域则是第 4 位（前三名分别是 Microsoft / Ultimate Kronos Group / LinkedIn）。</p>
<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/upload_dropbox/202207/best-large-employers.png" alt="best-large-employers"  />


</p>
<p>Google 做对了哪些事情？让我们换一个视角，从雇员视角切换到雇主，甚至再宽阔一些，以投资者视角来观察公司。
来解答一些关键问题：公司是如何决定前进方向的？公司每年的目标是应该怎么制定出来？公司通过什么方式筛选和激励人才？</p>
<p><a href="https://book.douban.com/subject/26582822/">重新定义公司</a> 这本书告诉我们很多 Google 的回答，
国际大公司的方案未必能拿来立即用上，但这些答案可以给我们很多启发。</p>
<p><strong>Google 说：战略、人才、文化、沟通，这些是定义公司的关键。</strong></p>
<h2 id="公司往哪里走---战略和方向决定了收入">公司往哪里走 - 战略和方向决定了收入</h2>
<p>公司发展的真正原动力是什么？我思考答案的朴素的：科技在发展，世界在变得更复杂，人们希望自己生活更安全、幸福、高效。这时候就需要一些机构，尤其是利润驱动的商业公司来提供更好的服务来满足大家。从这个角度出发，公司只要是与人为善，帮助用户解决确实存在的问题，就创造了相应的价值。</p>
<p>那具体怎么创造，往哪个方向发展？追寻利润是唯一的驱动方向么？显然不是的，否则很多公司就要去围绕人性的弱点（黄赌毒）去开展业务了（你别说，这种公司还真的挺多）。</p>
<p>伟大的公司之所以伟大，是他们仅仅将利润看作一个副产品。真正指引是 <strong>基于对新兴技术的洞见而形成的判断</strong>。这是一种那什么是「洞见」呢？
技术洞见是创新方式应用科技或设计，<strong>达到成本或者特性的 10X 变化，甚至是代际变化</strong>。</p>
<p>制定的战略要足够有挑战。
Google 说 [这个战略是否足够吸引人，就好比 NASA 登月计划一样，让渴望的人聚拢在一起。而不是单纯一份体面的工作。」</p>
<p>如果想做一鸣惊人的事情确实比较困难，也不符合科技发展规律。
有时我们的创新仅仅是「<strong>组合式创新</strong>」，将领域 A 的知识复用到领域 B，
就形成了创新。计算机为什么持续受到热捧，因为这个作为基础领域可以跟大量其他领域进行相结合。</p>
<p>战略实施中，是否需要时刻盯着竞争对手？
这样做反而会落了下乘，
最关键的还是自己要找到自己的专业领域，一以贯之持续投入。
成为这个领域的专家。很多时候技术洞见，本质还是来自于人对领域的了解，
如果不是领域专家，那就不是洞见而是空想。</p>
<p>阿里集团和蚂蚁的愿景是什么？「让天下没有难做的生意」/「为世界带来微小而美好的改变」。这个愿景确实非常伟大，
也很有现实价值意义。
大公司提出的愿景也非常宏伟。宏伟也带来了不真实感，
字节「建设“全球创作与交流平台”」搭建平台，创造空间，提供场合，或者说大白话提供一个流量交换地。
Google 的<a href="https://about.google/intl/zh-CN/">愿景</a>是「整合全球信息，供大众使用，使人人受益」，其实也是抽象的概念。
这些公司的愿景都是足够伟大，上限足够高，可以在这个方向上持之以恒挖掘代际感的产品/方案出来。</p>
<h2 id="文化---公司决策的投射">文化 - 公司决策的投射</h2>
<p>每个公司都有自己的文化，文化是设计出来的么？是也不是。
顶层设计时候都会有一些期望的文化状态（一般都是正确的废话）。
但真实的文化是民间形成的，<strong>这是在一次次冲突和决策下培育出来的</strong>。
比如阿里味、腾讯瑞雪、字节范儿（不过字节范儿据说官方自己定义了）。</p>
<p>Google 的文化，大家最熟悉的可能就是「不作恶」了。除此之外还有几个可以总结出来的点：</p>
<ul>
<li>驱逐恶棍、保护明星：恶棍是指品格的恶，明星可能有怪癖但是有高产出</li>
<li>快乐工作强扭不来</li>
<li>跟我来：TL 需要热情，要有舍我其谁的气概</li>
<li>不作恶</li>
</ul>
<p>除了这些标语式的文化，Google 一些公司形态也很值得了解：</p>
<ul>
<li>按照业务 BU 划分团队还是按照职能划分？
<ul>
<li>按照职能，不要考虑什么部门成本，要考虑将人的潜力发挥，专人专用，促进专业能力深化</li>
</ul>
</li>
<li>要不要 WLB
<ul>
<li>鼓励贡献，喜欢那些想做事情，从而不区分 WL 的人，反对「过劳」</li>
</ul>
</li>
<li>要不要限制团队规模？
<ul>
<li>不刻意要求，小团队、扁平化都可以</li>
</ul>
</li>
</ul>
<p>文化不是定义出来的，阿里味的文化其实也是民间长出来的，官方创新地将多个场景的「土话」提炼成阿里价值观。
阿里味：（我的总结）<strong>敢批评，勇于接受批评；内部产品创新；使命必达；组织结构动态调整</strong>。
外部所谓恶臭的味道：互联网黑话、面向 KPI、PPT、谈概念、PUA，
其实是某些媒体和个人的妖魔化。他们对立了雇主和雇员的关系，而弱化了创新、竞争的初心。但也不可否认，清水时间久了会变脏，文化不沉淀就会被稀释，</p>
<p>为什么产生这么大的认识差异。我理解：扩张太快，人才质量良莠不齐；外部社会形势变化，雇员压力被放大。
尤其是第二点，价值观这一件内核严肃的事情，从内心出发的感想行动，变成由外力驱动的事情。
为了和在这个价值观下群体行动一致，倒逼成为假阿里味。</p>
<p>是价值观错了？太形而上么？我对此持乐观态度，是有这么一群人，向善而行，也希望将公司做大做强。
越伟大的愿景，对成员的要求越高，也越难达到所有成员高度认可价值观状态。
在薪酬差异不大、业务技术创新性要求没那么高时候，要允许一部分人混口饭吃。</p>
<p>文化，尤其是民间自发形成的文化，没有对错，什么土壤结什么果。
这个公司做大做强，他的文化就是好文化了。一个成功的文化移植另外环境，未必一样能获得成功。
说白了，企业内部的文化，就是职场最佳实践。</p>
<h2 id="关于人才和招聘---花最多的钱找最强的人">关于人才和招聘 - 花最多的钱找最强的人</h2>
<p>公司要找什么什么样的人？老黄牛要不要，野狗要不要？是要高性价比人才还是要奢侈品？</p>
<p>Google 使用的招聘策略很特别，即<strong>用溢价来招聘最一流的成员</strong>。
他们甚至因为担心 B 级人才会引入 BCD 级别人才，而拒绝 B 级人才。</p>
<p>这一切的前提是 <strong>核心业务运行稳健并足够赚钱</strong>，才能让公司用溢价来留住优秀的人员。
另外，人才密度高也是一把双刃剑，过高的人才密度可能导致内卷。
想留住人才还是要靠优秀的现金流、提供足够有挑战的任务，良好的合作环境，以及良好的社会环境。</p>
<p>如果不满足这几个点，贸然学习 Google 的人才策略，就是东施效颦，会适得其反。
人才筛选说到底，还是投入产出比问题。有钱了喜欢买奢侈品，没钱平替也很好用。</p>
<p>Google 鼓励所有成员参与招聘，并且在绩效/影响力评估会考虑这个点。
同时设立了招聘委员会来对人才评级，避免出现不专业出现。
令人惊讶的是，所有人员的最终入职确认，都要 CEO 过目。
想象一下阿里的人都要逍遥子审批，这是多么巨量的工作。（我对 Google 这个讲法深表怀疑，可能呈现的数据是结构化之后的数据）。</p>
<h2 id="合作和决策---点头和摇头">合作和决策 - 点头和摇头</h2>
<p>合作中遇到最大的问题，就是点头和摇头。<strong>点头不附和，摇头有理由</strong>。
Google 鼓励成员用数据做决策，并且鼓励过程中的摇头，以及最终的分歧消灭。
话都是对的，但在真正执行中，如何能够创造一个敢说真话，讲信息含量高的话环境？</p>
<p><strong>Google 也没讲出来</strong>。</p>
<p>我只能默认由于愿景广阔、人才质量高，人才溢价高，导致大家的合作是更为理性，更<strong>不考虑本位而是考虑真正的问题</strong>。
更愿意从公司的价值思考。但有人的地方就有江湖，人性也总是自私的。
理性决策最终还是要靠制度才能进行下去，也不存在最性价比的方案。</p>
<h2 id="小结">小结</h2>
<p>尽管想一下子弄清楚这么多问题是困难和不现实的。Google 的一系列做法给我们很多启示：
<strong>做到世界第一流公司要志向远大，雇佣最一流的人才，并且给他们提供孵化创新的土壤</strong>。</p>
<p>合上书闭上眼深思，回想自己身边，不敢评价全局，只能说身边的技术团队，现在在一个历史时间：
债务多，演变不彻底。技术洞见不少，但是落地困难。还有没有机会提出「登月计划」，引领下一代的科技变革呢？</p>
<hr />
<h2 id="附录">附录</h2>
<p>老样子，我整理了大纲和一些有意思的摘录，供反复研读。</p>
<p>框架和纲要：</p>
<ul>
<li>文化，相信自己的口号
<ul>
<li>拥挤出成绩：创建促进交流共同的环境</li>
<li>一起吃住，一起工作</li>
<li>别听父母的：杂乱是种美德：办公室逼格是无所谓的，办公室要促进共同交流</li>
<li>别听「河马」的话：别迷信权威资深人事</li>
<li>7 法则：扁平化</li>
<li>切莫自扫门前雪：按职能划分团队，而不是按 BU 划分</li>
<li>重组工作的关键：快刀斩乱麻</li>
<li>贝索斯的「两个披萨」原则：Google 不设限，大小团队都接受</li>
<li>组织要以最优影响力的人为中心：不看岗位和经验，看表现和热情</li>
<li>驱逐恶棍、保护明星：恶棍是指品格的恶，明星可能有怪癖但是有高产出</li>
<li>「过劳」有道：谷歌不宣扬 WLB，赞同合理的的节奏进行</li>
<li>营造说「好」的企业文化：促进互相帮助的文化</li>
<li>快乐工作强扭不来</li>
<li>别光着身子就行</li>
<li>跟我来：TL 需要热情，要有舍我其谁的气概</li>
<li>不作恶</li>
</ul>
</li>
<li>战略，你的计划是错误的：信任团队而不是信任完美的商业计划
<ul>
<li>信赖技术洞见，而非市场调查：技术洞见是创新方式应用科技或设计，达到成本或者特性的代际变化</li>
<li>组合创新时代时代的到来</li>
<li>别去找快马：（去找车）</li>
<li>为成长而优化</li>
<li>科斯与企业的性质：做平台</li>
<li>专注的力量：做专业做好</li>
<li>开放为王</li>
<li>选择封闭系统的前提：如果封闭利益更高的话</li>
<li>莫被竞争对手牵着鼻子走</li>
</ul>
</li>
<li>人才：招聘是你最重要的工作：摒弃层级制度，同事评估，委员会定夺
<ul>
<li>羊群效应：优秀的人吸引优秀的人，B 级人才还会招 B、C、D 级</li>
<li>有激情的人不把激情挂嘴边：观其行</li>
<li>雇佣学习型动物</li>
<li>机场测试：待上 6h，看看是否味道符合</li>
<li>客观评价人才：以事实作为标准</li>
<li>加大光圈甄才：扩大人才入选范围</li>
<li>全员出动招募人才：所有员工的职责，并鼓励参与招聘，并参考到评估业绩和晋升能力中</li>
<li>面试是最重要的技能：</li>
<li>将面试时间设为 30 分钟</li>
<li>自由主张</li>
<li>设立招聘委员会：所有人入职都要审核</li>
<li>宁缺毋滥</li>
<li>给优秀人才超出常规的回报</li>
<li>换出巧克力，留下葡萄干</li>
<li>爱他，就让他走</li>
<li>宁可漏聘，也不误聘</li>
</ul>
</li>
<li>决策：共识的真正含义
<ul>
<li>用数据做决策</li>
<li>谨防摇头娃娃的附和：其实是点头娃娃</li>
<li>该响铃时就响铃：拿捏时机，乐于行动</li>
<li>少做决策：减少分歧，放出权利</li>
<li>每天开会：高频率沟通，尤其是重大决策</li>
<li>你们两边说的都对：柔性沟通</li>
<li>每场会议都需要有主人</li>
<li>马背原则：短暂高效地审视当下所处的环境</li>
<li>把 80% 的时间花在 80% 的收入上：集中注意力到核心业务</li>
<li>接班人计划</li>
</ul>
</li>
<li>沟通：最牛的路由器，管理者要成为团队沟通最强的路由器。
<ul>
<li>心态开放：信息透明、OKR 开放</li>
<li>掌握细节：摘要能力</li>
<li>为讲真话营造安全的环境</li>
<li>制造话题：为沟通提供一些桥梁</li>
<li>祷文不会因重复而失色：反复重复</li>
<li>以旅行报告作为会议的开场：先招人总结一下旅行的见闻和学习到的内容，作为一个快乐会议的开场</li>
<li>自我评价</li>
<li>电邮常识：迅速回复、精简、经常清理、为搜索做准备</li>
<li>备一本情境手册：模板，一对一、董事会、合作伙伴、媒体</li>
<li>靠关系而非层级</li>
</ul>
</li>
<li>创新：缔造原始的混沌
<ul>
<li>创新是什么：新颖、出人意料、非常实用</li>
<li>了解环境：首先，你得对这个领域有了解，最好是有洞见</li>
<li>首席执行官必须兼任首席创新官</li>
<li>聚焦用户</li>
<li>往大处想：Think Big</li>
<li>制定（近乎）遥不可及的目标：OKR</li>
<li>70 / 20 / 10 原则：核心产品，新兴产品，全新产品</li>
<li>20% 时间制：给个人创新提供空间</li>
<li>创意无处不在</li>
<li>交付，迭代</li>
<li>败得漂亮：Fast Fail</li>
<li>与钱无关：创新不需要利益驱动</li>
</ul>
</li>
</ul>
<p>Google 招聘之行为准则：</p>
<blockquote>
<ol>
<li>雇用那些比你更聪明、更有见识的人。</li>
<li>不要雇用那些不能让你有所收获也不能对你构成挑战的人。</li>
<li>雇用那些能对产品和文化带来价值的人。</li>
<li>不要雇用那些无法为产品和文化带来积极影响的人。</li>
<li>雇用那些做实事的人。</li>
<li>不要雇用那些只想不做的人呢。</li>
<li>雇用那些满腔热情、自动自发的人。</li>
<li>不要雇用那些只想混口饭吃的人。</li>
<li>雇用那些能启发别人且善于与人相处的人。</li>
<li>不要雇用那些偏爱自己单干的人。</li>
<li>雇用那些能随着团队和企业一同成长发展的人。</li>
<li>不要雇用那些枯燥乏味、不具备全面技能的人。</li>
<li>雇用那些多才多艺、兼具独特兴趣和天赋的人呢。</li>
<li>不要雇用那些只为工作而活的人。</li>
<li>雇用那些道德高尚、坦诚沟通的人呢。</li>
<li>不要雇用那些趋炎附势、工于心计的人呢。</li>
<li>务必雇用优秀的候选人。</li>
<li>宁缺毋滥。</li>
</ol>
</blockquote>
<p>Goole 对高质量人才定义叫做「创意精英」，什么是创意精英呢？</p>
<blockquote>
<p>所谓创意精英，不仅拥有过硬的专业知识，懂得如何使用专业工具，还需要具备充足的实践经验。</p>
<p>创意精英有分析头脑，他们对数据运用自如，可以利用数据做出决策，同时也懂得数据的误导性，因此不会沉迷其中。他们认为，数据</p>
<p>对做判断大有帮助，但绝不对被数据牵着鼻子走。</p>
<p>创意精英有商业头脑。他们知道专业技术、优质产品与商业成功是环环相扣的，也对这三个要素的价值了然于胸。</p>
<p>创意精英有竞争头脑。在工作中，他们的杀手锏源自创新，但也离不开实干的积累。他们追求卓越、干净十足，即使在工作之余也不回</p>
<p>停止前进的脚步。</p>
<p>创意精英拥有用户头脑。无论身处那个行业，几乎没有人能比他们更懂得用户或消费者对产品的看法。我们把创意精英叫做超级用户，</p>
<p>因为他们对自己的兴趣并非浅尝辄止，而是近乎痴迷。</p>
<p>创意精英是新颖原创构想的源泉。他们用不同于你我的展新视角看问题。</p>
<p>创意精英充满好奇心。他们总是在提问，绝不满足于守常不变。</p>
<p>创意精英喜爱冒险。</p>
<p>创意精英自动自发。</p>
<p>创意精英心态开放。</p>
<p>创意精英一丝不苟</p>
<p>创意精英善于沟通。</p>
<p>创意精英必须具备商业头脑、专业知识、创造力已经实践经验，这些都是基本特征。</p>
</blockquote>
]]></content>
    
  </entry>
  <entry>
    <title type="html"><![CDATA[20 21]]></title>
    <link href="https://blog.alswl.com/2022/01/20-21/"/>
    <id>https://blog.alswl.com/2022/01/20-21/</id> 
    <author>
      <name>alswl</name>
    </author>
    <published>2022-01-03T10:23:00+08:00</published>
    <updated>2022-01-03T10:23:00+08:00</updated>
    
    <content type="html"><![CDATA[<p>



<img loading="lazy" src="https://e25ba8-log4d-c.dijingchao.com/upload_dropbox/202201/park.jpg" alt="park"  />



<small>image from wife</small></p>
<!-- more -->
<h2 id="关键词柳暗花明">关键词：柳暗花明</h2>
<h3 id="家庭">家庭</h3>
<p>这两年疫情来袭，生活、工作的方方面面都产生了巨大变化，也是我人生的最艰难的一段时光。</p>
<p>2020 年中，母亲身体抱恙，术后逐渐康复，全家紧绷的神经也得到了一丝放松。但在年末，小朋友出了一些状况。
具体情况我不过多谈及，圈内人称为地狱爬行。三十而立的年龄，奔跑中时突然撞上了一道无形的墙壁，抬头望去，
一片漫无边际的黑暗笼罩。好在经过全家的努力，终于在 2021 年末柳暗花明。
这两年，压力之下，也重新在思考自己在家庭、团队、个人的角色定位。</p>
<h3 id="工作">工作</h3>
<p>在蚂蚁的前两年，我主要开发一款面向外部商户的 DevOps 系统，过程中不仅要设计开发，也要跑到用户那边做需求挖掘和产品交付。
还要对内讲清楚业务价值。这种「既要又要还要」非常反工程实践，一度让我沮丧。工程师内核坚持和「业务价值落地」的冲突，
我无法将其融合在一起。最终就变成干苦活没回报，产出被收割。在我快失去对工作的掌控和热情时，
托另外一位朋友福及时转岗，</p>
<p>新的领域是容器调度领域（Kubernetes），这个领域生机勃勃，是 Cloud Native 基石，也是云计算的基础。
这个领域特点是，背靠社区、客户稳定、需求（规模的扩大、稳定性的提高、性能的提升）可预见
之前工作时候，若干次接触过这个领域。
14 年左右我初次接触了 Mesos 调度系统，将其作为 Hadoop Yarn 的替代品用在离线计算任务上。
后来我又开发过一套名为 Prisim 的开发环境，基于容器技术提供独立的 Dev 环境，具备静态和基于域名的简单 Service Discovery，
当时土法造炮堪堪能用，支撑起公司的整个研发环境。</p>
<p>蚂蚁前两年的工作，几乎中断了我在基础设施领域的工作，内容发散不聚焦。现在终于重新拉回了主干路线。
虽然新工作也并不轻松，但深挖领域、探索新方向、寻找增长点很有意思。
一句话概括所做的事情：管理好这些大规模集群，并以这个目的为出发，设计开发变更、可见性、应急、生命周期管理等工具。
团队 TL 来自 Google，同伴也普遍有相当的水准（小组最近两年每年给 KubeCon / SREcon 贡献一场分享），能够在一个不卷的地方深挖，可能是大部分技术人的梦想了。</p>
<p>这两年做的还不够地方，是影响力建设，输出社区太少，输出内容也太少。时间金贵，总是感觉不够用。</p>
<h2 id="书">书</h2>
<p><a href="https://book.douban.com/subject/3420606/">正面管教 (豆瓣)</a>
坚定、和善，发掘孩子的天性。</p>
<p><a href="https://book.douban.com/subject/10773248/">无条件养育 (豆瓣)</a>
唯有爱，帮孩子身心健康，走得更远。</p>
<p><a href="https://book.douban.com/subject/1888733/">Java Concurrency in Practice (豆瓣)</a>
并发相关殿堂级书，应该放到大学读，不管是不是 Java 开发者都应该阅读。我的<a href="https://book.douban.com/review/14121470/">笔记</a>。</p>
<p><a href="https://book.douban.com/subject/35048568/">how to (豆瓣)</a>
换个思路解决问题，有趣的小故事。</p>
<p><a href="https://book.douban.com/subject/35271451/">星之继承者 (豆瓣)</a>
硬核科幻，想象力之大。</p>
<h2 id="物件">物件</h2>
<ul>
<li>CarPlay 无线转换，车连易
<ul>
<li>不用使用 Lightning 线连接汽车，上车就自动无线连接成功</li>
</ul>
</li>
<li>电动晾衣架
<ul>
<li>解放双手</li>
</ul>
</li>
<li>网易严选晴雨两用折叠伞
<ul>
<li>超级小巧，感觉不到存在，男孩子也能用太阳伞</li>
</ul>
</li>
<li>网易严选 T 恤吸湿速干
<ul>
<li>夏天穿太舒服了，买了 3 件</li>
</ul>
</li>
<li>keychron K3 键盘
<ul>
<li>无线键盘，物美价廉</li>
</ul>
</li>
<li>野蛮娃娃遥控车
<ul>
<li>小朋友出门就是全小区最靓的崽</li>
</ul>
</li>
<li>梨家班徒巴西花梨红木擀面杖
<ul>
<li>丈母娘做面条，再也不用担心擀面杖发霉了</li>
</ul>
</li>
<li>Naturehike 户外野营折叠车
<ul>
<li>每周一次户外，带小朋友必备</li>
</ul>
</li>
<li>石头扫拖机器人 T7S
<ul>
<li>国产之光，替换了退休 iRobtot，扫拖一体 + 雷达真的香</li>
</ul>
</li>
</ul>
<h2 id="新年展望">新年展望</h2>
<p>过去两年过的比较压抑，我面对了很多生活的不顺遂。这段仿佛漫长的时光，也给了很多我反思自己的机会。
三十而立，不仅仅指的对个人视野立定远谋，也指的就是这种上有老下有小，要肩扛腰背的立。
希望新的一年有更多时间高质量陪伴家人，有时间和机会写更多高水平代码，更多外部输出，产生更大的组织影响。</p>
]]></content>
    
  </entry>
</feed>

