2005年07月26日

在一个企业或者组织内部部署软件,对配置的统一管理常常是个问题。比如在部署一套浏览器,管理员可能需要将这些浏览器配置成统一的homepage, proxy server以及一些安全设置。光是部署一下问题可能不大,部署完毕后要做统一修改就会很麻烦。

早期的Netscape有一个功能叫做autoconfig,通过一些预先的设置,可以让浏览器从一个指定的url读取一个配置文件。管理员只要修改一个配置文件并把它放到这个url下面就可以完成配置的统一管理。不但能修改配置,还可以锁定,让用户无法通过界面修改。为了帮助管理员使用这个功能,Netscape还专门发布了一套叫做Mission Control Desktop的管理工具。说一个八卦,当年Netscape迫于IE的压力开始免费后,这套工具是卖钱的。

Netscape变身Mozilla以后,这个功能仍然存在,但MCD就停止开发了。虽然后来出了CCK,也只是一个Installer Builder,集中管理的工具始终是个空缺。
让Firefox实现集中管理并不困难,最近拿ruby on rails练手,做了一个web base的Firefox集中管理工具–Foxconf.注册登录以后,创建一个configuration plan.点击plan,在Deploy页中下载两个配置文件,foxconf.cfg和foxconf.js,将这两个文件按照说明安装在需要集中管理的Firefox中.

foxconf deploy

然后,你可以在Foxconf中修改你的configuration plan,那些安装了foxconf.js和foxconf.cfg的Firefox会在启动的时候通过网络读取你在Foxconf中所作的配置,从而到达集中管理的目的.
每个配置都有三个属性,分别是default, pref和lock.

  • default是指将这个配置作为缺省,这样的配置可以被用户的配置覆盖
  • pref是指将这个配置作为普通配置
  • lock是指这个配置被锁定,用户不可以从界面上修改

举个例子,我创建一个configuration plan叫plan1(好没创意).在本地自己的Firefox中装上这个plan对应的foxconf.cfg和foxconf.js.然后,我在Foxconf中对这个plan做下面的配置:
 plan1 example


提交以后,启动我的Firefox,会发现启动主页已经变成了http://www.splyb.com/madfox,打开"首选项",可以看到主页部分已经被锁定不能修改:


plan1 firefox




如果有兴趣,就试试看吧.

一些要说明的问题:

  1. 对个人用户而言,这个东西没什么用处.
  2. 目前的Foxconf还出于开发阶段,只是一个试用品,最好不要直接就拿它开始管理你网吧或者办公室里的Firefox
  3. 注册时请使用真实email,因为要发注册信.你的email不会被使用在其他任何地方.
  4. 由于Firefox启动时会去Foxconf更新配置,启动速度会受到一定影响.这样的应用管理工具通常是放在企业或者组织内部的网络中,内部的网络联接会大大减少这种影响.
  5. 由于Firefox的autoconfig还存在一些bug,有些配置可能不起作用.比如如果将home page的配置属性设置成default而不是pref或者lock,那么虽然你可以在Firefox的about:config中看到这一改变,这个改变却不起作用.
  6. Foxconf本身也会有bug,如果你原意,可以给我报告问题,提供建议.
2005年07月24日

Madfox 0.3.2 update2 基于 Firefox 1.0.6 ,仍然使用 Madfox 0.3.2 的补丁。

下载(DOWNLOAD)

2005年05月24日

其实关于这方面的材料已经有不少了,我就在这里梳理一下。

  • Greasemonkey的主页,有greasemonkey的介绍,安装方法和使用。最主要的是一堆别人写好的userscript。
  • Dive into Greasemonkey ,有一本很棒的userscript教材,几乎是手把手教了,当然,你首先要有javascript, DOM和HTML的知识。
  • 写userscript时会用到的工具:
    • DOM Inspector , 用来定位网页内容在HTML结构中的位置。用DOM Inspector 还能看到每个网页元素的CSS Rules, Computed CSS style以及对应javascript object的详细内容。赶快熟练使用这个工具吧。
    • jsenv , 这是Jesse Ruderman 写的一个bookmarklet , 提供了一个很好的userscript 开发环境。是开发userscript 的必备利器。另外,还有一些其他的bookmarklet ,比如javascript shell , 也都是开发javascript程序非常好的工具。
  • 一些有用的相关资料
    • Gecko DOM Reference , Gecko引擎的DOM手册,Mozilla/Firefox所支持的DOM,不仅有W3C的DOM Level 1和2,还有Mozilla/Firefox支持的事实标准DOM Level 0。
    • XPath教程,通过一些例子来学习XPath。一下午掌握如果迅速定位网页元素。

今天看见有人报告chinapub的经管类图书中图书图片不能显示,检查了一下是把文件分隔符写反了,手一痒,又做了一个greasemonkey的userscript,如果你没有装greasemonkey,也可以直接安装这个编译好的扩展。自从Jesse Ruderman发布了他的jsenv,我就开始写userscript上瘾。

2005年05月18日

