# 38. Hit the Kernel Panic Button

内核恐慌 · 2016-04-24

<https://lib.pan.icu/fa722e01-4be9-487a-949e-c6c2cc163e7d>

本期《内核恐慌》围绕NPM生态中left-pad库被作者删除引发的连锁崩塌，剖析JavaScript细粒度依赖文化、标准库缺失和社区治理缺陷；微软在Windows中原生支持Linux二进制（Bash for Windows）的背后是Azure战略与争夺开发者；吴涛与Rio还聊到OBD车载诊断、iOS蓝牙限制、MacBook外接4K显示器的窘境，以及中国域名管理新规——互联网全球化的泡沫已破，政府监管根植于主权国家基础设施这一现实。节目延续一贯的准技术闲聊风格，无干货，有态度。

## Questions this episode answers

### 在 NPM left pad 事件中，为什么一个仅有 15 行代码的 JavaScript 库被移除，会导致大量网站崩溃？

吴涛和 Rio 在节目中讨论了 JavaScript 社区的依赖文化：由于语言本身缺乏标准库，大量项目依赖像 left pad 这样微小的第三方包。开发者 Azer Koçulu 因为与 NPM 的商标争议撤回了所有包，其中 left pad 仅 15 行代码，却被下载了 200 多万次。它的突然消失，使所有直接或间接依赖它的框架和网站无法构建或更新，引发了连锁崩溃，暴露了 JS 生态依赖粒度过细和缺少本地缓存的脆弱性。

