Monthly Archive for February, 2006

我收集的Mozilla扩展开发资源

文档 Documentation

http://developer.mozilla.org/en/docs/Extensions

XUL Programmer’s Reference Manual
http://www.mozilla.org/xpfe/xulref/

Mozilla XUL and Script Reference
http://www.ar-ent.net/dar/arlib32/out/html/man/xul/elemref/mxdref.html

知识库 Knowledge Base

MozillaZine Knowledge Base
http://kb.mozillazine.org/Main_Page

论坛 Forums

MozillaZine Forum
http://forums.mozillazine.org/

Related posts

Mozilla扩展开发的几个技巧

1. 为Firefox建立一个新的profile,专门用于扩展的开发和测试。

启动Firefox时加上-P参数会同时启动Firefox的Profile管理器, 可以新建、重命名或删除Profile。

建好一个新的Profile后,下次需用-P <Profile Name>参数启动Firefox。

注意,使用-P参数时要指定环境变量 MOZ_NO_REMOTE=1

为了日后方便,可以使用Shell脚本或批处理:
startff.sh

#!/bin/bash
export MOZ_NO_REMOTE=1
firefox -P $1 -console

startff.bat

@Echo off
Set MOZ_NO_REMOTE=1
Start firefox.exe -P %1 -console
Exit

参数-console让Firefox带一个控制台启动,可以观察Javascript的dump函数的输出。

2. 修改几个Firefox设置方便开发。

  • javascript.options.showInConsole = true 将chrome 类型的错误提示信息显示在 JavaScript 控制台中
  • nglayout.debug.disable_xul_cache = true 不缓存XUL
  • browser.dom.window.dump.enabled = true 允许dump函数
  • javascript.options.strict = true 允许严格的 Javascript 警告出现在 JavaScript 控制台中。

3. 注意扩展文件的编码方式,尤其是进行Locale的L10N的时候。对编辑器的要求是这样的:

  • Support UTF-8 file format
  • Option for leaving out Unicode signature, BOM (Byte Order Mark, U+FEFF)
  • Support escaped Unicode (uXXXX)

我感觉EditPlus和UltraEdit读取和保存UTF-8文件的功能都不是很好用,会造成Firefox无法识别XUL或DTD文件。后来找到了UniRed、PSPad这些支持保存不带BOM的UTF-8文件的编辑器。

参考:

Related posts

vsftpd v2.0.4 FAQ的翻译

增加了11条。

Q1) 求助!我在下载时遇到”426 Failure writing network stream.”错误。
A) 在v1.2.1以及更高版本的vsftpd中你应该不会遇到这个错误。如果用户试图从不常见的文件系统(比如FAT)中下载,旧版本的vsftpd就会出 现这个错误,因为(这种文件系统)不支持vsftpd需要的性能特性。 1.1.3及更高版本的vsftpd有一个相关的配置选项use_sendfile=NO.

Q2) 求助!我在使用pam_userdb登录模块时登录过程僵死了。
A) 这是因为版本2.3的glibc和PAM交互的问题。有Debian用户已经报告了这个bug。看这里:http://lists.debian.org/debian-glibc/2003/debian-glibc-200309/msg00310.html

Q3) 求助!vsftpd支持大文件(>2Gb?)吗?
A) 支持。

Q4) 求助!但是大文件支持好像不工作啊!
A1) 从版本1.1.0开始就支持大文件了。
A2) Solarisp平台下的大文件支持需要版本v1.2.2。
A3) FreeBSD平台下的大文件支持需要版本v1.2.2。
A4) 早期的Linux 2.6 内核在大文件支持上有bug - 用v2.6.6或更新版本的内核。
A5) 你能保证你的FTP客户端可以正确的支持大文件吗?

Q5) 求助!Help! 内置的vsftpd监听器死掉(崩溃)了!
A) vsftpd v1.2.2修复了这个bug。问题还存在但似乎只在特定的平台上才频繁出现。例如,Fedora Core 1 - 怀疑是启用了NPTL的内核和glibc-2.3触发了这个问题。

Q6) 求助!我在使用Solaris / Veritas时vsftpd死掉了!
A) 怀疑是与Solaris / Veritas 结合使用时的bug。 vsftpd-1.2.3里有一个可能的解决方法:no_log_lock=YES 详见 vsftpd.conf.5。

