现在我的几个计划都需要我能够对PDF格式进行解码,所以找了一下资料,找到了一个PDF1.3的手册,
特放出下载,如果谁有更高版本的,请给我一份,谢谢。
因为最近很忙,所以就不做严格的翻译了,这个笔记将是一个比较简单的文档,而且不会涉及到比较复杂的PDF特性,目前关注点主要在于Pdf->Txt的转换。
下面是正式的笔记:
概述
PDF文件依赖于PostScript的图像模型,对文本和图像用设备无关和资源无关的语法进行描述。为了提高交互速度,PDF定义了一些不同于PostScrtpi的格式。PDF支持对象,比如注释和超链接,他们不是页面的组成部分,但是对于交互式显示非常重要。
PDF文件是用一系列编号的对象来建立的。文本,图形和图像等对象用PsostScript语言组织成页面。
但是PDF文件不是一个PostScript语言程序,也不能直接用PostScript解释器来解释。但是PDF文件的页面描述信息是可以转换成PostScript程序的。
坐标系统
PDF的坐标系统定义了一个画布,用来显示你的PDF文档。文本、图形和图像在页面上的位置、方向和大小都是用这个坐标系统来定义的。
PDF支持几种坐标系统,他们大部分和PostScript的坐标系统相同。
后暂略...
对象
PDF支持7种类型的对象,booleans, numbers, strings, names, arrays, dictionaries 和 streams.
boolrans就是true和false。
number,PDF同时两种数字,整数和实数,但是不支持指数格式的实数(科学计数法)。
string和text
string就是用"("和")"包括起来的字符串,如果字符串太长可以在行尾加上\,表明下一行和本行是连在一起的。
text一般用PDFDocEncoding或者Unicode来进行编码。PDFDocEncoding是ISOLatin1的一个超集,在0-255的编码上PDFDocEncoding和Unicode是兼容的。
如果text是用Unicode编码的,那么text的前两个字节必须是[FE FF]。[FE FF]代表Unicode的高位字节必须在前。
text还可以包含一个换码序列来标明text使用的语言。换码序列必须用Unicode的16进制值U+001B开头,后面跟随两个由ISO639标准 定义的表示语言的ASCII代码,然后可选择的,跟随两个由ISO3166定义的表示国家的ASCII代码。汉语的语言编号是zh,中国的编号是CN。
name就是一个用/开头的string。
array就是一个对象的序列。一个array可以有多种类型的对象在其中。用"["开头,用"]"结束。下面是一个array的例子:
[0 (Higgs) false 3.14 3 549 /SomeName]
上面的例子也可以作为刚才说过的几种对象的例子。
dictionary是一对对象的对应表。第一个对象叫做key,第二个叫做value。key必须是一个name对象(这点和PostScript里面的dictionay对象的key不同)。value可以是任何的对象,甚至也可以是一个dictionary。
dictionay用"<<"开始,">>"结束。一般dictionay的例子:
<< /Type /Example /Key2 12 /Key3 (a string) >>
包含dictionay的dictionay的例子:
<<
/Type /AlsoAnExample
/Subtype /Bad
/Reason (unsure)
/Version 0.01
/MyInfo
<<
/Item1 0.4
/Item2 true
/LastItem (not!)
/VeryLastItem (OK)
>>
>>
dictionary对象是PDF文档的主要构成部分。PDF文档的很多部分,比如页面、字体,都是用dictionary来表现的。
stream和string一样就是一个字符的序列。然而应用程序可以读取stream的一个部分,但是读取string就必须读取整个string。所以,尺寸大的数据,比如图像或者页面描述,一般用stream来表现。
一个stream包含一个dictionary,后面是关键字stream,然后是0行或者多行的字符序列,后面是关键字endstream。
所有的stream必须是间接对象。stream的dictionary必须是一个直接对象。关键字stream和stream的dictionary之间必须用回车换行符来分割而不能仅仅用换行符。
stream的格式细节暂略。
null关键字用来表现null对象。
直接对象就是boolean、number、string、name、array、dictionary、stream或者null。一个间接对象就是一 个直接对象加上了一个标签,这样就可以被其他的对象所引用。任何类型的对象都可以被标签为间接对象。间接对象非常有用,比如,你可以把stream的 Length key设定为了一个间接对象,这样长度可以保存在stream后面。这样可以让应用程序用一个流程来生成一个PDF文件。
一个间接对象包括一个对象标识符,一个直接对象和一个endobj关键字。对象标识符包括一个整数的对象编号,一个整数的生成编号,和一个obj关键字。形如:
1 0 obj
(test)
endobj
用在arrary和dictionary元素里面的对象可以是直接对象,也可以是间接对象。间接对象引用包含一个间接对象的对象编号和产生编号,还有一个关键字R。例如:
<< /Length 8 0 R >>
8 0 obj
64
endobj
这里的长度就等于8 0代表的number??64。
注意:引用一个没有定义的对象,不是一个错误,而是相当于引用一个null对象。
下午收到了这样一封信:
尊敬的 XXX:
距离2000年4月,Donews程序员林兴陆发出第一篇Donews文章,一晃已经4年多了。往日如昨,不知你能否记起,那天,你注册Donews的情景?
我们曾在Donews争论过,观望过,希望过,失望过。这之后,在4年中的某个日子起,你不怎么来Donews了。Donews这之后开通的Blog(http://www.donews.net/)、IT百科(http://wiki.donews.com/);下载(http://download.donews.com/)、书签(http://bookmark.donews.com/)、搜索(http://search.donews.com/)、引经据典(http://poem.donews.com/),你也不怎么知道。你不再关心Donews,Donews成为一段过去。
今天,林兴陆整理用户数据库,我突然觉得应该给越来越疏离的你写一封信,告诉你Donews的近况。Donews的第一理想是,10年之后,20年之 后,50年之后,还有Donews,由Donews记录下中国IT的辛酸苦乐。如果你的一段过往经历在Donews留存,不管后来如何,那都将是 Donews最大的幸运。
不多说了,一切回复至liuren@gmail.com
刘韧上
2004年7月27日
口气很客气,但是一看就是自动发送的沉默用户提醒信,不是真的专门发给我的,不过我觉得他们有时间发这样的信,为什么没有时间处理我申请了几个月的程序员资格申请呢?不批准也可以拒绝啊!悬在那里算什么?所以我回复如下:
收 到这样的信,只能感觉无聊,有朋友一直介绍这里,我就注册了,结果什么权限都没有,那就申请吧,到现在连个程序员的资格都没有给我批准。我打90开始写点 简单的程序,94年开始学c,97年有自己的电脑,98年建自己的网站,我也算做了小10年的程序员了,在你们那里连个程序员的资格都没有,我犯得着那么 作践自己么?
我自己的服务器上面放了我两个blog,我还有3个放在别人那里。我有足够的blog玩了,不需要你们的了。就算是我去申请到ms求职做个程序员也没有在你们那里要个资格那么麻烦吧?
不就是整理沉默用户免得浪费服务器空间么,何必写得那么温情脉脉,直接删好了,你们看不起我,不一定人人都看不起我,这里不能注册,还有那么多地方我可以去注册呢。
最近笔记本的故障频率越来越高了,唉!在我手里面被摧残了5年的老家伙,终于快彻底不行了,可怜啊!
不过我的预算很少,大概也就是3000左右把,唉!没钱只能如此了。
前些日子我的笔记本一直装的是win2k,使用Eclipse+CDT+minGW一切正常。但是前两天,硬盘出了毛病以后,我不得不装了WinME(找 不到Win2k的光盘)。装了WinME以后发现Eclipse+CDT+minGW没有办法编译了,只会提示"Exec error:CreatePipe"。我到处去寻找这个问题的原因都找不到。网上发现一个德国人在Eclipse的一个德国支持网站提出了完全相同的问 题,他的软件配置和我完全一样,可惜没有人回答他提出来的问题。
万般无奈之下,我尝试过command.com修改成cmd.com(因为这是win2k和winme的一个不同点,winme没有cmd.com)。还有安装最新版本的mingw,都没有解决。昨天晚上我去Eclipse的官方网站提交了一个bug单,但是到了今天晚上还是没有任何的消息。
这点要大大的批评Eclipse了,sf网站上面的支持问题,都是24小时内必定会有回复的。哎.....
改不好,瞎改,看来我对颜色,布局等等,就是不在行,;(
前天,因为一些项目信息不够详细,所以,我申请的IE Rss项目被SF拒绝了。昨天在
AirHand的帮助下,我重新提交了一些项目信息(某匿名人士帮我重新编写了技术描述等等信息),现在终于,我的项目被SF接纳了。
项目地址是:
https://sourceforge.net/projects/tinyierss/
这个项目的目的是:
1、设计一个功能强大的IE RSS插件,支持RSS(各版本),Atom。(最低目标)
2、总结Eclipse+CDT+GCC+CVS开发方式的经验。(一般目标)
3、建立比较抽象的插件架构,从而使这个插件有可能简单的移植到FireFox或其他浏览器。(最高目标)
欢迎大家加入这个项目,不过请注意这个项目的成员之间交流的工作语言是英语,采用C++/Winapi编程,编译器是GCC(mingw),可选的IDE是Eclipse+CDT。
因为我需要把目前已经用BCB写好的大段代码进行GCC的移植,还有进行文档编写的时间等等,所以,正式的开动会稍微晚一些的。
Deleted/Rejected Projects
- Tiny IE Rss (UNIX name: tinyierss, registered 2004-07-21 22:39)
This project was rejected for hosting for the following reason: Inadequate registration description or license detail; or additional information required
Full details: [Rejection Notice]
If assistance is required, please contact the SourceForge.net by submitting a Support Request.
郁闷啊!我打算修改修改描述和授权协议,重新提交........
转自:
http://dev.codelphi.com/virushuo/archive/2004/07/21/17392.aspx
作者:火炬
我比较赞同本文作者的看法,更深入的一些看法,我会单独撰文。
转文:
最近关于开源的话题好像被热炒起来了。个人认为,这是个很糟糕的现象。当媒体都关注一件事情的时候,这事情就要变味道了--正如blog现在的处境。
前两天在csdn上看到一句很经典的话:“中国参加开源项目的人数最少,但是叫嚣开源的人数估计最多。”确实,现在谁要不说点关于开源的话题,就显得那么土...所以我不能免俗,也开始说。
说实话,我很不能理解开源阵营怎么会跟微软阵营成了对立局面。无论是开源运动的领袖们,还是bill gates,恐怕谁都不会有这种想法。世界没有微软是不行的,而微软恐怕也乐得从开源社区得到些东西充实自己。无论是思想,精神,还是经验。
很多人对开源这种现象不理解,认为程序员把自己用来维持生计的代码公开,是非常不经济的行为。在我看来,持这种观点的多是入行没几年的新程序员。他们还没有真正被程序员和hacker的文化浸淫过,自然也不懂开源的历史基础。
开源的历史基础
让我们把目光投向那个古老的时代吧。尽管相对于现在,那仅仅是10多年之前。在那个年代中,提供给别人代码是一件再自然不过的事情。而对别人说:“给我你的代码看看”也是合情合理的。不仅仅是国外的hacker们这样做,在80年代初的中国,中国人也曾经具有这种思想。当时由于中国没有网络环境,共享一个东西是相当困难的。所以,大家都习惯于提供代码给别人,供别人录入计算机运行。当时有几份报纸专门有版面用来刊登计算机爱好者投稿而来的程序代码。其中有工具,有游戏,有控制扬声器发生的音乐程序,可谓五花八门,无所不包。同一个年代,大洋彼岸的程序员也在作同样的事情。本人有兴经历了那个年代,也有不少程序代码散见于报端。其中最为完整的甚至包括一个用汇编写的,运行于6502芯片屏幕横卷轴的游戏引擎。当时在那些版面,常常见到一些对过去程序进行改造的程序,一般都是以这样开头的:“本报某期刊登了XX的XXXX,我为它加上了新的功能”或是“我改造了XXX的XXX”。没有人强迫,也没有什么成文的规矩,但是人们就是这么作的,引用别人的程序,并包含别人的名字,作出修改,然后开放修改的部分。记得一个叫做“生命”的游戏程序就是这样逐渐被完善起来的。
讲这段历史,是为了证明程序员从一开始就具有这样的传统--把自己的代码拿出来,让大家来改进。后来GPL的出现,只不过是历史发展到一定阶段所必然出现 的。客观来看,开源社区的出现和商业化软件公司的出现没什么不同的,他们都是历史发展的必然趋势。
为什么要开源?
很多人对“为什么要开源”这个问题表示好奇。程序员为什么要把自己用来维持生计的东西开放给别人呢?
开源往往产生于一次郁闷的经历:找不到好用的软件,喜欢的软件太贵,或是急需的每个功能没有软件能做到。那,怎么办呢?好吧,既然是程序员,就不应该为这个事情发愁。自己写吧。
很快,程序写好了,虽然有这样那样的缺点,但确实勉强能用了。这时候会有两种选择,1是把软件拿给别人用,收费或不收费。采用这种方法的时候,因为有很多缺点,用户肯定会提出很多意见。如果程序员不去修改,那往往就丢了用户,最后变得很没有成就感。如果继续修改,那会花费太多的经历,而且很多事情是非常无趣的。(比如说作windows程序的界面工作,我就非常讨厌。我宁可去写10个无界面的程序,也不愿意写一个有界面的程序)最后,这个程序可能反而成了程序员心中的一个疙瘩,做下去,没精力,不做下去,可惜了。这时候,第2种选择就出现了--开源。程序员开放了这个软件的代码,用户需要什么功能,或是发现什么bug,都可以自行修改。这样,原作者始终是这个软件的作者之一,原作者也享受了别人修改完成的功能,软件变得更好用了,用户越来越多,原作者也有了名声和荣誉。
对于一个真正热爱软件事业的程序员,写程序并不比再网上发贴拍砖更难。而一个真正的程序员又往往是充满好奇心和热情的家伙。所以,可能很多人都像我一样,热衷于解决难点,而对后继的维护烦闷不堪。这直接导致了一种后果--硬盘上堆满了写了一半的程序,没有一个能release的。其实这些程序反倒是最适合开源的。要知道,很多人喜欢后继的维护,也喜欢作界面上的细致工作,但他们没有开始的契机。这不,我的朋友tinyfool就基于此开发准备开放两个程序的代码。
开源带来了什么?
很多人说,我要赚钱养家,而开源不能给我带来收入,还要浪费我的时间,所以我不会从事这种工作。
对于这种观点,熊节曾经写道:“即使单从利益的角度来说,为open source做贡献不仅是一个难得的锻炼、交流、学习的机会,更是一个难得的获得名声和尊敬的机会??在开发者的社群,名声和尊敬几乎就意味着高薪”。这个看法曾经遭到了很多人的批驳。有趣的是,支持开源者认为这种说法损害了开源的纯洁性,而不支持开源者从用此作为攻击开源的论据。
我是同意熊节的开发的。要明白这句话,首先要对开源有一个正确的认识。在我看来,开源是属于计算机科学的范畴,而商业软件的开发属于商业范畴。双方并没有冲突之处。大家都明白,科学研究本身是不能带来利润的。要得到利润,就必须进行商业化运作。但如果没有科研,商业也无法一支独秀。
传统的科研领域如何获利呢?科学家们靠什么生活呢?不外有这样几种:著书立说,到高校授课,发表演说,应邀作商业公司的顾问等。爱因斯坦研究相对论的时候,只是专利局的一个小职员。但这并不妨碍他后来成为伟大的科学家。在传统科学领域越来越完善,可供个人完成的发现和研究越来越少的今天,计算机科学给我们提供了太多这种机会。一个好的开源项目组成员,是绝对不应该缺钱花的。
对于这个看法,有一个很好的例证。想必大家都使用过BT这个优秀的下载软件。关于BT的作者,有这样一段描述:
“尽管BitTorrent获得了如此巨大的成功,然而直到几个月前,它并没有为Cohen带来过一分钱。"去年9月份我没有一丁点钱,"Cohen回忆 到,他当时只好利用这张信用卡的免息期来透支,填补另一张信用卡的帐单来过活。”
听起来很凄惨,不是吗?不过事情很快有了转机:“某天,Cohen的事情为Valve软件公司的常务董事Gabe Newell所获悉。尽管Valve正在开发令游戏玩家望眼欲穿的Half-Life 2,但是它同时也在建立一个名为Steam的在线分发网络。由于Cohen掌握这个领域的专门技术,所以Valve为他提供了一个职位。Cohen从十月份起搬到西雅图,开始了他的工作。”
好了,Cohen的工作问题终于解决了。因为BT,我们的网络生活变得更精彩了,因为BT,Cohen找到了一份称心如意的工作。世界上还有比这更为理想的双赢吗?
所以说,虽然参与开源软件本身并不能获利,但它往往会给你带来巨大的好处。对于在校学生,更是如此。在学期间并没有养家糊口的压力,如果能参与开源活动,作出一定贡献,那么即学到了技术,又积累了声誉。如果能成功的领导一个项目,那就是难得的项目经理人才。待到真正找工作的时候,由于你的突出表现,可能往往会使工作先找到你。
对于一个公司来说,如果急需某一领域的技术人才,一般有两种选择:一种是挖别的公司墙角,而另一种是自己找个合适的人来。比起前者,后者更容易被企业所接受,而参与开源活动,则正是对用人公司表达“我是合适的人”。这种实实在在的成果的力量可比认证之类的大得多。
开源损害商业软件?
我从来不能同意这种看法。如果没有开源软件,恐怕商业软件公司也不能发展。没有竞争便没有进步。如果一个商业公司尚且不如一个开源软件好,那这个公司倒闭了也不失为一件好事。
不错,IBM从开源中得到了巨大的好处,甚至利用开源来对付微软。但这并不是什么错误的事情,商业公司,自然是要竞争,逐利的。IBM用linux作为武器,但他也付出了应该付出的东西,比如说为开源社区捐赠硬件和代码,当然,你可以说这是为了更好的利用开源社区,不过,为什么微软不来这么利用一下呢? (现在微软也开始试图采用类似的手段了)。而事实上,开源社区的程序员也并非傻子,怎么会心甘情愿被IBM利用呢?自然,这是一种双赢的合作。IBM捐赠的eclipse代码让开源社区欢呼雀跃,这足以说明了双方都对这个合作表示满意。
对于个人来说,开放总是好的。比如说,我把这篇文章贴出来给大家看,如果《程序员》杂志社的编辑们觉得尚有可圈可点之处,也许会联系我打算发表它。那我就把他编编改改,加工润色。虽然中心思想没变,但大家读到的肯定是一篇更好看的文章,这时候,我相信各位不会绝的花店钱不值得的。而如果我不让大家阅读我这篇文章,那可能永远他也不会有发表的机会。
有人建议,要把自己的程序代码看好,不要给别人看。这个说法我认为非常可笑,除非你的代码足够牛,否则,别人看了又如何?就算不看,自己写也不是写不出来的。而如果你的代码真得非常牛,那建议你最好去申请专利,用可更靠的手段来保护它。要知道,越是伟大的程序员,反而越不在乎开放代码,而水平低的程序员,却往往“敝帚自珍”。说穿了,我看这还是缺乏自信和竞争力的表现。
如果开源软件消失了,世界将会怎样?
一种很普遍的认识是这样的:“微软为计算机的普及作出了重大的贡献。” 这种说法当然没错,但,开源为计算机普及作出的贡献,你知道吗?
linus说:“学习计算机是一件很容易的事情,只要你有一台二手计算机,以及一张linux光盘,就可以开始了”。廉价的学习方法,给世界提供了大量的软件人才,这些人才参与商业运作,最终提升了整个行业的发展。
如果没有开源软件,那很多人恐怕根本用不起计算机。很多企业也没有钱购买服务器系统,网络的应用萎缩了,行业水平降低了,最终受到损伤的,恐怕不仅仅是你我这些以次行业为生的人。所有的硬件企业,软件企业都将受到影响。
可以说,正是因为有了开源软件,才创造了足够的职位供大家工作和生活。说开源会抢了程序员的饭碗,是在是杞人忧天,恩将仇报了。
我们从何作起?
说了这么多道理,可能很多人已经对开源有所了解。至少不应该认为开源对程序员工作有伤害了。那么,我们应该做点什么呢?也许因为种种原因,暂时我们还不能 参与开源活动,我们也不能为开源产品撰写文章,摇旗呐喊。那,怎么办呢?很简单。开始使用开源软件。
如果你有足够的钱购买正版软件,那自然无可厚非。但如果没有呢?像方XX之类鼓动的那样,去用盗版?这不好,盗版才是砸程序员的饭碗。如果程序员自己都不注意版权,那没人会为你撑腰的。所以,从现在开始,我们应该做到尽量不使用盗版软件,而改用开源软件替代他。
总有观点认为开源软件使用起来比较复杂,我认为这实在是一种FUD。比如说,我使用open office来代替ms office的工作,一切良好。open office也能正确打开ms office的文档。到目前为止,我没有碰上任何不可解决的问题。
简要的介绍一下,我使用的开源软件包括:open office , netbeans , gvim , mozilla firefox等。这些软件都在各自的岗位上工作得很好。我很喜欢他们。希望你也喜欢。
“如果你有一份快乐,把他和朋友分享,快乐变成了两份。如果你有一份烦恼,把他和朋友分享,烦恼只剩下了一半。”对于开源软件,这句话应该这样说:“如果你有一个不完整的程序,把他开源,你的程序变得完整而稳定。如果你有一个疑难问题难以解决,把他开源,你的疑问消失了。”
其实都不是很复杂的东西,一个是用BCB开发的IE插件(可能会改成gcc),一个是用java做的文件共享工具,这两个打算上sf,顺便学学cvs。
正式的启动应该是在8月初。具体细节稍后可能会公布。
不出意外的话,这两个项目都会是用eclipse来进行开发的。
Codelphi Blog是国内一个非常不错的免费Blog提供站点,我的"
Tinyfool的移动开发阵线"就是在Codelphi Blog申请的。Codelphi Blog采用的是基于.Net技术的.Text blog引擎,功能强大,使用非常方便。
强烈建议没有自己的Blog的朋友,在那里申请自己的免费Blog。
昨天,我,火炬,yayv三人经过彻夜长谈,终于确定了第二次聚会的时间地点和任务。出乎意料的是,今天我这个出了名的一贯迟到者,居然是第一个到的。为什么不叫做腐败呢,因为我们没有钱不能腐败,只好大家一起出来艰苦朴素一下了。
为了馋一馋所有昨天听到我们策划案的微尘群成员,现在报告菜单如下:
火炬:哨子面
yayv:一砣可爱却不好吃的东西(被火炬怂恿),一个好吃的肉夹膜(被我怂恿)
我:一碗牛肉盖浇饭,两个肉夹膜
三个人:一个被叫做小盘鸡的小号大盘鸡
考虑到节约大家的口水,就不贴菜的照片了(实际是忘了照)。
之后,我们陪火炬买了一些用来制造大规模杀伤性武器的元器件,然后大家又陪我去看了看键盘,买了一个昂贵的35元的小尺寸键盘。
下面是三人留念:
Eclipse是什么?很多人会脱口而出,是一个非常好的Java IDE。可是Eclipse真的这么简单么?
Eclipse真的只是java IDE么?
以下,引自日经BP网中文版:
Eclipse是IBM于1999年面向Java应用程序开发而着手开发的,并于2001年11月公开了源码。用户可将该工具本身作为插件自由地扩展功能。其特点即所谓的“插件架构”,通过与版本管理工具配合使用,Eclipse在服务器领域得到了广泛普及。而在嵌入式系统领域,伴随着以Linux为 OS的应用实例的增加,目前也已有支持产品亮相。在2004年7月7日于东京BigSight开幕的“嵌入式系统开发技术展(ESEC)”上,就有大量基于Eclipse的开发工具亮相。
目前,在嵌入式系统领域开展基于Eclipse的开发工具业务的知名工具供应商有美国麦克泰和风河系统两家。麦克泰是嵌入式Linux的最大发行商,曾于2004年2月发表了基于Eclipse的“DevRocket 1.0”。另一方面,风河系统则是开展“VxWorks”业务的实时OS的最大企业。曾于2004年6月发表了得益于在面向VxWorks的开发工具“Tornado”中积累的技术经验的“Wind River Workbench 2.0”。在此次的ESEC上,两公司将对上述两工具进行实证演示。均为首次面向公众公布。两者的共同点是均可在GUI上分步运行和进行多线程调试,具有与个人电脑上的软件开发工具相近的丰富功能。
详情请见:
【ESEC】嵌入式领域开放源码开发工具Eclipse
Eclipse真的只是开发工具么?
以下,引自日经BP网中文版:
IBM日前发表了新的富客户端技术“IBM Workplace Client Technology”。该技术构筑在开放源码的Eclipse平台上,可以不分场所地通过各种客户端环境使用支持该技术的Lotus/IBM桌面软件产品。这是IBM于2004年1月在美国召开的Lotusphere 2004大会上透露的。
详情请见:
Notes/Domino变Eclipse插件?IBM富客户端技术
以下,引自csdn blog陈刚的专题《Eclipse插件开发系列》:
用过Eclipse的人很多,但大多数人还只是用于开发J2EE,其实Eclipse还有一个重要的开发方向:Eclipse的插件开发。Eclipse 是在面向对象方面做得很出色的一个编辑器,注意Eclipse只是一个用JAVA写的编辑器而已,它可以变化成其它的东西,如:J2EE开发工具、C++开发工具等等,这一切功能的扩展皆来源于其插件机制。你只要编写相应的插件,Eclipse就可以变成你想要的功能,包括变成一个企业管理信息系统,没错,它的确可以。
详情请见:
《Eclipse插件开发系列》
今天要赶个急活,偏偏bcb5不知道出了什么毛病,编译出来的代码不能运行。
干脆重装吧,装了一个下午才装好,偏偏有两个第三方控件怎么也安不上去,郁闷啊!郁闷!
公司原本是有一个自定义字典生成工具的,但是已经年久失修了,我看不懂那些代码(写出来以后经过了太多次的修改,每次都是头疼医头脚疼医脚的修改)。而这个东西现在交给我负责了,所以,这次要补充他的功能,我决定干脆重新写一个。
核心,当然是stl,效率肯定比我自己写的高。我打算采用的方法是,用stl的map写一个字典的核心代码做成一个dll插件,然后呢,把核心数据和目前支持的两种输出格式的转换做成两个dll插件。然后做一个界面的exe来调用他们。初步决定都用bcb做,但是接口风格都采用标准API风格,所以用VC来写后续的插件也没有问题。
目前还没有遇到什么技术难点,鉴于这个工具是用来生成自定义字典的,所以以后可能建议公司把格式公开,并把我的这个版本开源。不过,这都是后话了,会这么想,主要是文曲星开发爱好者的群体非常大,完全可以依靠。
简单的说,我认为还是水平太低。
举个最简单的例子,很多人初学网站设计都是从FontPage开始的,但是研究比较深的人就不爱用FontPage,爱用DreamWeaver,一方面是DreamWeaver的功能强大,另一方面,FontPage和Word生成的网页都是臭名昭著的包含有大量的冗余代码。DreamWeaver里面甚至有专门用来清除FontPage和Word生成的冗余代码的工具。
初学网页设计的人,总爱放一大堆的动画,音乐,甚至是视频,还有人乐衷网页一打开就谈出一个Alert告诉用户,用户用的是什么浏览器什么操作系统,这些都是恶习,也是一些无良的所谓设计高手给初学者灌输的错误概念。好的界面设计要让用户感到舒服,而不是一种被强奸的感觉,所有的,强迫我收藏的网站,自动弹出一些无聊信息的网站,我经常是直接弄到我的大脑的黑名单里面去,一辈子也不再去看那里。几乎所有的IE辅助工具都有防止广告窗口,恶性Script的功能,为什么呢?原因就在于,目前这些特性已经被一些垃圾网站,滥用到了一定程度了。
MS的问题非常复杂,MS也是一个非常聪明的公司,假设你现在用asp.net做网站,用向导做出来的网站就包含了大量的非标准元素(这里只是一个假设,我没有用过asp.net),这时候你往往不会去修改,一方面,你可能不清楚哪些元素不是标准元素,一方面,你可能会担心自己直接修改了一些页面元素会造成自动化设计功能的不正确。但是,我觉得所有网站作者要有清楚认识的是,如果你做标准化的东西,那么在IE是可以浏览的(目前IE对标准的支持还算不错),而且在其他所有的浏览器都可以浏览;但是你做了一个非标准化的东西,那么只有IE可以正常浏览,其他的所有浏览器看到的效果都是惨不忍睹的。而目前,因为安全因素,确实有很多人开始放弃IE,我现在甚至把我的IE放到了防火墙的本地程序屏蔽名单里面了。
其实,用标准化的方法不是要求你放弃网站的美感,前面
我的blog介绍了一个网站,纯粹的标准化方法,符合Xhtml,Css,所有标准,他们展现了标准化设计可以达到的美学效果,我相信大多数迷信MS非标准元素能够增强网站美感的人,都设计不出来那个网站的美好效果,这充分说明了“MS非标准元素能够增强网站美感”仅仅是一个迷信,是一个误解,是一个错误的信息,虽然来自MS。
ms一直是网站标准化的大敌,ms为了建立独有的web霸权,引入了很多非标准化的元素,而且大肆宣扬。中国很多人就中毒颇深,很多有名的网站,都经不过标准测试,只能保证在ie下面正常。
上次居然有个mvp说他从来不在乎非ie浏览器,其实他用的ms的一个特殊方法,完全多余,标准里面有更好的替代方案。做技术的没有一点标准化的思维,简直是悲哀。
最近有消息,因为ie最近频繁的出现漏洞,也因为Mozilla等第三方的浏览器日渐成熟,很多国内外媒体都开始在宣传不要使用ie,建议用Mozilla或者Mozilla Firefox,我们的一个朋友圈子里面大部分人早就开始在使用Firefox了,而且都觉得非常好用,也可以避免一些ie的安全问题。
相信第三方浏览器(一般都比ie符合标准)的蓬勃发展,能让网站标准化的梦想真正的得以实现。因为只有ie的垄断消失,绝大多数的网站设计者,才真正会关心标准化。
Kervin,李可文,1979年9月18日生,著名的DreamNes,DreamGB,DreamGBA的开发者,中国游戏界模拟界的知名人士,Mop网站的资深管理员。2004年6月30日毕业于北大,2004年7月1日因肝病不幸逝世。
我跟可文并不熟,甚至算不上朋友,在Mop他一直是一个知名人士,在模拟界也是如是。我们之所以没有成为朋友,因为面对这样的一个人,我常常会感到汗颜。他比我小5个月差一天,比我晚上学很久,但是他的编程技术和对程序设计的投入和热情我完全无法相比。
第一次听说他,是因为寻找GBA模拟器,有人给我介绍了DreamGBA,后来又知道DreamGBA是第一个国人开发的GBA模拟器,好像到现在仍旧是唯一国人开发的GBA模拟器。模拟器是一种非常复杂的程序,我的一个三十几岁的同事做了一个FC模拟器就沾沾自喜,然而我们都知道GBA模拟器比FC模拟器复杂多少倍。
后来我才知道,他是一个活在死亡线上的人,4年前就因为尿毒症病危做了一次肾脏移植,四年中都是靠抗排异药物才能活下去,今年前初又做了一次肾脏移植。他逝世的原因,就是用于肾脏的药物,严重损害了他的肝脏。所有的手术费用都是用自己搞开发挣来的钱。这样的病症又怎么样的痛苦我是不能体会的,但是我知道这样的病人是死生系于一线的,然而这些都没有影响他一直进行着DreamGBA的开发,没有影响他活着的每一天的乐观心情。在Mop,如果你见过他的帖子,看到他的言行,我想你不会感到这是一个垂死之人,他的言行看起来是那么的乐观。想到自己四肢健全,身体健康,但是经常为了一些不足道的东西,颓废虚度青春,面对这样的一个人,我就会感到羞愧。
得到这个消息是很意外的,我很久不去Mop了,今天早晨去了,却看到头条就是Kervin去了,虽然,因为他的身体,他的病症,他所有的朋友,包括他自己,都知道这天迟早会到,虽然Mop已经腐烂,但是我仍然看到500多回复,都是追忆,都是表示崇敬,都是惋惜,都是悲切,Kervin泉下有知,也许会感到欣慰
上天总是带走他最珍爱的那个,却不管我们也需要他,可是所有的废柴都好好的活着......