Unblock Everything

平时经常使用网易云音乐听歌,但是经常遇到“版权受限”的提示也够烦人的。要解决这个问题,简单的做法可以直接去装一个Unblock Youku的插件,复杂一点的可以用GoAgent加上放在国内PaaS上的服务器端搭一个本地代理。这两种办法的本质差不多,都是绕经国内的代理服务器进行访问。虽然这些方法都能work,但是都有一个共同的缺点,那就是普适性不高。Unblock Youku和其它代理性质的扩展有冲突,虽然并不是完全不能解决,但是折腾起来也是够呛;而GoAgent的PaaS实现在移动端上几乎不可用,我在Android平台上找了好久都没有找到一个能用的办法,更不要提iOS了。如果要说最好的解决方法,就是能在大陆有一个能放代理的服务器。这样PC端可以用ProxySwitchy来切换,Android有ProxyDroid,iOS则可以直接在系统设置里设置全局代理。

以目前国内的网络环境来看,单独拥有一台常规VPS的成本并不低,每个月费用大约在几十到上百不能,如果只是用来做偶尔的Unblock的话,未免成本太高。我知道的一个低价的,接近VPS的解决方案,是使用百度的BAE 3。

BAE 3相当于一个没有root权限的VPS,前提是你能申请到Port权限。所谓Port就是一个能在百度的IP上给你做端口转发的服务,能够在一定程度上将原本只能使用HTTP访问到的虚拟机,暴露给外部的网络。如果能够申请到Port服务,就可以用SSH登录到虚拟机上,虽然没有root权限,但是跑一个Python写的HTTP/SOCKS/SS代理还是没什么问题的,如果偷懒直接跑SSH也不是不行。由于负载很低,我们选择最便宜的128M内存Python Worker配置,加上端口服务每天的费用是0.3元,这样一个月9块钱,基本上啥都能做了。

BAE 3的缺点在于目前Port服务还在测试中,如果要使用的话需要额外申请。我当初申请的时候,还不算很难,现在的话就不太清楚了。不管难度如何,需要额外申请毕竟是一道门槛,不算普适性的解决方案。

仔细思考了一下,对于像我这样在搬瓦工上有VPS的情况,一个廉价、方便的解决方案并非没有。其实我大概想到了两个解决办法:

  1. 在国内的PHP空间或者PaaS上部署GoAgent的服务器端,然后在搬瓦工的VPS上部署客户端,让客户端监听广域网上的请求,这样就相当于有了一台出口IP在国内的HTTP代理服务器。
  2. 在国内的PaaS上部署一个“反向代理”客户端。这里的“反向代理”,并不是指Nginx这一类的反向代理,而是指让服务器主动连接客户端的代理服务。由于大多数的PaaS服务大多只会暴露一个经过层层转发只能跑HTTP的80端口,根本监听不到任何客户端发来的Socket请求,所以没有办法做代理服务器。但是,通常情况下PaaS对于从代理服务器出来的Socket连接往往没有什么限制。因此我们只要在PaaS上部署一个反向代理,让PaaS主动连接搬瓦工的VPS并建立Socket连接,再在搬瓦工上建立一个转发服务,将某个端口上的流量转发到这个PaaS连过来的Socket连接上,我们就相当于有了一个端口在搬瓦工VPS出口却在国内的代理服务器。

两种方法各有优劣:

第一种方法:优点是实现起来比较简单,比如GoAgent就算一个Implementation,自己基本不需要写什么代码,只要搭一下就好了。此外对于两头的环境要求不高,国内端找个能跑PHP的空间就行,PHP基本上是个PaaS都会支持,就算去淘宝上买一个也很物美价廉;而VPS端只要能支持Python即可,Python又是几乎所有Linux发行版里都自带的组件。两头的环境都是非常常见,非常好弄的。缺点在于只支持HTTP,HTTPS的话就要导入根证书,有潜在的安全风险,Socks的话则根本不支持。

第二种方法:优点是支持什么协议都可以。由于是建立在Socket上的,不管是HTTP、HTTPS还是SOCKS甚至Shadowsocks,想支持都是可以的。缺点在于国内端不如第一种方法来的方便,PHP肯定是不行了,得是能跑Worker的Python或者是Java才行。此外这种方法网上并没有现成的实现,得自己写代码(目测大概得1000行左右)。

两相比较之下我选择了第一种方法,毕竟从现在的需求来看,对两头环境的宽容度比较重要。虽然只支持HTTP协议,但是目前国内的网站很少有强制HTTPS的,在可预见的时间范围内,应该不存在不够用的情况。

具体到实现上,虽然GoAgent是我一开始想到的做法,但实际上比较之后我还是选择了WallProxy. 原因有二,一是GoAgent本身还是给GAE用的,PaaS的部分只是顺带做了一下,支持的并不完善;相较之下WallProxy则要好得多。二是WallProxy在浏览器代理端支持使用用户名密码进行验证,虽然只是一个防君子不防小人的验证但毕竟总比把代理端口直接暴露在广域网上要好一些。

