我发现长期用右手用鼠标,就习惯了用左手支撑着身体趴在桌子上,长期这样,其实对身体很不好的。习惯性地只用左手支撑自己,变相地只有左边的身体支撑着自己趴在桌子上,随着用电脑时间的增长,我觉得很容易弄出毛病来。
于是,今天把办公室的鼠标改成用左手使了。为了配合这个,还把虚拟机里的鼠标模式全改成左手了,工作量还挺大的~~
每天工作都要监视某些网页,一但这些网页有更新,就做相应的工作。
当然不能每天人工去查看每个网页了!于是我写了一个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>
这样的一个不起眼的小工具,却省下了我一大串繁琐的工作(比如打开文件、判断、复制内容),不亦乐乎!
1) 先把目录打包,再把File::copy来复制这个打成包的文件到目的地,再解压。
推荐使用Archive::Tar作为处理压缩与解压的工具。
2) 用File::Copy::Recursive来直接拷贝目录。
我的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下测试过了,其它平台有机会再测试一下。
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文件了。
在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下很容易能编译通过。
* 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包,具体原因有待进一步的分析。
如果在系统中使用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
这些属性值都可以随便自己设定,不过这一行一定要作为一行来保存!
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++及其他编译器的使用,可以查询各自的手册以获得更多的帮助。