麦积山–青木川

16年9月的一次小旅行。漫无目的的从西安开车往西走,到麦积山看石窟,又南下通过陇南到陕甘川交界的青木川古镇,然后再回西安。

麦积山石窟从中学时候就听说了。当年的班主任一直在炫耀他组织上一届学生去麦积山旅游;我想做班主任的能想到这个地方去理由也应该有着某种执念。不过轮到我们这一届旅游就换成了沣峪口和朱雀森林公园。。。对麦积山的执念算是这么留下来的

看过了敦煌和云冈,仍然觉得麦积山的石窟有点不一样。周围的群山峻岭都郁郁葱葱,似乎只有这一座裸露出岩石,似乎专门是为雕刻石窟准备的–也可能是因果倒置了。论规模和气派的程度,麦积山是小一些的;不过这些石窟都是建造在悬崖峭壁之上,不是一般的险峻,所以看起来也不是一般的震撼。人类果然是构建在自己想象中的生物,需要怎样的信念才会做这样的事情。

这是石窟群中最高大的一组,站在悬崖上搭出的脚手架上平视过去非常震撼

这一组在山中部一个凹进去的长廊中,不知道是天然凹陷还是人工凿刻出来的。这里的几个窟都有色彩鲜明的壁画。

人物表情也非常丰富

整个长廊

还看到了正在做洞窟修复的工作人员。这真的是一件磨性子的技术活。

麦积山参观完我们继续开车到成县县城休息。其实并没有什么目的,陇南地区新修好的高速非常好,车流量不大,一路飞奔到了成县天快黑了,就下了高速在县城住下了。进了县城才发现里边繁花似锦。以前我说温哥华大约跟中国一个三线城市差不多,现在看来中国的很多县城早已今非昔比了。除了熙攘的人群,繁华的街道和气派的建筑,成县见到的服务人员也都特别热情有礼貌,在西部地区遇到这样服务好的县城感觉十分惊讶。

总之,一次值得纪念的旅行。

布朗运动:上海-南昌-长沙-三峡-西安(2)

继续写布朗运动的另一半,宜昌-三峡大坝-秭归-巴东-巫山-奉节-万州-达州-西安。

高铁到宜昌东站已经晚上了,宜昌是一个及其狭长的城市,再坐一个小时公交车到市中心就直接休息了。第二天早上吃过早饭坐专门到大巴车去坝区。PS:早饭有当地特色的牛肉包,特别特别好吃,可惜忘记拍照了。坝区就是三峡大坝核心区,大巴在旅游接待站停车然后要换景区专门的班车才可以进去游览。三峡坝区非常整洁,设施也很先进,从下面一路到高点的山路上全部都有电动扶梯,即使那天下着雨只有聊聊的几个游客扶梯照样没停过,果然是不缺电的地方。我在相册里找来找去,大概只有这张照片能证明我那天真的去过三峡了。

一直在下雨,坝区烟雨朦胧,能见度非常差。这里是船闸,勉强有点大坝的感觉

这一张照片中间的位置,有一道横跨江面的高墙若隐若现,这就是三峡大坝的真身了。后来坐车去秭归县城的路上,有看到过更清晰一点的照片,真的很宏伟,可惜没有拍下来。

秭归是屈原故里,我们从景区门口路过了一下没有停留,直接去了码头准备坐船。其实最心心念念的是坐着船从秭归一路到奉节,不是豪华游船,是当地人的客船。不过如今连当地人也很少坐客船了,一路都有高速大巴方便很多。我们只能去码头碰碰运气。问了一下有一趟到奉节的船已经走了,当天只有一趟去巴东的,而且卖票的人也不知道什么时候会再有去奉节的船。看来开船真的是个很自由的职业。。。只好先去巴东

坐在船上看两岸风光别有一番滋味,虽然它早已不是原本的那个三峡了,却仍然可以从两岸的地势依稀推测当年的样貌。随着三峡蓄水水位抬高,当地人只能搬到更高的山上去居住了。

这里是西陵峡中的一段,可以感觉到远处江水从层峦叠嶂中穿出的气势

这个船号称是快船,可是比起高速大巴还是慢很多很多,大约四五个小时才开到巴东县城码头。一路上陆续有当地人下船,下船的方式也很别致,直接让船开到岸边,然后从个一米来宽的水泥台阶就走上去直接回家了,就像私家码头一样霸气,还有的人下船的地方干脆连水泥台阶都没有,直接在山坡上爬几步到家。到巴东的时候船上已经没几个人了,跟船老大打听了一下下面的行程,据他所知巴东是没有船去巫山或者奉节的,只能到培石乡再换船。可以理解,巴东是湖北省的,巫山和奉节就属于重庆市了。

巴东属于恩施土家族苗族自治州,我们住的地方对面就有家非常popular的土家菜馆,物美价廉。

