支持多浏览器的网站变灰方法

这篇文章中给出了针对 IE 浏览器的使网站变灰的方法,具体做法是在 CSS 文件的开头添加这样一行:

html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }

但是很遗憾这种方法并不能支持 Firefox 和 Chrome。这篇博客介绍一种支持各种浏览器的网站变灰方法,试验其支持 Firefox、Chrome 和 IE,据说可以支持 Opera(未测试),方法比较简单,就直接介绍步骤了。

1. 到这里下载 grayscale.js 文件到你网站的根目录(或者也可以不下载,直接引入该 js,未测试)。

2. 在网站的 footer 或者 header 等全局的文件中插入以下代码(注意,$() 和 .load handler需要 jquery.js 的支持,不使用 jquery 的同学可以自行搜索解决标签查找和 window onload 事件处理问题,例如这里这里):

<script type="text/javascript" src="/grayscale.js"></script>
<script type="text/javascript">
$(window).load(function () {
  grayscale( $('body') );
});
</script>

该方法的缺点是:

1. 页面加载完后才对整个页面进行变灰操作;
2. 在非 IE 浏览器中不支持来自其它域名的网站图片的变灰;
3. 造成非 IE 浏览器在加载完页面后进行大量 js 计算,该计算负担可以通过仅变灰 img, a 等标签而不是 body 来优化。

关于 SOCKS 代理的远端 DNS 解析

经常使用 SOCKS 代理服务器的同志们会发现一种现象,即使 SOCKS 代理服务器设置正确,某些网站仍然无法访问,比如某著名微博网站。其一般原因都是 DNS 污染 (DNS cache poisoning)。

值得庆幸的是 SOCKS 5 协议增加了对 UDP 数据包的支持,DNS 查询是通过 UDP 传输的,所以我们可以使 DNS 查询数据包也走 SOCKS 5 代理来进行远端 DNS 解析(Remote DNS Lookup)。 SOCKS 5是通过将域名直接提交给 SOCKS 服务器来进行远端 DNS 解析的,即 Address Type 0x03,而非上述所说使用 UDP 通道解析。DNS 服务是 Internet 的基础服务,要求 DNS 解析应当尽量地快,所以浏览器默认不会使用远端 DNS 解析。在目前的常用浏览器中,貌似只有 Firefox 支持可选的远端 DNS 解析,方法见这里

我没有找到 IE 和 Chrome 支持远端 DNS 解析的方法,从讨论来看似乎是不支持的,Opera 则根本没有 SOCKS 代理支持。

即便是 Firefox,对远端 DNS 解析的支持也是有一些问题的。我的经验是:Firefox 只有在设置里面写死 SOCKS v5 的代理服务器设置时,才会支持远端 DNS 解析;当使用自动代理设置脚本(.pac )时,即使返回 SOCKS 代理,Firefox 也不会进行远端 DNS 解析。当使用自动代理设置脚本(.pac )时,以 SOCKS5 返回代理地址,可以支持远端 DNS 解析。

结论是,如果想要远端 DNS 解析,只能手动切换 SOCKS 代理,不能使用自动代理配置脚本。

网友 forkei 的重要评论

chrome 的 Proxy Switchy 1.4.2 版本插件可以很好的解决这个问题。Firefox 的 FoxyProxy 插件也可以很好的解决 DNS 污染。支持插件扩展功能的浏览器功能就是强大。IE 内核浏览器和 opera 只有通过 polipo 或者 privoxy 将 socks 代理转为 http 代理才行,麻烦。

Linux 下 Firefox 变身 Google Chrome

几乎可以达到以假乱真的效果,屏幕截图请看:

Linux 下 Firefox 变身 Chrome

要求:
1. KDE 4 ---> Gnome 的窗口无法隐藏标题栏,影响变身效果(这也是目前我觉得 KDE 更好玩的原因之一)
2. Firefox 3.5 以上 ---> 3.5 以下无法使用 Chromifox Extreme 主题,只能使用 Basic Chromifox Extreme 主题
3. Chromifox Companion 扩展 ---> 配合 Chromifox Extreme 主题修改工具栏图标
4. Hide Menubar 扩展 ---> 隐藏菜单栏,可以使用 alt 呼出

步骤:
1. 安装 Firefox 3.5。下载 tar.bz 包之后解压到 /opt 目录下,比如目录名为 /opt/firefox,修改 /usr/bin/firefox 软链接到 /opt/firefox/firefox。
2. 安装 Flash 插件。在 /opt/firefox/plugins 目录下建立软链接 libflashplayer.so 到 /usr/lib/flashplugin-installer/libflashplayer.so。
3. 打开 Firefox,查看版本是否 3.5,安装 Chromifox Extreme 主题
4. 安装 Chromifox Companion 扩展
5. 安装 Hide Menubar 扩展
6. 设置隐藏标题栏。右击标题栏,Advanced->Special Application Settings->Preferences->No border,下拉选择 Apply Initially,勾上后面的复选框。
7. 重启 Firefox。

