近年的Web开发,很多接口数据交换通常倾向于使用json格式作为数据源,相对WebService来说,json有轻量,容易使用在Ajax程序和移动App中的优点。但是最近在开发一个对安全性要求相对较高的应用时,第三方的接口是基于https的WebService,并要求对提交的数据进行签名。对方使用的是java,一开始我想直接就使用java来开发这个功能,但后来考虑到这个应用接下来可能会跟不同的第三方接口打交道,并且会涉及不同的技术,最后还是决定用Python来实现(胶水语言的优势出来了嘛)。

这篇文章只谈Python调用https协议的WebService,不谈数据签名。

网上查了下,基本上无外乎以下几种思路: 1、把WebService视为普通的xml源,用httplib或pycurl来获取(urllib和lurllib2在python2.6后支持https,但不支持证书验证?),但这样一来,就得自己去分析WebService,太繁琐,这么普遍的应用,我猜应该有现成的库,不去“重复造轮子”了。 2、用PyXML, fpconst, SOAPpy一系统包来实现,但这些包04年05年左右就不再维护了,并且多数不再提供python2.5以上的版本的支持,现在我们用的是Python2.7,显然不合适。 3、http://stackoverflow.com/questions/206154/whats-the-best-soap-client-library-for-python-and-where-is-the-documentation-f 这里有一帮人在争论"What's the best SOAP client library for Python"(什么是最好的soap客户端),于是发现了SUDS,对英文有点头痛的同志可以点下这个链接http://www.cnblogs.com/walkerwang/archive/2011/07/27/2118401.html,就这样比较去比较来,最后决定使用SUDS了。

SUDS的安装(Mac OS X/CentOS): $ sudo easy_install -z suds …

年前调用客户的第三方开发方的Service的时候,一开始使用了urllib和urllib2性能不太理想,在stackoverflow上有人给出了pycurl的替代方案,实验之后发现比用urllib或urllib2来调用,性能提高了不少。

在桌面上发现这篇年前写的安装备忘,发出来作为存档。

本地开发环境,

1、Mac OS X(我用的是Mac OS X 10.7.3,也就是Lion): 必须要用64位 sudo env ARCHFLAGS="-arch x86_64" easy_install pycurl

2、?Windows: 没试,据说是有exe安装包

3、CentOS:可以对外连接Internet的服务器 sudo easy_install pycurl

4、CentOS:如果上面一步安装不成功,或者是服务器无法请求外网。 4.1 …

从那木措回到拉萨,老陈跟另外一辆车动身出发去阿里。老杨我俩决定先在拉萨呆一段时间再走,这一呆,呆了十天左右,天天吃了逛,逛了吃,吃了睡,睡了又吃,吃了又逛。。。

这期间认识老孙,一40岁左右北京侃爷,在我们住的平措康桑(就在那次著名事件中,被烧的某华社对面)的前台。老杨被他侃的晕晕乎乎的,后决定跟他搭伙一起去拉里。

老杨天天抱着笔记本电脑去顶楼的酒吧面目深沉,作学术研究状偷窥姑娘们。酒吧有三只狗,一只黑的,很胆小,一打雷就跳到主人怀里瑟瑟发抖。一只白的,被阉了,说是检来的流浪狗,没阉之前老是伤人,它整天后腿张开成八字平趴在门口,老孙每次见到它就叹息:你看你,失去了男人的那玩意儿,这么趴着也不难受了,可怜哦。另外一只小狗,你吃东西的时候它总跑你面前一边张望一边流口水,然后女主人就过来呵斥:走开走开,你看你也不害臊。

从平措康桑后面的窗户看过去,颇有点躺看云起云落,什么风卷云残之类的味道。

平措康桑前台有个四川来的姑娘,如果你下次去住那里,她还在那里,烦你转告一声,说贵阳老杨很想念她。

