Shell's Home

Apr 15, 2013 - 1 minute read - Comments

关于微信信令问题的补充说明

上次说的扯淡,不是指技术细节,而是商业讨论。技术细节上,我相信心跳一定是会对网络带来负担的。 空口无凭,我们就用上文给出的几个数据来计算一下。按照用户花10元计算,看看商业上他可以得到什么,得到了什么。 ayanamist告诉我,他们那里流量计费大约是10元30M,上海这里我用的比较多的是8元80M,我们按照10元100M计。我找到联通数据流量的最低购入费用是35元/1G,合10元250M。 假定我用10元100M套餐,在手机上使用微信。微信的心跳相当于5分钟连接一次服务器。这个比联网使用当然消耗更大。但是,请思考一下这个问题。移动运营商可以接受10元250M的用户,但是无法接受10元100M的用户一天连接300次服务器?也就是说,一天连接300次服务器的成本比2.5倍流量带来的负担还重? 我的判断是,还是2.5倍流量的负担更重。微信真正的问题,还在于他动了利润更加高的业务——短信。也就是说,我认为,移动运营商可以忍受一天连接300次服务器,但是无法忍受高收入业务被边缘化。 作为佐证,我提出了下面一个概念验证。如果我们使用数据网络打电话如何? 当我们需要给对方打电话时,使用短信呼叫对方上线(作为thomas提出的体验问题的回答。app自动发送短信和接收回信,用户无须手工),然后利用数据网络拨打电话。这样每次接通双方都需要0.1元短信费用,和每小时2元的数据流量费用。当然,对于某些特殊区域,有电话无网络的时候,或者紧急情况下,使用普通电话呼叫。 我测试了微信的语音通话功能在3G下的效果,比普通电话略差,但是基本可以接受。如果我们可以如此操作,就可以免长途和漫游费用,低成本的进行语音通话。这个模型没有任何心跳压力,流量的使用也和普通3G类似。移动运营商可能接受这样的一种方案么? 怎么可能。真发生这种事,移动连讨论都没有就直接禁用这套服务了。

Apr 11, 2013 - 1 minute read - Comments

从微信和移动的官司说多网融合