不知道macfans是不是国内最大的mac论坛,这个论坛什么都好,就是有些人把自己的签名搞得太花哨,图片、按钮加一堆,每次看帖子这些东西比内容还强眼,如果单纯按照url来禁止图片,论坛里的贴图又看不到了。好歹都是mac的fans,一点都没有秉承苹果简洁的风格。
这两天玩了玩greasemonkey,顺手做了一个为macfans论坛消灭签名中图片和按钮的Firefox扩展。如果你刚好装了greasemonkey,可以直接导入这个userscript,如果你不想装greasemonkey,可以直接安装这个编译好的扩展。世界一下就清净了。

Madfox 0.3.2 update1 基于 Firefox 1.0.4 ,仍然使用 Madfox 0.3.2 的补丁。 Firefox 1.0.4 中有很重要的安全漏洞修改,所以请 Madfox 的用户升级到 Madfox 0.3.2 update1。
下载(DOWNLOAD)

2005年05月03日

Madfox 0.3.2基于Firefox 1.0.3,新增加内容包括:

  • 使用了leng4681设计的图标。
  • 继续增强了通过name访问网页元素,解决了pconline下载页中下载按钮无效的问题。
  • 修改了document.all.tags失效的bug
  • 增加了对通过()访问数组元素的支持,和上一个修改一起,解决了tianyaclub左边部分列表不能点的问题。
  • 增加了对cursor:hand的支持,一些以前没有小手鼠标的地方可以出来小手了
  • 加入了一个IE兼容性管理机制,后端已经实现,UI还没做。将0.3中引入的IE DOM方法的实现通过它来管理,防止带来一些内存使用上的增加和一些regression的出现。
  • 为苹果用户增加了专门针对PowerPC 7450 (newer G4)优化的版本,使用了mozillazine上powerbook提供的编译选项,其他芯片的用户慎用。

Firefox 1.0.3产生了一些regression,mozilla.org会很快出Firefox1.0.4,所以不用太着急更新到这一版。不过还是欢迎大家帮我测试新加入的功能。

下载:

2005年05月02日

以前一直临时寄居在新浪邮箱的个人主页中,访问流量受到限制,经常遇到access deny的现象。现在搬到www.splyb.com/madfox,页面的管理和发布也改用 Word Press。流量可以有一定的保证。

2005年04月13日

有些IE支持的东西,你在msdn里也找不到.
IE支持javascript以函数的形式访问数组中的元素,比如a是一个数组,通常访问其中元素的方法是a[n],在IE里,你也可以用a(n).msdn中javascript/jscript的章节没说你可以这么用,实际上这是一个vbscript的功能.不知道这是因为脚本引擎共享代码造成的bug,还是专门为了讨好VBer.
以前以为要在Gecko中实现这个功能会比较难,前两天研究了一下Gecko的javaxript引擎spidermonkey以及javascript object和C++ Object的关系,发现实际上每个javascript object都有一个可选的Call接口,这也不奇怪,每个function在javascript里都是一个object.所以剩下的事情就是为nsDOMClassInfo里的nsArraySH和nsNamedArray都实现这个接口就可以了.整个补丁只增加了一百来行就搞定了.

2005年04月08日

看到很多人抱怨Firefox不能使用ctrl+enter发贴,开始还以为这是一个IE为textarea增加的快捷键,做了几个test case试了以后才知道这并不是IE的功能.


很多报这个问题的人使用的是Dvbbs,找到Dvbbs的代码一看才知道这是Dvbbs自己实现的一个功能.在实现这个功能的时候,对IE和非IE浏览器做了不同的处理.看代码:


代码:


   if (Dvbbs_bIsIE5){


      var Dvbbs_bodyTag="<style type=text/css>.quote{margin:5px
20px;border:1px solid #CCCCCC;padding:5px; background:#F3F3F3
}\nbody{boder:0px}.HtmlCode{margin:5px 20px;border:1px solid
#CCCCCC;padding:5px;background:#FDFDDF;font-size:14px;font-family:Tahoma;font-style
: oblique;line-height : normal
;font-weight:bold;}\nbody{boder:0px}</style></head><BODY
bgcolor=\"#FFFFFF\" title=\"Ctrl+Enter直接提交贴子\"
onkeydown=\"ctlent();\">";


   }else


   {

      var Dvbbs_bodyTag="<style
type=text/css>.quote{margin:5px 20px;border:1px solid
#CCCCCC;padding:5px; background:#F3F3F3
}\nbody{boder:0px}.HtmlCode{margin:5px 20px;border:1px solid
#CCCCCC;padding:5px;background:#FDFDDF;font-size:14px;font-family:Tahoma;font-style
: oblique;line-height : normal
;font-weight:bold;}\nbody{boder:0px}</style></head><BODY
bgcolor=\"#FFFFFF\">";


   }




在为IE实现的代码部分多了一个事件处理


代码:


onkeydown=\"ctlent();\"




而为非IE浏览器就没有.


再看这个事件处理调用的函数:


代码:


function ctlent(){


   var ispost=0;


   if (document.all)


   {


      if(event.ctrlKey && event.keyCode==13)


      {


      Dvbbs_CopyData(‘Body’)


      Checkdata()


      if (ischeck==true){this.document.Dvform.submit();}


      }


   }


}




就是处理ctrl+enter提交表单的.


好了,结论就有了.这并不是一个兼容性的问题,因为论坛根本就没有为非IE浏览器实现这个功能.