博客满血复活

中断更新六个月之后,又可以继续写博客了。中断的原因基本上是因为手贱、懒,加上一些额外的状况。

分别说一下三个原因:

  1. 手贱:去年 8 月份的时候,把主机的系统升级到了 Linux 4.x(原先是 3.x)。升级完成之后发现 GCS Fuse 不能用了,导致所有图片加载不出来。
  2. 懒:由于当时工作比较忙,没什么时间研究 GCS Fuse 不能用的原因,就暂时先把图片做了本地备份,让 Apache 可以正常地输出图片。由于当时觉得 Google Cloud 的新功能 GCS Backend 快要发布了,可以跳过 GCS Fuse 直接上 GCS Backend,维护起来也轻松很多。于是打算等 GCS Backend 发布。
  3. 然后 GCS Backend 就跳票了……一直跳到现在终于可以用了。

做了一些调整之后,图片上传功能已经迁移完成。现在所有的图片都是从 Google Cloud 直接输出,不经过我自己的主机。攻击者们也可以不用想着通过下载图片来攻击我的博客系统了。

iPhone 的低电量模式

iOS 9 中新增了一个功能,叫做“低电量模式”,即在电量较低的时候,可以开启此模式以延长待机时间。

iPhone 在电量下降到 20% 的时候会提示开启低电量模式。当然,其它时候想开也是可以手动开启的。

开启之后,iPhone 会停用一些功能,比如 Siri 和一些视觉效果;并减少后台刷新的频率。后台刷新并非完全停止,所以一些消息提醒什么的,还是会出来的,只是延迟长一点。

低电量模式可以有效延长待机时间,在玩游戏的时候或是充电的时候,不妨开启此模式。虽然效果比不上飞行模式,但却是一个非常好的平衡。

最后有一个小提示,iPhone 6s 等支持 3D Touch 的手机中,使用 3D Touch 按住“设置”的图标,会出来电池选项的菜单,进而可以快速开启低电量模式。

Pokémon Go 中的省电模式

Pokémon Go 可以算得上手机电量评测工具了,我现在用的 iPhone 6s Plus 大约可以坚持 4 到 6 小时,电池差一点的手机大概两小时就要充一次电,非常影响游戏体验。

开发团队自然也考虑到了这一点,于是 Pokémon Go 中自带了省电模式。开启方式如下:

它的作用是,开启之后,当手机头朝下的时候,屏幕会自动变暗,以达到省电的效果。这一功能在拿着手机跑步找小精灵时非常管用。演示图如下, gif 格式,4.3MB。

把电影嵌在网页中

我一直在寻找一种在网页播放视频,但又不过度消耗主机流量的方式。非盈利站点在流量上耗不起,YouTube 多少年了还没怎么盈利,就别说个人站点了。

WebTorrent 项目看上去很有趣,它可以直接在网页上播放一个来自 BT 的视频文件。由于 BT 的点对点特性,主机其实基本没有流量消耗,在播放视频的同时也解决了流问题。

以下视频是一个测试,视频源来自 WebTorrent 首页上的展示视频:寻龙记(Sintel)的宣传片。由于采用了 BT 技术,下载速度取决于你所在的地区和周围 BT 用户的情况,并不能保证流畅的观看体验。如果你可以正常观看视频,请留言。


支持广电总局对英语用词的限制

**本文只讨论语言的使用问题,无关手游审查的新规,也不是给广电洗地,喷子请绕行。

事情的原由是广电对手游中英文用词的限制, 附上 V2EX 的讨论贴。简单来说,广电总局对手机游戏中出现的一些英语用词,比如 "new"、"warning" 等作了限制,一旦使用则不能上架。

这个规定自然会有一大堆人反对了,因为他们的游戏不能上架,不能赚钱了。但撇开商业因素来看,这个规定并没有什么不妥。在一个中文环境中使用英文(或其它语言),无非两个原因。一是觉得英文高大上,二是暂时没有公认的中文翻译。第二点通常出现在专业领域,大量的专业词汇来不及翻译,只好引用原文,这个之后再说。先来说说第一点。

