月度归档:2006年05月

JForum开发框架介绍

前言
    一直很懒,很少写些技术相关的东西。难得因为工作的需要有写些,帖上来吧。其实我对JForum也没太认真的研究过,所以如果里面有些什么不对的地方还请大家指出来。
 
JForum开发框架介绍
    JForum是著名的开源论坛,支持多达数十种的多国语言,其中包括简体中文(管理界面没有完全汉化)。JForum功能强大,界面美观,加上代码结构清晰,而且采用的是BSD授权,不必担心不必要的版权纠纷。可以说JForum是论坛二次开发的绝佳选择
    JForum采用的是自己的MVC框架,因此在初次接触的时候可能会有些不习惯,但在熟悉后,该框架还是很容易使用的。在这里只是对JForum的框架进行简单的介绍以利于利用JForum进行二次开发,具体的细节请参考JForum代码。
    JForum的MVC框架有些类似Struts。
    先看请求的url地址/bbs/jforum.page?module=recentTopics&action=topRep_Topics_thisDay。
    首先在在web.xml中配置过滤器,将所有以.page的请求交给net.jforum.JForum统一处理转发。请求在交给JForum后,JForum要获取传递过来的一些参数从而决定由哪个模块来具体处理请求。参数module,决定由哪个模块来处理。model的名字和具体class的对应关心在配置文件modulesMapping.properties里进行配置。当前操作由具体的哪个函数处理由action参数指定。action就是要执行的方法名,在无法找到指定处理方法时执行list方法。在处理完请求后,调用this.setTemplateName(TemplateKeys.SSOEXT_TOPREPMSGS_PERDAY);方法设置返回页面。其中页面和页面名称的对应关系在templatesMapping.properties中设定。
    再简单的介绍一下JForum新增功能的开发流程。新建一个Action继承Command。在配置文件中modulesMapping.properties中增加新建立Action的对应关系。实现Command中定义的list方法,完成在未指定action情况下的默认操作。在templatesMapping.properties中增加返回页面的对应关系,在类TemplateKeys里增加返回页面和templatesMapping.properties配置文件里的对应关系。利用this.setTemplateName(TemplateKeys.RECENT_LIST);设置返回页面。
    JForum默认采用的是FreeMarker作为表示层,但如果对FreeMarker不熟也可以采用jsp做为表示层的实现。

Delphi中的自动垃圾回收器

    在传统的开发语言中,分配的内存必须手动释放。但在对象多处引用的时候要判断具体该什么时候释放还真不是件容易的事情。更有甚者不少程序员只创建对象但根本就不进行释放
    听朋友说C++有自动垃圾回收的库,据说用起来还不错。也曾找过Delphi的自动垃圾回收器,未果。最近在找Delphi的容器类的时候看到decal的介绍中有谈到,decal是商业类库SDL的简化版本,去掉了自动垃圾回收等特性。
    今天去下了decal的帮助来看,里面提到垃圾自动垃圾回收是由Boehm来实现的。Boehm?上网搜索一下,找到了《API for Boehm Garbage Collector DLL》。在Delphi中使用自动垃圾回收。下回来看了一下,使用的就是HP的垃圾回收器(GCJ使用的就是这个垃圾回收器)。在Delphi中使用只是写了几个接口文件,调用DLL中的函数而已。
    看了一下里面带的DEMO,再用内存泄露检查工具测试了一下,似乎还挺有效的。使用起来也很简单,只要将GC放到单元引用的第一个就可以了。
    有把她用到了公司的软件里。虽然上次修正过一次,但还内存泄漏问题还是挺严重的。希望加上自动垃圾回收后能有些作用

Delphi果然没卖成功

    今天在QQ群里听说Delphi卖给了DevCo。DevCo?没有听过。再一打听,原来是从Borland分出来的新公司。
    呵,我就说嘛,Delphi这东西我是实在是想不出谁会买。不是幸灾乐祸,只是事实。Delphi的逝去是一个时代逝去。Delphi的优势是RAD,快速开发。Delphi被广泛的用于C/S模式应用程序的开发。但网络的兴起,java、.net的出现,极速侵蚀了原生开发工具的市场。原本许多C/S模式的用程序现在都该用B/S模式。而对于和操作系统及性能要求相对较高的一些应用程序,Delphi由于自身问题及算法库等相关资料的缺失,一直难敌C++。为此Delphi被推向了高不成低不就的两难境地。Delphi注定了他的相对小众。
    小众就小众吧,除非它不出64位的版本,和32位的系统一起发霉,不然应该挂不了。感觉现在的Delphi世界还算正常。以前的一些Delphi程序还需要维护,少量的新项目还在用Delphi。“老人”走了,却未见来者,要找份Delphi的工作也不至于太难。相比前两年,Delphi的寒冬算是过去了。想当年就没看到几个要Delphi的
    Delphi,我依旧喜欢摆弄,却再也不想将其作为一个职业了。
    周末把代码给整一下,给cnpack提交个代码,也算是为我喜欢的这个开源工具做点贡献吧