Feed on
Posts
Comments

值此中秋国庆双节前夕,我们的2010 Firefox 火狐浏览器应用挑战赛也圆满落下帷幕。在此,对所有参与本次大赛的团队和个人表示感谢!感谢大家对开源活动的支持,也希望大家把对开源活动的热情一直延续下去。同时,Mozilla Firefox也希望有更多的同学能参与到我们的开源事业中来,成为我们前进的中坚力量。

本次大赛由Mozilla工程师评审团和中企开源评审团共同进行打分和点评,综合两个评审团的评分和意见,评出奖项如下:

综合一等奖   空缺


综合二等奖 (2名)

学校:黑龙江大学

团队名称:Fairy tail
团队口号:朝自己相信的道路前进
团队人数:2
团队成员姓名:孟令君、朱胜家
作品名称: Fairy tail
作品点评:
优点:对mozilla的xul控件有一定的了解,增加了很多实用的功能,如上传图片,重命名,相册浏览等。能把开源的代码与自身的代码很好的结合起来。界面美化做的也很出色。文档详细,有演示ppt。
缺点:浏览图片时,图片的比例显示有问题,尤其是宽度小于高度的图片比例明显有问题。在界面上没有说明上传图片上传到了哪个地址。
建议改进:因为图像浏览器最重要的功能是浏览图片、正确的显示图片,所以希望能把图片显示的比例问题修正。

作品评分:76.5
作品链接:作品展示: http://dl1.g-fox.cn/campus/uploaded/phptyro@gmail.com/phptyro.xpi
作品文档: http://dl1.g-fox.cn/campus/uploaded/phptyro@gmail.com/phptyro-doc.zip

学校:大连理工大学

团队名称:大连理工大学网络协会Firefox团队
团队口号:培养高校的浏览习惯,培养高效的浏览习惯
团队人数:6
团队成员姓名:王恺、商玥、谢冬、李晓蕾、王源、郝海全
作品名称:火狐图像浏览器扩展
作品点评:
优点:界面比较绚丽,有文件预览,缩放,旋转,直接路径访问等功能。对xul控件有一定的了解。能够将xul和html结合起来。选用的插件也很有特色。
缺点:转到功能不能使用。幻灯片不能自定义时间。
建议改进:完善转到功能,最好再增加右键菜单。代码的主要部分是用的开源的插件,希望能再多一些自己的东西。

作品评分:75
作品链接:作品展示: http://dl1.g-fox.cn/campus/uploaded/wangkai86@gmail.com/picbrowser.xpi
作品文档: http://dl1.g-fox.cn/campus/uploaded/wangkai86@gmail.com/picbrowser-doc.zip

综合三等奖 (2名)

学校:同济大学

团队名称:Inspiration
团队口号:头脑风暴
团队人数:1
团队成员姓名:朱剑
作品名称:QuickShare
作品点评:
优点:对于firefox的界面结构扩展机制有很好的了解,能很好的运用jquery插件。很有创新,将网页相册(Picasa)和本地相册结合起来浏览及管理,功能丰富。文档说明也比较详细,并做了视频演示。
缺点:无法登陆网络相册,没有用户名和密码,只是在视频演示中看到了网络相册的功能。
建议改进:主程序主要运用的大多是html和jquery中的代码,希望能够多一些xul和自己原创的东西。

作品评分:74
作品链接:作品展示: http://dl1.g-fox.cn/campus/uploaded/moon_ghost_jian@126.com/QuickShare.xpi
作品文档: http://dl1.g-fox.cn/campus/uploaded/moon_ghost_jian@126.com/QuickShare-doc.zip
作品演示视频:http://v.youku.com/v_show/id_XMjA2MzkyNTQ4.html

学校:北京理工大学

团队名称:BITFOX
团队口号:美在这里绽放!
团队人数:3
团队成员姓名:郭林楠、郭芬、李皓
作品名称:Firesee
作品点评:
优点:对xul控件有一定的了解。增加了一些实用的新功能,例如图片库,右键菜单等。对界面部分也做了一定的美化。文档全面,有ppt。
缺点:可能是由于操作系统主题不同,下面的一排按钮显示不全,有一半没有显示出来。右键删除文件时没有给任何提示。自动播放功能的设置不是很方便。
建议改进:自动播放可以设置的时间最短建议为1秒,太快了没有必要。删除图片时给出提示。

作品评分:72.5
作品链接:作品展示: http://dl1.g-fox.cn/campus/uploaded/guolinnan@gmail.com/Firesee2.0.xpi
作品文档: http://dl1.g-fox.cn/campus/uploaded/guolinnan@gmail.com/Freesee2.0-doc.zip