不能坐船只好坐大巴,第二天早上巴东到巫山。看到了县城清晰的面目。PS:巴东县在创建国家卫生县城,果然非常干净。大早上等车的时候看到两件有意思的事情:一个是街道上没有垃圾桶,有垃圾车开满满开过来放着大喇叭,然后街道两旁店铺的人就各自跑来倒垃圾;另一个是站在菜场门口等车,有个老板主动拿着扫帚把自己店外面的马路扫得干干净净。

巫山县也没有船去奉节,所以吃过午饭只好继续坐大巴前进。在到奉节之前提前下车去了白帝城。白帝城是瞿塘峡的起点,是刘备托孤的那个白帝城,也是朝辞白帝彩云间的那个白帝城

这里还有一个著名的看点,就是10元人民币上的夔门,三峡就从这里开始

景区里有个做生意的人十几年前放养了几只猴子,现在繁衍得越来越多,似乎重现了两岸猿声啼不住的感觉。

夔门

白帝城里的白帝庙

到了重庆地界另一个任务就是吃吃吃
万州的特色小吃格格,就是类似粉蒸肉的口味,但食材有猪肉,羊肉,肥肠等不同类型。

万州烤鱼

早餐一碗简单的牛肉面都特别好吃

豆腐脑

重庆火锅

在达州吃完这顿重庆火锅,我们就坐着绿皮火车晃晃悠悠晃晃悠悠经过安康再走西康线到了西安南站,至此又达成了走西康线的愿望。

一段稍微仓促而毫无计划的布朗运动,很多时间都在赶路,不过几天之内穿越大江南北,看到各地完全不同的风土人情,品尝每个地方的特色美食,这种感觉不可多得。

布朗运动:上海-南昌-长沙-三峡-西安

16年10.18-22,一次漫无目的的小旅行。

10.17在上海办事情,比想象中顺利很多,一天就全部搞定了。于是趁着小宝宝不在身边,打算随便转转,没什么目的,兜兜转转过几天回家就可以了。感谢祖国越来越发达的高铁事业,旅行变得越来越随心所欲。17号晚上大概想好了要去南昌看海昏侯考古展,于是果断定了去南昌的高铁票,就这样开始了布朗运动。

早上从虹桥出发,中午正好到南昌吃午饭。在南昌自然要尝一尝赣菜,特此推荐这家好味坊:http://www.dianping.com/shop/32874899。整个店一共四层,有点类似城中村那种简易楼板楼,我们去的时候正好是饭点每一层都满满地人,直接坐到了天台。这一顿点了四个菜仍然吃得意犹未尽,连青菜都炒得别有滋味。

午饭之后就去博物馆看展览。预约领票的地方人不算多,大概因为非周末,不过看一路上的宣传横幅和各种排队的标识线,感觉周末会人山人海。毕竟这对江西省博来说也是千载难逢的露脸机会。我甚至有过阴谋论的想法:海昏侯墓的发掘是因为发现有盗墓贼,考虑到墓地位置不容易保护于是做出了保护性发掘的决定,不过谁知道盗墓贼是不是虚构的呢:)

展品数量之多确实很让我这个外行人觉得震撼。尤其是见到了好几件铜器和漆器,看到的人都在问“这真的是发掘出来的么,怎么跟新的一样”,非常的崭新。还有这些多得吓死人的黄金和铜钱:

这些五铢钱的出土足够引起收藏市场的通货膨胀了吧

在海昏侯的展厅大饱眼福之后,我顺便也去逛了逛其他博物馆原有的展厅,大体是没什么拿得出手的古代展厅,可歌可泣的红色展厅和江西特色的景德镇瓷器,白鹿洞书院之类。在海昏侯墓藏耀眼的光芒下,确实显得不值一提了。

江西省博物馆就在滕王阁附近,虽然知道那早已不是落霞与孤鹜齐飞,秋水共长天一色的滕王阁了,不过本着来都来了的想法,还是去走了一圈。

然后开始和灰灰商量下一站去哪里:既然都到南昌了,不如顺便去趟长沙吧,岳麓山和马王堆也都是waiting list上的目的地,而且长沙还有湘菜美食。有了高铁说走就走,直接订票去火车站,然后到了长沙坡子街吃晚饭。著名的火宫殿就在这里了。

不过火宫殿的小吃大约就像西安饭庄,本地人是不屑于去的。于是我们跟着本地人,看哪家人多就去哪家吃。

第二天早上穿过太平街,坐公交去岳麓书院,爬岳麓山。岳麓书院跟湖南大学在一起,首先看到的是主席像。跟复旦的主席像比起来,衣角飘得更高一些,看来需要更高的工科造诣,当然比同济那尊手绘起来的又差了一点:)