多网融合这几年 在02年左右的一堂多媒体课上,我和老师就讨论过多网融合的题目。当时我们提出了很多不同想法,有的实现了,有的没实现。 固话业务废弃。这点已经基本实现,但是不是因为IP电话,而是手机。我们原本的预期是价格低廉的IP电话系统覆盖到家,和传统PSTN电话业务结合。IP电话系统内部收取内部价格,和PSTN互相拨打收取外部费用。从实现来看,IP电话系统不接受拨入,这个直接导致了IP电话系统和传统PSTN无法互通,从而根本没有生命力。但是手机和固话互通是没问题的,而且价格和固话相仿。这些年来,我已经很少看到家庭固话了,只有企业还在用(因为大量拨打的情况下,固话还是相对便宜一点)。 电视业务废弃。这点也基本实现。不过不完全是电信覆盖电视,电视自己也在做机顶盒和视频点播。从目前来看,两家的情况差不多。但是从趋势上看,小米盒子,或者其他第三方机顶盒卖的更好。整合国内各大视频网站,提供了非常好的电视点播资源,而且近乎于免费。 传统金融领域废弃。这点还很长远,但是趋势已经见到了。以前我们一起吃饭,结帐时都各自付款。现在都是一个人付款了然后支付宝还账。反正每个月也是要交水电费的,不怕钱进来花不掉。再后面,如果支付宝的安全性更高,我想大额转帐,理财投资等传统银行的高增值业务也是会出现的。唯一不可能复现的是高贷低存的利息剪刀差。 移动业务废弃。这个是在04年左右,我和一个朋友讨论的问题。移动当时数据流量还是0.01元/k。我当时就在考虑,1K数据足够发送和接收一条短信了。如果短信走数据流量,岂不是比0.1/条的短信更加便宜?结果10年不到,印证了我这点简单的想法。移动流量的价格已经低到3.5元/100M了,不但短信的价格已经低到忽略不计,而且已经足够承载一些多媒体业务,包括图片,语音,甚至视频。 移动的价格 微信和移动的官司,其实就是移动传统业务和移动数据业务的冲突。移动传统业务是非常贵的。我在07年时请教过国外的朋友,他们一个月125美金(对他们的购买力来说,大约相当于我们的250-300人民币),拥有4M宽带接入,有线电视接入随便看,2路有线电话,一个手机。有线电话和手机在同一家公司内的互相拨打是不要钱的(我怀疑还有同一个地区的限制),跨公司拨打才收费。也就是说,他们的大多数服务,一个月只要125美金就可以cover。而且这还是07年,这些年还要便宜。对比这种价格,我们短信的价格呢?0.1元/条,而且10年不变。你还觉得他很便宜? 再说传统建设问题。在高速公路收费问题上,常有人持有这么一个观点。中国的高速路收费是因为中国很多路都是新建设的,美国都是建成数十年的。我先不说这点的核算问题,单说这个情况在电信领域是否存在。你真的觉得美国会提前中国10年就把高速链路建好了?目前在用的一些高速链路系统,路由器,光纤系统,可能从实用化到现在也只有10年而已。10年前,任何一个国家所部署的设备都不可能承载今天他们所承受的压力。信息系统的更新换代是很快的,你不可能指着美国说,他们便宜是因为他们历史上已经建设好了。 一个可以理解的原因是,电信设备的价格在世界范围内是差不多的。如果把这个命题转换为“电信带宽的售出价格在世界范围内差不多”,那么美国的125美金到中国可就相当于800人民币——这可不是一个小数目。之所以这一点不完全正确,是因为中国的人工成本只有美国的几分之一。 微信有多少可能跑在非移动数据上 我们考虑这么一个问题。微信是不是一定要跑在移动数据业务上?既然移动说,OTT业务会严重影响他们的网络,微信是不是可以跑在别的什么上面? 其实我们都知道,如果你在城市里,微信80%的时间都不是在移动网络上运行的。你在家里,家里有无线路由器。你在单位,单位有无线路由器。这年头无线路由器和智能手机都基本成了标准配置,有不奇怪,没有才怪。移动数据网络所需要支撑的,就是你离开家里,公司,咖啡馆的这几个小时路上时间。 当然,我并不是说我们干脆把这几个小时的时间忽略不计,让微信直接跑在宽带数据网络上算了。而是说,微信对移动网络的依赖,并没有我们想像的严重。这种不严重,并不是我们不想依赖,而实在是依赖不起。 3G之殇 中国的3G,大概是世界上最扯的3G了。撇开中国自定的鬼扯标准不说,撇开中国3G的奇葩速度和覆盖率不说,最让人诟病的,就是中国3G那奇贵无比的价格。 电信宽带的价格是20M下行220一个月。按照一天开4小时,一个月开22天计,电信一个月可以下载773G的数据。我们打个折扣,假定只下载了220G。那么电信的价格是1元/1G。 移动当然没法和电信比,因为移动数据业务更加复杂。你看,手机费用一般都比固话要高一点,对吧?但是无论技术上基于什么理由,只有价格相近,才能有相近的竞争力。手机通讯价格是0.2/分钟的时候,对固话并没有构成致命影响。当这个价格下降到0.12/分钟的时候,才对固话造成了非常大的冲击。同样,3G要得到广泛的使用,至少价格要接近于这个值。那么现在移动宽带的价格是多少呢? 根据贝壳调查得到的最低值,35元/1G(2013年4月),这还包括上传数据。电信的计算中,我们还没算上传数据量。因此,在移动的价格下跌穿5元/1G前,不用指望和电信竞争。这至少要下跌7倍。 而这里就牵扯到另一个问题,如果流量价格真的下跌这么多,移动和联通是不是吃得消。因为上面我说了,传统业务是非常赚钱的。如果降低数据业务价格,那么传统业务就要受到冲击——你们都不会用电话和短信,而用微信去了。而如果流量价格不下跌,移动又没有办法在数据业务上和电信竞争。 所以中国的3G才出现一个奇葩局面,做3G的公司拼命在做,又不把价格降低下来做到实用。同样理由,移动才希望对OTT收费,而不是直接禁止掉OTT。因为只有这样,才能在流量价格和电信竞争的同时,又不至于影响到自己的传统业务。 心跳是个扯淡理由 首先,如果心跳会造成影响——那就不要搞心跳好了。微信改为上线离线模式,激活后就一直走数据。这和普通浏览器的行为相一致——我以前可没听说过要向浏览器收取什么额外费用的说法。 其次,如果移动运营商管OTT收费了,真的能阻止人类利用OTT业务么? 别搞笑了。用户的行为哪里受软件供应商管束。我租一个小的VPS,在上面搭建一个小的系统,利用UDP和手机通讯,把上面的交互转发到QQ上。移动对这个系统有什么办法?你可以关光所有的OTT公司,但是你能约束用户自己搭建的系统么?要阻挡心跳信号造成的压力,只有对用户收费才是有效的。对软件供应商收费管个P用。 最后,移动运营商自己心知肚明,收费真的是因为心跳信号造成的压力么?网络领域有一个普遍现象,就是随着压力上升,服务质量逐渐下降。如果心跳信号造成了很大的压力,那么会出现的现象是。随着微信的使用人数上升,移动接入服务的质量会逐渐变差。虽然信号是好的,但是数据却传不过来。 趋势 其实我很好奇,虽然电信阻止我们自己建立IP电话系统,但是为什么电信自己不使用IP电话来提到传统PSTN电话网络呢?毕竟成本比较低廉。目前电信的长途还是加拨才有IP电话的,而拨入领域,就没见过IP这东西。 估计再过几年,电话就会彻底死绝。即使在企业领域,IP电话也比普通电话省钱多了,而且很多业务是可以接入到手机的。到时候,除了老古板,没人愿意守着一台不能移动的电话。 视频分享网站涉足电视业务。这点是不可持久的。漫画界已经在整版权了,相信电视界很快也会跟上。到时候各大电视剧的版权都是受限的,说不给你放就不给你放。这样弄的话,视频分享网站倒是能活着,不过只能叫苟延残喘。 但是视频分享网站不一定会死。很有可能发生的事情到是,这些网站替代了传统电视的渠道,将内容送到千家万户。到时候电视台会变成内容的生产者,而视频网站只是内容的传递者。 移动接入之战,搞不好赢家是电信。这种奇葩事情大概只会在中国出现。如果电信把wifi的覆盖率提到足够高,覆盖大多数大街和地铁,公交(尤其是车厢内部),你很难说wifi不会最终赢得大家的拥戴。wifi的参数比起无线来是不算太适合做移动数据传递——他的传递距离在100米以内,不能在医院附近使用,而且最关键的,在两个AP间移动时还会出现断开重连现象。但是wifi的优点是足够便宜,1G的数据大概只是1-2元。据贝壳最新得到的消息,电信自己的流量套餐已经出现6元1G了。这个价格足够把移动和联通统统直接踢出局。 金融领域,作为中国监管最严的领域,是很难很快出现改变的。其实从技术上说,从各大ATM里面直接提出支付宝帐号上的钱,或者存款进去并不是难事。使用NFC技术进行近程小额资金划拨也是非常容易的。再不济也可以推出支付宝信用卡,通过卡片消费支付宝中的资金。这足够使得支付宝成为一家银行的替代品——我们不需要银行。发工资直接发到支付宝里面,我们直接上网购物,交水电煤甚至房租,通过手机进行日常付款,从ATM里面取款或者汇款给朋友。为什么我们还需要银行呢?对此,估计银监局和各大银行都会严防死守,阻止支付宝的落地。

