Archive for October, 2007

More about Greasemonkey: Sandbox

Monday, October 29th, 2007

我在上一篇 Blog 中简单地介绍了 Greasemonkey 。并推荐了 Dive into Greasemonkey 这个教程。这次我要介绍的是 Greasemonkey 的沙盒。其实我见过一个朋友在这上面碰过钉子,我自己也正好碰到了问题,便去 GM 的 wiki 上查找了相关的资料。这里把我知道的共享出来,免得有朋友再走弯路,因为 Dive into Greasemonkey 里面的一个例子也是无法正确执行的,也许是教程有些旧了的缘故吧,GM 沙盒也是在不断完善的。

Read the rest of this page »

Introduction to Greasemonkey

Monday, October 29th, 2007

GreasemonkeyFirefox 的一个扩展,它能让你通过自定义的脚本来修改你所访问的网页的行为。Greasemonkey 建立起一个平台,用户通过编写在这个平台上运行的“用户脚本(user scripts)”来修改网页的行为。为什么要修改网页的行为呢?这其实跟为程序打热补丁差不多,比如程序有 Bug ,你想修改程序的行为,你想添加或者去掉某个功能,这些都是会经常碰到的情况。举几个实际的例子:

  • 让百度 MP3 搜索直接显示出下载链接的用户脚本
  • 去掉 Gmail 的编辑页面右边的广告让编辑框更宽一些的用户脚本
  • 修复本科生选课网(ZJU)的下拉菜单在 Firefox 里不能显示的用户脚本。

Read the rest of this page »

Aspect-Oriented Programming

Sunday, October 28th, 2007

昨天的 POM 和大家一起讨论了下 AOP 这个东西,这个东西从年龄上来说应该是不小了,不过目前应用似乎还并不广泛吧,大家了解也并不多,所以我作为话题发起者还是事先收集了一点资料,做一个 Slide :

AOP

其实虽然没有专门地用像 AspectJ 这样的东西去做 AOP ,但是 AOP 这种思想其实应该是被接受得比较广泛了,特别是那些相对比较动态的语言里面,做起来也轻松许多,而像 Rails 以及 Spring 这些流行的框架里面都可以见到 AOP 的影子。AOP 将来将会如何发展呢?我也不敢妄下猜测,只有拭目以待了。 :)

 

这里是 Slide 下载,三个文件内容是一样的。

  • AOP.pdf PDF 格式。
  • AOP.pps 兼容 Office 97-2003 的幻灯片放映格式。
  • AOP.pptx 可编辑的原始文件,Office 2007 格式。

POM

Sunday, October 28th, 2007

萝卜在任 MSTC 主席的时候发起了 POM 这个组织,到现在也快有一年的时间了。从这一年的经历来看,首先这个组织确实很 Cool !其次这样的活动形式确实起到了增进交流的作用,我想参加的人应该大多数都和我有同样的感受:确实收获挺大的。于是我便想在这里介绍一下这个 POM 。

本来在我们俱乐部的主页上有关于 POM 的一个详细介绍的,不过那个网站目前还只能在校内访问,所以我就厚颜无耻地把一些东西 Copy & Paste 一下了。 :P

 pom_logo

Read the rest of this page »

涂鸦

Monday, October 22nd, 2007

终于拿到相机了。知道有电脑这个东西以后一直希望有一台扫描仪,可是那个东西应该在一般家庭里面没啥用吧,我也并没有指望什么年头能有这么个东西,后来听说数码相机分辨率也是很高的,就一直希望有一台数码相机。可是其实只是小时候一次无意地失信,却让我不再敢抱着太大的期望去等待什么东西了,不曾想过人心竟然如此脆弱,随着慢慢长大,它被塑造成特定的形状,只是再也回不到原来的那个样子了。

还是说相机吧,从来不曾提起自己想要这么个东西,不是不想让人知道,只是大概自己也已经习惯了吧,好像自己根本就没有这个期望一样。即使有机会也没有想过要去买。只是这次栗栗说想要一个相机,才梦然警醒!便拿奖学金出来了。钱并不多,不过够一个普通的相机了。还让鼠 mm 推荐了一把,可惜他推荐的我买不起,也不是为了搞摄影,就没有必要那么精密的了。

