StoneAgeDict开发迭代0小结

从2008年2月1日到2008年2月14日的第0次迭代结束了。

在本次迭代中,我们完成了:

1. StarDict(星际译王)词库格式的查询引擎

2. Web站点的框架(Spring)、开发环境搭建

3. 桌面版本的查询界面和功能集成(Swing,集成了StarDict的查询)

4. Dynamic类型词库(XML词库)的核心查询/修改引擎

优先级较高的Defects在项目管理中心里也发布了,但这里还是要提一下其中一个缺陷:StarDict查询引擎的空间效率底下。

目前的测试表明,加载桌面界面和约60多W的词库后, 耗费内存大约在60多M!这个性能估计不是用户可以接受的,而且这只是加载了两部辞典。

原因是因为词汇的索引文件完全导入内存所导致的。

下一次迭代的计划中加入了这个Defect的修复Task。

对于本次迭代,进度上面基本符合我们开始前做的计划。下次迭代的计划已经发布在项目管理中心了,请大家留意。

因为前几天讨论了一下插件机制,所以在系统的Fixed类型的词汇引擎设计上面会有所变动,这样的目的只有一个:可以让用户更好地使用我们的StoneAgeDict!

在迭代1还没开始前,我具体地说一下这个变动(这里,只围绕Fixed类型的词库讨论)。

1. StarDict查询引擎作为我们的核心引擎不变,允许用户采用安装词库解析引擎插件的方式进行扩展

2. 整个Fixed类型词库的查询使用的是OSGi的服务机制:可扩展的Service-Oriented组件服务模型。在查询Fixed类型的辞典时,使用已注册的Fixed查询引擎插件提供的服务

这样做后,用户可以查询到更多的词汇了。

带来的一些思考

1. 我们是不是在Fixed类型的词库上花太多时间?

我认为,这个是一个辞典最基本的功能,要做产品化,必须要先有符合用户最基本需求的产品。一个辞典,查询得到多少词汇,方便程度是用户关心的首要问题。

关于“开放式”、“实时”的设计,我们在首次迭代(迭代0)中并不是什么都没做:Dynamic类型的词库——XML词库的核心引擎已经做了部分了。

2. 我们的StoneAgeDict可以产品化?

目前不行,至少我现在这样认为。在Windows下面,金山词霸垄断了很多年了;在Linux下面,StarDict可以说也是处于垄断地位的。我 们兼容StarDict为的就是让我们可以有一点点的市场空间(用户可以直接使用以前下载好的词库)。如果要产品化,要有自己的特色:开放式、实时!要以 这个特色抓住用户才行的吧。

3. 到底什么是“开放式”、“实时”?

首先,我理解的开放式不是对全部人的开放。对全部人开放,Wikipedia、百度词条等等类似的Wiki已经实现,他们完全可以实现一个专门针对词汇解释、更新的“词汇Wiki版”出来,我们为什么还要做呢?

况且,考虑到Wiki维护的困难度,要专门的一队人马维护词库,审核用户对词汇的更新,得不偿失啊。。。。

我们要做的是仅仅在用户,用户好友这个范围内的开放。

这里,我举个应用场景:

 =======

Martin Fowler是一个软件工程界的专家,开发软件30多年,有着很多大型项目的管理、设计和开发经验,他提出的一些思想也在引领着现在整个软件开发业界。

某天,对于软件设计,他提出了两个词:IoC,DI,并在他的Blog上写了篇讨论Ioc/DI的文章。其中倡导的设计思想,得到业界的广泛认可。

但是,对于吾辈,这两个词到底是什么意思?

在刚刚Martin提出他的IoC/DI的时候,XX看了Martin的Blog,理解了IoC/DI。并把对IoC/DI的核心解释翻译成了 Chinese,借助StoneAgeDict把IoC/DI这个术语加入到了他和好友的词库中。当然了,和他共享这个词库的好友也是活跃在软件工程界多 年的专家 :-),大家看了IoC/DI解释后,进行了一些补充和修改。每次修改后,都要经过所有这个词库共享者的审核,大家都通过了后,这个词才算是正真修改成 功。XX和他的好友共同完善了对IoC/DI的中文定义。

后来,XX及其好友决定把一些国际上先进的软件工程、软就设计思想理念推广到国内,让大家一起学习。所以,他以邮件的方式向 StoneAgeDict维护组提出了把他的词库加入到StoneAgeDict IT词库的申请。StoneAgeDict词库维护组相关人员看了词库里的所有词汇定义(不是很多,就1000多个,但是都是精华)并通过了审核。这样, XX的词库被加入到了StoneAgeDict IT共享词库中,从此后,所有人都可以看到XX和他的好友的贡献了!

 =======

 所以,我认为,小范围的开放式是大范围开放式的前提。

4. 关于保证词汇解释全面的手段

用户查询一个词的时候,看到的解释自然是越全面越好。几部Fixed类型的辞典肯定是不能满足这个需求的,所以才会有Dynamic词库。但是,基 于我们的设想,Dynamic词库的发展不是一下子就可以积累起来的,可能需要很长的时间。所以,本着为用户考虑出发,才有了现在基于词汇查询插件的架构 思想。可以扩展N多的词库引擎插件,搜索WikiPedia的,百度百科,等等等等。在用户使用StoneAgeDict时,即可以查询到很多词汇的定 义,又可以把自己的词汇方便地共享给他/她的好友,我们的目的就达到了 :-)

 

posted on 2008-02-15 20:44  岚之山  阅读(125)  评论(0编辑  收藏  举报

导航