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文件的编辑器。

参考:

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并且设置了带宽限制时会发生。