另有鼓励奖和纪念奖若干名,我们稍后会将获奖证书和奖品送到同学们手中。祝贺各位获奖同学,也再次感谢大家对Mozilla Firefox和开源事业的热爱和支持!

每年9月的第三个星期六,是世界软件自由日(SFD)。今年,火狐校园大使再次响应SFD中国站和中国开源软件联盟的号召,在大学校园开展了各种类型的开源软件宣传活动。

2010SFD第一弹:复旦大学站

活动时间:9月24日(周五)下午13:30-16:00

活动地点:复旦大学张江校区第二教学楼

活动内容: 中标软件朱健伟先生主题讲座及招聘宣讲

欢迎上海地区的开源爱好者参加:)

团队名称:火狐校园团队

活动任务:IT公益宣传;互联网民上网使用习惯的调查与研究;协助Mozilla基金会、国际自由软件基金会(FSF)等的活动举办。

团队成员:叶松、祁红杰、王磊、陈仕飞、陈俊杰、王骏、祝建中、刘华

负责人:刘华

活动的伊始

我们作为计算机专业的学生,不仅仅把计算机单纯作为一种谋生手段,同时也是兴趣、爱好和理想的所在。自从1942年计算机的诞生以来计算机的实践不断发展壮大,到如今各行各业中成为了不可或缺的一个工具,其魅力吸引了无数人而为之奋斗,为计算机网络事业的发展做出了卓越的贡献。而计算机所带来的经济体系日益庞大,其带来的经济效益不置可否,如软件版权等。其经济效益给了研发者动力,可是我觉得在我们身边也需要更多的分享,如同计算机领域中,若是有更多技术上的分享那么在人类的科技发展的步伐必然会大大加快,更多的普及化,更多的合理化受益的不仅仅是小部分人,也许是一个民族、一个国家、乃至整个世界!开源——很好地解决了这一个问题。分享,技术提升,免费……

正如众所周知的开源操作系统Linux为例,它的桌面系统全球市场份额也走出了曾今的低迷,达到了如今的8-10%。服务器端、大型主机、嵌入式系统中Linux的市场份额更是达到了Windows完全无法比低的市场份额;而基于开源系统Linux内核的Moblin、Android、MeGoo更是在如今智能手机中未来无限;并且Linux的开放机制更让无数人获益,其商业模式更是得到了广大IT人、用户、企业的不断好评。一种好的模式没有理由让我们不支持它、帮助它成长,因为它的进步可以让更多人获益、可以让更多人获得技术上的提升,更是让开发者们学会分享。

在这次的社会实践的活动中我们联系了国外著名基金会Mozilla的子公司北京谋智网络技术有限公司,这是一个非盈利的组织,旨在开源,提高互联网民的上网体验。其旗下著名的开源软件火狐浏览器就是出自该公司。而我们组织、成立了火狐团队,建立开源爱好者社区,推行免费软件、传播“开源”这种有益于互联网发展的精神!对于对开源精神的传播有很重要的意义,扩大开源技术的影响力可以让更多互联网爱好者参与进来,而周围世界对开源的认可、支持则是成为了开源技术爱好者最大的动力。

活动进行时

六月,在对于本次活动向机电学部申报后,我们正式开始筹划对于开源的宣传。首先是团队的组建,我们组成了一个九人的队伍,分别是我、叶松、祁红杰、王磊、陈仕飞、陈俊杰、王骏、祝建中。后在谋智网络的支持下和多所大学一起为开源进行宣传,其主题定义为“开源高校行”。其活动期间我们发扬了节约的传统和外企高效的工作习惯。

调查

在这次的活动中我们还要进行一个网民网络使用习惯的调查,为了今后能更好地服务互联网民打下坚实基础。因此我们亲自设计了调查表,为了让调查表所获得信息高效、明了和吸引被调查者,我们团队进行了激烈的讨论。从各个角度去分析我们所需要的是那些数据,考虑被调查者所填信息的真实性。这是我们团队每个人第一次制定调查表,若是做的不好很可能会影响以后的发展或得不到我们所需要的数据。最终我们每个队员亲身测试,以自己接受调查后的感受不断修改、完善。对于调查表的设计还有一个很重要的因素就是美观,对于立志发扬节约精神、低成本、高效率的我们来说找专门的设计工作室显然可以不花很大的气力就可以达到很好的效果,可是在我们已经历了江城学院老师对我们的软件培训,我们相信我们凭着自身的实力也可以完成!为了让调查表的样式能让每个人都尽量满意,我们决定每个人都动起来,各自设计出自己最满意的作品,然后再放在一起互相观摩、取长补短。在每个队员的付出后,我们做出了我们都比较满意的调查表,我们第一次感受到团队了力量,若是没有每个人努力,调查表也没有这么快出炉,也不会有个令人满意的样式。