买到相机也并不是那么异常的兴奋,竟然是多年的梦想?我是为了避免在失望的时候太失落,而熄灭了所有的激情吧?以至于此了。相对于大起大落,还是更喜欢平静的。之后相机便在她那里放了一段时间,好像是觉得,这么久都等了,还等不得这么几天?直到她说暂时不用了,先放在我这里,才去拿过来了。

其实扫描仪也好,相机也好,无非是想把一些纸上的涂鸦放到电脑里面。可惜早已忘记了当初为什么要这么做了,更严重的是自从高三以来就已经很少有时间和精力去涂鸦了。只是平时特别闲或者是上课特别无聊的时候找上一张纸、一支笔,回忆一下以前整日坐在书桌前的感觉,不过水平大概就到此为止了吧,即使认真画也应该差不多了。

collage.jpg

不过我还是把他们拍下来传到电脑上了,我把它们放在了 Picasa 的网络相册里面。说不定无聊或者心情不畅快的时候还会继续涂鸦。 :)

解决 Putty 右边 Alt 不好使的问题

Wednesday, October 17th, 2007

这个问题也算是困扰了我很久的问题了。就是在 Putty 里面右边的 Alt 键似乎并不是起到 Alt 的作用。 Emacs 用户应该很快就能发觉这个问题,konsole.png如果你习惯用右边的 Alt 来按 M-x 的话,就会发现根本不起作用。

在 Shell 里面也是一样的,比如本来 Alt+f 可以把光标向前移动一个单词,可是右边的 Alt 无法使用,就没法按了 (当然对喜欢用单手来按两个键的朋友这不是问题了) 。我很久以前就曾经努力寻找过解决方案,不过似乎并没有可以解决问题的方法。我也不清楚 Putty 把右边的 Alt 键当作一个什么键发送过去了。

不过我最近突然发现这个问题可以从另外的途径来解决,就是对 Putty 进行欺骗,让它接收到的 Alt 键都是左边 Alt 。Windows 本身是支持键盘映射的,比如 CtrlCaps Lock 交换之类的,都可以通过编辑注册表来实现。当然注册表里面是二进制值,是完全不可读的。不过有一个叫做 Sharpkeys 的工具提供了一个方便的界面来帮助我们完成这个任务。你只要按下想要映射的键,它就能帮助你生成合适的二进制值写入到注册表里面去。

当然,如果你不想在全局范围内把右边的 Alt 映射到左边,也有解决办法:我在介绍 Jump or Exec 的那篇 Blog 中提到了一个叫做 AutoHotkey 的小软件。它能够实现键盘映射,并且可以只在某个特定的窗口上映射。

打开 AutoHotkey ,在通知区域的图标上右键单击会出来一个菜单,选择里面的 “Window Spy”,然后点击 Putty 的窗口,就可以看到用于标识 Putty 窗口的类为 “ahk_class PuTTY” 了。脚本里面便可以这样写:

#IfWinActive ahk_class PuTTY
RAlt::LAlt
#IfWinActive

然后重新加载一下脚本,是不是 OK 了?这个工具还有很多用处,比如,gVim 发烧友可能会希望在 gVim 的窗口里把 Caps Lock 映射为 ESC 键,因为在全局范围内映射的话,会经常不小心按到,把一些窗口给关掉了。

在 Windows 下搭建 GNU/Linux 环境

Tuesday, October 16th, 2007

