Nov 28, 2007

FreeBSD 安装vim

习惯了Linux下的Vim,在FreeBSD下让 方向键 把我都快弄晕了
不得已只能重新装一个,具体过程:
# pkg_delete vim*
# pkg_add -r vim
# mv /usr/bin/vi /usr/bin/vi.back
# ln -s /usr/local/bin/vim /usr/bin/vi
# cp /usr/local/share/vim/vim63/vimrc_example.vim /root/.vimrc
# vi /root/.vimrc
set nobackup

FreeBSD 终端显示颜色

在/etc/csh.cshrc中添加下面的内容
# display color
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes

Nov 22, 2007

Happy Thanksgiving Day

2007.11.20 18:52 很特殊的时刻 :-)



最近去了两次做假肢的公司,看到一个很小的孩子就残疾了,心里很是难受(不过晚上弄得我做噩梦)



在感恩节到来之际,祝大家幸福快乐 ^_^



Nov 20, 2007

关闭SHELL的提示声

基本来源于下面的链接,我添加了FreeBSD的csh

From :

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=office&Number=596796&page=5&view=collapsed&s

Introduction
当电脑对我嘟嘟嚷的时候,我真的觉得很讨厌。我常常在 shell 里面使用 Tab-补
全来节省大量的输入时间,但是我受不了扬声器没完没了的嘟嘟声!

下面就为大家介绍如何快速去除讨厌的叫声。在 shell 里面,你可以按下 crtl-g
来测试一下这个嘟嘟声是否已经去掉。
关掉所有的提示音
在 Linux 控制台下(没有 X11),你可以使用一下命令:

setterm -blength 0

#alternatively you can change the frequency of the beep to a
#very low value:

setterm -bfreq 10

而在 X11 下面(不管是 KDE、Gnome、XFCE 或者……) 你可以:

xset b off


对每种 shell 操作
作为一种可能的选择,你可以直接关掉某种 shell 里的提示音。

对 Bash:

# has to go into /etc/inputrc or .inputrc
# It will not work in a .bashrc file!
set bell-style none

对 Tcsh:

# put this into your .tcshrc file

# just tab completion beep off:
set matchbeep = never
# any beep off:
set nobeep = 1

对FreeBSD的Csh:
# put into /etc/csh.cshrc
set nobeep=1

结论
为避免误解,特此声明:以上操作只是关掉了(蜂鸣器的)嘟嘟声,你仍然可以在
你的电脑上自在的听歌。

世界清静了……

Nov 8, 2007

Unix Daemon Server Programming [zt]


Unix Daemon Server Programming

Introduction

Unix processes works either in foreground or background. A process running in foreground interacts with the user in front of the terminal (makes I/O), whereas a background process runs by itself. The user can check its status but he doesn't (need to) know what it is doing. The term 'daemon' is used for processes that performs service in background. A server is a process that begins execution at startup (not neccessarily), runs forever, usually do not die or get restarted, operates in background, waits for requests to arrive and respond to them and frequently spawn other processes to handle these requests.

Readers are suppossed to know Unix fundamentals and C language. For further description on any topic use "man" command (I write useful keywords in brackets), it has always been very useful, trust me :)) Keep in mind that this document does not contain everything, it is just a guide.

1) Daemonizing (programming to operate in background) [fork]

First the fork() system call will be used to create a copy of our process(child), then let parent exit. Orphaned child will become a child of init process (this is the initial system process, in other words the parent of all processes). As a result our process will be completely detached from its parent and start operating in background.

 i=fork();
if (i<0) exit(1); /* fork error */
if (i>0) exit(0); /* parent exits */
/* child (daemon) continues */

2) Process Independency [setsid]

A process receives signals from the terminal that it is connected to, and each process inherits its parent's controlling tty. A server should not receive signals from the process that started it, so it must detach itself from its controlling tty.

In Unix systems, processes operates within a process group, so that all processes within a group is treated as a single entity. Process group or session is also inherited. A server should operate independently from other processes.

 setsid() /* obtain a new process group */

This call will place the server in a new process group and session and detach its controlling terminal. (setpgrp() is an alternative for this)