大约因为那天我们去的比较早,而且是工作日,又下着雨,岳麓书院里边比较安静,于是晃晃悠悠转了好一阵子。

直到从书院后门出去,很快就看到了这座爱晚亭

然后就是爬岳麓山了。灰灰坐山上的公车,我准备自己走上去,一路上拜谒了蔡锷墓和黄兴墓,再走不远就到山顶了。天下着雨,雾很弄,什么也看不见。

从岳麓山下来,再去饱餐一顿网红湘菜。灰灰意犹未尽,还打包了香辣小龙虾准备路上吃。

其实本来第二天准备去看马王堆了,来了长沙才知道长沙省博已经关了好几年了,说是在造新馆,一年推一年到现在也没建好,于是马王堆也只能以后再看了。长沙之后下一站宜昌,准备去三峡看看,虽然早已不是原来的那个三峡了。时间有点紧,就路过武汉而不入了。

汕头–写在四年以后

去厦门的时候还顺路去了汕头,主要是为了吃潮汕美食。我们从厦门坐大巴去汕头,到汕头的时候是下午太阳快落山的时候了。过了这么久确依然有印象深刻的两点记忆:1, 感觉汕头一点也不冷,那会儿刚过了元旦,上海天寒地冻,可是在汕头的街头上走着觉得很温暖;2, 走在街上被玲琅满目的美食所吸引,不知道要吃哪些。

牛肉火锅和粤式早茶自然是必须要尝试的。说起牛肉火锅,今年夏天回国的时候发现上海也悄然流行起了潮汕牛肉火锅,连肇嘉浜路当年人气火爆的三顾牛蛙都变成了三顾牛炉。于是第一天晚上就去打边炉。

其实吃了第一天的晚饭之后灰灰就生病了,应该是牛肉不卫生导致的急性肠炎。所以第二天的美食计划就泡汤了,灰灰在医院打点滴,我在医院周围的小摊上觅食。有一家卖粤式茶点的小摊觉得味道相当好,大约去吃了两三次。第三天灰灰稍微好一点了又去了家高级地方继续吃早茶。

汕头除了美食还有老城区值得一看,都是当年开埠时候留下的气息,现在看来有些破败,不过从建筑的规模和门牌就可以想象当年的繁华。忽然有一种是非成败转头空的感觉。

“华侨集资创办的百货公司。1932年由梅县籍华侨李柏桓、李耀宗、李远波、李镜泉、李视棠等人集资50万大洋,在汕头市区小公园建成7层高的营业大楼。第一至二层经营苏广洋杂百货,第三至四层为中央酒楼,第五至七层为中央旅社。员工达300多人,曾兴盛一时,但因管理不善,开业仅10个月便宣告倒闭。1935年,经理李柏桓将南生承赔给旅居印度尼西亚的堂弟李海烈,留下中央旅社自己经营。李海烈重新组合同乡李锦元、李洪、李镜泉等10人为股东,整顿经营管理,生意日旺,成为当时汕头市首屈一指的百货公司……1956年与汕头市国营百货公司合营,改名为百货大楼。”

老城的街头

汕头著名街头的小吃,炒糕粿

最后,从汕头坐飞机回上海。去机场的路上记了一个GPS坐标,这里应该是北回归线吧。

这就是2012年末的跨年活动,时光如流水,不曾想4年眨眼就过去了。后来我们13年末去东北的冰天雪地里跨年,而14年来了美国之后就再没有像样的跨年活动了。似乎在这块大陆上,我太不找得到那种“味道”,那种从南到北从东到西各不相同的味道。这里从西雅图沿着海岸线一路往南开,到了波特兰,旧金山,再到洛杉矶,圣地亚哥,除了自然景观会根据纬度线逐渐变化,而每个地方人的生活似乎没有什么不同。所以我宁愿坐在家里睡懒觉看书也提不起兴致去踩点。不过这真是一个适合宅的地方,特别安静。

祝大洋彼岸的灰灰和小宝宝新年快乐,希望小宝宝早点好起来。

曾厝垵,鼓浪屿 — 写在4年以后

12年底厦门汕头的跨年旅行游记一直拖着没有写,我也忘了为什么。或许那段时间旅行太多,工作也忙,就这么一直拖下来了。

从昨天开始在家休圣诞新年长假。灰灰跟小宝宝都在国内,所以也没了飞去温暖的佛罗里达或者圣地亚哥晒太阳看大海的兴致。灰灰说我可以写游记来打发漫长而孤独的假期。其实,年纪越大越变得无趣和冷漠,很难被人群的热闹喧嚣打动,孤独就无从谈起了。最近这一两年blog越写越少,偶尔写也与旅行摄影读书无关了,看来当一个文艺青年容易,当一个老文艺青年就很难了;不知道是柴米油盐替代了无忧无虑的生活,还是在日复一日的重复中失去了做文艺青年的激情。从小宝宝出生以后,也难得有现在这样安静的时候了,所以我决定还是去翻一翻当年的老照片,打理一下久违的blog。