总体而言部署还是很容易的,首先去Github把WallProxy的repo给checkout出来:https://github.com/wallproxy/wallproxy,注意选择master分支。然后在国内端只要把WallProxy里的index.php放到空间里去即可,为了防止被滥用也可以在index.php的头部设置一个密码。VPS端跑的相当于是WallProxy的客户端,需要对proxy.ini进行一定的修改。

由于我们并不需要使用WallProxy的GAE特性,那些所有和GAE,PAC有关的功能统统可以关掉了。我们要关注的其实只有两个地方,第一节是[listen]段

ip = 0.0.0.0
port = 8086
username = xxx
password = xxx

其实就这么几个参数,ip改成0.0.0.0让它能监听广域网请求,端口看着设,用户名密码则是代理端需要输入的,随便设就好了——HTTP的代理用户名密码都是明文传输的,这也是我说这玩意防君子不防小人的原因。另外一个原因是如果不设置用户名密码的话,被搬瓦工看到你有一个公开的代理端口会被直接关端口,所以还是设一个比较好。

[paas]
enable = 1
password = 123456
;listen = 8088
fetchserver = http://demo1.app.com/

[paas]这一节设置成enable, 密码设置成和之前php里一致即可,listen注释掉,我们在之前[listen]一节里已经设置了监听端口,这里的listen端口就不需要了;fetchserver设置好php的地址,再把剩下的所有配置节中,包含enable的全部设置成0,也就是disable掉所有其它的feature,我们的VPS端也就配置好了。只要用

python startup.py

一个用VPS中转的,出口IP在国内的HTTP代理服务器就搭建完成了。当然还有一些扫尾工作可以做,比方说在开机脚本里把刚才的命令加进去等等,就不多说了。

Screen Shot 2015-02-28 at 17.55.39

PHP这一端我用的是新浪的SAE,IP就是北京电信的。整个系统的结构就是SAE的PHP做服务器端,搬瓦工VPS做客户端,代理端口暴露给外网,我们访问的时候,浏览器会先访问VPS上的代理客户端,然后转发到PHP上,PHP再访问目标服务器,整个访问过程变成了3段。

回到正题。搭建完代理服务器只是第一步,第二步是配置浏览器让它能够Unblock Everything。简单粗暴的做法就是把整个浏览器的代理直接设置成这个,当然我们有更优雅的做法,比方说利用rule来减少代理流量,加快速度(毕竟代理绕了3圈)。我用的插件是ProxySwitchy,当然现在已经改名叫SwitchyOmega,在Auto Switch中添加几条rule即可。我一般常用的就是网易云音乐和优酷,URL分别是

http://music.163.com/*

http://v.youku.com/player/getPlayList/*

Unblock Youku的Pac文件里有更多的规则可以参考,我因为一般需要的就是这两个,所以就配置了这两个Rule,其它的Rule用到了再配。不常用的Rule也可以到时候手动切换走全局代理,也不是什么大问题。

HostUS把服务器搬到洛杉矶了

前两天收到邮件,说要把服务器从vegas搬到LA去,对我来说当然是个好消息,理论上从国内连过去的速度能快上一些。搬好之后测试了一下,发现之前平均185的ping在搬迁后竟然略微上升到了190-200.估计是BGP还没更新,可能要等几天才会好。


今天又测试了一下,已经降到175了,但是和搬瓦工150-160的逆天延迟还是没法比啊。但是搬瓦工最近晚上高峰时间网速很慢,很烦人。


 

再更新一下,其实网速很慢不是搬瓦工的锅,而是因为港大网络的出国带宽不够大,一到高峰时间就堵住了,换成非港大网络就会好很多。

HTTPS & Referer

There are basically two usages of HTTP header “Referer”. One is to trace the origin of the visit, which could be used to analyse the visitor’s browsing path. The other is to identity and block illegal visits to some privately owned web resources, like images & files.

There are some tricky things about “Referer” when it comes to HTTPS. Generally speaking, for safety reasons, a redirect from a HTTPS page to a HTTP page will drop the “Referer” header. Thus, the server will never know where this request really comes from. Some websites use a https-http redirect to bypass the restrictions of private web resources. For example, a webpage quote an image from sinaimg.cn. Sinaimg.cn does not accept requests unless it has empty Referer or the Referer is one of Sina owned domains. To let the browser drop the Referer header, the <img> tag uses a src of https://example.com/redirect?url=sinaimg.cn?xxxxx instead of the original one. The only function of this https://example.com/redirect is to redirect the request to the URL that is specified by the “url” parameter. Therefore, the “Referer” header is dropped and the image file could be visited from other domains.

One known fact about Google is that it uses HTTPS on all of its search results. Most other websites, however, are still using HTTP. As a result, the referer info will be dropped when redirecting from google search result to the webpage. If there is some auto-tracing tools installed on the server, it may never know that the request comes from Google search result.

To solve the problem, two things have been done by Google. One thing is the introduction of “referrer policy” to webkit. Details of it can be found here: https://wiki.whatwg.org/wiki/Meta_referrer. Basically it uses a <meta> tag to tell the browser how to deal with referrers. The current policy used by Google is “origin”, which sets “https://www.google.com” as referrer with no extra information. This is only a little bit better than no referrer, since the tracing tool cannot collect keyword information from the referrer. The other thing is the redirecting page between Google search result and the real target page. Google owned tracing tool, like Google Analytics, can use this redirecting page to collect required data.

