# 27. And You Have to Support It for the Rest of Your Life

内核恐慌 · 2015-11-01

<https://lib.pan.icu/bc248f1e-2fa0-445c-bf4b-cc3720c4f13d>

本集讨论了Surge网络调试工具基于iOS 9 Network Extension实现局部代理的原理，网易163邮箱1亿账户因MD5哈希未加盐而泄露（近乎明文），OS X El Capitan的System Integrity Protection保护/bin等系统目录但导致Homebrew用户在全新安装时需手动关闭SIP创建/usr/local，Perl 6在2000年提出规格后历经15年终于宣布圣诞发布但已时过境迁，以及Let's Encrypt获得主流浏览器信任但CA体系存在单点故障风险（赛门铁克错误签发160多个证书）。

## Questions this episode answers

### iOS上的Surge是什么工具？它和普通VPN有什么区别？

Rio介绍，Surge是一款iOS网络调试和代理工具，基于iOS 9的Network Extension机制，能列出应用访问的网址，并可实现精细的网络请求改写和代理。与普通VPN全局代理不同，Surge支持按域名或IP段灵活分流，部分流量走代理、部分直连，无需手动切换。开发者刘亚琛在Medium上撰写了实现原理文章。售价10美元。

[32:52](https://lib.pan.icu/bc248f1e-2fa0-445c-bf4b-cc3720c4f13d?t=1972000)

### 网易邮箱泄露事件涉及多少账号？密码是如何存储的？

吴涛和Rio在节目中透露，网易（163.com）免费邮箱泄露了约1亿个账号的用户名和密码。密码以MD5哈希存储，但未加盐（salt），因此易被彩虹表破解，等同于明文。Rio认为这是历史遗留问题，网易通行证系统可能因架构老旧而无法修改。泄漏事件由厂商通报，具体技术细节未完全公开。

[39:29](https://lib.pan.icu/bc248f1e-2fa0-445c-bf4b-cc3720c4f13d?t=2369000)

### OS X El Capitan的System Integrity Protection (SIP)是什么？它有什么作用？

Rio解释，SIP（系统完整性保护）是OS X 10.11引入的安全功能，默认保护/system、/bin、/usr、/sbin四个目录，即使root用户也无法修改。吴涛补充，这类似“immutable system”，可防止用户误删系统文件或恶意软件篡改核心组件。虽然对Homebrew等工具造成影响（如默认无/usr/local），但整体提升了系统安全性，阻止了常见攻击手段。

[52:59](https://lib.pan.icu/bc248f1e-2fa0-445c-bf4b-cc3720c4f13d?t=3179000)

## Key moments

- **[0:00] 开场**
  - [0:34] "Programming is like sex. One mistake and you have to support it for the rest of your life."
- **[3:12] 反馈**
  - [6:33] 听众陈震分享：本硕工程专业，尝试考博计算机，但因希望渺茫只能将计算机当爱好。
  - [7:44] 吴涛：计算机基础就像英语，领域专家写应用比纯程序员更靠谱。
  - [9:45] Rio认为通识教育中概率统计应放到与微积分同等重要地位。
  - [12:23] 听众来信：了解计算机领域的历史故事是征服领域后的勋章，而非入门钥匙。
  - [15:09] Q: 国内计算机学生没有GitHub、用QQ传代码、依赖Visual Studio，如何突破这一阶段？
  - [18:19] 吴涛：国内教材是鸡精，需自己掺水，国外教材是鸡汤，这是考试教材与教学教材的差别。
- **[32:52] Surge**
  - [33:05] Surge：iOS网络调试工具，可列出每个App的网络请求并支持代理改写，售价10美元。
  - [34:34] Q: Surge与VPN的区别？Rio：Surge是通用网络层工具，VPN只是其功能之一，可细粒度控制代理规则。
- **[36:00] FLIF**
  - [36:30] 新图片格式FLIF比PNG小35%，对CDN流量成本有显著节省，但面临兼容性挑战。
- **[39:29] 网易泄漏**
  - [39:57] 网易163免费邮箱泄露约1亿账户密码，密码为无盐MD5，可通过彩虹表轻易破解。
  - [44:26] Rio："知乎密码是scrypt加盐后再加一层bcrypt，即便脱库也无法破解，无所谓。"
- **[45:06] Win7乌龙**
  - [45:27] Windows 7自动更新推送乱码补丁，实为微软实习生误将内部测试补丁发布。
  - [47:13] 若Windows Update被黑，可造成全球大规模瘫痪，凸显单一更新源的单点故障风险。
  - [49:37] 警惕单点故障：App Store、apt源等集中式分发均存在被攻击后引发灾难的风险。
- **[52:30] SIP**
  - [52:52] Apple在macOS 10.11引入System Integrity Protection (SIP)，保护/system等核心目录不可修改。
  - [56:27] Rio：SIP最大好处是实现不可变系统，防止恶意软件修改核心文件，类似Chrome OS。
  - [1:00:50] 在SIP下root账号已无实际意义，Ubuntu等发行版默认禁用root，仍需sudo的争论。
  - [1:02:08] 由于SIP保证核心系统不可变，恢复分区可能不再需要，可重用硬盘空间。
  - [1:05:22] 吴涛：Linux目录树标准(FHS)虽存在，但没有两个发行版完全一致，实际各发行版混乱。
  - [1:08:32] OS X将传统Unix的/bin、/usr/bin等目录统一为/Applications，简化文件系统层级。
- **[1:15:57] Perl 6**
  - [1:15:57] 经过15年等待，Perl 6宣布将于2015年圣诞发布正式版。
  - [1:16:41] 引用广为流传的比喻："PHP是小恶，因由业余爱好者写成；Perl是大恶，由熟练但混蛋的专业程序员所写。"
  - [1:20:43] 在Perl 6开发的15年间，曾活跃的Perl贡献者唐汉宗已变性并改名为唐凤。
- **[1:23:56] 加密**
  - [1:24:14] Let's Encrypt根证书被主流浏览器信任，免费自动化SSL证书时代正式开启。
  - [1:27:18] Q: 传统SSL证书申请有多繁琐？Rio：需验证域名、生成CSR、提交CA、配置Web服务器等。
  - [1:31:09] CA信任体系存在根本缺陷：全球数百根证书中的任何一家出问题，所有HTTPS安全将受影响。
  - [1:34:20] 赛门铁克错误签发160多张SSL证书及2500张给未注册域名，Google警告并要求整改。
  - [1:35:23] Google对赛门铁克："若再发生证书违规签发，将直接吊销其CA权限。"
  - [1:39:28] Rio分享：因女友是审计师，才真正意识到外部审计对保障技术系统安全的重要性。
- **[1:40:08] 结语**

## Speakers

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

## Topics

安全, 编程语言, 网络

## Mentioned

网易 (company), 赛门铁克 (company), Git (product), GitHub (product), Homebrew (product), Let's Encrypt (product), OS X (product), Perl (product), Surge (product), Visual Studio (product), Windows (product)

## Transcript

### 开场

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

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

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

我们口号是 ： Programming is like sex. One mistake, and you have to support it for the rest of your life.

**Rio** [0:43]
这个叫什么 ，accidental baby 吗 ？

**吴涛** [0:47]
对 ， 就是 ， 呃 ，execu- execution， 应该叫保护级别进行 。

**Rio** [0:55]
保护级别限制很多啊 。

**吴涛** [0:58]
但是不会怀孕

，不会触及到这个 kernel，you know。

**Rio** [1:04]
好吧 。 嗯 。

**吴涛** [1:07]
对 ， 大家还是小心行行事实的 。 哎 ， 最近好像国内开放那个什么二胎了 。

**Rio** [1:11]
啊 ，是啊 ， 与时俱进 ， 我们要讨论一下这个 。 算了 ， 还是太一来了 。

**吴涛** [1:16]
嗯 ，OK。 对 ， 我觉得我们好像也扯不出个什么犊子 。

**Rio** [1:20]
啊 ？ 其实二胎之前就是对于双方都是独生子女的家长开放的吧 ？

**吴涛** [1:28]
以前是开放叫做什么 ， 单独二胎嘛 ， 就是 ， 哎 ， 什么叫单独二胎 ， 这个是怎么解释的 ， 反正就是如果两方父母都是这个 ——

**Rio** [1:36]
独生子女的话就可以生两个 。

**吴涛** [1:37]
就可以 。

**Rio** [1:38]
然后现在是 ， 就是没有任何限制 ， 想生两个就生 。

**吴涛** [1:42]
就 。

**Rio** [1:42]
Up to two。

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

**Rio** [1:45]
啊 ，但是也有人在扯 ， 扯这个事情 ， 就说为什么还有 up to two 这个限制 ， 对吧 ？

**吴涛** [1:50]
对 ，其实现在人们的生育 ， 至少城市人口的生育欲望已经非常低了 。

**Rio** [1:56]
嗯 ，是吧 。 我也觉得是这样 ， 起码我的生育欲望是很低的 。

**吴涛** [2:02]
啊 ， 好吧 ，但我相信也许二线城市还是会有一个增长 。

**Rio** [2:08]
农村吧 ， 主要还是可能 。

**吴涛** [2:09]
可是农村现在 ， 农村大量 ， 前两天那个 《 经济学人 》 上还 ， 还封面故事就是讲中国的 ， 呃 ， 农村出现大量留守儿童 ， 然后， 呃 ， 农村已经没有年轻人了 ， 所以其实农村的生育率也是相当低的 。

**Rio** [2:26]
哎 ， 这个还有点意思 ， 我一直不知道怎么算 ， 比如说两个一对农民工去这个 ， 从农村去到这个一线城市打工 ， 然后他在那生了两个小孩 ， 算哪边的出生呢 ？

**吴涛** [2:37]
他上不了户口呀 。他是 。

**Rio** [2:39]
对 ， 所以我说他 ，他 ，他算哪里的出生 ， 算那个城市的吗 ？

**吴涛** [2:43]
算 ， 应该是算户籍所在地的出生 。 就永远是统计 ， 如果你要拿统计资料的话 ， 永远是在户籍所在地拿 。

那他们要是想给 ， 如果要是想给学 ， 呃 ， 学生 ， 想给孩子上户口的话 ， 只能回到那个 ， 呃 ， 户籍所在地上 。

如果不上的话就是黑空 ， 你统计不到 ， 对吧 ？ 但如果上了的话 ， 那只能是在户籍所在地 ， 所以你统计的是户籍所在地的出生率 。

哎呀 ，system failure。

**Rio** [3:11]
Sucks。

**吴涛** [3:12]
呃 ， 好吧 ， 我们今天 ， 我们今天这一期是 27 期 ， 然后做一下听众反馈 ，但听众反馈是 24 期的 ，因为上面两期我们都请到了嘉宾 ， 对吧 ？

### 反馈

**Rio** [3:22]
对 ， 就采访嘉宾 ， 然后没有对我们两个的吐槽 。

**吴涛** [3:27]
哎 ， 为什么二 ， 为什么上一期 Livid 没有反馈呢 ？ 下载量很高啊 。

**Rio** [3:34]
呃 ，他们都去那个 V2EX 反馈了 。

**吴涛** [3:38]
啊 ， 对对对 ， 这个非常合乎情理 。

**Rio** [3:42]
对 ，因为 ，因为我们 ， 我忘了说哈 ， 就是我们每期这个 Kernel Panic 都会在 V2EX 的那个 Podcast 那个节点更新嘛 ， 那下面大家都会有那个点击或者是去评论 。

然后我看了一下数字哈 ， 就是采访 V2， 呃 ， 采访 Livid 那一期 ，在那里有大概 4000 多次点击 ， 然后我们平时大概是在几百次吧点击 ， 所以是有数量级的区别的 。

然后它相当于 ， 当然相应的这个评论也是比较多的 ， 一共有 ， 我现在看到有 55 条评论 。

**吴涛** [4:15]
哇哦 。

**Rio** [4:15]
应该是 ， 对 ， 还是比较活跃的一个讨论组在下面 。

**吴涛** [4:20]
我看看啊 。 好多反馈其实都值得念的 ， 网站实在有点慢 。Livid 经济学很厉害 。Rio 请收下我的铜币 ， 所以 Rio 你是靠这个帖子收了很多铜币 。

**Rio** [4:31]
对对 ， 我 ， 我的那个铜币已经翻番了 。 不 ， 应该说我的银币已经翻番了 。 我之前是 20 多个银币 ， 我现在已经有 50 多 ，50 多个银币了 。

**吴涛** [4:39]
哎呀 ， 致富新途径 。

**Rio** [4:41]
Yes。

**吴涛** [4:42]
对于 L 大经历比较熟悉的朋友 ， 可以从 1 分 30， 一小时 32 分左右开始听啊 ， 前面一半小时就这样被跳过 。

**Rio** [4:50]
所以前面一个半小时我们在扯什么带 ？

**吴涛** [4:52]
对 ， 就是下面 ， 下面有一个人说听完了 ， 为什么我感觉几乎 70% 以上的聊天内容都曾经在 Livid 的博客里面看过呢 ？

比如 V2X 从 Google App Engine 迁移 ， 呃 ，Livid 的三个问题 ，以及 Kijiji 六间房和后来去加州工作的事 。

**Rio** [5:07]
这不是很精彩吗 ？

**吴涛** [5:08]
就如果你 。

**Rio** [5:09]
不 ， 我觉得这个还 ， 还是有 ，有原因的 。 你之前只是看过 ， 对吧 ？ 这次你听过了 ， 还是有点不一样 。

**吴涛** [5:15]
没错 ，而且我们的节目的意图不就是让没有看过的人可以 ，you know。

**Rio** [5:21]
听过 ， 对吧 ？

**吴涛** [5:22]
听到 80%、70% 的内容就知道 ， 呃 ，Livid 曾在 blog 里面写过什么 ， 对吧 ？

**Rio** [5:27]
嗯哼 ， 对 。 啊 ， 呃 ，29 楼有个吐槽挺好的 。 呃 ，IPN 买过最不值得的域名大概就是 kernelpanic.fm 了 ，因为吴涛被 ipn.li/kernelpanic 被洗惯了 。

这次我们已经改过来这个稿子了 。

**吴涛** [5:44]
耶 。 对 ，kernelpanic.fm 还是蛮贵的 。

**Rio** [5:48]
好贵啊 ， 一年要 70 刀的那个 ， 那个续费的钱 。

**吴涛** [5:52]
对 ， 所以 。

**Rio** [5:53]
哇 ， 我们的捐款如果有点用处的话就用在这了 ，但可能连这个都不够用 。

**吴涛** [5:59]
你 ， 你干嘛这么 ， 这么悲观 ？

**Rio** [6:02]
其实是够的 。

**吴涛** [6:03]
啊 ？

**Rio** [6:04]
Good to know. More than that.

**吴涛** [6:06]
哇 ， 还有人非常怀旧的那个 ， 哦不是 ， 这是 Livid，他把那个当初那个 Bad Company 2 的 App 的截图发上来了 。

**Rio** [6:18]
我们把这个链接贴到那个 shownotes 里面 ， 大家有兴趣可以去看一下 。

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

**Rio** [6:23]
嗯 ， 好吧 ， 这个正儿八经的听众反馈 ， 呃 ，有一条是来自这个叫 ， 呃 ， 陈震的朋友啊 ，他里面提到了几个问题 。

啊 ， 第一个就是说 ， 这当然是对我们 24 期节目 ，也是 24 期吧 ， 那个有个那个换专业的事情 。

**吴涛** [6:40]
说到 ， 对 。

**Rio** [6:42]
对 ， 那他说这个我和反馈的那个听众有很有相似的情况和想法 ， 当然也做出一些让人惊讶的事情 。

我本科和研究生都是工程专业 ，但是一直心思在计算机 ， 所以尝试考博是到这个 computer science。 呃 ， 好像不是很现实 ，但是目前结果还未知 ，但是应该希望渺茫 ， 所以未来大概只能继续将计算机当做兴趣爱好 ， 做个水水的爱好者 。

去工程专业考去计算机还 ， 我觉得还好啊 。

**吴涛** [7:16]
对 ， 我觉得要比 the other way around 容易一点 。

**Rio** [7:20]
比什么 ？

**吴涛** [7:20]
就是比反过来要容易一点 。

**Rio** [7:22]
对对对 ，因为其实现在我觉得很缺那种具备这个足够的这个计算机的这个知识 ， 然后同时又精通某一个专业 ，因为这样 ， 这样 ， 这样你才可以去帮助那个专业的人去改善他们的工作状况 ， 写一些比如说对应的软件啊 ， 或者一些工具啊这样的东西出现了 。

对 ， 所以其实我觉得这个还是很好的一件事情 。

**吴涛** [7:44]
没错 ， 我觉得就好像这个计算机就好像英语一样 ，有专业英语对吧 ？ 也有专业计算机 。 你 ， 你 ， 你专门去学计算机 ， 反而不太可能写出一个某一个 domain 的 application， 这个只有那个 domain 的人来写才比较靠谱 。

**Rio** [7:58]
没错 ， 没错 。 呃 ， 记得念他的那个反馈哈 ， 就说 ， 呃 ， 节目最后提到了微积分学习的事情 ，因为我是工程专业的 ， 大概可以略微说一些自己的看法 。

工程专业或者所有和力学相关的专业应该都会发现微积分的知识是必不可少的 。 更广义的揣测 ， 所有和连续物理世界相关的领域都离不开微积分 。其实统计学如果没记错的话 ， 很多概率模型都要用到并不简单的微积分运算吧 。

呃 ， 微分运算和积分运算作为一种和加减乘除并列的更高级的运算手段 ， 对于大部分领域的后续研究都是基本的工具 。

所以本科学习中较大比重的微积分 ， 个人以为并没有问题 。 至于大多数人觉得在日常生活中没有什么作用 ， 这个没必要提 。

为什么没必要提呢 ？

**吴涛** [8:49]
就是他意思是我们在那一期里面说大多数人觉得日常生活中没什么作用这件事情 ，其实没有什么必要说 ，因为大多数人的感觉又有什么用呢 ？

又有什么意义呢 ？

**Rio** [9:00]
对对对 。 呃 ， 二位主播有同感的原因大概是计算机科学中完全没有微积分应用 。 毕竟计算机是离散的世界 ，是数学中非常深入狭窄的一个分支 。

当然我也完全同意概率论和统计的学习的确不太够 ， 虽然当年也是被掠得死去活来 。 嗯 ， 这个是怎么说呢 ？

我觉得是这样子哈 ， 就是说 ， 我的观点是说 ，不是说微积分不应该重点学 ，而是说这个概率统计学的还不够 。

就是是个相对的概念 ， 对吧 ？ 就是说如果说你一个微积 ， 呃 ， 然后当然他说这个日常生活中没有什么作用 ， 所以怎么怎么样 ， 这个我觉得可能是对这个 ， 这个什么 ， 通识教育的一个认知吧 。

就是说从这个实用主义的观点出发哈 ， 就是说如果一个东西在现实生活中是更加有广泛应用场景的 ，而另外一个东西在现实生活中可能很多人用 ， 用不太到 ， 那么作为一个通识教育里面你去强调那个平时更加用不到的知识 ，是不是有点奇怪 ？

或者说至少应该把那个概率统计放到和微积分同等重要的地位去讲 ， 教授和这个教学呢 ， 对吧 ？

**吴涛** [10:16]
对 ， 我觉得可能对于计算机专业来说 ， 这个微积分学 ， 学第一就可以了 ， 然后那个概率和离散数学应该再比重多一点 ， 对 。

**Rio** [10:30]
对 ， 差不多这个 ， 这个意思吧 。 当然这个什么 ， 各个专业有各个专业自己的这个 ， 这个 ， 这个特殊的需求吧 。

**吴涛** [10:38]
没错 。

**Rio** [10:39]
或者说你是不是说觉得国内这种就是理工科基础教育一刀切的方法不是很好啊 ， 还是要针对各个专业有自己的这个偏重和这个擅长啊 ， 我觉得还是应该考虑一下这种问题 。

**吴涛** [10:50]
对 。

**Rio** [10:52]
啊 。

**吴涛** [10:52]
教育是个大问题 ， 这个 。

**Rio** [10:54]
对 。 啊 ， 下一条听众反馈是一位叫做 Gary 的听众的来信哈 ，他是吐槽我们说那个 ， 说程序员的那个职业选择的哈 。

**吴涛** [11:04]
没错 。

**Rio** [11:04]
他说这个题目可以聊一天啊啊啊 ， 你们高效的解决了听众反馈后花了一个小时聊游戏啊啊啊 ， 最后聊了半个小时这个题目 ， 然后说意犹未尽啊啊啊 。

**吴涛** [11:16]
意犹未尽啊啊啊 。

**Rio** [11:18]
哈哈哈 。 这个我们之后再找 ， 再找机会聊吧 ， 我觉得还是有很多事情可以讲的 。

**吴涛** [11:23]
对 。

**Rio** [11:23]
啊 ， 毕竟这个是一个 ， 这是一个很水很湿的问题 ， 然后就说很有很多这种 ， 啊 ， 你想象一个场景哈 ， 两个这个什么加班过度 ， 然后这个两眼不满血丝的程序员 ， 对坐着这个什么相对无言唯有泪千行 ，在那聊各自的心酸史 。

**吴涛** [11:45]
你老婆睡了吗 ？

**Rio** [11:46]
你这个腕管 ， 腕管 ， 腕管好了吗 ？ 对吧 ？ 还是你的这个 。

**吴涛** [11:52]
你的腕管怎么样 ？

**Rio** [11:53]
背痛的 。

**吴涛** [11:54]
挺好的 。

**Rio** [11:54]
你的背痛问题解决了没 ？ 啊 ， 鼠标手是不是还是依旧是吧 ？ 还是有一种什么嘘寒问暖的关切的感觉 。

**吴涛** [12:03]
然后立刻开始说 ， 哦 ， 我为了改善症状买了一个那个轨迹球 ， 然后另外一个说 ， 啊 ，不是有那种竖起来的鼠标吗 ？

然后就开始倒霉运气 。

**Rio** [12:15]
然后最后又扯到了那个什么人体工学键盘上面去 ， 对吧 ？

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

**Rio** [12:18]
哎 ， 这就是死宅 。

**吴涛** [12:21]
嗯 。

啊 ， 下一条听众反馈 ， 吴涛老师 ，Rio 老师 ， 你才是老师 。 你们好 ， 首先恭喜节目副播 ， 若有幸被朗读 ， 恳请匿名 ， 谢谢 。

第一次给你们写信 ，其实跟本期的内容没有太大的关系 。 这次又在节目听到了两个本该如雷贯耳的名字 ，Daniel J.

Bernstein 和 Kate Thompson。 嗯 ， 然而身为即将毕业的计算机系学生 ， 一心想要成为程序员的我 ， 却如以往一样对这两个名字一无所知 。

或许是由于课业压力较大 ， 平时在学习密码学和 C 语言的时候 ， 所以它是学习先选的 ， 没有多余的精力去关注其背后的发展和历史 。

事实上 ，不知道这些故事也未必阻碍我们 ，也未必会阻碍我们写出优秀的程序 ，但我总觉得如果想要深入研究某一个领域 ， 一定应该了解到它的方方面面 ， 从而接触到这些故事 。

它们并非是通往某一领域的钥匙 ，而是征服这一领域之后能证明自身能力的勋章 （ 括号或者叙事比较糟糕的比喻 ）。

**Rio** [13:34]
很好的一个比喻啊 。

**吴涛** [13:35]
是 ， 很好的一个比喻 。 就好像告白不是发起冲锋的号角 ，而是获得芳心的 ， 呃 ， 叫什么来着 ？

**Rio** [13:49]
这句话是哪里的 ？

**吴涛** [13:50]
李涛 ， 对 ， 这是知乎上面的还是哪的一句话 ？ 说我应该跟一个女孩子告白吗 ？ 答案是告白不是拿来就是告诉对方我要追你的 ，而是追到了之后就宣告这个 ， 宣告战果的 。OK，back to the feedback。

嗯 ， 这也让我再次体会到仅凭学校里的知识很难对于某个领域有深入的了解 。 我相信这并非只是我一个人的情况 ， 身在一所国内 （ 括号大多数情况下排名 top five）的学校 ， 很多周围的同学没有 GitHub 的账号 ， 喜欢用 QQ 传代码 ， 写几十行的程序要开 Visual Studio， 呃 ， 翻墙只为上 Facebook， 很可能也没有听说过那几个如雷贯耳的名字 （ 括号更不太可能收听贵节目 ）。

虽然有较强的理论基础作为支撑 ， 写出来的程序一般也能够达到要求 ，但总觉得这样以后会越来越困难 。

不过很多同学可能会专注于计算机科学的研究 ， 这些未必 ， 这些问题未必严重 ，但是对于以后想要专心写代码呢 ， 就会头疼了 。

之前几年一直没有认识到这些问题 ， 从来没有在课外， 呃 ，也很少在课外拓展知识 ， 积累实际经验 。

工作以后说不定就会变成 V2EX 上面被吐槽的奇葩程序员了 。 不知道两位老师有没有这样经历过这样的阶段呢 ？

如果有 ， 又是如何突破这一阶段呢 ？

**Rio** [15:20]
这个怎么说呢 ？

**吴涛** [15:24]
Everyone used to be a noob。

**Rio** [15:27]
总会有一个 ， 那起码我觉得他起码意识到这个东西是有点意思的 ， 可以怎么说来着 ？ 如果说我们这个 IT 行业还有点这个人文精神的话 ， 可能这也就是所谓这种东西吧 ，是不是 ？

**吴涛** [15:41]
我觉得其实就是一个 Lore 传承的问题 ， 就是你 Lore 这个东西 ， 香谣啊 ， 就是你不去 ， 对 ，Folk Lore， 你要不去主动的去接触的话 ， 你是不会知道的 。

而或者说你是需要有人去给你传承的 ， 如果你前人没有告诉你这个东西 ， 或者说你 ， 你 ， 你所处的圈子不对 ， 那你接触不到这些我觉得也是挺正常的一件事情哈 。

对 ， 或者就是你 ， 你根本就是你在中文圈子里面就的确是很难接触到这个 Bernstein 或者是 Thompson 这种名字 。

**Rio** [16:16]
教材里面不会讲吗 ？

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

**Rio** [16:19]
然后好像其实这可能跟中文技术资料的这个匮乏可能也有点关系哈 ， 就是说你 。

**吴涛** [16:27]
中文的教科书里面基本上就是绪论前言讲一下， 然后后面就再也不涉及了 。

**Rio** [16:32]
纯干货 ，不讲花边的 。

**吴涛** [16:35]
后面就是把那个 index 或者是 user manual 给你翻译一遍 。

**Rio** [16:39]
就不会有那个什么那种外国教材旁边有个小条告诉你说 ， 哎 ， 你知道吗 ， 这谁谁谁谁谁是干嘛的 ，他还做过什么事 。

**吴涛** [16:46]
Side note， 我觉得最开始看那个英文书的时候其实很讨厌 side note，因为 side note 是一个 ， 是一个会打断你的阅读 flow 的一个东西 。

**Rio** [16:57]
啊 ？

**吴涛** [16:58]
我觉得是的 ， 就是 ， 嗯 ， 就是你正在读正文 ， 然后旁边突然出来一个 ， 尤其是那种就是不占据整个页面宽度的 side note。

**Rio** [17:09]
就它在旁边那个那个小这个侧栏的那个留白里面小条有一个那种 。

**吴涛** [17:14]
对 ， 然后我就会特别纠结 ， 我说我 ， 我是应该先把这一段正文读完再去跳 side note， 还是根据 side note 的物理位置 ， 实体位置去读 ， 先读 side note 再跳回去读正文 。

**Rio** [17:25]
哎 ， 所以其实我 ， 我还蛮喜欢有这种 side note 的 ， 我记得好像 ， 嗯 。

**吴涛** [17:30]
对 ， 我现在也挺喜欢的 ，但是就那个时候可能有一种 。

**Rio** [17:33]
还是喜欢读干货是吧 ？ 你是说 ？

**吴涛** [17:36]
对 。

**Rio** [17:36]
哎 ，其实如果有 side note 的话 ， 你是可以选择的 ， 就是你时间不够的话就不要读 side note。 它 side note 之所以是 side note，是因为它没有那么重要 。

**吴涛** [17:45]
It's optional content。

**Rio** [17:46]
作者觉得 ， 对 。 所以我觉得这个 ， 这个其实蛮重要的 ， 就是说起码可能我印象中大学的教材里面 ， 可能这种干货会比较满满 ， 就至少国产教材里面干货会比较满满的嘛 ， 然后像一些洋教材可能就会把这种这些 ， 呃 ， 一些诗货混进去 。其实我还蛮喜欢看那些诗货的 ， 这样有一个 ， 呃 ， 别的不说哈 ， 你起码有一个谈资了嘛 ， 对吧 ？

**吴涛** [18:13]
对 ， 就国外的教材比较接近于教学的教材 ， 国内的教材更像于考试的教材 。

**Rio** [18:19]
好残酷啊 ， 要不要 ， 要不要这么直白 ？

**吴涛** [18:21]
这是鸡精和鸡汤的差别好吗 ？ 就你在你吃国内的这个鸡精的话 ， 你得自己掺水进去 ，不然又能会大便干燥了好吗 ？

**Rio** [18:32]
哈哈哈哈 。

呃 ，perfect analogy。

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

**Rio** [18:39]
呃 ， 然后如何说怎么这个突破这个不用 GitHub， 哎 ， 等一下 ，他说那个大多数情况下排名 top 的学校是哪一间 ？

**吴涛** [18:50]
呃 ， 只有前二是确定的 ， 后面三个一直在换 。 我想想啊 ， 交大 ， 复旦 ， 这俩谁排第三 ？

**Rio** [18:59]
不一定吧 ，有时候也有经常这种大学参互起来啊 ， 什么浙大呀 。

**吴涛** [19:03]
我把没有长 ， 没有某长者的话 ， 可能交大应该还是要苦考一下 。 然后复旦之后南京吧 ， 我觉得 。

**Rio** [19:11]
啊 ， 对对对 。 哎 ， 像我们这种 10 名左右的学校就没有这种担忧了 。 我可以说大多数情况下 top 十的吧 。

**吴涛** [19:23]
哈哈哈 。 中山大学还是要比中南大学高 ， 无论如何 。

**Rio** [19:26]
那你是不是就更不担忧这个问题了 ？

**吴涛** [19:28]
对 。

**Rio** [19:29]
Who cares? I don't give a fuck.

**吴涛** [19:32]
飘痴 。 完了 ， 这一期要 exploit。

**Rio** [19:36]
算了 。 呃 ，他说作为同学很多人没有 GitHub， 这个

， 这怎么说呢 ？ 文化吧 ， 还是 ？ 因为现在好像学校交作业还是 SVN 比较多吧 。

**吴涛** [19:49]
主要是有一个非常讨厌的

，不可 ， 需要逾越的东西在哪 ？

**Rio** [19:55]
不可说的因素是吧 ？

**吴涛** [19:57]
对 ，有一个不可说的因素在那边 ， 然后另外一个就是 。

**Rio** [20:00]
其实现在还好 ，也不一定 。 对 。

**吴涛** [20:02]
Git 的学习陡 ， 学习曲线还是比较陡峭 。

**Rio** [20:06]
嗯 ， 上手还蛮简单的吧 ， 至少 。

**吴涛** [20:10]
呃 ，XKCD 不是有一个漫画是最清楚的吧 ？ 还是我忘了 ， 这反正就 。

**Rio** [20:15]
哎 ， 等等 ， 我明白了 ，因为有可能这个跟后面那个有关系 。他说写几十行程序都要开 Visual Studio， 说明是在 Windows 上面 ， 对吧 ？Git 在 Windows 上面是一坨屎啊 。

**吴涛** [20:26]
啊 ， 说的也是 。

**Rio** [20:27]
对 ， 所以可能跟这个系统的选择或者工具链的选择还是有一定的关系 。

**吴涛** [20:31]
对 ，其实一个 ， 对 ，其实一个 ， 嗯 。

**Rio** [20:34]
就这么说吧 。

**吴涛** [20:35]
我们节目 。

**Rio** [20:36]
你不喜欢命令行的话 ， 基本上就没有可能用 Git 了吧 ？

**吴涛** [20:40]
嗯 ， 对 。 就我们节目之前不是说就这一期开始已经没有什么主题了 ， 就我们只是胡扯而已 。 然后但是备选的主题其实还是有 ， 比如说 common line， 可以讨论一下各种 shell， 然后讨论一下 common line 为什么是 ， 为什么一直 。

**Rio** [20:59]
赶快写到下期的提纲里面 ，不然下期又没提说了 。

**吴涛** [21:02]
说的也是 ， 对 。 然后这个 Git 是一个其实是一个很奇葩的东西 ， 就是如果你习惯了 common line 的话 ， 你会发现 Git 没有一个 。

**Rio** [21:12]
That makes so much sense, 对吧 ？

**吴涛** [21:14]
对 ， 没有一个需要用到的 。

**Rio** [21:17]
GUI 了 。

**吴涛** [21:18]
呃 ，GUI， 对 。 唯一一个 GUI 甚至也是在 common line 下面的实现比较 。

**Rio** [21:23]
我想了一下， 这 Git 的 GUI 可能就唯一就是好处看那个 ， 看那个就是那个 commit history。

**吴涛** [21:30]
Tig， 对 ， 就你只需要一个 Tig，Tig 工具 。

**Rio** [21:33]
对 ， 然后就够了 。 然后用 QQ 传代码是什么样的精神 ？

**吴涛** [21:39]
因为不是说现在所有的大学生最常用的 ， 我忘了我在什么地方看到的时候 ， 这个现在 90 后很常用的东西是 QQ 啊 。

**Rio** [21:50]
不 ， 我明白用 QQ 聊天 ， 我完全没有意见 ， 我也用啊 ， 之前我上大学的时候 。 问题是说用 QQ 传代码是为了哪般呢 ？

**吴涛** [22:00]
因为 QQ 可以传文件啊 ，而且所有人都开着 QQ 啊 。

**Rio** [22:02]
不 ， 为什么 ， 我知道 ，但为什么要传 ， 为什么要传这个文件 ， 这个文件是代码 ？Why？

**吴涛** [22:10]
就让我看看你的程序怎么写的 ，不然你放哪了 ？

**Rio** [22:13]
那你直接贴代码片段啊 。

**吴涛** [22:16]
如果太长呢 ？

**Rio** [22:19]
QQ 的传输有限制吗 ？

**吴涛** [22:21]
而且还有一个问题就是 。

**Rio** [22:22]
你就多个文件的时候是吧 ？

**吴涛** [22:23]
而且还有一个问题就是你我会觉得在 。 对 ，而且有些人会用奇葩的字体 ，不是吗 ？ 就是非很宽的字体在 QQ 里面 。

**Rio** [22:32]
啊 ，yes， 那 sucks。 所以 pastebin 还是很有用的吧 ？

**吴涛** [22:37]
但国内没有 pastebin。

**Rio** [22:38]
不 ，pastebin 也不太好用 ， 如果说多个文件的话哈 ， 它是 pastebin 单个文件可能还行 。

**吴涛** [22:43]
嗯 。

**Rio** [22:44]
所以那个其实还是这个 ， 就邮件或者就是纯文本邮件用的还不够熟练的原因吧 。 因为其实在那个据我所知啊 ， 就是 Git 出现之前 ， 那个 Linux kernel 上面他们做那个 patch 的时候 ， 都是通过邮件发 diff 嘛 。

**吴涛** [23:01]
嗯哼 。

**Rio** [23:01]
所以 。

**吴涛** [23:02]
中国的问题是 。

**Rio** [23:04]
不会用 diff。

**吴涛** [23:05]
哈哈哈 。 就中国是 email never talk off。

**Rio** [23:09]
大学里面还好吧 。

**吴涛** [23:11]
你这么觉得吗 ？ 我上大学的时候四年发过 40 封电子邮件就不错了 。

**Rio** [23:16]
Holy shit。 怎么可能 ？

**吴涛** [23:19]
差不多吧 ， 就除了申请学校的时候发了很多之外 。

**Rio** [23:22]
你平时都不发吗 ？

**吴涛** [23:23]
我上大学的时候 ，2003、04 年我发邮件给谁啊 ？

**Rio** [23:30]
同学啊 。

**吴涛** [23:32]
哦 ， 我发邮件给老爸过 ， 对 ， 我跟我曾经家书是用邮件发的 。

**Rio** [23:37]
这么先进 。

**吴涛** [23:38]
可是 ， 可是由同学 ， 我们是 ， 我也不知道 ， 我的同班同学 ，因为我们是学 ， 呃 ， 新鲜者嘛 ， 然后， 呃 ， 大概 。

**Rio** [23:50]
你会觉得邮件不安全吗 ？

**吴涛** [23:52]
不是 ，80% 的人买了电脑之后， 我们都手工把所有的寝室用局域网连起来了 。 然后 。

**Rio** [24:00]
你们学校没有校园网 ？

**吴涛** [24:02]
没有校园网 。

**Rio** [24:02]
What？

**吴涛** [24:04]
就校园网是一个 ， 就我们只有自己拨号的上网的宽带 ，但没有校园内部的局域网 。

**Rio** [24:11]
哈 ？

**吴涛** [24:12]
Don't ask me why。 对 ， 这样 ， 事实就是这样 。

**Rio** [24:15]
Seriously？

**吴涛** [24:16]
不会吧 。

**Rio** [24:17]
对 ， 你们什么 ， 你们什么在那个校园网上传 APN 这种事情 ， 我都只听过 ， 从来没有见过 。 那你们有 VBS 吗 ？

**吴涛** [24:23]
我们的 VBS 是一个 PHP 系统 。

**Rio** [24:26]
没有那个 。

**吴涛** [24:27]
Discords。

**Rio** [24:28]
Telnet VBS。

**吴涛** [24:29]
没有那个 ， 没有那个 Telnet。 好像曾经有吧 ， 云路有啊 ， 我也忘了 ，但 。

**Rio** [24:34]
不会吧 ， 真的假的 ？

**吴涛** [24:36]
对 。

呃 ，但当然也跟学校有关 ，因为我最开始在的那个校区是一个被后来被合并的校区 ， 所以它本身的基建并没有 。

**Rio** [24:47]
不是亲 ， 亲生子爹不爱是吧 ？

**吴涛** [24:49]
对 ， 对 。 好吧 。

**Rio** [24:51]
要么疼 ， 要么疼 。

**吴涛** [24:53]
我摸头 ， 我摸头 。

**Rio** [24:55]
不 ， 就我 ， 我上学的时候校园网还是蛮普及的 ， 起码第一年的时候 ， 呃 ， 校区是新的 ，在珠海那边嘛 ， 然后房 ， 宿舍也是新的 ， 校园网都还接得可以 ， 百兆接入吧 ， 应该是 。

然后但出 ， 出 ， 出校区就奇慢无比了 ，因为出口带宽比较窄 ，但是在校区校园内部的话 ，有各种服务器啊 ，有机房啊 ， 然后内部资源互相访问啊 ， 当时用什么飞鸽传输 ，QQ 内部就是各种内网传文件的工具用的还蛮火的 ， 然后电子邮件用的也是应该是蛮多的 。

然后 。

**吴涛** [25:32]
所以你看你那时候也用 QQ 传文件了 ？

**Rio** [25:35]
呃 ， 会有 。 对 ，也会有 。 那个时候 Google 好像有出那个群组的功能嘛 ， 就那个时候就是 ， 就在校 ， 学校里面发些东西还是可以 ，但是用邮件的也不少 ， 就可能有 1/3 用邮件 ，2/3 用 QQ 吧 ， 大概是那个 。

哎 ，不对 ， 应该是就小文件哈 ，1/3 用邮件 ，1/3 用 QQ， 大文件的话可能还是本地什么 ， 就有个叫飞鸽传输的还比较多一些 。

**吴涛** [26:00]
没有啊 。

**Rio** [26:00]
对 ， 然后， 然后那个就是还有 ， 还有一个飞鸽传输和那个就是 FTP， 就是校园内网的 FTP 会多一点 。

**吴涛** [26:08]
我们有一个公众 FTP。

**Rio** [26:09]
对 ， 然后就是上次我说那个故事嘛 ，有个哥们在自己的那个 PC 上面搞了一个 ， 开了个 FTP server， 然后我想开放毛片资源 ， 跟我瞎骂 。

**吴涛** [26:20]
对对对 ， 这个这些传说都是我们听说的 ， 就算也不是听说 ， 我在浙大也见过他们那边的 。

**Rio** [26:25]
啊哈哈 。

**吴涛** [26:26]
这个 APN ad hoc 共享网络是多么的昌盛呢 。 我们学校从来没有发生过 。

**Rio** [26:31]
所以你看迅雷还是有群众基础的 。

**吴涛** [26:34]
嗯 。

**Rio** [26:36]
对 ， 然后， 所以说嘛 ， 我就是说你如果邮件的需求还是 。

**吴涛** [26:41]
切 。

**Rio** [26:41]
等一下， 那你难道你们毕业之后不用邮件吗 ？ 在工作的时候 。

**吴涛** [26:46]
毕业之后当然拼很多 ， 我毕业就出国了 ， 当然是一直用邮件 。

**Rio** [26:50]
就是我 ， 我的印象就是说哪怕毕业之后， 那我当然读商科嘛 ， 就是很多同学他们不管是申请工作简历也好 ， 还是说日常这个同事之间或者跟客户之间沟通也好 ，他们用邮件的情况还是蛮多的 ， 就 business 是 business 嘛 。

**吴涛** [27:06]
嗯 。

**Rio** [27:06]
所以我不觉得在起码我接触的那群人里面 ， 邮件是一个很陌生的事情 。 所以我就在想为什么会用 QQ 传代码而不是用邮件发 diff。

可能跟那个工具链的交错有关系吧 ，因为大学就至少我们就所谓的这种 ， 就是综合性大学 ，而不是这个叫什么来着 ， 大专 ， 它可能会偏向于说理论多一些 ， 对这个工具的就比较 ， 这怎么说呢 ， 比较看不起哈 。

但其实 。

**吴涛** [27:36]
如果 Visual Studio 有一个一键把 diff 导出为文本文件的功能 ， 我想也许会用的人多一点 。

**Rio** [27:44]
I doubt it。

**吴涛** [27:46]
不可能 ， 这种事情怎么可能发生在 Vision 身上 。

**Rio** [27:49]
我也觉得是这样 。 所以还是一个其实 common line 和 GUI 的争端嘛 ， 就这个分 ， 分歧 。 然后碰巧大多数人可能还是选择的是这个 Windows 平台嘛 ， 所以 。

**吴涛** [28:00]
路径依赖 。

**Rio** [28:01]
对对对对对 ， 这个完了 。

**吴涛** [28:04]
路径依赖 。 所以这位同学也不用特别的在意这个什么工具链的事情 。

**Rio** [28:09]
只是碰巧遇到两个比较龟毛用那个 client， 呃 ， 那个 common line 的人。

**吴涛** [28:13]
哈哈哈 。 对 ， 然后如果你有志于继续发展的话 ， 那将来其实你也会 ， 呃 ， 用该用的东西 。 谁 ， 谁年轻的时候没有荒唐过 。

**Rio** [28:25]
不是 。OK。

**吴涛** [28:28]
OK。 呃 ， 另外大家说想问一个不相关的问题 。

**Rio** [28:31]
嗯 。

**吴涛** [28:31]
瑞欧老师 。

**Rio** [28:32]
接着念他的反馈嘛 ， 这里是 。

**吴涛** [28:34]
对 。 瑞欧老师 ， 呃 ， 提到自己在不同网站的账号是用不同邮箱注册的 ， 我自己也想效仿 ，但不清楚该如何管理 ，以及如何选择个人邮箱的服务商 。

**Rio** [28:45]
嗯哼 。

**吴涛** [28:45]
很多账号似乎不能更改邮箱 ， 那瑞欧老师都是重新注册的吗 ？ 忘次教不胜感激 。

**Rio** [28:53]
嗯 。

**吴涛** [28:53]
好吧 ， 请赐教 。

**Rio** [28:55]
如何选择个人邮 ， 个人邮箱服务商 ？ 很简单啊 ，不用选了 ， 就 Gmail。 因为 Gmail 有个那个 hack， 就是比如说假设你的这个 Gmail 账号是 four@gmail.com 哈 ， 然后你用 four 一个加号 ， 后面是比如说 bar@gmail.com， 发到这个地址的 ， 还是会进到你 four 的那个邮箱里面去 。

然后你说 four 加这个 spam@gmail.com，也是会进到你 four 里面 ， 就加号里面填任何东西都会进到你的那个邮箱里面去 。

这是一个 hack。

**吴涛** [29:27]
所以你注册的时候就只需要填 four， 然后加加号 ， 然后再加上这个网站名字 。

**Rio** [29:33]
或者是你随机生成的一个代 ， 代码 ， 如果你不想被人猜出来的话 。 对 。

**吴涛** [29:37]
对 ， 然后你在下一次在 spam 里面看到哦 ，是 four 加上比如说啊 。

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

**吴涛** [29:45]
美团给你发了 。

**Rio** [29:46]
哈哈哈 。

**吴涛** [29:48]
对 ， 美团 。 呃 ， 某网站给你发了垃圾邮件 ， 你就知道这个网站把你的邮件卖了 。

**Rio** [29:52]
对对 。 不过呢 ， 这个东西也有点缺陷 ， 就是说有一些这个网站的那个邮件地址的这个验证 ， 那个证责表达式是不支持前面有加号的 。

它会说你这个不是一个合法的邮件地址 。

**吴涛** [30:06]
没错 ，因为一个合法邮件地址的证责表达式是非常非常难以写出来的 。

**Rio** [30:11]
其实是证责表达式不能表达出来一个合法的 ， 就不 ，不 ， 说错了 ， 证责表达式的语法限制了它不能表达所有可能邮件地址 。

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

**Rio** [30:22]
然后因为这个 。

**吴涛** [30:23]
所以大部分人在写一个邮件判断的时候 ， 就写一个非常难易的判断 ，而这种判断就会导致一个明明 valid 的邮件 ， 比如说 four 加 bar@gmail.com。

**Rio** [30:36]
对 ， 比如说 ， 比如说那个邮件的前面那一部分 ， 就邮件地址前面 @ 符号前面那部分就可以是中文 。

但是很多人说这个没见过嘛 ，不合法嘛 ， 对吧 ？ 他觉得不合法 。他就说限制前面部分只能是 A 到 Z，0 到 9， 横线 ， 横 ， 呃 ， 减 ， 呃 ，不是 ， 横线和下划线 ， 然后再就是至少一个 ， 对吧 ？

这其实就 ， 就很简单粗暴嘛 。 但是你遇到了你也没办法 ， 你也不可能说你每个真的遇到就去改 。

但是所以怎么解决这个问题 ？ 你就有了 ， 像我们这么这么高阶用户怎么可能会满足于用 Gmail 这种后续的域名呢 ？

对吧 ？ 那你自己注册一个域名嘛 ， 然后你可以找一个服务商 ， 比如说那个 Google Apps， 你可以把那个 wildcard，wildcard 域名打开 ， 就是简单说星号嘛 ， 只要前 。

**吴涛** [31:23]
通配符 。

**Rio** [31:23]
对 ， 通配符 ， 就发到任何 ， 呃 ，@ 你邮件 ，不 ，@ 你域名的邮件 ， 都会进入到你指指定的一个邮箱 ，也可以 。

这样你就有无限数量邮箱可以用了嘛 ， 你想用什么用什么 。

**吴涛** [31:38]
嗯哼 。

**Rio** [31:38]
然后他提到说很多账号似乎不能更改邮箱 ，其实大部分是可以改的吧 ，其实不能改的现在都比较少了 。

比如我们目前为止吐槽最多就是微博了 ， 就变态啊 ， 为什么不能改邮箱 ， 我邮箱掉了呢 ， 或者换工作了呢 ， 对吧 ？

**吴涛** [31:53]
嗯哼 。

**Rio** [31:53]
呃 ， 对 。 所以我是不是重新注册的 ？ 我不用啊 ， 我因为我注册的时候就是用的这种方法做的嘛 ， 然后遇到那些不能改的 ， 哎 ， 就特事特办吧 。

**吴涛** [32:07]
对 ， 反正瑞欧老师的邮箱就是 。

**Rio** [32:11]
随机生成 。

**吴涛** [32:11]
随 ， 随便 ， 随便发什么都可以 。

**Rio** [32:13]
哈哈哈 。 对 。OK， 今天的这个听众反馈环节到这里结束 ， 我们现在进入新闻 ， 新闻时间 ，是此处插入新闻联播片头曲 。

**吴涛** [32:25]
噔噔噔噔噔噔噔噔 。

**Rio** [32:28]
其实我好多年没看了 ， 还是这个曲子吗 ？ 应该不一样了吧 。

**吴涛** [32:31]
应该是 ， 应该是吧 ， 只不过可能从单 。

**Rio** [32:34]
这是不是中国 ， 中国境内除了国歌之外第二元 ， 第二元 ， 第二元素的音乐 ？

**吴涛** [32:42]
哈哈哈 。 第一元素是什么 ？ 国歌 。

**Rio** [32:43]
国歌 ， 对啊 。 啊 ，不一定 ， 还有解放军进行曲是吧 ？ 对 。

**吴涛** [32:48]
嗯 。

**Rio** [32:49]
啊 ， 难说 。Top three 吧 ， 至少 。 对 。

**吴涛** [32:51]
嗯 。

### Surge

**Rio** [32:52]
呃 ， 新闻 number one， 呃 ， 最近出了一个 ， 就是 iOS 上出了一个很好用的网络调试工具 。 哎 ， 怎么这么说了 ， 叫 Surge，S-U-R-G-E。

**吴涛** [33:05]
它除了能够列出你的程序曾经试图访问过哪些网址之外呢 ， 还可以做一些不可言说的事情 。

**Rio** [33:13]
比如网络请求改写啊 ， 变更啊 ， 或者叫做 proxy 的一些业务哈 。

**吴涛** [33:19]
从而达成一些不可告人的目的 。

**Rio** [33:21]
呃 ， 可以告人， 嗯 ， 嗯 ， 可以告人， 可以告人。

**吴涛** [33:25]
对 ，但我们不会告诉你 。

**Rio** [33:26]
嗯 ， 你自己去想吧 。

**吴涛** [33:28]
没错 。

**Rio** [33:28]
那个什么 ， 呃 ， 然后它的那个开发者最近叫刘亚琛 ， 你也不知道是几声 ， 怎么这么念了 ， 就念轻声吧 。

**吴涛** [33:38]
刘亚琛 。

**Rio** [33:39]
刘亚琛吧 ， 可能是 。 然后他在那个 Media，Medium 上面这个网站发了一篇文章讲 Surge 的原理与实现 ，但是这个大致可以说一下就是它是基于 iOS 9 和这个 OS X 10.11 吧 ， 应该里面出现了一个新特性 ， 叫做 network extension 的机制去做的一些底层的网络请求的 ， 呃 ， 网络的一些 ， 呃 ， 处理吧 。

然后他在这篇文章里面大致的描述一下 Surge 的主要的构成部件呀 ， 还有它里面的一些 ， 呃 ， 每个部件是干嘛用的 。

就是如果说你对这个东西有兴趣 ， 知道它能 ， 想知道它能干嘛 ， 呃 ， 知道它原理的话 ， 这是一篇非常 ， 呃 ， 很好的一个文章 ， 推荐大家去阅读一下 。

当然了 ， 顺便也 ，也顺手给 Surge 打一个广告 ， 这毕竟是咱们国人自己写的一个很有用的工具 ， 对吧 ？ 啊 ，Surge。

**吴涛** [34:32]
所以 Surge 跟 VPN 的区别在哪 ？

**Rio** [34:34]
哦 ， 你还是问了这个问题 。Surge 是一个通用的网络层的一个工具 ， 然后实现 VPN 是其中它一部分的功能 ， 大概我可以这么解释吧 。

**吴涛** [34:46]
那么它实现的 VPN 跟比如说从某网站买来的 VPN 有什么差别 ？

**Rio** [34:51]
它可能跟就是 iOS 9 里面它能做到就是说这个 ， 呃 ， 局部代理 ，因为过去是全局代理嘛 ， 你要么用 VPN， 要么不用 VPN， 对吧 ？

**吴涛** [35:02]
对 。

**Rio** [35:02]
但现在它用 Surge 这个方式 ， 它可以做更精细的控制 ， 比如说 ， 呃 ， 某些 IP 段用 VPN， 某些 IP 段不用 VPN， 或者有些域 ， 某些域名用 VPN， 某些域名不走 VPN， 就这个规则是可以很灵活的 。

**吴涛** [35:16]
而且你不用一直去手动维护这个 VPN。

**Rio** [35:19]
对对对对对 。 然后当然 。

**吴涛** [35:20]
非常爽的一点 。

**Rio** [35:21]
当然这么好的应用呢 ， 我们自然而然要给它打广告推荐一下了 ， 对吧 ？ 然后当然这个 Surge 不算便宜 ，在 App Store 里面卖 10 刀 ， 呃 ， 算是 。

**吴涛** [35:30]
物有所值 ， 物有所值 。

**Rio** [35:31]
对 ， 比较贵的一个应用吧 。 但是考虑到这个东西的复杂性和这个 ， 呃 ，有用性 ， 推荐大家支持一下我们这个国产开发者的这个一个小工具吧 。

对 ， 再强的一点 ， 它不是 。

**吴涛** [35:45]
我们没有收到赞助啊 。

**Rio** [35:46]
对 。

**吴涛** [35:46]
这是完全 。

**Rio** [35:48]
纯 ， 纯 ， 纯友情 。

**吴涛** [35:49]
你心的 。

**Rio** [35:49]
对 。

**吴涛** [35:50]
对 。

**Rio** [35:51]
嗯 ，也是希望说有更多的开发者能够提供一些更好用的工具 ， 帮助我们实现一些日常的一些 ， 呃 ， 业务吧 。

### FLIF

**Rio** [36:00]
呃 ， 下一条新闻是一个挺好玩的东西 ， 叫做一个新的图片格式 ， 图像格式 ， 叫做 Free Lossless Image Format。

**吴涛** [36:11]
Fleet。

**Rio** [36:11]
呃 ， 就是无损的格式的话 ，也就 PNG 是现在主流的应用的嘛 ， 无损 ， 无损压缩的格式 。 然后这个叫做 FLIF。

**吴涛** [36:20]
FLIF。

**Rio** [36:22]
FLIF，Free Lossless Image Format。 它的牛逼之处在于它压出来的文件比 PNG 要小 。

**吴涛** [36:30]
嗯哼 。

**Rio** [36:31]
它甚至 ， 它甚至连比一个 ， 呃 ， 它比你很多东西啊 ， 它比 PNG 小大概百分之三二三十

， 然后比其他的那些无损格式也 ，也是大概小最多百分之 30 左右吧 ， 就还挺有意思的 。 因为 ，因为无损的话其实压缩的比例不是太高嘛 。

**吴涛** [36:52]
35% smaller than typical PNG files。 嗯 。

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

**吴涛** [36:58]
但好吧 ， 你说在网络越来越快的时代 ， 呃 ， 压缩变小有 ，有非常大的意义吗 ？

**Rio** [37:08]
有啊 ， 特别是在那个移动设备上面 ， 这个带宽还是不太够的 。

**吴涛** [37:12]
嗯 。

**Rio** [37:14]
因为主要网络情况不稳定嘛 ， 你说在家用宽带可能体会不到这种区别 ，但是你在这个 3G、4G 上， 特别是信号不太好的时候啊 ， 能小一点还是挺有用的 。

而且对于这个 ， 对于这个就是 CDN 来说就直接是钱呐 。 因为现在很多这个 ， 比如说图片网站 ， 它的那个要花一大一部分钱到那个 CDN 的流量上面去嘛 。

**吴涛** [37:37]
是 ， 没错 。

**Rio** [37:38]
如果 ， 如果说你按那个能够平均小个百分之 20 的话 ， 等于你那个 CDN 的费用 。

**吴涛** [37:44]
大了吧喳 。

**Rio** [37:45]
八折了 。 对 ， 这还是很大一笔钱的 。

**吴涛** [37:48]
游戏也是哈 。

**Rio** [37:48]
但这种东西 。

**吴涛** [37:50]
游戏里面的材质采用更小的 ， 呃 ， 更高压缩比的压缩算算法的话 ， 整个游戏的安装文件就少了很多 。

**Rio** [38:00]
没错 。 呃 ，但这种问题的麻烦之处在于它是一个新的格式嘛 ， 可能这个就是 compatibility 不是很好 ， 就是设备的支持都会有点问题 。

之前那个 Google 不是做了一个叫做 WebP 的格式嘛 。

**吴涛** [38:15]
嗯哼 。

**Rio** [38:16]
就用于替代 JPG 和 PNG，因为 WebP 它是可以从无损到有损之间是可以调的 。 然后就出现一个问题 ， 就是比如说你用这个 Chrome 浏览器访问 Google 的很多这个网站 ， 它会默认去给你 ， 呃 ， 提供这个 WebP 格式的这个图片 。

那么你点这个右键另存为图片的时候就会发现 ， 哎 ， 存下来文件其他方其他东西打不开 ， 那你就比较尴尬了 。

你想在其他地方里面用的话 ， 对吧 ？

**吴涛** [38:44]
那其实 FLIF 也有这个问题啊 ， 就是 。

**Rio** [38:46]
没错 ， 对 ， 就会有同样的问题 。 所以我觉得可能它应用 ， 它的应用场景还是在比如说你写这个 iOS 或者是这个安卓的这个 ， 嗯 ，App 的时候 ， 你可以控制解码器那一段嘛 。

你说你为了减小你这个资源 ， 资源文件的 ， 呃 ， 大小 ， 那时候你可以用这种自定义的这种格式 ， 然后你自己再做个自己做一个解压的嘛 。

但这就引入另外一个问题了 ， 就说一般说这个像 PNG 这种标准格式的 ， 就这种比较流行的格式的这个解码器可能系统自带了 ， 对吧 ？

**吴涛** [39:17]
对 。

**Rio** [39:17]
你不用自己再写一个 。 但如果你用 FLIF 的话 ， 你还得再搭一个这个 decoder 进去 。

**吴涛** [39:22]
或者再等 50 年 。

**Rio** [39:24]
对 ， 这就可能那个就有一点问题了 。

**吴涛** [39:28]
对 。

### 网易泄漏

**Rio** [39:29]
呃 ， 下一则新闻是 163， 就是网易邮箱好像最近出大事了 。

**吴涛** [39:35]
对 。

**Rio** [39:35]
吴涛你知道怎么回事吗 ？

**吴涛** [39:37]
呃 ，有很多朋友都中招了 ， 就是 ， 呃 ，但是具体的情况我们其实并不是 ，并不很清楚 ，因为这是一次比较友善加引号的行为 ， 就是 ， 呃 ，在邮箱 ，在这个事故发生的第一时间被厂商得到了通报 ， 然后其中的具体的技术细节并没有被披露出来 。

当然如果你费心去找的话 ， 肯定是可以找到的 ，但我们两个没有费心去找 ， 所以 ， 呃 ， 仅就知道的情况来看 ，是 163.com 为域名的免费邮箱被泄露了大概 1 亿 ，I repeat，1 亿个账号 。

**Rio** [40:16]
哈哈哈 。

**吴涛** [40:17]
的 ， 的用户名和密码 。 当然密码不是明文 ，而是一个 MD5 hash。

**Rio** [40:25]
那不等于明文 ， 没什么区别 。

**吴涛** [40:27]
呃 ， 就是没有加 salt， 这是最大的问题 ， 就是 。

**Rio** [40:31]
对 ， 加 ， 呃 ， 对 ， 就是又没加 salt 又是 MD5， 那基本是等于明文了 。

**吴涛** [40:35]
没错 。 就如果各位不知道的话 ， 那 MD5 虽然是一个哈希 ， 呃 ， 算法 ， 虽然理论上是 ， 理论上是它是单向的 ，但是如果你在网上比如搜啊 ，reverse MD5， 就可以搜到一大堆彩虹表的网站 ， 就是 ， 呃 ， 事先已经把 MD5 算出来 ， 然后你输入一个 MD5 就可以找到那个对应的原 ， 原来的明文的这么一个网站 。

就 ， 就是 。

**Rio** [41:04]
就算什么 ， 叫什么 ？

**吴涛** [41:05]
硕大无朋 。

**Rio** [41:05]
MD5 cracking as a service。

**吴涛** [41:07]
对 ， 没错 。 就是一个硕大无朋的 dictionary， 一个硕大无朋的哈希表 ， 逆向哈希表 。

**Rio** [41:15]
对 。

**吴涛** [41:16]
嗯 。

**Rio** [41:17]
对 。

**吴涛** [41:17]
然后很多朋友都中招了 ，因为 ， 嗯 ，163 作为一个历史 ，在中文互联网世界历史最为悠久的免费 Web 邮件服务 ，并且迄今还在活跃的免费 Web 邮件服务 ，是很多很多用户 ， 国内用户都在用的 。

嗯 ， 可能没有 QQ 多吧 ，但 ， 哎 。

**Rio** [41:38]
没有 ，QQ 是目前国内第一大的邮件服务商 。

**吴涛** [41:41]
没错 ， 应该没有 QQ 多 ，但是仍旧是非常大的用户群 。 因为 ， 呃 ， 那个时候 QQ 还叫 IOICQ 的时代 ， 呃 ，163 就已经推出邮箱了 。

我还记得 163 是当时中国电信最常见的拨号上网号码啊 。 当然我一般都是拨 169，因为 163 的费用要比 169 高 ，是这样吧 ？

**Rio** [42:05]
呃 ， 对 ，163 更贵 ，169 便宜一些 。

**吴涛** [42:08]
没错 。 但问题是 。

**Rio** [42:10]
但这 ， 这两 ， 这两个不是一回事哈 ，169 的是这个 163， 网易的 163 是 163.com。

**吴涛** [42:15]
对 。

**Rio** [42:16]
然后你说那个 163 是电信 ，是 163.net。

**吴涛** [42:19]
不是 ， 我的意思是 163.com 为什么会被人记住 ， 就是因为那个时候中国电信 ， 呃 ， 用 163 作为上网号码 ， 然后网易就非常机智的注册了 163.com， 然后 。

**Rio** [42:32]
它不是注册的 ， 听说它是钉三十 ， 很 ， 很大力 ， 连 ， 连哄带骗弄来的 。

**吴涛** [42:37]
对 ， 就它 ， 好吧 ， 呃 ，let me rephrase， 它弄来了 163.com。

**Rio** [42:42]
对对对对 。

**吴涛** [42:43]
弄死你 。

**Rio** [42:43]
作为它的网易的主力域名。 它当时还有好多 ， 它有什么 126.com 的 ， 还有什么 ye.net。

**吴涛** [42:51]
对 。

**Rio** [42:51]
好像是这样 。

**吴涛** [42:52]
对 。

**Rio** [42:53]
搞了一堆 。

**吴涛** [42:54]
一大堆 。

**Rio** [42:55]
对 ， 它搞了一个邮箱服务集群 。

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

**Rio** [42:58]
对 ， 就这个意思 。

**吴涛** [42:58]
它还是非常 ， 非常会压宝的 ， 就把鸡蛋分散的放在了 ， 它买了很多篮子 ， 拿来 ， 拿来尽可能的搜刮鸡蛋 。

但是 163.com 无论如何是被人作为铭记的一个 ，因为那个时候你一上网就要拨 163 啊 ， 然后你用 163.com 就非常理顺成章的 control and enter， 就进去了 ， 对吧 ？

**Rio** [43:22]
对对对 。 当然了 ， 这个他们这个光辉的历史也成为它现在一个 ， 这光辉的历史变成了历史的包袱哈 。

**吴涛** [43:30]
对 。

**Rio** [43:31]
就现在因为用户量这么大 ， 然后它当时做那个什么网易通行证吧 ， 好像是把这个打通了 ， 打通了 ，但是这个我不知道他们内部怎么样 ，但是可以一个比较合理的猜测是因为网易通行证是一个比较古老的系统嘛 。

**吴涛** [43:46]
嗯哼 。

**Rio** [43:47]
那它可能比如说它以前依赖的像 MD5 单向这个哈希不加盐的这个架构 ， 它可能就改不过来了 。

**吴涛** [43:53]
对 。

**Rio** [43:53]
那就给之后的安全造成了隐患嘛 。

**吴涛** [43:57]
一切问题都是历史遗留问题 。

**Rio** [44:00]
是 ，是 。 这个有时候还是要狠下心来把这个 legacy 干掉的 。 因为当时 ，因为之后的那个 ， 那个数据库里面的这一块啊 ， 我自认为还挺安全的 ， 我做的嘛 。

**吴涛** [44:11]
哦 ， 原来如此 ， 原来这一块是知乎 。 知乎 ， 好吧 ， 海口夸在这了 ， 各位 。 将来知乎如果被脱库的话 ， 各位可以来找我们公司 。

**Rio** [44:21]
不是 ， 我就可以明确的说知乎的那个 ， 那个数据密码是下万之后再有一层 bcracked。

**吴涛** [44:26]
哦 。

**Rio** [44:28]
然后脱库就脱库吧 ， 反正算不出密码来 ， 无所谓 。

**吴涛** [44:31]
Awesome。I just got a nerdgasm。

**Rio** [44:35]
所以我 ， 我就每次都很 ， 都很开心啊 。 那知乎我不知道有没有被脱库哈 ，也可能有人拿过了 。

**吴涛** [44:41]
但是燃病了是吧 ？ 偷一些也没用 。

**Rio** [44:44]
对 ， 燃病了嘛 ， 你解不出来有什么用呢 ？

**吴涛** [44:46]
嗯 。 忽然之间这个耳机里传来了某种自豪感 。 哈哈哈 ， 自豪感洋溢着房间 。

**Rio** [44:59]
好吧 ， 好吧 。 那个下一条新闻是这个 Windows 7 这么老的系统还有什么问题 ？

### Win7乌龙

**吴涛** [45:06]
Windows 7 老吗 ？

**Rio** [45:08]
很老啦 ， 都 8.19， 现在都 10 了 。

**吴涛** [45:12]
Oh come on。

**Rio** [45:13]
哎 ， 没有 ， 没有 9 是吧 ？ 有 9 吗 ？ 没有 9。 跳过了 9 是吧 ？

**吴涛** [45:16]
Windows 7 89，you know。789 吃了 ， 所以没有 9。

**Rio** [45:23]
好吧 ， 没有 9。 呃 ， 它出了什么问题 ？Windows 7。

**吴涛** [45:27]
啊 ，Windows 7 在前一阵子出了一个非常大的幺蛾子 ， 就是一堆人发的这个比较听话老师与时俱进注重安全的 Windows 用户 ， 呃

， 把这个自动升级打开了 ， 然后， 呃 ， 猛然发现今天的自动升级有点不一样 ， 就是那个标题是一串乱码 ， 下载地址也是一串乱码 ， 呃 ， 补丁的这个内容描述更是一大堆乱码 ， 然后人们就开始慌张了 ，因为这个有些人是在补丁已经自动被打好之后才发现的 ， 然后， 呃 ， 坊间流言四起 ， 就说啊 ，Windows 已经被攻陷了 ， 我们 everyone is doomed， 你懂吗 ？

这种感觉 。 然后 。

**Rio** [46:14]
这有这么严重吗 ？

**吴涛** [46:15]
什么意思 ？

**Rio** [46:17]
就这个实际上到底影响怎么样 ？

**吴涛** [46:19]
其最终结果其实是这个 ， 呃 ， 微软也找了一个替罪羊 ， 就是说啊 ， 我们一个搞测试的实习生把一个内部测试这个升级系统的补丁放了出来 ， 这个补丁是完全无害的 ， 就是一个 ， 就之所以是乱码 ， 就是因为那些东西只是占位符而已 ， 所以实际上没有什么伤害 ， 然后这个补丁也很快被从网站上撤掉了 ， 所以它没有造成任何实际伤害 ， 只不

过 ， 呃 ， 这个 the moral of the story 就是这件事情带给我们的思考就是如果这件事情不慎是一个真正的实际发生了的这个安全灾难的话 ， 那其后果可能是非常非常严重 。

**Rio** [47:06]
所以现在要有大面积有效的杀伤力 ， 就是想办法把那个 Windows 的 update 这个东西搞下来是吧 ？

**吴涛** [47:13]
没错 。 如果你想要真正的让全世界陷入瘫痪化的话 ， 那可以试一试把 Windows 的 updates 黑掉 。

**Rio** [47:20]
这感觉是 Skynet 要做的事情 。

**吴涛** [47:23]
说不定 Skynet 已经做了 。

**Rio** [47:25]
我们不知道而已 。 今天啥啥真的啥啥 。

**吴涛** [47:27]
今天是万圣节 ， 我们可以讲讲 ， 讲一点 。

**Rio** [47:29]
鬼故事 。

**吴涛** [47:30]
Spooky 的东西吧 。 想象一下这个世界 ， 就我们所熟知的这个电 ， 计算机世界将以如何方式终结 。

**Rio** [47:39]
哎 ， 错了错了 ， 我们今天录制的时候是万圣节 ， 发布的时候就不是 。

**吴涛** [47:43]
啊 ，OK。

**Rio** [47:44]
嗯 ， 好吧 。

**吴涛** [47:45]
已经过期了 ， 无效 。

**Rio** [47:48]
好忧伤 。

**吴涛** [47:50]
对 。

**Rio** [47:50]
呃 ， 说这件事的一个主要的原因是因为提一个点 ， 就是做我们就是做这个系统设计也好 ， 做架构也好 ， 你永远永远要假设这个网络是 。

**吴涛** [48:03]
不可靠的 。

**Rio** [48:03]
不可信的 。

**吴涛** [48:04]
对 。

**Rio** [48:05]
对 ， 那么你之后要做的一些事情就很重要了 。 比如说你可以 ， 你要得假设你那个下回来的那个就是通过 ， 呃 ， 网络传回的文件是被搞过的 ， 那你必须要环环验证嘛 ， 你必须要有这个什么 ， 呃 ，verification， 就是哈希通过哈希的方式也好 ， 还是什么别的签名的方式也好 ， 对吧 ？

**吴涛** [48:23]
没错 。

**Rio** [48:24]
你得有这么一个 ， 一个过程 。 然后永远不要说啊 ， 我这个因为我这个文件是通过 HTTPS 下载的 ， 所以它就没有问题了 。

嗯 ， 很难讲 。

**吴涛** [48:34]
对 ，但啊 ，其实反过来说这个信任链是一环套一环的 。 如果你说每一环都有可能出问题的话 ， 那最终的结果就是回到我们上上期 ， 上上上期的那个 ， 呃 ， 口号就是 trust no one even your compiler， 那你可能连硬件都不能相信 ， 那最后你要相信谁 ？

你总要在一个地方终结说哦 ， 这个地方我 ， 我没有办法 ， 我只能选择相信它 。 但 ，you know。

**Rio** [49:07]
对 ， 这没办法 ，但你能说尽可能的 。

**吴涛** [49:10]
但是你至少 。

**Rio** [49:11]
可以避免的情况下 。

**吴涛** [49:12]
对 ， 这些非常明显的可能出幺蛾子的信源一定要加以警惕 。

**Rio** [49:17]
没错没错 。

**吴涛** [49:18]
当然 Windows 7 的 updates 的这个就所谓 misfire 事件也还是 ， 呃 ， 给我们提了一个醒 ， 就是这种单一的升级的源头 ， 如果真的出了灾难 ，是有可能非常非常非常灾难性的灾难 。

**Rio** [49:37]
打击好广啊 ，App Store 被打中了 ， 然后那个什么 APT 的 source 也被你搞了 。

**吴涛** [49:43]
对 ， 这就是为什么我们要提倡这个反托拉斯 ， 为什么要加速加快市场竞争 ， 为什么要提供这个鼓励自由市场 ， 就是要尽量减少这种单点 ， 呃 ， 叫什么 single point of failure 的出现 。

**Rio** [50:00]
最好你是 ， 你是坚持是什么 ， 就是分裂派的 。

**吴涛** [50:03]
没错 。 去中心化吧 ， 这个应该叫 。

**Rio** [50:06]
对对对 ， 你是要 ， 你是要 ， 要怎么来着 ？Peer to，不是 peer to， 叫 decentralized。

**吴涛** [50:11]
没错 。 比如说 Git 对吧 ， 这个如果你用 SVN 的话 ， 你的 repository 垮了你就完蛋了 。 那用 Git 的话就没有这个问题 。

那 。

**Rio** [50:20]
还在是吧 。

**吴涛** [50:21]
没错 。 然后如果你 ， 呃 ， 如果我们人类多用几个操作系统的话 ，不要说什么一个操作系统统一天下， 那 ，也许如果真的出了什么非常大的幺蛾子 ， 那也许还是有一部分人可以继续正常从容使用他们的电脑 ， 对吧 ？

**Rio** [50:38]
嗯哼 。

**吴涛** [50:39]
或者反过来 ，也许这个补丁的发布过程 ， 如果要减少补丁发布过程的漏 ， 呃 ， 危险性的话 ，也可以把发布的服务器散落在世界各地 ， 这样比较 ， 嗯 ，但是如果攻击者从补丁的源头源代码上黑它的话 ， 那还是无济于事 。

**Rio** [51:00]
对 ， 你只要有 spoof，single point of failure， 总是会有这种安全隐患出现 。

**吴涛** [51:07]
对 ， 没错 。

**Rio** [51:08]
所以没办法 。

**吴涛** [51:09]
嗯 。 我忽然想到一个 ， 就是我们公司在搞一个叫做 Spot Windows，single point of truth， 就是要把 ，因为我们公司有一个非常复杂的 ticket system， 呃 ， 那个面向用户有一套 ticket， 然后面向内部有一套 ticket， 呃 。

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

**吴涛** [51:28]
然后面向程序员又有一套 ticket， 呃 ， 这三个 ticket system 是彼此不通的 ， 然后有一个叫做 Spot 的运动 ， 就是要把所有的这个 ticket 汇总到同一个平台上， 然后只在一个 ticket 里面追踪所有整个项目的进程和文档啊什么的 ， 这个 Spot 是 。

**Rio** [51:49]
怎么做呢 ？

**吴涛** [51:50]
Single point of truth， 就是啊 ，其实就是把人手工啊 ， 把那个所有 ticket 汇总到一起 ， 是一个非常浩瀚的工程 ，但是已经做了三五周了 ， 还 ， 还可能只完成了一半吧 ，但我觉得这个 ， 这个 。

**Rio** [52:06]
那很快了呀 ， 三五周都完成了一半了 。

**吴涛** [52:09]
毕竟是小公司嘛 ， 你想 。 然后 。

**Rio** [52:12]
那倒是 。 Agile 一点 。

**吴涛** [52:14]
对 。 然后这个让我想到就是跟刚才的这个要避免单点失败的思路其实是背 ，是相反的 ， 就是信息要尽量集中起来 ，但是 。

**Rio** [52:26]
嗯哼 。

**吴涛** [52:27]
安全性要尽量分散开 。

**Rio** [52:30]
对 。 下一则不叫新闻哈 ， 下一则是讨论 ，是这个 El Capitan， 就是 OS X 10.11， 它出了也挺久了哈 ， 我们都装 ， 你装上了吧 ？

### SIP

**吴涛** [52:38]
当然装了 。

**Rio** [52:40]
对对对 ， 我也装 。 然后其中有一个对开发者来说 ， 对我们这种常经常水秘密行的人来说一个比较大的改动 ， 就是它的这人称叫做 rootless， 无根的特性 。

**吴涛** [52:51]
无根特性 。

**Rio** [52:52]
呃 ，也 ，也叫做 ， 呃 ，System Integrity Protection， 系统完整性保护 。 对 。

**吴涛** [52:59]
没错 。

**Rio** [52:59]
这个翻译的还是挺好的 。 呃 ， 简单来说呢 ， 就是在 OS X 10.11 里面默认情况下， 系统的一些根目录的东 ，是就是用户是不能改的 ， 哪怕是你用 sudo， 用 ， 用 root user 的时候也是不可能改动那些目录的里面的内容的 。

比如说这个根下面的 user， 根下面的 bin， 这些比较就是系统核心的应用 ， 你是没办法去改动它的 。

**吴涛** [53:27]
呃 ， 主要是四个地方吧 ，slash system，slash bin，slash user，slash asbin， 就是如果你对这个 POSIX 系统的标准命令树比较熟悉的话 ， 基本上就是 bin、user 和 asbin 三个被保护起来 。

然后 slash system 是 ， 呃 ，OS X 10 自由的一个 ， 一个 ， 一个放 system 文件的地方 。

**Rio** [53:49]
对对 。 呃 ， 所以其实这次我们上次就聊到过 ， 应该是在不是上期 ，是前几期吧 ，有一期聊到过这个事哈 。

不然吴涛你怎么看这个特性 ？

**吴涛** [54:00]
呃 ， 我觉得这是

苹果自把这个 slash user，slash local，slash bin 改名为 slash application 之后， 做了第二件好事 ， 目的就是防止用户轰掉自己的脚 。 嗯 。

**Rio** [54:22]
对 ， 你想 ， 你不小心来个 rrm， 空格 ， 斜杠 ， 回车 ， 或者是更凶狠一点 ，rm， 空格 ， 横线 ，rf， 空格 ， 斜杠 ， 回车 ， 你就挂了 。

**吴涛** [54:36]
对 。 呃 ，其实 。

**Rio** [54:38]
呃 ，以上两个语句请不要再加尝试 。

**吴涛** [54:42]
对 。

不要随便听那个功夫 。 不要再加听那个功夫了 。

**Rio** [54:48]
你用 10.11 就无所谓 。

**吴涛** [54:51]
呃 ， 对 。 然后这个其实归根结底原因还是早期 UNIX 的用户 ， 呃 ，在吃他们自己的狗粮的时候采用一种非常实用主义者的态度 ， 就是 ， 呃 ， 一个非常简单的原则 ， 就是 ， 呃 ， 用户只有两级 ， 一个是 ， 一个是非常普通的用户 ， 另外一个就是 root 用户 ， 然后 root 用户就是可以做一切事情 。

**Rio** [55:21]
嗯哼 。

**吴涛** [55:21]
句号 。 对 ， 就 ， 就没有再详细的层级了 。在那个没有 ACL 的时代 ， 没有什么 ， 呃 ， 一个复杂的窗口可以让你选这个用户可以干什么 ， 可以具体的做哪些的时代 ， 基本上这个文件的权限加上， 呃 ，root、 非 root 就是你能对系统做的最好的保护了 。

然后这一套东西被 ， 呃 ，OS X 10 搬过来之后， 呃 ， 基本上还是保持现状一直到现在 ，而绝大多数 ， 对于绝大多数用户来说 ， 呃 ，他们完全不会意识到这一点的 ，但是只要你稍微折腾一下这个系统 ， 啊 ， 你会觉得它还是相对来说比较 fragile， 就是如果你对 ， 呃 ， 使用 root 之后会干什么 ， 会 ， 会可能造成什么样的危害没有一个清醒的认识的话 ， 你还是很

容易轰掉自己的脚 。 而这个 。

**Rio** [56:21]
对 。

**吴涛** [56:21]
新的特性的话就是 ， 呃 ， 更进一步帮助用户来杜绝这一点 。

**Rio** [56:27]
对 。其实我觉得这个东 ， 这个特性最大的一个好处啊 ， 就像我在 24 期里面讨论过的叫做 immutable system 嘛 ， 就是不可变的系统 。

就什么意思呢 ？ 就是说整个系统的那些文件镜像都是不可变的 ， 就是你不可以修改它的 。 你唯一能做的 ， 比如说你系统升级的时候 ， 就是替换掉整个系统的镜像 ， 从而可以保证 ，因为类似有点像那个 Chrome OS 那种嘛 ， 就系统是整个本身是非常安全的 。

因为过去像 Windows 也好 ， 还是之前的这个 OS X 10 也好 ， 一个最稳 ， 最大的不安全因素刚才除了你说这个用户操 ， 呃 ， 就是不小心操作失误删掉了这个核心的文件导致系统无法使用之外， 这种可能也只有我们这种人才会干得出来哈 。

但是对于可普通用户来讲 ， 可能最重要的是是一个 ， 反而是一个安全性的考虑 ， 就是说一些恶意软件能不能通过修改你系统一些重要文件的方式 ， 隐藏在你的系统里面去 ， 比如说一开机就启动一个什么东西 ， 然后你又没有办法知道或者没有办法删除它 ， 对吧 ？

**吴涛** [57:29]
对 。

**Rio** [57:30]
但有了这个 ， 这个 SIP 的这个保护的话 ， 就可以杜绝这种事情发生嘛 。

**吴涛** [57:36]
对 。

**Rio** [57:36]
也可以说你某种程度上说 ， 呃 ， 没有通过沙盒机制实现了这个系统 ， 呃 ， 核心部件的安全性 。

**吴涛** [57:46]
没错 。 就是从今以后如果一个用户 ， 一个程序在要做什么的时候跳出来让你输入 root 密码 ，99% 的人， 包括 ， 包括程序员都会就是不加思索的直接输入自己的用户 ， 呃 ， 用户密码 ， 对吧 ？

但是在 SIP 出来之前 ， 这个其实是一个非常危险的举动 ，因为 ， 呃 。

**Rio** [58:08]
随时肯定给你种个什么木马 。

**吴涛** [58:10]
对 ， 你不知道它要干什么 ， 对吧 ？OS X 10 并不会告诉你它具体要干嘛 ，而且 OS X 10 自己也不知道它具体要干嘛 ， 它只是在说哦 ， 这个玩意要权限 ， 那 ， 那我问用户给不给权限吧 ？

用户说给 。

**Rio** [58:21]
对 。

**吴涛** [58:22]
然后我靠 ， 机器挂了 。

**Rio** [58:24]
对 。

**吴涛** [58:25]
对吧 ？ 这其实 Windows 上面也有这个问题 ， 就是 Windows 那个叫什么 ，UAF 还是叫什么的那个玩意儿 ，UAC。

**Rio** [58:30]
对对对对对 。

**吴涛** [58:31]
它跳出来 。

**Rio** [58:32]
应该是 。

**吴涛** [58:33]
Windows 比较 ， 就是怎么说 ， 比较啰嗦的一点 ，在这里它会有一个 details， 你可以点 ， 一点 details， 然后它会说什么 ， 这个程序它位于哪个 ， 呃 ， 呃 ， 路径之下， 想要干嘛 ， 或者它想要改什么 ， 它会跟你说一句 。

但是 。

**Rio** [58:50]
嗯哼 。

**吴涛** [58:50]
也许一开始你会点 ， 如果你是一个程序员的话 ， 或者如果你是一个 ， 呃 ， 会读所有 ， 会读用户协议里面每一句话的德国人的话 ， 你可能会去读这个里面到底写了什么 。

但是在一段时间之后， 你还是会就是 no brainer 的直接点一下允许 ， 对吧 ？

**Rio** [59:07]
对对对 。 所以这 ， 这就 ， 这是一个典型的技术 ， 呃 ， 技术 ， 呃 ， 思维没有考虑这个心理 ， 就是人的本性的一些东西的设计 ， 是一个非常失败的产品设计 。

**吴涛** [59:19]
没错 。

**Rio** [59:19]
但是干啥现在没什么更好的解决方案哈 。Anyway， 那个其实我有个很好 ， 我有个很大的问题就在于 ，在 OS X 10 有了这个 SIP 这个特性之后哈 ， 那我们还要这个 root 账号干嘛 ？

没什么用了呀 。

**吴涛** [59:32]
对 ， 所以应该搞一个 rootless 账号是吧 ？rootless 系统 。

**Rio** [59:36]
对 。 所以它应该是 rootless 系统 ，但是那还要 sudo 干嘛 ？

**吴涛** [59:42]
呃 ， 好问题 。

**Rio** [59:45]
对吧 ？ 因为其实你用那个 ， 你本来那个账号就只分那个叫做 administrator 和这个就是 normal user 嘛 ， 两种类型的账号 ， 对吧 ？

呃 ， 那 root 你反正也不能做什么 ， 呃 ，administrator 干不了的事情啊 ， 要它干 ， 要它有什么用呢 ？ 你就直接做一个这个普通的 ， 呃 ， 嗯 ， 账号系统 ， 然后不要 sudo 好了 。

**吴涛** [1:00:10]
嗯 ， 我觉得可能还是在多用户的场景之下有一定用途啊 。 就你可以 。

**Rio** [1:00:18]
多用户的情况下你用自己账号去做这个自己的事情啊 ，但你不需要 sudo 啊 。

**吴涛** [1:00:22]
你 sudo 之后才可以做 ， 才可以去管理别人文件啊 ， 如果你是一个管理员的话 。 就假如 。

**Rio** [1:00:28]
那我就 ， 我就 ， 我就说这个问题嘛 ， 就说 sudo 不是说你变成别的账号嘛 ， 你是变成 root 嘛 。

**吴涛** [1:00:34]
对 。

**Rio** [1:00:35]
啊 ， 当然 sudo 也可以变成别的 ， 就 ， 就 sudo as another user。

**吴涛** [1:00:38]
变成 username 嘛 。 对 。

**Rio** [1:00:39]
对对对 ，但基本上来说是 sudo as， 就不加参数的话是 sudo as root 嘛 ， 对吧 ？ 但我就问 ， 好 ， 我的问题就在于那 root 本身还有意义吗 ？

**吴涛** [1:00:50]
嗯 ， 所以像 Ubuntu 那样就完全不设 root 账号了 ？ 就再需要 。

**Rio** [1:00:56]
呃 ， 它也有 ， 它 ， 它也有 ， 只是说默认是 。

**吴涛** [1:00:58]
它没有一个 。

**Rio** [1:00:59]
不 ，不准登录的 root，不准登 。 然后你还是可以 sudo 成 root 的嘛 。 我就只是好奇 ，在有 SIP 的情况下， 要 root 账号本身有什么用 ？

好像没有什么用 。

**吴涛** [1:01:10]
Backward compatibility。

**Rio** [1:01:13]
有可能 ，因为毕竟它是 ， 它是一个 POSIX 系统 。

**吴涛** [1:01:15]
对 ， 没错 。

**Rio** [1:01:17]
呃 ， 然后还有一个挺好玩的问题 ， 就是说如果这个系统本身是 immutable 的话 ，其实可以有 ，有一个事情可以做 ， 就是节省空间嘛 。

因为你知道那个 OS X 10 还 ， 包括现在 Windows 也一样 ， 它是有一个叫做所谓的就是 recovery partition， 就是恢复 ， 恢复分区 。

对 ， 这四个字 。 啊 ， 恢复分区 。

**吴涛** [1:01:40]
恢复 。

**Rio** [1:01:40]
恢复 。

**吴涛** [1:01:41]
恢复 。

**Rio** [1:01:41]
恢复 。

**吴涛** [1:01:42]
恢复 。

**Rio** [1:01:42]
恢复 。

**吴涛** [1:01:42]
恢复 。

**Rio** [1:01:42]
恢复分区 。 恢复分区 。

**吴涛** [1:01:47]
嗯哼 。

**Rio** [1:01:48]
呃 ， 的一个主要作用就在于你的之前 ， 呃 ，在没有 SIP 的情况下， 你把自己脚自己脚轰掉 ， 删掉了这个根系统里面的重要文件之后， 你可以通过这个 recovery partition 把系统恢复到一个可以用的状态嘛 。

**吴涛** [1:02:02]
没错 。

**Rio** [1:02:02]
像前面它有一些可能系统的一些 ， 呃 ， 就核心的文件 ， 它是在那里还有一个备份的 ， 对吧 ？

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

**Rio** [1:02:08]
但如果这个本身是启用了这个 SIP， 就是系统的核心部件是不可修改的话 ，其实恢复 ， 恢复分区就没什么实际的意义了 。

因为你可以保证系统本 ， 本体是不被修改的嘛 。 然后就可以把那个恢复分区干掉 ， 或者至少重用一部分空间嘛 ， 通过那个就是 hard link 的方式 ， 对吧 ？

**吴涛** [1:02:30]
对 ， 这倒是 。

**Rio** [1:02:30]
就是 hard link 的 ， 哎 ，不对 ，hard link 好像不能跨区是吧 ？ 不能跨 partition。

**吴涛** [1:02:38]
应该是不 ， 哎 ， 你得先 mount 才能 hard link。

**Rio** [1:02:43]
我不太清楚这个具体实现方案是怎么样子啊 ，但是起码恢复分区是在正常情况下是在系统里面看不见的嘛 。

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

**Rio** [1:02:50]
所以我在想有没有办法就是同 ， 就是两个重用一下系统 ，因为毕竟恢复分区应该还是有个几个 G 大的 。

**吴涛** [1:02:56]
恢复分区不会被 ， 恢复分区默认不会被 mount 上， 所以其实在系统使用过程中它是看不到的 ， 它是不会被系统看到的 。

**Rio** [1:03:04]
那如果说这个系统本身是保证可以不被修改的 ， 还要那个 。

**吴涛** [1:03:07]
就不需要这个系统 。

**Rio** [1:03:08]
干嘛 ？ 对对 ， 我就在想这个问题啊 ，是不是就没有什么必要性了 ， 就把恢复分区里面的内容放回这个根系统里面就好了 。

**吴涛** [1:03:16]
嗯哼 。

**Rio** [1:03:17]
因为恢复分区一个最主要作用就是说如果那个 ， 还有一个就是软件升级的时候你可以直接从那安装系统嘛 。

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

**Rio** [1:03:24]
它现在好像也没有什么实际的意义 。

**吴涛** [1:03:26]
如果那个软件补丁挂掉的话 ， 就软件补丁是一个破掉了 ， 坏补丁的话 ， 那你可以通过恢复分区来恢复回来 。

**Rio** [1:03:36]
Anyway， 这还是一个挺值得 。

**吴涛** [1:03:37]
对 ， 比较 detail 的 ，但 。

**Rio** [1:03:39]
对 。

**吴涛** [1:03:41]
呃 ， 对 ， 当然在这个 SIP 的保护下面还是有几个地方是可以被改动的 ， 它们仍旧是系统的一部分 ， 只不过这部分就是系统特意留出来让你去改的 。

就如果你给 。

**Rio** [1:03:55]
User 那块嘛 。

**吴涛** [1:03:56]
对 ， 如果你给程序员 。

**Rio** [1:03:57]
是 user， 对 ，user 那块 。

**吴涛** [1:03:59]
呃 ，是 user local， 只有 user local。

**Rio** [1:04:02]
啊 ，user local， 对 ，sorry。

**吴涛** [1:04:03]
然后， 呃 。

**Rio** [1:04:05]
这其实要涉及到另外一个概念 ， 叫做这个 file system hierarchy standard， 对吧 ？

**吴涛** [1:04:10]
对 。

**Rio** [1:04:11]
呃 ， 这个其实一个很扯的事情 ， 就是说起码在 Linux 里面它是有这么一个规范的 ， 规范就是说这个整个系统的这些根目录下面这些文件树应该是长什么样 ， 然后各个目录里面放什么东西 。

比如说常见我们刚才提到像那个跟下 bing 啊 ， 跟下的 boot 啊 ， 跟下的 etc 啊 ，etcetera， 跟下这个 ， 呃 ，sbin 啊 ， 这些东西 。

**吴涛** [1:04:36]
Boot 是 standard 吗 ？ 不是吧 ？

**Rio** [1:04:40]
Boot 可能只有 Linux 才有吧 。

**吴涛** [1:04:42]
这个有一个 ，其实有一本书叫做 Linux Haters Manual， 如果各位有兴趣的话一定要去看一看 ， 里面对这个标准 ， 呃 ， 所谓的这个 ， 呃 ， 目录树标准大家吐槽 ， 就是虽然有这么一个标准存在 ， 它名字叫标准 ， 哎 ， 它名字叫标准吗 ？

不叫标准 ，但反正是 。

**Rio** [1:05:02]
是啊 ，是叫 standard。

**吴涛** [1:05:02]
有这么一个 standard 存在 ，但所有人都只是把它当做 reference 来用 ， 就是 。

**Rio** [1:05:07]
嗯哼 。

**吴涛** [1:05:08]
呃 ， 你只是模糊的知道这个目录大概可以拿来干什么 ，但现在的实际情况就是没有两个 ， 呃 ，Linux 发行版的这个目录树的形状是一模一样 。

这是一个非常 。

**Rio** [1:05:24]
但有些很扯的一些问题 ， 比如说像那个 ， 我问你哈 ， 你知不知道 bing 和 sbin 的区别是什么 ？

**吴涛** [1:05:31]
sbin 是 superbin， 就是只有 superuser 可以用的 bin。

**Rio** [1:05:34]
那它们两个哪些放哪些呢 ？ 这个 ， 这个界限是什么 ？

**吴涛** [1:05:38]
sbin 里面 ， 比如说

reboot 在 sbin 里面 。

**Rio** [1:05:44]
嗯哼 。

**吴涛** [1:05:44]
呃 ， 然后 bin 里面是什么 ，vi 啊之类的东西 。 就是 。

**Rio** [1:05:49]
OK。

**吴涛** [1:05:49]
就是不会 ，不会 ， 就是如果你用起来可能脚被轰掉的东西都在 sbin 里面 ， 理论上是这样的 ，但实际上也并不是这样的 。

就是 bin 里面还是有很多非常危险的工具 ，但 。 对 。

**Rio** [1:06:03]
然后再问你一个 ，bing 和 user bin 有什么区别 ？

**吴涛** [1:06:06]
呃 ，user bin 和 ， 你应该问 user bin 和 user local bin 有什么区别 ？

**Rio** [1:06:11]
OK。

**吴涛** [1:06:13]
呃 ，bin 的 ，bin 里面 ， 就是 /bin 里面应该是系统的核心工具 ，而 user/user/bin 里面则是 ， 就是在比较不那么 ，其实这个在 BSD 上比较分得清楚 ， 就是在那个 kernel space 里面的工具都在 ， 呃 ，/bin，在 user space 里面的都在 user/bin。

然后 user/。

**Rio** [1:06:38]
这个还是蛮好的区分 。

**吴涛** [1:06:39]
然后 user/local/bin 才是 ， 呃 ， 用户自己装的第三方应用程序应该去的地方 。

**Rio** [1:06:47]
对对 。

**吴涛** [1:06:47]
这如果你要去说的话 ，其实这个东西还是比较可以理解的 ，但是 。

**Rio** [1:06:52]
但是在执行的时候就会出现各种边界模糊的 。

**吴涛** [1:06:55]
对 ， 非常非常多的幺蛾子 。 就是 。

**Rio** [1:06:57]
然后， 然后就你完全不明白你这样分完之后有什么好处 。

**吴涛** [1:07:02]
呃

， 治愈了处女座 。

或者说最开始的设计者是个处女座 ， 然后他的这个设计导致了后来的所有的处女座的 Linux user 都转向了 Windows。

因为你会觉得我靠 ， 最开始这个 ， 你看我刚才说的这三个分类是不是很有逻辑啊 ？ 但是呢 ， 你去看任何一个实际系统 ， 你都会觉得我靠 ， 怎么每一个工具都 ， 呃 ， 每一个地方都放了一些不该放的那种工具 ， 对吧 ？

就 。

**Rio** [1:07:34]
对对对 。

**吴涛** [1:07:35]
乱七八糟的 。 这是一个阴谋 ， 这是 Linux 使用者希望处女座别用来 ， 别来用我们的系统 。

**Rio** [1:07:42]
不过早期它还是有它一定的这个客观的硬件基础的 ， 早期像 Linux 那些磁盘空间小嘛 ， 几百 K 的磁盘空间 。

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

**Rio** [1:07:51]
就 ， 就几兆的是很大的嘛 。 后来那个有些应用它就没有办法再 ， 就是第一个驱动 ，the first drive 放下所有的 bing 那些东西 。

**吴涛** [1:08:01]
对 。

**Rio** [1:08:02]
被迫把一些像后来才出现 user bin， 它可以挂载到不同的一个驱动 ， 那个磁盘驱动器上面去嘛 。

**吴涛** [1:08:08]
没错 。

**Rio** [1:08:08]
所以才导致今天这个局面 。 后来我的理解啊 ， 就是很后之后觉得说啊 ， 我们要这样来区分一下 ，因为过去是这样的 ， 那其实变得很奇怪 。

**吴涛** [1:08:17]
没错 。

**Rio** [1:08:18]
所以现在有一些这个发行 ， 就是 Linux 发行版 ，他们在做一个这个就是 unify 的趋势 ， 就是简化这个像刚才讲的这个 bing 和 user bin 的区别 ，因为觉得没什么必要了 ，因为现在磁盘空间都很大 ， 对吧 ？

**吴涛** [1:08:32]
其实 OS X 10 就是做了这件事情嘛 ， 它非常勇敢的把这个 bing 这种 ， 这种非常反二进制 ， 这种非常反正常人， 非常 geek 的名字 。

**Rio** [1:08:40]
嗯哼 。

**吴涛** [1:08:41]
呃 。

**Rio** [1:08:41]
换成了 applications。

**吴涛** [1:08:42]
Applications， 对吧 ？ 这已经是一个 。

**Rio** [1:08:44]
这个就更大的改变了 ，因为过去说我们像在 Linux 上你一个 ， 就一个应用嘛 ， 一个 software package， 它是要拆成好多好多 ， 呃 ， 小组件分到不同的地方的 。

比如说你这个 ， 呃 ， 可执行的 binary 的文件会放在 bing 或者 user bin 或者 local bin， 根据你安装的来源不同哈 。

**吴涛** [1:09:04]
没错 。

**Rio** [1:09:04]
然后它的这个文档会放在这个什么 man 里面 ，是什么 ？ 哪个目录来着 ？ 文档是 。

**吴涛** [1:09:11]
呃 ，user slash。

**Rio** [1:09:14]
Share 吧 ， 应该是 。

**吴涛** [1:09:15]
User share。

**Rio** [1:09:16]
Share man 里面之类的里面 。

**吴涛** [1:09:17]
对 ，user share。

**Rio** [1:09:18]
然后它的这个 ， 它的这个什么 log，log 文件啊 ， 又是像这个叫 var 的 log 里面 ， 然后它的一些其他配置文件是在那一 。

**吴涛** [1:09:27]
Etc。

**Rio** [1:09:28]
Etc 下面的 slash 什么一些目录里面 ， 就非常 ， 就分 ， 分得很散 。 像现在像 Debian 啊 ，Ubuntu 啊都是坚持这种 ， 这种做法嘛 。其实像那个 OS X 10 这种说我不要你们分这么散 ， 你一个应用就老老实实成为一个 package， 对吧 ？

一个 app。

**吴涛** [1:09:44]
Bundle。

**Rio** [1:09:44]
然后放在一个目录就是一个 bundle， 一个应用 ， 然后一个应用就一个 bundle 这样 。 但也有它的优劣 ， 就各有好处吧 。

就是说从应用性的角度来讲 ， 肯定可能觉得后一种会比较高级一点 。 那但是从这个系统重用和这个 ， 呃 ， 处女座的角度来看 ， 可能觉得前一种会 ， 呵呵 ， 好一些是吧 ？

**吴涛** [1:10:03]
对 。 你是按照它的用途分类呢 ， 还是按照它的使用的主题分类呢 ？

**Rio** [1:10:11]
呃 ，不过我其实我自己在 ， 就我自己在像那个 VPS 上面的做法也的 ，也是经过了很多变迁 。 最开始的时候可能遵循这个 ， 这个就是 Linux file system hierarchy standard 的方式 ， 会把一些自己编译的或者手工安装的软件放在比如说 user local 里面 ， 各个包里面是吧 ？bing 或者是 etc 里面去 。

呃 ，但其实后来发现 ， 哎 ， 就是不行 ， 太麻烦了 。 我就放到一个 ， 我就放那个 /opt， 就是 optional 嘛 ， 然后在每一个应用建一个目录 ， 把东西都塞在里面去 ， 这样发现管理起来是更加简单的 。

**吴涛** [1:10:48]
其实我刚才就想吐槽说我靠 ， 这个还有两个 ， 就我们之前说的这个 user bin，bin 和 user local bin 都还听起来像模像样 ， 这个 etc 和 opt 是什么鬼 ？

对吧 ？ 什么是 etc 和 optional 啊 ？ 我靠 ， 就难道 user local bin 里面的东西不是 optional 的吗 ？ 难道那个 ，而且难道什么 ， 呃 ， 对于 apache 的 configuration 不应该有一个 delegated location 吗 ？

那为什么要把它放在 etc 里面呢 ？ 就一种 what the fuck 的感觉 。

**Rio** [1:11:26]
对对 ， 整个这个 FHS 这套规约其实都很是一个 arbitrary 的东西 。

**吴涛** [1:11:31]
对 ， 它非常的 。

**Rio** [1:11:32]
说因为 ， 呃 ， 历史严格或者是这个过去遵守了这么多的约定俗成 ， 变成了这么一个很奇怪的没有什么逻辑和理由的怪胎 。

**吴涛** [1:11:42]
嗯 。

**Rio** [1:11:42]
就我还蛮支持很多 ， 现在很多发行版在做一些尝试 ， 把它这个东西尽量简化 ， 像这个说像 OS X 10 的方式去看齐嘛 。

**吴涛** [1:11:50]
没错 。 呃 ， 说回这个 El Capitan 的 SIP 啊 ， 它所给你的这个官方推荐的四个放你自己写的程序的地方是 ， 呃 ， 一个是 applications，slash applications， 就是 ， 就是根目录下面的那个 applications， 呃 ，而不是就是用户自己的目录下面的 applications。

**Rio** [1:12:17]
对 ， 这经常造成一个问题 ， 比如说你这个账号 ， 这个电脑不是你一个人用 ， 或者说你这个账号 ， 电脑有两个账号的话 。

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

**Rio** [1:12:24]
你会发现 。

**吴涛** [1:12:25]
你是安装给少数用户呢 ， 还是安装给所有用户差别 ？

**Rio** [1:12:29]
不是 ， 它没有 ， 没有这个选项 ， 你只能安装给这个 ， 呃 ， 我想 application， 就是 slash applications 里面的那些 bundle 只能有两种情况 ， 属于某一个安装时候它的账户和属于这个 root。

**吴涛** [1:12:45]
呃 ， 对 ，不 ， 我的意思是 ， 就是这个官方推荐的四个安装 app 的地方并不包括 ， 呃 ， 自己的 home 目录下面的 slash applications。

**Rio** [1:12:59]
就 ，但其实你是可以这么干的 。

**吴涛** [1:13:01]
对 ， 你是可以这么干的 ，但是你如果你这么干了的话 ， 你就 ， 你这个 app 就是只有当前用户可以用了 。

**Rio** [1:13:08]
啊 ，不 ， 你都可以用 ， 都可以 ， 都是可 ， 都是 ， 都是 global readable 的嘛 ， 只是说不可以删掉而已 。

**吴涛** [1:13:15]
啊 ，OK。

**Rio** [1:13:16]
对 。 呃 ，不 ， 这个 SIP 还有一个事 ， 就是对于我们这个用这个 homebrew 的这个用户来讲 ，有超级坑爹的事情 ， 就是说如果你之前用的 homebrew， 就你升级 ， 你是升级安装的 10.11，而不是覆盖安装的话 ， 你可能之前都有 user local 这个目录了嘛 。

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

**Rio** [1:13:32]
然后你可以把它权限改一下 。

**吴涛** [1:13:34]
不太可能出现问题 。

**Rio** [1:13:36]
对 ， 就不用 sudo 了 。 但如果你是全新安装的一个 10.11， 默认是没有 user local 这个目录的 。

**吴涛** [1:13:42]
对 ， 然后如果你建了的话 ， 系统会提示你不能建 。

**Rio** [1:13:45]
对 ， 然后它系统会提醒你说你不能修改这个 user。

**吴涛** [1:13:48]
对 。

**Rio** [1:13:48]
因为你 ， 你添加一个 user local 等于是修改 user 嘛 。

**吴涛** [1:13:51]
没错 。

**Rio** [1:13:51]
对吧 ？ 然后你就不得不很坑爹的说手工关掉这个 SIP 的特性 ， 把 user local 建好之后再把 SIP 打开 。

**吴涛** [1:14:00]
对 ， 然后这个过程 。

**Rio** [1:14:01]
这个过程还蛮坑的 。

**吴涛** [1:14:02]
两次重启动 。 但 ，但就还好吧 ， 你为了使用这样这么一个 full of awesomeness 的操作系统 ， 重启动两次还是可以接受 。

**Rio** [1:14:13]
不过他们有也有说 ， 就其实这个 homebrew 不用 ，不用装到 user local 里面也可以用 ， 只是说里面有些可能软件包它的默认的路径呢 ，是这么设置的 ， 它可能会假 ， 就会 ， 它会假设某一些依赖的这个软件也好 ， 这个 library 也好 ， 它是已经在 user local 里面的了 。

那这个时候你就比较坑 。 所以可能另外一种方式就是说我们去做一下这个清洁工作 ， 把那个 homebrew 里面的一些软件包的对这个 user local 的这个一个 hard coded 的依赖 ， 把它改成一个可配置的东西 ， 可能会好一点 。

**吴涛** [1:14:48]
Brew 是可以在编译期的时候告诉这个当前 app 的 brew 的那个路径在哪吧 。

**Rio** [1:14:58]
位置 。 对对 ，但但不是所有的那个 formula 都是这么 ， 都是都有这个灵活性嘛 。 所以才 ， 所以才说刚才要做那个清理工作嘛 ， 一个一个去 ， 去检查那些 formula 有没有这个就是 hard coded 的依赖嘛 。

**吴涛** [1:15:12]
没错 。 我的公司电脑上其实就是因为我没有那个 user local 的权限 ， 我就把 ， 呃 ，Linux brew， 你知道 Linux homebrew 有一个 Linux 的 branch 嘛 。

**Rio** [1:15:23]
啊 ？ 你为什么这么坑 ？

**吴涛** [1:15:24]
因为我没有 。

**Rio** [1:15:25]
我直接什么 ？

**吴涛** [1:15:26]
我没有 root 啊 。

**Rio** [1:15:27]
啊 ， 这么可怜 。

**吴涛** [1:15:29]
对 ， 然后就把他们 。

**Rio** [1:15:31]
一个 rootless 的人。

**吴涛** [1:15:33]
对 ， 把他们全都装在 dollar twd slash user slash local。

**Rio** [1:15:38]
OK。 能用吗 ？

**吴涛** [1:15:40]
可以啊 。

**Rio** [1:15:41]
OK。

**吴涛** [1:15:42]
还 OK 吧 ？

**Rio** [1:15:43]
嗯 。 好吧 ， 那个 SIP 的这个 ， 还有这个叫做 rootless 的特性说完了哈 。 下一则有点意思的事情是 ， 这算是难产吧 ， 千呼万唤始出来 ，Perl 6 发布了 。

**吴涛** [1:15:57]
还没出来呢 ，其实对 。

### Perl 6

**Rio** [1:15:58]
还没吗 ？ 还是 。

**吴涛** [1:15:59]
不是说已经发布了吗 ？ 优爆批发半遮面的状况说 ，是 ，其实事情是正确的 ， 新闻的说法应该是这样的 ：Larry Wall 在 ， 呃 ，10 月初的时候 ，10 月 8 号还是几号的时候 ， 终于说了一句 ：" 大家圣诞节的时候就可以收到 Perl 6 了 。"

**Rio** [1:16:19]
圣诞节是吧 ？ 那还快了 。

**吴涛** [1:16:20]
就他说了一个 release date 是今年圣诞节 。

**Rio** [1:16:23]
OK。

**吴涛** [1:16:24]
对 ， 所以 after。

**Rio** [1:16:26]
所以你期待这件事情吗 ？

**吴涛** [1:16:27]
哈哈哈 。 我也不知道 ， 就这就好像是有人 15 年前给你许了一个诺言 ， 然后今天终于要实现了 。

这感觉你已经没有感觉了 ， 可能 。

**Rio** [1:16:40]
已然不用了是吧 ？

**吴涛** [1:16:41]
对啊 ， 我记得那个时候还

2000 年的时候还对 Perl 这种 ， 这种有句话怎么说来着 ， 呃 ，PHP 是一种邪恶的语言 ，但它只是一个比较小的邪恶 ，因为它是一个 ， 呃 ， 诚实的业余爱好者写出来的 。

**Rio** [1:17:01]
嗯哼 。

**吴涛** [1:17:02]
对 ，PHP 是小恶 ，因为它只是一个 incompetent 的业余爱好者写出来的 。

**Rio** [1:17:09]
嗯哼 。

**吴涛** [1:17:10]
呃 ，Perl 是个大恶 ，因为它是一个技巧娴熟的 ，但是非常混蛋的专业程序员写出来的 。 哈哈哈 ，get the gag，OK？ 呃 ， 呃 ， 对 ， 就是这种感觉 ， 就是那个时候 Perl 还是一种 ，因为那个时候也不是写 ， 没有写过很多程序 ，也没有那么 ， 呃 ， 涉猎过很多语言 ， 总觉得 Perl 这种看起来像是

就连滚过键盘写出来的东西还挺有意思的 。 嗯 ， 那个时候觉得我靠 ，不知道 Perl 6 又会有什么了不起的东西 ， 对吧 ？

但是 15 年之后， 就 2000 年的时候就说我们要做 Perl 6， 就 2000 年的时候 Perl 6 的那个 specification 已经出来了 ， 还是已经开始 draft 了 ， 然后一直 15 年之后才说哦 ，Perl 6 的 1.0 可能要出来了 。

这是一种什么样的 ？

**Rio** [1:18:12]
不 ，其实 Perl 这个语言怎么说 ， 我觉得它感觉还挺复杂的 ， 就是基本上这么说吧 ， 就是它 ， 我觉得它是一种属于叫做

convenience over simplicity。

**吴涛** [1:18:24]
对 ， 就是 。

**Rio** [1:18:24]
的设计 。

**吴涛** [1:18:25]
所以 ， 呃 ，Perl 是一种易于写但不易于读的语言 。 就语言有些 ，有些语言容易读又容易写 ， 比如说 Python， 对吧 ？

有些语言容易读但是不容易写 ， 比如说 Pascal， 呃 ， 或者 Fortran，Fortran 不算容易读吧 ，也当然现在的观点 Fortran 不是非常容易读 。

然后有些语言是非常容易写 ，但是就是一周之后你在读的时候 ， 如果你之前没有写文档的话 ， 你就会想要回到一周之前杀了自己 。

**Rio** [1:18:59]
就会 what the fuck。

**吴涛** [1:19:00]
对 ， 这个就比如说 brainfuck 和 Perl， 就这种感觉 。

**Rio** [1:19:06]
哈哈哈 ， 想不到已经降到这么低的等级了 。

**吴涛** [1:19:08]
没错 。 嗯 。

**Rio** [1:19:10]
不 ，但是说到其实 Perl 这种语法的这种便利性还是挺激励了很多人哈 ， 可能 Ruby 算是集大成者吧 。

**吴涛** [1:19:18]
对 ，而且 Perl 其实也不是一个始作俑者 ，因为在 Perl 出现的时候 ， 什么 bash 啊之类的 ， 你 shell 啊 ， 已经有了很多就是非常奇怪的符号 ， 非常 ， 非常 ， 非常 ， 呃 ， 如果你不知道的话 ， 你就是猜不出来的 convention。

呃 ， 只不过 Perl 把它们都花样光大了 ，并且让 Perl 变成了曾几何时最流行的语言啊 。 就像那时候 Perl2000 年左右的 ， 甚至不用 2000 年，90 年左右的 Perl 的 hype 的程度 ， 就像现在的 Ruby， 可能比 Ruby 还要甚一些 。

呃 ， 对 ， 对 ， 对 。Back in the heyday of Perl， 就是你会觉得我靠 ，不会写两句 Perl 都不好意思跟人打招呼 。 那个时候还没有 PHP 呢 ， 就你写网页你要么用 C， 哈哈 ， 用 CO， 呃 ， 要么用 ， 呃 ，Perl， 呃 ， 直到后来才有什么 PHP 或者是 ASP 这种让 Amargo 都可以去写个网页的东西出现 。

然后 Perl 在那个时候也是 CGI 和 ， 和 ， 嗯 ， 一些比较常见的 daily automation 的最得力的工具 。 对 ， 当时我也是因为这个动机才去学的嘛 ， 就是觉得我靠 ， 这是一个 hacker 语言 。Which is true，still true， 只不过你看 15 年后， 当初的 Perl 的 hacker， 呃 ， 比如谁 ， 唐汉宗 ， 你知道这个人吗 ？

**Rio** [1:20:42]
不知道 。

**吴涛** [1:20:43]
唐汉宗是中文圈里面非常台湾人， 中文圈里面的对 Perl 非常有贡献的一个人 ，但是具体贡献是什么我不记得了 ，但你看 15 年过去 ， 唐汉宗已经 ， 唐汉宗已经变性了 ， 唐汉宗已经去做了变性手术 ， 改名叫唐彦了 ， 然后， 呃 ，Perl 还没有出来呢 。

就是这种感觉 ，you know，不仅沧海桑田 ， 连 ， 连人都 ， 人都已经 ， 对 ，不在 。

**Rio** [1:21:13]
所以 ， 所以 ， 所以 Perl6 就已经不算是一个新语言了哈 。

**吴涛** [1:21:16]
Perl6 绝 ，Perl 绝对不新啊 ，Perl 是 。

**Rio** [1:21:19]
Perl 6。

**吴涛** [1:21:20]
哦 ，Perl 6， 嗯 ， 好吧 ， 从这个 。

**Rio** [1:21:22]
因为它的 spec 已经出了那么久了 ， 大家都该激动过都激动过了嘛 。

**吴涛** [1:21:27]
对 ， 就好像一个怀胎 10 年的孩子生下来了 ， 你说它是一个婴儿呢 ， 还是 ， 还是说它是一个怪胎呢 。

**Rio** [1:21:36]
它是哪吒 。

**吴涛** [1:21:37]
哈哈哈 ，second quotation of the day。 嗯 。

**Rio** [1:21:44]
没错 。 好吧 ， 这个就过一下， 反正我们也不怎么用了 。 大家 。

**吴涛** [1:21:47]
对 ， 就是其实如果你写过 Perl， 我相信我们的听众里面可能没有什么人是不写着 Perl 长大的 ，但如果假设竟然有的话 ， 就是你年少时写的 Perl 在 Perl 6 里面 ， 很多地方都不一样了 。

然后那个 ， 比如说一些 Perl 6 里面 ，Perl 之前 Perl 里面一些比较奇怪的语义 ，在 Perl 里面 ，Perl 6 里面都被改过来了 ， 比如说什么 array 的 index， 嗯 ， 我不记得具体是什么 ， 就比如说那个 ， 我想想啊 ，Perl 里面 array 要用 at 做前缀 。

呃 ， 然后如果你要去 index 里面的一个 item 的时候 ， 你要把前缀变成 dollar，因为 ， 呃 ，Larry Wall 认为在你去 index， 呃 ，array 里面的一个单一的量的时候 ， 它是一个 scala， 所以要用 dollar。

就有很多这种 what the fuck 的地方在 Perl 6 里面都被修复了 ， 或者说 ， 对 ， 就已经姗姗来迟了 ， 让你觉得我靠 ， 这还 ， 还比较好理解 。

但除此之外， 我也不知道 ， 会有这个语言会重新兴起来吗 ？ 我觉得不太可能 。

**Rio** [1:23:06]
反正我对它其实个人没什么好感 ， 我觉得它的那个设计理念跟我的 ， 就很难接受吧 ， 只能说是 。

**吴涛** [1:23:14]
嗯 ，但 Perl 的好处就是有非常多的 oneliner， 呃 ， 就如果你去花一些时间投资在 Perl 上面的话 ， 还是比较值得的吧 ， 就 ， 呃 。

**Rio** [1:23:28]
问题就是在于你这个经常记不住到底在干嘛 。

**吴涛** [1:23:31]
对 ， 你就得去搜 ， 然后搜一个 Perl 6 的 oneliner，Perl 的 oneliner 就可以解决很多问题 ，而且在很多操作系统上面 ， 呃 ，不一定有 Ruby，但是基本上不会没有 Perl 这种感觉 。

**Rio** [1:23:45]
嗯哼 。

**吴涛** [1:23:47]
嗯 ， 差不多就这样吧 。

**Rio** [1:23:50]
那个 Perl 6 的新闻就到此为止了 ， 大家有兴趣的去 ， 去 ， 你们缅怀一下就去看一下 。

**吴涛** [1:23:56]
嗯 。

### 加密

**Rio** [1:23:56]
这个有一个 ， 下面这个新闻是个大事哈 ， 这个叫做 Let's Encrypt， 这个 ， 这个 ， 这个 ， 就像那个 API 吗 ， 还是一个服务 ， 它的那个证书已经被交叉的 ， 呃 ，sign，sign 叫 ， 中文叫什么 ， 签名过了 。

这可能要解释一下什么是 。

**吴涛** [1:24:16]
应该说已经 ， 已经被 trusted， 就是已经被信任了 。

**Rio** [1:24:20]
主流的浏览器 trust， 就是信任了 。

**吴涛** [1:24:23]
对 。

**Rio** [1:24:24]
呃 ， 这怎么说 ， 先说 Let's Encrypt 是个啥吧 ，Let's Encrypt 是一个这个一套服务 ， 一套开源的软件和服务吧 。

**吴涛** [1:24:36]
嗯 。

**Rio** [1:24:36]
它可以使得你部署到这个客户端 ， 到你的服务器之后， 它自动帮你去配置这个服务器的这个 SSL 证书 。

**吴涛** [1:24:44]
对 。

**Rio** [1:24:45]
和那个 ， 包括这个证书的签发呀 ， 这个 key 的这个生成啊 ， 还有包括这个证书的过期 ， 自动升级啊 ， 自动这个重 ， 自动重新 ， 重新申请吧 ， 这个整套的流程都完了 。

可能这样说起来比较奇怪哈 ， 为什么会有这种东西存在 。

**吴涛** [1:25:06]
其实你说一开始要解释存在一个什么样的问题 ， 或者它的愿景是什么 。

**Rio** [1:25:10]
对 ， 对 ， 对 。

**吴涛** [1:25:11]
就其实问题也 ，也 ，也是一两句话就可以概括了 ， 就是 ， 呃 ， 现在大家上的网 ， 每一个请求如果你不做特殊要求的话 ， 都是明信片 ， 就 HTTP 的协议是明文的 ， 任何就是你 ， 你在和别的电脑谈话的时候 ， 你和那个电脑之间的任何内容都可以被中间经历的所有电脑看到 。

而 HTTPS 的 ， 或者 Let's Encrypt 的愿景就是希望把所有这些明信片都变成信件 ， 就是默认上面是要盖一层信封的 ， 如果你不去拆的话 ， 或者说如果你不实检进的话 ， 你是看不到内容的 。

这愿景就是这个 。 但是此前存在一个什么问题呢 ， 就是 ， 呃 ， 作为一个普通的站长来说 ， 你要去 ， 呃 ， 首先得花钱 ， 这是最终最大的一个门槛 。

**Rio** [1:26:04]
嗯 ，但也不一定 ，也有免费的 。

**吴涛** [1:26:07]
对 ，但是你在买那个服务的时候是花了钱的 ， 对吧 ？ 如果你用一个免费空间的话 ， 它是 ， 呃 。

**Rio** [1:26:14]
不是 ，不是 ， 证书也有免费的 ，但是限制比较多 。

**吴涛** [1:26:17]
但是前提是你得去买一个什么 domain 之类的东西 ， 对吧 ？

**Rio** [1:26:22]
呃 ，不 ， 签发证书跟 domain。

**吴涛** [1:26:25]
如果你没有独立 domain 的话 ， 你怎么对 ？

**Rio** [1:26:28]
不 ， 这个没有 ， 这个没有区别啊 ， 你跟 ， 你跟 ， 你 ， 你用 HTTP 也要 ， 你要买 domain 的嘛 ， 你要买域名的嘛 。

**吴涛** [1:26:35]
呃 。

**Rio** [1:26:35]
首先最大问题就是说 ， 大部分的这个 SSL 证书就是好用的 ， 或者说这个兼容性比较好的 ， 会比较贵 。

**吴涛** [1:26:44]
对 。

**Rio** [1:26:44]
而且呢 ， 可能这个跟 ， 跟域名还有点关系 ， 比如说 ， 呃 ， 现在免费的东西一般都是叫做 ， 叫做单一域名的证书嘛 ， 比如说 IPN 的话 ， 你就只能买 ， 比如 3w.ipn.li 这个域名的证书 ， 它可能我可以免费 ，但我想说 ， 比如说我要 xxx， 就是前面 xxx 可以替换成任意的 .ipn.li 的域名都可以用的话 ， 这种叫做 wildcard 证书的话 ， 一年就得好几十刀到几百刀 ， 根据你这个 ，

这个验证的程度不一样吧 。

**吴涛** [1:27:11]
所以还是有经济原因 。

**Rio** [1:27:13]
然后就 ， 对 ， 价钱倒好说了哈 ， 最主要的是这个 。

**吴涛** [1:27:17]
配置起来非常麻烦 。

**Rio** [1:27:18]
非常 ， 非常复杂 ，因为首先申请这个数字证书 ， 你要做几件事情 ， 首先你得验证你是这个域名的实际控制人， 就是他叫做几件事了 ， 比如说有些比较简单的 ，他可以说你在域名上放一个什么特殊的指定文件 ，他可以验证你的 ，也可以 ，但一般来说就是给你的这个 ， 比如说刚才给这个 webmaster@ 这个域名的一个邮箱 ，他发一封这个信 ， 然后信里面有一个 code， 你那个

code， 你收到那个 code 证明说你确实是这个域名的实际控制者 ，因为你是 webmaster 这个账号嘛 。

**吴涛** [1:27:52]
嗯哼 。

**Rio** [1:27:53]
但这整个人就是挺坑爹的 ， 完了之后你还得生成这个 ， 这个相应的公钥和私钥 。

**吴涛** [1:27:59]
对 。

**Rio** [1:27:59]
然后把这个 。

**吴涛** [1:28:00]
要敲一大堆命令 。

**Rio** [1:28:01]
然后用那个 ， 用那个 ， 用你的这个私钥去生成一个 ， 哎 ， 这公钥还是 。

**吴涛** [1:28:07]
Request。

**Rio** [1:28:08]
生成一个这个 。

**吴涛** [1:28:09]
用一个 。

**Rio** [1:28:09]
就是 certificate request。

**吴涛** [1:28:10]
公钥去生成一个 certification request。

**Rio** [1:28:13]
对 ， 对 ， 然后证明 ， 然后你再把这个 certificate request 发给你的这个叫做这个签发你的这个 SSL 证书的这个机构 。

**吴涛** [1:28:20]
对 。

**Rio** [1:28:20]
叫做一般叫做 CA 嘛 ， 呃 ， 然后它会根据你的情况再给你签一份证书回来 ， 然后你再把证书打包到你一个 ， 一个正确的格式 ， 然后让配置你的这个 web 浏览 ，web 那个服务器 web server 去 load 这个证书 ， 然后使得当人家访问 443 端口的时候能够正确的读取到这个证书 。

这过程相当繁琐和麻烦 ，因为我 ， 我维护那个 IPN 旗下的 ， 现在比如说我们十档节目 ， 每档节目都有自己的网 ， 这个独立的域名 ， 然后， 呃 ，IPN 自己还有一个域名 ， 那就有 11 个域名了 ， 对吧 ？

**吴涛** [1:28:56]
嗯哼 。

**Rio** [1:28:57]
然后 11 个域名里面我得 。

**吴涛** [1:28:58]
还有 Opal for us。

**Rio** [1:29:00]
啊 ， 对 ， 对 ， 那个也是 ， 还有 ， 还有我个人自己的 ， 对吧 ？

**吴涛** [1:29:03]
嗯 。

**Rio** [1:29:03]
就十几 ， 一大 ， 一大堆的域名 ， 我得要去每一个都得走这么一个流程 ， 这过程是很坑爹的 。

**吴涛** [1:29:09]
Really? Mr. Encryption。

**Rio** [1:29:12]
所以其实如果能有一套自动化的工具 ， 或者这个工具量也好 ， 还是一个服务也好 ， 能够把这个过程减 ， 呃 ， 减轻一下负担 ，其实蛮好的 。

**吴涛** [1:29:20]
并且免费 。

**Rio** [1:29:21]
嗯 ， 那对 ， 如果能免费就更好了 。

**吴涛** [1:29:24]
是吧 ？

**Rio** [1:29:24]
Let's Encrypt 就是干这么一件事 。

**吴涛** [1:29:27]
所以简而言之 ，Let's Encrypt 就相当于 Home Brew 之于 ， 呃 ，Let's Encrypt 之于 SSL， 就相当于 Home Brew 之于下载 config make，make install 这一段 。

嗯 ， 是一件 。

**Rio** [1:29:40]
对 ， 这个 ， 这个比喻还挺好 。

**吴涛** [1:29:41]
是一件非常好的事情 。 呃 ， 然后 10 月 19 号的时候 ，Let's Encrypt 的更正书终于被 ， 呃 ， 所有浏览器所 ， 所信任了 。

所以这是一个 。

**Rio** [1:29:53]
你这个过程讲起来还比较复杂哈 。

**吴涛** [1:29:55]
对 ，Let's Encrypt 已经有几年了 ， 四五年了吧 ， 至少 。

**Rio** [1:29:59]
没有吧 ， 它是去年才开始做的吧 。

**吴涛** [1:30:02]
What?

**Rio** [1:30:03]
OK。

**吴涛** [1:30:04]
对 ， 这个东西的主要的幕后推手是 Mozilla 和 ， 呃 。

**Rio** [1:30:10]
嗯 ， 看下是谁来着 。

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

**Rio** [1:30:13]
Current sponsors：Mozilla， 然后这个全球最大的 ， 呃 ，CDN Akamai， 然后还有 。

**吴涛** [1:30:20]
EFF。

**Rio** [1:30:21]
思科 ， 还有 EFF， 对 。 还有 University of Michigan。

**吴涛** [1:30:26]
What?

**Rio** [1:30:26]
我怎么没看到 。

**吴涛** [1:30:27]
这是 founder。

**Rio** [1:30:28]
啊 ， 密歇根州立大学 。

**吴涛** [1:30:30]
密歇根州立大学 ， 对 。

**Rio** [1:30:32]
嗯 ，有点意思 。 呃 ， 就有了这套系统之后， 刚才我说的那些繁琐的事情就可以解决了 ，但是有一个问题就回到刚才我们讲的 spoof，single point of failure， 如果谁把 Let's Encrypt 黑了 ， 所有用了这个 Let's Encrypt 服务的人都 ， 全都傻逼了 。

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

**Rio** [1:30:53]
那其实还有一点就是说这个 ， 我们这个 SSL 这个用的这个 CA 体系啊 ， 就是这个 Certificate Authority 这个体系是相当脆弱的 。

呃 ，因为现在就是说那个 ， 这可能要先扯一下犊子 ， 就是这个 CA 体系到底是怎么一回事 。

**吴涛** [1:31:08]
嗯哼 。

**Rio** [1:31:09]
简单来说就是说你在你的这个电脑里面 ， 操作系统也好 ， 浏览器也好 ， 它有一堆默认的这种所谓的叫 CA 证书 。

**吴涛** [1:31:15]
对 。

**Rio** [1:31:15]
这些 CA 证书本身是 ， 就是一个 ， 怎么说来的 ， 呃 ， 它本身是受信任的 ，但是它的信任是跟 ，是 ，是因为你操作系统的这个发行商觉得认为这些系统 ， 这些 CA 机构是可以信赖的 ， 然后这些证 ， 这些 CA 机构再签发二级证书 ， 呃 ， 然后这些证书再去签发三级证书给我们这些这个实际的域名的所有人， 然后就等于是他们这些 CA 证书证明我们是 ， 假

如说是 IPN.li 这个域名的实际所有者 ， 然后这个证书是合 ， 合 ， 合法的 。 但是问题在于哪里呢 ？ 就 CA 证书和 CA 证书之间是没有功能区隔的 ， 就是说 ， 呃 ，CA 就是这个 ， 这个 Certificate Authority 机构 A， 这个 ， 呃 ， 就是 A 签发者是可以签发 IPN.li 这个证书的 ，B 签发者也可以签发 IPN.li 的证书 。

那么你会发现 ， 就是说在浏览器或者操作系统内置的大概二三十个 ， 还是三四十个这种 CA 证书里面 ，有任何一家这个 CA 证书的 ， 这个根证书的这个持有的机构出了问题 ， 那么全世界的这个 SSL 证书都不靠 ， 都会有 ， 都不会不靠谱 。

**吴涛** [1:32:36]
对 ， 比如说各位 ， 呃 ， 非常喜欢删除的这个 CNIC 的证书 。

**Rio** [1:32:43]
对 。

**吴涛** [1:32:44]
是一个 ， 是一个臭名昭著的流氓证书 。 呃 ， 或者说 ， 对 ， 流氓的国度嘛 ， 当然是流氓的证书 。

**Rio** [1:32:52]
就 ， 就变成了一个木桶原理了 。

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

**Rio** [1:32:53]
比如说你 ， 你 ， 你所有的 CA 证书组成一块 ， 一块 ， 一个圆筒 ， 然后你的安全就是里面的水 ， 那你的安全性完全取决于里面最 ， 最水 ， 就最差的那一块 ， 那个证 ， 那个的安全性怎么样 。其实这整个体系是非常脆弱的 。

**吴涛** [1:33:08]
对 ， 就是它是本 ， 它本质上还是一个信任链的问题 ， 就是 ， 呃 ， 好吧 ， 你 ， 你弄了一台电脑在上面做一些计算 ， 然后计算结果我要去信任你的话 ， 呃 ， 我 ， 我要依赖谁呢 ？

就是只能依赖你的机构 ， 那你的机构要去找谁来为你背书呢 ？ 可能要去找一个主管部门 ， 然后主管部门又要去找谁背书呢 ？

然后这样一层一层追究 ， 追究 ， 追根结底还是要回到这个国家机器上面 ， 对吧 ？ 但是如果国家机器本身就是不可信任的 ， 那 ， 那你这个系统不就是完蛋了吗 ？

所以 。

**Rio** [1:33:41]
对 ，而且它这个完蛋还不 ，不在于 ， 这个危害还不仅仅在于这点 ， 就是说如果假设哈 ， 如果你说这个中国的国家机构不可信 ， 那你只影响中国的证书都还好 ，是吧 ？

**吴涛** [1:33:52]
对 ， 当然因为它是 。

**Rio** [1:33:53]
或者说中国的证书不可信会影响到所有其他国家的所有网站 。

**吴涛** [1:33:57]
Cross domain 的问题 ， 这是非常非常 。

**Rio** [1:33:59]
对 ， 对 ， 对 ， 然后最近这个 ， 这个赛门铁克就出了这么一个幺蛾子 。 呃 ， 就是那个 Google 发现赛门铁克签发了一堆根本不存在的域名的这个证书 ， 或者是 ， 呃 ， 就是就不该他签发的那些 ， 这些证书他也在签发了 。

**吴涛** [1:34:20]
嗯哼 。

**Rio** [1:34:20]
这就会有问题了嘛 。

**吴涛** [1:34:22]
对 ， 这就好像一个 ， 一个 ， 一个外交官在卖护照一样 ， 是一个非常恐怖的事情 。

**Rio** [1:34:28]
对 ， 然后在 Google 跟那个赛门铁克提出这个问题之后， 赛门铁克做了一次这个审计 ， 就是 security audit， 然后说解决了这 ， 这个大概几 ， 好像是五个吧 ， 这个错误签发的证书之后 。

**吴涛** [1:34:41]
嗯哼 ，Google 说没有 。

**Rio** [1:34:43]
Google 又 ，Google 说又发现 ， 我操 ，不止五个啊 。

**吴涛** [1:34:46]
对 。

**Rio** [1:34:47]
差不多有一百多个这个证书是你错误 ， 那个赛门铁克这个 ， 这个签发有问题的 。 这就 ， 这个就把 Google 惹毛了 ，因为 ， 因为 Google 这个 ， 这么 ， 这个 ， 这种级别的服务很容易被这种来搞嘛 ， 对吧 ？

所以他对这事情是很介 ， 很介意的 。 所以后来他们做了一个完全的审计 ， 发现一共有一百六十几个证书被 ， 被错误的签发了 ， 还有两千五 ， 将近两千五百个证书给签发给了那些根本就没有被注册过的域名 ， 就完全是有问题的嘛 。

就说明这个赛门铁克内部的这个安全管理那个流程是一塌糊涂的 。

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

**Rio** [1:35:23]
然后这个直 ， 直就那个于是 Google 就毫不留情的直接打脸了 ， 就这个警告这个赛门铁克 ， 然后要求赛门铁克今后， 呃 ， 就从明年 2010 年 6 月 1 号开始的所有的签发过程都必须公开 。

**吴涛** [1:35:37]
嗯哼 。

**Rio** [1:35:38]
就这个是一个非常严格的 ， 非常严厉的一个要求吧 。

**吴涛** [1:35:42]
惩罚 。

**Rio** [1:35:43]
对 ， 一个惩罚 ， 就说这个你这个赛门铁克更不靠谱 ， 就还有更有可能就是说如果你这种事情再发生 ， 就直接吊销你的这个 CA 的权限了 ， 对吧 ？

**吴涛** [1:35:51]
没错 。

**Rio** [1:35:51]
就好像我们在这个我们的系统里面默默的关掉了 CNIC 的这个 CA 证书一样 ， 对吧 ？

**吴涛** [1:35:58]
嗯哼 。

**Rio** [1:35:58]
是基于一些这个基础的信任的问题 。

**吴涛** [1:36:01]
对 。

**Rio** [1:36:03]
哎 ， 所以其实就很多人都在思考怎么去能够干掉这个 CA， 就是 Certificate Authority 这套 ， 这个 ， 就 CA 这套系统嘛 ，因为确实太脆弱了 。

**吴涛** [1:36:12]
嗯 。

**Rio** [1:36:13]
而且在现在这种就是政治环境又不太稳定的情况下哈 ，是很容易被拿来搞别的事情的 。

**吴涛** [1:36:22]
嗯 ， 保护环境是越来越恶劣了 ， 简直 。

**Rio** [1:36:25]
是 ， 所以暂时还没有什么更好的这个替代的 ， 就简单好用的这个替代的方法吧 。

**吴涛** [1:36:33]
嗯 。

**Rio** [1:36:33]
所以目前为止也就只能说 ， 呃 ， 首先是要加快这 HTTPS 的普及 ， 然后就说 ， 呃 ， 想一些替代的方法 ， 比如说这个叫 Certificate pinning 啊 ， 就是证书 ， 就固定证书吧 ， 就是说我之前访问过一次之后， 我就在浏览器里面记住这个网站的证书 ， 下次访问这个网站的时候 ， 如果发现它证书改变了 ， 就会提醒用户说 ， 哎 ， 这个网站的证书突然改了 。

因为一般情况下这个是 ， 呃 ， 就不应该这样嘛 ， 对吧 ？ 不 ，不会出现证书突然改变的这种情况吧 ？

如果出现 ， 你就要小心是什么问题 。

**吴涛** [1:37:05]
就像 SSH 的那个 fingerprint 一样 。

**Rio** [1:37:08]
对 ， 对 ， 对 ，有点那个意思 。

**吴涛** [1:37:10]
嗯哼 。

**Rio** [1:37:10]
然后还有就是加强这个审计了 ， 比如说 Google 那个 Cloudflare 软件里面 ， 它会向 Google 发送这些证书的一些 ， 一些记录嘛 ， 然后 Google 可以从通过一些技术方法去分析是不是某一个网站的证书被恶意替换了 ， 对吧 ？

**吴涛** [1:37:26]
对 。

**Rio** [1:37:28]
但是总的来说 ， 我觉得这套体系还是不靠谱的 。 那么一些替代的方案 ， 比如说像我们叫 Web of Trust 嘛 ， 就是说如果我们不信任任何这个 ， 个 ，不信任单一这个根证书的情况下， 我们怎么去构建一个更加可靠的系统去解决这个问题 ，但这个 ， 这工程还是蛮复杂的 ， 我也不是这个专业人士哈 ， 那就不瞎 BB 了 。

**吴涛** [1:37:52]
就留给各位听众作为今天的作业题吧 。

**Rio** [1:37:55]
脑 ， 脑力练习 ， 对吧 ？ 如何在不信任任何人的情况下开始信任所有人。

**吴涛** [1:38:00]
内核恐慌之脑洞大开的环节 。

**Rio** [1:38:04]
我感觉我们的那个邮箱要被要爆了 。

**吴涛** [1:38:07]
其实可以做一个 IMDb 或者这个 Rotten Tomato for websites。

**Rio** [1:38:14]
那你怎么保证这个 ， 啊 ， 这个 website 它本身的可 ， 这个可信度 ？

**吴涛** [1:38:17]
就由它 ，由这个 ， 这个 Rotten Tomato for websites 来颁发证书啊 。

**Rio** [1:38:24]
那我就说你 ， 那你怎么保证这个 ， 这个 ， 这个站点本身的这个安全性呢 ？ 谁来颁发它自己的证书 ？

**吴涛** [1:38:30]
去中心化 。

**Rio** [1:38:31]
它不能自己 。

**吴涛** [1:38:31]
哈哈哈 。

**Rio** [1:38:32]
我也不知道怎么办 。 你还是要有一个 ， 你说我们讲 Web of Trust， 你始终是要有一个起点的 ， 对吧 ？

**吴涛** [1:38:39]
可以利用比特币类似的原理 ， 就是每一台计算机要生成一个信任 ， 信任 token 的时候都必须依赖所有其他的计算机 ， 然后你 ， 你在 。

**Rio** [1:38:50]
对 ， 这 ， 这 ， 这也是一个突破的点嘛 ，但是现在大家就觉得 ， 首先一个问题就是说这个延迟太高了 ，因为比特币的那个传播 ， 对 ， 它不是实时的嘛 。

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

**Rio** [1:39:00]
就怎么能 ， 怎么去协调这件事情还是挺头痛的 。

**吴涛** [1:39:04]
嗯 。

**Rio** [1:39:06]
Anyway， 这个就算是加点作业吧 。

**吴涛** [1:39:08]
对 。

**Rio** [1:39:08]
我们今天扯犊子也就扯到这里差不多了 。 嗯 ， 节目时间好像比往前短了一些 ，但是 。

**吴涛** [1:39:14]
Yay。

**Rio** [1:39:15]
我们 ， 我们也没有什么主题可以再讲了 。

**吴涛** [1:39:18]
哈哈哈 ， 对 ， 所以刚才的 moral of the story 就是审计是重要的 ， 这个 ， 呃 ， 信任是重要的 ， 安全问题是重要的 。

**Rio** [1:39:28]
对 。其实审计的重要性我还是 ，因为我女朋友是个审计嘛 ， 所以才还是在最近两年才意识到的 。此前我总觉得这个企业的自律或者是 ， 呃 ， 这个由外部事务 ， 审计事务所的他律是一个可有可无的东西 ，但就和女朋友在一起之后才发现 ， 我靠 ， 原来这玩意儿真的是 。

**吴涛** [1:39:51]
然而并非如此 。

**Rio** [1:39:52]
对 ， 非常非常重要的一个东西 。

**吴涛** [1:39:55]
没错 。

**Rio** [1:39:56]
我们所有人的身家性命其实都压在比如说 Google 或者是 ， 呃 ， 微软的内部审计上 。 所以向内部审计致敬一下， 还有外部审计 。

### 结语

**吴涛** [1:40:08]
哈哈哈 。

**Rio** [1:40:09]
好吧 。 感谢收听 IPN Podcast 网络旗下的 IT 技术主题娱乐节目 《 内核恐慌 》。 我们号称 hardcore，但是也没有什么干货 。

想听的人听 ，不想听的人就别听 。 您可以为本节目捐款 ， 捐款地址是 colonelpanic.fm/donate。 捐款金额随意 ， 只要是 8 的正整数就可以 。

**吴涛** [1:40:34]
正整数倍 。

**Rio** [1:40:35]
呃 ， 对 ， 只要是 8 的正整数倍就可以 。 捐款不会给你带来什么 ，不捐也不会让你失去什么 。 我们的口号是 No hard feelings。

如果你有任何反馈 ， 可以发电子邮件到 colonelpanic@ipn.li。 同时也欢迎您收听 IPN 旗下其他几档节目 《IT 公论 》《 未知道 》《 太一来了 》《 流行通信 》《Hi Story》《 印象 》《 无次元 》。

**吴涛** [1:41:03]
印象 ， 印象 ， 印象 ， 无次元 ， 无次元 ， 无次元 。 上次我们在跟 Livia 做节目的时候 ， 最后我说我只念了 7 个 ， 然后问说 ， 呃 ， 我念完了吗 ？

然后 Rio 说念完了 ， 然后漏了这个 。

**Rio** [1:41:18]
太多了哈 。

**吴涛** [1:41:18]
对 。

**Rio** [1:41:19]
还有 Lana 是新开的这个薄雾纸和玄美 。 我们下期节目再会 。

**吴涛** [1:41:24]
我们下期节目再会 。 拜拜 。

---

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