人是会遗忘的动物,并且会选择性的遗忘,忘掉那些痛苦的不开心的事情。即使当年的生活与今天别无二致,翻老照片的时候,仍然会像打开了一坛陈年老酒一样,沁人心脾。我已经记不起旅行的细节了,大约是坐了七八个小时的动车,沿着海岸线一路从上海来到厦门;到厦门的时候天已经黑了,打了一辆车直接去曾厝垵,吃东西逛一个个小资味儿很浓的小店。在那之前,曾厝垵只是我从高晓松的《如丧》中知道的一个地名而已。然后我们一路走到厦大,逛最美的校园,看隧道里的涂鸦,后来又坐轮渡到鼓浪屿,在一个特别小的旅店房间里迎接2013年,吃小吃,爬山,看海。。。

对厦门的记忆中有很大一部分似乎就是在尝试各种小吃,有的不过如此,有的却记忆深刻。这碗沙茶面就是来到曾厝垵的第一顿饭。

如果是当年写这篇游记,我大概不会选这张随便哪个城市都会有的夜市摊子,现在身在异国他乡才觉得特别怀念。

厦大有一条行人走的隧道,隧道两边的墙上全是涂鸦,非常有特色。只所以排了这张,大概是因为画的是三国杀吧。

而这张在厦大操场上的照片至今仍然是微博的头像。

总是回过头去看的时候,才会发出“原来那天如此美丽”的感慨。

最爱皮皮虾

鼓浪屿有数不尽的小吃。我仍然记得很多年前读别人的游记,48小时在鼓浪屿拼命的吃各种小吃的故事。不过我跟灰灰好像只喜欢这一种:铁板鱿鱼豆腐。这些年天南海北走过许多地方,铁板鱿鱼和铁板豆腐都是司空见惯的小吃,而把它们做到一起的铁板鱿鱼豆腐却只在鼓浪屿吃到过。豆腐吸收了鱿鱼的汁水之后的美味实在太赞了,我已经记不清在鼓浪屿的三天吃了多少份铁板鱿鱼豆腐了。除此以外,就记得我们在厌倦了各种小吃之后,为了吃点正经菜,去了一家破烂的川湘菜馆子,辛辣的农家小炒肉至今让我怀念。

当时走在鼓浪屿的街头随手拍的一张照片。有意思的是前两个月给小宝宝买了个一模一样的风车。

在鼓浪屿的几天正好是跨年的时候,住宿十分紧张,而且昂贵。跨年夜那天,只能订到一个很小很小的房间,好像叫国王旅馆;第二天搬到了另外一家民国别墅改造的旅馆,果然气派了很多,而选他家的另一个原因是旅馆叫爱菲儿。最喜欢他家的天台,视野很开阔。无所事事的下午,去买上两份铁板鱿鱼豆腐,一边吃一边看电视剧,夫复何求。透过照片依稀辨人出来看的是“李元芳”。

从钢琴博物馆眺望鼓浪屿的沙滩。

也是随手拍的一张,并未在意。现在看来,它应该改成:无论外国的风景有多么美好和纯粹,仍然怀念中国那些可以随便逛逛,然后吃个农家乐,喝个下午茶,或者泡个温泉的地方。没办法,人有时候就是这么没出息。

最后这一张今天恰好应景,祝遥远地方的灰灰和小宝宝圣诞快乐🎄

我一度以为厦门的这次游记应该不会补上了,照片也不会再整理了,谁知道今天恰好有时间也有心情。有些事情的发生只是需要一个契机,在那之前只是为了准备,你怎么知道今天看到的喜羊羊灰太狼不会出现在明天的游记里。

PS:看来有必要把blog分成两部分,生活的和工作的。嗯,肚子饿了,出去吃一碗pho吧~

写在宝宝三个月这天

我们家宝宝今天满三个月了,当爸爸的决定恢复大半年没有更新过的blog,跟小宝宝一起成长。

从灰灰怀宝宝到宝宝出生,再到现在三个月,似乎事情越来越多,多得没有心情去更新blog了,没有写游记,没有写跨年多盘点,没有写这些天看过的书和电影,也没有写这些天学到的新东西。实在对不起自己,颓废了。所幸没有写并非什么都没有做。终于还是在宝宝出生之前去温哥华吃了美食,去纽约来了一趟简单的城市之旅。书和电影都有不少更新,还玩到了一些有趣的新东西,有空慢慢再说。

这个月天气逐渐好起来,尽量每个周末都带小饼出去放风。虽然他出门基本上是不睁眼睛睡过去的,但是我们有照片为证。爸爸妈妈会带他去很多很多地方,带他看美丽的世界的:)