在完成了调查表的制作,我们就得开始印刷出调查表,为了能得到一个比较便宜的价格,我们走访了校内外好几家打印店,甚至拿出了以前什么复印打折卡。我们在和老板谈价的时候充分利用了自己的口才,而且是加上车轮战术,估计把复印店老板搞的一阵无语,最终我们拿到了一个比较满意的价格,其实又是一种团队精神的体现吧,若是我们单枪上阵和老板谈判,我们哪里又能够是经商多年的老板呢。

拿到了调查表我们就开始正式的调查计划啦,看了有很多在学校调查的个人或者团体,他们的调查质量我表示质疑,很多调查表都被白白丢在了垃圾桶,这是多么的可惜啊,对于发扬节约精神的我们来说这一点可是大忌,浪费要坚决杜绝。为了提高活动调查质量,我们把谋智网络赞助我们的小礼物也拿了出来,是很精美的书签,虽然价值很底但是做的真的很漂亮。对于写的不错的同学给与一个书签的奖励。我们随机在教室、机房等,找不同系的朋友、同学帮忙派发、回收。最终调查表的回收率倒是比较可观,仅损失了0.5%不到,在派发中我们的朋友帮了很大忙,帮我们在其他专业完成了调查活动。后来我们召集了人员对调查结果进行了整理,做出了数据图、分析图表等。

宣传

做好了一切铺垫活动,我们得正式宣传了,我们觉得宣传板是还是在校园中传播信息的最好工具,所以我们决定制作三块宣传板了宣传此次的“开源高校行”,我们拿出了印刷出的海报,邀请了机电学部宣传部的同学帮助我们制作活动所用的宣传板。做宣传板是很辛苦的事情天气很炎热,在宣传部的那个房间里面温度更是高的吓人,真的很感激宣传部的那几个同学陪着我们一起受苦,在他们优良的美术功底下,他们帮我们做出了一块最难制作的板子,很漂亮的一块宣传板就自他们手中诞生了,还有两块板子我们必须自己做出来,这个对于没什么美术功底的我们来说这个事情还是很有难度的不过还好啦,难是难点,但是我们都没退缩硬着头皮去做了下,还请毛笔不错的宣传部长帮忙写了些毛笔字,做出了的效果虽然没宣传部做的那么好,但是看起来也是挺有模有样了。接着听到了火狐平台的应用挑战赛的消息,这个活动是中企开源与谋智合作举办的一个大型活动,奖励很丰厚更提供了很好的工作机会,所以我觉得有这样一个良好的机会不可错过,对于有实力的同学来说这是展示自己的绝好机会,所以我们说服火狐的一名主管希望在我们学校也开设一个赛区,经过游说主管答应了。所以在“开源高校行”中又添加了这样一个比赛元素。三块大宣传板都是很大的那种,加起来很重,我们就这样几个人抬着板子拿到展区,早上都会累的一身汗,这滋味实在是很累,记得第二天突然下起了倾盆大雨,我们那时候刚下完课,正准备去休息一下,遇见这样的突发情况我们就得去抢板子,免得雨水把做好的板子给毁掉了,这个可是好几个人的心血啊,当下我们几个男生就把板子往食堂拖,做完这些我们的衣服几乎都可以拧出水,手上也全部沾的是颜料。

成果

在这次活动中,让大家对开源有个初步的了解,相信会有更多开源爱好者,通过这样的途径来提升自己的技术、知识掌握程度和贡献、分享。目前对于开源活动的进行还是个比较具有前瞻性的思想,例如武汉的仅有武大、华科等几只火狐开源队伍而已,虽然目前我校的开源社区尚不成熟,但我们正朝着那个方向去努力,相信总有一天江城学院也会跻身名流。即使目前开源还精神还没渗透在每个人的心中,还有很长的路要走,但是我们相信自己,我们团结,能克服困难,真正的又有什么可以难倒我们呢?这次活动后谋智网络和中企开源对我们表示了一定的认可,于是我们荣获了“国际自由软件基金会”组织的邀请,我们将在2010年9月在校园内举办自由软件日这个活动。

认识、团队感悟

