Posted on 23-01-2009
Filed Under (软件) by waterlin

放假在家,发现家乡的电脑工作者都给用户们安装了一键还原精灵这个玩意。

仔细想想,这个的确不失为一个好工具,像我老爸老妈这样的不会用电脑的人,出了啥问题,只要还原一下就好了。

一键还原精灵,说白了就是ghost的升级版,最大的特色功能就是简单!

凡是需要备份系统的人,都可以试试这个东西。

(0) Comments    Read More   
Posted on 15-01-2009
Filed Under (生活) by waterlin

我发现长期用右手用鼠标,就习惯了用左手支撑着身体趴在桌子上,长期这样,其实对身体很不好的。习惯性地只用左手支撑自己,变相地只有左边的身体支撑着自己趴在桌子上,随着用电脑时间的增长,我觉得很容易弄出毛病来。

于是,今天把办公室的鼠标改成用左手使了。为了配合这个,还把虚拟机里的鼠标模式全改成左手了,工作量还挺大的~~

(0) Comments    Read More   
Posted on 15-01-2009
Filed Under (技术) by waterlin

每天工作都要监视某些网页,一但这些网页有更新,就做相应的工作。

当然不能每天人工去查看每个网页了!于是我写了一个Perl脚本去自动检查。每天上班运行一下,就知道是否有更新;有更新的话,自动把内容拷贝下来,按相应的格式存到特定的文件里。

但有的时候,我需要直接把这个内容复制到其它地方,比如邮件。我同样用Perl脚本实现了这个功能:在完成了自动检查后,符合情况就自动复制到Windows的剪切板。

我觉得这里有三点值得总结一下:

1) 用Win32::Clipboard实现与Windows剪切板互动

使用这个模板,可以在命令行里直接把内容拷贝到剪切板。

use Win32::Clipboard;$CLIP = Win32::Clipboard();

print “Clipboard contains: “, $CLIP->Get(), “\n”;

$CLIP->Set(“some text to copy into the clipboard”);

$CLIP->Empty();

$CLIP->WaitForChange();
print “Clipboard has changed!\n”;

不过这玩意在Cygwin里死活装不上,只能在Strawberry Perl里用了~~

2) 让cmd或是MSYS输出中文

在Windows下,不管是cmd还是MSYS,如果直接在里面打印出中文,几乎都会乱码;而在cmd或是MSYS下,用Win32::Clipboard拷贝东西到剪切板,也同样会乱码。

需要用类似于下面的方法来改进编码的问题:

use Encode;
$infor = encode(“gbk”, decode(“UTF-8”, $_));
print $infor;

3) 响应用户的确定操作

当把内容复制到剪切板,则输出一行提示,让用户知道复制已经完成,并等待用户输入任意的一个键以示确认,再继续。这个功能很简单,可以用这个语句轻松地实现:

<STDIN>

这样的一个不起眼的小工具,却省下了我一大串繁琐的工作(比如打开文件、判断、复制内容),不亦乐乎!

(0) Comments    Read More   
Posted on 13-01-2009
Filed Under (技术) by waterlin

1) 先把目录打包,再把File::copy来复制这个打成包的文件到目的地,再解压。

推荐使用Archive::Tar作为处理压缩与解压的工具。

2) 用File::Copy::Recursive来直接拷贝目录。

(3) Comments    Read More   
Posted on 09-01-2009
Filed Under (技术) by waterlin

我的 gvim 用上了 vimacs 插件,但是 C-y 却只能粘贴在 gvim 里复制的东西,没有办法粘贴 gvim 以外的程序拷贝到 Windows 剪贴板的内容。

我仔细地看了一下 vimacs-0.95.vim 里的代码,要粘贴其它程序复制到 Windows 剪切板的内容,需要用键 Shift + Insert 来实现;而粘贴 gvim 里复制到剪切板的内容,则需要用 C-y 键。

同样,在 gvim 里,M-w 只能拷贝选中的内容到 gvim 的剪切板;要在 gvim 里把选中的内容复制到 Windows 的剪切板,则需要用键 Control + Insert 来实现。