虽然 Linux 与 Windows 之争几乎从来就没有停止过,不过无疑两者是各有千秋的。所以让两者共存一直是个比较诱人的想法。方法有许多种:debian.png

  • 双系统。这样没有哪个系统是跑在虚拟机里面的,所以都能发挥自己的全部性能,只是两个系统之间切换太麻烦,基本上没有什么交互。
  • Linux 下用 wine 来运行 Windows 程序。不少 windows 下的程序都能跑起来吧,但是目前并不是那么完美,而且 wine 的开发者并没有 Windows 的源代码,所以从理论上来说有些程序运行成功或者失败似乎主要是看运气了。
  • 在 Linux 下通过虚拟机模拟 Windows 。这个主要是一些 Linux geek 们使用的方法,装 Windows 几乎是处于无奈,要跑一些 Windows 程序,比如要用 QQ 或者是浏览学校老师的幻灯片之类的。用虚拟机比用 wine 跑成功率要高一些,因为对于程序来说,这下它们是在一个“真正的” Windows 里面运行了。当然对系统配置的要求就更高了。
  • 使用 coLinux 在 windows 下运行 Linux 。应当是一个相当不错的解决方案了,它与普通的虚拟机不同的是,它直接建立在硬件层次之上,而普通的虚拟机通常是建立在宿主操作系统的层面上,所以它的执行效率会更高一些。
  • 使用 Vmware 在 Windows 下虚拟 Linux 。这个在理论上来说也是相当合适的一种解决方案了,Windows 对原生硬件驱动支持好,图形性能高,适合做宿主系统,而虚拟机里的 Linux 也只需要安装一个文本界面便可以发挥出它的强大之处了。只是 Windows 系统容易中病毒啊、流氓软件之类的,也得小心使用才能做好宿主啊。
  • 使用 cygwin 在 windows 下模拟 Unix 环境。这个解决方案的优点是和原本的系统结合得很紧密,虽然不像 wine 那样直接可以执行原来的二进制程序,而是要重新编译过,但是同样是直接跑在本地系统里面的,所有的程序就和本地程序无异了。只是由于 Windows 和 Linux 本身的差异,并不是所有的方面都能模拟出来,所以并不是所有的程序都能很好地运行起来。

而如果专注于在 Windows 下能有一个顺手的 Linux 环境的话,便主要是后面三种选择了。不知道将来会不会出现像 wine 那样的在 Windows 下直接运行 Linux 程序的模拟器,不过 Linux 下的程序大多没有扩展名,如果每次都要输入 wine ls 的话,真的要疯掉了,哈哈!

回归正题,在剩下的三种选择中,coLinux 和 Vmware 是很类似的解决方案,而 cygwin 则是着眼于另外的应用。按理说 coLinux 应当比 Vmware 更高效一些,但是目前配置还是有些麻烦,如果机器配置稍微好一点,其实 Vmware 也是很高效的,所以我选择了后者。下面我就来详细介绍一下如何用 Vmware 和 cygwin 来搭建一个舒适的 GNU/Linux 环境。

Read the rest of this page »

My new screenrc

Sunday, October 14th, 2007

GNU Screen 是一款终端下的必备工具,我曾经在自己的 Wiki 页介绍过它。最近我又修改了一下配置文件,让底部的“标题”栏居中显示,并选了更漂亮的颜色,如下图所示:

screen.png

不过 Screen 很多默认配置就比较好用了,所以说整个配置文件还是很短的,这是我目前的配置文件:

startup_message off
vbell off
defscrollback 512
 
caption always "%{=u kC} %= %-w%L>%{=b G}[:%n %t:]%{-}%52<%+w %L="
escape ^L^L
 
deflogin off
# default shell is zsh
defshell /usr/bin/zsh
# default starting dir is ~
chdir

给儿子取个够 Cool 的名字

Thursday, October 11th, 2007

你取的名字有这个 Cool 吗? :P

exploits_of_a_mom.png

来自 http://xkcd.com/327/

疯狂提交找错法

Wednesday, October 10th, 2007

做 ACM 的那些人应该也都知道传说中的“疯狂提交找错法”吧。就是如果你题目没有过的话,提交的罚时是不会在最后的分数里面扣掉的。当然是希望在尽量少的次数内过掉,但是情急之下,疯狂提交也是一个办法,不管怎么算它都是有好处的:

  • 如果最后题目 AC (Accept) 了,虽然罚时会让排名下降,但是不管罚时多少,多做出一道题的总比少做出一道题目的排名要靠前。
  • 如果题目没有 AC ,也并没有什么损失。

但是疯狂提交也必须要能“找错”,否则就没有什么意义了。今天我也非常疯狂地爽了一把,并且最后成功找到问题,把题目 AC 了。

Read the rest of this page »