What about non-webkit bowsers? Google uses a http redirect page instead of  a https one. This page uses JavaScript for redirecting, not a 301 or 302 redirection. In that way, the target page can collect the correct “Referer” information.

《阿司匹林传奇》——从阿司匹林窥探西方医药的发展历史

当我还在清华的时候,我就在图书馆里读过这本书:小小的一本书,不是很厚,大概两个小时就能看完。阿司匹林是一种用途广泛的药物,主要用途有退烧、止痛、防止血液粘稠。这本书按照时间顺序,介绍了阿司匹林的诞生、发展和现状。不过在我看来,这本书最有趣的地方在于,在介绍阿司匹林发展史的同时,为我们描绘了一幅现代医学的进化图谱。窥一斑而见全豹,阿司匹林的发展史,其实也正是西方医学从懵懂走向科学的历史。

阿司匹林的化学名称是乙酰水杨酸,水杨酸对于上过高中化学的人应该都不算陌生,最早的“阿司匹林”确实也就是水杨酸,只是后来为了减少对胃的刺激进行了乙酰化。在很早的年代,全世界不同地方都有记载嚼食柳树皮来退烧的记录。人们只知道发烧的时候可以食用柳树皮退烧,但是并不知道其中的原理,随着人类社会的发展和变迁,这种缓解发烧症状的疗法逐渐的失传,直到18世纪,它才被人们重新发现,彼时,人们依然不知道其中的原理。到了19世纪,一些化学家开始尝试从草药中分离有效的物质,几次不成功的尝试之后,柳树皮中真正有效的成分——水杨酸被分离出来,而到了19世纪末,经过一系列的实验之后,乙酰化的水杨酸,乙酰水杨酸,被确定成为一种正式的药物,即阿司匹林,开始上市销售。

然而即使是19世纪末20世纪初的药品市场依然非常混乱,秘方药大行其道。什么是秘方药?就是有点类似云南白药这种东西,只告诉你这玩意对什么症状有效,同时选择性的告诉你里面有白芍等名贵中药材,但是又以秘方为名,不告诉你全部的的配方,给你形成一种错觉,就是这个药之所以有效是因为里面的名贵中药材,然而实际上起效的是什么呢?当时西方的药品市场就是如此的混乱,一如现今的中药、中成药市场。书中提到一个例子,当时的阿司匹林开始销售之后,由于制药公司并没有大力宣传,一些私人药剂师就开始往它们的秘方药里添加阿司匹林,但是并不告诉病人里面有阿司匹林,而是宣称里面有神奇秘方。病人吃了之后,确实可以退烧止痛,于是以为是秘方药确实有效的缘故,但实际上起效的,是阿司匹林。但是阿司匹林本身是有副作用的,会引起胃部不适以及血小板减少,血小板减少会使得伤口处血液凝固变慢,如果一个本身血小板就缺乏的人服用了阿司匹林,会有严重的失血风险,而这些风险,所谓的秘方药,都不会告诉你。

中成药也有同样的风险,以太极复方甘草口服溶液为例,说明书上的成分表是这么写的:每100毫升含甘草流浸膏12毫升、甘油12毫升、酒石酸锑钾0.024克、浓氨溶液适量、复方樟脑酊12毫升、乙醇3毫升。看起来都比较正常,主料看起来都是正儿八经的草药,化学品基本上含量不多,应该只是辅料,说明书上也没有说可能有成瘾性,应该是一款很好的止咳中药,真的是中医之光啊!别这么急下结论,我们看看这个所谓的复方樟脑酊是什么:1ml含樟脑3mg、阿片酊0.05ml、苯甲酸5mg、八角茴香油0.003ml。阿片酊,看到这个你也大致猜到是什么了,继续看阿片酊的成分:0.95%-1.05%的无水吗啡+酒精。吗啡作为一种强力的镇咳镇静药,从19世纪就开始被西方医学使用,但是吗啡具有成瘾性,不能长期大量服用,这也是所有含有吗啡的西药里都会有提醒你不能长期大量服用的原因,然而在太极复方甘草溶液这种药里,通过层层包装,让患者难以发现真正起作用的其实还是西药吗啡,而且也没有提醒大量长期服用的成瘾危险,这种做法,和西方医学史上的秘方药,又有什么本质区别呢?

不过对于西方医学来说,值得庆幸的是,这样的做法到了20世纪上半叶,就随着几次因为秘方药导致的死亡事件,而彻底得到了整顿,美国编制了药典来规范所有的药物,禁止成分不明的药物生产和销售,从此秘方药退出了历史的舞台,而明示药物主要成分,进行大量双盲实验确认有效性,进行大量人体实验和长期观察记录不良反应,为新式西药的安全性和有效性打下了坚实的基础。

纵观西方医药史,我们可以看出来,早起的西方医药和现如今的中药一样,缺乏理论依据,药物的研发基本依赖经验,配制药物缺乏定量标准,充斥大量模糊的、描述性的语言,药物药效不稳定,缺少对于副作用的准确描述。而所谓的秘制药,简直就相当于如今中成药的翻版,真正起作用的是西药部分,但是却误导性的告诉你,西药只是缓解症状,真正治好病症的是中药成分。