这样的设置多少有些烦人!大部分情况下,我都是拷贝好内容后,就去粘贴,这个粘贴的地方并一定就是 gvim 里的某个文档,我需要一复制,即可以到处使用。像 vimacs 这样过细的键功能划分,实在是有点让我手足无措。

为了让 M-w 能把内容同时拷贝到 gvim 和 windows 的剪切板,把

改为

即可。

为了让 C-y 能粘贴 gvim 或 Windows 剪切板中最新拷进来的内容,把

改为

即可。

现在这样的设置就和我 Emacs 里的设置一模一样了,用起来舒服多了。这个方法只在 Windows 下测试过了,其它平台有机会再测试一下。

(0) Comments    Read More   
Posted on 06-01-2009
Filed Under (技术) by waterlin

1) 安装TeX Live 2008

TeX Live 2008在Windows下的安装非常简单,去TeX Live的网站上把iso文件下载下来,导入虚拟光驱自动运行,根据弹出来的界面自动安装就可以了。

PS:TeX Live的安装界面好丑,汗一个!

2) 配置Emacs的AUCTeX

AUCTeX包下载下来,在Windows下的安装非常简单,这个包已经是编译好的,解压后直接扔到Emacs的path里,然后在.emacs里添加下面的语句:

(load “auctex.el” nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(load “preview-latex.el” nil t t)

这样保证Emacs会启动AUCTeX模式,现在可以开始测试一下了。

3) 测试AUCTeX和Tex Live

重启Emacs,新建一个以.tex为后缀的文件,输入以下代码:

\documentclass{article}
\begin{document}
Small is beautiful.
\end{document}

再用C-c C-c命令,按默认的Emacs提示操作即可。如果一切顺利的话,Emacs会提示生成了一个pdf文件,这个文件就是我们想要得到的目标文件。

记得,安装完TeX Live后,要重启Emacs,这样Emacs才会重新读入Windows系统的path变量,才能找到pdflatex、latex这些命令;否则eshell会提示找不到这些命令。

4) 测试AUCTeX和TeX Live,用以生成中文文档

TeX Live自带有一些中文字体,测试生成中文文档的话,可以用下面这段代码:

\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GB}{gbsn}
你  好
\end{CJK}
\end{document}

如果运气好的话,你就可以得到一个中文的pdf文件了。

(0) Comments    Read More   
Posted on 06-01-2009
Filed Under (技术) by waterlin

说到使用MSYS这样的命令行终端方式,大家一定觉得还不是那么方便。因为这里不能够复制、粘贴。但你错了,在MSYS里复制粘贴也很容易。

复制:选择你要复制的部分,然后鼠标左键点一下,就可以了。容易吧?

粘贴:只需用shift+鼠标左键,就可以直接将剪贴板内的文字粘贴进来了。

(1) Comment    Read More   
Posted on 05-01-2009
Filed Under (技术) by waterlin

在Windows下刚开始使用Perl的人,很大部分都是用ActivePerl。但其实对于熟悉Linux环境下Perl编程的人来说,用Strawberry Perl会更加习惯。毕竟,ActivePerl的PPM包,更新得太慢了,如果需要自己手动编译CPAN的包,还不如用strawberry Perl来得放心呢!

Strawberry Perl其实就是windows下的the core Windows distribution of Perl的一个版本。它尽可能地在Windows平台上保持了Perl在Unix上的特性,从而也最大程度地保证了可移植性。因此,CPAN上的包,在Strawberry Perl下很容易能编译通过。

Strawberry Perl自带有以下的包

* Perl 5.10
* Mingw GCC C/C++ compiler
* Dmake “make” tool
* ExtUtils::CBuilder and ExtUtils::ParseXS
* Bundle::CPAN (including Perl modules that largely eliminate the need for external helper programs like gzip and tar)
* Bundle::LWP (providing more reliable http CPAN repository support)
* Additional Perl modules that enhance the stability of core Perl for the Win32 platform

