`
javasalatu
  • 浏览: 756892 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7821
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    迭代器失效小结

    迭代器失效小结

    产品迭代开发流程图

    ### 产品迭代开发流程详解 #### 一、项目立项与规划 在进行任何具体工作之前,首先要明确项目的立项。这一步骤通常涉及到对项目背景、目标、预期成果以及潜在风险等因素的综合考量。项目立项阶段完成后,需要进一步...

    使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板

    使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...

    平台建设项目设计开发一体化-版本迭代需求清单模板.docx

    在IT行业中,平台建设是一项复杂且关键的任务,它涉及到多个环节,包括设计、开发、测试以及版本迭代。本文将详细探讨“平台建设项目设计开发一体化”中的版本迭代需求清单及其重要性,以及如何有效地管理和执行这样...

    软件工程中的迭代开发方法.pptx

    - 将软件开发过程划分为多个小步骤,每个步骤都包含了需求分析、设计、编码和测试等基本活动。 - 目的是为了快速响应变化的需求,并通过快速迭代和反馈来改善软件。 - **迭代开发原则**: - 遵循“持续交付、...

    Rational迭代化软件开发

    Rational迭代化软件开发强调将整个项目分解为一系列小的、可管理的迭代周期,每个周期都包含计划、设计、实现、测试和评估等关键阶段。这种方法的核心思想是通过逐步完善来构建软件,而不是一次性完成所有工作。 ##...

    数值分析雅可比迭代高斯迭代法实验报告.doc

    在数值分析领域,雅可比迭代(Jacobi Iteration)和高斯-塞德尔迭代(Gauss-Seidel Iteration)是两种广泛用于求解大型线性方程组的方法。这两种迭代法都基于矩阵分解和迭代更新的思想,适用于处理稀疏矩阵问题,...

    RUP迭代开发过程

    RUP迭代开发过程,喜欢研究面向对象的软件开发模式的朋友可以看看。

    迭代化软件开发

    迭代化开发的基本思想是将整个项目的开发目标划分为多个更小、更易于管理和完成的阶段性目标。每个阶段性目标(即一次迭代)都包含了一系列开发活动,如需求分析、设计、编码、测试等。每个迭代结束后都会对完成的...

    软件工程中的迭代与增量开发模型.pptx

    软件工程中的迭代与增量开发模型知识点总结 一、软件工程概述 软件工程是一门研究如何以系统化、规范化、可度量的方法开发和维护软件的学科。其目的是降低软件开发和维护的成本,提高软件的质量和可靠性。软件工程...

    newton 迭代算法小程序

    - 初始化:设置初始值x_0,设定精度阈值和最大迭代次数。 - 主循环:执行牛顿迭代公式,检查每次迭代后函数值的改变是否小于精度阈值,若满足则停止迭代,否则继续。 - 输出结果:打印最终的零点估计值和迭代次数。 ...

    管理迭代化的软件开发项目

    与瀑布模型相比,迭代化开发强调的是将复杂的项目分解为一系列较小、更易管理的迭代周期。在瀑布模型中,从需求分析到测试的各个阶段通常是线性的,一旦进入下一个阶段,前一阶段的工作就不可更改。然而,这可能导致...

    Jacobi迭代算法_jacobi迭代_Jacobi迭代法_SOR迭代法_Gauss-Seidel迭代法_迭代法_

    - 检查收敛性:当解的变化足够小或者达到预设迭代次数时,停止迭代。 2. Gauss-Seidel迭代法: Gauss-Seidel迭代法是Jacobi法的改进版,它在同一迭代步中更新所有未知数,从而加快了收敛速度。其迭代公式如下: ...

    迭代软件开发流程.doc编程资料

    迭代软件开发流程.doc

    Jacobi迭代法 实验报告.docx

    **Jacobi 迭代法**是一种在数值分析中用于求解大型线性方程组的迭代方法,由德国数学家卡尔·威廉·雅各比(Carl Wilhelm Jacobi)提出。这种方法特别适用于处理对角占优的矩阵,即矩阵中对角线元素的绝对值大于其...

    基于迭代化增量开发模型的高职“数据结构”课程实验设计.pdf

    迭代增量模型本质上是一种周期性的开发方法,通过重复的核心开发活动,如需求分析、数据结构/算法设计、编码实现和测试,逐步细化问题解决方案和实现功能。在软件开发的每个迭代周期中,项目的功能模块会逐步完善,...

    ANSYS二次开发 牛顿迭代

    ### ANSYS二次开发中的牛顿迭代法及其应用 在ANSYS软件中,用户可以通过二次开发的方式自定义材料模型、接触行为等,以满足特定的研究需求。其中,Usermat(用户自定义材料模型)是一个非常重要的功能,允许用户...

    《迭代化软件开发》PDF技术白皮书

    Rational统一软件开发过程迭代开发技术白皮书,对RUP有什么问题可与我交流。study1860@163.com

Global site tag (gtag.js) - Google Analytics