凭什么英语就比中文高大上了,凭什么“new”就比“新”高大上,凭什么“warning”就比“警告/注意”高大上。这种想法是一种直接的崇洋媚外。对于这些已经有公认翻译的词汇,使用中文来表达它们的意思,并不影响理解,也不会产生歧义。非要究其原因,只能是因为使用者觉得英文高大上,而中文不入流。

举个例子,如果博主也实行这种做法,那么本博客很有可能是这样的:

Today 我来和大家 introduce 一个新的 technology,它的名字叫 metadotblahtology。使用了这种新的 methodology,程序员写 code 可以更加 efficient,商业公司也可以更 profitable。

显然,多数人不喜欢阅读这样的文章。如果你不能接受这样的文章,那么为什么你可以接受在一个中文应用出现几个英语单词呢?大概是因为你能读懂那几个英文单词吧。大概是因为你“只”能读懂那几个英文单词吧。如果你觉得大量的英语对你是一种侮辱,那么少量的英语也会对那些完全不懂英语的人造成伤害。五十步和一百步的关系。

至于一些品牌或者缩略语,比如 NBA 和 FIFA,如何译成中文。这也是一部分人喷广电的主要依据,因为译成中文就很别扭。比如 NBA 可能会译成“美职篮”,FIFA 大概就是“世足联”了。这是翻译人员的问题,而非语言本身的问题。有一些国际品牌一样有着优美的中文名,比如 BMW “宝马”、Benz “奔驰”、HP “惠普”等。即使没那么优美,一些常见品牌的中文名也是早已耳熟能详了,比如 KFC “肯德基”、McDonald's “麦当劳”、Coke Cola “可口可乐”等。这说明只要用心想,用力推广,大多数中文译名都是可以被接受的。如果 NBA 足够重视中国市场,FIFA 的下一任老板想多贪一点,他们一定能捣鼓出大家都能接受的名称。

至于一些极端的例子,比如“道具 x 1”中的“x”也被算作是英文。这个只好认为是矫枉过正过程中的误伤。“矫枉过正”虽然指的是不好的事情,但实际操作中却又经常发生。举个例子,把一张有折痕的纸捋平,常见的做法是沿着折痕向反方向折一下,再回正。而“向反方向折一下”折一下这个动作,即为“矫枉过正”,要不然纸永远不会躺平。

从广电的角度来说,如果它不严格一些,摆出“矫枉过正”的态度,势必会有人偷工减料,懒得把一些英文改回来。而在矫正的过程中,广电躺枪也是必然。

总结,我支持在纯中文环境中使用纯粹的中文,也支持大家在纯英文的环境中学习英语,但请不要学了一两个英语单词就出来显摆。我希望中文能重现唐宋时期的辉煌,而不是像现在一样常用词都要向外语借。

ZeroNet 将会成为下一个失败品

ZeroNet 最近很流行,特别是在中文用户群中。ZeroNet 是一种分布式的互联网,它不像传统互联网那像需要一个一个物理的服务器来架设网站,而是每一个用户都可以作为服务器,储存一些数据并且分发给其他用户。具体的介绍不多说了,一搜一大堆,就来说说为什么它一定会失败。

我大概在 2001 左右第一次接触到网络,从那时候开始,就不断有新闻提到分布式计算,或者用现在流行的词来说,“去中心化”的系统。而随着时间的推移,这些系统没有一个成功的。

印象中最早的一个是寻找外星生命的项目 SETI@home,这个项目目前还活着,并且是已知的所有分布式计算项目中最活跃的一个。据今年一月份的统计,SETI@home 有超过 500 万名活跃用户。这个数字看上去很多了,但是呢,微信的每日活跃用户也超过了一亿。也就是说,每 100 名微信用户才有一个参与的,你的好友中可能都没有一个人听说过这个项目。

当然,分布式项目中也有参与人数多的,比如比特币,2013 年火暴的时候妇孺皆知。但是呢,今年一月份比特币核心开发者宣称比特币失败。而最近一次的炒作中,90% 以上的交易量发生在中国的比特币市场,足以证明一个“分布式”项目的失败。

ZeroNet 是最近一个分布式的尝试,但它也逃脱不了失败的命运。

