开场0:00
欢迎收听 IPN Podcast, 网络旗下的 IT 技术主题娱乐节目 《 内核恐慌 》。 我们号称 "hardcore",但谁没有干货 。 想听的人听 ,不想听的人就别听 。
本节目的网址是 kernelpanic.fm, 我们推荐大家使用 Podcast 客户端订阅节目 。 详情请访问 ipn.li/faq。 欢迎为本节目捐款 , 捐款地址是 kernelpanic.fm/donate。
捐款金额随意 , 只要是 8 的正整数倍都可以 。 捐款不会为你带来什么 ,不捐也不会让你失去什么 。
我们的口号是 : That's the thing about people who think they hate computers. What they really hate is lousy programmers.
逆向海淘0:39
哎我问你个问题啊 , 你在德国嘛 。
嗯哼 。
然后如果你买一些那种我们叫做 Gadgets, 就是这些小的硬件产品啊 , 比如各种一些就是不是那种太主流的 、 比较小众的电子产品的时候 , 你一般会去哪里买 ?
嗯 , 亚马逊吧 。
亚马逊德国 ?
基本上是亚马逊德国 , 就取决于你说这个德语一词时间 ,Gegeizt, 取决于你说这个东西的稀缺程度 , 或者说它的小众程度 。
那亚马逊上可能没有卖的 ,但绝大部分时候 , 如果你是在某一个广告上看到的话 , 那基本上亚马逊应该有卖 。
但比如说如果是比如说像类似于这种 Kickstarter 上面那种提到的 。
那就非常难 。 什么 Indiegogo、Kickstarter, 这上面都想卖的东西都是非常难的 。 就是当然也取决于这个开源项目 , 就是这个 Kickstart 的项目的地点 。
比如说前一阵子有一个自行车还是什么东西 , 它的那个是西班牙的 , 那欧洲来说发货就还可以 。
但是如果 。
就是欧洲本土的都还好是吧 ?
对 , 如果在美国的话就非常非常那个了 。
那你平时比如说有没有买什么小的需求 , 一些小电子产品是在亚马逊德国上买不到的 ?
呃其实还挺多的 , 就比如说尤其是一些 Arduino 方面的板 , 开发板什么的 , 这个其实亚马逊上还是挺难 、 挺少见的 。
即便有的话可能也比较贵 。 那所以还有一些替代方案 ,但就没有什么特别好的可以一下子说得上名字来的网站 。
那么现在我给你隆重推荐一个很好的去处 。
噔噔噔噔噔 。
AliExpress。
啊天呐 , 好吧 。
这个是我后来发现的一个挺好玩的 , 我现在后面会说为什么会发现这个东西啊 。 嗯 , 就 AliExpress 是那个阿里巴巴的面向那种海外的 , 你可以类似于它像就是阿里面向外国人的淘宝 。
对 , 它是一个就像逆向 、 逆 、 呃 reverse proxy 一样 , 它是一个逆向淘宝 , 逆向海淘应该说 。
对 ,因为我发现很多那种电子产品嘛 , 现在深圳那边都很多在那边生产组装的嘛 , 对吧 ? 但是你像在国外的话 , 你买它有些很多那种就不知名厂牌的 ,但是就比较廉价的 , 就性价比比较高的那些电子产品其实还挺难的 。
然后后来发现这个 AliExpress 上面卖的还挺多的 , 然后我就悲剧了 ,因为 AliExpress 是不卖到中国的 。
哎真的吗 ? 所以 AliExpress 上面这些商品到底是 。
是出口 。
OK。
就是它那些卖家啊 ,是只是从中国 , 就是深圳那些地方 , 它往国外卖 ,但是它一般不发往国内 。
OK。
就是 。
就是宁 、 宁 、 宁卖洋鬼子不予加盟嘛 。
因为国内的话你就直接上淘宝买嘛 , 一般是这样 。
但是那为那你为什么会有这个 AliExpress 上买到的东西国内买不到的困 、 困扰呢 ?
呃就是个 selection 的问题嘛 , 就是我发现有些东西 AliExpress 上面卖的 , 它的那个就卖相啊 , 还有价格啊 , 还有那些选择都竟然比淘宝上高 。
这或许说明了一些问题 。
这个好像是个挺常见的状况吧 , 就是有些制造业的也是 , 如果这个东西是出口的话 , 那它的什么 QA 啊 , 什么包装啊 , 都要比给国内的好一点 。
对对 ,而且有个很 、 很那个的问题 , 就是你 、 你 、 你如果你上两个网站对比一下, 就 AliExpress 和淘宝 , 就那个同样同类商品的介绍 , 它整个页面的这个设计也好 , 还有它的这个啊 , 就是就是商品的介绍 , 它会 AliExpress 上面会干净很多 。
嗯 。
就淘宝上你知道吗 , 就是那种乱七八糟的那些店家自己发的那种 , 就是很花里胡哨的东西 , 对吧 ?
但是同样的卖家 , 你 、 你如果你再找它在 AliExpress 上面卖的 , 或者是同类产品的话 , 它整个页面会 、 会 、 会 、 会就做的会非常的干净 。
呃我觉得 AliExpress 上面的东西很有可能是有一个统一的阿里内部的 。
不是不是 , 它也 、 它也是那些卖家自己去 、 去发 、 发布的 。
哦真的吗 ? 为什么我觉得好像上面英文都还蛮正宗的 。
对 , 所以我 、 我是我后来留意到这个事情 ,是我那天在某一个 、 一个这种一个什么机缘巧合的关系吧 , 看到有一堆人在那里开讲座 , 然后讲座内容是如何在啊亚马逊美国上做这个营销 。
就他们会专门去培训那些啊 , 就会有一个什么讲师一样的人去培训那些 、 那些国内的卖家在亚马逊上去做营销 , 怎么去设计那些折扣点啊 , 什么怎么选择那个啊 , 这个这个推 、 推销的时间点啊那些 ,而且还包括这个页面的设计啊 , 那个那个产品的描述啊 ,他们都非常专业的 。
这个我发现就跟淘宝上那些卖家的那种特洛伊人感觉就业这是什么来的 , 就专业的和业余的区别吧 。
OK, 人家国际纵队嘛 , 国际纵队需要培训 。
对对对 , 所以所以我就觉得有时候觉得挺尴尬的 , 就是虽然说这个货源都是来自这里 , 都是可能是同样的一拨人在做这个事情 ,但是因为卖去的地方不同 ,他那个做事的态度完全不一样 。
是吧 ,是尴尬还是悲哀啊 ? 我觉得好像挺悲哀的 。
呃这个怎么说 , 可能市场就这样吧 。 你我 、 我现在这段时间就主观色彩其实挺少的 。 你我会去想这个为什么会是这么一种结果 , 它是什么样的一种客观因素造成的 , 那可能就是市场就是这样哦 , 对吧 ?
比如同样的一个页面 , 那花里胡哨的淘宝那种那种商品介绍 , 大家也应该有印象吧 , 看到过哈 , 你会觉得哎 , 就这样习以为常了 , 对吧 ?
但是你把那个拿去给那种什么洋人们用 ,他们就就不就不待见了这个吧 ,他就觉得你这个不靠谱 ,不带 、 不带见人买了 , 你逼得你要去做 , 要做的那种非常设计的好一点的 , 对吧 ?
就是有时候你也不能怪那些什么中国公司啊不给力 ,其实他们还是怎么说来的 , 就是这是被市场选择的结果嘛 , 就是你市场本身你都不在乎这种事情 , 那他为什么要在乎这种事情 ?
这个是鸡生蛋 、 蛋生鸡的问题吧 , 就是因为这个烂 , 就是设不重视设计的产品太多了 , 所以呃市场产生了一种不重视设计的 。
不有有可能 ,有可能是这么一个结果 , 就是说这个中国市场消费者太多了 , 对吧 ? 总有就绝大多数的人还是 。
不管你做的多烂都有人买是吧 ?
对 , 没错 , 只要你东西够便宜 , 然后就是甚至不一定要便宜 , 你知道吧 ? 现在我发现那个情况就是有时候你东西不便宜 ,但是还是有人会买 ,因为你那个差异可能也就是 5% 左右 , 对吧 ?
然后觉得那我就能找到买了就算了 ,他也不在乎那些东西 ,他不会去说进行一个选择 。 而且市场足够大嘛 , 总会有生存下来的空间 。
那如果说你市场是现在只有 1/10, 那你肯定要尽要想办法去呃想更多的办法去说怎么去提高自己的竞争力 , 可能会想提高产品的设计啊 , 提高这个介绍页面的这个 landing page 的这个设计感啊之类的 , 对吧 ?
所以呃就是有有什么样的市场就有什么样的商家吧 。
我觉得另外一方面也有可能就是中国的设计成本太低了 , 就你请一个设计师 , 你可能给他的你期待或给他的薪水是非常非常低的 , 然后在这种情况下其实是没有什么好设计能够拿出来 。
而且很多就是产品的拥有者会觉得自己是产品拥有者 , 所以对整个的设计有最终决定权 , 然后就 。
但是我觉得不是这样的 ,因为我后来仔细比较过 , 像这个 AliExpress 上面的卖的价钱和这个在淘宝上卖的同类商品的价钱 ,其实很多时候淘宝是要更贵的 。
也就是说他卖同样东西 ,他在淘宝上理论上他应该赚的更多 ,因为你算一下 。
我不是说他针对专门针对 AliExpress 会有这个设计团队 , 我只是说 in general 就是有有在中国做一个产品的话 ,他有可能不是会那么重视 ,不管是包装设计也好 , 还是文案设计也好 , 或者而且很多时候这个卖东西的人根本就不是商品的经销商 。
所以 。
但是那个 AliExpress 上那些卖家 ,他也一般也不是这个商品经销商 ,他也只是说做一个渠道而已 。 你懂我意思吗 ?
就是同两个东西 , 它同样就是经营者和产品都是同一拨人 、 同一拨产品 , 只是说因为市场面 、 面对的市场不一样 ,他们做出来东西的结果是完全不同 。
嗯 , 你觉得这是一种什么样的 。
就是成熟市场不成熟市场嘛 。
但我会觉得此时会就有些听众的脑海里面会飘来呃六个字 , 呃中国使用习惯 , 或者是 whatever 的类似的一个一个概念 , 就是呃在中国就必须是这样的 , 就它不是一个就你刚才的这个陈述有价值判断在里面 ,但是呃他会觉得中国市场就是这样的 ,不是因为不成熟 ,而是因为就中国有这个审美习惯 , 或者是 。
你是说中国人的审美习惯就是更偏 、 偏向于丑吗 ? 我觉得不是这样子的 。
不是 , 我觉得有一个很 、 很著名 、 很有意思的说法 , 就是不是有一句话说自然界厌恶真空嘛 , 呃就中国用户厌恶版面的空白 , 所以有 、 有一点缝隙一定要填字上去 , 对吧 ?
然后然后呃因为因为所有的地方都充斥着所有所有样式广告 ,不管这这其实网络上的设计也是呃从这个现实生活是也是对现实生活那种现实生活那种投射 。
假如你在一个呃连什么公车的背板 , 或者是那个发动机的整流罩上都要贴广告的国家 , 那你很有可能是习惯了在网页上面也见缝插针到处飘广告的 。
但但我说的不是广告的这个这种区别 , 只是说在它的文案上面啊 。
它只是它只是一个方面嘛 , 对吧 ? 然后再那转换到文案上面呢 , 就是说能扯多少就扯多少 ,不管扯那东西是不是真的 , 然后或者说呃有些卖家会把某一段字加粗 , 然后加下划线 , 然后写体啊什么的 , 这其实都是都是同一种同一种习惯的各个方面 , 对吧 ?
你不会去因为你没有在一个简洁直接的呃现实世界里面生存过 , 呃你会觉得网上这种到处乌烟瘴气的这个状况也是可以忍受 , 或者说乃至你觉得默认就应该是这样 。
那你这个的假设是他说他们没有对这个进行一个我们叫做 A/B test 嘛 , 就对比对比判断 , 就是说他他只是说呃呃就刚你说那句话的暗含的假设 , 就是所有的就大多数卖家是随波逐流的 , 看别人怎么写他也怎么写 , 就他没有对这个他写某一档东西对他的这个销售情况做任何一种测试 , 看哪种效果更好 。
但是我想说的就是其实这些人从我那天我在那里培训他们 ,他们那个现场我看了大概半个小时吧 , 就他们是对这种东西就是这帮卖东西的人啊 ,但我不知道他是不是淘宝上也是有这种培训 ,但是起码他在亚马逊上去卖的时候 ,他会去考虑很多这种数据的这个结果 ,他会去做测试 。
OK, 我觉得能够用心去参加这种培训班的人应该都不会 。
不屑去做调包 。
就就不会蠢到会随波逐流吧 , 就是有些人我觉得这是可能也是商业头脑一部分吧 , 就有些人会去想说怎么样做怎么样写才能让我的东西卖的好一点 , 呃或者说每个人都会去想 ,但是有些人呢这个搞出来的东西就比较比较高感应的 , 就
哈哈 , 就没有那么就没有那么 low 吧 , 我觉得 。
那我我就在想就说中像淘宝这种面向 , 这主要面向中国市场的这种平台什么时候能变得不说别的了哈 , 就说能变得像 AliExpress 上面那种相对来说没有那么呃五种颜色的文字在同一段话里面出现这种情况 。
但但也不是说 AliExpress 做的多好 ,但只是说相比来看同一家集团下面的两个同类的产品 , 然后就仅仅是因为面向的市场不一样 , 它就有如此大的这种变化 。
对 , 我觉得我给 AliExpress 最高的的一个评价就是它非常不像中国网站 ,但是我已经有一阵子没上它了 。 你当时的印象应该是这样 。
所以如果你最近有什么买什么小电子产品的需求 , 你可以上链接试试 , 我觉得应该会有惊喜 。
呃其实其实这么说吧 , 就是我最近或者我一段时间以来都没有什么特别需要从觉得这个东西只有国内才能买到的的欲望或者是感觉 。
嗯哼 , 呃可能唯一比较觉得有时候会想买的就是书 , 嗯有基本上而且不是不是国内的书这个概念 ,而是中文书 , 就是不管是什么台湾金石堂 、 博克莱之类的 , 还是中国的各种各样的新书 ,在这这个需求是比较比较严重的 。
那这个没办法 , 你这个你在德国不是这个语言环境都不一样 , 那这个自然是很难的 。
但是其他的非就是非这种怎么说非精神消费品就好像没有什么特别需要从国内买的啊 ,而且或者说国内买不是特别便宜 , 除非呃是我们在讨论水货或者是呃山寨品 。
哈哈哈 , 就水水货这个东西是是这样的 , 就是你要是觉你要是说你你要是说好在国内买 , 比如说一个日本的什么 Sony RX100 相机 , 特别在国内特别便宜 , 那我无话可说 , 它是水货对吧 ?
那中国你要是说我通过偷逃税的方式来获得更便宜的东西是正义的话 , 那我觉得也也没有什么可以讨论的 。
但是反过来说呃到底有什么东西是在国内合法渠道可以得获得 , 我在德国没有办法买到 , 好像没有特别多 。
就在物质产品上面应该是差不多 , 毕竟你是发达国家嘛 , 对吧 ?
对 ,而反过来哎对 , 这个我要说那个乐天商城你知道吗 ? 就是日本的那个 。
乐天不是韩国的吗 ?
乐天是日本的哥哥 。
是吗 ?OK, 我一直记不上 。
但乐 AliExpress 的 UI 要比乐天商城好 。
哈哈哈哈 , 这个还日本这个日本的这个电商不发达 , 这个是这个应该是很多人知道的吧 。
不 ,但日本的很多日日少 , 至少日本至少在我眼里面是是一个比较注重设计的 。
但这点我觉得其实这个对我这个我也是也是挺意外的 ,但是其实我们看的现象来看 , 日本在这个就是互联网这一块其实挺落后的 , 就是在相比它在发达国家里面的地位来讲 。
嗯 , 好吧 。
就跟它那个独特的这种地理人口环境 。
日本日本有点像一个电商的科摩多岛 。
台湾也是这样子啊 。
台湾还好啊 。
台湾跟日本在这方面其实很非常像 , 它都面临着这个 ,因为它本身那种就是电 , 就是前电商时代的时候它已经很发达了 。
就是没有一个惰性 ,有一个因为 。
就它没有足够大的这个市场的增量去使得这些这些厂商去愿意在上面做投入嘛 , 所以你看到很多这种日本 、 台湾的这种网站也好 , 还有这个电商也好 , 就感觉是中国可能 2000 年九或者 90 年代那种设计 , 感觉就就很很稀松平常 。
等等 , 我们说的是呃电商网站的设计 , 还是说电商模式是整体 。
就整体来说都是这样 , 就网站设计可能只是一种比较集中的表象吧 。
好吧 , 我觉得可能还是体量问题 , 就是这两个国家都太小了 , 然后嗯你不管欧洲 、 美洲 、 欧欧洲 、 美国还是中国 , 都是一个比较 。
大国 。
比较比较对 ,有有足够大的啊 。 好了 , 我们不说这些了 , 这这些话题实在是太 IT 公论了 , 我们 。
哈哈哈 , 没有 ,其实我说到这个刚才讲了那么一大堆 , 就是其实一就是有个挺巧的事 , 最近那个 Coding Horror 那个叫那叫什么 Jeff 对吧 ?
滑板车电脑17:01
对 ,Jeff Atwood。
对 ,Jeff Atwood,他是那个 Stack Overflow 的那个创始人。
创始人。
他在他的那个个人博客上写了一篇文章 , 叫做 《The Scooter Computer》。Scooter 是一个就是那个小朋友玩的一个这东西叫什么 ?
对 , 这里是指滑板车 ,不是指那个速可达 。
对 , 就是滑板车是那种哈 , 就是有一个小杆子前面 , 对 , 下面有个小平板 , 然后俩轮子踩在上面 , 然后蹬地的 。
对对对 , 然后他讲了一个一个什么事 ,他就说就说他想买一个这个这个小型的这种呃就 VPN 网关 , 简单来说是这样 。
然后过去他是刷了一台那个华硕的那个 RTN 16 的那个路由器 , 刷那个应该是 OpenWrt 吧 , 还有 Tomato, 刷了那个 Tomato 之后 ,他就用一个 VPN 就连到他的那个机房里面去嘛 ,因为他们机房他们还挺挺传统的 ,他们不是用那个云服务 ,他们还是用那个叫做 Colocation,Colocation 中文叫什么来的 , 就是自己买服务器放到一个呃一个机房的一个架子里面 , 租租空间 , 对 , 主机托管这一块 。
因为我他所以他有一个 VPN 的这个需求 , 然后后来他想那个那个 VPN 太慢了嘛 , 那个 OpenSSL 版本比较低 , 然后他想换一个就是叫做 FourBlue Linux, 就是他以前跑的是一个经典版的 Linux, 觉得不太行 , 版本也很旧 ,也不方便嘛 ,他想换一个全功能的这个 Linux 服务器 , 就想跑一个那个 X86 的处理器 , 然后找了半天 , 跑去那个 AliExpress 那边找了一个那种没有没有厂牌的盒子 , 然后那
个一个就那种之前我们提到过一个叫做 Intel 的叫 NUC 嘛 ,Intel 的叫做 Next Unit of Computing, 就是一个大概是 5 寸乘以 5 寸的一个小方盒 , 然后里面有个超小的那种叫做 Mini ITX 主板 , 然后要整合一个 I3 或者是 I5 的这种 CPU。
对 , 可以挂在显示器后面啊什么的 。
对对对 , 可以 , 它有一个它刚好刚好是那个叫做 Vista Mount 那个大小标准 , 可以挂显示器后面嘛 , 就那种所谓的小电脑嘛 , 然后他就买了这么从 AliExpress 上面就买了这么一个小电脑 , 然后它的配置其实我们看下其实还挺挺惊人的 , 这小电脑 350 刀吧 ,他说然后是一个 I5 的啊 ,5200 Broadwell 双核四线程的 2.2G 的 CPU,16 兆的 DDR3 内存 ,128 兆的这个 M.2 接口的 SSD, 然后有两个这个千
兆的 Realtek 8168 的网口 , 还有这个显示输出 , 这无所谓了 ,因为它是用来做那个服务器嘛 , 只要有网卡就可以了 。
然后然后这个事情就刚好就就就触到我了 ,因为我之前我最近一直在找一台这种家里的这种呃网关 ,因为我之前都用路由器跑那些东西嘛 , 就是我有一个非常小的那个 TP-Link 的 WR703N 的那个小盒子 , 它当时买 99 块钱嘛 , 很多年前买的 , 它是一个 400 兆赫兹的 ACERUS 的处理器 , 然后它是可以刷了那个 OpenWrt 之后, 可以跑那个呃什么 DNS 啊 ,DHCP 啊 , 还有一些什么呃
VPN 的服务嘛 。
嗯哼 。
但是那个东西性能实在太差了 ,因为只有只有 32 兆的内存对吧 , 然后 400 兆赫兹的这个是 MIPS 的处理器吧 , 应该是 MIPS 架构的 , 就就就很弱嘛 , 就跑就就跑一个什么 10 兆左右的带宽 , 差不多就把 CPU 撑满了 , 就 VPN 哈 , 然后但是你我家的那个宽带是那光纤是百兆的嘛 , 所以说经常就就不够用 , 然后我想后来那个 wire 啊 ,不是是那个是那个
Ars Technica 上面有一就 1 月份的时候 ,他们发了篇文章 , 就比较了一个还算不错的路由器吧 , 几款有一款是那个 Buffalo 的 , 就是这个跟 G300N 跟我那个呃 TP-Link 那个 703N 是差不多性能的 , 和一个就是相对来说好一点的啊 , 呃这个 Nexus 的算是中档的路由器吧 , 还有一个现在目前来说比较高端的 Netgear 的那个 Nighthawk X6 的那个路由器 , 然后比较了他们的这个路由的性能
, 你发现其实你看那张表哈 , 它在那个呃就是低连低并发数的时候 , 就是可能比如说 1,000 个连接以下的时候 , 就就就 100 兆的话 , 你看这几个都还没问题 ,但是如果你放到一个千兆的环境里面去 , 你可以发现明显就就那个那些中低端的路由器基本上就没有什么性能可言了 , 就是不说百兆了 , 可能 10 兆都很悬 , 就高并发的情况下啊 ,但是你看
一下那个 X86 的 , 就是它跑了一个非常旧的一个 AviBridge 的一个一个 X86 的处理器吧 , 还是 Atom 的 , 就是还不是那种什么 I3 I5 哈 , 它的那个路由的性能就是做 NAT 嘛 , 对吧 , 那个 network 就是地址转换的一个性能其实是非常非常高的 , 它在高并发的情况下也能达到可能差不多七八百兆的这种一种性能 , 然后我就就勾起我了那个什么啊 , 就那个想买一个 。
就是被人安利了 。
被人种草了 。
没错 。
对对对 ,因为因为因为就是路由性能其实很多人都觉得呃就这个东西是挺难去对于普通消费者很难去度量的 , 只是说相对说我们这种比较要求比较高 , 然后也挺挑剔的这种这种人才会去琢磨这个事 。
我觉得主要是对于普通消费者来说 , 这个东西它能够给自己带来什么样的注意 , 好像特别的模糊 , 或者说不是那么直观 。
主要是感主要是感受呃感他们感受得到 , 就是可能家里网慢啊 , 特别是有时候可能你觉得网慢 ,但是你找不到原因 , 你不知道为什么 。
会直接说直接 blame 运营商说我靠这个联通的网太慢 , 或者是沃达丰的网太慢了 , 对吧 ,但对对对 , 会说会去说这会不会是我路由器比较差什么的 。
对对对 。 所以就很多人就说一直在就是被这个 , 就其实可能现在很多这个中国在搞光纤接入普及嘛 , 很多家里装的很快的那光纤 , 那其实并没有用的多少 , 特别是家里人稍微多一点 , 或者设备稍微多一点的时候哈 , 还有有些人在家里瞎 BT 的时候 , 那个就就完全不能用了 。
但就就就路由性能其实是一个挺那个的 , 挺难去普通消费者挺难判断的一个话题 。 现在国内不是也在炒各种什么智能路由也在卖吗 ?
但是他们性能其实都不咋地啊 , 就刚才我们看哪怕是那种所谓 1,000 多块钱的所谓高端的家用路由器 ,在那种高带宽的情况下其实也挺糟糕的 。
所以我就一直在想搞一个这种 X86 的盒子嘛 , 然后我就去看那个又在国内嘛 , 就京东上买的话其实还是呃我经常买京东还挺挺方便的 , 淘宝上就经常觉得有时候不是很放心哈 , 然后如果退货也挺麻烦的 , 京东上面很多就可以 7 天 。
淘宝退货很麻烦 。
就是因为他小卖家嘛 , 就是你也得跟他去商量那些乱七八糟的事情 ,但是如果你在京东上买那个什么京东自营的话 , 你挑好那个什么就 7 天无理由退货的话 , 你根本不用讲 ,他直接来上门取 ,他也不会问你任何问题 , 对吧 ?
和亚马逊一样的 。
对对对对对 , 所以我在京东上买了很多这种东西 , 就就去看 , 就发现京东上面买那种就大品牌的那些就热卖款型还可以 ,但是一到遇到这种需求量比较小众的产品 , 就就挺糟糕的了 。
嗯哼 。
啊 , 然后我就想去买这种盒子嘛 ,因为如果你要做路由的话 , 那个盒子它最好是有两个这个这个就是网口 , 对吧 ?
因为一个插那个光纤的猫嘛 , 光猫嘛 , 一个插那个那边的路由器 , 呃那边的那个无线交换机或者怎么样 , 你就不用你就不用用那个无线路由做它的那个路由功能 ,因为反正不好嘛 , 对 , 你可以直接用那个小电脑做路由功能 , 然后那个无线就只做这个无线的转发和那个交换机的功能嘛 。
嗯哼 。
然后发现就是还这种品牌的带双双网卡的这种小电脑盒子还挺挺少的 。
呃 , 我觉得这个这种电脑被设计出来的时候 , 可能其设计者就会说这个东西应该能够拿来被人当路由 , 否则他不会 , 应该我觉得不会专门设计出两个网卡网卡接口来 。
就是你说就是就小众吧 , 哈哈哈 。
呃 , 对 , 好 , 你继续 。
对 , 所以所以当时我就想就想各种办法嘛 , 就我也想了其他一些方法 , 就是如果说你只有 ,因为还有一个问题 , 就是说你去淘宝上买那些品 ,他都没有品牌嘛 , 你也不知道质量怎么样 , 对吧 ?
有时候什么不稳定啊 , 你也挺 。
可是 AliExpress 不就是相当于你在 AliExpress 上买和在淘宝上卖有什么差别吗 ?
对 , 这就是牵涉到另外一个问题了 , 就就你会发现他们那个 AliExpress 上面同样的东西 ,他给就是因为那个页面的问题 , 你会觉得这东西卖的东西更会更靠谱一点 。
What? 所以这完全是一个卖相给你带来的可靠性的印象差异 。
对 , 就是卖相不够好嘛 , 淘宝上的卖相就很差嘛 。
好吧 。
对 。
It's your say so。
对 ,而且就产品的选择上面也其实你可以看到它的用心程度完全不一样的 , 比如说 AliExpress 上面它同样卖这个 , 它是一个无风扇的啊 , 就是全个那个机身是一个铝合金的壳子 , 背就是呃背动散热的嘛 , 你在那个淘宝上找就很难找得着 , 然后找出来的时候你都不知道到底能不能散热 。
还是因为卖相嘛 。
是对 ,AliExpress 上他就会讲的很清楚这个怎么样 , 然后刚好那个那个 Jeff 他那篇文章也他买了 ,他也拍拍了这个照片给我看嘛 , 然后他还拆开一步一步一拆 , 我觉得哎 , 这个卖相还挺好的 , 虽然说做工也不怎么那个 , 就外观也不怎么漂亮 ,但是起码你觉得他做工还是挺挺挺扎实的 , 很厚的一个铝合金的盒子 , 对吧 ?
然后该有的都有 。
扎实好像是 unibody。
对对对对 , 乍一看好像是那个苹果那种 unibody 的盒子一样 , 对吧 ? 还还挺不错的 。Anyway, 又扯回这个这个这篇文章里面讲的那个东西啊 。
对 。
对 , 你看发现你 350 刀大概多少钱 , 呃 ,2,000 多吧 , 人民币就可以买个性能相当相当赞的这个这个最新一款的这个处理那个那个小电脑了 , 然后来当那个路由器的话其实还还挺不错的 。
对 , 这我其实有点不明白 , 就是所谓 scooter computer, 它跟 scooter 的共共同点到底在哪 ?
小嘛 。
那除了小 , 那为什么不叫 whatever mini computer, 或者是嗯 , 像一个小的东西呢 ?
不是 , 这个有个比喻嘛 , 这个之前不是那个谁来的 , 谁说是一个 bicycle 来的 。
啊 ,OK, 乔布斯嘛 。
对对 , 好像是对 ,他是乔布斯 。 对 , 呃 , 对 , 乔布斯说 , 乔布斯说那个 PC 是一个是一个 truck 嘛 , 是一个卡车嘛 , 然后那些小电脑是是一个 ,不是 , 那句话原话什么 , 呃 ,computer is a bicycle for your mind, 对吧 ?
对 ,mind bicycle。
计算机 , 就个人电脑是你那个头脑的一个自行车 , 可以帮你辅助你的功能 。
嗯 , 对 ,是 ,但但其实乔布斯这话我也没有特别理解 , 就为什么是自行车呢 ? 因为你你需要用自己的脑力去驱动它吗 ?
还是 。
嗯 , 还是说他你还得弄点什么吧 ?
他说这句话的意思还是只是说这个东西它呃比你走路要快 。
嗯哼 。
就有有时候这个这这些这些东西是有点不是细思极恐 ,但有点越想越想不明白的一一一种说法 ,不管是所谓 scooter computer 还是还是呃 computer is the bicycle for your mind。
嗯哼 。Anyway, 就说说回这个 scooter 这件事情啊 ,scooter 是个什么东西 ?scooter 就是一个非常原始的 , 它可能比自行车还原始一点 , 比如说自行车还有什么链条 , 还有什么这种 , 就不说变速吧 , 就是那种最最简单的自行车 , 它还是有 , 它结构还相对来说比较复杂嘛 , 对吧 ?
呃 , 结构简单肯定 ,但是原始到未必 ,因为自行车毕竟是一个 18 世纪就出现的东西 ,在那之前是不可能用 scooter 的 。
就不 ,但是你如果你比较一个现代的这个自行车 , 现代的一个 scooter, 你觉得哪个更简单一点 ?
那的确不 , 我刚才说了 , 就是 scooter 的确更简单一点 , 它但它并不一定更原始 ,you know。
OK。
对 。
对对对 , 呃 , 所所以这个 scooter 的 computer 这个就是这个叫什么脚 , 叫什么 , 你刚才说 scooter 中文叫什么来着 ?
滑板车 。
滑板车是吧 ? 对 , 就滑板车这种东西就是那种你可以买一个 , 然后你需要用一下的时候就用一下, 然后你不需要用的时候就是就是那个一个专专用设备吧 , 你可以这么说 。
我觉得 scooter 的隐喻可能是在这儿 , 就是 scooter 它是一个供你短途代步的工具 , 就是有有这么一段距离 , 我记得 Jeff Atwood 在文章里面写应该是一到三英里 。
对 , 然后要求地面是平的 , 水泥路面 。
对 ,5 公里之内的距离 , 你可能走过去太远 , 就可能要一个小时, 走人的步行速度应该是每小时 5 公里吧 , 你可能走 5 公里要一个小时 ,但是如果你踩滑板车的话 , 那可能就啊 , 那 5 公里还是有点太长 ,因为 3.3 公里由骑车上班都觉得稍微有点远 ,但是滑板车应该是可以接受的 。Anyway, 滑板车比如说在展会里面 , 就是这个展会可能特别大 , 呃 ,有十几个展厅 , 然后你可能需要
从一端到另一端 , 每天就比如说你是在展厅的工作人员 , 你可能每天往返几十次 ,在这种情况下走路是非常不经济的 ,但是你又没办法开车 , 那用一个滑板车其实是非常非常方便的 。
啊 , 所所以很多展展会的工作人员都会用滑板车 ,而且滑板车它的优点是不像汉明鞋或者滑板那样 , 你需要学 , 需要应用技巧 , 滑板车基本上你你学只需要半分钟就可以学会 。
对 ,而且它那个就是就是 hop on hop off 都比较简单了 。
对 , 所以 。
你这个汉明鞋你还得穿和脱一下, 对吧 ?
对 , 这个隐喻可能就是这个小的电脑用起来简单 , 然后就就不用你麻烦你去专门攒一台 PC 来搞这种事情 , 只要买过来就可以了 。
对 ,但我想说的是哈 ,他虽然说这个 scooter scooter 这个 computer 非常的这个就是好用哈 ,但其实它一点也不弱小 , 你发现那个刚才我念的那个配置没 , 就是他买的这个 2,000 块钱左右的配置 ,其实相当强大的 。
它只是不再时髦了 , 或者它不再顶尖了 ,但它绝对是一个 solid 的一个一个 。
就是甚甚至可以说它这个这个这个 2,000 块钱的小电脑的这个性能啊 ,是要好于我觉得可能大多数人家里那个可能两三年前的这个台式 PC 或者是甚甚至笔记本的这种性能 。
对 , 没错 。
对 ,但我一直就有一点 ,有一件事情我一直就就就不能释怀哈 , 就我问你一件事啊 , 你你我现在给你一个任务 , 就是说因为这种这种做这种路由器这种设备 , 你不需要它有这个任何显示的功能嘛 , 对吧 ?
嗯哼 。
但是呃 , 请请给我一个
列表或者是几个选择 , 使得那种就是它的那个 CPU 的处理能力很强 ,但是不需要有 GPU, 然后它同时又价格比较便宜的这种这种这种硬件配置的这种选择 , 就发现你其实没有找不到 。
这个你基本上必须去买一台服务器啊 。
不 , 服务器很贵啊 。
这其实是对服务器的要求嘛 。 对 , 我的意思就是你你所需要的是一个呃 。
Microserver。
个人使用的微型服务器 , 对 。
没错 , 没错 , 就其实这种处理 , 首先从处理器的角度来讲 , 你就很难找 。 就一般来说那个英特尔的处理器 , 它虽然说性能很强大 ,但是它的那个价格比较贵嘛 。
就你现在看你就 I5 那个一个处理器的那个那个那个芯片 , 大概就是至少是 100 多刀吧 , 就成本 , 就厂商的成本是 100 多刀 , 就大概六七百块钱了 ,但其实里面有很多钱你其实你并不根本用不到 ,因为现在特别像那个英特尔出的那种集成的处理器 , 它可能里面很大一部分是用那个用用做那个 GPU 的嘛 ,但是你 GPU 你完全用不到 , 你做这种这种
这种就是丢在角落里面 ,也不也不管它的那种那种用途的话 , 对吧 ? 你就但你就找不到那种 , 那你再回再回去找 , 就只能找那种比如说基于 ARM 的 , 对吧 ?
但你现在你基于 ARM 的那种处理器的话 , 它的那个那个 CPU 的性能好像又跟不上英特尔的那个最新的像什么 ProWire 啊什么的 。
对 , 它功耗低 ,但是 。
性能又不好 。
对 。
就比如说我现在都没有找到比较合适的呃 , 能够跑满一个千兆口的一个基于 ARM 的处理这个 SoC。
嗯哼 。
啊 , 所以就是就就就挺尴尬的 。
你有看什么惠普或者是我还有其他厂商戴尔的戴尔做不做 ?
我看过 , 没有 , 没有任何一款 。
他们的 Microserver 你有看过没有 ?
惠普有一款 ,有一款是作为那种 NAS 的 , 就是做网络存储的那个 Microserver, 呃 , 它是可以给你选择用那个是 I5 还是还有一个是至强的处理器了 ,但是那个东西起价是就光是那个壳子 , 它是有一个小机箱的 , 然后带一个主板 , 然后有有一个选择是没有 , 就是它有几个配置吧 , 最低那个就是 Barebone, 就是小机箱加主板 ,但是不带那个处理器 ,不带硬盘的 , 大概都是
4,000 多块钱 。
OK。
所以 。
要不要那有想过买一个旧的版本 ?
没有啊 , 就是没有吧 。
OK,不过好像国内的旧的服务器也不知道从哪买啊 。
你是说买那种机房用那种服务器吗 ?
对 , 机房的旧服务器 , 然后 。
那个有一个很大的问题是它的 , 首先功耗非常大 。
太大了是吧 ?
那个都是几就是几百瓦的功耗的 , 就是如果全开的话 , 就代机的话也有七八十瓦吧 , 你不可能一直 24 小时开着嘛 。
第二个你不能把它放家里 , 所以它因为非常大 , 哪怕是个 EU 的话 , 它也比我们通常的那个它它它它薄嘛 ,但是它很很宽 , 它就是一个很大的面积的东西 , 然后非常的吵 ,因为它是那个小风扇嘛 , 高速的小风扇 , 非常的噪音非常大 , 就不可能放在家里的 。
你要找那种啊 , 对 , 刚才还有个需求没有说 , 就是它要静音 , 对吧 ? 你要它体积要小 , 要静音 , 你找到之后就发现你就基本上没有什么可选的 , 就只有这种 , 就是这种被动散热的基于英特尔那种移动处理器的那种小电脑才才适合 ,但是他们的价钱都也不算特别便宜吧 , 就没有 1,000 块钱以下的 。
嗯 。
但是其实你用到的可能就只有 1,000 多块钱左右的部件而已 。
我前两天是在是看谁在推特上说他买了一个 HP 的呃 Microserver 叫什么 Gen8, 就是 。
对 , 就就刚才我说的那个东西 。
OK, 然后 。
它是一个 File Server 嘛 。
好像也是四五百刀一个吧 。
对啊 , 对啊 。
然后那个玩意看起来还不错 ,而且 。
也挺大的 ,其实它跟一个普通的小小就是小机箱那种 ,不是小电脑 , 那个不是 AOC 这么小 , 它是一个呃相对来说比较大一点的一个呃那种盒子嘛 。
OK。
呃 , 就放的问题是一个 , 然后它的那个功耗和价钱都不是太理想 , 就不是那种 scooter, 就就你绝对不会认为它是一个 scooter computer。
这是肯定的 , 对 , 这是肯定 。 我我在我想的是买一个什么 motorcycle computer。
哈哈哈
。 但如果你家里没有那个网络存储的话 , 用一个那个来自己搭一个基于呃 FreeBSD, 然后跑 ZFS 的其实挺好的 。
嗯 , 对 , 我觉得对 , 首先还是得置个业吧 , 然后就可以在家里面想怎么搞怎么搞 。
就啥也都得买房子 。
对 , 哈哈哈 。
像我那种租房子就比较比较尴尬了是吧 ?
你没有买房子计划吗 ? 还是这个问话题太 private, 太私人了 。
呃 , 暂无暂无吧 , 这个我这个想的挺开的 。
所以深圳留不住你 。
啊 , 倒不是这个意思 , 我是觉得因为现在中国那个租售比这么低 , 对吧 ? 你何必呢 ?
嗯 , 说的也是 。
嗯 ,anyway, 说回我要找这个这个小电脑的一个终极的原因哈 ,其实为了就不用跑 VPN 嘛 ,因为那个 OpenAPP 就是那种路由器 , 就是那种家用路由器刷起来 , 那个 CPU 不管再牛逼 , 你其实发现它那个性能赶 X86 还是挺远的 , 对 , 特别是跑上那个 VPN, 它对那个计算有要求的时候哈 , 就就非常糟糕了 。
然后我自己在琢磨写一个 VPN, 哈哈 ,因为之前我但但用一个比较知名的一款嘛 , 然后后来因为一些原因 , 那个它的源码被删掉了 。
写VPN37:39
OK。
啊 , 呃 , 刚好之前我就刚好我之前 fork 了一份 , 然后就回家再研究嘛 , 然后也找了 GitHub 上面 ,其实 GitHub 是个很好的社交工具 , 你可以找到很多类似的东西 , 可以学习他们背后的原理 , 然后发现其实还挺简单的 , 然后我就自己动手写了一个 , 然后是用那个 Go 写的 。
OK。
然后有用 Go 写就一个很明显的后果 。
哎 , 我踩的那个被被被因出于某种原因删掉的那个东西是用什么语言写的 ?
呃 ,C 写的 , 就目前能是我我这大家用的比较多的还都是都是 C 语言写的吧 。
这个东西的 fork 现在在 GitHub 上很好找吗 ?
很好找啊 。
所以很多人都在趁它被那个什么被删掉之前去 fork 里边是吧 ?
不 , 应该说是在就有这个这个事情发生之前 , 很多人就 fork 了一遍 , 然后出了这个事情 ,fork 人就更多了嘛 。
OK。
对 ,anyway, 就这东西就是反正就是就是删不掉了嘛 , 已经 。
OK, 很多人都会去看看 。
对 , 然后它那个是 C 写的 , 非常小小 , 就是不到 100K 吧 , 编译出来可以放到那个路由器上的话就没问题 ,但是我用 Go 写的话 , 你知道 Go 编译出来一个 binary 大概就是几兆了 , 放路由器 。
Battery inclusive 问题在 。
不 , 它带一个那个 run time 嘛 , 所以它带一个 GC, 所以会比较大一些 。
OK。
然后这样放那个我之前那个 703 上就比较就不太够了 ,因为那个整个内存就只有 32 兆 , 你放一个 run binary 都有几兆 , 再再运行的话就大就 out of memory。
OK。
就会触发那个 OM 的 killer 了 。 啊 , 然后性能也是一方面 ,因为那个 Go 毕竟还是不如 C 那么轻量级嘛 , 所以就有更强大的动力去找一个 X86 的电脑来跑它 。anyway, 就是就是扯到刚才那个话题 ,其实写一个 VPN 其实还挺有意思 , 你知道怎么弄吗 ?
怎么弄 ?
啊 , 就原理很简单 , 就是你需要先在里面 。
要实现一个协议栈吧 , 我觉得就 。
不用 ,不用 ,不用那么复杂 ,其实现在超级系统帮你做了很多事情了 。
OK。
对 , 你现在你要做一个最基本 VPN, 你要需要在你的那个电脑里面 , 超级系统里面模拟出一块呃呃网卡 , 虚拟网卡 。
嗯哼 。
然后在 Linux 上面这个一般叫做叫做 Tunnel Device 嘛 ,Tunnel Device。
OK。
然后呃 OS 上也支持这个东西 , 当然有一个就是 10.6 还是 10.8 开始 , 它有一个内核 , 就 Darwin 那个内核级别的支持 , 叫做 Utun,Utun Tunnel, 你可以建一个东西 , 然后建了一个 Utun 有什么用途呢 ?
它就会在你的操作系统里面虚拟出一块网卡 , 你可以这么理解 , 然后你可以绑定 IP 地址做路由规则 , 完了之后呢 , 任何写入这个网卡的这个 IP 包 , 你可以转发到一个一个用户进程里面去去读写它 , 然后你在用户进程里面去做一些包装的加密或者是压缩或者是变形的任何处理都可以 , 就随便你想怎么弄了 , 然后你通过一些其他方式转发到你对应的
那个目标服务器上, 就可以实现一个简易的 VPN 了 。
OK, 所以没有那么没有没有 。
就你不需要 。
想象的那么低低级 。
对 , 你不需要 。
不需要 。
就是说实现一个整个这个 IP 栈 。
实现一个用户进程的程序就可以了 。
对对对 , 非常简单其实 。
OK。
然后 。
那个写一个 Guardian 没什么差别 。
啊 ?
就写一个守护进程没什么差别 , 感觉好像 。
但你不不需要写个写个写个这种 D 嘛 , 你直接写个前台程序 , 然后用那些那个什么 Systemd 啊 , 还有 LaunchD 来管理它就好了 。
对 。
啊 , 就过程还是蛮简单的 , 然后我后来去就理解了这个逻辑之后动手写 ,其实还还挺挺有意思的 ,有一些那种 low level 的东西就还挺好玩的 。
然后因为 Go 一般你你要去那个在操作系统里面创建那个那个 Tunnel Device 的话 , 你需要调用那个一些系统 , 那个就是 。
系统那边 。
System call 嘛 。
对 。
然后这几个 System call 直接在 Go 里面其实是没有的 , 你要用那个 Syscall 的那个那个 package 去自己去做一些处理 , 然后就发现这个其实我之前想的那个 Go 可能做一些非常底层的事情还有点难度哈 ,因为毕竟包了一层嘛 ,不是直接有那些 C 的那些 Header 你可以引用了 ,但其实你发现做完之后还是挺简单的 , 你直接把那些那些长量呃从那个那个 user include 里面抄过来 , 然
后再用那个 Syscall 包一下 ,其实也也不难 , 就是在很多程度上 。
没有比什么 Python 或者是 Swift 难很难 ,是应该比他们简单吧 , 可能搞不好 。
对对对 , 就其实挺直接的 , 然后 。
OK。
啊 , 甚至说你在 Go 里面直接调用一个 C 的呃库也也也挺容易的 , 就没有我之前想象的那么麻烦 。
所以你你把这东西开源了吗 ?
我开源了吧 。
OK。
这个这个我我我就自己写来玩 , 这个开源没什么意思 ,因为 GitHub 上面已经有超多的这种同类的实现 , 那你反正是 C 写的 , 没有 Go 写的 , 呃 Go 有一个吧 , 好像个吧 ,但是就原理上差不多 , 你知道掌握了这套原理之后, 你是用用你用 Python 写也是一样的其实 。
嗯 。
就只是说这个效效率的问题而已嘛 ,但是其实就还好 , 如果你在 X86 的服务器上跑 , 呃这种级别的应该差感觉不到任何性能上的差异 。
所以过年的时间就拿来写这个 VPN 了吗 ?
那就就就学习一下嘛 ,因为我一直对这块就挺好奇的 ,因为之前我我想提一些需求 , 又发现是 C 写的不太好改 , 然后顺便为了为了去读懂那几个代码 , 还复习了一遍 C 的和那个用 C 来做这个网络编程的一些知识 。
哈哈哈 。
等于还还那个啥 , 还还就因为 C 好多好多年以前学了 ,其实基本上没怎么用过嘛 , 然后现在去看了一圈 ,其实还还还还能写一些了 。
OK。
就最开始我是直接呃用 C 写了一个最基础的版本嘛 , 然后发现哎 ,其实好像改用 Go 写也可以哈 , 然后用 Go 的话就整个安全性也好很多 , 然后也容易一些嘛 。
只是太容易太多了吧 , 我觉得 。
呃 , 对 , 好吧 , 你可以这么说 。
就至少在 mental model 上容易容易太多 。 我最近在写 , 我最近在做一件把一个呃操作系统性质的东西整合进一个 Docker container 的事情 , 好多地方要重写 , 然后用用 Python 写的部分还好 , 用 C 写的部分真的是改起来太麻烦了 。
哎 , 这个是要做什么 ? 为什么会这个需求 ?
就嗯 , 你像很多知名的数据库产品 , 它现在基本上都提供一个官方的 Docker image, 然后我们也想做一个同样的事情 ,但是你在一个 Docker container 里面跑一个服务 , 跑一个呃数据库进程的一个问题 , 就是你需要把数据和配置呃独立出来 , 对吧 ?
因为 container 它本身是 。
Stateless。
对 ,是用完即弃的 , 应该这么说 , 然后可能会希望说我需要把数据和元数据和配置和呃 log 之类的所有的 volume 都都挂都挂到 container 里面 ,但是根据服务器的实现策略的不同 , 呃这个东西可能光光挂进去是不够的 , 你还要改很多很多其他的东西 , 总之 。
那所以后来你怎么怎么解决这个问题 ?
这不存在什么要解决的问题 , 就是你如果你很多东西都要改成一个被挂进挂到那个 container 里面的 volume 的话 , 那你就需要改这个原始的很多逻辑 , 比如说这个东西它默认说我要写到一个呃 /dev/ 什么 hdd00data 之类的这么一个文件里面 , 或者这么一个 block device 里面 , 然后现在我只有一个 volume 可以用了 , 那这个东西就得改 , 是一个非常细琐而繁杂的东西 ,而且散布于代码
的各个地方 。
OK。
啊 , 对 , 是一个比较
折磨心智的工作 , 然后这个时候你就会觉得我靠 , 这种情况下我还要去去看这个东西 , 仔细看这个东西是不是是不是个指针 ,是不是个是不是个什么 whatever, 什么呃是个 struct 或者是就就 ,而且部分有一部分它是用这个 C 攒来写的 , 就是 CPython。
所以 。
然后你就要去 。
哎 , 等等 , 用 CPython 写不是比用直接写 C 要来的就是至少看起来更好 。
但是如果你发现你要改的东西同时存在于两者之中的话 , 嗯 , 你就会觉得我靠 , 为什么不只只用一种语言写呢 ?
呃 , 好吧 。
它存在一个 mental model 转换 , 对吧 ? 就是我觉得是就是这种感觉 , 就是你可能如果你一天要改三四种呃三四个地方的代码 , 然后每个地方的代码是用不同语言写的 , 比如说我可能呃要先改一个 bash, 改了 bash 之后发现哎 , 这个地方呼叫了一个呃 Python script, 然后改了 Python script, 发现哎 , 这个东西它 import 那个东西是用 Cython 写的 , 然后 Cython 进了 Cython 之后哎 , 它发现它它呼叫这个函数
是用 C 写的 , 你会觉得有那种就是我靠 , 我刚刚在开飞机 , 然后呃一下子改开火车 , 然后过一会又跑去骑自行车 , 然后要到最后要去推一个独轮车那种感觉 , 就
可能一个好优秀程序员的一个优秀程序员的特征之一 , 就是他的这个所谓 comfortable zone 特别的特别的广 。
嗯哼 。
对吧 ? 他不会觉得写这个东西太低级 , 写那个东西太高级 , 写这个东西多简单 , 然后写那个东西就特别的呃 。
就是给你等。
对 ,但是如果你真的要一天到晚在这个不同不同的抽象层级之间 , 怎么说 , 就量子物理学 , 量子物理学里面能级跃迁是吧 ?
你从一个轨道跃迁到另外一个轨道是需要能量的呀 。
就觉得脑子有点乱 。
对啊 , 然后一天之后你就特别累 , 我觉得 。
啊哈啊哈 。
对 ,因为你你需要就在脑子里面构建出一个这个层级的模型 , 然后毁掉 , 然后去另外一个层级 , 然后再毁掉 。
好吧 。
对 。
那那最后你最后你是怎么解就 。
没有解决啊 , 就就还是没有 。
这就是我一复一日的工作 。
OK。
我目前在做的事情 。
就是 squat your head。
对 ,而且有一个很大的问题就是 , 如果说你要保证一套源代码同时给出两个发行版 , 就是一个正常安装版和一个 Docker image 的话 , 呃就有很多目前可能还有很多这个编译过程的 build 过程的坑需要去填 , 就你在 build 的时候你需要说这个东西是 build 一个 image, 然后接下来还有测试方面的坑 , 就是你可能同一功能在普通安装情况下是可以用的 ,在 image 在 Docker container 里面就不行了 ,
这还要专门去测 , 然后对 , 总之这是一个牵一发动全身的这种这种这种这么一个项目 , 我觉得挺累的 。
所以你们那个产品是用 C 和 Python 混合写的 ?
呃 ,engine 是用 C++ 写的 , 然后就呃一个数据库系统基本上可以切分为 , 或者在我们公司是切分为 engine 和呃所谓 cluster OS 两部分 , 就会最重要的这两是这两个切分的 , 然后还有一些一堆周边的什么一个专门的开发工具啊之类的 , 然后 engine 是用 C++ 写的 。
呃 , 就是因为性能的原因是吧 ?
对 , 然后呃 cluster OS 和 cluster OS 基本上是用 Python 和 C 写的 。
OK。
然后还有一大堆什么 driver, 就是什么 JDBC 啊 ,ODBC 那个 dotnet 的那个 。
那就是根据那个那个要 drive 要 drive 它的语言来决定了 。
对 ,也难对 。
也是难为你了 。
哎 ,不过还挺有意思的 , 就是你可能在在离开公司那一刹那 , 你会觉得自己做的东西还是挺有意思的 , 或者是挺有意义的 , 上升到一个上升到一个形而上的层面来说的话 。
你说啊 , 我也是做过 。
对 , 我我为人类做出了一些贡献 , 对吧 ? 我不像你在做 , 就 seriously,不像你在做赌球网站的时候 , 你会说我靠 , 我今天做的这个东西不知道有毁 ,不知道又毁灭了多少家庭 。
哈哈哈 。
呃 , 好吧 。 啊 , 所以还是可以说是够哈 , 会会感觉会清爽一些 。
对 , 回到刚才说的这件事情来 , 就是我觉得如果你能写一个东西 , 然后只用这一种语言来写 , 然后只用一个呃 , 就你有一个比较清晰的嗯嗯呃割裂的独立的模块化的层级 , 是一个比较好的事情 。
其实这是不是要求那个语言具备更好的这个什么这个所谓的适用性 , 就是它既能够写底层的东西 ,也能写高层东西 ,并且呃就是它对应的那个抽象层级不会特别嗯 , 就不会特别低或者特别高 , 影响性能 , 或者也也或者说是不太好理解 。
Swift讨论51:26
对 , 你要找一个 sweet spot。
嗯 ,Swift 算是这样的一种语言吧 ? 它不当初设计的时候就这么考虑吗 ? 又能写操作系统 , 又能写长程应用 。
我倾向于觉得是应该是 ,因为 Swift 现在基本上是苹果把宝都压在 Swift 上 。
呃 , 对 , 就是大家在吵那个又又在那个苹果的那个软件质量的问题又出来了嘛 , 然后前段还在还他妈那个高管还去那个节目上, 那个播客节目上去讲那个我们怎么如何如何努力啊什么事情 ,但其实我在想啊 ,其实从软件工程这个角度来看 ,不就是因为这个就是软件的复杂度提升了吗 ?
因为现在需求越来越多 , 对吧 ? 各种什么 。
而且还处在一个技术转型期 。
就他们之前一直用的那个 objective C, 它其实是一个比较过时的技术吧 , 就是说它的那个适用性是比较窄的 。
呃 , 就它不能它不能用来写这个内核 ,因为它不够高效嘛 , 它是一个有有那个 run time 的系统 , 对吧 ?
它在 C 上面加了一层 run time, 对 ,是这样 。
对对对 ,但是也可以吧 ,但是只不过没有人这样做 ,而且或者说以前的电脑性能不允许咱们这样做 。
那就是性能不够好嘛 。
对 , 然后另外一另外一个方面 , 它写那种非常复杂的应用 , 它的那个抽象层级又不够 , 对吧 ? 它毕竟是一个 C 的语法 , 然后各种我也看到了 , 连那个传个参数都那么坑爹 。
对 , 我觉得 objective C 最大的一个问题可能是它要求就是一个好的 objective C 程序员必须能够呃熟练的在两种编程范式之间跳来跳去 , 就是他在他在打出个 at 符号的时候 ,他可能就跳成了一个呃 。
呃 ,O 的模式 。
就就对 , 跳进了那个 small talk 模式 , 然后他开始打什么 voi 的心啊之类的乱七八糟的时候 , 就又回到了 C 模式 , 然后你必须在两种模式之间之间转来转去 , 就有点像一个怎么说 , 就有点像像瑞士人啊 , 工作的时候说高冷德语 , 回家了开始说土德语 , 然后这样完成一个身份转换 ,但但是 Swift 就没有这个 , 就没有这个坑爹的地方了 。
所以
也许在不久的将来 , 优秀的 Swift 程序员要比会会会 , 或者说成为一个优秀的 Swift 程序员的成本 , 应该要比 objective C 的程序员高一点 , 呃 , 低一点 。
嗯哼 。
对 。
嗯哼 。 因为呃我最近在琢磨这个事 , 就是因为那个我最最近写 Go 写的比较多一点 , 然后也觉得挺爽的 ,但是我还是知道它的短板在哪里吧 ,因为它是一个有 GC 的语言 , 对吧 ?
有很多场合其实它是不适用的 , 非常底层的 ,而且它写出来那个 banner 也比较大嘛 , 对吧 ? 比方说最小的一个你就 print f 一个 hello world 出来 ,也有可能一兆多还是两兆吧 , 就是说也不够那么那么的轻量级 , 然后就做一些我觉得呃网络层的网络级别的应用 , 就是就是我们怎么定义的 , 就是中等程度的中等复杂度的应用 , 我觉得它还是非常好的 ,但是
再复杂一些 , 比如说这个一些叫做 DSL, 它可能不太适合写 , 对吧 ? 它底层的 。
最简单的一个就是你用 Go 来写 Android GUI 怎么写 , 好像没有什么特别好的 。
那那个是包的问题嘛 , 那个还好 。 我是说就是说它的那个语语语言的那个语法的那个抽象程度一般化 , 就是你写一些非常复杂的高层的应用就不太现实了 。
对 , 我的点就是说 GUI 程序实际上是有时候是非常复杂的 , 对吧 ?
那曾经用 Java 不也写了吗 ? 哈哈哈 。
但是 Java 在另一方面 ,Java 可是 Java 和 objective C 都是相当啰嗦的语言 , 用啰嗦的语言来写 GUI 是比较 。
脑残的事情 。
对吧 ?GUI 这个东西是呃最好的 GUI 是描述式的 , 对吧 ? 但是如果你不得不用一种编程语言去写 , 去去去以编程方式来生成它的话 , 那我觉得其实啰嗦不失为一种好事 ,因为你能控制的地方 , 或者说能 。
啊 , 我明白你的意思 ,但这样会影响那个效率 , 就理解起来就就有有我我我一直坚信这么一种理理论嘛 , 就是那个人的这个这个大脑哈 , 这个 processing power, 它是它的那个它的那个处理能力是有上限的嘛 。
如果说你东西太底层了 , 或者说那个太 verbose, 就是太太太啰嗦的话 ,其实你你你一次在头脑中你就看一屏代码嘛 , 你能知道它要做什么事情 , 你能在 hold 住的那个短时期能够理解的它的那个量是有限的 , 这样的话你就不能理解非常很多这种高层次的概念 ,也就会使得你这个整个的复杂度 , 就你能够可管理的复杂度是有限度的 。
这样的话 , 如果有一些更加复杂的应用过来 ,其实你就不能很好的去理解它 , 这个时候就会出现各种各样的软件的质量的问题 。
没错 。
所以所以我为什么讲那个说 , 为什么现在一直在吵这个苹果的软件质量下降 , 我觉得就是这个东西的一个一个结果嘛 , 就是 objective C 导致的这个原因 , 对吧 ?
可能安卓也会遇到类似的问题 ,因为 Java 也到它那可表达性也就只有那样了 。 当然安卓呃不 ,Java 可能还有一些什么救命的稻草 , 什么可以用 Scala 来写啊 , 反正编程 JVM 就差不多 , 对吧 ?
Java 吧 。
嗯 ,Java。 哈哈哈 。OK。 但是但是就是 Go 的话 ,其实我也我也看不到它作为上层应用在这方面有什么有有任何独到的一个什么方法 , 就是它的那个这个适用性还是相对来说窄一点点吧 。
然后大家还要回到就是说刚才写底层的那些东西 , 比较偏向 C, 更接近于呃硬件底底层的那些东西 , 就 Go 也不是特别适合 , 虽然是刚才我说写 VPN 的例子也可以算凑合一下, 对吧 ?
但是还没有像 Swift 的那个下限那么那么低 , 我觉得 。
修下限的时候 , 对 , 我觉得 Go 总体来说就是一个适用的下限和适用的上限嘛 , 对吧 ? 一定要这个这个这个叫什么 dynamic range, 这个一定要广 。
不太范围 , 对 , 这个一定要够广 。
对 , 这是一种 HDR 语言 , 对吧 ?
对对对 ,因为因为这个是回答你刚才你说那个问题 , 就是说如果你只想用一套语言去解决一个非常底层 , 同时又有非常上层应用需求的这个一个一个一个问题的话 , 好像只有这么一个方案了 ,不然的话就只能混合语言了 , 然后混合语言就会出现刚才说那种不断的 JavaScript, 对 , 范式迁移的问题 。
哎 , 跟 JavaScript 有什么关系 ?
JavaScript 现在不也是就是前端用后端也用嘛 , 就你你说一套语言包揽就是 。
不不 , 它那个还是 JavaScript,其实也是一种现在被当做 HDR 来用的语言 。
不 , 那个是应用场景 , 那我们还不是说那个高地层 , 它还是写一个非常高层的应用嘛 , 前端写那个 GUI, 后端也是写那个呃就是 logic 那一部分 , 它不是说用来写这个什么 Web Server 本身 。
对 ,不能用 JavaScript 来写一个操作系统 。
呃 ,有人这样干过吗 ? 有人这样干过 。
我靠 。
对 ,有人这样干过 。
对啊 。
它在它是用那个什么 , 它是用那个 LVM compile 过来 , 然后在 JavaScript 里面就是把 C 编译成这个 JavaScript, 然后在浏览器里面跑了 , 好像是 model boss 还是什么来的 。
JavaScript as a JavaScript as a ASM。
对对对 , 当作汇编来用嘛 , 这个不算 , 这个这个这个太科技了 。
没错 ,是的 。
这有点像就是把一个光谱的某一段 , 然后把它放大到其他的范围 。
哈哈哈 。 太厉害 。 啊 , 说到那个语言啊 , 那个最近有个小新闻 , 就是那个 Go 1.6, 你昨天发布的吧 ?2 月 10 日, 还是前天 , 前几天了 ,2 月 17 号应该是 。
17 号是三天前 , 对 。
三天前 , 对 。 然后那个呃那个 1.6, 它有一个非常大的提升 ,是把那个就是 garbage collector 的那个就是 GC pause,GC 暂停 , 对那种特别大的那个这个这个堆的堆吧 , 屁股是堆 , 堆的时候呃的的那个 GC pause 就降低到了可能 10 个毫秒以内吧 ,其实还挺惊人的 , 我觉得 。
嗯哼 。 这虽然不是完全的那种就是所谓 pauseless, 就是无暂停的 GC 啊 ,但是其实已经对绝大多数那种非对实时性要求没有那么高的应用 , 我觉得已经够用了 。
再加上你做一些呃稍微基础的那个内存管理 , 就不要产生那么多垃圾的话 , 我觉得很多应用用那个 Go 写不会比用 JVM 调优过的那个 , 就比调优过的 JVM 的那个 GC 的来的要弱 , 我觉得 。
OK, 主要是开发效率要好很多吧 。
因为我之之前挺我看到有些人在做那个 , 你知道有个叫什么来的啊 , 广告实时竞价 。
广告实时竞价 。
不就是就是这样吗 ? 就是你有很多那个广告位 , 你要去根据每个用户跑过来的那个他的那个用户的这个 user profile, 你要决定他给他展示哪个广告会效果最好 , 然后你能收到更多的钱 , 然后能卖出更多的广告嘛 , 就是对广告有个排名 , 它会要在多少毫秒内要完成这个 , 你可能有几万个广告 , 你要选出可能三个 , 对吧 ?
排到这个前面展示给那用户 , 它对这个实时性要求还是挺高的 。 就比方我看到有人在用那个很多国内的这种这种这种特别叫什么 , 叫做 ad exchange 吧 , 就是广告的集中地 ,他们会用这个来写 , 我还我还挺吃惊的 。
OK。
对 ,因为之前他们一般的 , 我听说的一般的做法是开一个那个 JVM, 然后开一个很很大很大的一个 heap, 比如说 8 个 GB 或者 16 个 GB 的 heap, 然后就不管它了 , 就就不用考虑那个 GC 的问题 , 对吧 ?
反正只要够大 , 对吧 ? 我们只要说一天再重启一下就好了 , 最多 。
对 , 这其实也是从一个侧面反映 , 目前 JVM 是一个非常 robust 的东西 ,其实 。
啊 , 那个很好的 , 就只是说它太重了嘛 , 就是有些像我们写那种啊 utility 工具型的应用 , 你就不希望 ,因为 JVM 启动很慢嘛 。
呃 , 取决于 。 好吧 , 对 , 没错 。在企业级服务器上肯定是非常庞大的东西 。
就你你不管怎么样 , 你就哪怕你是你就 JVM, 你就写一个这个简单的 hello world, 你用 JVM 跑一下, 它那个 JVM 启动本身可能要耗掉可能几百毫秒 , 你感觉到它不是那种那种 instant 的感觉 , 你知道吧 ?
就不是你不是你输入那个命令点一下, 马上马上就执行完了那那种感觉 , 它是要要顿一下的那种 。
对 , 还是分具体实现嘛 ,不过大大部分情况下是这样的 。 这是一个 。
就主就那个什么 , 目前用那个叫什么来的 ,open JDK 吧 , 还有那个叫 。
Hotspot。
对 ,hotspot 都是那种比较重的嘛 , 好像轻量级的也有 , 我不知道安卓那个 Devel 是轻量级不 。
那肯定是啊 , 那那个那是 J 是个 JIT 嘛 。
但 Devel 可没有人在 PC 上用嘛 , 只是在那个安卓上跑呀 。
Google 不干这件事情的话 ,不会有人干 。
对 。 呃 , 还说到语言 , 刚才也提了 Swift 啊 ,Swift 最近有什么新新动向吗 ?
呃 ,Swift 最近开呃 Org,Swift Org 上面最近的新闻就是跟跟 Go 这个比较底层的一个更新来比 ,Swift 目前在做一些面子工程 , 就是 facelifting, 就是因为我们都知道 Swift 是跟这个 Coco API 绑定在一起的嘛 。
对 。
至少目前是绑定在一起的 , 虽然开源之后它肯定会做出一些 , 比如说在跟这个就是解绑啊 , 然后去搞一些呃直接呼叫 Linux 原生库啊之类的一些工作 ,但是目前它做的做的一件事情就是它有一个所谓 API Design Guidelines。
这个肯定要介绍一下背景啊 ,因为之前那个那个 Coco 的 API 是基于是为那个 objective C 定制的嘛 , 等于是 。
对 。
然后它的有些设计 。
对 , 是一个非常有一些都有些痕迹是非常非常古老的 , 来自于七七八十年代可能 。
对对 。
对吧 ?
然后它的就其实我们我之前那个 Swift 1.1.0 吧 ,是 1.0 啊 , 上次发布那个 。
呃 , 对 , 现在已经呃现在 2. 几了 ,2.1 了 。
啊 ,OK,2.2.0。
你说开源的那个版本吗 ? 开源那个版本是 2.1 啊 。
对 ,2.1。 对 , 它发布的我去看了一下, 它那个就标准库吧 ,其实挺挺没什么的 , 就是基本上 。
贫瘠 , 非常的贫瘠 。
对 , 什么都做不了 , 然后他说你稍微要做点事 , 你得去用那个叫什么 , 那个 Coco 那套东西 , 对吧 ?
对 。
什么 foundation。
你稍微做点 , 对 , 稍微做一点比较 non-trivial 的事情 , 就基本上 beyond the hollow world, 你就得去钻 Coco 的东西 。
对 , 然后你我一看那个 Coco 那个那个一个那个标准库一看 , 哇 , 那个风格就跟那个 Swift 语言就完全不是一个风格了 , 就觉得 。
对 , 你会觉得这个这简直就是 80 年代那种等宽字体的千印的操作手册 , 然后里面的内容放了一个比较新的 , 放放在了一个非常精美的 , 非常现代的天文页面上的感觉 。
那因为当时当时他不是说出了那个对那个 Ubuntu 的支持 , 我想说哎 , 那你这个写服务端和客户端都可以搞定了 , 对吧 ?
就还挺好的 , 我想学一下 。 但一看哇 , 标准库怎么长这样 , 算了 , 这就跟那个 Go 的区别很大 。Go 它标准库是它是就是本来就为 Go 定制的标准库嘛 。
然后功能都挺齐全的 , 大部分我现在我我现在写的很多应用都基本上就基本上用不到标准库以外的东西就可以搞定 , 就还觉得挺爽的 。
然后一看 Swift 这个哇 , 完全无法接受 。 所以他们这个做这个面子工程 , 我觉得还挺有必要的 , 就等于是一个迁就是迁移嘛 。
对 ,他们先是出了一个 API Design Guidelines, 就是你要你要为这个不管是 Similar Library 来设计 API, 还是你要自己开发 Swift API, 呃 , 都最好遵都应该遵循这个 Design Guidelines, 就是比如说里面有一些非常细小的 , 比如说应该怎么命名那个命名你的方法呀 , 怎么 。
对对对 , 要一致嘛 。
对 , 去去去使用一些特定的 convention 啊之类的 。
就他那个还是为那个 Swift, 就下一个版本是应该是今年年末的时候 , 还是明年年初的时候 。
Swift 3 吧 , 可能是 。
对 , 还是说是 2016 年年底吧 ,是不是 ? 去年说的时候是 。
应该没有 , 没有 , 去年去年说 3。
不是 16 年年底吗 ?
那是 2.2 吧 , 那是应该是 2.2。
哦 , 就 3 还遥遥无期 。
3 还有一段时间 ,不是遥遥无期 ,但是 。
17 年了 。
对 , 应该是 , 对 , 应该是明年 。
所以我想了一下, 还是等他们把这个 API 的这个这个重就重叫做重构吧 , 做完 , 然后那个 3 发布之后再学 , 再来也来得及 , 中间不要 。
没错 , 肯定来得及 。
白 。
因为现在即便苹果内部都不是非常的依赖 Swift, 就是基本上你看你看 IOS 那些原生程序里面没有几个是用 Swift 写的 , 可能计算器是用 Swift 写的吧 。
但是他们在那个 WWDC 上面给出的展示项目全部都是用 Swift 写的 。
是 ,但是那只是一个展示啊 。
对 , 内部他们怎么样还不知道是吧 ? 其实我觉得他们那边应该也在做这个迁移 。
分析说好像现在苹果里面有能有一成的是就是在在生产中的代码是用 Swift 写的 , 就已经不错了 。 尤其是 IOS 上面 , 大部分人还是还是依赖着 Swift,而且那个什么 iTunes 之类的还全都是 , 还一直全都是 Objective C 写的 。
因为 Swift 它处在一个比较转变化中, 处在一个处在一个进化的状态 。 就对 , 就有些东西可能今天能用明天就坏了 , 对吧 ?
但是你在一个这个体量的公司里面是不能依赖这种非常 cutting edge 的东西的 。 虽然它版本号已经 2.0,但是它还是有可能消耗不兼容 , 对吧 ?Anyway, 然后这个 guideline 的点就是说它它有一个比较呃重大的一个决策 , 就是它要做到呃去去 Objective C 化 , 就是 less verbals, 然后两个点是什么 ?
不要所谓什么 don't surprise an expert, 然后 don't confuse a beginner。
嗯 。
就是老手不会老手不会觉得惊奇 , 然后新手也不会觉得困惑 。 嗯 , 呃 ,在之前的 Objective C 世界里面 , 这两件事情事情我觉得是经常发生的 , 就是你写的就就像我 , 你可能写了一段时间 , 然后再去看一个什么新的 API, 你会说呃我靠 , 这个地方居然要这样 , 然后那新手就更别说了 , 新手可能会说我靠 , 这些为什么有些地方要用 at,有些地方不要用 at 之
类的 。 但是如果这个新的 Swift 的 API Design Guidelines 可以被呃我怎么想不出那个词是什么来的 , 就可以被完全应用到这个现有的 Coco 库上的话说 , 或者说先应用到现有的 Swift 和 Coco 之间的绑定上的话 , 那可能这些事情都会好很多 。
嗯 。
嗯 , 主要是用起来更舒服了 , 然后要打的字更少了 , 读起来也就更更流畅了 , 比如说有有一些非常细小的地方 。
但是我觉得最值得一提的就是那个很多 API 的 , 或者说部分 API 和方法的那个 NS 前缀都要被去掉 。
这个这个其实还有有点讲 ,有有可以可以探讨一下它它出现那个 NS 前缀 ,是因为那个 C 没有那个就 namescope 嘛 。
Objective C 没有 namespacing。
不对 ,但但那 Objective C 没有 ,因为 C 没有嘛 , 它不能加一个上去 , 对吧 ?
它可以加一个上去 ,但是没有这么做 。
嗯 , 哎 ,anyway, 好吧 , 对 , 它没有那个 namespacing, 呃 , 然后 Swift 是有的 , 所以它不需要这个前缀了 。
对 。
所以我一直很好奇那个事 , 就反正之前我不是在写那个 VPN 的时候 ,在左右写一些 C 的一些样本的代码来写 ,在 C 里面就真的只有加前缀这种方式来做 namespace 嘛 。
这么怎么说呢 , 就是 C 隐藏局部变量或者局部方法的呃的的策略 ,是把它放在一个文件里面 , 就是如果你不希望这个东西被别人看到 , 那你就不要把它放在那个可以被别人 include 的东西里面 。
不 ,但是你你那个 ,但是你那个是对对外部调用的 ,但你对自己使用的 , 你没有办法在 C 的同一个这个程序里面 , 你自己造一个不同的 namespace 出来吧 。
呃 , 基本上没有什么太太太好的 。
所以就只能加前缀了 。
对 , 它有点像
这个比喻不恰当 , 应该就是它比比较像比较像 Python 的同一文件里面 , 你是没有办法通过一个语言的机制来限制自己说这个东西不要被别人访问到 , 或者说这个东西不要跟别人撞名的 。
Python 可以啊 ,Python 是基于文件的 , 每个文件都是一个 。
我我刚才就说了 , 它在同一个文件里面 。
啊啊啊 ,OK, 就对 C 来说它不分区不区分文件嘛 。
对 。
就文件不是一个边界嘛 。
对 , 它诞生的状 , 它诞生的那个年代它没有这个需求嘛 , 所以它没有办法预见到这一点 。
所以现在就只能加前缀 , 这种最蠢的方法导致那些名字都看起来挺奇怪的 , 或者不干净嘛 , 至少 。
对 ,而且另外一个原因我觉得可能也是没有人试图用 C 的这种没有命没有 namespace 没有 namespace 的语言来构建一个如此 。
超大型的应用 。
很大的操作系统级别的 framework, 对吧 ? 因为系统 API 本质上它是一个非常巨大的软件工程产品 。
对 。
而目前现有操作系统里面几乎只有苹果在用这个没有 namespace 的东西吧 。
那个 C# 啊 ,C# 也有 namespace 啊 。
不对 ,C# 之前 。
C++ 有吗 ?
C++ 肯定有啊 , 你看那个那个非常呃 sorry, 我我不是要吐槽 C++, 这里是要说那个两个冒号 。
啊 , 对对对 , 两个冒号 。
那个操作符 。
STD 嘛 ,standard 的冒号冒号什么什么 。
对 , 它它是 namespace 的分个符 ,但我想说的不是这个 ,是而是 PHP 里面这个东西有一个专门的称呼 , 叫什么来着 ,是希伯来语写的 。
我懂 。
就是如果你在 PHP 里面打错了两个冒号 , 我很有可能记错了 ,但是呃就会出一个操 , 就是那个出来的错误提示里面 , 管这个两个冒号的称呼是一个很奇怪的名字 , 然后去查的话你会发现它是希伯来语 。
就是这个两个冒号这个符号是一个专有名词 。
对 。
啊 , 好吧 。
我还是想到了 。 对 。
我知道 ,是骰子的四点 。
四饼 。
四饼 。
对 , 然后然后
五饼符 。
哈哈哈
。
好了 , 我来查一下那个叫什么了 。
嗯 , 你查 。
呃 , 这个东西叫做 PHP expects tpamayimnekudotaim。
What the fuck, 怎么写 ?
呃 ,P-A-A-M。
P-A。
对 ,P-A-A-M-A-Y-I-M, 然后空格 。
等等等等 , 你等会儿 。
N-E-K-U-D-O-T-A-Y-I-M。
哈哈哈
, 这 。
对 , 然后这个东西是希伯来语的两个两个冒号 , 对 , 希伯来语的四饼 , 没错 。
哎 , 怎么为什么会是希伯来语 ? 那个谁是希伯来人吗 ?
对啊 。
谁啊 ?
就那个发明者叫什么来着 ? 嗯 。
啊 , 作者是希伯来人 ? 犹太人 ?
作者是犹太人, 对 。
OK。
对 , 然后这个东西学名叫 Scope Resolution Operator,其实跟 C++ 是一样的 。
所所以我们做一个中文版本 , 我们叫 TSI/BIN 这个错误吧 , 四饼错误 。
没错 。
好了 ,不扯淡 。
那我们赶紧翻篇吧 。
好 , 翻篇 。 翻篇是那个 Parse 是一个移动应用的后端程序服务 。
Parse关闭1:13:40
Reddit 上有一个板块叫做呃 Explain Things Like As I Am Five Year Old, 就是假设我只有 5 岁 , 然后请用 5 岁小孩能懂的语言来给我解释这是什么东西 。
哎 , 我放弃了 , 你来解释吧 。
哈哈哈 。 呃 ,Parse 是个怎么说呢 , 就是
嗯 , 就在你在写一个移动应用的时候 , 你会有这样的一个需求 , 就是你会需要说我需要给呃 , 我需要有一台在网上的服务器给嗯我的用户发送 push notification。
不是 , 这个词它其中一个功能 , 它有很多其他功能 。
对 。
比如说存那个那用户数据啊 。
对 , 然后与此同时我还需要把用户的一些呃传上来的数据存在某一个特定的地方 , 然后所有这些我就是比较传统或者比较嗯嗯正常的实现方式是我自己去买一台服务器 , 然后自己在这个服务器上写一些提供完成这些功能的程序 , 对吧 ?
所谓的服务端嘛 。
对 , 然后 Parse 这个东西就是把这一块给你做成一个服务了 , 就可能之前你用烤披萨来打比方的话 , 你可能之前需要去自己和面 , 自己去弄烤炉什么的 , 然后 Parse 这个 Parse Server 这个东西就相当于一个披萨店 , 对吧 ?
你只需要进去 , 然后你拿披萨出来就可以了 , 然后这个披萨就是一个专门给用户用的一个服务 。
对 。
呃 , 对 。
啊 。
然后它怎么了 ?
它之前是一个独立的服务嘛 , 很多人用它觉得就是很多那个前端那个应用开发者他们不具备这个 , 或者不想去自己维护一套后端 ,因为挺麻烦的 , 对吧 ?
你要考虑什么扩展性 、 稳定性 、 维护的问题 , 你你就怎么两个人的小作坊 , 你写一个前端应用已经够苦哈哈的 , 你还要再去自己维护一个后端 , 就就很想死嘛 , 就找这么一个 。
劳力劳心又又又又伤害钱包 , 对 。
对对对 , 所所以就有这么一个第三方的服务 , 把所有内容帮你把后端搞定 , 我提供一个统一的这个 API 的接口 , 你直接访问就可以了 , 对吧 ?
那国内也有人在做这个事情的嘛 , 然后待会再说啊 。 然后后来这个服务被 Facebook 买了 , 就这个这个团队被 Facebook 收购了 , 呃 , 然后然后最近 Facebook 决定把它关掉 。
然后他们就关门了 , 对 。
还还还没有吧 , 应该是到几月 , 就是今年还有 。
他们就宣布自己要关门了 , 对 。
对对对 ,因为这个不是这个核心应用嘛 , 毕竟 。 然后很多 。
这就是为什么不要把自己的公司卖给 Facebook。
不 , 对对 , 这个公司的人他肯定是赚到了呀 , 就起码从那个财务上来讲还是出入来讲都是好的 ,但是对那些用了这个 Parse 服务的这些应用开发者来说就比较苦逼了 。
好吧 , 这换一个说法 , 这就是为什么你不应该 , 就这是为什么开发者不希望看到自己使用的服务被卖给那大公司 。
对 ,不要卖给任何大公司 ,Facebook、Google 都不要卖 , 你卖了基本上正常情况下 。
因为你就交到别人手里了嘛 。
正常情况下两年之内就会就会用不了了 。
对 。
嗯 ,其实这个这个点回到一个事 , 就是说就怎么 Parse 这个算是怎么说呢 , 算是一个算是一个 Software as a Service 吧 , 算是一个 SaaS, 对吧 ?
对于对于这个应用开发者来讲 ,因为过去你要可能要搭你去租那个公那个什么公用云嘛 , 你算是租一个 IS 的平台 , 然后自己搭一套东西 , 或者说你用这个呃不 , 它是应该是 PaaS Platform as a Service, 嗯 , 或者说你去租这个像那个其实之前也很火的那个就是 App Engine 嘛 , 就是 Google 出的那个 App Engine, 国内也不是有一大堆在在模仿的嘛 , 什么什么新浪的 App Engine 啊
, 什么美团也在搞这个 , 我也不知道为什么 , 还有什么腾讯啊 , 都在还有那个都在做这一方面的 , 还有阿里现在阿里也在做这个事情 , 就是你用这些第三方的 PaaS 的时候都会形成一种绑定关系 , 对吧 ?
你你就那个接口就那样了 , 如果它它那个接口或者它那个功能别家别家没有提供的 ,以后你就不能迁移 , 或者不能很方便的迁移 。
但是说如果你自己搭的话就不存在这个问题 ,因为那个 IS 层那个服务器大家都一样 , 对吧 ? 都是跑到一个那个 Star 发行版 , 然后你自己装什么 GX 啊 , 你自己写客户端 , 就那些是一个标准的 ,但是 PaaS 很多都是一个非标准的呃的东西嘛 。
然后这个时候你作为一个这个开发者 , 你就要在这两个之间做一个艰难的选择 , 比如说想省时间 , 然后省事去用一个非标准的东西以后更难迁移呢 , 还是说你从头从开始就说我以后就为了我的这个这个自己的独立安全着想 , 我要选择一个很标准的 , 就是很多时候就是 IS, 然后自己在写服务端 , 然后自己去维护 , 这么一个两难的选择 。
嗯 。
就其实我觉得没有那么啊那么那么容易这个选择 ,因为很多就不同的这个资源约束情况下不一样 ,有些时候你你不差钱 , 对吧 ?
你你差的是时间 , 那你可能说那我用一些第三方服务能够尽快 , 虽然可能贵一点 ,以后迁起来可能麻烦一点 ,但是我现在能够呃很快速的把我这个应用上线 , 验证我这个市场到底行不行 , 如果不行我就赶快转型做别的了 , 对吧 ?
但有些人说你是觉得这个我以后可能要迁的可能性很大 , 我这个要一定要要保持自己的独立 ,不要被某一个运营商运那个服务商锁死 , 那你可能就要开始就要去考虑这些服务的问题 ,但是呢就会耽搁你的这个产品的开发进度 , 对吧 ?
你可能本来就人手有限的情况下, 你还得分时间分精力去开发这个服务端 , 还要自己去维护 , 还要自己去考虑这种扩展的问题 , 对吧 ?
所以所以我觉得很多人说这个就不要用这种第三方服务 , 我觉得也不是一个不是一个负责任的一个一个一个说法吧 , 就是你还是要分层讨论吧 ,其实就跟 。
对对对 。
对 ,其实就跟怎么说过日子一样 , 你要一个人的话 , 你可能每天下馆子无所谓 ,但是如果你有七八口人的话 , 那可能还是每天自己在家里给大家做饭比较好 , 就专门有人来做饭或者轮流做饭来来要来的经济一点 。
对 , 这还是一个体量的问题 , 就是你你在乎的什么点 。 当然了 , 这个就是说呃答案并非那么显然 ,不过一个很显然的问题就是现在那些用了 Parse 的服那些应用 ,但是又没有人再继续维护的那些应用 , 一旦 Parse 停掉的话 , 那些应用就基本上就就死掉了 , 就没办法再用了 。
然后据我了解哈 , 像 App Store 里面的这个这个这个这个管理政策 , 就是你一旦比如说你作为开发者 , 你一旦上了一个应用之后, 你不去管它会怎么样 ?
苹果不会把你下架 , 对吧 ?
好像是只要你的那个用户 , 只要你的那个 developer 呃 。
就你的开发者账每天接着交那 100 刀 。
开发者身份还在 ,他就不会被下架 , 除非他和就他里面已经就他已经不能在新版的 iOS 上跑 。
但但这种基于服务端挂掉了 , 然后肯定在应用端还是可以就不受影响的吧 ?
不一定啊 , 就是 。
不 , 大部分来说是应该是不受 , 就就是它还是可以那个应用本身可以运行的 , 就在那个 iOS 上是可以运行 ,但是只是因为服务端 , 所以那个应用变成了一个就是一个一个一个鸡肋了嘛 , 没有用了 。
壳子 , 对 。
对 , 所以我就在想哈 , 就是我们怎么就像那个苹果不是老是喜欢吹嘘它自己的那个应用商里面有多少的几百万几千万的应用嘛 , 对吧 ?
高质量的应用主要是重点是有高质量的应用 。
不 ,他他说总数的时候 ,他没有说有高质量这个词 。
OK, 好吧 。
对 ,但是我就在想 ,其实里面很多都是这种所谓的这种垃圾应用嘛 , 就没有办法再那个了 。 这个时候怎么办呢 ?
还站在那个一个坑位啊 。
没错 。
所以就是就其实我觉得 App Store 还是有一种应该有一种那种 ,因为因为你审核的时候 , 你是其实是要去验证那个服务能不能用嘛 , 对吧 ?
那个审核人员 。 但是我就说那是不是可以说你这个应用每隔一年要 review 一下, 看它到底还能不能用 , 如果没有用那种僵尸应用是不是就可以该下掉了 , 就下掉了 , 然后把那个那个名字那个位置空出来 , 让别人接着用 , 还是怎么样 ?
嗯 , 主要是这个测试比较困难 。
不 , 就它测测试困难倒不是困难 , 就审核这个机制已经有现成的嘛 , 只是说成本的问题 , 对吧 ?
你本来现在就忙不过来了 。
对 , 我说的就是这个 , 就是你不可能说以每一个应用每隔一段时间都要让审核员自己手动去点一遍嘛 。
那三年省一下可不可以 ?
我觉得这个应该是用用户可以直接反馈 , 就最好能有一个比较简单的反馈功能 , 然后用户发现说这个应用不能用了 , 反应一下, 对 , 然后就然后那边就直接挂起来了 。
就那个什么 , 这个苹果给开发者提一个提一个这个通知 , 说你最好在什么半年之内解决这个问题 ,不然就下了 。
对 , 这是一个比较好的方法 。 而且其实这个这个正就这个问题并不仅仅是对于使用 Parse 这样的服务的的应用存在的 , 可能有些服务它是使用一个自己搭建的后台服务器 ,但是这个后台服务器也就没了 。
公司倒闭 。
对吧 ? 它也就那样了 。
对 , 对 , 所以这这其实是一个这这个是个管理问题 , 我觉得 。
对 。
就是需要去这些这些应用商店的管理者就需要去把它解决好 , 然后给一个用户相对来说干净的 ,但是这样的话他就不能去去 boss 的 , 就不能去吹嘘他的那个应用商店里面应用数量的 ,因为一看可能如果真的这么一干 , 发现一大半都已经没有了 。
嗯 , 数量比较怎么说呢 , 就是你分母足够大 , 那分子就是你你基数在那了 , 那你可能存活下来的好应用的概率就比较高嘛 , 所以基数还是有意义的 。
嗯 , 可以可以给什么苹果提一个这个建议是吧 ?
对 , 呃 , 对 ,Parse 这件事情有一个好处 , 就是它在关门之前还是给了一个给你给了你一个善后的方案 , 就是你自己去弄一个服务器 , 然后把它的那个这一套东西跑在你自己的服务器上, 然后可以用比较小的成本来迁移 ,因为之前 Parse 的那个接口做的还是不错的 , 就是基本上没有什么太跟 Parse 本身相依赖的东西 , 所以就是基本上你最理想情况下, 你只要
在自己的前端换一个那个服务器的的地址 , 然后整个也就迁移过去 , 就等于自在自己的服务器上 serve 了一个 Parse 的那个 application, 然后专门用来呃服务你的这个 app。
对 ,他他们那个这个他们叫做啊 Parse open source server 吧 , 就 Parse 开源服务器 , 然后它是用这个勾写的 , 然后就还部署起来好像还挺我看了下还挺简单的 , 反正就是一个 binary 丢上去 。
What?
啊 ?
是啊 。Parse server 是 JavaScript 写的吧 ? 不是吗 ?
不是 ,Parse 那个 open source server 是勾写的 。
OK。
然后你再把搭上什么 MySQL, 然后那个 Redis 之后, 反正也凑合能用吧 , 能能够让你再弄 ,但就没有那些 Parse 的 , 比如说自动伸缩啊 , 然后那个就是有人帮你维护啊 , 这种事情你就要自己解决了 。
OK。
所以就并不是那么美好 ,但是至少给了你一条出路 ,不像有些服务关了又关了 , 你也没什么没没给你什么替代的方案 。
你只能在那边哭诉什么老板皇后不是人 ,是吧 ?
什么老板什么卷款跑了 ,不管我们 。
清仓大转卖 。
GitHub变动1:25:31
对 , 好吧 , 那个 Parse 的事就讲到这 。 还有个事是也是一个程序员我们常用的一个东西啊 ,GitHub 最近又怎么了 ?
这是一个隐忧 。
悲伤的故事 , 悲伤的故事 。
它不是一个怎么说呢 , 悲伤也没有 ,但是它会让你觉得呃 , 既就是怎么说 ,有一个非常中文里面有个非常经典的 expression。
叫什么 ?
Anyway, 就是类似就是你被别人牵着走 , 或者说你把自己的身家性命托付在别人身上 ,是比较呃呃撤轴的一件事情 , 就是你你就反正先说这些新闻吧 , 就是 GitHub 最近有一个呃管理层面的新闻 , 就是他们中层管理不 ,他们的中层管理被搭建起来了 , 然后高层管理人员有一部分在出逃 , 呃 , 然后底层也有很多人辞职了 , 原因就是 GitHub 因为现在体量越来越大
, 就是它它不再是一个早期的那种像像一个西部牛仔的这么一个公司了 , 它现在已经不是有几亿美元的那个 , 我是不是说太多了 , 就反正它应该是现在是一个身价非常高的啊 ,2 billion, 对 ,2 billion 美元的公司了 , 对吧 ?
然后呃 ,在这种情况之下 ,其这创始人叫什么 Van Strauss,他想要 Chris, 对 ,Chris,他想要让公司保持效率 , 所以他又请了一个顾问来 , 顾问叫什么来着 ,是个好像是个印度名字 , 然后这个顾问呃就帮助他设计了一套全新的管理结构 , 然后这中管理结构里面最重要的一点就是引入了中层管理人员 。
我们知道 GitHub 之前是一个比较所谓 flex 的一个一个管理结构 , 就是基本上大部分人都是平等的 , 你汇报的话 , 你可以直接去找什么 CTO 或者是 CEO 汇报 , 对吧 ?
但是现在他要引入中层管理的话 , 那就意味着现在有就像一个军队一样会有指挥层级了 , 然后这一点就让很多人不爽 , 呃 ,不管是原来的顶层的管理员还是呃管理人员 , 还是底层的开发人员 , 嗯 , 呃 , 然后很多人就走了 。
其实这就是一个典型的一个什么创业公司转向成熟公司 ,由那个创始人创始团队转向那种成熟的这种职业经理人的一个过程嘛 , 就是 。
青春期嘛 , 我觉得就是这基本上就是叫企业青春期嘛 , 你从一个小企业成长到了一个大企业 , 然后你会发现你不得不应对一些成人世界里面才有的困扰 , 你导致你以前就假装这些困扰不存在 , 然后就要搞这么一套 , 对 。
但就这在这这个过程中很容易就是那些这种这种所谓的创始 ,其实我们觉得它是一个小团队 , 它是一种什么有种锐气 ,但其实你会逐渐看到它不管在产品的发布上面 , 还是在公司的这个管理上面 , 都逐渐就是迈入呃中中年那种感觉 , 就很多人觉得不爽了 , 要么创始人团队走了 , 然后用一些核心用户也逐渐去就离开了嘛 。
前段时间还出了一个什么事 ,是有一对有一个什么公开信啊 , 公开信说是要是要这个那些开源的那些大的开源软件的集体撤出那个 GitHub 转去别的地方 ,因为他们提出的要解决他们这种开源软件 ,因为大开源软件它管理方式和那种小公司的那种私有代码还是不一样的嘛 , 对吧 ?
包括这种在在 issue 啊 ,ticket 上面的管理上都不一样 , 然后他们提出很多这种需要改进产品上需要改进的点 , 这个 GitHub 都没有响应嘛 , 然后他们觉得我靠 , 我们不在这里玩了 , 对吧 ?
我们这个都是开源的 , 你自己你自己又不开源 , 然后我们提的问题你又不改 , 我们去别的地方不和你玩了 。
然后最近他们又出了一个什么回应说啊 , 我们都听到你们意见 , 我们要我们要我们要痛改前非 , 我们要改 , 然后又出这么一个事 ,其实有时候不是特别好的征兆吧 , 对这个平台来讲 。
GitHub 公众形象其实一直还好 , 我觉得 。
不是那么不 , 虽然不是那么的呃亲民 ,但至少还 OK 吧 , 至少在开发者眼里面 ,GitHub 是一个非常酷的公司 ,但是最近的确有了几件不酷的事情 , 然后你就会心里面会有个隐忧 , 就是会说我靠 , 如果明天 GitHub 不好用了 , 我应该去哪 ?
好像放眼整个互联网没有什么更好的地方 。
有有有有挺多的 。
你觉得是这样吗 ?
啊 , 除了那个 Bitbucket, 然后那个 GitLab 最近也开了类似的 。
GitHub 是一个什么 GitHub?
不是 , 它是它最开始的时候是你要自己自己就是 self host 嘛 , 你自己要自己装那个 , 然后现在也开了那种就是公开的托管平台了 。
哦 , 真的吗 ?
是免费的 , 对对 。
好吧 。
就其实你可以去试一下哈 ,他们说那个还不错 , 我也上上次看了一下觉得还挺好的 , 反正如果等那个 GitHub 玩不下去了 , 就迁到那边去呗 , 那个又没什么太大影响啊 。
好吧 。
倒是苦了我们这些用 Go 语言的人了 , 所有那个 import 路径要改一遍 。
哈哈哈哈哈哈 。
这就是对 ,其实我总觉得这个 Go 吧 ,GitHub 做到就做到原生支持专门的这么一个私有公司的网站还是有点有点过了 。
不 , 它不是叫它这这个要解释一下, 它其实也不是说把 GitHub 做的原生支持 , 它是说把那个就它把那个概念 , 嗯 , 就怎么样 。
它为了简化你的 import。
就有两个有两个政交的概念嘛 , 一个就是说你的这个 import 名字和这个 import 东西的它所在的这个物理位置 , 它把两个合一了 ,但其实在一般情况下这两个应该是应该是分开来的 , 对吧 ?
你 import 了一个 package,但是你不应该去考虑说这个 package 是 host 在哪里的 。 但是 Go 的设计者觉得 。
做一件非常非常自作聪明的东西 , 它会帮你去猜这个东西 。
但你你觉得这个是自作聪明吗 ? 我其实我觉得它还是有些它合理性的 。
好吧 。
就我觉得它合理性在这里 , 就是说如果说你你不把这两个合一的话 , 你就会引入一个单独的问题 , 就是说谁最终决定这个你 import 那个那个那串字符串的唯一性呢 ?
其实这里是一个这是一种这是另外一种形式的所谓 convention over configuration, 就是如果你 。
哎 , 没错 , 对 。
如果你不如果你不让它自己去做这件事情的话 , 那你就必须手动的显示的声明说你要去 GitHub 找这个东西 ,而这个而这一步实际上是非常让人讨厌的 。
对啊 , 就是很多包管理就就就卡在这里嘛 , 你要解决各种各种麻烦的 , 就要去选择到底在哪里找这个包 , 会会不会要有一个集中的一个包管理 , 比如说我们现在看啊 , 比如说 Python 有那个叫什么 PyPy 吧 ,PP PyPy PyP,anyway,Python package index, 对吧 ?
这个是一个集中的服务 , 然后 Ruby 有那个叫 Gem 那一套吧 ,也是这样子的 , 甚至你说像 Mac 我们常用那个 Homebrew, 它也是它虽然是用 GitHub,但是它还是有一个集中的一个包管理 , 就会有一个中心化的东西嘛 。
但是 Go 那样的话 , 它其实有个好处 , 就是它可以就是去中心化 , 它不存在一个所谓的唯一的或者叫做 official, 就官方的一个包的一个一个列表 。
嗯哼 。
对吧 ? 所以就是我觉得说只能说是在这个设计上就哲学上不一样 , 各有缺点吧 ,但是就是会产生一些实际的 complication, 比如说 Go 的 complication 就是如果说你那你那个包的那个管理的地址变了 , 那你可能要重新改一下你的 import 路径啊 ,但是好处就是说你不用受制于这个一个集中化的那个那个包列表的可可用性 , 比如说那个 PyPy 经常有一段时间经常用不了啊 , 就
挂掉了 。
就实际上国内吧 , 国内好多依赖 Python 公司都搭建了自己的 PyPy 源 。
对对对对对 , 所以所以我觉得这个是一个呃 ,也是一个不是那么那么黑白分明的事情 ,是你做的不同选择 。
对 , 这里面也是要见合取舍 。
对 , 承担不同的后果 。
对对 , 我想说的就是其实 Facebook 在几年前也有这么一次转型嘛 ,Facebook 目前活的挺好的嘛 , 希望 GitHub 也能就是虽然它可能背弃了一些开源早期小创业公司青春期的理念 ,但是还是希望它能活得好一点 , 这样你我的生活也会继也也会继续保持一个比较高的水准 。
我很难想象说将来要找一个开源项目 , 还要去适应不同不同的开源呃版本呃开源 hosting 网站的 UI 什么的 , 我想想都头疼 。
对 , 起起码我上次比如说我写这个学这个写 VPN 的时候 , 可以在那个 GitHub 直接搜一下, 然后有相应的关键词就可以找到啊 , 所谓的试炼项目嘛 , 然后可以学习他们怎么用的 , 对吧 ?
对 。
不用再换五五个不同的地方去找 , 然后嗯 ,不一定好用 。
对 。 行吧 , 今天扯了一个多小时, 虽然这期的主题是什么 ?
结尾1:34:28
主题没 。
从 VPN 开始是吧 ? 从 Write all VPN 开始 。 好吧 , 感谢收听 IPN Podcast 网络旗下的 IT 技术主题娱乐节目 《 内核恐慌 》。
我们号称 Hardcore,但是也没有干货 。 想听人听 ,不想听人也别听 。 你可以为我本本节目捐款 , 捐款地址是 cardinalpanic.fm/donate。
捐款金额随意 , 只要是 8 的正整数倍就可以 。 捐款不会给你带来什么 ,不捐也不会让你失去什么 。
我们的口号是 No hard feelings。 呃 , 如果你有任何反馈 , 可以发电子邮件到 cardinalpanic@ipn.li。 同时也欢迎你收听 IPN 旗下的其他几档节目 :《IT 公论 》《 未知道 》《 太一来了 》《 流星通信 》《High Story》《 硬影像 》《 无次元 》《 不智 》《 玄美 》 和 《 陛下官 》。
呃 , 应该说一句新年快乐吧 。
有点晚了 。
好吧 , 给大家拜个晚年, 还没有出 15 呢 。
啊 , 这这这猴年嘛 , 对吧 ?Code Monkey 新年好 。
对 , 呃 , 我们下期节目再会 , 拜拜 。