中医几千年来的核心理论是五行阴阳平衡,从来没有变过,但是五行和阴阳论逃不出迷信的影子,而中医除了自限性的疾病外,基本治不了什么大病。从逻辑的角度看,如果一套理论的基本假设就有问题,那么从基本假设推导出来的结论基本都有问题,这就是为什么我也赞成中医本身的理论部分基本没有任何价值。此外,根据剃刀法则,一套完整的逻辑体系,只需要少量的基本假设,就应该能够得到普适性的结论,然而中医除了基本的阴阳之外,又提出了虚火之类的概念,看上去就像是在地心论之外,为了解释观测与实际的不同,又强行加上了很多本轮的概念。

但是,有一点例外:中药。因为它是直接用于治疗患者的手段,所以它的作用会直接经受患者的检验。我十分赞成,应当对中药进行一次全面的梳理和总结,应用双盲实验,对药物的有效性进行评价;对于那些有效的药物,使用生化技术对有效成分进行分析和提纯,这不仅是对中医本身的一次再发展,也一次能够帮助人类更深刻认识人体与生命的机理的再发现之旅。

一如柳树皮与阿司匹林,中药中有太多的“阿司匹林”有待发现。我希望,已经”闭关锁国“太久的中药,愿意在科学的帮助重新认识自己,绽放光彩。

Android使用Google Analytics v4黑屏

一开始不黑的,后来不知道怎么回事就频繁导致应用黑屏,无响应。网上一搜,发现个这个:

https://productforums.google.com/forum/#!category-topic/analytics/report-bugs/RAgDNYFk6jo

GA as bundled in 6.5.87 is blocking at:
GoogleAnalytics.getInstance(context)
causing ANRs.

Google的回复是

This issue should be fixed in the latest version of Play Services now.

实际上呢?毛都没有,SDK Manager里的最新版就是6.5.87。

Stackoverflow上有人用反编译分析了一下:http://stackoverflow.com/questions/27447805/random-black-screen-when-launching-android-app-on-device

结果是Google的代码有问题,造成了死锁。解决办法是从AndroidManifest文件中移除那个指定tracker xml的meta项。

Google在这种问题上犯错、被人report还不修复,我也不知道说什么好了。


更新一下,今天又发现一个问题,Google的License Check在5.0下会导致应用崩溃,为什么自己的库都不测试好就发出去了呢。。。

https://code.google.com/p/android/issues/detail?id=78505

折腾

折腾了一天,差不多终于搞定了:把Blog从SAE上迁移到单独的VPS上。

迁移的原因很简单,因为SAE给人的一种深深的不靠谱感:Nginx常年报502错误,上传文件经常出错。出错的原因大致有两个,一个是SAE本身稳定性一般,这点我可是深有感受,什么SVN传不了文件,502错误等等乱七八糟的问题遇到的绝对不少;另一个原因是WordPress本身不是为这种“云环境”而设计的,所以现在SAE上跑的WordPress都是之前某人的一个移植版,而作者自从某日从新浪跳槽到淘宝之后就再也没有更新过这个WordPress。除此之外什么Session错乱、安装插件主题麻烦之类的就不提了,完了还有国内云空间的通病:需要备案。总而言之,SAE对我来说唯一的好处就是不要钱(我是中级开发者,所以每个月都有送一些资源),但是看到现在单独架一个VPS来放博客的价格也不算高,于是就下定决心离开SAE。

在Low End Box上看了许久之后,选了这个VPS:http://lowendbox.com/blog/hostus-10year-768mb-and-18quarter-6gb-ovz-in-three-us-locations/ 。原因无它:便宜,可以看下这个配置:

768MB

  • 768MB RAM
  • 768MB vSwap
  • 1 vCPU core
  • 20GB HDD space
  • 2048GB transfer
  • 1Gbps uplink
  • 1x IPv4
  • IPv6
  • OpenVZ/SolusVM
  • $10/year

768的内存,20G的HDD和2T的流量,要啥自行车?供应商HostUs在Low End Box上的评价很不错,不过这个供应商的VPS国人似乎用的很少,可能是因为没有在LA或者是SF的机房的缘故?HostUs西部的机房在拉斯维加斯,物理距离上当然不如LA或者是SF来的近,但是也并没有远多少。从Ping的结果上来看,从香港过去平均的Ping在185左右。我在搬瓦工的LA机房有个用来做SS的VPS,ping平均在160左右,个人觉得已经很不错了,毕竟中美之间半个地球,只算光速来回一趟都得130多。

配置LEMP

用Paypal付了钱,大约几个小时候就开通了。首先ssh进去看了一下系统,64位的CentOS 6.5,果断重装改成32位的,添加一个新的用户用于平时使用。在Ubuntu下常用的sudo在CentOS上需要额外安装才能使用,对应的apt-get也变成了yum,另外还要用visudo手工修改sudo的配置文件,把新用户加进去。

Nginx的正确读法是engine-x,但我之前一直念作”恩ginx“,不过似乎和我一样读错的人不在少数。比如Linux+Nginx+Mysql+PHP的集成环境,在国内一般被称作LNMP,而在国外一般称作LEMP。

