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的剪切板,把

vnoremap <C-Ins> “*y

改为

vnoremap <M-w> “*y

即可。

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

inoremap <S-Ins> <C-r><C-o>*

改为

inoremap <C-y> <C-r><C-o>*

即可。

现在这样的设置就和我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+鼠标左键,就可以直接将剪贴板内的文字粘贴进来了。

(0) Comments    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默认的颜色、字体配置十分的丑陋,可以通过C:\msys\1.0\msys.bat这个文件来修改,即安装路径下的msys.bat文件。

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

start rxvt -backspacekey  -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry 80×25 -e /bin/sh –login -i

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

start rxvt -backspacekey  -sl 2500 -fg white -bg black -sr -fn Courier-bold-14 -tn msys -geometry 100×40 -e /bin/sh –login -i

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

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

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

1) MinGW的安装

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

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

    * binutils
* gcc-core
* mingw-runtime
* w32api

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

C:\MinGW> gzip -d -c binutils-2.17.50-20060824-1.tar.gz | tar x
C:\MinGW> gzip -d -c gcc-core-3.4.5-20060117-3.tar.gz | tar x
C:\MinGW> gzip -d -c mingwrt-3.15.1-mingw32-dev.tar.gz | tar x
C:\MinGW> gzip -d -c w32api-3.12-mingw32-dev.tar.gz | tar x
C:\MinGW> set path=C:\MinGW\bin;%path%

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

这个时候,最好推荐用命令行的方式来解压,不容易出错;如果系统没有装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程序:

#include <stdio.h>int main(int argc, char **argv)
{
printf (“Start to use MinGW”);
return (0);
}

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

gcc -c hello.c

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

gcc -o hello hello.o

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

gcc -o hello hello.c

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

#include <iostream>
int main(int argc, char **argv)
{
std::cout << “Start to use MinGW to compile C++” << std::endl;
return (0);
}

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

g++ -c hello.cpp
g++ -o hello hello.o

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

(1) Comment    Read More