3) Inherited Descriptors and Standart I/0 Descriptors [gettablesize,fork,open,close,dup,stdio.h]

Open descriptors are inherited to child process, this may cause the use of resources unneccessarily. Unneccesarry descriptors should be closed before fork() system call (so that they are not inherited) or close all open descriptors as soon as the child process starts running.

 for (i=getdtablesize();i>=0;--i) close(i); /* close all descriptors */

There are three standart I/O descriptors: standart input 'stdin' (0), standart output 'stdout' (1), standart error 'stderr' (2). A standard library routine may read or write to standart I/O and it may occur to a terminal or file. For safety, these descriptors should be opened and connectedthem to a harmless I/O device (such as /dev/null).

 i=open("/dev/null",O_RDWR); /* open stdin */
dup(i); /* stdout */
dup(i); /* stderr */

As Unix assigns descriptors sequentially, fopen call will open stdin and dup calls will provide a copy for stdout and stderr.

4) File Creation Mask [umask]

Most servers runs as super-user, for security reasons they should protect files that they create. Setting user mask will pre vent unsecure file priviliges that may occur on file creation.

 umask(027);

This will restrict file creation mode to 750 (complement of 027).

5) Running Directory [chdir]

A server should run in a known directory. There are many advantages, in fact the opposite has many disadvantages: suppose that our server is started in a user's home directory, it will not be able to find some input and output files.

 chdir("/servers/");

The root "/" directory may not be appropriate for every server, it should be choosen carefully depending on the type of the server.

6) Mutual Exclusion and Running a Single Copy [open,lockf,getpid]

Most services require running only one copy of a server at a time. File locking method is a good solution for mutual exclusion. The first instance of the server locks the file so that other instances understand that an instance is already running. If server terminates lock will be automatically released so that a new instance can run. Recording the pid of the running instance is a good idea. It will surely be efficient to make 'cat mydaamon.lock' instead of 'ps -ef|grep mydaemon'

 lfp=open("exampled.lock",O_RDWR|O_CREAT,0640);
if (lfp<0) exit(1); /* can not open */
if (lockf(lfp,F_TLOCK,0)<0) exit(0); /* can not lock */
/* only first instance continues */

sprintf(str,"%d\n",getpid());
write(lfp,str,strlen(str)); /* record pid to lockfile */

7) Catching Signals [signal,sys/signal.h]

A process may receive signal from a user or a process, its best to catch those signals and behave accordingly. Child processes send SIGCHLD signal when they terminate, server process must either ignore or handle these signals. Some servers also use hang-up signal to restart the server and it is a good idea to rehash with a signal. Note that 'kill' command sends SIGTERM (15) by default and SIGKILL (9) signal can not be caught.

 signal(SIG_IGN,SIGCHLD); /* child terminate signal */

The above code ignores the child terminate signal (on BSD systems parents should wait for their child, so this signal should be caught to avoid zombie processes), and the one below demonstrates how to catch the signals.

 void Signal_Handler(sig) /* signal handler function */
int sig;
{
switch(sig){
case SIGHUP:
/* rehash the server */
break;
case SIGTERM:
/* finalize the server */
exit(0)
break;
}
}

signal(SIGHUP,Signal_Handler); /* hangup signal */
signal(SIGTERM,Signal_Handler); /* software termination signal from kill */

First we construct a signal handling function and then tie up signals to that function.

8) Logging [syslogd,syslog.conf,openlog,syslog,closelog]

A running server creates messages, naturally some are important and should be logged. A programmer wants to see debug messages or a system operator wants to see error messages. There are several ways to handle those messages.

Redirecting all output to standard I/O : This is what ancient servers do, they use stdout and stderr so that messages are written to console, terminal, file or printed on paper. I/O is redirected when starting the server. (to change destination, server must be restarted) In fact this kind of a server is a program running in foreground (not a daemon).

 # mydaemon 2> error.log

This example is a program that prints output (stdout) messages to console and error (stderr) messages to a file named "error.log". Note that this is not a daemon but a normal program.

Log file method : All messages are logged to files (to different files as needed). There is a sample logging function below.

 void log_message(filename,message)
char *filename;
char *message;
{
FILE *logfile;
logfile=fopen(filename,"a");
if(!logfile) return;
fprintf(logfile,"%s\n",message);
fclose(logfile);
}

