<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>济南JavaEyer群</title>
    <description>济南的JavaEyer都来加入亚。圈主招聘中。。。</description>
    <link>http://jinan.group.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>STAF--一个很好的软件产品自动化测试框架</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/191566" style="color:red;">http://jinan.group.javaeye.com/group/blog/191566</a>&nbsp;
          发表时间: 2008年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          以前也听说过STAF这个框架的名字，不过一直没时间看。最近总算有时间看了看STAF这个框架，感觉很不错~很适合软件产品的测试。为什么特意加上“产品”两个字，是因为它本身没有提供多少测试的功能，而把重点放在了自动化测试的环境构建上，更适合与产品类型的软件测试，对测试环境要求单一的项目型软件似乎帮助不是很大。<br /><br />目前我了解到的，使用这个框架可以：<br />1. 随时启动、停止远程测试机上的任一个程序。<br />2. 得到测试机的状态。<br />3. 在测试机之间、测试和测试管理的机器中间传输文件。<br />4. 提供不同的操作语言api接口，包括java。<br />5. 适应多种操作系统。这样在和特性3结合，就能很方便的在多个不同的操作系统间传输文件了。<br /><br />以上几个是俺最近用的着的，利用这些可以很方便的自动搭建起一个测试环境来。这个框架还有很多其他的服务。可参考官网：<br />http://staf.sourceforge.net/index.php<br />还有Ibm上的文章<br />http://www.ibm.com/developerworks/cn/opensource/os-cn-staf/index.html<br /><br />这样的话，利用它和vmware相结合，在写些简单的批处理，就能方便的搭建起一个虚拟的测试实验室来。它还有个qaweb这样一个基于web的可以控制测试的管理工具，这样，就算搭建出一套像微软那样的测试框架，也不是遥不可及的事情了。<br />嗯~把这个框架多研究下并好好的用起来，就是俺下一步的目标了。
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/191566#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 09 May 2008 21:00:42 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/191566</link>
        <guid>http://jinan.group.javaeye.com/group/blog/191566</guid>
      </item>
          <item>
        <title>Tree +jquery +递归+树菜单+无限级分类</title>
        <author>zrmcsd</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zrmcsd.javaeye.com">zrmcsd</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/181466" style="color:red;">http://jinan.group.javaeye.com/group/blog/181466</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>主页面：</p>
