zoukankan      html  css  js  c++  java
  • 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时,即可以查询到很多词汇的定 义,又可以把自己的词汇方便地共享给他/她的好友,我们的目的就达到了 :-)

     
  • 相关阅读:
    如何在腾讯云上安装Cloud Foundry
    Chrome浏览器扩展程序的本地备份
    如何在Kubernetes里创建一个Nginx service
    如何在Kubernetes里创建一个Nginx应用
    在Mac里给Terminal终端自定义颜色
    linux sed命令详解
    跟我一起写Makefile--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量)
    makefile详解 嵌套执行make,定义命令包
    makefile学习笔记(多目录嵌套调用、变量使用)
    Makefile所有内嵌函数
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470592.html
Copyright © 2011-2022 走看看