log_message("conn.log","connection accepted");
log_message("error.log","can not open file");

Log server method : A more flexible logging technique is using log servers. Unix distributions have system log daemon named "syslogd". This daemon groups messages into classes (known as facility) and these classes can be redirected to different places. Syslog uses a configuration file (/etc/syslog.conf) that those redirection rules reside in.

 openlog("mydaemon",LOG_PID,LOG_DAEMON)
syslog(LOG_INFO, "Connection from host %d", callinghostname);
syslog(LOG_ALERT, "Database Error !");
closelog();

In openlog call "mydaemon" is a string that identifies our daemon, LOG_PID makes syslogd log the process id with each message and LOG_DAEMON is the message class. When calling syslog call first parameter is the priority and the rest works like printf/sprintf. There are several message classes (or facility names), log options and priority levels. Here are some examples :

Message classes : LOG_USER, LOG_DAEMON, LOG_LOCAL0 to LOG_LOCAL7
Log options : LOG_PID, LOG_CONS, LOG_PERROR
Priority levels : LOG_EMERG, LOG_ALERT, LOG_ERR, LOG_WARNING, LOG_INFO

About

This text is written by Levent Karakas <levent at mektup dot at >. Several books, sources and manual pages are used. This text includes a sample daemon program (compiles on Linux 2.4.2, OpenBSD 2.7, SunOS 5.8, SCO-Unix 3.2 and probably on your flavor of Unix). You can also download plain source file : exampled.c. Hope you find this document useful. We do love Unix.

/*
UNIX Daemon Server Programming Sample Program
Levent Karakas <levent at mektup dot at> May 2001

To compile: cc -o exampled examped.c
To run: ./exampled
To test daemon: ps -ef|grep exampled (or ps -aux on BSD systems)
To test log: tail -f /tmp/exampled.log
To test signal: kill -HUP `cat /tmp/exampled.lock`
To terminate: kill `cat /tmp/exampled.lock`
*/

#include <stdio.h>
#include <fcntl.h>
#include < signal.h>
#include <unistd.h>

#define RUNNING_DIR "/tmp"
#define LOCK_FILE "exampled.lock"
#define LOG_FILE "exampled.log"

void log_message(filename,message)
char *filename;
char *message;
{
FILE *logfile;
logfile=fopen(filename,"a");
if(!logfile) return;
fprintf(logfile,"%s\n",message);
fclose(logfile);
}

void signal_handler(sig)
int sig;
{
switch(sig) {
case SIGHUP:
log_message(LOG_FILE,"hangup signal catched");
break;
case SIGTERM:
log_message(LOG_FILE,"terminate signal catched");
exit(0);
break;
}
}

void daemonize()
{
int i,lfp;
char str[10];
if(getppid()==1) return; /* already a daemon */
i=fork();
if (i<0) exit(1); /* fork error */
if (i>0) exit(0); /* parent exits */
/* child (daemon) continues */
setsid(); /* obtain a new process group */
for (i=getdtablesize();i>=0;--i) close(i); /* close all descriptors */
i=open("/dev/null",O_RDWR); dup(i); dup(i); /* handle standart I/O */
umask(027); /* set newly created file permissions */
chdir(RUNNING_DIR); /* change running directory */
lfp=open(LOCK_FILE,O_RDWR|O_CREAT,0640);
if (lfp<0) exit(1); /* can not open */
if (lockf(lfp,F_TLOCK,0)<0) exit(0); /* can not lock */
/* first instance continues */
sprintf(str,"%d\n",getpid());
write(lfp,str,strlen(str)); /* record pid to lockfile */
signal(SIGCHLD,SIG_IGN); /* ignore child */
signal(SIGTSTP,SIG_IGN); /* ignore tty signals */
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGHUP,signal_handler); /* catch hangup signal */
signal(SIGTERM,signal_handler); /* catch kill signal */
}

main()
{
daemonize();
while(1) sleep(1); /* run */
}

/* EOF */

 

Last Update : 16.05.2001

 


Nov 7, 2007

ascii

ASCII �大致可以分作三部分�成。

