我的QQ:18324258 朋友们,如果需要交流,请直接联系我的QQ,并说明相互学习,不要留给我QQ号,我不会动不动就上来看的。希望多交流,谢谢!

发布新日志

  • LINUX下自动增量备份

    2010-09-01 20:14:11

    svnsync 同步备份

    一、备份准备

    源服务器:172.16.91.4 linux

    库路径:/project/svn

    目标服务器:172.16.80.227 Windows

    库路径:e:\svnbak

    svn版本库1.6

    项目备份模式,使用URL模式

    在每次新增一个项目后,都需要进行同步备份设置。

    二、方法:

    1.在目标服务器上创建空项目, ecom项目为例.

    CMD中,进行D:\Program Files (x86)\Subversion\bin目录,执行 svnadmin create e:\svnbak\ecom [U1] 

    e:\svnbak\passwd\authz目录中,设置备份的用户的可写权限。

    2.e:\svnbak\ecom\hooks目录下,创建pre_revprop-change.bat文件,内容为空;

    3. 执行 初始化

    svnsync init http://172.16.80.227/svn/ecom   http://172.16.91.4/svn/ecom

    svnsync init 目标库 源库

    将向你询问登录的用户名和密码

    正确后,显示

    Copied properties for revision 0.

    4. 执行同步

    svnsync sync http://172.16.80.227/svn/ecom

    svnsync sync 目标库

    5.更新同步

    在源库的hooks下面,添加post-commit 脚本

    内容:

     #!/bin/sh

    REPOS="$1"

    TXN="$2"

    SVNSYNC=/opt/svn/bin/svnsync

    $SVNSYNC sync --non-interactive [U2] --username ssy[U3]  --password ****** http://172.16.80.227/svn/spi/

    即提交更新后,即执行同步命令,不进行交互

    post-commit 修改为svnroot组所有,并属可执行权限。

    三、说明:

    如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错。

    可以在hooks目录,直接执行./post-commit命令来调试脚本。

    1.6版本要求一定要定义清楚SVN_HOME,所以在post-commit脚本中不要直接写/opt/svn/bin/svnsync sync --non-interactive --username ssy --password ssyying http://172.16.80.227/svn/spi/,否则即使直接执行./post-commit没有报错,在提交时钩子也无法执行。


     [U1]一定要全路径

     [U2]不需要交互

     [U3]适用于源和目标的用户密码都相同,如果不同,请查看svnsync命令的用法

  • SVN升级后总结

    2009-12-10 12:02:33


    背景:SVN要从1.4.4升级到1.6.6版本.并且从WINDOW下移植到LINUX下。
    经验:
    1、一定要写好计划,俺的计划可以细到了每一步操作,实际迁移的时候省了不少操作,并且不会遗漏。
    2、一定要搞好服务,不让SVN机器重启后,SVN就不能用了。这点俺之前验证过了。呵呵,某次偶然事件后证明了一次。
    问题:
    1、LINUX的权限问题未研究清楚, 临时报了佛脚,实际操作时还行,除了SVNMANAGER用不了以外。
    2、客户端版本没有验证,因为事前忘记下载旧的客户端了,自己机器又没有保存,现场下了一个,但没有安装,混乱中以为新版本已经删除,装了旧版本了呢。验证通过了,实际上没有验证,呵呵,第二天俺请假,搞支持的同事应该累晕了。
     教训:自己使用的版本绝对应该是大众化的,而不是高级的。哈哈!
    3、备份和备注限制,试了,但没有做,呵呵,现在用的SVN还是高风险的,因为无备份。这个检讨一下,没有办法,懒啊!
    其它没有什么啦,就是计划中遗漏的一些事了。不过表扬自己一下,考虑的还是比较周全。可惜中间试验阶段的一些经验教训有些没有记录下来。在时间和文档化有矛盾的情况下,总的有所取舍,这是没有办法的事情。
     
     
     
     
     
    真是觉得任何事都要计划啊,PP总说我做事没有计划,我很惭愧:不愿意动脑是我最大的缺点。我也不希望象她老人家第二天准备去个公园,头天心里就把所有事安排好了。我的乐趣就是想到什么做什么---我想这也是我总是肥肥的原因!---没思没想,过着咖啡猫一样的生活!
     
    切,不就是一只猪嘛。。。
  • PPQA培训总结

    2009-10-27 18:54:24

    首先,QA不能保证质量,不知道这个理解是不是正确;如果QA不能保证质量,那要QA干嘛? 

     

    1,              先从质量保证的目标说起。 QA只是为员工和管理层提供客观性的洞察,这里感觉用QA这个词不合理,现在改成PPQA好象更合理了些?

    1)              这个目标说明QA应该只是提供依据(数据、图表、分析)来帮助人员进行评价的。所以QA不能保证质量。

    2)               另外,无论是CMM还是ISO,在质量上都非常提倡“管理层推行,全员参与”。但实际上领导很多认为,有一个质量管理人员,那么项目或组织的质量就应该提升了。我也被领导问过这个问题。我觉得这是对QA(质量管理)的一个错误认识。

     

     

    2,              再说领导层或其它人员为什么会对QA报有这样的期望或幻想。 我觉得这里面有两方面的原因:

    1)              领导或员工没有项目管理、质量管理的概念

    2)              QA本身没有向领导或员工进行质量概念的宣传。所以说QA有传教士的职责。 

     

    3,              如何当好传教士?

     

    传教士这个词我猜想是基督教(或其它教派)中负责蛊惑人们加入教会的这样一些人吧。我觉得需要有以下这几个条件:

    1)传教士笃信自己教会的信仰能拯救世界,而QA能不能相信过程中引入了QA就是拯救软件的质量呢?   不能!

    2)我不知道基督教传入中国花费了多长时间?但不同的语言,不同的信仰能在中国生根发芽,肯定是经过了一代又一代的努力的。 这点QA也是相同的。不是QA无法在这里生根发芽,只是需要的时间长些,需要的努力更大一些。

    3)因为QA不能拯救软件的质量,所以QA的承认变得更难。因为QA短期的努力看不到效果,也更让人觉得QA无法拯救软件的质量。

    4)扯远了。无论如何,当了传教士,就相信信仰能拯救世界吧,那怕只是一点点!我们可以学习一下基督教传教的方法,采取农村包围城市的方法等等之类。

     

    其次,怎么样算是一个好的QA? 是预防式的,还是救火式的。

    今天老师讨论那个医术的问题,这个怎么说呢?

    从公司层面来说,领导希望一个预防式的QA人员,这样好啊!成本低、返工少、质量好。。。。。好处多多。

    但另一方面,领导又不会关注预防式的QA人员(不是全部啊)。领导更关注的是华佗,因为有了疑难杂症,华佗表现优秀。就象现在很多学习xx的业绩一样,严打成绩出来了是功,其实这些本来是平常就可以细水长流完成的工作,为什么平时不做?因为平时做了就看不到成绩了。

    所以总结一点:领导更喜欢华佗。

    QA自身来说,也更喜欢当华陀。

     当华陀好啊!收入高――治的都是大病啊!知名度高――救火救的好,当然是英雄啦! 领导也看重啊――为什么曹操专门找华佗,不找别人呢?

     

     从这里看到,你要想当一个预防式的医师,那就先当华佗吧。先当了华佗,才有立稳脚跟; 先当了华佗,解决了生活之本,才可能大谈你的养生之道,让每个人都不生病。

     

    不过,还有个疑惑,每个人都不生病了,华佗不也饿死了??

     

                                                     <>

  • 给任务分配资源的目标(学习)

    2009-09-24 18:00:48

    给任务分配资源的目标
    1、给任务分配合理的人员和材料设备等,以保证任务的完成
    2、跟踪分配给任务的人员和材料设备所投入的工作量
    3、明确的责任划分达到了充分了解项目的执行过程的目的,责任明确可以减少失误造成的损失
    4、监控资源分配的是否合理
    5、跟踪资源成本
    6、使计划任务的完成时间和完成任务所需的时间调配起来方便灵活
  • WBS分解原则

    2009-09-24 17:05:39

    任务的分解原则:

     

    1、  分层原则。

          大项目--》项目--》阶段--》任务--》子任务--》工作单元     

     

    2、  80小时原则

    3、  逐步求精原则

    4、  风险分解原则

    5、  责任到人原则

    6、  团队工作原则

  • CMM咨询前招标过程中的体会

    2009-09-23 18:06:22

    最近公司准备过CMMI3级,院长一句话,说拿个证吧。于是领导找了家咨询公司,写了汇报文件,就准备开始做了。结果呢,汇报时高层提了好多问题,让我们先是去别的过了CMM的公司去做调研,然后又和各家咨询公司进行交流,然后根据ISO的要求进行招投标。开始,总以为找家咨询公司开始做就行了,招投标不过是个过程,是个形式。可一整轮下来,发现这个过程还是好处非常多的,也改变了之前的一些想法,现在整个招投标过程结束了,总结一下我的收获。

     

    一、CMM的目标:

       之前是希望拿个证。从几方面说吧,竞争对手有证了;签合同很多要求有证了;服务费用有证的钱多了,没有证的吃亏了。但经过多次交流后,我发现,拿证和改进并没有矛盾啊!

    我们的目标可以这样说:短期是为了拿证,长期是为了改进。 当然短期间最好也能看到改进的好处,为了过程改进能更进一步。

     

      如果按照原来的目标,可能咨询公司给了一些模块,我们生搬一通,过了就过了。 但现在目标不同了。我们更加注意拿到证的同时,能有改进,能有长足的发展。

     

      那么就引申了,在这么短的时间内,哪些可以改进呢? 于是召集项目经理,大家提了很多意见和问题。 各个咨询公司就这些问题做了回答。这样就可以知道咨询师的能力,就照本宣科呢? 还是能看到公司问题的症结。 这里特别提一下一个咨询老师,到公司做了深入的交流,让公司的中层管理人员很大的开阔了一下视界,让到场的每个人收获都很多。这也是我们请这家咨询公司的主要原因,这是后话。

     

      最后,根据和各个公司和咨询公司的交流,我们对下一步的认证和过程改进在心里有了初步的认识。如果去抓住短期的主要矛盾,在公司更容易更有效地推行,都比原来认识清晰了,希望下一步有了咨询老师的指导,我们做更多有效的工作。

     

    二、同行的交流:

           因为之前对CMM并没有什么深刻的理解,所以并不知道怎么去做这个工作。虽然说过CMM咨询老师会进行指导,但毕竟自己的努力占大部分,不可能老师手把手地教你怎么做。所以和同行的交流起了很大的作用。很多同行成功的或失败的经验都可以成了自己的知识。并且由于要交流,所以自己学习了一下CMM模型。之前总觉得是一个无从下手的刺猬,但研究了一下,发现和软件工程、项目管理的东西是相类似的,和一些RUP之类的实践也能对的上,感觉不是神化的东西的。我刚刚通过了PMP考试,看CMM模型的时候会时不时地脑海里比较一下。不知道是不是眼高手低,反正现在看着CMM感觉不是那么缥缈了,而是能想到它里面描述的一些东西在实践中怎么实现。

       当然,还有很多不懂的东西,尤其是度量这部分,下来要好好学习。

     

    三、与咨询师的交流:

    与咨询师的交流当然大多是老师讲,我来听。呵呵,心理只是想想这个咨询师是实践派的还是学院派的。当然,我不敢评价,只是咨询师有时的一点点提示,都会给自己的工作起到拨开迷雾的感觉。毕竟,咨询师嘛。虽然现在社会上或国家没有什么标准来评价咨询师,但交流多了,总会找到与自己臭味相投的那个:)

     

    四、招投标过程

    首先,是招标书。写这个时,真是头大,脑大。。。要了公司ISO的招标书做为参考,又要了各个咨询公司的合同样本做参考,写的我晕呼呼的。 第一次做甲方的感觉真不一样啊,反正写过投标书,没有写过招标书。花了两天时间总算写完了,里面的法律上的考虑和用词需要专业人士了。我主要是把CMM认证的各个阶段细分了一下,明确了一下服务内容。

    其次,是评标的评分表。评分表分成了技术,服务,和商务三部分。我们小组讨论了好久,包括内容和分值,看怎么能做到公平,又让评委能客观地打分。

     讨论了一些详细的指标时,又能找出利益最大化的部分,即对公司最有利的一些条款,之前没有细分到一条一条承诺时,一些细节都考虑不到。

    最后,是点对点对答。呵呵,这些承诺都是对甲方有利的哦:) 要不是写的如此细,合同上我们的利益就少了很多呢。

    所以,招投标过程很顺利,因为我们准备的非常充分。

    呵呵,感觉不错。并且多了个实践的东西。看到后面配置库里保存的所有资料,发现自己的工作效率还是不错的嘛。

     

    当然招投标过程之前是很长的准备工作,我们组所有人都花费了很多心血,会议纪要都写了好多。要签合同了,才迈开了走向CMM的第一步,以后的工作更多更累,希望自己也更充实。

  • 补丁发布中遇到的问题(二)

    2009-09-09 16:51:37

     1. 编译的脚本修改路径时,确保svn.ecom.src所定义的路径是能完整访问源码路径的。
     
     2. 制作补丁文件时,一定要从RAR文件中解压出来。
     3. 所有补丁文件对应的JIRA问题,要查看提交的文件是否正确(本次分支编译的一些文件在分支中都没有提交)。
     
     4. 如果是补丁文件发布,在院内的测试环境也必须是补丁方式更新,并且确认JIRA任务都已经关闭才发布。
     5. 如果ecom或ecom_seller里的类在ecom_service中也有使用的话,要进行说明,或者每次都发布ecom_service
     6. 以后发布的时候一定要附上修改的源文件。以防止漏掉文件。
  • 新人怎么能快速接手交给你的工作

    2009-08-31 18:04:12

     

     

    1、  如果交给你的工作,前面有人做过,那么索要文档吧。越详细越好。有了文档,你遇到了问题,先查看一下文档,看没有解决的方法。没有,再去请教。

    2、  请找支笔记下来吧。无论你的记性多好。一两个月之后再翻看,也许对你的工作也会有帮助的。当你第一次问时,人家会觉得无所谓,问的次数多了,佛都会有火的。

    3、  你完成工作时,尽量要理解工作原理,为什么要这样做。请不要做复读机、翻译器。如果你对工作原理有些初步的理解,那遇到问题后可能也会有一些自己的思路。 如果你只是重复,那你的工作永远不会有改进。自己的技能也不可能得到提升。

    4、  遇到问题时,请不要急着先问。先看一下自己是否能解决,如果不能解决,再问,那么对此问题也有一个很深刻的印象。下次遇到了,也许就能自己解决。

    5、  要妥协别人的时间,不要别人妥协你的时间。不要教你的时候你说没空,我用的时候再说吧。而你用的时候不会又去问人。如果每个人都这样,不是每个人都要教一遍?那培训就不再需要存在了。

    6、  工作交给你了,你就要负责。“我刚接手”这样的借口还是不要的好。工作接手一个星期都还是没有熟悉,那就是你的问题了。

  • 软件版本发布混乱的现状

    2009-08-31 14:58:43

    软件版本发布混乱的现状

     

    1、  机器成为性能瓶颈。 本来SVN了支持多个开发人员一起操作同一存储池,不会出现等待的现象。 但现在多个开发人员只使用同一台机上的SVN,结果机器成为了瓶颈。你要等待别人用完这台机,你才能用,浪费机器资源和等待时间。并且由于密码总是被默认保存,导致SVN操作出错,解决问题和返工也花费了大量的工作。

    2、  编译是在上传代码本机内执行的。 这里存在一个很大的漏洞。就是编译可能是正确的,但代码并没有上传到SVN。导致发布后备份的代码可能是不可用的。

    3、  版本规定后应该是不变的,无论你是提前发布还是延迟发布,不能因为版本号是按照日期格式来规定的,就随意修改版本号。导致几天几周后,版本和源码的对应关系根本找不到。

    4、  权限是严格限制的。不能为了操作文件随意在发布的版本上修改,并且要求管理员修改权限。 不遵守发布流程将会是混乱的流程。

    5、  工作环境要稳定,不要今天机器不稳定,换一台;明天系统不稳定,重新装一下。结果工作的大部分时间都用来在各种实验机上搞实验了。

     

    如果流程不适合,可以修改流程;否则流程不应该随便变更。

     

  • 探讨一下测试的主动权

    2009-08-31 12:06:42

    探讨一下测试的主动权(和当时的讨论有关系,呵呵,特定环境)

     

    呵呵,怎么感觉测试和开发是对立的关系呢?不是东风压倒西风,就是西风压倒东风。但我个人不这么认为,当然,如果BUG数成了考核的内容,那当然就不同了。

     

    不过我还是建议,把部门、角色间人的关系按照项目管理来管吧。所有的人情事故都放在桌面上管理,就是沟通吧。

     

    今天讨论的第一个问题: 测试的轮数。 测试要几轮才算是结束呢。 无限。。。当然,也是不可能的,所以公司可能就规定是3轮,5轮,第一轮做什么?第二轮。。。。 我觉得也没有问题,BUG是永远找不完的。公司规定的3轮可能是从公司的平均生产率上总结出来的。当投入产出比平衡时,测试就应该结束了。

     

    做软件的也知道,计划永远赶不上变化,规定永远都会有特殊。 这就是我们讨论的具体问题具体分析了。

    首先,一般的情况下,不要把冒烟测试定义了一轮测试。也许你冒烟不通过,领导说测吧测试,测试总比不测试好。 但实际上并不是这样,因为冒烟测试已经测试了产品的必须功能,这些是下面正式测试的基础。 如果这些都不通过的话,后面可能大量的测试是无意义的。更不能采用其它特殊的方法勉强去完成测试,因为你临时调整的测试环境,换了旧的包之类的,都会导致这次测试并不真实,是可以尽早发现错误,但投入的测试资源和发现的BUG数远不成比例。  并且,你每次不可测试的版本都接收的话,那么,下一次、下下一次可能同样不合格的版本不停地提交过来。这样一来加大了测试人员的工作量;其次,测试人员发现BUG、记录BUG、开发修改还要通过BUG管理流程走一遍,其反工成本是大了几倍的。所以请把冒烟测试不通过的版本扔回去了。合格了再入来。

     

    其次,每次的测试是应该根据计划来执行的,哪怕你的计划就是两行字。 一旦计划有变更,象增加原来遗留BUG的返测。 需要修改计划的。这里面有两个问题:1、你计划测试前,你应该考虑原来产品遗留的BUG是否需要返测。如果计划时没有考虑到这个风险,此时就比较被动了。  2、不得已的情况加入了,那计划一定要调整。不要把你有限的资源花在未计划的工作上,导致计划的工作不能完成。多做工作并不见得总是好事。 完成目标才是第一位的。

     

    第三,不要在测试过程中随意增加资源。 原因:1、增加资源带来学习成本。 2、增加资源在短期内是降低生产率的。 即使你发现了更多的BUG。但发现BUG的成本远大于你投入的成本。 假设你每测试人员每天发现10BUG 你增加了两个测试人员,一天总共发现了18个,看视发现的BUG多了,实际上总的生产率是下降的。3.这也是计划的变更,增加了资源,就要增加下一轮的测试。不要就此结束,否则看起来,你原来的测试是有问题的,因为按照这样的理论下去,你增加108个人后,BUG就变成了780个了。 4、可能你原来的测试真是有问题的,那么,继续吧。别停止。

     

    第四,易用性的测试。 易用性测试是开发关注最小,用户关注最多的。 找两个方法吧:1、站在用户的角度上不停地向开发灌输易用性的重要。 停止从开发的角度看BUG.   2、总结出易用性注意列表,提前给开发,让这些问题消灭到萌芽阶段。 3、易用性注意列表不起作用怎么办? 那就是执行的方法问题了,不行的话用行政手段吧,呵呵。

    第五, BUG的质量。 可能100个问题出现1个质量有问题的BUG,可以不关注,但是写BUG的时候,要想想,开发是我们BUG的用户。 站在他们的角度上考虑一下吧。 BUG描述的不清楚,难以重现,属于重复。。。。。都会让我们的用户对我们有意见。 当然要考虑BUG评审的投入产出比。但我们可以通过一些方式去改进。 1、不停地强调BUG质量的重要性,测试人员在写BUG时就要特别注意。2、增加BUG审核,尤其到新的测试人员提交的BUG来说。 3.增加客户满意度调查,哈哈,就是开发的反馈。

     

     

    呵呵,写这么多吧。感觉和测试的轮数没有什么直接的关系。只是轮数如果限制了,各种各样的变化又发生了,结果导致测试很被动。

     

    最后一句:如果你改变不了整个公司,就改变自己的部门吧;如果你改变不了自己的部门,就先改变一下自己吧。

  • 盲目的测试自动化崇拜

    2009-06-29 17:28:34

     

    呵呵,群上的高手们在谈测试的培训,我不是做培训的,但我也参加过培训和招聘到测试培训的人。针对培训的效果这里不说了。我想说说测试的自动化。

     

    首先,究其自动化火爆的原因,我想有以下几个,首先,觉得自动化了可以减少人工工作量。其次,自动化后可以让领导看到测试部门的直接成效。还有,自动化可能让个人觉得更有成就感。毕竟,天天重复的手工测试和自动化给人带来的满足感是不可同日而语的。

     

    但实际上呢?自动化真正减少了你的工作量吗?自动化让领导看到了成效了吗?自动化让你的价值提高了吗?

     

    第一个。自动化减少了手工的工作量了吗?

       首先,你要理解自动化也是软件开发,是软件开发就要有投入,有投入就要计算一下你的投入和回报。你可能听了很多微软的培训,自动化细到某一个函数,但微软的某自动化,实现后未来的10年都在用(微软的老师说的),而你的自动化呢?? 未来的一年,两年?还是一个月,两个月?  如果你是项目型,并且随着市场或需要的变化,程序需要不断变更的情况下,你的自动化开发和维护会占用多长时间? 你的自动化完成后,能节省你的工作量吗? 还是让你陷入了另一个痛苦:天天抱怨开发这儿又改了,那儿又改了。

       所以在你考虑自动化前,先计算一下投入产品比吧。 我个人觉得,如果你把测试流程做好了,把开发生命周期中的前期的评审做好了,产品的质量会有很大的改善的,而不是把精力花费在自动化测试上。

     

    第二个。自动化让领导看到测试部有技术积累,显的有成效。

       我觉得领导认为你的测试部技术比较差,或者说测试没有什么效果,和你实现了自动化是没有关系的。 可能领导说,你的测试连个自动化也没有,人家很多公司都有了。所以我们也搞一个。 呵呵,如果你想讨好领导,那没有问题啊,做吧!!  如果自动化让你的前途更光明,那还犹豫什么呢?  问题是你想过没有? 当你的自动化某一天不再能够运行,或者你的自动化对产品的质量没有什么大的改善的情况下,你又怎么对领导交待当初你做自动化的动机呢?难道你就说,领导让做就做啊,现在没有什么用也不关我事。

     

    可我觉得,这关你事的。 首先,领导对可能测试不了解。他想到做什么就做什么。但做为专业的测试人员不应该这么想。提高软件测试部门的威信有很多种方式。实现自动化是一种,但不是唯一。请你在做自动化之前行想想:自动化能帮助提高产品的质量吗?能增加测试的深度或广度吗?让增加领导或开发部门对测试部门的认同度吗?想好了你再做吧。

     

    第三个。自动化能让自己的价值提高。 呵呵。我觉得完全错误。 外国的思维、理念传到中国就成了有特色的了。 很多外面的企业是实现了自动化,也写了很多书,包括最佳实践之类的。但人家是有基础的。而传到中国,就变成手工测试是低下的,自动化测试是高尚的了。 说到底没有测试的基础,理论,没有测试分析的能力,自动化不就是一个初级程序员吗?难道懂得录制回放,就高人一等了?? 虽然这样说有点偏激,但有一些人就是有这样的想法。 招聘也一样,一年测试经验,刚刚学会填写BUG,就要求会用自动化工具。殊不知,会用是一个概念,而在实际中能用又是一个概念。 找个高中山,培训两天都知道录制,回放和基本的参数化。真不知道技术含量在哪里? 

     

     而且,自动化测试最强调的是架构,没有架构,就写脚本,简直是象没有设计,就盖房子一样,如果不倒那是奇迹了。

     而且,我并不认为手工测试是低下的工作。 BUG的发现是靠想象力和创造力的。不是只懂得01的计算机可以替代的。

     

     呵呵,一通胡说。乱七八糟。

  • Ant脚本 ftp、telnet、ssh 使用(自动构建之五)

    2009-06-09 15:28:06

     

    1       编写脚本前说明

    1.1    需求:远程部署

    1.2    详细描述:

    1、将编译完成的文件COPY到远程服务器上。

    2、执行远程服务器上的批处理命令,进行清理TOMCAT,并进行发布。

    1.3    操作系统:

    Windows2008(ant编译机) windows2003(发布应用的服务器)

    1.4    依赖:

    jakarta-oro-2.0.8.jar

    下载地址:http://archive.apache.org/dist/jakarta/oro/

     commons-net-1.4.1.jar

    下载地址: http://apache.mirror.phpchina.com/commons/net/binaries/

    放在引用 LIB目录下,虽然ANT里特别提到不要放到ANT安装目录的LIB下,不过我还是放在下面了。

    1.5    类定义:

      <taskdef name="telnet" classname="org.apache.tools.ant.taskdefs.optional.net.TelnetTask"/>

    1.6    其它说明:

    1、           使用FTP时,必须使用被动模式。服务器上需要安装FTP服务。

    2、           使用TELNET时,服务器端的TELNET服务需要打开。并且不使用验证方式NTLM。可以使用tlntadmn设置。

    3、           使用SSH时,服务器上也需要安装SSH服务。

    2       脚本例子

    2.1    ANT FTP 脚本

    <?xml version="1.0"?>
    <project>  

       <target name="ftp" description="ftp" >

          <ftp server="172.16.91.4"

                  userid="ftp"

                  password="ftp">

             <fileset dir ="${RELEASE_12580_DIR}">

             </fileset>

         </ftp>

    </target>

    </project> 

     

    2.2    ANT TELNET 脚本

     

    <?xml version="1.0"?>
    <project>  

      <target name="telnet" description=" telnet ">

        <telnet userid="administrator" password="**********"

                 server="172.16.80.228" port="23" initialCR="yes" timeout="50">

           <read timeout="30">*</read>

           <write>start  e: \test.bat</write>

        </telnet>

      </target>

    </project> 

     

    出现的问题:

    1、           使用ANT调用FTP时,客户端的防火墙需要进行设置,不限制FTP程序。

    2、           TELNETWINDOW的支持感觉很差,尝试了多次,有时成功有时不成功。最终放弃。TELNET不支持进行本地某个目录。如<write>cd e:\test</write> 这样是不可以的。另外由于不能进入本地的某个目录,所以也无法使用<read timeout="30">e:\test</read>来验证是否进入想要登录的目录 ,无法决定是否发送下次指令。而ANTTELNET只有<read>指令读取成功,才会进行下一条。所以发送<write>指令无法控制。

    3、           还有一个问题是,telnet到服务器后,用tlntadmn s查看,都是一连接,就马上断开了,所以有时无法执行远程的批处理命令。不能稳定地运行。目前不知道解决方法

    2.3    ANT SSH脚本

     <?xml version="1.0"?>
    <project>  

     <target name="sshexec" description="sshexec”

         <sshexec host="172.16.91.4"

            username="administrator"

              assword="***********"

              port="22"

              trust="true"

              command="i:/ecom/deploy_test.bat"/>

       </target> 

     </project>  

     

  • SVN本地文件锁定,无法clean [2009年06月09日]

    2009-06-09 09:31:54

    SVN 本地更新时,由于一些操作中断更新,如磁盘空间不够,用户取消。  可能会造成本地文件被锁定的情况。一般出现这种情况的解决方法:

    1、可以使用SVN clean up来清除锁定。

    2、如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除。

    3.如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录重新CHECKOUT。但有时有时SVN目录下可能有一些自己本地修改的文件,还未提交到SVN服务器,这时重新CHECKOUT需要注意本地文件的备份,并且不要强制覆盖服务器上其它人修改的内容。

    4.如果觉得第3种很麻烦,可以考虑这样的方法。其实SVN加锁会在.SVN(隐藏文件)中生成一个名字叫lock的文件(无后缀),查找所有的,手工删除。然后再尝试更新,系统可能会提示某个.base文件无法访问。找到它,把相关的文件或其所在的目录删除,重新UPDATE。工作量就小多了。

  • BBS连接MYSQL时遇到的问题

    2009-05-07 09:54:35

    这几天,把JIRA转到MYSQL数据库,原来用MYSQL4的BBS也顺便升了一下级。结果JIRA遇到一个问题,就修改了一下ROOT的密码,发现BBS不能登录了。

    用户密码都正确,但报错:“Client does not support authentication protocol requested by server”。GOOGLE一下,新版Mysql密码算法不同导致。

    修改方式:

    update mysql.user set password = old_password('newpwd')
    where host = 'localhost' and user = 'root';
    然后flush privileges;

    但还是不能登录。

    发现登录用户名:root@jira-server-adv.      jira-server-adv是服务器的机器名。而我在MYSQL创建的用户是jira@localhost. 不明白,MYSQL的用户干嘛还要带个机器名才行。 只好又创建了一个用户root,机器名是jira-server-adv。

  • 一次补丁发布错误的教训

    2009-04-28 15:39:24

    雪儿(18324258) 15:09:08
    遇到过这个问题吗? 一个文件,用xcopy命令拷贝到另一处时,文件大小改变了。 发现是因为路径中有空格,没有用引号包含起来。
    雪儿(18324258) 15:09:23
    但为什么生成的文件都正确。
     梦  轩(452614253) 15:09:52
    那没有碰到过。你不带空格拷贝大小会变吗?
    雪儿(18324258) 15:10:47
    不会。
    雪儿(18324258) 15:11:02
    导致我昨天补丁发布成功,今天开发人员查了一上午
     梦  轩(452614253) 15:11:05
    我只知道windows下面如果磁盘分区类型不一样,簇的大小也不一样,在copy的时候可能会有大小相差。。
     梦  轩(452614253) 15:11:21
    那不明白啥原因。。
    雪儿(18324258) 15:13:47
    气死我了。
    Zee(32913946) 15:19:19
     
    Zee(32913946) 15:19:23
    气啥呢?
    雪儿(18324258) 15:21:44
    昨天我搞了一晚上,今天开发人员查了一上午。最后发现是这个问题,其实我发现这个版本的文件比上个版本大许多。但以为是开发修改了很多内容,没有提出来。气自己没有早把疑问提出来,早解决问题啊。
    Zee(32913946) 15:22:29
     
    雪儿(18324258) 15:23:24
    还有,其实怀疑了,要去确认一下编译的内容,都不需要经过开发的。结果都没做。
    丁宁(5947956) 15:23:03
    一堑一智,么事
    曹向志(36115774) 15:23:28
    我的也有类似感触,当然我们发现问题时,就要去刨根问底,否则遗漏了问题
    雪儿(18324258) 15:24:56
    唉,只能做到下次不再犯了。
    雪儿(18324258) 15:25:40
    昨天开发提交错项目的事,也让自己觉得是开发的问题。
    雪儿(18324258) 15:26:02
    呵呵,两个问题都解决了。 以后开发提交,不用自己写文件了,所以也不会出错了。
    雪儿(18324258) 15:26:22
    写到我的BLOG上,作为警示。
  • jira新增,导入失败,报Column 'ID' cannot be null

    2009-04-13 14:31:25

    jira导入错误。

    现象:1、提示导入失败。在在导入自定义字段时失败。2.实际问题导入了,但提示错误的客户字段都为空。

         3.后来发现手工录入也有错。不能新增问题。

    2009-04-07 10:25:36,750 Thread-39 INFO [imports.importer.impl.ImportLogger] Importing issue number 1 : Issue {summary=由于添加了新表,在商家基础资料各种操作时应关联新表,请检查代码,目前已经发现删除功能没有关联删除新表的数据。, type=24} (0.0s)
    2009-04-07 10:25:37,484 Thread-39 INFO [imports.importer.impl.DefaultJiraDataImporter] Successfully imported issue 1 (1 unindexed issues): Issue {summary=由于添加了新表,在商家基础资料各种操作时应关联新表,请检查代码,目前已经发现删除功能没有关联删除新表的数据。, type=24}
    2009-04-07 10:25:37,843 Thread-39 ERROR [ofbiz.core.entity.SequenceUtil] [SequenceUtil.SequenceBank.fillBank] maxTries (5) reached, giving up.
    2009-04-07 10:25:38,187 Thread-39 ERROR [ofbiz.core.entity.SequenceUtil] [SequenceUtil.SequenceBank.fillBank] maxTries (5) reached, giving up.
    2009-04-07 10:25:38,187 Thread-39 ERROR [ofbiz.core.entity.SequenceUtil] [SequenceUtil.SequenceBank.getNextSeqId] Fill bank failed, returning null
    2009-04-07 10:25:38,203 Thread-39 INFO [imports.importer.impl.ImportLogger] FAILED: An error occurred while attempting to import value 'zrf' into the Custom Field '跟进人员'. (1.453s)
    2009-04-07 10:25:38,203 Thread-39 INFO [imports.importer.impl.ImportLogger] com.atlassian.jira.exception.DataAccessException: org.ofbiz.core.entity.GenericEntityException: while inserting: [GenericEntity:CustomFieldValue][issue,27090][customfield,10155][parentkey,null][stringvalue,zrf][id,null] (SQL Exception while executing the following:INSERT INTO customfieldvalue (ID, ISSUE, CUSTOMFIELD, PARENTKEY, STRINGVALUE, NUMBERVALUE, TEXTVALUE, DATEVALUE, VALUETYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) (Column 'ID' cannot be null))

    问题原因查找。首先以为数据库从HSQL转为MYSQL导致的问题,但转到MYSQL后有一段时间是可以录入并导入的。

    然后GOOGLE了一把,说是ofbcore-entity-2.1.1-atlassian-2007-05-07.jar有问题,要下载3.7后的版本。但我用的是3.12的版本,不过还是下载了,问题没有解决。

    再查这个包,是和数据表序列号相关的,怀疑序列号生成有问题,到数据库查了序列表,发现sequence_value_item表中的customerfield 和 issuelink两个字段为空。

    确认,同事在数据库中执行了存储过程,但没有修改成功,比较奇怪,看到是执行了吧,难道没有提交?还是有其它的原因,就不太清楚了。

  • jira从HSQL迁移到MYSQL

    2009-03-31 09:28:03

    JIRA使用自带的嵌入式数据库还是比较快的,不过占用内存太大。所以考虑将JIRA迁移到别的数据库上,迁移到oracle10g后,发现速度比较慢,听朋友说MYSQL不错,就准备迁移到MYSQL上。

    迁移过程很简单

    1.将项目导出成XML文件。

    2、停止JIRA服务。

    3.安装MYSQL,最好将MYSQL的字符集设置为UTF-8.在服务启动所使用的my.ini中修改。

    default-character-set=utf8

    4.创建MYSQL数据库,create database jiradb character set utf8;,如果不是UTF8的字符集,长的文本导入时会报错,无法导入。

    5.创建连接用户,密码。 如果连接的是远程的数据库,请在用户配置中HOSTNAME这一栏,标明应用服务器的IP。(我用Navicat mysql配置MYSQL数据库的)

    6.修改conf/server.xml

    <Context path="" docBase="${catalina.home}/atlassian-jira" reloadable="false">
              <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
                username="[enter db username]"
                password="[enter db password]"
                driverClassName="com.mysql.jdbc.Driver"
                url="jdbc:mysql://localhost/jiradb?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8"
                [ 删除这儿的 minEvictableIdleTimeMillis 和 timeBetweenEvictionRunsMillis 参数配置]        />

    7、配置 JIRA Entity Engine

    <!-- DATASOURCE - You will need to update this tag for your installation.

    -->
      <datasource name="defaultDS" field-type-name="mysql"
          [ 如果这句存在的话,请删除。schema-name="PUBLIC" ]

    8.MySQL driver

     将MySQL JDBC 驱动 (mysql-connector-java-3.x.x-bin.jar) 放在 common/lib/ 目录下,否则会报连接不到数据库的错误。注意,在CLASSPATH不要放Debug版本的驱动 (mysql-connector-java-3.x.x-bin-g.jar) 否则会引起这个错误(JRA-8674).

    9.启动JIRA,看一下有没有错误。一般如果报用户名密码不对,尝试三次连接的,请检查你的用户密码。报连接不到MYSQL的,请检查你的MYSQL 驱动。启动完成后,进入JIRA安装页面,将备份的XML文件导入就OK了。

  • SVN错误。

    2009-03-26 17:30:21

    更新本地的源代码<br/>svn: 'C:\Program Files\CruiseControl\projects\ECOM\sourcef\ecom\lib' is not a working copy
    svn: Cannot read from to 'C:\Program Files\CruiseControl\projects\ECOM\sourcef\ecom\lib\.svn\format': path refers to directory or read access is denied<br/>


    查找原因,发现是因为乌龟版本太低。需要升级。

    于是乎,从1.4.8升级到了1.5.3. 不过不太明白,服务器版本都1.4.4的,客户端版本干么就不给用了?

    升了级后,还是不能更新,要重新CHECKOUT。

    然后手工更新正常,ANT更新失败,加了日志,报"认证取消"的错误,查了XML,才发现用户的密码写死了,没有读取配置文件,修改用户密码,终于可以正常编译了。

  • SVN中遇到的问题

    2009-02-11 14:36:03

    1.Could not send request body

      查询原因,是因为外网访问,可能公司网络上传附件大小有限制,50M就会报错了。下载就没有问题。

    2. 403错误,无权限。

      先确定权限是否设置正确。最近遇到的两个问题,1.是因为项目名称中有1.1这样的符号,可能SVN无法识别。2.是由于项目名称修改了。重新提交时,没有提示项目不存在,而是提示无权限。

  • 使用QC项目模板解决自定义字段属性的问题

    2009-01-20 15:06:41

    使用QC时,有这样的需求,就是为用例增加一些字段,象测试目的、版本号。最重要的是版本号,而QC自己没有提供这样的功能。于是是项目自定义里自己增加。可是自定义是针对每个项目的。就是说,你在这个项目加了,另外一个项目还得增加。

    所以在查找了数据库表后无法解决的情况下,想出一个方法。就是自定义一个标准项目模板,以后每个项目都以它为模板。

    而且还发现了它的一些好处呢。

    1)公共的用例可以预先写在标准项目模板里,这样新建项目的时候,公用用例就一起生成了。

    2)公用的组件也可以这样做呢。

741/41234>
Open Toolbar