Digital Ocean上有篇介绍LNMP搭建的文章,相当的详细和完整,我也基本上按照这篇教程的内容来搭建环境,在此贴上:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6

额外两点注明一下:

  1. 这篇教程在安装php-fpm和php-mysql的时候用了–enablerepo=remi参数来指定使用一个叫做Remi的repo来安装,如果不用这个repo用默认的话会出现依赖错误,原因是默认repo里的组件版本还比较低,无法支持php 5.4。另外最好再从这个repo里安装一个php-xml的组件,不然WordPress里的从XML导入的功能将会无法使用。
  2. 几个配置文件的位置:
    1. nginx: 全局在/etc/nginx/nginx.conf,site specific的在/etc/nginx/conf.d/default.conf
    2. php: /etc/php.ini
    3. /etc/php-fpm.d/www.conf
  3. 在这篇教程里,php-fpm的运行组和用户被改成了nginx:nginx,也就是说php和nginx现在运行在同一个名为nginx的用户中,这对于后面更改权限非常重要。

配置WordPress

关于如何配置WordPress,依然可以看Digital Ocean的教程,依然非常详细而具体:

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-centos-6–2

不过,要愉快的运行WordPress,方便的安装插件和主题,这篇文章有一点没有提到,那就是更改html目录及文件的所有者,所以简单说说这一部分的最佳做法:

  1. 配置好MySQL,下载好WordPress,解压并放在html目录中,没什么好说的
  2. 更改html目录下文件的所有者和权限,对于LEMP中用户和权限的讲解,这篇文章写的详细而具体,个人觉得很不错:http://www.ilanni.com/?p=7438。在这里,因为我们之前已经指定了,让php运行在nginx用户下, 那么现在我们只要把html目录下的文件的所有者和组都设置成nginx,php就能够读写这下面的文件。
  3. 浏览器访问index.php进行安装。
  4. 要能够直接安装插件和主题,除了要配好权限,还需要配置一下WordPress的文件读写方式:在wp-config.php中加入一行:
    define(‘FS_METHOD’, ‘direct’);
    来让WordPress使用直接读写文件的方法修改目录内容。

这样WordPress的安装基本就搞定了。当然我还修改了一下其它的参数:

  1. PHP的最长运行时间,之前在SAE上只有30秒,运行点复杂的操作就超时,既然是在自己的VPS上,果断改成300秒,爽歪歪!
  2. 最大上传文件大小,在SAE上受限于Storage的配置,最大只有10M,现在果断改大!修改的地方有三处:第一是php.ini的最大附件大小,第二是php.ini的最大post body size,第三是nginx的最大body size。
  3. 导入之前的文件,我用的是XML方式导出。先在SAE的WP控制面板里把文章用XML导出,然后在新的WordPress中安装WP导入插件,然后导入XML。值得注意的是,如果之前没有安装php-xml模块的话,这里导入之后不会有任何反应,实际上是产生了一个http 500的错误,只要安装好php-xml模块就好。

优化

首先肯定是先换个主题,然后装上插件。我主要装个这么几个:reCaptcha,用来防止垃圾评论;Google Analytics,用来统计网站数据;Better Search Replace,用来替换所有的链接。

接下来是配置cdn,因为CloudFlare据说被墙的厉害,所以我用的是Incapsula。用了之后发现在增加网站可达性上有一点用处,但是对于大陆这块的加速来看,效果不大。

总结

有人云:生命在于折腾。真是一点没错,上面的这些内容,对于熟悉的人来说,可能一个小时不用就搞定了,我却折腾了整整一天。为了下次折腾能快一点,我又花了半个上午的时间写下这篇文章。

最后来看看360的测速结果:

这是Nginx的默认页:

 

Capture

这是首页的访问速度(无cdn):

index.php

这是一个277k的静态图片的访问速度(无cdn):

277k

主页(有cdn):

cdn_index

277k文件,有cdn:

cdn-227k

怎么感觉CDN是负优化?

先这样,改天再折腾吧。也许等哪天有钱了,直接上Linode,大概就不用折腾了吧。

Fragment’s savedInstanceState is always null.

First of all, only fragment killed by system will call onSaveInstanceState() function because of reasons like OOM. Thus, fragment killed by activity’s finish() will not call onSaveInstanceState(). In this situation, it’s better to preserve the state in onPause().

Secondly, in onSaveInstanceState(), one must call super.onSaveInstanceState() at the end of the implemented function.

Thirdly, the fragment should have an TAG or ID associated with it. The best practice is to declare tag in xml or when dynamically adding fragment, use the add() function with tag argument.

更换SSD小记

因为老笔记本还要坚持工作一段时间,考虑到现在SSD的价格和容量都已经进入可以接受的范围了,加上网上都说从HDD到SSD是质的飞跃,所以就琢磨着给老笔记本换上个SSD。

在网上稍微看了一下,容量选定在240G-256G之间,主要128G确实小了点,只能放个系统,想放点应用程序啥的就捉襟见肘了。在这个容量下面选择,大概看中了两个,一个是镁光的MX100,一个是影驰的战将,战将京东常年卖599,据说还不错,不过最后还是买了自己生产颗粒的镁光MX100,淘宝上660入手。

