2010-02
26

在VMWare中运行一些Linux上的软件如vi,出错时PC喇叭会不停地叫,很烦人。 其实只要在 c:\Documents and Settings\用户名\Application Data\VMware\config.ini (如不存在请自行建立)中加入这样一行:

mks.noBeep = "TRUE"

就可以从虚拟硬件上关闭VMWare的PC喇叭。

我用的VMware是 VMware Workstation 5.5.1版。


2009-08
04

这些插件都可以在 Trac Hacks 上下载到。 直接在首页搜索名字即可,因此本文就不再给出下载链接。

AdvancedTicketWorkflowPlugin

添加几种常用的ticket工作流动作,如转给上一个人、转给模块负责人、转给报告者、执行外部程序等。 如果你想要自己打造一个适合项目的工作流,这个插件肯定会派上用场。

BatchModify

批量修改ticket属性。

TracAccountManager

可以从后台管理Trac帐号,但更重要的是,它可以提供一个基于Web的登录页面。

TracAuthRequired

要求使用者必须登录才能查看Trac内容。在企业应用中,项目的资料一般都需要保密, 这个插件跟TracAccountManager配合使用,正好能满足要求。

TracReportManager

Trac可以自定义报告,但报告管理功能很弱,一不小心就会把辛辛苦苦写成的SQL语句删掉。 TracReportManager可以给ticket报告做备份,在修改报告之前先备份一下,就不用担心误删的问题了。

TracSectionEditPlugin

可以按照章节编辑wiki内容(就像WikiPedia那样)。一些手册页可能会很长很长,一次性编辑很不方便, 而单独编辑某一章节就比较容易了。

TracTicketTemplate

ticket模板,可以给不同类型的ticket做不同的模板,能节约输入ticket的时间,规范ticket的格式。

TracWikiRename

给wiki页面改名,在整理wiki时很有用。


2009-06
28

今天想用摄像头录一段视频,上网找视频录制的软件,发现好用的都是收费的。 没办法,想起VirtualDub也能录制视频,于是尝试了一下,发现它的效果还是很不错的。 而且是免费的哦!

以下演示的版本是Virtual 1.5.10,摄像头是罗技的QuickCam系列。

首先要设置好音频源。打开控制面板->声音和视频设备,选择音频选项卡。 如果摄像头的驱动已经装好,那么“录音”中的“默认设备”中应该有一项“USB Audio Device”, 选择该项,确定。

record-video-with-virtualdub-01.png

然后启动VirtualDub,选择菜单File->Capture AVI...,进入视频捕捉的界面。 此时即可看到摄像头的图像。

record-video-with-virtualdub-02.jpg

接下来,需要做一些设置:

  • 按P,打开视频预览,以便随时观察视频录制情况。
  • 按F,选择视频录制的分辨率、颜色深度等。根据摄像头的功能及自己的需求设置即可。
  • 按S,启动摄像头的设置对话框,在这里调节摄像头的亮度、对比度、快门速度、光圈、白平衡等参数,直到画质满足需要。
  • 按Shift-C,选择视频的压缩方式。一般选择DivX即可。如果不压缩,录下来的AVI文件会有几十G之大。
  • 按A,选择录音的音质。一般选择CD音质。
  • 按V,打开声音显示,测试摄像头自带的麦克风是否好用。
  • 按F2,选择将视频保存到哪里。

OK,这样就全部设置好了。接下来按 F6 键开始录制,按 Esc或单击鼠标结束录制。 效果还不错吧?

唯一的一点遗憾就是,这样录下来的AVI中,音频是没有压缩的,需要用VirtualDub做后期处理, 将视频中的音频分离出来,选好压缩算法之后重新保存成AVI。


2009-03
31

今天在安装Visual Studio 2003时,安装程序要求先重启计算机,重启之后再启动安装程序,依然要求重启计算机,如此一直反复下去。无奈Google了一下,发现这居然是个常见问题,解决方法是删除 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager 下的 PendingFileRenameOperations 键就可以了。

看了看我机器上的这个键的内容,好像是安装McAfee时遗留下来的。