要在Strawberry Perl下安装一个Module也非常简单,和在Unix、Cygwin等的安装比较类似。你从CPAN上下载了一个包下来,扔到一个目录里,解压后从windows的cmd命令行进入这个目录,然后运行如下的命令:

perl Makefile.PL
dmake
dmake test
dmake install

如果没有啥错误提示的话,这个包就完成了安装。不过好像Strawberry Perl并不支持在MSYS下安装CPAN包,具体原因有待进一步的分析。

(0) Comments    Read More   
Posted on 05-01-2009
Filed Under (技术) by waterlin

如果在系统中使用 MinGW 的话,用 MSYS 作为 Windows 的 cmd 会比较方便。

MSYS 提供了一个模拟的 bash 环境,当然,其中包含了基本的 bash 命令,比如 ls 等。除了基本的 bash 命令外,它还提供了用 bash 的方式来运行 Windows 的程序。当你不清楚在 MSYS 里运行的某个命令的目录在哪里的时候,你可以用 which 这个命令来查询。通过 which 这个命令,你也可以判断出这个命令是 MSYS bash 里的命令,还是你安装在 Windows 里的程序。

利用 MSYS 可以基本代替 cmd 的日常使用。

MSYS 的安装很简单,下载安装文件,一路安装下去就可以了。在提示你是否安装有 MinGW 的时候,你根据你的实际情况填写即可。

MSYS 默认的颜色、字体配置十分的丑陋,可以通过

这个文件来修改,即安装路径下的 msys.bat 文件。

修改 MSYS 的终端字体、颜色等属性,找到表述和下面这一行相类似的地方:

把这里面的属性值根据你的喜好来改,就可以美化出一个更加漂亮的终端窗口了:

这些属性值都可以随便自己设定,不过这一行一定要作为一行来保存!

(3) Comments    Read More   
Posted on 04-01-2009
Filed Under (技术) by waterlin

MinGW 提供了一个编写 Windows 应用程序的完整开源工具包。

1) MinGW的安装

MinGW的安装,其实非常简单。

因为手动安装有着更多的灵活性,所以这里重点说一下手动安装的步骤。安装 MinGW 至少需要四个包:

把这些包下载下来,放到 C:\MinGW 目录下(当然,放到哪里都一样),然后在 Windows 的 cmd 里,用下面的命令解压出来:

其实各个包的目录结构都是一样的,所以,解压后的目录结构仍然为一样的。其它的包也可以采用这样的方法来处理。只是要知道,我们解压是需要把这几个包混合起来,而不要只是习惯性的分别解压到一个文件夹里!

这个时候,最好推荐用命令行的方式来解压,不容易出错;如果系统没有装 gzip 或是类似的软件,可以用 Cygwin 来解压。

最后一行命令是添加 path 到环境变量里,如果你经常使用,需要把这个变量永久的添加到 path 变量里。

当然,你可以根据你的需要选择更多的包,例如说 gcc-g++ for C++、gcc-objc for Objective C、gcc-g77 for Fortran 77、gcc-java for Java 或 gcc-ada for Ada。如果需要这些包的话,只需要在上面的命令里多解压一个包即可。

2) MinGW的使用

现在我们可以直接在 Windows cmd 里来使用 Gcc 之类的命令来编译程序了。

比如说下面这个 C 程序:

假如你想从 hello.c 生成一个在终端模式下的可执行文件 hello.exe。只要直接用 gcc 编译器进行编译就行了:

这个命令把 hello.c 编译成一个目标文件 hello.o,然后用下面的方法生成一个可执行文件 hello.exe:

事实上,作为一种选择,你可以使用下面的命令把编译和链接放到一步中完成:

下面是一个简单的 c++ 程序的代码示例,复制并粘贴到一个叫 hello.cpp 的文件中试试看:

对于 c++ 程序来说,可以使用 g++ 来编译和链接:

对于 gcc、g++ 及其他编译器的使用,可以查询各自的手册以获得更多的帮助。

(1) Comment    Read More