原因很简单,没有商业公司支持。之前提到过,没有商业公司支持的项目,不可能胜过一个有商业背景的项目。而一个商业项目,没有必要完全去中心化。

或许你会不同意,看,BitTorrent 项目就活得很好,大家都在用 BT 下载,而它本身也是由一家同名的公司支持的。对,BT 一个非常流行的技术,但是,你听说过迅雷离线下载么?虽然现在下载依然依赖 BT 种子,但一般我的做法是把种子下载下来,传到迅雷上去,然后再通过迅雷离线下载下来。迅雷的服务器提供了比 BT 节点快得多的速度,完全没有必要使用纯粹的 P2P 下载。我相信大多数网友(至少是中国网友)都是这样做的。对 P2P 特性的依赖已不复存在。

不要提 Tor,Tor 并不是分布式项目。尽管 Tor 有自己的暗网(Darknet),暗网中的每一个网站和互联网的网站是一样的,都是依赖于一台(或几台)中心服务器,没有分布式的特性。

回过来说说 ZeroNet。ZeroNet 的愿景是发展出一套和互联网平行,完全分布式的网站系统。这个系统中每个网站都分散在各个网友的电脑中,只要有网友在线,网站就永不下线。

然而,这个系统有一个致命的问题:成本。目前 ZeroNet 的存储策略是这样的,当你访问一个网站的时候,就是把这个网站的所有内容下载下来,然后把这些内容重新分享给新用户。从冗余的角度来说,一个网站有多少用户,就存在多少份数据冗余。当然等到 ZeroNet 发展壮大了,必然不会每人都存一份。我们就假设冗余量是 1000,这个数字其实很保守了,考虑到用户的平均在线时间、地域分布等,要保证良好的访问速度,实际的数字肯定会比这个高。然后我们来看一下互联网的总量是多少。有消息说,Google 一家的数据量是 5EB,就是 50 亿 GB。而互联网网民总数目前是 30 亿左右。以 1000 冗余量存下 Google 所有的数据,需要平均每个人 50 / 30 * 1000 约为 1000 GB 也就是 1 TB 的硬盘。现在一个 1TB 的硬盘售价大约是 50 美元(民用硬盘的价格,商用的更贵),30 亿人人手一个,总价值约为 1500 亿美元。就算一块硬盘的平均寿命是五年,那么一年的平均费用就是 300 亿美元。

作为一家商业公司,Google 花 300 亿来运行它的数据中心,自然是一点问题都没有;然而对于一个非赢利项目,它能用什么方式说服全世界的网民帮他支付这个帐单,我很好奇。实际上,中心式存储的成本反而低,Google 一年花在数据中心上的钱大约是 120 亿美元

如果存不下这么多内容,ZeroNet 就发展不出那么大的规模,没有那么大的规模,如何吸引用户使用。想想现在的潮流,视频、直播、VR,哪一个不需要大容量的存储。没有这些日常所需的娱乐内容,ZeroNet 的发展方向只会像暗网一样,成为法外之地,大量不入流、违法、无聊的内容,久而久之,就没有用户了。

禁用 NUC 的快速启动

Intel NUC 有一个 BIOS 设置,叫快速启动(Fast Boot),我一开始不知道是什么东西,想想“快速”那就快速呗,于是就勾上了。之后就发现,再也进不了 BIOS 设置了。

于是我就知道了,这个“快速启动”,就是指开始的时候跳过 BIOS 选项界面,直接进入系统。而如果想再次进入 BIOS 呢,就要先把“快速启动”禁用掉,然后再开机按 F2。

关闭“快速启动”的步骤在 Intel 官网有写,大致是这样的:

  1. 先完全关闭机器,不能是休眠之类的;
  2. 开机的时候按住开机键不放,直到听到三声“哔”的声音,然后放掉开机键;
  3. 这时“快速启动”已关闭,可以按 F2 进入 BIOS。

我一共听了十次共 30 声“哔”…………

然后继续搜了一些其它资料,一位 Intel 员工在一个贴子里透露了一种暴力的方法:

  1. 先关机;
  2. 按下开机键,电源灯亮了之后,直接拔电源;
  3. 然后把电源插回去,开机,就可以按 F2 进 BIOS 了。

好吧,Intel 你赢了。