[13:01](https://lib.pan.icu/fa722e01-4be9-487a-949e-c6c2cc163e7d?t=781000)

### 微软在 Windows 10 中是如何实现原生运行 Linux 二进制程序的（Bash for Windows）？

吴涛和 Rio 讲解，微软没有使用模拟器或重新编译，而是直接在 NT 内核上添加了一个子系统，将 Linux 的 ELF 二进制文件的系统调用实时转译成 NT 内核调用。这意味着未经修改的 Ubuntu ELF 程序可以以比特级兼容的方式在 Windows 上直接运行。这项工作量极大，涉及系统调用、文件系统等诸多差异的适配，标志着微软策略转向拥抱 Linux 生态，以吸引开发者。

[1:03:58](https://lib.pan.icu/fa722e01-4be9-487a-949e-c6c2cc163e7d?t=3838000)

### “They have computers, and they may have other weapons of mass destruction”这句口号出自哪里？

吴涛在节目开头介绍，这句话出自 1998 年美国前司法部长 Janet Reynold 的听证会发言。当时她在推动建立国家基础设施保护中心，将计算机与大规模杀伤性武器并列，警告网络犯罪可能造成同等量级的破坏。尽管当时被视作夸张，但此后多次重大网络攻击证明了她的远见。

[0:37](https://lib.pan.icu/fa722e01-4be9-487a-949e-c6c2cc163e7d?t=37000)

## Key moments

- **[0:00] 开场**
  - [0:35] Janet Reynold 在 1998 年听证会上称 "They have computers, and they may have other weapons of mass destruction"
  - [2:02] 计算机造成的巨大灾害每年都有好几次，且近年愈演愈烈
  - [7:05] 《IT公论》停播导致《内核恐慌》从本期起改为不定期播出
- **[9:10] NPM 风波**
  - [12:42] Left-pad 库下架导致数千个依赖项目构建失败
  - [13:24] Left-pad 仅有 15 行代码，却导致了整个 NPM 生态的连锁崩溃
  - [14:09] JavaScript 缺少标准库，导致大量基础功能依赖第三方模块
- **[16:07] JS 反思**
  - [18:29] NPM 上存在 isArray 等仅一行代码的微型库
  - [20:01] NPM 模块生态被比作缺乏管理的苍蝇摊子式自由市场
  - [20:33] 前端对代码体积的极致追求促使 JS 模块细粒度化，而动态语言难以实现无用代码消除
  - [24:57] Node.js 后端被迫沿用前端的细粒度模块组织方式，同样面临 left-pad 风险
  - [26:42] Rio 提出解决 left-pad 式危机的方法：像 Go 语言一样将外部依赖纳入代码仓库 vendor
  - [27:29] NPM 的高可用性导致开发者忽视将依赖纳入版本控制的 vendor 实践
- **[33:12] WebAssembly**
  - [34:56] WebAssembly 类似于中间语言，而 Java 早在十几年前就用过类似思路的 Java Applet
- **[35:46] 旧网络与网银**
  - [35:50] Java Applet 因功能不如 Flash 强大且缺乏视频等关键能力而被市场淘汰
  - [38:53] 中国网银依赖 ActiveX 的问题随移动支付兴起而自然消解
  - [40:18] 德国网银采用红绿蓝三色圆点二维码生成验证码，用户需配合手机 APP 扫描
  - [41:34] 德国网银历史沿用过对屏幕闪动光斑读取验证码的插卡设备
  - [42:53] 国内银行曾使用密码本式一次性码进行网银验证
  - [44:44] Rio 推荐 Authy 两步验证应用，因其能在 Today View 显示常用验证码
- **[46:08] 汽车与OBD**
  - [46:14] 吴涛在德国高速超车时引擎突失动力，迫使右侧车辆违规超车
  - [47:39] iOS 蓝牙不支持 OBD 协议，导致吴涛须额外购买 WiFi 版 OBD 适配器
  - [48:32] 吴涛因 iOS 限制选择 Android 获更多自由，并提到大众柴油门尚未波及沃尔沃
  - [49:07] 吴涛是在德华裔中唯一没买德国车的人，因喜欢宝马 M4 但买不起而选沃尔沃
  - [49:27] 吴涛沃尔沃柴油车因柴油预热器故障读出错误码，需下周维修
  - [50:37] Rio 用 OBD 蓝牙连安卓手机成功清除车辆错误码
- **[57:45] Bash for Windows**
  - [58:31] 微软从视 Linux 为癌症到内置 Linux 子系统，吴涛喻为被 Borg 同化
  - [59:16] Rio 的生日，吴涛直播间祝贺但 Rio 拒绝透露年龄
  - [59:52] Windows NT 早期曾有过 POSIX 子系统，但未被推广
  - [1:00:26] Bash on Windows 能够直接运行未经修改的 Linux ELF 二进制文件
  - [1:04:15] 通过在内核新增 Linux 系统调用兼容层，Windows 可直接运行 Linux 原生程序
  - [1:05:04] Bash on Windows 类似 Wine 但方向相反，被称为 Line (Line Is Not an Emulator)
- **[1:17:53] MacBook 选购**
  - [1:18:15] Rio 发现新 MacBook 官方 USB-C 转 HDMI 适配器输出 4K 仅支持 30Hz 刷新率
  - [1:20:37] 12 英寸 MacBook 搭载的 Intel HD 515 核显支持 4K 60Hz，但缺少官方 DisplayPort 转接方案
  - [1:21:49] Rio 因常出差追求极致便携，吴涛则质疑出差并非徒步无需过度关注重量
  - [1:22:47] Rio 尝试用 iPad 办公但发现键盘手感差、飞机经济舱不易放置以及表格操作不便
  - [1:24:41] Rio 认为 Surface Book 品控不佳，而 iPad 作为生产力工具仍存在交互模式过渡问题
  - [1:26:04] 吴涛认为自己现在编辑文本的方式与 10 岁使用 DOS 时代无异，主动放弃 GUI 优势
- **[1:26:22] 交互未来**
  - [1:28:10] Visual Studio Code 的 CSS 选择器悬停显示 HTML 结构预览被吴涛赞为天才设计
  - [1:30:18] 平板生产力短板并非硬件问题，而是缺乏针对触控交互重新设计的工作流
  - [1:30:55] 吴涛预测十年后年轻人在全息虚拟空间工作，老年人会感到不解
  - [1:31:32] Magic Leap 发布混合现实演示视频，但需持怀疑态度，类似 HoloLens 曾夸大宣传
  - [1:32:47] 未来 AR 眼镜可能取代物理屏幕，解决飞机座椅空间狭小的问题
- **[1:32:54] 互联网监管**
  - [1:33:13] 中国新域名管理办法要求境内注册，实质推动白名单制，全球化互联网梦想破灭
  - [1:34:51] 吴涛认为只要存在主权国家监管，开放网络就是幻想，需去国家化才能实现
  - [1:36:19] Rio 和吴涛玩笑称唯有外星人入侵或小行星威胁才能使国家消失，实现真正开放网络

## Speakers

- **Rio** (host)
- **吴涛** (host)

## Topics

操作系统, 软件开发, 科技政策

## Mentioned

kik (company), 微软 (company), 苹果 (company), Automatic (product), Dash Command (product), Linux (product), MacBook (product), NPM (product), OBD-II (product), Ubuntu (product), Windows (product), left pad (product)

## Transcript

### 开场

**吴涛** [0:01]
您正在收听 IPN Podcast， 网络旗下的 IT 技术主题娱乐节目 《 内核恐慌 》。 我们号称 "Hardcore"，但是也没有干货 ： 想听的人听 ，不想听的人就别听 。

本节目的网址是 kernelpanic.fm， 我们推荐大家使用 Podcast 客户端订阅节目 。 详情请访问 ipn.li/faq。 欢迎您为本节目捐款 ， 捐款地址是 kernelpanic.fm/donate。

捐款金额随意 ， 只要是 8 的正整数倍就可以 ， 捐款不会为你带来什么 ； 不捐也不会让你失去什么 。

我们的口号是 ： They have computers, and they may have other weapons of mass destruction.

**Rio** [0:35]
这是什么玩意儿 ？

**吴涛** [0:37]
这是一个叫做 Janet Reynold 的 ， 呃 ， 美国前司法部长说的 。 当时是 1998 年， 互联网犯罪初露端倪的时代 。 她在一个听证会上说 ， 国家 —— 就是当时美国 —— 要建立一个叫做 National Infrastructure Protection Center， 就类似一个互联网安全局的这么一个东西 。

**Rio** [1:01]
OK。

**吴涛** [1:03]
意思就是为了保障这个美国的 infrastructure， 就是信息产业的这个基础建设 。 然后她在这个听证会上说了这么一句话 ， 就是她把 "computers" 和那个 "weapons of mass destruction" 并列 。

这是将近十几年前的事了 ，不过今天 ——

**Rio** [1:23]
挺有远见的啊 ，其实 。

**吴涛** [1:24]
对 ， 对 。 当时大家都觉得很可笑 ，因为 ，you know， 那个时候一说到 mass destru—— 呃 ，weapon of mass destruction 就会想到伊拉克 ， 就什么化学武器啊之类的 。

但是现在看来 ， 这个计算机产生的伤害也是的确是一个在很大数量级上产生的 。

**Rio** [1:45]
对 ， 那个什么 ， 前人还是很有远瞻性的 ，但那个时候就想到了这个后果 。

**吴涛** [1:52]
对 。其实过去 20 年里面 ，因为计算机产生的巨大的灾害 ，也不是一两次的事情 ， 简直每年都有好几次 ， 对吧 ？

而且是近几年就是越演越烈 。

**Rio** [2:04]
你现在 ， 你现在的那些什么 infrastructure， 技术设施里面用到那个新一技术 ， 或者说电脑的 ，也越来越多了嘛 。

现在电网都要搞什么智能电网是吧 ？ 好像还可以联网无线读那个电表 ， 我记得 。

**吴涛** [2:20]
对 ， 然后什么核能电站之类的就更别说了 。 以前总是觉得好像 ， 呃 ， 我记得那个时候小时候看什么一个黑客给吴家大老演示 ， 用一台电脑和一个电话和一条热点上机加一部电话线 ， 就什么 somehow 侵入了宙斯盾的什么某台 ， 某一艘这个巡洋舰上的宙斯盾系统什么的 ， 然后大家都很震惊 。

可是现在想想 ， 就你不需要搞这种东西 ， 你只需要去弄一个什么核电站 ， 然后就可以了 ， 对吧 ？ 造成的灾害要比一艘军舰能造成的灾害更大 。

**Rio** [2:53]
宙斯盾的灾害是蛮大的 ， 我觉得 。 嗯 ，但他们是好像是有核弹的吧 ？

**吴涛** [2:59]
啊 ， 核动力巡洋舰 ？ 那应该没有核弹吧 ？

**Rio** [3:04]
它没有那种战术核武器弹头 ？

**吴涛** [3:08]
不一定吧 ， 就这应该不是常规会带在船上的吧 。

**Rio** [3:13]
难说诶 。

**吴涛** [3:15]
好吧 。 我们需要请一个美国军方的人来 。

**Rio** [3:20]
哎 ， 你说那些军队的计算机跑的什么系统 ？

**吴涛** [3:24]
Windows？

**Rio** [3:25]
对 ， 我记得好像之前看到过是谁是说那个 ， 啊 ，F16 还是 F22 那个战斗机上跑的是 XP？ 还是 Windows 2000 我忘了 。

就是某一个还比较关键的系统 。

**吴涛** [3:39]
F16？F16 不太可能 ，因为 F16 我记得在看过一个 ， 就基本上这个战斗机的操作系统肯定是一个半实时的专有操作系统吧 。

**Rio** [3:48]
不 ， 它分几部分嘛 ， 就跟那个车一样嘛 。 就是 ——

**吴涛** [3:52]
你看有一个 subsystem 是跑 ——

**Rio** [3:54]
对对对 。 它不是说那些核心控制组件 ， 那些肯定是要需要一个实时的系统嘛 。 它可能会是一些什么 ， 比如说 ， 呃 ， 随便说啊 ， 通讯组件 ？

战斗机有没有娱乐模块 ？

**吴涛** [4:07]
玩是玩是 ， 蓝屏 。 坠机因为驾驶员在那边玩什么 ， 呃 ， 叫什么空荡机笼 ， 空心大阵 。

**Rio** [4:17]
还有之前说那个不是有那种无人机嘛 ， 就是 drone 那种军用无人机啊 ， 它不是有一个那种远程操纵它的系统吗 ？

好像也是跑在 Windows XP 还是什么版本上面的 。

**吴涛** [4:28]
哦 ， 这个是有可能 。 就你做 ，因为你专门为一个远程操作系统开发 ， 先开发一个操作系统的 ， 呃 ， 先不说成本 ， 就是你开发出来这个操作系统的稳定性可能还不如 Windows， 对吧 ？

这也是有可能的 。

**Rio** [4:45]
好吧 。

**吴涛** [4:46]
就其实全世界的军队可能俄 —— 我不知道俄罗斯怎么样 ，但其实全世界的军队只要是涉及到计算机的部分 ， 大基本上全都是 ， 就是普通的计算机系统 ， 基本上全都 Windows。

**Rio** [4:56]
办公嘛 ， 你说 。

**吴涛** [4:58]
对 。

**Rio** [4:58]
但是它那个是遥控无人机 ， 就是遥控无人机的系统 ， 我觉得还是挺敏感的哦 。 不是 ， 你想象一下哈 ， 那个无人机本来在那个老远的地方跑 ， 然后那个驾驶员坐在一个很安全的一个 bunker 里面 ， 很猥琐的在那开着那个东西 ， 对吧 ？

**吴涛** [5:14]
开无人机的人很多都是就是在美国本土遥控无人机的好像 。

**Rio** [5:17]
哎 ， 它那个延迟怎么解决 ？

**吴涛** [5:19]
不知道 。 但是我好像看过一个报道 ， 就是讲一些心理问题 ，因为每天去上班就是去 ， 每天上班就是去操纵杀人， 然后下班之后看到周围的那个什么欢声笑语 ， 鸟语花香 ， 然后就想 ， 我靠 ， 我为什么要干这种事 。

**Rio** [5:35]
干 ， 干杀了 5 个 。 哎 ， 它那种如果是这样的远的话 ， 它那个延迟问题是怎么解决的呢 ？

**吴涛** [5:41]
不知道 。 这个是很好的问题 。

**Rio** [5:42]
就是你开着开着 ， 你看飞机本来又快嘛 ， 你说那个什么车 ， 你过一 ， 呃 ， 什么 ，不是说一秒吧 ， 呃 ，0.1 秒已经开过了 ， 可能在高速路上开哈 ， 可能开过多少秒 ？

**吴涛** [5:54]
这个我觉得这个就是这个时差可能就是你说 0.1 秒这个级别的时差可能没有什么太大的问题 。 因为首先 drone 在一个很高的地方飞 ， 然后地面上那个车辆可能哪怕时速 50 公里每小时 ，在它看来也只不过是在缓缓移动而已 。

然后第二就是那个 drone 上带的导弹肯定都是有制导的呀 ， 就是它肯定能 ， 你只要确定这个车前面方圆 50 米之内没有遮蔽物呢 ， 发一个导弹过去 ， 那导弹自己就追过去了呗 。

**Rio** [6:25]
就其实不需要很精确的去控制它的 。

**吴涛** [6:29]
对 ， 我觉得实时性有可能不是特别重要 。 尤其是在侦察和 ， 呃 ， 就发动这种精确制导打击的时候 ， 你有一定的那个时间延迟其实并不是太大的问题 。

**Rio** [6:41]
嗯哼 。OK。 所以它只需要安全 ， 然后能够比较方便的同时开 5 个 drone， 对吧 ？

**吴涛** [6:50]
对 ， 对 。 好吧 。 嗯 ， 我们首先要 ， 呃 ， 讨论一下与本节目相关的一些 ， 一件事情就是 ， 嗯 ， 这个要说吗 ？

就是 ， 呃 ， 鉴于某些人事上的变动 ， 呃 ， 本节目 ， 首先这个 《 IT 公论 》 节目停播了 ， 然后本节目改成 ， 从本期开始改成不定期播出 。

背景原因就不解释了 ，但是反正就是这么一件事情 。 就在将来我们基本上有一个节奏 ， 就是说大概两周 ， 两个人会想起来录一下 。

但是 ， 呃 ， 鉴于目前的这个人生和事业的状态 ， 好像 hold 住这个节奏也不是那么容易 。

**Rio** [7:37]
所以以后网站上要做一个按钮 ， 叫 " 今天恐慌吗 "， 摁一下它会告诉你是还是不是 。

**吴涛** [7:43]
哦 ， 那个弄一个推特账号和 ， 哦不对 ， 我们就在官方的账号上说 " 今天没更新 " 就好 。 今天没更新就好 。

**Rio** [7:55]
不 ， 你得让他们 ， 你不定期嘛 ， 你得让他们来破嘛 。 就得做一个按钮 ， 摁一下， 对吧 ？ 今天恐慌吗 ？

不恐慌 。 今天恐慌吗 ？ 不恐慌 。

**吴涛** [8:07]
The panic button， 这个东西可以叫做 the panic button。

**Rio** [8:10]
可以买一个那个红色的那个 。

**吴涛** [8:13]
对 。

**Rio** [8:13]
摁一下 。

**吴涛** [8:13]
然后当头 。

**Rio** [8:14]
装一个 Arduino 进去 ， 摁一下， 然后那边连出一个结果 。 它哔哔叫的话就是有 ， 哔哔没叫的话就是没有 。

**吴涛** [8:25]
我们可以卖这个赚点钱 。

**Rio** [8:27]
Panic button。Kernel panic button。

**吴涛** [8:31]
The kernel panic button。

**Rio** [8:33]
然后下面那个按钮下面附一行小字 ， 你永远不知道你按下之后会发生什么 。

**吴涛** [8:41]
有些听众来信说按了之后女朋友怀孕了 。

**Rio** [8:46]
不是我干的 。

**吴涛** [8:50]
我

们本节目要污名化了 ， 我觉得 。Logo 可以改成一个大大的乌字 。 嗯 ， 对 ， 反正就是那件事 。 然后这期节目 ， 嗯 ， 的稿件其实是在三 ， 至少三周之前写的 。

### NPM 风波

**吴涛** [9:10]
所以那个时候还是件大新闻的事情 ， 就是这个 ， 呃 ，NPM 整个 stack 几乎都毁掉了 。 就是那一天出了这件事情之后， 有很多很多网站 ， 当然没有立刻挂掉 ，但是 ， 呃 ，有很多网站的开发都被迫停止了 ， 或者说更新部署都被迫停止了 。

嗯 ，但是我印象里我好像没有遇到这样一个网站 。 不过在新闻上看起来好像这件事情当时蛮大的 。

**Rio** [9:40]
这事要解释一下来龙去脉吗 ？

**吴涛** [9:42]
需要吧 。 我就从最早最早说起就好了 。 有一个远在新西兰的 ，在地球的另外一边的一位叫做 Azure Koshlu， 这好像是个土耳其人的名字 ，但是 ，anyway， 这个人在奥克兰 。

呃 ，他写了一个 extension 叫做 kik，K-I-K。 然后这个 extension 是发布在 NPM 上面的 。 嗯 ， 然后有一天他收到了一封信 ， 这封信是来自于一个叫做 kik 的厂商 ， 呃 ，K-I-K。

然后这个 kik 呢 ， 后来我发现我还装过 ， 它是一个即时通讯软件 ， 就有点像 WhatsApp 之类的这么一个东西 ，但是远没有 WhatsApp 红 。

然后用户群可能有一部分 ，但是也不是特别多 。 然后， 嗯 ，他写来了他的律师 ，不对 ，不是律师 ， 这个 ， 呃 ，kik 的负责人之一给这个 Azure Koshlu 写了一封信 ， 说 ， 嗯 ， 你把那个你写的这个 kik 的 extension 改个名字吧 ，因为我公司也要出一个 extension。

然后 Azure 大概回了一句说 ， 嗯 ， 这种要求我不会接受 。 对 ， 这个公司负责人写的信里面有这么一句话 ， 就是 ， 嗯 ， 如果你做的话 ， 这件事情就不会 ， 呃 ， 牵扯到律师了 。

就有这么一句话 ， 就是你可以把它理解为是一种某种非常隐晦的威胁 ， 或者非常明目张胆的威胁 ， 就是如果你要不干的话 ， 我就告你 。

然后这个 Azure Koshlu 呢 ， 就 ， 呃 ，

哦 ， 你给我 3 万美元吧 ， 给 3 万美元咱们就 ， 这我就可以把这个 ， 我就可以把这个名字卖给你 。

然后 kik 的人回了一句说 ， 呃 ，this is going to nowhere。 就他没有直接回答说我要 ， 我不要出这 3 万美元 ，而是说这件事情这样的话就什么也干不了了 。

言下之意就是说你 ，他 kik 这个公司的要求就是你无偿的立刻的把这个 kik 这个名字 ， 啊 ， 给我们 。

然后呢 ， 嗯 ， 这个 NPM， 就是管 NPM 的这个组织也牵扯其中 。 简单来说就是我已经很久没有看这个新闻了 ， 所以具体的人名什么都不记得 ，但大概就是 NPM 的事情 ，NPM 这帮人做了一件事情就是把 kik 这个东西 ， 呃 ， 强行下架了 。

**Rio** [12:23]
下架 。

**吴涛** [12:24]
这个词 。

**Rio** [12:25]
Azure。 把 Azure 写的这个 kik 的库强行从网站上拿掉了 。 嗯 ， 然后 Azure 一下子就火了 ， 它就把自己之前写的好几十个 ， 呃 ，extension 都一次性撤销了 。

然后这一下子就整个火药都喷了 。 因为 ， 呃 ， 尤其是它在写的一个 ， 它写的一个叫做 left pad 这么一个 library， 被很多很多很多很多其他的 ， 呃 ， 框架或者是程序间接或者直接的使用 。

然后当它把这个 left pad 撤掉之后， 呃 ， 整个所有依赖于这个框架的 ， 依赖于这个库的框架网站全都没有办法在 ， 呃 ，在更新的时候找到这个库 ， 然后也就瘫痪了 。

大概就是这么一件事 。 有没有一种那个什么 ， 你拿了一块砖 ， 然后那个雷峰塔就轰然倒下的感觉 ？

**吴涛** [13:24]
对 ， 大概就是这样一种听起来非常可笑的连锁反应 。 而且非常有意思的事情就是 ， 或者非常荒诞的事情就是这个 left pad 这一个很小的 library， 它真正有效的部分可能就 15 行代码 ， 了不起 15 行代码 。

然后这个东西在它下架 ， 就是它被这个开发者主动撤销的时候 ， 它被下载了大概 200 多万次应该是 。

**Rio** [13:58]
这里可能要稍微解释一下这个 NPM 怎么一个工作方式 ，不然的话很多不是做这个 JS 开发的人不太理解为什么会产生这么大的一个影响 。

**吴涛** [14:09]
简单来说就是 JavaScript 这个东西它一开始不是拿来干这个的 。 然后， 呃 ， 正因为如此 ， 它也没有一大堆配套的相应的基础设施 。

就是我们喜欢的 ， 群众喜欢的叫 Python 或者是哪是 Java， 都有这么一句话就是说 battery included， 就是你在使用这个语言的时候 ， 你使用的不仅 ， 就是它 offer 给你的不仅仅是语言本身 ， 还有一大堆可以直接拿来就用的做其他事情的一些东西 。

然后这些东西 ， 这些组件 ， 这些辅助工具我们叫做库 ， 对吧 ？ 然后 JavaScript 的毁就毁在它没有这个东西上 。

它 offer 的东西它本身就只有它语言本身 。 当然它有一部分是在它出生的那一个时刻就被设计来 ， 呃 ， 让它 ， 呃 ， 和与它绑定在一起的那些东西 ， 比如说什么浏览器的窗口啊 ， 浏览器里面的组件啊之类的 。

但是除此之外没有别的 。 就比如说这个 left pad 它实现的功能其实很简单 ， 就是把一个数字 ， 嗯 ，在这个数字左边填上 0， 比如说你有一个数字是 42， 然后你要把这个 42， 呃 ， 写成 00042。

为什么 ？ 你可能有一个五位数的 index， 然后你希望它 ， 你在排列的时候可以按这个字母顺序排列 。 那你如果在每个数字前面填上 0 的话 ， 那它排列起来就是一个正常的顺序 ， 对吧 ？

就这么一个简单的功能 ， 这个 JavaScript 是没有的 。 所以当有一个人写了 ， 把这个

函数写出来之后， 就有很多很多人去用 。 但是偏偏这个函数它不是源或者说框架的一部分 。 所以当这个非常小的一个 ， 非常小但是非常重要的基石不再

可以 ， 不再可以直接获得的时候 ， 那整个上层建筑就塌了 。

**Rio** [16:07]
但是别的语言也有这个同样的问题 ， 为什么就是只有在 NPM 或者说在 JS 里面有这么严重的后果 ？

### JS 反思

**吴涛** [16:16]
我觉得其实就是一个规模的问题 。 就是你在 ， 嗯 ， 比如说 Java 世界里面大家也有很多人去用那个 Google 的 Grafana， 对吧 ？

但是一方面 Google 是一个非常比较靠谱的这么一个公司 ， 它不是一个个人， 它不会说今天这玩意我要撤了 ， 我就直接撤了 。

呃 ， 另一方面就是如果你不用 Grafana 的时候 ， 你即便完全不涉及任何其他第三方库的时候 ， 你使用 Java 仍旧可以直接用它内置的所有的这些 library。

嗯 ， 这一部分是在你下载 Java， 乃至于你把 Java 部署到一台机器上的时候 ， 你可以默认 ， 你可以 take it for granted， 它一定在那的 。

但是在 。

**Rio** [16:57]
就标准库嘛 ， 所谓的 。

**吴涛** [16:59]
对 ，但是在 NPM 世界里面这一点是不成立的 。 就是 ， 对 ， 你必须每一次部署的时候你都要从那个 NPM 那个网站上面下载一大堆东西 。

**Rio** [17:12]
我觉得这里有两个问题啊 ， 就是说 ， 一个是说标准库到底应该有多大多小的问题 ， 然后像 ， 呃 ，JS 和 Lua 吧 ，也都算是那种比较极端的 ， 它的那个标准库都非常 tiny， 对吧 ？

非常小 。 就大部分功能是要靠就是第三方库来实现的 。 啊 ， 这个本身我觉得倒还没有多大的问题 。

你看现在 Python 也有这个 ， 就现在面临这么一个尴尬的状态 。Python 常年以这个什么自带电池这个自居 ， 对吧 ？

现在这么多年 。

**吴涛** [17:45]
自带电池要么是容量太小 ， 要么就是特别不经用 。

**Rio** [17:49]
对啊 ， 都不好使 。 但是因为它又是标准库的一部分嘛 ， 你又不能把它这个 ， 呃 ， 撤掉 ，不然它的那个隐藏的依赖就不太对了 。

所以这是一个两个极端的问题 。 但我觉得可能那个 JS 的最主要的问题就是 ， 同样是用第三方库 ， 它的那个所谓的粒度啊 ， 就是 granularity， 就是一个库到底是应该包含多大的功能才算一个库 。

呃 ， 它好像走到了一个比较极端的一个状态 。 好像之前就是这个 left pad 这个事情 ， 这个窈窕之统出来之后， 大家去看一下 NPM 上面那些下载量比较火的所谓的库 ， 好像最极端有个只有一行代码 。

**吴涛** [18:29]
对 ，有一个叫做 isArray 的库只有一行代码 ， 就是 。

**Rio** [18:33]
就判断一个变量是否是一个 ， 呃 ， 数组吧 。

**吴涛** [18:38]
对 。

**Rio** [18:39]
对 ， 就这就变得很奇怪了 。 因为在大部分的其他的这个语言里面 ， 你像不管是这个 ， 呃 ，Python 也好啊 ， 或者说是就常见的一些语言里面 ， 它的这个就是操作同类数据结构 ， 或者说是做同类相关工作的那些功能 ， 它会被就是归类为一个或者是两三个这种库里面 。

它不会拆到说判断一个数 ， 判断一个变量是否为数组这么一种功能 ， 会单独的成为一个库 ， 对吧 ？

**吴涛** [19:12]
对 ， 这其实是一个语言设计上的缺陷导致的这么一个目前的这样一个状况 。 就是因为可能这个 JavaScript 的设计者根本不会想到有一天会有人真的去操心要判断一个东西是不是数组这件事情 。

所以这功能根本就没有做出来 ， 对吧 ？ 然后如果你仔细去看 。

**Rio** [19:32]
但就算没做出来 ，但是这个就这个 ， 比如说刚才讲这个 left pad 也好 ， 它为什么不是一个这个叫什么处理字符串的一个库的一个功能 ，而是要单独占用一个库呢 ？

**吴涛** [19:46]
好吧 ， 那如果抛开语言设计本身的问题呢 ， 我觉得可能还是一个 community， 就是这个社群没有建立起一个 ， 呃 ， 比较合理的组织类库的组织标准库的方式 。

呃 ， 它有点像一个 ， 就是沿用那个 Bazaar 和 Cathedral 的比喻的话 ， 它没有试图去建立起来 ， 建立起一个比较系统化的 ， 更有

条理的这么一个类库的结构 。 而是就任其发展 ， 就可能这个即便是 Bazaar 和 Bazaar 之间也有区别的吧 。 那其他语言的 Bazaar 可能是一个 ， 比如说一个经过有多少有这么一点管理的那种 ， 呃 ， 自由市场 。

但是在 NPM 这一边 ， 那可能就是几十万个苍蝇摊子那样堆在一片平地上 。

**Rio** [20:41]
呃 ，但这里有一个问题就是说 ， 呃 ， 它为什么这个社区会产生这么一种文化 ， 然后后来就有人去追根溯源嘛 ， 就到底去看为什么会是 ， 呃 ， 就别的语言都没有这么干的嘛 。

别的语言都是老老实实的一个 ， 比如说有一个 string library， 对吧 ？ 它做一些 string 的操作 ，有一些这个什么 ， 比如说 big number 的 library 做一堆 big number 的事情 。

但是因为 JS 它要 ，JS 大部分就分前端和后端吧 ， 前端的是要放在客户端里面去执行的嘛 。

**吴涛** [21:16]
对 。

**Rio** [21:17]
那也就是说每次用户打开这个网页的时候 ， 都要重新再下载一遍这个网页上面的这个 JS 代码 。

那么为了提高这个响应速度呢 ，他们就会有一种 ， 呃 ， 诉求 ， 就是要这个代码的体量尽量的小 。

然后就变成一个很尴尬的问题是说 ， 如果我只需要用这个一个字符串 ， 呃 ， 函数包 ， 函数库里面某一个函数的话 ， 我是不是要把整个字符串 ， 整个字符串这个 ， 呃 ， 这个叫函数库都引进来 ？

**吴涛** [21:56]
嗯哼 ， 所以我只需要就像一个汉字字体一样 ， 如果我能只引进那些我需要的东西就好了 。

**Rio** [22:03]
对 ， 所以其实就遇到一个 ， 就是在 JS 社区里面他们遇到了一个代码重用和这个结构 ， 呃 ， 这个代码组织 ， 呃 ， 出现了一个比较矛盾的一个地方 。

就是说如果从代码重用的角度来讲 ， 你肯定是说某一个功能做得越细越好 ， 这样看 ， 就比如说每一个函数都可能是只有两三行 ， 然后它完成一个 。

**吴涛** [22:24]
可以单独拿出来 。

**Rio** [22:25]
对 ， 可以单独拿出来用 ， 对吧 ？ 但是在代码组织上面 ， 呃 ， 如果你是这么干了的话 ， 然后你就变 ， 发现你会变得 ， 呃 ， 所有的这个功能你都要去 ， 就你 import， 你看一下一个比较正常的一个 JS 的一个文件 ， 你看它头部的那些 require 啊 ， 还有现在用 JS， 那个 ES6 的话是 import 语句 ， 都会非常非常多 ，因为它非常非常 ， 就是每一个都非常细碎嘛 。

这样的 ， 呃 ， 语言就导致 ， 就是刚才讲的这个 ， 它有一个这个诉求是为了降低这个代码的 ， 呃 ， 整个尺度 ， 就是说我只用了那一部分功能 ， 我就不需要引入全部的东西了 。

但其实在其他语言上这个东西是可以 ， 这个矛盾是可以解决的 ， 可以通过用技术的方式解决 ， 叫做什么 ， 呃 ， 就是无用代码消除嘛 。

比如你引用了一个函数库 ， 假设它函数库里面有 10 个函数 ， 然后你只用了其中一个 ， 另外 9 个都没有用到的话 ， 那理论上是可以通过 ， 呃 ， 编译器啊 ， 或者其他方法把那些就是所谓的 dead code， 你从来也不会引用到的代码给消除掉 ， 对吧 ？

但是要实现这一点呢 ， 必须要编译器对这个语法的静态分析要有比较深入的理解 ， 就是它可以 ， 它必须要明确的知道在编译期间 ， 就不是在运行期间啊 ， 就知道这个代码你是不会用到的 。

那不管是通过这个什么动态加载啊 ， 还是什么方式 ， 你肯定是不会引用到那部分代码 ， 所以编译器可以很安全的把它们移除掉 。

但是这一点在很多静态 ， 呃 ， 动态语言里面 ， 像 Java 啊 ，Python 啊 ，Ruby 啊 ，Lua 我不太清楚可不可以哈 ， 都是比较难实现的 。

因为编译器没有办法在静态的时候就绝对有可信的把握表明那个那部分代码是不会被引用到的 。

因为有可能那部分代码在这个整个程序运行期间被动态的一个命名方式或者是改名还是怎么样去把它引入进来 。

而这个是你在静态分析的时候没法做的 。 所以这个语言特性的导致在有这种需求的情况下， 我们只好采用手工的方式把代码切得非常非常细 ， 然后这样我们只引用需要的部分 ， 这样等于是人工的告诉它说 ， 哎 ， 我只需要这个 left pad，不需要 right pad 这个功能 ， 对吧 ？

**吴涛** [24:50]
对 ， 所以归根结底还是语言设计的问题 ， 或者语言特性导致的一个问题 。

**Rio** [24:57]
但其实这个问题在后端是不存在的 。 就是像 NPM 现在很多人都用来做那个 ， 就是后端的程序嘛 。

因为后端 ， 呃 ， 你没有这个要把代码精简得很小的需求 ， 对吧 ？ 因为你说哪怕是再多挺复杂的一个 ， 呃 ， 后端程序 ， 哪怕是用 JS 来写的话 ， 几十兆 ， 上百兆不得了的 ， 然后对于本地 。

**吴涛** [25:19]
但问题在于 ， 呃 ， 这个就是发生了 ， 呃 ，NPM 发生了这个幺蛾子 ，其实也是对后端有影响的 。 因为后端里面可能也有很多人在用 ， 呃 ，left pad 这个库 ， 对吧 ？

**Rio** [25:31]
对 ， 没错 。

**吴涛** [25:32]
对于后端的影响只不过是它不能 ， 一时半会儿不能开发了而已 。

**Rio** [25:36]
这个问题就在于这个 JS 这个语言 ， 除了它传统上是用来做前端程序嘛 ， 现在也在被用来写后端程序了 。

那于是就会发现说 ， 哎 ， 呃 ， 我们是不是要从同一套这个 ， 同一个代码库 ， 同一个这个代码仓库 ， 就 NPM 吧 ， 这个就比较火的例子 。

那如果你重用了那些为前端 ， 呃 ， 代码优化组织的一个代码库的话 ， 你后端是不是也会产生同样的问题 ？

就哪怕说你后端没有这个要压缩代码量的需求 ， 呃 ， 你可以接受一个你引入了一个 ， 呃 ， 字符串处理的库里面你只用了其中一个函数 ，而其他 99 个你都用不到 ，但对你来说没有任何影响 。

但是因为现在我们讲前后端统一的话 ，JS 在这边跑得最远了嘛 ， 那它就没有办法说那我后端就采用另外一套组织代码这个代码库的方式了嘛 。

**吴涛** [26:33]
这件事情搞笑之处在于它是无解的 ， 我觉得 。 就是你在目前这个 ， 呃 ， 现实情况之下， 你没有办法杜绝说下次就不会出现这样的事情 。

你也不 ， 你也没有一个比较简单的一揽子的解决方法说这个语言要这样改革 。 因为这个语言现在 Apple4us 就不属于任何人， 它是一个 standard， 对吧 ？

它不像 Python 有这么一个独裁者可以说啊 ， 这个语言要这样做 。 于是轰一下就大家都这样做了 。

**Rio** [27:04]
但我觉得有解啊 ，其实 。 因为最简单的一个事情就是说 ， 那你既然就假设我们不想去浪费人力物力去重新组织这些已有的这个 JS 的一些代码库哈 ， 我们还是就从用现在这套模式下， 你怎么可以避免 ， 呃 ，其中某一个这个 ， 呃 ， 库被删掉了 ， 然后导致你整个这个软件大厦都崩塌掉这种事情发生 。

那你可以学这个什么 Golang 的方法嘛 ， 你做一个 vendor， 对吧 ？ 就是你把那个外部的这代码依赖也放进你自己代码仓库里面去 ， 这样然后外部的修改你是作为整个代码的一个 ， 呃 ， 修改的一部分去做 。

对 ， 就是说 ， 呃 ， 我们可能从稳定稳健 ， 稳健系统稳健和这个整个 ， 呃 ， 呃 ， 叫什么开发部署过程的 ， 呃 ， 可靠性的角度来讲 ， 你应该把那些任何会影响到你 ， 呃 ， 代码的运作的组件都视为你这个项目的一部分 ，并且管理起来 。

**吴涛** [28:10]
嗯 ，其实在早期没有互联网的时代 ， 大家都是这样做的 。

**Rio** [28:15]
对 ， 这就变成了一个 ， 就变成一个习惯使然的东西 。 大家都觉得啊 ， 我们这个 ， 我们这个 ， 呃 ， 服务器和这个开发机都是一直联网的 ， 没联网我们啥也干不了的 ， 对吧 ？

所以如果这样的话 ， 我可以依赖 ， 然后我们假设那个 NPM 这个 ， 这个 ， 呃 ， 这个代码托管的一个仓库 ， 它是一直是 ， 呃 ， 持续可用的 。

那确实相比于说 ， 呃 ，Python 的那个 PyP， 对吧 ？Python package index 的可用性来说 ， 这个 NPM 确实是领先好多 ， 可能好多个数量级的 。

**吴涛** [28:49]
对 ， 就是因为它太可靠了 ， 所以 。

**Rio** [28:51]
对 。

**吴涛** [28:52]
很难 ， 没有人想过说这玩意居然会当 。

**Rio** [28:55]
对 ， 没错 。 然后也没有人， 也之前也没有人遇到说 ， 呃 ， 别人发了这代码 ， 然后就是 。

**吴涛** [29:02]
又被撤下来 。

**Rio** [29:02]
被撤下来这么一个事 。

**吴涛** [29:04]
而且是 ，而且尤其我觉得就是有些代码库可能是这个作者就干脆就不管了 ，但不管 ，他哪怕不管的时候 ，他也不会主动就是把它撤下来 。

**Rio** [29:14]
对 。

**吴涛** [29:15]
而更别说 。

**Rio** [29:16]
他觉得是 abandoned，他不是 removed， 对吧 ？

**吴涛** [29:19]
对 ，而这个人就是他出于一种 ， 你可以说 revenge 这个样 ， 这样一个心理 ， 就做了这样一件事情 ，他这个后果其实还是挺严重的 ， 就几乎和我们这个本期的口号相呼应了 ， 就是这也算是某种 mass mass destruction 了 。

**Rio** [29:36]
嗯哼 ， 对 ， 这个是一个挺好玩的一个事哈 。 但扯到这里就不得不说一句 ， 就是经常写 ，也写那个 go，也写 JS 嘛 。JS 就是说代码重用到了一个比较变态的一个程度 ， 对吧 ？

我为了不要重复写那个 system_is_array 这个函数 ， 我都要把它单独抽象成一个库 。 呃 ，但其实在 ， 我知道比如说在 Golang 的这个就所谓的 best practice 里面 ，他们经常会说 ， 如果这个功能很简单 ， 你可以随时写出来 ， 那你就不要去引用一个外部的依赖了 。

**吴涛** [30:14]
呃 ， 这是两种哲学吧 。 因为就有些我看那个评论 left pad 这个式的那个 ， 呃 ，blog 里面也会说这么一个简单的功能 ， 为什么很多人都选择要去 ， 首先你要去 NPM 上搜这样一个库 ， 对吧 ？

然后搜到了去 include 它的这样一个过程 ，其实并不比你自己写一个要容易多少 。 那为什么会有这样两种哲学存在 ？

一种就是说好吧 ， 那这么简单的东西最好自己写一个 。 另一种 ， 呃 ，而与之相反的就是有些人会说 ， 那既然已经有人发明了轮子 ， 你为什么还要自己再弄一个 ？

**Rio** [30:51]
嗯哼 ， 就代码重用到是否是要追求到一个极致 ， 我的一个程序里面不会出现一行重复的代码 。

**吴涛** [30:59]
对 ， 这里这整个程序没有一行是我自己写的 ，有这种感觉 。 就对 ， 我可以用别人写好的代码 ， 用别人写好的类库 ， 用别人写好的 ， 呃 ， 用别人开发好的框架 ， 然后我只需要往里面填内容就可以了 。

**Rio** [31:16]
但是这里有一个很好的一个反驳哈 ， 就是因为这个 JS 这个语言的坑实在是太多了 。 哪怕你是否写一个 system_is_array 这种 ， 这种看起来很简单的函数 ， 你用逻辑去推理说啊 ， 应该它应该这样判断 ， 这样判断 ， 最后发现你查一下实际的比较可靠的写法是什么 ？What the fuck， 这为什么会考虑这么多奇怪的 edge case？

**吴涛** [31:37]
Two-string dot call，two-string dot call， 然后那个 object， 然后判断这个 two-string call 的这个 object 上面得到的内容是不是 object array。 我觉得这个已经很扯了 ， 就是你要判断一个东西是不是数组 ，在 JavaScript 里面居然要通过比较字符串的方式 ， 我觉得这个实在是啊 ，holy crap。

**Rio** [31:59]
对 ， 所以其实这件事情也是有它的这个 ， 呃 ， 客观 ， 呃 ， 原因的 。 就是说不是说因为我们这个 JS 程序员懒 ， 还是说都是些 ， 对吧 ？

因为就是通常外界可能这个对 JS 开发者有一种偏见 ， 就是说是一帮没经过正统科班教育的啥也不懂的小年轻 ， 对吧 ？

这么一种成见的印象 。 对 ，但其实从实用的角度来讲 ，他们采取这么方式做也是所谓的为了更 ， 就是减小成本嘛 ， 简单来说 。

因为你自己要去写一个哪怕是看起来非常简单 、 通俗易懂的一个功能 ， 都要去理解 JS 这个语言设计层面 ， 或者说在某一个这个运行时里面的各种各样的坑 。

然后你如果与其这样 ， 你还不如说让别人先把这个坑踩完 。 虽然很简单 ，但是可以确保那个坑是已经是已知的 。

**吴涛** [32:54]
已经被踩实了 。

**Rio** [32:55]
对 ， 已经被前任的尸骨填平了 。

**吴涛** [32:58]
对 。

**Rio** [32:59]
所以 ， 所以其实我不知道你没有最近关注那个 JS 他们在做一个 ，他们有一个新的技术 ，也不知道跟 JS 没什么关系吧 ， 叫做 Web Assembly， 呃 ，Web 汇编语言 。

### WebAssembly

**吴涛** [33:12]
对对对 ， 就是对 。

**Rio** [33:14]
简单 。

**吴涛** [33:14]
相当于一个 ， 呃 ， 最基本的子集 ， 然后其他的高端语言可以编译成这个基础的子集 ， 然后跑到浏览器上 。

**Rio** [33:23]
对 ，因为现在其实最麻烦的问题就是说 ， 为什么 JS 是变成一个大家要追求的一件事情 ？ 虽然我们都知道这个语言的各种坑设计的也很烂 ， 对吧 ？

因为你没得选择 ， 你在前端这个浏览器里面你只能用这个语言 。 那你要反过来问 ， 为什么这个浏览器不搭载一些比较 ， 比较 sane， 比较看起来没那么疯狂的的运行时呢 ？

这个一个是有历史原因 ， 先来后到的关系 ， 对吧 ？ 那毕竟最开始的时候浏览器支持那么多 ，但你也不得不好奇说 ， 你说像现在这个像 Chrome 的市场占有地位和这个 ， 呃 ， 叫什么 ， 呃 ，WebKit， 就或者说 WebKit 为核心的这种浏览器的这种市场占有地位 ，而且其实跟 WebKit 没什么关系 ， 它是另外的一个 JS 的引擎吧 。

但是就说你说啊 ， 我们把这个其实只要两三家公司这个合起来推荐的事情 ， 就可以完全替掉那个 JS。

**吴涛** [34:21]
对啊 ，不是有那么多什么 consortium 之类的东西存在 ， 就为什么不能一起来推进这些 。

**Rio** [34:26]
对 ，因为其实你看一下现在只需要说把 ， 呃 ，Google 出马 ， 然后苹果出马和微软出马 ， 就可以把可能 90% 多的这个浏览器市场里面内置的这个解析器引擎给换过来 ， 对吧 ？

**吴涛** [34:40]
对 。

**Rio** [34:40]
但是就既然像什么 CSS 标准都可以去换 ， 为什么浏览器里面出一个加一个新的运行时是不可以的呢 ？ 呃 ， 算 Web Assembly 算是从 Mozilla 那边出来的一种尝试吧 。

然后那就说我们不要 ， 我们直接运行一些非常底层的代码 ， 像类似于 Bytecode 吧 ， 你可以这么理解 。 然后这个 Bytecode 可以被 ， 呃 ， 浏览器里面自带的引擎用 JST 的方式比较方便的编译好 ， 然后它也同时可以是比较容易成为其他语言的一个 target， 对吧 ？

就是你写 ， 你哪怕你写 Java， 你写 C， 呃 ， 你写 Go、Python， 它都可以比较容易的通过 compiler 编译器把它编译成一个 Web Assembly 的一个中间的一个表现形式 。IL 吧 ， 算是 。

啊 ， 然后再被浏览器解析成 ， 呃 ， 根据它不同的架构哈 ， 解析成可以执行的代码 。 这样是不是就好一些呢 ？

这样是不是就可以说大家都不用都去写 JS 了呢 ？

**吴涛** [35:46]
嗯 ，Java 说好好好 ， 我早就做过了 ， 我也早就失败了 。

### 旧网络与网银

**Rio** [35:50]
哈哈哈哈

。 呃 ， 对 ，以前那个叫什么 Java applet 还是叫什么来着 ？

**吴涛** [35:59]
Java applet。

**Rio** [35:59]
Applet， 对 。

**吴涛** [36:00]
好在成就 ， 如果各位 ， 如果居然有 ， 呃 ， 这个年轻的听众们不知道 Java applet 是什么呢 ？ 它有点像一个 ，有点像 flash， 就是你用 Java 写一个程序 ， 然后 。

**Rio** [36:12]
这个比喻还挺贴切的啊 。

**吴涛** [36:15]
对 ， 然后它可以跑在浏览器里面 ， 然后那个浏览器里面会有那么一小块区域 ， 明明嵌在网页里面 ，但是 ， 呃 ， 看起来会网页 ， 看起来不是普通的网页的元素 。

我记得以前学的时候还写过什么实现一个倒影效果之类的 。

对 ， 后来我好像我在做助教的时候还写过一个 Java， 就模拟那个 AutoCAD， 就是 AutoCAD 那个 。

**Rio** [36:44]
嗯 ， 建模软件 。

**吴涛** [36:45]
因为对 ，因为我们学校学那个机械设计的那帮人买不起 AutoCAD， 或者说德国没有盗版生意 。

**Rio** [36:54]
就自己寨了一个 。

**吴涛** [36:56]
对 ，他们必须在那个网页上练习如何使用 AutoCAD，但是那个不可能每个人都每天去机房 ， 所以就做了这么一个在线教学系统 ， 就是让大家去学 AutoCAD 怎么用 。

我写过这么一个东西 ， 就是用 Java applet 做的 。

**Rio** [37:13]
就是这个 AutoCAD emulator 了 。

**吴涛** [37:17]
对 ， 就是当然没有那么 emulator 那么强 ， 它只是提供一些最基本的 behavior 那个练习 ， 比如说画圆 、 画方 、 量距离 、 量角度之类的 。

**Rio** [37:29]
哎 ， 那个 applet 后来怎么开始从江湖上销声匿迹了 ？

**吴涛** [37:34]
就没有人用了 。

**Rio** [37:35]
为什么呢 ？

**吴涛** [37:36]
嗯 ， 一方面就比如说 flash 能够流传下来 ， 就存活下来 ， 一方面是因为 flash 能够提供很多非常 ， 呃 ， 酷炫的交互功能 。

**Rio** [37:46]
没错 。

**吴涛** [37:47]
嗯 ， 另外另外一方面 ， 呃 ，flash 可以播放视频 ， 对吧 ？ 这个在教主把它提出来事件事的之前 ， 所有人都觉得理所应当 ， 就是 flash 就是拿来播放视频的 。

但是 。

**Rio** [37:59]
对 。

**吴涛** [38:00]
但是 applet，Java applet 没有任何这方面的优势啊 。 就是你使用 Java applet 来写出来的程序 ， 可能是要比使用 JavaScript 来写要 ， 或者说 flash 来 ，不对 ， 可能要比用 flash 或者 JavaScript 来写 。

没错 ，flash 使用的语言是 ActionScript，ActionScript 的恶心程度其实和 JavaScript 不相上下 。

**Rio** [38:20]
它就是一个变种吗 ？

**吴涛** [38:21]
对 ， 它们都是 ECMA script。 然后， 嗯 ，但是唯一这样一个优点是对于开发人员来说 ， 就是你在写 Java applet 的时候 ， 你用的是 Java， 就你没有那么痛苦 ，但能够达到效果和能够完成的事情都没有 flash 那么好 。

**Rio** [38:44]
哈哈哈 。

**吴涛** [38:45]
所以这其实是一个用户选择的过程 。

**Rio** [38:50]
所以 applet 后来是被 flash 插件给干掉了 。

**吴涛** [38:53]
几乎可以这么说吧 ，因为在早期 ， 哪怕现在你在某些网站上还是会遇到 Java applet， 这个时候网站会问说你要启用这个外部程序吗 ？

至少我就是如果你把那个 ， 呃 ，plugin 关掉的话 ， 它网站浏览器可能会问你 ， 你说你要启用这个外部程序吗 ？

**Rio** [39:12]
因为我遇到 ， 我遇到这种情况的话 ， 基本上都是可能很用到这种很老的什么教学软件才会遇到这种情况 。

基本上任何新出的后来或者比较大众一点东西都没有用到这个 applet 这个技术 。

**吴涛** [39:28]
就我意思是那个时候就很多人都会出现这样的什么 ， 呃 ， 那个时候还有微软的 Active X， 对吧 ？ 就一大堆插件 ， 那其实走向必然的一个结果就是所有这些插件里面可能只有一两个能够存活下来 。

那存活下来基本上就是 flash 和 Active X 存活了很长一段时间 。

**Rio** [39:50]
哎 ，不过现在好了 ， 你看像 applet 已经嗝屁了 ， 然后， 呃 ，Adobe 也在说不要用 flash 开发新东西了 ， 然后 Active X 好像也挂掉了吧 ？

在那个 Edge，在 Edge 里面已经没有了 ， 我记得 。

**吴涛** [40:04]
我记得前两年还有很多人在那个抱怨网银 ， 中国的网银全都是 Active X， 现在好像没有了 。

**Rio** [40:11]
现在大家都用手机网银 ， 谁还管你那个浏览器里面怎么样 。

**吴涛** [40:15]
啊 ， 原来如此 ，OK。

**Rio** [40:17]
对吧 ？

**吴涛** [40:18]
所以中国的网银问题是这样解决的 。

**Rio** [40:21]
对啊 ， 就根本那个问题就只是说因为那个什么 PC 这个整个 use case 被淘汰掉了 ， 所以大家根本不 care 这件事情了 。

现在你说我要去银行转 ， 我要去用那个银行转账的功能 ， 我肯定不会打开银行网站了 ， 打开那个手机网银点点就完了 ， 对吧 ？

或者还有就是那个 ， 呃 ， 支付宝和微信转账嘛 ，也很方便 ， 对吧 ？ 就大家也就随你去吧 ， 你爱怎么弄怎么弄去 。

**吴涛** [40:46]
OK， 相比之下德国的网银还是一直建的 ，而且用起来还挺方便的 。

**Rio** [40:53]
对 ， 这个在 。

**吴涛** [40:54]
就我现在 ， 我现在转账基本上还是用网银 ，而且德国 。

**Rio** [40:59]
不 ， 你那个银行有移动吧 ？ 有移动 APP 吗 ？ 可以转账吗 ？

**吴涛** [41:02]
有移动 APP，有移动 APP 可以转账 。

**Rio** [41:04]
OK。

**吴涛** [41:04]
但是 ， 呃 ， 移动 APP 仍旧就它有两个 APP， 一个是生成那个验证码的 APP， 另外一个是网银本身 。

**Rio** [41:12]
那我先不抓到一起 。

**吴涛** [41:15]
呃 ，因为验生成验证码的 APP 可以不需要登录就扫描一个 ， 嗯 ， 它不是二维码 ， 它是一个彩色的圆点构成的这样一张图 ， 然后 。

**Rio** [41:30]
那也是二维码呀 。

**吴涛** [41:31]
你用 。

**Rio** [41:31]
二维码有很多表现形式的 。

**吴涛** [41:34]
哦 ， 它不是 QR code，也不是什么 ， 就它不是任何我已知的二维码 ， 它是一种 ， 比如说那个机票上面有时候会出现那个 Aztec code， 对吧 ？

它什么都不是 ， 它不是任何我已知的 ， 呃 ， 单色的二维码 ， 它是一个彩色的二维码 ， 它是红 ， 对 ， 红 、 绿 、 蓝三种颜色的圆点排列在一个正方形里面 ， 然后用那个生成验证码的 APP 去扫 ， 扫了之后会生成一个七位的数字 ， 然后你把这个七位数字填到网页或者是 ， 呃 ， 手机网银的那个验证码那一栏里面 ， 然后就可以转账 。

**Rio** [42:13]
这个所谓合适 。

**吴涛** [42:15]
呃 ， 好像这是从早期的德国网银的那个支付生成器流传下来了 。 就是以前德国网银的使用方法是把一张卡插到一个小设备里面 ， 然后这个设备你一般要花 10 欧元买 ， 然后你拿这个设备对准屏幕 ， 屏幕上会出现两个闪烁的黑色的光斑 ， 然后这个 ， 呃 ， 支付码生成器上面有两个感光元件会去感受这个光斑的闪烁频率 ， 然后给你显

示一个数字出来 ， 然后你把这个数字填到网页上 。 这可能是一种用户习惯的遗传 。

**Rio** [42:53]
那个国内的银行也好 ， 忘了是哪家银行 ， 之前也就国内银行也干过 ， 采用过各种各样奇怪的技术方案 。

有一我记得很早以前好像是建行吧 ，有一个它会给你一张纸 ， 纸上有一个不规则排列的一堆 ， 一个 ， 呃 ， 一个矩阵 ， 每个就是每一格是一个数字嘛 ， 然后你在登录的时候 ， 你要按照它屏幕提示在哪一格 ， 呃 ， 输哪一格哪一行的 ， 就哪一行哪一格的数字 ， 然后再输联络机 。

**吴涛** [43:22]
这个其实是一个很古老的密码 ， 就是 ， 呃 ， 密码本的方式啊 。

**Rio** [43:27]
对啊 ， 就密码本嘛 。

**吴涛** [43:29]
我小时候玩一个 ， 玩一个什么三国游戏的时候 ， 就是每次打开这个游戏就要输入密码本上的 。

**Rio** [43:36]
对对对对对 。

**吴涛** [43:38]
XY。

**Rio** [43:38]
然后这个 ， 这个那张纸 。

**吴涛** [43:40]
魔术师剑也用过 。

**Rio** [43:40]
对 ， 那张纸用几次之后还得就无效了 ， 就得再换一张新的 ，因为它需要 ，因为每个人拿那个本是不一样的嘛 。

**吴涛** [43:49]
对 ， 德国网银也有这样的 ， 就德国网银如果方法更简单 ， 就是很多网银就是如果你 ， 呃 ，不一定是网银 ， 还有电话银行 ， 就是它会给你寄一个有 100 个数字的纸 ， 然后你每次要干什么 ， 然后你就可以把这个数字 ， 它会说啊 ， 我要你的第 56 个密码 ， 然后你把第 56 个密码给它 ， 然后第 56 个密码就作废了 。

**Rio** [44:14]
对对对 ， 我也用过 。 之前我用那个 Sparkassen 的时候 ， 它也给我一张纸这个 。

**吴涛** [44:19]
对 ， 这是密码学里面其实最安全的一种方式 ， 就是不可破解的一次一密 。

**Rio** [44:26]
这也算是早期形态的这个什么两步验证吧 ，因为你除了知道你的银行账户的密码之外， 你还得知道你还得拿着那个小本 ， 然后按照那个规则 ， 等于是验证你有没有那个小本嘛 。

**吴涛** [44:38]
对 。

**Rio** [44:39]
挺搞笑的 。

**吴涛** [44:41]
对 ，其实现在的 authenticator 也都是一次一密了 ，在这个意义上 。

**Rio** [44:45]
现在的那个比较常用的就是那种基于时间的这种一个变动的码嘛 。

**吴涛** [44:50]
对 ， 我手机上装了 Google Bitternet， 呃 ，Dropbox， 还有什么一大堆 ，GitHub。

**Rio** [44:59]
对 。

**吴涛** [45:00]
还有苹果 。

**Rio** [45:01]
你是用哪个客户端 ？ 我用那个 Authy。

**吴涛** [45:04]
哦 ， 我就用 Google。

**Rio** [45:06]
Authenticator。

**吴涛** [45:07]
Authenticator， 对 。

**Rio** [45:08]
OK。

**吴涛** [45:08]
它那个 。

**Rio** [45:09]
这有什么差别吗 ？ 难道这里面有什么 Consola 的那个 ？Authy 有一个挺好的 ， 它可以做到那个 Today View 的那个里面直接显示几个 ， 你解锁状态下是可以不用打开那个应用直接看的 ， 常用的那几个 1、2。

**吴涛** [45:25]
OK。

**Rio** [45:25]
可以看常用的 6 个这个两步验证的那个 code。

**吴涛** [45:31]
OK， 那我应该就装一个 。

**Rio** [45:33]
然后之前 ， 之前我用那个 Authy 的最主要原因 ， 它当时说它是有一个一个 Mac 上面的一个附属软件 ， 可以通过蓝牙的方式直接读取你那个 code， 可以剪贴复制了嘛 。

**吴涛** [45:47]
嗯 ，OK。

**Rio** [45:48]
但是后来其实用了发现根本就不稳定 ，因为那个 iOS 上面蓝牙不是随时都 ， 就它不能一直在后台启动嘛 ， 那个应用 ， 所以它跟那个 Mac 的蓝牙连接是不稳定的 。

最后还是发现 ， 哎 ， 还是改到 Today View 里面直接拉下来 ， 然后输一下比较简单 ， 反正就 6 位数嘛 。

### 汽车与OBD

**吴涛** [46:08]
OK， 哎 ， 说到这个 iOS 蓝牙 ， 真是我前两天买了一个 ， 我前两天车坏了 ， 就是 。

**Rio** [46:15]
哦 。

**吴涛** [46:16]
开到一半的时候会说 ， 就是尤其在高速上面 ， 就我正在用 150 的速度超车 。

**Rio** [46:22]
不好意思 ， 你的轮子已经没有了 。

**吴涛** [46:25]
不 ，在超车道上它忽然显示一个 ， 就是翻译过来就是 ， 呃 ， 引擎出力降低 。

**Rio** [46:34]
啊 ？

**吴涛** [46:34]
就是引擎出力降低 。

**Rio** [46:37]
啊 ，OK。

**吴涛** [46:37]
就大概这么一条 。

**Rio** [46:38]
就是输出不足嘛 。

**吴涛** [46:40]
对 ， 引擎出力不足 。 然后非常尴尬啊 ， 你在超到 150 的时候 ， 右边的车可能 130， 然后你就差不多了 ， 然后右边车像看傻子一样看着我 ， 然后因为在德国右侧超车理论上是犯法的 ， 对吧 ？

就它没办法 ，但是我就是那么慢 ， 我既不比它快 ， 我也只好比它慢下来 ， 所以它就只好从右侧超过我 ， 然后我再并到它后面去 。

就其实这个场景是非常危险的 ，因为我在高速上还好 ， 那假如是那种两车道的中间是虚线的地方 ， 我到左边去超车 ， 然后超到一半突然引擎没力了 ， 然后对面来的车不就把我撞死了吗 ？

**Rio** [47:23]
不 ， 这个时候不应该减速 ， 然后等那个你右边那个车到你前面之后你再切回去吗 ？

**吴涛** [47:29]
对 ，是应该这么做 ，但是如果来不及呢 ， 对吧 ？ 如果来不及就是很危险的一件事情 。 就你在我在减速的过程之中对面来车怎么办 ， 对吧 ？

嗯 ， 然后我就想说 ， 嗯 ， 那个买一个 OBD 的那个 ， 呃 。

**Rio** [47:46]
你买了个蓝牙的 ， 对不对 ？

**吴涛** [47:48]
对 ， 买了个蓝牙的 。

**Rio** [47:49]
奶音 。

**吴涛** [47:50]
哈哈哈 ， 然后就蠢了 。iOS 是连不了这个 OBD 的蓝牙的 ， 对 ， 它要求是 Android 手机 ， 所以我被迫又去换了一个蓝牙的版本 ， 呃 ， 换了一个 WiFi 的版本 。

**Rio** [48:03]
因为那个 iOS 的蓝牙你不愿意的情况下它是没有那个 Console 的那个 Profile 的 ， 然后你就读不到那个 OBD 蓝牙传给你的信息 。

**吴涛** [48:13]
对 ， 这实在是 。

**Rio** [48:16]
是不是很傻 ？

**吴涛** [48:18]
好吧 ，不过类似事情也不是第一次了 ， 就是很多东西都是 ， 呃 ，Android 可以做 ，iOS 不能做 。

**Rio** [48:26]
对啊 ， 这个毕竟就是什么限制程度不一样嘛 。In the name of security。

**吴涛** [48:32]
对 ，In the name of freedom，I choose Android。

**Rio** [48:37]
所以后来你那个车怎么一回事 ？

**吴涛** [48:39]
啊 ，是后来读了一个 Error code 是什么柴油预热的 ， 呃 ， 读数不正常 ， 然后 。

**Rio** [48:50]
哦 ， 你买的是柴油车 ？

**吴涛** [48:52]
那当然了 ，在欧洲 ，在欧洲柴油有补贴的嘛 。

**Rio** [48:58]
那你那个车被召回了吗 ， 现在 ？

**吴涛** [49:00]
哦 ， 没有 ， 我是沃尔沃嘛 ， 我不买德国车业 。

**Rio** [49:04]
哈哈哈 ， 对 。

不过沃尔沃之后也可能爆出一个什么 Dieselgate。

**吴涛** [49:11]
也不是没有可能 ， 我有个朋友就也不是没有可能这句话的发明人， 呃 ， 回忆说 ， 呃 ， 我是他认识的人里面唯一一个 ， 就在德国的华人里面唯有唯一一个没有买德国车的人。

**Rio** [49:27]
哎 ，在德国买德国车更便宜吗 ？

**吴涛** [49:29]
反正要比在中国买原厂原厂的德国车便宜 。

**Rio** [49:32]
那肯定 ， 没有关税嘛 ， 起码 。

**吴涛** [49:35]
对 ，但是德国车还是 ， 反正喜欢买不起嘛 ， 就买不起都不喜欢 ， 所以买了沃尔沃 。

**Rio** [49:44]
你喜欢什么 ？

**吴涛** [49:45]
宝马 M4。

**Rio** [49:48]
M4 多少钱 ？

**吴涛** [49:49]
五六万 ， 六七万 ，不知道 。

**Rio** [49:51]
那沃尔沃多少钱 ？

**吴涛** [49:52]
沃尔沃 ， 沃尔沃一万多 。

**Rio** [49:55]
啊 ， 差这么多 ？

**吴涛** [49:57]
对啊 ， 就双门轿车而已嘛 。

**Rio** [50:01]
好吧 。

**吴涛** [50:02]
对 ，anyway， 回到这个 ， 就是反正柴油预热器的一个什么东西坏了 ， 就是这个东西 ， 对 ， 下周要去换 。

**Rio** [50:10]
柴油预热器 ， 等等 ， 柴油什么预热器 ？

**吴涛** [50:13]
因为柴油 ，因为柴油是就 ， 呃 ， 内燃机里面 ， 呃 。

**Rio** [50:18]
它是靠冲压引燃的嘛 ，不像火花塞嘛 ，但为什么要预热呢 ？

**吴涛** [50:22]
汽油是要用 ， 汽油是要用火花塞的 ，而柴油是直接压下去 ， 柴油就会自燃 ， 就会着的 。 然后在天比较冷的时候 ， 柴油可能要先预热才可以 。

**Rio** [50:35]
它不然不能雾化是吧 ？

**吴涛** [50:37]
对 ， 它雾化的不完全 ， 然后就会积碳啊什么的 ， 就燃烧不完全 。 所以有这么一个预热装置 ， 早期的柴油车里面会有一个仪表盘上会有一个看起来像保险丝一样的东西 ， 一个灯 ， 那个灯亮的时候就意味着它在预热 ，但是现在就是比较新的柴油车都没有这个功能了 ， 就没有这个显示了 ，但是它还是会默默的预热 。

然后这个默默的预热如果 ， 呃 ， 失败的话 ， 就有可能产生这样的问题 。

**Rio** [51:04]
哦 ， 我明白了 。 所以后来你是怎么解决的 ？

**吴涛** [51:08]
没有解决啊 ， 下周二去修 。

**Rio** [51:10]
哈哈哈

， 我还以为你用那个什么 OBD 的那个 ， 那个什么 ， 那个那个那个一个小挂件 ， 然后叭叭叭弄一下就可以把它修好了 。

**吴涛** [51:20]
我靠 ， 这个硬件的东西 ， 硬件的问题是没有办法通过软件的 hack 来解决的 。

**Rio** [51:25]
之前我也买了 ， 我也不是买了 ， 就是朋友给我一个那个 OBD 的那种接蓝牙 ，是接蓝牙吧 ， 对 ， 没错 ， 然后也是连那个 iOS 没法连 ， 然后连 Mac 可以读出来 ， 啊 ， 就还 ，但是也不是很稳定嘛 ， 然后最后还是找了一个安卓手机上面有一个挺好的应用连上去 ， 才能够把里面的一个 Error code 给消掉 。

**吴涛** [51:48]
OK。 哦 ， 那你买的这个 OBD 还是挺高级的 ， 就是可以 program 的 ， 就是我买的这个 OBD 是只读的 ， 就它只能读出引擎的错误代码 。

**Rio** [51:59]
啊 ？

**吴涛** [52:00]
对 ， 就我需要的也只是这个 。

**Rio** [52:03]
就不能写回是吧 ？

**吴涛** [52:05]
对 ， 就你要说我把那个 ， 呃 ，Error code， 呃 ， 要有一个叫什么来着 ， 反正就是错误代码存储器 ， 你可以清零 ， 然后把它清零的话 ， 那个错误代码就没了 。

然后这个功能是需要写的 。

**Rio** [52:20]
对对 ， 没错 。 不过但你这样 ， 如果你只读的话 ， 你打算干嘛呢 ？ 你读出来没有用 。

**吴涛** [52:25]
我想知道为什么呀 ， 我只是想知道这个就是因为这条信息 。

**Rio** [52:29]
你要知道为什么 ， 你直接送去厂修不就完了 ？

**吴涛** [52:32]
可是送厂修不是得约时间吗 ？ 因为德国这点很讨厌 ， 就是你不管干嘛你都要事先约 ， 你知道吗 ？

就 。

**Rio** [52:39]
啊 ， 这个所有的资本主义发达国家都这样 。

**吴涛** [52:41]
对 ， 我想知道这个东西 ， 这个问题是不是严重 ，是不是很严重 ，因为在网上搜这个那个错误代码的时候 ，有些人说他当场就停下来 ， 然后直接让拖车把车拖到修车厂去了 。

我就想说这个问题到底是严重到这个程度呢 ， 还是说我可以继续开一阵 ？

**Rio** [52:59]
嗯哼 ， 现在你的结论是还可以继续开一阵 。

**吴涛** [53:03]
呃 ， 对 ， 反正每天开个几公里就没问题 。

**Rio** [53:07]
所以你看这个这种车这种蠢东西 ， 它的这个 Error reporting 实在是太差了是吧 ？ 为了你知道这个问题到底严不严重 ， 你还得专门买一个东西去读出来 ， 它为什么不直接做到仪表盘上显示呢 ？

**吴涛** [53:22]
因为这是一个 ， 呃 ， 你要给那些不那么 tech savvy 的人看一条非常复杂的错误代码嘛 ，因为就 。

**Rio** [53:30]
不是 ， 它可以翻译为那个比较容易理解的文字嘛 ， 那其实是为了 ， 这个其实是为了那个保护那个维修店的利益的嘛 。

**吴涛** [53:40]
嗯 ， 翻译成比较容易理解的文字 ， 比如说请维修 ， 可是最容易理解的文字不就是请把你的车带到 4S 店吗 ？

就很多 。

**Rio** [53:49]
不是啊 ， 这好像我们做写代码一样嘛 ， 你出错你还分个优先级对吧 ， 你会有这个 warning，critical，有 debug 而已对吧 ， 那你好歹出一个这个等级嘛 ， 我到底是要就地就不能开了等着救援 ， 还是说可以开到就近的修车厂去弄一弄还是怎么样对吧 ， 你起码有 。

**吴涛** [54:06]
这个还是有吧 ？

**Rio** [54:07]
就是没有啊 ， 我觉得 。

**吴涛** [54:10]
大部分车是会有什么 ， 比如说手册上会写啊 ， 比如说这个红色的那个发动机的那个灯亮起来的时候 ， 你就应该立刻靠边停 ， 然后去店里面修嘛 。

**Rio** [54:22]
那当时你出那个的时候 ， 它也不是亮了那个红色的灯吗 ？

**吴涛** [54:25]
对 ， 它没有亮那个红色的灯 ，但是我自己想要知道这个玩意到底有多严重 。

**Rio** [54:31]
但我的看就是很多车里面它就不具备这种区别对待 ， 或者说告诉你一个大致的一个自我诊断的一个结果嘛 ， 就是告诉你说要修了 ， 修了什么事不知道 ， 对吧 ， 傻不傻 ？

**吴涛** [54:45]
嗯 ， 好吧 ，但不管怎么说 ，OBD 接口这个东西 ， 我觉得如果你真的对车的状况感兴趣的话 ， 还是可以买一个 ， 然后用手机看一看 ， 尤其如果你有一个安卓手机的话 ， 你可以得到很多消息 。

**Rio** [55:02]
那你可以去买一个那个谁 ， 之前他们经常在打广告 ， 那个叫 Automatic， 那个可以连 。

**吴涛** [55:09]
你说在 Podcast 上面都打广告的那个 ？

**Rio** [55:11]
对啊对啊对啊 ， 那个已经前年还是上前年就已经有了 ， 它就是一个 OBD 的蓝牙的 dongle，但是它可以跟 iPhone 共同使用 。

**吴涛** [55:21]
OK。

**Rio** [55:22]
啊 ， 然后它可以告诉你常见错误 ， 会翻译成我说的人话 ， 告诉你到底严不严重 ， 它还能大致的记录下来你 ， 我想想 ， 应该是你行车的那个 ， 就通过那个 ， 呃 ， 就是叫什么来着 ， 你行车的这个状态 ， 比如说你是加速了多少 ， 然后这个有个这种曲线吧 ， 好像是 。

**吴涛** [55:43]
OK。

**Rio** [55:44]
这还挺有意思的 。

**吴涛** [55:44]
这个什么 Dash Command 之类的 App 也可以 。

**Rio** [55:48]
对对 ， 原理都是一样的嘛 ， 就是用 OBD，但是说它这个包装成产品感会比较好一点吧 ， 据说是这样 。

**吴涛** [55:55]
然后也贵一点 。

**Rio** [55:56]
啊 ， 贵很多 ， 你那个 OBD 的那个 dongle 多少钱 ？5 欧 ？

**吴涛** [56:00]
20 欧吧 ， 可能 。

**Rio** [56:02]
啊 ， 那你还是买的挺贵的 ，其实 eBay 上买大概 3 块钱一个 ，3 刀一个 。

**吴涛** [56:08]
15 欧 ，15 欧应该是 ， 那个 ， 呃 ，WiFi 的版本要比蓝牙版本贵 。

**Rio** [56:15]
那肯定 ， 那就复杂一些了 ， 然后那个 Automatic 那个好像 100 刀 。

**吴涛** [56:22]
OK。

好吧 ，也值得其实 ， 如果你真的对自己的车那么有兴趣了解的话 ，因为去 4S 店修可能一次就要两三百 ， 四五百 。

**Rio** [56:35]
对 ， 你看这就是我为什么不喜欢 ， 呃 ， 这个 Car ownership 的一个很重要的原因 。

**吴涛** [56:42]
因为什么事情都要自己操心对吧 ？

**Rio** [56:44]
这太多啰嗦的事情了 ， 我要的是你把我从 A 安全带到 B， 我才不管你到底出了什么问题 。

**吴涛** [56:52]
说的也是 。

**Rio** [56:54]
对啊 ， 所以你看现在就是一个 DD 重度用户 。

**吴涛** [56:58]
嗯 ，

哈哈哈 ， 好吧 。

**Rio** [57:02]
哎 ， 好像扯得有点远 。

**吴涛** [57:04]
对 ， 我们觉得将来可以开一个副节目 ， 就汽车恐慌 ， 发动机恐慌 。

**Rio** [57:11]
哈哈哈

。

**吴涛** [57:14]
对 ，其实 IPN 是应该开一档汽车节目的 ，但是 。

**Rio** [57:18]
不对 ， 应该先开摩托车节目 。

**吴涛** [57:22]
摩托车节目没有 ， 受众群太少了 ， 我当然是举双门 。

**Rio** [57:26]
名字我都给你想好了 ， 就叫 Zen。

**吴涛** [57:29]
哈哈哈 ，Zen and Art。 嗯 ， 好吧 ， 那我们还是扯回来好了 。

**Rio** [57:36]
OK。

**吴涛** [57:37]
呃 。

**Rio** [57:38]
接着说我们的 。

**吴涛** [57:39]
第二条新闻 。 天呐 ， 才说到第二条 。

**Rio** [57:43]
第二条旧闻 。

### Bash for Windows

**吴涛** [57:45]
呃 ，Bash for Windows。

**Rio** [57:50]
嗯 ， 微软最近是不是疯了 ， 我靠 。

**吴涛** [57:52]
我倒觉得微软现在终于清醒过来了 ， 你知道吗 ， 一个 。

**Rio** [57:56]
哈哈哈 ， 意识到这个什么大势已去是吧 ？

**吴涛** [58:00]
对 ， 意识到自己不能再逆历史洪流而动 ，不能再

口出什么 ， 呃 ，Linux is a cancer 之类的 。

**Rio** [58:11]
嗯哼 ， 它已经被 cancer 上身了吧 ， 反正 。

**吴涛** [58:16]
对对对 ， 现在微软已经被这个 cancer 所同化了 。 我记得有一个贴在那个保险杠上的贴纸 ， 就是 ， 呃 ，We are Linux， 啊不 ，We are Windows，We are Legion, we will conquer you。

就是应该是点出 Star Trek 里面那个 Borg， 就是有一个种族叫 Borg，他们里面的人没有 ， 呃 ， 个体思考的意识 ， 然后一定要同化其他的族群 ， 然后把他们加到自己的这个所谓 high mind 里面来 ， 然后 Windows 就是这样一种感觉 。

但现在反过来 ， 现在是 Microsoft 被这个 high mind 所同化了 ，在这个 Windows 里面加了一个 Linux 的子系统 。 对 ， 这个是 3 月 30 号的新闻 ， 天呐 ， 我们已经过去将近四个礼拜了 。

**Rio** [59:13]
一个多月吧 。

**吴涛** [59:15]
呃 ， 没有一个多月了 ， 今天是啊 ，是不是快乐啊 ，Rio？

**Rio** [59:20]
哈哈哈 ， 这个差不大 。

**吴涛** [59:24]
各位听众朋友们 ， 今天我们录音的这一天 ， 呃 ，4 月 23 日是 Rio，Rio 先生的生日 。 嗯 ，Rio， 请问你多少岁了 ？

**Rio** [59:35]
这个能讲吗 ？ 这个不能讲 。

**吴涛** [59:37]
我靠 ， 为什么 ？

**Rio** [59:40]
那你讲不讲 ？

**吴涛** [59:40]
我想了 。

**Rio** [59:40]
那又比你年轻了吧 。

**吴涛** [59:42]
我靠 ， 没关系 ， 我已经习惯了 。

**Rio** [59:46]
不能说 ，不能说 。

**吴涛** [59:48]
好吧 ，但是 ， 对 ， 我们的 Rio 终于又长大了一次 。

**Rio** [59:52]
接着说这个 Bash for Windows， 它其实后来我看了一些相关的资料 ， 说其实原来 NT 的时候以之前就已经有过一个 Pulsing Mode 对吧 ？

**吴涛** [1:00:03]
对 ，但是那个东西从来没有 。

**Rio** [1:00:06]
因为那个时候微软觉得我要把那个别人都干掉嘛 ， 所以就虽然有 ， 虽然技术上是可行的 ，但是并没有去推这个东西好像 。

**吴涛** [1:00:15]
对 ，因为 ，但是现在时代不同了 ， 所以那个时候的这个 。

**Rio** [1:00:21]
Windows 江河日下对吧 ？

**吴涛** [1:00:23]
对 ，以为会失败的战略现在又被拿回来了 。

**Rio** [1:00:26]
就其实你要先考虑 ， 就说为什么微软会出这么一招 ， 我们先不说技术层面的问题 ， 先说外吧 ， 就它为什么要做这个 ， 就吸引 Linux 的程序员 。

**吴涛** [1:00:37]
我觉得这可能是那个 Azure strategy 的一部分 ， 就是

， 就是我觉得这个东西的出现还是为了服务端考量 ， 就是微软想到说好吧 ， 反正服务端的这个软件我是干不过 Linux 上面的 ，Linux 平台上面的东西 ， 就我在 ， 或者说微软说好吧 ， 我在 ， 呃 ， 服务器端是不可能成为 ， 或者说重新恢复成为一个占主导地位的平台了对吧 ？

那退而求其次 ， 我至少可以在上面卖服务卖软件嘛 。 呃 ， 我要在床上面卖服务卖软件的话 ， 就面临这个问题 ， 我既然没有这个平台 ， 那我怎么跟这个平台上的软件服务互通呢 ？

那难道我要逼迫我的用户去使用一个 Linux 来操作我的平台吗 ？ 就操作我在这个平台上面的软件吗 ？

那我不如退而求其次 ， 提供一个专门用来操纵服务器组件的接口 ， 我觉得就是这么一个 ， 这么一个战略 。

**Rio** [1:01:38]
因为我 。

**吴涛** [1:01:38]
我就是这样的 。

**Rio** [1:01:39]
之前接触到的一些就是能说的不能说的案例 ， 我有这么一个感觉 ， 就是 ， 呃 ， 微软它想把一些现在比较流行的 ， 啊 ，在 Linux 上面起源的一些服务端偏向的工具弄到大平台上去 ， 比如之前的 Docker 对吧 ？

**吴涛** [1:02:00]
嗯哼 。

**Rio** [1:02:01]
啊 ，但是去回头一看呢 ， 发现哎 ， 移不过来 ，因为 Docker 它是完全基于 ， 比如说它是基于这个一个 Linux 系统的对吧 ？

比如说你 Docker 的那个 ， 那个叫什么 Cgroups， 就那个内核才有的 ， 然后 Docker 的客户端它也是 ， 虽然能跑在 Windows 上面去 ，但是坑比较多嘛 。

然后还有就是整个这个 ， 比如 Dockerfile 里面的脚本也是基于 ， 基于 Bash 来写的对吧 ？

**吴涛** [1:02:32]
对 。

**Rio** [1:02:33]
啊 ， 那么它这样的话就很不方便大家用 ， 就会发现那些做后端的 ， 然后还在用 Windows 的人， 基本上都是跑着一个虚拟机 ， 或者是连到 SSH 到服务器上去操作 ， 整个 Windows 的壳就可以是非常 ， 就是一个显示屏幕而已 ， 就整个 Windows 是一个 terminal 而已 。

**吴涛** [1:02:52]
对 。

**Rio** [1:02:53]
但我觉得可能对它长远来看也不是特别好 ，因为包括一些新的组件啊 ，也不会说基于这种场合来考虑 ， 然后对吧 ， 这个毕竟微软从那个什么 Baumer 的那个 Developers Developers Developers， 它还是明面上理解这件事情的哈 ， 至少你看像经过了这个 Windows Mobile 这个惨痛的教训之后， 发现没有人鸟它是多么难受的一件事对吧 ？

所以现在要把这些人抢回来怎么办呢 ？ 那只能说是那多给你点甜头咯 。

**吴涛** [1:03:27]
英文里面有专门有个词叫什么 condescending， 就是翻译成中文应该什么 ， 屈尊降贵的 ， 就是降低身段来满足你这种感觉 。

**Rio** [1:03:41]
嗯哼 ， 这个还挺有趣的一个事 ， 还包括之前我们提到过的那个要把 Microsoft Circle Server port 到 Windows 上面去 ， 差不多也是类似的事情吧 ？

**吴涛** [1:03:53]
对 。

**Rio** [1:03:54]
所以这次这个 Bash for Windows 是怎么实现的 ？

**吴涛** [1:03:58]
对 ， 就是我之前想说好吧 ， 那难道不过就是一个另外一种 ， 就是像什么 Sequence 或者是之类的那种重新编译的形式吗 ？

难道不是那样的吗 ？ 后来才发现 ， 呃 ， 这一次这个 。

**Rio** [1:04:14]
完全不是 。

**吴涛** [1:04:15]
对 ， 阵仗还是蛮大的 ， 就是它实际实现的原理居然是直接把一个 Ubuntu 上面的那个 ELF， 就是 ， 呃 ， 相当于 Linux 下面的 EXE 的格式 ， 啊 ， 拿过来 bit for bit，checksum for checksum，run， 就是 binaries running directly in Windows， 这个还是挺高级的 。

**Rio** [1:04:38]
就 。

**吴涛** [1:04:39]
二进制兼容的这么一个子系统 。

**Rio** [1:04:40]
没错没错 ， 所以它是做了一个什么 ， 中间做了一个翻译层是吧 ， 一个兼容层 ？

**吴涛** [1:04:47]
啊 ， 好像是说它在 Windows 的 NT 的内核上面加了一个 Linux 的内核 ， 然后在这个内核上面暴露出了一系列 ， 就是直接在二进制层面上兼容 system call 的一堆 API。

**Rio** [1:05:04]
对 ，其实你看一下这个事情还是蛮神奇的啊 ， 就是说 ， 啊 ， 之前有那个 Linux 上面有个叫做 wine 的东西 。

**吴涛** [1:05:12]
对 。

**Rio** [1:05:12]
葡萄酒那个词啊 ，wine。

**吴涛** [1:05:13]
Wine is not an emulator。

**Rio** [1:05:15]
对 ， 它的缩写是一个 wine，不是模拟器对吧 ？

**吴涛** [1:05:21]
对 。

**Rio** [1:05:21]
但是 wine 的一个重要的功能是可以在 Linux 上面直接运行 ，不经修改一样运行原生的 Windows 程序 。

**吴涛** [1:05:30]
对 。

**Rio** [1:05:30]
然后等于微软就会做了一个 ， 算 line 吧 ，有人说它应该叫 line。

**吴涛** [1:05:37]
Reverse line， 对 。

**Rio** [1:05:38]
就是 line is not a Linux emulator。 然后它等于是我看了一下一个相关的资料介绍 ， 它等于是做了一个翻译层 ， 把那个 ， 就把 ， 就是把 Linux 原生的那些 binary 的程序对 Linux kernel 的一个这个系统调用 ， 转换成对 NT 系统的那个内核的调用 。

**吴涛** [1:06:04]
对 ，其实仔细 ， 我觉得这句话说得简单 ， 里面的工作量还是非常非常大的 ， 我感觉 。

**Rio** [1:06:10]
就感觉好蛋疼 。

**吴涛** [1:06:12]
对啊 ， 真的 ， 就你会发 ， 你会想想这两个系统真是千差万别啊 ， 什么

字符宽度 ， 什么文件系统 ， 然后什么 。

**Rio** [1:06:26]
还有那个 device file。

**吴涛** [1:06:28]
对 ， 驱动器的实现 ， 天呐 。

**Rio** [1:06:32]
哎 ， 所以说到这个事 ， 之前我们要不得不提之前那个什么中间还没面世就夭折的那个所谓的安卓的那个层 ， 那个虚拟层你还记得吗 ？

当时不是说 。

**吴涛** [1:06:44]
哦 ， 我们还介绍过呢 。

**Rio** [1:06:45]
对对对 ， 当时不是 Windows Mobile 它说要 ， 哎 ， 直接可以运行原生的安卓程序不经常修改 ， 我觉得原理跟这个是差不多的 ， 就提供一个安卓的这么一个 ， 一个 ， 一个 compatibility layer 嘛 ， 一个兼容层 ， 然后让安卓以为它跑在一个安卓系统上面 ，但其实背后都是由这个 Windows 的内核来实现的 。在原理上应该两个是差不多的 ，但实现肯定是差很远的 。

**吴涛** [1:07:11]
对 ， 我觉得这一点真是 ， 微软也是下了很多血本 ， 就为了你看那个 。

**Rio** [1:07:18]
为了扭转颓势对吧 ？

**吴涛** [1:07:20]
对 ， 你看那个演示好像很简单 ， 它就是启动一个 ， 呃 ，terminal， 然后输入一些 Linux 的命令 ， 然后按回车 ， 它这些命令就会执行了 。

你会觉得这有什么神奇的 ， 这不是很多人都已经在做的吗 ？ 你在观感上它好像跟一个 SSH 或者跟一个什么 Sequence 之类的没有太大的区别 ， 甚至跟什么 GitHub 的那个 ， 呃 ，GitHub command line for Windows 都没有太大的差别 。

但是你会想说我靠 ， 它微软在做这件事情 ， 那它做到了一个什么深的地步 ？ 然后你会觉得我靠 ， 这真的是微软不是以前那个微软了 。

**Rio** [1:08:03]
但 。

**吴涛** [1:08:04]
Make Windows great again。

**Rio** [1:08:08]
不 ，但它做了这件事情之后哈 ， 就会挺麻烦的 ， 就 Windows 上会出现三套 command line 的东西 ， 一个是最老的那个 ， 最破的那个 DOS，DOS Promote 对吧 ？

那个叫 CMD 的那个窗口 ， 然后是 Windows Vista 还是 Windows 7 里面出的那个叫 Partial， 然后不对 ， 四套 ， 然后是这个 ， 这个叫 Bash for Windows 嘛 ， 就是 Windows Subsystem for Linux， 然后还有那个第三方做那个 Sigwin 那一套东西 。

**吴涛** [1:08:39]
对 ， 我觉得此时那个心情最复杂的应该是 PowerShell 的重度用户 ，他们会说 。

**Rio** [1:08:48]
本来是皇太子 ， 最后被贬出了 。

**吴涛** [1:08:51]
我是亲儿子 ， 现在感觉好像要废了我另觅太子 。 但是我觉得这类似的历史在微软的历史上已经上演过很多次了 ， 什么 Silverlight 对吧 ？

还有什么 ， 什么 COM 时代也有一大堆 ， 就不是 OLE 好像也是类似一个下场 。

**Rio** [1:09:13]
OLE， 哇 ， 这个我当时学什么 ， 学 Fox Pro 的时候还用到过这个东西 。 天呐

，Foxbase 还是 Fox 什么 Fox Pro，Foxbase 吧 ？

**吴涛** [1:09:26]
Foxbase，Foxbase，Foxbase，Fox Pro 是 Foxbase 的升级版 。

**Rio** [1:09:31]
OK，Fox Pro 是不是后来的 Access 的前身啊 ？

**吴涛** [1:09:36]
嗯 ，不是 。

**Rio** [1:09:38]
两条线是吧 ？ 我有点记不太清楚了 。

**吴涛** [1:09:41]
我以前不是叫 MetaFox 吗 ？ 然后如果在 IRC 上，IRC 的客户端不是会让你填一个用户名 ， 然后还让你填另外一个 ， 就是说如果你的 ， 你选的这个用户名被占用了 ， 另外一个用户名是什么 ？

然后我在那个用户名里面就会写填 MetaFox Pro。

自以为很妙的梗 ， 对 。

**Rio** [1:10:09]
挺好的 ， 挺好的 。

**吴涛** [1:10:10]
所以我觉得 ， 对 ，PowerShell 的用户们也不用太伤心 ，因为你既然入了微软的门就要不停的学习对吧 ？ 那其实在 Linux 的世界里面也是一天到晚就要不停的学习 ，而且微软方面至少会给你一个战略说好吧 ， 这个东西是我们接下来一段时间的重点 ， 你不管信不信它至少会说这句话 ， 可是在 Linux 的世界里面可能哗 ， 明天忽然 Hacker News 上面出了一个头条你就会发现我靠

， 这玩意不学不行 。

对 ， 所以其实在哪家都不容易 。

**Rio** [1:10:42]
嗯哼 ， 这个还是好的 ，以后就说指望着你 ， 我们在这个 Linux 上面和 Mac 上面用的比较熟手的一些工具 ， 可以直接在 Windows 里面跑了嘛 。

**吴涛** [1:10:54]
对 ， 比如说不是有个笑话吗 ， 说那个以前 RM-RF 新 ， 这个

trick 只能骗一骗小白 ， 现在我靠所有的 Windows 用户可以真的执行了 。

**Rio** [1:11:13]
对 ， 这个不错 ， 这个不错 。 到时候应该做一个什么点 BAT 是吧 ？ 哎 ， 等一下， 它居然可以直接导 Shell 的文件了 ， 可以双击就执行的 。

它权限怎么办呢 ？ 好好奇啊 。

**吴涛** [1:11:25]
嗯 ，不知道 ， 我其实看了这个新闻之后我从来没有用过它 ， 就我理论上我是可以重新启动到 Windows 里面 ， 然后装一个 ， 然后试一试 ，但是 。

**Rio** [1:11:36]
你为什么要做这么蛋疼的事情 ？

**吴涛** [1:11:38]
嗯 ， 对 ， 我连重新启动到 Windows 里面打心眼的游戏的这件事情都没有做过 ， 更何况装一个 Bash 子系统 。

**Rio** [1:11:48]
不过 Mac 上面的也其实或多或少有一丢丢这种问题吧 ，因为 Mac 它毕竟不是 Linux 嘛 ， 它是一个 BSD 的系统嘛 。

**吴涛** [1:11:57]
嗯哼 。

**Rio** [1:11:58]
然后 。

**吴涛** [1:11:58]
对 ，有些命令在你从那个 ， 如果你是你读了 。

**Rio** [1:12:02]
就它不是 GNU 那一套东西吗 ？

**吴涛** [1:12:04]
很火的那本书什么 Copy and Paste from Slack Overflow， 最近推特上的那个 meme， 就是一堆程序员在贴各种各样的被篡改的 already 的书名 ， 你有注意到吗 ？

**Rio** [1:12:17]
我看到了 ， 我看到了 。

**吴涛** [1:12:18]
对 ， 什么 How to complain a customer， 或者是什么 How to copy and paste from Slack Overflow， 中文也有一系列什么 C++ 从入门到放弃

之类的 。

**Rio** [1:12:36]
哎 ， 你还别说 ， 我真的是看完 C++ 那个大部头真的是看完就放弃了 。

**吴涛** [1:12:41]
我是初中的时候读了一本什么 21 天精通 C++， 然后我就我靠 ， 我这一辈子都不要再学 C++ 了 。

**Rio** [1:12:51]
对 ， 你会觉得这个东西它那个叫什么 ， 内生的复杂度已经这样了还了得了哈 。

**吴涛** [1:12:57]
对 ， 然后对 ， 说回这个梗 ， 就是你会觉得你会发现在 Slack Overflow 上 copy and paste 下来的命令在这个 Mac 上面很有可能是用不了的 ，因为有很多东西都不一样 ， 然后 Slack Overflow 的很多问题就是什么 ， 比如说我想要找到一个巧妙的方法来 one line 解决一个特定的文本处理的问题 ， 然后什么但凡涉及到 sad 或者是什么

grep 之类的 one liner， 那个 Slack Overflow 上最高的答案下面肯定会有一大堆评论说哦这个在 Mac 上面跑不了 ， 然后要么是原打主 ， 要么是那个下面的评论者就会说好吧 ， 这个是一个 ， 就这个如果你写这么写的话就给出另外一个方案说这样应该是在所有平台上都可以跑 ， 或是给出一个 Mac 特定的版本 ， 这个就很蛋疼 。

**Rio** [1:13:50]
嗯哼 ，但就像那些命令行工具 ，有些还可以就是想办法兼容一下， 或者它输出格式命令行参数不太一样可以整一整 ，但有些东西是内核级别的就没法弄了 ， 比如说对吧 ， 又说回那个 Docker，Docker 是没有办法在原生在 BSD 上跑的 ，因为它基于 Linux 的 Cgroups 嘛 。

**吴涛** [1:14:11]
其实这个 BSD 也比较冤 ，因为 BSD 上面其实 Jail 出现的要比 Docker 要早很多 ，但是没能流行起来 。

**Rio** [1:14:19]
这个是 ， 毕竟是什么太小众没人爱啊 ， 就没人开发 ， 没有 Google 在前面推 ， 哪有后面的这些事对吧 ？

**吴涛** [1:14:27]
天命不在此 ， 没办法 。 呃 ， 对 ， 那但是我觉得这件事情其实对 Mac 用户的影响也对 ， 对 Mac 也有一定 ，也有一定的影响 ， 就是可能会有一批开发者他 。

**Rio** [1:14:43]
呃 ， 受够了 Mac 然后转回去 Windows。

**吴涛** [1:14:45]
对 ， 或者反过来说他一直想要买个 Mac， 就是因为想要获得这个操纵服务器的 。

**Rio** [1:14:53]
便捷嘛 。

**吴涛** [1:14:54]
就什么来着 ，interoperability， 然后但是他又不喜欢 Mac 的这一套 ，因为对吧 ， 你在切换到 Mac 的时候有一大堆使用习惯要转换的 ，他只是想要用那个命令行而已对吧 ， 那他现在有一个全新的选择就是直接装一个 Linux 的 subsystem，也是蛮爽的 。

**Rio** [1:15:13]
没错 ， 这个坑我不知道有多深哈 ， 大家自己慢慢去踩吧 。

**吴涛** [1:15:18]
对 ， 嗯 ， 嗯 ， 可能会影响 Mac 的销量 。

**Rio** [1:15:24]
这个倒不至于哈 ， 现在看那个一季度的 ， 今年一季度的这个 PC 的销量是 ， 出货量下降百分之九点几吧 ， 应该是到了十年前的水平了 。

**吴涛** [1:15:35]
OK。

**Rio** [1:15:35]
然后好像增长的也就 Mac 和哪一家我忘了 。 所以其实现在我们很多人用 Mac 他也像我们这种还是用命令行的就开发者了 ，其他人用的也少了 。

**吴涛** [1:15:50]
好吧 ， 可能对开发者对开发者购买的机器的数量应该对于总销量的影响不会特别大 。

**Rio** [1:15:58]
对啊 ， 对啊 ， 所以看吧 ， 还挺期待今年 WD 上那个 Mac 会到底整什么妖子 ，不是说要改名了吗 ？ 要改名叫 MacOS 吗 ？MacOS，有可能 ，MacOS。

**吴涛** [1:16:13]
我觉得 MacOS 挺好的 ，Mac 的名字挺好的 。

**Rio** [1:16:16]
MacOS， 就把那个 X 去掉了嘛 。

**吴涛** [1:16:19]
对 ， 回归到早期的那个 ， 嗯 ， 半个机器半个人脸的那个 。

**Rio** [1:16:24]
因为那个那个那个 X 我老是觉得想着它是 10 嘛 ， 对吧 ， 罗马数字的 10，但是马上要出 11 了的话怎么办呢 ？

**吴涛** [1:16:35]
对 。

**Rio** [1:16:35]
哎 ， 等 ， 已经是 11 了吧 ？ 我们现在是 10.11 对不对 ？

**吴涛** [1:16:41]
10.11 啊 ， 那个 X。

**Rio** [1:16:42]
啊 ，10 还是不动的 。

**吴涛** [1:16:44]
代表主完美好 。

**Rio** [1:16:45]
所以前面那个 version 10 其实已经没有什么本质的意义了 ， 就可以直接拿掉了嘛 。

**吴涛** [1:16:50]
对 。

**Rio** [1:16:50]
所以那个 X 也 。

**吴涛** [1:16:51]
不断进化就可以了 ， 对 ， 就像 Windows 一直叫 Windows 其实也挺好的 。

**Rio** [1:16:56]
没有啊 ， 它有 Windows 6、7， 没有 6。

**吴涛** [1:16:58]
不 ， 我的意思是如果 Windows 一直叫 Windows 的话 ，Windows 的整个命名命名就是 。

**Rio** [1:17:03]
对对对 ， 那个 Windows 10 不也说是最后一个大版本吗 ？

**吴涛** [1:17:07]
对 ，是这样 。

**Rio** [1:17:08]
那以后就没有 Windows 10， 它们应该叫 10 点几吧 ， 我估计会叫上一阵子 。

**吴涛** [1:17:14]
应该会 ， 就直接就其实像用户隐藏掩埋隐瞒版本号嘛 ， 就是我一直在用最新版本的 Windows， 然后只有你在需要知道的时候才会像什么去看 Chrome 当前的版本号一样去看 ， 是一个一串数字仅此而已 。

**Rio** [1:17:31]
我觉得微软做这件事情是其实是挺挺挺麻烦的 ， 挺难的 。 它要兼容的系统太多 ， 就是它家都用最新版 ，因为它要做的那个兼容性测试的那个那个数量级不是别人可以比的 。

**吴涛** [1:17:45]
好吧 ， 它的历史包袱太重 。

**Rio** [1:17:46]
但各种各样奇怪的机型组合兼容机对吧 ， 没法弄啊 。

**吴涛** [1:17:51]
对 ， 测试都做不了 。

### MacBook 选购

**Rio** [1:17:53]
哎 ， 说到 MacBook， 那个最新的那个 Red Hat MacBook 你要你要买吗 ？

**吴涛** [1:17:58]
就打算买啊 ，但是现在有点纠结它那个 。

**Rio** [1:18:02]
是买给你自己还是买给你老婆 ？

**吴涛** [1:18:03]
我自己 ， 它已经有一个上一代的那个那个了 ， 就它够用了 。

**Rio** [1:18:08]
难道不是你买新的给它用 ， 然后它把那个淘汰给你用 ？

**吴涛** [1:18:11]
啊 ， 我不是应该各自独立升级吗 ？

**Rio** [1:18:15]
OK， 你们的婚姻关系还是比较正常的看 。

**吴涛** [1:18:20]
没有剥削关系是吧 ？

**Rio** [1:18:23]
那个最新款的那个有一个比较纠结的事情就是 ， 我不知道它到底能不能接一个 4K 的显示器 ， 然后跑 60Hz 的刷新率 。

那我看了一下就苹果官方的那个 Tech Spec 下面说是最多到 30Hz 的 ， 就 4K 的话 。

**吴涛** [1:18:42]
哎 ，4K 30Hz。

**Rio** [1:18:43]
但是我看那个 。

**吴涛** [1:18:44]
你接 4K 是拿来干嘛的 ？

**Rio** [1:18:46]
不是 ，因为那个那个 MacBook 屏幕只有 12 寸嘛 ， 哎 ，而且那个比较小嘛 ， 你也不可能把那个作为主屏来用 ， 虽然也凑合其实 ，但是你想用的舒服一点 ， 你还想接一个外接的大屏幕 ， 然后把它作为就 Dock 到那里比较方便一些嘛 。

就我我想买它纯粹是因为出差的时候它比较轻便好带 ，但是在家的时候我还是想用一个大屏幕比较看起来舒服一些 ， 这样的话就会有这个需求 ， 就是我想要一个 Red Hat 的外接的至少 1080P 的屏幕 ， 就 4K 屏嘛 ，但是 4K 屏现在 MacBook 它那个不是只有一个 USB-C 口输出嘛 ， 苹果目前官方的转接头只有两种是可以输出视频的 ， 一个是 USB 转 HDMI， 一个是 USB 转 VGA，VGA 显然不可能上 4K 嘛

， 这个就不用想了 。HDMI 能上 ，但是我看一下它的官方标称只支持到 30Hz 的刷新率 ， 就会会有点卡的感觉 。

**吴涛** [1:19:46]
我觉得如果你是做文本处理或者是展示的话 ，30Hz。

**Rio** [1:19:50]
对 ， 还可以凑合是吧 ？

**吴涛** [1:19:51]
除非你要看视频 ， 那的确 。

**Rio** [1:19:53]
但 30Hz 看视频更其实不用 ， 大部分视频就只有 24Hz。

**吴涛** [1:19:58]
24Hz。

**Rio** [1:19:58]
对啊 ， 那其实反而没有这个问题 ，但 60Hz。

**吴涛** [1:20:02]
LC 也是个问题 ，但是 MacBook 也不可能打 。

**Rio** [1:20:04]
对 ， 它玩用它玩游戏不太现实 。 不 ，但是那个就是滚屏的时候它那个就是所谓 smoothness。

**吴涛** [1:20:11]
OK。

**Rio** [1:20:12]
就会成问题了 。

**吴涛** [1:20:13]
有道理 ，有道理 ， 就是你在刷网页的时候总会感觉到它在卡 。

**Rio** [1:20:18]
对对对 ， 还是包括你那个光标的那个移动也感觉是一卡一卡的嘛 。 对 ， 所以这这是一个挺糟糕的事 ，但是我后来去查了那个 Intel 的那个官方的文档 ，MacBook 里面搭载的那个叫 Intel HD Graphics 515 的板载的 IGP， 它是支持哎 4K 输出的 ， 用那个 DisplayPort 的这一个一个接口 ， 然后我看那个 Apple 的就是官方的那个 Tech Spec 也说这个 USB-C 口是支持原生 DisplayPort 输出的 。

**吴涛** [1:20:53]
我好像看到一个 1 转 4 的接口 ， 就是一边是 USB-C， 另外一边是正呃 USB-A 的接口 ， 一个电源口 ， 一个 HDMI 口和一个 Thunderbolt 的口 ， 就是 DisplayPort 的口 ，有可能 。

**Rio** [1:21:09]
有有有有这个口 ，有这种转接头吗 ？

**吴涛** [1:21:11]
还是我看还是我记错了 ， 第四种并不是 。

**Rio** [1:21:14]
那肯定不是 。

**吴涛** [1:21:14]
而是另外一种 。

**Rio** [1:21:15]
肯定不是苹果官方的 ， 反正 。

**吴涛** [1:21:18]
嗯 ， 好吧 。

**Rio** [1:21:19]
反正就是说现在官方没有一个 USB-C 转 DisplayPort 输出的这么一个接口 ， 那么也就是说即便我有一个 4K 的显示器 ， 我也接不上去 ， 就接不到 60Hz，因为没有 DisplayPort 输出 。

**吴涛** [1:21:37]
那的确是个挺严重的问题 。

**Rio** [1:21:41]
对啊 ， 所以正在纠结是要买这个呢 ， 还是等今年的更新的那个 MacBook Pro。

**吴涛** [1:21:49]
我肯定是要等更新的 MacBook Pro，因为便携性对于我来说不是一个特别大的诉求 ，其实我觉得 。

**Rio** [1:21:56]
你不带出去是吧 ？

**吴涛** [1:21:58]
我其实我觉得你说你出差的时候需要一定的便携性 ，但是我想请问说你出差又不是徒步对吧 ？ 你你你电脑也是放在包里 ， 然后上车就放在放在旁边 ， 然后呃到酒店去酒店的过程你也会坐车什么的 ， 你不是一直背在身上， 为什么那么强调重量呢 ？

**Rio** [1:22:16]
因为就是要一直背在身上 。

**吴涛** [1:22:19]
你不是靠自己 ， 你就你你不是你不需要背着背在身上一直走路啊 ， 还是你真的有这个需求 ？

**Rio** [1:22:25]
那我我又不是一直就是开车出行 ， 打车有时候也要等一下吧 ， 还要上下楼什么的 。 就是能轻便肯定是一个更好的一个属性嘛 。

**吴涛** [1:22:37]
你太瘦了 。

**Rio** [1:22:38]
哈哈哈 ， 应该脸能壮一点 ， 这个问题就解决了是吧 ？

**吴涛** [1:22:43]
应该是健身了对吧 ？

**Rio** [1:22:47]
呃 ， 我是觉得我我是个人没有体会到带一台比较轻的电脑和一台和和我现在这台 MacBook Pro 之间有什么本质上的区别 。

**吴涛** [1:22:56]
因为之前我带过我太太那台出去出国才试过一次 ， 感觉真的挺好的 。

**Rio** [1:23:01]
对吧 ， 现在我又没有什么特别计算要计算呃能力的要求 ， 所以性能上应该还好 ， 主要就是说这个外接屏幕这件事情确实是一个很大的挑战 。

**吴涛** [1:23:13]
OK。

**Rio** [1:23:14]
但还有一个方案就是说那就不要买这个了 ， 买个什么 iPad 出差用好 ，因为出差大部分时间看东西 。

**吴涛** [1:23:20]
我觉得你们你们商务人士好像没有什么太多的使用全尺寸键盘的需求嘛 ， 那我反正出我出门要么 。

**Rio** [1:23:28]
其实不是啊 ， 要写很多邮件 。

**吴涛** [1:23:30]
嗯 ， 好吧 ， 蓝牙键盘就带带那个键盘的 Cover。

**Rio** [1:23:35]
对 ， 这个我也有考虑过嘛 ， 用一个 iPad 然后配一个这个无线键盘 ， 或者直接买那个 iPad Pro 然后带那个那个 Apple 什么 Smart Keyboard 那个东西 。

我去店里试了一下， 呃那个手感还是差一些 ， 最关键的是在飞机的就它那个不能放在膝盖上用 ，因为它重心不不对嘛 ， 对 ， 只能放在一个板上用 ， 放板上的话就会有一个问题 ， 就是比如说你在那个飞机的那个经济舱对吧 ， 我们这还是只能坐经济舱嘛 ， 后面呃放起来会有点坑 。

**吴涛** [1:24:11]
嗯哼 。

**Rio** [1:24:11]
然后那个键盘也没那么方便 ， 所以我现在挺纠结到底到底要怎么办 。

**吴涛** [1:24:19]
就不是告诉我们如果想用 ， 如果想好好的用 Tablet， 请每次飞行都买商务舱 。

**Rio** [1:24:25]
哈哈哈 ， 没错 ， 就会好会好很多体验 。

**吴涛** [1:24:30]
对 ， 键盘体验不好怎么办 ？ 请买商务舱 。

**Rio** [1:24:34]
但软件也是一个问题啊 ， 就是经常我我其实想尝尝试很久用那个 iPad 来做一些办公的东西 ，但是你发现用一圈有一些这种基本的文档处理还是很不方便的 。

**吴涛** [1:24:48]
在市在市场的软件在一台纯粹 Tablet 上用还是比较蛋疼 。

**Rio** [1:24:53]
主要是没有光标 ， 然后你要操作 ， 比如说一个电子表格的话 ， 你就挺惨了 ， 你只要在这里拿起来摸屏幕放下去 ， 拿起来摸屏幕放下去 。

**吴涛** [1:25:03]
对 ，因为这个时候一定有听众会跳出来说谁让你不买 Surface 对吧 ？Surface 没这个问题 。

**Rio** [1:25:09]
Surface 最近不是被黑的很惨吗 ？

**吴涛** [1:25:12]
那是做工的问题吧 。

**Rio** [1:25:13]
那品控品控不好 。

**吴涛** [1:25:15]
用户交互上 。

**Rio** [1:25:16]
对 ，但但在用户交互上我觉得 Surface 的就如果你习惯了弹力套的话 ，其实还是很舒服 。Surface Book 我同事买了一个 ， 然后我用了一下， 我觉得嗯不太好 。其实我也是去店里面摸了那个 ， 我之前不是那个什么 Surface Book 出来的时候 ， 咱们两个一直在那边嗨 ， 然后说哇这个 。

**吴涛** [1:25:37]
觉得这个解决了是吧 ？

**Rio** [1:25:39]
Shut up and take my money。 然后到店里一摸 ， 我靠 ，what the hell。

**吴涛** [1:25:45]
感觉对 ， 这这这感觉我靠 ， 这是那那不是华强北什么人什么人想出来的点子吗 ？ 怎么会做的这么烂 ？

**Rio** [1:25:53]
哈哈哈 。 但所以现在就很尴尬了 ， 就是喜欢这个 iPad 这种 form factor， 这种重量大小和很多时候的那个交互方式 ， 比如说就看电子书啊 ， 看文档 ， 看报表什么的都都挺方便的 。

但是你再想用它做点什么事 ， 就会发现咦 ， 好像不是太好 。

**吴涛** [1:26:15]
嗯 ，不知道 10 年之后会变成什么样 ， 可能会有一种 Fusion 操作这种出现 。

**Rio** [1:26:22]
那不就是这不就是 Windows 嘛 ？Windows 10 啊 。

### 交互未来

**吴涛** [1:26:25]
就所有人都改用 Windows 10。

**Rio** [1:26:27]
不是 ， 我其实我觉得这个是这样 ， 就是我们还处在那种过渡时期 ，但是你回过头去看早年的那些啊 ，在那个 GUI 出现之前 ， 大家用那个你记不记得最早用那个 WPS 的是在那个字符界面里面弄的 ？

**吴涛** [1:26:42]
对啊 。

**Rio** [1:26:43]
那个叫那个叫什么什么什么系统 ， 我现在想不起名字了 。

**吴涛** [1:26:46]
就叫 WPS。

**Rio** [1:26:47]
不是不是 ， 它它启动 。

**吴涛** [1:26:48]
CCED。

**Rio** [1:26:49]
对对对 ，CCED。 你还记得这个 ？

**吴涛** [1:26:52]
那当然 ， 我靠 ， 我有时候在想 ， 就是我说我现在有时候在那个 Vim 上面写东西的时候 ， 就经常会想我现在操作系统 ， 我现在操作电脑 ， 编辑文本的方式其实跟 10 岁的时候没有什么差别 。

**Rio** [1:27:05]
但你这中间我们用 Terminal 的时候停留在就等没有经 ， 就没有哎 ， 怎么说呢 ？

**吴涛** [1:27:12]
就是和 70 年代都没有什么差别 。

**Rio** [1:27:14]
没错没错 ，因为中间你你那个 GUI 的发展的这个好处 ，ID 的好处都是被我们主动放弃了 。

**吴涛** [1:27:21]
对 ，但这些所见即所得的所得对于我们来说并没有太多的助益 。

**Rio** [1:27:26]
不光是这个问题 ， 还有包括像比如说因为假设我们用那个 IDE 的话 ， 或者说我们不用 Terminal，不用不用基于字符的界面的话 ，是基于这种图形的 GUI 的界面的话 ， 起码很多显示的内容它是更方便的 ， 比如说你可以显示这个这个什么 Project Tree 对吧 ， 显示这个 Debugging Information 那些其实要好很多的 ，因为不是每一个信息都需要占那么大一个字符的位置嘛 ， 可能一些可能是一些很微

小东西就可以了 。 但是呢 ，因为你习惯了某一种操作方式 ， 然后又习惯了一种一种解一种一种解这种这种限制吧 ， 你反而会觉得哎呀 ， 换一个好像太麻烦了 ， 然后又没有觉得感觉到明显的好处 ， 还要再重新学一下学一套东西就不是很方便 。

我就有点现在现在像我们用那些日常的办公软件也好 ， 切不到这个呃平板上面去 ， 可能很大程度上面就遇到同样一个尴尬 ， 就是我觉得啊 ， 之前那个什么 Office Excel 都用的挺好的 ， 用鼠标点来点去 ， 觉得刷速率也挺高的 ， 各种流程啊 ，Workflow 啊都做的挺好的 ， 然后你发现一下用一个全新的还没有被怎么被优化过的一种使用过程 ， 就会觉得很别扭

啊 。

所以其实是不是说应该后面会有一堆的新的基于这种叫叫什么来的触摸的交互模式 ， 或者是用那个笔的那种交互模式来操作这个啊 ， 我这些工作流的一种新的软件 ，不是说我们直接把 Office 啊那套套件 ， 或者说其他某个编编那个 ID 的环境挪到这个 iPad 上面去 ， 这么这么简单粗暴的一种方法 。

那种感觉就好像啊 ， 那这个比不好哈 ，因为其实在 GUI 的情况下用一个 Terminal Emulator 其实效果是更好的 。

**吴涛** [1:29:17]
嗯 ， 对 ， 的确是啊 。 而且你可以有很多个 Terminal Emulator 在自由的切换来切换去的感觉挺好 。

**Rio** [1:29:28]
对啊对啊对啊 ， 哎 ， 字符界面也可以啊 ， 那个什么 Ctrl F1，Ctrl F2。

**吴涛** [1:29:34]
哦 ，TMAX 我一直在力追 。

**Rio** [1:29:37]
啊 ，TMAX 也是一个方案 。 对对对 ， 没错 。 所以说到这个 ， 我最近我专门去下了那个 Visual Studio Code 回来用 。

**吴涛** [1:29:46]
哦 ， 感觉怎么样 ？

**Rio** [1:29:48]
他们他们说评价还不错 ， 然后我打开一下， 哎 ， 感觉确实还可以 ， 就有一些讨巧的设计吧 。

**吴涛** [1:29:56]
对 ， 比如说我记得印象很深的一个就是你写了一个 CSS selector， 然后鼠标悬停在上面 ， 它会给出一个范例 ， 就是这个 CSS selector 对应的那个 HTML 的 structure 大概是什么样的 。

**Rio** [1:30:11]
哈哈哈 ， 对对对 。

**吴涛** [1:30:12]
当时在推上看见简直是惊为天人， 这这这个玩意怎么早就没有人做 。

**Rio** [1:30:18]
对吧 ， 所以其实你看 ， 我觉得就现在的这个我们现在丢不掉或者怎么样 ， 就是其实完全不是因为这个平板本身有多少不好 ，而是说我们还没有想出一个在那上面能够怎么更好的完成我们现有的工作 ，而不是说到现在的条条框框限制的这些新型的软件出来 。

**吴涛** [1:30:39]
对 ，是这样 。

**Rio** [1:30:40]
呃 ， 所以呃 ， 你要不要去写一个 ？

**吴涛** [1:30:46]
想法都太好了 ，但是真正推动历史前进的不会是我 。

**Rio** [1:30:51]
你是说我们要先死在沙滩上才可以是吧 ？

**吴涛** [1:30:55]
对 ，有可能 10 年之后我们会觉得

就大部分人的使用习惯会议中会议中我们不能接受的方式啊 。

**Rio** [1:31:04]
就等我们老死 ， 等我们退休那天去看后来的那个小朋友们在怎么弄 ， 都是在那个全空操纵一个那个虚拟空间里面的对象 。

**吴涛** [1:31:14]
对 ， 你们不觉得别扭吗 ？ 你们不觉得累吗 ？

**Rio** [1:31:17]
啊哈 。

**吴涛** [1:31:17]
手指什么都摸不到 ， 怎么可能啊 ？

这种感觉 。

**Rio** [1:31:23]
哎 ， 对 ， 你你看最近那个 Magic Leap 发的那个新的那个 demo 视频没 ？

**吴涛** [1:31:28]
我我听很多人说过了 ，但是具体内容是什么我一直没有时间去看 ， 到底是什么 ？

**Rio** [1:31:32]
其实也没什么 ， 就是它在一个真实空间投影的一些信息 ， 然后你可以去交互操作它嘛 。

**吴涛** [1:31:41]
OK， 然后是裸眼 。

**Rio** [1:31:43]
我记得我觉得这个东西呃呃 ，他说是直接通过那个他们那个那个那个叫一个一个眼镜吧拍的 ， 就是没有经过任何后期处理 ，但是谁知道呢 ？

当年那个什么 Hololens 大姐怎么说的 ， 出来用的时候也不就那样了吗 ？ 对吧 ， 所以这个事情还是要持适当的怀疑态度 。

呃 ，但我觉得那个就好嘛 ， 就是就不用考虑到底是这个要用平板还是要用这个这个现在的那个屏幕了 ，因为它在那么大的一个尺度上面 ， 我觉得这两个就可以可以融合了 。

**吴涛** [1:32:14]
嗯哼 。

**Rio** [1:32:16]
因为对吧 ， 你不存在这个这个交互的问题 ， 整个空间都是你的画布对吧 ？ 不存在说 。

**吴涛** [1:32:22]
对 ，也许将来就不存在一定要订商务舱的问题了 ， 反正你所有都是呃带着一个眼镜对吧 ， 你带着一个嗯哼把你和身边的座舱隔离开来的眼镜 ， 然后你在这个虚拟世界里面完成你的工作 ， 别人看不到你在做什么 ， 你也完全不需要去呃操心前面的椅背离你太近这种事情 ，因为只要它不压到你的眼睛上就无所谓 。

**Rio** [1:32:47]
也是也是可以的 ，也是也想想也挺好 。 好吧 ， 今天差不多到这里吧 。

**吴涛** [1:32:54]
呃 ， 对 ， 我们本来还有一条是什么互联网域名管理办法 ， 就是那个要求所有的域名都必须在中国境内注册的那样一个那样一条啊政令吧 ， 行政命令 ，但是反正是件很蠢的事情 ， 就不展开讨论了 。

### 互联网监管

**Rio** [1:33:13]
嗯 ， 哎 ， 为什么你会说它蠢呢 ？

**吴涛** [1:33:18]
嗯 ， 蠢是从呃网站运营者的角度来看 ， 就你要从国家管理者的角度来看 。

**Rio** [1:33:26]
就你不爽嘛 。

**吴涛** [1:33:28]
对啊 ， 对 ， 蠢的意思就是这件事情对于就对于我们这种升斗小民来说是比较讨让人讨厌的 ， 就是你要在中国开一个网站 ， 你必须在中国境内注册这个域名 ， 那也就意味着其实你的所谓国际化呃或者说你你脱离政府监管这件事情就不可能了 。

就他看你不爽的话 ， 可以随时把你让你这个域名不存在 ， 那你你就无所谓什么好吧 ， 我在国外有一个网站 ， 然后你可以来看 ， 那呃这件事情在中国可能就将来就不可能了 ， 就是因为你的域名在中国根本不存在 ， 你而不是你在中国没有办法连接到网站这么简单了 。

**Rio** [1:34:08]
对 ， 这个白名单制应该是一个目前看来哈板上钉钉的事情 ， 时间推的早晚的问题了 。

**吴涛** [1:34:18]
对 ， 这只不过是在温室不成蛙的过程中升高一度而已 。

**Rio** [1:34:24]
哈哈哈 ， 对 ， 我我我我想这里其实有一个挺好的事情 ， 就是呃互联网的全球化这个趋势已经玩完了 ， 我觉得 。

**吴涛** [1:34:38]
嗯

， 互互联网全球化的幻梦已经破灭了 。 我会这么说 ，因为互联网这个东西只要政府存在 ， 对互联网的监管就不会停止 。

那当所有的国家 ， 当所有国家的政府一致认为互联网是一片必须需要被监管的空间的时候 ， 那所谓什么呃自由网络中立之类这些事情都可以去死 。

**Rio** [1:35:05]
没错 ， 这还是之前回答某一个推友的回复嘛 ， 说你不可能指望一个所有的硬件基础设施都是被主权国家掌控的一个

一个一个一个东西 ，是可能长期的维持所谓自由和开放的 。

**吴涛** [1:35:28]
对 ， 你不可能指望一个在由政府所控制的世界里面推行一种无政府的思想 ， 对吧 ？ 就你你要说当如果真的有一天那个什么嗯那个科幻小说叫什么来着 ？

呃 ，Snow Crash， 对 ，Snow Crash 里面那个那个世界不就是无政府主义的世界吗 ？ 那一切所有的国家都政府只在非常小的规模上存在 ， 你可以自己选择说这个公司管理我的这件事情 ， 那个公司管理我的那件事情 ， 然后世界上不存在一个大一统的政呃任何地域之内不存在一个大一统的政府 。

呃 ， 只有在那样的世界里面 ， 可能说网络才是一个真正真正真正不受监管的空间 。 但是在目前我们这个平行宇宙里面 ， 这是不可能的 。在这个位面上面 ， 这是这是一场幻梦 。

**Rio** [1:36:19]
所以本质上来讲 ，Open Web 需要的实现的前提是

去 ， 就是叫什么去国家化 。

**吴涛** [1:36:32]
对 ， 就是如果有一天整全人类可以站在一起 ， 什么欢乐颂的歌词终究成真的时候 ， 可能有 。

**Rio** [1:36:42]
看

。 哇 ，不知道还能不能看到 。

**吴涛** [1:36:47]
呃 ， 如果明天外星人入侵的话 ， 可能中这个全球世界国家就就会被摧毁 。

**Rio** [1:36:55]
那不会出一个世界政府吗 ？

**吴涛** [1:36:58]
就有可能全世界人民被迫在异形的威胁之下团结起来 ， 然后国家就此消弭 。 但是这前提是外星人得来啊 。

**Rio** [1:37:10]
哈哈哈 ，不用外星人， 来个小行星也可以 。

**吴涛** [1:37:14]
啊 ， 小行星炸了不就没了吗 ？ 小行星 。

**Rio** [1:37:18]
不 ， 你得你得你得想办法把它弄炸了才可以啊 。

**吴涛** [1:37:20]
对 ， 那无非就是什么这个联合国安理会的五个常委 ， 然后联合起来 ， 然后加上什么日本 、 德国造一个超级核武器 ， 然后发出去 ， 砰 ，不就完了吗 ？

**Rio** [1:37:34]
对 ，但是这个过程 。

**吴涛** [1:37:35]
这个国家的消失有什么 ？

**Rio** [1:37:36]
这个过程如果比如说那个小行星比较大 ， 对吧 ， 就没有那么简单了 。

**吴涛** [1:37:41]
那我觉得好吧 ， 那 ISS 都能上天 ， 国家也没有消失 。

**Rio** [1:37:46]
哎 ，也是 。

**吴涛** [1:37:49]
你看文明里面 ， 你要造一个去 Alpha Centauri 的那个火箭 ， 你你一个国家也可以造出来嘛 ， 对吧 ？ 你不需要把其他所有国家都灭了 。

**Rio** [1:37:59]
哎 ， 说到这个东西 ， 好像最近那个谁霍金是不是搞了个什么幺蛾子 ， 要弄这个事 。

**吴涛** [1:38:05]
哦 ，他要跟外星人联络吗 ？

**Rio** [1:38:06]
对 ，他他要发一堆小飞行器过去 ， 好像是这么说 。

**吴涛** [1:38:11]
对 。

**Rio** [1:38:14]
嗯 ， 说不定还真的能 。

**吴涛** [1:38:15]
身体迷妹 。

**Rio** [1:38:15]
说不定还真的能招过来 。

**吴涛** [1:38:17]
哈哈哈 ， 好吧 ，let's see。 OK， 感谢收听 IPN Podcast 网络线下的 IT 基础与娱乐节目 《 内核恐慌 》， 号称 hardcore，但是没有干货 ， 想听人听 ，不想听人就别听 。

您可以为本节目捐款 ， 地址是 cardinalpanic.fm dot 呃 slash donate， 捐款金额随意 ， 只要是 8 的正整数倍就可以 。 捐款不会给你带来什么 ，不捐也不会让你失去什么 。

我们的口号是 No Hard Feelings。 如果您有任何反馈 ， 可以发邮件到 cardinalpanic@ipn.li。 同时也欢迎你收听 Rio 主持的风头圈 ，以及 IPN 其他 IPN 旗下的其他节目节目 。

未知道太一来了 ， 流行通信的 History， 映影像无次元 ， 博物志选美 ， 毕夏观和翼天世界 。 我们下期节目再会 。

---

本节目库由 PodHood（https://podhood.com）提供支持——播客网站平台。