一同入手的还有一个光驱硬盘架,4741g的光驱是sata1的,硬盘位是sata2的,这块SSD是sata3的,所以要充分发挥性能的话要把SSD装在主硬盘位上,然后把机械硬盘安装在光驱位上。当然在这之前需要先升级bios,不然双硬盘的话过不了自检。

体验上来看,开机速度提升并不是很明显,本来我装的Win8开机就很快。但是以前用机械硬盘的时候开机之后系统还要卡个一分钟才能开始用,这个大概进桌面10秒之后就差不多了。以前机械硬盘开机后首次开输入法,一般都得卡个五六秒,换了ssd之后几乎感觉不到启动时间的存在。开Word之类的应用速度明显快了,不到一秒;Eclipse VS IntelliJ的开启速度快了一些,但是对比之下不是特别明显,可能这时候CPU才是瓶颈了吧。

因为SSD据说寿命和稳定性不如机械硬盘,所以拿Windows自带的File History做了一个备份。File History就像是Mac的Time Machine,是Win 8新引入的特性,支持多版本全自动备份。然而File History默认只能在外部磁盘和网络磁盘上开启,即使是像我这样的双硬盘也没法选择从一块硬盘备份到另外一块上。网上搜索了一下,大概有两种解决办法:

1. VHD挂载。VHD有点像虚拟机的磁盘文件,可以挂载到真实的系统中。更猛的是这玩意系统底层支持相当不错,上面甚至可以安装系统(当然是通过Windows的引导程序才行),可以说和真正的磁盘相差无几。

2. 共享文件夹。随便建立一个文件夹,并把它共享给自己,这样这个文件夹就变成了一个网络文件夹,在File History里添加网络磁盘即可。这样系统访问的时候相当于从localhost上绕了一圈。我用的是这个方法,原因是第一种方法的磁盘要写个脚本丢到startup里去才能开机自动挂载,觉得有点麻烦就用了共享法。

 

 

美剧中的《天龙八部》——评《绝命毒师》

====剧透警告====

金庸的《天龙八部》应该是一出典型的悲剧:没有人做错了什么,却都莫名其妙的被命运所捉弄,陷入苦苦的挣扎之中。有人用“有情皆孽,无人不苦,求而不得”评价《天龙八部》,实在是恰如其分:段誉爱上的人,最后竟然是他的亲妹妹,一个本来不想有武功只想自由自在的人,最后被迫做了大理国的皇帝;虚竹本来无父无母,只想要做个少林寺的小和尚,结果其实父亲一直就在身边看着他,而且是个彻彻底底的恶人,自己武功高强,做了灵鹫宫的主人,却再也不能去做那个本本分分的小和尚;萧峰则更惨,家国沦陷,亲人惨死,挚爱不再,当初的丐帮老大,却依然逃不过命运的轮回,最终自绝于雁门关。

老白,就是那个萧峰。

命运对老白是残忍的:年轻时才华横溢,拿过诺贝尔贡献奖,和朋友一起创建Gray Matter;然而到了五十岁的时候,却依旧是一个中学里的化学老师,拿着勉强糊口的薪水,有一个在家无业的老婆和一个脑瘫的儿子,经济拮据到甚至早餐吃的培根都是素的,坏掉的热水器也没钱更换修理。偏偏这个时候妻子又意外怀孕,从不抽烟的自己又被查出了肺癌,简直惨到不能再惨。老白原本想放弃治疗,就这样离开,不让天文数字的治疗费用变成家庭的负担,可是家人的苦苦劝解让他却于心不忍。

为了钱,老白走向了制毒的不归路。老白原本只想要72万美元就好:这笔钱够两个孩子读书上学,够一家人的生活费。老白原本只想要自己的家人,在自己死后生活不会依然拮据。可是慢慢的,他收不了手了,病魔的暂时离去给了他更大的野心:他要建立自己的毒品帝国。然而到最后,万事成空:癌症卷土重来,最看重的家人最后也一个个离开了他,儿子不仅不要他的“脏钱”,连他的电话都不愿意接,小姨子甚至对他说“你怎么不去自杀”。被命运捉弄的老白选择了同敌人同归于尽,最终在那个他最爱的实验室中告别了这个世界,曾经的一代毒枭Heisenburger也随之灰飞烟灭,留给镜头前的每个观众无尽的唏嘘和感叹。

命运对老白来说也是一个轮回,从50岁到52岁,两年时间,命运对着他开了一个大大的玩笑。50岁,一个普通的化学老师;51岁,一个名震一方的大毒枭;52岁,一个心灰意冷的亡命之徒。从某种意义上说,他的命运和萧峰是一模一样的:一样的求而不得,一样的苦苦挣扎,一样的轮回报应,一样的跌宕起伏却又最终归于平静与虚无。老白做错什么了么?当癌症来袭却又无力承担治疗费用的时候,牺牲自己的最后一点生命让家人过上好点的生活,有错吗?除掉制毒路上威胁自己和家人的对手,有错吗?命运就是如此无情,我们小心翼翼的在每一个地方做出了唯一正确的选择,它却在最后给我们盖上了一个大大的“0分”的章。

