教学教学讲解课件_第1页
教学教学讲解课件_第2页
教学教学讲解课件_第3页
教学教学讲解课件_第4页
教学教学讲解课件_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

星际译王-自由软件介绍星际译王-自由软件介绍1内容1.个人简介2.星际译王软件介绍3.技术介绍4.开发历史5.我开发的一些其他软件6.其他兴趣爱好7.提问和交流内容1.个人简介2本人简介胡正,83年出生,湖南岳阳人。2006年从四川大学毕业。在大学里开发了星际译王等软件。曾获中国开源软件竞赛金奖。对哲学和佛法很爱好,写了一些非正式的书。目前在红帽Linux公司工作。本人简介胡正,83年出生,湖南岳阳人。3星际译王简介星际译王是一个跨平台(能在Linux下和Windows下运行)的国际化的词典软件,使用C++语言开发,并使用了GTK2库作为图形界面,开放源代码,并遵循GPLv3协议。星际译王简介星际译王是一个跨平台(能在Linux下和Wind4功能星际译王功能强大,除基本的即输即查功能外,还有通配符匹配,模糊查询,全文检索,正则表达式匹配,屏幕取词等功能。星际译王3.0版新加了插件系统,网络词典等功能,已经渐趋完善。功能星际译王功能强大,除基本的即输即查功能外,还有通配符匹配5运行主界面运行主界面6取词窗口取词窗口7词典管理在词典管理对话框中,你可以屏蔽掉不需要的词典,你也可以设置词典查询的顺序。词典管理在词典管理对话框中,你可以屏蔽掉不需要的词典,你也可8首选项在首选项窗口里可以进行各种配置。首选项在首选项窗口里可以进行各种配置。9插件管理插件管理10图形化网状词典插件图形化网状词典插件11全文翻译全文翻译12网络词典功能网络词典功能13Windows移植版本Windows移植版本14包含金山词霸词典金山词霸的所有版本的所有词典都可以转换后在星际译王中使用。包含金山词霸词典金山词霸的所有版本的所有词典都可以转换后在星15使用所有Babylon词典星际译王也开发了Babylon词库转换程序。使用所有Babylon词典星际译王也开发了Babylon词库16项目主页项目主页17词典下载页面目前星际译王已经有两千多个词典下载,包含各种语言和类型。词典下载页面目前星际译王已经有两千多个词典下载,包含各种语言18安装星际译王安装十分方便,在Linux下提供了RPM包,在Windows下有向导式的安装程序。安装星际译王安装十分方便,在Linux下提供了RPM包,在W19MacOSX苹果移植MacOSX苹果移植20NokiaN800移植NokiaN800移植21GPE手机移植版本GPE手机移植版本22星际译王在线词典网站星际译王在线词典网站23Ajax界面网页Ajax界面网页24跨平台目前星际译王能在Linux,FreeBSD,Solaris,Windows等平台上运行。MacOSX苹果移植版也已经推出。星际译王还有专门的命令行版本,叫做sdcv。跨平台目前星际译王能在Linux,FreeBSD,Sol25国际化由于有UTF-8支持,星际译王能支持各种语言。如德语,法语,俄语,日语,阿拉伯语等。星际译王还收集了广泛的词典数据,包含了各种各样的语言。因此星际译王在国外也有很多的用户。目前是在Linux系统下最流行的词典软件。国际化由于有UTF-8支持,星际译王能支持各种语言。如德语,26高效率星际译王自己设计了词典文件格式,访问效率极高,支持数据压缩,扩展性也很好,并使用了稀疏索引技术,使用时的内存消耗很少。高效率星际译王自己设计了词典文件格式,访问效率极高,支持数据27广受欢迎星际译王得到了广大用户的欢迎,目前下载量已达到400万以上,每天下载量在8千左右。项目主页的每日独立IP访问在几万以上。在SourceF的全球自由软件排名目前是八十名左右的位置。广受欢迎星际译王得到了广大用户的欢迎,目前下载量已达到40028开发历史星际译王在2003年开始开发,现在已经比较完善,现有代码8万行左右,其中主程序2万行,词典引擎库3万行,插件1万行,工具1万多行,目前还在不断维护中。主要工作是由我做的,来自俄罗斯的Evgeniy也曾做了不少贡献。有非常多的用户和爱好者也进行了参与。项目主页是:开发历史星际译王在2003年开始开发,现在已经比较完善,现有29获奖2004年获得第一届中国开源软件竞赛金奖。2005在香港举行的“金企鹅杯”两岸四地开源软件大赛中获得杰出创意奖。代表分别来自港澳台和大陆。第一届中日韩开源软件竞赛中作为中方四名代表之一进行参赛,和其他国家的选手进行了友好交流。获奖2004年获得第一届中国开源软件竞赛金奖。30商业回报毕业工作半年后,在2007年一月以一个六位数将在线词典网站和软件所有权卖给了一家翻译公司。商业交易后软件继续保持开源,我们仍然一起合作并致力于改进和维护星际译王的发展。商业回报毕业工作半年后,在2007年一月以一个六位数将在线词31开发开源项目对毕业后找工作的帮助由于有很强的项目实践经历,培养了实力,所以找工作比较简单。毕业后到北京飞漫嵌入式Linux公司工作是发了封邮件就定好了。去红帽面试时说到开发过星际译王,大家知道了我是谁,所以过程也很顺利。目前工作还是比较轻松自由,之前一段时间就是在工作时开发StarDict-3.0版。因为是开源软件公司,所以支持我们的开源项目。开发开源项目对毕业后找工作的帮助由于有很强的项目实践经历,培32目前的主要问题缺少其他开发者的参与和贡献。目前我自己的个人精力已经转变到一些其他的事情上了,所以难以继续做很多开发。希望能有高水平的开发者参与进来,维护和发展星际译王的后续版本。缺少技术支持人员。目前在StarDict论坛里发帖提问题的人很多,发信到邮件列表的人也比较多,但一直只有我一个人回复。平时回复邮件占了我很多精力,希望也有人能参与进来。目前的主要问题缺少其他开发者的参与和贡献。目前我自己的个人精33星际译王的一些技术细节1.词典文件格式2.查询引擎3.dictzip技术4.屏幕取词技术5.网络词典6.插件系统星际译王的一些技术细节1.词典文件格式34详细词典格式文档星际译王的词典格式是公开的,这意味着,其它软件可以自由读取星际译王的词典文件。由于StarDict词典文件格式设计简单而清晰合理,所以很多其它软件也在采用这种格式作为他们的词典数据,比如Macos下的mdict,手机上的NDS等等。详细文档包含在了软件源码包里。这是一个500多行的英文文档。因为软件一般都有国际化的要求,而且也会有其他国家的开发人员参与,所以用英文写文档和注释是一个好习惯,也能锻炼自己。详细词典格式文档星际译王的词典格式是公开的,这意味着,其它软35词典文件组成一个最基本的词典分为.ifo,.idx,.dict三个文件。还可以有.syn同义语信息文件,.idx.oft索引缓存文件(加快启动速度),.clt单词排序方法文件等,另外也可以有图片资源等目录文件。.idx文件可以用gzip压缩。.dict文件可以用dictzip技术压缩,生成.dict.dz文件。词典文件组成一个最基本的词典分为.ifo,.idx,.d36ifo文件内容Ifo文件包含词典的基本信息。是一个纯文本文件。ifo文件内容Ifo文件包含词典的基本信息。是一个纯文本文件37idx文件格式Idx文件格式也很简单。就是一个UTF-8编码的单词,加上\0字符结尾,然后两个32位数字,一个表示解释数据块在.dict文件里的偏移,另一个表示解释数据块的大小。接着就是第二个单词,依次重复。所有这些单词,按一定的排序规则来存储。比如利用类似strcasecmp的函数。idx文件格式Idx文件格式也很简单。就是一个UTF-8编码38dict文件格式dict文件是纯粹的数据块,每个数据块的开始偏移地址和大小记录在idx文件里了。由于idx文件里已经有了数据长度信息,所以字符串可以不要结尾的\0字符。数据块的类型由.ifo文件里的sametypesequence标识决定的。可以是纯文本,也可以是html,pango,xdxf,xml,音标,wiki标记等等,正因为如此,StarDict可以兼容各种其他词典的数据类型,只要开发相应的数据解析插件就行了。dict文件格式dict文件是纯粹的数据块,每个数据块的开始39查询原理StarDict通过读取ifo文件,获取了词典的基本信息。然后加载处理.idx单词索引文件,在内存里创建一个元素为32位数字的数组,数组大小就是单词的数量。每个数组成员的值就是对应单词在idx文件里的起始偏移。比如,第一个单词的偏移肯定就是0,假设第一个单词为apple的话,那么它的单词长度是5,加上结尾的\0占1字节,后面紧跟的解释数据偏移和大小两个32位数字占8字节,总共就是14字节,所以第二个单词在idx文件里的起始偏移肯定就是6+8=14字节,因此数组的第二个元素的值就是14。后面的单词偏移值都以此类推。由于记录了每个单词在idx文件里的偏移值,这样访问第99个单词时只需读取数组里的第99个数字和第100个数字的值,第99个数字的值就是第99个单词的偏移,第100个数字的值减去第99个数字的值就是第99个单词的大小。这样要访问第任意个单词,都可以非常快,只要相应的fseek和fread就行了。查询原理StarDict通过读取ifo文件,获取了词典的基本40折半查找在能迅速访问第任意个序号的单词后,加上单词已经事先排好了序,就可以用折半查找算法来查找对应的词了。比如查找apple这个词,同时词典里有1000个词,我们先取出第500个词,假设是banana,通过strcasecmp比较,我们肯定a开头的是在b开头的单词的前面,所以我们继续读取第250个单词,再进行比较,又确定是再读取比较第125个单词还是第375个单词。这样范围慢慢缩小,最后找到了apple这个单词的位置,(如果未找到,就可以返回显示未找到了)比如是第85个单词,我们就同时取到idx文件里apple字符串后面的两个数字,有了偏移和大小,再访问.dict文件里的数据块,这样就把解释也读出来了,然后再通过解析,就可以把意思显示到软件界面上来了。实际中的星际译王是使用的稀疏索引折半查找算法,这样稍微复杂些,但需要的索引数字的数组大小可以只要原来的1/32,这样就达到节省内存的目的。这个数组的内容还可以保存为.idx.oft文件,下次直接mmap加载到内存中,以加快词典加载速度。折半查找在能迅速访问第任意个序号的单词后,加上单词已经事先排41代码查看这段稀疏索引折半查找的代码只有80行,相对于总共的80000行代码,只占千分之一,可见一个软件虽然原理简单,但要做到好用,往往要涉及到其它的各方各面的细节,然后整体架构就会比较复杂了。这也就是Unix的KISS原则,Keepitsimple,stupid的意义所在了。因为复杂只有构建在简单上,才能掌控其复杂性。代码查看这段稀疏索引折半查找的代码只有80行,相对于总共的842dictzip词典压缩技术对词典的文本解释数据进行压缩是很常见的需要,但一般的压缩方法只能从头到尾进行顺序解压,而词典需要快速访问某一特定偏移和大小的数据,因此dictd软件项目设计了基于gzip的压缩技术,在gzip文件里的附加信息块里保留各个压缩分块的偏移信息,以达到前面的目的。同时解压却可以仍然使用gunzip工具,保持了兼容性,从而很方便。由于dictd也是使用GPL协议的自由软件,所以星际译王可以自由地修改和采用她的代码,只要继续保持开放就行了。这样自由软件之间进行技术共享就很大地方便了开发者,大大减少了工作量,不必重复开发,重复发明轮子。dictzip词典压缩技术对词典的文本解释数据进行压缩是很常43屏幕取词技术星际译王在Linux下使用的是选中区取词,利用的是x-window的机制。用户只需双击选中单词就行了。星际译王的windows版本也实现了金山词霸那样的屏幕取词功能。这个功能以前一直是一个不公开的难点技术。后来有人告诉我有个俄国的开源软件实现了这个技术,通过阅读它的delphi源码,我编写了c语言的dll代码,同时阅读了一些相关技术文档,对它进行了改进,使其成为独立的模块,从而攻克也公开了这个技术。现在任何感兴趣的人都可以阅读和使用这些代码了。屏幕取词技术星际译王在Linux下使用的是选中区取词,利用的44网络词典星际译王的在线词典网站目前由stardictd词典服务端,stardict-client客户端和php代码三部分组成。StarDict软件也可以直接连接到stardictd端口来查询单词和进行用户设置等。一般的词典网站是利用数据库来提供查询,但开发专门的词典数据服务端能更高效,查询机制也可以更专业。目前stardictd在加载30G的词典数据后也只需16M的内存,而且运行非常稳定快速。网络词典星际译王的在线词典网站目前由stardictd词典服45插件系统在软件里增加插件系统能大大提高软件的扩展性和灵活性,使代码更加模块化,降低复杂性。一些不在核心但可以独立的功能可以开发为插件,这样用户可以选择是否加载对应插件来取舍这些功能。插件系统就是一个加载,管理,调用插件的复杂类,并设计了各种插件类型和对应的调用接口。在软件里的合适位置再进行调用。插件系统在软件里增加插件系统能大大提高软件的扩展性和灵活性,46星际译王的源码星际译王的源码还是开发得比较仔细严密,代码质量比较高,一直以来很少有bug。对于感兴趣的同学,可以下载研究阅读一下其代码,肯定会有不少收获。因为软件的所有设计思想,技术精华等等都全部包含在源码里了。星际译王的源码星际译王的源码还是开发得比较仔细严密,代码质量47开发历史和经历星际译王的源码包里有一个ChangeLog文件,里面记录了每个版本的修改历程。开发历史和经历星际译王的源码包里有一个ChangeLog文件48大学时的开发经历2003年3月,大二下学期,开始星际译王项目。大三上学期完善了StarDict,推出2.4.2版,星际译王成为了一个完整的词典软件。然后休息了一年半,大四毕业时推出了2.4.5版。因为学分不够,延期一年毕业,因此多读了一年,在上课之余主要开发StarDict,每三个月出一个版本,2.4.6,2.4.7,最后毕业时推出了2.4.8版,一年里基本上就只做了这一件事,但为软件的成熟打下了基础。星际译王作为一个本地的词典软件已经很有竞争力了。大学时的开发经历2003年3月,大二下学期,开始星际译王项目49工作后的开发在飞漫公司时利用业余时间开发出了在线词典网站和词典服务端。到红帽公司后,花半年时间开发出了3.0.0版。主要是加了插件系统和网络词典,以及大量的修改和完善。之后又过了三个月,推出3.0.1版。这个版本加了语音朗读,WordNet图形化词典等功能,以及bug修复等。工作后的开发在飞漫公司时利用业余时间开发出了在线词典网站和词50开发软件项目的工作量软件的开发需要耗费非常多的时间和精力,因此一个简单的词典软件也需要近五年的时间,还好开发好后可以全球几百万人使用,这样效益就可以体现出来了。8万行代码,用A4的纸打印出来,就是一千多页,这是非常厚的一本书了。而且是一行行写出来的,还得保证整体的严密统一,要求没有任何逻辑错误等等,不然就是Bug。可见其中要包含的心力是非常多的。收集的两千多个词典,也是一个个加起来的。一直不断积累才可以达到这个数量,维护整理也是要花去很多时间。经常要编写专门的转换工具。这几年回复处理的相关邮件有五六千封,平均每天都有好些封。3.0.1发布后,平时一打开邮箱就是二十几封新邮件待处理。付出就是回报!这个世界没有不劳而获,也没有劳而无获。其中有很多乐趣,也很有意义。经历了就不会觉得难,所以其实也不算什么:)开发软件项目的工作量软件的开发需要耗费非常多的时间和精力,因51参与自由软件能认识很多朋友你会与很多国外的不认识的朋友一起做事情和交流,增进了大家的友谊,也扩大了见识面。你会认识很多大学里的Linux爱好者,因为Linux崇尚的开源共享和自由精神,大家都是很友善很好的人,相处会很愉快。可以进入国内的一些Linux圈子和参加聚会活动,让生活更加丰富多彩。参与自由软件能认识很多朋友你会与很多国外的不认识的朋友一起做52开发的其他软件reciteword-0.8.4,一个界面漂亮,功能强大的跨平台的背单词软件。开发的其他软件reciteword-0.8.4,一个界面漂亮53开发历史和起因大一时为了背四级单词,经常要用一个叫《轻轻松松背单词2》的软件,可每次要背单词都要重新启动进windows实在是麻烦,而且对《轻轻松松背单词2》的一些地方也不满意,于是我就自己编了个软件用,模仿了其主要功能,而且使用了她的图片作为皮肤。前后花了一年时间。现在已经只维护了,但一直可用。前一阵推出了0.8.4维护版。觉得开发背单词,词典这样的软件的一个好处就是一二十年后仍然会有人要使用,需求会很持久。这也是我做项目的一个主要考虑方面。开发历史和起因大一时为了背四级单词,经常要用一个叫《轻轻松松54选书选书55单词初记-分组单词初记-分组56单词初记-浏览单词初记-浏览57单词初记-测试单词初记-测试58强化复习-选组强化复习-选组59强化复习-测试强化复习-测试60强化复习-单词再现强化复习-单词再现61单词打靶单词打靶62打字神功打字神功63小词典小词典64另一套皮肤另一套皮肤65大二时日夜开发ReciteWord那时经常连续开发两三个月,有段时间每天凌晨三四点才睡,并因此得了阑尾炎,从此才学会再也不熬夜了,保持过有规律的生活!大二时日夜开发ReciteWord那时经常连续开发两三个月,66MyicqMyicq是一个类似QQ的即时通讯软件,张勇开发了服务端和windows客户端,我加入了这个项目,就先编了个gaim的插件,这样就可以在linux下上myicq了.不过后来这个项目没有发展成功,毕竟跟QQ,MSN竞争还是很难。MyicqMyicq是一个类似QQ的即时通讯软件,张勇开发了67友情强档forlinux,一个记录个人信息的软件。高中时编的。我也是高中时接触的Linux.友情强档forlinux,一个记录个人信息的软件。高中时68BBS彩票系统BBS彩票系统69地图浏览软件地图浏览软件70手写输入笔画数据库编辑软件这个是用python编的。手写输入笔画数据库编辑软件这个是用python编的。71教学教学讲解课件72如何访问我的主页Baidu或者Google我的名字(胡正)就行了,第一个就是。欢迎大家留言!如何访问我的主页Baidu或者Google我的名字(胡正)就73我的两项技能:写书和写软件大学时一直保持写随笔。因为遇到一些生活中的重大问题,开始研究哲学,并因此写了很多思考笔记。现在还是在继续写一些文章。一般一两个月一篇。最近几个月在学佛,因为实证了一些东西,所以对佛法很有信心,收获很大。我的两项技能:写书和写软件大学时一直保持写随笔。74以前写的几本书籍《我的世界之源代码》这本还好。《大学随笔》GeniusPhilosophy.pdfJan-20042.6MTheUtmostTruth.pdfApr-2004765kSchizophreniaNotes.pdfDec-20061.2M我比较喜欢探索新奇未知的东西,所以很可能会因此很痛苦,但实际上是以苦为乐:)以前写的几本书籍《我的世界之源代码》这本还好。75第六本书目前写的算第六本了,还是有点乱。主要是讲佛法。现在看来,觉得写的这些书都还不是很好,写得自己满意还是比较费功夫。觉得“行胜于言”更重要。以前的书写得都不是很正统,算记录生活和历程。有兴趣的可以在我的主页上读到。第六本书目前写的算第六本了,还是有点乱。主要是讲佛法。76目前的生活有时很好,有时很虚弱。因为比较累,待处理的事情很多。生生灭灭的事情见得比较多,所以对佛法会很感兴趣,因为他可以解释我遇到的许多问题。比如以前花了很多精力和爱好开发的软件,几年以后就都没有用了。这些都不是永恒的。现在是努力行菩萨道,就是自利利他,有(合理)求必应。修大乘佛法:)已经决定辞职休息半年,读书、完成那些自己想做的事情和到各地游历,遍访高山名寺。目前的生活有时很好,有时很虚弱。因为比较累,待处理的事情很多77书中有意思的话Jessica:对于道理没有好感。Hu:你不愿速知一切法吗?我对你的要求跟对猪的要求一样:吃好,睡好,别思考。最好什么也不用做,以慢慢达到什么也做不了的地步。这样以后淘汰你们才方便啊:)----这句话也太绝了啊要花钱就要赚钱,这个道理一般人都明白,但要用软件就要编软件的道理,大多数人都不知道,他/她们认为软件只要拿来用就行了。只花钱会造成自身的贫穷,而只用软件已经造成了他/她们的无知,他/她们却还不知道。为什么一定要让他们知道呢?没有他们的贫穷哪来我们的巨大财富,没有他们的无知哪来我们的垄断统治。富有的微软如是说,并且因此宣扬只使用软件,只调用API的愚民政策。东瀛第一剑客,Ruby语言的作者,松本行弘:)我和他也有过交往,呵呵。至于开源界的中原第一高手,目前还在深山里修炼和成长哈。大家加油积累!:)‏书中有意思的话Jessica:对于道理没有好感。78精神上的富有Beopenandmystic.Beniceandcomplex.大清国当时何其强盛,闭关锁国则成落后挨打。微软帝国当年何其更新强大,闭源垄断则趋尘封消亡。我对技术没兴趣,而是对开源精神有兴趣:)Linuxisforpeoplewhowanttoknowwhyitworks.Macisforpeoplewhodon'twanttoknowwhyitworks.DOSisforpeoplewhowanttoknowwhyitdoesnotwork.Windowsisforpeoplewhodon'twanttoknowwhyitdoesnotwork.我真是富有啊,写了这么多文字:)就是还不够精练,算是积累素材吧。慢慢来,终于有天会一鸣惊人的:_)‏精神上的富有Beopenandmystic.Ben79平静的思想,平静的行动得道的人话很少。我的金钱观。我的金钱观很简单,就是浪费和缺乏是一,也就是说,不浪费就不会缺乏,浪费了就必然得到缺乏的果报,即使是亿万富翁也是一样。比如你现在浪费了一杯水,以后就会有口渴的时候。那怎样判断什么是浪费呢?我的说法是不用判断,如果一件事你觉得不是浪费而实际上是浪费,那么当对应的缺乏来临时,你也不会觉得是缺乏,既然不觉得是缺乏,那也就很好了。简单的道理,就像反作用力等于作用力一样。是否能够遵循就看你的修为了。让你喜欢的人都对你很好,这是一门必须学会的艺术。有人问我怎样得到大量的沙子,我告诉她去挖金子,这样你就会得到大量的沙子。我为什么不直接告诉你去挖沙子呢?这也是我不告诉你去直接追求快乐的原因。如何面对这些高材生确实是一个问题。如果几十年后我超越了所有这些人,那一定是因为两点,了解奉献的秘密和掌握了更强大的思想。这就是我的道路。平静的思想,平静的行动得道的人话很少。80第六本书第一章开悟第二章初获六神通、证辟支佛果第三章金刚菩萨法门第四章无上成佛路第六本书第一章开悟81Thankyou!