今天去Alki beach放风回来又去Redmond town center喝咖啡晒太阳,再把宝宝放回家然后出去买菜,直到晚上才可以enjoy一下自己的时间。忘了为什么跑到Youtube上去听李宗盛的MV,一首听完再换一首,越发上瘾。记得08 09年在微软实习的时候每天上班都会路过虹口足球场,可以看到门口的巨幅海报。那会儿纵贯线的演唱会很火,就想去听周华健和李宗盛,可惜舍不得花钱。没想到一晃这么多年过去了,不会再在乎一张演唱会的门票钱,却很难找到那时的冲动了。嗯,决定了,把这件事放到waiting list。ps:去年前年既然青春留不住的演唱会加州温哥华纽约都有过。

Share it if you like: https://www.youtube.com/playlist?list=PLDgLLnSBXR_OHzMTh1IGAzT_YYaUzgmun

说说参观的微软数据中心

上个月有机会参观了位于华盛顿州东部的微软数据中心。最直观的感受就是,先进的现代数据中心,已经不是一直停留在我脑海中那个“机房”的样子了;外貌改观的背后,是管理效率的巨大提升。

单是数据中心选址所考量的因素,就已经让我这个外行人不明觉厉。
前一段时间天津滨海新区发生爆炸,有新闻报道天津滨海爆炸致国家超算天津中心受损 “天河一号”关机。看到这样的新闻,让人不禁质疑超算中心这样重要的基础设施选址怎么如此草率。云计算时代的数据中心对国计民生的影响远超过超级计算机,无法想象未来的某一天,一个数据中心被突然炸掉会带来什么后果。从安全到角度来说,数据中心最好人烟稀少远离闹市,这样不太容易被意外所波及。可是又不能太远,否则距离带来的网络延迟会影响其应用。我参观的这个数据中心就位于这样恰到好处的位置:华盛顿州中东部,距离西北地区人口稠密的西雅图波特兰地区三四个小时车程,当地人口稀少周围一片荒漠。除了恰到好处的位置,当地还位于哥伦比亚河附近,阳光充足,常年干旱少雨,一派荒漠景象;哥伦比亚河从荒漠中穿过,水量充沛,造就了沿河的沙漠绿洲,也提供来充足的廉价电力。Google map的这张照片很好的反应了当地自然状况。
对数据中心来说,固定资产投资之外最大的成本就是电力支出,廉价的电力显然很有吸引力。据说数据中心的电价是1-2美分一度,实在是太便宜了,我们家的电价可是要1毛多的。除此以外,当地政府还提供税收方面的优惠政策。
如果你觉得考虑到上述种种因素来选址就算煞费苦心,那就错了。通常的数据中心都会考虑这些(我国政府领导拍脑袋订下来的除外)。要成为一个现代化的数据中心,还要走得更远。

大家都知道降低电力成本是核心,那么问题来了:除了找电价便宜的地方,我们还能做什么来降低电力成本呢?数据中心的电力消耗主要分成两部分,一部分是主机消耗的,比如主板,CPU,内存,硬盘的耗电;另一部分是制冷的耗电,比如风扇,空调。衡量数据中心效率有一个指标叫能效比,就是数据中心总耗电与主机耗电的比值。比如这个数据中心的耗能比是1.07,就意味着每用1.07度电,有1度都被主机消耗了,只有0.07度用于制冷。
在复旦读书的时候,有一年室友找了份兼职去逸夫楼的高性能计算中心值班,我陪着一起去了几次。当时印象特别深刻,机房里一排排机柜整齐摆放在,值班室也在大厅里,用玻璃墙和机柜隔开。机房里的空调永远是恒温25度,特别舒服,可惜有特别大多轰鸣声,无数的风扇在转。空调和风扇一起保证着机房的正常运行。
虽然人类已经想了各种办法来提高空调和风扇的制冷效率,但是想想就知道这样的数据中心效率不会太高。要保证室内的恒温,制冷的目标不是主机而是整个室内空间,这其实是巨大的浪费。另外,为什么一定要让压缩机拼命运行来保证恒温呢,与其把热空气温度降下来,不如直接把热空气排走换来冷空气。抽气扇可比压缩机的效率高得多。这个数据中心正是实践了这样的想法:首先不修建实体建筑的“机房”,所有的主机就存放走一个个集装箱一样的空间里边,集装箱直接暴露在外界。这不但节省了没必要的建筑成本,也不必煞费苦心为一个巨大的建筑物保持恒温。然后,在每个“集装箱”内部,没有空调也没有风扇,集装箱把干燥的空气从一侧吸进来,混合冷水来增加空气到湿度,然后把混合后的空气向整排的主机吹去;空气穿过主机带走热量,再被另一侧的抽气扇抽出来排到集装箱外面。冷空气混合了水汽之后比热容增加,吸热能力很好;而被主机加热的空气不需要再花大力气制冷,直接排出去就是了。

