<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>xmx0632</title>
    <description></description>
    <link>http://xmx0632.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Re: 这样的TDD实践方式有问题？请教大家的TDD实施方式.</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/125522" style="color:red;">http://xmx0632.javaeye.com/blog/125522</a>&nbsp;
          发表时间: 2007年09月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          [quote] [code] code1: package org.opensource.test; public class StringReverser { public Object reverse(String str) { return &quot;technology devolopment software a is Tdd&quot;; } } 重构代码 ==&gt; code2: package org.opensource.test; public class StringReverser { private static final String SPACE = &quot; &quot;; public String reverse(String str) { String[] words=str.split(SPACE); StringBuilder result=new StringBuilder(); for (int i = words.length-1; i &gt;=0; i--) { result.append(words[i]).append(SPACE); } return result.toString().trim(); } } [/code] [/quote] 看到楼主能把code1重构成code2这个样子忽然想起见过的公务员考试里那种题目，类似这样的推理题: [quote] 1.问:请观察下面一堆数字，说出其中的规律 2，4，8，16 答:2的X次方 2.问:请观察下面一个数字，说出其中的规律 16 答:2的4次方 [/quote] 感觉楼主的重构跟第2道推理有点神似. 按您上面的那个死需求,个人感觉如果您把code2重构成code1比较能让人接受.
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/125522#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Sep 2007 00:32:33 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/125522</link>
        <guid>http://xmx0632.javaeye.com/blog/125522</guid>
      </item>
      <item>
        <title>sigh,又是按照代码行数统计工作量...</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/100706" style="color:red;">http://xmx0632.javaeye.com/blog/100706</a>&nbsp;
          发表时间: 2007年07月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天又看到这样的代码：<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span><span>(msisdn==</span><span class="keyword">null</span><span>)&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(</span><span class="string">&quot;return&quot;</span><span>);&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(msisdn.equals(</span><span class="string">&quot;&quot;</span><span>))&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;mapping.findForward(</span><span class="string">&quot;return&quot;</span><span>);&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<br />
是不是因为这个...工作量按照代码行数统计的原因？-_-!
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/100706#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 13 Jul 2007 13:17:11 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/100706</link>
        <guid>http://xmx0632.javaeye.com/blog/100706</guid>
      </item>
      <item>
        <title>html里的disabled误区</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/64624" style="color:red;">http://xmx0632.javaeye.com/blog/64624</a>&nbsp;
          发表时间: 2007年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          为了使用户在一个页面上不能修改一个select元素的状态，因为没有readonly属性，又想偷懒不写css，我给这个元素加上disabled=&quot;disabled&quot;，结果提交form到action里面取到对应的值都是空的。而写了一个页面测试<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">form</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;fff&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>&nbsp;=</span><span class="attribute-value">&quot;fff&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">select</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;bizType&quot;</span><span>&nbsp;</span><span class="attribute">disabled</span><span>=</span><span class="attribute-value">&quot;disabled&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">option</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;1&quot;</span><span>&nbsp;</span><span class="tag">&gt;</span><span>Vnet</span><span class="tag">&lt;/</span><span class="tag-name">option</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">option</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;2&quot;</span><span>&nbsp;</span><span class="attribute">selected</span><span>=</span><span class="attribute-value">&quot;selected&quot;</span><span class="tag">&gt;</span><span>Vnet</span><span class="tag">&lt;/</span><span class="tag-name">option</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">option</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;2&quot;</span><span class="tag">&gt;</span><span>IPTV</span><span class="tag">&lt;/</span><span class="tag-name">option</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">option</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;3&quot;</span><span class="tag">&gt;</span><span>电视上网</span><span class="tag">&lt;/</span><span class="tag-name">option</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">form</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;javascript:aa();&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;aa(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(document.fff.bizType.value);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
在页面上是可以取到值的。<br />
<br />
原来disabled是这样的<br />
1.让人改不掉它的状态<br />
2.使它在提交的时候变成空值。<br />
3.在页面上用js还是能取到值的
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/64624#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 Mar 2007 11:44:01 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/64624</link>
        <guid>http://xmx0632.javaeye.com/blog/64624</guid>
      </item>
      <item>
        <title>安装gem0.9.2  报zlib找不到</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/60405" style="color:red;">http://xmx0632.javaeye.com/blog/60405</a>&nbsp;
          发表时间: 2007年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          安装gem0.9.2&nbsp; 报zlib找不到,不知道是怎么回事.<br />
一开始去http://www.zlib.net/下载了,安装了没用.再搜索一下看到 http://raa.ruby-lang.org/project/ruby-zlib的ruby-zlib-0.6.0长的比较像下载安装:<br />
<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>wget&nbsp;http:</span><span class="comment">//www.blue.sky.or.jp/atelier/ruby/ruby-zlib-0.6.0.tar.gz</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>tar&nbsp;zxvf&nbsp;ruby-zlib-<span class="number">0.6</span><span>.</span><span class="number">0</span><span>.tar.gz&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>cd&nbsp;ruby-zlib-<span class="number">0.6</span><span>.</span><span class="number">0</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>ruby&nbsp;extconf.rb&nbsp;&nbsp;</span></li>
    <li class="alt"><span>make&nbsp;&nbsp;</span></li>
    <li class=""><span>sudo&nbsp;make&nbsp;install&nbsp;&nbsp;</span></li>