Apr 8, 2013 - 1 minute read - Comments

什么叫做网桥

下面简述的只是linux下的brctl创建出来的玩意,和网桥的学术定义什么的没有关系。 想像你有一块网卡,接上网线,OK,能上网了。 现在,你有一台物理的机器,和一台虚拟机,都需要上网。但是网卡和网线只有一块,怎么办? 如果你能够物理的触摸到虚拟机,你也许会这么干。 找一个交换机来,把物理设备的网卡用网线连接到上面,把虚拟机的网卡连接到上面,再把外网网线接上去,OK,齐活了。 brctl创立出来的网桥就是这么工作的。 你原本的物理网卡,例如eth0,我们直接为他分配IP,进行通讯。结构大概是这个样子的。 system -- eth0 -- network 接入网桥这个假的交换机后,eth0依然负责向外通讯,但是没有自己的IP了。网桥和宿主所在的机器的连接叫做br0(或者br1,以此类推)。 system -- br0 -- eth0 -- network 然后,我们可以为这个交换机接入很多的设备。 system -- br0 -- eth0 -- network | vethXX | virtual -- eth0 / 其中,eth0和vethXX是一对设备。一个在宿主里,一个在虚拟机里。互相连通。 所以,当虚拟机发生通讯时,eth0上可以看到数据流,但是br0上看不到。而如果虚拟机和宿主通讯时,eth0看不到数据流,br0上可以。

Apr 2, 2013 - 1 minute read - Comments

四川行 - 重庆

成都-重庆 成都到重庆的距离不算远,大概就是上海到南京的距离。然而特殊的是,由于四川多山,因此路途上不断的上坡下坡。坐在车里会感受到强烈的压耳反应。某种意义上说,比坐飞机还难受,尤其对某些对压耳有一定抵抗的人来说。因为飞机上,气压的增加只有一次,减少也只有一次。而动车上,气压的增加和减少是多次的。每次当你习惯了,气压马上又发生变化。所以非常难受。 不过对于贝壳这种自然调节耳压的人来说,潜水都没事,何况这点小场面。 火锅 重庆的火锅和成都的非常类似,但是没有味道那么重,和上海吃的重庆火锅大同小异。 大足石刻 这次去重庆,一个主要的景点就是大足石刻。 大足石刻是四川这里的一个苦行僧,赵智凤师傅,花了70多年时间所建的佛教摩崖石刻。石刻最著名的地方,就是千手千眼观音像。普通的千手观音像,不过是20多只手而已,所谓千手,是虚指。而大足石刻的千手观音像,足足1000多只,以孔雀开屏的姿态占满一面岩壁。即使我们去的时候正在修整,也给人非常大的震撼。 其他就没什么好多说的了,一天的时间,三小时多的往返,其实只为了看这尊观音像一眼。 洪崖洞 洪崖洞是民俗景观购物街。整个街区原来是一个吊脚楼区,后来拆迁重建,在原来的房子上建的一组商业街区。 整个街区很特殊。因为建筑沿着山体修建,所以重庆本地人说的入口,其实是在11层。街区紧贴山壁,只有9层和4层可以见天,其他层都是全封闭的。你可以大致认为他是一个靠着山修建的4层的建筑,在建筑的上面,留出一条巷子的宽度,然后其余的屋顶部分,和岩壁凹进去的部分上,又建了一个5层的建筑。然后又是一个2-4层的,最上面的部分在山崖上面形成冒顶建筑。 而最底下的1楼外面,是一条加出来的马路。之所以说加出来,是因为这里的山体宽度本不足以修路。于是在山体外打桩,把桩脚打入嘉陵江内,撑住外侧车道。这样才形成的一条马路。从感觉上看,颇似上海的高架路。但是由于桩脚都在江上,因此成本远比高架来的高。 从样式上看,整个洪崖洞气势磅礴。里面有很多吃的和好看的,建议去重庆的人可以去看看。 瓷器口 瓷器口是个千年古镇,上面都是各种商家。 如果你能看到贝壳的照片的话,就应该知道,贝壳是不推荐节假日或者比较繁忙的时候去的。因为这次贝壳去的时候,巷子居然塞住了。贝壳头一次见到这么惊人的场景,4人并排的巷子,由于人太多,由没有次序,居然全部塞在巷子里,出不来也进不去,动弹不得。不过巷子里有不少好吃的,所以还是可以跑一趟的。

Mar 29, 2013 - 1 minute read - Comments

四川行 - 成都

赖汤圆,夫妻肺片 回到成都是下午三点,我们要找酒店。站在冷飕飕的大街上打电话找酒店不怎么像话,我们就在隔壁的赖汤圆里面吃点东西,顺便订酒店。 这家赖汤圆在春熙路总府路交界处,挺特别的,芝麻汤圆居然要沾麻酱。凉粉一点都不凉,反而是热的,还浇上辣椒油。喵和我说的时候我笑她,谁说凉粉一定要是凉的。那虎皮青椒是不是要打只老虎,夫妻肺片是不是要找一对夫妻杀掉阿。谁知道她突然想起来说,隔壁似乎是夫妻肺片总店,去吃吃看? 夫妻肺片还又总店?你不怕被当作原料了?不过话说回来,这家的夫妻肺片小贵。一小盘要了我们38。味道也只是一般,我们吃不出和其他地方的有什么区别。 结论是,大家不妨去吃吃赖汤圆。夫妻肺片就算了,尤其是夫妻一起去的话。。。 盘飧市 晚饭我们在剧院旁的盘飧市吃,据说这家是老川菜馆。味道不能算顶好,但是一定正宗。 本来我们对卤肉锅魁很有兴趣,结果他家卖光了。据说每天下午开卖,不久就全光了。没办法,我们点了一个卤水拼盘,一个青椒回锅肉,一个开水白菜。总算开水白菜也是川菜中的名菜,吃来过过瘾也好。 卤水的质量不错,不过没有什么太大的特色。青椒回锅肉的青椒很奇怪。吃到嘴里不辣,但是我记得这个味道我有印象,晚上肚子一定会很惨。要是不服,你大可自己点来吃吃看。开水白菜贵的很,一道菜要48。据说是用高汤一遍遍去浇这个小白菜,所以最后白菜熟而不烂,味道鲜美。盘飧市的开水白菜吃起来很不错,高汤味道也很好。至于其他,我就说不出什么了,有机会自己去吃吧。 川剧 盘飧市的隔壁是锦江剧院。原价180的票,我们在酒店楼下找中青旅的人买,只要138。 这里的川剧是改良川剧,里面混入了很多元素,比较适合外行人看。古典川剧“三英战吕布”,“顶灯”,武行的翻跟头和璇子(会武术的明显能看出舞台风格的武术),现代舞台艺术的芭蕾和空中芭蕾,现代杂技和魔术。当然,不可缺少的是川剧的喷火和变脸。但是作为改良和混合的后果,各种元素没有很好融合,剧情很零散。看的出主线,但是不连贯。大概假以时日继续改良,这些问题都能得意修正。 反正听不懂四川话的外行人也能看懂,138是小贵,但是值这个价。 说句题外话,最后所有演员出来谢幕的时候,男主角下了面具出来过一次,很帅哦。 串串香 从川剧出来,晚上在盘飧市没吃饱,就在隔壁的玉林串串香吃了宵夜。 10块锅底,大串1.5,小串0.15。我们两个人吃了近20道菜,只花了40多。吃的下,不算贵,味道也很好。 龙抄手 早上出门,去春熙路的总店上吃的龙抄手。 主要是龙抄手,钟水饺,甜水面三种。龙抄手味道鲜美,但是和其他两道合起来吃就容易被抢味道,有点可惜。钟水饺吃起来是辣的,后味是甜的。四川的水饺是三角形的,形状很好玩。甜水面是用花生和辣油调和的面条。也是吃起来辣,后味甜。 浣花溪 我们在成都最先去的景点是浣花溪公园和杜甫草堂。据说杜甫在浣花溪旁结庐而居,到今天就是浣花溪公园和杜甫草堂两个景点。 浣花溪公园是免票公园,论园林景观只能算中上。和广州烈士陵园比植被不够茂盛,和江南林园比又不够精巧。比上不足,比下还是绰绰有余的。 不过这只是浣花溪公园本身。若是加上杜甫草堂的名头,就足可拉开其他公园一大截。可惜杜甫草堂居然是收费景点,收费60。我站在门口看了半天,看不出什么值得看的东西。基本是复建园林。如果是复建园林,还不如在外面看看浣花溪就好。 宽窄巷子 浣花溪出来,我们去了宽窄巷子。两者相距很近。 着急去宽窄巷子的原因之一,是我的肚子不堪成都这几天的麻辣,闹肚子要上厕所。另一方面,则是饭点到了,顺便吃个午饭。我们在点评上搜到一家叫成都映象的,据说不错。进去后,点了个椒麻鸡,麻婆豆腐,泡脚风爪,味道都很不错。椒麻鸡用料很足,一吃整个嘴里都麻了。还有一个红糖糍粑,甜甜的很好吃。其他几道都没什么特色,我记不住,也就不说了。 吃饭的时候有两件好玩的事情。一个是我们等菜的时候,来了一个掏耳朵的,要价60。据说掏耳朵是成都文化,我就试试看咯。感觉还真不错,挖耳勺深入进去很深,我平时不敢碰这些地方。掏耳朵的时候略痛,据说是因为我耳道不是很干净的原因。掏耳朵的人手里有个丁零当啷的家伙什,我本来是以为以前招揽生意用的。结果清理耳道的棉花在里面掏到一半,她拿那个家伙什在铁棒上一阵敲。我耳朵里面清楚的听到一堆的叮叮当当,滋溜滋溜的声音。掏完之后还有捏骨,耳朵听东西清楚了很多,不知道是不是心理作用,感觉还是很不错的。 还有就是他们酒店居然还有表演。在我们吃饭的地方旁边,是个小天井。下面是一个戏台,叫窄天井剧院。当天节目有川剧顶灯,变脸,京胡,扬琴,评书。顶灯和变脸我们都在昨天的川剧里看过了,不过这里看的是更加原始的版本。京胡,扬琴和评书是头次看到,还不错。有兴趣的可以去他们家吃个饭。早点去,一定要坐在戏台对过或者天井旁的小桌上,才算看的真切。 文化公园 宽窄巷子离琴台路只有500米左右的距离,我们直接走了过去。琴台路到头就是文化公园,隔壁就是青羊宫。同样,也是60门票。我不算是正宗的道教信徒,所以就没去。 文化公园里面有很多桌子,屋子里面也是很多桌子。我们去的时候天气阴冷,外面没什么人座。屋子里面一大群老头老太太在打麻将。想来若是天气晴好,外面也是和里面一般景象。麻将也算是四川的一大文化特色吧。 锦里 最后一天早上,我们多睡了一会。起床后去的锦里。锦里在武侯祠旁,和宽窄巷子很类似,都是旧城改造的商业街。不过比宽窄巷子大一些,也好玩一些。 我们在锦里吃了成都名小吃,三大炮。说白了,就是糯米团子,裹上黄豆纷,放在红糖水里面。吃起来软懦香甜,味道很好。之所以叫三大炮,是因为揪出来的团子要砸在台子上,发出咚咚咚的声音。 锦里这里还有一个张飞牛肉。是用花椒,八角,茴香烧熟的牛肉。我们去的时候刚刚出炉,买了块热的,切开,现买现吃。香是很香,味道不错,不过怎么看都像是下酒菜。想想张飞的脾气秉性,也就释然——若是冠上他的名头,不是下酒菜才奇怪了。 张飞牛肉的特色不在牛肉,而在他们的活人广告。他们找人画上张飞的脸谱在那里叫卖,也算是一大特色吧。