老白制毒,到底是为了谁?为了家庭?但是他自己在临终前坦承,制毒只是因为他擅长,他能做出全国甚至全世界纯度最高品质最完美的冰毒,他在制毒的道路上实现了自己之前五十年人生从没实现过的自我价值。为了自己?但是他愿意花八千万——自己所有的制毒所得——去买一个在几分钟前还要逮捕他的禁毒署妹夫的命。也许最后除了老白自己,没人能够解释这一切。老白最爱做的事情,却是违法的;他想让家人过上好的生活,却让家人颠沛流离:房屋汽车全被没收,妻子找不到工作,儿子被同学耻笑;他费劲千辛万苦救出来的搭档,却和他相视无言。也许其实老白从骨子里一直都是以家庭为重,而没能及时收手只是因为暂时沉醉于自己的毒品帝国,而最后的坦承,只是希望家人能够放下心理包袱,为自己为家人解开一个心结,求得一个原谅。

至于剧中的其他人,也都不得不让人叹息扼腕:老白的老婆本来只想做个本分的家庭主妇养儿育女,却被卷入老白的制毒帝国,帮助给老白洗钱;老白的妹夫Hank,为了抓住大毒枭Heisenburger甚至放弃了升迁的机会,但是最终发现这个人就是自己那个手无缚鸡之力的窝囊的姐夫,就当他最终能够逮捕老白的时候,却阴差阳错的死在了命运的枪口下;Saul Goodman,一个油嘴滑舌无所不能的律师,最终只能改名换姓远走他乡不再过问世事成为一个普通人;Gus Fring,忍气吞声二十年最终大仇得报,却冷不丁被老白算计成了冤魂;至于小粉,本来只想赚点小钱,结婚生子,最后却孑然一身一无所有。他离开前的狂笑,是笑自己终于重获自由,还是笑自己的幼稚任性,还是笑命运变化无常?

还有一个人需要提及:Mike。导演对Mike的由来并没有太多的说明,只知道他原来在凤凰城是一名警察,后来不知道什么原因警察做不下去了,之后成了Gus Fring的安全主管。从他无儿无女只有一个孙女的角度来说,很有可能是他的儿子或者女儿因为犯罪使他丢掉了工作(这一点在Hank身上有提及,如果老白被警察发现,Hank第一时间就会丢掉工作)。为了给孙女留下一笔钱,他先是加入了Gus Fring的团伙,之后又加入了老白的阵营。不过很讽刺的是,他在最后要被警察抓到的时候,连一声招呼都没有和孙女打,等于是将孙女一个人抛弃在了公园里;后来他被老白误杀后化尸,对他的孙女来说,他的爷爷就像是凭空从公园中蒸发了一样,钱、尸首,什么都没留下,连一句告别的话也没有。从这个角度上来说,Mike这个业务水平极高、思维缜密性格也好的打手,下场也是惨到不行。

这部剧之所以如此风靡,我想最重要的一点就在于,虽然制毒贩毒离每个人的生活很远,然而观众们却能从中看到自己的影子,高昂医疗费和大学学费、中年危机、对当年同学的羡慕和嫉妒、家庭不和谐等等。这也是为什么我们对老白恨不起来的原因,尽管老白杀人无数外加制造了够他死几百回数量的冰毒。有人想用“出来混总是要还的”来总结这个结局,但是我认为不能这样简单的一概而论。老白是该死,但是真正让他死的不是法律或者是警察,而是他对命运的绝望。Live free or die,这是写在老白车牌上的话,如果不能自由的活着,不如放手;亲人和伙伴的背叛,加上癌症的复发,让他彻底死心,决定做个了断。有人说老白在自己搭建的毒品实验室中死亡,死得其所、死而瞑目,但在我看来,这只是观众们的一厢情愿罢了。老白有很多不舍,但是死亡只是不得已,他的痛苦、他的煎熬,有谁能解?

结尾的Baby Blue,是一首70年代的老歌,但是用在这里是如此的恰如其分,就像是专门为这部剧而写的一样。Blue是老白毒品的招牌,baby blue则代表了他生命中最看中的那些东西:亲情、家人、还有他的杰作:蓝色冰毒。

最后说说这部剧本身。我个人最喜欢的一点就是导演对于细节的坚持,冲突的设计和解决,以及草蛇灰线的伏笔。这在快餐的电视剧中真的很难得。从整体剧情上来看,没有什么明显的硬伤,无愧为一代神剧。一些有关化学的情节可以再推敲推敲,但是已经很不错了。因为优点很多,不再多说,只说说我个人认为的几个缺点。
1) 老白和妻子之间关系的描写略显拖沓,Maria的部分却又有些不足。尤其是Maria这边,很多人都很难理解她的行为,大骂bitch。我觉得主要的责任在编剧上,Maria的形象不够饱满,行为举止说话没来头,有点莫名其妙。
2) 过于讨好观众,把很多细节交代的一清二楚而不需要观众自己动脑去思考。当然这么做也是情有可原的,毕竟电视观众群体还是不太喜欢那种需要反复思考寻找线索才能理清思路的套路, 但是我个人而言还是喜欢稍微有所保留的叙述方式,这样看起来也更有乐趣。
3) 对于毒品的危害性描写过少。海洛因是毒中之王,无论是成瘾性还是身体伤害都是极大的,冰毒则比海洛因差不了多少。老白制作的冰毒纯度和品质如此之高,更容易让人上瘾,社会危害性更甚。然而剧中对这一点并没有做足够的描述,甚至出现了“如果我不去做冰毒,也会有人去做”的说法。虽然这种说法只是出自剧中人物之口,但是作为一部和毒品有关的电视剧,不能不在毒品问题上持有一个积极的立场。从艺术角度来说,这样做确实可以对塑造老白的人物形象有更好的帮助,让观众更加同情老白而不是憎恨,但是如果能够把缺失的这一点补上,我想会给观众以更多的思考。