因为时逢敏感词事件刚过去不久,游客稀少,我们去布达拉宫的时候并没有什么人,据后来在大昭寺门口认识的一本地小男孩说,如果是以前,要排很久的队才能买到门票。

在这遇到两个深圳来的姑娘,老杨前去搭讪,姑娘指着我们的相机尖叫,你们的家伙好大啊!引得老杨浮想联翩,回去提了好几次:她们是不是对咱们有点意思?

从布达拉宫往回走的路上,听到一阵阵悠扬歌声传来,探头望去,一群妇女在脚手架上干建筑活,可能是修缮什么东西,一边唱歌。入藏一来,一直是发现是女人在干重体力活,农活等。我在昌都的哥们“龚鸡窝蛋”说:他妈拉个巴子,西藏男人衣来伸手,饭来伸口,简直是生活在天堂。

我们天天下午去大昭寺门口晒太阳,一个个一副游手好闲的懒汉模样。

/media/photologue/photos/P1020955-1.jpg

一般到拉萨都会去那木措,经常有什么“一日游”就包括拉萨-那木措,或者拉萨-林芝之类的,所以第二天就起身去那木措。

就景色而言,说什么前世今生其实蛮俗的,第一次开始感觉不像在平常的人间。咱简单谈谈遇到的人们吧。

路遇向我们兜售纪念品的藏族小姑娘,老杨跟她们跳舞之后彻夜难眠。

路遇纯朴的阿旺,比我们小很多,却是两个孩子的父亲。

扎西岛上,在一对四川夫妇的帐篷里吃饭,男的说,冬天我们就走,夏天再来,我们以前在深圳打工,你从广州来的是吧,说不准以前我们路上碰到过呢,我在那边打工,呆过好多工厂,真的。女主人不言语,大家讲到兴头上,她只是看着自己的男人笑。我问,你们回老家吗?他说,回,怎么不回,不然孩子就不认识爷爷奶奶了。大家点着蜡烛吃东西,旁边一桌一个操着粤式普通话的长发男子朝我们这边说,兄弟,明天一早起来,去山上看日出。

那帮人出去之后,店主人说,这些人来了快一年了。

第二天我出门,看见他们从山上呼啸而下,大叫“兄弟,你起来晚了,最美的时候过去了”,然后声音渐远。

去那木措的路上

这就是那木措了

是不是不像在人间?

扎西岛(老杨摄)。

进入拉萨时,时逢著名的敏感词事件(fourteenth of March, 2008)刚过两、三个月,进城时被盘查,桥两边全是列兵,加油站,银行全部重兵把守,第二天老杨同志在大昭市旁边看见一队伍经过,举相机咔咔两下,立马被人过来勒令删除。 我等良民从没见过这种战时景像,颇为震撼,我用录音笔在车里描述时都不敢高声语。

下午到布宫,这里比内地要天黑得晚(但天亮也早),那个是阴霾密布啊。

布达拉对面那座山却是金光闪闪,无比牛逼。

上图戴眼镜的小眼睛男人为我此行的御用摄影师,老杨,贵阳市排名第二室内设计师,在布达拉宫前见到女的就搭讪,成功率极低。只有下图这个深圳来的美女见他可怜,赏了他几句话,这女孩叫小凌,她领我们到一个家庭旅馆去见到很多神头鬼屁股的各路神仙妖怪。也通过她知道,真正在西藏混的藏漂(他们自称藏獒)的集会地点是大昭寺门口,而不是布达拉宫。小凌自己以前则是在深圳上班,上着上着突然觉得无趣,便辞职到拉萨,呆了超过一个月,问她什么时候回?她说不知道,反问我,干嘛一定要回?也许不回了呢?

下面说说在大昭寺门口听来的故事:

A:上海土著,本是上海某著名IT公司程序员,因公司部门合并,不愿并入新部门,辞职前向喜欢的本公司姑娘求爱,姑娘福建人士,答,要不这样吧,你先陪我骑自行车去福建吧,到时候再说。A君应之,到了福建之后,姑娘又说,福建都骑来了,何不骑去拉萨?A君又应之,至拉萨,姑娘回,A留藏,经营一小旅馆,给我炫耀他从某山某谷拿回来的石头,拿尼泊尔饮料给我喝,完了临别时说,兄弟,我在上海的时候,我家住莘庄,你知道吧。我说知道知道,没钓鱼执法前黑车特多,他挥挥手,别说黑车。继续说,兄弟,我在上海的时候,我就只想着挣大钱,买大房子,买豪车,现在想想,要住这么大的房子,开这么好的车干嘛呢?现在多好,每天下午在大昭寺晒晒太阳。不过我还是程序员,真的,偶尔我没钱用了,还会去这里的电信部门兼职给他们写点东西。

B:一日见一留小胡子的光头坐在大昭寺前不怎么言语,听到有人问我职业,我回答程序员时,小胡子光头睁开眼对我说,我以前也是程序员,Java程序员,码农。我说那现在呢?他说,在酒吧唱歌,这样吧,晚上你来捧我场。

今天客户对前端的一个类似mega drop-down menu(panel)的地方提出两个要求, 1、能拖动。 2、可以加载iframe。

网上查了下,tooltip, drop-down menu一大堆,能同时满足这两个条件的可不多,自力更生吧,花了几小时仓促写成,随便命名为Bobblebox(2012-04-23注:妈的,后来发现有个小游戏网站用了这个名字,算了,下次写插件时先找个测字先生给命个名了),用法如下:

 

头部引用: <link href="/media/Bubblebox1.0/css/jQuery.Bubblebox.1.0.css" rel="stylesheet" type="text/css" media="screen" /> <script src="http://www.laonan.net/static/js/jquery-1.7.1.min.js" type="text/javascript"></script> <script type="text/javascript" src="/media/Bubblebox1.0/js/jQuery.Bubblebox.1.0.js"></script>

 