Mar 28, 2013 - 1 minute read - Comments

四川行 - 成都-磨西

成都 以前没来过成都,第一天下午到的成都。找地方住下后,先去订了一张到磨西的车票。结果还没有了——貌似冬天车票也很紧张阿。订了一张去泸定的,离磨西50公里左右的样子吧,也有车过去,需要转一下。 晚上在蜀九香吃的火锅,排队排了快一个小时,但是相当值得。外面就能闻到阵阵香味,进去吃的时候,一个红油锅子里面放着各种香料。我们能看到的只有辣椒,花椒,大块的生姜,还有大葱。但是那个香味看上去不像是这么简单的样子,吃过之后味道一天都散不掉。火锅料有酥肉,豆皮什么的。我们后来点了一道黄辣丁,上来居然是几条鱼。放在锅子里面煮开,鲜的很。各种食材在火锅里面涮一下,很快就变得红中透金。吃之前要在油碟里面过一下,解辣。我猜是因为辣椒素是脂溶的,因此,用水是洗不掉的。涮过的食材,上面会粘附一层辣椒油,而且会有部分溶解到食材的脂肪中。试图在茶杯中洗一下的同志可以省省了。在过油之后,表面的辣椒油会被洗下去一层。不得不说这是个很聪明的办法,因为我吃了一块洗过的和一块没洗过的,后者导致我第二天肚子一直不是很舒服。。。 成都-磨西 磨西是古羌语,是宝地的意思。成都在东,磨西在西南的方向。去往磨西的路往西南走,开始100多公里是高速。而且开到荥经,google地图上的高速已经结束了。实际上高速一路延伸,一直到汉源附近。据朋友说,这条高速8月才通车。车到石棉县再向北转折,沿着大渡河开往泸定。 原本按照地图,我们应当过二郎山隧道的。车上有个女的去过,告诉我们那里风景很不错。可惜,照我们这家客栈老板的说法,现在那里堵车,过去要多堵两个小时。所以现在货车一律走二郎山,客车就从石棉那里绕过来。 高速路段的风景乏善可陈,真正的风景是从汉源下了高速后开始的。汉源那里有个水库,过了水库旁边的隧道,能看到一条非常宽阔的河。水面碧绿,车就在水旁边开。很多路段,车甚至不是从山体上切割出来的,而是在水面上架桥蜿蜒过去。 接近石棉,地势就越发高昂陡峭。房子就建在山坡上,远远看去好像一座山上一层的岩体裸露一样。旁边的山体有很多就是这样裸露出来的,底下是大块的岩石和松软的土。这里的土还不是江南那里的那种粘土,而是粗沙土一样的东西。这样的房子在地震的时候发生滑坡是一点不奇怪的。 过了石棉,道路就狭窄起来,只有沿着山体切割出的一条2车道国道。国道下面就是大渡河,河水不是绿色或者蓝色,而是苹果绿中泛出一种乳白的色泽。配合翻滚沸腾的波涛,还有碎石裸露的河床,我猜我大概知道为什么河水是这种颜色。大渡河在某些河段非常凶,平静的河水在一个小口突然下跌,下面就是急速的河流。如果落差再大点,大概就会形成瀑布了。 车行到彩虹桥,司机就让我们下车了。泸定还要往北50多公里。从彩虹桥下车,上当地的黑车,不过一刻钟的功夫就能到。 磨西 磨西是个不大的镇子。地图上看,镇子基本是西北-东南走向,宽度大约500米,长度大约1公里出头。但是地图上绝对不会告诉你,磨西这里的主要街道有10-30度的坡度。在路上走着,就仿佛在爬山一般。 我们是下午到的磨西,晚上就住这里,第二天再去山上玩。驴妈妈这么安排其实很不合理,因为磨西往成都的车只有早上七点半的一班,而山上七点是没有车下来的。所以我们下午只能逛磨西古镇,第二天玩一天,第三天转车才能回去。如果第一天上山,第二天住磨西,就可以直接订票回成都了。 我们住的是一缕时光,网络上评价不错。老板是个藏族,他儿子是个帅哥哦。酒店有wifi,我们现在就在用wifi上网写文章。 晚饭我们在一家藏族餐馆吃的,老板娘汉语都不怎么说的好,而且一边干活一边用我们不懂的语言唱歌,肯定是藏族无疑。我们吃了土豆包子,牛肉包子,还有酥油包子。酥油包子我们吃的不大习惯,不过牛肉包子很赞。我们还点了奶茶,牦牛酸奶,还有手撕牛肉。奶茶看起来确实很有藏族特色。老板拿点粉末放进去,然后拿一大壶茶一冲,倒出来就是奶茶了。喝起来有点奶粉味道,又有点酸酸的。酸奶很小一碗,不过确实不像是外面卖的酸奶,因为没有任何稠的感觉,就像是面霜一样一坨一坨的。手撕牛肉很贵,不过是我们吃的最好吃的东西。就是汤煮牛肉,放一点辣椒和盐巴。牛肉没有煮的特别烂,但是很鲜,很香。加上辣椒后就非常好吃。 不过不得不说,这玩意有些人就是吃不惯,有兴趣尝试,不要勉强。 海螺沟 海螺沟是贡嘎山脚下的一条冰川,最低点3600米上下。来海螺沟玩,主要是看周围的雪山,尤其是贡嘎山主峰,7400多米。还有冰川和大冰瀑布。 这里不得不说海螺沟的坑爹之处,我还以为门口80的票已经包括到山上了呢。结果门口的票只包括门票和一个多小时上山车的车票,要上山顶还要坐150的缆车。缆车会把我们送到4000米左右的高度。我们去的时候运气不大好,又是云雾天气。坐在缆车里什么都看不见。上到山顶,居然瞬间转运,出门就看到天开颜,露出西边的山麓和顶上的积雪。 如果昨天的景色已经用掉了惊心动魄这四个字,我就不知道该如何形容今天的景色了。整个大山仿佛漂浮在云雾上方,从东南西三个方向包围着我们。周围的其他雪山都是黄黑色的岩石上有积雪,仿佛斑纹一样。贡嘎山主峰就在西南方向,整个全是白色的,非常显眼。说是说7400米,世界第41高峰。但是看上去也不怎么高的样子。实际上是因为我们本身就已经在山下,因此感觉不出。 云雾天看山是要运气和耐心的。云雾偶尔会被风吹散,露出大山。几分钟内又会笼罩回去。能不能看到,看到多少,全靠运气。难怪山里的人多数都信佛教,希望得到神灵的庇佑。我们没有跟团,因此多留了点时间。两个多小时的时间里,天总共开颜了四次,加起来20分钟的样子。我们基本看到了所有的景色,包括冰川和大冰瀑布。唯独贡嘎山顶始终笼罩在一团云雾之中,不肯显露真颜。 海螺沟的冰川和大部分人想象中不同,它并不是白色的,而是灰色的。因为向下流动过程中,夹带了大量泥沙的关系。在冰川的上游,有个非常罕见的冰瀑布。冰川从瀑布上出来,跌落在下面继续向下。和普通瀑布差不多,除了里面走的不是水,而是冰。下冰川的路途非常狭窄危险,我们不想让当地人抬下去,所以就没下去。 向上走,可以看到小片的红石。据说这东西在燕子沟比较漂亮,是由高原旱藻在石头上生长造成的。因为是特殊气候条件下生长的藻类,所以当拿回家后就会慢慢死亡失去颜色。 最后说一句,要去看山一定要戴墨镜。去高海拔地区可以提前买点牛肉干或者糖块之类的,以补充能量,防止高原反应。 温泉 海螺沟下来,我们坐车到了二号营地的温泉酒店。酒店那里猴子很多,我们寄放在前台的一包甘蔗就被猴子抢走了。鉴于普吉岛的经历,我建议大家离猴子们远点。 既然是温泉酒店,温泉就是酒店最大的特色。这里的温泉水很热,高达60-80度。经过引出后,温泉池日夜冒出热气,整个温泉区域都散发着一股浓郁的硫化氢气味。 酒店有对住客提供一套浴袍和浴巾,如果买门票来泡就只有租了。可以房间里换好衣服出去,也可以用他们的更衣室。不过鉴于现在这个天气,我建议还是更衣室换好衣服就赶紧往温泉池里面跳吧。 温泉池的温度大约是40-45度,一般来说,越高温度就越高。池子里面有漂浮的细细的雪花一样的物质,酒店说明这是钙质沉淀,我觉得靠谱。碳酸钙的溶解率是随着温度变化的,从高温到低温的时候,会有大量碳酸钙溶出。但是酒店在泉眼的说明文字——让我怎么说呢。上面居然说这个泉水是“氢泉”。废话,只要是个泉水,里面都有氢。要是说游离氢离子——难不成泉水的PH值小于5?那还能不能泡了?真是,一点文化基础都没有的乱忽悠。吐槽不能。 泡过温泉会让人觉得暖洋洋的,很舒服,而且皮肤很滑。另外,运气好的话泉水区有很多美女哦。我在泡的过程中有好几拨美女路过,很多都是夫妻一起来的(恩,我家喵也算一个),甚至一家人协老带小一起来。 磨西-成都 从磨西回成都是个麻烦事,因为早上的班车7点半就发车了,而酒店8点才开出班车。因此回到磨西镇上我们需要自己找出路。 幸好,昨天有个女的,和我们说她能帮我们联系上泸定的司机,司机在经过彩虹桥的时候把我们稍上。讲好回程车票150一人,到彩虹桥的车钱30。估计她大概在里面总计赚了30-50。能解决问题就好,要是我们等一天,或者打车去泸定再走,花费只会更多。 回成都的路上,天气放晴(就阴了一天半,什么人品。。。),我们得以看到大渡河的真面目。真的是非常险峻而漂亮。到了石棉以下,河水渐渐宽阔,整个江上广阔无垠,又是另一番气象。如果有机会过的话,这段风景不可错过。

