教学教学讲解课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《教学教学讲解课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 讲解 课件
- 资源描述:
-
1、星际译王-自由软件介绍内容1.个人简介2.星际译王软件介绍3.技术介绍4.开发历史5.我开发的一些其他软件6.其他兴趣爱好7.提问和交流本人简介胡正,83年出生,湖南岳阳人。2006年从四川大学毕业。在大学里开发了星际译王等软件。曾获中国开源软件竞赛金奖。对哲学和佛法很爱好,写了一些非正式的书。目前在红帽Linux公司工作。星际译王简介星际译王是一个跨平台(能在Linux下和Windows下运行)的国际化的词典软件,使用C+语言开发,并使用了GTK2库作为图形界面,开放源代码,并遵循GPLv3协议。功能星际译王功能强大,除基本的即输即查功能外,还有通配符匹配,模糊查询,全文检索,正则表达式匹配
2、,屏幕取词等功能。星际译王3.0版新加了插件系统,网络词典等功能,已经渐趋完善。运行主界面取词窗口词典管理在词典管理对话框中,你可以屏蔽掉不需要的词典,你也可以设置词典查询的顺序。首选项在首选项窗口里可以进行各种配置。插件管理图形化网状词典插件全文翻译网络词典功能Windows移植版本包含金山词霸词典金山词霸的所有版本的所有词典都可以转换后在星际译王中使用。使用所有Babylon词典星际译王也开发了Babylon词库转换程序。项目主页词典下载页面目前星际译王已经有两千多个词典下载,包含各种语言和类型。安装星际译王安装十分方便,在Linux下提供了RPM包,在Windows下有向导式的安装程序。
3、Mac OS X 苹果移植Nokia N800移植GPE手机移植版本星际译王在线词典网站Ajax界面网页跨平台目前星际译王能在Linux,FreeBSD,Solaris,Windows等平台上运行。Mac OS X 苹果移植版也已经推出。星际译王还有专门的命令行版本,叫做sdcv。国际化由于有UTF-8支持,星际译王能支持各种语言。如德语,法语,俄语,日语,阿拉伯语等。星际译王还收集了广泛的词典数据,包含了各种各样的语言。因此星际译王在国外也有很多的用户。目前是在Linux系统下最流行的词典软件。高效率星际译王自己设计了词典文件格式,访问效率极高,支持数据压缩,扩展性也很好,并使用了稀疏索引技
4、术,使用时的内存消耗很少。广受欢迎星际译王得到了广大用户的欢迎,目前下载量已达到400万以上,每天下载量在8千左右。项目主页的每日独立IP访问在几万以上。在SourceF的全球自由软件排名目前是八十名左右的位置。开发历史星际译王在2003年开始开发,现在已经比较完善,现有代码8万行左右,其中主程序2万行,词典引擎库3万行,插件1万行,工具1万多行,目前还在不断维护中。主要工作是由我做的,来自俄罗斯的Evgeniy也曾做了不少贡献。有非常多的用户和爱好者也进行了参与。项目主页是:http:/获奖2004年获得第一届中国开源软件竞赛金奖。2005在香港举行的“金企鹅杯”两岸四地开源软件大赛中获得杰
5、出创意奖。代表分别来自港澳台和大陆。第一届中日韩开源软件竞赛中作为中方四名代表之一进行参赛,和其他国家的选手进行了友好交流。商业回报毕业工作半年后,在2007年一月以一个六位数将在线词典网站和软件所有权卖给了一家翻译公司。商业交易后软件继续保持开源,我们仍然一起合作并致力于改进和维护星际译王的发展。开发开源项目对毕业后找工作的帮助由于有很强的项目实践经历,培养了实力,所以找工作比较简单。毕业后到北京飞漫嵌入式Linux公司工作是发了封邮件就定好了。去红帽面试时说到开发过星际译王,大家知道了我是谁,所以过程也很顺利。目前工作还是比较轻松自由,之前一段时间就是在工作时开发StarDict-3.0版
6、。因为是开源软件公司,所以支持我们的开源项目。目前的主要问题缺少其他开发者的参与和贡献。目前我自己的个人精力已经转变到一些其他的事情上了,所以难以继续做很多开发。希望能有高水平的开发者参与进来,维护和发展星际译王的后续版本。缺少技术支持人员。目前在StarDict论坛里发帖提问题的人很多,发信到邮件列表的人也比较多,但一直只有我一个人回复。平时回复邮件占了我很多精力,希望也有人能参与进来。星际译王的一些技术细节1.词典文件格式2.查询引擎3.dictzip技术4.屏幕取词技术5.网络词典6.插件系统详细词典格式文档星际译王的词典格式是公开的,这意味着,其它软件可以自由读取星际译王的词典文件。由
7、于StarDict词典文件格式设计简单而清晰合理,所以很多其它软件也在采用这种格式作为他们的词典数据,比如Mac os下的mdict,手机上的NDS等等。详细文档包含在了软件源码包里。这是一个500多行的英文文档。因为软件一般都有国际化的要求,而且也会有其他国家的开发人员参与,所以用英文写文档和注释是一个好习惯,也能锻炼自己。词典文件组成一个最基本的词典分为.ifo,.idx,.dict三个文件。还可以有.syn同义语信息文件,.idx.oft索引缓存文件(加快启动速度),.clt单词排序方法文件等,另外也可以有图片资源等目录文件。.idx文件可以用gzip压缩。.dict文件可以用dictz
8、ip技术压缩,生成.dict.dz文件。ifo文件内容Ifo文件包含词典的基本信息。是一个纯文本文件。idx文件格式Idx文件格式也很简单。就是一个UTF-8编码的单词,加上0字符结尾,然后两个32位数字,一个表示解释数据块在.dict文件里的偏移,另一个表示解释数据块的大小。接着就是第二个单词,依次重复。所有这些单词,按一定的排序规则来存储。比如利用类似strcasecmp的函数。dict文件格式dict文件是纯粹的数据块,每个数据块的开始偏移地址和大小记录在idx文件里了。由于idx文件里已经有了数据长度信息,所以字符串可以不要结尾的0字符。数据块的类型由.ifo文件里的sametypes
9、equence标识决定的。可以是纯文本,也可以是html,pango,xdxf,xml,音标,wiki标记等等,正因为如此,StarDict可以兼容各种其他词典的数据类型,只要开发相应的数据解析插件就行了。查询原理StarDict通过读取ifo文件,获取了词典的基本信息。然后加载处理.idx单词索引文件,在内存里创建一个元素为32位数字的数组,数组大小就是单词的数量。每个数组成员的值就是对应单词在idx文件里的起始偏移。比如,第一个单词的偏移肯定就是0,假设第一个单词为apple的话,那么它的单词长度是5,加上结尾的0占1字节,后面紧跟的解释数据偏移和大小两个32位数字占8字节,总共就是14字
10、节,所以第二个单词在idx文件里的起始偏移肯定就是6+8=14字节,因此数组的第二个元素的值就是14。后面的单词偏移值都以此类推。由于记录了每个单词在idx文件里的偏移值,这样访问第99个单词时只需读取数组里的第99个数字和第100个数字的值,第99个数字的值就是第99个单词的偏移,第100个数字的值减去第99个数字的值就是第99个单词的大小。这样要访问第任意个单词,都可以非常快,只要相应的fseek和fread就行了。折半查找在能迅速访问第任意个序号的单词后,加上单词已经事先排好了序,就可以用折半查找算法来查找对应的词了。比如查找apple这个词,同时词典里有1000个词,我们先取出第500
11、个词,假设是banana,通过strcasecmp比较,我们肯定a开头的是在b开头的单词的前面,所以我们继续读取第250个单词,再进行比较,又确定是再读取比较第125个单词还是第375个单词。这样范围慢慢缩小,最后找到了apple这个单词的位置,(如果未找到,就可以返回显示未找到了)比如是第85个单词,我们就同时取到idx文件里apple字符串后面的两个数字,有了偏移和大小,再访问.dict文件里的数据块,这样就把解释也读出来了,然后再通过解析,就可以把意思显示到软件界面上来了。实际中的星际译王是使用的稀疏索引折半查找算法,这样稍微复杂些,但需要的索引数字的数组大小可以只要原来的1/32,这样
12、就达到节省内存的目的。这个数组的内容还可以保存为.idx.oft文件,下次直接mmap加载到内存中,以加快词典加载速度。代码查看这段稀疏索引折半查找的代码只有80行,相对于总共的80000行代码,只占千分之一,可见一个软件虽然原理简单,但要做到好用,往往要涉及到其它的各方各面的细节,然后整体架构就会比较复杂了。这也就是Unix的KISS原则,Keep it simple,stupid的意义所在了。因为复杂只有构建在简单上,才能掌控其复杂性。dictzip词典压缩技术对词典的文本解释数据进行压缩是很常见的需要,但一般的压缩方法只能从头到尾进行顺序解压,而词典需要快速访问某一特定偏移和大小的数据,
13、因此dictd软件项目设计了基于gzip的压缩技术,在gzip文件里的附加信息块里保留各个压缩分块的偏移信息,以达到前面的目的。同时解压却可以仍然使用gunzip工具,保持了兼容性,从而很方便。由于dictd也是使用GPL协议的自由软件,所以星际译王可以自由地修改和采用她的代码,只要继续保持开放就行了。这样自由软件之间进行技术共享就很大地方便了开发者,大大减少了工作量,不必重复开发,重复发明轮子。屏幕取词技术星际译王在Linux下使用的是选中区取词,利用的是x-window的机制。用户只需双击选中单词就行了。星际译王的windows版本也实现了金山词霸那样的屏幕取词功能。这个功能以前一直是一个
展开阅读全文