谢谢!最后是提问与交流。Thankyou!

谢谢!最后是提问与交流。82星际译王-自由软件介绍星际译王-自由软件介绍83内容1.个人简介2.星际译王软件介绍3.技术介绍4.开发历史5.我开发的一些其他软件6.其他兴趣爱好7.提问和交流内容1.个人简介84本人简介胡正,83年出生,湖南岳阳人。2006年从四川大学毕业。在大学里开发了星际译王等软件。曾获中国开源软件竞赛金奖。对哲学和佛法很爱好,写了一些非正式的书。目前在红帽Linux公司工作。本人简介胡正,83年出生,湖南岳阳人。85星际译王简介星际译王是一个跨平台(能在Linux下和Windows下运行)的国际化的词典软件,使用C++语言开发,并使用了GTK2库作为图形界面,开放源代码,并遵循GPLv3协议。星际译王简介星际译王是一个跨平台(能在Linux下和Wind86功能星际译王功能强大,除基本的即输即查功能外,还有通配符匹配,模糊查询,全文检索,正则表达式匹配,屏幕取词等功能。星际译王3.0版新加了插件系统,网络词典等功能,已经渐趋完善。功能星际译王功能强大,除基本的即输即查功能外,还有通配符匹配87运行主界面运行主界面88取词窗口取词窗口89词典管理在词典管理对话框中,你可以屏蔽掉不需要的词典,你也可以设置词典查询的顺序。词典管理在词典管理对话框中,你可以屏蔽掉不需要的词典,你也可90首选项在首选项窗口里可以进行各种配置。首选项在首选项窗口里可以进行各种配置。91插件管理插件管理92图形化网状词典插件图形化网状词典插件93全文翻译全文翻译94网络词典功能网络词典功能95Windows移植版本Windows移植版本96包含金山词霸词典金山词霸的所有版本的所有词典都可以转换后在星际译王中使用。包含金山词霸词典金山词霸的所有版本的所有词典都可以转换后在星97使用所有Babylon词典星际译王也开发了Babylon词库转换程序。使用所有Babylon词典星际译王也开发了Babylon词库98项目主页项目主页99词典下载页面目前星际译王已经有两千多个词典下载,包含各种语言和类型。词典下载页面目前星际译王已经有两千多个词典下载,包含各种语言100安装星际译王安装十分方便,在Linux下提供了RPM包,在Windows下有向导式的安装程序。安装星际译王安装十分方便,在Linux下提供了RPM包,在W101MacOSX苹果移植MacOSX苹果移植102NokiaN800移植NokiaN800移植103GPE手机移植版本GPE手机移植版本104星际译王在线词典网站星际译王在线词典网站105Ajax界面网页Ajax界面网页106跨平台目前星际译王能在Linux,FreeBSD,Solaris,Windows等平台上运行。MacOSX苹果移植版也已经推出。星际译王还有专门的命令行版本,叫做sdcv。跨平台目前星际译王能在Linux,FreeBSD,Sol107国际化由于有UTF-8支持,星际译王能支持各种语言。如德语,法语,俄语,日语,阿拉伯语等。星际译王还收集了广泛的词典数据,包含了各种各样的语言。因此星际译王在国外也有很多的用户。目前是在Linux系统下最流行的词典软件。国际化由于有UTF-8支持,星际译王能支持各种语言。如德语,108高效率星际译王自己设计了词典文件格式,访问效率极高,支持数据压缩,扩展性也很好,并使用了稀疏索引技术,使用时的内存消耗很少。高效率星际译王自己设计了词典文件格式,访问效率极高,支持数据109广受欢迎星际译王得到了广大用户的欢迎,目前下载量已达到400万以上,每天下载量在8千左右。项目主页的每日独立IP访问在几万以上。在SourceF的全球自由软件排名目前是八十名左右的位置。广受欢迎星际译王得到了广大用户的欢迎,目前下载量已达到400110开发历史星际译王在2003年开始开发,现在已经比较完善,现有代码8万行左右,其中主程序2万行,词典引擎库3万行,插件1万行,工具1万多行,目前还在不断维护中。主要工作是由我做的,来自俄罗斯的Evgeniy也曾做了不少贡献。有非常多的用户和爱好者也进行了参与。项目主页是:开发历史星际译王在2003年开始开发,现在已经比较完善,现有111获奖2004年获得第一届中国开源软件竞赛金奖。2005在香港举行的“金企鹅杯”两岸四地开源软件大赛中获得杰出创意奖。代表分别来自港澳台和大陆。第一届中日韩开源软件竞赛中作为中方四名代表之一进行参赛,和其他国家的选手进行了友好交流。获奖2004年获得第一届中国开源软件竞赛金奖。112商业回报毕业工作半年后,在2007年一月以一个六位数将在线词典网站和软件所有权卖给了一家翻译公司。商业交易后软件继续保持开源,我们仍然一起合作并致力于改进和维护星际译王的发展。商业回报毕业工作半年后,在2007年一月以一个六位数将在线词113开发开源项目对毕业后找工作的帮助由于有很强的项目实践经历,培养了实力,所以找工作比较简单。毕业后到北京飞漫嵌入式Linux公司工作是发了封邮件就定好了。去红帽面试时说到开发过星际译王,大家知道了我是谁,所以过程也很顺利。目前工作还是比较轻松自由,之前一段时间就是在工作时开发StarDict-3.0版。因为是开源软件公司,所以支持我们的开源项目。开发开源项目对毕业后找工作的帮助由于有很强的项目实践经历,培114目前的主要问题缺少其他开发者的参与和贡献。目前我自己的个人精力已经转变到一些其他的事情上了,所以难以继续做很多开发。希望能有高水平的开发者参与进来,维护和发展星际译王的后续版本。缺少技术支持人员。目前在StarDict论坛里发帖提问题的人很多,发信到邮件列表的人也比较多,但一直只有我一个人回复。平时回复邮件占了我很多精力,希望也有人能参与进来。目前的主要问题缺少其他开发者的参与和贡献。目前我自己的个人精115星际译王的一些技术细节1.词典文件格式2.查询引擎3.dictzip技术4.屏幕取词技术5.网络词典6.插件系统星际译王的一些技术细节1.词典文件格式116详细词典格式文档星际译王的词典格式是公开的,这意味着,其它软件可以自由读取星际译王的词典文件。由于StarDict词典文件格式设计简单而清晰合理,所以很多其它软件也在采用这种格式作为他们的词典数据,比如Macos下的mdict,手机上的NDS等等。详细文档包含在了软件源码包里。这是一个500多行的英文文档。因为软件一般都有国际化的要求,而且也会有其他国家的开发人员参与,所以用英文写文档和注释是一个好习惯,也能锻炼自己。详细词典格式文档星际译王的词典格式是公开的,这意味着,其它软117词典文件组成一个最基本的词典分为.ifo,.idx,.dict三个文件。还可以有.syn同义语信息文件,.idx.oft索引缓存文件(加快启动速度),.clt单词排序方法文件等,另外也可以有图片资源等目录文件。.idx文件可以用gzip压缩。.dict文件可以用dictzip技术压缩,生成.dict.dz文件。词典文件组成一个最基本的词典分为.ifo,.idx,.d118ifo文件内容Ifo文件包含词典的基本信息。是一个纯文本文件。ifo文件内容Ifo文件包含词典的基本信息。是一个纯文本文件119idx文件格式Idx文件格式也很简单。就是一个UTF-8编码的单词,加上\0字符结尾,然后两个32位数字,一个表示解释数据块在.dict文件里的偏移,另一个表示解释数据块的大小。接着就是第二个单词,依次重复。所有这些单词,按一定的排序规则来存储。比如利用类似strcasecmp的函数。idx文件格式Idx文件格式也很简单。就是一个UTF-8编码120dict文件格式dict文件是纯粹的数据块,每个数据块的开始偏移地址和大小记录在idx文件里了。由于idx文件里已经有了数据长度信息,所以字符串可以不要结尾的\0字符。数据块的类型由.ifo文件里的sametypesequence标识决定的。可以是纯文本,也可以是html,pango,xdxf,xml,音标,wiki标记等等,正因为如此,StarDict可以兼容各种其他词典的数据类型,只要开发相应的数据解析插件就行了。dict文件格式dict文件是纯粹的数据块,每个数据块的开始121查询原理StarDict通过读取ifo文件,获取了词典的基本信息。然后加载处理.idx单词索引文件,在内存里创建一个元素为32位数字的数组,数组大小就是单词的数量。每个数组成员的值就是对应单词在idx文件里的起始偏移。比如,第一个单词的偏移肯定就是0,假设第一个单词为apple的话,那么它的单词长度是5,加上结尾的\0占1字节,后面紧跟的解释数据偏移和大小两个32位数字占8字节,总共就是14字节,所以第二个单词在idx文件里的起始偏移肯定就是6+8=14字节,因此数组的第二个元素的值就是14。后面的单词偏移值都以此类推。由于记录了每个单词在idx文件里的偏移值,这样访问第99个单词时只需读取数组里的第99个数字和第100个数字的值,第99个数字的值就是第99个单词的偏移,第100个数字的值减去第99个数字的值就是第99个单词的大小。这样要访问第任意个单词,都可以非常快,只要相应的fseek和fread就行了。查询原理StarDict通过读取ifo文件,获取了词典的基本122折半查找在能迅速访问第任意个序号的单词后,加上单词已经事先排好了序,就可以用折半查找算法来查找对应的词了。比如查找apple这个词,同时词典里有1000个词,我们先取出第500个词,假设是banana,通过strcasecmp比较,我们肯定a开头的是在b开头的单词的前面,所以我们继续读取第250个单词,再进行比较,又确定是再读取比较第125个单词还是第375个单词。这样范围慢慢缩小,最后找到了apple这个单词的位置,(如果未找到,就可以返回显示未找到了)比如是第85个单词,我们就同时取到idx文件里apple字符串后面的两个数字,有了偏移和大小,再访问.dict文件里的数据块,这样就把解释也读出来了,然后再通过解析,就可以把意思显示到软件界面上来了。实际中的星际译王是使用的稀疏索引折半查找算法,这样稍微复杂些,但需要的索引数字的数组大小可以只要原来的1/32,这样就达到节省内存的目的。这个数组的内容还可以保存为.idx.oft文件,下次直接mmap加载到内存中,以加快词典加载速度。折半查找在能迅速访问第任意个序号的单词后,加上单词已经事先排123代码查看这段稀疏索引折半查找的代码只有80行,相对于总共的80000行代码,只占千分之一,可见一个软件虽然原理简单,但要做到好用,往往要涉及到其它的各方各面的细节,然后整体架构就会比较复杂了。这也就是Unix的KISS原则,Keepitsimple,stupid的意义所在了。因为复杂只有构建在简单上,才能掌控其复杂性。代码查看这段稀疏索引折半查找的代码只有80行,相对于总共的8124dictzip词典压缩技术对词典的文本解释数据进行压缩是很常见的需要,但一般的压缩方法只能从头到尾进行顺序解压,而词典需要快速访问某一特定偏移和大小的数据,因此dictd软件项目设计了基于gzip的压缩技术,在gzip文件里的附加信息块里保留各个压缩分块的偏移信息,以达到前面的目的。同时解压却可以仍然使用gunzip工具,保持了兼容性,从而很方便。由于dictd也是使用GPL协议的自由软件,所以星际译王可以自由地修改和采用她的代码,只要继续保持开放就行了。这样自由软件之间进行技术共享就很大地方便了开发者,大大减少了工作量,不必重复开发,重复发明轮子。dictzip词典压缩技术对词典的文本解释数据进行压缩是很常125屏幕取词技术星际译王在Linux下使用的是选中区取词,利用的是x-window的机制。用户只需双击选中单词就行了。星际译王的windows版本也实现了金山词霸那样的屏幕取词功能。这个功能以前一直是一个不公开的难点技术。后来有人告诉我有个俄国的开源软件实现了这个技术,通过阅读它的delphi源码,我编写了c语言的dll代码,同时阅读了一些相关技术文档,对它进行了改进,使其成为独立的模块,从而攻克也公开了这个技术。现在任何感兴趣的人都可以阅读和使用这些代码了。屏幕取词技术星际译王在Linux下使用的是选中区取词,利用的126网络词典星际译王的在线词典网站目前由stardictd词典服务端,stardict-client客户端和php代码三部分组成。StarDict软件也可以直接连接到stardictd端口来查询单词和进行用户设置等。一般的词典网站是利用数据库来提供查询,但开发专门的词典数据服务端能更高效,查询机制也可以更专业。目前stardictd在加载30G的词典数据后也只需16M的内存,而且运行非常稳定快速。网络词典星际译王的在线词典网站目前由stardictd词典服127插件系统在软件里增加插件系统能大大提高软件的扩展性和灵活性,使代码更加模块化,降低复杂性。一些不在核心但可以独立的功能可以开发为插件,这样用户可以选择是否加载对应插件来取舍这些功能。插件系统就是一个加载,管理,调用插件的复杂类,并设计了各种插件类型和对应的调用接口。在软件里的合适位置再进行调用。插件系统在软件里增加插件系统能大大提高软件的扩展性和灵活性,128星际译王的源码星际译王的源码还是开发得比较仔细严密,代码质量比较高,一直以来很少有bug。对于感兴趣的同学,可以下载研究阅读一下其代码,肯定会有不少收获。因为软件的所有设计思想,技术精华等等都全部包含在源码里了。星际译王的源码星际译王的源码还是开发得比较仔细严密,代码质量129开发历史和经历星际译王的源码包里有一个ChangeLog文件,里面记录了每个版本的修改历程。开发历史和经历星际译王的源码包里有一个ChangeLog文件130大学时的开发经历2003年3月,大二下学期,开始星际译王项目。大三上学期完善了StarDict,推出2.4.2版,星际译王成为了一个完整的词典软件。然后休息了一年半,大四毕业时推出了2.4.5版。因为学分不够,延期一年毕业,因此多读了一年,在上课之余主要开发StarDict,每三个月出一个版本,2.4.6,2.4.7,最后毕业时推出了2.4.8版,一年里基本上就只做了这一件事,但为软件的成熟打下了基础。星际译王作为一个本地的词典软件已经很有竞争力了。大学时的开发经历2003年3月,大二下学期,开始星际译王项目131工作后的开发在飞漫公司时利用业余时间开发出了在线词典网站和词典服务端。到红帽公司后,花半年时间开发出了3.0.0版。主要是加了插件系统和网络词典,以及大量的修改和完善。之后又过了三个月,推出3.0.1版。这个版本加了语音朗读,WordNet图形化词典等功能,以及bug修复等。工作后的开发在飞漫公司时利用业余时间开发出了在线词典网站和词132开发软件项目的工作量软件的开发需要耗费非常多的时间和精力,因此一个简单的词典软件也需要近五年的时间,还好开发好后可以全球几百万人使用,这样效益就可以体现出来了。8万行代码,用A4的纸打印出来,就是一千多页,这是非常厚的一本书了。而且是一行行写出来的,还得保证整体的严密统一,要求没有任何逻辑错误等等,不然就是Bug。可见其中要包含的心力是非常多的。收集的两千多个词典,也是一个个加起来的。一直不断积累才可以达到这个数量,维护整理也是要花去很多时间。经常要编写专门的转换工具。这几年回复处理的相关邮件有五六千封,平均每天都有好些封。3.0.1发布后,平时一打开邮箱就是二十几封新邮件待处理。付出就是回报!这个世界没有不劳而获,也没有劳而无获。其中有很多乐趣,也很有意义。经历了就不会觉得难,所以其实也不算什么:)开发软件项目的工作量软件的开发需要耗费非常多的时间和精力,因133参与自由软件能认识很多朋友你会与很多国外的不认识的朋友一起做事情和交流,增进了大家的友谊,也扩大了见识面。你会认识很多大学里的Linux爱好者,因为Linux崇尚的开源共享和自由精神,大家都是很友善很好的人,相处会很愉快。可以进入国内的一些Linux圈子和参加聚会活动,让生活更加丰富多彩。参与自由软件能认识很多朋友你会与很多国外的不认识的朋友一起做134开发的其他软件reciteword-0.8.4,一个界面漂亮,功能强大的跨平台的背单词软件。开发的其他软件reciteword-0.8.4,一个界面漂亮135开发历史和起因大一时为了背四级单词,经常要用一个叫《轻轻松松背单词2》的软件,可每次要背单词都要重新启动进windows实在是麻烦,而且对《轻轻松松背单词2》的一些地方也不满意,于是我就自己编了个软件用,模仿了其主要功能,而且使用了她的图片作为皮肤。前后花了一年时间。现在已经只维护了,但一直可用。前一阵推出了0.8.4维护版。觉得开发背单词,词典这样的软件的一个好处就是一二十年后仍然会有人要使用,需求会很持久。这也是我做项目的一个主要考虑方面。开发历史和起因大一时为了背四级单词,经常要用一个叫《轻轻松松136选书选书137单词初记-分组单词初记-分组138单词初记-浏览单词初记-浏览139单词初记-测试单词初记-测试140强化复习-选组强化复习-选组141强化复习-测试强化复习-测试142强化复习-单词再现强化复习-单词再现143单词打靶单词打靶144打字神功打字神功145小词典小词典146另一套皮肤另一套皮肤147大二时日夜开发ReciteWord那时经常连续开发两三个月,有段时间每天凌晨三四点才睡,并因此得了阑尾炎,从此才学会再也不熬夜了,保持过有规律的生活!大二时日夜开发ReciteWord那时经常连续开发两三个月,148MyicqMyicq是一个类似QQ的即时通讯软件,张勇开发了服务端和windows客户端,我加入了这个项目,就先编了个gaim的插件,这样就可以在linux下上myicq了.不过后来这个项目没有发展成功,毕竟跟QQ,MSN竞争还是很难。MyicqMyicq是一个类似QQ的即时通讯软件,张勇开发了149友情强档forlinux,一个记录个人信息的软件。高中时编的。我也是高中时接触的Linux.友情强档forlinux,一个记录个人信息的软件。高中时150BBS彩票系统BBS彩票系统151地图浏览软件地图浏览软件152手写输入笔画数据库编辑软件这个是用python编的。手写输入笔画数据库编辑软件这个是用python编的。153教学教学讲解课件154如何访问我的主页Baidu或者Google我的名字(胡正)就行了,第一个就是。欢迎大家留言!如何访问我的主页Baidu或者Google我的名字(胡正)就155我的两项技能:写书和写软件大学时一直保持写随笔。因为遇到一些生活中的重大问题,开始研究哲学,并因此写了很多思考笔记。现在还是在继续写一些文章。一般一两个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论