经过了这次的活动我们所获得的感悟有不少,很真实,很有感触。平时我们所见许多公益组织、志愿者团队觉得他们的工作其实并不是很有难度。当这次我们站在他们的角度,亲身去经历了这次的公益开源宣传推广我们才发现其实这样的组织是这么的艰难,我们满怀着热血与激情,作为一个立志成为IT人的我们来说希望对IT的世界做出一点贡献,促进互联网、和社会发展,可是有时候甚至连别人的认可也是得不到的,做公益志愿者的也很需要活动别人的认可、获得周围世界的支持,像我们有次在教室宣传、调查的时候人家居然把我们误会成一群以利益为目的的商业组织,听到了这样的话以后的确蛮伤人的,作为队长,我听到以后我也没有去告诉其他人,即使自己心中有千千万万个不愿与委屈,但我怕打击团队的士气,所以我选择了一个人默默的承担。所以换位思考一下,我们觉得做公益的那些人特别不容易,以后我们若是碰到那些团队会尽量去配合他们,完成他们的工作。因为,我们都希望这个社会越来越好,人类可以享受一个更加优质的生活。

期间抬板子去宣传的时候,我们也遇到了很大的问题,雨水造成了板子的湿滑我们只能尽量用手去夹着抬,一不小心就滑掉了,这样一来我们的花费的气力就比平时成倍增加,做完这些没有谁的衣服还是干的,全都被汗水浸湿了。其中叶松与王磊都是武汉本地人,从小就过着比较优越的生活,这次参加公益活动却可以无私地奉献,做着又苦又累的事情,真的很不容易,看着所有队员满头大汗、汗流浃背,我只能以微笑来表示对他们的敬佩与认可。

我们与打印店老板谈价格也是个很有意思的事情,海报、调查表、资料我们都需要临时做出来,但以发扬节约精神的我们来说对于这个开销我们必须压缩下去,能节约点钱的就节约点钱,为了和老板谈判一个比较低的价格我们喜欢钻下老板说话时候的空子,不断揣摩着老板心理价格的底线。我想在往后的生活、甚至更远的毕业后任何时候都要努力去揣摩对方的心理底线,对对方的漏洞进行一个很好的掌握。这也算是一个谈判的磨练吧,谈的好这样可以节约不少钱,在任何时候都是一个很重要的职业技能吧。

这次与谋智的合作也真的很锻炼人,谋智对我们要求很严格,我们所做的任何事情都要做好活动安排的计划,像公司的员工一样要求着,我们也体验到了外企效率的办公、和严格的监督模式,这将对我们对我们以后的职业生涯带来很多好处。

现在湖北的开源爱好者团队只有武大、华科还有我们中国地质大学江城学院等,这个说明了江城学院的学院领导具有很创新的前瞻性,意识到我们团队的意义,对良好项目也是在尽力支持。相信江城学院的学生都能成为对社会有用的人,因为我们也在不断努力进步着。(随后我们将和近百高校共同筹办“2010中国自由软件日”的活动)——后记

团队组建时候的招募、号外(由于觉得一张白纸不够具有吸引力,所以在宣传页的右上角粘贴了一个红色纸带)

宣传板的制作(亲自上阵,即使没功底)

复旦大学

李文思
药学
2009级本科生
个人宣言:火的热情,狐的精灵,成就未来。
自我介绍:我,一个来自复旦的自由人,崇尚完美,喜欢忙碌紧张,讨厌碌碌无为。多年使用火狐的经验让我对浏览器不能再挑剔了。火狐,值得你我为之奋斗。如果你还不是火狐人,还等什么,赶快加入我们呗!

武汉大学

夏传龙
软件工程
2010级研究生
个人宣言:细节决定成败,努力成就未来,脚踏实地,一点一滴勤奋积累。
自我介绍:我求学于珞珈山畔 东湖之滨,珞珈山给了我性格上的稳重,东湖水给了我思想上的灵动。自强,弘毅,求是,拓新是每一个武大人的座右铭。樱园的情人坡下,桂园场的地上,梅园李达塑像的树林里,枫园珞珈山的山道旁,都留下我的足迹,我始终坚信,天道酬勤,地道酬善,人道酬诚。

华中科技大学

彭旭康
计算机科学与技术
2009级本科生
个人宣言:我年轻,自有我精彩!
自我介绍:我叫彭旭康,boy,今年17岁,来自华中科技大学计算机院,喜欢多结实些朋友,体验多彩的生活,大家可以叫我小康,希望认识我的所有人都像我名字的寓意一样,每个人的未来如旭日初升般充满希望,每个人都健健康康,大家可以叫我小康,以后多指教!

中国矿业大学


王天乐
化学工程与工艺
2008级本科生
个人宣言:做事要相信自己,时刻要有感恩的心,热衷帮助他人。
自我介绍:我叫王天乐,顾名思义,天天快乐,见人微笑我认为是和他人交流的最好方式,平常我喜欢把完成当前专业以外的时间花费在研究计算机和同学交流上,多和同学交流可以丰富自己的知识,还可以锻炼自己与他人交流的能力。

哈尔滨工业大学


