- 博客(54)
- 收藏
- 关注
原创 初试Guice
最近有空试用了一下Guice,感觉还是比较小巧的,在上面做了个类似Tapestry的Configuration,利用它可以实现类似扩展点的功能。 (可以参考http://tapestry.apache.org/tapestry5/tapestry- ioc/configuration.html)另外关于网上代码和XML的配置的问题,个人认为不是问题。基于代码的配置就象一个核,如果你喜欢基于XML的
2007-04-18 17:09:00 1812
原创 等待很久的Web Tools Classpath Container Dependency Publishing特性终于加上了
简单地说,就是可以将Classpath Container提供的Jar发布到WEB-INF/lib下再加上m2eclipse插件,就可以实现轻松地找到一大堆依赖的jar包了。更具体的介绍请参见http://m2eclipse.codehaus.org/只要在web项目上点右键,加入Maven Enable,再点右键,选择所需要的库,比如hibernate,就可以在web应用中直接使用hiberna
2007-04-17 20:08:00 1411
原创 MDA
一直不太喜欢MDA,近来仔细想了一下,其实是不喜欢以图形方式存在的Model。其实象Hibernate, ROR这些,其实也相当于MDA,只是模型在数据库中,或在代码中。所以,如果把代码中的模型也看成广义的模型的话,我对这类MDA还是比较看好的。其实最早接触这个概念是从NakedObjects开始的。在实际应用中,我觉得使用它们做一种类似快速原型(与原型不同的是,可以实际使用)的东西,然后在它基础
2007-03-09 18:47:00 1359
原创 希望Eclipse的Equinox容器引入更多的轻量级容器的内容
Eclipse is a container from the plugins perspective.I hope the container can inject the configuation into plugin. Or inject serviceinto my plugin, etc.
2007-02-07 23:18:00 1259
原创 Server Side Equinox
原来一直以为是由RSP项目来完成的服务器端插件框架的底层,哪知道竟是由Equinox Http(还在Incubator)项目做的底层。RSP是在它上面构建的一层。其实相对而言, Equinox Http项目是很小的,主要完成跟Servlet 容器的转接,和(插件)Framework的启动。另外再加上允许插件定义Servlet及映射,以及虚拟出一个Servlet容器(如ServletContext,
2006-07-19 21:46:00 1525 1
原创 Server Side Equinox
原来一直以为是由RSP项目来完成的服务器端插件框架的底层,哪知道竟是由Equinox Http(还在Incubator)项目做的底层。RSP是在它上面构建的一层。其实相对而言, Equinox Http项目是很小的,主要完成跟Servlet 容器的转接,和(插件)Framework的启动。另外再加上允许插件定义Servlet及映射,以及虚拟出一个Servlet容器(如ServletContext,
2006-07-19 21:44:00 1235
原创 对Ioc容器的一个期望
希望少一点配置,最好是直接用Annotation的方式就可以了比如:public class Client { @Injected private XXXService service;}现在的Ioc一般要指定bean name,有点烦人。一般一个应用中,同一个接口就只有一个实现的bean,所以不写name,要找到对应的bean应该不是难事,如果确实有多个实现的话,可以用:public
2006-07-12 18:05:00 911
原创 天下无球
我不反对足球,但世界杯期间搞得全民皆球,想躲过足球的围攻都难。随便打开个电视频道吧,什么都要象足球靠拢。唉。另:水木周平的文章:http://blog.sina.com.cn/u/48a082b70100046c
2006-07-06 08:52:00 1498 1
原创 Callisto发布了
Callisto终于发布了。我最期待的项目是:Data Tools, Web Tools, GEF其中GEF我比较期待的是WYSIWYG的文本编辑器。这个版本的这个编辑器好象不是重点,所以我对它不抱太大的期望。当初GEF做3.2计划的时候,看得出来是把这个作为一个重点的,但后来就好象没看到这方面的动作了。Web Tools中我比较期待的是可视化的HTML编辑器。坏消息是本版本中不包括。好消息是好象
2006-07-03 09:28:00 1821 1
原创 期待Eclipse Callisto
再过两天Callisto就要发布了。Eclipse 的开发节奏确实保持得很好,这也是敏捷方法的影响。个人认为能保证准时发布的关键还是敏捷计划。通过它的计划的变动情况就可以看出来。它的计划是会经常发生变化的。记得它的计划里面自己也提到了,会经常改变计划。另外Callisto的方式我也比较喜欢,象原来安装一个比较上层的插件,象Web Tools这些,要找到相关插件的合适版本都是一件非常吃力的事情,有时
2006-06-29 12:14:00 2664 7
原创 VS.Net 2005是个石器时代的工具
妈的哦,原以为VS2003够烂了,哪知道2005也没有多大起色。Web项目甚至还要差于VS2003。相对VS2003,VS2005的重构倒还可以。所以VS2003,VS2005都是石器时代的工具,要说区别,只是旧石器时代工具和新石器时代工具的区别而已。
2006-06-29 11:48:00 1636 7
原创 单元测试的运行要做到集成环境中去
这段时间用CC.Net,有个任务栏监控的工具,一旦集成失败会在任务栏中变红。可以让你变得对集成很敏感,一旦失败,会千方百计地把它弄对。这个工具有助于建立于我们对集成的重视。 程序员是懒惰的,这倒不是坏事。只是需要在选择工具及开发方法上要考虑到这点,再加上单元测试需要100%跑过这点,因此单元测试一定要放到集成环境中去。否则单元测试会一点点慢慢地死掉(王心凌第一次爱的人的歌词,顺便说一下,这首歌不错
2006-06-29 11:44:00 1118
原创 原型与实际系统
原型就象买房子时,开发商给的房屋模型.可以给你感觉,但缺少反馈,没住进去之前都会产生错觉.只有真正住进去(软件用起来做实际的事情)才会感到方便和不方便的地方.
2006-03-06 14:29:00 1487
原创 公共类做EntityBean的基类时Hibernate的Annotation属性设置
http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html#d0e602@EmbeddableSuperclasspublic class EntityBean { Integer id; @Id(generate = GeneratorType.AUTO) public Integer
2005-08-15 17:38:00 1496
原创 spring+hibernate测试和产品数据库不同的配置
最简单的办法是直接使用不同的配置文件,但会出现大量的重复.实际上不相同的部分只有一小部份.因此,可以将相同的部份放在一个文件中,把不同的部分放到不同的文件中.Datasource部分比较简单,直接拆开放出来就可以了.但hibernate.dialect属性的配置就要麻烦一点,需要用属性来控制,而属性的定义会放在不同的文件中. class="org.springframewor
2005-08-10 09:12:00 1523
原创 测试时使用HSQL内存数据库的10个理由
对不起,暂时还找不出十个理由(开个玩笑,何必当真呢,不是流行吗)。勉强凑出五个理由,但我是坚决支持测试时使用HSQL的。1.环境无关换到另外的机器上时,不用做任何配置即可直接进行测试。2.运行速度快进程内调用,没有其它调用开销(这个并不明显,也许省了运行数据库服务器的开销更明显)3.可以每次重新建立表结构(incremental changes, embracing changes, travel
2005-08-10 07:27:00 2821
原创 Spring中使用Hibernate3的Annotation
Hibernate3 Annotation的SessionFactory创建需要有两个地方与用mapping resource的方式不同:Configuration需要使用新的org.hibernate.cfg.AnnotationConfiguration需要使用新的mappingClass元素而不是使用mappingResourceorg.springframework.orm.hiberna
2005-08-07 18:23:00 14199
原创 在已有的视图的弹出菜单上新增菜单项
plugin.xml point="org.eclipse.ui.viewActions"> id="cn.hrzsoft.workflow.jbpm.extension.viewContribution1" targetID=""> class=""
2005-07-12 09:10:00 1655 1
原创 使视图可以根据选择的内容变化而变化
public class FormView extends ViewPart implements ISelectionListener { public void init(IViewSite site) throws PartInitException { super.init(site); getSelectionService().addSelectionListener(this);
2005-07-12 09:07:00 1085
原创 弹出对话框选择工作区中的文件
ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( shell, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setInput(ResourcesPlugin.getWorkspace().getRoot(
2005-07-12 09:04:00 1477
原创 让Eclipse Plugins输入框可以提示Java类名
processor = new JavaTypeCompletionProcessor(true, false); processor.setCompletionContext(null, null, null); ControlContentAssistHelper.createTextContentAssistant(classNameText, processor);
2005-05-24 11:40:00 1733
原创 从IField得到对应的类型全名
IField field; String typeSignature = field.getTypeSignature(); typeSignature = JavaModelUtil.getResolvedTypeName( typeSignature, field.getDeclaringType()); field.getJavaProject()
2005-05-22 13:42:00 1477 1
原创 换十七寸液晶了
换十七寸液晶了,心情大爽。想来也是,一小点硬件上的投资可以带来生产率的极大提高。具体到十七寸液晶屏,最大的好处就是视野的增大,这样对阅读程序大有帮助。
2005-04-04 20:10:00 790
原创 Tapestry
早听说Tapestry的大名,在使用过若干个Web框架后,终于有机会一试。感觉如下:1.保证了html的纯洁,在最低干扰的情况下,可以只增加少量的jwcid属性。这样可以使整个动态网页的开发更适合敏捷开发的需要(网页的效果可以在不影响后台的情况下随时进行变动)。可以使用熟悉的工具进行html内容的开发,象FrontPage等。页面部分不包含代码,不需要额外的工具如JSP编辑器。代码可以直接使用熟悉
2005-04-03 08:42:00 1238
原创 整理下载文件与重构
下载的文件太多,也很想用目录把它们组织好。但是因为老是懒得整理,因此下载的文件老是很乱。究其原因,下载后的东西只使用了一次,以后就不会怎么使用了,因此不会去好好整理。我想出一个办法,就是把所有下载的文件就放到桌面,这样如果老不收拾它,它就会总是来提醒你。由此我想到重构,某种程度上看,其实跟整理下载文件也很类似。只是如果用这个比喻去套重构的话,我不知道把下载的文件放到桌面,对应重构应该是什么?是把新
2005-03-07 11:00:00 1001 1
原创 解耦与设计
解耦是好的,但这是在模块间这个前提下的。过分强调解耦,是过分设计的典型例子。因为我记得关于耦合的书上除了“模块间耦合度很低”,还有“模块内耦合很高”这样一句话的。 设想一下解耦到极限的状态,那就跟宇宙间所有物质在时间和空间上均匀分布一样,那就没有银河系,没有地球,我身上的这些物质也不会聚在一起让我在这儿说这些废话了:)。 因为我还存在,还在继续说废话,所以宇宙间所有物质不是在时间和空间上均匀分布
2004-11-18 11:04:00 1430
原创 JavaMail标题的中文问题最新版已经解决
记得老版本的标题(发送/接收)中有中文会出现编码的问题,现在用新的JavaMail版本没有这个问题了。另外如果内容为HTML的话,一般要设置编码为GBK,即在addPart的时候要addPart(part, "text/html; charset=/"GBK/"");
2004-11-16 10:04:00 2011
原创 Eclipse插件中使用本地库
新的基于MANIFEST.MF文件支持这种用法,其实这是标准的用法。具体做法是:在Plugin.xml的编辑器中的Runtime页中,点击生成MANIFEST.MF文件然后在MANIFEST.MF页中输入Bundle-NativeCodeos: XXX.dll;osname=Windows95;osname=Windows98;osname=WindowsNT;osname=WindowsXP;p
2004-11-16 09:52:00 983
原创 用匿名类引入Mock类
public class A { public void action() { .... //findSomeThingThroghClassB logic; .... }}先把A中需要B的部分findSomeThingThroghClassB logic提取成一个protected方法public class A { public void action() { .
2004-11-12 13:26:00 1512
原创 事件源生成模式
设有一个事件:interface XXXListener {void event1Happens(String param);void event2Happens(String param);}可以做一个对应的类:class XXXDispatcher extends Vector implements XXXListener { public void event1Happens(String
2004-11-12 12:54:00 1050
原创 界面代码重构有感
今天重构了一长段界面代码有感如下:1.测试,还是测试 因为没有测试,重构的过程中简直是无以为继,既不知道走到哪里了,也不知道下一步该做什么。2.MVC,旧话重提,还是测试 其实跟上一个话题有关,没有测试的根本原因是因为界面不好测试,再另上是Eclipse框架下的一个View,测起来更加麻烦。毅然决定使用MVC(倒不是我想,这段代码是一个负责控制多块语音卡的界面,因此比较适合用MVC),
2004-11-12 12:10:00 1105 3
原创 Eclipse RCP的视图位置的保存
从Browser例子中改出来的一个程序,不管怎么调整位置,最后重启应用的时候老是恢复缺省的位置。最后查了IDEWorkbenchAdvisor的代码,才发现只需要在Advisor中的initialize中加一句configurer.setSaveAndRestore(true);就可以搞定。
2004-11-10 08:19:00 2038
原创 中文内容Properties文件的编辑
http://propdev.sourceforge.jp/虽然是日本人编的,但还是比较好用,其实原理很简单,就是打开的时候转换一下,保存的时候转换一下。不过Java也真是,直接使用XML做Properties文件多好,不就没有这些问题了。另外这项功能应该是Eclipse自带的功能,给它做一个Feature Request。
2004-11-10 08:08:00 1321 2
原创 Increment Changes
Keep the change small.这是一个很有用的实践,可以应用在很多地方:编程,配置,甚至做饭(我看到过的最好的应用这个实践的例子是我妈妈炒菜的时候 )。1.能够把一件事分成很多小步骤来做。2.每一小步做完都要能够检验。3.发现出错能够轻易倒退。其中第2步比较繁琐,象TDD就是用自动测试来保证的。
2004-11-04 12:35:00 874
原创 微软的打包方案和Sun Java打包方案比较
可执行文件: 微软Windows的方案是com, exe和dll。这种结构跟内存及机器码有很好的映射关系。 Sun Java的方案是zip格式。资源文件(如图片等) 微软方案是专门一种格式。 Sun Java的方案是如同普通文件,只是打包进jar。共享库及共享组件 微软方案是Path,dll,activex及注册表。 Sun Java的方案有两个:Classpa
2004-10-28 20:09:00 957
原创 对象的柔性
对象有较大的柔性好象这是不用说的。但给我一个气球说它柔,我绝对是靠捏它看它的形状随着我的力度变化而变化而又还是个气球(当然是在我没有下辣手的情况)的时候才会认识到它的柔的。对象也是一样。以前说对象有柔性,往往是人云亦云,并没有真正体会到它真正的柔性。直到不断使用重构的技术,不断改变代码的形状,并在改变形状的过程中产生了对对象柔性的更深的理解。重构对我最大的帮助在于它使我明白了设计的过程是一个动态的
2004-10-24 20:12:00 896
原创 rhino Javascript Engine, BSF及多线程应用
做一个应用时需要嵌入javascript支持,原先使用的是BSF,但因为变量作用域的问题(这个BSF是不支持的),所以改成直接使用rhino。看了半天它网站关于Context和ScriptableObject的介绍,误认为通过cx.initStandardObjects()方法生成的ScriptableObject是与Context相关的,因此在多线程时应用会有问题。加上为多线程写测试用例比较困难
2004-10-14 19:52:00 2004 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人