5D3L2224

5D3L2253

从酒店花了100台币租了辆自行车,烈日下骑了一个上午才到了这个地方,晒爆一层皮。
但是,当我们看到这么美丽的海滨景色的时候,再辛苦也觉得值了,花莲是台湾之行遇到的最美的海。
这里的海从远及近有不同的颜色,深浅不一的蓝色,一水儿的干净。当地人叫“果冻海”。

时至大陆黄金周刚结束,游客都已经走光,几公里的海滩上除了我们两人,剩下的都是石头-石头-石头…

5D3L3482

在大陆,火车站向来都是人来人往藏污纳垢之地,城市里的铁路也像一道伤疤一样,横贯东西或者飞架南北,把好好的城市切割成东德西德或者南韩北韩。
台北车站给人另一种印象,这里很干净,这里数层建筑多数是品质精良的美食名店所在。这里的铁路都在地下,当地人乘车如坐地铁一般。

5D3L2151

花莲是个小城市,几个小时就从头走到尾了。
这里在台湾都算是闭塞的地方,但是美食遍地,物美价廉。

国内的网络环境太复杂。如果不开VPN,那么有很多网站上不去。如果开着VPN,许多国内网站速度很慢甚至不让外国IP访问。

在Mac OS X里,我们可以修改路由表,对需要翻墙才能访问的网站,使用VPN链路访问,对于不需要翻墙的国内网站,直接访问,可以完美解决这个问题。

1. 设置VPN

相信大家都会吧…根据自己的服务商自己搞一下吧。切记,记得修改VPN链接为首选网络(显示在列表中第一个位置),点下面小齿轮,Set Service Order,然后把VPN拖到最上面。

2. 翻墙去下载路由表

每天更新的最新路由表,地址:http://chnroutes-dl.appspot.com/

3. 下载回来解压缩,是两个文件,分别是ip-down和ip-up

4. 进入终端,把这两个文件拷贝到/etc/ppp路径下,然后执行:

cd /etc/ppp; sudo chmod a+x ip-up ip-down

大功告成~

架构是这样的:NodeJS+Express,使用EJS作为模板。
错误是这样的:

HTTP/1.1 open unknown
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 11874
Set-Cookie: connect.sid=x4iNL4p1zGLt5mhMphHtiDFh.WVVHofhb3GyrkXnOyTQbe1SgGC2AEydsHCZiLGSB%2FY0; path=/; expires=Thu, 21 Jun 2012 06:54:36 GMT; httpOnly
Connection: keep-alive

在渲染一些页面的时候,Express会放以上的文字在HTML文档正文前面,一些浏览器(Chrome,IE)会忽略这些文字,看起来正常。还有的浏览器(Opera),会继续等待服务器的返回,表现为页面已经渲染,但是JavaScript并不执行,一直在Loading直至超时,按停止键能够正常加载完成页面功能。另一些浏览器(主要是个版本Safari)会直接认为文档是纯文本,从而显示源代码,如图所示。

也许是Express用户群比较小的原因,我一直没能找到这个问题的原因。经过艰苦卓绝的debug,终于找到了原因。以下是罪魁祸首。

请注意,在192行,我从URL里读取了名为status的参数,原封不动地使用名称status作为模板参数传给了EJS模板。在EJS模板中,这样使用了:

悲剧就此发生。改成这样:

并在EJS中避免使用<%= status %>,改用<%= docstatus %>,问题马上解决。我尚不太明白错误的机制,我猜EJS的参数中,status变量可能保留另有作用了。祝你早日解决HTTP/1.1 open unknown的问题。