前言
什么时候开始接触开源这个词呢?貌似,是某老师一直有提,但是,一直没有教我们如何参与开源项目,哎..估计大学老师都这样子了.后来,学习如何使用cvs,svn,git,mercurial等等工具以后,终于,了解开源项目的整个管理以及参与的流程,走了不少弯路,不过,弄懂了还算不错.在我学会使用版本控制器以及,那些网站提供开源服务,还有那些开源的项目如何下载的时候,曾经尝试过在学校开展一下开源项目活动,利用code google 进行代码的管理,google小组进行讨论,gmail进行交流,可惜的是,到最后,大家连个svn都用不好,最后,不了了之.我后来思考了一下,造成这样的原因,首先,大家对于新鲜事物的接受能力不强,他们对于协同工作的理解是用U盘把代码拷来拷去方便直接.不愿意学习什么是版本号,什么是版本分支,什么是合并,以及如何解决代码冲突,觉得还不如用U盘直接拷代码来得方便.其次,就是老师,连老师都不会赖得教版本管理,也就只有等我们出去工作的时候才知道有这么一样东西,白白浪费了最重要大学那几年学习开源项目的黄金时间.
寻找开源项目
一般而言,我们都是在我们使用某技术以后一段时间,才发现原来是开源的,然后,才去下载.有些开源软件有自己搭建的服务器,不过,对于,大部分开源项目都是使用专门的托管网站进行管理.所以,高效的寻找那些开源项目,了解有那些项目托管网站就非常必须
支持的版本控制器 使用友好度 SVN Git Mercurial 支持 支持 支持 ★★★★★ 在这么多的项目托管网站中,我个人感觉,code google是最简单,首先,它提供的丰富齐全的帮助文档,不但如此,这些帮助文档很多都有相应的中文版本,对于,那些初次接触同学来讲,实在是一个很好的学习机会,不过,有一点值得注意的是,在正常的渠道下,你是永远都获取不到项目的密码,这点,我相信学编程都知道,除了密码这点,其它都可以无障碍使用.
支持的版本控制器 使用友好度 SVN Git Mercurial 支持 支持 支持 ★★ 对于,Souceforge历史,我不是很理解,只是接触的很多开源项目都使用Souceforge进行托管,Souceforge的使用相对于code google就有点复杂了,而且,文档全是英语,对于英语苦手而言实在有些难度.
支持的版本控制器 使用友好度 SVN Git Mercurial 不支持 支持 不支持 ★ 很多知名的开源的软件都使用了Github进行托管,免费账号提供300m.不过,个人对于git不是很熟悉,就不做过多的评价.
支持的版本控制器 使用友好度 SVN Git Mercurial 支持 不支持 支持 ★★★ 微软旗下的一个项目托管网站,文档依然只有英语,不过MSDN有某些项目中文的介绍,微软的项目偏多,学习微软那些技术的同学必去的一个项目托管网站.
支持的版本控制器 使用友好度 SVN Git Mercurial 不支持 不支持 不支持 ★ 看了一下,算不上一个传统意义上的项目托管网站,因为,我注册了一个号找了很久,到找不到一个新建项目的选项,里面的开源项目的代码也找不到一个用版本控制器下载的链接.我就姑且把这个网站定位为一个用项目来进行广泛讨论的网站,因为,这个网站,更多的是讨论,还是讨论,例外还有一些教程,可以说得上是一个很好的学习网站.额外说一下.这个网站的讨论区,还提供了中国版块…
怎么都是些国外的?其实,我们中国也有类似的托管网站,例如淘宝的淘蝌蚪,盛大的Teamhost,不过,鉴于上面的项目还比较少,所有就不做过多介绍.
最后,知道有这些网站以后,还怕没有优秀的开源项目学习吗?
知道这些网站以后,你还需要一款专门的软件.
如果你是使用eclipse的可以参考我收集的eclipse下这些项目控制器的相应的插件
http://www.cnblogs.com/youxilua/archive/2011/09/27/2192913.html
闲聊一下版本控制器
对于版本控制器的使用,都可以用来写书了,网上这部分教程也很多,这里就不做过多的介绍,下面说下我的感想.
版本控制器可谓是入门容易,使用难,精通更是难上难.版本控制的入门,就是知道如何使用这个工具进行下载,相信这点会软件操作都会使用.但是,使用起来就有点考究了.这里的使用,是利用版本控制器,进行项目托管.如果,你是几个人开发一个软件,不想用U盘直接把代码拷来拷去这样的开发,就需要懂的用版本控制器,进行代码的管理.版本控制器的难用的地方,就在于几个人同时修改了一段代码,以及,其他人更新的时候,旧代码与新代码发生冲突等等各种蛋疼的问题,往往让一些经验不是很丰富的同学,直接放弃学习版本控制器,重新使用u盘拷来拷去.至于精通,那就是要学会如何使用各种托管网站的服务,利用这些服务,进行代码的改错,bug的追踪等等,当然,学会本地搭建服务器也是必备的技能.
前言
最近,做基于soap服务的项目,获得的一些经验性技巧,分享给大家
WSSE是什么?
传送门
支持6种不同的加密方式,不过我这里只介绍Username Token Profile 1.1
开始动手
阅读Username Token Profile 1.1 后你会知道,我们需要在soap报文头加上什么XML结点,这里就不对XML结点进行介绍,官方文档已经介绍的很详细了.
你已经知道了XML结点的含义以后,就继续看下去,怎么构造符合要求的password
构造password
其实,WSSE最核心就是我们如何构造生成这个密钥,从官方文档中我们知道密钥的读取是:
Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) )
整个密钥关键是由:随机字符串,创建时间,和真实密码构成,知道这点以后就是如何利用java 按照这个步骤生成密钥
生成算法
这部分对于懂的人很简单,但是对于不知道的很困难,之前,我就一直死在了这块,还好有个朋友帮了我一把终于搞明白,原来在jjava下是这么简单的.
首先,要处理SHA-1算法:
在java 下实现 sha-a 算法实在简单:
12MessageDigest md;
md = MessageDigest.getInstance(
"SHA-1"
);
就这样就可以完成了SHA算法的初始化,实在简单呀,之前,我还到处去找包实现,实在对Java太不了解了
生成了这么一个SHA 对象,只是开始,我们需要填充相应的值进去即可.下面要了解请认真观看
12345678//从官方文档可以知道我们nonce还需要用这里用的是Koap自带的Base64解码一次
byte
[] b1 = nonce !=
null
? Base64.decode(nonce) :
new
byte
[
0
];
//生成字符字节流
byte
[] b2 = created !=
null
? created.getBytes(
"UTF-8"
)
:
new
byte
[
0
];
byte
[] b3 = password;
//根据我们传得值的长度生成流的长度
byte
[] b4 =
new
byte
[b1.length + b2.length + b3.length];
接下来就是根据文档拼接我们的字符串
12345//利用sha-1加密字符
md.update(b1,
0
, b1.length);
md.update(b2,
0
,b2.length);
md.update(b3,
0
,b3.length);
//生成sha-1加密后的流
123b4 = md.digest();
//生成最终的加密字符串
String result =
new
String(Base64.encode(b4));
之前,花了好几个小时,在这方面的资料,最后,发现原来可以这么简单,也许是平时接触的加密等级不高所造成的吧.