这是数据中心的卫星图,实际样子请自行脑补。
Screen Shot 2015-09-13 at 12.02.26 AM
为了满足这样的设计要求,数据中心选在了气候干燥年均日照时间很长的荒漠地带。由于气候干燥,抽气扇吸进来的空气湿度极低,特别适合混合冷水产生湿冷空气。如果是在潮湿闷热的热带地区肯定是不行的,吸进来的空气已经湿度极大温度很高了,指望它继续吸热带走主机产生的热量是不太容易了。

除了能源效率现代化的数据中心还需要极高的运营效率。
这里管理着几十万台主机,即使每台主机的可靠性都在99%以上,平均下来每天出现百十台的故障机还是很平常的事儿。如果每台故障机都要立即修复的话,那雇佣上百人每天在各个机架上爬上爬下拆机器装机器恐怕也忙不过来。所以数据中心通常都有专门设计的软件系统来应对硬件故障。当某台主机发生故障时,可以很快的把应用程序迁移到另外的主机上继续运行,这样维修人员就不必立即去修复每一台故障机。另一方面,维修人员会监测各个机架,挑选故障机数量最多的机架做修复。一次修一批比东修一台西修一台要划算的多。这样的设计在简化了安保的设计。由于主机全部都在一个个狭小的集装箱内,而非与进进出出的工作人员共处同一建筑物内,因此就免除了一道道安全门扫描仪的设置,只要用密码锁把集装箱门锁好再装上监控摄像头就好了,不用担心去数据中心送外卖的顺便溜进机房偷数据啦。其实即使真的溜进机房偷走了一块硬盘也没什么大不了的,现在的软件系统都是分布式的文件系统,一块单独的硬盘上只是存储了某些文件的某些部分而已,如果不知道这些部分是如何组合在一起的,根本就没有用。
由于采用了这些设计,整个数据中心只有二三十个人负责日常运行,降低了人力成本。

每次看到工程师对不断追求完美,对事物做近乎极致的例子,敬仰之情就有如滔滔江水。
其实我参观的这个数据中心最多也只是代表了当代的先进技术而已,离黑科技还差得远。据说IT巨头们已经开始考虑更疯狂多想法,比如把数据中心建在海里用海水制冷,或者修在两极地区等等。期待这些黑科技为整个行业带来更大的变革。

看到这样的数据中心,我想应该没有理由去质疑云计算的未来。几十万台机器,只用二三十个人管理,能源利用效率极高,而电费又只有一两美分;如果把这几十万台机器交给每个大大小小大企业自己去维护,又需要花多少成本和人力?两者孰优孰劣不言自明。只是凡事都不会一蹴而就,新事物到来的时候总会有各种质疑的声音。

在Apache+Django下启用客户端证书认证

这两天在折腾这个问题,google中英文的介绍都只提到一部分,所以决定写一篇blog讲一下整个配置过程,全当做笔记。

SSL连接(HTTPS)是普遍使用的安全的HTTP连接方式,它通过证书认证的方式来保证访问安全。通常的方式是:在服务器端设置一张证书,证书由具有公信力的数字证书认证机构(CA)办法给网站对应的域名;用户访问网站的时候浏览器首先会检查证书,既检查证书的合法性(签发机构可靠),也检查证书的对象和网站域名是否匹配(比如证书发给www.foo.com但是用的证书是发给www.bar.com的,那证书很可能是偷来的^^)。如果检查出错,浏览器会询问用户是否继续访问,即使继续访问也会在浏览器地址栏显示一个警告。举个例子,12306购票网站的证书就是它们自己生成的,不是CA颁发的,所以访问12306就会看到
Screen Shot 2015-07-15 at 5.24.03 PM

除了认证访问站点的合法性,这张证书还会用来对传输的数据进行加密,这样攻击者就没法通过网络抓包的方式轻易得到用户的账户密码等敏感信息。--虽然12306到证书是自己签的,仍然可以用来加密传输数据。

除了上述服务器端证书认证以外,有时候还会有额外的一步称为客户端证书认证。如果某个站点或某些URL并不希望所有的人访问,可以在建立连接的时候要求客户端也提供证书,只有证书在白名单之列的客户才可以建立连接。这种认证方法在前端并不常用,因为网站给每个注册用户发一张证书很困难,用户保存这张证书也很麻烦。但是在后端比较常用,比如网站的web服务器和后台其他服务器之间进行数据通信的时候。

现在就假设在Apache上运行了一个Django的虚拟站点,这个站点提供一些Rest API,我们只希望拥有证书的客户端能够调用这些Rest API,不对外开放。
设置过程分为以下几步:

1. 生成证书
对于服务器端证书,通常需要从CA去申请,申请的证书和域名是绑定的。如果服务器只是内部使用,并不暴露在Internet下供大家访问,也可以自己生成。客户端证书可以自己生成,并只颁发给信任的客户端使用。因此这里略去向CA申请的过程,只讲怎么自己生成:

a.生成一个host key

b.用这个host key创建一个证书申请

c.由前两步得到的key和证书申请产生一张证书

二三步也可以合成一个命令

用同样的方法可以生成另一张客户端证书。如果情况再稍微复杂一点,你有多个客户并且需要一一区分它们,那需要给每个客户单独生成一张证书。这时通常的做法是:先生成一张自己的CA证书(就是自己做自己的权威机构),然后再用这张CA证书分别生成多张不同的客户端证书。关于这一点,我看到一篇很好的reference,可以参考。

2. 在Apache上配置使用SSL
先贴出一个完整的虚拟站点配置文件

a.服务器端SSL
打开服务器端SSL主要由这几行配置指定:

b.客户端SSL
客户端SSL认证主要由这几行配置指定:

其中SSLVerifyDepth的含义是在证书链中检查的深度。证书是层层签发的,最顶层是CA,因为这里使用的证书都是直接由CA签发,因此是1就可以了。

c.设置Apache把证书信息传给Django应用程序
通常除了在Apache上设置,我们很可能还需要在Django应用程序里根据证书信息做更细致多处理。例如根据证书签名判断访问来自哪个客户,每个客户可能会有不同的权限,看到不同的东西。有两种方案:一个是通过SSLOptions +StdEnvVars的设置把证书信息放进环境变量,再在Apache调用wsgi.py的时候传递过去。这个方案在网上看到有人提到,但是我不知道怎么在wsgi.py中修改request object;如果通过全局变量或者环境变量的方法传递信息,那只能处理单个证书的情形,因为全局变量只能hold一份信息;另一个方案是通过RequestHeader的设置把证书信息加到HTTP request header中去。这个方案经过尝试很好用,示例如下:
在view收到post请求的时候,通过检查存放在request.META中的header信息就可以知道证书是颁发给谁的,之后就可以针对不同的人做不同的响应。

3. 浏览器访问
当Apache,Django设置好之后,就可以通过浏览器进行访问了。首先需要在客户端的电脑上安装客户端证书,然后在访问的时候浏览器会弹出窗口,这时选择对应的证书就可以打开网站了。例如,在Chrome中,选择settings-show advanced settings就可以看到
Screen Shot 2015-07-15 at 6.43.55 PM
然后在访问的时候选择刚才安装的证书
Screen Shot 2015-07-15 at 6.44.57 PM

安装证书的时候需要提供同时包含公钥和私钥的文件,pfx或者p12格式。之前我们提到生成证书的过程生成的是独立的公钥和私钥文件。可以通过以下命令做转换

4.Python访问需要客户端证书认证的Rest API
Python跟http相关的模块比较混乱, urllib2, httplib2, requests, pycurl都可以用来访问RestAPI,但是使用起来的复杂程度各不相同。有兴趣可以参考这篇blog,它对这几个模块访问RestAPI的方式做了详细的比较。总之,结论是requests用起来很方面。
requests天然提供对客户端证书认证的支持,直接这发送请求到时候带上证书的路径作为参数就可以:

上面的cert参数可以是一个指向pem格式证书的字符串,也可以是一个tuple,分别包含cert和key的路径。
requests的一个缺点是它只支持pem格式的证书(不包含密码),但是通常我们得到的都是倒出时包含密码的证书,比如pfx。把pem放在机器里看起来不是很安全。Github上这个open issue也有讨论。
可以通过以下命令把pfx转成pem格式:

这就是end-to-end全过程,大功告成。

失控读后感

最近终于有耐心把厚厚一本失控读完了。大概两年前就买来来,而更早之前就听说来这本神作;无奈分量太足,每读一章又都觉得有很多思考,所以一直没有读下去。
我承认,即使认真读完一遍我脑海里仍然没有一个关于这本书的清晰脉络,但是即便只记得某些章节某些发人深思的闪光点,也已经收获很多了。随便写写现在还记得的:

蜂巢思维
这恐怕是网上传说最多的部分了,因为前几章就讲到了:) 确实是很神奇的现象,单个蜜蜂只有简单的行为,但是一群蜜蜂靠着简单的交互和共同的行动就构成来复杂的,看起来更加智能的蜂巢。
其实人类社会也一样,尤其是现今社会分工越来越细多时代,每个人多能力似乎都很渺小,但是当你把人类作为整体来看的话,就要为其能力所震撼了。我虽然已经做了很多年程序员,也参与过windows的开发,但是仍然为操作系统这样的人类巨作感到惊奇;现在无论是哪个程序员个人,也无法说清楚操作系统的每个细节了,而缺来任何一个细节操作系统都是不完整对;神奇的是,一堆人的协作之下产生了一个任何个人都无法想象的巨大工程。
在物联网如火如荼的今天,我们可以想象一下,任何一个单个的物体被联入网络并没有什么了不起,但是当无数的物体被接入,并且物体和物体之间可以进行交流(哪怕是很简单大交流)的时候,谁敢说没有更伟大多东西“涌现”出来呢。

