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

这篇文章中给出了针对 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 ,功能强大吧!

Tor - Anonymity on Line

其实以前就见过 Baosheng 在博客里推荐 Tor 这个工具,据说可以访问 Wikipedia,只是当时潜意识里觉得太麻烦,就懒得搞。昨天晚上 Baosheng bg,请 ufx222, xum84, daoming, proline 我们一起吃饭,又提到了这个洋葱路由,今天就尝试了一下,果然好用。

简单来说,Tor 的功能就是,采用不同的“洋葱路由器(onion router 意思和代理服务器差不多)”来重定向网络请求,并且随时间更换路由,这样别人就无法监视你的网络访问情况,主要目的是为了保护隐私。而由此带来的副产品就是,onion routers 遍布全世界各地,所以就可以使用这个工具通过 onion routers 访问被“墙”封掉的站点(比如现在的 blogspot.com )。更多介绍请登录 Tor 官方网站 [href: http://tor.eff.org/ ] 。

从我的使用来看,刚开始使用访问网站速度可能慢点儿,用了一段时间之后速度就快很多了,大概是 Tor 自动在寻找洋葱路由服务器。而且最牛的是,我们公司的 DNS 坏了一小段时间,其间什么网站都没办法访问,而通过 Tor 居然访问正常,大概是 Tor 记录的是 IP 而不是 domain 吧。有意思的是访问 google.com 往往被重定向到某个欧洲的 Google 服务器,比如: google.de, google.es 之类的。

在 Linux 下 Tor 的配置很简单(我估计在 Windows 下会更简单,官方网站上有各种系统安装介绍):

首先,安装 Tor 软件,在 Ubuntu 下面就是:
sudo apt-get install tor
使用默认配置即可,即在 9050 端口打开一个 SOCKS 服务器。Tor 程序会以后台方式一直运行在系统里。

其次,为 Firefox 下载 torbutton 插件[href: https://addons.mozilla.org/en-US/firefox/addon/2275 ],安装。安装完成后,到"Tools->Add-ons->Extensions->Torbutton Preferences",在 "Proxy Settings" 中选择 "Use custom proxy settings",然后将前四个都留空,最后 "SOCKS Host:" 中填: localhost, Port: 9050,这样配置就完成了。

可以留意 Firefox 状态栏的最右端(窗口右下角),这时候会出来一个 "Tor Disabled",用鼠标点击该区域,就可以在 "Tor Disabled/Tor Enabled" 状态切换。这样在访问某些敏感站点时候就可以 Enable 它,在不需要时 Disable 它。也可以在 Torbutton Preferences中把这个文字格式的提醒改成一个洋葱头的图标提醒。

其实我想,不安装插件,只在网络设置中使用 SOCKS 代理也可以实现这种功能,如果这样的话,这里插件的作用只是启用和不启用代理的区别。那么,如果在校园网内,这个插件能否起到在 Firefox 的代理和插件这两个代理之间切换的目的呢?如果可以的话,就算不使用或者不能使用 Tor,这个插件也可以用作切换校园网代理使用了,倒也蛮方便的(只是我不需要用到了,所以就留给别人验证吧 X-D)。

PS: Yo2.cn 服务质量在下降,从 2007年7月19日8:25 到 9:00 之间都无法连接上,wget 可以下载但无法显示速度,更无法登录,最后出来一个错误:504 Gateway Time-out。唉,国产的 BSP 千万别学国产的足球队啊!烦死了,回去睡觉。

又回到北京了

好些天没有更新博客了(针对我的更新频率而言),原因很简单,有更重要的事情去做 :-)。

1 号到的北京,把寄放在同学那里的被子拖到租住的公寓,请邓飞、丽君吃了顿饭。2 号到公司报到,换了个办公桌,换了个电话。寄来的包裹和录取通知书同时到达,纳闷不已,为什么北京往南京挂号需要七天而南京挂号到北京只需要三天?害得我为了一张纸折腾(中科院的录取通知书着实简陋,信封是牛皮小信封,通知书就是一张请柬大小)。我原以为是通知书的那玩意儿是入学须知,但搞不明白的是,为什么入学须知要寄给我两次?

一毕业,这同学们好久不更新的博客都重新拾起来了,反而显得我有点儿懒。这下到公司工作,晚上的时间就多了些,可能又要恢复我正常的更新速度了。

这两天工作也没干什么事,FPGA 调试还不太熟练,模拟器又改了不少,而且更新中工作不太正常,所以就随便看看代码、看看邮件列表和一些 patch。GDB 的 mailing list 里这两天挺有意思的,有个人发了一个希望把 GDB 代码用 C++ 重写的邮件,然后一群大佬说这个问题别讨论了,各持己见讨论起来会没个头的。但是某个邮件里有巨牛的一句话:“The more C++ code I see, the more convinced I get that the language should die. ”让我叹服不已,哈哈。

重装了一个 Ubuntu,当然也装上了 beryl,比原来用着更方便了。Google desktop for linux 推出了,试用了一下,挺好的,特别喜欢它的两下 ctrl 就可以弹出搜索框,这样就免得我还得用鼠标把光标定位在 Google toolbar 里去。Google desktop 的 sidebar 没有在 Linux 版本上体现出来比较遗憾,那些小工具很有意思,但其实 Linux 本身就带有很多有一些的小玩意儿,喜欢玩的能把桌面配置得很 cool 或者 cute。为 Firefox 装了一个 IE7 的主题,看起来还是蛮好的,看来 Microsoft 的 UI 工程师也不是吃干饭的。但是 wine 现在还不支持 IE7,用 ies4linux 测试版装上之后,IE7 的 UI 效果一点儿也没有,真没劲。

毕业了,大家都在干不同的事,还有人(XHO)感叹没假期了,哈哈,准备成家立业的时候已经开始了,慢慢就该习惯了。