Mar 20, 2013 - 1 minute read - Comments

python插件技巧

简述和通则 何谓插件。 在实现某个功能时,经常需要对一个功能提供多种实现。例如短信网关接口各异,但是对系统而言,发送代码是一样的。 通过一套特定的机制,在成型的产品中,增加一个独立的文件,即可实现定制化实现。这套机制被称为插件机制。插件必须满足下面几个要求。 对于已经发出去的产品,插件机制可以通过增加文件,并少量修改(一般1-3行)产品源码,即可为产品添加新的功能。 对于产品主分支,带有插件不会影响主分支的正常工作。 插件机制的以上两个特性对产品定制非常有帮助。因为使用插件进行定制开发的项目,不需要独立建立分支。只需要在主分支上添加几个文件即可。分发补丁时也格外容易。 禁止在python主目录下直接放置插件,所有插件必须在python下级目录下存放。 插件的命名必须使用前缀师命名规则,所有同类型插件,要么在一个目录下独立存放(目录下没有其他代码),要么在一个目录下拥有同样的前缀(其他代码不得使用这个前缀)。 替换型插件 最简单的插件手法,就是某个文件提供提供某些函数,在变更功能时用另一个同样实现这些函数的文件替换掉原始文件。这甚至称不上一个插件手法,只能算打补丁。 替换型插件的提升,就是在文件中不直接提供函数,而是从某个其他文件载入这些函数。例如以下代码: from abc import * 原始是从abc文件中取得所有符号。当有新的文件abc2提供时,将原始文件替换为abc2,补上去,即可改变代码。注意这行代码一般不在一个大的文件中的某一行,而一般存放于一个独立文件。因为大文件相对容易修改,不能用新的代码替换。而独立文件相对固定,在打补丁时可以用新的代码直接替换。 替换型插件适用于,对于某个客户而言,只需要在多组实现中静态的选择一组的情况。替换型插件的优点是工作原理简单直观,排查容易。缺点是对于一个功能不能提供复数组实现。 配置型插件 另一种插件手法基于文件或配置。在某个目录中,放置某个功能的多个实现。在加载时,载入全部插件。在使用时,根据配置动态选择。这种手法被称为配置型插件。 配置型插件是一种非常重要的编程技巧,他为程序提供了非常优良的可扩展性。 例如下面的例子,简述了一种配置型插件的实现: funcmap = {} def register_func(name): def _inner(func): funcmap[name] = func return func return _inner 在具体实现中 @register_func(name) def func1(....): pass 在__init__.py中,import一下新的文件。在原本的funcmap中,即可出现新的name和func的对应。 配置型插件适用于大多数场景,其优点是工作原理简单,可以为一个功能提供复数组实现。缺点是使用上限制比较大,必须和逻辑结合,思考困难。 动态加载 动态加载插件是一种插件技巧,并不特定用于替换型或配置型插件。 当需要加载插件时,通过python代码访问文件系统,枚举出特定文件并加载的技巧,称为动态加载。以下代码是配合上面的配置型插件的例子,实现动态加载的例子。 def load_plugins(): for filename in os.listdir('plugins'): if filename.endswith('py'): __import__(filename[:-3]) if filename.endswith('pyc'): __import__(filename[:-4]) 动态加载的优点是,可以通过放置文件来增加/修改功能,而不需要修改代码。缺点是,由于需要访问文件系统,因此效率并不高。如果每次加载都需要动态查询,那么系统效率会大幅下降。 热加载插件 热加载是一种比较高级的技巧。在程序执行中,不退出进程而动态的将最新的组件加载进来的能力,被称为热加载。 简单的热加载就是在每次执行功能的时候,检查是否有新的组件。由于这样会带来很高的系统负载,因此除非必要,否则不要滥用热加载。

Mar 19, 2013 - 1 minute read - Comments

vpn转代理

背景 贝壳自己的vps蒙难,不能正常工作了。所以贝壳买了一个vpn。是pptp/l2tp系列的。用起来很好用,但是这类ip-based vpn有几个不便。 不能自动设定客户端路由表,实现智能翻墙选择。 每个需要翻墙的设备均需要拨号,而目标设备有容量极限。 不能实现非侵入式翻墙,打开之后连p2p都翻了。 与此相反,代理式翻墙可以比较有效的解决这些问题。一个点拨号,其他点可以共享代理。不需要翻墙的直接访问不设定代理就好。唯路由表没有办法。实际上,为了使得代理可以使用路由表选择,贝壳还是花了一番功夫做了antigfw项目的。 闲话少说。这次贝壳就展示一下如何在debian下设定pptp vpn,并且利用代理无缝共享的。 linux下的vpn设定 安装pptp-linux这个包,然后按照说明使用即可。 pptpsetup --create <TUNNEL> --server <SERVER> [--domain <DOMAIN>] --username <USERNAME> [--password <PASSWORD>] [--encrypt] [--start] 自己填充用户名密码服务器,就会在/etc/ppp/peers/下面生成对应的文件。使用pon tunnelname就可以拨号了。 路由设定 初始设定好的vpn不具有智能路由,因此必须添加一些内容。 首先使用chnroutes.py这个程序,得到ovpn下常规用的路由表。当然,我们可以用linux下的路由表,但是他的old gateway存放在了/tmp下面,对此我并不是很喜欢。所以我只用了他的路由 表信息,其余自己处理。如果你不确定自己执行时的默认路由,理论上也应当需要下面的一些配置。 使用下面这个topptp.sh,可以将输出的routes.txt转换为pptpup和pptpdown两个文件。 #!/bin/bash ETHGW=192.168.1.1 cat > pptpup <<EOF #!/bin/bash export PATH="/bin:/sbin:/usr/sbin:/usr/bin" EOF cat > pptpdown <<EOF #!/bin/bash export PATH="/bin:/sbin:/usr/sbin:/usr/bin" EOF sed "s:route (S*) (S*) net_gateway 5:route add -net 1 netmask 2 gw $ETHGW:g" routes.txt >> pptpup sed "s:route (S*) (S*) net_gateway 5:route del -net 1 netmask 2:g" routes.

Feb 9, 2013 - 1 minute read - Comments

lxc的文件共享映射和严重安全隐患

在lxc中,可以利用mount bind指定guest可以访问某些host的路径。例如: lxc.mount.entry = /home/shell /var/lib/lxc/{vmname}/rootfs/home/shell none defaults,bind 0 0 注意,/home/shell是你希望共享的主机路径,/var/lib…/shell是映射到的目标路径。 这个工作的基础原理,是在虚拟机启动的时候,自动执行mount,添加一条bind映射,将host的路径挂到guest可以访问的路径里去。 由此,我发现了一个lxc在文件共享时的严重bug。 user@guest:~$ mkdir -p ttt/123 user@guest:~$ cd ttt/123 user@host:~$ mv /var/lib/lxc/{vmname}/rootfs/home/user/ttt/123 . user@guest:~/ttt/123$ cd .. user@guest:(unreachable)/user$ ls -l 好了,现在guest在host的~user/目录下,host上本来不应当被看到的东西全被看光光了。 更严重的是,如果此时sudo成root,在host中可以以root的身份做任何事情。 结论:暂时来说,不要在host和guest之间直接共享任何数据。

Feb 1, 2013 - 1 minute read - Comments

fork两问

问题1 以下代码。 int main() { fork(); fork(); fork(); printf("---n"); return 0; } 编译后执行./a.out | wc -l,输出多少? 问题2 以下代码。 int main() { fork(); printf("b"); if (fork() == 0) { write(1, "a", 1); }else{ write(1, "c", 1); } return 0; } 编译后执行./a.out,输出多少? 答案 第一个是8,因为pipe会继承。 第二个是cabcbbab,结果不恒定,原因比较复杂。至少应当能看懂2个a2个c4个b,c先出ab后出最后一个是b。