I am LAZY bones? AN ancient AND boring SITE

2009年 07月 的归档

教你黑掉Google

呵呵,我承认我也标题党了一回~
我当然不能真的把google给黑掉,但是却可以把google搞成黑色,嘿嘿…
就是用这个油猴子脚本.当然前提是你使用firefox并安装了油猴子.

不过这个只是我找userscript的时候无意中发现的而已,其实我的本意不是要把google的结果变得这么面目全非,而是只想在点击搜索结果的时候,不要通过google服务器跳转,而是直接进入目标地址.
这么做的原因也很简单,有时候,我们搜索了一个自以为一点都不敏感的词,但是我们伟大的墙却不这么认为,所以不管你点什么都会出现”连接被重置”,这时候你就郁闷了吧,明明搜索结果就在那里放着,你却什么都不能点.
虽然那个a里面有href是指向目标地址的,但是却还有个onmousedown事件,这个比这个href的优先级更高,所以你每次点击那链接都会先执行onmousedown里的JS,去连接google的服务器,google做相应记录以后再跳转到目标地址.这在平时其实是无所谓的,但是鉴于天朝的网络特色,我们很需要一个直接的链接地址.
后来我终于找到了真正干这个事情的油猴子脚本,就是这个.但是这个脚本也太暴力了点,不仅加了个链接,还把原来的onmousedown也干掉了(平时还是到google跳转一下比较好,有利于统计并优化搜索结果),主要是样子还贼难看…所以我又稍加修改,就成了这个样子,贴图:
black_google
顺便把我改过的代码也贴一下吧:

// ==UserScript==
// @name           google_direct_link
// @namespace      http://www.google.com
// @description    在google搜索结果页面增加直接链接地址
// @include        http://www.google.com*
// @include        http://www.google.cn/search?*
// ==/UserScript==
(function() {
	var redirectLinks = document.evaluate(
		"//a[@class='l']"
		, document
		, null
		, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE
		, null);
	var link, marker, href;
	if (typeof redirectLinks != 'undefined' && redirectLinks.snapshotLength > 0) {
		for (var i = 0; i < redirectLinks.snapshotLength; i++) {
			link = redirectLinks.snapshotItem(i);
			//打开此注释可以把原来的结果也变成直接链接
			//link.setAttribute('onmousedown','');
			link.style.fontStyle = 'italic';
			href = link.getAttribute('href');
			marker = document.createElement('a');
			marker.setAttribute('href', href);
			marker.textContent = '直接地址';
			link.parentNode.appendChild(marker);
			link.parentNode.insertBefore(document.createTextNode(' >>> ') , marker);
		}
	}
})()

如果你已经安装了油猴子,可以猛击安装此脚本。

man2html (效果不是很理想)

有时候,要把man的内容发给别人看或者什么的,就有必要把man转换成其他格式了. 当然,对于带格式文本来说,html是个不错的选择.
搜索了一下,还真有个东西叫 man2html .可以直接emerge了使用.
例如,要把mplayer的man页转出来,需要执行下面的命令:

bzcat /usr/share/man/zh_CN/man1/mplayer.1.bz2 | man2html > mplayer.html

但是,实际使用中发现,有些文本是会丢失的…
例如本来的man是这样的:

       键盘控制
              <- 和 ->
                   后退/快进 10 秒。
              up 和 down
                   快进/后退 1 分。
......

html之后,就成了:

键盘控制
 
        s
            后退/:快进 10 秒。 
        s
            快进/:后退 1 分。 
......

media-libs/mutagen-1.16

昨天折腾gmbox的时候,发现mutagen已经从quodlibet里独立出来,成为一个全新的项目了.而且已经发布了1.16版本,而gentoo的portage里还是老的1.15.在自己的overlay里测试一下没问题,于是我忍不住报告了,这个bug处理得还挺快,于是现在就有了这个ebuild.
今天,自己就装上这个版本了.
哈哈.portage树里也算是有我名字喽…

grep -1 "05 Jul 2009" /usr/portage/media-libs/mutagen/ChangeLog

看吧~

gentoo也可以提示未安装的命令

用ubuntu的时候,如果你在命令行里输入一个未安装的命令,bash会给出很人性化的提示,让你先安装xxx软件包,比如:

程序 'xxx' 尚未安装。  您可以通过输入以下命令安装:
sudo apt-get install xxx

其实gentoo下也是可以做类似提示的.
gentoo早就已经默认是 bash 4.x 了,这个版本的bash,在找不到命令的时候,会试着调用 command_not_found_handle 这个函数,也就是说,只要你在什么地方定义了这个函数,就可以实现人性化的提示.再联想到之前我整的e-file,一切都是这么简单,哈哈~
在 ~/.bashrc 里加上如下几行:

if echo "`uname -a`" | grep gentoo >/dev/null ; then
	#由于我的.bashrc是ubuntu和gentoo共用的,所以这里还有些gentoo特有的alias...下面几行才是关键.
	command_not_found_handle () {
		echo "-bash: $1: command not found" >&2
		e-file $1 >&2
	}
else
	#ubuntu的alias....
fi

当然,这之前肯定要先安装e-file,如果你已经加了gentoo-china的overlay,可以直接 emerge e-file
最终效果贴个图(我是gnome,没装kdevelop):
command_not_found_handle效果图