Q7) vsftpd支持基于SSL / TLS的加密吗?
A) 支持。版本v2.0.0对控制和数据连接都支持加密(喝彩!)你首先需要一个启用这些支持的vsftpd,然后激活ssl_enable这个设置。注意这里有安全问题需要考虑,请一定在使用前详细阅读 vsftpd.conf.5的man帮助中ssl_enable一节。

Q8) 求助!我使用FlashFXP下载文件时会发生截断。
A) FlashFXP的bug多多-尤其是启用SSL传输时。升级到v3.0RC4或更新的版本,据说已修复了这个bug。

Q9) 求助!我想编译vsftpd,但我遇到了”krb5.h: no such file or directory”这个错误。
A) 好像是一些RedHat系统会有这个问题。详细解释和解决办法请看后面这个链接
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=111301

Q10) 求助!当我连接vsftpd时遇到了”OOPS: capset”错误。
A) 用启用了SELinux的发行版时会有这个问题。解决办法是确保加载了capability这个内核模块。

Q11) 求助!我遇到了”ftp: netin: Interrupted system call”错误。
A) 这似乎是ftp-tls的一个bug,特别是结合了SSL并且设置了带宽限制时会发生。

Related posts

我制作的Mozilla-Search Plugins

  • “ChinaUnix.net” search plugin
  • “VeryCD” search plugin
  • “python-chinese” search plugin

http://mycroft.mozdev.org/download.html

Related posts

学习制作Mozilla搜索插件(Mozilla-Search plugins)

Mozilla搜索插件在Mozilla和Mozilla Firefox里的表现形式不太一样,但Firefox也可以安装SearchSideBar这个扩展来实现同样的sidebar。

为Mozilla添加新的搜索插件很简单,如Mycroft上所说,只要你懂一点html的知识。Mycroft是搜索插件的”集散地”,你在Firefox的搜索工具栏的下拉菜单里选”添加引擎”就会带你去这里,找到你想用的插件,点击链接安装它们。

Mycroft有很详细的制作教程,甚至还有一个plugin生成页面帮你,不过我没试过。

下面我结合我为CU精华贴搜索制作的搜索插件来介绍如何制作一个搜索插件。

首先,用你最喜欢的文本编辑器新建一个文件。我在Windows下用的是PSPad,你可能喜欢别的,当然用记事本也可以。Unix下就不用多说了,vi、emacs、nano随便你。

先写一些注释信息,以#开头,可以描述一下这个插件是为哪个搜索引擎创建的、作者是谁、最后更新时间等等。这些虽然是可写可不写的,但是强烈建议你加上,至少可以显得我们很专业。像我,就写这么一行:
# Mozilla plug-in file for ChinaUnix.net by wolfg <wolfg****@*****mail.com>
关于这些header信息如何写,可以参考http://mycroft.mozdev.org/deepdocs/headerinfo.html

下面开始真正的plugin代码。插件代码要求必须以SEARCH标签开始,
<search

接下来必须是version这个属性
version=”7.1″
注意,这个version并不是指plugin自己的版本。至于7.1这个值是怎么来的,请详细阅读SEARCH标签的文档。

属性name和description都是必须的,name用来显示在选择搜索引擎的下拉菜单里。这里我写的是:
name=”ChinaUnix.net”
description=”ChinaUnix.net”

属性action、searchForm和method比较重要了,是plugin能否工作正常的条件之一。searchForm要指定包含输入搜索条件 表单(Form)的那个页面的url,比如CU的搜索就是http://search.chinaunix.net/cgi-bin/search; action则和搜索表单里的action一样,查看包含表单的那个页面的源代码就知道了;method呢,显然应该跟表单的method属性一样,但是 现在只能用GET。
method=”GET”
action=”http://search.chinaunix.net/cgi-bin/search”
searchForm=”http://search.chinaunix.net/cgi-bin/search”

因为CU的搜索是简体中文页面,所以queryEncoding和queryCharset这两个属性也要加上。
queryEncoding=”gb2312″
queryCharset=”gb2312″

然后呢,用>关闭SEARCH标签的开始部分,跟写html标签一样。

在用</search>来结束SEARCH标签之前,还需要包含INPUT标签和INTERPRET标签。

INPUT标签是用来告诉Mozilla把什么信息提交给搜索页面的。

<input name=”sourceid” value=”Mozilla-search”>
这个名为sourceid的INPUT是用来告诉搜索页面是Mozilla-search提交查询请求的,满足网站统计的需要。

<input name=”key” user>

