本来只有3个礼拜的项目,一直拖会拖会,一直到今天,近1个半月终于差不多要结束了.这一个半月中频繁的加班打压着所有的人,特别是我.看着将近30张的taxi发票,回想这1个半月的日子,除了元旦休息了一天,还有用了2天调休,都没有休息过.每天有事或没事都在公司里做着这样或那样的"工作".特别是最后一个半星期,等待日方的测试,等待日方的回应及等待release的时间超过了70%的工作时间.虽然有一半的java src及大部分js+jsp是由我来写的,或者或多或少的的难点都是我来的,也不至于最后我们这一块只有我一个人留着坚守阵地.(ps.后面每天留守的就日本的dm,pm及分管command的leader和我.ps又ps.不给leader的工资,却做着leader的事情,这点很不爽!)还有那加班工资生为级别最低的我,每小时才少的可怜的钱,只有用加班时间去换调休,但是当我需要调休时却不允许,(ps.只有我调休不被允许,这什么社会!)眼看上个月的加班用不完,只能换取那点微不足道的加班工资,实在是郁闷的极点.真有点强买强卖的味道.这次争取在2月份好好的把加班全部换成调休,宅他个一个月.
说完这点再说些对于项目的看法,项目的环境应该是solaris+appserver,从项目开始就开始研究如何搭建这个环境,直到上个礼拜中旬才把环境真正的搭建起来.原来的src都是在solaris+tomcat下写的,一下子换了新环境又出了许多新的问题,特别是到了这个时候又要弃用dbcp而使用appserver自带的db connection pool,还好当时设计的时候抽象的不错,要不又是一个极大的工程.既然说到了solaris,在unix内核的os下做过程序的都应该有这样的感受:在unix内核下写程序什么最麻烦?对了,就是权限问题!对于文件,文件夹,用户的权限问题一直痛苦的陪伴了我起码1个礼拜,为了弄这些权限,真的是叫没有什么比这个还要麻烦了.特别是在ut及it中测试中总会有着这样那要的权限问题而使程序报出error.还有就是ssh及其它rsa加密命令的使用(sftp,scp等),也是一段时间的"骨头".(ps.如公钥密钥的创建等)然后是对于日本项目的一些牢骚,项目中的很多做法都需要一层又一层的确认才能实施,即使是很好的方法或点子,都会因为日本人的否定而被打死.还有对于技术,使用的都是些若干年前的技术,不使用新兴及适合的技术来处理一些比较典型的情况,比如对ajax的使用,就被无情的否决了.还有就是团队中加入了过多的新人,对于程序及算法完全没有理解的新人过多,使我浪费了很多时间在他们身上.不过这样让我能从一个比较高的高度来看整个项目,基本上整个项目的每个环节我都有所了解,并且对于其它人的src基本上我都是比较清楚的.这点在后期的对应中体现出就是我们这块的绝大多数对应都是我来做的,并且知道那些是我们的那些是command的,也是最后一段时间我留下来加班的罪魁祸首.可谓优劣参半.不过整个项目做下来也有佩服日本人的方面,就是对于日本人的严谨,很多我们ut,it中没有测试到的地方,他们都会测试到,而且对于一些log文件中的log内容都是很严谨的检查,以至于一些我们在coding中使用ctrl c+ctrl v贴的log的errorcode忘记修改而出现的log内容错误也能查出.
最后贴一些实用且容易遗忘的东西在后面:
1.在unix内核的os下判断文件夹下是否有文件或子文件夹:
ls -al 文件夹 | wc -l
判断返回的数字
0: 该文件夹不存在
2: 该文件夹没有权限
3: 该文件夹下没有文件或子文件夹
>3: 该文件夹下有文件或子文件夹
2.删除文件夹时:
rm -rf 文件夹
能删除没有权限的文件夹(这个很汗,unix以安全著称,不过这个却能无视权限删除没有权限的文件夹,可见其破坏性之高)
3.ssh及其它rsa命令
ssh等本来需要输入密码才能使用,不过我们使用的是java调用外面shell来使用这些命令而不可能去每次执行每次去输入密码,这时就需要生成密钥放在客户端上.(ps.姑且这么说,也就是连接主机的机器)方法如下:
第一步:得到DSA Key
% ssh-keygen -t dsa
第二步:提示是否将这个key按照默认的方式保存($HOME/.ssh/id_dsa),接受默认设置即可,并提示输入口令,可以选择不输入口令,这使得不需要启用ssh-agent。但是这将降低系统的安装性。在并行计算集群的内网环境中可以不需要口令。
第三步:将 $HOME/.ssh/id_dsa.pub文件拷贝到 $HOME/.ssh/authorized_keys
% cd $HOME/.ssh
% cp id_dsa.pub authorized_keys
为了使得DSA认证可以工作,用户在每个计算结点的的home directory下都需要有.ssh这个目录。如果home dirctory不是共享的,则需要将 $HOME/.ssh拷贝到每个计算结点的home directory下。
在 $HOME/.ssh目录下文件的权限如下所示:
-rw-r--r-- authorized_keys
-rw------- id_dsa
-rw-r--r-- id_dsa.pub
-rw-r--r-- known_hosts
第四步:如果选择不需要口令,现在就可以测试不需要密码来进行登陆了
如果选择需要口令,则第一次登陆仍然需要口令,这个口令时DSA的口令,而不是提示用户输入密码。以后将会自动进行身份验证。
启动ssh-agent的命令是:
% eval `ssh-agent`
当ssh-agent已经开始运行的时候,可以用ssh-add命令来通知它你的DSA口令。
% ssh-add $HOME/.ssh/id_dsa
ps. authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。
然后就可以使用ssh username@host command了运行command了.
------------------------------------------我是分隔线-------------------------------------------
sftp是不能使用一句话来执行一系列命令的,不过我们可以使用sftp -b file来实行一个batch,如同shell或bat一样,把要执行的命令写到file中去,就能执行file中的所有命令了.所以我们就使用java来创建一个临时文件,在临时文件中写入sftp命令,然后用sftp -b file来执行这一连串命令.
ps.使用sftp -b file来执行batch,如果这个batch中不管有没有错误这个命令的返回值永远是0也就是正确,除非这个file不存在会返回1.所以需要截取sftp的实行结果来判断batch执行中是否有错!
------------------------------------------我是分隔线-------------------------------------------
scp最简单了就是scp local_file username@host:(ps.注意是":"不是空格)remote_file
OK.先到这里.
还有其它的东西的话,明天去公司看看再补充.