<pre name="code" class="js">&lt;script type='text/javascript' src='/scmis/script/simpleHtmlTree.js'&gt;&lt;/script&gt;
&lt;script language=javascript src=&quot;/scmis/script/jquery.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;/scmis/css/site.css&quot; type=&quot;text/css&quot;&gt;
&lt;style&gt;
 input{font-size:12px;border:1 solid #000000; background-color:#FFFFFF ; }
 &lt;/style&gt;
 &lt;body &gt;
    &lt;table border=&quot;1&quot; width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; height=&quot;426&quot; class=&quot;table1&quot;&gt;
      &lt;tr&gt;
        &lt;td width=&quot;29%&quot; height=&quot;80%&quot;    valign=&quot;top&quot;&gt;&lt;div id=&quot;treepanel1&quot;&gt;&lt;/div&gt; &lt;/td&gt;
   
        &lt;td width=&quot;71%&quot;  valign=&quot;top&quot;&gt; 
		&lt;div&gt;&lt;/div&gt;
		&lt;div id=&quot;xmnr&quot;&gt;&lt;/div&gt;
		
		
		&lt;div&gt;
 		  &lt;input type=&quot;button&quot; name=&quot;addzi&quot; onclick=&quot;addziNode()&quot; value=&quot;添加子项&quot;&gt;
		  &lt;input type=&quot;button&quot; name=&quot;addfu&quot; onclick=&quot;addfuNode()&quot; value=&quot;添加同级&quot;&gt;
		  &lt;input type=&quot;button&quot; name=&quot;save&quot;  onclick=&quot;saveNode()&quot; value=&quot;保存修改&quot;&gt;
		  &lt;input type=&quot;button&quot; name=&quot;del&quot; onclick=&quot;delNode()&quot; value=&quot;删除节点&quot;&gt;
 		&lt;/div&gt;		&lt;/td&gt;      
      &lt;/tr&gt;
	&lt;/table&gt;
	
  &lt;input name=&quot;zijd&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;
  &lt;input name=&quot;fujd&quot; type=&quot;text&quot; value=&quot;0&quot; /&gt;
 &lt;/body&gt;
&lt;script&gt;
		var simpleTree = new SimpleHtmlTree();//构造树
 		var treeNodePanel = new TreeNodePanel();
		treeNodePanel.setTreeNodePanel(0,'数据库');//参数1：节点ID，参数2：节点文本
		simpleTree.addTreeNode('treepanel1',treeNodePanel);//添加到 treepanel1 下当节点	 	
 	simpleTree.nodeClick = function(nodePanel) {
 		document.getElementById(&quot;zijd&quot;).value=nodePanel.id;
 		document.getElementById(&quot;fujd&quot;).value=nodePanel.getAttribute(&quot;parentid&quot;);
	
	 	// alert(&quot;节点Id:&quot;+nodePanel.id);
	 	//alert(&quot;node's status:&quot;+nodePanel.getAttribute(&quot;menutype&quot;));
	 	//alert(&quot;node's level:&quot;+nodePanel.getAttribute(&quot;level&quot;));
	 	//alert(&quot;node's order:&quot;+nodePanel.getAttribute(&quot;order&quot;));
	 	//alert(&quot;node's parent's id&quot;+nodePanel.getAttribute(&quot;parentid&quot;));
		
	//ajax脚本开始	
			$.ajax({
					type: &quot;POST&quot;,
					url: “jcsjb&quot;,
					data: &quot;nodePanel=&quot;+ nodePanel.id,
					success: function(msg){
								   
								$(&quot;#xmnr&quot;).html(msg); 
							}
			}); 	
		
//ajax脚本结束	fullNode(nodePanel.id)
	}
 	 
 
  	function add(){
		try{
			var parentId = document.getElementById('parentid').value;
			var id = document.getElementById('newid').value;
			var text = document.getElementById('nodetext').value;
			var treeNodePanel=new TreeNodePanel();
			treeNodePanel.setTreeNodePanel(id,text);
			simpleTree.addTreeNode(parentId,treeNodePanel);
		} catch(e) {
			alert(e.message);
		}
	}
	
	
	//添加 同级目录
  	function addfuNode(){
		try{
			var parentId = document.getElementById('fujd').value;
			var id = document.getElementById('zijd').value;
			var text = document.getElementById('xlmc').value;
			var treeNodePanel=new TreeNodePanel();
			
	//ajax脚本开始------------------------------------------	
			$.ajax({
					type: &quot;POST&quot;,
					url: &quot;jcsjb_addnode&quot;,
					data: &quot;nodePanel=&quot;+ parentId+&quot;&amp;xlmc=&quot;+text,
					success: function(msg){
					              var ziid=jQuery.trim(msg);
								 
							treeNodePanel.setTreeNodePanel(jQuery.trim(msg),text);
							simpleTree.addTreeNode(parentId,treeNodePanel);
							//$(&quot;#xmnr&quot;).html(msg); 
							}
			}); 	
	//ajax脚本结束-------------------------------------
			
			
		} catch(e) {
			alert(e.message);
		}
	}
	
	//添加 子目录
  	function addziNode(){
		try{
			var parentId = document.getElementById('fujd').value;
			var id = document.getElementById('zijd').value;
			var text = document.getElementById('xlmc').value;
			var treeNodePanel=new TreeNodePanel();
			
	//ajax脚本开始------------------------------------------	
			$.ajax({
					type: &quot;POST&quot;,
					url: &quot;jcsjb_addnode&quot;,
					data: &quot;nodePanel=&quot;+ id+&quot;&amp;xlmc=&quot;+text,
					success: function(msg){
					
							treeNodePanel.setTreeNodePanel(jQuery.trim(msg),text);
							simpleTree.addTreeNode(id,treeNodePanel);
							  
							}
			}); 	
	//ajax脚本结束-------------------------------------
			
			
		} catch(e) {
			alert(e.message);
		}
	}	
	
        //删除节点	
 	  	function delNode(){
			try{
			     var  jied=document.getElementById(&quot;zijd&quot;).value;
				document.getElementById(jied).style.display=&quot;none&quot;;
			} catch(e) {
				alert(e.message);
			}
		} 	  	
		
		//保存节点
		function saveNode(){
			     var  jied=document.getElementById(&quot;zijd&quot;).value;
			     var  xlmc=document.getElementById(&quot;xlmc&quot;).value;
		 
	//ajax脚本开始------------------------------------------	
			$.ajax({
					type: &quot;POST&quot;,
					url: &quot;jcsjb_save&quot;,
					data: &quot;nodePanel=&quot;+ jied+&quot;&amp;xlmc=&quot;+xlmc,
					success: function(msg){
							alert(&quot;修改成功&quot;);	   
								//$(&quot;#xmnr&quot;).html(msg); 
							}
			}); 	
	//ajax脚本结束-------------------------------------
		}
	onload=function fullNode(a) 
{ 		
	 //ajax脚本开始------------------------------------------	
 
			$.ajax({
					type: &quot;POST&quot;,
					url: &quot;jcsjb_fullnode&quot;,
					data: &quot;no=0&quot;,
					success: function(msg){
 								eval(msg);
 							}
			}); 	
	 //ajax脚本结束-------------------------------------

} 
		
 			
&lt;/script&gt;
</pre>
<p>&nbsp;java 递归生成节点</p>
<pre name="code" class="java"> public String treeInfo(String fuNode )throws SQLException {
        /*
 		*   zr edit
 		*说明：用来生成javascript 创建树结构的脚本
 		*/
	 
 	
 		RecordSet rs =  getRecordSet(&quot;  select * from tablegy where name='&quot;+fuNode+&quot;'  order by id   &quot; );
 		String treePrint=&quot;&quot;;
         int   row=rs.rowCount();
		 
		 if(row==0)
		 {
			 return &quot;&quot;;
		 }
		 else
		 {
				for (int i=1; i&lt;=row; i++ ){
					treePrint=treePrint+&quot;node = new TreeNodePanel();	&quot;;
			        treePrint=treePrint+&quot;node.setTreeNodePanel(&quot;+rs.getValue(i,&quot;di&quot;)+&quot;,\&quot;&quot;+rs.getValue(i,&quot;name&quot;)+&quot;\&quot;);	&quot;;
					treePrint=treePrint+&quot;simpleTree.addTreeNode(&quot;+fuNode+&quot;,node);	&quot;;
			        treePrint=treePrint+treeInfo(rs.getString(i,&quot;id&quot;));
	
				
					//treePrint=treePrint+rs.getString(i,&quot;id&quot;)+&quot;; &quot;+treeInfo(rs.getString(i,&quot;id&quot;)); 
				} 
  		return treePrint  ;
		 
		 
		 }
 
}</pre>
<p>&nbsp;AJAX传值添加节点到数据库</p>
<pre name="code" class="java">/*省略*/</pre>
&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/181466#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 10 Apr 2008 21:51:01 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/181466</link>
        <guid>http://jinan.group.javaeye.com/group/blog/181466</guid>
      </item>
          <item>
        <title>大家如何看待美元贬值！</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/180676" style="color:red;">http://jinan.group.javaeye.com/group/blog/180676</a>&nbsp;
          发表时间: 2008年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近几年美元持续贬值已经不是什么新闻了！从06年底07年初美元兑人民币的汇率进入7时代以来，美元就从来没有坚挺过，当然这其中也有人民币升值的因素。昨天看了看汇率，美元兑人民币的6时代马上或者已经来到了，小弟手里有一点美元，考虑再三决定还是不兑换了，存了3个月，看看行情再说吧！心里盼着美元疲软贬值的年月也该结束了吧！就跟中石油一样，现在也稳定下来了，昨天收盘18块多！<br /><br />不知各位朋友怎么看待！<br /><br /><br /><span style="color: red">美国联邦储备委员会将于当地时间29日至30日召开货币政策会议。分析人士普遍认为，在本次会议上，美联储可能决定将联邦基金利率(即商业银行间隔夜拆借利率)下调25个基点，降至2%，并且有可能美国本轮降息周期将暂时告一段落。</span>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/180676#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Apr 2008 08:48:04 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/180676</link>
        <guid>http://jinan.group.javaeye.com/group/blog/180676</guid>
      </item>
          <item>
        <title>ASP网站每天出现垃圾数据的疑问！</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/179979" style="color:red;">http://jinan.group.javaeye.com/group/blog/179979</a>&nbsp;
          发表时间: 2008年04月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在一个asp的网站中，每天都会有大量的垃圾数据存入数据库中的一个表；这些数据都不是合法数据，但是asp页面中有js校验，他们似乎都是逃避了校验之后存入数据库的。 大家知不知道有没有这样的自动执行的程序，不通过前端页面直接往数据库中添加垃圾数据？ 象这种问题该如何解决呢？ 请有这方面经验的朋友指教！
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/179979#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 07 Apr 2008 09:14:53 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/179979</link>
        <guid>http://jinan.group.javaeye.com/group/blog/179979</guid>
      </item>
          <item>
        <title>web 地图杂谈</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/179288" style="color:red;">http://jinan.group.javaeye.com/group/blog/179288</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          做的一个网站中需要一个电子地图，姑且叫他web－gis吧！基本的实现机制是网页中的图片动态浏览，mapabc(也就是图盟：http://www.mapabc.com/)的网页地图应该也是基于这一机制实现的，google和百度的地图搜索都是mapbar提供的，当然我做的这个在功能方面和人家的还是差很多。去年，还差点决定到这家公司面试去那。<br /><br /><br />现在这个网站中的电子地图开始时也不是我自己写的，代码来自于一个俄罗斯人，使用了mootools工具包，我只是在他代码的基础上进行了功能和界面的修改和增补。地图图片是由很多小的图片组成的；也就是把一张大的地图图片，根据清晰度剪切成许多小的图片，再实时加载呈现出来。当地图上有拖拽、双击等操作时，也需要重新加载地图。你保存一下google地图，就可以看到这些剪切出来的小图片了。小图片的文件名称都是按照规则命名的，这样也是js加载图片的需要。在地图上添加标识，是在地图上添加一个div，之后在它上面添加一个标识图片；当然这个div也要响应地图的所有事件。将鼠标放在标识上方后出现提示框，点击提示框中的文字可以进行一些相关操作！这个提示框的实现也有很多例子！ 我不知道地图搜索部分是如何实现的，估计应该是通过要搜索的字符检索匹配的地点和地点坐标。通过页面上的菜单可以在的图上显示这些地方，清晰度可以控制的。现在还有一些细节方面的问题需要修改！最后一张是操作成功后用ExtJs做的信息提示框！<br /><br /><br /><img src="http://daoger.javaeye.com/upload/picture/pic/11146/66f63982-ee62-344f-a482-7bff970ec549.jpg" /><img src="http://daoger.javaeye.com/upload/picture/pic/11148/d687bcd5-9ec6-3254-bf44-1deff30716bd.jpg" /><br /><img src="http://daoger.javaeye.com/upload/picture/pic/11150/ad961622-fee4-35c5-9450-c67f2d642811.jpg" /><br /><br /><br />网上有一个比较成熟的开源的地图浏览器,网址是：http://www.mojavelinux.com/projects/gsiv/,初始版本的名字叫Giant Scalable Image Viewer (GSIV)，现在官方网站上又出现了一个版本Giant-Ass Image Viewer(GSV)。现在这个开源项目只是实现了图片的浏览，并且在IE下还有些问题。有兴趣的朋友可以研究一下！
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/179288#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 03 Apr 2008 15:37:44 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/179288</link>
        <guid>http://jinan.group.javaeye.com/group/blog/179288</guid>
      </item>
          <item>
        <title>推荐：dhtmlx系列js工具包</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/179236" style="color:red;">http://jinan.group.javaeye.com/group/blog/179236</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          很长时间不关注dhtmlx系列的东西了，今天做一个多选下拉菜单的时候无意间又到它的网站看了一下。网站现在已经改版了，工具包的系列也增加了不少，功能也完善增加了不少，相对于ExtJs庞大的框架级的代码量，dhtmlx现在只能算是工具包；不过，dhtmlx系列小、快、灵的特点无疑也是web开发的不错选择！<br /><br />dhtmlx现在的产品包括：dhtmlxTree(树型控件),dhtmlxTabbar(选项卡),dhtmlxGrid(数据表格),dhtmlxCombo(下拉选项),dhtmlxTreeGrid(树型表格),dhtmlxVault(文件上传控件),dhtmlxMenu(菜单),dhtmlxToolbar(工具条),dhtmlxCalendar(日历控件),dhtmlxFolders(展示台),dhtmlxColorPicker(调色板),dhtmlxWindows(窗口)。<br /><br />小：dhtmlx系列的产品，js文件都不怎么大；相对于ExtJs动辄几百KB的js文件来说，dhtmlx系列中最大的也不过100多KB；当然，Extjs是框架级的控件，功能全面。但是，往往开发中不需要用那些重量级的js框架时，dhtmlx系列就有了自己施展的舞台！<br /><br />快：dhtmlx系列上手比较容易，稍微熟悉js的人在短短的时间内就可以使用了，它的文档和API也比较全面详细，为开发者的使用提供了很好的帮助！还有，因为代码量小，运行速度也会快一些。<br /><br />灵：由于功能的分散，你可以根据需要取而用之；由于它没有基于别的工具包开发，所以适用于所有的开发环境。js的开发包(如jQyery、prototype、mootools等)，虽然能够使得js编程快速，但是他们之间不能通用，不同的项目之间会存在移植融合的困难。而使用dhtmlx系列，你完全不必有这方面的顾虑！<br /><br />数据交互方面基于ajax实现，通过xml实现数据传递。另外，我觉得dhtmlx中有些做的也比ExtJs也好，我对dhtmlxgrid还算熟悉；现在，dhtmlxgrid中的很多功能是ExtJs的grid中没有的。<br /><br />当然，js产品的使用，最终还是要看项目的需要，如果不想使用ExtJs这种大型框架的话，dhtmlx系列确实是一个不错的选择！<br />这是它的官方主页：http://www.dhtmlx.com. 感兴趣的朋友可以看一下！<br /><img src=" http://daoger.javaeye.com/upload/picture/pic/11140/5ce78977-757a-32e7-ae88-430274abb91d.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/179236#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 14:07:26 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/179236</link>
        <guid>http://jinan.group.javaeye.com/group/blog/179236</guid>
      </item>
          <item>
        <title>一个女生的爱情观</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/177646" style="color:red;">http://jinan.group.javaeye.com/group/blog/177646</a>&nbsp;
          发表时间: 2008年03月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          刚才无意中看到的，一个女生的爱情观，觉得写的不错，贴上来给朋友们看看：<br /><br /><span style="font-size: medium">好想有个男友,<br />为我做饭烧菜.<br /><br />现实却很无奈,<br />让我仍需等待.<br /><br />也因寂寞难耐,<br />谈过两次恋爱.<br /><br />谁知屡战屡败,<br />轻轻松松被踹.<br /><br />其实我也奇怪,<br />为啥总被淘汰.<br /><br />历尽打击伤害,<br />总算知道大概.<br /><br />我们这个年代,<br />注定缺少真爱.<br /><br />男人不是太花,<br />就是心胸狭隘.<br /><br />或许除此之外,<br />还有部分可爱.<br /><br />面对这种事态,<br />不要气急败坏.<br /><br />我们除了忍耐,<br />至少还能等待.<br /><br />只要相信真爱,<br />他就一定存在.<br /><br />要么咱就不爱,<br />爱就爱个痛快.<br /><br />没有爱的灌溉,<br />生活百无聊赖.<br /><br />只有好的心态,<br />才能保持愉快.<br /><br />爱情也有好赖,<br />绝对不可草率.<br /><br />我是愿意等待,<br />哪怕青春不在. </span>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/177646#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 29 Mar 2008 20:29:46 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/177646</link>
        <guid>http://jinan.group.javaeye.com/group/blog/177646</guid>
      </item>
          <item>
        <title>EXT AJAX XML 实践 </title>
        <author>zrmcsd</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zrmcsd.javaeye.com">zrmcsd</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/174088" style="color:red;">http://jinan.group.javaeye.com/group/blog/174088</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近用EXT的AJAX实现页面的增删改，感觉还不错，速度还是可以的。<br />     关于AJAX的提交参数 params个人感觉不必参照例子组成xml或json，直接组成字符串传给后台即可   <br /><pre name="code" class="javascript">
/*
 * Ext JS Library 2.0 RC 1
 * zrmcsd@gmail.com
 * 
 */

Ext.onReady(function(){
    Ext.QuickTips.init();

    function formatDate(value){
        return value ? value.dateFormat('M d, Y') : '';
    };
    var fm = Ext.form;

    var checkColumn = new Ext.grid.CheckColumn({
       header: "有效",
       dataIndex: 'indoor',
       width: 55
    });

    var cm = new Ext.grid.ColumnModel([{
           id:'doc_code',
           header: "文档编号",
           dataIndex: 'doc_code',
           width: 220,
           hidden: true, //    隐藏列    
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           id:'name',
           header: "名称",
           dataIndex: 'name',
           width: 200,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "说明",
           dataIndex: 'label',
           width: 150,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "菜单",
           dataIndex: 'price',
           width: 120,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "有效",
           dataIndex: 'youx',
           width: 120,
           editor: new fm.TextField({
               allowBlank: false
           })
        }
    ]);

    // sortable
    cm.defaultSortable = true;

    var Plant = Ext.data.Record.create([
           {name: 'doc_code', type: 'string'},
           {name: 'name', type: 'string'},
           {name: 'botanical', type: 'string'},
           {name: 'label'},
           {name: 'price', type: 'string'},             
           {name: 'youx', type: 'string'}
      ]);

    // create the Data Store
    var store = new Ext.data.Store({
        // 载入自动生成的XML文件   xml文件格式 uft-8
        url: 'moudlexml.jsp',

        reader: new Ext.data.XmlReader({
               record: 'plant'
           }, Plant),

        sortInfo:{field:'name', direction:'ASC'}
    });

    // create the editor grid
    var grid = new Ext.grid.EditorGridPanel({
        store: store,
        cm: cm,
        renderTo: 'editor-grid',
        width:600,
        height:300,
        autoExpandColumn:'name',
        title:'模块管理',
        frame:true,
        plugins:checkColumn,
       //clicksToEdit:10,//设置点击几次才可编辑
        selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据
        tbar: [{
            tooltip:'Add Plant',
            iconCls:'add',
            text: '添加行',
            handler : function(){
                var p = new Plant({
                    doc_code: '0',
                    name: '',
                    label:'',
                    price:'',
                    youx:'',
                    indoor: false
                });
                var n = grid.getStore().getCount();// 获得总行数 
                grid.stopEditing();
                store.insert(n, p);
                grid.startEditing(n, 0);
            }
        }, '-', {
            text:'删除行',
            tooltip:'remove ',
            iconCls:'remove',
            handler : function(){
              
                var rs1 = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                grid.stopEditing();
                if(rs1==undefined)
                {
                  return;//判断记录集是否为空，为空返回
                }
                
              Ext.MessageBox.confirm('确认删除', '你真的要删除所有用户信息吗?', 
                        function(btn) {
                            if(btn == 'yes') 
                            { 
                              // var rs1 = store.getAt(1);
                              store.remove(rs1);
                              
                            
                              grid.startEditing(0, 0); 
                              Ext.Msg.alert('友情提示','删除成功,很好很强大');
                            }
                            else
                            {
                              //Ext.Msg.alert('您成功修改了用户信息', "被修改 "+rs1.get("name") );// 取得用户名
                              Ext.Msg.alert('友情提示','很天真，怎么不删');
                            }
                        });
                        
             }
            
        },'-',{
            text:'保存',
            tooltip:'Save item',
            iconCls:'option'
        }]
    });

          // 单元格编辑后事件处理，暂不用
          grid.on("afteredit", afterEdit, grid);
        
          function afterEdit(e) {// 事件处理函数
              var record = e.record;// 被编辑的记录     
              Ext.Msg.wait("请等候", "修改中", "操作进行中..."); // 显示等待对话框
              // 更新界面, 来真正删除数据
              Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" + e.record.get(e.field) + "\n 修改的字段是:" + e.field);
          };    
          

//*****************************编辑窗口*****************************************************************
    var simple = new Ext.FormPanel({
        renderTo:'form-grid',//inner到哪个容器中
        labelWidth: 75, // label settings here cascade unless overridden
        url:'baododododododododo',
        frame:true,
        title: '编辑器',
        bodyStyle:'padding:5px 5px 0',
        width: 350,
        defaults: {width: 230},
        defaultType: 'textfield',

        items: [{
                fieldLabel: '名称',
                name: 'name_e',
                allowBlank:false
            },{
                fieldLabel: '菜单',
                name: 'label_e',
                allowBlank:false
            },{
                fieldLabel: '说明',
                name: 'price_e',
                allowBlank:false

            }, {
                fieldLabel: '是否有效',
                name: 'youx_e'
            }
        ],
              
        buttons: [{
            text: '保存',
            handler : function(){
            
                    
            
        Ext.Ajax.request({
            url : 'addrow.jsp' , 
            params :'action=edit&name='+Ext.getDom('name_e').value,
            method: 'GET',
            text: "Updating...",
            success: function ( result, request ) 
            { 
                    var rs1 = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                    var p = new Plant({
                        doc_code: '0',
                        name: Ext.getDom('name_e').value,
                        label:Ext.getDom('label_e').value,
                        price:Ext.getDom('price_e').value,
                        youx:Ext.getDom('youx_e').value ,
                        indoor: false
                    });
                    var n = store.indexOf(rs1);// 获得点击行的index 
                         
                    //本来想用替换方法 试了几次不爽 还是自己的增删吧              
                    store.insert( n  , p);
                    store.remove(rs1);
                    Ext.MessageBox.alert('访问成功', '数据返回的数据 '+ result.responseText); 
                  
                  
                  
            },
            failure: function ( result, request) 
            { 
                Ext.MessageBox.alert('访问失败', '失败了就没好说的了  (*^__^*) 嘻嘻……: '); 
            } 
        });
                      
                                       
            
            }
        },{
            text: '取消'
        }]
    });

    // 载入数据
    store.load();
    
        
            // 单元格单击后事件处理
        grid.on("click", clickedit, grid);
      
        function clickedit(e) {
          
          var rs1 = grid.getSelectionModel().getSelected();// 返回当前行的记录集
              //getDom 获取Dom元素的方法          
              Ext.getDom('name_e').value=rs1.get('name');  // 
              Ext.getDom('label_e').value=rs1.get('label');   // 
              Ext.getDom('price_e').value=rs1.get('price');  //说 
              Ext.getDom('youx_e').value=rs1.get('youx');    //是否有效
         
        };
    
});
 
   </pre>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/174088#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Mar 2008 13:29:47 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/174088</link>
        <guid>http://jinan.group.javaeye.com/group/blog/174088</guid>
      </item>
          <item>
        <title>痛苦的Solaris安装经历</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/173876" style="color:red;">http://jinan.group.javaeye.com/group/blog/173876</a>&nbsp;
          发表时间: 2008年03月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天因为工作需要一个Solaris9 sparc的环境，而公司里又没有系统管理员来做安装操作系统的工作，也没有了sun的技术支持，只好和同事一起体验了一把Solaris的安装过程，最终已失败结束……痛苦的一天啊。<br /><br />要装得机器是一台SunFire480。第一步从网上查文档，还算顺利，很快就找到了一个比较详细的说明。http://bbs.chinaunix.net/viewthread.php?tid=726394 。那就照着做了~<br /><br />一开始还比较顺利。遇到的第一个坎坷，是提示换光盘的时候，怎么也读不出盘来。后来总算找到了规律，这是必须把光盘放进去以后，等到光驱上的灯灭掉，才可以点击下一步，否则一定读不出盘来，这一步就耽误了半个小时左右~<br /><br />第二个坎坷就出大问题了。换盘以后solaris的安装界面上把一个“退出”的按钮放在了最醒目的位置。偶同事不小心点了一下，结果，没有任何提示的，安装过程就继续不下去了。一开始我们还不以为然，以为大不了重装一遍呗，但是~重启系统之后，竟然无法选择从光盘引导了！而网上又搜不到任何相关的资料<br />在尝试了无数次之后，才发现问题出在键盘和鼠标上。安装的机器带了一个类似笔记本上的带触摸板的键盘，还有一个sun的专用键盘。平时都是可以正常使用的。但安装操作系统时，sun的专用键盘必须在靠前的usb上加载才能起作用。<br /><br />结果到最后重试了一遍，步骤是都没错了，但安装到一半的时候又突然提示出错，说什么no packages were found in /cdrom/Solaris_9/product 此时已经过去了一整天了，放弃，收工~<br /><br />太累了 写的乱七八糟的，以后再整理吧~~~
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/173876#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 19 Mar 2008 20:00:01 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/173876</link>
        <guid>http://jinan.group.javaeye.com/group/blog/173876</guid>
      </item>
          <item>
        <title>华为老总任正非写给其公司患抑郁症员工的一封信</title>
        <author>mewleo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mewleo.javaeye.com">mewleo</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/170950" style="color:red;">http://jinan.group.javaeye.com/group/blog/170950</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>引用来源：<a href="http://www.cnbeta.com/articles/51190.htm">http://www.cnbeta.com/articles/51190.htm</a></p><p>&nbsp;</p><p>新闻来源:邮件传播<br />华为老总任正非写给其公司患抑郁症员工的一封信 <br />时间： 2008-3-10 下午3:30<br /><span style="font-size: large"><strong>要快乐的度过充满困难的一生</strong></span></p><p><span style="font-size: large"><strong>&mdash;&mdash;任总给陈珠芳及党委成员的一封信</strong></span><br /></p><p><span style="font-weight: bold">陈珠芳及党委成员： 　</span><br />　 <br />华为不断地有员工自杀与自残，而且员工中患忧郁症、焦虑症的不断增多，令人十分担心。有什么办法可以让员工积极、开放、正派地面对人生？我思考再三，不得其解. 　　 <br /><br />我们要引导员工理解、欣赏和接受习惯高雅的生活习惯与文化活动，使他们从身心上自己解放自己。这次我们不惜使用为客户提供的服务，作一次演示，让大家看到高雅的生活无处不在。这些生活场景、生活方式北京、上海已经比较多，只要你愿意多花一些钱就可以实现。 <br />&nbsp; <br />员工不能成为守财奴，不能成为金钱的奴隶，丰厚的薪酬是为了通过优裕、高雅的生活，激发人们更加努力去工作、有效的奋斗而服务的，不是使我们精神自闭、自锁。我们不要再把绅士风度、淑女精神当作资产阶级腐朽的东西，而自以粗鄙为荣。应该看到欧美发达国家的人民的自律，社会道德风尚是值得我们学习的。 <br />&nbsp; <br />欧美国家的人，<strong>大多数不嫉妒别人的成功</strong>，<strong>也不对自己的处境自卑</strong>，而且和谐相处。而且华为的员工有这个经济基础，有条件比国人先走一步，做一个乐观、开放、自律、正派的人，给周边做个表率。当前一部分华为人反映出来的现象，恰恰相反，令人不安。一部分员工，不知道自己的祖坟为什么埋得这么好，还是碰到了什么神仙，突然富有后，就不知所措了.有些人表现得奢侈，张狂，在小区及社会上表现出那种咄咄逼人，不仅自己，自己的家人也趾高气扬&hellip;&hellip;；<strong>一部分人对社会充满了怀疑</strong>的眼光，紧紧地捂着自己的钱袋子，认为谁都在打他的主意，对谁都不信任&hellip;&hellip;。 <br />&nbsp; <br />这些，都不是华为精神，这些人员不适合担任行政管理职位的，不管高低都不合适。他们所领导的团队一定萎靡不振。 　　 <br />我们引导员工懂得高雅的文化与生活，积极、开放、正派地面对人生。<strong>人生苦短</strong>，<strong>不必自己折磨自己</strong>。不以物喜，不以己悲。同时也要牢记，唯有奋斗才会有益于社会。人生是美好的，美好并非洁白无暇。任何时候，任何处境都不要对生活失去信心。有机会去北京，可以去景山公园看看，从西门进去，那儿是一片歌的海洋，热得象海啸一样奔放，这些都是垂暮之年的老人，几十人一族，几百人一团，都在放声歌唱，多么的乐观，多么的豁达。看看他们的夕阳红，你为什么不等到那一天？快乐的人生，无论处境多么困难，只要你想快乐一定会快乐。 　　 <br />&nbsp; <br /><strong>人是有差距的</strong>，<strong>要承认差距存在</strong>，一个人对自己所处的环境，要有满足感，不要不断的攀比。例如：有人少壮不努力，有人十年寒窗苦；有人读书万卷活学活用，有人死记硬背，一部活字典；有人清晨起早锻炼，身体好，有人老睡懒觉，体质差；有人把精力集中在工作上，脑子无论何时何地都像车轱辘一样的转，而有人没有做到这样。&hellip;&hellip;。 <br />待遇和处境能一样吗？你们<strong>没有对自己付出的努力有一种满足感</strong>，<strong>就会不断的折磨自己</strong>，和痛苦着，真是生在福中不知福。这不是宿命，宿命是人知道差距后，而不努力去改变。 　　 <br />&nbsp; <br />我不主张以组织的方式来实现员工的自我解放，而是倡导员工自觉自愿，自我娱乐，自己承担费用的方式来组织和参与各种活动。公司不予任何补贴，凡是补贴的，只要不再补贴了，这项活动就死亡了。&ldquo;青春之歌&rdquo;是一个好的名字，一歌、二歌&hellip;&hellip;五歌&hellip;&hellip;，各具特色，吸引不同性格与生活取向的人。其实就是各种俱乐部。员工在这些活动中，锻炼了自己，舒缓了压力，也进行了有效的沟通，消除自闭、自傲&hellip;&hellip;。 <br />只要这些活动不议论政治，不触犯法律，不违反道德规范，我们不去干预。一旦有违规，我们可以对有关员工免除其行政职务，以及辞退等方式来解决。总之释放员工的郁闷，应通过多种途径和管道来解决，靠组织是无能为力的。 　　 <br />&nbsp; <br />员工<strong>不必为自己的弱点而太多的忧虑</strong>，<strong>而是要大大地发挥自己的优点</strong>，使自己充满自信，以此来解决自己的压抑问题。我自己就有许多地方是弱项，常被家人取笑小学生水平，<strong>若我全力以赴去提升那些弱的方面</strong>，<strong>也许我就做不了CEO了</strong>，我是集中发挥自己优点的优势。组织也要把精力集中在发展企业的优点，发展干部、员工的优点上，不要聚焦在后进员工上。克服缺点所需要付出的努力，往往远远大于强化优点所需要付出的努力。只有建立自信，才会更加开放与合作，才会有良好的人际关系。而员工往往不知道这一点。有一些员工工作干得好好的，正在出成绩的时候，不相信实践中会出真知、出将军，突然一下子要去考研，以使自己得到全面发展。 <br />&nbsp; <br />当然，当他满副武装归来的时候，正好碰上我们打扫战场。要因势利导，使他们明白奋斗的乐趣，人生的乐趣。不厌恶生活。费敏、徐直军他们经常周末、深夜一大批人喝茶（务虚会），谈谈业务，谈谈未来，沟通沟通心里的想法，这种方法十分好。我们的主管何不妨每月与自己的下属或周边喝喝茶，明确传达一下自己对工作的理解和认识，使上、下都明白如何去操作。不善于沟通的人，是难做好行政主管的。 　　 <br />&nbsp; <br />我曾经想写一篇文章&ldquo;快乐的人生&rdquo;，以献给华为患忧郁症、焦虑症的朋友们，但一直没有时间。我想他们应去看一看北京景山公园的歌的海洋，看看丽江街上少数民族姑娘的对歌，也许会减轻他们的病情。我也曾是一个严重的忧郁症、焦虑症的患者，在医生的帮助下，加上自己的乐观，我的病完全治好了。 　　 <br /><br />我相信每一个人都能走出焦虑症和忧郁症的困境的！</p>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/170950#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 13 Mar 2008 20:16:05 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/170950</link>
        <guid>http://jinan.group.javaeye.com/group/blog/170950</guid>
      </item>
          <item>
        <title>程序员要注意的人格障碍</title>
        <author>mewleo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mewleo.javaeye.com">mewleo</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/170516" style="color:red;">http://jinan.group.javaeye.com/group/blog/170516</a>&nbsp;
          发表时间: 2008年03月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          引自cnBeta.com http://www.cnbeta.com/articles/51085.htm<br /><br />人格障碍的多种类型<br /><br />世界卫生组织的《ICD-10》将人格障碍分为8种类型,即偏执型、分裂样型、社交不良型、情绪不稳型、表演型、强迫型、焦虑型和依赖型.我国则仅分6型.现分述如下:<br /><br />(一)偏执型人格障碍.主要特点是敏感多疑,容易与人产生对立.这种人格很多,但发生率很难调查,男性多于女性.主要是对别人有一种普遍的、无法理解的多疑倾向,认为别人总是在贬低或威胁自己,对自己不公平.<br /><br />(二)分裂型人格障碍.主要特点是孤独,与别人没有什么亲密的关系.喜欢单独行动,缺乏热烈的情绪表现.对恋爱也缺乏热情.<br /><br />(三)社交不良型人格障碍.亦称为反社会型人格障碍,其主要特征是不断出现违犯法纪或犯罪行为,但不等于有意的犯罪,而主要是由于在人格发展过程中未能养成公德心,不能遵纪守法之故.<br /><br />(四)冲动型人格障碍又称为攻击型或暴发型人格,主要特征是行为冲动,会引起严重或较严重的后果.这种行为如果受到劝阻时甚至可产生攻击行为或自我攻击(自伤).情绪不稳,喜恕无常,生活缺乏安排和打算.<br /><br />(五)表演型人格障碍. 这种性格的特征是情绪表达带有高度夸张色彩,引人注意,就像在舞台上表演一样.暗示性很强,很容易受别人或环境的影响.感情表达虽然很热烈,但不持久,肤浅易变.表演型性格又称为歇斯底里性格,也称为幼稚型性格.<br /><br />(六)强迫型人格障碍.这种人格的特征是要求一切都有条不紊、十全十美,要求自己和别人都遵守各种规则,甚至各种细节,非常刻板和固执.
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/170516#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Mar 2008 13:51:40 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/170516</link>
        <guid>http://jinan.group.javaeye.com/group/blog/170516</guid>
      </item>
          <item>
        <title>Trimpath-Junction</title>
        <author>mewleo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mewleo.javaeye.com">mewleo</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/164378" style="color:red;">http://jinan.group.javaeye.com/group/blog/164378</a>&nbsp;
          发表时间: 2008年02月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这个基于Helma服务器的MVC框架值得我们学习，因为从里面我感觉到了真正的M,V还有C。<br /><br />另外，JavaScript也是今年的重点修炼科目，排在as3前面。<br /><br />用这些技术要实现一点东东，但是要偷偷的。<br /><br />曾经与一个网友简单的说起这个东东，他居然说在哪听过，看来有其他的朋友已经发现了，<br />但是我还要继续保密。<img src="/images/smiles/icon_arrow.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/164378#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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 Feb 2008 23:43:02 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/164378</link>
        <guid>http://jinan.group.javaeye.com/group/blog/164378</guid>
      </item>
          <item>
        <title>windows和linux下进入脚本所在目录的命令</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/163643" style="color:red;">http://jinan.group.javaeye.com/group/blog/163643</a>&nbsp;
          发表时间: 2008年02月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          编写一些批处理命令时，有时会遇到必须首先进入到当前批处理文件所在的目录的情况，否则不再此目录下执行此批处理可能会导致路径的混乱。稍总结了一下：<br />Windows下的批处理：<br /><pre name="code" class="java">cd /d %~dp0</pre><br />%~dp0表示此批处理的目录，/d表示切换目录的同时也切换盘符。<br />Linux下shell：<br /><pre name="code" class="java">cd `dirname $0` ; pwd</pre>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/163643#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 20 Feb 2008 15:27:40 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/163643</link>
        <guid>http://jinan.group.javaeye.com/group/blog/163643</guid>
      </item>
          <item>
        <title>在iframe中进行dom编程的一点问题</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/160729" style="color:red;">http://jinan.group.javaeye.com/group/blog/160729</a>&nbsp;
          发表时间: 2008年01月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在一个页面A中嵌入了一个iframe，现在需要在iframe的链接页面B中操作页面A中的一个元素，如下示例：<br /><pre name="code" class="javascript">
var logindiv = window.parent.document.getElementById("login");
			var reload = "${reload}";
			if(reload.length>0&&reload=="true")
			{
				logindiv.innerHTML = "";
				var logoutLink = document.createElement("a");
				logoutLink.href = "login?action=logout";
				logoutLink.appendChild(document.createTextNode("Logout"));
				logindiv.appendChild(logoutLink );
			}

</pre><br />原来在同一页面中进行这样的类似操作是对的，但是刚才试了一下不行，浏览器提示有参数错误。 <br />使用js进行DOM编程的时候，我知道不同浏览器对元素内容的判定是有区别的，比如同样是一个div元素，这样写"&lt;div>&lt;/div>";在ie中，div标签下是没有内容的，但是在firefox下div标签下的内容长度是1，因为firefox把空格也当成一个节点来处理。所以，进行清空元素内容操作时，在ie中<br /><pre name="code" class="javascript">
var olength= object.childNodes.length;
with (object) {
    for (var j = 0; j &lt; olength; j++) {
        removeChild(children[0]);
    }
}
</pre><br />这样操作是正确的，但是在firefox下有找不到清除对象的问题，为了兼容我一般都是采用object.innerHTML = ""的做法，当然这样做会使运行效率有所降低。<br /><br />但是，这里我就有点不明白了，难道frame之间进行dom操作时也会有冲突出现？最后还是采用innerHTML解决了问题：<br /><pre name="code" class="javascript">
var logindiv = window.parent.document.getElementById("login");
			var reload = "${reload}";
			if(reload.length>0&&reload=="true")
			{
			    logindiv.innerHTML = "&lt;a href='login?action=logout'>Logout&lt;/a>";
			}

</pre><br /><br /><br /><br />晕死了，window.parent.document 对象创建链接，这样才对！
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/160729#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 31 Jan 2008 15:08:07 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/160729</link>
        <guid>http://jinan.group.javaeye.com/group/blog/160729</guid>
      </item>
          <item>
        <title>InstallAnyWhere自动化制作安装包的知识</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/160397" style="color:red;">http://jinan.group.javaeye.com/group/blog/160397</a>&nbsp;
          发表时间: 2008年01月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>利用Install from Manifest Action隔离文件的变化</strong><br />发现InstallAnyWhere提供了一个名为Install from Manifest的Action来解决安装包内会有频繁文件变更的情况。使用方法为：<br /><br />1.        在工程中只添加了安装操作相关联的文件。运行平台添加了需要建立快捷方式的文件（如startup.bat文件）和需要安装以后进行文件内容修改的文件。<br /><br />2.        建立要拷贝的文件内容列表，可以是目录的形式。如运行平台的文件只需要下面一行来表示：<br /><br />D,$IA_PROJECT_DIR$/resource/src/,./<br /><br />其中，"D,"表示这一行对应的是一个目录。文件则为"F"；"$IA_PROJECT_DIR$/resource/src/"对应源目录，"./"对应这些文件要在安装后拷贝到什么地方，"./"表示拷贝到用户安装时选择的安装目录的根目录下。<br /><br />3.        添加一个Install from Manifest的action。选择它的Manifest File为刚才编写的文件。<br /><br />4.        如果刚才的文件列表中包含了在安装包工程中指定的文件，则在此action的最下方选择Never overwrite。<br /><br />此Action的详细用法可以参考帮助内对应的文档。<br /><br />这样，如果安装包内有文件新增、删除了，不用再修改安装包的工程文件，直接build即可。<br />利用Ant来build安装包<br /><br /><strong>InstallAnyWhere的工程的build过程可以设置为ant任务</strong>，用ant来构建生成安装包。这需要生成多个安装包的场景来说很方便。具体的做法为：<br /><br />1.        将installanywhere安装目录下的iaant.jar放置到ant的lib目录下。<br /><br />2.        编辑build.xml文件。其中定义任务的语句如下，其中指定了installanywhere的安装目录、安装包工程的位置、要生成的安装包的位置、要Build出来的操作系统等。<br /><br />&lt;taskdef name="buildinstaller" classname="com.zerog.ia.integration.ant.InstallAnywhereAntTask"/><br /><br />具体的任务为<br /><br />&lt;target name="buildOne"><br /><br />&lt;buildinstaller<br /><br />   IAlocation="E:\Program Files\Macrovision\InstallAnywhere 7.1 Enterprise"<br /><br />    IAProjectFile="..\..\InforSuite.iap_xml"<br /><br />   InstallerStdErrRedirect="C:<br />console.txt"<br /><br />   InstallerStdOutRedirect="C:<br />console.txt"<br /><br />   AutoPopulateLabels="false"<br /><br />    BuildOutputLocation=".\OutPut\"<br /><br />   BuildLinuxWithVM="true"<br /><br />   BuildLinuxWithoutVM="false"<br /><br />   BuildHPUXWithVM="false"<br /><br />   BuildHPUXWithoutVM="false"<br /><br />   BuildAIXWithVM="false"<br /><br />   BuildAIXWithoutVM="false"<br /><br />    BuildSolarisWithVM="false"<br /><br />   BuildSolarisWithoutVM="false"<br /><br />   BuildNamedUnixWithVM="false"<br /><br />   BuildNamedUnixWithoutVM="false"<br /><br />   BuildWindowsWithVM="true"<br /><br />   BuildWindowsWithoutVM="false"<br /><br />   BuildMacClassicWithVM="false"<br /><br />   BuildMacClassicWithoutVM="false"<br /><br />   BuildMacOSX="false"<br /><br />   BuildPureJava="false"<br /><br />    /><br /><br />&lt;/target><br /><br />具体的设置可以参考帮助中对应的文档。<br /><br />和ant集成后，可以利用ant做一些其他的操作，如zip文件的解压、文件的拷贝、文件内容的修改等，可以让安装包的制作自动化程度更高。
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/160397#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 30 Jan 2008 15:33:16 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/160397</link>
        <guid>http://jinan.group.javaeye.com/group/blog/160397</guid>
      </item>
          <item>
        <title>测试用例管理工具比较</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/160368" style="color:red;">http://jinan.group.javaeye.com/group/blog/160368</a>&nbsp;
          发表时间: 2008年01月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal"><span style="font-family: 宋体">测试用例管理工具整理：</span></p>

<p class="MsoNormal"><span>&nbsp;</span></p>

<table border="1" cellspacing="0" cellpadding="0" width="586" class="MsoTableGrid" style="border: medium none ; width: 439.4pt; border-collapse: collapse">
 <tbody><tr>
  <td width="125" valign="top" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span style="font-family: 宋体">工具名</span></p>
  </td>
  <td width="114" valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span style="font-family: 宋体">综述</span></p>
  </td>
  <td width="117" valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p class="MsoNormal"><span style="font-family: 宋体">优点</span></p>
  </td>
  <td width="115" valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">缺点</span></p>
  </td>
  <td width="115" valign="top" style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">备注</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>TestManager</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span>Rational</span><span style="font-family: 宋体">测试解决方案中推荐的测试用例管理工具。</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">功能强大。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">文件夹形式的管理，可以对测试用例无限分级。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">可以和</span><span>Rational</span><span style="font-family: 宋体">的测试工具</span><span>robot</span><span style="font-family: 宋体">、</span><span>functional</span><span style="font-family: 宋体">相结合。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">有测试用例执行的功能，但必须先生成对应的手工或自动化脚本。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">本地化支持不好。汉字显示太小。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例很多时不太稳定。有时会造成测试用例的丢失。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">必须安装客户端才可使用。和开发人员交流不方便。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例的展示形式单一。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>Wiki</span></p>
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span style="font-family: 宋体">使用</span><span>wiki</span><span style="font-family: 宋体">做测试用例的管理工具。</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Web</span><span style="font-family: 宋体">界面形式，交流方便。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例的展示形式多样，可以贴图。可以进行格式化的编辑。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Wiki</span><span style="font-family: 宋体">提供测试用例的版本控制、版本比较功能。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Wiki</span><span style="font-family: 宋体">提供测试用例的添加注释（评论）功能，方便测试用例评审。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>5.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Wiki</span><span style="font-family: 宋体">本身强大的全文索引功能。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>6.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">可以任意为测试用例添加标签。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Wiki</span><span style="font-family: 宋体">并不是专业的测试用例管理工具。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">无法和其他测试工具集成。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例的统计不方便。需要编写专门的程序。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">没有测试用例的执行跟踪功能。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>5.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">有一些</span><span>wiki</span><span style="font-family: 宋体">本身的限制，如不同产品的测试用例名也不能重复。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>6.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">目前还没有定制统一的模板</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span>Wiki</span><span style="font-family: 宋体">本身有多种实现，这儿列出的是</span><span>Confluence wiki</span><span style="font-family: 宋体">。其他的</span><span>wiki</span><span style="font-family: 宋体">可能没有优点中列出来的某些功能。</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>Bugzilla+Test Runner</span></p>
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span style="font-family: 宋体">开源的测试管理解决方案，有很多开源软件使用此方式管理。</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">开源免费。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Web</span><span style="font-family: 宋体">方式的管理界面。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">自动邮件提醒。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">和缺陷管理系统</span><span>Bugzilla</span><span style="font-family: 宋体">结合紧密。有测试用例执行管理。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>5.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例可以分优先级。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>6.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例可以有评审的功能。（测试用例有不同的状态）</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">安装设置较繁琐。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">没有配置过的经验。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">测试用例的编写上必须按照一个步骤对应一个验证点的形式来编写。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">听说后来</span><span>Test
  Runner</span><span style="font-family: 宋体">升级后名字改为了</span><span>Testopia</span><span style="font-family: 宋体">，没有常试过。</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>TestDirector</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">和</span><span>Rational</span><span style="font-family: 宋体">测试系列其名的测试管理工具，功能强大。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Web</span><span style="font-family: 宋体">方式的界面。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">有测试用例执行跟踪的功能。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">有灵活的缺陷定制。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>5.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">和自身的缺陷管理工具紧密集成。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>6.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">界面较友好。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span>1</span><span style="font-family: 宋体">、每个项目库同时在线人数有限制（具体个数忘记了）</span></p>
  <p class="MsoNormal"><span>2</span><span style="font-family: 宋体">、可能存在部分不稳定性，但是基本功能没有问题</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">没有配置过的经验。不了解其具体的一些特征。</span></p>
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span style="font-family: 宋体">新版</span><span>CQ </span><span style="font-family: 宋体">（</span><span>7.0</span><span style="font-family: 宋体">）</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span style="font-family: 宋体">新版本的</span><span>CQ</span><span style="font-family: 宋体">中增加了测试用例管理的功能。</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">和</span><span>cq</span><span style="font-family: 宋体">的缺陷管理紧密结合。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">可以使用</span><span>cq</span><span style="font-family: 宋体">强大的查询和图表功能。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Eclipse</span><span style="font-family: 宋体">的界面，较为笨重，需要安装。不知道有没有</span><span>web</span><span style="font-family: 宋体">形式的界面。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">看过演示，没有实际用过。</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>TestLink</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span>Web</span><span style="font-family: 宋体">方式的界面。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">和</span><span>bugzilla</span><span style="font-family: 宋体">缺陷管理工具的整合</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>3.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">可以自定义和其他缺陷管理工具的整合。</span></p>
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>4.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">同时具有需求管理的功能。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p style="margin-left: 18pt; text-indent: -18pt" class="MsoNormal"><!--[if !supportLists]--><span><span>1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span style="font-family: 宋体">没有配置过的经验。不了解其具体的一些特征。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">没有实际用过，只看过网上的一些介绍。</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>Excel</span><span style="font-family: 宋体">形式</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span style="font-family: 宋体">适合小型项目。</span></p>
  <p class="MsoNormal"><span style="font-family: 宋体">如果充分利用</span><span>excel</span><span style="font-family: 宋体">的功能也可适合大型项目</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p class="MsoNormal"><span style="font-family: 宋体">依托</span><span>Excel</span><span style="font-family: 宋体">本身的强大功能。</span></p>
  <p class="MsoNormal"><span style="font-family: 宋体">很灵活，易于扩展。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">将来的维护等较麻烦。</span></p>
  <p class="MsoNormal"><span style="font-family: 宋体">统计、度量等也不方便。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
 </tr>
 <tr>
  <td width="125" valign="top" style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 93.5pt">
  <p class="MsoNormal"><span>Word</span><span style="font-family: 宋体">形式</span></p>
  </td>
  <td width="114" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 85.3pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
  <td width="117" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 87.8pt">
  <p class="MsoNormal"><span style="font-family: 宋体">依托</span><span>Word</span><span style="font-family: 宋体">本身的强大功能。</span></p>
  <p class="MsoNormal"><span style="font-family: 宋体">很灵活，易于扩展。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span style="font-family: 宋体">不如</span><span>excel</span><span style="font-family: 宋体">格式统一</span></p>
  <p class="MsoNormal"><span style="font-family: 宋体">不如</span><span>excel</span><span style="font-family: 宋体">容易统计。</span></p>
  </td>
  <td width="115" valign="top" style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 86.4pt">
  <p class="MsoNormal"><span>&nbsp;</span></p>
  </td>
 </tr>
</tbody></table>

<p class="MsoNormal"><span>&nbsp;</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/160368#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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 Jan 2008 13:39:04 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/160368</link>
        <guid>http://jinan.group.javaeye.com/group/blog/160368</guid>
      </item>
          <item>
        <title>发现一个比较好用的任务管理软件，todolist</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/158556" style="color:red;">http://jinan.group.javaeye.com/group/blog/158556</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用了两天，感觉还算顺手。资源占用不高，界面也算漂亮。在任务比较多的时候可以帮助自己理清哪些该先做哪些该后做。<br />介绍见<br /><a href="http://www.appinn.com/todolist/" target="_blank">http://www.appinn.com/todolist/</a>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/158556#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 23 Jan 2008 10:42:01 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/158556</link>
        <guid>http://jinan.group.javaeye.com/group/blog/158556</guid>
      </item>
          <item>
        <title>性能调整</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/155231" style="color:red;">http://jinan.group.javaeye.com/group/blog/155231</a>&nbsp;
          发表时间: 2008年01月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发个在公司做技术交流的ppt……，关于性能调整方面的<br />很不成熟，大家多指教……<br />不过就是靠这个，俺们公司的inforflow工作流在客户现场的性能测试中结果远远超过了bea的AquaLogic BPM Suite和ibm的WebSphere Process Server 嘎嘎嘎<br /><br /><img src="/images/smiles/icon_smile.gif"/>而且还拿了几个奖品~1张100的充值卡，一本tcp/ip详解的书，一个泰迪熊 哈哈
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/155231#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 12 Jan 2008 11:10:12 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/155231</link>
        <guid>http://jinan.group.javaeye.com/group/blog/155231</guid>
      </item>
          <item>
        <title>迁移至WebSphere+DB2中遇到的问题</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/150483" style="color:red;">http://jinan.group.javaeye.com/group/blog/150483</a>&nbsp;
          发表时间: 2007年12月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          工作中需要把一个原来在weblogic+oracle的程序迁移到websphere+db2环境下。折腾了好久，在这里简单做个总结吧：<br />因为应用是用spring+hibernate写的，迁移的过程中没遇到任何障碍。问题发生在做性能测试的时候,发现原来在weblogic+oracle可以承受1000+并发用户的程序，现在竟然有2个并发用户也会出错！<br />然后就是痛苦的调试过程。出现了问题后查日志很快发现原因是数据库死锁，可是无论如何调节db2相关的一些参数，都没有什么改进。网上也有说此问题可能和db2默认的事务级别较高有关，但调整事务级别后仍然死锁。<br />解决问题的第一个转折出现在数据库的索引上，一开始我们按oracle的习惯，在数据量很小的时候加不加索引结果都是相似的，所以在db2上也没有加索引。不过事实证明这是错误的，在db2上增加了使用到的索引后，问题得到了显著改善，在并发用户达到100的时候，出现死锁的几率也不大。但问题仍然没有完全解决，当并发用户上升到200时，系统仍然很容易死锁掉。<br />后来猜测，原因是db2不能承受很高的绝对并发，那解决问题的思路就是想办法把db2的绝对并发给降下来。这样，调整了一下websphere的数据池和线程池，将最大数都降低到分别为8和10。调整后再测试，可以轻松的上500+的并发用户了，而且性能比刚才还有所提高。<br /><br />这件事中得到的最大的教训就是，想要让系统承受更高的并发用户量，解决方法不一定要增加数据池和线程池的大小。有时候降低它们的值反而会得到更好的结果，具体的值应该设置为多少还是需要经过性能测试才能确定。<br /><br />至于db2为什么只能承受这么低的绝对并发，还没有找到解决的办法，可能还是设置上的一些原因吧。
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/150483#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Dec 2007 15:16:12 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/150483</link>
        <guid>http://jinan.group.javaeye.com/group/blog/150483</guid>
      </item>
          <item>
        <title>Confluence Wiki</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/149857" style="color:red;">http://jinan.group.javaeye.com/group/blog/149857</a>&nbsp;
          发表时间: 2007年12月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用了一段时间的Confluence Wiki了。感觉它的功能还是很强大的。对中文支持很好，里面的页面既可以用传统的目录方式分类，也可以用标签方式分类。同时还有强大的全文检索功能，甚至可以检索附件中word和excel文档中的词语。对页面有版本管理的功能，可以比较不同版本之间的差异。还可以通过插件扩充功能。真是一种很好的知识管理软件……<br /><br />因为工作中需要对Confluence Wiki的页面做统计，而它本身又没有提供这方便的功能。所以研究了下它的数据库中的几个表，记录如下：<br /><strong>表content存放了页面的基本信息。</strong><br />列CONTENTID为主键id。格式为整型，不会自动生成，需要手动指定，且此页的子页面的id必须大于它的id。<br />列CONTENTTYPE为页面的类型，普通页面都为"PAGE"。<br />列TITLE为页面的标题。<br />列VERSION为页面的版本，对于新增的页面都为"1"。<br />列CREATOR为页面的创建者。<br />列CREATIONDATE为页面创建时的日期时间。<br />列LASTMODIFIER为最后一次修改的用户。<br />列LASTMODDATE为最后一次修改的时间。<br />列VERSIONCOMMENT/PREVVER为版本控制相关的内容，可以设为null。<br />列CONTENT_STATUS统一设为current。<br />列SPACEID为页面所在空间的空间id号，和表spaces中的列SPACEID对应。<br />列PARENTID为父页面的id，如果为第一级则设为null。<br />列MESSAGEID/PAGEID/PARENTCOMMENTID/USERNAME与普通页面无关，可都设为null。<br /><strong>表bodycontent存放了页面的具体内容。</strong><br />列BODYCONTENTID为表的主键id。<br />列BODY为页面的具体内容。（使用wiki标记存储）<br />列CONTENTID同表content中的列CONTENTID对应。<br /><strong>表confancestors存放了页面之间的树形关系</strong><br />列DESCENDENTID为页面的id,同content.CONTENTID相对应。<br />列ANCESTORID为当前级别上此页面的父页面的id<br />列ANCESTORPOSITION为当前级别<br />比如空间的home页id为65539，其下有1个页面id为10000，此页面下又有一个页面id为10001，那此表里应该有如下记录：<br />10000,65539,0<br />10001,65539,0<br />10001,10000,1<br /><br /><strong>几个可能有用的sql:</strong><br />查询所有非底层页面的页面<br /><pre name="code" class="java">select * as contentid from CONFANCESTORS</pre><br />查询某个页面下所有底层页面的个数<br /><pre name="code" class="java">select count(DESCENDENTID) from confancestors where confancestors.ANCESTORID=某id and DESCENDENTID not in (select ANCESTORID as contentid from CONFANCESTORS)</pre>
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/149857#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 21 Dec 2007 09:35:35 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/149857</link>
        <guid>http://jinan.group.javaeye.com/group/blog/149857</guid>
      </item>
          <item>
        <title>Linux和Unix下新建、删除环境变量的脚本</title>
        <author>sdyouyun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sdyouyun.javaeye.com">sdyouyun</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/148251" style="color:red;">http://jinan.group.javaeye.com/group/blog/148251</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          建立环境变量的脚本。变量建立在当前用户的配置文件里，XXX_HOME为要建立的变量名，tochage为变量值。<br /><br /><pre name="code" class="java">
cd ~
XXX_HOME=tochage
export XXX_HOME
if [ -f ".bash_profile" ]
then
	echo "">>.bash_profile
	echo "XXX_HOME=$XXX_HOME">>.bash_profile
	echo "export XXX_HOME">>.bash_profile
elif [ -f ".bash_login" ]
then
	echo "">>.bash_login
	echo "XXX_HOME=$XXX_HOME">>.bash_login
	echo "export XXX_HOME">>.bash_login
else
	echo "">>.profile
	echo "XXX_HOME=$XXX_HOME">>.profile
	echo "export XXX_HOME">>.profile
fi</pre><br /><br />删除环境变量的脚本（从当前用户的配置文件里删除）<br /><pre name="code" class="java">
cd ~
unset XXX_HOME

if [ -f ".bash_profile" ]
then
    sed '/XXX_HOME/d' .bash_profile > .bash_profile.tempforinforsuite
    cat .bash_profile.tempforinforsuite > .bash_profile
elif [ -f ".bash_login" ]
then
    sed '/XXX_HOME/d' .bash_login > .bash_login.tempforinforsuite
    cat .bash_login.tempforinforsuite > .bash_login
else   
    sed '/XXX_HOME/d' .profile > .profile.tempforinforsuite
    cat .profile.tempforinforsuite > .profile
fi
</pre><br /><br />虽然很简单，但写这个脚本的时候还是学到了些东西。比如一般的用户的配置文件可能分.bash_profile、.bash_login、.profile这几种，以及用<span style="color: red">sed '/某字符串/d' 文件名</span>可以删除文件中包含某个字符串的行，将结果输出到屏幕上（不会直接写文件）。另外，如果此时直接将内容重定向回要操作的文件，可能会导致文件内容丢失。所以可以先把内容保存到一个临时文件里，然后在覆盖要操作的文件。
          <br/>
          <span style="color:red;">
            <a href="http://jinan.group.javaeye.com/group/blog/148251#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 10:13:48 +0800</pubDate>
        <link>http://jinan.group.javaeye.com/group/blog/148251</link>
        <guid>http://jinan.group.javaeye.com/group/blog/148251</guid>
      </item>
          <item>
        <title>javascript实现日期操作的工具包</title>
        <author>daoger</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://jinan.group.javaeye.com/group/blog/148066" style="color:red;">http://jinan.group.javaeye.com/group/blog/148066</a>&nbsp;
          发表时间: 2007年12月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近一个小项目中用到了dwr，其中使用到了日期型数据；查了一下dwr的中文文档，上面推荐的日期型数据的工具包不错，贴在这里和大家分享，哈！<br />这是这个工具包的网站：<a href="http://www.mattkruse.com/javascript/date/" target="_blank">http://www.mattkruse.com/javascript/date/</a>，当然上面还有很多工具包来！<br />工具包的代码：<br /><pre name="code" class="java">
// ===================================================================
// Author: Matt Kruse &lt;matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

// HISTORY
// ------------------------------------------------------------------
// May 17, 2003: Fixed bug in parseDate() for dates &lt;1970
// March 11, 2003: Added parseDate() function
// March 11, 2003: Added "NNN" formatting option. Doesn't match up
//                 perfectly with SimpleDateFormat formats, but 
//                 backwards-compatability was required.

// ------------------------------------------------------------------
// These functions use the same 'format' strings as the 
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
// 
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x&lt;0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length &lt; 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format &lt; format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format &lt; format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { res