<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>开源设计组</title>
    <description>欢迎开源作者及爱好者们一起探讨通用组件设计理念 -- QQ群：38918204</description>
    <link>http://opendesign.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>加入对YAML数据格式的支持</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/210115" style="color:red;">http://opendesign.group.javaeye.com/group/blog/210115</a>&nbsp;
          发表时间: 2008年07月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CommonTemplate(<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>)从0.8.4版本支持XML,JSON,Properties三种数据格式的数据加载，在此基础上引入了<a href="http://www.yaml.org" target="_blank">YAML</a>数据格式。<br /><br />YAML是Ruby默认采用的配置格式，语法非常简洁。<br /><a href="http://www.commontemplate.org/zh/viewer.html" target="_blank">http://www.commontemplate.org/zh/viewer.html</a><br />(4)YAML数据格式:<br />语法：冒号表示对象属性，横线表示数组项，引号表示字符串(单词引号可省)。<br />举例：<br /><pre name="code" class="java">
mail:
  from: "xxx@xxx.com"
  to: "yyy@yyy.com"
users:
  - id: 1
    name: james
  - id: 2
    name: kent
</pre><br /><br />另外，已将数据格式抽取为扩展点，扩展类只需实现接口：<br />org.commontemplate.standard.directive.data.DataProvider<br />并在commontemplate.properties中注册：<br />dataProvider{xxx}=com.xxx.XXXDataProvider<br />就可以使用：<br />$data{"xxx"}<br />xxxx<br />$end<br />以及：<br />test.xxx后缀的数据查找方式。
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/210115#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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>Tue, 01 Jul 2008 12:41:36 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/210115</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/210115</guid>
      </item>
      <item>
        <title>CommonTemplate发布0.8.4版本</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/207465" style="color:red;">http://opendesign.group.javaeye.com/group/blog/207465</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CommonTemplate发布0.8.4版本. 项目地址: <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a><br />此版本主要加强周边辅助工具的开发. 如: 调试器,查看器,编辑器等.<br />其中编辑器功能未全部完成, 待下一版本继续实现.<br /><br />更新日志:<br />加强各DriectiveHandler的单元测试.<br />修复不解释块"$! !$"状态机图的BUG, 并全面整理状态机图.<br />采用Jericho实现属性语法外套.<br />完成Debug拦截器, 实现单步执行.<br />完成Debug单步调试窗口,可通过脱离于编辑器的GUI进行单步调试.<br />完成查看器功能, 双击*.ctl文件，自动读取数据文件，解析模板，生成html，并用IE打开，如果出错，使用Swing界面弹出错误信息, 使页面开发人员独立于业务开发进行模板测试。<br />完成$snatch指令的实现, $snatch{"../list.jsp"}, $snatch{"/list.jsp", 'UTF-8'}, $snatch{"http://www.163.com"}<br />修复当$break, $continue 没有表达式时的处理, 即: 支持 $if{xxx} $break $end, 不再需要写成 $if{xxx} $break{true} $end.<br />修改VariableStorage为弱检查方式, 去掉DefiendExceptionUndefiendException.<br />将VariableResolver的lookupVariable改成getVariable, 隐藏实现方式意图.<br />将MessageSource和Logger移出core包, 放入standard包中实现.<br />Context加入各属性的setter方法, 以及EventListener添加方法等. <br />增加数字转换为中文: 如: ${123.toChinese} 输出: 一百二十三<br />增加数字转换为中文货币: 如: ${123.toChineseCurrency} 输出: 壹佰贰拾叁圆整<br />增加Boolean.toInteger, false为0, true为1, <br />增加Number.toBoolean, 0为flase, 非0为true,<br />增加String.toBoolean, 如: ${"true".toBoolean}<br />修改"行注释指令", 使其保留换行符, 如: $#xxx \n yyy 将输出: \n yyy<br />支持无穷数, 用"*"号表示无穷数, 如: ${users[2..*]}<br />完成异常国际化重构, 将所有异常信息放入国际化配置中.<br />增加字符串abbreviate操作, 如: ${"abcdefghijk" % 6} 或者 ${'abcdefghijk'.abbreviate(6)}, 输出: abc...<br />core包增加ExpressionFactory, ExpressionBuilder, TemplateElementFactory, TemplateBuidler, 使第三方工具能脱离模板解析过程构建模板.<br />Element增加getTemplate(),获取元素所在模板的引用.<br /><br />调试窗口截图:<br /><img src="http://www.commontemplate.org/images/debug/debug_directive.gif" /> <br /><br />项目地址: <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/207465#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 14:00:32 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/207465</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/207465</guid>
      </item>
      <item>
        <title>收到了从国外寄来的Ubuntu光盘,开心!</title>
        <author>qichunren</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://rails2.javaeye.com">qichunren</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/202543" style="color:red;">http://opendesign.group.javaeye.com/group/blog/202543</a>&nbsp;
          发表时间: 2008年06月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天下午,我收到了从国外寄来的Ubuntu光盘,好开心啊!我看了一下,是8.04的版本.<br /><br /><br />我是2008年5月20号申请的,没有想到这么快,光盘就从国外寄过来了,速度真是快啊!<br /><br /><div class="quote_title">引用</div><div class="quote_div"><br />1 CDs requested on 2008-05-20. 1 CDs were approved and sent to the shipping company on 2008-05-25. Please note requests usually take from 4 to 6 weeks to deliver, depending on the country of shipping.<br /><br /><br />We can send you a CD free of charge, but it will take from six to ten weeks to deliver, so you may prefer to download the CD image  and record it yourself.<br /><br /></div><br /><br />从今以后,我要好好学习Linux了,加油!<br /><br /><img src="http://linux.jansfer.com/upimg/allimg/080321/0958210.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/202543#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 12 Jun 2008 16:39:01 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/202543</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/202543</guid>
      </item>
      <item>
        <title>CommonTemplate完成查看器Viewer.exe(及安装程序)</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/200107" style="color:red;">http://opendesign.group.javaeye.com/group/blog/200107</a>&nbsp;
          发表时间: 2008年06月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          完成查看器初始版本. 实现功能: 双击*.ctl文件, 自动读取数据文件，解析模板，并用IE打开, 如果出错，使用Swing弹出错误信息, 方便于页面开发人员独立于业务开发进行模板测试.<br /><br />附件CommonTemplateViewer.zip中包含: <br />安装程序: CommonTemplateViewerSetup.exe<br />测试文件: test_*.ctl等<br /><br />安装完CommonTemplateViewerSetup.exe后, <br />双击*.ctl或右键菜单选"CommonTemplateViewer"打开(见附件图片).<br /><br />模板数据查找方式: 查找与模板同名但不同后缀的数据文件, 如: <br />打开test.ctl时, 查找test.xml, test.json, test.properties <br />并加载模板内部的:<br /><pre name="code" class="java">
$data{"json"}
    {mail: {from:"xxx@xxx.com", to:"yyy@yyy.com"}, users:[{id:1,name:"james"},{id:2,name:"kent"}]} 
$end
</pre><br /><br />(1)XML数据格式: 使用两个标签: &lt;object>和&lt;array>, 分别表示对象与数组, 使用name属性表示其名称, 根标签必需为&lt;object>. 如: <br /><pre name="code" class="xml">
&lt;object>
	&lt;object name="mail">
		&lt;object name="from">xxx@xxx.com&lt;/object>
		&lt;object name="to">yyy@yyy.com&lt;/object>
	&lt;/object>
	&lt;array name="users">
		&lt;object>
			&lt;object name="id">1&lt;/object>
			&lt;object name="name">james&lt;/object>
		&lt;/object>
		&lt;object>
			&lt;object name="id">2&lt;/object>
			&lt;object name="name">kent&lt;/object>
		&lt;/object>
	&lt;/array>
&lt;/object>
</pre><br /><br />(2)JSON数据格式: <br /><pre name="code" class="java">
{mail: {from:"xxx@xxx.com", to:"yyy@yyy.com"}, users:[{id:1,name:"james"},{id:2,name:"kent"}]} 
</pre><br /><br />(3)Properties数据格式: <br /><pre name="code" class="java">
mail.from=xxx@xxx.com
mail.to=yyy@yyy.com
users.0.id=1
users.0.name=james
users.1.id=2
users.1.name=kent
</pre><br /><br />项目地址：<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/200107#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 04 Jun 2008 15:12:54 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/200107</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/200107</guid>
      </item>
      <item>
        <title>CommonTemplate增加String.abbreviate功能</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/198938" style="color:red;">http://opendesign.group.javaeye.com/group/blog/198938</a>&nbsp;
          发表时间: 2008年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="quote_title">yannay 邮件 写道</div><div class="quote_div">在web开发中,我们会经常看到这样的情况: 如果字符串过长,那么会显示缩写的字符串,<br />如果 "aaaaaaaaaaaaaaaa" 会显示成 "aaa...."<br /><br />CT 中是否需要增加这样的功能呢?</div><br />经讨论后已由yannay实现该功能, 方案如下:<br />(1) 重载"%"操作符, ${String % Number}, 因为此功能看起来像"求余".<br />(2) 增加String外部扩展函数, ${String.abbreviate(length)} 或 ${String.abbreviate(offset, length)}<br />如: ${"abcdefghijk" % 6} 或者 ${'abcdefghijk'.abbreviate(6)}, 都将输出: abc...<br /><br />项目地址: <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/198938#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 31 May 2008 11:22:13 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/198938</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/198938</guid>
      </item>
      <item>
        <title>CommonTemplate完成外部构建树或表达式接口</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/198933" style="color:red;">http://opendesign.group.javaeye.com/group/blog/198933</a>&nbsp;
          发表时间: 2008年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CommonTemplate: <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a><br />问题来源:<br /><a href="http://javatar.javaeye.com/blog/187669" target="_blank">http://javatar.javaeye.com/blog/187669</a><br />解决方案:<br />在core包增加接口, 使外部构建树或表达式简化.<br />外部构建树或表达式通常分两种:<br />自顶向下: 也就是先创建父节点, 再压入子节点(通过栈的方式, 压入完所有子节点后弹出父节点).<br />自底向上: 也就是先创建子节点, 再创建父节点(在创建时将子节点传入).<br />基于这些, 提供了以下接口, 这些接口通过TemplateEngine和ExpressionEngine调用.<br /><pre name="code" class="java">
package org.commontemplate.core;

/**
 * 模板构建器, 为外部引擎或存储方式提供模板构建接口, 适合于自顶向下的构建方式.
 * (非线程安全)
 *
 * @author liangfei0201@163.com
 *
 */
public interface TemplateBudiler {

	/**
	 * 获取构建结果模板
	 *
	 * @return 模板
	 */
	public Template getTemplate();

	/**
	 * 开始模板
	 *
	 * @param templateName 模板名称
	 */
	public void beginTemplate(String templateName);

	/**
	 * 结束模板
	 */
	public void endTemplate();

	/**
	 * 开始块指令
	 *
	 * @param directiveName 指令名
	 * @param expression 指令表达式
	 */
	public void beginBlockDirective(String directiveName, Expression expression);

	/**
	 * 结束块指令
	 */
	public void endBlockDirective();

	/**
	 * 添加指令
	 *
	 * @param directiveName 指令名
	 * @param expression 指令表达式
	 */
	public void addDirective(String directiveName, Expression expression);

	/**
	 * 添加文本
	 *
	 * @param text 文本内容
	 */
	public void addText(String text);

	/**
	 * 添加注释内容
	 *
	 * @param comment 注释内容
	 */
	public void addComment(String comment);

}
</pre><br /><pre name="code" class="java">
package org.commontemplate.core;

import java.util.List;

/**
 * 模板元素工厂, 为外部引擎或存储方式提供模板组装元素, 适合于自底向上的构建方式.
 *
 * @author liangfei0201@163.com
 *
 */
public interface ElementFactory {

	/**
	 * 创建注释
	 *
	 * @param comment 注释内容
	 * @return 注释
	 */
	public Comment createComment(String comment);

	/**
	 * 创建文本
	 *
	 * @param text 文本内容
	 * @return 文本
	 */
	public Text createText(String text);

	/**
	 * 创建行指令
	 *
	 * @param name 指令名
	 * @param expression 指令表达式
	 * @return 行指令
	 */
	public Directive createDirective(String name, Expression expression);

	/**
	 * 创建块指令
	 *
	 * @param name 指令名
	 * @param expression 指令表达式
	 * @param elements 块指令内部元素
	 * @return 块指令
	 */
	public BlockDirective createBlockDirective(String name, Expression expression, List elements);

}
</pre><br /><pre name="code" class="java">
package org.commontemplate.core;

/**
 * 表达式	构建器, 为外部引擎或存储方式提供自顶向下的构建方式.
 * (非线程安全)
 *
 * @author liangfei0201@163.com
 *
 */
public interface ExpressionBuilder {

	/**
	 * 获取表达式结果
	 *
	 * @return 表达式
	 */
	public Expression getExpression();

	/**
	 * 添加一元操作符, 将把紧随其后添加表达式(包括操作符,变量,常量)作为参数.
	 *
	 * @param operatorName 操作符名
	 */
	public void addUnaryOperator(String operatorName);

	/**
	 * 添加二元操作符, 将把紧随其后添加的两个表达式(包括操作符,变量,常量)作为参数.
	 *
	 * @param operatorName 操作符名
	 */
	public void addBinaryOperator(String operatorName);

	/**
	 * 添加变量
	 *
	 * @param variableName 变量名
	 */
	public void addVariable(String variableName);

	/**
	 * 添加常量
	 *
	 * @param value 常量值
	 */
	public void addConstant(Object value);

}
</pre><br /><pre name="code" class="java">
package org.commontemplate.core;

/**
 * 表达式组件工厂, 为外部引擎或存储方式提供表达式组装元素, 适合于自底向上的构建方式.
 *
 * @author liangfei0201@163.com
 *
 */
public interface ExpressionFactory {

	/**
	 * 创建常量
	 *
	 * @param constantValue 常量值
	 * @return 常量表达式
	 */
	public Constant createConstant(Object constantValue);

	/**
	 * 创建变量
	 *
	 * @param variableName 变量名
	 * @return 变量表达式
	 */
	public Variable createVariable(String variableName);

	/**
	 * 创建一元操作符
	 *
	 * @param operatorName 操作符名
	 * @param operand 操作数
	 * @return 一元操作符表达式
	 */
	public UnaryOperator createUnaryOperator(String operatorName, Expression operand);

	/**
	 * 创建二元操作符
	 *
	 * @param operatorName 操作符名
	 * @param leftOperand 左操作数
	 * @param rightOperand 右操作数
	 * @return 二元操作符表达式
	 */
	public BinaryOperator createBinaryOperator(String operatorName, Expression leftOperand, Expression rightOperand);

}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/198933#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 31 May 2008 11:01:06 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/198933</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/198933</guid>
      </item>
      <item>
        <title>javaeye上我的Blog的性能测试结果</title>
        <author>manyinjin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://manyinjin.javaeye.com">manyinjin</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/197026" style="color:red;">http://opendesign.group.javaeye.com/group/blog/197026</a>&nbsp;
          发表时间: 2008年05月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          呵呵，利用我们公司的一个免费产品<a href="http://www.webperform.com" target="_blank"><strong>webperform</strong></a><br />测试了一下我在javaeye上的blog的性能，你也可以试试。<br /><img src="http://manyinjin.javaeye.com/topics/download/f3b4c673-e88f-3938-9610-9cdfee0298e0" />
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/197026#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 May 2008 13:34:31 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/197026</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/197026</guid>
      </item>
      <item>
        <title>CommonTemplate异常国际化完成</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/196977" style="color:red;">http://opendesign.group.javaeye.com/group/blog/196977</a>&nbsp;
          发表时间: 2008年05月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          周未把一个累活给干了, 就是异常信息的国际化.<br />总共有220多个地方需要国际化, 把我都找晕了, 但总算完成了.<br />在断言工具类, 异常基类, 异常工厂等中进行了国际化适配.<br />其它调用的地方均传入国际化key.<br /><br />有快两个月未发布版本了, 已经增加了不少功能, 并修复了较多BUG, 再仔细检测后, 这周内将发布新版本.<br /><br />项目地址:<br /><a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/196977#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 May 2008 11:48:54 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/196977</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/196977</guid>
      </item>
      <item>
        <title>CommonTemplate加入对无穷数的支持.</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/195942" style="color:red;">http://opendesign.group.javaeye.com/group/blog/195942</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用"*"号表示无穷数, 常在下标号中使用, 如: <br /><pre name="code" class="java">
${users[2..*]} // 等价于 ${users[2..users.size]} 
</pre><br />如果用在for循环中, 需自行break, 如: <br /><pre name="code" class="java">
$for{num: 0..*}
    $break{num > 10} // 或其它表达式
$end
</pre><br /><br />项目地址:<br /><a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/195942#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 11:07:47 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/195942</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/195942</guid>
      </item>
      <item>
        <title>在CommonTemplate首页加哀悼条幅</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/194454" style="color:red;">http://opendesign.group.javaeye.com/group/blog/194454</a>&nbsp;
          发表时间: 2008年05月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在这举国哀悼的时刻，不需要太多言语，挂一缕条幅，深切的为遇难的同胞们默哀。<br /><a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a><br />----<br />5.19-5.21
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/194454#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 19 May 2008 15:16:38 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/194454</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/194454</guid>
      </item>
      <item>
        <title>CommonTemplate提交Editor初始版本</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/192718" style="color:red;">http://opendesign.group.javaeye.com/group/blog/192718</a>&nbsp;
          发表时间: 2008年05月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          此版本只是验证性的实现了:<br />语法高亮, 内容提示.<br />近期, 将会加快编辑器的完善进度.<br />截图如附件.<br /><br />项目主页: <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a><br /><br />Editor项目SVN地址:<br /><a href="http://commontemplate.googlecode.com/svn/trunk/ctleditor" target="_blank">http://commontemplate.googlecode.com/svn/trunk/ctleditor</a>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/192718#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 20:49:50 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/192718</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/192718</guid>
      </item>
      <item>
        <title>CommonTemplate导出模板所需变量结构</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/192325" style="color:red;">http://opendesign.group.javaeye.com/group/blog/192325</a>&nbsp;
          发表时间: 2008年05月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在velocity的邮件列表中收到下面的邮件:<br /><div class="quote_title">Simon Gubler's EMail 写道</div><div class="quote_div"><br />Hi all<br /><br />I have written a small tool that scanns velocity-files and extracts all called variables. It's a command-line tool, you can execute it like this:<br /><br />java -jar TemplateAnalyzer.jar folder1 folder2 In folder1 are your velocity files to analyze, in folder2 the tool will generate velocity-files with the same name as in folder1 but only with the accessed variables as content.<br /><br />I made it an sourceforge project so you can view the code. You can find the project here: http://sourceforge.net/projects/vmanalyzer. I don't know if anything like this already exists, I didn't find anything under sourceforge.<br /><br />There are some things I would like to add in the future, like for example recursively scanning the velocity-files, but for now I hope it can be of use to you.<br /><br />Simon Gubler<br /></div><br /><br />这个想法非常不错, 通过分析模板, 得知该模板需要哪些变量和属性.<br />CommonTemplate(<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>)应该更容易做到, 只需通过访问者遍历所有指令表达式, 就可以识别出来<br />.<br />这样,可以输出propertites和xml两种格式的结构,如:<br />propertites格式输出:<br />user.name=<br />user.email=<br />xml格式输出:<br />&lt;data><br />    &lt;user><br />        &lt;name>&lt;/name><br />        &lt;email>&lt;/email><br />    &lt;/user><br />&lt;/data><br />这种结构将会有很多作用, 直接想到的就是:<br />在输出的结构内填上数据就能够进行模板独立测试.<br /><br />独立测试功能一直列在计划中, 将和上面提到的功能一起实现.<br />将写一个简单ctlviewer.exe, 修改注册表文件关联, 当双击*.ctl时用此exe打开.<br />ctlviewer将读取测试数据执行模板, 将输出结果用IE打开.<br /><br />测试数据可以单独放一个文件, 但读取可能不方便.<br />最好直接放在模板内, 用特殊的指令包含. 如:<br />[code="xml"]
$propdata
$!
user.name=testname
user.email=testemail
!$
$end
[/code]<br />或者:<br />[code="xml"]<br />$xmldata<br />$!<br />&lt;data><br />    &lt;user><br />        &lt;name>testname&lt;/name><br />        &lt;email>testemail&lt;/email><br />    &lt;/user><br />&lt;/data><br />!$<br />$end
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/192325#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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, 12 May 2008 18:28:07 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/192325</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/192325</guid>
      </item>
      <item>
        <title>最好的标准就是没有标准</title>
        <author>jindw</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jindw.javaeye.com">jindw</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/191037" style="color:red;">http://opendesign.group.javaeye.com/group/blog/191037</a>&nbsp;
          发表时间: 2008年05月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          刚才与一个msn上的朋友谈到web ui的设计，提到标准二字。<br /><br />我提出的观点是:<br />最好的标准，就是没有标准<br /><br /><br />最好的标准，就是约定俗成的东西，而不要大家去阅读长编累牍的规范文档。<br />给开发人员一匹快马，让他去开阔的草原上纵马奔腾，而不是给他一根缆绳，在悬崖峭壁间艰难的攀爬。<br /><br />开发人员大多数喜欢自由，那就给他们足够的自由。
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/191037#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 13:39:39 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/191037</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/191037</guid>
      </item>
      <item>
        <title>CommonTemplate完成$snatch指令</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/190000" style="color:red;">http://opendesign.group.javaeye.com/group/blog/190000</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CommonTemplate(<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>)<br /><br />完成$snatch指令, 实现与JSP页面或其它页面的互操作.<br /><br />假设当前访问路径为: http://localhost:8080/ct/sample/index.ctl<br /><br />$snatch{"list.jsp"} 相对于当前页面路径目录, <br />抓取路径: http://localhost:8080/ct/sample/list.jsp<br /><br />$snatch{"../list.jsp"} 相对于当前页面路径的上级目录<br />抓取路径: http://localhost:8080/ct/list.jsp<br /><br />$snatch{"/list.jsp"} 相对于Web根目录&lt;br/><br />抓取路径: http://localhost:8080/ct/list.jsp<br /><br />$snatch{"/list.jsp", 'UTF-8'} 指定编码&lt;br/><br />抓取路径: http://localhost:8080/ct/list.jsp<br /><br />$snatch{"http://www.163.com"} 远程页面&lt;br/><br />抓取路径: http://www.163.com
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/190000#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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>Tue, 06 May 2008 09:20:55 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/190000</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/190000</guid>
      </item>
      <item>
        <title>技术人成长的阶段特征</title>
        <author>jindw</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jindw.javaeye.com">jindw</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/189505" style="color:red;">http://opendesign.group.javaeye.com/group/blog/189505</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol><li>   <strong>不敢否认</strong>－－自己的知识面还不够宽阔，自我不够自信，表现比较谦虚。</li><li>   <strong>自我否认</strong>－－这是一个快速提升的阶段，开始发现自己的不足，否认过去，才能有将来的进步。</li><li>    <strong>否认他人</strong>－－有了一定的认识深度和广度，有自己思维套路和行事风格，形成了自我的评价体系，但是看待问题往往不能兼顾事物的多面性，感觉这个世界“不完美”的事情太多。这个时候最容易犯和潘长江比身高一类的错误。</li><li>    <strong>不再否认</strong>－－。。。。。</li></ol><br />大部分是自我描述，大家看看是否如此？
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/189505#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 20:20:11 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/189505</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/189505</guid>
      </item>
      <item>
        <title>转：《越狱》中的项目管理</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/188746" style="color:red;">http://opendesign.group.javaeye.com/group/blog/188746</a>&nbsp;
          发表时间: 2008年05月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          来源：网络<br />作者：司晋琦，盛大网络发展有限公司玄霆研发部主管 2007-06<br /><br />因为美剧《越狱》具备了项目所需要的独特性、临时性和明确目标的所有特征，我们完全可以将主人公迈克尔.斯科菲尔德策划的越狱作为一个项目来看待。作为项目经理，迈克尔·斯科菲尔德的学识、冷静、自信和坚定，以及对于越狱这个目标的缜密计划，使得他获得了他人的信赖。而他也利用这样的信任和依赖，巧妙地周旋于各关键人物之间，出色地协调各种资源，从而成功地完成了越狱这一“不可完成的任务”。<br /> <br />    五一期间，又看了一遍《越狱》第一季。越狱并非一个新鲜的题材，记得之前就有《肖申克的救赎》，也是关于越狱的，里面的主角也是智慧型的人物，冷静、坚韧。其实《越狱》所吸引我的，并不是它的题材，也不是演员的演技，而是由于它的剧情内融合了很多项目管理的理念。<br /> <br />   《越狱》主要是讲，毕业于名牌大学、有建筑学硕士学位并就职于某知名建筑公司的结构工程师迈克尔·斯科菲尔德，入狱搭救即将被执行死刑的哥哥林肯.布鲁斯（此人被冤枉杀死了副总统的弟弟）。在入狱前，他花了大量的精力，精心地做了前期准备工作，之后按照他所计划的步骤，故意持枪抢劫银行，从而得以进入林肯.布鲁斯所在的福克斯河畔监狱，并在那里组建了越狱团队。<br /> <br />    在越狱的整个过程中，我们可以看到迈克尔.斯科菲尔德近乎完美的计划，对项目过程的执行力，对项目干系人的控制力，以及对于项目风险的把握和及时变更的能力等。从各方面来说，迈克尔.斯科菲尔德是一个成功的项目经理，他的学识、冷静、自信和坚定，以及对于越狱这个目标的缜密计划，使得他获得了他人的信赖。而他也利用这样的信任和依赖，巧妙地周旋于各个干系人之间。最终以他出色的资源协调能力，成功地完成越狱计划。<br /> <br />越狱的四点体会<br /> <br />    越狱具备了项目的特征，有其临时性和明确的目标，并且有十分严格的时间限制（林肯·布鲁斯执行死刑前）。而其运作受制于有限的资源，需要有良好的规划、执行和控制。迈克尔·斯科菲尔德在这个越狱项目中把各种知识、专业技能、工具应用于项目活动中。其给予的项目管理启示也是很有专业价值的。<br /> <br />    第一，前期调研以及项目计划。<br /> <br />    任何项目的成功，都离不开初期对于完成项目目标而进行的调研活动，以及根据目标和调研分析而制定的可行性计划。迈克尔·斯科菲尔德在得知林肯·布鲁斯被关到福克斯河畔监狱后，收集了这个监狱以及周边的信息，包括道路交通。然后又拿来了他们公司曾经在福克斯河畔监狱进行改造建设的图纸，自己又利用建筑学等方面的专业知识，巧妙地将图纸和整个计划的一些关键提示设计为文身，并将它文在了身上，完成了对于最重要资源的准备工作。<br /> <br />    除了非人力资源的准备以外，他还对项目干系人进行了分析。<br /> <br />    首先，他需要一个安全防护最薄弱的地方，以便越狱。根据他对建筑图纸的分析，认定医务室将是最容易实施越狱的通道。于是他收集了关于女医生萨拉·唐科里迪的资料，包括她毕业的院校，她的座右铭，以及她曾经获得过的奖励。甚至为了伪装糖尿病来定期接近女医生，他还查了相关医学资料。有了这些信息也为他以后对于女医生实施“美男计”提供了可能性。<br /> <br />    其次，当越狱成功后就必定走向逃亡道路，如何销声匿迹呢？他注意到阿布兹也在福克斯河畔服刑后，找到了他比较关心的关键证人菲巴拉西，这样就可以以此为饵，实施对阿布兹的资源控制，以便于让阿布兹为他服务——提供逃亡的交通工具。<br /> <br />    再次，在走向逃亡路以后，还需要金钱来为他和他哥哥的生活提供保障。于是他注意到了福克斯河畔里的D.B库珀尔，收集了他的相关背景信息，以及他家人的信息，包括名字、居住地，而如果没有这些信息的支持，迈克尔.斯科菲尔德也不可能通过D.B库珀尔对他的试探，以至于最后取得他的信任。要知道D.B库珀尔是个年长而且很有经验的智者，如果他对于迈克尔.斯科菲尔德的计划周密程度，以及可行性程度一无所知的话，最终是不会和他冒险越狱的。<br /> <br />　　最后，他还结识了脱衣舞女郎，帮她拿到了在美国的绿卡，作为交换为他提供信用卡（上面的磁条用来伪造门禁卡）。<br /> <br />　　以上的这些准备，给了他足够的信心迈向福克斯河畔监狱去营救林肯·布鲁斯。对于项目干系人的重视以及分析得当，也让迈克尔·斯科菲尔德的越狱成功有了很大保障。这也让我想起了当时学习项目管理知识体系时的一个反面例子，在千年虫软件更新项目中，管理者一开始就对法律部门这个重要利害关系者的忽略和轻视，造成了大量文档的返工，增加了项目成本和最后完成度的风险。这就是由于在项目的开始阶段没有更加透彻地分析项目干系人，造成了本该事先准备的工作没有做到位，以至于引发了后期的返工。<br /> <br />    第二，资源管理。<br /> <br />    很钦佩迈克尔·斯科菲尔德对于各种资源的调配和协调能力，包括人力资源以外的硬件资源，比如他使用的各种工具，计时的手表、长椅上的螺丝钉、为假装糖尿病需要的药丸，等等。每一个工具都可以发挥关键性的作用，环环相扣。<br /> <br />    而对于人力资源方面，也就是项目干系人，他也体现出了非常优秀的协调、沟通以及控制能力。对于干系人女医生萨拉.唐科里迪、黑帮老大阿布兹、超级大盗D.B库珀尔、还有脱衣舞女，这些都是他计划内的。而对于计划外的室友苏克雷、恋童癖“背包”、提供药丸的“便条”、狱长以及看守队长等都属于非计划内的。这也体现了项目执行过程中最大的变量就是“人”，也是决定项目成败的关键。对于这些人，有其各自独特乃至相互冲突的利益需求、性格和背景。但是有一点是共同的，任何一个人都对项目成功有关键性作用。任何一个人、一件事情处理不好，都有可能使越狱功败垂成。但是，对于越狱团队成员无论加入的原因或者动机，他们都有一个共同的目标，就是越狱成功；而这个团队的对立面——狱方干系人的需求会比较多样化，监狱长要利用迈克尔.斯科菲尔德建造送给爱妻的泰姬陵模型，看守队长在盲目自信享受戏弄囚犯以及从他们身上获得利益的乐趣，女狱医在寻找爱人……所有这些需求，迈克尔.斯科菲尔德都能提供。找到共同点后，迈克尔.斯科菲尔德又靠着信任和相互的依存关系游刃于其中。这种信赖以及他对干系人的准确定位，使得他利用项目干系人之间的依存关系，找到了他越狱所需要的种种资源和支持。他向我们演示了如何紧扣需求和利益对项目干系人做出动态的管理。<br /> <br />    干系人对于项目的影响，积极和消极的情况都有可能。积极的干系人通常是项目成功结果中的获益者，而消极的干系人是从项目的成功中，得到消极结果者。忽视干系人的项目经理会对项目的结果造成破坏性的影响。<br /> <br />    第三，风险控制。<br /> <br />    在项目执行过程中风险是始终伴随的，有些是可预知并可准备预案的，有些是突发性的，需要临时给予解决方案。<br /> <br />    上面谈到的项目干系人，以及越狱团队的临时扩充，只是越狱过程中他遇到的变化的一部分。在第一次越狱计划失败后，迈克尔·斯科菲尔德又启用了备用方案，这也可以看出迈克尔·斯科菲尔德在项目管理中的风险意识。迈克尔·斯科菲尔德在遭遇质疑的时候经常说：“我已经计算好了任何的可能。”但是意想不到的事还是接二连三地出现，甚至可以令他的越狱计划夭折，几次都身陷绝境，而最终都化险为夷。为什么？除了他一开始的缜密计划外，他冷静机智、处变不惊和自信坚定的心理素质和及时到位的应变，是根本原因。没有一成不变的事物，我们也没有以不变应万变的境界。因此当出现突发事件后最需要的还是面对问题、解决问题，而不是去相互争吵，或去探讨是谁的责任。虽然我们看到的是他一次次遇到各种问题，可每一次变化来临时，包括几次临近绝望时，他最终都能沉静下来，对变化做出冷静的分析，然后进行了计划的变更控制，或者启用预案。最后在服从越狱这一项目目标的前提下做出相应的调整。最主要的，他还往往能变不利为有利，让变化及变化的结果朝有利于越狱的方向发展，甚至成为越狱的有效资源。这也是他越狱的团队逐渐扩大，但依然成功的原因。解决问题依赖的不是“灵感”或者“上帝”，而是自己的知识积累和联想分析能力。<br /> <br />  项目风险源于任何项目中都存在的不确定性。对于已知风险可以采取预案的方式来规避，比如迈克尔·斯科菲尔德的备用方案。但是我们无法对未知风险进行主动管理。其实，我们可以从风险对项目成功造成的威胁或带来的机会的角度来看待风险。风险对项目所造成的威胁只要能与冒此风险所得到的收获相抵，就属于可接受风险。凡能够带来项目成功机会的风险不妨为之一搏，使项目目标从中受益。<br /> <br />    第四，时间管理。<br /> <br />    整个剧情中，迈克尔·斯科菲尔德一次次地进行时间测量，我们可以看到时间在整个越狱过程中的重要性，有时需要精确到秒的地步。狱警要定时巡查，所以每次去探路用的时间必须精确计算。同样给地下管道放水，事先需要计算管道的尺寸，大小和水流量，保证水能够在相对精确的时间放满到合适的位置。越狱过程中每一个环节也需要精确计算，保证没有延迟。第一次越狱虽然没有成功，但为了和林肯·布鲁斯在医务室碰头，也需要精确计算出各自采取行动的时间。而所有这些时间，迈克尔·斯科菲尔德都事先进行了测量或者规划。在真正的计划实施过程中也可以看到时间的紧迫，由于萨拉·唐科里迪的紧张，忘记在放风前将水箱的螺丝拧下，造成项目延期5分钟，以及到后面D·B库珀尔的突然倒下也拖延了一定的时间，其结果就是险些令迈克尔·斯科菲尔德越狱失败。<br /> <br />    从迈克尔.斯科菲尔德的时间管理中我们可以看到，他在执行每一步计划中都是有逻辑、有条理、有序列的，这就是项目时间管理中的活动排序，确定各计划活动之间的依赖关系，并进行活动资源的估算，也就是对完成计划活动所需资源和时间的计算。随后才会有明确的进度表，并且为每一个活动，规定时间节点。以便于对项目执行过程中的时间消耗进行监控，否则迈克尔.斯科菲尔德在苏克雷忘记拧下水箱螺丝后，是无法评估到项目延期5分钟。如果项目经理对于项目的执行进度状况没有一个清醒的量化值时，那么这个项目多数情况下很难保证按时完成。或者可以按时完成，但是会造成资源闲置的浪费，增加项目的成本风险。<br /> <br />对《越狱》的反思<br /> <br />    迈克尔.斯科菲尔德在这个越狱的项目管理中无疑是成功的，因为无论如何他的目标达到了。但是，里面还是有很多幸运的成分。而如果抛开这些幸运成分，我们可以看到他还是有做得不到位的地方。<br /> <br />    1．对于团队成员的不信任。开始时，为了试探苏克雷的保密程度，而直接造成他关禁闭，导致精神病狱友的介入，造成了团队成员风险。<br /> <br />    2．制造暴乱引发戒严，制造充足的时间去打通墙壁，而结果造成局面一度脱离控制，并且在入口处无人把守，直接后果是造成“背包”发现秘密后加入。而他的加入曾一度伤害到关键成员阿布兹，造成了极大的风险。<br /> <br />    3．在挖通道的时候，由于狱警巡查时没有做好掩饰的准备，造成林肯·布鲁斯为了拖延时间而打了狱警。其直接后果是，第一次越狱失败，不得不启用预案。<br /> <br />    4．过早地打通了医务室的下水道，而没有做任何掩饰，造成被修理工发现后，补洞，致使计划失败。<br /> <br />    5．对于关键资源或者凭据应该进行备份，然而可能由于准备时间短，迈克尔·斯科菲尔德并没有对文身进行备份，以至于他被烫伤时，险些因为失去“地图”，而使得整个计划夭折。<br /> <br />    还有很多细节的地方没有做到位，这里不再枚举。由这些缺陷，我们可以看到，对于我们计划执行中遇到的临时问题依然不可以马虎对待，临时解决；而应该认真应对，彻底消除隐患。另外对于关键的数据、文档必须备份，毕竟天有不测风云！<br /> <br />    可无论如何他还是成功了，成王败寇，自古真理。很多企业也是这样，当企业成功的时候，回过头来看走过的路，也许很多关键性的决策都是错误的，但是无论如何走过来了，那么，错误的也变成了正确的。比如，如果没有精神病狱友的介入，也许迈克尔·斯科菲尔德被烫伤的“地图”就永远也找不回来了。而没有暴动，也许就没有英雄救美，也无法更深地得到女医生萨拉.唐科里迪的信任。<br /> <br />    项目管理是一门艺术，是一门综合了多学科的艺术，是应用领域专业知识、通用管理技能以及沟通能力等相互融合后的综合管理技能。也许在迈克尔·斯科菲尔德的近乎“规范化”项目管理的背后，又打动了中国观众心灵的东西就是人性吧。《越狱》里处处可见人性，监狱长为了将要送给爱妻的泰姬陵给予迈克尔·斯科菲尔德很多的便利；苏克雷为了见狱外女友而忠心地为迈克尔·斯科菲尔德服务，甚至冒险去填补那个可能被发现的洞；D·B库珀尔为了见他女儿最后一面而加入了越狱团队贡献了自己一份力量；阿布兹，一个极难控制的成员，迈克尔·斯科菲尔德抓住他对证人的需求，甚至失去自己的脚趾，最终控制了他，拥有了所有行动的监狱资源……在这个越狱团队内每个人都有人性的弱点，而迈克尔·斯科菲尔德对于这些弱点以及成员需求的掌控十分到位。“若想取之，必先予之！”也许就是他在项目人力资源管理方面的最大亮点，应了那句话：掌握了人性的弱点，管理便无往不胜。
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/188746#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 02 May 2008 01:05:41 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/188746</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/188746</guid>
      </item>
      <item>
        <title>CommonTemplate准备增加对树结构递归迭代的支持</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/188318" style="color:red;">http://opendesign.group.javaeye.com/group/blog/188318</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在应用程序开发中, 经常用到树结构, 如组织机构树, 功能菜单树等等.<br />树的通常表示为对象内部持有子节点方式, 如:<br /><pre name="code" class="java">
class Menu {
	String name;
	List&lt;Menu> children;
}
</pre><br />显示时, 递归迭代, 直到children为空或零为止.<br />用普通的for循环是很难做到的. 如:<br /><pre name="code" class="java">
$for{menu: menus}
	$for{child: menu.children}
		...
	$end
$end
</pre><br />所以考虑增加一个指令, 可进行内递归循环, 如:<br /><pre name="code" class="java">
$recur{menu : menus -> children} // -> 后可以为lambda表达式, 如: -> xxx? xxx.children : yyy.children
	${super.menu} // 内递归时, 可以用"super.menu"取到上层菜单.
$end
</pre><br />当然, 指令的具体方案有待考虑, <br />是否用"recur"命名也有待斟酌, <br />或者直接用"$tree"? 那样"$for"指令是否类似的用"$list"?
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/188318#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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 Apr 2008 10:49:54 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/188318</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/188318</guid>
      </item>
      <item>
        <title>《如何做开源项目——ABC》 读后感</title>
        <author>jindw</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jindw.javaeye.com">jindw</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/186326" style="color:red;">http://opendesign.group.javaeye.com/group/blog/186326</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          文章出自不祥，内容如下：<br /><br /><div class="quote_title">引用</div><div class="quote_div"><br />谈开源不能不谈免费，现在国内几乎所有的所谓开源软件，根本不具备任何开源特征，对开源领域及计算机业的奉献甚少。比如Discuz一类的论坛什么的。<br />他们都抓住了人贪婪的本性，一味的将开源同免费划成等号。我们今天就不详细讲述他们的罪过，我们在这里讲讲，假如你想做开源你需要做好什么样的心理和技<br />术的准备。<br /><br />心理准备：<br />1、做的时候就要考虑好你的项目要发展10年甚至100年。长期的考虑可以更好的规划你的项目，放下浮躁的心态，认真的做事情。<br /><br />一个开源项目同一个公司的项目不同。公司的项目是计划式项目，利益为目的，如果公司破产或业务改变那么项目就可能会取消。而开源项目不一定，很多项目都<br />是由爱好者发起维护的，你要准备好即使你离开，这个项目也会继续，一个项目的发展目的不仅仅是为了你个人（当然你出发点可能是为了个人，但是项目能否存<br />活关键一点在于心态）。<br /><br />2、万事怀着感恩的心。宽待别人，善于倾听别人的意见，但同时也要保证自己的设计思路不被打乱。<br /><br />一定要倾听别人的意见，但是作为项目的执行者，要以自己的理解为准则。不要怕自己做错了，做的不好。记住你有10年的时间来使项目完善。一个项目如果想<br />发展起来一定是有很多人参与的，所以不要做一言堂。<br /><br />3、尊重合约。不是要求别人尊重你的合约，而是尊重他人的。不偷窃他人的代码，尊重微软这类公司，对盗版憎恨。这是做开源的基础，如果做不到，恐怕你还<br />需要学习。建议，如果有时间请先看过圣经，在圣经中你会学习信用是多么重要的。<br /><br />开源最大的敌人是谁？不是商业软件，不是微软，是盗版。如果你想别人尊重你的劳动成果你现在就应该尊重微软这类公司。我们现在不是土匪时代（英雄时<br />代），盗版不利于我们的科技进步，人人想着不劳而获，贪婪不要占据你全身。尊重合同，可以得到所有人的尊重，因此请注意，如果你要抄袭别人代码。请为他<br />们保留版权说明，别啥都是你做的。你也想搞个小汉芯吗？<br /><br />4、作好心态，不论你是为了盈利你还是为了兴趣，做开源就要做好心态，你要允许别人在没给你任何好处的时候利用你的成果获利。<br /><br />不论你是为了盈利，还是为了兴趣，只要不违背开源的精神，你对这个行业都有贡献。请不要做的太自私，既然开源的就要让大家共同享受知识带来的好处，不然<br />你开源干吗，还是继续去搞“免费软件”吧。<br /><br />5、不要相信那些说“我愿意参加你的项目，我希望参与工作”的人，真正参与项目的人从来不会表态他只会给你一个patch然后告诉你你代码有什么问<br />题。<br /><br />根据多年的经验，以及多次项目的失败总结，基本上热火朝天的跟你说这句话的人，根本对你一点帮助也没有。真正愿意参与做事情的人，是不会说这句话的。这<br />不仅仅在国内，在海外也是有这个特点的。<br /><br />技术准备：<br /><br />你可以选择sourceforge.net或是你自己弄服务器做开源，不论怎么样。不是简单有个下载，有个web就叫开源的，你需要一些工具来帮助<br />你：<br /><br />1.WIKI<br />你的网站可以采用WIKI这样可以方便参与者编辑修改页面，尤其是编写文档的时候很重要。当然国内的垃圾广告太厉害了，如果你是中文网站，就做上权限<br />吧。我推荐你可以使用dokuwiki来做。<br /><br />2.BugTracker<br />作为一个长期发展的项目，你总的做计划吧，你总的允许别人向你报告错误吧。你需要一个缺陷跟踪系统。如果你系统有什么问题或别人对你系统有什么需求，他<br />可以在bug tracker里发出需求。推荐你使用mantis这个代码是php编写的很简单容易使用。<br /><br />3.SVN<br />你需要协同工作，就一定需要一个SVN现在几乎所有的项目都有自己的SVN仓，SVN不仅仅可以协同工作。他还可以对你的代码做历史记录。网上可以下载<br />到svn的中文pdf 你搜索一下看看。<br /><br />4.Maillist或是BBS<br />有这样一个特点，老外是习惯使用Maillist的，而中国人习惯使用BBS。所以根据你自己的需要给项目选择一个沟通方式。<br /><br />5.QQ或IRC<br />如果你项目针对国内，建立一个QQ群是很重要的。当然你也可以建立一个IRC房间，上www.freenode.org上去申请一个，所有的大型项目都<br />在freenode上有实时的讨论组。<br /><br />有了以上，你还需要怎么做？很简单，开始干事情，别记得请别人加入项目。记得你是要发展10年，你的项目只要做的好，做一些简单的宣传，很快就有人找上<br />门来了。<br />6.GPLv2/LGPL/MPL.....想好用什么协议<br />你当然可以自己“开创”一些协议，不过我建议你使用一些标准的协议，这些协议精力了时间的磨练，并且在法律和道德的问题上他们更能经的住考验。协议很<br />多，每个厂家比如SUN都有自己的或APACHE也有自己的。但是目前最流行的还是GPLv2 LGPL MPL等。<br /></div><br /><br />个人感觉，做开源项目，首先要有真正有意义的想法（自认为即可），开源项目是一个长期的投入，如果只是一个简单平庸的主意，还是别让费时间的好，我们可以去做的事情太多，我们没有那么多的时间面面具到。<br /><br />然后摆正心态，你不要指望它可以一夜成名，或许它将来可以给你带来一些名气，但是，任何事情都要一个发展的过程，任何想法大家都需要一个接受的时间。何况是开源项目（如果价值在任何人面前，都一目了然了，也许他就不应该是一个开源项目）。
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/186326#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 12:06:30 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/186326</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/186326</guid>
      </item>
      <item>
        <title>CommonTemplate完成DEBUG单步调试</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/184742" style="color:red;">http://opendesign.group.javaeye.com/group/blog/184742</a>&nbsp;
          发表时间: 2008年04月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CommonTemplate(<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>)的<br />Debug单步跟踪初始版完成, 可下载每日构建版本试用. (<a href="http://commontemplate.googlecode.com/svn/trunk/commontemplate/dist/" target="_blank">http://commontemplate.googlecode.com/svn/trunk/commontemplate/dist/</a>)<br />将在后期TemplateEditor的eclipse插件中集成此Debug功能, 并做成策略接口, <br />当在eclipse环境中时自动适用插件集成, <br />在非图形系统中(纯文本模式,AWT未加载时)自动适用命令行, <br />否则使用swing图形界面. (现完成版为swing图形界面)<br />测试代码：<br /><pre name="code" class="java">
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.commontemplate.core.Context;
import org.commontemplate.core.Factory;
import org.commontemplate.engine.Engine;
import org.commontemplate.standard.ConfigurationSettings;
import org.commontemplate.tools.PropertiesConfigurationLoader;

public class OutTester {

	public static void main(String[] args) {
		// 定义数据
		Map model = new HashMap();
		model.put("allow", Boolean.valueOf(false));
		List users = new ArrayList();
		model.put("users", users);
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		try {
			users.add(new User(12, "liangfei", "liangfei0201@163.com", 10000, df.parse("2007-08-09")));
			users.add(new User(15, "zhangyong", "zhangyong@aaa.com", 25000, df.parse("2007-08-10")));
			users.add(new User(17, "bobo", "bobo@bbb.com", 95010, df.parse("2007-08-11")));
			users.add(new User(17, "lixudong", null, 25000, df.parse("2007-09-11")));
		} catch (ParseException e) {
			e.printStackTrace();
		}

		// 配置
		ConfigurationSettings config = PropertiesConfigurationLoader.loadConfiguration("commontemplate.properties");
		Factory factory = new Engine(config);
		// 执行模板
		Writer output = null;
		try {
			output = new OutputStreamWriter(System.out);
			Context context = factory.createContext(output);
			context.pushLocalContext(model);
			factory.getTemplate("out.ctl").render(context);
			context.clear();
			output.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (output != null) {
				try {
					output.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

}
</pre><br />测试配置:　commontemplate.properties<br /><pre name="code" class="java">
@extends=org/commontemplate/tools/commontemplate.properties
debug=true
</pre><br />测试模板:　out.ctl<br /><pre name="code" class="xml">
ttttt
${allow}
$breakpoint
$if{users != null && users.size > 0}
&lt;table>
	$for{user: users}
	&lt;tr>
		&lt;td>${user.name}&lt;/td>
	&lt;/tr>
	$end
&lt;/table>
$end
$for{num: 1..3}
	${num}
$end
</pre><br />引擎遇到$breakpoint指令时, 弹出附件所示界面.<br />高亮显示当前运行的指令, 上下文中的变量.<br />点击"Step"单步运行,<br />点击"Step Over"单步越过块指令的内部指令运行(非块指令此按钮不可用),<br />点击"Resume"恢复正常运行(直到下一$breakpoint),<br />点击"Terminate"终止运行.<br /><br />注: 当commontemplate.properties配置: debug=true 时才启用调试, 否则忽略$breakpoint指令以及其它debug指令.<br /><br />尚未美化界面, 暂先保证功能实现.<br /><br />JFrame未重用(每一步都创建窗口), 所以调试时会出现窗口闪动, 待完善.
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/184742#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Apr 2008 09:56:47 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/184742</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/184742</guid>
      </item>
      <item>
        <title>CommonTemplate准备加入$breakpoint指令</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/184344" style="color:red;">http://opendesign.group.javaeye.com/group/blog/184344</a>&nbsp;
          发表时间: 2008年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          准备在CommonTemplate( <a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a> )的debug指令集内加入 $breakpoint 指令.<br />当引擎遇到$breakpoint指令时, 将页面执行过程挂起, 弹出swing做的模板上下文变量栈跟踪器.<br />可以在跟踪器界面上查看当前上下文的所有变量, <br />点击"Step Into"按钮单步执行指令, 块指令将进入其内部指令,<br />点击"Step Over"按钮单步执行指令, 块指令将越过其内部指令,<br />点击"Resume"按钮恢复继续运行, <br />点击"Terminate"按钮终止运行,<br />将在下一版本发布此特性.
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/184344#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Apr 2008 10:30:18 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/184344</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/184344</guid>
      </item>
      <item>
        <title>模块自包含部署</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/182149" style="color:red;">http://opendesign.group.javaeye.com/group/blog/182149</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          自动部署方案收工, 达到目标: <br />项目分成几十个模块和六个子系统.<br />开发以模块为单位, 模块开发完后都被打成jar包(包括jsp,图片,js,css等全部放入jar包).<br />模块与子系统不关联, 可以放入任何子系统.<br />子系统只用于部署(逻辑划分), 最终打成war包.<br />将模块的jar包放入(任意)子系统的lib目录下即可访问, 不需要作任何配置.<br />如:<br />将模块aaa.jar放入子系统xxx.war的lib目录,不作任何配置,即可访问:<br />http://localhost:8080/xxx/aaa/index.action<br /><br />实现方案:<br />(1) 统一规范包名: "com.xxx.module.模块名", 框架自动搜索"com.xxx.module"下的所有子包作为加载项. <br />(2) 统一SSH配置存放路径: 均放在与模块action,biz,dao同级的目录下, 框架根据规则自动抓取. (通过适配SSH相关类, 以及前后拦截实现)<br />(3) 运行时自动释放资源: 在项目启动时, 桧测模块内的jsp,图片,js,css等资源是已释放到可访问位置, 未释放则搜索模块下的资源并释放到web可访问位置. 在页面上使用: ${images}/xxx.gif, ${scripts}/xxx.js, ${styles}/xxx.css, 其中images,scripts,styles三个变量由框架拦截器自动注入.
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/182149#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 20:15:40 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/182149</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/182149</guid>
      </item>
      <item>
        <title>mysql without installer 使用手记</title>
        <author>manyinjin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://manyinjin.javaeye.com">manyinjin</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/180747" style="color:red;">http://opendesign.group.javaeye.com/group/blog/180747</a>&nbsp;
          发表时间: 2008年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.下载 mysql-noinstaller.zip<br />2.修改其中的某个ini配置文件，添加utf8字符集处理<br />    [mysql]下添加：<br />    default-character-set=utf8<br />    [mysqld]下添加：<br />    #Path to installation directory. All paths are usually resolved relative to this.<br />    basedir=e:\\tmp/database<br />    #Path to the database root<br />    datadir=e:\\tmp\\database\\data<br />    default-character-set=utf8<br />    collation_server=utf8_unicode_ci<br />    //server端编码为utf8<br />    character_set_server=utf8<br />    //强制客户端编码为utf8<br />    skip-character-set-client-handshake<br />3.运行，mysqld默认要在window_home里找my.ini,不过我们可以在mysqld运行时制定配置文件：<br />    mysqld --defaults-file=./my-large.ini<br />4.关闭<br />    mysqladmin -u root -ppassword shutdown<br /><br />BTW, <br />    I have to attach the "characterEncoding=utf8" to the connection url since i set this "skip-character-set-client-handshake" in my.ini.
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/180747#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Apr 2008 11:10:38 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/180747</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/180747</guid>
      </item>
      <item>
        <title>资源利用与竞争策略</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/179880" style="color:red;">http://opendesign.group.javaeye.com/group/blog/179880</a>&nbsp;
          发表时间: 2008年04月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天刚看了“资源利用与竞争策略”<br />其强调突出差异与成本, <br />在竞争时, 要尽可能强调自身的差异, 并且差异要得到用户的认可. <br />否则当产品与别人没有区别或说不出区别时就应该最低成本.<br />当别人把你的产品模仿的维妙维肖, 你就没有了差异优势,<br />当别人能做的比你更便宜, 你就失去了成本优势.<br /><br />联想到CommonTemplate(<a href="http://www.commontemplate.org" target="_blank">http://www.commontemplate.org</a>), <br />相同的"轮子"很多, CT是否完全突显了其差异?<br />看来需要抽空进一步挖掘CT的不同点.<br /><br />另外, 在这里, 成本包括使用成本, 也包括使用风险.<br />开源? 免费? 同类的产品大部都是.<br />使用方便? 集成方案是否够多?<br />学习成本低? 文档齐全?<br />产品稳定? 测试覆盖率高?<br />这些现在都有做, 但能做得更好, 这也是CT下一步工作的重点.
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/179880#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Apr 2008 19:17:07 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/179880</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/179880</guid>
      </item>
      <item>
        <title>很高兴桂林兄加入CommonTemplate的开发</title>
        <author>javatar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javatar.javaeye.com">javatar</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/179744" style="color:red;">http://opendesign.group.javaeye.com/group/blog/179744</a>&nbsp;
          发表时间: 2008年04月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          桂林的blog:<br /><a href="http://jasongreen.javaeye.com" target="_blank">http://jasongreen.javaeye.com</a><br /><br />桂林今天一天就完成了HTML属性语法外套的重构, 采用Jericho进行实现, 并抽取了策略接口, 真是佩服他的高效.<br /><br />在下一版本(或下载每日构建版本)将可以使用有着高度容错能力的Jericho实现:<br /><pre name="code" class="xml">
&lt;table ct:if="users != null && users.size > 0">
	&lt;tr ct:for="user: users">
		&lt;td>&lt;span ct:out="user.name">James&lt;/span>&lt;/td>
	&lt;/tr>
&lt;/table>
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/179744#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 05 Apr 2008 20:49:27 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/179744</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/179744</guid>
      </item>
      <item>
        <title>Jwebap项目(六)——plugin部署的设计讨论</title>
        <author>leadyu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://leadyu.javaeye.com">leadyu</a>&nbsp;
          链接：<a href="http://opendesign.group.javaeye.com/group/blog/179701" style="color:red;">http://opendesign.group.javaeye.com/group/blog/179701</a>&nbsp;
          发表时间: 2008年04月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Jwebap(jwebap介绍：<a href="http://www.javaeye.com/topic/165593" target="_blank">http://www.javaeye.com/topic/165593</a>,<a href="jwebap.sourceforge.net" target="_blank">jwebap.sourceforge.net</a>)准备在0.6.*版本，实现初步的plugin管理，在plugin架构的基础上扩展jwebap的功能,这里专门讨论下关于部署管理的设计，欢迎大家提意见<br /><br />Jwebap的Plugin部署设计包括：<br /><br /><br /><strong>可视化部署——Jwebap控制台</strong><br /><br />1)支持对plugin的界面部署,可以移除plugin和部署新的plugin<br /><br />2)Component的参数可在界面配置，可以配置Component开关<br /><br /><strong>部署方式</strong><br /><br />1)Jwebap分为core包和各种plugin包,在jwebap.xml里面可以配置{ *plugin-ref , *component , *action , *deispatcher}<br /><br />2)plugin包的Meta-INF目录存放plugin.xml,配置{*component , *action , *deispatcher}<br />默认jwebap.xml里面只配置plugin-ref，以及core包需要的action和deispatcher，当在控制台修改了plugin的参数(比如JdbcComponent的driver-class参数)，则会保存在jwebap.xml中<br /><br />3)jwebap.xml配置的同名component,action,deispatcher优先于各plugin的配置<br /><br />4)在jwebap控制修改了部署参数，暂时不支持刷新到RuntimeContext,必须重起Server方能生效，或者在第一次部署时手工修改配置文件
          <br/>
          <span style="color:red;">
            <a href="http://opendesign.group.javaeye.com/group/blog/179701#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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 05 Apr 2008 17:50:29 +0800</pubDate>
        <link>http://opendesign.group.javaeye.com/group/blog/179701</link>
        <guid>http://opendesign.group.javaeye.com/group/blog/179701</guid>
      </item>
  </channel>
</rss>