From 811378bbf9737652a43a6cd3f3d5def9da8de6c0 Mon Sep 17 00:00:00 2001 From: CrazyJasonwell Date: Tue, 8 Jul 2025 17:07:24 +0800 Subject: [PATCH] vault backup: 2025-07-08 17:07:24 --- .obsidian/plugins/rss-reader/data.json | 401 +++++++------------------ .obsidian/workspace.json | 4 +- 2 files changed, 116 insertions(+), 289 deletions(-) diff --git a/.obsidian/plugins/rss-reader/data.json b/.obsidian/plugins/rss-reader/data.json index 02937c6c..cc18e9ff 100644 --- a/.obsidian/plugins/rss-reader/data.json +++ b/.obsidian/plugins/rss-reader/data.json @@ -5,11 +5,6 @@ "url": "https://joyagain.me/feed/rss", "folder": "博客" }, - { - "name": "DIYGod", - "url": "https://diygod.cc/feed", - "folder": "DIY" - }, { "name": "少数派", "url": "https://sspai.com/feed", @@ -274,283 +269,6 @@ "language": "zh", "hash": "477a8d7857dfe29bc03f686f2b9738b3" }, - { - "title": "Hi, DIYgod", - "subtitle": "", - "link": "https://diygod.cc", - "image": "https://ipfs.crossbell.io/ipfs/bafybeibefx2tyow77m2wcnsh5anaaxfy7ypxbcuapb52c4h255onqp72ye", - "description": "写代码是热爱,写到世界充满爱!", - "items": [ - { - "title": "一个六岁开源项目的崩溃与新生", - "description": "我有一个维护了六年的开源项目—— RSSHub,它正在面临崩溃\n\n表面上,它有接近 30k Stars、900 多 Contributors、每月 3 亿多次请求和数不清的用户、每月几十刀的赞助、有源源不断的 issue 和 pr、代码几乎每天更新,非常健康和充满活力", - "content": "

我有一个维护了六年的开源项目 —— RSSHub,它正在面临崩溃

\n

背景

\n

表面上,它有接近 30k Stars、900 多 Contributors、每月 3 亿多次请求和数不清的用户、每月几十刀的赞助、有源源不断的 issue 和 pr、代码几乎每天更新,非常健康和充满活力,但在不可见的地方,持续数年高昂的维护时间成本、每月一千多刀的服务器费用、每天重复繁琐且逐渐积累的维护工作,都让它在崩溃的边缘反复横跳

\n

项目是六年前开发的,不少当时以 Next Generation 为口号的时髦 Node.js 技术栈和依赖库已经成为时代眼泪,现在看非常陈旧,很多现在流行的新技术没法应用,比如 JSX、TypeScript、Serverless 等;它的架构也非常不合理,每个路由的信息散落在多个地方,开发或者变更一个路由需要多处修改,一个地方去注册路由,一个地方去编写路由脚本,一个地方去编写 Radar 规则,一个地方去编写文档...... 这增加了很多工作量,也很容易出错,之前路由少的时候并不是个问题,但现在已经变得难以忍受

\n

在如此糟糕的基础架构下能保持现状已经是竭尽全力,开发新功能更是无本之木,只会增加以后更新的难度,所以我有时候脑子蹦出的新奇想法也很难实现

\n

要解决这些问题,唯一的办法是使用现代化的框架和新设计的架构来重写内核,但随着路由越来越多,改造成本也越来越高,每个基础改动可能都需要多达数月的工作量,所以虽然问题越来越严重,但秉承着又不是不能用的原则一拖再拖

\n

但这又是不得不做的事情,所以我抽空花了几个月的时间重新设计和重写了它

\n

技术栈更新

\n

koa -> Hono

\n

第一步也是最基础和难度最大的是换掉之前使用的 Web 框架 koa,作为六年前流行的下一代 Web 框架,作者早就弃坑了,调研之后决定换用对 JSX、TypeScript、Serverless 支持最好的 Hono

\n

它们的 API 差异很大,需要重写所有中间件和替换所有路由中使用的 koa API

\n

主要改动:
\nhttps://github.com/DIYgod/RSSHub/pull/14295

\n

\"image\"

\n

Hono 作者也很喜欢这个改造

\n\n

JavaScript -> TypeScript

\n

改用 TypeScript 可以避免很多类型问题和低级错误,最重要的是可以保证数百名贡献者保持一致难以出错和后续贡献的路由代码质量不至于太糟糕

\n

主要改动:

\n\n

\"image\"

\n\n

CommonJS -> ESM

\n

ESM 是几年前一些 Node.js 核心开发者强推的规范,它有一些优点,但最多的是与之前 CommonJS 不兼容带来的生态割裂和功能简化带来的诟病

\n

经过这几年的发展,现在可以说大部分场景勉强可用了,tsx 也为 CommonJS 和 ESM 混用的场景提供了支持

\n

虽然已经尽了最大努力,但还是有一些 CommonJS 代码暂时难以迁移,导致现在只能使用 tsx 运行,与一些 Serverless 比如 Vercel 没法兼容,但也有机会后续慢慢解决

\n

主要改动:

\n\n

\"image\"

\n

\"image\"

\n

art-template -> JSX

\n

art-template 是一个支持 koa 的模板引擎,记得六年前还有一个更流行的模板引擎,但是不记得名字了,选用 art-template 是因为那个更流行的我当时没看懂,这个很简单

\n

Hono 自带了 JSX 支持,JSX 就不用多介绍了,根正苗红的 JavaScript 的语法扩展,等同于用 React

\n

主要改动:

\n\n

Jest -> Vitest

\n

Jest 是曾经流行的测试框架,但是在 ESM 时代到来之后就越来越不行了,对 ESM 的支持一直是实现性「experimental support」,现在更流行的是 Vitest 了

\n

主要改动:
\nhttps://github.com/DIYgod/RSSHub/commit/38e42156a0622a2cd09f328d2d60623813b8df28

\n

Got -> ?

\n

目前使用的 Got 也已经是不积极维护的状态了,也没有找到好的替代品,后续也许会换成原生 Fetch 或者自封装的 Fetch,还没有动手

\n

新路由标准

\n

我自己能力还是不够的,在与社区开发者们讨论的过程中学习和改进了很多,过程很有意思:https://github.com/DIYgod/RSSHub/issues/14685

\n

主要改动:
\nhttps://github.com/DIYgod/RSSHub/pull/14718

\n

\"image\"

\n

历史

\n

新标准主要为了解决路由信息过于分散的问题,这次应该算第三版

\n

第一版来自 RSSHub 开发阶段,当时没有预见到路由数量会有这么多,所以几乎没什么规划,所有路由在同一个文件中注册,然后再去增加路由脚本和文档,后来这个文件越来越大,很容易冲突,另外所有路由脚本都会在启动阶段被加载,程序性能越来越差

\n

第二版来自 NeverBehave 维护的时期,引入了命名空间,切割了 router.js、radar.js,同命名空间的路由集中在了一个同文件夹中和一个或多个 Markdown 文档中,还实现了懒加载,极大提升了可维护性和性能,但还是会分散在多个文件中,不同文件的信息也容易出现不一致导致错误

\n

现在

\n

本次把路由文件分为了两类,namespace.ts 和任意名字的路由文件

\n

namespace.ts 会通过导出名为 namespace 的对象来定义命名空间的信息

\n
import type { Namespace } from '@/types';\n\nexport const namespace: Namespace = {\n    // ...\n};\n\n
\n

namespace 包含的字段通过 TypeScript 限制为

\n
interface Namespace {\n    name: string;\n    url?: string;\n    categories?: string[];\n    description?: string;\n}\n
\n

这些信息会经过编译后被文档和 RSSHub Radar 利用

\n

路由文件会通过导出名为 route 的对象来定义路由的信息

\n
import { Route } from '@/types';\n\nexport const route: Route = {\n    // ...\n};\n
\n

route 包含的字段通过 TypeScript 限制为

\n
interface Route {\n    path: string | string[];\n    name: string;\n    url?: string;\n    maintainers: string[];\n    handler: (ctx: Context) => Promise<Data> | Data;\n    example: string;\n    parameters?: Record<string, string>;\n    description?: string;\n    categories?: string[];\n\n    features: {\n        requireConfig?: string[] | false;\n        requirePuppeteer?: boolean;\n        antiCrawler?: boolean;\n        supportRadar?: boolean;\n        supportBT?: boolean;\n        supportPodcast?: boolean;\n        supportScihub?: boolean;\n    };\n    radar?: {\n        source: string[];\n        target?: string;\n    };\n}\n
\n

之前 route.js mantainer.js radar.js 和文档的信息都被集中在这一个文件中,减少了多处定义也减少了出错的可能

\n

实现

\n

实现逻辑就是开发环境通过遍历整个 route 文件夹,找到所有 namespace.ts 和路由文件,读取信息,加载路由,在生成环境使用提前编译好的路径列表来避免遍历和不必要的加载过程,代码在:https://github.com/DIYgod/RSSHub/blob/master/lib/registry.ts

\n

文档也是通过遍历 route 文件夹,找到所有需要的信息然后合成一系列的 Markdown 文件,不再需要手动维护,代码在:https://github.com/DIYgod/RSSHub/blob/master/scripts/workflow/build-routes.ts

\n

当然使用之前路由标准开发的路由都需要迁移到新标准而不是直接放弃掉,已经通过脚本批量抓取整理信息后做了替换,但特别是文档比较混乱也有很多错误,所以抓取的信息也有很多错误,只能在后续逐渐人工修改了

\n

未来

\n

通过这一系列改进,RSSHub 终于能够扔掉历史包袱,安心开发新功能了,这里列出我积累的一些想法抛砖引玉:

\n\n

最后,开源是一件很昂贵的事情,RSSHub 能活到现在离不开这些开发者的帮助

\n

\"\"

\n

以及这些赞助的好心人

\n

\"\"

\n

如果 RSSHub 正在帮助你,也希望你可以积极参与进来,为信息自由的未来贡献一份自己的微小力量

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2532", - "creator": "DIYgod", - "pubDate": "Sun, 10 Mar 2024 19:29:05 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": true, - "favorite": false, - "created": false, - "tags": [], - "hash": "7cb8dfc2caf799b249c2d122f3a65e3a", - "highlights": [] - }, - { - "title": "和帕鲁生活在一起的两周", - "description": "哪个小男孩没幻想过生活在这样一个充满宝可梦伙伴的世界,它们能听懂且愿意倾听我们说话,有着不同的特点和强大的技能,而且都很可爱,我们可以跟它们睡觉吃饭、并肩作战探索世界,永远不再孤独,不管是谁都可以找到最适合自己的宝可梦", - "content": "

宝可梦幻想

\n

\"image\"

\n

哪个小男孩没幻想过生活在这样一个充满宝可梦伙伴的世界,它们能听懂且愿意倾听我们说话,有着不同的特点和强大的技能,而且都很可爱,我们可以跟它们睡觉吃饭、并肩作战探索世界,永远不再孤独,不管是谁都可以找到最适合自己的宝可梦

\n

这一切早就可以发生,但这一切终究没有发生,宝可梦复杂的版权问题和躺平在功劳簿上的版权公司 Game Freak 让我们的幻想一直也仅仅是幻想

\n

当然也有人说最近的几个新作阿尔宙斯、朱紫比之前好多了,“虽然好多了,但只是臭味稀薄一点的狗屎罢了”,剑盾、阿尔宙斯、朱紫、Pokemon Sleep 游戏时长并不短的宝可梦玩家 DIYgod 义愤填膺地说道

\n

帕鲁实现

\n

\"image\"

\n

但只要幻想一直存在,变成现实也只是时间问题,横空出世的幻兽帕鲁给所有宝可梦粉丝带来了一个一本满足的平行幻想世界,终于苦于没有 Windows 的我也专门买了一台 ROG Ally 来沉迷其中

\n

游戏中与帕鲁的互动是前无仅有的,衣食住行战斗探索的过程都与帕鲁深度融入,真的是和帕鲁生活在一起

\n

从刚落地进入初始台地互动就开始了,我们的第一个落脚点不是自己造的,而是跟捣蛋猫一起造的

\n

\"image\"

\n

\"image\"

\n

再到后来帕鲁包办我们的一切后勤,我们的每一顿大餐,都需要经历播种、浇水、收割、搬运、存储、烹饪,分别由有着不同特长和分工的帕鲁来完成,会制冷的企丸丸去运行冰箱,会喷火的燎火鹿去烹饪

\n

\"image\"

\n

\"\"

\n

在我们外出探索时,过河骑滑水蛇,赶路骑云海鹿,翻山越岭骑烽歌龙

\n

\"image\"

\n

\"\"

\n

在我们战斗时,举着火绒狐充当、喷火器,骑着暴电熊扫射机关枪,甚至虽然不太人道,可以把电棘鼠当作手榴弹扔出去,同时据点里的焰煌在帮我们炼钢造枪,阿努比斯在帮我们手搓子弹

\n

\"image\"

\n

\"\"

\n

从徒手撸树到机关枪横着走,从无人问津到人满为患,在不知不觉的建造中我已经在帕鲁世界中倾注了太多的感情

\n

从饿着肚子的第一天

\n

\"Pal

\n

到现在

\n

\"Pal

\n

\"Pal

\n

一些额外的探索

\n

数据展示

\n

\"image\"

\n

毕竟是单机游戏,数据都在本地,可以很方便地做处理

\n

有一个开源项目可以把存档文件解析成 JSON 方便第三方开发和展示 https://github.com/cheahjs/palworld-save-tools

\n

还有一个开源项目可以把 JSON 再生成一个前端页面 https://github.com/zaigie/palworld-server-tool

\n

于是我把存档同步到 NAS 上,再在 NAS 上部署一个展示页面,就可以很方便地查看我的帕鲁们了 https://pal.diygod.me

\n

模组

\n

帕鲁有很丰富的社区模组,比如把皮皮鸡变成坤或者把帕鲁变成宝可梦什么的,还有一些可以在不影响游戏平衡的前提下极大提升游戏体验

\n

我用的主要来自一个模组社区 Nexus Mods,他们有一个很方便的模组安装和管理工具 Vortex Mod Manager,以下是我正在使用的模组

\n", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2510", - "creator": "DIYgod", - "pubDate": "Sun, 18 Feb 2024 19:20:33 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "f14e398cdc59250b014491961cef7a37", - "highlights": [] - }, - { - "title": "Twitter 对开源项目发起 DDoS 攻击", - "description": "背景 Twitter 被马斯克收购后,从去年 8 月开始,他们对开源第三方集成和第三方客户端进行了一系列明里暗里的打压和攻击,这样做是为了阻止用户通过非官方客户端访问和使用 Twitter,来增加公司的广告和会员营收\n\n而开源社区中以 Nitter 和 RSSHub…", - "content": "

背景

\n

Twitter 被马斯克收购后,从去年 8 月开始,他们对开源第三方集成和第三方客户端进行了一系列明里暗里的打压和攻击,这样做是为了阻止用户通过非官方客户端访问和使用 Twitter,来增加公司的广告和会员营收

\n

而开源社区中以 Nitter 和 RSSHub 为代表的开源项目并没有放弃向信息自由的努力,通过众多聪明的开源开发者们想出来的一个个奇妙操作(issue),在一轮轮封锁和反封锁的对抗中短暂占了上风,其中最流行的做法是通过 Android 客户端使用的接口功能生成临时账号(细节)

\n

经过

\n

在两天前(1 月 26 日),许多 Nitter 实例的运行者和开发者报告称,他们正在使用的接口已被封锁。与此同时,他们的实例也开始遭受报复性 DDoS 攻击

\n

\"image\"

\n

\"image\"

\n

起初,我并没有太在意这件事情。毕竟,谁会相信 Twitter 官方会做出如此令人不耻且自降身段的 DDoS 行为呢?我对此深感怀疑

\n

然而,昨天当我打开 RSSHub 的 GitHub 仓库时,却意外地发现了以下内容

\n

\"image\"

\n

最近一个月的请求数达到了 4.5 亿,比正常水平高出 50%(正常水平仅为 3 亿多)

\n

然后登录 Cloudflare 查看日志

\n

\"image\"

\n

自从 26 日 0 点(当天官方接口被封锁和 Nitter 遭受 DDoS 攻击)以来,RSSHub 也一直遭受大规模的 DDoS 攻击。最近两天,请求量是平时的 170 多倍,每秒约 1 千次请求

\n

尽管数量看起来可怕,但 Cloudflare 出色的缓存功能已经成功缓存了超过 99% 的 DDoS 请求,甚至没有触发报警

\n

\"image\"

\n

RSSHub 的负载均衡和自动扩容功能非常完善,没有受到太大的压力

\n\n

🤣 就这样一直没有发现

\n

进一步分析发现,所有请求都来自 IP 地址为 139.255.221.98 的设备。这些请求都是针对 /twitter/keyword 路由,并且后面跟着一串不同且无意义的参数

\n

\"image\"

\n

我很清楚为什么只针对 keyword 路由,尽管代码中没有明确表达,但根据我的使用经验,此路由使用的搜索接口受到最严格的访问频率限制,通过攻击该路由可以实现最大化效果。由此可以推断出 DDoS 攻击者也对 Twitter 的接口非常熟悉

\n

虽然无法直接证明是官方人员所为,但各种无法解释的 “巧合” 已经清楚地表明了事情的真相,马斯克的简单粗暴行事风格也正在深刻影响这家公司

\n

影响

\n

进一步封锁 API 和进行 DDoS 攻击这两个操作可以说非常有效

\n

Nitter 开发者 zedeus 表示 Nitter 已死

\n

\"image\"

\n

Twitter Monitor 开发者 MANKA 表示不愿意再浪费时间

\n\n

nitter-status 开发者更是直接放出了告别页面

\n

\"image\"

\n

看起来就到此为止了吗?不,这远非终点。自由无法被阻挡,我们还有很多事情可以做

\n

\"image\"

\n

29 日 更新:RSSHub 已经恢复

\n", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2456", - "creator": "DIYgod", - "pubDate": "Sun, 28 Jan 2024 10:24:53 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "307962da32ad7a7a9efff403a501e670", - "highlights": [] - }, - { - "title": "如何优雅编译一个 Markdown 文档", - "description": "Markdown 是一种广泛使用的轻量级标记语言,允许人们使用易读易写的纯文本格式编写文档,也是 xLog 主要使用的文章格式,本文就以 xLog Flavored Markdown 为例来说明如何优雅地解析一个 Markdown 文档", - "content": "

Markdown 是一种广泛使用的轻量级标记语言,允许人们使用易读易写的纯文本格式编写文档,也是 xLog 主要使用的文章格式,本文就以 xLog Flavored Markdown 为例来说明如何优雅地解析一个 Markdown 文档

\n

架构

\n

解析过程可以用这样一个架构来表示:

\n
flowchart TB\n subgraph input\n Markdown\n end\n subgraph unified\n subgraph remark\n Markdown:::inputClass --string--> remark-parse:::remarkClass --mdast--> remarkPlugins[remark plugins]:::remarkClass\n remarkPlugins --mdast--> remark-rehype:::remarkClass & mdast-util-toc:::remarkClass\n end\n subgraph rehype\n remark-rehype --hast--> rehypePlugins[rehype plugins]:::rehypeClass\n rehypePlugins --hast--> hast-util-to-text:::rehypeClass & hast-util-to-html:::rehypeClass & hast-util-to-jsx-runtime:::rehypeClass\n end\n rehypePlugins --hast--> unist-util-visit:::rehypeClass\n end\n subgraph output\n mdast-util-toc --tocResult--> TOC:::inputClass\n hast-util-to-text --string--> plainText[Plain Text]:::inputClass\n hast-util-to-html --string--> HTML:::inputClass\n hast-util-to-jsx-runtime --JSX.Element--> ReactElement[React Element]:::inputClass\n unist-util-visit --custom--> Metadata:::inputClass\n end\nstyle input fill:#bbf7d0,stroke:#4ade80,color:#15803d\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle output fill:#bbf7d0,stroke:#4ade80,color:#15803d\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n
\n

关键概念:

\n\n

简单来说就是把 Markdown 文档交给一个 unified 生态的解析器解析成 unified 可识别的语法树,再通过一系列 unified 生态的插件转换为需要的内容,再通过一系列 unified 生态的工具库输出为需要的格式,下面就从 解析、转换、输出 这三个步骤来分别说明

\n

解析 Parse

\n
flowchart TB\n subgraph input\n Markdown\n end\n subgraph unified\n subgraph remark\n Markdown:::inputClass --string--> remark-parse:::remarkClass\n end\n end\nstyle input fill:#bbf7d0,stroke:#4ade80,color:#15803d\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\n
\n
\n

无论输入是 Markdown、HTML 还是纯文本,都需要将其解析为可操作的格式。这种格式被称为语法树。规范(例如 mdast)定义了这样一个语法树的外观。处理器(如 mdast 的 remark)负责创建它们。

\n
\n

最简单的一步,我们需要解析的是 Markdown,所以这里就应该使用 remark-parse 来把 Markdown 文档编译成 mdast 格式的语法树

\n

对应 xLog Flavored Markdown 中的

\n
const processor = unified().use(remarkParse)\n\nconst file = new VFile(content)\nconst mdastTree = processor.parse(file)\n
\n

转换 Transform

\n
flowchart TB\n subgraph remark\n remark-parse:::remarkClass --mdast--> remarkPlugins[remark plugins]:::remarkClass\n remarkPlugins --mdast--> remark-rehype:::remarkClass\n end\n subgraph rehype\n remark-rehype --hast--> rehypePlugins[rehype plugins]:::rehypeClass\n end\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n
\n
\n

这就是魔法发生的地方。用户组合插件以及它们运行的顺序。插件在此阶段插入并转换和检查它们获得的格式。

\n
\n

这一步最为关键,不仅包含了从 Markdown 到 HTML 的转换,还包含我们想在编译过程中夹带的私货,比如增加一些非标准的语法糖、清理 HTML 防止 XSS、增加语法高亮、嵌入自定义组件等

\n

unified 的插件非常多,更新也比较及时,基本需求几乎都能满足,对于不能满足的特定需求,自己编写转换脚本也很容易实现

\n

里面有一个特殊的插件是 remark-rehype,它会把 mdast 语法树转为 hast 语法树,所以在它之前必须使用处理 Markdown 的 remark 插件,在它之后必须使用处理 HTML 的 rehype 插件

\n

xLog Flavored Markdown 中就加入了非常多的转换插件

\n
const processor = unified()\n  .use(remarkParse)\n  .use(remarkGithubAlerts)\n  .use(remarkBreaks)\n  .use(remarkFrontmatter, [\"yaml\"])\n  .use(remarkGfm, {\n    singleTilde: false,\n  })\n  .use(remarkDirective)\n  .use(remarkDirectiveRehype)\n  .use(remarkCalloutDirectives)\n  .use(remarkYoutube)\n  .use(remarkMath, {\n    singleDollarTextMath: false,\n  })\n  .use(remarkPangu)\n  .use(emoji)\n  .use(remarkRehype, { allowDangerousHtml: true })\n  .use(rehypeRaw)\n  .use(rehypeIpfs)\n  .use(rehypeSlug)\n  .use(rehypeAutolinkHeadings, {\n    behavior: \"append\",\n    properties: {\n      className: \"xlog-anchor\",\n      ariaHidden: true,\n      tabIndex: -1,\n    },\n    content(node) {\n      return [\n        {\n          type: \"text\",\n          value: \"#\",\n        },\n      ]\n    },\n  })\n  .use(rehypeSanitize, strictMode ? undefined : sanitizeScheme)\n  .use(rehypeTable)\n  .use(rehypeExternalLink)\n  .use(rehypeMermaid)\n  .use(rehypeWrapCode)\n  .use(rehypeInferDescriptionMeta)\n  .use(rehypeEmbed, {\n    transformers,\n  })\n  .use(rehypeRemoveH1)\n  .use(rehypePrism, {\n    ignoreMissing: true,\n    showLineNumbers: true,\n  })\n  .use(rehypeKatex, {\n    strict: false,\n  })\n  .use(rehypeMention)\n\nconst hastTree = pipeline.runSync(mdastTree, file)\n
\n

下面介绍部分用到的插件

\n\n

输出 Stringify

\n
flowchart TB\n subgraph unified\n subgraph remark\n remarkPlugins[remark plugins]:::remarkClass --mdast--> mdast-util-toc:::remarkClass\n end\n subgraph rehype\n rehypePlugins[rehype plugins]:::rehypeClass\n rehypePlugins --hast--> hast-util-to-text:::rehypeClass & hast-util-to-html:::rehypeClass & hast-util-to-jsx-runtime:::rehypeClass\n end\n rehypePlugins --hast--> unist-util-visit:::rehypeClass\n end\n subgraph output\n mdast-util-toc --tocResult--> TOC:::inputClass\n hast-util-to-text --string--> plainText[Plain Text]:::inputClass\n hast-util-to-html --string--> HTML:::inputClass\n hast-util-to-jsx-runtime --JSX.Element--> ReactElement[React Element]:::inputClass\n unist-util-visit --custom--> Metadata:::inputClass\n end\nclassDef inputClass fill:#22c55e,stroke:#16a34a\nstyle output fill:#bbf7d0,stroke:#4ade80,color:#15803d\nstyle unified fill:#bfdbfe,stroke:#60a5fa,color:#1d4ed8\nstyle remark fill:#fecaca,stroke:#f87171,color:#b91c1c\nclassDef remarkClass fill:#f87171,stroke:#dc2626\nstyle rehype fill:#fef08a,stroke:##facc15,color:#a16207\nclassDef rehypeClass fill:#facc15,stroke:#ca8a04\n
\n
\n

最后一步是将(调整后的)格式转换为 Markdown、HTML 或纯文本(可能与输入格式不同!)

\n
\n

unified 的工具库也很多,可以输出各种我们需要的格式

\n

比如 xLog 需要在文章右侧展示自动生成的目录、需要输出纯文本来计算预估阅读时间和生成 AI 摘要、需要生成 HTML 来给 RSS 使用、需要生成 React Element 来渲染到页面、需要提取文章的图片和描述来展示文章卡片,就分别使用了 mdast-util-toc、hast-util-to-text、hast-util-to-html、hast-util-to-jsx-runtime、unist-util-visit 这些工具

\n

对应 xLog Flavored Markdown 中的

\n
{\n  toToc: () =>\n    mdastTree &&\n    toc(mdastTree, {\n      tight: true,\n      ordered: true,\n    }),\n  toHTML: () => hastTree && toHtml(hastTree),\n  toElement: () =>\n    hastTree &&\n    toJsxRuntime(hastTree, {\n      Fragment,\n      components: {\n        // @ts-expect-error\n        img: AdvancedImage,\n        mention: Mention,\n        mermaid: Mermaid,\n        // @ts-expect-error\n        audio: APlayer,\n        // @ts-expect-error\n        video: DPlayer,\n        tweet: Tweet,\n        \"github-repo\": GithubRepo,\n        \"xlog-post\": XLogPost,\n        // @ts-expect-error\n        style: Style,\n      },\n      ignoreInvalidStyle: true,\n      jsx,\n      jsxs,\n      passNode: true,\n    }),\n  toMetadata: () => {\n    let metadata = {\n      frontMatter: undefined,\n      images: [],\n      audio: undefined,\n      excerpt: undefined,\n    } as {\n      frontMatter?: Record<string, any>\n      images: string[]\n      audio?: string\n      excerpt?: string\n    }\n\n    metadata.excerpt = file.data.meta?.description || undefined\n\n    if (mdastTree) {\n      visit(mdastTree, (node, index, parent) => {\n        if (node.type === \"yaml\") {\n          metadata.frontMatter = jsYaml.load(node.value) as Record<\n            string,\n            any\n          >\n        }\n      })\n    }\n    if (hastTree) {\n      visit(hastTree, (node, index, parent) => {\n        if (node.type === \"element\") {\n          if (\n            node.tagName === \"img\" &&\n            typeof node.properties.src === \"string\"\n          ) {\n            metadata.images.push(node.properties.src)\n          }\n          if (node.tagName === \"audio\") {\n            if (typeof node.properties.cover === \"string\") {\n              metadata.images.push(node.properties.cover)\n            }\n            if (!metadata.audio && typeof node.properties.src === \"string\") {\n              metadata.audio = node.properties.src\n            }\n          }\n        }\n      })\n    }\n\n    return metadata\n  },\n}\n
\n

这样我们就优雅地从原始 Markdown 文档开始,获得了我们需要的各种格式的输出

\n

除此之外,我们还能利用解析出的 unified 语法树来编写一个可以左右同步滚动和实时预览的 Markdown 编辑器,可以参考 xLog 的双栏 Markdown 编辑器(代码),有机会我们下次再聊

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2434", - "creator": "DIYgod", - "pubDate": "Thu, 18 Jan 2024 12:50:37 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "2d7f1f95153a01262179252c0a3fb370", - "highlights": [] - }, - { - "title": "2023 平稳过渡", - "description": "\n<2024>\n\n发小觉得今年经历了巨大的变化,从苏格兰搬到新加坡,从未婚到已婚,从一家两口变成了一家三口,但我觉得都在预料之中,所以感觉还算很平稳", - "content": "

</2023>
\n<2024>

\n

发小觉得今年经历了巨大的变化,从苏格兰搬到新加坡,从未婚到已婚,从一家两口变成了一家三口,但我觉得都在预料之中,所以感觉还算很平稳

\n

身边的物品最能反映一个人的状态,所以还是跟 2022 一样从年度最佳开始

\n

🏆 年度最佳

\n

🍿 影视

\n

看过的 28 部动漫和 12 部剧集和 8 部电影:https://movie.douban.com/people/62759792/collect?mode=list

\n

而去年是 19 部动漫和 18 部剧集和 6 部电影,二次元含量显著上升了

\n

DIY 年度番剧: 《鬼灭之刃 锻刀村篇》

\n

\"image\"

\n\n
\n
\n\n

尽管有数集节奏过缓,然而该剧的燃点皆燃,泪点亦催人泪目,尤以最后以为会是虐人的剧情却华丽逆转为甜蜜结局,令人心潮澎湃,难以自抑

\n

去年最佳是《鬼灭之刃 游郭篇》,今年是《鬼灭之刃 锻刀村篇》,已经可以预料到了明年是《鬼灭之刃 柱训练篇》,希望可以保持下去

\n

除此之外还有《天国大魔境》、《间谍过家家》、《【我推的孩子】》(第一集)、《为美好的世界献上爆焰!》也非常喜欢

\n

DIY 年度剧集: 《最后生还者 第一季》

\n

\"image\"

\n

非常还原游戏,又胜于游戏,主角也非常契合角色,完美的一季,HBO 太强了

\n

📚 图书

\n

\"album_temp_WeRead_2023_Year_In_Review_11704021416\"

\n

今年看过的 22 本书:

\n\n

去年是 9 本,没想到今年不知不觉看了这么多,大部分是旅游和 Boox Leaf 3 的功劳

\n

DIY 年度图书:《人类灭绝》

\n

\"image\"

\n

差点被奇怪的标题和封面错过,是我看过最悬疑、血腥、脑洞的一本书,作者从三条看似不相关的线分别展开,最后再完美融合,揭露一个最大的阴谋

\n

如果有一天智人不再是地球最聪明的物种,智人一定会毫不犹豫暴露出残忍丛林天性,不一定是因为书里假设的超人类新物种的出现,AI 的技术爆炸也许会让这一天马上到来

\n

非常期待有一天被拍成电视剧

\n

排名第二的是 《上帝掷骰子吗》

\n

读到了很多难以置信的物理知识和猜想,比如空间和时间无法无限分割下去,它们不是连续的;所有观测者死掉的世界都没意义,所以观测者只会一直活下来,无法自杀,无法死亡,所有人都会量子永生;世界是不确定的,世界的底色不是因果律而是概率,上帝是掷骰子的。简直比科幻还要魔幻

\n

排名第三的是《巨人的陨落》

\n

世纪三部曲中的第一部,是那种开头比较难读下去但是一旦投入进去就无法自拔的书,学到了很多欧洲历史看到了时代变迁

\n

🕹️ 好物

\n

DIY 年度好物: Boox Leaf 3

\n

\"image\"

\n

第一次用电纸书,续航足够长,刷新速度也很快,内置墨水屏版微信读书,让我多看了很多书,缺点就是长时间拿着有点硌小拇指,还好买了 Randy 推荐的手机气囊支架解决了

\n

其他还有一些值得推荐的小东西

\n

Followcat 猫咪项圈

\n

\"image\"

\n

可以配套一个 AirTag 壳装入 AirTag 来定位猫咪,不仅可以预防出门跑丢,在家里不知道藏在哪里的时候也更好找了

\n

博士眼镜

\n

\"IMG_5716\"

\n

线下配眼镜要几千块,一直让我觉得眼镜是个很珍贵的物品,平时需要小心翼翼地保护,但发现差不多的蔡司镜片加镜框线上只要 200 多,差价很夸张,实际使用也感觉不出什么区别

\n

索尼 ZV1 M2 Twitter

\n

\"image\"

\n

从第一代 ZV1 换到了第二代,虽然画质没什么升级,但解决了很多痛点,使用体验好了非常多,包括人类可以使用的新版菜单、更适合 vlog 的 18mm 焦距、内置指向性麦克风、视频拍照切换实体按键、USB-C 等

\n

👩🏻‍💻 应用

\n

DIY 年度应用:Arc

\n

\"image\"

\n

竖向标签栏、工作区用了就回不去,而且并不是简单地把标签栏竖过来,很多交互细节还是挺用心的

\n

另外分享一些自己在使用的喜欢的应用

\n\n

🎮 游戏

\n

DIY 年度游戏:《塞尔达传说:王国之泪》

\n

\"image\"

\n

今年玩的唯一的游戏

\n

🧸 生活

\n

🏡 饮食居住

\n\n\n

11 月从贫瘠的苏格兰来到了生活便利的新加坡,生活质量还是高了一大大大截

\n\n

🛫 旅游

\n

发小去年 12 月滑雪扭伤了腿,所以前几个月哪都没去

\n
    \n
  1. 5 月跟 Harry 去 Lochgelly 上山徒步 Twitter
  2. \n
\n

我和 Harry 背着三大桶水累得在地上爬,发小健步如飞

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n
    \n
  1. 跟粗粗去了土耳其 Twitter Twitter Twitter Twitter Twitter Twitter Twitter
  2. \n
\n

景区里好玩的很多,山路自驾、游泳、跳海、跳伞、骑马、热气球、晒太阳,大海和热气球风景也超好看,就是价格很感人,景点物价很高,会宰游客,离开景点区域又很贫瘠

\n

带着游泳圈在水里泡了几天,差一点学会了游泳

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n
    \n
  1. 8 月去了伦敦、剑桥、利兹、约克 Twitter Twitter Twitter Twitter Twitter Twitter
  2. \n
\n

带发小妈妈在英国到处玩

\n

看悲惨世界话剧 Do You Hear the People Sing Twitter

\n

\"image\"

\n

唐顿庄园里面 Cosplay Twitter

\n

\"image\"

\n
    \n
  1. 被 Harry 带着逛了爱丁堡神奇的化石店和外科手术博物馆
  2. \n
\n

外科手术博物馆展示了泡在福尔马林中成堆的尸体和各个部位肢体,发小看得津津有味

\n
\n

跟 Harry 在爱丁堡海边放火烤棉花糖 Twitter Twitter

\n

烤棉花糖是外面脆脆的里面软绵绵的很奇妙,Harry 做的酥肉也超级好吃

\n

\"image\"

\n
    \n
  1. 9 月去了法国、德国、奥地利、匈牙利、捷克
  2. \n
\n

该玩的都玩了但时间很赶,走马观花

\n
\n
\n
    \n
  1. 10 月去了成都、重庆、郑州、乌鲁木齐、上海
  2. \n
\n

在成都见了Tyzual 和 七夏浅笑,去看了大熊猫,在重庆大吃特吃,在乌鲁木齐吃羊肉配皮芽子

\n

成都大熊猫基地

\n

\"image\"

\n

乌鲁木齐的大草原

\n

\"image\"

\n
    \n
  1. 11 月去了香港
  2. \n
\n

香港金融科技周见到了很多同事,涨了很多见识,也是成立了两年多的公司的联合创始人们第一次团聚

\n

\"IMG_3450_副本\"

\n

🤼‍♀️ 社交

\n

今年不但去了很多地方还见了很多朋友

\n

Harry、粗不粗、Tyzual、七夏浅笑、花生、ch、Tony、Bruce、Anni、Atlas、birdring、Dmoo、Jeff、Joshua、Kate、Maggie、Usagi、Yingzi、birdring、yingzi,大部分是同事,都是远程工作见一面着实不容易

\n

🐱 家庭

\n

回老家结婚了,过程很累,但看到发小穿上婚纱打扮一番一切都值了 Twitter

\n

\"4803c6bf4efd14f8a6085d8586cc3aff\"

\n

\"image\"

\n

一回国就跟酸奶团聚了,还一起来了新加坡 Twitter

\n

被问的最多的是 “分开了两年多,酸奶还认识你么”,虽然我永远无法知道答案,但从黏人程度来看,我倾向于是认识的

\n

\"image\"

\n

🏊 技能

\n

游泳

\n

从小学过几次,大学还上过游泳课,但都没有学会

\n

如上所述,今年在土耳其旅游时候套个游泳圈泡了几天大海,克服了对游泳的恐惧,大概学会了自由泳的姿势但是不会换气

\n

到新加坡之后又在小区的游泳池泡了几周后完全学会了,现在每天都会跟发小去游泳,运动强度足够大又有水冷,已经是我最喜欢的运动了,感觉之前错过了很多乐趣

\n

\"IMG_5549

\n

播客

\n\n

为了宣传 xLog,接受了 Web Worker 的邀请录了人生第一次播客,主播辛宝、刘威、小白菜都很专业,过程意外地非常顺利,也没有任何冷场

\n

但是作为一个资深社恐,虽然第一次很顺利,应该也很难鼓起勇气进行下一次了

\n

打麻将和打掼蛋

\n

跟着发小各去了一次打麻将和打掼蛋,学会了这两种游戏,但是要说话所以都没有第二次了

\n

🌌 印象深刻的日常

\n

过生日发小精心设计的 DIY 诱捕器

\n\n

过生日 st 送的黑哥哥祝福

\n\n

在发小学校穿苏格兰裙拍婚纱照

\n\n

在格拉斯哥参加了发小的毕业典礼

\n\n

在新加坡过圣诞节

\n\n

在新加坡跨年看烟花表演,好像还是第一次看这么盛大的烟花表演,之前看过最大的是迪士尼

\n\n

还有陪发小第一次去看演唱会,第一次去抓娃娃

\n

🪄 生活管理

\n

跟去年差不多,主要还是在使用这一套基于 Obsidian 的生活记录系统,现在日记是这样的结构

\n

当天发生的事情、正在进行中的事项、日程表、富兰克林美德表

\n

\"image\"

\n

再补充上用 TickTick 的 Habit 来记录每天每周各个 OKR 目标完成得怎么样,用 Toggl Track 记录做各个事情的时间,比之前的在 Obsidian 里 all in one 方便很多

\n

\"image\"

\n

🌿 输出

\n

👩🏻‍💻 代码

\n

Contributions 快赶上 2019 年巅峰时期了

\n

\"contributions\"

\n

又是没有新项目的一年,今年中前期还是以 xLog 为主,后期也做了一些 RSSHub 和 RSSHub Radar 的工作,和为公司 2024 年的一些转变做准备

\n

xLog 开发得热火朝天(相关 Twitter 列表),成功举办了 10000 刀的创作者激励活动,吸引了大批优秀的创作者,最多时候还每周有十几个社区开发者来贡献代码一起完善 xLog,完成了数不清的 Feature。现在有 3k 多创作者在上面发布了 26k 多高质量内容

\n

RSSHub 重构了文档,让它更容易被维护,改造成了以英文为优先语言;用更现代化的架构 Plasmo 完全重写了 RSSHub Radar,变得更好看更稳定更容易维护,还能自动发布到各大应用商店。现在 RSSHub 官方实例每月承载三亿多次请求,docker 有一千五百多万次下载,RSSHub Radar 有差不多 9 万周活用户

\n

📙 文字

\n

这一年文字也非常高产

\n

认真写了 9 篇博客

\n\n

水了 243 条 Twitter

\n

列表

\n

🎥 影音

\n

今年在 B 站发布了两个 Vlog,旅游积攒了好多素材,至少还有 6 个视频还没剪,很惭愧

\n

《女友浴室沉思录,非正常录音》

\n
\n \n
\n

《英国旅游 VLOG | 爱丁堡圣诞节》

\n
\n \n
\n

录了一个播客《和 xlog.app 的作者 DIYgod 聊区块链和博客平台、前端学习和生活感悟》

\n

https://www.xiaoyuzhoufm.com/episode/645a76f67d934b85051081c8

\n

🎊 2024

\n

⭐️ OKR

\n", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2358", - "creator": "DIYgod", - "pubDate": "Mon, 08 Jan 2024 14:23:18 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "8c12b08bdd74c82479592360659b5e1b", - "highlights": [] - }, - { - "title": "轻松创建一万个 Twitter 账号", - "description": "Twitter 在 8 月决定了全面限制公开访问和 API 接口,导致第三方集成均无法再正常工作。开放用户数据被绑架成私人敛财工具,曾经的 Open Web 标杆 Twitter 竟沦落到这种境地,数字奴隶制在最不应该的地方出现,令人唏嘘", - "content": "
\n

Information freedom does not naturally evolve, it degrades.
\n—— Open Information Manifesto

\n
\n

Twitter 在 8 月决定了全面限制公开访问和 API 接口,导致第三方集成均无法再正常工作。开放用户数据被绑架成私人敛财工具,曾经的 Open Web 标杆 Twitter 竟沦落到这种境地,数字奴隶制在最不应该的地方出现,令人唏嘘。这也致使许多用户流向 Fediverse,但社交关系和习惯一旦形成,要让其迅速改变并不易,更多人还是选择了忍受,Musk 也是看穿了这一点才有恃无恐

\n
\n
\n
\n
\n
\n

然而,我们也不能武断地说 Twitter 封闭,毕竟它仍然开放了一个起步价为每月 4 万美元,上限不设的企业 API

\n

\"\"

\n

什么?你说用不起?

\n

那么你可以像我一样,通过创建一万个账号以绕开封锁

\n

尽管 Twitter 限制了所有公开访问,但我们发现新下载的 Twitter 移动客户端仍可以正常查看用户动态。这为我们提供了潜在的利用方法,通过抓包,我们可以看到客户端是通过请求一系列特殊接口来创建一个权限较低、频率限制严格的临时账号。我们可以用这个账号获取我们需要的大部分数据。然而,这种账号对请求频率的限制非常严格,因此需要大量的这样的账号才能满足基本的使用需求。同时,每个 IP 在一段时间内只能获取一个临时账号,因此我们也需要大量的 IP 代理

\n

具体拆包和抓包过程可以参考 BANKA 的《怎么爬 Twitter(Android)》。站在 BANKA 肩膀上,我们可以写出一个这样的注册脚本(来自 Nitter - Guest Account Branch Deployment):

\n
#!/bin/bash\n\nguest_token=$(curl -s -XPOST https://api.twitter.com/1.1/guest/activate.json -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' | jq -r '.guest_token')\n\nflow_token=$(curl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json?flow_name=welcome' \\\n          -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' \\\n          -H 'Content-Type: application/json' \\\n          -H \"User-Agent: TwitterAndroid/10.10.0\" \\\n          -H \"X-Guest-Token: ${guest_token}\" \\\n          -d '{\"flow_token\":null,\"input_flow_data\":{\"flow_context\":{\"start_location\":{\"location\":\"splash_screen\"}}}}' | jq -r .flow_token)\n\ncurl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json' \\\n          -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F' \\\n          -H 'Content-Type: application/json' \\\n          -H \"User-Agent: TwitterAndroid/10.10.0\" \\\n          -H \"X-Guest-Token: ${guest_token}\" \\\n          -d \"{\\\"flow_token\\\":\\\"${flow_token}\\\",\\\"subtask_inputs\\\":[{\\\"open_link\\\":{\\\"link\\\":\\\"next_link\\\"},\\\"subtask_id\\\":\\\"NextTaskOpenLink\\\"}]}\" | jq -c -r '.subtasks[0]|if(.open_account) then {oauth_token: .open_account.oauth_token, oauth_token_secret: .open_account.oauth_token_secret} else empty end'\n
\n

以及这样的批量注册脚本(来自我自己):

\n
const got = require('got');\nconst { HttpsProxyAgent } = require('https-proxy-agent');\nconst fs = require('fs');\nconst path = require('path');\n\nconst concurrency = 5; // Please do not set it too large to avoid Twitter discovering our little secret\nconst proxyUrl = ''; // Add your proxy here\n\nconst baseURL = 'https://api.twitter.com/1.1/';\nconst headers = {\n    Authorization: 'Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k4%3DRUMF4xAQLsbeBhTSRrCiQpJtxoGWeyHrDb5te2jpGskWDFW82F',\n    'User-Agent': 'TwitterAndroid/10.10.0',\n};\n\nconst accounts = [];\n\nfunction generateOne() {\n    // eslint-disable-next-line no-async-promise-executor\n    return new Promise(async (resolve) => {\n        const timeout = setTimeout(() => {\n            // eslint-disable-next-line no-console\n            console.log(`Failed to generate account, continue... timeout`);\n            resolve();\n        }, 30000);\n\n        const agent = {\n            https: proxyUrl && new HttpsProxyAgent(proxyUrl),\n        };\n\n        try {\n            const response = await got.post(`${baseURL}guest/activate.json`, {\n                headers: {\n                    Authorization: headers.Authorization,\n                },\n                agent,\n                timeout: {\n                    request: 20000,\n                },\n            });\n            const guestToken = JSON.parse(response.body).guest_token;\n\n            const flowResponse = await got.post(`${baseURL}onboarding/task.json?flow_name=welcome`, {\n                json: {\n                    flow_token: null,\n                    input_flow_data: {\n                        flow_context: {\n                            start_location: {\n                                location: 'splash_screen',\n                            },\n                        },\n                    },\n                },\n                headers: {\n                    ...headers,\n                    'X-Guest-Token': guestToken,\n                },\n                agent,\n                timeout: {\n                    request: 20000,\n                },\n            });\n            const flowToken = JSON.parse(flowResponse.body).flow_token;\n\n            const finalResponse = await got.post(`${baseURL}onboarding/task.json`, {\n                json: {\n                    flow_token: flowToken,\n                    subtask_inputs: [\n                        {\n                            open_link: {\n                                link: 'next_link',\n                            },\n                            subtask_id: 'NextTaskOpenLink',\n                        },\n                    ],\n                },\n                headers: {\n                    ...headers,\n                    'X-Guest-Token': guestToken,\n                },\n                agent,\n                timeout: {\n                    request: 20000,\n                },\n            });\n\n            const account = JSON.parse(finalResponse.body).subtasks[0].open_account;\n\n            if (account) {\n                accounts.push({\n                    t: account.oauth_token,\n                    s: account.oauth_token_secret,\n                });\n            } else {\n                // eslint-disable-next-line no-console\n                console.log(`Failed to generate account, continue... no account`);\n            }\n        } catch (error) {\n            // eslint-disable-next-line no-console\n            console.log(`Failed to generate account, continue... ${error}`);\n        }\n\n        clearTimeout(timeout);\n        resolve();\n    });\n}\n\n(async () => {\n    const oldAccounts = fs.readFileSync(path.join(__dirname, 'accounts.txt'));\n    const tokens = oldAccounts.toString().split('\\n')[0].split('=')[1].split(',');\n    const secrets = oldAccounts.toString().split('\\n')[1].split('=')[1].split(',');\n    for (let i = 0; i < tokens.length; i++) {\n        accounts.push({\n            t: tokens[i],\n            s: secrets[i],\n        });\n    }\n\n    for (let i = 0; i < 1000; i++) {\n        // eslint-disable-next-line no-console\n        console.log(`Generating accounts ${i * concurrency}-${(i + 1) * concurrency - 1}, total ${accounts.length}`);\n\n        // eslint-disable-next-line no-await-in-loop\n        await Promise.all(Array.from({ length: concurrency }, () => generateOne()));\n        fs.writeFileSync(path.join(__dirname, 'accounts.txt'), [`TWITTER_OAUTH_TOKEN=${accounts.map((account) => account.t).join(',')}`, `TWITTER_OAUTH_TOKEN_SECRET=${accounts.map((account) => account.s).join(',')}`].join('\\n'));\n    }\n})();\n
\n

这些脚本已放到了 RSSHub 仓库: https://github.com/DIYgod/RSSHub/blob/master/scripts/twitter-token/generate.js

\n

在使用前,你需要填入你购买的 IP 代理服务地址。脚本会自动处理超时、请求等错误,并且以 5 并发来自动获取临时账号,当获取到 1000 个账号后将会停止。需注意并发不要设置得过高,我从观察发现,当 Twitter 发现大量请求时会暂停接口一段时间

\n

我购买了 5 家代理服务以进行测试,感觉效果相差无几,选择一个最便宜的服务就可以。通常,最低价的 1G 套餐就足够获取大约几万到十几万个账号了。我目前找到的最便宜的服务是 proxy-cheap,如果你有更好的选择请告知我

\n

这种方法已经在 Nitter 上稳定运行了一段时间,现在也已实装到了 RSSHub 及其官方示例上,我们可以宣布与邪恶 Twitter 奴隶主的战争已经阶段性胜利

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2292", - "creator": "DIYgod", - "pubDate": "Fri, 15 Dec 2023 10:14:46 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "f499ac7e808b9c230204aa2a170df769", - "highlights": [] - }, - { - "title": "优雅使用 Cloudflare WARP 应对 RSSHub 反爬难题", - "description": "🕊️ 本文送给更开放的互联网 起因是看到 @geekbb 介绍 Warp 的推文。尽管 Warp 已经发布了很长时间,就保护 IP 隐私而言,它并没有 iCloud Private Relay 好用,我也没有魔法上网的需求。但是我突然意识到,我还是有隐藏 IP 的需求。\n\n在开…", - "content": "

🕊️ 本文送给更开放的互联网

\n
\n

起因是看到 @geekbb 介绍 Warp 的推文。尽管 Warp 已经发布了很长时间,就保护 IP 隐私而言,它并没有 iCloud Private Relay 好用,我也没有魔法上网的需求。但是我突然意识到,我还是有隐藏 IP 的需求。

\n

在开发 RSSHub 的几年中,我发现提供公共 API 的站点非常少,许多站点还会采取严格的反爬控制来限制其平台内容的获取。有些站点会屏蔽同一 IP 发出过多请求,而还有一些站点则会全面屏蔽常见云服务器厂商的 IP 地址。因此,仅仅为了获取最新几条内容更新却变得非常困难。

\n

\"lord-of-the-rings-my-precious\"

\n

这种情况需要使用代理,但是专门的爬虫代理通常价格昂贵,性价比极低,如果 Cloudflare WARP 的无限流量和丰富的 IP 资源能被 RSSHub 利用就太棒了。RSSHub 已经支持了通用的代理协议,只要能将 WARP 包装为通用的 proxy 就可以。

\n

\"image\"

\n

虽然无法直接在命令行环境中方便地使用官方客户端,但这么容易想到的点子肯定已经被别人实现过了。我在 GitHub 上找到了一个封装的 Docker。

\n\n

然后只需要在 RSSHub 的 docker-compose.yml 中再添加这样一个 service 来启用代理服务

\n
warp-socks:\n    image: monius/docker-warp-socks:latest\n    privileged: true\n    volumes:\n        - /lib/modules:/lib/modules\n    cap_add:\n        - NET_ADMIN\n        - SYS_ADMIN\n    sysctls:\n        net.ipv6.conf.all.disable_ipv6: 0\n        net.ipv4.conf.all.src_valid_mark: 1\n    healthcheck:\n        test: [\"CMD\", \"curl\", \"-f\", \"https://www.cloudflare.com/cdn-cgi/trace\"]\n        interval: 30s\n        timeout: 10s\n        retries: 5\n
\n

最后给 RSSHub 加一个 PROXY_URI 环境变量来使用代理

\n
PROXY_URI: 'socks5h://warp-socks:9091'\n
\n

我选取了一个我经常使用的 hotukdeals 路由(英国版的什么值得买)进行测试。该站点会屏蔽所有 DigitalOcean 的 IP,因此一直处于 403 状态。

\n

\"image\"

\n

加上 WARP 后可顺利访问

\n

\"image\"

\n

此外,我发现每次重启 WARP 时,都会输出新的 IP。尽管我没有时间验证,但我感觉 IP 应该会经常自动更改,这对解决反爬是一个好消息。

\n

\"image\"

\n

还可以进一步自定义 WireGuard 的配置,包括使用付费版 WARP+ 和自定义 endpoint,以获取可能更好的结果。

\n

生成 WireGuard 配置文件可以使用

\n\n

刷 WARP+ 流量和筛选 endpoint 可以使用

\n\n

有说法是 WARP+ 的速度并无明显差异(《WARP、WARP + 速度对比,以及 WARP 速度上限》),但是是否影响反爬效果还需要进一步验证。

\n

如果一切顺利,RSSHub 官方实例中许多严格反爬的路由应该能重新使用。我将在几天内进行验证并在此更新。

\n

\"image\"

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=2022", - "creator": "DIYgod", - "pubDate": "Thu, 17 Aug 2023 22:01:51 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "fc44649c91fc493922dfebfccacac5f0", - "highlights": [] - }, - { - "title": "在博客融入一个跨平台作品集", - "description": "长久以来# 我一直将个人博客视为一个理想的展示个人 IP 的 “个人网站”,而不仅仅是发布文章的平台。我曾在 2014 年初学编程时使用 WordPress 建站 《世界,你好!》;入了前端坑后,在 2017 年我转向了 Hexo 《做了一点微小的改动》;Web3 飞升后…", - "content": "

长久以来

\n

我一直将个人博客视为一个理想的展示个人 IP 的 “个人网站”,而不仅仅是发布文章的平台。我曾在 2014 年初学编程时使用 WordPress 建站 《世界,你好!》;入了前端坑后,在 2017 年我转向了 Hexo 《做了一点微小的改动》;Web3 飞升后 2022 年我换成了 xLog 《第一个开源链上博客系统 xLog》。然而,无论我使用什么博客系统,一直都存在一个问题,那就是如何优雅地汇集和展示我在其他平台发布的作品,最好还能直接显示外站的数据。我之前通常以文章形式发布作品,并在文章中附上链接,然而这样做显然不够优雅,读者还需要额外点击链接进行跳转。

\n

灵感降临

\n

我在学习达芬奇剪辑时,发现了影视飓风的网站,它通过外链方式列出了他们在 B 站发布的视频,其中包括标题、封面图、发布时间、播放量等信息。这个发现给了我启发,我完全可以在 xLog 上制作一个装载了我在各个平台作品的作品集,这里面可以有我发布在 B 站的视频、我在 GitHub 上维护的仓库、我参与的小宇宙播客甚至是我在 pixiv 上创作的画作。这样,当人们访问我的博客时,将不只是看到文章,而是会看到更丰富多元的我,这让我的博客更接近一个真正意义上的 “个人网站”。

\n

下手

\n

想法萌发后,实现就简单了。

\n
    \n
  1. 对 xLog 后台进行了优化和清晰的分类:文章、页面、作品集,以消除类型增多后可能带来的用户困扰。
  2. \n
\n

\"image\"

\n
    \n
  1. 设计了一个全新的编辑页,不同于文章和页面,这里只保留封面、标题、摘要、发布时间,并新增外部链接字段。
  2. \n
\n

\"image\"

\n
    \n
  1. 实现了作品信息的自动填充功能,减轻了手动输入的负担。这是通过获取链接的 Open Graph 信息实现的,涉及到的字段包括 og:image og:title og:description og:date
  2. \n
\n

\"image\"

\n
    \n
  1. 把作品展示在首页和独立的作品集页
  2. \n
\n

\"image\"

\n
    \n
  1. 数据的获取和展示,对于 “偷数据” 经验丰富的 RSSHub 作者来说,这是得心应手的一环,首先针对 bilibili、小宇宙、GitHub、pixiv、Twitter 这几个平台进行了抓取,获取到播放量和评论数并在 xLog 的卡片上进行展示,同时考虑到源站可能的压力和反爬,我特别设置了足够长的数据缓存。
  2. \n
\n

\"image\"

\n

如今,这个简单实用的小功能已经落地实现了,可以看看我的作品集页,你是否也想要尝试在 xLog 建立属于自己的个人作品集呢?

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=1957", - "creator": "DIYgod", - "pubDate": "Mon, 07 Aug 2023 22:34:18 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "7119dcf9ff49b33c4dae1323810890a9", - "highlights": [] - }, - { - "title": "对 Newsletter 说不", - "description": "衰退无处不在,这是很正常的现象。人们自然而然地更倾向于短平快的消费方式。然而,我一直无法忍受的一种奇怪趋势是,在一些地方,人们将 RSS 抛弃,转而使用 Newsletter。 本质上,电子邮件是一种私密的双向通信机制,而 RSS 是一种开放的单向通信机制…", - "content": "

\"Image\"

\n

衰退无处不在,这是很正常的现象。人们自然而然地更倾向于短平快的消费方式。然而,我一直无法忍受的一种奇怪趋势是,在一些地方,人们将 RSS 抛弃,转而使用 Newsletter。

\n

本质上,电子邮件是一种私密的双向通信机制,而 RSS 是一种开放的单向通信机制。使用电子邮件进行私密的更新和文章推送是没有意义的,RSS 是更自然的选择。强行将这些功能应用于电子邮件可能会导致许多问题。这些问题让我觉得 Newsletter 就像一个没有能力但却拼命想证明自己的暴君,无法很好达到发布者期望的效果,又过分侵犯了用户的选择和效率。

\n

五宗罪

\n

封闭限制

\n

RSS 是一种开放协议,它允许用户自主订阅和拉取感兴趣的网站的 RSS 源,获取最新的更新和文章,无需他人的许可。用户还可以通过阅读器的个性化设置自由选择所需内容,并且可以使用多种渠道接收通知,甚至可以使用 Telegram Bot 进行订阅。

\n

\"image\"

\n

而 Newsletter 是由发布者推送到用户私人邮箱的订阅信息,整个过程依赖于平台方,渠道全程封闭。这种封闭极大地限制了用户的选择权,用户被迫在平台的许可下,通过特定渠道和特定格式接收固定信息。

\n

繁琐低效

\n

相比之下,RSS 更加简洁高效。订阅源可以集中管理,分类、收藏、订阅和取消订阅的过程也非常简单。

\n

\"image\"

\n

而 Newsletter 则会将各种各样的邮件混合在一起,非常分散且难以管理。你很难知道自己到底订阅了哪些内容,它们什么时候会突然出现。而且,内容格式也是各种各样的,查看和阅读起来非常混乱,所以你也不能将一篇文章进行收藏,更不用说方便的第三方集成了。

\n

信息过载

\n

Newsletter 很难对内容进行有效分类和过滤,又与所有正常邮件混合在一起,需要花费精力手动整理。这很容易导致信息过载和垃圾邮件的问题。

\n

而 RSS 可以很方便地进行分类和过滤,对于不重要的内容,你也可以一键全部标记为已读瞬间解脱,完全没有压力。

\n

\"image\"

\n

\"image\"

\n

更新周期长

\n

对于 RSS 的更新虽然不算实时,但一般以小时计,类似 RSSHub 等自建服务,甚至可以做到每分钟更新。相比之下,Newsletter 的更新周期,以天甚至周月计,明显滞后了许多。

\n

隐私和安全风险

\n

RSS 的开放性体现在它不需要用户提供个人信息,从而确保了更好的隐私性和安全性。然而,Newsletter 至少需要提供一个邮箱地址,这增加了数据泄露或滥用的风险。更有甚者,电子邮件可能包含恶意链接或附件。

\n

也有一些优点

\n

尽管我对 Newsletter 的低效和局限性持批评态度,但我也承认它有其优点,它的流行也有一些合理性,特别是在卖方市场的情况下对于一些发布者来说。Newsletter 可以让他们获得更多的控制权和点击率,可以更容易知道有谁订阅了他们的内容,并通过邮件通知更强烈地唤起用户的注意。

\n

然而,站在用户的角度,我必须明确表示,我更偏爱 RSS。我不愿意以放弃自己的选择权和效率来迎合发布者的控制欲。在我看来,获取信息的权力应该掌握在我自己手中,而非其他人或机构。所以,我在这里对 Newsletter 说不。

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=1825", - "creator": "DIYgod", - "pubDate": "Wed, 12 Jul 2023 18:31:13 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "f29290fd47c8bdbe73c94f3dd77a5f80", - "highlights": [] - }, - { - "title": "4 月新番太好看了!吹爆!", - "description": "今年从 1 月就一直没什么好看的作品,到了 4 月突然爆发,让我非常激动。现在播出过半了,是时候好好说说感受了 以下当然不能囊括 4 月所有的好作品,因为实在太多了,只是说一说符合我口味的几部,按我个人的喜爱程度来排序\n\n以下会包含大量剧透,还没看的小伙伴请酌情观看\n\n鬼灭之刃刀匠…", - "content": "\n

今年从 1 月就一直没什么好看的作品,到了 4 月突然爆发,让我非常激动。现在播出过半了,是时候好好说说感受了

\n

以下当然不能囊括 4 月所有的好作品,因为实在太多了,只是说一说符合我口味的几部,按我个人的喜爱程度来排序

\n

以下会包含大量剧透,还没看的小伙伴请酌情观看

\n

鬼灭之刃刀匠村篇

\n

刀匠村是为鬼杀队锻造日轮刀的刀匠们居住的地方,位置及其隐蔽且高度保密,这部讲的是刀匠村被上弦之肆・半天狗和上弦之伍・玉壶找到并发动偷袭,正在刀匠村的炭治郎、恋柱・甘露寺蜜璃、霞柱・时透无一郎、不死川玄弥努力保护刀匠们,对抗上弦的故事

\n

上弦之肆・半天狗这个角色非常有趣,本体又小又丑,非常弱小无助又胆小,总感觉像是来送人头的

\n

\"image\" \"[BeanSub&FZSD&LoliHouse] \"image\"

\n

但实际上非常扮猪吃老虎,控制的几个鬼(还不知道他们是什么关系)喜、怒、哀、乐、憎,都非常强,压迫感很足,本体防御力也无敌,被大家排着队砍也砍不死

\n

\"image\" \"image\"

\n

弥豆子的表现也很亮眼,鬼化弥豆子超帅

\n\n

\"image\"

\n

\"image\"

\n

还有可爱的蜜璃

\n\n

虽然整体节奏还是略显拖沓,但经过游郭篇的洗礼,我本身预期也很低,目前已经远远超出了我的预期,文戏比之前明显少了好多,打斗也更加燃爆,看得非常上头

\n

\"image\"

\n

\"image\"

\n

再加上我有粉丝加成,荣登我的周指活排名第一名

\n

谢谢飞碟社款待

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情7
画面10
个人加成10
\n

为美好的世界献上爆焰!

\n

脑子有问题的红魔族第一天才中二病魔法师慧慧的故事,喜欢的东西是爆裂魔法,特技是爆裂魔法,兴趣是爆裂魔法,唯一的真爱也是爆裂魔法

\n\n

慧慧小时候被一位使用爆裂魔法的巨乳魔法师所救而爱上了爆裂魔法

\n

\"[Lilith-Raws]

\n

虽然爆裂魔法极不实用且难以操纵,是出了名的搞笑魔法,“只有学得上级魔法才能独当一面。爆裂魔法之流不过是搞笑魔法罢了”,但慧慧还是不顾嘲笑,为了爱好而独自努力

\n

\"[Lilith-Raws] \"[Lilith-Raws]

\n

最后使用所有技能点数学到了爆裂魔法

\n
\n

比黑色还要黑 暗之漆黑
\n融合著我之真红吧
\n觉醒的时刻已经到来
\n坠入无谬之境界
\n形成无形之扭曲
\n出现吧!
\nExplosion!

\n
\n

\"[Lilith-Raws]

\n\n

之后的外出冒险也很有趣

\n

\"[Lilith-Raws]

\n

\"[Lilith-Raws]

\n

之前看《为美好的世界献上祝福!》就被慧慧的中二吸引了,结果在红魔乡发现慧慧的中二只是一个普通水平,印象最深的是魔法学校最重要的一节课是战斗前要摆什么样的中二姿势

\n

\"[Lilith-Raws] \"[Lilith-Raws] \"[Lilith-Raws]

\n

缺点也是有的,作画穷了点,有不少崩坏的地方,有些画面还是挺出戏的,特别是扎堆在作画全都不要钱一样的 4 月新番中显得更惨了(但还算说得过去)(后面还有个说不过去的)

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情8
画面6
个人加成10
\n

天国大魔境

\n

刚说的精美作画就来了,从第一集就被震撼到了,不要钱一样的作画,末日废土乌托邦剧情,流畅的打戏完美的运镜,轻松愉快加简单的涩涩又不失紧张刺激的氛围把控,就像完美的考试标准答案一样,刚开始还担心开头质量过于高了后面会不会质量下降,但是完全没有!

\n\n

剧情还没有完全揭秘,现在知道的是成为废墟的日本栖息着一种食人的怪物蛭子,人们艰难地生存着,还有一个号称 “天国” 的乌托邦,被安全的围墙覆盖,里面科技发达,被圈养的孩子们生活富足

\n

墙外很危险

\n

\"image\"

\n

墙内看似天国但剧情暗示了更大的危险

\n

\"[SweetSub&LoliHouse] \"image\"

\n

生活在墙外的主角真流和斩子被托付前往天国寻找和真流长相一样的人,期间遇到了各种各样的人

\n

不愿相信儿子已经变成没有人性的怪物蛭子的母亲,诱骗路人喂给儿子吃,最后被儿子变成的蛭子杀死

\n

\"image\" \"[SweetSub&LoliHouse]

\n

梦想跟看上的客人爱爱来赚大钱的酒店小老板,也会跟骗子强盗合作诱拐冒险者

\n

\"image\" \"image\"

\n

做人体实验的冷血医生,又只是一个为了让妻子可以作为人类有尊严死去的痴情男,成功让妻子死去后抱着妻子的尸体自杀

\n

\"image\" \"image\" \"image\"

\n

而义正严词反对人体实验的伦理组织首领只是为了给医生下圈套抢夺资源

\n

\"image\" \"[SweetSub&LoliHouse]

\n

每个人都能被不长的篇幅刻画地如此鲜活,在这样的废土世界,努力艰难不择手段地活着,即使罪大恶极也能让我深深理解,感到同情和惋惜

\n

让我对制作组献上最大的敬意,如果排除个人因素,这部作品将是遥遥领先的 4 月霸权

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情10
画面10
个人加成5
\n

地狱乐

\n

在德川幕府时期,有一个鲜花遍地,蝴蝶翩飞的名为 “神仙岛” 的地方,前往该岛的调查队只有极少数的残肢和鲜花能够随着小船漂流回来

\n

最强死刑犯忍者画眉丸与处刑人山田浅右卫门佐切一同被派往此岛,寻找不老不死的仙药以换取无罪释放,并在岛上与怪物以及其他死刑犯互相残杀

\n\n

里面的怪物是这样的画风

\n

灶神

\n

\"image\" \"image\" \"[BeanSub&FZSD&LoliHouse]

\n

天仙

\n

\"[BeanSub&FZSD&LoliHouse]

\n

被天仙抓到会被炼成丹

\n

\"[BeanSub&FZSD&LoliHouse] \"[BeanSub&FZSD&LoliHouse]

\n

非常诡异荒诞

\n

每个死囚也都有自己的故事,并不是黑白分明,经历都很有趣

\n

\"image\" \"image\"

\n

还出现了一个怪力萝莉

\n

\"image\"

\n

仙药和小岛的真相依然扑朔迷离,后面肯定还会有更诡异更强大的怪物,很期待

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情8
画面8
个人加成0
\n

【我推的孩子】

\n

妇科男医生和早逝女病人遇难转生为自己单推偶像星野爱的双胞胎孩子阿库亚和露比,三年后星野爱被害身亡,阿库亚立志寻找母亲遇害的真相和真凶,露比梦想着成为母亲那样的偶像,兄妹应对演艺圈的各种纷争和阴谋

\n

一个多小时的首集太惊喜了,像看了一部电影,我觉得可以算得上 4 月最佳单集了

\n\n

但可能是开头调起太高了,期待也拉得很高,后面几集略显平淡了一点,估计是高低高的节奏,现在是憋大招中,最后会有一个超感人哭爆的结局,准备好纸巾了

\n

虽然如此,但如果中间也能再多给星野爱一些画面就更好了

\n

\"\"

\n

另外它的 OP 也超好听,我单曲循环了好几天

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情7
画面7
个人加成0
\n

我家的英雄

\n
\n

疼爱独生女零花的微不足道上班族・鸟栖哲雄,某天因为工作关系和开始一个人生活的零花相约见面,却发现她脸上有被殴打的痕迹。在回家的路上,哲雄看见了像是犯人的男人,并尾随在其後。隔天偷偷回到女儿的公寓,结果却发生了使整个家庭的命运为之一变的事件。父亲为了女儿、为了家庭,走上了修罗之道。高潮迭起的悬疑故事开幕。

\n
\n

\"image\"

\n

剧情很精彩,但制作非常非常贫穷,挺可惜的,就是刚才说的说不过去的那个

\n

好在剧情底子非常强,再垃圾的制作也能感受到挺强的紧张感,也能捏着鼻子津津有味地看下去

\n

就不截图了,画面实在看不下去

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情8
画面1
个人加成0
\n

偶像大师 灰姑娘女孩 U149

\n
\n

讲述一群小学生偶像在早期没有制作人、没有工作的情况下,仍然一步步向着梦想前进的故事。

\n
\n

其实也没什么剧情,就是过家家... 但是很可爱,非常刑

\n

\"image\" \"image\" \"image\" \"image\" \"image\"

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情1
画面9
个人加成0
\n

跃动青春

\n
\n

岩仓美津未从乡下的小初中,以第一名的成绩考入了东京的高升学率高中。
\n这位乡村神童心怀完美的人生蓝图、独自来到东京。她成绩优异,却与他人有着独特的距离感,稍显格格不入。
\n她虽然偶尔会失败,但还是凭借天真的性格一点点打动班上的同学,使他们那各不相同的性格逐渐交叠。
\n相遇、相知、最终心意相通。
\n人人都会有心烦和焦躁之时。而无可替代的朋友,定将带来互相理解的契机。
\n这是个偶有杂音却能让人不知不觉快乐起来的校园生活喜剧!

\n
\n

\"image\"

\n

不管是画面还是剧情看着都很舒服,作品本身是非常棒的,喜欢,但这种平淡剧情不是我喜欢的类型,只能简单吹爆

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
类别评分 / 10
剧情8
画面8
个人加成-5
\n

其他

\n

另外还有《机动战士高达 水星的魔女》《我心里危险的东西》《放学后失眠的你》也是我正在追的,但我平时能看番的空闲时间没那么多,这几部进度还没跟上,等我全看完可能会写一篇 4 月新番的总结,有机会到时候再一起说

\n

最后祝大家追番愉快!玩王国之泪之余也不要忘记追番哦!

", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=1614", - "creator": "DIYgod", - "pubDate": "Wed, 24 May 2023 23:32:29 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "fa64a84f82e1ea2fe22aac252c93c420", - "highlights": [] - }, - { - "title": "我得了软件更新强迫症", - "description": "我必须让身边所有软件都保持最新版本,就像走路不能踩到地砖缝缝一样,没有意义,但也危害不大,所以我放任它发展", - "content": "

我必须让身边所有软件都保持最新版本,就像走路不能踩到地砖缝缝一样,没有意义,但也危害不大,所以我放任它发展

\n
\n

\"image\"

\n
\n

操作系统和固件

\n

最基础的,大到主力生产力 MacBook,小到吃灰的 Dockcase 扩展坞,都要更新,这是我的 Checklist,基本上靠更新提醒就够了

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
设备截图
MacBook\"image\"
NAS\"image\"
路由器\"image\"
iPad\"IMG_0531\"
iPhone\"IMG_6D8DCEB3D457-1\"
小米手环\"IMG_3744\"
小米家居\"IMG_3745\"
相机\"Pasted
PS5\"image\"
Switch\"image\"
Dockcase 扩展坞\"Pasted
\n
\n

应用

\n

操作系统下的应用也需要更新

\n

MacBook

\n

Homebrew Cask 出现之前 macOS 的应用更新一直是一个难题,App Store 的自动更新最好用但是应用很少,曾经困扰了我很久,但现在没问题了

\n

对 macOS 的应用我秉持这样的原则:

\n\n

其中 Web 版不需要更新,App Store 会自动更新,Homebrew 只需要每天执行下命令

\n
brew update && brew upgrade && brew cu -a -y && brew cleanup\n
\n

但 App Store 有时候会好几天才能自动更新上,这不能忍,安装上 mas 用命令行触发强制更新,再加上鼠须管的词库更新和 alias,下面就是我的总命令了

\n
alias up=\"brew update && brew upgrade && brew cu -a -y && brew cleanup && mas upgrade && ~/plum/rime-install iDvel/rime-ice:others/recipes/full\"\n
\n

\"image\" \"image\"

\n

NAS

\n

有两部分,群晖的套件会自动更新,Docker 部分用 Watchtower 自动更新

\n

\"image\"

\n

其他

\n

iPad 和 iPhone 应用虽然也会自动更新,但也是经常好几天才更新,所以每天早上起床第一件事就是手动刷一下这两个的更新,其他不那么常用的设备就等提醒或自动更新,这个还是能忍的,毕竟我的强迫症还没那么严重

\n

插件

\n

应用内的插件也需要更新

\n

浏览器

\n

通常会自动更新,但也有遇到卡住几天都没更新的情况,还不是很懂,偶尔会去手动点下 Update,这些是我目前用到的浏览器插件

\n

\"image\"

\n

Obsidian

\n

Obsidian 的 community plugins 和 themes 都需要更新,官方没有自动更新的方法,可以通过再装一个插件 Beta Reviewers Auto-update Tester 来实现自动更新,这些是我目前用到的 Obsidian 插件

\n

\"image\"

\n

VS Code

\n

VS Code 有很好的自动更新,这些是我目前用到的 VS Code 插件

\n

\"image\" \"image\"

\n

Home Assistant

\n

Home Assistant 就没那么顺利了,我装了一个 Home Assistant Community Store (HACS) 来获取更多的集成,但它没有自动更新,也没有更新提醒,要点进去才能看到

\n

\"image\"

\n

项目依赖

\n

项目的依赖也需要更新,我用 Dependabot 来自动提交依赖更新的 pr,对于有完善自动化测试的项目,比如 RSSHub,就可以再用 Github Action Merge Dependabot 自动合并,一秒都不用多等

\n
  automerge:\n    if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'\n    needs: [ jest, puppeteer, docs, all ]\n    runs-on: ubuntu-latest\n    permissions:\n      pull-requests: write\n      contents: write\n    steps:\n      - uses: fastify/github-action-merge-dependabot@v3\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          target: patch\n
\n

Changelog

\n

默默更新有时候还是不够的,对一些重要或者感兴趣的软件我会用 RSS 订阅它们的 Changelog,及时了解它们都更新了什么

\n

\"image\"

\n

目前想到的只有这些了,习惯了的话检查一遍很快的,就能换来一整天的舒适

\n

不要学我,即使学了也不要说是我教的

\n", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=914", - "creator": "DIYgod", - "pubDate": "Sat, 08 Apr 2023 23:00:00 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "378e4344413f4088a3ba628facfcc64b", - "highlights": [] - }, - { - "title": "令我痛心的三部反乌托邦动漫", - "description": "四月对我而言是一个充满悲伤的月份。尽管《四月是你的谎言》已经过去了很多年,但每当看到「四月」这两个字,仍会立刻触发我的 PTSD,再加上今天我刚读完一本反乌托邦题材的小说《来自新世界》。多种思绪糅杂在一起,让我不禁回想起了那些令我痛心的「重量级」反乌托邦动漫", - "content": "
\n

\"image\"

\n
\n
\n

请欣赏 「DIY 的夺命歌单」

\n
\n\n

四月对我而言是一个充满悲伤的月份。尽管《四月是你的谎言》已经过去了很多年,但每当看到「四月」这两个字,仍会立刻触发我的 PTSD,再加上今天我刚读完一本反乌托邦题材的小说《来自新世界》。多种思绪糅杂在一起,让我不禁回想起了那些令我痛心的「重量级」反乌托邦动漫。

\n

DARLING in the FRANXX

\n
\n

“如果把动画比作足球的话,这部动画大概就是日本国家队了,就是普通不看足球的人也会期待日本队的表现,也会去谈论足球,所以希望自己的动画也能被这样对待。不单单锦织敦史的粉丝、TRIGGER 的粉丝、A-1 的粉丝这些平时看动画的观众,希望平时不看动画的观众也能享受这部作品。” — 鸟羽洋典

\n
\n

制片人的这番话一点也不夸张。这部动漫的制作阵容极为豪华,集结了业界的大佬和顶级声优,因此在尚未播出之前就被所有人寄予厚望,以至于还没播出就已被推上神坛。

\n

然而,神作的道路并非顺利。从爱奇艺和 B 站的霸权争夺,到驾驶姿势引发的女权争议,最后在 B 站 UP 主 Lexburner 的口嗨和群众的恶意举报中达到高潮,赵弹来袭。

\n
\n

\"image\"

\n
\n

这些历史背景现在看来其实都不值一提,只是说明当时的热度和争议之高。毕竟最后还是用作品说话,而这部作品简直太符合我的口味了,反乌托邦的背景、活泼可爱打破常规的 02、恰到好处的涩涩、科幻、鬼、悬疑...

\n
\n

\"1B89028C35E9F0136C0A628BA6DD978B\"

\n
\n

当时的我茶不思饭不想,在一声声 Darling Darling 中逐渐迷失了自我,每周就指着 Darling 活了,我把博客主题改成了 Darling 的配色和配图,头像和名字也换成了 Darling,买了手办、画册一切能买的周边,甚至学着画画专门临摹 02,逢人就吹爆,只要看了 Darling 我们就是好朋友种种

\n

\"image\"

\n

\"image\"

\n

再回过神来就是惨绝人寰的烂尾了,就像回应开播时的轰轰烈烈一样,烂得也彻彻底底没有任何余地,但可能是大脑对强烈刺激的自我保护,我现在已经不太记得当时的具体情景了,只记得一个巨大的花嫁扎古噩梦...

\n

这部由如此豪华的制作团队打造的作品,竟然如此令人失望。至今我仍无法理解。

\n

约定的梦幻岛

\n

一年后,我又发现了一部绝赞的反乌托邦番剧

\n
\n

\"image\"

\n
\n

在我吹爆《约定的梦幻岛》第一季的时候就有人提醒我:Darling 尸骨未寒,你怎么敢。我却不以为意,认为这只是巧合。毕竟,梦幻岛是根据广受好评的漫画改编的,有着坚实的剧情基础,与原创动画 Darling 根本不能相提并论,第一季播完我还沾沾自喜:看,这次没事吧。

\n

然而,两年后,第二季开播了。

\n

我仍然清晰地记得刚开播时,我坐在电脑前激动地第一时间观看。然而,越看越觉得不对劲。到了第四集,剧情已经无法挽回。后来我勉强捏着鼻子又看了几集,但发现我的意志力实在不足以支撑我继续观看。

\n

按理说,漫画已经取得成功,剧情不成问题;第一季动画也获得了好评,拥有广泛的粉丝基础。只要按部就班地制作第二季,绝对会成为另一部神作。然而,动画剧情却砍掉了许多原创桥段,换上了毫无逻辑的编剧所编织的剧情。实在难以想象制作过程中究竟发生了什么。

\n

还好,同期播放的巨人稳得很,让我没有过于悲伤。

\n

\"image\"

\n

进击的巨人

\n

这是一部我从 2013 年一直吹到 2022 年的作品。

\n

\"image\"

\n

\"image\"

\n

作为一部自 2013 年就开播的动漫,《进击的巨人》在所有动漫中一直拥有极高的地位,堪称元老级存在。许多人正是从这部作品开始入坑看动漫,它是很多人的 “启蒙” 作品,也是我极力推荐给发小观看的第一部动漫。这部动漫也是根据漫画改编的,但与梦幻岛不同的是,其剧情、设定、丰富度和热度都高出好几个层次。更重要的是,接手最终季制作的 MAPPA 公司在质量和口碑上都绝对令人放心,不会出现梦幻岛那样的问题。它的剧情连载了那么长时间,久经时间考验,也不会出现 Darling 的情况,因此我一直信心满满地放心吹爆。

\n

然而后来的事情许多人都知道了,动画史上空前绝后的恶劣事件发生了。这不是恶搞,不是开玩笑,更不是烂尾,而是一个充满仇恨、对爱、正义和和平的人类主流价值观怀有敌意的精神变态作者,对喜爱他和他的作品的观众进行了深思熟虑、蓄谋已久的极端恶意伤害。呕!

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

虽然已经过了很久了,但我还是久久无法平静,我恨啊,不仅仅是痛心,更是咬牙切齿的仇恨。

\n
\n

\"image\"

\n
\n

其它

\n

\"image\"

\n

\"image\"

\n

\"image\"
\n\"image\"
\n\"image\"

\n
\n

\"image\"

\n
\n

当然,这些只是玩梗。

\n

最后,真诚祝愿四月新番开门大吉、一切顺利!

\n", - "category": "post", - "link": "https://xlog.app/api/redirection?characterId=10¬eId=764", - "creator": "DIYgod", - "pubDate": "Sun, 02 Apr 2023 04:50:00 GMT", - "enclosure": "", - "enclosureType": "", - "image": "", - "id": "", - "language": "", - "folder": "DIY", - "feed": "DIYGod", - "read": false, - "favorite": false, - "created": false, - "tags": [], - "hash": "31d7a79f6b83e9727bff105b82bd6111", - "highlights": [] - } - ], - "folder": "DIY", - "name": "DIYGod", - "language": "", - "hash": "c47c5e8bf4ba03bd30b6e887b4a13511" - }, { "title": "少数派", "subtitle": "", @@ -558,6 +276,116 @@ "image": null, "description": "少数派致力于更好地运用数字产品或科学方法,帮助用户提升工作效率和生活品质", "items": [ + { + "title": "抗战危急时刻,3200余名南侨机工毅然回国,筑起一条“不沉的补给线”", + "description": "



“赤子功勋”—云南昆明西山上矗立着一座9米高的纪念碑,基座上刻着这四个大字。碑文这样写道:


三千多名热血奔腾的南洋华侨机工……以自己的生命、鲜血和汗水,在华侨爱国史上谱写出可歌可泣的壮丽篇章,也在中国人民抗日战争史和世界人民反法西斯战争史上建立了不可磨灭的功勋。


1939年至1942年,抗战危急时刻,在被称为“死亡公路”的滇缅公路上,3200余名南洋归国华侨青年,驾驶卡车穿越枪林弹雨,抢运军需物资、抢修运输车辆,为抗战筑起一条“不沉的补给线”。



硝烟散尽,功勋长存。他们有一个共同的名字——南洋华侨机工回国服务团(简称“南侨机工”)。今年4月15日,在赴吉隆坡对马来西亚进行国事访问之际,习近平主席在当地媒体发表署名文章指出:


“80多年前,马来西亚南侨机工在中国人民抗日战争的关键时刻奔赴云南,帮助打通滇缅公路这条生命线。这些佳话至今仍在中马两国人民中广为传颂。”



凭借胆魄与技术,在敌机轰炸下持续穿行


1937年7月7日中国人民抗日战争全面爆发后,中国沿海重要港口基本沦陷,西北公路和滇越铁路先后被切断,滇缅公路成为中国与外部联系的重要国际运输通道。


滇缅公路全长1146公里,从云南昆明通往缅甸,翻越高黎贡山、云岭等崇山峻岭,由20万筑路民众在9个月内徒手开凿而成,1938年8月通车后成为“中国抗战的生命线”。


路修通了,但问题依然严峻:当时中国严重缺乏熟悉汽车驾驶与维修的技术人员。


危急关头,时任南侨总会主席陈嘉庚1939年2月在《南洋商报》上发出《南洋华侨筹赈祖国难民总会第六号通告》,征募懂驾驶、会修车的华侨青年回国服务,通告结尾写道:“事关祖国复兴大业,逼切注意办理是要。”



通告发出后,短短10天便有80人响应,后续报名者不断。他们中有教师、医生、商人、工程师,其中不乏家境殷实者。通告要求年龄在20—40岁之间,但前来报名的人中年纪最大的49岁,最小的仅13岁,他们瞒报、虚报年龄,甚至有人女扮男装,希望回国参与抗战。1939年,先后有9批共3200余名南侨机工回国支援。他们来自今新加坡、马来西亚、印度尼西亚、缅甸、越南、泰国等国,其中至少有5名是女性。


临行前的合照定格了南侨机工曾经的风华:西装革履,领带整齐,发蜡锃亮。这是一群会吹口琴、能唱英文歌、爱喝咖啡的青年,为了抗战胜利,他们毫不犹豫离开南洋,奔向被战火侵袭的祖国。



在云南,南侨机工经过两个月左右的军事培训后上岗:会驾驶的担任卡车司机,负责运输物资;懂维修的驻扎在沿线主要车站和修理厂,负责车辆维护保障。


从昆明到缅甸,驾车单程需七八天。南侨机工以方向盘为武器,以货车为掩体,凭借胆魄与技术,在敌机轰炸下持续穿行。他们从缅甸运进武器弹药等军需物资,将中国的桐油、矿产等物资运往海外,为战时中国提供宝贵支援。


1939年至1942年,经滇缅公路运送的军需物资达50多万吨,还有不计其数的民用物资。



长期研究南侨机工历史的云南师范大学华文学院教授夏玉清说:


“1942年滇缅公路被切断后,一部分南侨机工投身中美联合开辟的驼峰航线,承担将各类军用物资转运至中国战场的任务;也有部分留在昆明,在盟军中担任翻译、文员等职务。”


抗战期间,海外华侨华人倾尽所能支援中国。一份《世界各地华侨输财助战统计表》显示:1937年至1945年,缅甸华侨华人捐赠飞机19架,南侨总会筹集卡车200辆,南洋地区捐赠御寒衣物逾700万件……在这场世界范围内的“侨心报国”行动中,南侨机工以血肉之躯书写了壮烈、动人的篇章。



平均每公里就有一名南侨机工为国捐躯


“当初从南洋回到云南的时候,已经准备好牺牲了,就没想过要活着回去。”2018年本报记者第一次采访罗开瑚时,这位已经百岁高龄的老人说。当时他身体硬朗,仍保留着当年在南洋喝咖啡、看报纸的习惯。


1939年7月,年仅21岁的罗开瑚与第八批南侨机工的300多名热血青年一起坐船回国。


滇缅公路上,处处是生死考验。山道在崇山峻岭间盘桓,驾车稍有不慎便会坠入万丈深渊。行驶在泥泞狭窄、临近悬崖的路段时,副驾驶员甚至需要“悬挂”在车外,充当“人肉导航”。路上蚊虫肆虐、疟疾流行,上千名机工倒在运输途中。敌机轰炸更是家常便饭,车辆一旦中弹,机工几无生还希望。


“打摆子(疟疾)、没有停过的炮火,我的好多战友都牺牲了。”罗开瑚平静的声音中透出岁月抹不去的痛楚。


南侨机工不仅是战士,还是工程师。他们凭借智慧应对重重困难:自制防滑三角木、冷却水箱、视线测量杆等工具,以应对滑坡、高温、急弯等恶劣条件。


南洋华侨机工回国抗日纪念馆讲解员余有兰说:


“视线测量杆是南侨机工谢川周发明的。卡车视野受限,他就将竹子削成两段小竹竿,插在车灯两侧,作为测距标记,也能在一定程度上保护车头,相当于现在汽车的保险杠。”


横跨澜沧江的功果桥是滇缅公路的“咽喉”,曾多次成为敌人重点轰炸的目标。日军炸毁功果桥后,日本电台曾扬言“滇缅公路已断,3个月内无通车希望”。南侨机工廖国雄回忆,为了尽快恢复滇缅公路交通线,南侨机工与当地民众用几百只空油桶扎成浮船,上铺木板,只用10小时就搭起长达300米的浮桥,保证了这条抗日运输大动脉的畅通。



不久前,南侨机工李月美的孙女杨婷,与一群机工后人重走滇缅公路,缅怀先辈的英勇事迹。杨婷小时候经常听家人讲南侨机工的故事。李月美驾驶技术出众、反应敏捷,是躲避轰炸的好手。日军飞机在天空盘旋时,她和战友配合默契,或用树枝遮挡车子反光的后视镜,或是争分夺秒地将车子开进茂密的树林。


“奶奶是女扮男装加入南侨机工队伍的。”杨婷说,李月美凭借过人的智慧和毅力顺利通过各项考核,“她长得高大结实,当时报名处的人都没看出破绽。”直到一次意外翻车,李月美被路过的机工发现并送往医院救治,急救过程中她的身份才被识破。“当代花木兰”的故事当时被广泛报道,轰动海内外。



像李月美这样的英雄,在南侨机工中还有许多:13岁归国参战的蒋印生,放弃南洋高薪工作的王文松,仅用一周自学驾驶奔赴前线的吴惠民……据不完全统计,3200余名南侨机工中,超过1/3在滇缅公路沿线英勇牺牲。滇缅公路上,平均每公里就有一名南侨机工为国捐躯。


硝烟散尽后,他们的名字留在这里


中缅边境线上,云南德宏畹町,南洋华侨机工回国抗日纪念碑高高耸立。天刚微亮,守碑人叶晓东就骑着电瓶车来到碑下,爬上长长的台阶,擦拭碑面、给花木浇水、打扫地面上的落叶……二十年如一日。



纪念碑后方,记述南侨机工回国抗战的浮雕长廊里,雕刻着南侨机工英名录。每每行至此处,叶晓东的目光总会在“陈团圆”这个名字上停留,这是他的生父。


“父亲的名字在这儿,父亲就在这儿。”第一次在英名录上看到父亲的名字时,叶晓东这样想。作为南侨机工后代,叶晓东一出生便浸染国殇的悲怆。1944年,父亲陈团圆因不愿出卖战友惨遭日军活埋,当时叶晓东仅3个月大。


2005年,南洋华侨机工回国抗日纪念碑在德宏傣族景颇族自治州瑞丽市畹町镇落成,叶晓东主动担任守碑人,每天为父亲和父亲的战友们清扫擦拭纪念碑、英名录。


20年来,叶晓东每天风雨无阻地守着碑。有海内外南侨机工后人来寻亲,抚着纪念碑上的名字痛哭,他会陪着一起哭,面对纪念碑深深鞠躬;有游客到此,他会不厌其烦地讲述南侨机工的英勇事迹。



南侨机工后人陈达娅携手其他机工后代,共同创作并演绎大型交响组歌《南侨颂》。这部作品从国内剧场走向海外舞台,让南侨机工的故事被更多人知晓。不少人不远万里赶来观看演出,很多观众泪洒当场。


如今,马来西亚、新加坡两国也建有南侨机工纪念碑,马来西亚正推动建设南侨机工纪念公园和南侨机工纪念馆。每年抗战胜利纪念日,马来西亚等地的华侨华人社团都会在纪念碑前举行活动,缅怀南侨机工为抗战作出的伟大贡献。


2020年,罗开瑚去世;2022年,蒋印生去世。此后,世上再无南侨机工,但他们“舍身而不顾,毁家而不怨”的故事将被永远铭记。


2018年,“南侨机工历史档案”入选《世界记忆亚太地区名录》。档案真实记录了抗战期间南洋华侨志愿回国抗日的全过程,也镌刻下海外华侨华人反抗暴政、维护人类和平的记忆。2019年,马来西亚二战历史研究会授予南侨机工“亚洲和平奖”。


罗开瑚生前接受采访时说:


“国家危难时尽力做贡献,是每一名中国人的责任,无论是生是死。”


“一边是富有安逸的生活,一边是炮火喧嚣的战场,南侨机工毅然选择后者,这源于中华民族血脉中割不断的联系。他们的壮举既为中华民族抵御外侮、争取民族独立筑起流动的钢铁长城,也为世界和平事业刻下华侨群体的历史印记。为民族独立而抗争、为世界和平而奉献,南侨机工的名字将永远镌刻在中华民族救亡图存的史册与人类反法西斯的共同记忆之中。”夏玉清说,“今天,面对动荡的国际局势,我们纪念南侨机工,不只是回顾历史,更是在传承精神。他们跨越时空的信念提醒我们,和平需要守护,未来需要共建。”




 告别南洋

词:田汉

曲:聂耳



     再会吧,南洋!

  你海波绿,海云长,

  你是我们第二的故乡。

  我们民族的血汗,

  洒遍了这几百个荒凉的岛上。

  再会吧,南洋!

  你椰子肥,豆蔻香。

  你受着自然丰富的供养,

  但在帝国主义的剥削下,

  千百万被压迫者都闹着饥荒!

  再会吧,南洋!

  你不见尸横着长白山,

  血流着黑龙江?

  这是中华民族的存亡!

  再会吧,南洋!

  再会吧,南洋!

  我们要去争取一线光明的希望!


《告别南洋》是田汉、聂耳创作的歌曲,1934年问世,歌曲展现南洋华侨华人的离散经历和对中国的深厚感情。南侨机工回国支援抗战,离别之际经常唱起这首歌。




本文转发自《人民日报》2025年7月7日第15版,原标题为《抗战危急时刻,三千二百余名南侨机工毅然回国,筑起一条“不沉的补给线”——“国家危难时尽力做贡献,是每一名中国人的责任”(铭记历史 开创未来)》,欢迎读者转发朋友圈。


\"图片\"
END
作者 | 李茂颖 屈佩
编辑 | 侯露露 屈佩
校对 | 戈雨
\"图片\"

\"图片\"


“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "content": "



“赤子功勋”—云南昆明西山上矗立着一座9米高的纪念碑,基座上刻着这四个大字。碑文这样写道:


三千多名热血奔腾的南洋华侨机工……以自己的生命、鲜血和汗水,在华侨爱国史上谱写出可歌可泣的壮丽篇章,也在中国人民抗日战争史和世界人民反法西斯战争史上建立了不可磨灭的功勋。


1939年至1942年,抗战危急时刻,在被称为“死亡公路”的滇缅公路上,3200余名南洋归国华侨青年,驾驶卡车穿越枪林弹雨,抢运军需物资、抢修运输车辆,为抗战筑起一条“不沉的补给线”。



硝烟散尽,功勋长存。他们有一个共同的名字——南洋华侨机工回国服务团(简称“南侨机工”)。今年4月15日,在赴吉隆坡对马来西亚进行国事访问之际,习近平主席在当地媒体发表署名文章指出:


“80多年前,马来西亚南侨机工在中国人民抗日战争的关键时刻奔赴云南,帮助打通滇缅公路这条生命线。这些佳话至今仍在中马两国人民中广为传颂。”



凭借胆魄与技术,在敌机轰炸下持续穿行


1937年7月7日中国人民抗日战争全面爆发后,中国沿海重要港口基本沦陷,西北公路和滇越铁路先后被切断,滇缅公路成为中国与外部联系的重要国际运输通道。


滇缅公路全长1146公里,从云南昆明通往缅甸,翻越高黎贡山、云岭等崇山峻岭,由20万筑路民众在9个月内徒手开凿而成,1938年8月通车后成为“中国抗战的生命线”。


路修通了,但问题依然严峻:当时中国严重缺乏熟悉汽车驾驶与维修的技术人员。


危急关头,时任南侨总会主席陈嘉庚1939年2月在《南洋商报》上发出《南洋华侨筹赈祖国难民总会第六号通告》,征募懂驾驶、会修车的华侨青年回国服务,通告结尾写道:“事关祖国复兴大业,逼切注意办理是要。”



通告发出后,短短10天便有80人响应,后续报名者不断。他们中有教师、医生、商人、工程师,其中不乏家境殷实者。通告要求年龄在20—40岁之间,但前来报名的人中年纪最大的49岁,最小的仅13岁,他们瞒报、虚报年龄,甚至有人女扮男装,希望回国参与抗战。1939年,先后有9批共3200余名南侨机工回国支援。他们来自今新加坡、马来西亚、印度尼西亚、缅甸、越南、泰国等国,其中至少有5名是女性。


临行前的合照定格了南侨机工曾经的风华:西装革履,领带整齐,发蜡锃亮。这是一群会吹口琴、能唱英文歌、爱喝咖啡的青年,为了抗战胜利,他们毫不犹豫离开南洋,奔向被战火侵袭的祖国。



在云南,南侨机工经过两个月左右的军事培训后上岗:会驾驶的担任卡车司机,负责运输物资;懂维修的驻扎在沿线主要车站和修理厂,负责车辆维护保障。


从昆明到缅甸,驾车单程需七八天。南侨机工以方向盘为武器,以货车为掩体,凭借胆魄与技术,在敌机轰炸下持续穿行。他们从缅甸运进武器弹药等军需物资,将中国的桐油、矿产等物资运往海外,为战时中国提供宝贵支援。


1939年至1942年,经滇缅公路运送的军需物资达50多万吨,还有不计其数的民用物资。



长期研究南侨机工历史的云南师范大学华文学院教授夏玉清说:


“1942年滇缅公路被切断后,一部分南侨机工投身中美联合开辟的驼峰航线,承担将各类军用物资转运至中国战场的任务;也有部分留在昆明,在盟军中担任翻译、文员等职务。”


抗战期间,海外华侨华人倾尽所能支援中国。一份《世界各地华侨输财助战统计表》显示:1937年至1945年,缅甸华侨华人捐赠飞机19架,南侨总会筹集卡车200辆,南洋地区捐赠御寒衣物逾700万件……在这场世界范围内的“侨心报国”行动中,南侨机工以血肉之躯书写了壮烈、动人的篇章。



平均每公里就有一名南侨机工为国捐躯


“当初从南洋回到云南的时候,已经准备好牺牲了,就没想过要活着回去。”2018年本报记者第一次采访罗开瑚时,这位已经百岁高龄的老人说。当时他身体硬朗,仍保留着当年在南洋喝咖啡、看报纸的习惯。


1939年7月,年仅21岁的罗开瑚与第八批南侨机工的300多名热血青年一起坐船回国。


滇缅公路上,处处是生死考验。山道在崇山峻岭间盘桓,驾车稍有不慎便会坠入万丈深渊。行驶在泥泞狭窄、临近悬崖的路段时,副驾驶员甚至需要“悬挂”在车外,充当“人肉导航”。路上蚊虫肆虐、疟疾流行,上千名机工倒在运输途中。敌机轰炸更是家常便饭,车辆一旦中弹,机工几无生还希望。


“打摆子(疟疾)、没有停过的炮火,我的好多战友都牺牲了。”罗开瑚平静的声音中透出岁月抹不去的痛楚。


南侨机工不仅是战士,还是工程师。他们凭借智慧应对重重困难:自制防滑三角木、冷却水箱、视线测量杆等工具,以应对滑坡、高温、急弯等恶劣条件。


南洋华侨机工回国抗日纪念馆讲解员余有兰说:


“视线测量杆是南侨机工谢川周发明的。卡车视野受限,他就将竹子削成两段小竹竿,插在车灯两侧,作为测距标记,也能在一定程度上保护车头,相当于现在汽车的保险杠。”


横跨澜沧江的功果桥是滇缅公路的“咽喉”,曾多次成为敌人重点轰炸的目标。日军炸毁功果桥后,日本电台曾扬言“滇缅公路已断,3个月内无通车希望”。南侨机工廖国雄回忆,为了尽快恢复滇缅公路交通线,南侨机工与当地民众用几百只空油桶扎成浮船,上铺木板,只用10小时就搭起长达300米的浮桥,保证了这条抗日运输大动脉的畅通。



不久前,南侨机工李月美的孙女杨婷,与一群机工后人重走滇缅公路,缅怀先辈的英勇事迹。杨婷小时候经常听家人讲南侨机工的故事。李月美驾驶技术出众、反应敏捷,是躲避轰炸的好手。日军飞机在天空盘旋时,她和战友配合默契,或用树枝遮挡车子反光的后视镜,或是争分夺秒地将车子开进茂密的树林。


“奶奶是女扮男装加入南侨机工队伍的。”杨婷说,李月美凭借过人的智慧和毅力顺利通过各项考核,“她长得高大结实,当时报名处的人都没看出破绽。”直到一次意外翻车,李月美被路过的机工发现并送往医院救治,急救过程中她的身份才被识破。“当代花木兰”的故事当时被广泛报道,轰动海内外。



像李月美这样的英雄,在南侨机工中还有许多:13岁归国参战的蒋印生,放弃南洋高薪工作的王文松,仅用一周自学驾驶奔赴前线的吴惠民……据不完全统计,3200余名南侨机工中,超过1/3在滇缅公路沿线英勇牺牲。滇缅公路上,平均每公里就有一名南侨机工为国捐躯。


硝烟散尽后,他们的名字留在这里


中缅边境线上,云南德宏畹町,南洋华侨机工回国抗日纪念碑高高耸立。天刚微亮,守碑人叶晓东就骑着电瓶车来到碑下,爬上长长的台阶,擦拭碑面、给花木浇水、打扫地面上的落叶……二十年如一日。



纪念碑后方,记述南侨机工回国抗战的浮雕长廊里,雕刻着南侨机工英名录。每每行至此处,叶晓东的目光总会在“陈团圆”这个名字上停留,这是他的生父。


“父亲的名字在这儿,父亲就在这儿。”第一次在英名录上看到父亲的名字时,叶晓东这样想。作为南侨机工后代,叶晓东一出生便浸染国殇的悲怆。1944年,父亲陈团圆因不愿出卖战友惨遭日军活埋,当时叶晓东仅3个月大。


2005年,南洋华侨机工回国抗日纪念碑在德宏傣族景颇族自治州瑞丽市畹町镇落成,叶晓东主动担任守碑人,每天为父亲和父亲的战友们清扫擦拭纪念碑、英名录。


20年来,叶晓东每天风雨无阻地守着碑。有海内外南侨机工后人来寻亲,抚着纪念碑上的名字痛哭,他会陪着一起哭,面对纪念碑深深鞠躬;有游客到此,他会不厌其烦地讲述南侨机工的英勇事迹。



南侨机工后人陈达娅携手其他机工后代,共同创作并演绎大型交响组歌《南侨颂》。这部作品从国内剧场走向海外舞台,让南侨机工的故事被更多人知晓。不少人不远万里赶来观看演出,很多观众泪洒当场。


如今,马来西亚、新加坡两国也建有南侨机工纪念碑,马来西亚正推动建设南侨机工纪念公园和南侨机工纪念馆。每年抗战胜利纪念日,马来西亚等地的华侨华人社团都会在纪念碑前举行活动,缅怀南侨机工为抗战作出的伟大贡献。


2020年,罗开瑚去世;2022年,蒋印生去世。此后,世上再无南侨机工,但他们“舍身而不顾,毁家而不怨”的故事将被永远铭记。


2018年,“南侨机工历史档案”入选《世界记忆亚太地区名录》。档案真实记录了抗战期间南洋华侨志愿回国抗日的全过程,也镌刻下海外华侨华人反抗暴政、维护人类和平的记忆。2019年,马来西亚二战历史研究会授予南侨机工“亚洲和平奖”。


罗开瑚生前接受采访时说:


“国家危难时尽力做贡献,是每一名中国人的责任,无论是生是死。”


“一边是富有安逸的生活,一边是炮火喧嚣的战场,南侨机工毅然选择后者,这源于中华民族血脉中割不断的联系。他们的壮举既为中华民族抵御外侮、争取民族独立筑起流动的钢铁长城,也为世界和平事业刻下华侨群体的历史印记。为民族独立而抗争、为世界和平而奉献,南侨机工的名字将永远镌刻在中华民族救亡图存的史册与人类反法西斯的共同记忆之中。”夏玉清说,“今天,面对动荡的国际局势,我们纪念南侨机工,不只是回顾历史,更是在传承精神。他们跨越时空的信念提醒我们,和平需要守护,未来需要共建。”




 告别南洋

词:田汉

曲:聂耳



     再会吧,南洋!

  你海波绿,海云长,

  你是我们第二的故乡。

  我们民族的血汗,

  洒遍了这几百个荒凉的岛上。

  再会吧,南洋!

  你椰子肥,豆蔻香。

  你受着自然丰富的供养,

  但在帝国主义的剥削下,

  千百万被压迫者都闹着饥荒!

  再会吧,南洋!

  你不见尸横着长白山,

  血流着黑龙江?

  这是中华民族的存亡!

  再会吧,南洋!

  再会吧,南洋!

  我们要去争取一线光明的希望!


《告别南洋》是田汉、聂耳创作的歌曲,1934年问世,歌曲展现南洋华侨华人的离散经历和对中国的深厚感情。南侨机工回国支援抗战,离别之际经常唱起这首歌。




本文转发自《人民日报》2025年7月7日第15版,原标题为《抗战危急时刻,三千二百余名南侨机工毅然回国,筑起一条“不沉的补给线”——“国家危难时尽力做贡献,是每一名中国人的责任”(铭记历史 开创未来)》,欢迎读者转发朋友圈。


\"图片\"
END
作者 | 李茂颖 屈佩
编辑 | 侯露露 屈佩
校对 | 戈雨
\"图片\"

\"图片\"


“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "category": "", + "link": "http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BD%E5%AE%B6%E4%BA%BA%E6%96%87%E5%8E%86%E5%8F%B2+%E6%8A%97%E6%88%98%E5%8D%B1%E6%80%A5%E6%97%B6%E5%88%BB%EF%BC%8C3200%E4%BD%99%E5%90%8D%E5%8D%97%E4%BE%A8%E6%9C%BA%E5%B7%A5%E6%AF%85%E7%84%B6%E5%9B%9E%E5%9B%BD%EF%BC%8C%E7%AD%91%E8%B5%B7%E4%B8%80%E6%9D%A1%E2%80%9C%E4%B8%8D%E6%B2%89%E7%9A%84%E8%A1%A5%E7%BB%99%E7%BA%BF%E2%80%9D", + "creator": "", + "pubDate": "Mon, 07 Jul 2025 21:45:00 +0800", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "", + "folder": "人文", + "feed": "国家人文历史", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "8a7b5ecca0ebc50594522df8d1c34ac3", + "highlights": [] + }, + { + "title": "秦始皇求仙问药的“昆仑”在哪里?坐高铁能到吗?", + "description": "


本 文 约 5000 字

阅 读 需 要 17 分 钟 


前段时间,《光明日报》的一篇《实证古代“昆仑”的地理位置——青海黄河源发现秦始皇遣使“采药昆仑”石刻》在中国的历史与考古学界掀起了一场惊涛骇浪,一大批历史学者纷纷就这一石刻的篆刻字体、年代、文字内容以及当地自然环境发表了相关评论。众说纷纭中,大家最为关注的莫过于石刻对“昆仑”这一中国古代传奇圣山的地理定位,从先秦到明清,昆仑都堪称“神圣之巅”,它的存在曾被认为是传说中虚幻之处,也曾在从陕西到新疆之间的山川广域之中辗转腾挪。那么中国古代的“昆仑”究竟在何方?



茫茫山海:昆仑之墟何在?

 

关于昆仑的记载,最早起于先秦时代的典籍中,最初多被称为“昆仑之丘”或“昆仑之虚(墟)”,代指一片具有浓郁神话色彩的神秘领域,不仅有高耸入云、连绵巍峨的山群,更是有神兽守卫的“帝之下都”(天神在人间的都邑)。

 

《山海经·海内西经》载:

 

“海内昆仑之虚,在西北,帝之下都。昆仑之虚,方八百里,高万仞….. 门有开明兽守之,百神之所在……河水出东北隅,以行其北,西南又入渤海,又出海外,即西而北,入禹所导积石山。”


 

《尔雅》载:

 

“河出昆仑虚,色白”“西北之美者 ,有昆仑虚之璆琳琅玕焉。”

 

早期昆仑的方位十分模糊,其有效的地理标识仅有“西北”“西次三经(山海经中西方山脉的第三序列)”,而能够产出“璆琳琅玕”这样的精美玉石,根据《山海经》其他已知山系的推测(如西山经中为首的是陕西华山),只能推断出昆仑位于从关中平原向西向北,包括甘肃、青海与新疆等地在内的广大群山之中,但有关真正的昆仑在何处,并没有一个确切的方位记载。从此时开始,昆仑与黄河(古称“河水”)源头所在已被深度绑定,从而使后人总将探求“昆仑”与追寻“河源”两大地理使命合二为一。


 

昆仑之墟的神秘玄幻不仅牵动着历代探险家的探奇之心,更让古往今来的中原帝王心怀向往。据《穆天子传》记述,最早向西抵达昆仑之境的是周穆王,他在西征巡游时得河伯指引,到达从关中宗周西行8100里的昆仑。“(穆王)升于昆仑之丘,以观黄帝之宫,而封丰隆之葬,以诏后世”,甚至有言,周穆王曾在昆仑山周边的瑶池与西王母相会结下不解之缘。此次周穆王在昆仑山上对黄帝之宫的参拜尽管存在争议,但先秦时期古代中原对于昆仑之域的内心崇拜显然已经贯穿于整个社会文化氛围之中,并为天子诸侯所共知。


乾坤大挪移:昆仑空间的斗转星移

 

秦汉时期,随着“华夏文化圈”和“大一统”国家的形成,古人开始尝试拨开昆仑这一“上古神山”的神秘面纱,在不断拓展的边疆中追寻它的准确位置。


向西方探寻昆仑所在的契机来自秦国的西向扩张。战国末年,秦宣太后诱杀义渠王于甘泉宫,(秦人)因起兵灭之,始置陇西、北地、上郡焉。秦国三郡的设立标志着中原地区的直接管辖范围深入到黄河上游的宁夏甘肃一线,从而将《山海经》中渺茫的西土逐渐具象化。



到公元前221年,秦始皇横扫六合统一华夏,中国历史上第一个统一的中央集权国家横空出世。与辉煌一统相伴的是秦始皇本人对大秦帝国的独特构想。首先,信奉传统秦国神祇的秦始皇想要通过“令祠官所常奉天地名山大川鬼神可得而序也”的方式将整个东方六国的信仰体系融为一体,因而在统一之后进行了大规模的天下祭祀巡行,其中第一次巡行路线便是:

 

“(秦始皇)二十七年(前220),始皇巡陇西、北地,出鸡头山,过回中。”



秦始皇将西方疆域山川放在了极为重要的位置,也为当时官方与民间继续向西探求昆仑山川奠定了基础。而秦始皇个人对于长生不老的不懈追求,也为当时官方民间以寻仙问药为由的四方探寻提供了契机,所谓五大夫翳“采药昆仑”石刻上的这段史书上并未记载的神奇故事,或许正是在这一实地考察的背景下产生。



实际文献中对于昆仑的第一次官方认定出现在汉代。《史记•大宛列传》记载:

 

“汉使穷河源,河源出于阗,其山多玉石,采来,天子案古图书,名河所出山曰昆仑云。”

 

这里穷“(黄)河源”的汉使便是张骞及其副使,他在两次出使西域之后断定黄河的起源在于阗(今新疆和田县)的山中,认为发源于于阗山中的河水向东汇入盐泽(也称蒲昌海,位于今天的新疆罗布泊)后就变成了潜行地下的隐河,随后在南方涌出地面变成黄河的源头。在获得这些关键信息之后,汉武帝依据玉石对比古图书,最终判定于阗的南山(今昆仑山西段一部)为昆仑山。这次官方定位基本上是依据“河源出昆仑”与“昆仑产美玉”两大特点认定的。今天来看,张骞关于“黄河潜行”地下的说法有些荒诞,但这依旧是第一次有史记载的对昆仑所在地进行实地考察,其定位的昆仑位置与今日昆仑山脉一部分相重叠,同时也交代了黄河在罗布泊之南某地(青藏高原之上)涌出地面这一基本事实,为后人进一步发掘昆仑山留下了可供思考的维度。


 

西汉末年以后,随着汉王朝与西羌部落(活跃于青海与甘肃交界地带)的持续作战,汉王朝对黄河上游的地理认知也不断深入,东汉经学家马融开始提出“昆仑在临羌西”,即昆仑在今天青海省西宁市一带,表明当时汉朝人已经对青藏高原东北隅有了初步的地理认知,但是仍受限于气候环境,无法进一步探寻昆仑所在。

 

魏晋以后,河西走廊一带在中原战乱背景下经济文化迅速发展,黄河上游地区相继出现了“五凉”政权,对黄河上游与祁连山以南的高原地区认识更为清晰。《晋书·张骏传》载:

 

“酒泉南山,即昆仑之体也。周穆王见西王母,乐而忘归,即谓此山。此山有石室玉堂,珠玑镂饰,焕若神宫。宜立西王母祠,以裨朝廷无疆之福。”

 

这里认为的昆仑山在祁连山之中,将昆仑对中原的距离重新拉近到华夏的边缘地带。唐朝著名的历史地理学著作《括地志》云:“昆仑山在肃州酒泉县南八十里。”同样延续了《晋书》的看法。


 

在北方政权企图将昆仑山拉近的同时,佛教文化的传入则为昆仑山的位置增加了一条新的赛道。来自中亚西域的僧人力图将佛教与华夏文化融会贯通。前秦高僧释道安,为了更好地将佛教传播给广大中原之人,将印度传说中佛教圣地阿耨(nòu)达山(佛教文献中为印度河与恒河等四大河的发源地)附加了浓郁的中华神话色彩。《水经注》作者郦道元在引据道安《释氏西域记》的“阿耨达太山,其上有大渊水,宫殿楼观甚大焉”时解释说:“山即昆仑山也。”再如引《穆天子传》中“天子升于昆仑、观黄帝之宫”时解释:“黄帝宫,即阿耨达宫也。”郦道元对这一说法的认同展现出当时中原社会浓厚的佛教氛围以及西来佛教与华夏传统文化的深度融合,“昆仑”一度同时成为佛教与中国原始道教的圣山福地。而根据后世地理著作考证,阿耨达山的位置大致位于今天青藏高原西部的冈底斯山。


观览河源昆仑:大一统帝国的不懈追求


繁盛的唐代为昆仑的进一步具象化提供了契机。

 

贞观九年(635),唐朝对盘踞在今天青海北部的吐谷浑发起总攻,唐军从鄯州(今青海西宁)出现,分南北两道一路西进,从青海湖一线向黄河上游以轻骑快速深入,创造了中原王朝在青藏高原作战的空前胜利。史载唐朝北路大军:

 

“次且末之西,(吐谷浑可汗)伏允走图伦碛(塔克拉玛干大沙漠),将托于阗,万均督锐骑追亡数百里,又破之。”

 

即相当于从青海湖向西贯穿格尔木盆地,翻越阿尔金山进入新疆南部。



而南路大军在侯君集率领下:

 

“经途二千余里,行空虚之地。盛夏降霜,山多积雪,转战过星宿川,至于柏海(今青海省鄂陵湖),频与虏遇,皆大克获。北望积石山,观河源之所出焉。”

 

即从青海湖溯黄河源头而上,途经两千余里雪山沼泽后抵达黄河源头附近的鄂陵湖。这一次军事远征对青海地区的探索可谓史无前例,中原王朝的军队与随行人员第一次深入青藏高原内部地区,也为“河源所出”的昆仑所在提供了珍贵的地理资料。



随着唐朝中期与吐蕃在青藏高原之上的长期拉锯战,中原人士对青藏高原的地理环境认知更为清晰。《新唐书•吐蕃传》记载,长庆二年(822)五月,唐朝和盟专使、大理寺卿刘元鼎率领使团前往吐蕃,与吐蕃以钵阐布·勃阑伽允丹为首的官员在逻些(今西藏拉萨)东郊会盟,这就是历史上著名的长庆会盟(前一年双方在长安西郊会盟)。这次会盟是有史料记载以来,中原王朝首次派遣官方使节经过唐蕃古道全程往返青藏高原核心区域。会盟结束回朝的路上,盟使刘元鼎在沿途详细记载青藏高原山川地貌,尤其对黄河源头附近进行了详实介绍:

 

(刘)元鼎踰湟水,至龙泉谷。西北望杀胡川哥舒翰故壁多在。湟水出濛谷,抵龙泉,与河合。河之上流繇洪济梁,西南行二千里,水益狭,春可涉,秋夏乃胜舟。其南三百里。三山中高而四下,曰紫山,直大羊同国,古所谓昆仑者也,虏曰闷摩黎山,东距长安五千里,河源其间。

 

此处记载从湟水与河水汇合处向上游溯源,在到达“洪济梁”(唐朝金天军所在,今青海贵德县黄河沿岸)后要再向西南行两千里,这一段的黄河春季可以步行涉水,夏秋可以乘舟,再向南三百里就可以到达古代羊同国故地的紫山,也就是古代昆仑,吐蕃当地人则称为闷摩黎山。而根据后世记载,此处吐蕃境内的闷摩黎山(紫山),据考即今巴颜喀拉山。此次唐朝使者认为的“黄河源头”昆仑山基本与我们今天给出的黄河源头相吻合,也将昆仑山的位置基本固定在黄河西南方向的青海一带。


 

13世纪下半叶,忽必烈建立大元,青藏高原第一次正式纳入中原王朝的行政管辖。元世祖忽必烈设置掌管全国佛教事务并统辖吐蕃地区(今西藏及青海大部)军政事务的机构——宣政院。庞大的疆域和通畅的道路为内地人员对青藏高原进行全方位考察奠定了基础。当时的忽必烈为了建立汉唐都未能达到的功勋,彰显大元对寰宇一统的历史功绩,于至元二十七年(1290),也有说法为十七年(1280),派遣女真人都实从甘肃临夏出发穷探黄河之源头,完成“古无有也”的历史创举。

 

都实首先在唐人的基础上确认了星宿川为黄河源头所在:

 

“有泉百余,泓洳散涣,弗可逼视,方七八十里。履高山下瞰,灿若列星,以故名火敦脑儿,译言‘星宿’也。”

 

即将今天黄河上游星宿海星罗棋布的泉流地带清晰描述为黄河源头。随后又记载:

 

“朵甘思东北有大雪山,名亦耳麻不莫刺,其山最髙,译言腾乞里塔,即昆仑也。”

 

又言黄河先自西向东绕昆仑之南行,随后“河水北行,转西流,过昆仑北”。由此可见,元代定义的昆仑并不在黄河源头处,反而是黄河上游一串被黄河绵延环绕的巨大山脉,以今天的地图观之,恰好是三面为黄河所环绕的今阿尼玛卿山山脉,在中国古代典籍中也被称为“大积石山”,与《尚书·禹贡》中“导河积石”的记载不谋而合,而此处昆仑山的译音“腾乞里塔”很可能也与蒙古语中的腾格里词汇同源,有所谓“天山”之义,即当地人心目中的“神山”。

 

所以,这次对昆仑位置的界定,是古代历史上第一次具有明确记载的亲身地理科学探索的结论,是一次重要诠释。


 

古人对昆仑最为系统性的考察还是在清代。康熙年间,清廷全力平定西北新疆一带的准噶尔部落,当时的青海处于准噶尔、西藏与内地的交通要冲,位于青海境内的和硕特蒙古部落便被视为朝廷重点争取对象。康熙帝借探查河源的机会在当地宣扬朝廷恩威,作为勘察使者的侍卫拉锡与舒兰于康熙四十三年(1704)不辱使命再次来到“星宿海”,得知其周围群山蒙古名为“库尔滚”,认为“即昆仑也”,同时认为从周边“库尔滚”群山中涌出的三条河流(包括黄河上的卡日曲与约古宗列曲)即黄河源头所在,这一发现再次佐证了《山海经》中“河出昆仑”的基本猜想,而此处的库尔滚(坤)山,即今巴颜喀拉山,这一结果也基本与今日现代地理考察所得出的结论相吻合。

 

现代地理学上的昆仑山脉从帕米尔高原发端,沿着塔里木盆地和青藏高原的交界一路向东,在进入青海之后,则沿柴达木盆地南缘向东南延伸,形成巴颜喀拉山脉与阿尼玛卿山等多列山系,而古人对于昆仑位置的探究尽管不尽相同,但终究处在“大昆仑”的范畴之中。


 

纵观古人对昆仑方位的认识,无不与同一时代的疆域广度与社会风貌相联结,昆仑的位置所在不仅是一个神话山脉的位置归属,更是有关华夏龙脉所在的终极探讨,堪舆之书言:

 

“万山一贯,起自昆仑。山龙之散见于地,虽有千万之多,而其龙脉之来,皆出于昆仑。”

 

大秦将昆仑视作求仙访药的神仙居所,汉武帝将昆仑视为汉家西域的明证,昆仑在大唐与吐蕃的交往中撤下隐藏的迷雾,在元代丈量寰宇的脚步中逐渐明晰,最终在清代的一统功业中找到了真实而确切的归宿。

 

巍峨的昆仑山,承载着华夏民族探寻世界寰宇的无限憧憬,矗立于祖国的茫茫西土,守望庇佑着龙之传人。

 


参考文献:

1. 沈婉婷:《中国古代昆仑观念研究》,山东大学博士论文

2.(明)宋濂:《元史》 

3. 中华书局编:《清实录》

4.(宋)欧阳修:《新唐书》

5.(清)顾祖禹:《读史方舆纪要》


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


END
作者 | 王凯迪‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 曲晨溪(实习)‍
校对 | 火炬 李栋 张斌 古月
\"图片\"

国历好物
\"图片\"

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷

\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "content": "


本 文 约 5000 字

阅 读 需 要 17 分 钟 


前段时间,《光明日报》的一篇《实证古代“昆仑”的地理位置——青海黄河源发现秦始皇遣使“采药昆仑”石刻》在中国的历史与考古学界掀起了一场惊涛骇浪,一大批历史学者纷纷就这一石刻的篆刻字体、年代、文字内容以及当地自然环境发表了相关评论。众说纷纭中,大家最为关注的莫过于石刻对“昆仑”这一中国古代传奇圣山的地理定位,从先秦到明清,昆仑都堪称“神圣之巅”,它的存在曾被认为是传说中虚幻之处,也曾在从陕西到新疆之间的山川广域之中辗转腾挪。那么中国古代的“昆仑”究竟在何方?



茫茫山海:昆仑之墟何在?

 

关于昆仑的记载,最早起于先秦时代的典籍中,最初多被称为“昆仑之丘”或“昆仑之虚(墟)”,代指一片具有浓郁神话色彩的神秘领域,不仅有高耸入云、连绵巍峨的山群,更是有神兽守卫的“帝之下都”(天神在人间的都邑)。

 

《山海经·海内西经》载:

 

“海内昆仑之虚,在西北,帝之下都。昆仑之虚,方八百里,高万仞….. 门有开明兽守之,百神之所在……河水出东北隅,以行其北,西南又入渤海,又出海外,即西而北,入禹所导积石山。”


 

《尔雅》载:

 

“河出昆仑虚,色白”“西北之美者 ,有昆仑虚之璆琳琅玕焉。”

 

早期昆仑的方位十分模糊,其有效的地理标识仅有“西北”“西次三经(山海经中西方山脉的第三序列)”,而能够产出“璆琳琅玕”这样的精美玉石,根据《山海经》其他已知山系的推测(如西山经中为首的是陕西华山),只能推断出昆仑位于从关中平原向西向北,包括甘肃、青海与新疆等地在内的广大群山之中,但有关真正的昆仑在何处,并没有一个确切的方位记载。从此时开始,昆仑与黄河(古称“河水”)源头所在已被深度绑定,从而使后人总将探求“昆仑”与追寻“河源”两大地理使命合二为一。


 

昆仑之墟的神秘玄幻不仅牵动着历代探险家的探奇之心,更让古往今来的中原帝王心怀向往。据《穆天子传》记述,最早向西抵达昆仑之境的是周穆王,他在西征巡游时得河伯指引,到达从关中宗周西行8100里的昆仑。“(穆王)升于昆仑之丘,以观黄帝之宫,而封丰隆之葬,以诏后世”,甚至有言,周穆王曾在昆仑山周边的瑶池与西王母相会结下不解之缘。此次周穆王在昆仑山上对黄帝之宫的参拜尽管存在争议,但先秦时期古代中原对于昆仑之域的内心崇拜显然已经贯穿于整个社会文化氛围之中,并为天子诸侯所共知。


乾坤大挪移:昆仑空间的斗转星移

 

秦汉时期,随着“华夏文化圈”和“大一统”国家的形成,古人开始尝试拨开昆仑这一“上古神山”的神秘面纱,在不断拓展的边疆中追寻它的准确位置。


向西方探寻昆仑所在的契机来自秦国的西向扩张。战国末年,秦宣太后诱杀义渠王于甘泉宫,(秦人)因起兵灭之,始置陇西、北地、上郡焉。秦国三郡的设立标志着中原地区的直接管辖范围深入到黄河上游的宁夏甘肃一线,从而将《山海经》中渺茫的西土逐渐具象化。



到公元前221年,秦始皇横扫六合统一华夏,中国历史上第一个统一的中央集权国家横空出世。与辉煌一统相伴的是秦始皇本人对大秦帝国的独特构想。首先,信奉传统秦国神祇的秦始皇想要通过“令祠官所常奉天地名山大川鬼神可得而序也”的方式将整个东方六国的信仰体系融为一体,因而在统一之后进行了大规模的天下祭祀巡行,其中第一次巡行路线便是:

 

“(秦始皇)二十七年(前220),始皇巡陇西、北地,出鸡头山,过回中。”



秦始皇将西方疆域山川放在了极为重要的位置,也为当时官方与民间继续向西探求昆仑山川奠定了基础。而秦始皇个人对于长生不老的不懈追求,也为当时官方民间以寻仙问药为由的四方探寻提供了契机,所谓五大夫翳“采药昆仑”石刻上的这段史书上并未记载的神奇故事,或许正是在这一实地考察的背景下产生。



实际文献中对于昆仑的第一次官方认定出现在汉代。《史记•大宛列传》记载:

 

“汉使穷河源,河源出于阗,其山多玉石,采来,天子案古图书,名河所出山曰昆仑云。”

 

这里穷“(黄)河源”的汉使便是张骞及其副使,他在两次出使西域之后断定黄河的起源在于阗(今新疆和田县)的山中,认为发源于于阗山中的河水向东汇入盐泽(也称蒲昌海,位于今天的新疆罗布泊)后就变成了潜行地下的隐河,随后在南方涌出地面变成黄河的源头。在获得这些关键信息之后,汉武帝依据玉石对比古图书,最终判定于阗的南山(今昆仑山西段一部)为昆仑山。这次官方定位基本上是依据“河源出昆仑”与“昆仑产美玉”两大特点认定的。今天来看,张骞关于“黄河潜行”地下的说法有些荒诞,但这依旧是第一次有史记载的对昆仑所在地进行实地考察,其定位的昆仑位置与今日昆仑山脉一部分相重叠,同时也交代了黄河在罗布泊之南某地(青藏高原之上)涌出地面这一基本事实,为后人进一步发掘昆仑山留下了可供思考的维度。


 

西汉末年以后,随着汉王朝与西羌部落(活跃于青海与甘肃交界地带)的持续作战,汉王朝对黄河上游的地理认知也不断深入,东汉经学家马融开始提出“昆仑在临羌西”,即昆仑在今天青海省西宁市一带,表明当时汉朝人已经对青藏高原东北隅有了初步的地理认知,但是仍受限于气候环境,无法进一步探寻昆仑所在。

 

魏晋以后,河西走廊一带在中原战乱背景下经济文化迅速发展,黄河上游地区相继出现了“五凉”政权,对黄河上游与祁连山以南的高原地区认识更为清晰。《晋书·张骏传》载:

 

“酒泉南山,即昆仑之体也。周穆王见西王母,乐而忘归,即谓此山。此山有石室玉堂,珠玑镂饰,焕若神宫。宜立西王母祠,以裨朝廷无疆之福。”

 

这里认为的昆仑山在祁连山之中,将昆仑对中原的距离重新拉近到华夏的边缘地带。唐朝著名的历史地理学著作《括地志》云:“昆仑山在肃州酒泉县南八十里。”同样延续了《晋书》的看法。


 

在北方政权企图将昆仑山拉近的同时,佛教文化的传入则为昆仑山的位置增加了一条新的赛道。来自中亚西域的僧人力图将佛教与华夏文化融会贯通。前秦高僧释道安,为了更好地将佛教传播给广大中原之人,将印度传说中佛教圣地阿耨(nòu)达山(佛教文献中为印度河与恒河等四大河的发源地)附加了浓郁的中华神话色彩。《水经注》作者郦道元在引据道安《释氏西域记》的“阿耨达太山,其上有大渊水,宫殿楼观甚大焉”时解释说:“山即昆仑山也。”再如引《穆天子传》中“天子升于昆仑、观黄帝之宫”时解释:“黄帝宫,即阿耨达宫也。”郦道元对这一说法的认同展现出当时中原社会浓厚的佛教氛围以及西来佛教与华夏传统文化的深度融合,“昆仑”一度同时成为佛教与中国原始道教的圣山福地。而根据后世地理著作考证,阿耨达山的位置大致位于今天青藏高原西部的冈底斯山。


观览河源昆仑:大一统帝国的不懈追求


繁盛的唐代为昆仑的进一步具象化提供了契机。

 

贞观九年(635),唐朝对盘踞在今天青海北部的吐谷浑发起总攻,唐军从鄯州(今青海西宁)出现,分南北两道一路西进,从青海湖一线向黄河上游以轻骑快速深入,创造了中原王朝在青藏高原作战的空前胜利。史载唐朝北路大军:

 

“次且末之西,(吐谷浑可汗)伏允走图伦碛(塔克拉玛干大沙漠),将托于阗,万均督锐骑追亡数百里,又破之。”

 

即相当于从青海湖向西贯穿格尔木盆地,翻越阿尔金山进入新疆南部。



而南路大军在侯君集率领下:

 

“经途二千余里,行空虚之地。盛夏降霜,山多积雪,转战过星宿川,至于柏海(今青海省鄂陵湖),频与虏遇,皆大克获。北望积石山,观河源之所出焉。”

 

即从青海湖溯黄河源头而上,途经两千余里雪山沼泽后抵达黄河源头附近的鄂陵湖。这一次军事远征对青海地区的探索可谓史无前例,中原王朝的军队与随行人员第一次深入青藏高原内部地区,也为“河源所出”的昆仑所在提供了珍贵的地理资料。



随着唐朝中期与吐蕃在青藏高原之上的长期拉锯战,中原人士对青藏高原的地理环境认知更为清晰。《新唐书•吐蕃传》记载,长庆二年(822)五月,唐朝和盟专使、大理寺卿刘元鼎率领使团前往吐蕃,与吐蕃以钵阐布·勃阑伽允丹为首的官员在逻些(今西藏拉萨)东郊会盟,这就是历史上著名的长庆会盟(前一年双方在长安西郊会盟)。这次会盟是有史料记载以来,中原王朝首次派遣官方使节经过唐蕃古道全程往返青藏高原核心区域。会盟结束回朝的路上,盟使刘元鼎在沿途详细记载青藏高原山川地貌,尤其对黄河源头附近进行了详实介绍:

 

(刘)元鼎踰湟水,至龙泉谷。西北望杀胡川哥舒翰故壁多在。湟水出濛谷,抵龙泉,与河合。河之上流繇洪济梁,西南行二千里,水益狭,春可涉,秋夏乃胜舟。其南三百里。三山中高而四下,曰紫山,直大羊同国,古所谓昆仑者也,虏曰闷摩黎山,东距长安五千里,河源其间。

 

此处记载从湟水与河水汇合处向上游溯源,在到达“洪济梁”(唐朝金天军所在,今青海贵德县黄河沿岸)后要再向西南行两千里,这一段的黄河春季可以步行涉水,夏秋可以乘舟,再向南三百里就可以到达古代羊同国故地的紫山,也就是古代昆仑,吐蕃当地人则称为闷摩黎山。而根据后世记载,此处吐蕃境内的闷摩黎山(紫山),据考即今巴颜喀拉山。此次唐朝使者认为的“黄河源头”昆仑山基本与我们今天给出的黄河源头相吻合,也将昆仑山的位置基本固定在黄河西南方向的青海一带。


 

13世纪下半叶,忽必烈建立大元,青藏高原第一次正式纳入中原王朝的行政管辖。元世祖忽必烈设置掌管全国佛教事务并统辖吐蕃地区(今西藏及青海大部)军政事务的机构——宣政院。庞大的疆域和通畅的道路为内地人员对青藏高原进行全方位考察奠定了基础。当时的忽必烈为了建立汉唐都未能达到的功勋,彰显大元对寰宇一统的历史功绩,于至元二十七年(1290),也有说法为十七年(1280),派遣女真人都实从甘肃临夏出发穷探黄河之源头,完成“古无有也”的历史创举。

 

都实首先在唐人的基础上确认了星宿川为黄河源头所在:

 

“有泉百余,泓洳散涣,弗可逼视,方七八十里。履高山下瞰,灿若列星,以故名火敦脑儿,译言‘星宿’也。”

 

即将今天黄河上游星宿海星罗棋布的泉流地带清晰描述为黄河源头。随后又记载:

 

“朵甘思东北有大雪山,名亦耳麻不莫刺,其山最髙,译言腾乞里塔,即昆仑也。”

 

又言黄河先自西向东绕昆仑之南行,随后“河水北行,转西流,过昆仑北”。由此可见,元代定义的昆仑并不在黄河源头处,反而是黄河上游一串被黄河绵延环绕的巨大山脉,以今天的地图观之,恰好是三面为黄河所环绕的今阿尼玛卿山山脉,在中国古代典籍中也被称为“大积石山”,与《尚书·禹贡》中“导河积石”的记载不谋而合,而此处昆仑山的译音“腾乞里塔”很可能也与蒙古语中的腾格里词汇同源,有所谓“天山”之义,即当地人心目中的“神山”。

 

所以,这次对昆仑位置的界定,是古代历史上第一次具有明确记载的亲身地理科学探索的结论,是一次重要诠释。


 

古人对昆仑最为系统性的考察还是在清代。康熙年间,清廷全力平定西北新疆一带的准噶尔部落,当时的青海处于准噶尔、西藏与内地的交通要冲,位于青海境内的和硕特蒙古部落便被视为朝廷重点争取对象。康熙帝借探查河源的机会在当地宣扬朝廷恩威,作为勘察使者的侍卫拉锡与舒兰于康熙四十三年(1704)不辱使命再次来到“星宿海”,得知其周围群山蒙古名为“库尔滚”,认为“即昆仑也”,同时认为从周边“库尔滚”群山中涌出的三条河流(包括黄河上的卡日曲与约古宗列曲)即黄河源头所在,这一发现再次佐证了《山海经》中“河出昆仑”的基本猜想,而此处的库尔滚(坤)山,即今巴颜喀拉山,这一结果也基本与今日现代地理考察所得出的结论相吻合。

 

现代地理学上的昆仑山脉从帕米尔高原发端,沿着塔里木盆地和青藏高原的交界一路向东,在进入青海之后,则沿柴达木盆地南缘向东南延伸,形成巴颜喀拉山脉与阿尼玛卿山等多列山系,而古人对于昆仑位置的探究尽管不尽相同,但终究处在“大昆仑”的范畴之中。


 

纵观古人对昆仑方位的认识,无不与同一时代的疆域广度与社会风貌相联结,昆仑的位置所在不仅是一个神话山脉的位置归属,更是有关华夏龙脉所在的终极探讨,堪舆之书言:

 

“万山一贯,起自昆仑。山龙之散见于地,虽有千万之多,而其龙脉之来,皆出于昆仑。”

 

大秦将昆仑视作求仙访药的神仙居所,汉武帝将昆仑视为汉家西域的明证,昆仑在大唐与吐蕃的交往中撤下隐藏的迷雾,在元代丈量寰宇的脚步中逐渐明晰,最终在清代的一统功业中找到了真实而确切的归宿。

 

巍峨的昆仑山,承载着华夏民族探寻世界寰宇的无限憧憬,矗立于祖国的茫茫西土,守望庇佑着龙之传人。

 


参考文献:

1. 沈婉婷:《中国古代昆仑观念研究》,山东大学博士论文

2.(明)宋濂:《元史》 

3. 中华书局编:《清实录》

4.(宋)欧阳修:《新唐书》

5.(清)顾祖禹:《读史方舆纪要》


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


END
作者 | 王凯迪‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 曲晨溪(实习)‍
校对 | 火炬 李栋 张斌 古月
\"图片\"

国历好物
\"图片\"

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷

\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "category": "", + "link": "http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BD%E5%AE%B6%E4%BA%BA%E6%96%87%E5%8E%86%E5%8F%B2+%E7%A7%A6%E5%A7%8B%E7%9A%87%E6%B1%82%E4%BB%99%E9%97%AE%E8%8D%AF%E7%9A%84%E2%80%9C%E6%98%86%E4%BB%91%E2%80%9D%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F%E5%9D%90%E9%AB%98%E9%93%81%E8%83%BD%E5%88%B0%E5%90%97%EF%BC%9F", + "creator": "", + "pubDate": "Mon, 07 Jul 2025 20:19:00 +0800", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "", + "folder": "人文", + "feed": "国家人文历史", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "af6e862b9d6b3937d4357222bb8a9099", + "highlights": [] + }, + { + "title": "从抱有幻想到全面抗战:七七事变后的关键十日", + "description": "


本 文 约 6000 字

阅 读 需 要 20 分 钟 



消失的士兵


1937年7月7日夜,北平城雷声阵阵,大雨将至。夜幕下,日本“支那驻屯军”第1联队第3大队少佐大队长一木清直麾下的500余名日本兵携带6门步兵炮,气势汹汹地由丰台大营向卢沟桥进发,事态颇为严重。日军向中方提出交涉时,说明了他们这次行动的理由:有一名参与演习的日本士兵失踪,日方要求进入宛平县城搜索。“失踪”的日本士兵叫志村菊次郎,是一名新来的传令兵。关于他的“失踪”,有观点认为完全是日方的“谎称”,但也有人认为“失踪”的确属实,是偶然事件引发的必然冲突。


1937年7月7日夜,北平城雷声阵阵,大雨将至。夜幕下,日本“支那驻屯军”第1联队第3大队少佐大队长一木清直麾下的500余名日本兵携带6门步兵炮,气势汹汹地由丰台大营向卢沟桥进发,事态颇为严重。日军向中方提出交涉时,说明了他们这次行动的理由:有一名参与演习的日本士兵失踪,日方要求进入宛平县城搜索。“失踪”的日本士兵叫志村菊次郎,是一名新来的传令兵。关于他的“失踪”,有观点认为完全是日方的“谎称”,但也有人认为“失踪”的确属实,是偶然事件引发的必然冲突。


日本学界有种观点认为志村菊次郎的确在7月7日夜离队解手,黑暗中因走向与部队相反的方向,故而误了归队的时间,但不久后就找到其所在部队,而此时日军已向中方提出进城搜查的要求。耐人寻味的是,事件并未因志村的归队而平息,作为局中人的志村也跟着部队继续寻找那个“失踪士兵”。


紧接着,日方收到时任国民革命军第29军副军长、北平市市长秦德纯的回复:


“卢沟桥是中国领土,日军未经同意在该地演习,已违背国际公法,妨害我国主权,走失士兵我方不能负责,日方更不得进城搜查,致起误会。惟故念两国友谊,可等天亮后,令该地军警代为寻觅,如查有日本士兵,即行送还。”


按理说,中方的态度已经很配合了,但问题在于日军不完全是为解决问题而来,士兵失踪好像让他们好不容易找到一个理由,一定要好好利用,继续与中方强硬对峙,当时已是7月8日凌晨2时,双方剑拔弩张。


我们常说“七七事变”,顾名思义地认为中日全面战争爆发于7月7日。实际上冲突爆发的时间是在1937年7月8日凌晨。


那个深夜,带头挑衅的日军队长一木清直声称部队遭到中国军队射击,并报告给他的上司牟田口廉也。牟田口这个蛮横的皇道派大佐当即给一木下达了“被敌攻击,当然还击”的命令。尽管多年来中日双方在谁开的第一枪问题上争论不休,但牟田口这个命令无异于下令开火,其战争责任不可推卸。


面对日军咄咄逼人的挑衅,驻守在卢沟桥头的第219团团长吉星文一夜未眠。吉星文是河南扶沟人,因儿时受到族叔吉鸿昌的影响,自幼怀有从戎报国之志向,1922年随吉鸿昌投效西北军。在1933年的长城抗战中,时任国民革命军第29军第37师第109旅第219团营长的吉星文曾带领全营官兵绕袭敌后,击退占领王家村、瓦房村等地的日军,因功被提升为219团团长。1937年的那个雨夜,他将再次走上历史前台。


7月8日凌晨3时30分左右,吉星文接到了副军长秦德纯发来的指示:


“保卫领土是军人天职,对外战争是我军人的荣誉,务即晓得谕全团官兵,牺牲奋斗,坚守阵地,即以宛平与卢沟桥为吾军坟墓,一尺一寸国土,不可轻易让人。”


吉星文接电后当即回复:


“请长官放心,吾团全体官兵已经做好一切战斗准备,誓与宛平城共存亡,卢沟桥不是吾人之坟墓就是敌人之坟墓。”


一木清直终于按捺不住,欲强行入城,被吉星文当即拦阻,宛平城外顿时枪声四起。随后日军又炮轰219团第3营(营长金振中)指挥部,当场炸死士兵2人,炸伤5人。面对入侵之敌,吉星文团立即奋起还击,全面抗战的第一枪就此打响。



战斗刚开始,日军迅速派兵杀害了我军在桥头堡的执勤官兵,并占领桥头堡。为保卫卢沟桥,吉星文赶赴位于最前线的第3营金振中部,向该部发表了坚定的抗日宣言,并亲自挑选了150名精壮官兵,组成敢死队。敢死队被编成5个组,每人带步枪1支,手榴弹2枚,大刀一把,悄然向桥头堡进攻。队员对地形十分熟悉,加上第29军中向来重视武术训练,他们很快摸上桥头堡,乘拒守的日军还比较少的时机一举将其歼灭,夺回阵地。日军失去桥头堡后以轻重炮向我守军猛烈轰击,由于吉星文团拼死抵抗,首次激烈冲突之后,中日双方进入打打谈谈的阶段。


或许当时连吉星文、金振中以及驻守桥头的第29军219团的将士们都没想到,7月8日的雨夜,他们坚定的抵抗意志已为中华民族揭开了卫国战争之序章。


战和之间


卢沟桥事变爆发,日本大本营首先吵开了锅,日军高层对战事的主张分为“扩大派”和“不扩大派”,当初作为九一八事变始作俑者之一的石原莞尔此时竟成了“扩大派”的反对者,他甚至提出日军立即停止冲突,让在场“扩大派”军人瞠目结舌。8日的日本内阁会议上,支持所谓事件不扩大,就地解决方针的一派占据优势,但也正是这个信息麻痹了中方领导层。


直接当事人,第29军军长宋哲元同样没有意识到事态严重,认为冲突可以靠和谈解决。宋哲元之所以有此自信,主要是在北平,中国军队在人数上占绝对优势。日本驻屯华北的军队主力为混成第4旅,共6000人左右。而驻守冀察平津地区的第29军,连同地方保安部队,总兵力约10万人。事变爆发后,他严令29军坚守卢沟桥,并将事变向南京报告。

同时,也派北平市市长秦德纯与日军交涉。9日,宋哲元
当局与日军达成协议:第一,双方立即停止射击;第二,日军撤退至永定河左岸,中国军队撤至右岸;第三,卢沟桥守备由河北保安队石友三部担任。北平形势看似转危为安,宋哲元也认为在守住大原则的情况下息事宁人是最好的。但就在协议达成的第二天,各方媒体纷纷报道,天津、古北口、榆关等处陆续有日军部队出现,携带有大炮、坦克等向卢沟桥前进。

卢沟桥事变后日本最激进的主要是关东军,半年多前的绥远抗战让关东军一度吃瘪,终于等来这次“机会”,当然要亲自上阵,把“支那驻屯军”乃至整个日本军部绑上战车。大井村五里店等处被日军占领,平卢路也瘫痪,关东军来者不善。

果然,到了11日,日军的大炮就对准宛平城一带轰击,造成不少平民伤亡,吉星文将城内居民向城外比较安全的地带疏散,自己也在炮击中负伤。随后,八宝山、长辛店、廊坊、杨村等处也燃起战火。日军的飞机开始在北平上空频频出现,四处侦察。日军这么一打,平津当局在交涉中姿态放得更低了,与之达成协议,即:一、第29军代表声明向日军表示道歉,并惩办此次事变责任者;二、取缔共产党、蓝衣社及其他抗日团体的抗日活动;三、永定河以东不驻中国军队。宋哲元是打算向日军让步妥协了。

蒋介石的意思再明白不过,他相信日本关东军必会增援日军华北驻屯军,要第29军加紧备战。次日中午,蒋又电话告知秦德纯:“据确息,关东有五列车今日上午十一时到达天津与塘沽之间,请注意。”同时致电宋哲元,要他对卢沟桥的日军就地抵抗。从解密的第一手电文和手令来看,难免会觉得北平当局软弱,而身在南京的最高统帅蒋介石深谋远虑,知道全面抗战关头已来到,一再督促29军抵抗,不要再做和平幻想,着实高瞻远瞩。如此下定论恐怕还太早,翻开蒋介石的私人日记,委员长会亲自告诉你,他的强硬态度并非为了要和日本人大干一场,而是打着另一个算盘。


以战止战


前文说过,七七事变真正爆发冲突的时间是7月8日凌晨,蒋介石接到消息的时间自然也是8日,但他与宋哲元一样,都没有意识到全面战争会打响。蒋在当天晚上的日记中提出了三个问题:第一,日本人在卢沟桥挑衅,是想达到逼我屈服的目的?第二,或许他们是与宋哲元为难,使华北“独立”?第三,现在是与日本人决战的时候了吗?最后他还是认为“此时倭无与我开战之利”,全面战争不会爆发。


7月9日的日记显示,蒋介石将卢沟桥事变看作一次与日方博弈的机会,之所以要用强硬姿态唬住日军,是想“乘此次冲突之机,对倭可否进一步要求其撤退丰台之倭兵,或取消冀东伪组织”。蒋介石“积极运兵北上备战”“准备动员,不避战争”等计划的动机有两种可能:其一,他意识到卢案可能引发全面战争,真的在积极备战。其二,备战的目的是为了像绥远那样,好好地打一场局部战争,打赢了即以外交手段迫使日本从丰台撤兵,再干掉殷汝耕的冀东伪政权。结合现有史料来看,第二种可能性高于第一种。10日,蒋介石得知日军反攻卢沟桥后,在日记中云:

“惟我已积极运兵北上备战,或可戢其野心,我军已开始北进,彼或于明日停战乎。”

11日至13日,蒋介石发给北平的电令几乎都是寸土不让,不要做和平幻想,不要避战等等,态度颇为坚决。但在他自己留下的日记中,这一系列动作又显然不是真正在准备全面抗战,而是想以战止战,火中取栗。

蒋介石将七七事变视为中国在华北问题上重新立于主动地位的机会,对宋哲元保守避战,生怕扩大事态的态度尤其不满。他始终相信日本挑衅的目的在于华北,而不会波及整个中国,日方增兵是为了迫使中方屈服,所以他偏要出兵华北,甚至不惜在华北打场小仗,只要中央军大军一到,日方或许就会停战。这种莫名的自信持续到12日才出现变化。这天,蒋介石接到情报,得知日本内阁宣言决定支持增兵中国,关东军也已抵达天津,他终于意识到卢案引发全面战争的可能性越来越大,做出七七事变“势必扩大,不能避战矣”的推测,但仍坚持“非至万不得已,不宜宣战”。

箭在弦上


7月12日夜到7月13日晨,日本“支那驻屯军”高层与国民政府的领导者蒋介石都彻夜未眠。13日凌晨,日方参谋会议连夜草拟的《七月十三日的中国驻屯军情况判断》出炉,其中有增援部队到达后,“必要时一举歼灭第29军”的计划。蒋介石经过一夜的考虑,也在13日决定:抽调高射炮部队增援,弹药武器立即启程送往华北。外交方面,他已经于两日前与英国大使说明运兵北上的原因是“日本关东军进入天津、丰台作大规模之战争,故不得不运兵预防”,打消列强势力的疑虑。接下来就是要发表对日宣言,公开中央军进驻保定的消息。

事态发展至此,日本与南京的态度都转向强硬,唯有处于风口浪尖的北平当局成了主和派。13日,中日双方在永定门外发生冲突,“支那驻屯军”司令香月清司乘机向冀察政务委员会提出七项要求:一、彻底镇压共产党的策动;二、罢免排日要人;三、撤去驻在冀察的排日中央系统各机关;四、撤去冀察排日团体;五、取缔排日言论及宣传机关和学生、民众的排日运动;六、取缔学校、军队的排日教育;七、北平的警备将来由公安部队负责,城内不得驻屯军队。可以说完全是个城下之盟。

针对事变恶化,第29军高层召集会议,会上主战派与主和派发生争执,最后张自忠等主和派占了上风。平津当局最高负责人宋哲元也是倾向主和的,他在会后的公开谈话中说了一通大道理:

“此次卢沟桥发生事件,实为东亚之不幸,局部之冲突能随时解决,尚为不幸中之大幸。……余向主和平,爱护人群,决不愿以人类做无益社会之牺牲。合法合理,社会即可平安;能平即和,不平即不能和。希望负责任者以东亚大局为重。若只知个人利益,则国家有兴有亡,兴亡之数,殊非尽为吾人所能意料也。”

对北平当局一系列妥协政策,南京方面大为惊骇,当天军政部长何应钦就给宋哲元发出紧急电报,告知“津市遍布日军,兄在津万分危险,务祈即刻秘密赴保”,催促其到保定去作战。同日,宋哲元还收到了蒋介石发来的电文:

“卢案必不能和平解决。无论我方允许其任何条件,而对方的目的,则以冀察为不驻兵区域与区内组织用人皆得其同意,造成第二冀东(伪政权)。若不做到此步,则彼必得寸进尺,决无已时。中正已决心运用全力抗战,宁为玉碎,不为瓦全,以保持国家与个人之人格……”

南京方面的态度不仅是催促第29军作战,从13日起,驻扎在陕西、河南、湖北、安徽、江苏等地的部队陆续收到蒋介石下达的正式动员令,命令这些地区的部队向以郑州为中心的陇海、平汉铁路沿线集结。山东省政府主席韩复榘也收到防卫津浦路北线的命令。此外,平汉、陇海、津浦三个铁路局奉命集结军用列车,所有轮船公司也将船舶回航到指定地点待命。局势箭在弦上,不得不发。

最后关头


庐山是民国时期的政治名山,南京酷暑,适合避暑的庐山成了南京国民政府军政要员的“夏都”。从1937年6月23日起,中国社会各界的名流巨卿们,相继收到一份特殊的请柬,邀请他们到庐山开会。按照原计划,7月15日起的一个月内,分三期邀请200余人到庐山参加谈话,目的是为了征询各界对内政外交的意见。但因七七事变爆发,1937年的炎夏,齐聚庐山的军政要人、社会名流已没有游览避暑胜地的闲情,空气布满紧张的气氛,大战即将来临!

7月15日,也就是中国共产党公布国共合作宣言的这一天,蒋介石接到北平宋哲元的来电,得知宋有想放弃天津的意思,蒋严令制止。

7月17日,庐山谈话会第二次全体会议现场气氛严肃,主席台两旁“养天地正气,法古今完人”的对联格外醒目,所有人的关注点都聚焦在委员长蒋介石身上。一身戎装的他以激扬的言辞发表了头一天起草好的抗战宣言。对于卢沟桥事变,蒋介石表明立场,任何解决都不得侵害中国主权与领土之完整,因为“北平若可变成沈阳,南京又何尝不可变成北平!所以卢沟桥事变的推演,是关系中国国家整个的问题,此事能否结束,就是最后关头的境界”。宣言中,他总结了自九一八事变到塘沽协定后的教训,中国已无路可退,言明我们希望和平但不要苟安,我们决不求战但随时准备迎战,“如果战端一开,那就是地无分南北,年无分老幼,无论何人,皆有守土抗战之责任,皆应抱定牺牲一切之决心。”“万一真到了无可避免的最后关头,我们当然只有牺牲,只有抗战。”


7月20日,庐山抗战谈话一经公开发表,全国哗然,充满抗日热情的军民士气为之一振,纷纷表示拥护委员长领导抗战。但另一些对抗战前途持悲观态度的人士认为此宣言将使中国大祸临头,“低调俱乐部”的一干文人、政客甚至将蒋介石等力主抗战救亡的论调讥讽为“歇斯底里的风气”。

从7月7日夜的日本士兵失踪案到7月17日庐山抗战宣言,是中日两国走向全面战争的关键十日。

抛开自七七以来半个多月的打打停停,北平真正的激战只有4天。从7月25日晚起,大量前来增援的日军对廊坊第38师发起攻击,次日进攻广安门,北平形势急剧恶化。7月27日,蒋介石已经预料到北平凶多吉少,并开始郑重考虑“万一北平被陷,则战(宣战)与和(停战)以及不战不和(应战),与一面交涉一面抵抗之国策”。这一天夜晚,第29军第132师师长赵登禹也奉命抵达南苑,与副军长佟凌阁部署与制定作战计划。次日早上8时,日军对南苑展开了猛烈进攻,在空中与地面炮火支援的掩护下,日军第20师团高木义人旅团迅速攻至南苑机场。赵登禹闻讯,急忙赶往机场督战。第29军以大刀闻名,但此次面对强敌,仅凭血肉毕竟不能筑成真正御敌的长城,日军猛烈炮火攻势下,第29军伤亡惨重,被迫退入南苑主阵地,赵登禹也接到撤入北平城内的命令。


由于汉奸出卖情报,赵登禹撤退的路线被日军获知,“支那驻屯军”步兵旅团第1联队第3大队事先进行埋伏。28日中午12时40分左右,当赵登禹将军的车队途经大红门时,突然遭到日军伏兵的袭击,赵登禹身中数弹,不幸牺牲。同日,第29军副军长佟凌阁将军率200余人撤退至大红门附近,忽然枪声四起,埋伏于此的日军展开攻击,混战中,佟凌阁腿部被日军的机枪射中,血流如注。卫士劝他先撤下火线,利用庄稼地撤出日军包围圈,但佟凌阁心系随行学生的安危,拒绝了这一建议。一场血战下来,佟凌阁身边仅剩数十人,祸不单行,部队刚突围至时村就被日本关东军飞行团的轰炸机发现,遭到猛烈轰炸,正在指挥作战的佟凌阁不幸头部中弹,当场牺牲,甚至没能留下一句遗言。而在其殉国后,报纸误将“佟凌阁”写成了“佟麟阁”,此名一直误传至今。

南苑失守,赵、佟两位将军殉国,宋哲元撤离北平……一连几天南京接到的都是坏消息,蒋介石闻之焦心如焚。29日,北平沦陷,第29军被迫撤离北平。同一天,天津也被日军占领。消息传来,蒋介石哀叹“可悲孰甚!”平津相继沦陷,举国震动,也使蒋介石意识到抗战之必要,彻底放弃和平幻想,明言:

“平津既陷,人民荼毒至此,虽欲不战,亦不可得,否则国内必起分崩之祸,与其国内分崩,不如抗倭作战。”


抗战的一天来到了。战火从华北烧到华东,再由华东蔓延华南,中国并未如山杉元所断言的那样,一个月就被征服。北起卢沟桥,南至惠通桥,一寸河山一寸血,抗战从未停止,直至1945年8月15日昭和天皇宣布无条件投降。最后,说说七七事变中几名日方关键人物的结局,罪魁牟田口廉也,二战后以战犯罪名被捕入狱,1948年3月被释放回国,死于1966年;侵略卢沟桥的急先锋一木清直,从侵华战场打到太平洋战场,1942年在瓜岛的泰纳鲁河口之战中,一木清直支队遭美军围困,一木本人于绝望中切腹自杀,该支队全军覆没;“消失的士兵”士兵志村菊次郎,七七事变后还是冲锋陷阵的士兵,一直活到1944年,随部在缅甸作战时被中国远征军击毙,这个影响历史的小人物终究还是成为昭和战争的祭品。

本文改编自《国家人文历史》2017年7月上,原标题为《卢沟晓月,雾掩庐山  走向全面战争的关键十日》,有删节,本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


\"图片\"
END
作者 | 周渝
编辑 | 胡心雅
主编 | 周斌
排版 | 曲晨溪(实习)
校对 | 戈雨
\"图片\"
\"图片\"

推荐 

“马甲”一词

从冷兵器时代的战马嘶鸣

到霓裳羽衣的时尚舞台

其含义的沧海桑田

恰如一面棱镜

折射出华夏服饰文化

随社会变迁而流转生辉的壮阔历程

本期,就让我们一同走进这幅

从金戈铁马到衣冠风流的完整画卷

点击下方封面,即可购买

↓↓↓

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "content": "


本 文 约 6000 字

阅 读 需 要 20 分 钟 



消失的士兵


1937年7月7日夜,北平城雷声阵阵,大雨将至。夜幕下,日本“支那驻屯军”第1联队第3大队少佐大队长一木清直麾下的500余名日本兵携带6门步兵炮,气势汹汹地由丰台大营向卢沟桥进发,事态颇为严重。日军向中方提出交涉时,说明了他们这次行动的理由:有一名参与演习的日本士兵失踪,日方要求进入宛平县城搜索。“失踪”的日本士兵叫志村菊次郎,是一名新来的传令兵。关于他的“失踪”,有观点认为完全是日方的“谎称”,但也有人认为“失踪”的确属实,是偶然事件引发的必然冲突。


1937年7月7日夜,北平城雷声阵阵,大雨将至。夜幕下,日本“支那驻屯军”第1联队第3大队少佐大队长一木清直麾下的500余名日本兵携带6门步兵炮,气势汹汹地由丰台大营向卢沟桥进发,事态颇为严重。日军向中方提出交涉时,说明了他们这次行动的理由:有一名参与演习的日本士兵失踪,日方要求进入宛平县城搜索。“失踪”的日本士兵叫志村菊次郎,是一名新来的传令兵。关于他的“失踪”,有观点认为完全是日方的“谎称”,但也有人认为“失踪”的确属实,是偶然事件引发的必然冲突。


日本学界有种观点认为志村菊次郎的确在7月7日夜离队解手,黑暗中因走向与部队相反的方向,故而误了归队的时间,但不久后就找到其所在部队,而此时日军已向中方提出进城搜查的要求。耐人寻味的是,事件并未因志村的归队而平息,作为局中人的志村也跟着部队继续寻找那个“失踪士兵”。


紧接着,日方收到时任国民革命军第29军副军长、北平市市长秦德纯的回复:


“卢沟桥是中国领土,日军未经同意在该地演习,已违背国际公法,妨害我国主权,走失士兵我方不能负责,日方更不得进城搜查,致起误会。惟故念两国友谊,可等天亮后,令该地军警代为寻觅,如查有日本士兵,即行送还。”


按理说,中方的态度已经很配合了,但问题在于日军不完全是为解决问题而来,士兵失踪好像让他们好不容易找到一个理由,一定要好好利用,继续与中方强硬对峙,当时已是7月8日凌晨2时,双方剑拔弩张。


我们常说“七七事变”,顾名思义地认为中日全面战争爆发于7月7日。实际上冲突爆发的时间是在1937年7月8日凌晨。


那个深夜,带头挑衅的日军队长一木清直声称部队遭到中国军队射击,并报告给他的上司牟田口廉也。牟田口这个蛮横的皇道派大佐当即给一木下达了“被敌攻击,当然还击”的命令。尽管多年来中日双方在谁开的第一枪问题上争论不休,但牟田口这个命令无异于下令开火,其战争责任不可推卸。


面对日军咄咄逼人的挑衅,驻守在卢沟桥头的第219团团长吉星文一夜未眠。吉星文是河南扶沟人,因儿时受到族叔吉鸿昌的影响,自幼怀有从戎报国之志向,1922年随吉鸿昌投效西北军。在1933年的长城抗战中,时任国民革命军第29军第37师第109旅第219团营长的吉星文曾带领全营官兵绕袭敌后,击退占领王家村、瓦房村等地的日军,因功被提升为219团团长。1937年的那个雨夜,他将再次走上历史前台。


7月8日凌晨3时30分左右,吉星文接到了副军长秦德纯发来的指示:


“保卫领土是军人天职,对外战争是我军人的荣誉,务即晓得谕全团官兵,牺牲奋斗,坚守阵地,即以宛平与卢沟桥为吾军坟墓,一尺一寸国土,不可轻易让人。”


吉星文接电后当即回复:


“请长官放心,吾团全体官兵已经做好一切战斗准备,誓与宛平城共存亡,卢沟桥不是吾人之坟墓就是敌人之坟墓。”


一木清直终于按捺不住,欲强行入城,被吉星文当即拦阻,宛平城外顿时枪声四起。随后日军又炮轰219团第3营(营长金振中)指挥部,当场炸死士兵2人,炸伤5人。面对入侵之敌,吉星文团立即奋起还击,全面抗战的第一枪就此打响。



战斗刚开始,日军迅速派兵杀害了我军在桥头堡的执勤官兵,并占领桥头堡。为保卫卢沟桥,吉星文赶赴位于最前线的第3营金振中部,向该部发表了坚定的抗日宣言,并亲自挑选了150名精壮官兵,组成敢死队。敢死队被编成5个组,每人带步枪1支,手榴弹2枚,大刀一把,悄然向桥头堡进攻。队员对地形十分熟悉,加上第29军中向来重视武术训练,他们很快摸上桥头堡,乘拒守的日军还比较少的时机一举将其歼灭,夺回阵地。日军失去桥头堡后以轻重炮向我守军猛烈轰击,由于吉星文团拼死抵抗,首次激烈冲突之后,中日双方进入打打谈谈的阶段。


或许当时连吉星文、金振中以及驻守桥头的第29军219团的将士们都没想到,7月8日的雨夜,他们坚定的抵抗意志已为中华民族揭开了卫国战争之序章。


战和之间


卢沟桥事变爆发,日本大本营首先吵开了锅,日军高层对战事的主张分为“扩大派”和“不扩大派”,当初作为九一八事变始作俑者之一的石原莞尔此时竟成了“扩大派”的反对者,他甚至提出日军立即停止冲突,让在场“扩大派”军人瞠目结舌。8日的日本内阁会议上,支持所谓事件不扩大,就地解决方针的一派占据优势,但也正是这个信息麻痹了中方领导层。


直接当事人,第29军军长宋哲元同样没有意识到事态严重,认为冲突可以靠和谈解决。宋哲元之所以有此自信,主要是在北平,中国军队在人数上占绝对优势。日本驻屯华北的军队主力为混成第4旅,共6000人左右。而驻守冀察平津地区的第29军,连同地方保安部队,总兵力约10万人。事变爆发后,他严令29军坚守卢沟桥,并将事变向南京报告。

同时,也派北平市市长秦德纯与日军交涉。9日,宋哲元
当局与日军达成协议:第一,双方立即停止射击;第二,日军撤退至永定河左岸,中国军队撤至右岸;第三,卢沟桥守备由河北保安队石友三部担任。北平形势看似转危为安,宋哲元也认为在守住大原则的情况下息事宁人是最好的。但就在协议达成的第二天,各方媒体纷纷报道,天津、古北口、榆关等处陆续有日军部队出现,携带有大炮、坦克等向卢沟桥前进。

卢沟桥事变后日本最激进的主要是关东军,半年多前的绥远抗战让关东军一度吃瘪,终于等来这次“机会”,当然要亲自上阵,把“支那驻屯军”乃至整个日本军部绑上战车。大井村五里店等处被日军占领,平卢路也瘫痪,关东军来者不善。

果然,到了11日,日军的大炮就对准宛平城一带轰击,造成不少平民伤亡,吉星文将城内居民向城外比较安全的地带疏散,自己也在炮击中负伤。随后,八宝山、长辛店、廊坊、杨村等处也燃起战火。日军的飞机开始在北平上空频频出现,四处侦察。日军这么一打,平津当局在交涉中姿态放得更低了,与之达成协议,即:一、第29军代表声明向日军表示道歉,并惩办此次事变责任者;二、取缔共产党、蓝衣社及其他抗日团体的抗日活动;三、永定河以东不驻中国军队。宋哲元是打算向日军让步妥协了。

蒋介石的意思再明白不过,他相信日本关东军必会增援日军华北驻屯军,要第29军加紧备战。次日中午,蒋又电话告知秦德纯:“据确息,关东有五列车今日上午十一时到达天津与塘沽之间,请注意。”同时致电宋哲元,要他对卢沟桥的日军就地抵抗。从解密的第一手电文和手令来看,难免会觉得北平当局软弱,而身在南京的最高统帅蒋介石深谋远虑,知道全面抗战关头已来到,一再督促29军抵抗,不要再做和平幻想,着实高瞻远瞩。如此下定论恐怕还太早,翻开蒋介石的私人日记,委员长会亲自告诉你,他的强硬态度并非为了要和日本人大干一场,而是打着另一个算盘。


以战止战


前文说过,七七事变真正爆发冲突的时间是7月8日凌晨,蒋介石接到消息的时间自然也是8日,但他与宋哲元一样,都没有意识到全面战争会打响。蒋在当天晚上的日记中提出了三个问题:第一,日本人在卢沟桥挑衅,是想达到逼我屈服的目的?第二,或许他们是与宋哲元为难,使华北“独立”?第三,现在是与日本人决战的时候了吗?最后他还是认为“此时倭无与我开战之利”,全面战争不会爆发。


7月9日的日记显示,蒋介石将卢沟桥事变看作一次与日方博弈的机会,之所以要用强硬姿态唬住日军,是想“乘此次冲突之机,对倭可否进一步要求其撤退丰台之倭兵,或取消冀东伪组织”。蒋介石“积极运兵北上备战”“准备动员,不避战争”等计划的动机有两种可能:其一,他意识到卢案可能引发全面战争,真的在积极备战。其二,备战的目的是为了像绥远那样,好好地打一场局部战争,打赢了即以外交手段迫使日本从丰台撤兵,再干掉殷汝耕的冀东伪政权。结合现有史料来看,第二种可能性高于第一种。10日,蒋介石得知日军反攻卢沟桥后,在日记中云:

“惟我已积极运兵北上备战,或可戢其野心,我军已开始北进,彼或于明日停战乎。”

11日至13日,蒋介石发给北平的电令几乎都是寸土不让,不要做和平幻想,不要避战等等,态度颇为坚决。但在他自己留下的日记中,这一系列动作又显然不是真正在准备全面抗战,而是想以战止战,火中取栗。

蒋介石将七七事变视为中国在华北问题上重新立于主动地位的机会,对宋哲元保守避战,生怕扩大事态的态度尤其不满。他始终相信日本挑衅的目的在于华北,而不会波及整个中国,日方增兵是为了迫使中方屈服,所以他偏要出兵华北,甚至不惜在华北打场小仗,只要中央军大军一到,日方或许就会停战。这种莫名的自信持续到12日才出现变化。这天,蒋介石接到情报,得知日本内阁宣言决定支持增兵中国,关东军也已抵达天津,他终于意识到卢案引发全面战争的可能性越来越大,做出七七事变“势必扩大,不能避战矣”的推测,但仍坚持“非至万不得已,不宜宣战”。

箭在弦上


7月12日夜到7月13日晨,日本“支那驻屯军”高层与国民政府的领导者蒋介石都彻夜未眠。13日凌晨,日方参谋会议连夜草拟的《七月十三日的中国驻屯军情况判断》出炉,其中有增援部队到达后,“必要时一举歼灭第29军”的计划。蒋介石经过一夜的考虑,也在13日决定:抽调高射炮部队增援,弹药武器立即启程送往华北。外交方面,他已经于两日前与英国大使说明运兵北上的原因是“日本关东军进入天津、丰台作大规模之战争,故不得不运兵预防”,打消列强势力的疑虑。接下来就是要发表对日宣言,公开中央军进驻保定的消息。

事态发展至此,日本与南京的态度都转向强硬,唯有处于风口浪尖的北平当局成了主和派。13日,中日双方在永定门外发生冲突,“支那驻屯军”司令香月清司乘机向冀察政务委员会提出七项要求:一、彻底镇压共产党的策动;二、罢免排日要人;三、撤去驻在冀察的排日中央系统各机关;四、撤去冀察排日团体;五、取缔排日言论及宣传机关和学生、民众的排日运动;六、取缔学校、军队的排日教育;七、北平的警备将来由公安部队负责,城内不得驻屯军队。可以说完全是个城下之盟。

针对事变恶化,第29军高层召集会议,会上主战派与主和派发生争执,最后张自忠等主和派占了上风。平津当局最高负责人宋哲元也是倾向主和的,他在会后的公开谈话中说了一通大道理:

“此次卢沟桥发生事件,实为东亚之不幸,局部之冲突能随时解决,尚为不幸中之大幸。……余向主和平,爱护人群,决不愿以人类做无益社会之牺牲。合法合理,社会即可平安;能平即和,不平即不能和。希望负责任者以东亚大局为重。若只知个人利益,则国家有兴有亡,兴亡之数,殊非尽为吾人所能意料也。”

对北平当局一系列妥协政策,南京方面大为惊骇,当天军政部长何应钦就给宋哲元发出紧急电报,告知“津市遍布日军,兄在津万分危险,务祈即刻秘密赴保”,催促其到保定去作战。同日,宋哲元还收到了蒋介石发来的电文:

“卢案必不能和平解决。无论我方允许其任何条件,而对方的目的,则以冀察为不驻兵区域与区内组织用人皆得其同意,造成第二冀东(伪政权)。若不做到此步,则彼必得寸进尺,决无已时。中正已决心运用全力抗战,宁为玉碎,不为瓦全,以保持国家与个人之人格……”

南京方面的态度不仅是催促第29军作战,从13日起,驻扎在陕西、河南、湖北、安徽、江苏等地的部队陆续收到蒋介石下达的正式动员令,命令这些地区的部队向以郑州为中心的陇海、平汉铁路沿线集结。山东省政府主席韩复榘也收到防卫津浦路北线的命令。此外,平汉、陇海、津浦三个铁路局奉命集结军用列车,所有轮船公司也将船舶回航到指定地点待命。局势箭在弦上,不得不发。

最后关头


庐山是民国时期的政治名山,南京酷暑,适合避暑的庐山成了南京国民政府军政要员的“夏都”。从1937年6月23日起,中国社会各界的名流巨卿们,相继收到一份特殊的请柬,邀请他们到庐山开会。按照原计划,7月15日起的一个月内,分三期邀请200余人到庐山参加谈话,目的是为了征询各界对内政外交的意见。但因七七事变爆发,1937年的炎夏,齐聚庐山的军政要人、社会名流已没有游览避暑胜地的闲情,空气布满紧张的气氛,大战即将来临!

7月15日,也就是中国共产党公布国共合作宣言的这一天,蒋介石接到北平宋哲元的来电,得知宋有想放弃天津的意思,蒋严令制止。

7月17日,庐山谈话会第二次全体会议现场气氛严肃,主席台两旁“养天地正气,法古今完人”的对联格外醒目,所有人的关注点都聚焦在委员长蒋介石身上。一身戎装的他以激扬的言辞发表了头一天起草好的抗战宣言。对于卢沟桥事变,蒋介石表明立场,任何解决都不得侵害中国主权与领土之完整,因为“北平若可变成沈阳,南京又何尝不可变成北平!所以卢沟桥事变的推演,是关系中国国家整个的问题,此事能否结束,就是最后关头的境界”。宣言中,他总结了自九一八事变到塘沽协定后的教训,中国已无路可退,言明我们希望和平但不要苟安,我们决不求战但随时准备迎战,“如果战端一开,那就是地无分南北,年无分老幼,无论何人,皆有守土抗战之责任,皆应抱定牺牲一切之决心。”“万一真到了无可避免的最后关头,我们当然只有牺牲,只有抗战。”


7月20日,庐山抗战谈话一经公开发表,全国哗然,充满抗日热情的军民士气为之一振,纷纷表示拥护委员长领导抗战。但另一些对抗战前途持悲观态度的人士认为此宣言将使中国大祸临头,“低调俱乐部”的一干文人、政客甚至将蒋介石等力主抗战救亡的论调讥讽为“歇斯底里的风气”。

从7月7日夜的日本士兵失踪案到7月17日庐山抗战宣言,是中日两国走向全面战争的关键十日。

抛开自七七以来半个多月的打打停停,北平真正的激战只有4天。从7月25日晚起,大量前来增援的日军对廊坊第38师发起攻击,次日进攻广安门,北平形势急剧恶化。7月27日,蒋介石已经预料到北平凶多吉少,并开始郑重考虑“万一北平被陷,则战(宣战)与和(停战)以及不战不和(应战),与一面交涉一面抵抗之国策”。这一天夜晚,第29军第132师师长赵登禹也奉命抵达南苑,与副军长佟凌阁部署与制定作战计划。次日早上8时,日军对南苑展开了猛烈进攻,在空中与地面炮火支援的掩护下,日军第20师团高木义人旅团迅速攻至南苑机场。赵登禹闻讯,急忙赶往机场督战。第29军以大刀闻名,但此次面对强敌,仅凭血肉毕竟不能筑成真正御敌的长城,日军猛烈炮火攻势下,第29军伤亡惨重,被迫退入南苑主阵地,赵登禹也接到撤入北平城内的命令。


由于汉奸出卖情报,赵登禹撤退的路线被日军获知,“支那驻屯军”步兵旅团第1联队第3大队事先进行埋伏。28日中午12时40分左右,当赵登禹将军的车队途经大红门时,突然遭到日军伏兵的袭击,赵登禹身中数弹,不幸牺牲。同日,第29军副军长佟凌阁将军率200余人撤退至大红门附近,忽然枪声四起,埋伏于此的日军展开攻击,混战中,佟凌阁腿部被日军的机枪射中,血流如注。卫士劝他先撤下火线,利用庄稼地撤出日军包围圈,但佟凌阁心系随行学生的安危,拒绝了这一建议。一场血战下来,佟凌阁身边仅剩数十人,祸不单行,部队刚突围至时村就被日本关东军飞行团的轰炸机发现,遭到猛烈轰炸,正在指挥作战的佟凌阁不幸头部中弹,当场牺牲,甚至没能留下一句遗言。而在其殉国后,报纸误将“佟凌阁”写成了“佟麟阁”,此名一直误传至今。

南苑失守,赵、佟两位将军殉国,宋哲元撤离北平……一连几天南京接到的都是坏消息,蒋介石闻之焦心如焚。29日,北平沦陷,第29军被迫撤离北平。同一天,天津也被日军占领。消息传来,蒋介石哀叹“可悲孰甚!”平津相继沦陷,举国震动,也使蒋介石意识到抗战之必要,彻底放弃和平幻想,明言:

“平津既陷,人民荼毒至此,虽欲不战,亦不可得,否则国内必起分崩之祸,与其国内分崩,不如抗倭作战。”


抗战的一天来到了。战火从华北烧到华东,再由华东蔓延华南,中国并未如山杉元所断言的那样,一个月就被征服。北起卢沟桥,南至惠通桥,一寸河山一寸血,抗战从未停止,直至1945年8月15日昭和天皇宣布无条件投降。最后,说说七七事变中几名日方关键人物的结局,罪魁牟田口廉也,二战后以战犯罪名被捕入狱,1948年3月被释放回国,死于1966年;侵略卢沟桥的急先锋一木清直,从侵华战场打到太平洋战场,1942年在瓜岛的泰纳鲁河口之战中,一木清直支队遭美军围困,一木本人于绝望中切腹自杀,该支队全军覆没;“消失的士兵”士兵志村菊次郎,七七事变后还是冲锋陷阵的士兵,一直活到1944年,随部在缅甸作战时被中国远征军击毙,这个影响历史的小人物终究还是成为昭和战争的祭品。

本文改编自《国家人文历史》2017年7月上,原标题为《卢沟晓月,雾掩庐山  走向全面战争的关键十日》,有删节,本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


\"图片\"
END
作者 | 周渝
编辑 | 胡心雅
主编 | 周斌
排版 | 曲晨溪(实习)
校对 | 戈雨
\"图片\"
\"图片\"

推荐 

“马甲”一词

从冷兵器时代的战马嘶鸣

到霓裳羽衣的时尚舞台

其含义的沧海桑田

恰如一面棱镜

折射出华夏服饰文化

随社会变迁而流转生辉的壮阔历程

本期,就让我们一同走进这幅

从金戈铁马到衣冠风流的完整画卷

点击下方封面,即可购买

↓↓↓

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "category": "", + "link": "http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BD%E5%AE%B6%E4%BA%BA%E6%96%87%E5%8E%86%E5%8F%B2+%E4%BB%8E%E6%8A%B1%E6%9C%89%E5%B9%BB%E6%83%B3%E5%88%B0%E5%85%A8%E9%9D%A2%E6%8A%97%E6%88%98%EF%BC%9A%E4%B8%83%E4%B8%83%E4%BA%8B%E5%8F%98%E5%90%8E%E7%9A%84%E5%85%B3%E9%94%AE%E5%8D%81%E6%97%A5", + "creator": "", + "pubDate": "Mon, 07 Jul 2025 11:42:00 +0800", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "", + "folder": "人文", + "feed": "国家人文历史", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "f23d99cc77203e465430048665455d5c", + "highlights": [] + }, + { + "title": "在古代,急行军一天一夜能走多少里?", + "description": "


本 文 约 3700 字

阅 读 需 要 12 分 钟 


嘉靖二十九年(1550)八月,鞑靼部首领俺达汗在久围大同不克之后,移寇东去,自古北口长驱,杀掠怀柔、顺义吏民无算,明军一触即溃,立营于潞河东二十里之孤山(今通州东北)、汝口等处,兵锋直指京畿,京师戒严。

彼时的大明京师,自土木堡之变后久未遭兵祸,嘉靖皇帝急忙下令各镇边军入京畿勤王,此时的明军边帅仇鸾在居庸关暂住听征,当俺达突袭进入京畿后,仇鸾听诏八月十七日(戊寅)从居庸关出发,八月十八日(己卯)抵达通州列阵,仅仅一天一夜,急行约莫150里(此为明里计数,1明里为180丈,约莫现代560米),救援速度之快让嘉靖皇帝都感到十分惊喜。


那么,昼夜奔袭150里的急行军,在古代军队中是否很难实现,古代的急行军一天大多能走多少里?


困难重重:被制约的行军速度


“所谓踵军者,去大军百里,期于会地,为三日熟食,前军而行,为战合之表。”
                                               ——《尉缭子》

在先秦时期的兵法著作《尉缭子》中,记述了那个时代真实的行军速度,步兵日行仅为30-40里速度。虽然军事科技和道路条件在不断发展,但是自秦汉到明清,关于行军速度这一方面,一直没能取得太大的进步,《尉缭子》中提到的行军速度,也是古代军队普遍的速度,要了解这个问题,首先要从古代行军条件身上说起。

军队规模、道路系统以及辎重补给,都是决定军队行军速度的重要因素,但这些条件在古代都饱受制约。


在古代,道路条件相对十分恶劣,一支庞大的军队行进时会面临诸多困难。而行军速度的快慢往往取决于其中最慢的部分,也就是辎重运输的速度。古代行军辎重的运输一般使用车辆、驮马,位于军队的后方,当辎重部队行进时,道路已然经过大部队踩踏,更加崎岖难行,势必会拖累行军的整体速度。

除此之外,行军路上的各种防护、探查等必要的安全措施,也会显著延缓军队的行进速度。

在影视剧中,士兵们甲胄齐整地行军是常见的场景,但在古代战场上,这种情况却很少出现。古代的甲胄重量很大,即便是明清时期流行起来的、因较为轻便而被推广的布面甲,也有20多斤的重量(《明会典》:“造甲,每副重二十四斤至二十五斤……”),加上其他的武器装备,长途行军对于士兵的体力会是一个不小的消耗。因而,古代的士兵并不会穿着盔甲行军,一般行军中,盔甲通常由牲畜或民夫驮着。至于兵士,则需要尽量节省行军中的体力以保证在肉搏战中能拼尽全力。


古代士兵在行军时不穿盔甲,也是偷袭战术屡屡奏效的重要原因之一。一旦遭遇突袭,未穿甲胄的军队往往会在装备精良的敌军面前遭受单方面的屠杀,结果自然是大败亏输。所以,如何防备敌军的偷袭十分考验古代将领的能力,通过游骑、侦骑等散布四方,从而来侦察敌情是否有埋伏成为防范偷袭的主要手段。

以明朝为例,明军中的塘报骑兵就是专门执行防范偷袭、探查敌情、汇报信息这类任务的。当军队开拔离开营寨之后,明军塘骑就要外出侦查。塘骑以塘为编制,每个塘有五人,这五个人在侦查时不能离开彼此的视线。同时,每人都要装备信炮,以便遭遇突发事件时给大军报警。


明军大军在行军时,不管军队兵分几路,每一路都要设置二十四塘骑兵,这些塘骑每人之间相距一里,广泛散布遥相呼应,最多可散布二十余里,之后游骑再将探查到的情况汇集给大部队,确保前路没有敌军的埋伏。此外,塘骑作为军队的眼睛侦测四方,行军前方的道路情况、水源情况等问题也需要了解清楚,在做到这些后,大部队才可以加速行军。

游骑的探查措施在行军中尤为必要,在历史上,即便是军事经验丰富的将官也会在这个问题上碰壁。洪武五年(1372),明军名将李文忠率军远征漠北,当李文忠在土剌河一带击败北元将领哈剌章、蛮子后,翻过燕然山一路追击元军至称海。在李文忠携胜而还的路上,李文忠军因为游骑探查工作不到位,夜里走错了路,一度找不到水源,数万百战之师险些尽数陨落草原。


游骑、侦骑的探查确保了大军行军路上的安全,也迟滞了大军整体行军的速度。不过事有例外,如果遇上某些特殊情况,轻装上路的军队也可能达到日行百里。一支规模不大的部队舍弃辎重,缩小探查范围,只是为了某个迫切的目标进行急行军,这在古代战争史上也算不上稀奇。

同光元年(923)十月,梁晋争霸进入后期,李存勖自杨刘渡河,进抵郓州,命令李嗣源为前锋,攻破中都,擒获王彦章后。李存勖否决了唐军诸将都认为应先攻占青州、齐州、徐州、兖州等地后窥伺梁军的建议。下令李嗣源丢弃辎重、攻城器械等物资,轻骑奔袭汴州,攻取后梁国都。李嗣源前军倍道兼行,初九日抵达汴州,不到十日内后唐前军纵横数百里疾进,完全打破了梁末帝朱友贞的部署,兵临城下之际,朱友贞自杀,后梁灭亡。


李存勖挥斥方遒、李嗣源奔袭灭梁的故事磅礴至今,不过李存勖、李嗣源此举并不冒进,而是审时度势之后的决定。彼时后梁各路大军在外难以支援,后唐军又素来耐苦,李存勖才得以灭梁成功,如果没有训练有素的军队和特殊的战场形势,这样丢弃辎重强行军的战法几乎是自取灭亡。

总的来说,在种种制约下,古代军队“常行军”的每日不过三十里到四十里左右,而一日行军一百多里,几乎是丢弃物资、轻装简行之后所能达到的行军速度极限。



困难重重:被制约的行军速度


《孙子兵法》说:

“倍道兼行,百里而争利,则擒三将军,劲者先,疲者后,其法十一而至。”

也就是说,每天一百里的强行军,只有体力好的士卒可以跟上,体力差的只能落在后面,高强度的急行军会导致大量的士卒掉队。

在浩繁的史籍资料中,“倍道”一词频频出现,倍道,也就是用加倍的速度行进、兼程赶路的意思。历史上,诸如嘉靖时期仇鸾部众一昼夜的行军速度达到一百五十里的倍道行军并不鲜见,但能在急行军之后,像仇鸾军一样保持战斗力的却不多。


《三国志·诸葛亮传》中记载了曹操在当阳时急行军追击刘备的情况:

“曹操之众,远来疲弊,闻追豫州,轻骑一日一夜行三百馀里,此所谓‘强弩之末,势不能穿鲁缟’者也。故兵法忌之,曰‘必蹶上将军’。”

在此次追击战中,曹操的轻骑兵一天一夜急行300里(汉里的距离短于明里,大约相当于后世的120公里)。对此,诸葛亮曾形容其为“强弩之末,势不能穿鲁缟”,认为这样的军队难以保持强大的战斗力。事实上,曹操军能够达到如此惊人的行军速度,很可能是因为他们派出的是一支舍弃了辎重、一人多马的精锐轻骑兵。



而无论什么样的军队,在长途奔袭后也很难维持后续作战能力。尽管轻骑兵在装备上尽量精简,但仍需配备基本的甲胄、弓箭和武器等。这些装备加上骑士本身的重量,对马匹来说是不小的负担。而在骑兵作战中,马匹的耐力极为有限,其优势主要在于奔跑时的冲击力。


在当今的马匹耐力赛中,无负重的最优秀赛马在接近一天的奔跑中可以保持每小时近二十公里的速度,但即便如此,一天下来,大量马匹会掉队,只有部分马匹能够完成一百多公里的赛程。在两汉三国时期,如果曹军轻骑兵敢于面对大量骑兵掉队、到达的骑兵马匹无力冲刺、甚至事后大量马匹残废报废等惨重损耗,他们确实可以实现如此高速的急行军,但代价极为惨烈。因此,长途奔袭之后,一方面由于舍弃了补给辎重,另一方面人马困乏,曹军的战斗力急剧下降几乎是必然的。所谓“强弩之末,势不能穿鲁缟”,恐怕并非诸葛亮对曹军的贬低,而是基于实际情况的描述。



《三国志》正史中记载,张飞仅率二十骑兵便敢在长坂桥拦截曹军,曹军之中“敌皆无敢近者”。这一记载或许并非过分夸张。经过高强度行军后,曹军已然疲惫不堪,而张飞则占据有利地形,以逸待劳,体力充沛。尽管张飞身边只有数十骑士,但曹军虽然数量众多,却怯于一战,面对张飞的阻击,只能逡巡不前。


因此,避免行军后作战,是古代军队的重中之重,即便是以耐力颇佳闻名的唐末五代第一强军“沙陀鸦儿军”也是一样,鸦儿军的最高指挥者李存勖就对此十分重视。

在梁晋沿黄河对峙的时期,晋王李存勖在训练士卒和行军过程中,为了确保骑兵在作战时具备持续的作战能力,曾下令:“骑兵不见敌,不得骑马。”他严格约束士卒,对违反这一军令的军士,最高可处以斩刑。



李存勖并非不想利用马匹提高行军速度,而是为了保证骑兵在作战时能够发挥出足够的冲击力,才不得不做出这样的安排。这种政策虽有不便,但在两害相权之下,只能选择相对更优的方案,这实在是无奈之举。


军队强行军下所产生的巨大损耗,实在需要古代将领慎重考虑。正所谓“军无辎重则亡,无粮食则亡,无委积则亡”。古代行军过程中,并非随时随地都要讲究“兵贵神速”。

 

参考文献:

杨生民《中国里的长度演变考》

唐玉萍《简论明代庚戌之变》

陈寿《三国志》


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。



END
作者 | 湘桥蓬蒿人‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 徐沁(实习)‍
校对 | 火炬 李栋 古月
\"图片\"

国历好物

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷


\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"


“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "content": "


本 文 约 3700 字

阅 读 需 要 12 分 钟 


嘉靖二十九年(1550)八月,鞑靼部首领俺达汗在久围大同不克之后,移寇东去,自古北口长驱,杀掠怀柔、顺义吏民无算,明军一触即溃,立营于潞河东二十里之孤山(今通州东北)、汝口等处,兵锋直指京畿,京师戒严。

彼时的大明京师,自土木堡之变后久未遭兵祸,嘉靖皇帝急忙下令各镇边军入京畿勤王,此时的明军边帅仇鸾在居庸关暂住听征,当俺达突袭进入京畿后,仇鸾听诏八月十七日(戊寅)从居庸关出发,八月十八日(己卯)抵达通州列阵,仅仅一天一夜,急行约莫150里(此为明里计数,1明里为180丈,约莫现代560米),救援速度之快让嘉靖皇帝都感到十分惊喜。


那么,昼夜奔袭150里的急行军,在古代军队中是否很难实现,古代的急行军一天大多能走多少里?


困难重重:被制约的行军速度


“所谓踵军者,去大军百里,期于会地,为三日熟食,前军而行,为战合之表。”
                                               ——《尉缭子》

在先秦时期的兵法著作《尉缭子》中,记述了那个时代真实的行军速度,步兵日行仅为30-40里速度。虽然军事科技和道路条件在不断发展,但是自秦汉到明清,关于行军速度这一方面,一直没能取得太大的进步,《尉缭子》中提到的行军速度,也是古代军队普遍的速度,要了解这个问题,首先要从古代行军条件身上说起。

军队规模、道路系统以及辎重补给,都是决定军队行军速度的重要因素,但这些条件在古代都饱受制约。


在古代,道路条件相对十分恶劣,一支庞大的军队行进时会面临诸多困难。而行军速度的快慢往往取决于其中最慢的部分,也就是辎重运输的速度。古代行军辎重的运输一般使用车辆、驮马,位于军队的后方,当辎重部队行进时,道路已然经过大部队踩踏,更加崎岖难行,势必会拖累行军的整体速度。

除此之外,行军路上的各种防护、探查等必要的安全措施,也会显著延缓军队的行进速度。

在影视剧中,士兵们甲胄齐整地行军是常见的场景,但在古代战场上,这种情况却很少出现。古代的甲胄重量很大,即便是明清时期流行起来的、因较为轻便而被推广的布面甲,也有20多斤的重量(《明会典》:“造甲,每副重二十四斤至二十五斤……”),加上其他的武器装备,长途行军对于士兵的体力会是一个不小的消耗。因而,古代的士兵并不会穿着盔甲行军,一般行军中,盔甲通常由牲畜或民夫驮着。至于兵士,则需要尽量节省行军中的体力以保证在肉搏战中能拼尽全力。


古代士兵在行军时不穿盔甲,也是偷袭战术屡屡奏效的重要原因之一。一旦遭遇突袭,未穿甲胄的军队往往会在装备精良的敌军面前遭受单方面的屠杀,结果自然是大败亏输。所以,如何防备敌军的偷袭十分考验古代将领的能力,通过游骑、侦骑等散布四方,从而来侦察敌情是否有埋伏成为防范偷袭的主要手段。

以明朝为例,明军中的塘报骑兵就是专门执行防范偷袭、探查敌情、汇报信息这类任务的。当军队开拔离开营寨之后,明军塘骑就要外出侦查。塘骑以塘为编制,每个塘有五人,这五个人在侦查时不能离开彼此的视线。同时,每人都要装备信炮,以便遭遇突发事件时给大军报警。


明军大军在行军时,不管军队兵分几路,每一路都要设置二十四塘骑兵,这些塘骑每人之间相距一里,广泛散布遥相呼应,最多可散布二十余里,之后游骑再将探查到的情况汇集给大部队,确保前路没有敌军的埋伏。此外,塘骑作为军队的眼睛侦测四方,行军前方的道路情况、水源情况等问题也需要了解清楚,在做到这些后,大部队才可以加速行军。

游骑的探查措施在行军中尤为必要,在历史上,即便是军事经验丰富的将官也会在这个问题上碰壁。洪武五年(1372),明军名将李文忠率军远征漠北,当李文忠在土剌河一带击败北元将领哈剌章、蛮子后,翻过燕然山一路追击元军至称海。在李文忠携胜而还的路上,李文忠军因为游骑探查工作不到位,夜里走错了路,一度找不到水源,数万百战之师险些尽数陨落草原。


游骑、侦骑的探查确保了大军行军路上的安全,也迟滞了大军整体行军的速度。不过事有例外,如果遇上某些特殊情况,轻装上路的军队也可能达到日行百里。一支规模不大的部队舍弃辎重,缩小探查范围,只是为了某个迫切的目标进行急行军,这在古代战争史上也算不上稀奇。

同光元年(923)十月,梁晋争霸进入后期,李存勖自杨刘渡河,进抵郓州,命令李嗣源为前锋,攻破中都,擒获王彦章后。李存勖否决了唐军诸将都认为应先攻占青州、齐州、徐州、兖州等地后窥伺梁军的建议。下令李嗣源丢弃辎重、攻城器械等物资,轻骑奔袭汴州,攻取后梁国都。李嗣源前军倍道兼行,初九日抵达汴州,不到十日内后唐前军纵横数百里疾进,完全打破了梁末帝朱友贞的部署,兵临城下之际,朱友贞自杀,后梁灭亡。


李存勖挥斥方遒、李嗣源奔袭灭梁的故事磅礴至今,不过李存勖、李嗣源此举并不冒进,而是审时度势之后的决定。彼时后梁各路大军在外难以支援,后唐军又素来耐苦,李存勖才得以灭梁成功,如果没有训练有素的军队和特殊的战场形势,这样丢弃辎重强行军的战法几乎是自取灭亡。

总的来说,在种种制约下,古代军队“常行军”的每日不过三十里到四十里左右,而一日行军一百多里,几乎是丢弃物资、轻装简行之后所能达到的行军速度极限。



困难重重:被制约的行军速度


《孙子兵法》说:

“倍道兼行,百里而争利,则擒三将军,劲者先,疲者后,其法十一而至。”

也就是说,每天一百里的强行军,只有体力好的士卒可以跟上,体力差的只能落在后面,高强度的急行军会导致大量的士卒掉队。

在浩繁的史籍资料中,“倍道”一词频频出现,倍道,也就是用加倍的速度行进、兼程赶路的意思。历史上,诸如嘉靖时期仇鸾部众一昼夜的行军速度达到一百五十里的倍道行军并不鲜见,但能在急行军之后,像仇鸾军一样保持战斗力的却不多。


《三国志·诸葛亮传》中记载了曹操在当阳时急行军追击刘备的情况:

“曹操之众,远来疲弊,闻追豫州,轻骑一日一夜行三百馀里,此所谓‘强弩之末,势不能穿鲁缟’者也。故兵法忌之,曰‘必蹶上将军’。”

在此次追击战中,曹操的轻骑兵一天一夜急行300里(汉里的距离短于明里,大约相当于后世的120公里)。对此,诸葛亮曾形容其为“强弩之末,势不能穿鲁缟”,认为这样的军队难以保持强大的战斗力。事实上,曹操军能够达到如此惊人的行军速度,很可能是因为他们派出的是一支舍弃了辎重、一人多马的精锐轻骑兵。



而无论什么样的军队,在长途奔袭后也很难维持后续作战能力。尽管轻骑兵在装备上尽量精简,但仍需配备基本的甲胄、弓箭和武器等。这些装备加上骑士本身的重量,对马匹来说是不小的负担。而在骑兵作战中,马匹的耐力极为有限,其优势主要在于奔跑时的冲击力。


在当今的马匹耐力赛中,无负重的最优秀赛马在接近一天的奔跑中可以保持每小时近二十公里的速度,但即便如此,一天下来,大量马匹会掉队,只有部分马匹能够完成一百多公里的赛程。在两汉三国时期,如果曹军轻骑兵敢于面对大量骑兵掉队、到达的骑兵马匹无力冲刺、甚至事后大量马匹残废报废等惨重损耗,他们确实可以实现如此高速的急行军,但代价极为惨烈。因此,长途奔袭之后,一方面由于舍弃了补给辎重,另一方面人马困乏,曹军的战斗力急剧下降几乎是必然的。所谓“强弩之末,势不能穿鲁缟”,恐怕并非诸葛亮对曹军的贬低,而是基于实际情况的描述。



《三国志》正史中记载,张飞仅率二十骑兵便敢在长坂桥拦截曹军,曹军之中“敌皆无敢近者”。这一记载或许并非过分夸张。经过高强度行军后,曹军已然疲惫不堪,而张飞则占据有利地形,以逸待劳,体力充沛。尽管张飞身边只有数十骑士,但曹军虽然数量众多,却怯于一战,面对张飞的阻击,只能逡巡不前。


因此,避免行军后作战,是古代军队的重中之重,即便是以耐力颇佳闻名的唐末五代第一强军“沙陀鸦儿军”也是一样,鸦儿军的最高指挥者李存勖就对此十分重视。

在梁晋沿黄河对峙的时期,晋王李存勖在训练士卒和行军过程中,为了确保骑兵在作战时具备持续的作战能力,曾下令:“骑兵不见敌,不得骑马。”他严格约束士卒,对违反这一军令的军士,最高可处以斩刑。



李存勖并非不想利用马匹提高行军速度,而是为了保证骑兵在作战时能够发挥出足够的冲击力,才不得不做出这样的安排。这种政策虽有不便,但在两害相权之下,只能选择相对更优的方案,这实在是无奈之举。


军队强行军下所产生的巨大损耗,实在需要古代将领慎重考虑。正所谓“军无辎重则亡,无粮食则亡,无委积则亡”。古代行军过程中,并非随时随地都要讲究“兵贵神速”。

 

参考文献:

杨生民《中国里的长度演变考》

唐玉萍《简论明代庚戌之变》

陈寿《三国志》


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。



END
作者 | 湘桥蓬蒿人‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 徐沁(实习)‍
校对 | 火炬 李栋 古月
\"图片\"

国历好物

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷


\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"


“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "category": "", + "link": "http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BD%E5%AE%B6%E4%BA%BA%E6%96%87%E5%8E%86%E5%8F%B2+%E5%9C%A8%E5%8F%A4%E4%BB%A3%EF%BC%8C%E6%80%A5%E8%A1%8C%E5%86%9B%E4%B8%80%E5%A4%A9%E4%B8%80%E5%A4%9C%E8%83%BD%E8%B5%B0%E5%A4%9A%E5%B0%91%E9%87%8C%EF%BC%9F", + "creator": "", + "pubDate": "Sun, 06 Jul 2025 16:45:00 +0800", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "", + "folder": "人文", + "feed": "国家人文历史", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "a30c3d9d0692a24ce32cc00c6da3d876", + "highlights": [] + }, + { + "title": "为什么是“福如东海”“喝西北风”“指南”“败北”?", + "description": "


本 文 约 3000 字

阅 读 需 要 10 分 钟 


首先,大家来阅读一下这首古诗:


南巷有贵人,高盖驷马车。

我问何所苦,四十垂白须。

答云君不知,位重多忧虞。

北里有寒士,瓮牖绳为枢。

出扶桑枣杖,入卧蜗牛庐。

散贱无忧患,心安体亦舒。

东邻有富翁,藏货遍五都。

东京收粟帛,西市鬻金珠。

朝营暮计算,昼夜不安居。

西舍有贫者,匹妇配匹夫。

布裙行赁舂,裋褐坐佣书。

以此求口食,一饱欣有馀。

……

——白居易《效陶潜体诗(其十五)》



我们知道,东、南、西、北是四个最基本的地理方位词,古时我们的祖先根据太阳确定四方,日出之向为东,日落之向为西,阳光正射之向为南,背阳之向为北。但从词源上说,这四个字与其古字本义都没有直接的关系,是后来假借为四方之名,用来表示方位的概念。



语言是社会的折射。从这首诗中我们不难看出“东”“南”常与富贵相伴,而“西”“北”又与贫寒相随。这一首诗用了四个方位词充分展现出人们的传统文化观念。就像国人常说 “福如东海,寿比南山”,而不说“西海”“北山”;说“喝西北风”而不说“喝东南风”,这其中都潜藏着深刻的社会文化心理。


东、南为尊

西、北为卑


古往今来,在我们的文化观念中,方位总是和尊卑等级联系在一起。东西相对时,往往以东为尊,以西为卑。东方是太阳升起的方向,而太阳给人们带来光明、温暖和希望,因此在古人眼里,东方就意味着光明和新生,所以在传统风俗中以东为大,以东为尊。



古人将司春之神称为“东后”“东君”,就是因为春从东来,由东生。古代在五侯之上的皇帝及皇太子的居室要讲究“东位”,如“东内”是唐大明宫的别称,“东宫”则是太子的代称。



《旧唐书·地理志一》:“东内曰大明宫,……高宗以后,天子常居东内。”


《诗·卫风·硕人》:“东宫之妹,邢侯之姨。”孔颖达疏:“太子居东宫,因以东宫表太子。” 


古代皇宫和官舍在“东堂”,王侯显贵者要住“东第”,帝王行封禅事昭告天下太平谓“东对”,贵族子弟学校称“东横”,科举考试及第为“东堂桂”。


这些词语十分直观地展现了东方的尊贵,可以说是当时人们社会理想的外化表现。《史记·司马相如列传》中也有:“位为通侯,居列东第。”后来,“东第”便泛指富贵人家的住宅。这种尊东的观念一直影响至今,在农村父母子女同住时,父母必须居住在东边的房间,长幼尊卑划分得十分清楚。



与“东”相对的“西”,是太阳下山的地方,因此,它象征着黑暗、死亡,常常让人感到恐怖和不祥。《论衡·四讳》中有:


“俗有大讳四,一曰讳西益宅。西益宅之不祥,不祥必有死亡,相惧以此,故世莫敢西益宅。”


古人将西方与不祥、死亡联系在一起,今天我们把“死亡”称为“上西天”“驾鹤西去”,就是这种传统观念的反映。纵观古代文学作品,“西”也常被借用到古诗中,烘托悲痛、伤感的情绪。



另外,古人还认为东属阳,西属阴,如此,东西方位还常与男女两性联系在一起。《古乐府·日出东南隅行》:“东方千馀骑,夫骑居上头。”诗中女子罗敷自述其夫居官高贵,以“东方千骑”,形容夫婿的显赫。后便以“东方骑”指女子找到一个极好的夫婿。



文学作品中,女子所在的方位也常常写在西边。如南朝梁武帝《拟明月照高楼》:“君如东扶景,妾似西柳烟。”还有“西厢”“西楼”都指女子的住所。这些都是西阴东阳文化内涵的反映。当然,一定程度上也是男尊女卑思想观念的体现。


当南北相对时,南往往处于尊位。由于我国位于北半球,阳光是从南面照射过来的,人类都有喜暖恶寒的倾向,因此卑阴而尊阳。有诗云:“南枝向暖北枝寒,一种春风有两般。”人的荣华富贵与草木的繁荣茂盛相似,所以“南”又有富贵的象征意义。


再说北方,学者吕洪年认为,由于太阳一天的运行经过东、南、西三方,北方是太阳不到之处,所以,在四方位空间观念最初形成之际,北方就被认为是阴间地狱所在的方位。古代埋葬死人时大都埋在居住区的北面,而且有的还讲究要朝北。《礼记·檀弓下》记载:


“葬于北方,北首,三代之达礼也,之幽之故也。”


历史上有名的墓葬场就位于洛阳城北面的北邙山上。

 

这也就很好地回答了文章开头提出的问题,因为东南为尊,因此常常象征着权力、光明、富贵和繁荣;西北为卑,则代表着贫瘠、寒微和穷困潦倒。


我是谁,我在哪儿?


中国向来讲究礼仪和秩序,古代封建社会中人与人之间的高低尊卑泾渭分明,尊卑在座次上也有着鲜明的体现,而“东西南北”已经被人们赋予了尊卑隐喻,那么就有了以方位安排座位来区别尊卑。


在古代文献典籍中,以方位体现尊卑观念的记载随处可见。例如《周礼·曲礼上》有:


“主人就东阶,客就西阶;主人坐东面西,客人坐西面东。”


所以,当家里来客人时,主人一般是将宾客安排在西边,面向东,而自己坐在东边,面向西,以此来表达对宾客的尊敬。



古代中国常将老师称作“西席”“西宾”,就是这个道理。我们自古就有尊师重道的传统,因此一定会把老师安排在西边的座位。东汉时期,汉明帝刘庄为太子刘炟(后为汉章帝)聘请经学大师桓荣为太傅。据《后汉书·桓荣传》记载,明帝亲临太学听桓荣讲经时,为表尊师之礼,特设坐席于讲堂西侧(面朝东方),自居东面听讲。唐代以后,“西席”逐渐脱离具体场景,成为对私塾先生、教师的泛称。如《红楼梦》第二回有“(贾雨村)做了林如海的西宾”,这里“西宾”即“西席”的同义表达。


当然,如果有不喜欢、瞧不起的人来赴宴,也可以反其道而行之把他安排在东边就座。



《史记·项羽本纪》中记载:


“项王、项伯东向坐,亚父南向坐,沛公北向坐,张良西向侍。”


这就是那场著名的“鸿门宴”上的座次安排。项羽设鸿门宴欲杀刘邦,将对方视为自己的囊中之物,并不把对方作为尊客嘉宾看待,因此在席位的安排上,把己方放在尊位,对方则在卑位。



这里值得一提的是,很多人会将“尊者东面,卑者西面”与现在人们请客吃饭时说的“做东”联系在一起。但实际上,“做东”一词与方位尊卑关系不大。“做东”是“做东道主”的简称。而“东道主”一词源于中国古代的一个著名历史事件。《左传·僖公三十年》记载,春秋时期,晋国联合秦国围攻郑国(今河南境内)。郑国弱小,危在旦夕。郑国大夫烛之武夜见秦穆公,以利害关系游说秦国退兵。烛之武对秦穆公说:


“若舍郑以为东道主,行李之往来,共其乏困,君亦无所害。”


意思是说如果秦国放过郑国,让郑国作为秦国东方道路上的主人(东道主),秦国的使者途经郑国时,郑国可提供物资补给,这对秦国有利无害。最终秦穆公被说服,撤兵并与郑国结盟。后来“东道主”逐渐开始泛指接待宾客的主人。 


 

出于维护礼制秩序的需要,古代的人们十分重视自己在四方之中的“位置”,古时的“南面”(面朝南边)“北面”(面向北边)还有着特殊的意义。


古代以坐北朝南为尊位,故天子、诸侯见群臣,或卿大夫见僚属,皆南面而坐,如《易经·说卦》说“圣人南面而听天下”,《庄子·盗跖》也以“南面称孤”指代君主权威。后来“南面”便引申为泛指帝王的统治。中国古代的宫殿、都城、住宅也多以坐北朝南为正向,南方成为权力和正统的象征。


而臣子见天子或下属见诸侯、大夫则相反。古代臣子面北朝拜君主,《史记·郦生陆贾列传》载“君王宜郊迎,北面称臣”,强化了北方作为臣服方位的象征。


人生指南:

犹豫,就会败北



前文已述,在古代中国,南方被尊为至高无上的方位,在古代方位系统中,常以南作为基准。不过说到“指南”一词,我们就不得不提我国古代四大发明之一的指南针了。早在战国时期,我们聪明的祖先就制造出了初代指南针——司南。



东汉学者王充在《论衡》中记载:


“司南之杓,投之于地,其柢指南。”


因此“指南”成为约定俗成的说法。同时,从实用和习惯角度出发,“指南”相较于“指北”更易被理解和记忆。古代海图多采用“上南下北”布局,以南方为正向基准更直观,如《郑和航海图》就是以指南定位为主导。


而“败北”一词则要从“北”的甲骨文说起。甲骨文中的“北”,就好像两个人背靠背站立着,而金文、小篆将“北”会意为二人相背,认为“北”是“背”的古字。许慎在《说文解字》解释道:“北,苝也。从二人相背。”段玉裁注:“军奔曰北,其引申之义也。”



古代战争以战车和方阵为主,士兵转身逃跑会将后背暴露给敌人,是很危险的状态。因此“北”(背对敌人)成为战败的象征。《史记·项羽本纪》中有“身七十余战,所当者破,未尝败北”。《韩非子·五蠹》说“仲尼赏而鲁民易降北”,这里的“降北”即为投降败逃之义。


所以“败北”一词和方向本身关系不大。战败的关键动作是“转身背敌”,而非逃向南方或北方。即使败军向南跑,依然称为“败北”。古代汉语中,“北”已固定为“败逃”的专称,如“追亡逐北”(追赶败逃的敌人)、“北军”(溃败的军队)。

 


中华民族文化历史悠久,所以汉语中大部分的词语,都与历史文化有着密不可分的联系。中国传统文化中,“方位”不仅是地理概念,还被赋予了多重意义,展现了我们的思想、观念、礼俗和情感,使汉语方位词承载了远超空间指示功能的丰富内涵,成为打开传统文化的一把钥匙。


参考文献:

[1]段玉裁:《说文解字注》,上海:上海古籍出版社,1981.

[2]许慎:《说文解字》,北京:中华书局,1963.

[3]吴佳娣.浅谈自然方位词的文化内涵[J].现代语文(语言研究版),2008,(02):28-29.

[4]纪国泰.试论《辞源》“西席”释义的引文不当[J].时代文学(理论学术版),2007,(05):43-44.

[5]贾吉峰.汉语空间方位词“东、西、南、北”浅论[J].现代语文(学术综合版),2012,(12):147-149.

[6]程雅.“败北”史料考源及意义流变[J].汉字文化,2024,(13):126-128.

[7]靳雅姝.“东西南北”与方位文化[D].延边大学,2003.


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


END
作者 | 西洲‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 曲晨溪(实习)‍
校对 | 火炬 李栋 古月
\"图片\"

国历好物
\"图片\"

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷

\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "content": "


本 文 约 3000 字

阅 读 需 要 10 分 钟 


首先,大家来阅读一下这首古诗:


南巷有贵人,高盖驷马车。

我问何所苦,四十垂白须。

答云君不知,位重多忧虞。

北里有寒士,瓮牖绳为枢。

出扶桑枣杖,入卧蜗牛庐。

散贱无忧患,心安体亦舒。

东邻有富翁,藏货遍五都。

东京收粟帛,西市鬻金珠。

朝营暮计算,昼夜不安居。

西舍有贫者,匹妇配匹夫。

布裙行赁舂,裋褐坐佣书。

以此求口食,一饱欣有馀。

……

——白居易《效陶潜体诗(其十五)》



我们知道,东、南、西、北是四个最基本的地理方位词,古时我们的祖先根据太阳确定四方,日出之向为东,日落之向为西,阳光正射之向为南,背阳之向为北。但从词源上说,这四个字与其古字本义都没有直接的关系,是后来假借为四方之名,用来表示方位的概念。



语言是社会的折射。从这首诗中我们不难看出“东”“南”常与富贵相伴,而“西”“北”又与贫寒相随。这一首诗用了四个方位词充分展现出人们的传统文化观念。就像国人常说 “福如东海,寿比南山”,而不说“西海”“北山”;说“喝西北风”而不说“喝东南风”,这其中都潜藏着深刻的社会文化心理。


东、南为尊

西、北为卑


古往今来,在我们的文化观念中,方位总是和尊卑等级联系在一起。东西相对时,往往以东为尊,以西为卑。东方是太阳升起的方向,而太阳给人们带来光明、温暖和希望,因此在古人眼里,东方就意味着光明和新生,所以在传统风俗中以东为大,以东为尊。



古人将司春之神称为“东后”“东君”,就是因为春从东来,由东生。古代在五侯之上的皇帝及皇太子的居室要讲究“东位”,如“东内”是唐大明宫的别称,“东宫”则是太子的代称。



《旧唐书·地理志一》:“东内曰大明宫,……高宗以后,天子常居东内。”


《诗·卫风·硕人》:“东宫之妹,邢侯之姨。”孔颖达疏:“太子居东宫,因以东宫表太子。” 


古代皇宫和官舍在“东堂”,王侯显贵者要住“东第”,帝王行封禅事昭告天下太平谓“东对”,贵族子弟学校称“东横”,科举考试及第为“东堂桂”。


这些词语十分直观地展现了东方的尊贵,可以说是当时人们社会理想的外化表现。《史记·司马相如列传》中也有:“位为通侯,居列东第。”后来,“东第”便泛指富贵人家的住宅。这种尊东的观念一直影响至今,在农村父母子女同住时,父母必须居住在东边的房间,长幼尊卑划分得十分清楚。



与“东”相对的“西”,是太阳下山的地方,因此,它象征着黑暗、死亡,常常让人感到恐怖和不祥。《论衡·四讳》中有:


“俗有大讳四,一曰讳西益宅。西益宅之不祥,不祥必有死亡,相惧以此,故世莫敢西益宅。”


古人将西方与不祥、死亡联系在一起,今天我们把“死亡”称为“上西天”“驾鹤西去”,就是这种传统观念的反映。纵观古代文学作品,“西”也常被借用到古诗中,烘托悲痛、伤感的情绪。



另外,古人还认为东属阳,西属阴,如此,东西方位还常与男女两性联系在一起。《古乐府·日出东南隅行》:“东方千馀骑,夫骑居上头。”诗中女子罗敷自述其夫居官高贵,以“东方千骑”,形容夫婿的显赫。后便以“东方骑”指女子找到一个极好的夫婿。



文学作品中,女子所在的方位也常常写在西边。如南朝梁武帝《拟明月照高楼》:“君如东扶景,妾似西柳烟。”还有“西厢”“西楼”都指女子的住所。这些都是西阴东阳文化内涵的反映。当然,一定程度上也是男尊女卑思想观念的体现。


当南北相对时,南往往处于尊位。由于我国位于北半球,阳光是从南面照射过来的,人类都有喜暖恶寒的倾向,因此卑阴而尊阳。有诗云:“南枝向暖北枝寒,一种春风有两般。”人的荣华富贵与草木的繁荣茂盛相似,所以“南”又有富贵的象征意义。


再说北方,学者吕洪年认为,由于太阳一天的运行经过东、南、西三方,北方是太阳不到之处,所以,在四方位空间观念最初形成之际,北方就被认为是阴间地狱所在的方位。古代埋葬死人时大都埋在居住区的北面,而且有的还讲究要朝北。《礼记·檀弓下》记载:


“葬于北方,北首,三代之达礼也,之幽之故也。”


历史上有名的墓葬场就位于洛阳城北面的北邙山上。

 

这也就很好地回答了文章开头提出的问题,因为东南为尊,因此常常象征着权力、光明、富贵和繁荣;西北为卑,则代表着贫瘠、寒微和穷困潦倒。


我是谁,我在哪儿?


中国向来讲究礼仪和秩序,古代封建社会中人与人之间的高低尊卑泾渭分明,尊卑在座次上也有着鲜明的体现,而“东西南北”已经被人们赋予了尊卑隐喻,那么就有了以方位安排座位来区别尊卑。


在古代文献典籍中,以方位体现尊卑观念的记载随处可见。例如《周礼·曲礼上》有:


“主人就东阶,客就西阶;主人坐东面西,客人坐西面东。”


所以,当家里来客人时,主人一般是将宾客安排在西边,面向东,而自己坐在东边,面向西,以此来表达对宾客的尊敬。



古代中国常将老师称作“西席”“西宾”,就是这个道理。我们自古就有尊师重道的传统,因此一定会把老师安排在西边的座位。东汉时期,汉明帝刘庄为太子刘炟(后为汉章帝)聘请经学大师桓荣为太傅。据《后汉书·桓荣传》记载,明帝亲临太学听桓荣讲经时,为表尊师之礼,特设坐席于讲堂西侧(面朝东方),自居东面听讲。唐代以后,“西席”逐渐脱离具体场景,成为对私塾先生、教师的泛称。如《红楼梦》第二回有“(贾雨村)做了林如海的西宾”,这里“西宾”即“西席”的同义表达。


当然,如果有不喜欢、瞧不起的人来赴宴,也可以反其道而行之把他安排在东边就座。



《史记·项羽本纪》中记载:


“项王、项伯东向坐,亚父南向坐,沛公北向坐,张良西向侍。”


这就是那场著名的“鸿门宴”上的座次安排。项羽设鸿门宴欲杀刘邦,将对方视为自己的囊中之物,并不把对方作为尊客嘉宾看待,因此在席位的安排上,把己方放在尊位,对方则在卑位。



这里值得一提的是,很多人会将“尊者东面,卑者西面”与现在人们请客吃饭时说的“做东”联系在一起。但实际上,“做东”一词与方位尊卑关系不大。“做东”是“做东道主”的简称。而“东道主”一词源于中国古代的一个著名历史事件。《左传·僖公三十年》记载,春秋时期,晋国联合秦国围攻郑国(今河南境内)。郑国弱小,危在旦夕。郑国大夫烛之武夜见秦穆公,以利害关系游说秦国退兵。烛之武对秦穆公说:


“若舍郑以为东道主,行李之往来,共其乏困,君亦无所害。”


意思是说如果秦国放过郑国,让郑国作为秦国东方道路上的主人(东道主),秦国的使者途经郑国时,郑国可提供物资补给,这对秦国有利无害。最终秦穆公被说服,撤兵并与郑国结盟。后来“东道主”逐渐开始泛指接待宾客的主人。 


 

出于维护礼制秩序的需要,古代的人们十分重视自己在四方之中的“位置”,古时的“南面”(面朝南边)“北面”(面向北边)还有着特殊的意义。


古代以坐北朝南为尊位,故天子、诸侯见群臣,或卿大夫见僚属,皆南面而坐,如《易经·说卦》说“圣人南面而听天下”,《庄子·盗跖》也以“南面称孤”指代君主权威。后来“南面”便引申为泛指帝王的统治。中国古代的宫殿、都城、住宅也多以坐北朝南为正向,南方成为权力和正统的象征。


而臣子见天子或下属见诸侯、大夫则相反。古代臣子面北朝拜君主,《史记·郦生陆贾列传》载“君王宜郊迎,北面称臣”,强化了北方作为臣服方位的象征。


人生指南:

犹豫,就会败北



前文已述,在古代中国,南方被尊为至高无上的方位,在古代方位系统中,常以南作为基准。不过说到“指南”一词,我们就不得不提我国古代四大发明之一的指南针了。早在战国时期,我们聪明的祖先就制造出了初代指南针——司南。



东汉学者王充在《论衡》中记载:


“司南之杓,投之于地,其柢指南。”


因此“指南”成为约定俗成的说法。同时,从实用和习惯角度出发,“指南”相较于“指北”更易被理解和记忆。古代海图多采用“上南下北”布局,以南方为正向基准更直观,如《郑和航海图》就是以指南定位为主导。


而“败北”一词则要从“北”的甲骨文说起。甲骨文中的“北”,就好像两个人背靠背站立着,而金文、小篆将“北”会意为二人相背,认为“北”是“背”的古字。许慎在《说文解字》解释道:“北,苝也。从二人相背。”段玉裁注:“军奔曰北,其引申之义也。”



古代战争以战车和方阵为主,士兵转身逃跑会将后背暴露给敌人,是很危险的状态。因此“北”(背对敌人)成为战败的象征。《史记·项羽本纪》中有“身七十余战,所当者破,未尝败北”。《韩非子·五蠹》说“仲尼赏而鲁民易降北”,这里的“降北”即为投降败逃之义。


所以“败北”一词和方向本身关系不大。战败的关键动作是“转身背敌”,而非逃向南方或北方。即使败军向南跑,依然称为“败北”。古代汉语中,“北”已固定为“败逃”的专称,如“追亡逐北”(追赶败逃的敌人)、“北军”(溃败的军队)。

 


中华民族文化历史悠久,所以汉语中大部分的词语,都与历史文化有着密不可分的联系。中国传统文化中,“方位”不仅是地理概念,还被赋予了多重意义,展现了我们的思想、观念、礼俗和情感,使汉语方位词承载了远超空间指示功能的丰富内涵,成为打开传统文化的一把钥匙。


参考文献:

[1]段玉裁:《说文解字注》,上海:上海古籍出版社,1981.

[2]许慎:《说文解字》,北京:中华书局,1963.

[3]吴佳娣.浅谈自然方位词的文化内涵[J].现代语文(语言研究版),2008,(02):28-29.

[4]纪国泰.试论《辞源》“西席”释义的引文不当[J].时代文学(理论学术版),2007,(05):43-44.

[5]贾吉峰.汉语空间方位词“东、西、南、北”浅论[J].现代语文(学术综合版),2012,(12):147-149.

[6]程雅.“败北”史料考源及意义流变[J].汉字文化,2024,(13):126-128.

[7]靳雅姝.“东西南北”与方位文化[D].延边大学,2003.


*本文系“国家人文历史”独家稿件,欢迎读者转发朋友圈。


END
作者 | 西洲‍‍‍‍‍‍‍
编辑 | 胡心雅‍
主编 | 周斌
排版 | 曲晨溪(实习)‍
校对 | 火炬 李栋 古月
\"图片\"

国历好物
\"图片\"

进击的士族

旁落的皇权

跨越五百年的权力对抗史

国民历史读物《国家人文历史》专业团队

最新力作

展现士族潮起潮落的史诗级历史画卷

\"图片\"


点击下方封面,即可购买



↓↓↓

\"图片\"

\"图片\"

\"图片\"

“在看”的永远18岁~

\n \n\n \n
\n\n \n 文章原文\n
\n \n\n \n\n \"\"
", + "category": "", + "link": "http://weixin.sogou.com/weixin?type=2&query=%E5%9B%BD%E5%AE%B6%E4%BA%BA%E6%96%87%E5%8E%86%E5%8F%B2+%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E7%A6%8F%E5%A6%82%E4%B8%9C%E6%B5%B7%E2%80%9D%E2%80%9C%E5%96%9D%E8%A5%BF%E5%8C%97%E9%A3%8E%E2%80%9D%E2%80%9C%E6%8C%87%E5%8D%97%E2%80%9D%E2%80%9C%E8%B4%A5%E5%8C%97%E2%80%9D%EF%BC%9F", + "creator": "", + "pubDate": "Sat, 05 Jul 2025 12:55:00 +0800", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "", + "folder": "人文", + "feed": "国家人文历史", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "55fef3954af2eee6a67b8e0333ab872c", + "highlights": [] + }, { "title": "Apple Music 的自动过渡功能,会带来歌单的未来形态吗?", "description": "这可能是最让人惊喜,也最有进步余地的新功能。查看全文", @@ -617,7 +445,7 @@ "language": "zh", "folder": "资讯", "feed": "少数派", - "read": false, + "read": true, "favorite": false, "created": false, "tags": [], @@ -905,7 +733,7 @@ "folder": "人文", "name": "国家人文历史", "language": "", - "hash": "" + "hash": "2395dfe8509f8db85903905ea91929f1" } ], "dateFormat": "YYYY-MM-DDTHH:mm:SS", @@ -933,11 +761,10 @@ "人文历史", "开源", "我的博客", - "资讯", - "DIY", "博客", "国家人文历史", - "rss-folders" + "少数派", + "DIY" ], "renamedText": { "filtered_folders": "", diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index dac1979d..59d956a3 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -205,7 +205,7 @@ } } ], - "currentTab": 4 + "currentTab": 5 }, { "id": "ad86bdfc0cc9f06b", @@ -274,7 +274,7 @@ "periodic-notes:Open today": false } }, - "active": "6142e96e86443372", + "active": "40c4fd22c99f2f3a", "lastOpenFiles": [ "40-Podcast/podnotes/陈说历史-雍正帝怎么死的?唐朝为何不建长城?方孝孺真的被诛十族?能否称刘邦为汉高祖?等.md", "40-Podcast/podnotes/和Emily一起练口语(附中英双语字幕)-【发音版】美国人说“我超喜欢”时,常会用这句话!.md",