</ol>
</div>
<font size="-1"><br />
然后再<br />
</font>
<div class="code_title"><font size="-1">java 代码</font></div>
<div class="dp-highlighter">
<div class="bar"><font size="-1">&nbsp;</font></div>
<ol class="dp-j" start="1"> <font size="-1">
    <li class="alt"><span><span>cd&nbsp;../rubygems-</span><span class="number">0.9</span><span>.</span><span class="number">2</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>sudo&nbsp;ruby&nbsp;setup.rb&nbsp;&nbsp;</span></li>
    </font></ol>
    </div>
    <font size="-1">安装完成 <br />
    <br />
    测试 <br />
    </font>
    <div class="code_title"><font size="-1">java 代码</font></div>
    <div class="dp-highlighter">
    <ol class="dp-j" start="1"> <font size="-1">
        <li class="alt"><span><span>gem&nbsp;--version&nbsp;&nbsp;</span></span></li>
        </font></ol>
        </div>
        <font size="-1">显示 <br />
        0.9.2<br />
        <br />
        参考:<br />
        http://wiki.huihoo.com/index.php?title=Install_Ruby_Rails_Lighttpd_MySQL_on_Ubuntu_or_FreeBSD<br />
        </font>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/60405#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Mar 2007 20:50:32 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/60405</link>
        <guid>http://xmx0632.javaeye.com/blog/60405</guid>
      </item>
      <item>
        <title>把gwt放到tomcat运行</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/52499" style="color:red;">http://xmx0632.javaeye.com/blog/52499</a>&nbsp;
          发表时间: 2007年02月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          关键是把gwt-user.jar里面的javax下面的包全部干掉，扔到tomcat下面就好了。<br />
