发布新日志

  • CI---持续集成

    2013-04-17 22:07:41

    这几天公司在一个框架项目中开始使用了maven构建工具,同时帮开发人员一起研究了下hudson的使用,应该说这些工具
    在目前的环境中已经用的很普遍了,但我们才刚刚开始,同时自己前些天刚也借了本《持续集成-软件质量改进和风险降低之道》在看就略微写点想法吧。
     CI,全称Continuous Integration,已经风行国外好多年了,国内一些大的公司,也已经都做的很成熟了,对于中小公司来说有的像我们这样还在摸索阶段,有的没成本投入来做,或者只限于口头,并未实际行动。但学习了CI的概念、方法后觉得做软件的公司真的很有必要去投入做这个事情,因为前期成本的投入换来的是后期成倍的收益。
     为什么这么说,CI的价值就在于减少风险、减少重复过程、生成可部署的软件、增强项目的可见性、建立起更强大的产品信心;我们在软件开发中会遇到很多编译上的问题,特别是将要发布的时候,或者发布后验证一些功能的时候,相信很多人都遇到过,手工的进行代码合并编辑,各种各样的配置文件等等,发布前主要是代码不一致,或者代码集成后出现编译失败,而发布后功能的验证更是令人头疼,明明在测试环境中都已通过的功能,在生产环境中却总是出现各种问题,于是又回头去找代码,或者配置方面的原因,说焦头烂额一点不为过。那么CI就是来解决这些问题的重要手段。
     那么CI主要做些什么呢?下面就是它要做的事情:
     1.源代码编译
     2.数据库集成
     3.测试
     4.审查
     5.部署
     6.文档与反馈
  • myeclipse6.5中安装m2eclipse

    2011-02-23 09:44:48

     近来myeclipse6.0用的出问题,再也启不来了,于是只能更换,换了一个6.5版本,但很多东西都要重装,特别是maven2,上次装的时候老是JDK的问题,导致用不了,后来用网上的方法,左试右试终于搞好了,但还是不知所以然,这次重装想彻底搞清楚。
     还是先安装mylyn和AJDT,这个不再详述,不过建议手动安装,用myeclipse自动安装,老是提示网络连接不通,不知别人是不是也这样。
     然后安装m2eclipse,用http://m2eclipse.sonatype.org/update/这个地址去自动安装,也不行,只能手动安装。
     安装完成后,重启m2eclipse。
     结果提示:Eclipse is running in a JRE, but a JDK is required
     上次怎么试成功的,给忘了,所以只能再次求助网络,最后发现,只要在eclipse.ini文件中增加
     -vm
     C:\Java\jdk1.5.0_12\bin\javaw.exe
     于是加了,但还是出现提示,于是再次不断的尝试和查网络,最终发现了解决方法:
     1.在启动myeclipse快捷方式时,需要更换参数"d:\MyEclipse 6.5\jre\bin\javaw.exe"为C:\Java\jdk1.5.0_12\bin\javaw.exe,这是因为两者的jdk不一致造成。如果直接在安装目录中的eclipse.exe启动,则不会出错了。
     2.不能-vm C:\Java\jdk1.5.0_12\bin\javaw.exe这样添加,这样添加是没用的。
     3.添加的内容需要加到-vmargs上面,不要加到文档的最后面,否则启动快捷方式的时候会出错
     4.之前以为在window->proferences->java->Install JRES中调整JRE有关系,后来发现是没关系的,只要在eclipse.ini文件中加入jdk路径就好了
     希望和各位使用maven的朋友共享。
  • maven终于能出包了

    2010-12-16 16:11:14

     学习maven近一个多月了,中间因为个人的事情,所以没有全力学习,但对概念的东西掌握了一些,但很多技术细节还是似懂非懂的,但还是拿一个真实的项目进行编译学习。
     一个月下来,感觉maven真是学的很累,虽然不断的参阅《maven指南》,但真实项目比指南中的复杂,于是不断的在网上寻找着问题的解决,然后一步一步的前进。
      终于代码能编译出来了,但最大的问题也随之而来,如何打包,特别在最后的资源拷贝中,试了很久,都无法把资源放到一起,先是class文件,然后是web-inf中的lib等文件,不断调试后,在网上找了近一周,才把资源都放在一起,但在打包过程中,assembling又会重新结构包的目录,所以老在打包中出现死循环的情况,最后发现还是自定义了输出目录惹的祸,去掉自定义输出目录后,感觉就简单多了。定义好包名就行了,展示下我父pom中的build部分:
     <build>
        <!-- 命令行输入时,默认执行mvn package -->
        <!--  defaultGoal>package</defaultGoal>-->
        <!-- 设定classes输出到WebRoot/WEB-INF/classes中 -->
        <sourceDirectory>java</sourceDirectory>
        <outputDirectory>target/classes</outputDirectory>
        <resources>
           <resource>
              <directory>java\dao</directory>
              <includes>
                 <include>**/*.hbm.xml</include>
              </includes>
           </resource>
           <resource>
              <directory>resources/cxf</directory>
           </resource>
           <resource>
              <directory>resources/dao</directory>
           </resource>
           <resource>
              <directory>resources</directory>
              <excludes>
                 <exclude>cxf/*.xml</exclude>
                 <exclude>dao/*.xml</exclude>
              </excludes>
           </resource>
      
        </resources>

        <plugins>
           <!-- war插件 -->
           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-war-plugin</artifactId>
              <version>2.1.1</version>
              <extensions>false</extensions>
              <inherited>true</inherited>
              <configuration>
                 <warName>ecis_ws</warName>
                 <webXml>WEB-INF/web.xml</webXml>
                 <outputDirectory>ll/web-inf</outputDirectory>
                 <!--  <warSourceDirectory>WEB-INF</warSourceDirectory>-->
                 <webResources>
                    <resource>
                        <directory>\</directory>
                    </resource>
                 </webResources>
               
              </configuration>
           </plugin>
           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
              <version>2.2-beta-5</version>
              <configuration>
                 <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                 </descriptorRefs>
              </configuration>
           </plugin>
           <!-- 设定JDK版本及编码,同时设定外部引用的jar包 -->
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.3.2</version>
               <configuration>
                  <source>1.5</source>
                  <target>1.5</target>
                  <encoding>UTF-8</encoding>
                  <optimize>true</optimize>
                  <compilerArguments>
                   <extdirs>E:\maven-test\ecis_ws\WebRoot\WEB-INF\lib</extdirs>
                 </compilerArguments>
               </configuration>
           </plugin>

        </plugins>
     </build>
    请多多指教,里面还是有很多可以优化的,以及自动部署部分的plugin还未加入。希望可以和更多的朋友探讨maven,这是个难理解,学习时间较长的自动构建工具,但看到自动打包后能用的东西,心里还是感觉蛮爽的。
  • maven安装回顾

    2010-11-25 10:41:25

     maven安装有几天了,感觉装的很郁闷,安装环境:myeclipse6.0,从一开始看maven指南开始,也有好几周时间了,期间按照指南中的方法,通过cmd方式做了一些操作,感觉上手还是蛮快的,但要用到项目中,必须在开发环境中加入maven插件,于是这周开始了这方面的安装,但装了几天,最大的问题是maven插件的自动安装网站一直连接不上,网上找了很多方法,也没有一个头绪,结果问了一个同事,可以通过手工安装,把一些前提条件的插件安装好后,又重新安装maven插件,但安装完了还是出现了集成方面的错误:
     

    The Maven Integration requires that Eclipse be running in a JDK,

    because a number of Maven core plugins are using jars from the JDK.

    按照网上的方式进行,也无从解决,maven集成后还是会继续报错,真不知道这个东西要怎么样才算装完呢,安装完才是第一步,后面让项目能自动集成起来,那才是考验呢。

  • 今日所作的事情

    2010-11-05 16:17:01

     今天主要在研究maven2,通过对照maven中文指南,进行一步一步的学习,先从安装,到建立一个项目,然后用命令构建安装这个项目,最后通过运行打包的文件,可以看到自动构建的结果,感觉非常舒服,希望能逐步研究,可以运用到实际的项目中。这也是领导对我提出的要求,所以要好好学习。
     感觉自动构建也是很神奇的,只要一个文件进行配置,就可以自动打包部署,这样省去了以后每个版本打包需要手工配置的麻烦。

    这两天qq和360在打仗,我卸掉了360,不是因为360和qq的冲突,而是看到一则报道,说360不专业,本来我也不用360干吗,只是觉得系统补丁打打比较方便,所以就用了,有时用来查下木马啥的,看看系统健康程度,现在彻底放弃360,用别的工具打补丁也一样,杀毒还是用小红伞吧,其他再找个防火墙就行了,360出了那么多东西,什么防毒、浏览器,感觉不咋地,性能上跑不过别的杀毒软件。杀毒能力也不怎么样。
    至于qq嘛,一个聊天软件,发展到一个多功能平台,是赚足了RMB,就比如q币,需要RMB买,然后还有期限,确实有很多人去买,这虚拟化的货币真值钱,我感觉比RMB值钱多了,好像是1:1的,我是没买过q币,现在更是看见哪个赚钱,直接模仿抄袭人家,借助自己的优势来挤压对手的生存空间,所以觉得qq也好,360也好,在打架的时候还是多想想用户,是用户撑起了你们的空间,没有用户,你们算个啥呢,设想有一天没人用qq了,都用msn或者淘宝或者别的聊天工具,你腾讯还能这么牛X吗???
    360也一样哦,多去和国外的安全软件商比比,人家虽然是要钱的,但人家的东西确实好,要钱也值啊,你免费的,做了一点成绩就感觉自己很牛X吗?弄的自己四面楚歌,值吗???
  • 有关selenium触发事件的问题

    2010-11-03 14:53:45

      近日在用selenium录制脚本时,遇到一个问题,在通过号码验证后,用type输入内容,点击按钮查询,在回放中,发现不能通过验证进行查询,多次脚本的修改还是不行。但验证明明已经通过了,而且手工去点也是不行,只有手工输入号码,才可以。
      于是在网上进行资料查询,也不断调试,但一直未解决,后询问开发人员得知,这段代码是一个触发事件,用onKeyUp函数来完成的,经过触发后,验证通过的号码才能进行查询。又再次进行网上查询,在一个博客中看到用KEYUP函数可以解决,但写的不详细,所以自己将脚本转换成Java,在开发环境中进行调试,终于得到解决。
      先看下keyup函数的格式:

    Simulates a user releasing a key.

    public�void�KeyUp(
    ���stringlocator,
    ���stringkeySequence
    );

    Parameters

    locator
    an element locator
    keySequence
    Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119".

    使用时,一直对keySequence参数不理解,但多次调试后,终于通过了,代码如下:
    selenium.type("//input","13547368791");
    selenium.keyup("//input[@name='mobile']","e");
    对于keySequence这个参数,发现任何字母都可以,只要有进行了,呵呵。
  • TD升级之经验

    2008-05-19 20:29:37

    公司TD安装在windows 2003 server下,使用时不稳定,同时每次进入TD都要安装插件,使用中很不爽,于是痛下决心,将TD迁移回windows 2000 server下面,并从7.6升级到8.0,以下是升级的步骤。
    升级迁移步骤:
    1.备份项目文件,数据库,特别是DOMSINFO下面的doms.mdb库,TD_Dir目录中的项目信息,项目数据库
    2.安装8.0,sql2000
    3.新建项目,最好先升级一下项目,建议项目名称与原项目的一致,然后关闭td服务器
    4.用Access打开doms.mdb中的user表,只要拷贝即可,注意只要拷贝数据
    6.将数据库还原,并拷贝TD_Dir目录中的项目文件,不需要拷贝DBID.INI,同时修改项目数据库的consonst表的版本号,和cycsy表加入CY_FOLDER_ID字段
    7.在2000数据库中执行  EXEC sp_change_users_login'Report'
                        EXEC sp_change_users_login'Update_One','td','td'
      使数据库td用户可以访问还原后的数据库
    8.重新开td服务
    9.升级项目,迁移完成


    问题及处理
    td8.0升级完成后,进行新的用户添加,无法添加,导致出现如下问题:
    在最初进行升级时,将TD7.6的doms.mdb库中user表直接拷贝TD8.0的doms.mdb库对应表中,没有考虑到8.0中该表已经增加新的字段,造成在增加用户时提示
    Error when trying to update TDUser.
    Item cannot be found in the collection corresponding to the requested name or ordinal. |error '800a0cc1'。
    所以在拷贝user表千万注意只要拷贝数据,因为8.0的user表比7.6的user表多了两个字段。


    在增加字段后,再次升级,还是无法添加,如下问题:
    提示:
    Error when trying to update TDUser.
    由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复值并再试一次。
    IDispatch error #3105.
    经过不断摸索,终于发现问题症结在于doms.mdb中的user表与数据库user表之间存在索引或关联造成。在TD管理平台中的user tab表中的用户列表是和数据库中的user表相对应的,在最初升级时,虽然doms.mdb中的user进行了初始化,保证迁移过来的项目用户数据不丢,但当数据库user表和其关联后,数据进行了同步,但这个用户数据是迁移项目的,而不是TD本身的,所以当TD继续需要新增用户时,TD会重新建立用户ID,这时,新建的ID与原来已经在的用户ID相冲突,造成无法新增用户。

    解决:将升级前拷贝的doms.mdb表,覆盖回去,同时不要重启td,就可以继续用原来的项目用户,也可以继续增加新用户。如果重启TD,造成迁移项目的用户数据丢失,需要重新把用户加到项目中去。对于全新的项目将不会受影响。
  • 一个开始

    2008-01-22 13:19:41

    这是一个开始,将在这里记录一些测试的点点滴滴,哈哈哈!!
Open Toolbar