一点感悟

栏目: 服务器 · 发布时间: 6年前

内容简介:一点感悟

不知道为什么,我是比较喜欢JS这种脑残语言的,并且也不想将其他语言用在工作中,比如 PHPPYTHONJAVA 之类的。

其实到最后肯定所有语言都是相通的,比如每种语言都会有自己的 lodashnpmpackage.json ,所以当精通一种语言之后是能对其他语言的人指点江山的。我之前的一个同事新手写python,库也不会用也不知道去哪里下载,我对Python的认识只限于这是一个用缩进来控制块的语言,但搜了一下果然有 piprequirements.txt

举这个例子是因为我认为,用一个语言用得精通比会用很多语言都是略知一二更重要。

前几天我有一个写PHP的同事,被迫去写nodeJS,然后遇到一个soap的问题,调了一天都没调出来,扔给我帮忙。问题大概是,用了一个叫 node-soap 的库,发请求的时候对方服务器总是返回 ERROR Invalid XML ,而用Postman把请求的body发出去,却能得到成功的返回结果,同事怀疑这个第三方库有问题。

我虽然对SOAP一窍不通,但我懂JS,觉得这个问题应该能找出原因。根据以前的经验,我觉得不太可能是第三方库的问题,因为每次只使用基本方法却有问题时我debug到别人库里去看明白原理之后,绝大多数时候都会发现是自己的问题。更何况这是一个1500+ star的库。

首先我想到的是,肉眼看上去同样的body,为什么得到不同的结果?很可能是encoding的问题。单步调试后发现库里并没有任何encoding的动作,所以排除该问题。

后来我注意到,第三方库在发送请求的时候发了很多header,把这些header也写进postman之后,果然返回了同样的错误。而之前同事测试时,postman里header都是默认值。所以可以肯定问题出在header上。

删除了 SOAPAction 这个header之后,请求就成功了。再具体到库里去搜这个 SOAPAction ,发现有一段

if (!this.wsdl.options.forceSoap12Headers) {
  headers.SOAPAction = '"' + soapAction + '"';
}

猜测应该是有一个 forceSoap12Headers 相关的设置,再去文档里一搜,果然有,把这个设置为 true 之后,问题就解决了。前后大概花了一小时。

写这篇是想说,磨刀不误砍柴工,首先你得学会怎么磨刀,然后得学会怎么砍柴,这样才能磨刀不误砍柴工。对于一个完全不熟悉的东西,因为掌握了最基本的方法,才能万物归一的去解决。

我反对对于不熟悉的东西,一上来就通看文档。在工作当中,是没有那么多时间让你从头去看文档,把所有东西都弄明白之后才开始工作的。

文档对于没有经验的人来说看quick start部分就够,因为就算看到 forceSoap12Headers ,也不知道是干什么用的。

对于有经验的人,才会需要在一开始就去细看 forceSoap12Headers 的设置

我也反对把写一种语言的员工强行安排暂时写另一种语言。除非是打算长期转向另一种语言,否则一两天做完一个task,根本不会对新的语言有系统性的研究,甚至都不知道debug的 工具 怎么用,对个人的发展是没什么实质性的帮助的,而且写出来的代码大都只能达到“能用”的程度,可维护性和稳定性都不一定会好,长远来看对公司也是不太好的。不过创业公司嘛,半年一次revamp,好像也没什么问题…


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

理想主义者

理想主义者

[美] 贾斯汀·彼得斯 / 程静、柳筠 / 重庆出版社 / 2018-5-15 / 49.80元

2013年1月11日,年仅26岁的黑客亚伦·斯沃茨自杀身亡,此事在美国引起轩然大波。这不仅是因为在互联网领域,斯沃茨是一个可以与比尔·盖茨、马克·扎克伯格、理查德·斯托曼等齐名的人,更是因为此事揭露了传统世界与互联网世界的规则冲突。 在互联网思维下,信息是明码标价的商品。各种利益方用技术竖起了一道道藩篱,将支付不起费用但渴望用知识改变命运的人隔绝在外。于是,一大批希望改变这种模式的“理想主义......一起来看看 《理想主义者》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具