王文涛
微电子学与固体电子学
2010级研究生
个人宣言:相信网络与开源的力量!
自我介绍:我是哈尔滨工业大学大学微电子学与固体电子学专业2010级的研究生,我对开源事业十分热爱,尤其喜爱Linux和firefox。学习之余喜欢捣鼓各种软硬件,闲暇时看看电影,体育方面喜欢乒乓球,跑步。我坚信思考的力量,座右铭是:没有做不到,只有想不到!

河北联合大学


林红兵
计算机科学与技术
2009级本科生
个人宣言:放弃不是我的风格。
自我介绍:hello~我是河北理工大学的林红兵。
现在就读于计算机系,是2009级的。

淮海工学院


凡伟
计算机科学与技术
2007级本科生
个人宣言:燃烧激情,传递智慧!
自我介绍:如果你不小心来到了火狐,然后又不小心地来到了这个页面,那么证明你对我这人有点兴趣,如果我表错情了,这不是你的错,我应该检讨一下为什么这个页面的链接这么容易被人点到;如果我没错,那么,我应该暗自YY一下,可能又有一个小盆友稀饭我鸟~~我叫凡伟,典型的80后,计算机专业,据说稍微有点幽默细胞。经常出没于互联网的各个角落,热衷于计算机知识并为其投入了巨大的热情和精力。坚信网络可以改变未来,计算机将使生活变得更美好。我的理想,是可以借助火狐优秀的团队,借助网络的力量,为中国开源事业贡献出自己的一份热。

山东工商学院

杨曾坤
信息管理与信息系统
2007级本科生
个人宣言:没有比脚更长的路,没有比人更高的山,没有比自我教育更好的大学——I believe,I can .
自我介绍:我喜欢沉默,偶亦是滔滔不绝;为人仁慈善良,却时显性格柔弱;敢于承担责任,但偶有力不从心;做事胆大心细,却亦有麻烦!

同学们,2010Firefox火狐浏览器应用挑战赛报名将于8月20日截止,请没有提交报名表的同学抓紧时间!

同时,大赛作品提交也于8月20日开始8月25日截止

作品提交页面:http://campus.17huohu.cn/upload.php
(每次提交的文件须小于30M。大家点击作品提交页面后,须先注册、登陆,才可以上传文件。)

上传作品说明:

  • 作品提交格式:zip
  • 作品命名:姓名.学校域名.zip(例如:zhangsan.hit.edu.cn.zip)
  • zip文件中包含的内容:
    * 安装程序或压缩包文件
    * 源代码
    * 软件使用手册
    * 软件设计文档
    * 介绍该作品的视频演示文件(可选)
    * 介绍该作品的演示文稿(可选)
    * 其他有助于展示作品或大赛组委会了解作品及开发团队的资料(可选)

请上传你的作品:http://campus.17huohu.cn/upload.php

各位同学们,7月30日是2010Firefox火狐浏览器应用挑战赛报名的截止日期,凡提交报名表的同学,我们均已回复邮件确认。

近期有同学反映,因为放暑假在家休息,没能及时上网,因此我们将大赛报名截止日期延长8月20日,请没有提交报名表的同学抓紧时间!

同时,大赛作品提交时间不变,仍为:2010年8月20日0时起至8月25日23时59分止作品提交页面请参赛队伍继续关注大赛官方博客,我们也会提前邮件通知参赛选手。

再次提醒大赛报名方式:请发邮件至wzhao@mozilla.com索取报名表,将填写完毕的电子版报名表发送至wzhao@mozilla.com完成报名。

大家好,上周应北邮火狐校园大使之邀,中企开源和谋智网络的工程师们为大家做了一次“2010Firefox火狐浏览器应用挑战赛”的技术辅导。没能到场参加的同学们不要着急,我们已经把现场工程师讲解的视频录下来了:

(中企开源工程师陈欣在北邮做技术交流)

1.1_大赛题目说明

1.2_讲解内容说明

2.1_扩展包结构说明

2.2_修改install.rdf

2.3_将修改好的文件打为扩展包

2.4_安装好的扩展所在的位置

3.1_主界面代码目录说明

3.2_主界面代码说明(1)

3.3_主界面代码说明(2)

3.4_主界面代码说明(3)

3.5_主界面代码说明(4)

3.6_主界面代码说明(5)

3.7_对主界面进行简单的修改

搭建你的应用开发环境

Firefox相关设置的调节

创建Profile

新建一个Firefox的Profile,以便拥有一个纯净的开发环境,另外易于安装开发者插件。
使用以下方法创建一个新的Profile:

UNIX用户

firefox -no-remote -P develop

Windows NT用户 创建Firefox的快捷方式,传入参数 -no-remote -P develop