构造一个生态系统
KK说,即使我们知道了构成一个生态系统的全部元素,也未必就能重新构造它,因为各个元素加入整个生态系统的时机和顺序很重要,另有一些元素在现在的生态系统中已经消失了,但是当时如果没有它,也就不可能有现在的生态系统。很神奇是吗。 时机和顺序很重要,所以不要妄图简单的解构别人再模仿,因为你很可能不在何时的时机,也可能并不了解各个要素的先来后到。

蝴蝶效应
蝴蝶效应因为一部电影已经尽人皆知了,在混沌的条件下,初始条件的一点微小改变也会引起结果的巨大不同。我理解的混沌,就是高维空间,有多个因素共同决定最终结果的情形。

达尔文进化和拉马克进化
我对这两个词从初中时候就记忆犹新来,当时就在想达尔文理论真的对吗,一堆遗传基因就靠随机变换真的能一步步从单细胞进化成高智能生物吗。生物书上提到了拉马克进化,但是直接说它是错的,因为如果它对了就意味着“意识可以决定物质”,这是有违马克思主义理论基础的。KK提到了两种进化的共同作用,拉马克进化靠着生物的后天学习,用进废退,一代代把优势积累下去,而细胞内的某种化学作用又会把这种后天学习的能力转化为遗传基因的形式固定下来。在拉马克进化的理论下,人类一代代不懈努力的学习研究才有意义,否则每天吃饱了等着基因变异就好了,再努力也是白努力。其实意识也就是某一些相互作用的物质而已,不存在意识决定物质。

计算机上的进化
KK写书的年代大概是人工智能如火如荼的年代,所以才会提到很多人通过计算机的方法来模拟生物进化,试图通过计算机的演算获得智能。后来人工智能消沉了很久,最近这些年随着计算能力的提高又逐渐火了起来。
以我个人的理解,我不相信通过计算机模拟一些DNA的随机变异和重组就能获得智能,这显然是痴人说梦。人类的智能绝不仅仅是靠DNA来决定的,DNA最多保证了人类有获得智能的物质基础;而且,其实DNA是这些物质基础的哈希;即使能够通过计算机的演算让DNA获得进化,但是仍然无法从哈希值推断其原本的样子。
近些年人工智能的从新火起来,主要是因为计算机的硬件能力有了极大的提高,在此基础上人们有能力实现一些二三十年前不敢想象的算法。但是这些算法跟智能还差的很远,或者说,可能这条路就是错误的,南辕北辙。我们试图用计算机产生一种能够自我学习自我进化的能力来为人类服务,但是具有这种能力的东西一旦产生就不受控制,又怎么可能在实验室产生呢。
我更愿意去设想,新的智能是在无数的设备接入了互联网,互相之间有着紧密沟通之后莫名其妙“涌现”出来的。其实细想一下,自从有来互联网以后,人类作为生物的能力又大大的进化了,当更多的人和物被连进来之后,或许会有更加神奇的事情发生。

共同进化,协同控制
进化的过程不是单个物种的进化,而是整个生态环境中各个物种一起的进化。在未来,这个生态环境并不仅仅是生物的,还包括机器的。人和机器也会相互协同,一起进化。或许人类只是碳基生物的终点已经硅基生物的起点而已,进化不会到了人类这一步就停止。

热力学第二定律和进化
热力学第二定律让人对宇宙的终极感到一丝悲哀,难道生命从氨基酸,单细胞开始,历经万千载,最终的最终,只能和整个宇宙一起归于一片死一般的寂静中去么
KK提到了生命的第二法则:上升流,它与热力学第二定律相反,自已开始就在无序中构建有序,并自我复制自我学习自我壮大,直到充满整个宇宙。
那么,到底谁才是对的呢

PS:先想到这么多。很有意思的一本书,发人深省,尤其是这互联网,物联网如火如荼的今天。

烤茄子失败了

今天照着http://www.meishij.net/zuofa/depukaoxiangshipuzhikaoqiezi.html做了一道烤茄子,遭遇了厨艺进步道路上的重大挫折。烤了20分钟出来的茄子仍然半生不熟,而且完全没有软嫩入味的感觉。按着步骤用蒜泥,酱油,香油调了调味汁涂抹在茄子上,现在回想起来应该是油太少的缘故,所以烤出来茄子干瘪瘪的不水嫩;勉强吃了两口就扔了。严重打击自信,特此记录。