第一部分由 00H 到 1FH 共 32 �,一般用�通�或作�控制之用,有些字元可�示於�幕,有些��法�示在�幕上,但能看到其效果(例如�行字元、�位字元)。如下表:

ASCII 表(0到1FH)

第二部分是由 20H 到 7FH 共 96 �,� 95 �字元是用�表示阿拉伯�字、英文字母大小�和底�、括�等符�,都可以�示在�幕上。如下表:

ASCII � 字元   ASCII � 字元   ASCII � 字元   ASCII � 字元
十�位 十六�位   十�位 十六�位   十�位 十六�位   十�位 十六�位
03220    05638 8  08050 P  10468 h
03321 !  05739 9  08151 Q  10569 i
03422 "  0583A :  08252 R  1066A j
03523 #  0593B ;  08353 S  1076B k
03624 $  0603C <  08454 T  1086C l
03725 %  0613D =  08555 U  1096D m
03826 &  0623E >  08656 V  1106E n
03927 '  0633F ?  08757 W  1116F o
04028 (  06440 @  08858 X  11270 p
04129 )  06541 A  08959 Y  11371 q
0422A *  06642 B  0905A Z  11472 r
0432B +  06743 C  0915B [  11573 s
0442C ,  06844 D  0925C \  11674 t
0452D -  06945 E  0935D ]  11775 u
0462E .  07046 F  0945E ^  11876 v
0472F /  07147 G  0955F _  11977 w
04830 0  07248 H  09660 `  12078 x
04931 1  07349 I  09761 a  12179 y
05032 2  0744A J  09862 b  1227A z
05133 3  0754B K  09963 c  1237B {
05234 4  0764C L  10064 d  1247C |
05335 5  0774D M  10165 e  1257D }
05436 6  0784E N  10266 f  1267E ~
05537 7  0794F O  10367 g  1277F

第三部分由 80H 到 0FFH 共 128 �字元,一般��『�充字元』,� 128 ��充字元是由 IBM 制定的,�非��的 ASCII �。�些字元是用�表示框�、音�和其他�洲非英�系的字母。

ASCII �(80H到0FFH)

Nov 5, 2007

重装Windows,只用53款全免费软件 [zt]

From : http://blog.sina.com.cn/xbeta
如图片无法显示,请先打开 原文然后再读本文,或下载chm版
作者:Samer 译者:xbeta  最新版本 鼓励转载,但请保留本行!
图片:Gparted screenshot
   2007年10月底,freewaregenius发表了题为《重装Windows,只用53款全免费软件》(原文)的文章。此文源于作者Samer在重装Windows后,只安装免费 /开源软件而满足应用需求的实际经历。
  xbeta(免费软件宣传志愿者,善用佳软站长)对此文进行了译评,供国内读者参考。一来提升减少盗版的信心,二来分享更多优秀软件。

一、前言

  最近,我在笔记本上重装了WinXP。借此机会,写了这篇文章,分享我"100%使用免费或开源软件,完成所有重要(或非重要)需求"的解决办法。本文也可称为:
  • 日常工作,完全无需付费软件(Windows除外)
  • 53款免费软件,全面满足日常所需
  本文全基于我的实际经验而写成,文章较长,写来费力。如果你喜欢,请以收藏、推荐的形式进行支持。(译者注:鼓励署名转载)

二、格式化之前的准备

  格式化原有系统盘之前,用如下软件进行准备:
1. Gparted Live CD
  图片:图片:Gparted screenshot
  重装系统而保留数据,最简单的方式就是将所有数据转移到新建分区中。Gparted Live CD 就是这样一款优秀工具,来创建和管理分区,与任何同类工具,包括收费软件,相媲美。

2. Unstoppable Copier
  图片:图片:Unstoppable Copier Screenshot
  我用此工具把C分区的文件和数据复制到其他分区。它特别适用于复制或转移大量文件。如其名称所述,它不会停下来问用户"请确认:移动只读文件 xxx?"你可以离开计算机,让它慢慢复制。

3. Amic Email Backup

  图片:图片:Amic Email Backup Screenshot
  把C盘存放的邮件数据转移到非系统盘。支持Outlook等多种邮件客户端。但不支持Thunderbird。Thunderbird用户可用 Mozbackup
  同类免费工具:EZ Email Backup

4. DriverMax
  图片:图片:drivermax
  备份全部驱动程序,并可用它恢复安装驱动。

5. Produkey
  图片:图片:Produkey Screenshot
  用来备份所有MS产品的注册信息,包括 Windows XP 和 Office。可打印出来或保存到其他分区。与同类工具相比,优点是不会引起安全软件的警报。

三、安装Windows

  利用正版的Windows安装盘进行安装。如果中间需要驱动,请通过网络或DriverMax备份进行安装。然后,进行 Windows update。再后,安装Microsoft .NET 和 Java RTE。

四、安装应用软件

  装完windows,再安装应用软件――这才是最美好的过程。
6. PC Decrapifier
  图片:PC Decrapifier Screenshot
  如果你是用电脑制造商提供的Windows安装盘,则极可能会安装很多"多余"的软件。(xbeta补充:越是品牌机,越要体验增值,结果是装了无数多自启动的软件、自启动的服务)此工具可以将它们统统删除。不过,要小心检查卸载清单。

7. DriveImage XML
  图片:Driveimage XML Screenshot
  为刚安装好的系统制作镜像,以便随时恢复系统。就象ghost一样,不过此工具为免费软件,也非常好用。
  译者注:中文介绍见《用免费的DriveImage XML代替Ghost来备份硬盘》。

8. Launchy
  图片:Launchy Screenshot
  美观方便的小工具,让你启动程序更方便。同类工具还有 Key LaunchKeybreeze
  译者注:我坚守经典的win run方式,参见《最绿色最高效,用win+r启动常用程序和文档

 
9. AVG Antivirus
  图片:AVG Screenshot
  AVG成为杀毒首选的原因:①占用资源极少;②效果好;③可以扫描邮件(我需要此功能,所以没有选优秀的Antivir。
  第2选择:Antivir。第3选择:Avast


10. Spyware Terminator
  图片:SpywareTerminator Screenshot
  实时抵御恶意软件。系统扫描时,还集成了开源杀毒软件 ClamAV。安装时会试图增加一个浏览器工具条,我通常会取消此项。

11. Comodo Firewall
  图片:Comodo Firewall Screenshot
  它不仅是好的免费防火墙,还是 PC Magazine 编辑推荐产品,可能还是最好的个人防火墙――无论与免费软件还是与付费商品比。 Matousec.com 最新防火墙评测中,它取得了综合防火墙最高分、防漏洞最高分。(本文所指最新评测是截止到本文写作时的2007年10月20日)

12. TweakUI
  图片:Tweakui Screenshot

  利用它来个性化windows界面,并尽量把数据路径(我的文档、桌面)从C盘转向其他分区。此外,它还能改变Windows的打开/保存对话框的侧栏。

13. OpenOffice
  图片:OpenOffice Writer Screenshot
  影响最大、功能最强的免费开源办公套件。xbeta极力推荐。请远离昂贵的MS Office,换用全面模仿和兼容MSOffie的WPS 2007,或独立开源的OOo。
  译者注:支持OpenOffice.org

14. Forcevision Image Viewer
  图片:Forcevision Screenshot
  简洁好用的看图工具。看图工具可分为(a) 小巧简单而具备基本功能; (b) 中量级看图工具,有一定的编辑功能及选项,能转换文件格式; (c) 更大体积,具备丰富的功能,通常支持插件,支持非常多格式的读写。
  我知道很多人选 c 类的 IrfranviewXnview,但我用此软件实现了99%的需求。
  替代选择:Faststone Image Viewer
  译者注:没什么好说的,最强超小Irfanview,中文介绍《善用Irfanview,不仅仅是看图》。
 
15. JZip
  图片:Jzip Screenshot
  基于 7-Zip 的开源压缩工具。这些也不错:TugZip, IZArc, 和 ALzip
  译者注:不二选择 7-Zip。

16. CDBurnerXP 4
  图片:CDBurnerXP Screenshot
  免费工具,用来刻录 CD和DVDs。功能全面,刻录音乐CD,复制CD/DVD,烧录ISO,支持多种格式,如双层DVD、Blu-Ray、HD-DVDs。
  第2选择: InfraRecorder
 
17. JKDefrag GUI
  图片:JkDefragGUI Screenshot
  免费磁盘整理软件JKDefrag的图形化界面。
  支持理由: (a) JKDefrag 是近评测的多款免费与收费磁盘整理工具中最好的一款; (b)可以设定为屏保,因此,当你计算机处于空闲时它会自动工作; (c) 速度快、效果好。

18. Folder Size
  图片:FolderSize Screenshot
  为资源管理器添加"文件夹大小"的附加列。第2选择是"Aurionix FileUsage",它提供更多功能,但占用稍多资源,且需要.Net。
  译者注:最好的文件管理器是Total Commander,免费可选Free Commander。

19. Pidgin
  图片:Pidgin Screenshot
  将多种聊天工具集成在一起,比如QQ,AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu等。占用资源小,且无广告。
  第2选择:Miranda IM,也是很优秀的软件。此外,基于web的 Meebo也很好。
  译者注:以前用Miranda IM,现用Meebo。
20. Google Toolbar
  图片:Google Toolbar Screenshot
  这是我唯一安装的工具条。它为浏览器提供了搜索框、填表工具、快速翻译网页、拼写检查功能。

21. CCleaner
  图片:CCleaner Screenshot
  相当不错的硬盘清理工具,处理注册表、临时文件、浏览历史及隐私文件、各种无用文件和数据。安装程序可能带有Yahoo工具条,请注意。
  译者注:好习惯很重要,好工具也有益。这是视频演示
 
22. Shock Sticker
  图片:Shock Sticker Screenshot
  很实用的桌面便贴工具。其他同类工具只支持txt,它还支持rtf格式。可以将笔记缩为图标――这是我喜欢它的重要理由。此外,Stickies也不错,功能更多。
  译者注:此类工具很多,自己喜欢就好。 
 
23. FolderICO
  图片:Folderico Screenshot
  我喜欢将不同目录用不同图标/颜色进行区分。此工具在系统右键菜单上添加这项功能,操作方便。另外,它将设置信息放于各目录下,因此,即便由其他操作系统通过网络访问此目录,或Windows重装后,个性化设定仍然有效。

24. BeCyIconGrabber
  图片:BeCyIconGrabber Screenshot
  喜欢收集和更换图标者必备工具。它不仅能从文件中提取图标,还能把图标反过来把图标存为图标库――这在同类工具中并不多见。

25. Alpass
  图片:ALPass Screenshot
  很好的密码管理工具(只适用于IE),可保存、加密、自动填入密码。类似功能的还有 Keepass
  译者注:Keepass可不是第二选择,而是最好的选择。参见十项免费之道,全面管理你的密码(译)

26. Picasa
  图片:Picasa Screenshot
  来自Google的免费图片管理软件,可以在线分享/上传图片,提供很多图片增强功能,也是优秀的看图工具。
  译者注:我只用IrfanView看图,用目录管理图片。

27. Faststone Capture
  图片:Faststone Image Capture Screenshot
  很多人已经知道这款优秀的截图+编辑工具了。最新版不再免费,最后的免费版是V5.3。此外,Screenshot Captor 也极好。
  译者注:参见新一代截屏大师 Screenshot Captor简评几款免费截屏软件的优缺点(上) (下)

28. GOM Media Player
  图片:GOM Player Screenshot
  视频播放器,支持 DVD,Real Media, Quicktime, DivX, Xvid 和 FLV。优点是它内置了解码器且不安装为系统解码器。如果遇到不支持的文件格式,可以自动下载新解码器。我也常用 VLC media player 。但GOM支持 FLV 格式更好,比如跳转到FLV的任一位置,而目前VLC还做不到。并且,它的界面很漂亮,尤且在播放DVD时。此外,解码器 CodecInstaller也值得一用。

29. Quintessential Media Player
  图片:QMP Screenshot
  支持多种音频。兼为 (a) 优秀的播放器;(b) 出色的 tag 编辑器;(c) 支持CDDB数据库的CD ripper;(d) 音频格式转换器。通过插件还支持均衡、可视效果、皮肤。此外一大优点是自动标签功能,需插件CD Art Display 支持。另,Mediamonkey 也很好。

30. MP3Tag
  图片:MP3tag Screenshot
  很棒的MP3 标签管理工具,可以从Amazon下载专辑信息,并保存到音乐文件中。我试过多种软件,但最喜欢此款,主要是界面直观,用户体验特别好。
  此外,也可用批量改名工具The Godfather 处理类似工作,或用 #29的播放工具管理tag。

31. MusicBrainz Picard
  图片:Musicbrainz Picard Screenshot
  如果音乐文件无tag信息或不完整,可用它来补全。它使用最先进的数字指纹技术,与社区提供的MusicBrainz数据库进行比较,并补全tag。它用的是与 Quintessential Media Player (#29) 不同的技术,效果很好。

32. Exact Audio Copy
图片:Exact Audio Copy Screenshot
  完美地从CD提取音乐文件,比如高质量MP3格式,支持多种格式。我还喜欢 BonkEnc。另,#29播放器也支持提取音频功能。
  如果你要找实用的音频格式转换工具,请使用Any Audio Converter ,它还支持FLV,并能从视频中提取音频。

33. MP3gain
图片:MP3gain Screenshot
  自动检查多个MP3,并对它们的音量进行均衡。以免播放时,这首歌声音太大,而下一首又弱不可闻。重要的是,它并不改变MP3文件本身,所以,音量均衡处理也是可逆的。另一款同类软件是:MP3Trim.

34. Unlocker
图片:Unlocker Screenshot
  删除某个文件,却被提示被锁定?就用它来解决。极其小巧,却很实用。经常折腾系统的网友必备工具。
  译者注:很实用。

35. Orbit Downloader
图片:Orbit Downloader Screenshot
  非常出色的下载管理工具,并且支持流媒体(音乐、视频、SWF)格式的下载。另一款优秀工具是FlashGet.
  译者注:下载工具,中国第一。 

36. WinSCP
图片:Winscp Screenshot
  需要FTP客户端吗,请不要错过 WinSCP。它还支持 SFTP 及先前的SCP协议,支持安全传送,双窗口界面。支持断点保存、书签,可以集成到右键"发送到"菜单。
  此外,FileZilla 也是不错的选择,免费且不断更新改进,支持 FTP, SFTP, 和 FTPS。如果你偏好FTP通过右键与资源管理器集成,则可选择 RightLoad

37. Local Website Archive
图片:Local Website Archive Screenshot
  此软件可以将网页原样保存在本地,包括图片与格式,以便于日后浏览。它比较好的一点是按原有格式保存,这样便于在笔记工具中引用本地url。另一种替代选择,也是极好的工具,是 Evernote
  译者注:请尝试杰出的EverNote,参见顶级免费笔记软件EverNote 2.2发布;更多笔记软件则参见寻找最好的笔记软件:三强篇

38. Flashnote
图片:Flashnote Screenshot
  轻便的笔记工具,按快捷键则出现,记录完毕后,最小化(或按下快捷键)则回到系统托盘。或许它的功能并不是很多,但对我而言,它是必装软件。

39. Revo Uninstaller
图片:Revo Uninstaller Screenshot
  我选择的卸载工具,可以在常规的卸载后,仍能把多余的文件和注册表信息进行清除,效果明显。当然,在使用中仍要对清除内容进行谨慎确认。Revo还提供了自启动程序管理器、硬盘清理工具等产品。此前我用过的ZSoft Uninstaller也不错,它清理效果或许没有Revo干净,但也不会象它那样有误删风险。

40. BitTyrant
图片:BitTyrant Screenshot
  我用了很长时间的出色的BT工具。这是改进版的 Azureus,通过被称为"自私"的下载方式实现更快的速度。另外的优秀BT客户端有 uTorrent, Azureus.
  译者注:我极少用此类工具,支持uTorrent,参见uTorrent:史上最省资源BT客户端

41. Starter
图片:Starter Screenshot
  小巧、免安装的杰出软件,管理自启动程序。此类软件有很多,但试过之后选定了这一款。说明一下,Revo Uninstaller (#39) 也含有内置的启动项管理功能。
  译者注:此类首选,见Autoruns与Sysinternals。 

42. Send To Toys
图片:Send to Toys Screenshot
  用此工具,可将任意目录加入"发送到"菜单中,便于快速复制或移动文件到相应目录中。
  译者注:用了Total Commander,再无此类烦恼。另,好象手工方式也能修改"发送到"菜单实现此功能吧。 

43. Returnil
图片:Returnil Screenshot
  安全工具。利用它可以浏览不安全的站点,或安装危险软件,或进行任何有风险的操作。然后,重启计算机就回到了初始状态。

44. SysTrayMeter
图片:SysTrayMeter Screenshot
  在系统托盘中直观显示当前资源消耗情况。便于查出问题所在。

45. SweepRAM
图片:Sweepram Screenshot
  极小巧且免安装的小工具,释放和优化内存。

46. VSO Image Resizer
图片:VSO Image Resizer Screenshot
  在资源管理器添加右键菜单,实现图片缩放或转换格式功能。特别之处是,可以把一些设置保存起来,这样日后就能直接调用。Easy Thumbnails也不错,我也用过很长时间。
  译者注:我只用IrfanView。

47. Photoscape
图片:Photoscape Screenshot
  集多种功能于一身的图片管理和处理套件,包括图片编辑、截屏、格式转换、看图、GIF动画、批量图像改名、页面创建多种工具,此外还有其他功能。它功能多多,而我最爱用它合成图片,并方便地添加注释。如果你在工作中经常用片进行演示,则它再方便不过。
  译者注:早就知道这款软件,但一向不喜欢用/推荐大体积工具。我推荐的组合:Irfanview+Screenshot Captor+GIMP。参见善用GIMP(Linux下的Photoshop),图像处理轻松又自由GIMP文字特效

48. PDF-XChange Viewer
图片:PDF-XChange Viewer Screenshot
  比Adobe体积更小更快,比Foxit Reader功能更多,支持多种注释、多页签、打开预览的优秀pdf阅读工具。要说它有什么缺点,就是关联pdf后的图标不敢恭维,但是可以用 Icon Phile进行更改。
  译者注:确实不错,值得一试。中文介绍见功能更多的PDF阅读软件PDF-XChange Viewer.

49. Primo PDF
图片:PrimoPDF Screenshot
  优秀的pdf虚拟打印机。如需打印为图片格式,PDFCreator将是首选。另,DoPDF也不错。
  译者注:关于pdf,关于pdf相关软件,尽在全面接触PDF:最好用的PDF软件汇总.

50. HobComment
图片:HOBComment Screenshot
  想为文件或目录添加注释吗?用此软件。它能在资源管理器详细视图中,加入"文件(夹)注释"列。并在资源管理器右键菜单中新建"添加注释"项(只限于 NTFS分区)。
  译者注:添加注释不是好习惯。

51. I.Mage
图片:I.Mage Acreenshot
  我用它替代windows的画图工具。它简洁实用,足以满足我偶尔的图片处理工作。如果你需要更强大的PhotoShop替代工具,请试用 GimpshopPaint.net ,都是极品。
  译者注:当然经典的GIMP。参见善用GIMP(Linux下的Photoshop),图像处理轻松又自由GIMP文字特效 。 

52. Flashfolder
图片:Flashfolder Screenshot
  资源管理器增强工具,给windows的打开/保存对话框,增加自定义的收藏文件夹、最近文件夹。我的最爱软件之一,新机必装。
  译者注:只能说,用了TC后,很多软件不再需要了。

53. JOCR
图片:JOCR Screenshot
  捕捉屏幕任一区域(或加载图片),并即刻识别出其中的文字。不过呢,把它列入推荐全免费软件的本文或许有点不太合适,因为它要用到MS Office的库。我本来已经把 OpenOffice (#13) 推荐为 MS Office 替代品了。但因为我经常用它,所以还是收录于本文最后。

五、总结

  进行到这里,我已在计算机上装完了所有软件。所以,我再次用 DriveImage XML 创建了镜像文件。也就是说,我拥有了2个镜像文件:一是干净的Windowsso加驱动;二是包括所有应用软件。
  在必要的情况下,我都可以快速恢复到任一状态。