修改Firefox配置

使用该Profile打开Firefox,在地址栏内输入about:config,按下enter(或者return按钮。
修改以下参数为给出的值。下面将解释这些参数的含义。

  • javascript.options.showInConsole = true
    将chrome文件中的错误显示在Console里。
  • nglayout.debug.disable_xul_cache = true
    关闭XUL缓存,这允许不重启而改变窗口以及对话的内容。这里,可以使用目录而不是Jar。但是Overlay改变后,overlay文档必须重载。
  • browser.dom.window.dump.enabled = true
    这将允许dump()函数输出到stdout里。参考window.dump函数。特权应用也可用nsIConsoleService。
  • javascript.options.strict = true
    启用严格JavaScript错误提示。
  • extensions.logging.enabled = true
    这将给出更多关于安装以及更新插件的信息。
  • nglayout.debug.disable_xul_fastload = true
    (仅限Gecko 2.0+ (Firefox 4.0+))
  • dom.report_all_js_exceptions = true

Mozilla插件简介

什么是Mozilla插件

Mozilla插件是一段程序。通常,界面使用XUL语言(XML的一个子集)或者XUL内嵌HTML编写,而程序逻辑使用ECMAScript (Standard ECMA-262)(俗称JavaScript)编写。
XUL可以是独立的窗体,可以是对话,也可以是overlay。Overlay可以用于修改已经构建好的界面。下面是一段示例的XUL代码:

<overlay id="main-overlay" xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <menu id="file_menu">
  <menuitem name="Example One"/>
  <menuitem name="Example Two"/>
  <menuitem name="Example Three"/>
  <menuitem name="Example Four" position="1"/>

 </menu>
</overlay>

而JavaScript可以用来定义程序的行为。按照惯例,我们给出一段“你好世界”程序。

	alert("Hello World!");

CSS可以用于自定义样式,而XPCOM可以用于调用Firefox提供的接口。另外,现在有一些JavaScript Library,可以直接使用而降低代码难度。

几个重要的文件

一个Mozilla插件大致由以下文件组成:

.
│	chrome.manifest
│	install.rdf
│
├─defaults
│	└─preferences
│		pref.js
│
└─chrome
	│
	├─content
	│	├─overlay
	│	│	ff_overlay.xul
	│	│
	│	└─tools
	│
	├─skin
	│
	└─locale

最重要的两个文件是chrome.manifest和install.rdf。看字面意思,第一个是“Chrome”的声明,而第二个则是与安装有关的文件。
chrome是用来形容XUL应用中的所有GUI结构性元素的名词。例如,Firefox浏览器中除了网页内容之外的所有内容都是chrome。

chrome.manifest

下面是一个示例文件:

content imgview chrome/content/
overlay chrome://browser/content/browser.xul chrome://imgview/content/overlay/ff_overlay.xul

可以按照需要进行修改。特别注意的是,overlay行中第三个元素将被附加在第二个元素上,第一个关键词是overlay。

install.rdf

本文件较简单。请参考下面给出的文件进行修改。

<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

  <RDF:Description RDF:about="urn:mozilla:install-manifest"
                   em:id="imgview@osqdu.org.cn"
                   em:name="OSQDU Image Viewer"
                   em:iconURL=""
                   em:version="0.0.0.1"
                   em:type="2"
                   em:creator="OSQDU::Alex"
                   em:developer="OSQDU::Alex"
                   em:description=""
                   em:homepageURL="http://blog.osqdu.org.cn/code-review-of-osqduimg_xx.shtml">
     <!-- firefox -->
    <em:targetApplication RDF:resource="rdf:#$eAzAq3"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$eAzAq3"
                   em:id="{ec8030f7-c20a-464f-9b0e-13905321042f}"
                   em:minVersion="3.1a1pre"
                   em:maxVersion="3.6.*" />
</RDF:RDF>

代理文件

在开发应用时,可以使用代理文件代替build好的插件。这类似UNIX中的软链接。
打开Profile目录内的应用ID目录(例如 $MOZ_PROFILE/extensions/{ec8030f7-c20a-464f-9b0e-13905321042f}/)。 如果不愿使用GUID(Global Unique Identification Number),也可以使用 “name@domain” 的方式命名,例如 imgview@osqdu.org.cn

开始我们的开发之旅

创建项目

也许大家都已经习惯了使用集成开发环境来开发应用,但使用IDE并不是好主意,这里,我推荐使用Vi IMproved 作为主要的编辑器,原因不再赘述,如果不会使用vim,则可以使用Emacs—两个总是要会一个的,其他 推荐的编辑器有Notepad ++,为使用Windows而不想学习高级编辑器的程序员准备。

在Mozilla网站上,我们可以通过简单的通过Add-on Builder插件 生成一个新的插件。下载zip文件,使用你喜爱的存档管理器或unzip实用程序解压缩,修改install.rdf 以及chrome.manifest.

代码的编写

这一部分其实我并不想完成,因为代码归根结底还是程序员自己写的,而不是看Tutorial得到的。但是考虑到 有些同学是第一次接触Mozilla开发,对XUL, JavaScript并不熟悉,因此我们以Firefox应用挑战赛 的例程作为例程来讲解怎样开发一个真正的插件。请 点击这个链接(http://dl1.g-fox.cn/campus/20100618/demo.xpi)下载本例程。关于应用挑战赛, 请 点击这个链接(2010Firefox火狐浏览器应用挑战赛揭幕!——参加大赛,赢取笔记本电脑和就业机会,抱着本本上班去!) 了解详细情况。

解压缩demo.xpi,列目录,我们可以看到下面的文件:

total 224
drwxr-xr-x  3 alex  staff   102B  4 23 09:13 chrome
-rw-r--r--@ 1 alex  staff   231B  4 22 16:19 chrome.manifest
drwxr-xr-x  3 alex  staff   102B  4 23 09:13 defaults
-rw-r--r--  1 alex  staff   102K  6 17 13:35 demo.xpi
-rw-r--r--@ 1 alex  staff   923B  4 28 12:16 install.rdf

修改install.rdf以及chrome.manifest可以修改本项目的描述。下面我们将主要 以讲解chrome/content内的代码。

main.xul是在chrome.manifest里定义的overlay,打开,我们可以看到 这是一个标准的XML文档,但命名空间是特殊定义的,元素均是window的child。其中,包含了一些 script,这些script就是用于控制程序逻辑的了,例如tools/dom.js控制DOM相关的程序。

XUL的元素有很多,但是个人认为并不需要完全记忆。只要记住一些基本的元素,例如window , popup, vbox, hbox等即可。XUL的样式可以通过CSS来订制,这也是 有些Firefox插件可以做的非常漂亮的技术基础。目前,Firefox支持CSS3以及HTML 5,可以在此基础上开发 大量美轮美奂的插件。

有些时候,需要在XUL内插入HTML,这时,只需用<html:{HTMLTAG}>即可。但是要记住的是这是XML, 标签一定要闭合,否则会在parse时出错,导致浏览器无法正常使用,特别是在overlay到浏览器时。当然,最要命的 是chrome.manifest出现问题。曾经在我开发Firefox插件时,有一天浏览器总是崩溃,只要在终端 里输入firefox -P,选择我的开发profile之后,浏览器就立即segfault。百思不得其解,最终重 新编译Firefox (在Linux下),上了gdb,慢慢调试,才发现是chrome.manifest让浏览器疯掉了。

有一个非常好用的工具,XUL Periodic Table。这个工具可以用于查询各种各样的布局,直接拿过来copy and paste即可。

下面讲解怎开发程序逻辑。首先要介绍的是dump("String")函数。本函数非常有用,随时可以在 终端里dump出一行信息,用于监视程序的运行。

JavaScript很简单,语法松散,当然后果就是有时候行为有点怪异。这里举几个简单的例子,告诉大家如何调用 Mozilla提供的接口。截图可能是非常常用的功能,而HTML 5里的canvas元素正好可以做这件事情。

function CaptureEntirePage() {
  var doc = getBrowser().selectedBrowser.contentDocument;
  var win = window.top.getBrowser().selectedBrowser.contentWindow;
  var left = 0;
  var top = 0;
  var width = doc.documentElement.scrollWidth;
  var height = doc.documentElement.scrollHeight;
  var fName = "shot.png";
  var canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "html:canvas");
  canvas.style.width = String(width) + "px";
  canvas.style.height = String(height) + "px";
  canvas.width = width;
  canvas.height = height;
  var ctx = canvas.getContext("2d");
  ctx.clearRect(left, top, width, height);
  ctx.save();
  ctx.drawWindow(win, left, top, width, height, "rgb(255,255,255)");
  ctx.restore();
  var file =  SaveTemp(canvas, fName, 'S');
  return canvas;
}

上面的程序是我曾经开发过的一个插件的一部分。由于上段程序调用的函数都很简单,这里不再讲述如何使用。函数的 使用方法可以去MDC(Mozilla Developer Center)查询。MDC/Code snippets 里有很多现成的非常常用的代码用来参考,有一些CPAN的意思,当然不如CPAN大且全。

下面简单提一下文件操作,以此为例讲解如何使用XPCOM函数。

var file = Components.classes["@mozilla.org/file/directory_service;1"].
                     getService(Components.interfaces.nsIProperties).
                     get("ProfD", Components.interfaces.nsIFile);

这里,file是一个nsIFile类型的变量。ProfD是Profile目录,其他常用 的目录还有Home,操作系统的家目录,例如/home/alex或者/Users/alex。TempD是 操作系统的临时目录,例如/tmp/var/tmp
下面介绍如何取一个nsIFile类型变量的路径。

var filePath = file.path;

其实就是这么简单。可以用file.create的方法添加目录,然后用下面的代码确认:

file.append("NewDirectort");
if( !file.exists() || !file.isDirectory() ) {
   file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);
}

