2009年8月24日星期一

RCP 编程记录

RCP Perspective中View的布局
Perspective用于把一组任务相关的视图组合在一起提供给用户,其中有个区域叫做EditorArea,这个区域用于放置编辑器。
如果你的perspective无需编辑器,则可以通过pageLayout.setEditorAreaVisible(false);把编辑区域隐藏起来。这样,你的workspace就不会有一块灰色的区域了。

如果想让两个view占据一个位置(如IPageLayout.RIGHT),在Perspective类中的createInitialLayout用如下方法:
IFolderLayout folder = layout.createFolder("messages", IPageLayout.RIGHT,
0.75f, IPageLayout.ID_EDITOR_AREA);
folder.addPlaceholder(View1.ID + ":*");
folder.addView(View1.ID);
folder.addPlaceholder(View2.ID + ":*");
folder.addView(View2.ID);

要使得一开始view不可见,只当用户点击触发showView的时候才显示,可以如下:folder.addPlaceholder(View1.ID + ":*");
不要加上folder.addView(View1.ID)就可以了。
如果要使得Editor消失不可见,可以在Perspective类中的createInitialLayout加上一句,如下:
layout.setEditorAreaVisible(false);
如果要使得某个view不能关闭,可以在Perspective类中的createInitialLayout加上一句,如下:
layout.getViewLayout(View.ID).setCloseable(false);


TableListViewer的可编辑cell
按照一般的套路:设置tableviewer的columnProperties;设置CellEditors;设置CellModitifier;
其中实现ICellModitifier接口比较繁琐点。
最后值得注意的是:需要把ListTableView设置为SWT.FULL_SELECTION。否则,就必须单击两次,第一次表示选中,第二次表示编辑。

2009年8月6日星期四

用spring构造bean的3种方法。

1)直接构造
2)用静态工厂方法
3)非静态工厂方法。

这是一段静态工厂方法的例子,向工厂方法传递参数使用constructor-arg。

类功能的分配

开始写了个TclExecutor类。这个类可以执行tcl语句、tcl 文件。因为tcl interpreter是在这个类中创建的,interpreter是用一个线程在后台驱动的,所以我把TclExecutor当作资源类。是资源的东西,当然是要被管理的,否则就有资源泄漏的危险。所以,我就加入了结束tcl executor生命的方法disposeI(), disposeAll()。
因为要管理这些资源,又让TclExecutor的构造函数接受一个字符串当作executor的名字。以后就可以用名字来定位需要的executor。
为了定位,就需要一个管理类来管理这些executors。可以把这些管理executor的方法通通写到TclExecutor 中,也可以单独写一个manager类。

当代码紧凑不是优点而是缺点时,就已经没有理由不把这些功能分别安排到不同的类中了。

2009年8月1日星期六

setup svnserver for windows

1)从http://subversion.tigris.org/ 下载svnserver.

2)创建一个reaml svnadmin create E:\svn_repository\dahui

3)在新的reaml下的conf目录中,配置密码及其它。
passwd文件:
[users]
admin = mypassword

svnserver.conf文件:
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = goreader

2009年7月21日星期二

clone 和copy/paste

今天需要写一个copy/paste的功能。copy的动作执行以后得到都是data的reference。需要一个clone的动作。而以前的数据对象根本没有定义clone()。
可以总结一条了:当一个数据对象需要被copy/paste时,请准备好clone()方法。

对于糟糕的遗留系统的补丁,我真的觉得是浪费生命。平时觉得稀松平常的原理,在这种系统面前凸显价值,但是,这种价值此时也只能成为教训了。

今天还给诺西的同事show了一下如何用itcl写spirent testcenter的tcl。 如果当初他们写tcl之前好好建模,好好学习itcl,现在对新需求的应付应该是很轻松,很轻松了。

一个项目的成功也许是因为技术的失败而失败。但是,归根结底是因为管理的失败而失败,决策的失败而失败,用人的失败而失败。
技术上的保障只是项目成功保障链条上的最后一环,前面的环节更具决定性。

面向对象的方法是一种思考问题、解决问题的方法,不单纯的是一种语言。

2009年7月16日星期四

技术平台

断断续续地琢磨CLTF也好久了。今天再看Jelly,却发现有些需要的特性是Spring提供的,而在Jelly中不能获得。再一想,Jelly提供的最基本的功能,其实自己也可以比较容易的模拟出来。看来需要考虑使用一下Spring了。

Groovy其实也应该是很好的。毕竟是解释型的,改动一起来应该很容易。

最基本的技术选择,看上去简单,确实最具影响力的。

2009年7月15日星期三

Object System for TCL

下面这篇文章很好地讲述了用TCL语法模拟一个简单的Object system。http://users.telenet.be/koen.vandamme1/papers/tcl_objects/tcl_objects.html
对文章中的“Object orientation is really just a way of thinking; it has more to do with design than with implementation.” 深有体会。

http://www.tcl.tk/about/oo.html
这是一篇关于object tcl情况的简单介绍。到tcl 8.6,TCL将内置一个object system了。

目前存在的用于tcl的object system有:incr tcl, Snit, XoTcl ...

incr TCL的HomePage: http://incrtcl.sourceforge.net/itcl/