头部Javascript代码: <script type="text/javascript"> $(document).ready(function() { …
/media/photologue/photos/gsh-1.jpeg

进拉萨前,很多人选择在八一镇休整,这个小镇跟内地很多小镇都差不多,据说是军队留下来的。在这听到一些有趣的故事,其中一个是这样的:有一哥们是从辽宁还是哪里(记不清了)徒步赴拉萨,说要多少天之内把体重减到某一个值,到八一时,发现提前了,于是就呆在八一好吃好喝,一个星期过去,猛地发现体重又往回涨,急忙天天健身,不然到拉萨就达不到他的目标了。

另,据说八一镇的娱乐业不逊色于内地,不过我没体验过。

这是格桑花吗?

住在这里,渡口客栈,旅馆里慢慢出现一些神头鬼屁股的人,当然,到拉萨之后就更多了,那是后话。

骑自行车的哥们。

松赞干布的故乡, 墨竹工卡。

以上照片均为老杨所摄。

这应该是西藏最宜人居住的地方了,海拔也就3000米左右,树林茂密,河水清澈,公路上不时有小野猪小家猪穿行。一路上见到不少红顶的房子,据说是广东援建的,因为我没到过北欧,以后要去那边,如果真像他们说的这么类似,考虑把那边称为“欧洲的林芝”。

下面两张图为南迦巴瓦,林芝境内最高的山,老杨拍摄,可点击放大:

老杨和老陈爬山去找更好的视角拍南迦巴瓦时,几个卖虫草的少年骑着摩托围了过来,一开始我大吃一惊,想跳到车上逃走。后来镇定下来,他们过来问,要虫草不?我说不要,我不相信这种东西,说完就后悔了,心想,应该先问下价格的,多少买一点以防他们为难我。不过他们得到我不要的答案之后,没有再推销,几个人自己用藏语聊天,我听不懂,自己瞎呆了一会儿,开始跟他们搭讪,他们跟我说起村里有人卖虫草发财了,买了大车,“喏,就是你这种越野车。”,我说不是我的,我朋友的,他俩上山了,马上下来。

呆了一会儿他们没有走的意思,但也没有继续向我推销虫草,当然我最初提防的要打劫我之类的更是无稽之谈(当时属敏感时期,进藏前,很多人警告我们路上可能会有劫匪,专门针对内地去的,要小心)。我呆得无聊,就提议给他们照像,等我回到上海冲洗了给他们寄回去。他们听罢很开心,摆出不同的pose,骑在摩托车上的,在车边的,在越野旁边的,总之摆出各种他们认为的酷pose让我拍。完了我让他们给我写地址,他们面面相觎,一个推一个,最后推出一个叫达娃(音)的,也不会写,我说你念我记吧。

回到上海我冲洗出来给他们寄过去的时候,被退回“查无此人” ,多年来几次搬家,我把原来寄给他们的快件也不知道弄哪里去了,所以他们口述给我的地址我暂时也记不起来了。如果有朋友过林芝看到他们,帮我跟他们再要一下确切的地址,就是下图这些小伙子们:

在林芝第一次碰到磕长头的人们,从四川还是云南藏区来的,据说已经走了一年了,看到经过的游客把镜头凑到他们的鼻尖上去拍照,很是让人不安。我远远拍了一张,收起相机。

老杨跑过去问旁边他们的随行说,需要水吗?得到肯定的答复后,从车上搬了一箱水给他们。

业拉山是我们第一次这么近距离接近这种藏区特点,怪石嶙峋的山。对我们几个南方人来说,看到这种山的机会还是蛮少的,我们那边的山,一般都有植被覆盖。

貌似老杨拍这种风景照比我拍的好,当然,按惯例想看细节的话,请点击看大图。

然乌湖位于昌都地区八宿县境内西南角,距离县城白马镇约90千米的然乌乡(此段文字抄自互动百科),我们有两个有趣的兄弟“对烂的板"和“龚鸡窝蛋”在昌都当老师,他们一再邀请,可惜不凑巧离这里还有一段距离,从整体行程考虑,最后没有去看他们。

这里的孩子们已经学会了跟游人伸手要东西,但一个个长的很漂亮,当然,呃,要是他们勤快洗脸一点的话,会更漂亮。老胡在贵阳的时候交待,说是要碰到小朋友伸手要东西,可先买先作业本,铅笔之类的发,别直接发钱,我们听从了他的建议,带了些作业本和铅笔,在这里第一次派送给这些小家伙。

一路上我最矛盾的事就是,很多藏人对游客肆无忌惮地把镜头凑到脸上去拍照的行为相当反感,事实上我自己也反感这种做法。小孩子一般很好奇,你给他们拍照片他们还会摆Pose什么的,拍完了你把他们叫过去看,大家拼得一乐。后来碰到稍微年长的,我一般是尽量远地拍,不打扰他们,如果有被发现的可能,我就不拍了(我也不知道这样做对不对,但这是我能想到最不冒犯人的方法了),最好的做法是,跟拍摄对象交流,征得对方同意,我在林芝就采取了这种做法,压后再表。

以下照片均为老杨所摄,要看大图点击之。

 

 

这个稍微年纪大一点的,远远羞涩地看着我们,老杨跑过去,给了她一个作业本和一枝铅笔。

 

在这地方第一次遇见不会说汉语的藏族牧羊姑娘,很害羞,又对我们很好奇,老杨指手划脚给她说,给你照张像行不?半天了她只是很质朴地微笑,但当老杨把镜头举起时,姑娘大惊,急忙闪躲,老杨只好放下相机很温柔地用汉语说,“不拍啊,不拍了。。。”。

这个不知名的湖,让我们第一次大为惊讶的是我们原来的目测经验完全不管用,因为没有参照物。我们呆了一会儿,我发现远处有一个小湖,就提议过去玩玩,老陈和我上车,发动。老杨很是不屑,撇嘴以示藐视,说我们这5分钟的路还开车,太娇气了,完了他一个人很英勇地表示不跟我们同流合污,要自己步行到湖边。

后果是,他走了40多分钟才到湖边,路上经历了遇到狗,害怕,想打手机,手机又在车上,最后提心吊胆双腿发抖到我们身边,说,我看你们开着开着变一个小点,才开始觉得不妙了。

再后来,我们到阿里的时候,有次我迷迷糊地醒来,探头出窗外,我啧啧称奇,说,你们看,这电线杆看起来像篱笆一样矮小,明明这么远,看起来这么近,这视觉经验完全失效啊。老杨也附和感叹。司机老李扭头看了下,骂道,锤子,那就是篱笆桩子,用来隔着羊群以免乱跑到其它区域的。

这是还没到湖边的时候(点击可放大)

这害死人的美丽无名湖(点击可放大)

本来打算睡了,翻到老杨拍的这张《忘了名字的村庄》忍不住又发了上来,就在这个湖附近的(指的是开车不远)

我也想不起名字的村庄,老杨摄(点击可放大)

到了德钦就算是藏区了,这种雪山还是比较雄伟的(以下图片均可点击看大图)。

哈巴雪山

老杨拍的梅里雪山

香格里拉

老杨拍的香格里拉

老杨拍的香格里拉纳帕海 2008年6月9日, 16:32:20

-------------- 老杨日志片段 ---------------------------

6月10日 晴,14度,海拔3320M,672hpa,TRIP1453KM 尽管昨晚发邮件直到凌晨3点钟,今天上午还是5:30起床。因为听说梅里雪山是藏区八大神山之首,而它如今就在窗口对面,我们没有理由在日照金山时呼呼大睡。起床第一件事是打开窗子,隐隐约约看见神山的轮廓,我们都知道早上太阳出来时的时间是很短的,几十秒钟,金色的阳光就会消失掉。赶忙穿衣就往顶楼上跑,咚咚咚的脚步声踩在酒店过道的木地板上,吵醒了三个昆明游客。

到了屋顶,赶忙支三脚架,把相机放好,对着金色的雪山。开始的云层还是有点多,五个峰尖偶尔露出一两个,不会全部露出来的,很遗憾,没有拍到金色的全部展现出来的神山。后来云层倒是展开了,但是阳光已经变白,把雪山照的银晃晃的。我们一直在拍,单片,接片,拍了一轮又一轮,我们都知道这样的行程可能是一辈子就一次.拍到后来,很多人都离去了,连老楠都下去了.只剩下我和烟烟哥以及三个云南游客.这时我们才攀谈起来,他们说这是他们第五次来,才看见神山的面目,前四次都被云遮住了.他们说我们运气真好,很羡慕我们的.

在楼下点菜吃饭,原来厨师不在,他们叫了一个藏族美女来炒菜,我们本来点三个菜,后来改了一个菜,结果他们炒了四个菜,误解了我们的意思,美女厨师看我们好多菜都没吃完,就过来连说抱歉,所以我们也就不好发火,买单走人。

今天修改博客右边的slide的时候,呃,就是首页右边的那些滚动图片,原来是静态的,今天想花几分钟改成动态可维护的,本来觉得这个是十几分钟能搞定的事,不就在models里建一个class,然后syncdb之,再修改下模板就完事了嘛。

model如下: class Slide(models.Model): user = models.ForeignKey(User, unique=False) pic = models.URLField() url = models.CharField(u'链接:可以输入javascript代码片断', max_length=200, null=True, blank=True) desc = models.CharField(max_length=200, null=True, blank=True) datetime = models.DateTimeField(auto_now_add=True) def __str__(self): return self.pic.encode('utf-8') …

丽江人很多,熙熙攘攘,古城里人来人往擦胸而过,我在这里开始感冒,头重脚轻。到达当天晚上,在古城迷路,跟老杨同志背着大包一前一后兜了半天才找到我们住的客栈,当时老杨的背包是70升的,上面又堆了些东西,从后面看去,就像一个长出小腿的背包在移动,看着极超现实。

去丽江的路上开始陆陆续续出现雪山,老杨这种没见过雪山的土老冒对着录音笔大吼大叫,抒发人生开天辟地第一次见到雪山的感慨,我这种以前到过青海的人,对其不淡定表示藐视。后来一路的雪山,当有人提醒他“某某雪山到了”,他常常有气无力地抬了下眼,回答“哦”,然后又睡着了。

晚上听来自全世界各地心怀鬼胎的男男女女隔着小河在吼歌,没有艳遇。

像打过蜡的街道。

丽江的清晨(老杨摄,点击可看大图)。

去丽江的路上过虎跳峡,下去容易上来难,爬到最后差点喘不过气来。(老杨摄,点击可看大图)。

大理是一个慢节奏的地方,刚开始我发现自己总是走得比别人快,后来慢慢调整跟他们一样的节奏,可是回到上海,一切照旧。

坐了辆可疑的马车逃票去洱海边坐了一会儿,潮湿,可能是不是旺季,安静,有水鸟在飞。

很多年前许巍唱:我爱洱海。

以下图片为老杨拍摄(点击可放大):

这个小伙当年还是蛮清纯的嘛。

在云南没有停留多久,路过昆明的时候想起以前刚毕业时,在论坛上认识一个风趣的大哥叫“老严”的,无从再找到他的联系方式,只好作罢,继续前行。

以下图片为老杨所摄(点击可放大):

正在把笔记本的其他数据转到台式机,有点时间,就上来看看木楼,也算是临行前对兄弟姐妹们的汇报。 现把哥楠(侗语的语法倒置,如后面再有此类称呼,不再说明)说的药品公共采购补充如下:

1,氟哌酸,3盒

2,痢特灵,1瓶

3,头痛粉,20包

4,感冒药,根据个人的适应药品情况购买。我买的是SMZ+咳感敏各一瓶。

5,止咳药(含罂粟,见效较快),1盒

6,云南白药(内服),1盒

7,云南白药(喷雾),1盒(一盒两瓶装)

8,创可贴(防水),2包(10个)

9,绷带,3个

10,脱脂棉,1包

11,纱布,4个

12,医用包扎胶布,2卷

13,四凡素药膏(消炎),6支

14,75%医用酒精,2瓶

边防证,后来一直没用上

08年,在对生活和职业发展毫无目的的情况下,去西藏呆了一个多月,一直同行的有老杨,断断续续同行有老陈,老孙和老李。这么多年过去了,把它重新翻出来,放在这里,权当存档之。

当时在“木楼人家”论坛上,以石柱(到今年他已经嚷去西藏嚷了4年了,跟我另外一个兄弟老池一样,就是一直没去)等同志们总想知道我们带了些什么去,现列如下:

清单列表如下:

50-60L登山包1个(有点小,还好是在车上)

斜挎包1个

腰包1个

睡袋1个(0下7-8度)

冲锋衣1件

抓绒衣2件

快干衬衫1件

短袖T恤2件

长袖T恤1件

帽子4顶(普通levis1顶,野外防护1顶,渔夫帽1顶,毛线帽1顶)

普通长裤2条

混了一年微博,看了一批又一批的人吵来又吵去,很累人哪,有木有。

长度超过140的文字没耐心看哪,有木有。

这一年多来,学了各种各样的技术,查了各种各样的资料,总是有一点印象又不完整记得的时候,又得回忆关键字重查一遍,很累人哪,有木有。

想想还是重新写博客吧,一是为了记录一些东西,二是为了自己不被微博之类的带得太浮躁。以前写过几个,都没坚持下去,这个连博客程序都是自己写的,总能坚持长一点时间吧?