上面就添加了一个权限是777(drwxrwxrwx)的目录。777这个选项似乎对于Windows这类没有安全 特性的操作系统无效。

关于nsIFile的更多信息可以在MDC上查询,这里采用文件操作仅为了讲解较有代表性的函数,带领大家入门。

如何查找更多的信息

有一本书叫做Creating Applications with Mozilla,但这似乎是Netscape时代的书, 参考价值不大,建议大家不要购买。这里 可以合法的在网上阅读。

我推荐的学习方法是在写代码的过程中进行学习,这样才会有最好的学习效果。只看书,看资料而不写代码是 学不好写程序的。但是,资料仍然是必备的。下面推荐一些互联网资源,希望能帮助到大家。

原文链接http://blog.osqdu.org.cn/develop-your-first-firefox-plugin_129.shtml

同学们,2010Firefox火狐浏览器应用挑战赛报名即将截止,大家是不是都在摩拳擦掌、跃跃欲试呢?

谋智网络和中企开源的工程师应北邮火狐开发小组之邀,将于本周四(7月22日)上午10点,在北邮四教412教室举办一次技术交流会,欢迎有兴趣的同学到场交流!

——————————————————–

2010Firefox火狐浏览器应用挑战赛-技术交流会

——————————————————–

时间:7月22日(周四),上午10:00

