洛阳铲的日志

2010年10月26日

open-url OpenSSL::SSL::SSLError

Filed under: 生活小札 — 洛阳铲 @ 16:57

http://www.ruby-forum.com/topic/129530

http.rb:586:in `connect’: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

2010年10月24日

deeply play soap in ruby with SAVON or HandSoap

Filed under: ruby,web — 标签:, , , — 洛阳铲 @ 21:16

虽然soap4r是ruby的默认实现,但是恰如http://www.eggheadcafe.com/software/aspnet/36181571/soap-with-ruby-19-.aspx  批评的那样。文档奇缺,更新缓慢,最好的参考居然是code sample, 不过好消息是还有另外的选择:  SAVONHandSoap
而且在这儿也有SAVON和HandSoap的一个使用介绍:  http://blog.nofail.de/2010/01/savon-handsoap-shootout/

play soap with soap4r

Filed under: ruby,web — 标签:, , , , — 洛阳铲 @ 20:16

对于ruby而的soap言有两个库非常重要:soap4r这个库是NAKAMURA维护的获得ruby官方
支持的soap库,另外一个是基于soap4r的wss4r的库。遗憾的是这两个库,文档奇缺好消息是还有其他选择
最多的资料只能来自于google了,而且在soap4r的邮件组里面,NAKAMURA也常常会亲自解答一些
问题。搜索问题的时候加上NAKAMURA作为关键词之一,会有意想不到的惊喜。

soap4r无需安装,wss4r的安装略过,基础知识:

  1. wsdl学习笔记
  2. soap学习笔记

在soap4r的源代码的sample中有一个自定义header头的例子: sample/soapheader/authheader 和
sample/soapheader/soapext_basicauth两个例子。以authheader 来开始。server.rb略过。

client.rb

require ‘soap/rpc/driver’
require ‘soap/header/simplehandler’

server = ARGV.shift || ‘http://localhost:7000/’

class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler
MyHeaderName = XSD::QName.new("http://schemas.xmlsoap.org/ws/2002/07/secext", "wsse")

def initialize(userid, passwd)
super(MyHeaderName)
@sessionid = nil
@userid = userid
@passwd = passwd
@mustunderstand = true
end

def on_simple_outbound
if @sessionid
{ "sessionid" => @sessionid }
else
{ "userid" => @userid, "passwd" => @passwd }
end
end

def on_simple_inbound(my_header, mustunderstand)
@sessionid = my_header["sessionid"]
end
end

ns = ‘http://tempuri.org/authHeaderPort’
serv = SOAP::RPC::Driver.new(server, ns)
serv.add_method(‘deposit’, ‘amt’)
serv.add_method(‘withdrawal’, ‘amt’)

serv.headerhandler << ClientAuthHeaderHandler.new(‘NaHi’, ‘passwd’)

serv.wiredump_dev = STDOUT

p serv.deposit(150)
p serv.withdrawal(120)

最后该程序发送的请求为:
<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<n1:wsse xmlns:n1="http://schemas.xmlsoap.org/ws/2002/07/secext"
env:mustUnderstand="1">
<n1:passwd>passwd</n1:passwd>
<n1:userid>NaHi</n1:userid>
</n1:wsse>
</env:Header>
<env:Body>
<n2:deposit xmlns:n2="http://tempuri.org/authHeaderPort"
env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<amt xsi:type="xsd:int">150</amt>
</n2:deposit>
</env:Body>
</env:Envelope>

http://developer.searchmarketing.yahoo.com/docs/V7/gsg/requests.php

  1. < soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
  2. xmlns:wsse = "http://schemas.xmlsoap.org/ws/2002/07/secext"
  3. xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
  4. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns = "http://marketing.ews.yahooapis.com/V7" >
  6. < soapenv:Header >
  7. < wsse:Security >
  8. < wsse:UsernameToken >
  9. < wsse:Username > user </ wsse:Username >
  10. < wsse:Password > password </ wsse:Password >
  11. </ wsse:UsernameToken >
  12. </ wsse:Security >
  13. </ soapenv:Header >
  14. < soapenv:Body >
  15. </ soapenv:Body >
  16. </ soapenv:Envelope >

The preferred method is through the WS-Security extension, where both the username
and password elements are wrapped in the Security and UsernameToken elements,
as shown below. To use WS-Security you must also include the secext schema in the SOAP envelope,
here defined as wsse.

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
  3. xmlns:wsse = "http://schemas.xmlsoap.org/ws/2002/07/secext"
  4. xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
  5. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  6. xmlns = "http://marketing.ews.yahooapis.com/V7" >
  7. < soapenv:Header >
  8. < wsse:Security >
  9. < wsse:UsernameToken >
  10. < wsse:Username > user </ wsse:Username >
  11. < wsse:Password > password </ wsse:Password >
  12. </ wsse:UsernameToken >
  13. </ wsse:Security >
  14. </ soapenv:Header >
  15. < soapenv:Body >
  16. </ soapenv:Body >
  17. </ soapenv:Envelope >


If your SOAP toolkit does not support WS-Security, use the username and password elements in the header:
  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
  3. xmlns:wsse = "http://schemas.xmlsoap.org/ws/2002/07/secext"
  4. xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
  5. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  6. xmlns = "http://marketing.ews.yahooapis.com/V7" >
  7. < soapenv:Header >
  8. < username > user </ username >
  9. < password > password </ password >
  10. </ soapenv:Header >
  11. < soapenv:Body >
  12. </ soapenv:Body >
  13. </ soapenv:Envelope >

soap的tips:

  1. 如何删掉: env:mustUnderstand ?,两个两个方法,二选一

    1. 创建一个HTTP filter,用正则表达式来修改HTTP body: body.sub(/\s+[^:]+:mustUnderstand\S*/, ”)

    2. 如果使用svn的代码,可以在header_handle#on_outbound中使用self.mustunderstand = nil来关闭mustUnderstand属性

  2. 如何删掉: ns# namespace?

    1. http://www.google.com/url?sa=D&q=http://www.pluitsolutions.com/2007/08/10/remove-n1-namespace-for-soap4r/&usg=AFQjCNEYmZR3Xen_12paXCe4P7IscNa3Ag

    2. https://groups.google.com/group/soap4r/browse_thread/thread/aad6c8af7c0dc473/b421cd11225b1e6e?lnk=gst&q=header#b421cd11225b1e6e

  3. 如何自定义ns? 参见sample/howto/custom_ns。 请注意,系统自带的soap4r版本很低(1.5.5),建议升级至最新版。

    当前最新的是1.6.1. svn co http://dev.ctor.org/svn/soap4r/trunk soap4r-1.6.1

后记deeply play soap in ruby with SAVON or HandSoap

2010年10月15日

人回来了,但是信才刚刚送走

Filed under: 生活小札 — HackGou @ 23:09

在西藏的时候,答应寄两份照片。一份寄给纳木错湖边放牧的正脚大叔,另外一份寄给山南贡嘎的大庆兄弟。

大庆兄弟很容易寄,地址、邮编统统都告诉我了。但是正脚大叔却比较担忧,地址没有,只能通过景区管理站

转交了,邮编更不准确,是从网上找来的,而且是那木乡的邮编,希望管用。

他的名字也都不一定正确的,这是我和他在湖边边笔划,边猜下来的名字,希望没有错。

纳木错可错,这个不要错才好。

2010年10月13日

天路旅行

Filed under: 徒步 — 标签:, , — 洛阳铲 @ 18:33

俺, 回来鸟

旅途中的感受,因人而异,故此不做推销,随便写写,聊做游后感。

关于高反,当地话说:高的不如矮的,胖的不如瘦的;其实还应该加一句:远的不如近的。对俺们四川银来说,没有多大的影响,川藏是邻居。青藏铁路海拔最高的山口唐古拉山口,海拔5072。不可思议的是,偶居然不知不觉的睡过去了。想起来过来,已经到了那曲。
这便是列车中制氧机上显示的海拔高度
带海拔的制氧机
据说内地人到了西藏没有高反的人只有三成,高反严重的占三成。我很幸运的成为开头那三成
一路上虽然有火车上认识的娜娜同学(后来结伴一路走完西藏行程,意外的收获)以及几个年轻朋友(有去造诺亚方舟的、有去散心的、
也有作神秘状不知干嘛的——后来还是弄明白干什么的 )打牌打发时间,但是还是略显无聊,不过好在车外偶尔出现的风光让人眼睛一亮,有唯美的日出:
高原日出
也有压城城欲摧的雷霆:
压城城欲摧的雷霆
更有未名的美丽小错:
不知名的小错

但是这神往的布宫却让我体验了何谓高反:
神往的布宫

我们拿到的是9:20的预约券,
9:20的预约券

9:15到到达3处的检票处时,被告知:此票快过期,需要5分钟赶到在4处购票。布宫参观示意图
从3到4隔着竖着的两个v形拐,甩开QQ和娜娜,狂奔,
刚过第一个V拐,上不来气了,原来高反是这个样子滴:大口喘气、心跳极速上升,外加头脑一片空白,恶心,早饭吃进去的包子又
回到喉咙了……有了高反体验,也算不虚此行。

关于紫外线,号称"日光之城"的拉萨,早晚的太阳,犹如金针,扎得睁不开眼。
强烈的紫外线 可以让自己明显的感受到皮肤在变黑、便焦。在纳木错的牧民,肤色更是跟焦炭一样。
纳木错边,焦黑的正脚大叔
合影的正脚大叔,便是榜样。如果不想我一样对自己有强烈的信心,还是备好防晒霜、帽子、太阳镜(可惜了生平第一副太阳镜,直接
留在纳木错)等物品。后记:天高路远,邮路难通,寄出的照片快一个月了,不知道,正脚大叔有没有收到。

关于露营,去纳木错圣湖露营的路上,离纳木错几十公里之外的地方,便购买门票, 然后卯足了劲往里开了近一个
小时才到湖边的岛上(图中尖角),貌似这是我见离景点最远的过门票点了。看看这地图,再看看后面的日出、帐篷,人是何其的
渺小,征服自然注定只是人类世世代代的梦想!
纳木错交通示意图
接下来翻那根拉山口, 海拔5190,此处相当的多的同学感到不舒服,有窝在车里一动不动的QQ,还有头晕的娜娜同学,
貌似我没什么反应,
那根拉山口
这是这个西藏之行,翻越的海拔最高的山口,每年冬天都会因为风雪,一旦封山,便进不了纳木错。
2008年的时候封山最早:10月12号就封了,因为那一年拉萨迎来了历史上最早的一场雪。
难怪人家一听我的计划,首先建议趁着天气好,首先去纳木错,一旦封山,只能望山兴叹了。
而正在拍到此一游照的光景,居然飘起了冰雹,不过这丝毫不影响旺财的情绪,什么叫蛋腚?
 有冰雪,旺财更蛋腚
到了纳木错湖边,落日的阳光照样金灿灿的刺眼:
金灿灿的日落 
三易扎营地之后,终于找到一块略微背风,且略微平正又乱石略微小的地方,经过近一个小时左右的战大风、斗寒冷,
终于扎好了帐篷,面上的石头虽然扫荡干净,但是地钉绝对打不进地下:地上有看得见的石块,地下是看不见的石板,幸好绳子带的够多,
“嗡嘛呢呗咪吽”
孤零零的帐篷
以后有露营的筒靴,我已经证实在湖边很近的地方扎营除了可以挑战自我,浪声、风声、经幡声,声声入耳之外。
得不到其他半点好处。还是靠近山脚选地方扎营吧。另外大本营也不是扎营的好地方,光狗叫就可以扰你到抓狂。

关于交通,从拉萨出发,去日喀则、阿里、林芝的旅游包车,多如牛毛。可以在进藏前联系,
也可到拉萨后,在东错、平错的墙上寻找旅游伙伴,上面贴满了很多包车组团的信息, 总体价格大概在每公里3、4元左右。
北京东路沿途也有很多旅行社的散客拼车广告,甚至有到大昭寺、布宫附件拉客的生意人。
所有这些都说明纯玩,不购物,当然在东错、平错也有他们自己的旅行社。其实如果能够联系到藏AL牌照的司机,
直接上车也可以便宜不少。
一句话,如果口袋没有问题,那在拉萨去任何地方都不成问题。 当然如果可以自驾游,那更是极品。
除了旅游包车之外,另外一个选择就是扛大巴:
拉萨有四个客运站,三大一小,各自开往日喀则、到林芝、那曲和阿里的车都有。
三个大站:
拉萨站:民族南路1号,民族路和金珠路交叉口,有发往日喀则、那曲、阿里方向的车
东郊汽车站(俗称东站): 江苏东路3号,有发往林芝方向的车,到工布江达县80、到八一100,去巴松错的话买到
八一的100块车票,提前在巴河镇下车。然后找车去巴松错,可以去结巴村住宿。
北郊汽车站: 拉萨市扎基路11号
一个小站:
鲁固汽车站: 鲁固路。与其说是个车站,不如说是一个客运车辆集结处,位置就在大昭寺西南角,此处可以找到去羊湖的车,15元到拉卡拉。
拉卡拉海拔比羊湖高一些,可以俯瞰羊湖,也可自己想办法去羊湖
如果时间不是问题,我会选:自驾游,其次坐大巴,最后旅游包车或者拼车。因为坐大巴,大部分时间和行程可以自由控制,
走到哪儿黑就在哪儿歇。
市内交通,满街的出租车,伸手即可呔(QQ的发明:取taxi的ta二字)到。除此之外还有很多从东郊站发出来的中巴车,也是伸手即停,
费用一般2元每人。除此之外,还有n多的三轮车,根据脚程算费用,坐在上面兜风逛拉萨未免不是快事。
如果恰好像我一样住太阳岛,恭喜你,上面有万能的109,从仙足岛出发、经太阳岛、金珠东路、民族南路、林廓北路、娘惹路、北京东路……。
途径n多地方:拉萨汽车站、罗布林卡、天海夜市、西藏博物馆、宗角禄康公园(龙王潭)、布宫、赛康酒店(东错旁边)、冲赛康、八郎学旅馆(平错旁边)……,费用:1块钱。
关于拉萨市的大小,我步行测量过,南北方向从当热西路沿娘热路到仙足岛,大概30分钟。东西方向:沿北京东/中路,从江苏东路到到德吉北路,大概20分钟。所以出租车基本上是10元跑遍拉萨(火车站方向等远地除外)。
拉萨交通另外一个值得国内每个城市学习的地方就是:无论街头还是巷尾,都可找得到洗手间的指示牌,而且大多免费,甚至报亭中买的地图中也明确标有全城各处WC的位置,相当方便。在拉萨,永远不要为找不到厕所而担心尴尬的事情,遗憾的是在内地很多城市,包括上海这些一线城市都没有做到这一点,只考虑吃、不管拉。上海的绿地到处都有背对着路人解急的,不能单怪民众素质不高,城市管理者也要学会与民众方便。
说到钱,拉萨有意思的地方是不收硬币,同行的一位大哥,拿着几个钢板儿,满大街买打火机,愣是没有买到,被戒烟一宿。
在拉萨包括西藏行走,最好身上多备零钞,而且要纸币:一块的、一角的都要有。街头碰见有人乞讨或者化缘的时候,老是送出五元、十元的,恐怕自己也吃不消(本人亲身经历)。

关于吃:川菜满天下,拉萨也不例外,反而要找藏餐,真的得花不少功夫,林廓北路上有好几家藏餐馆,可以尝尝正宗的酥油茶、糌粑
另外两个地方不得不推荐一下,这也在火车上一个藏族女孩(她此行是回去完婚,一路聊的相当愉快,介绍拉萨的吃、玩、住、行,手里
还不停的给未来的先生剥瓜子,但是忘了叫什么名字了,祝她们幸福美满)给我们推荐的去处:
1. 天海夜市的羊肉,我们的case是5个人,两斤多羊肉,就着辣椒面和现剥的蒜瓣,吃到撑,算账:100元整。当晚所有人都没有睡好觉,都是被渴醒数次,起来到处找水,是后话。
2. 拉萨电影院(拉影)二楼的印度餐厅,据说去都得排队,不过我们两次去,rp都很好,不排队不说,而且还挑到了靠窗的座位
吃的东西,特别喜欢店里的楠,没错名字就是楠,各种各样的配菜后面都有两个选择:米饭OR楠。所谓楠,和新疆的馕有些相似。
但是吃起来松软可口,粗野的手撕楠,就着配菜,文明和野蛮共存,那自是一绝。
img_7122
偶这个大胃王,吃完一个,不过瘾,又来张楠,然后是接下来的两顿饭, 兴趣全无,那两张楠还在肚里呢

西藏另外一个特色便是:四川人!好多的四川人!
拉萨一位河南的出租车师傅跟我说:"在拉萨做生意,不懂藏语不要急,重要的是要听得懂四川话,
因为六、七层的客人都是四川人"。四川话作为准官方语言得到相当的认可。
川菜馆子满天下:回锅肉、盐煎肉这些家常菜自不必提,甚至盐焗鸡、烧白、毛血旺也是相当的正宗。
价格也非常的四川:双人吃三人份的早饭(6个包子加稀饭或者豆浆,表惊讶,偶是大胃王)=5元。
其他地方的人也有,但是远不如四川人来的多,而且藏民对四川人比较有亲切感的,原因除了觉得川菜特别好吃之外,
更重要的是都拜一样的佛。观音菩萨、文殊菩萨、释迦牟尼佛这些都是藏传佛教最主要的尊神。
便特意问了藏民:你们拜的观音菩萨是男的还是女的?他们又说是男的也有说是女的。看得出来,汉人影响的还是比较深。
但是他们对回族兄弟就不那么客气鸟:他们竟然不拜释迦牟尼,更受不了的是回族兄弟身上有很难闻的味道。

米拉山口: 5013m,这是从拉萨去林芝要翻的一道坎,无奈,有了五千二百米的体验,
对低于此高度的山口,只有俯视的兴趣。
过了巴河镇A处,对于巴松错,大部分旅游的只能到D处扎西岛的错宗工巴寺,
巴松错交通示意图
而我们此次深入巴松错腹地C处,在结巴村(错高乡) 逗留了一天多,也见识到了西藏行程中如诗如画的风景,如有对风景感兴趣
可移步 flick的相册。 本来带了36G的储存卡,结果只带回来5G照片。 一来多余的任何举动都会打扰当下如画的风景,便也没心情举起照相机了;二来处处皆美景,叫我如何下手?
处处皆美景,何处可下手
本来过结巴村继续往东方向会进入另外一出世外桃源:新错。但是还是作罢,西藏不是一次就会万解的,为什么要急着要这次去呢?
一口气吃饱,那是KFC的吃法;来了西藏,自由散漫点些吧,好让灵魂跟上你的脚步。所以巴松错结束之后,就回拉萨
开始过上了吃饱睡、睡醒晒、晒完吃、吃饱睡的日子,美其名曰:发呆。

关于信仰

藏传佛教佛教浸入藏人的一言一行,不了解藏传佛教佛教,去了西藏如同没去,何谓喇嘛,何谓黄教、何谓灵童、何谓神山圣湖、何谓班禅、
何谓达赖、何谓宗喀巴、何谓莲花生、何谓显密、何谓欢喜佛、何谓天葬、何谓灵塔、何谓转经、为何曼日寺要逆时针转经……太多的为什么、太多的神秘,这一切都在藏传佛教中。
藏传佛教中的信众,特别是僧侣,和北传佛教(汉传佛教)不一样,他们都必须自己出去布施,所以满大街的僧侣、朝圣者都是您供养的对象,无论多少,一元、一角都是一份虔诚,一份信仰,恰如藏传佛教中,佛像前供养的是水而非牺牲那样:不分轻贵,但却洁净。“布施沙门,得百倍报”。向他们布施,也会为您带去吉祥和幸福。在寺庙捐功德的时候,藏传佛教,和汉传佛教一个不一样的地方:可以找钱。比如捐出10元。
但是给了100元,可以自己从零钱堆里找90回来。不在乎轻贵,但求虔诚。
没有信仰无法理解什么是虔诚 
庄重、专注的一叩、一拜,让人心生敬佩,以至于我向他们布施,都需要很大勇气,生怕突如其来的举动会扰了他的专注。
用身体丈量西藏,肉体下地狱,精神上天堂 
要知道,绝大多数这些磕等身长头的信众都是从远在山南、日喀则、林芝、阿里、青海、四川、云南,历时数月甚至数年一路磕上来的。
有的人甚至会在朝圣的路上倒下,他或者她的同伴会带着倒下人的一颗牙继续上路,到了大昭寺后便会将这颗牙钉入柱子中,
生前不能至,但是你的牙到了圣地,这便是是大昭寺内“牙柱”的来历。
为什么一定是大昭寺,大昭寺古名在藏语中叫“惹刹”,此即为拉萨一名的出处,普通藏民心中,大昭寺才是拉萨的中心、才是
西藏的中心,而大昭寺之所以有如此高的地位,是因为寺中供奉着一尊:由释迦牟尼佛在世时亲自开光、加持的释迦牟尼佛十二岁等身像,全世界仅此一座;根据释迦牟尼生前的宏愿,见此像,如见其人,拜此像,如拜其身。
至于什么是“惹刹”、为什么十二岁等身像会从小昭寺转移至大昭寺、大昭寺中原本的八岁等身像现在何处?
苯教是什么? 诸多的问题,不到西藏,没有答案。

update: 回到上海十多天了,还是想念西藏的日子,自然醒后那缕恬静的阳光……

update(2010-10-31 11:32:43):  吃饭的时光,接到山南贡嘎的一个电话,原来是大庆兄弟的母亲,她们已经收到了照片。挂了电话想起正脚大叔有没有收到照片呢? 纳木错邮路难通,不知道会不会寄到他手上

update(2010-11-23 14:31:08): 敏珠林寺藏香:  八角南街琅赛商场一楼有售,此店为敏珠林寺住拉萨指定营销点,而且还提供邮寄服务。淘宝也有售,但价格稍高且无质量保证。有礼佛需要的朋友可以去看一看,回到上海快两个月,往年春夏、秋冬交替的时候,总是容易感冒,今年上海两次降温,差点中招,不过每次自己有点发热,立马点上敏珠林寺的藏香,很快就没事,经过事实证明,敏珠林寺藏香对我相当有神奇的功效,恰好印证了北京东路上那家店主以及布宫导游所讲的:真正的藏香具有防蚊虫、防潮、防鼠蚁、防流感的神奇功效。敏珠林寺藏香有5个等级,每个等级都各买一盒,但是目前还在使用的是等级最低的第五级,其他搞等级的还没舍得打开!所谓独乐乐不如众乐乐,特增加此update。更多的敏珠林寺藏香可点击此处

Older Posts »

Powered by WordPress