这个也是重要的地方,user表示这个是需要用户在搜索工具栏里输入的查询信息。这种需要用户输入的INPUT标签只能有一个。name的值要看搜索页面的源代码来确定。CU搜索页面的那个input的name是key,所以这里的name也是key。

CU的搜索还需要两个信息,forum_num和mode,这些就不能要求用户输入了,所以直接用value来指定固定的值。当然,这些也是通过查看搜索页面的源代码得知的。
<input name=”forum_num” value=”-1″>
<input name=”mode” value=”title”>

<inputnext name=”begin” factor=”50″>
<inputprev>
<inputnext name=”page_n” factor=”1″>
<inputprev>

inputnext和inputprev标签比较特殊,用来实现在Mozilla的侧栏(sidebar)里将查询结果分页。factor表示下一 页时属性的增长值。上面的代码表示每次按下”下一页”,begin会增加50,按下”前一页”则减少50。(:factor是从0开始计算的。而CU的 搜索中page_n这个参数是从1开始的,所以在sidebar里的分页工作得不正常。已经有人提出了这个问题,,是个bug吗?)

INPUT标签的文档在这里

INTERPRET标签则是用来告诉Mozilla如何解释查询返回的结果的。至少要包括resultListStart、resultListEnd、 resultItemStart和resultItemEnd这四个属性。

<interpret
browserResultType=”result”
charset = “gb2312″
resultListStart = ‘<table width=100% border=”0″ cellspacing=”1″ cellpadding=”0″ align=”center”>’
resultListEnd = “</table>”
resultItemStart=”<td >”
resultItemEnd=”</td>”
>

这里,resultListStart和resultListEnd是告诉Mozilla从什么地方开始查找查询结果,直到遇见什么为止。 resultItemStart和resultItemEnd告诉Mozilla在它们指定的范围内找<a xhref=”" mce_href=”" >标签以便生成sidebar里的查询结果列表。

现在该用</search>来结束SEARCH标签了。

最后,还需要BROWSER标签来指定与插件更新相关的一些信息,如更新的url和检查周期。
<browser
update=”http://mycroft.mozdev.org/update.php/id0/chinaunix.src”
updateIcon=”http://mycroft.mozdev.org/update.php/id0/chinaunix.gif”
updateCheckDays=”7″
>

完整的代码如下:

# Mozilla plug-in file for ChinaUnix.net by wolfg <wolfg****@****mail.com>

<search
version=”7.1″
name=”ChinaUnix.net”
description=”ChinaUnix.net”
method=”GET”
action=”http://search.chinaunix.net/cgi-bin/search”
searchForm=”http://search.chinaunix.net/cgi-bin/search”
queryEncoding=”gb2312″
queryCharset=”gb2312″
>

<input name=”sourceid” value=”Mozilla-search”>
<input name=”key” user>
<input name=”forum_num” value=”-1″>
<input name=”mode” value=”title”>
<inputnext name=”begin” factor=”50″>
<inputprev>
<inputnext name=”page_n” factor=”1″>
<inputprev>

<interpret
browserResultType=”result”
charset = “gb2312″
resultListStart = ‘<table width=100% border=”0″ cellspacing=”1″ cellpadding=”0″ align=”center”>’
resultListEnd = “</table>”
resultItemStart=”<td >”
resultItemEnd=”</td>”
>

</search>

<browser
update=”http://mycroft.mozdev.org/update.php/id0/chinaunix.src”
updateIcon=”http://mycroft.mozdev.org/update.php/id0/chinaunix.gif”
updateCheckDays=”7″
>

现在保存这个文本文件,扩展名得是.src。 还需要为插件准备一个图标文件。这个图标得是16×16像素的gif、jpg、jpge或png文件,文件名 必须和插件代码的名字一致。比如,我这个代码文件叫chinaunix.src,那么它的图标文件就得是chinaunix.gif或 chinaunix.png什么的。详细要求在这里

在把你的插件提交到Mycroft之前,请遵照这里的要求检查一番吧。怎么安装你 的插件呢?最简单的办法,直接copy到Mozilla的searchplugins目录。默认情况下,Windows 下这个目录是C:/Program Files/Mozilla.org/Mozilla/searchplugins(Firefox的是C:/Program Files/Mozilla Firefox/searchplugins),Linux下是/usr/lib/Mozilla/searchplugins(非root用户需要写权限)。

一切正常?只要你满意就可以提交了,分享你的成果吧!

Related posts




This work by wolfg is licensed under a Attribution-Noncommercial-Share Alike 2.5 China Mainland.