地点:北邮四教412

——————————————————–

从今年3月开始我接受了中国地质大学江城学院的火狐大使职务。在本校区以及周边地区负责火狐浏览器的宣传推广、建立开源社区、与学校老师领导交流火狐计划等。

在这期工作我组建了火狐校园团队一共8人,首先是随机抽取各专业学生做了一次对浏览器使用的调查,同时也做了一些互动的活动,对于积极的同学给予一些奖品,初步在校园内展示了我们火狐团队;在学校鼓励的社会实践活动中,我们将我们的火狐校园计划加入了学校倡议的社会活动中去,得到到学校老师的大力支持;与学校网络管理主任交流,让他了解到我们的团队,对于火狐资源在校内的投放做出了准备,同时也让他肯定了我们是个有意义的队伍;随后开展了火狐的宣传活动,我们联系校宣传部门帮助制作了三块大宣传板,进行全校范围的宣传工作;网络答疑——我们在问问或者百度知道上面帮助那些对火狐有疑问的人,让他们自己选择——火狐,同时在生活中我们也热心帮助使用火狐的同学,帮助他们解决一些不明白的地方,让他们更方便地入手火狐,提高上网体验。

在这期的活动中我意识到很多问题,虽然有成功的方面可是有些地方做的依然不够好需要改进。总体分为两方面,火狐软件本身和宣传问题。关于火狐本身的问题已是个老问题,比如说兼容,虽说火狐是遵守网络规范,但是那些网页不去修正导致了火狐用户的访问问题,也就必须使得用户安装IE TAB 或者一个IE核心浏览器。还有就是用户使用习惯问题,比如迅雷插件,要想火狐用上迅雷也必须用户去安装一个插件而插件的使用设置繁琐也不利于火狐的发展。火狐的插件库中很多都是英文,我觉得这方面可以针对中国市场的用户整理一个插件库,根据中国市场的使用习惯来推荐一些插件。还有火狐目前的启动速度也不是很令人满意,若是使IE用户转为火狐用户,用户在浅意识就会使IE与火狐之间产生对比,在点击启动后如果产生过长的响应时间会使用户的使用感受下降。火狐已是款优秀的浏览器我们期待、也相信它会变得更优秀;而我们校内宣传工作因为宣传规模等制约了宣传的效果,互动活动的模式也比较缺乏。例如在校内举办的火狐应用挑战赛这样互动宣传赛事因为对象必须具备计算机专业知识而不能吸引到更多的人来参与。我想如果能举办一个更“平民化”的活动来吸引大家参加火狐的活动,这样就可以吸引很多人来参与进来,同时达到宣传目的。

这一期的工作结束,有成功的地方也有不足。找到不足、认识不足才可以越来越成功,我们相信我们有能力做的更好。

« Prev - Next »