《绝命毒师》这部剧一共持续了6年,从2008年1月开始,到2013年9月大结局落幕,而故事本身的跨度其实只有两年。我在高中的时候就听我们的化学老师就提及过这部剧,然而最近才有幸能够把它全部看掉,不得不承认这的确是一部神剧。其实美剧的观众都是很痛苦的,一年只有一季,一季大概十多集,每周才放一集。不过完结之后再看,其实比一集一集追着看,更容易受到剧情的触动,但是也少了那种追剧的快乐和好奇感。不管怎样,《绝命毒师》已经落幕,我们心中的那个老白,也已不复存在。

再见,老白!

一个《绝命毒师》脑残粉的观影指南

这篇指南只供像我一样的深度脑残粉阅读,所提及的资源均为能找到的最高清版本且无中文字幕,不适合普通人观看。

 

首先,作为脑残粉,现在能下载到的最高清版本是蓝光1080P,Torrentz上可以找到,这里直接贴上磁力链接:

http://torrentz.eu/e43dbd8f4990b67f44f647da94d8779e30ff4b3d
magnet:?xt=urn:btih:e43dbd8f4990b67f44f647da94d8779e30ff4b3d&dn=Breaking Bad - Complete Season 1,2,3,4,5 + Extras - BluRay 1080p

这个版本有所有5季的剧集,外加很多拍摄花絮,以及编剧和演员对剧情和人物的一些点评。其中有一些已经发在了AMC的官方Youtube频道里了,不过整合在一起看还是方便不少。总容量是211G,适合收藏。

然后是一部2小时的纪录片,记录最后8集的拍摄过程。这个在上面的合辑里没有,不过应该也是正常的,毕竟亚马逊上的蓝光合辑一共有16碟,就算一碟是25G的,也有400G的容量,不知道在哪会有16碟蓝光原装ISO下载。

http://torrentz.eu/891a8d690930cf3e13592253dc9894303575763e
magnet:?xt=urn:btih:891a8d690930cf3e13592253dc9894303575763e&dn=Breaking Bad No Half Measures 720p Bluray x264-BTN [PublicHD]

然后,最后8 集的演员访谈,一共八集,其中第1,3-8集如下:

magnet:?xt=urn:btih:9cf25402049565d7b02ffd43eb38b5cf6f07679e&dn=Talking Bad S01E01 720p HDTV x264-2HD [PublicHD]
magnet:?xt=urn:btih:ccf6b4ef406c65b38138880444351e4b6933d692&dn=Talking Bad S01E03 720p HDTV x264-2HD [PublicHD]
magnet:?xt=urn:btih:c9ef5789fecded8b1fe6d903237bc5c79f4f615e&dn=Talking Bad S01E04 720p HDTV x264-EVOLVE [PublicHD]
magnet:?xt=urn:btih:94b5604bc846c21f362b2cfa32983a5e531b2f3e&dn=Talking Bad S01E05 720p HDTV x264-2HD [PublicHD]
magnet:?xt=urn:btih:98ea111182e5aaba8bf59432014097be8c49ecd5&dn=Talking Bad S01E06 720p HDTV x264-2HD [PublicHD]
magnet:?xt=urn:btih:39a4e556940f7e1be172507236e4e5692f85672d&dn=Talking Bad S01E07 720p HDTV x264-2HD [PublicHD]
magnet:?xt=urn:btih:5cbe9f8d7f3f8feebc84474639ec7cf2de9b0f8b&dn=Talking Bad S01E08 720p HDTV x264-2HD [PublicHD]

第2集如下:

magnet:?xt=urn:btih:fc02c268e04807a3d824f7ff2c4cd0fb76dbdf80&dn=[ www Torrenting com ] - Talking Bad S01E02 720p HDTV x264-2HD

因为来源不太一样,所以分开来列。

然后,Conan采访剧组成员。其实Conan采访过两次,一次是在最后一季上映前,一次是在最后一季最后一集之前。第一次采访找不到下载,但是Youtube的AMC官方频道里有发布:

https://www.youtube.com/watch?v=ugLkMf6r7rM

第二次采访:

magnet:?xt=urn:btih:bb82d2b032ff888e76fdd7ee29e6b8acde6b5a76&dn=Conan 2013 09 23 Cast of Breaking Bad 720p HDTV x264-2HD [PublicHD]

第二次采访网上有内嵌中文字幕版的下载。

最后,Breaking Bad拍摄地的Google地图,重要的地点都标出来了,像老白他家,Hank家全都标在上面了,而且卫星街景都能看。

https://maps.google.com/maps/u/0/ms?msid=203377509949180867689.0004e70c8424086fd92b6&msa=0&dg=feature