ps.原来常见的那个“必须重启后才能完成安装”是这么回事儿啊。


2009-03
19

有些人没有设置工作目录的习惯,而是想checkout哪个文件时就顺手设置一个,久而久之VSS中各个文件的工作目录设到哪儿的都有。想整理整理吧,但又不知道怎么删,甚至把整个数据库连接都删了重建也不行。

原来……真没想到vss居然把工作目录这个完全属于客户端的信息保存到了服务器上。打开服务器上的 ”users/你的用户名/ss.ini”,看看最后那部分吧,工作目录的设置都在这儿呢。全删了,再重新设就行了。


2008-12
27

Excel 2003中只能从调色版中选择颜色,但调色版中只有56种颜色,这就意味着一个工作簿中最多只能同时有56种颜色。 通过“工具->选项->颜色”可以设置调色版。

选中单元格后,从格式工具栏的背景色/字体颜色按钮中只能选取40种常用颜色,而在单元格属性对话框(用Ctrl-1打开)中, 则可以为单元格设置所有56种颜色。

阅读全文 »
2008-09
17

Firefox的工具菜单中有个非常有用的功能:清除隐私数据,快捷键是Ctrl-Shift-Del。 经常做Web开发的人对这个功能一定非常熟悉,修改完一点代码看看效果时,都需要 Ctrl-Shift-Del然后按回车。

不过这个功能有个很郁闷的地方。Firefox 2中,默认是不清除网站登录信息的, 比如你登录了Gmail并选择下次无需输入密码,在Firefox 2中直接按Ctrl-Shift-Del再回车, 是不会清除Gmail上记忆的密码的。但是在Firefox 3中添加了一个很讨厌的选项, 清除“已通过验证的会话”,而且是默认选中的,这样直接Ctrl-Shift-Del再回车, Gmail上记住的密码也就没有了,下次进入Gmail还得再点一次登录。

幸好,通过about:config可以修改清除隐私数据对话框的默认值。 在地址栏中输入about:config,然后查找 privacy.item, 把 privacy.item.sessions 改为false就可以了。 这样再按 Ctrl-Shift-Del,“已通过验证的会话”选项就是默认不选中了。


2008-08
07

众所周知Word的绘图功能是出了名的弱,很奇怪微软有钱去弄什么 信息检索 也不愿意下功夫把绘图功能改得好用些。这不,我只想要这样一个简简单单的圆角, 用Word的曲线功能画了一个小时也没能画得完美无缺。

curve-in-word-01.png

好在Word还不是无药可救,它支持把wmf文件转换成绘图对象, 这样只要用其他软件画好图之后存成wmf,再导入Word就可以了。 那么做wmf用什么软件呢?手边有Illustrator和AutoCAD, 试了试AutoCAD的导出为wmf格式挺好用,就是它了。

2008-8-18更新 :今天发现这个名为Dia的自由软件 也能方便地绘制wmf格式的图片。如果不需要特别精确的定位,又无法使用AutoCAD的话, Dia也是个非常不错的选择。

阅读全文 »
2008-08
01

Office 2003的这个“信息检索”功能非常烦人,本来我们做程序员的就没什么需求要“研究”什么东西,而且这个功能一旦启动就要花掉几秒钟的时间去搜索辞典、搜索网络,何况公司的局域网内它根本就搜不到任何内容,更要命的是它的快捷键居然是Alt+单击这个极其容易误操作的组合……所以它不仅仅是鸡肋,而且是生产力发展的巨大障碍了。

不过搜索了一下,发现虽然不论在中文圈、日文圈还是英文圈中这个功能都是臭名昭著,人人都想禁用之而后快,但无一例外的答案都是“不可能”。不过好在虽然不能禁用Alt+Click的快捷键,但可以让信息检索窗口不去搜索网络和词典。这样尽管仍然会误操作,但可以省去那几秒钟的假死,也算可以接受了。