抄个ant&nbsp; target:<br />
<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&nbsp;&nbsp;&nbsp; &lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;original.gwt.jar.lib&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;<dove-si-trova>\gwt-user.jar&quot;</dove-si-trova></span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;temp.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./tempDir&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;stripGWT-lib&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${temp.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">unjar</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;${original.gwt.jar.lib}&quot;</span><span>&nbsp;</span><span class="attribute">dest</span><span>=</span><span class="attribute-value">&quot;${temp.dir}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">patternset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">exclude</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;javax/**/*.*&quot;</span><span class="tag">/&gt;</span><span>&nbsp; <br />
    </span></span></li>
    <li class=""><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;//patternset&gt;</span></span></li>
    <li class=""><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;//unjar&gt;</span></span><span><span> <br />
    </span></span>
    <ol>     </ol>
        </li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">jar</span><span>&nbsp;</span><span class="attribute">destfile</span><span>=</span><span class="attribute-value">&quot;${web-inf.lib.dir}/gwt-user.jar&quot;</span><span>&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;${temp.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${temp.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp; <br />
        </span></span></li>
        <li class=""><span><span>&nbsp;&nbsp;&nbsp;&nbsp; &lt;//target&gt;<br />
        </span></span></li>
    </ol>
    </div>
    <br />
    把gwt-user.jar重新打包就好了.<br />
    <br />
    部署到tomcat参考：<br />
    http://javava.blogspot.com/2006/11/gwttomcat.html<br />
    http://jroller.com/page/masini?entry=deploy_and_debug_google_web<br />
    <br />
    在eclipse调试方法参考：<br />
    http://www.ociweb.com/jnb/jnbOct2006.html<br />
    <br />
    gwt的控件库：<br />
    http://gwt.components.googlepages.com/<br />
    <br />
    ibm实例讲解：<br />
    http://www.ibm.com/developerworks/cn/java/j-ajax4/?ca=wa
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/52499#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Feb 2007 13:06:17 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/52499</link>
        <guid>http://xmx0632.javaeye.com/blog/52499</guid>
      </item>
      <item>
        <title>textmate-like-template-syntax-for-radrails</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/25424" style="color:red;">http://xmx0632.javaeye.com/blog/25424</a>&nbsp;
          发表时间: 2006年10月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://schf.uc.org/articles/2006/09/18/textmate-like-template-syntax-for-radrails" target="_blank">http://schf.uc.org/articles/2006/09/18/textmate-like-template-syntax-for-radrails</a><br />radrail的语法自动填充模板
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/25424#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 01 Oct 2006 11:49:08 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/25424</link>
        <guid>http://xmx0632.javaeye.com/blog/25424</guid>
      </item>
      <item>
        <title>Using the Rake Build Language</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/24145" style="color:red;">http://xmx0632.javaeye.com/blog/24145</a>&nbsp;
          发表时间: 2006年09月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Using the Rake Build Language <br />http://www.martinfowler.com/articles/rake.html
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/24145#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 02 Sep 2006 21:45:03 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/24145</link>
        <guid>http://xmx0632.javaeye.com/blog/24145</guid>
      </item>
      <item>
        <title>webdav</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23979" style="color:red;">http://xmx0632.javaeye.com/blog/23979</a>&nbsp;
          发表时间: 2006年06月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://forum.javaeye.com/viewtopic.php?t=6568" target="_blank">http://forum.javaeye.com/viewtopic.php?t=6568</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23979#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 Jun 2006 20:31:58 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23979</link>
        <guid>http://xmx0632.javaeye.com/blog/23979</guid>
      </item>
      <item>
        <title>webwork的reg验证备抄</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23327" style="color:red;">http://xmx0632.javaeye.com/blog/23327</a>&nbsp;
          发表时间: 2005年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          问题：<br />oldbig说：<br /><div class="quote_title">引用</div><div class="quote_div">我在user-validation.xml中定义了如下的验证规则 <br />&lt;field name="user.age"&gt; <br />&lt;field-validator type="required"&gt; <br />&lt;message key="errors.required"/&gt; <br />&lt;/field-validator&gt; <br />&lt;field-validator type="int"&gt; <br />&lt;param name="min"&gt;1&lt;/param&gt; <br />&lt;param name="max"&gt;99&lt;/param&gt; <br />&lt;message key="errors.integer"/&gt; <br />&lt;/field-validator&gt; <br />&lt;/field&gt; <br />其中验证规则是：age必须是一个整数，并且必填，并且必须是在1-99之间。 <br />errors.required以及errors.integer都在配置属性文件中定义好了。 <br />页面设置及action的设置都是一般的设置，在页面操作时出现如下情况： <br />1.当我在age栏内不填时，显示errors.required所代表的信息，正常； <br />2.当age栏内填写180（超出范围）时，显示errors.integer的信息，也正常； <br />3.但当我在age栏内填写gg（字符串）时，则显示Invalid field value for field "user.age".这不是我自己定义的。而且messager里似乎还有一条errors.required的信息。 <br />我的问题是：如何定义用户输入非数字时显示的信息呢？我试着把&lt;param name="min"&gt;1&lt;/param&gt;以及 &lt;param name="max"&gt;99&lt;/param&gt;删掉，这时没有了范围的限制，但是输入非数字时，显示的还同3的结果一样。 <br />哪位朋友能不能帮我解决一下这个问题？</div><br /><br /><br /><br />办法：<br /><br />wocienyoung说：<br /><div class="quote_title">引用</div><div class="quote_div">java代码:  <br /><br />&lt;field-validator type="regexp" short-circuit="true"&gt; <br />            &lt;param name="expression"&gt;(^[a-z]+$)&lt;/param&gt; <br />            &lt;message&gt;${getText('city.name')} ${getText('error.format')}&lt;/message&gt; <br />        &lt;/field-validator&gt; <br />       <br /> <br /><br />java代码:  <br /><br />&lt;validator name="regexp"      class="RegexpFieldValidator"/&gt;<br /> <br /><br />java代码:  <br /><br />import com.opensymphony.xwork.validator.ValidationException; <br />import com.opensymphony.xwork.validator.validators.FieldValidatorSupport; <br /><br />public class RegexpFieldValidator extends FieldValidatorSupport { <br />    private String expression; <br /><br />    public void validate(Object object) throws ValidationException { <br />        String fieldName = getFieldName(); <br />        Object value = this.getFieldValue(fieldName, object); <br />        // if there is no value - don't do comparison <br />        // if a value is required, a required validator should be added to the field        <br />        if (value == null) <br />            return; <br />        if (!(value instanceof String) || !((String) value).matches(expression)) { <br />            addFieldError(fieldName, object); <br />        } <br />    } <br /><br />    public String getExpression() { <br />        return expression; <br />    } <br /><br />    public void setExpression(String expression) { <br />        this.expression = expression; <br />    } <br />}<br /> </div><br /><br />http://forum.javaeye.com/viewtopic.php?t=13338<br /><br />http://forum.javaeye.com/viewtopic.php?t=9126
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23327#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 21 Aug 2005 09:07:12 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23327</link>
        <guid>http://xmx0632.javaeye.com/blog/23327</guid>
      </item>
      <item>
        <title>记着先</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23280" style="color:red;">http://xmx0632.javaeye.com/blog/23280</a>&nbsp;
          发表时间: 2005年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          AOP   mixin<br />http://docs.codehaus.org/display/AWARE/Home
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23280#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Jul 2005 21:43:58 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23280</link>
        <guid>http://xmx0632.javaeye.com/blog/23280</guid>
      </item>
      <item>
        <title>js  +  css</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23272" style="color:red;">http://xmx0632.javaeye.com/blog/23272</a>&nbsp;
          发表时间: 2005年07月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.onlinetools.org/articles/unobtrusivejavascript/cssjsseparation.html" target="_blank">http://www.onlinetools.org/articles/unobtrusivejavascript/cssjsseparation.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23272#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Jul 2005 12:49:28 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23272</link>
        <guid>http://xmx0632.javaeye.com/blog/23272</guid>
      </item>
      <item>
        <title>luence使用时的注意点</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23196" style="color:red;">http://xmx0632.javaeye.com/blog/23196</a>&nbsp;
          发表时间: 2005年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不知道是不是程序里的bug，今天发现luence创建、修改索引文件的时候如果去动(比如用鼠标选中)那些索引文件则会出错，报segement文件不能重命名什么的。
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23196#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Jun 2005 15:56:53 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23196</link>
        <guid>http://xmx0632.javaeye.com/blog/23196</guid>
      </item>
      <item>
        <title>http://www.wersling.com/blog/blog.asp?name=wersling&amp;amp;month=20</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23184" style="color:red;">http://xmx0632.javaeye.com/blog/23184</a>&nbsp;
          发表时间: 2005年06月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.wersling.com/blog/blog.asp?name=wersling&month=2005-6" target="_blank">http://www.wersling.com/blog/blog.asp?name=wersling&month=2005-6</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23184#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Jun 2005 15:01:40 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23184</link>
        <guid>http://xmx0632.javaeye.com/blog/23184</guid>
      </item>
      <item>
        <title>搜索yehs220</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23131" style="color:red;">http://xmx0632.javaeye.com/blog/23131</a>&nbsp;
          发表时间: 2005年05月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://forum.javaeye.com/search.php?search_author=yehs220" target="_blank">http://forum.javaeye.com/search.php?search_author=yehs220</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23131#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 May 2005 22:48:06 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23131</link>
        <guid>http://xmx0632.javaeye.com/blog/23131</guid>
      </item>
      <item>
        <title>webwork hibernate</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23067" style="color:red;">http://xmx0632.javaeye.com/blog/23067</a>&nbsp;
          发表时间: 2005年05月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.hibernate.org/159.html#a5" target="_blank">http://www.hibernate.org/159.html#a5</a><br />http://www.javaworld.com/javaworld/javatips/jw-javatip98.html
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23067#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 May 2005 22:47:43 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23067</link>
        <guid>http://xmx0632.javaeye.com/blog/23067</guid>
      </item>
      <item>
        <title>webwork中integer javascript validator 的实现</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23066" style="color:red;">http://xmx0632.javaeye.com/blog/23066</a>&nbsp;
          发表时间: 2005年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://scud.blogdriver.com/scud/429503.html" target="_blank">http://scud.blogdriver.com/scud/429503.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23066#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 30 Apr 2005 16:08:33 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23066</link>
        <guid>http://xmx0632.javaeye.com/blog/23066</guid>
      </item>
      <item>
        <title>http://blog.csdn.net/hongbo781202/archive/2005/04/12/344941.</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/23065" style="color:red;">http://xmx0632.javaeye.com/blog/23065</a>&nbsp;
          发表时间: 2005年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://blog.csdn.net/hongbo781202/archive/2005/04/12/344941.aspx" target="_blank">http://blog.csdn.net/hongbo781202/archive/2005/04/12/344941.aspx</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/23065#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 30 Apr 2005 13:34:23 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/23065</link>
        <guid>http://xmx0632.javaeye.com/blog/23065</guid>
      </item>
      <item>
        <title>iterator 使用一则</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22994" style="color:red;">http://xmx0632.javaeye.com/blog/22994</a>&nbsp;
          发表时间: 2005年03月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;ww:iterator value="{1, 2, 3, 4}" id="aaa"&gt; <br />&lt;ww:property/&gt;&lt;br&gt; <br />&lt;ww:property value="#attr.aaa" /&gt;&lt;br&gt; <br />&lt;ww:if test="#attr.aaa == 1 "&gt; <br />Hello&lt;br&gt; <br />&lt;/ww:if&gt; <br />&lt;/ww:iterator&gt;
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22994#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Mar 2005 17:36:28 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22994</link>
        <guid>http://xmx0632.javaeye.com/blog/22994</guid>
      </item>
      <item>
        <title>spring中Cron-Expression的含义</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22971" style="color:red;">http://xmx0632.javaeye.com/blog/22971</a>&nbsp;
          发表时间: 2005年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Class CronTrigger<br />java.lang.Object<br />  |<br />  +--org.quartz.Trigger<br />        |<br />        +--org.quartz.CronTrigger<br />All Implemented Interfaces: <br />java.lang.Cloneable, java.lang.Comparable, java.io.Serializable <br /><br />--------------------------------------------------------------------------------<br /><br />public class CronTrigger<br />extends Trigger<br /><br />A concrete Trigger that is used to fire a JobDetail at given moments in time, defined with Unix 'cron-like' definitions. <br /><br />For those unfamiliar with "cron", this means being able to create a firing schedule such as: "At 8:00am every Monday through Friday" or "At 1:30am every last Friday of the month". <br /><br />A "Cron-Expression" is a string comprised of 6 or 7 fields separated by white space. The 6 mandatory and 1 optional fields are as follows: <br />Field Name   Allowed Values   Allowed Special Characters <br />Seconds    0-59    , - * / <br />Minutes    0-59    , - * / <br />Hours    0-23    , - * / <br />Day-of-month    1-31    , - * ? / L W C <br />Month    1-12 or JAN-DEC    , - * / <br />Day-of-Week    1-7 or SUN-SAT    , - * ? / L C # <br />Year (Optional)    empty, 1970-2099    , - * / <br /><br /><br />The '*' character is used to specify all values. For example, "*" in the minute field means "every minute". <br /><br />The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification. <br /><br />The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12". <br /><br />The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday". <br /><br />The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". You can also specify '/' after the '*' character - in this case '*' is equivalent to having '0' before the '/'. <br /><br />The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results. <br /><br />The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days. <br /><br />The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month". <br /><br />The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month. <br /><br />The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday". <br /><br />The legal characters and the names of months and days of the week are not case sensitive. <br /><br />Here are some full examples: <br />Expression   Meaning <br />"0 0 12 * * ?"    Fire at 12pm (noon) every day <br />"0 15 10 ? * *"    Fire at 10:15am every day <br />"0 15 10 * * ?"    Fire at 10:15am every day <br />"0 15 10 * * ? *"    Fire at 10:15am every day <br />"0 15 10 * * ? 2005"    Fire at 10:15am every day during the year 2005  <br />"0 * 14 * * ?"    Fire every minute starting at 2pm and ending at 2:59pm, every day  <br />"0 0/5 14 * * ?"    Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day  <br />"0 0/5 14,18 * * ?"    Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day  <br />"0 0-5 14 * * ?"    Fire every minute starting at 2pm and ending at 2:05pm, every day  <br /><strong>"0 10,44 14 ? 3 WED"    Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.  </strong>"0 15 10 ? * MON-FRI"    Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday  <br />"0 15 10 15 * ?"    Fire at 10:15am on the 15th day of every month  <br />"0 15 10 L * ?"    Fire at 10:15am on the last day of every month  <br />"0 15 10 ? * 6L"    Fire at 10:15am on the last Friday of every month  <br />"0 15 10 ? * 6L"    Fire at 10:15am on the last Friday of every month  <br />"0 15 10 ? * 6L 2002-2005"    Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005  <br />"0 15 10 ? * 6#3"    Fire at 10:15am on the third Friday of every month  <br /><br /><br />Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields! <br /><br />NOTES: <br /><br />Support for the features described for the 'C' character is not complete. <br />Support for specifying both a day-of-week and a day-of-month value is not complete (you'll need to use the '?' character in on of these fields). <br />Be careful when setting fire times between mid-night and 1:00 AM - "daylight savings" can cause a skip or a repeat depending on whether the time moves back or jumps forward. <br /><br /><br />Author: <br />Sharada Jambula, James House, Contributions from Mads Henderson <br />See Also: <br />Trigger, SimpleTrigger, Serialized Form
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22971#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Mar 2005 00:53:33 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22971</link>
        <guid>http://xmx0632.javaeye.com/blog/22971</guid>
      </item>
      <item>
        <title>addd</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22810" style="color:red;">http://xmx0632.javaeye.com/blog/22810</a>&nbsp;
          发表时间: 2005年01月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://java.sun.com/blueprints/patterns/catalog.html" target="_blank">http://java.sun.com/blueprints/patterns/catalog.html</a><br />http://www.darksleep.com/lucene<br />http://www.erproad.org/showlog.asp?log_id=381<br />http://www.luar.com.hk/flashbook/archives/cat_learning.php<br />http://zhouyan.blogdriver.com/zhouyan/287834.html<br /><a href="JDBC+Hibernate将Blob数据写入Oracle " target="_blank">JDBC+Hibernate将Blob数据写入Oracle </a>  http://dev.csdn.net/article/43/article/59/59985.shtm
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22810#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Jan 2005 10:50:37 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22810</link>
        <guid>http://xmx0632.javaeye.com/blog/22810</guid>
      </item>
      <item>
        <title>JSR#168 Portlet 说明</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22807" style="color:red;">http://xmx0632.javaeye.com/blog/22807</a>&nbsp;
          发表时间: 2004年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.sentom.net/list.asp?id=53" target="_blank">http://www.sentom.net/list.asp?id=53</a><br /><br /><br />javaman的blog<br />http://javamen.blogdriver.com/javamen/index.html
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22807#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 30 Dec 2004 14:44:20 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22807</link>
        <guid>http://xmx0632.javaeye.com/blog/22807</guid>
      </item>
      <item>
        <title>动态HQL语句构造</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22804" style="color:red;">http://xmx0632.javaeye.com/blog/22804</a>&nbsp;
          发表时间: 2004年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.hibernate.org/hib_docs/api/net/sf/hibernate/Criteria.html" target="_blank">http://www.hibernate.org/hib_docs/api/net/sf/hibernate/Criteria.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22804#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 30 Dec 2004 12:51:29 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22804</link>
        <guid>http://xmx0632.javaeye.com/blog/22804</guid>
      </item>
      <item>
        <title>cvs 配置资料</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22794" style="color:red;">http://xmx0632.javaeye.com/blog/22794</a>&nbsp;
          发表时间: 2004年12月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CVS的常用命令速查手册 <br />蓝森林 http://www.lslnet.com 2002年9月2日 11:08<br /><br /><br />作 者： 车东<br /><br /><br />chedong@bigfoot.com  <br /><br /><br />最后更新：2002-08-30 13:18:41 <br /><br /><br />版权声明：可以任意转载，转载时请务必标明原始出处和作者信息<br /><br /><br />概述：CVS是一个C/S系统，多个开发人员通过一个中心版本控制系统来记录文件版本，从而达到保证文件同步的目的。 <br /><br /><br />       CVS服务器（文件版本库）<br />     /     |       \<br />（版 本 同 步）<br />   /       |         \  <br />开发者1  开发者2   开发者3 <br /><br />以下是本文主要内容：开发人员可以主要挑选2, 6看就可以了，CVS的管理员则更需要懂的更多一些 <br /><br />CVS环境初始化：CVS环境的搭建                                          管理员 <br />CVS的日常使用：日常开发中最常用的CVS命令，              开发人员      管理员 <br />CVS的分支开发：项目按照不同进度和目标并发进行                         管理员 <br />CVS的用户认证：通过SSH的远程用户认证，安全，简单                      管理员 <br />CVSWEB：CVS的WEB访问界面大大提高代码版本比较的效率                    管理员 <br />CVS TAG：将$Id$加入代码注释中，方便开发过程的跟踪       开发人员 <br />CVS vs VSS: CVS和Virsual SourceSafe的比较 <br />一个系统20%的功能往往能够满足80%的需求，CVS也不例外，以下是CVS最常用的功能，可能用到的还不到它全部命令选项的10%，更多的功能请在实际应用过程中体会，学习过程中应该是用多少，学多少，用到了再学也不迟。 <br /><br /><br />CVS环境初始化<br />============<br /><br />环境设置：指定CVS库的路径CVSROOT<br />tcsh<br />setenv CVSROOT /path/to/cvsroot<br />bash<br />CVSROOT=/path/to/cvsroot ; export CVSROOT<br /><br />后面还提到远程CVS服务器的设置：<br />CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH<br /><br />初始化：CVS版本库的初始化。<br />cvs init<br /><br />一个项目的首次导入<br />cvs import -m "write some comments here" project_name vendor_tag release_tag<br />执行后：会将所有源文件及目录导入到/path/to/cvsroot/project_name目录下<br />vender_tag: 开发商标记<br />release_tag: 版本发布标记<br /><br />项目导出：将代码从CVS库里导出<br />cvs checkout project_name<br />cvs 将创建project_name目录，并将最新版本的源代码导出到相应目录中。这个checkout和Virvual SourceSafe中的check out不是一个概念，相对于Virvual SourceSafe的check out是cvs update， check in是cvs commit。<br /><br />CVS的日常使用  <br />=============<br /><br />注意：第一次导出以后，就不是通过cvs checkout来同步文件了，而是要进入刚才cvs checkout project_name导出的project_name目录下进行具体文件的版本同步（添加，修改，删除）操作。<br /><br />将文件同步到最新的版本：<br />cvs update<br />不制定文件名，cvs将同步所有子目录下的文件，也可以制定某个文件名/目录进行同步<br />cvs update file_name<br />最好每天开始工作前或将自己的工作导入到CVS库里前都要做一次，并养成“先同步 后修改”的习惯，和Virvual SourceSafe不同，CVS里没有文件锁定的概念，所有的冲突是在commit之前解决，如果你修改过程中，有其他人修改并commit到了CVS库中，CVS会通知你文件冲突，并自动将冲突部分用<br />&gt;&gt;&gt;&gt;&gt;&gt;<br />content on cvs server<br />&lt;&lt;&lt;&lt;&lt;&lt;<br />content in your file<br />&gt;&gt;&gt;&gt;&gt;&gt;<br />标记出来，由你确认冲突内容的取舍。<br />版本冲突一般是在多个人修改一个文件造成的，但这种项目管理上的问题不应该指望由CVS来解决。<br /><br />确认修改写入到CVS库里：<br />cvs commit -m "write some comments here" file_name<br /><br />注意：CVS的很多动作都是通过cvs commit进行最后确认并修改的，最好每次只修改一个文件。在确认的前，还需要用户填写修改注释，以帮助其他开发人员了解修改的原因。如果不用写-m "comments"而直接确认`cvs commit file_name` 的话，cvs会自动调用系统缺省的文字编辑器(一般是vi)要求你写入注释。<br />注释的质量很重要：所以不仅必须要写，而且必须写一些比较有意义的内容：以方便其他开发人员能够很好的理解<br />不好的注释，很难让其他的开发人员快速的理解：比如： -m "bug fixed" 甚至 -m ""<br />好的注释，甚至可以用中文: -m "在用户注册过程中加入了Email地址校验" <br /><br />修改某个版本注释：每次只确认一个文件到CVS库里是一个很好的习惯，但难免有时候忘了指定文件名，把多个文件以同样注释commit到CVS库里了，以下命令可以允许你修改某个文件某个版本的注释：<br />cvs admin -m 1.3:"write some comments here" file_name<br /><br />添加文件<br />创建好新文件后，比如：touch new_file<br />cvs add new_file<br />注意：对于图片，Word文档等非纯文本的项目，需要使用cvs add -b选项，否则有可能出现文件被破坏的情况<br />比如：cvs add -kb new_file.gif<br />然后确认修改并注释 <br />cvs ci -m "write some comments here"<br /><br />删除文件：<br />将某个源文件物理删除后，比如：rm file_name<br />cvs rm file_name<br />然后确认修改并注释<br />cvs ci -m "write some comments here"<br />以上面前2步合并的方法为：<br />cvs rm -f file_name<br />cvs ci -m "why delete file"<br /><br /><br />注意：很多cvs命令都有缩写形式：commit=&gt;ci; update=&gt;up; checkout=&gt;co; remove=&gt;rm;<br /><br /><br />添加目录：<br />cvs add dir_name<br /><br />查看修改历史：cvs log file_name<br />cvs history file_name<br /><br />查看当前文件不同版本的区别<br />cvs diff -r1.3 -r1.5 file_name<br />查看当前文件（可能已经修改了）和库中相应文件的区别<br />cvs diff file_name<br />cvs的web界面提供了更方便的定位文件修改和比较版本区别的方法，具体安装设置请看后面的cvsweb使用<br /><br />正确的通过CVS恢复旧版本的方法：<br />如果用cvs update -r1.2 file.name<br />这个命令是给file.name加一个STICK TAG： "1.2" ，虽然你的本意只是想将它恢复到1.2版本<br />正确的恢复版本的方法是：cvs update -p -r1.2 file_name &gt;file_name<br />如果不小心已经加成STICK TAG的话：用cvs update -A 解决<br /><br />移动文件：文件重命名<br />cvs里没有cvs move或cvs rename，因为这两个操作是先cvs remove old_file_name，然后cvs add new_file_name实现的。<br /><br />删除，移动目录：<br />最方便的方法是让管理员直接移动，删除CVSROOT里相应目录（因为CVS一个项目下的子目录都是独立的，移动到$CVSROOT目录下都可以作为新的独立项目：好比一颗树，其实砍下任意一枝都能独立存活），对目录进行了修改后，要求其开发人员重新导出项目cvs checkout project_name 或者用cvs update -dP同步。<br /><br />CVS Branch：项目多分支同步开发<br />=============================<br /><br />确认版本里程碑：多个文件各自版本号不一样，项目到一定阶段，可以给所有文件统一指定一个阶段里程碑版本号，方便以后按照这个阶段里程碑版本号导出项目，同时也是项目的多个分支开发的基础。<br />cvs tag release_1_0<br /><br />开始一个新的里程碑：<br />cvs commit -r 2 标记所有文件开始进入2.x的开发<br /><br />注意：CVS里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。<br /><br />在开发项目的2.x版本的时候发现1.x有问题，但2.x又不敢用，则从先前标记的里程碑：release_1_0导出一个分支release_1_0_patch<br />cvs rtag -b -r release_1_0 release_1_0_patch proj_dir<br /><br />一些人先在另外一个目录下导出release_1_0_patch这个分支：解决1.0中的紧急问题，<br />cvs checkout -r release_1_0_patch<br />而其他人员仍旧在项目的主干分支2.x上开发<br /><br />在release_1_0_patch上修正错误后，标记一个1.0的错误修正版本号<br />cvs tag release_1_0_patch_1<br /><br />如果2.0认为这些错误修改在2.0里也需要，也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中：<br />cvs update -j release_1_0_patch_1<br /><br />CVS的远程认证：通过SSH远程访问CVS<br />================================<br /><br />使用cvs本身的远程认证很麻烦,需要定义服务器和用户组，用户名，设置密码等，而且不安全，因此和系统本地帐号认证并通过SSH传输是比较好的办法，通过在客户机的/etc/profile里设置一下内容：<br />CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH<br />所有客户机所有本地用户都可以映射到CVS服务器相应同名帐号了。<br /><br />如果CVS所在服务器的SSH端口不在缺省的22，或者和客户端与CVS服务器端SSH缺省端口不一致，有时候设置了：<br />:ext:$USER@test.server.address#port:/path/to/cvsroot <br /><br />仍然不行，比如有以下错误信息：<br />ssh: test.server.address#port: Name or service not known<br />cvs [checkout aborted]: end of file from server (consult above messages if any)<br /><br />解决的方法是做一个脚本指定端口转向（不能使用alias，会出找不到文件错误）：<br />创建一个/usr/bin/ssh_cvs文件：<br />#!/usr/bin/sh<br />/path/to/ssh -p 34567 "$@"<br />然后：chmod +x /usr/bin/ssh_cvs<br />并CVS_RSH=ssh_cvs; export CVS_RSH<br /><br />注意：port是指相应服务器SSH的端口，不是cvs pserver的端口<br /><br />CVSWEB：提高程序员比较文件修改效率<br />================================<br /><br />CVSWEB就是CVS的WEB界面，可以大大提高程序员定位修改的效率:<br />使用的样例可以看：http://www.freebsd.org/cgi/cvsweb.cgi<br /><br />CVSWEB的下载：CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本，这个是个人感觉觉得安装设置比较方便的：<br />http://www.spaghetti-code.de/software/linux/cvsweb/<br /><br />下载解包：<br />tar zxf cvsweb.tgz<br />把配置文件cvsweb.conf放到安全的地方（比如和apache的配置放在同一个目录下），<br />修改：cvsweb.cgi让CGI找到配置文件：<br />$config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';<br /><br />转到/path/to/apache/conf下并修改cvsweb.conf：<br /><br />修改CVSROOT路径设置：<br />%CVSROOT = (<br />'Development' =&gt; '/path/to/cvsroot', #&lt;==修改指向本地的CVSROOT<br />); <br />缺省不显示已经删除的文档：<br />"hideattic" =&gt; "1",#&lt;==缺省不显示已经删除的文档 <br />在配置文件cvsweb.conf中还可以定制页头的描述信息，你可以修改$long_intro成你需要的文字 <br />CVSWEB可不能随便开放给所有用户，因此需要使用WEB用户认证：<br />先生成 passwd:<br />/path/to/apache/bin/htpasswd -c cvsweb.passwd user<br /><br />修改httpd.conf: 增加<br />&lt;Directory "/path/to/apache/cgi-bin/cvsweb/"&gt;<br />AuthName "CVS Authorization"<br />AuthType Basic<br />AuthUserFile /path/to/cvsweb.passwd<br />require valid-user<br />&lt;/Directory&gt;<br /><br />CVS TAGS: who? when?<br />====================<br /><br />将$Id$ 加在程序文件开头的注释里是一个很好的习惯，cvs能够自动解释更新其中的内容成：file_name version time user_name 的格式，比如：cvs_card.txt,v 1.1 2002/04/05 04:24:12 chedong Exp，可以这些信息了解文件的最后修改人和修改时间<br /><br />几个常用的缺省文件：<br />default.php<br />&lt;?php<br />/*<br />* Copyright (c) 2002 Company Name.<br />* $Header$<br />*/<br /><br />?&gt; <br /><br />==================================== <br />Default.java: 注意文件头一般注释用 /* 开始 JAVADOC注释用 /** 开始的区别<br />/*<br />* Copyright (c) 2002 Company Name.<br />* $Header$<br />*/<br /><br />package com.netease;<br /><br />import java.io;<br /><br />/**<br />* comments here<br />*/<br />public class Default {<br />    /**<br />    *<br />    * @param<br />    * @return<br />    */<br />    public toString() {<br /><br />    }<br />} <br /><br />==================================== <br />default.pl:<br />#!/usr/bin/perl -w<br /># Copyright (c) 2002 Company Name.<br /># $Header$<br /><br /># file comments here<br /><br />use strict;<br /><br /><br />CVS vs VSS　<br />=========== <br /><br />CVS没有文件锁定模式，VSS在check out同时，同时记录了文件被导出者锁定。 <br /><br />CVS是update commit， VSS是check out check in <br /><br />在CVS中，标记自动更新功能缺省是打开的，这样也带来一个潜在的问题，就是不用-kb方式添加binary文件的话在cvs自动更新时可能会导致文件失效。 <br /><br />Virsual SourceSafe中这个功能称之为Keyword Explaination，缺省是关闭的，需要通过OPITION打开，并指定需要进行源文件关键词扫描的类型：*.txt,*.java,*.html... <br /><br />对于Virsual SourceSafe和CVS都通用的TAG有：<br />$Header$<br />$Author$<br />$Date$ <br />$Revision$ <br /><br />尽量使用通用的关键词保证代码在CVS和VSS都能方便的跟踪。 <br /><br />　 <br /><br />相关资源：<br /><br />CVS HOME：<br />http://www.cvshome.org/<br /><br />CVS FAQ：<br />http://www.loria.fr/~molli/cvs-index.html<br /><br />相关网站:<br />http://directory.google.com/Top/Computers/Software/Configuration_Management/Tools/Concurrent_Versions_System/<br /><br />CVS 免费书:<br />http://cvsbook.red-bean.com/<br /><br />CVS 命令的速查卡片：<br />http://www.refcards.com/about/cvs.html<br /><br /><br /><br /><br />摘自：http://www.chedong.com/tech/cvs_card.html
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22794#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 18 Dec 2004 11:19:58 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22794</link>
        <guid>http://xmx0632.javaeye.com/blog/22794</guid>
      </item>
      <item>
        <title>http://www.onjava.com/lpt/a//onjava/excerpt/java_xslt_ch5/in</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22748" style="color:red;">http://xmx0632.javaeye.com/blog/22748</a>&nbsp;
          发表时间: 2004年12月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.onjava.com/lpt/a//onjava/excerpt/java_xslt_ch5/index.html" target="_blank">http://www.onjava.com/lpt/a//onjava/excerpt/java_xslt_ch5/index.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22748#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 07 Dec 2004 19:53:03 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22748</link>
        <guid>http://xmx0632.javaeye.com/blog/22748</guid>
      </item>
      <item>
        <title>scud的jvalidation</title>
        <author>xmx0632</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmx0632.javaeye.com">xmx0632</a>&nbsp;
          链接：<a href="http://xmx0632.javaeye.com/blog/22743" style="color:red;">http://xmx0632.javaeye.com/blog/22743</a>&nbsp;
          发表时间: 2004年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://forum.javaeye.com/viewtopic.php?t=9126&sid=57b1b0978188bc59632deaf41f127e82" target="_blank">http://forum.javaeye.com/viewtopic.php?t=9126&sid=57b1b0978188bc59632deaf41f127e82</a>
          <br/>
          <span style="color:red;">
            <a href="http://xmx0632.javaeye.com/blog/22743#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 06 Dec 2004 00:13:48 +0800</pubDate>
        <link>http://xmx0632.javaeye.com/blog/22743</link>
        <guid>http://xmx0632.javaeye.com/blog/22743</guid>
      </item>
  </channel>
</rss>