Update:在 Ubuntu 下安装 Google Chrome (开发者版)和 Google Earth

$ echo "deb http://dl.google.com/linux/deb/ stable main" > google-chrome.list
$ sudo mv google-chrome.list /etc/apt/sources.list.d/
$ wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install google-chrome googleearth

遗憾的是,Chrome4Linux 目前还不支持中文。

用 Firefox 插件控制网络沉迷

最近好几个朋友都加入了一个叫做“你为什么不关掉电脑去做爱做的事”的豆瓣小组,当然,我也加入了。

也许是大学时候养成的毛病,也许是因为现在网络是免费的,我虽然不会沉迷于游戏,但却经常在该工作的时候沉迷于网络,其中典型的包括小百合 BBS、Google Reader 等。最近我想控制一下这些浪费时间的行为,就把 bbs.nju.edu.cn, reader.google.com 等这些域名在 /etc/hosts(或 c:\windows\system32\drivers\etc\hosts)文件中写成回环地址 127.0.0.1,这样我一旦访问这些网站,就会转到我本机的服务器。

但直接写系统 hosts 文件会产生一个问题,它不仅影响浏览器,还会影响所有其它软件。某些情况下我是不希望这种事情发生的,而且每次都要手动修改策略,于是我找到了 Firefox 插件 LeechBlock。它的介绍是这样的:

LeechBlock is a simple productivity tool designed to block those time-wasting sites that can suck the life out of your working day. All you need to do is specify which sites to block and when to block them.

LeechBlock 可以设置六个策略集,策略集组成主要包括要屏蔽的网站、屏蔽策略和屏蔽时间。最狠+幽默的是可以设置 LeechBlock 为修改设置时要求输入一串随机产生的 64 位验证码,直接搞到你不想随便修改自己定下的策略集,比密码还有效。要是再长点儿,恐怕你就永远不想修改你的设置了。

虽然是否会浪费时间主要取决于自己的毅力,但是有一个软件能稍微起点儿帮助作用也是不错的。我发表完就把 blog.solrex.cn 添加到屏蔽列表中去。

最后再提醒诸君一句,在设置完策略集之前千万不要选择 Require the user to enter a random 64-character access code,切记切记!

用 Google Reader 生成 Blogroll(侧栏链接列表) 和博客推介广告

我一直认为 Google Reader 是最好的在线博客阅读器,但是它的功能不仅仅是博客阅读器,下面介绍 Google Reader 还能为 Bogger 做的两个小功能。

一、用 Google Reader 生成 Blogroll(侧栏链接列表)

相信很多 blogger 都比较头疼于如何设置 blogroll:用博客程序自带的吧,不一定好看(尤其是Wordpress 自带的);自己写 HTML 吧,太费劲,尤其在添加/删除链接时,很麻烦s。那看看我用 Google Reader 生成的 blogroll 吧(也可直接到我博客主页查看效果):

Blogroll Demo by Google Reader

还是挺漂亮的吧,怎么生成的呢?其实方法很简单,如果你使用 Google Reader 来管理自己的博客订阅,只需要把你要链接的朋友的博客订阅放在一个 folder 里,比如我的就是 BlogRoll, 然后到 Settings->Tags 设置里,将 BlogRoll 这个 tag 的权限设置为 public 即可,如下图所示:

Blogroll Setting in Google Reader

看到 BlogRoll 那一行最后一个链接没?“add a blogroll to your site”,下面的操作我就不说了吧。(注意,需要博客程序支持添加 JavaScript源码,MSN Space和新浪一流恐怕没办法。)

这样做好之后,当你想在 blogroll 里添加/删除一个朋友的链接时,就可以直接在 Google Reader 里对 BlogRoll 文件夹添加/移除订阅即可。别忘了 Google Reader 也支持修改链接的名字哦!

二、用 Google Reader 生成博客推介广告

有自己的个人网站也是一件很麻烦的事情,不知道个人主页里应该写什么内容,咱不是什么牛人,也没什么可写嘛。如果页面挺空,就可以把自己的最新博客文章链接放上去啊,至少要在自己的个人主页上推广一下自己的博客嘛。看看我在一些页面上放的“博客推介广告”:

Blog AD By Google Reader

其实这是一个小 trick,Google Reader 不是支持将订阅内容共享出来嘛(就是上面那张图里的“add a clip to your site”),那么我当然可以只共享自己的博客内容喽。将自己的博客订阅单独放在一个 folder 里,然后“add a clip to your site”,^_^。

这样每次你一更新自己的博客,个人主页的链接就跟着更新了,当然了,也可以在某些支持 js 脚本的网站上做签名档...

三、(你不是学数学的吧,不是只有两个功能吗?)顺便推广一下 Firefox

知道上面的几个截图怎么生成的吗?没有使用任何其它程序,只用了 Firefox 的一个插件:Screen Grab ,功能强大吧!