方法如下:

  1. 打开 HKLM\SOFTWARE\Microsoft\Office\11.0\Common\Research\Options,建立两个键值:NoAdd:DWORD=1,NoDiscovery:DWORD=1。据说可以禁止信息检索功能访问网络。
  2. 删掉 HKCU\Software\Microsoft\Office\11.0\Common\Research 下的所有东西。貌似删掉 Sources 主键之后就不会再搜索辞典了。

然后重新启动Office就可以了。

微软开发了这样一个阻碍生产力的功能,反过来还要我们为这个功能付钱,……


2008-07
08

毋庸多言,在vim中正则表达式得到了十分广泛的应用。 最常用的 / 和 :s 命令中,正则表达式都是不可或缺的。 下面对vim中的正则表达式的一些难点进行说明。

关于magic

vim中有个magic的设定。设定方法为:

:set magic             " 设置magic
:set nomagic           " 取消magic
:h magic               " 查看帮助

vim毕竟是个编辑器,正则表达式中包含的大量元字符如果原封不动地引用(像perl那样), 势必会给不懂正则表达式的人造成麻烦,比如 /foo(1) 命令, 大多数人都用它来查找foo(1)这个字符串, 但如果按照正则表达式来解释,被查找的对象就成了 foo1 了。

于是,vim就规定,正则表达式的元字符必须用反斜杠进行转义才行, 如上面的例子,如果确实要用正则表达式,就应当写成 /foo\(1\) 。 但是,像 . * 这种极其常用的元字符,都加上反斜杠就太麻烦了。 而且,众口难调,有些人喜欢用正则表达式,有些人不喜欢用……

为了解决这个问题,vim设置了 magic 这个东西。简单地说, magic就是设置哪些元字符要加反斜杠哪些不用加的。 简单来说:

  • magic(\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
  • nomagic(\M):除了 $ ^ 之外其他元字符都要加反斜杠。

这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。

例如:

/\m.*          # 查找任意字符串
/\M.*          # 查找字符串 .* (点号后面跟个星号)

另外还有更强大的 \v 和 \V。

  • \v(即 very magic 之意):任何元字符都不用加反斜杠
  • \V(即 very nomagic 之意):任何元字符都必须加反斜杠

例如:

/\v(a.c){3}$   # 查找行尾的abcaccadc
/\m(a.c){3}$   # 查找行尾的(abc){3}
/\M(a.c){3}$   # 查找行尾的(a.c){3}
/\V(a.c){3}$   # 查找任意位置的(a.c){3}$

默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 即可。

本文下面使用的元字符都是 magic 模式下的。

量词

vim的量词与perl相比一点也不逊色。

vimPerl意义
**0个或多个(匹配优先)
\++1个或多个(匹配优先)
\? 或 \=?0个或1个(匹配优先),\?不能在 ? 命令(逆向查找)中使用
\{n,m}{n,m}n个到m个(匹配优先)
\{n,}{n,}最少n个(匹配优先)
\{,m}{,m}最多m个(匹配优先)
\{n}{n}恰好n个
\{-n,m}{n,m}?n个到m个(忽略优先)
\{-}*?0个或多个(忽略优先)
\{-1,}+?1个或多个(忽略优先)
\{-,1}??0个或1个(忽略优先)

从上表中可见,vim的忽略优先量词不像perl的 *? +? ?? 那样,而是统一使用 \{- 实现的。 这大概跟忽略优先量词不常用有关吧。

环视和固化分组

vim居然还支持环视和固化分组的功能,强大,赞一个 :D 关于环视的解释请参考Yurii的《精通正则表达式》一书吧。

vimPerl意义
\@=(?=顺序环视
\@!(?!顺序否定环视
\@<=(?<=逆序环视
\@<!(?<!逆序否定环视
\@>(?>固化分组
\%(atom\)(?:非捕获型括号

和perl稍有不同的是,vim中的环视和固化分组的模式的位置与perl不同。 例如,查找紧跟在 foo 之后的 bar,perl将模式写在环视的括号内, 而vim将模式写在环视的元字符之前。

# Perl的写法
/(?<=foo)bar/

# vim的写法
/\(foo\)\@<=bar

参考

vim的帮助文件非常有用,关于正则表达式可以参考以下的内容。

:h pattern
:h magic
:h perl-patterns