﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-藏经阁-文章分类-Linux</title><link>http://www.blogjava.net/zhouf/category/45696.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Dec 2010 06:44:00 GMT</lastBuildDate><pubDate>Fri, 17 Dec 2010 06:44:00 GMT</pubDate><ttl>60</ttl><item><title>vsftpd 550 Permission denied 出错解决方案</title><link>http://www.blogjava.net/zhouf/articles/340148.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 09 Dec 2010 07:50:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/340148.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/340148.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/340148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/340148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/340148.html</trackback:ping><description><![CDATA[今天遇到个奇怪的问题，昨天刚把openSUSE11.3装好，并在上面配置了FTP服务，我用的是vsftpd,因为之前用着比较顺手，新安装的vsftpd服务器配置好了后，设置为本地用户可以访问，但在上传文件的时候总是出现550 Permission denied.错误，之前我也配置过vsftpd，可都没出现这样的问题，之后我看了下两个服务器的vsftpd的版本，确实有些不一样，我之前用的版本是vsftpd-2.0.5-78，目前的vsftpd的版本如下<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">linux-</span><span style="color: #000000">8180</span><span style="color: #000000">:~&nbsp;#&nbsp;rpm&nbsp;-qa|grep&nbsp;vsftpd<br />
vsftpd-</span><span style="color: #000000">2.2.2</span><span style="color: #000000">-</span><span style="color: #000000">2.4</span><span style="color: #000000">.x86_64<br />
linux-</span><span style="color: #000000">8180</span><span style="color: #000000">:~&nbsp;#</span></div>
我把/etc/vsftpd.conf重新看了一下
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">#&nbsp;################<br />
#&nbsp;General&nbsp;Settings<br />
#&nbsp;################<br />
#<br />
#&nbsp;Uncomment&nbsp;this&nbsp;to&nbsp;enable&nbsp;any&nbsp;form&nbsp;of&nbsp;FTP&nbsp;write&nbsp;command.<br />
write_enable</span><span style="color: #000000">=</span><span style="color: #000000">NO</span></div>
我把这行注释掉，改成#write_enable=NO后，还是无法上传文件<br />
在网上找到一些办法，甚至把匿名设置给打开了<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">anon_upload_enable</span><span style="color: #000000">=</span><span style="color: #000000">YES<br />
anon_mkdir_write_enable</span><span style="color: #000000">=</span><span style="color: #000000">YES<br />
anon_other_write_enable</span><span style="color: #000000">=</span><span style="color: #000000">YES</span></div>
结果还是不行，后来我比较了以前配置的文件，发现以前的版本里写的是write_enable=YES，于是我把这行加上，居然可以了，配置如下<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">#&nbsp;################<br />
#&nbsp;General&nbsp;Settings<br />
#&nbsp;################<br />
#<br />
#&nbsp;Uncomment&nbsp;this&nbsp;to&nbsp;enable&nbsp;any&nbsp;form&nbsp;of&nbsp;FTP&nbsp;write&nbsp;command.<br />
#write_enable</span><span style="color: #000000">=</span><span style="color: #000000">NO<br />
write_enable</span><span style="color: #000000">=</span><span style="color: #000000">YES<br />
</span></div>
没搞懂新版本为什么这么改了，我以为把NO给注释掉就可以上传了呢，看来还得手动加上一个允许上传的设置，折腾了大半天，竟然是这个问题，快疯掉了。总算搞定了，先记在这里，怕后面又忘记了。如果能供大家参考一下，这也是一件很有意义的事情
   <img src ="http://www.blogjava.net/zhouf/aggbug/340148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2010-12-09 15:50 <a href="http://www.blogjava.net/zhouf/articles/340148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搞定SUSE下安装Mplayer</title><link>http://www.blogjava.net/zhouf/articles/289089.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 30 Jul 2009 05:05:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/289089.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/289089.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/289089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/289089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/289089.html</trackback:ping><description><![CDATA[折腾了很久，终于还是安装上了MPlayer，试过通过源代码编译，用yast安装，用yum安装，都没有成功，最后还是用zypper装好的，下面把重要的步骤记录下来就是了，那些曲折的路线就不用写了<br />
<br />
安装Mplayer需要另外有packman的源.安装源可以在<a href="http://en.opensuse.org/Additional_YaST_Package_Repositories" target="_blank"> http://en.opensuse.org/Additional_YaST_Package_Repositories</a> 找到<br />
添加安装源在线安装方为妙策.<br />
#zypper ar  URL Packman<br />
#zypper install mplayer<br />
以上URL为Packman的源<br />
<br />
现在还是觉得zypper是个好东东<br />
<br />
安装好之后，播放avi没有问题，可让界面全屏时，窗口倒是全屏了，可播放的画面还是原始大小，修改~/.mplayer/config为以下状态<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">zoom</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">yes</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br />
sub-fuzziness</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />
subcp</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">cp936<br />
</span></div>
第一行为解决缩放全屏的问题<br />
第二行为解决自动加载字幕的问题<br />
第三行为中文字幕指定一个字符集<br />
这样设置后,播放有中文字幕的视频就没有问题了<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/289089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-07-30 13:05 <a href="http://www.blogjava.net/zhouf/articles/289089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux下安装配置svn独立服务器</title><link>http://www.blogjava.net/zhouf/articles/251476.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Thu, 15 Jan 2009 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/251476.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/251476.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/251476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/251476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/251476.html</trackback:ping><description><![CDATA[subversion(以下简称svn)是近年来崛起的版本管理工具，是cvs的接班人。<br />
svn服务器有2种运行方式：独立服务器和借助apache。2种方式各有利弊。<br />
svn存储版本数据也有2种方式：BDB和FSFS。因为BDB方式在服务器中断时，有可能锁住数据，所以还是FSFS方式更安全一点。<br />
1. svn服务器安装操作系统: Redhat Linux <br />
<br />
AS4安装包获取:下载http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz和<br />
<br />
http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz。编译:<br />
以root用户登录。<br />
将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器。<br />
tar xfvz subversion-1.4.0.tar.gz<br />
tar xfvz subversion-deps-1.4.0.tar.gz<br />
cd subversion-1.4.0<br />
./configure --prefix=/opt/svn --without-berkeley-db --with-zlib<br />
(注：以svnserve方式运行，不加apache编译参数。以fsfs格式存储版本库，不编译berkeley-db)<br />
make clean<br />
make<br />
make install<br />
vi /etc/profile,在/etc/profile最后加入:<br />
PATH=$PATH:/opt/svn/bin<br />
export PATH<br />
测试:<br />
svnserve --version<br />
如果显示如下，安装成功:<br />
svnserve, version 1.4.0 (r21228)<br />
compiled Oct 12 2006, 10:18:56Copyright (C) 2000-2006 CollabNet.<br />
Subversion is open source software, see http://subversion.tigris.org/<br />
This product includes software developed by CollabNet (http://www.Collab.Net/).The following repository back-end (FS) modules are available:* fs_fs : Module for working with a plain file (FSFS) repository.<br />
2. svn配置<br />
建立版本库目录，可建多个：<br />
mkdir -p /opt/svndata/repos1<br />
mkdir -p /opt/svndata/repos2<br />
建立版本库:<br />
svnadmin create /opt/svndata/repos1<br />
svnadmin create /opt/svndata/repos2<br />
修改版本库配置文件:<br />
版本库1：<br />
vi /opt/svndata/repos1/conf/svnserve.conf<br />
内容修改为:<br />
[general]<br />
anon-access = none<br />
auth-access = write<br />
password-db = /opt/svn/conf/pwd.conf<br />
authz-db = /opt/svn/conf/authz.conf<br />
realm = repos1<br />
版本库2:<br />
vi /opt/svndata/repos2/conf/svnserve.conf内容修改为:<br />
[general]<br />
anon-access = none<br />
auth-access = write<br />
password-db = /opt/svn/conf/pwd.conf<br />
authz-db = /opt/svn/conf/authz.conf<br />
realm = repos2<br />
即除realm = repos2外，其他与版本库1配置文件完全相同。如果有更多的版本库，<br />
<br />
依此类推。配置允许访问的用户:<br />
vi /opt/svn/conf/pwd.conf<br />
为了简化配置，2个版本库共用1个用户配置文件。如有必要，也可以分开。注意：对用户配置文件的修改立即生效，不必重启svn。文件格式如下：<br />
[users]<br />
&lt;用户1&gt; = &lt;密码1&gt;<br />
&lt;用户2&gt; = &lt;密码2&gt;<br />
其中，[users]是必须的。下面列出要访问svn的用户，每个用户一行。示例：<br />
[users]<br />
alan = password<br />
king = hello<br />
配置用户访问权限:<br />
vi /opt/svn/conf/authz.conf<br />
为了简化配置，3个版本库共用1个权限配置文<br />
<br />
件/opt/svn/conf/pwd.conf。如有必要，也可以分开。文件中定义用户组和版本库目录权限。注意：<br />
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。<br />
* 对权限配置文件的修改立即生效，不必重启svn。用户组格式：<br />
[groups]<br />
&lt;用户组名&gt; = &lt;用户1&gt;,&lt;用户2&gt;<br />
其中，1个用户组可以包含1个或多个用户，用户间以逗号分隔。版本库目录格式：<br />
[&lt;版本库&gt;:/项目/目录]<br />
@&lt;用户组名&gt; = &lt;权限&gt;<br />
&lt;用户名&gt; = &lt;权限&gt;　　其中，方框号内部分可以有多种写法:<br />
/,表示根目录及以下。根目录是svnserve启动时指定的，我们指定为/opt/svndata。这样，/就是表示对全部版本库设置权限。<br />
repos1:/,表示对版本库1设置权限<br />
repos2:/occi, ,表示对版本库2中的occi项目设置权限<br />
repos2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限　　权限主体可以是用户组、用户或*，用户组在前面加@，*表示全部用户。权限可以是w、r、wr和空，空表示没有任何权限。示例：<br />
[groups]<br />
admin = alan[/]<br />
@admin = rw[repos1:/occi/aaa]<br />
king = rw[repos2:/pass]<br />
king =<br />
删除无用文件:<br />
rm /opt/svndata/repos1/conf/authz<br />
rm /opt/svndata/repos1/conf/passwd<br />
rm /opt/svndata/repos2/conf/authz<br />
rm /opt/svndata/repos2/conf/passwd<br />
3. 启动svn<br />
建立启动svn的用户:<br />
useradd svn<br />
passwd svn<br />
根据提示为用户svn设置密码允许用户svn访问版本库:<br />
chown &#8211;R svn:svn /opt/svndata<br />
chown &#8211;R svn:svn /opt/data启动svn：<br />
su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"<br />
其中：<br />
su &#8211; svn表示以用户svn的身份启动svn<br />
-d表示以daemon方式（后台运行）运行<br />
--listen-port 9999表示使用9999端口，可以换成你需要的端口。但注意，使用1024以下的端口需要root<br />
<br />
权限<br />
-r /opt/svndata指定根目录是/opt/svndata检查:<br />
ps &#8211;ef|grep svnserve如果显示如下，即为启动成功：<br />
svn　　　 6941　　 1　0 15:07 ?　　　　00:00:00 svnserve -d --listen-port 9999 -r <br />
<br />
/opt/svndata参考资料：<br />
http://www.gbunix.com/htmldata/2006_07/15/27/article_1337_1.html<br />
http://www.iusesvn.com/bbs/thread-157-1-1.html<br />
http://16hot.blog.isyi.com/post/1/552<br />
检测服务是否开启：netstat -ntlp如果看到3690的端口正常开放了，证明SVN启动了。]<br />
下面是机器上的端口显示:<br />
Active Internet connections (only servers)<br />
Proto Recv-Q Send-Q Local Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreign Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
PID/Program name<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0.0.0.0:32769&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
2611/rpc.statd<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0.0.0.0:111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
2591/portmap<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0.0.0.0:113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
2827/xinetd<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 127.0.0.1:631&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
4860/cupsd<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 127.0.0.1:25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
2846/sendmail: acce<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 :::3690&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
5513/svnserve<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 :::22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
2812/sshd<br />
下面这个就是了:<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 :::3690&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
5513/svnserve<br />
好了,svn已经架起来了<br />
<br />
<hr size="2" width="100%" />
<br />
在 Linux/Apache 2.2 上配置SVN服务器<br />
<br />
准备，下载所需要文件.<br />
检查已安装的 Apache2 是否已经安装了 mod_dav .<br />
编译SVN，遇到的问题和解决方法<br />
使用 默认文件系统(fsfs) 保存数据<br />
使用 Berkeley DB 保存数据<br />
配置Apache和SVN，测试.<br />
其它小结<br />
从Windows平台上数据转移<br />
配置文件,使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息.<br />
基于路径的权限控制常用SVN命令<br />
相关资源* 准备，下载所需要文件.<br />
本文测试环境：ubuntu 6.06 LTS (kernel 2.6.15-25-k7，gcc-4.0.3) /ubuntu server (2.6.15-26-<br />
<br />
server,gcc-4.0.4)<br />
Subversion 1.3.2Apache 2.2.2最新的版本 Subversion 可以在这里找到 ：<br />
<br />
http://subversion.tigris.org/project_packages.html* 检查已安装的 Apache2 是否已经安装了 <br />
<br />
mod_dav .<br />
如果已经成功安装了Apache，使用 httpd -M 来查看有没有安装 dav_module，如果没有的话 必须附加 <br />
<br />
&#8216;&#8211;enable-dav&#8217; &#8216;&#8211;enable-dav-fs&#8217; 两个参数重新编译 Apache，否则即使编译通过了svn,apache也<br />
<br />
会启动不起来.如何编译 Apache 请参考我另外一篇文章.* 编译SVN，遇到的问题和解决方法.<br />
使用默认的文件系统保存数据.<br />
最终完整通过安装和测试的编译参数为：./configure --with-apxs=/usr/local/apache2/bin/apxs \<br />
--with-apr=/home/src/server/httpd-2.2.2/srclib/apr \<br />
--with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-utilmake<br />
make install其中 /home/src/server/ 为 httpd-2.2.2 源代码所在文件夹，根据实际情况调整一下.◆ <br />
<br />
遇到问题：1) --with-apr 和 --with-apr-util 如果没有加上的话，即使编译成功了也会出现Can't set position pointer in file &#8216;/home/svn/repos/db/revs/0&#8242;: Invalid argument<br />
这样的错误提示.2) 暂时不能使用 Berkeley DB [* 已解决]svn保存文件更新数据库的方法有两个，一种是直接使用 fs (filesystem)来保存,另一种是通过Oracle提供支持的开源数据库 Berkeley DB 进行保存。但是如果加上 &#8211;with-berkeley-db=/usr/local/BerkeleyDB.4.4 就会configure时就会报错.configure: error: APR-UTIL was installed independently, it won&#8217;t be possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4我想 apr-unit 暂时不支持吧，我们就用默认的fs好了.3) 在make 的时候可能会遇到缺少 srclib/apr/libapr-1.la，srclib/apr-util/libaprutil-1.la 两个文件，找不到而make error.解决办法：/usr/local/apache2/lib/ 中找到，将其复制到源代码文件夹相应的位置中.Update!!使用 BerkeleyDB 保存数据.<br />
1) 安装 BerkeleyDBcd /usr/local/src<br />
wget http://downloads.sleepycat.com/db-4.3.29.tar.gztar xzvf db-4.3.29.tar.gz<br />
cd /usr/local/src/db-4.3.29/build_unix<br />
../dist/configure --enable-compat185<br />
make<br />
make install2) 更新apr和apr-util源代码# 清理编译后的.la文件<br />
cd /usr/local/src/httpd-2.2.3make cleancd /usr/local/src/subversion-1.3.2<br />
rm -rf apr<br />
rm -rf apr-util<br />
cp -rf /usr/local/src/httpd-2.2.3/srclib/apr ./<br />
cp -rf /usr/local/src/httpd-2.2.3/srclib/apr-util/ ./3) 编译安装./configure --with-<br />
<br />
apxs=/usr/local/apache2/bin/apxs \<br />
--with-berkeley-db=/usr/local/BerkeleyDB.4.3 \<br />
--with-ssl<br />
make<br />
make install<br />
◆ 遇到问题：<br />
1) BerkeleyDB 版本不能大于 4.3.否则同样会出现以下错误.configure: error: APR-UTIL was <br />
<br />
installed independently, it won&#8217;t be<br />
possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4<br />
主要是apr-util 暂时不支持4.4的版本.2) 必须更新apr，apr-util 源代码.<br />
subversion-1.3.2 自带的 apr-util 的版本是0.9.6的,必须升级为 1.2.7 虽然能编译过去。但在 svn <br />
<br />
checkout 的时候会提示svn: REPORT request failed on &#8216;/!svn/vcc/default&#8217;<br />
svn: REPORT of &#8216;/!svn/vcc/default&#8217;: Could not read status line: connection was closed by <br />
<br />
server.<br />
这个问题困扰了我很长时间，Google和官方论坛都无结果。后来昨天竟然自己无意中解决了，感动的得哭了:)* 配置Apache和SVN，测试<br />
成功编译svn后会在 httpd.conf 中自动加上LoadModule dav_svn_module modules/mod_dav_svn.so<br />
LoadModule authz_svn_module modules/mod_authz_svn.so<br />
两个模块，没有的话，自行加上或检测是否真的编译成功.假设我们现在要将一个名为 Lair 的项目导入<br />
<br />
到 SVN中1). Apache的配置在 conf/httpd.conf 或 conf/extra/httpd-vhosts.conf 中加入<br />
&lt;Location /svn/Lair&gt;DAV svn<br />
SVNPath /home/svn/Lair<br />
&lt;/Location&gt;<br />
可以参考以下apache的配置，实现数据加密传输，用户身份验证.Listen 443AddType <br />
<br />
application/x-x509-ca-cert .crt<br />
AddType application/x-pkcs7-crl .crl.SSLPassPhraseDialog exec:/etc/sendsslpwd<br />
SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000)<br />
SSLSessionCacheTimeout 300<br />
SSLMutex file:/usr/local/apache2/logs/ssl_mutex&lt;VirtualHost _default_:443&gt;<br />
DocumentRoot /var/SVNRoot<br />
ServerName svn.yousite.com:443<br />
ServerAdmin webmaster@yousite.com<br />
&lt;Location /&gt;DAV svn<br />
SVNPath /var/SVNRoot<br />
AuthzSVNAccessFile /etc/svnserve.conf<br />
Satisfy Any<br />
AuthType Basic<br />
AuthName &#8220;yousite SVN Repository&#8221;<br />
AuthUserFile /etc/httpd-passwords.txt<br />
Require valid-user&lt;/Location&gt;<br />
SSLEngine on<br />
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<br />
SSLCertificateFile /etc/ssl/server.crt<br />
SSLCertificateKeyFile /etc/ssl/server.key&lt;/VirtualHost&gt;更详细的配置说明文档 <br />
<br />
http://svnbook.red-bean.com/nightly/en/svn.ref.mod_dav_svn.conf.html2). 配置，并且测试SVN，创建一个新用户,用了保存仓库.<br />
useradd -m svn<br />
创建一个新模块su daemon (apache是以daemon用户运行的,所以要切换身份，否则可能会报目录访问权限错误)<br />
svnadmin create --fs-type fsfs /home/svn/Lair<br />
导入原来的项目svn import /var/www/Lair http://localhost/svn/Lair -m &#8216;Initial import&#8217;重新建<br />
<br />
立工作目录rm -rf /var/www/Lair (注意备份!!)<br />
svn checkout http://localhost/svn/Lair<br />
测试打开 http://localhost/svn/Lair如能看到一个你项目录列表，说明您成功了。<br />
* 其它小结<br />
数据转移:从 Windows 平台 SVN 服务器转移<br />
如果windows svn储存的格式也是dbd的话，直接将SVN的文件夹copy过来即可.然后<br />
执行 svnadmin recover /var/SVNRoot 检查一下数据库是否损坏.最后注意权限,确保 db 目录下的所有<br />
<br />
文件可写。chmod 755 db<br />
chmod 666 db/*<br />
否则checkout时出现以下错误，多数是因为文件或者目录权限问题引起的，可以尝试用 chown 或者 <br />
<br />
chmod 命令修改一下权限&lt;m:human-readable errcode=&#8221;160029&#8243;&gt;Could not open the requested SVN <br />
<br />
filesystem<br />
&lt;/m:human-readable&gt;&lt;m:human-readable errcode=&#8221;13&#8243;&gt;<br />
Could not open the requested SVN filesystem<br />
&lt;/m:human-readable&gt;另外一种方法没有测试过，原理大致和mysqldump一样，将svn导出为文本文件，然<br />
<br />
后重新导入，好处是可以避免因为存储格式不同而导致的数据转移困难。# dump data to file <br />
<br />
(assuming a repo @ c:\repo):svnadmin dump c:\repo &gt; c:\repo.txt<br />
# Copy the file over to linux:<br />
mkdir /repo<br />
svnadmin create /repo<br />
svnadmin load /repo &lt; /repo.txt<br />
设置访问控制当 httpd.conf 中 设置 AuthzSVNAccessFile 时，<br />
<br />
可以设置不同用户对不同目录的访问控制.以下是一个例子.[groups]<br />
root = admin.root<br />
web = user1,user2<br />
soft = user3,user4[/]<br />
@root = rw[/www]@web = rw[/soft]<br />
@soft = rw详细的说明文档：http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html<br />
<br />
配置文件，使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息(自动属性).Windows <br />
<br />
: C:\Documents and Settings\%USERNAME%\Application Data\Subversion\config<br />
Linux : ~\.subversion\config[miscellany]enable-auto-props = yes<br />
[auto-props]<br />
*.php=svn:keywords=Id<br />
*.html=svn:keywords=Id&gt;&gt; 关于自动属性的更高级讨论■ 几条常用svn 命令<br />
svn update<br />
svn add &#8220;filename&#8221;<br />
svn commit———————&#8211;<br />
Change Log:2006-08-14 neon库subversion已经自带,不需要在单独安装,添加-with-ssl即可使用svn对ssl支持.<br />
2006-08-10 补充自动属性的说明.<br />
2006-08-08 加入关于目录访问验证的说明.<br />
2006-08-07 httpd,2.2.3测试依然有效，解决bdb数据库的支持问题，添加从Windows到Linux下的数据转移方案。<br />
2006-07-25 看到到.声仔对 Can&#8217;t set position pointer in file 另一种解决方案,我当时也测试了，好像没有成功。不想用apache源代码编译的朋友可以也测试一下<br />
&nbsp;<br />
<br />
<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/251476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2009-01-15 17:44 <a href="http://www.blogjava.net/zhouf/articles/251476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在SUSE10.3中使用Samba的一点记录</title><link>http://www.blogjava.net/zhouf/articles/238178.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sun, 02 Nov 2008 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/238178.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/238178.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/238178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/238178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/238178.html</trackback:ping><description><![CDATA[在Control Center中配置好Samba的服务器,在里面可以添加共享的目录和共享名,也可以禁止或允许系统里设置的共享项目<br />
然后建立一个Samba的用户<br />
#useradd suse<br />
为新增的用户suse设置密码<br />
#smbpasswd -a suse<br />
password: ******<br />
<br />
配置好了之后便可以在控制台里启动Samba的服务<br />
#/etc/init.d/smb start<br />
<br />
&nbsp;在Windows计算机上就可以通过刚设置好的用户名和密码访问了<br />
如果要设置允许Windows用户可以上传文件的话,需要设置共享的目录对Samba用户有可写的权限<br />
<img src ="http://www.blogjava.net/zhouf/aggbug/238178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-11-02 14:59 <a href="http://www.blogjava.net/zhouf/articles/238178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)完全用Linux工作---作者:王垠</title><link>http://www.blogjava.net/zhouf/articles/238125.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Sat, 01 Nov 2008 13:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/238125.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/238125.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/238125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/238125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/238125.html</trackback:ping><description><![CDATA[我已经半年没有使用&nbsp;Windows&nbsp;的方式工作了。Linux&nbsp;高效的完成了我所有的工作。&nbsp;<br />
GNU/Linux&nbsp;不是每个人都想用的。如果你只需要处理一般的事务，打游戏，那么你不需要了解下面这些了。&nbsp;<br />
我不是一个狂热的自由软件份子，虽然我很喜欢自由软件。这篇文章也不是用来推行自由软件运动的，虽然我觉得自由软件运动是非常好的。&nbsp;<br />
这篇文章也不是用来比较&nbsp;Linux&nbsp;和&nbsp;Windows&nbsp;内核效率，文件系统，网络服务的。我现在是作为一个用户而不是一个开发者来说话的，我们的讨论是基于操作，应用层面的。是为了告诉大学里还不了解，或者不理解&nbsp;UNIX&nbsp;的科学工作者和大学生，UNIX&nbsp;比&nbsp;Windows&nbsp;更适合用于科学研究工作，请大家理解&nbsp;UNIX&nbsp;的工作方式，不要用&nbsp;Windows&nbsp;的标准来要求&nbsp;Linux，而要用一个科学工作者的标准来要求自己，用UNIX&nbsp;的思想来武装自己。&nbsp;<br />
我显然是反对在大学，特别是理工科专业推广&nbsp;Windows&nbsp;的。我也反对在对"娃娃"们的计算机启蒙教育中使用 &nbsp;Windows。因为&nbsp;Windows&nbsp;不论从技术上，经济上，思想风格上都是与我们培养高科技人才的目标格格不入的。Windows&nbsp;的流行属于历史遗留问题，爷爷一级的人当然已经不可救药，但是我们不应该让下一代继续走上歧途。&nbsp;<br />
UNIX&nbsp;不是计算机专家的专利&nbsp;<br />
当我建议一些非计算机专业的人用&nbsp;Linux&nbsp;的时候，很多人说："UNIX&nbsp;是计算机系的人用的，我们不能理解。"&nbsp;"UNIX&nbsp;是男孩用的，我们女孩不用。"&nbsp;<br />
但是其实世界上的大多数科学家和工程师几乎用的都是&nbsp;UNIX&nbsp;作为他们的电脑工具。就因为它简单，可靠，稳定，强大，有趣。甚至很多时候&nbsp;UNIX&nbsp;就是唯一的选择。&nbsp;<br />
你说："我们都会用&nbsp;UNIX&nbsp;的话，你们计算机专业的人还用来干什么？"&nbsp;很容幸的告诉你，计算机专业的有一部分人就是专门为你们提供这样强大而方便的计算机工具的。如果他们制造的工具只有自己会用的话，那这个工具还有什么用？&nbsp;<br />
理解&nbsp;GNU/Linux&nbsp;不要用&nbsp;Windows&nbsp;的标准来要求&nbsp;Linux。&nbsp;<br />
由于GNU/Linux这个词太长，下面如果没有特别指明，"Linux"就是指GNU/Linux"。&nbsp;<br />
在这个年代，恐怕没有人需要我来介绍&nbsp;Linux&nbsp;是什么了吧？如果你觉得"Linux&nbsp;只不过是跟&nbsp;DOS&nbsp;差不多的东西"，那请问问你旁边的&nbsp;Linux&nbsp;用户，Linux&nbsp;到底是什么？&nbsp;<br />
那为什么我还要写一篇这样的文章？因为，我发现还有很多人不不理解&nbsp;Linux&nbsp;和&nbsp;UNIX，虽然他们也在用它，但是他们有时会问："为什么 &nbsp;Linux&nbsp;不能像&nbsp;Windows&nbsp;那样&nbsp;&#8230;&#8230;？"，"怎么Redhat&nbsp;Linux不能&nbsp;mount&nbsp;NTFS&nbsp;分区！"，"Linux&nbsp;下用什么整理硬盘？"，"什么时候OpenOffice才能完全兼容Word文件啊？"，"现在还有什么Windows能干的事情Linux干不了的？"&#8230;&#8230;&nbsp;<br />
他们有40G的硬盘，却只为&nbsp;Linux&nbsp;分配了2G空间，有时还抱怨"这个东西怎么占这么多硬盘！"&nbsp;似乎&nbsp;Windows&nbsp;该占用大部分硬盘。他们把重要的数据装在Windows的分区，似乎信不过Linux。他们总是到处寻找新奇的，好看的GUI程序，对命令行的东西一概不屑一顾。他们对 Drag&amp;Drop，菜单配置，自动升级非常感兴趣。他们如果找到一个很像&nbsp;Windows&nbsp;程序的&nbsp;Linux&nbsp;程序，一定会很高兴的说："哈哈！Linux&nbsp;也能&#8230;&#8230;了！"如果Linux在某种测试中胜过Windows，他们会高兴得跳起来。他们没有办法用Linux&nbsp;解决问题的时候，甚至用 Wine来运行Windows程序。有时实在没办法，只好重起到Windows，或者干脆省得麻烦，在&nbsp;Windows&nbsp;下装一个&nbsp;VMWare&nbsp;虚拟一个&nbsp;Linux&nbsp;玩。&nbsp;<br />
你如果出现了上面的情况，说明你的思想受到了&nbsp;Windows&nbsp;的某种潜移默化的影响和误导。你没有能够从本质上理解存在于&nbsp;Linux&nbsp;身上的&nbsp;UNIX&nbsp;思想。你支持&nbsp;Linux，你喜欢&nbsp;Linux，你能从中感觉到快乐，这非常好。你现在只需要明白的是：Linux&nbsp; 从来就不是一个玩具，它是天才UNIX的后代。UNIX&nbsp;是自晶体管发明以来最伟大的发明，它从诞生那一天开始就比&nbsp;Windows&nbsp;的设计出色。&nbsp;<br />
你要体会什么叫做"设计"，一个糟糕的设计并不是到后来缝缝补补就可以变好的，而一个出色的设计，不但可以以不变应万变，而且可以影响到后来者。一个出色的设计配上一个出色的实现，那就是非常出色的发明。Linux&nbsp;就是这样的一个出色的发明。Linux&nbsp;并不需要追赶&nbsp;Windows，也不需要打垮微软。它的最终目标是改变整个计算机世界，还人们自由，给人们乐趣和方便。&nbsp;<br />
Unix&nbsp;是简单的，你不需要成为一个天才也能理解这种简单。&nbsp;<br />
UNIX 的设计者&nbsp;Dennis&nbsp;Ritchie&nbsp;说： "Unix&nbsp;is&nbsp;simple.&nbsp;It&nbsp;just&nbsp;takes&nbsp;a&nbsp;genius&nbsp;to&nbsp;understand&nbsp;its&nbsp;simplicity."&nbsp;但是我不这么认为，因为我不是一个天才，但是我却勇敢的把&nbsp;Windows&nbsp;完全删除掉，遇到不明白的事情的时候努力用&nbsp;UNIX&nbsp;的方式去解决，而不是寻求&nbsp;Windows&nbsp;的帮助。现在我体会到了&nbsp;UNIX&nbsp;的思想和好处，我可以用比&nbsp;Windows&nbsp;高效几倍的效率工作。因为我相信这样的信念： "Windows&nbsp;能办到的事&nbsp;Linux&nbsp;一定能办到，而且办的更好。"&nbsp;<br />
这小节开头的话应该改成："Unix&nbsp;是简单的，你不需要成为一个天才或是计算机专家。但是在这个冲斥着&nbsp;Windows&nbsp;错误观念的世界，你需要信念和勇气才能理解它的简单。"&nbsp;我下面就告诉你一些我理解到的东西。首先，你要知道的是微软在国际科学领域是根本没有地位的。&nbsp;<br />
微软的地位&nbsp;<br />
微软的名声在欧洲和美国的大学里，特别是在计算机系里之坏，大家可能有所耳闻。我认识的&nbsp;MIT，Stanford&nbsp;的教授，贝尔实验室的专家，甚至一个欧洲小国的高中计算机老师都绝口不提微软的名字。在他们眼里，微软只是一个没有真技术，专靠在落后国家商业宣传和垄断经营的小公司。这个"小"并不是说它人少，钱少，而是说它先进技术少。&nbsp;<br />
我上次和王益合作写了一个算法演示程序，那个算法是贝尔实验室一位科学家Steven&nbsp;Fortune很天才的发明，为了程序能够被身边大多数人使用，我们选择了&nbsp;VC+ MFC&nbsp;作为平台。我在分析算法时还得到&nbsp;Fortune&nbsp;很热情的鼓励，寄给我一份资料，还多次回信耐心的给我讲解了很多细节。但是程序完成之后，我把样品发给&nbsp;Fortune，他回信说："对不起。我机器上没有&nbsp;MFC。"&nbsp;话说的很客气，但是我已经感觉到了他对&nbsp;Windows的不屑。然后我把 &nbsp;MFC&nbsp;静态编译进程序再发给他，他就没有再回信了。他显然不是瞧不起我，而是确实有难处。&nbsp;<br />
你能感觉到这位科学家对微软和&nbsp;Windows&nbsp; 是什么态度了吧？不是反感，而是他心里根本没有&nbsp;Windows&nbsp;这个东西！微软在高科技领域没有发展，那么它怎么生存呢？到发展中国家去发展一下，他们的人民还对电脑一无所知，我说不定甚至可以打入大学的计算机系呢。我送他们软件，我捐钱盖大楼，我出钱找图灵奖获得者来演讲，让他们觉得我们都是科学家！ &nbsp;<br />
好了，现在全国的大学包括清华，几乎所有人机器必装盗版&nbsp;Win2000，Office&nbsp;XP，学校的选课系统是非IE不能正确浏览，论文用 &nbsp;Word&nbsp;编辑，演示用ppt做，email&nbsp;的通知附件是&nbsp;doc&nbsp;文件，你不用&nbsp;Word&nbsp;打不开，连&nbsp;863&nbsp;项目都用&nbsp;VC&nbsp;写程序了。我很久以前就看到一份报纸说，"微软为什么不严厉打击盗版？"&nbsp;这篇文章说，微软非但不打击中国的盗版行为，而且有放任之趋势。放长线吊大鱼，"以后我要你们加倍的来还我！"&nbsp;确实如此，它的目的快实现了。&nbsp;<br />
Windows&nbsp;笼罩下的中国计算机教育&nbsp;<br />
说句丢脸的话，比尔盖茨很久以前是我的偶像&#8230;&#8230;&nbsp;//blush&nbsp;<br />
在中国，比尔盖茨被很多人奉为神圣，"少年电脑天才"，甚至有的人提到他的名字就做出"抱拳对天"的姿势。很多人谈到微软的"新技术"，"高科技"&nbsp;都是眉飞色舞。各种"VC编程圣经"，"深入了解&nbsp;Visual&nbsp;C++"之类的书，在开头几页都会出现非常肉麻的字眼，"在那团团的混沌中，一个开天辟地的精灵，Windows&nbsp;1.0，诞生了&#8230;&#8230;"&nbsp;<br />
微软的软件被这么多人盗用，那么人们是怎样使用这些盗版程序的呢？先看看电脑培训班，教的都是一些 &nbsp;DOS&nbsp;命令，打字，Windows&nbsp;基本操作，Word&nbsp;文档处理，PowerPoint，高级班可能有&nbsp;Excel，Access&#8230;&#8230;&nbsp;参加各种微软认证考试，MCSE，MSDE&nbsp;的人络绎不绝。考试辅导班都贴出了"280元，考过为止"之类的字样。考试参考资料更是昂贵，有些电脑书店整整两书架都是"Microsoft&nbsp;Press"的东西。我有个同学参加认证考试，每门考试都要200多元。而且你一次考不过可以再考，又要交钱。他后来还津津乐道跟我说，看我，花了XXXX(一个四位数)元考过了微软认证，得到一张比尔盖茨亲笔签名的证书和价值6000元的&nbsp;Windows&nbsp;XP&nbsp;内部发行版。&nbsp;<br />
" 电脑要从娃娃抓起"，我们再来看看娃娃们学的是什么。大部分家长给孩子买了电脑之后，他们首先就会装一个盗版的&nbsp;Windows，然后买来盗版的游戏开始玩。如果哪个孩子会用&nbsp;Delphi&nbsp;编程序，那可不得了。报社记者，电视台争相报导，说，某某学校的初中生某某，在别人都还在玩电脑游戏这种"初级阶段 "的时候就已经用&nbsp;Delphi&nbsp;写程序了。镜头还瞄准了他显示器上面的像框中的比尔盖茨头像！&nbsp;<br />
我刚进入大学计算机系时还不懂得什么是操作系统，因为我以前只用过"中华学习机"。看到新入学的同学们各个谈论的都是&nbsp;"Windows&nbsp;95"，"VC"&#8230;&#8230;&nbsp;我简直觉得我落后了好几十年一样，整个一土人，根本跟他们答不上话。好不容易找到一个比较熟的同学问了一下："你们天天谈论的瘟95是什么啊？"答："win95就是一个操作系统，跟DOS 是一类。""朵死是什么？"&nbsp;"你连DOS都不知道是什么？别在计算机系混了。"&nbsp;学校上课当然不讲VC编程之类的东西，但是上&nbsp;Pascal&nbsp;的老师有一次就说："嗨，我们学校真是落后。现在别人都用&nbsp;C,&nbsp;C++，甚至&nbsp;VC&nbsp;了，我们还在讲&nbsp;Pascal。不知道什么时候才能有VC课啊。你们出去也是要用VC的，只好自学了。"&nbsp;于是，有些同学很多时候上课都捧着一本很重的"Windows&nbsp;编程大全"之类的书，根本没有听课。吃饭时就念念有词的跟我说，"代码的优化是无止境的"，"匈牙利命名法真是伟大的发明"&nbsp;&#8230;&#8230;&nbsp;这就是中国很多大学计算机系的情况。&nbsp;<br />
感觉到无知了？这不是偶然的，而是微软长久以来埋下的伏笔。它要让无知的大家都把它奉为神圣，它要让支持UNIX，Xwindow的人一旦说&nbsp;UNIX&nbsp;好，Xwindow&nbsp;好的时候，都被一群人围着说教："这个&nbsp;Windows&nbsp;也能做到"，"你对&nbsp;Windows&nbsp;有偏见"，"微软才是主流啊"，"你敢瞧不起&nbsp;win2k？"， ".NET&nbsp;就是世界潮流"，"微软的毕竟是新技术"，"有钱就是有技术"&#8230;&#8230;&nbsp;甚至在一番论战比较后败下来还是要说："Windows&nbsp;性能差点，但是易用性强"，"Windows&nbsp;是老百姓用的，要求别那么?quot;，"微软那么有钱，以后想超过&nbsp;UNIX&nbsp;还不容易吗？"&#8230;&#8230;&nbsp;<br />
发达国家的计算机教育&nbsp;<br />
我前段时间在&nbsp;USENET&nbsp;发文问有关&nbsp;Scheme&nbsp;语言的问题时，认识了一位丹麦人。他解决了我所有的问题，并且建议我阅读一些很"深奥"的有关程序语言语法，文法的书，他告诉我很多网站可以学习&nbsp;LISP，Scheme，人工智能，算法。他叫我看&nbsp;Jonathan&nbsp;Rees&nbsp;的论文 &nbsp;"Syntactic&nbsp;Closures"。他还打包给我寄过来一份&nbsp;MIT&nbsp;的&nbsp;"How&nbsp;to&nbsp;Design&nbsp;Programs"。他说他在自己的 &nbsp;PC&nbsp;机上装的是&nbsp;Linux，他用&nbsp;Emacs&nbsp;编辑，运行Scheme&nbsp;程序。他对&nbsp;Emacs&nbsp;的了解和爱好真是使人惊讶。他大学本科毕业时做的毕业设计是一个&nbsp;Scheme&nbsp;解释器。这对于我来说是望尘末及了。&nbsp;<br />
他是那么的不厌其烦，我的每一个问题他都详细的回答。我有时都觉得过于详细了，怎么这么耐心啊？我觉得他似乎是我的高中老师。他是什么样的人呢？我好奇的打听了他的情况。原来，他是丹麦一所普通高中的计算机老师。&nbsp;<br />
他说他在高中里讲授程序设计和算法，计算机语言文法。他说用&nbsp;Scheme，他的学生不用再为内存泄漏等程序语言本身的问题而烦恼，而专注于问题和算法本身。有利于培养学生解决问题的能力，特别是用计算机解决数学问题的能力。&nbsp;<br />
天哪！为什么欧洲出现那么多数学家，几何学家？你看看别人重视的是什么！我们的计算机教育如果继续这样下去，只会沿着弯路越走越远！&nbsp;<br />
微软和它的朋友们的如意算盘&nbsp;<br />
下面来看看微软的收入是怎么来的。首先，Windows&nbsp;98系列操作系统，一个就是&nbsp;100多美元，每次升级又是几乎同样的价钱。Windows&nbsp;NT&nbsp;还要贵几倍，而且有用户数目限制，5个用户的，10个用户的&#8230;&#8230;&nbsp;以后如果要增加用户数目还要按比例付钱。&nbsp;<br />
花了如此多钱买来的操作系统就能用了吗？它竟然连压缩程序都没有提供！你装上Windows&nbsp;之后一般第一件事就是去下载一个&nbsp;WinZip&nbsp;吧，"只要 &nbsp;29&nbsp;美元"。Windows会中病毒啊，马上花&nbsp;70&nbsp;美元买一个&nbsp;Norton&nbsp;AntiVirus&nbsp;吧。还有黑客呢？再买一个 Norton&nbsp;Internet&nbsp;Security&nbsp;好了，100&nbsp;美元。系统需要优化，磁盘需要整理，买一个Norton&nbsp;System&nbsp;Works&nbsp; 是你最佳的解决方案，100美元。&nbsp;<br />
可是你现在还是不能干正事啊！你想要一个&nbsp;Word,&nbsp;PowerPoint？那就买一套&nbsp;Office&nbsp;XP&nbsp;吧，一起买便宜些，$459.90。&nbsp;<br />
那些程序不会用啊！那些菜单怎么设置，到底有什么功能啊？看"帮助"也学不会。买本书看看吧，我推荐 "Special&nbsp;Edition&nbsp;Using&nbsp;Microsoft&nbsp;Office&nbsp;XP"，不贵，$27.99。这本书里面大部分是屏幕抓图，还是买一本旧的比较划算，$17.85。&nbsp;<br />
你如果只是当个秘书，上面的差不多还凑合了。可是你有更高的追求，你想成为&nbsp;Windows程序员。首先买一个&nbsp;Visual&nbsp;Studio.NET&nbsp;吧，要不然怎么编译程序。$494.95。&nbsp;<br />
为了紧跟微软动向，世界潮流，不能不注册个&nbsp;MSDN&nbsp;什么的吧？这个贵一点，不过物有所值啊，$2,799。&nbsp;<br />
嗯，你现在已经是上层阶级，白领人士了。你现在可以像这样"自由"的，"安全"的生活了。&nbsp;<br />
为什么要反对使用&nbsp;Windows&nbsp;<br />
很多人都说不应该完全否定&nbsp;Window，Windows&nbsp;也有它的长处。不应该骂微软。&nbsp;<br />
对。 Windows&nbsp;容易操作，适合普通用户。如果微软把它自己定位在&nbsp;P&amp;G，Philips&nbsp;那样的地位，能够给我们的百姓提供周到的，完善的，价廉物美的服务。那我肯定是很喜欢它的。但是从上面的种种情况说明，微软是一个野心极大的国际垄断组织！它的产品没有一个是不出问题的：Windows&nbsp; 不稳定，容易中病毒，而微软不为大家免费提供杀毒软件。我就是要让你们花钱买我的朋友&nbsp;Symantec&nbsp;的杀毒软件，谁叫你们已经上了我的贼船？这叫什么售后服务啊！&nbsp;<br />
你买来微软的程序，安装的时候一般都有一个协议，说："由于微软的程序造成你的数据损坏或丢失，微软概不负责。"&nbsp;我想很多人肯定觉得这个不合理，不想按那个&nbsp;"I&nbsp;accept"。但是你的软件买都买来了，钱都花了，现在一按&nbsp;"I&nbsp;decline"，安装程序马上就会退出。你只好被迫点击了&nbsp;"I&nbsp;accept"！这不是不平等条约吗？&nbsp;<br />
我已经目睹了好几个朋友的文档被&nbsp;Microsoft&nbsp;Word&nbsp;损坏，有的是编辑了十多天的30多页的论文，有的是费了很大工夫做出来的个人简历，那个朋友为此失去了到自己向往的P&amp;G&nbsp;工作的机会。就在他要投简历的前一个晚上，就在那一瞬间&#8230;&#8230;&nbsp;不知道他痛哭的时候有没有想起要投诉微软，可是谁叫我们用的都是盗版呢，况且你还点击了&nbsp;"I&nbsp;accept"。&nbsp;<br />
微软仗势已经占有大部分PC市场，制定不符合国际标准的"微软的标准"，以不合理的方式压制其它公司的软件，这个问题已经在美国司法部闹了很久了。他甚至在 &nbsp;Windows系列操作系统中放置能够通过网络泄漏用户信息的代码，以至于&nbsp;Windows&nbsp;刚进入澳大利亚时被澳大利亚政府禁止使用。&nbsp;<br />
有些人说："微软毕竟开创了一个历史，造就了今天的&nbsp;IT&nbsp;行业。"&nbsp;但是，如果没有微软，我们今天早就用上非常稳定，非常可靠，非常方便，非常"傻瓜"的软件了！微软是阻挡信息技术发展的罪魁祸首。&nbsp;<br />
微软的程序的工作方式(注意，我只是说操作方式，病毒的事情另外算)确实适合于一般家庭，上上网，发发邮件，打打游戏都不错。可是微软却要把自己包装成什么 "高科技"企业，要在世界各地设置"研究院"，在大学计算机系赠送不适合用于科研的&nbsp;Windows产品，甚至出钱请图灵奖得主来中国畅谈"二十一世纪的计算"，还在大会上宣传自己的&nbsp;.NET&nbsp;技术。非要把别人认为自己是科学的，自己是领导世界高科技的。但是呢？它什么高科技也没有。欧洲，美国，哪一个关键部门在用微软的东西？NASA?&nbsp;DOE?&nbsp;CERN?你仔细想一想，微软的程序对人类到底有什么重大作用？&nbsp;<br />
什么是&nbsp;Windows&nbsp;能干而&nbsp;Linux&nbsp;干不了的事情？---&nbsp;<br />
"Windows&nbsp;能干而&nbsp;Linux&nbsp;干不了的事情，那就是不需要干的事情。"&nbsp;<br />
有个朋友看我半年没有用&nbsp;Windows，有时就会问我："你只用&nbsp;Linux，有没有发现有些Windows&nbsp;能处理的事情&nbsp;Linux&nbsp;干不了？"---&nbsp;<br />
我回答说："Windows&nbsp;能干而&nbsp;Linux&nbsp;干不了的事情，那就是不需要干的事情。"&nbsp;<br />
Windows&nbsp;能做的有益的事情&nbsp;Linux&nbsp;都能做---&nbsp;<br />
Windows&nbsp; 下的某些功能确实是我们需要的，那么&nbsp;Linux&nbsp;的开发者们和用户也需要这种功能，他们就会去实现这种功能，而且比&nbsp;Windows&nbsp;的方式好得多。由于大多数科学家，工程师用的都是&nbsp;Linux&nbsp;或者某种商业&nbsp;UNIX,&nbsp;所以几乎所有商业的科学工程程序，比如Matlab, &nbsp;Mathematica,&nbsp;AutoCAD,&nbsp;Candence的，Synopsys的，Avant!&nbsp;的&#8230;&#8230;全都是先有UNIX&nbsp;的版本(包括 Linux)，然后再考虑移植给&nbsp;Windows，甚至根本不移植给Windows，因为&nbsp;Windows&nbsp;的机器一般没有足够的能力运行这样的程序。你不要以为只有&nbsp;Windows&nbsp;才有&nbsp;PSpice,&nbsp;UNIX&nbsp;的&nbsp;HSpice&nbsp;要好得多，而且可以运行在大型主机上。当然它们不是免费的，但是它们值那个价钱。&nbsp;<br />
但是&nbsp;Windows&nbsp;下有些东西在&nbsp;Linux&nbsp;下没有很相似的，或者你找到很多类似的，但是它们每一个比起&nbsp;Windows&nbsp;的那个程序都要差很多，那么原因有两种可能性：&nbsp;<br />
有一个完全类似的程序，但是由于它乍一看不漂亮，被你忽略了。而其它程序虽然看起来很漂亮，但是它们是一些初学编程的人写的。现在由于&nbsp;Gtk,&nbsp;Qt&nbsp;的诞生，Linux&nbsp;下开发图形界面程序极其简单，很多初中生甚至小学生都可以随手编出一些漂亮不中用的程序。如果你整天寻找这样的程序挑来挑去，永远也找不到你满意的。当然也有一流的程序用&nbsp;Gtk&nbsp;和&nbsp;Qt，比如&nbsp;GVIM&nbsp;就可以用&nbsp;Gtk&nbsp;作为图形界面，我还知道&nbsp;Synopsys&nbsp;一些程序用了 &nbsp;Qt。&nbsp;<br />
我曾经也犯过这样的错误，从外表区分一切。结果优秀的&nbsp;FVWM,&nbsp;lftp,&nbsp;Mutt,&nbsp;wget&nbsp;都被我忽略过。当我找回它们的时候，我是那么的羞愧不已，它们现在都是我的朋友&nbsp;我第一次看到&nbsp;FVWM&nbsp;觉得它只不过是一个有很厚很难看边框的东西。可是现在，我的同学看到 &nbsp;FVWM&nbsp;都说："哇！真漂亮。"&nbsp;<br />
有另一种完全不同的方式可以达到相同的目的，甚至更好。&nbsp;<br />
很多人很关心&nbsp;Open&nbsp;Office, &nbsp;Star&nbsp;Office,&nbsp;AbiWord,&nbsp;...&nbsp;他们多么盼望有一天某一个Linux&nbsp;程序能够完全兼容的打开一个复杂的&nbsp;doc&nbsp;文档。但是你永远也不可能有那一天。为什么呢？因为微软为了占有市场，必定不会让其它系统的程序能够完全兼容它的文档格式。它一定会不断变化&nbsp;doc&nbsp;文档的内部结构，隐藏一些秘密，让其它公司的程序打开&nbsp;doc&nbsp;文档时总是有某种问题，从而你必需购买&nbsp;Microsoft&nbsp;Office&nbsp;和&nbsp;Windows。&nbsp;<br />
你应该想一下，那么多的高智商的大学教授，科学家，学生，他们用的都是&nbsp;Linux&nbsp;或者其它类型的&nbsp;UNIX，他们没有&nbsp;Word&nbsp;可用，怎么处理文档呢？这么多年没有一个像Open&nbsp;Office&nbsp;的程序出现，难道大家没有办法写文档吗？&nbsp;<br />
显然不是这样。你看看那些高水平的学术杂志，论文，那些大学教授的网页，那些漂亮的幻灯片，它们是什么做的？原来&nbsp;UNIX&nbsp;用户早就有非常方便的 &nbsp;troff,&nbsp;LaTeX,&nbsp;SGML等东西可以处理文档，而且它们比起&nbsp;Word&nbsp;都要高明的多。Word&nbsp;显然被这些大拿忽略了，以至于很久以来没有人想在&nbsp;Linux&nbsp;下开发一个类似&nbsp;Word&nbsp;的程序，除非某些公司想抢微软的饭碗。&nbsp;<br />
很多人留着&nbsp;Windows&nbsp;在硬盘上的原因无非是为了用&nbsp;Word&nbsp;和&nbsp;PowerPoint。我见过一个教授，他的&nbsp;Windows&nbsp;笔记本电脑上除了&nbsp;PowerPoint&nbsp;什么都没有。有一天演示的时候，他指着堆乱字符说："对不起，这是一个公式&#8230;&#8230;怎么每次都是这样&#8230;&#8230;"&nbsp;其实有比PowerPoint&nbsp;好几百倍的东西可以制造幻灯片，你可以用最简单的方法制造世界一流效果的论文和幻灯片。你待会儿可以看看我的TeX网页，你就会知道为什么我可以完全离开&nbsp;Windows。&nbsp;<br />
Windows&nbsp;能做的那些没用的事情&nbsp;Linux&nbsp;永远做不好&nbsp;<br />
电脑游戏&nbsp;<br />
有些人说&nbsp;Linux&nbsp;下不能玩&nbsp;Windows&nbsp;下所能得到的所有游戏。的确，Linux&nbsp;下虽然也有少量的游戏，比如&nbsp;Quake。但是它没有&nbsp;Counter&nbsp;Strike,&nbsp;没有&nbsp;Star&nbsp;Craft,&nbsp;&#8230;&#8230;&nbsp;<br />
并不是说电脑游戏不该玩，但是应该适可而止。电脑是用来处理事务，帮助你学习，解决问题的工具，而不是一个玩具！整天沉迷于电脑游戏中，而不出去感觉外面的世界，你会变得越来越冷酷，越来越缺乏人情味。你与真实的世界越来越远。&nbsp;<br />
你可以在&nbsp;CS&nbsp;里杀人，你可以在&nbsp;Tomb&nbsp;Raider&nbsp;里探险，你甚至可以在&nbsp;Tony&nbsp;Hawk's&nbsp;Pro&nbsp;Skaters&nbsp;里滑板&#8230;&#8230;&nbsp;但是 &nbsp;It's&nbsp;not&nbsp;real！你虽然有很高的"反恐技巧"，但是遇到歹徒的时候，你是那么的怯懦；你虽然控制&nbsp;Laura&nbsp;伸手敏捷，但是你打篮球的时候怎么总是被人断球？你虽然可以轻易的在&nbsp;THPS&nbsp;里作出一个&nbsp;"360&nbsp;kickflip&nbsp;to&nbsp;hangten&nbsp;grind&nbsp;to&nbsp;fakie"，但是你踩在自己的滑板上的时候还不会&nbsp;ollie！&nbsp;<br />
说回来，如果你偶尔玩一下电脑游戏未尝不可。但是世界上有远比&nbsp;Windows&nbsp;+&nbsp;PC&nbsp; 更好的游戏方式。Sony&nbsp;的&nbsp;PlayStation2,&nbsp;SEGA&nbsp;的&nbsp;DreamCast,&nbsp;Nintendo&nbsp;的&nbsp;N64，Namco的街机&#8230;&#8230; 每一个都比&nbsp;Windows&nbsp;游戏精彩，每一个都有如此高的3D性能，以至于Pentium4,&nbsp;Itanium&nbsp;+&nbsp;GForce4&nbsp;都无法与它们比美！&nbsp;<br />
Linux&nbsp;的用户们都是关心解决世界的关键问题的份子，他们哪里有时间用自己的机器来玩游戏啊？他们每天用Linux高效的做完自己的工作就到阳光下享受自然去了。要玩游戏也是玩一些类似推箱子，贪吃蛇之类的智力小游戏。所以，你知道为什么&nbsp;Linux&nbsp;几乎没有游戏了吧？"整理硬盘，优化系统"&nbsp;这是一个非常有意思的话题，仅次于有关"病毒"的话题。相信很多&nbsp;Windows&nbsp;用户都有整理硬盘的经历。在很多&nbsp;Windows&nbsp;用户眼里，"硬盘用久了，会出现碎片，速度会减慢，需要一个程序来整理，整理硬盘的时候不要做其它工作"，这好像是天经地义的事情。&nbsp;<br />
我也曾经津津有味的看着&nbsp;Norton&nbsp;Defrag&nbsp;一点一点的把我的硬盘排序，调整，用图形的方式显示出来，然后报告?quot;100%&nbsp;没有碎片。你的硬盘现在已经达到最佳状态。"&nbsp;我现在才发觉我那时是多么的幼稚。&nbsp;<br />
Linux&nbsp; 和&nbsp;UNIX&nbsp;用户似乎从来没有"整理硬盘"这种说法呢？你觉得很奇怪吗？如果你觉得很奇怪，那说明你的思想在某种程度上被微软的垃圾程序禁锢了。你需要明白，UNIX&nbsp;的大型主机很多必须是一天24小时，一年365又1/4天不停运转的，要是每个星期都要整理一次硬盘，在整理的时候几乎不能干任何事情，那是绝对行不通的！&nbsp;<br />
Linux&nbsp;机器根本不用整理硬盘，这就是为什么没有看到过&nbsp;Linux&nbsp;用户整理硬盘。Linux&nbsp;的文件系统是比 &nbsp;Windows&nbsp;的&nbsp;FAT,&nbsp;FAT32,&nbsp;NTFS&nbsp;高明得多的文件系统，它们不但可以对文件设置权限，实施完全的保护，而且可以"越用越整齐"， "越用碎片越少"！你应该把文件大部分放在&nbsp;Linux&nbsp;的分区，而不是&nbsp;Windows&nbsp;分区，因为它比&nbsp;Windows分区可靠得多。&nbsp;<br />
还有更滑稽的事情就是有很多"Norton&nbsp;System&nbsp;Doctor"，"Windows&nbsp;优化大师"，"超级兔仔注册表魔法"&nbsp;之类的程序存在，而且价格昂贵。似乎一个操作系统本来应该有很多问题，需要别的厂商做程序来"优化"它，而且为了得到优化，你需要付钱！这些问题&nbsp;Linux&nbsp;根本就没有，所以不需要什么优化。Linux&nbsp;内核本身就是高度优化的。&nbsp;<br />
IDE&nbsp;<br />
有些人在抱怨为什么&nbsp;Linux&nbsp;没有一个良好的&nbsp;IDE&nbsp;开发环境。 Linux&nbsp;现在已经有一些IDE&nbsp;了，但是总是有很多问题。你是不是正在寻找，正在期望&nbsp;Linux&nbsp;某一天可以有一个VC那样的开发环境？你有没有发现你正在进入微软给你设下的怪圈？你为什么一定要用&nbsp;IDE？你说："IDE&nbsp;开发迅速，调试方便，适合大型程序&#8230;&#8230;"&nbsp;那说明微软的程序在你脑子里已经比较根深蒂固，你需要好好清醒一下了，看看我来告诉你。&nbsp;<br />
高明的&nbsp;UNIX&nbsp;程序员不用&nbsp;IDE，IDE&nbsp;从来就是给初级&nbsp;Windows&nbsp;程序员用的。&nbsp;<br />
你看看大型的&nbsp;UNIX&nbsp;程序，包括&nbsp;Linux&nbsp;内核，各种网络服务程序，Xwindow&nbsp;程序在内，哪一个是&nbsp;IDE&nbsp;搞出来的？我们实验室的 &nbsp;EDA&nbsp;程序也没有一个是&nbsp;IDE&nbsp;弄的，我还知道Candence,&nbsp;Synopsys，Mentor&nbsp;的高性能的图形界面&nbsp;EDA&nbsp;程序也都不是 &nbsp;IDE&nbsp;写的。你信不信，微软的人在写&nbsp;Windows&nbsp;本身的时候也根本不用&nbsp;IDE。微软内部程序员最喜欢的编辑器其实是&nbsp;VIM，用&nbsp;VIM&nbsp;的微软程序员上次向乌干达的可怜儿童捐助了1000多美元，这是值得称赞的。&nbsp;<br />
有一次某杂志采访一些出名的&nbsp;Linux&nbsp;内核程序员，包括 &nbsp;Linus&nbsp;在内，没有一个人用IDE，有的人用&nbsp;VIM，有的用&nbsp;Emacs，只有&nbsp;Linus&nbsp;说"GNU&nbsp;Emacs&nbsp;is&nbsp;evil"，但是其实他用的是一种跟&nbsp;Emacs&nbsp;有同样键绑定功能的&nbsp;MicroEmacs。大家都是用编辑器编辑了程序文件，然后用&nbsp;make&nbsp;这样的自动工具调用 &nbsp;gcc&nbsp;编译器完成编译工作的。甚至高级的&nbsp;Windows&nbsp;程序员也不用&nbsp;IDE，他们可以从命令行调用&nbsp;cl，nmake&nbsp;来编译自己的程序。虽然这样的&nbsp;Windows&nbsp;程序员很少，但是他们却是最了解&nbsp;Windows，最高明的Windows&nbsp;程序员。&nbsp;<br />
为什么&nbsp;UNIX&nbsp;程序员不用 &nbsp;IDE？明白了这个道理你就能体会到&nbsp;UNIX&nbsp;的设计思想了。首先，一个&nbsp;IDE&nbsp;集成了编辑器，编译器，汇编器，调试器，跟踪器&#8230;&#8230;&nbsp;这个编辑器功能肯定比不上&nbsp;VIM&nbsp;或&nbsp;Emacs，编译器比不上&nbsp;GCC，汇编器比不上&nbsp;as，调试器比不上&nbsp;gdb，ddd,&nbsp;跟踪器比不上&nbsp;strace, &nbsp;ltrace,&nbsp;truss。你得到的是一套整合的低能的程序。如果你对调试器的功能不满意，你只好换用另外一套&nbsp;IDE，但是这套&nbsp;IDE&nbsp;的热键，菜单，编辑器功能，按钮&#8230;&#8230;&nbsp;跟原来那个有很大不同。你不得不花很多时间来熟悉新的环境，而不能保持原来的某些东西。&nbsp;<br />
而在&nbsp;UNIX&nbsp;下就不一样了。你可以用你最喜欢的&nbsp;VIM&nbsp;编辑程序，你在&nbsp;VIM&nbsp;里可以调用GNU&nbsp;make，make&nbsp;可以调用&nbsp;gcc,&nbsp;ld,&nbsp;...&nbsp;make&nbsp;的出错信息可以被&nbsp;VIM&nbsp;捕获，VIM&nbsp;能帮你在源程序里定位。你如果喜欢&nbsp;icc,&nbsp;你可以让&nbsp;make&nbsp;用&nbsp;icc&nbsp;而不是&nbsp;gcc。你如果觉得 &nbsp;gdb&nbsp;跟踪变量时比较麻烦，你可以用&nbsp;ddd&nbsp;来显示各种数据结构之间的关系。你还可以在&nbsp;Emacs&nbsp;里调用&nbsp;gdb，那样就可以同步显示源代码了。而且&nbsp;VIM&nbsp;和&nbsp;Emacs&nbsp;还可以编辑很多其它东西，比如信件，LaTeX&nbsp;文档，HTML，配置文件&#8230;&#8230;&nbsp;你不用另外找一个什么编辑器来干这些杂活了。很多程序比如&nbsp;Mutt,&nbsp;tin&nbsp;都可以在内部使用&nbsp;VIM，这样就更方便了。实际上&nbsp;make&nbsp;在其它方面还能帮你很多忙，我的每一个比较大型的&nbsp;LaTeX文档都是用&nbsp;make&nbsp;维护的。&nbsp;<br />
Linux&nbsp;能干的高精尖的事情&nbsp;Windows&nbsp;都干不了&nbsp;<br />
当然有很多事情是 Linux/UNIX的专利了。因为&nbsp;Windows&nbsp;只能装在&nbsp;PC&nbsp;机上，好像以前也有&nbsp;Alpha&nbsp;可以使用&nbsp;Windows&nbsp;NT，但是就是没见到有人用。PC&nbsp;机的能力是很低的，像我们编程序处理&nbsp;NP-Hard&nbsp;问题的人，用&nbsp;Windows&nbsp;的机器显然速度不够，而且有时一个问题算上几天甚至几个星期，Windows&nbsp;机器是以"死机"著称的，我们怎么能放心？所以几乎所有科学计算程序，EDA&nbsp;程序，高性能图像处理程序都不是 &nbsp;Windows&nbsp;的。他们有时也会移植一些给&nbsp;Windows，但是常常降低那些程序的能力。你比较过&nbsp;Windows&nbsp;版本的 &nbsp;Mathematica&nbsp;和&nbsp;Linux&nbsp;的有什么区别吗？&nbsp;<br />
IBM&nbsp;制造的最大的并行计算机有&nbsp;8000&nbsp;多个处理器，Windows&nbsp;不可能有能力管理这么多处理器，它用的是什么操作系统？答案是&nbsp;Linux。&nbsp;<br />
《泰坦尼克号》电影里的三维动画，那么细腻逼真，Windows机器能做出来吗？不行。那也是&nbsp;Linux&nbsp;机器做的。&nbsp;<br />
民航总局用来训练地情人员的虚拟现实训练设备，Windows&nbsp;当然无能为力。那都是商业的&nbsp;IRIX&nbsp;机器。&nbsp;<br />
UNIX&nbsp; 是最早支持&nbsp;TCP/IP&nbsp;网络协议的系统。它上面有很多可以互相协作的网络服务程序，它们经过多年的使用和修订，已经达到比较完善的程度。而就在 1997年，微软的比尔盖茨还在扬言："Internet&nbsp;是没有前途的。"&nbsp;微软的这个"远见卓识"大家应该都已见识，它后来加上的网络服务程序IIS 漏洞之多，让公安部都频频发出警报，大家也是见识了的。&nbsp;<br />
其实你知道了，Windows&nbsp;没有一样有用的事情能比&nbsp;UNIX&nbsp;干的更好。&nbsp;<br />
Linux&nbsp;干不了的有用的事情&nbsp;Windows&nbsp;照样干不了<br />
当然&nbsp;Linux&nbsp;不是万能的。它也有不能干的事情，电脑也有干不了的事情。但是&nbsp;Linux干不了的事情，Windows&nbsp;肯定也干不了。这些事情就是我们需要探索，需要努力的事情了。在你探索的过程中，Linux&nbsp;必定是你的好伙伴。&nbsp;<br />
不要把Linux和Xwindow掩盖起来！不要把我们的用户当成傻瓜。&nbsp;<br />
什么？你早就知道&nbsp;Windows&nbsp;是垃圾？噢！你怎么不早说呢！害我废话这么多。嘿嘿。&nbsp;<br />
"好了。你知道&nbsp;Windows&nbsp;是垃圾，你现在用什么?quot;&nbsp;<br />
"Linux&nbsp;+&nbsp;Xwindow"&nbsp;<br />
"那我问你，Xwindow&nbsp;是什么样的？"&nbsp;<br />
"不就是跟&nbsp;Windows&nbsp;差不多吗？只不过&nbsp;'Start'&nbsp;按钮比较方，而且上面不是一个Windows&nbsp;标志，而是一个脚丫子。点击一下居然还有很漂亮的中文菜单。我喜欢！"&nbsp;<br />
"你知道什么是'根窗口'吗？"&nbsp;<br />
"不知道。从来没听说过呢？"&nbsp;<br />
"根窗口就是遮盖整个屏幕的那个最大的窗口。"&nbsp;<br />
"哪儿有什么窗口啊！我没有看到呢？"&nbsp;<br />
你发现了问题吗？这些&nbsp;Linux&nbsp;用户说是在用&nbsp;Linux&nbsp;和&nbsp;Xwindow，但是他们对&nbsp;Linux和&nbsp;Xwindow&nbsp;几乎完全不了解。很多人用了那么久&nbsp;Xwindow&nbsp;都不知道根窗口是什么东西，不知道其实按钮也是窗口，不知道窗口管理器和其它程序有什么关系，大家都以为窗口上面的按钮是程序自己放上去的，不知道窗口?quot;class&nbsp;name"，"resource&nbsp;name"是什么东西。他们也不知道&nbsp;.Xdefaults&nbsp;是用来干什么的。特别是他们很多人都不知道&nbsp;Xwindow&nbsp;的字体是如何命名的，什么是&nbsp;fontset，有了一个新的字体也不知道怎么安装。&nbsp;<br />
他们被遮在&nbsp;Linux&nbsp;之上的一层一层的包装迷惑了，他们等待有图形界面的工具来帮助完成一切事情，他们认为&nbsp;Linux&nbsp;跟&nbsp;Windows&nbsp;一样，只是麻烦一点。他们知道&nbsp;Linux内核很好，但是他们感觉不到&nbsp;Linux&nbsp;和&nbsp;Xwindow&nbsp;在操作层面的天生的先进性，随后不久就把&nbsp;Linux&nbsp;完全删除掉了。你发现没有，要用户理解&nbsp;UNIX&nbsp;和&nbsp;Xwindow&nbsp;的操作层面的先进性，才是留住用户的最好办法。如果用户体会不到操作时的方便和高效，内核再好他们也不会理会。&nbsp;<br />
但是用摹仿&nbsp;Windows&nbsp;的作法来吸引用户，永远会失败的。因为&nbsp;Linux&nbsp;如果摹仿Windows那一套低效率的方式，那么&nbsp;Linux&nbsp;的这套"低效率方式"永远比不上Windows&nbsp;的那一套"低效率方式"。那么用户就会说："这个&nbsp;Linux，没有一样比的上&nbsp;Windows。"&nbsp;<br />
Linux&nbsp;天生就是继承了&nbsp;UNIX&nbsp;的高效的工作方式，为什么我们要把它掩盖起来？我们为什么只告诉用户 &nbsp;KDE&nbsp;的菜单怎么用？我们为什么不能像早期的&nbsp;Xwindow&nbsp;书籍那样第一节就告诉用户什么是&nbsp;X&nbsp;server,&nbsp;什么是&nbsp;X&nbsp;client，什么是&nbsp;Window&nbsp;Manager,&nbsp;什么是根窗口。第二章就告诉用户窗口有哪些属性，什么是&nbsp;classname,&nbsp;resource&nbsp;name, &nbsp;hint，怎样使用&nbsp;.Xdefaults,&nbsp;xrdb&nbsp;&#8230;&#8230;&nbsp;<br />
在这里我又不得不说一下那些&nbsp;Linux&nbsp;的发行公司和写书的人，他们把 &nbsp;Linux&nbsp;和Xwindow&nbsp;包装起来，却没有从基本上告诉用户&nbsp;Xwindow&nbsp;的工作原理。很多书籍讲授的层次就是在Gnome,&nbsp;KDE&nbsp;的菜单操作的层次，靠大量抓图来占篇幅，"繁荣"Linux&nbsp;书籍市场。&nbsp;<br />
现在很多人已经把能够利用别人的库写出一个好看的程序作为自己编程水平的象征。在这?quot;图形化"，"可视化"&nbsp;的年代，你如果还在用&nbsp;troff,&nbsp;LaTeX&nbsp;写文档，你还在用VIM&nbsp;自己编辑&nbsp;HTML，用 &nbsp;Mutt&nbsp;处理邮件，你还在用文本模式的&nbsp;gdb&nbsp;调试程序，你还在用Xlib&nbsp;写程序,&nbsp;你还在用&nbsp;tin&nbsp;上&nbsp;USENET，你还在自己写 &nbsp;Makefile，写机器代码，你还在玩&nbsp;Clossal&nbsp;Cave&nbsp;这样的字符模式冒险游戏，那你就是老古董。&nbsp;<br />
其实这种思想是错误的。虽然你是一个坚决的&nbsp;Linux&nbsp;支持者，但是你的思想是&nbsp;Windows的思想。你认为图形界面，菜单，按钮就可以解决一切问题，就可以给你高效方便。你还是没能摆脱微软给你的潜移默化的东西。你其实离不开&nbsp;Windows&nbsp;那样的环境，你迟早会删掉自己的&nbsp;Linux。&nbsp;<br />
GUI&nbsp;vs.&nbsp;CLI&nbsp;<br />
做一个坚定不移的"两面派"&nbsp;<br />
大家看到这个标题是不是热血沸腾？两派大虾都可以围攻我了：&nbsp;<br />
GUI派用户："哇！我一看你这小子就是&nbsp;CLI&nbsp;的。要不然自己写什么&nbsp;Makefile？用什么Mutt？"&nbsp;<br />
CLI派用户："切～&nbsp;你还用&nbsp;X！高手都不用&nbsp;X。你是&nbsp;GUI&nbsp;那边的。"&nbsp;<br />
可怜的我："555～～&nbsp;你们都不要我～～&nbsp;GUI&nbsp;和&nbsp;CLI&nbsp;就那么水火不容吗？"&nbsp;<br />
计算机界这样的门派之分还很多。很有特点的就是&nbsp;CLI&nbsp;和&nbsp;GUI&nbsp;了。CLI&nbsp;(Command&nbsp;LIne)的狂热份子声称永远不用&nbsp;X。我上次在实验室看到一个同学用一个&nbsp;SecureCRT&nbsp;登录到Sun&nbsp;机器，然后用一个&nbsp;vanilla&nbsp;vi&nbsp;编辑程序，我建议他启动一个&nbsp;GVIM&nbsp;过来显示在 Exceed&nbsp;上可以有语法加亮。但是他坚决反对，说："高手不用X。你想想，要是我在一个很慢的网络连接怎么用&nbsp;X？而且好多服务器没有装&nbsp;X&nbsp;程序。 "&nbsp;<br />
但是我们实验室的网速可够快，Windows&nbsp;机器都有&nbsp;Exceed&nbsp;啊，而且&nbsp;Sun&nbsp;机器有全套X&nbsp;客户程序包括&nbsp;GVIM。他说他是 &nbsp;CLI&nbsp;的坚决拥护者，但是他却在用&nbsp;Windows，他后来打开了好几个&nbsp;SecureCRT，每次从文本框输入地址，用户名和密码，从下拉菜单选择 "SSH2"，然后点击"Connnect"。他还不断的夸SecureCRT是"网络管理员投票选出的最受欢迎的登录方式"。老天， SecureCRT&nbsp;本身就是个&nbsp;GUI&nbsp;啊，他其实没有明白Xwindow&nbsp;的好处。&nbsp;<br />
你说我是&nbsp;GUI&nbsp;的？我虽然很少在&nbsp;console&nbsp; 下工作。但是我对&nbsp;bash,&nbsp;VIM&nbsp;很熟悉，我可以让&nbsp;bash&nbsp;按照我的键绑定方式来工作。我可以在&nbsp;rxvt&nbsp;里使用&nbsp;Mutt&nbsp;来收发 &nbsp;email。我的每个桌面上都常常堆放着一打不同大小的&nbsp;rxvt。我用&nbsp;VIM&nbsp;编辑&nbsp;LaTeX。我自己写Makefile&nbsp;来维护&nbsp;LaTeX&nbsp; 文档。我有时用&nbsp;mpg321&nbsp;来放&nbsp;mp3。我上BBS用的我自己写的expect&nbsp;脚本。&nbsp;好了，CLI&nbsp;派的朋友可以收我做盟友了&nbsp;<br />
你说我是&nbsp;CLI&nbsp;的老古董？我的&nbsp;FVWM&nbsp;被我配置为可以"手写操作"，我只要画一个"r"就可以启动&nbsp;rxvt，我只要画一个&nbsp;"U"&nbsp;就可以启动 &nbsp;GVIM，&#8230;&#8230;&nbsp;我用&nbsp;GVIM&nbsp;语法加亮模式编辑程序，我用&nbsp;Mozilla&nbsp;浏览网页，&#8230;&#8230;&nbsp;GUI&nbsp;派的现在好像认我做朋友了&nbsp;<br />
好了。CLI&nbsp;派的朋友，虽然我很喜欢命令行，但是我有时在屏幕上左右画一下就可以执行:&nbsp;<br />
Module&nbsp;FvwmConsole&nbsp;-terminal&nbsp;rxvt&nbsp;-geometry&nbsp;45x5-0+0&nbsp;-bg&nbsp;gold&nbsp;-fg&nbsp;midnightblue&nbsp;-fn&nbsp;"-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"&nbsp;<br />
你是不是现在又想把我逐出师门？&nbsp;<br />
GUI&nbsp;派的朋友，虽然我很喜欢窗口。但是我可以在&nbsp;FvwmConsole&nbsp;里输入：&nbsp;<br />
All&nbsp;(rxvt)&nbsp;MoveToDesk&nbsp;<br />
把我所有的&nbsp;rxvt&nbsp;移动到我现在工作的桌面。"这家伙，怎么这么快就叛变了！"&nbsp;<br />
其实何必分什么&nbsp;GUI&nbsp;和&nbsp;CLI，UNIX&nbsp;和&nbsp;Xwindow&nbsp;都是工业标准，它们从设计那天开始就有非常灵活的用法，各个程序，不管是&nbsp;GUI&nbsp;还是命令行的都可以互相协作。UNIX&nbsp;和X&nbsp;是一家，何必搞的那么偏激，非此即彼？你从我上面的行为可以看出&nbsp;GUI&nbsp;和&nbsp;CLI的模糊界线吗？我就是坚定不移的"两面派"。&nbsp;<br />
UNIX&nbsp;是简单的--&nbsp;<br />
"我相信简单就是最好，如果太复杂，我是不能理解的。"&nbsp;-Seymour&nbsp;Cray&nbsp;<br />
很多第一次用&nbsp;Linux&nbsp;的人会惊奇的发现，Linux&nbsp;的程序居然不?quot;安装"就可以运行，程序拷贝到随便那个目录都可以用，而不是一定要占用你第一个分区的空间。程序的设置只是一些简简单单的文本文件。你根本不需要什么"注册表修改器"&nbsp;就可以改变系统的设置。这就叫做简单，但是简单就是美。虽然这只是&nbsp;UNIX&nbsp;简单性的一个肤浅的认识，你已经体会到了某些东西。&nbsp;<br />
但是简单并不意味着功能弱，并不意味着落后。相反，简单意味着强大，意味着生命力。&nbsp;<br />
我不会再继续阐述我理解到的"UNIX&nbsp;的简单"，因为这个需要自己去体会。&nbsp;<br />
UNIX&nbsp;是永恒的&nbsp;<br />
有人说："Plan9&nbsp;会取代&nbsp;UNIX，Mach&nbsp;会取代&nbsp;Linux&nbsp;内核。"&nbsp;<br />
但是你如果是一个深入体会了&nbsp;UNIX&nbsp;的人，你就会知道：UNIX&nbsp;的思想是永恒的，不管时过境迁，Plan9&nbsp;是否代替&nbsp;UNIX，UNIX&nbsp;的灵魂都会在&nbsp;Plan9&nbsp;身上现形！&nbsp;<br />
我为同一个设备写过&nbsp;Linux&nbsp;内核和&nbsp;Windows&nbsp;VxD&nbsp;驱动程序。写&nbsp;Linux&nbsp;驱动程序时，我对&nbsp;UNIX&nbsp;设计的完美的一致性，远见性所折服。UNIX&nbsp;用同样界面的&nbsp;read(),&nbsp;write()系统调用就可以对不同的对象：普通文件，设备文件，管道，管道文件，socket，&#8230;&#8230;进行统一的读写操作。我跟本不需要写一个测试用的应用程序就可以对我的设备驱动进行测试，因为&nbsp;cat,&nbsp;cp,&nbsp;dd,&nbsp;它们也使用了同样的&nbsp;read (),&nbsp;write()，设备和普通文件在应用程序眼里没有区别。在那个还没有&nbsp;Smalltalk,&nbsp;没有&nbsp;C++&nbsp;的年代，UNIX&nbsp;的设计者已经使用了所谓的&nbsp;"面向对象方法"。对，C&nbsp;语言也可以实现面向对象。&nbsp;<br />
UNIX&nbsp;的系统调用几十年都没有很大变化，这非但不是顽固，不进步的象征，反而是UNIX&nbsp;的远见卓识的体现！这就跟&nbsp;TeX&nbsp;程序几十年都不变的情况差不多。这些才是真正的永恒的&nbsp;master&nbsp;piece!&nbsp;你应该改变所有软件都必需从&nbsp;0.1,&nbsp;1.0,&nbsp;1.1,&nbsp;1.2,&nbsp;2.0,...,&nbsp;3.0,&nbsp;3.1,&nbsp;95,&nbsp;98,&nbsp;2000,&nbsp;XP,&nbsp;...&nbsp;不断升级的想法。&nbsp;<br />
Windows&nbsp;就不同了，它在最开头只是一个&nbsp;DOS&nbsp;之上的图形包装而已。后来为了兼容以前的糟糕设计，不得不加上很多累赘。我写 &nbsp;VxD&nbsp;驱动程序的时候就深有体会，Windows&nbsp;95&nbsp;程序对设备的操作只有用&nbsp;DeviceIoControl，我不得不写了两个应用程序来对设备驱动进行测试。Windows&nbsp;内核的不一致性和隐密性使我非常恼火。不过&nbsp;Windows&nbsp;WDM驱动程序现在也有了&nbsp;ReadFile, &nbsp;WriteFile，&#8230;&#8230;&nbsp;那说明什么？那说明&nbsp;Windows&nbsp;在向UNIX&nbsp;学习，或者有可能是某个&nbsp;UNIX&nbsp;设计人员在微软打了几天临工，顺手加了几个UNIX&nbsp;的东西进去。这样做是没有用的，Windows&nbsp;从一开始就是非常糟糕的设计，它的历史的包袱太沉重了，缝缝补补有什么用？它只能永远的被&nbsp;UNIX&nbsp;甩在身后！&nbsp;<br />
UNIX&nbsp;是强大的&nbsp;<br />
让聪明人干任何他们想干的事情。&nbsp;<br />
UNIX&nbsp;的一个特点就是非常高的灵活性，Xwindow&nbsp;也具有这种灵活性。这种灵活性体现在哪里呢？&nbsp;<br />
UNIX&nbsp; 的程序一般都有很多参数，不管你现在用的着用不着，总有人需要某些参数。它们的行为很多都可以用配置文件来改变。比如&nbsp;GNU&nbsp;bash,&nbsp;通常缺省的命令行输入方式是&nbsp;Emacs&nbsp;方式，但是只要我编辑一个&nbsp;.inputrc&nbsp;文件，就可以把它变成&nbsp;vi&nbsp;的输入方式，而且我还可以自己绑定键序列到某些操作。我可以用&nbsp;shopt&nbsp;来设置它的很多特点，比如是否进行通配符扩展，是否可以把一个变量当作一个目录来cd，是否可以自动纠正某些明显的目录名打字错误&nbsp;&#8230;&#8230;&nbsp;<br />
UNIX&nbsp;程序设计的思想是提供给用户"机制"，而不限制用户制定"政策"。这是一个重要的尊重用户的作法。&nbsp;<br />
我们再来看看&nbsp;Xwindow。Xwindow&nbsp;是一个出色的设计，它把显示服务器和客户程序分开。一个显示上既可以显示本机上的程序，也可以显示别的机器上的 &nbsp;X&nbsp;程序，而它们都遵守你的窗口管理器的统一指挥，它们之间可以方便的传送剪贴版数据，各种事件&nbsp;&#8230;&#8230;&nbsp;比如有时我的&nbsp;XFree86&nbsp;上会出现四个不同机器上的&nbsp;XTerm，两个不同机器上的&nbsp;GVIM，&#8230;&#8230;&nbsp;它们统一受本机上的&nbsp;FVWM&nbsp;指挥。&nbsp;<br />
Xwindow&nbsp;程序都具有很多很多命令行参数和&nbsp;resource&nbsp;参数。你可以随意的在命令行或者&nbsp;.Xdefaults&nbsp;文件设置所有的颜色，字体，尺寸&#8230;&#8230;&nbsp;而且如果你用&nbsp;xrdb&nbsp;把 &nbsp;.Xdefaults&nbsp;导入到根窗口，那么其它机器上没有经过配置的同样的程序，显示到你的机器上的时候也会遵守同样的外观规定。&nbsp;<br />
Xwindow&nbsp; 的窗口具有&nbsp;Property,&nbsp;也就是一些可以自己定义的共享数据(原子)。正是因为这些&nbsp;Property&nbsp;的存在，使得&nbsp;Xwindow&nbsp;具有无比强大的生命力。X&nbsp;的窗口管理器和其它客户程序之间并没有统一的协议，但是后来出现了&nbsp;ICCCM(客户程序间通信规范)，这个规范就是通过 &nbsp;property&nbsp;定义的。现在又有人定义了一套"扩展的窗口协议(EWM&nbsp;Hints)"，使得Xwindow&nbsp;可以具有某些&nbsp;Windows&nbsp;的特征，比如一个工具条程序可以告诉窗口管理器："这个屏幕下面被我占据了24个像素的空间，你最大化程序的时候不要越过这个界线。"&nbsp;<br />
一个强大的窗口管理程序比如&nbsp;FVWM，它收到这样的提示时，可以答应工具条程序的这个要求，也可以不答应。一切选择的权力在于谁？当然是用户了！&nbsp;<br />
你想想，是不是有些&nbsp;Windows&nbsp;程序常常弹出一个窗口要你选择&nbsp;"Yes&nbsp;or&nbsp;No"？你不点击它它就不下去。你觉不觉得你的程序在侵犯你的尊严？你是一个人，一个智慧的生物，怎能受到一个程序如此的待遇？&nbsp;<br />
还有就是很多&nbsp;Windows&nbsp;程序把人当成傻瓜，而它是"智能程序"。比如，有一个程序就是喜欢把你的每句话第一个字母都变成大写，我不说它是谁了，你遇到的时候就知道了。&nbsp;<br />
如果连"一句话开头一个字母要大写"这么明显的问题都需要程序帮你纠正的话，人脑还用来干什么？况且如果你故意想要不大写的话，那就更麻烦了，我楞是没有从它那一大堆菜单里找到怎么关闭这个愚蠢的选项。&nbsp;<br />
只有符号才能完全操纵计算机。&nbsp;<br />
我们来说说很多初学&nbsp;Linux&nbsp;的用户。虽然他们在用&nbsp;Linux，但是他们打心眼儿里是觉得Windows&nbsp;的工作方式好，他们希望&nbsp;Linux&nbsp;有一天能"像Windows那样"。你说："我的鼠标一点，我菜单一拉，&#8230;&#8230;&nbsp;就可以完成我的操作。"&nbsp;但是我要告诉你："Linux&nbsp;从来没有摹仿 &nbsp;Windows，将来也不会。Linux&nbsp;从诞生之日起，它的工作方式就比&nbsp;Windows&nbsp;的先进。&nbsp;<br />
Linux&nbsp;属于能勇敢面对符号的人。只有符号才能完全操纵计算机。"&nbsp;<br />
看看优秀的&nbsp;UNIX&nbsp;程序，XFree86,&nbsp;FVWM,&nbsp;VIM,&nbsp;Emacs,&nbsp;proftpd,&nbsp;Mutt,&nbsp;wget,&nbsp;tin,&nbsp;...&nbsp;没有一个不是用配置文件来设置选项的。为什么这些程序没有方便的菜单可以用来配置？难道它们的设计者就那么低能，连个图形配置界面也写不出来？&nbsp;<br />
当然不是。因为图形界面配置方式的能力是极其有限的，而配置文件和程序语言的表达能力却是无限的。用图形界面配置这些程序的话，如果你想达到配置文件的效果，你需要成百上千的菜单，checkbox,&nbsp;radio&nbsp;button,&nbsp;...&nbsp;到时候你根本没办法找到你需要修改的地方了！而各个程序的配置文件的语法都有很多相似之处，一般就是一些命令，设置一些变量，参数，&#8230;&#8230;&nbsp;一旦用会了一个，其它的也就容易理解了。如果你用惯了&nbsp;awk,&nbsp;sed, &nbsp;Perl，你会觉得那才是真正的自动化啊。&nbsp;<br />
鼠标虽然是很好的工具，但是它的表达能力是有限的。你不可能光用鼠标就让电脑完全明白你的意思，它毕竟只有3个按钮。看看我的MetaPost页你就能体会到鼠标的这一弱点。所以我们虽然很喜欢鼠标，但是却不能完全依赖它。&nbsp;<br />
各个小程序的完美配合&nbsp;<br />
这就是UNIX最重要的特点了，它就是UNIX设计的思想。让每个程序只具有一项专门的能力，然后让它们合作。Xwindow也继承了这种好传统。这恐怕就是Windows和其它操作系统望尘末及的地方了。UNIX&nbsp;程序设计之统一，配合之完美，真使我难以置信！shell,&nbsp;grep,&nbsp;find, &nbsp;awk,&nbsp;sed,&nbsp;make,&nbsp;Perl,&nbsp;Emacs,&nbsp;vi,&nbsp;tin,&nbsp;Mutt,&nbsp;...&nbsp;它们是那么的具有一致性！你一旦学会了&nbsp;sed&nbsp; 的正则表达式，其它程序基本上都能用了。你一旦学会了vi&nbsp;和&nbsp;VIM,&nbsp;你会发现它的操作是那么的有规律性，似乎vi的设计者在几十年前就已经设计好了 &nbsp;VIM&nbsp;在今天的完美而统一的操作方式！而且vi的操作还体现在&nbsp;Mutt,&nbsp;tin&nbsp;等很多程序中。你甚至可以把&nbsp;bash&nbsp;设置为&nbsp;vi&nbsp;的输入方式来输入命令行，我就是这么做的。一个程序可以调用另外一个程序来得到数据，可以把数据交给它处理后返回来，可以在自己的窗口里"嵌入"另外一个程序。&nbsp;<br />
在&nbsp;Windows&nbsp; 和其它非&nbsp;UNIX&nbsp;操作系统中，这种合作是非常困难的。我曾经在Windows下使用&nbsp;Perl来进行一些自动工作。但是&nbsp;Windows&nbsp;的文件操作，管道是如此的不稳定，程序之间基本不能合作。你别想在&nbsp;Visual&nbsp;Studio&nbsp;窗口里面嵌入&nbsp;UltraEdit&nbsp;编辑器，你别想用一个 &nbsp;expect&nbsp;脚本来控制&nbsp;telnet&nbsp;到水木清华BBS。&nbsp;<br />
Windows&nbsp;的程序都是大而全，大而杂，所有的电子邮件程序都需要自己提供编辑器，自己发送和收取邮件，自己显示邮件的附件。每一个BBS程序都提供自己的Virtual&nbsp;Terminal,&nbsp;自己的通讯代码。每一个&nbsp;IDE&nbsp; 都自己提供编辑器，编译器，汇编器，调试器。人们为了使用一种新的程序，需要适应所有这些它提供的界面，而不能使用自己喜欢的编辑器的键绑定，菜单组织&#8230;&#8230;&nbsp;不能&nbsp;DIY！&nbsp;<br />
你要知道，最高级的电脑是定做的，自己想要什么什么CPU，什么主板，多少内存，什么硬盘，键盘，鼠标，显示器都是自己选择的。最高级的滑板，自己想要什么牌子的版面，什么牌子的沙，什么桥，什么轮子，什么轴承，也都是自己选的。最高级的古球拍，木板，胶皮，海绵，胶水都是可以自己选择&#8230;&#8230;&nbsp;而用&nbsp;Windows&nbsp;程序，你得到的是大杂烩，就像你去买"品牌机"，只有那么几种配置，而且附带很多你不需要的软件和服务；就像你去买组装好的滑板，你想要大一点的轮子和窄一点的板子，但是你没有这种选择余地！Windows&nbsp;程序就相当于最廉价，最次的滑板。但是它却会花你更多的钱，因为一旦一个部件坏了，或者你不喜欢了，你不能另外找一个好的换掉它，你必需重新买全套配件！&nbsp;<br />
而&nbsp;UNIX&nbsp;和&nbsp;Xwindow&nbsp;就是高档的"组装货"。比如我用&nbsp;Mutt&nbsp;的时候，我可以用&nbsp;VIM也可以用&nbsp;pico&nbsp;来编辑邮件，我可以用&nbsp;ImageMagick&nbsp;也可以用&nbsp;xv&nbsp;来显示附件里的图片，我可以用&nbsp;lynx&nbsp;把&nbsp;HTML&nbsp;附件转成文本嵌入窗口中，我也可以把&nbsp;HTML&nbsp;附件交给Mozilla&nbsp;图形显示。我可以让 &nbsp;GnuPG&nbsp;帮我把邮件进行数字签名和加密，我也可以用其它&nbsp;PGP&nbsp;程序。&nbsp;<br />
我想让&nbsp;Postfix&nbsp;而不是&nbsp;sendmail&nbsp;帮我发出邮件，我想让&nbsp;fetchmail&nbsp;帮我收邮件，转发给&nbsp;postfix，然后被我自己写的Perl过滤器处理&#8230;&#8230;&nbsp;这一切我都可以办到！我可以选择我最喜欢的专门的程序来完成专门的工作，然后把它们结合在一起，我也可以分别得到它们的好处。&nbsp;<br />
学&nbsp;UNIX&nbsp;绝对不是浪费时间&nbsp;<br />
有人告诉我："你看我用&nbsp;Windows&nbsp;什么都不用学。而用&nbsp;Linux，光是安装就花了我一个星期！"&nbsp;<br />
首先，我要告诉你的是，你装&nbsp;Linux&nbsp;花了一个星期，不是因为&nbsp;Linux&nbsp;不好装，而是因为你已经习惯了&nbsp;Windows，对&nbsp;Linux&nbsp;最初难以理解而已。你想一想你最初安装Windows的时候呢？你花了多少时间搞明白什么是硬盘分区？什么是盘符？什么是目录？你认为Windows&nbsp;就是那么容易可以学会的吗？虽然你觉得没花时间学，但是你以前在用别人的机器的时候已经耳濡目染，自然就了解了。而且由于你想要&nbsp;Linux&nbsp;和&nbsp;Windows&nbsp; 并存于硬盘上，又增加了安装难度。而且你肯定没有得到有经验的&nbsp;Linux&nbsp;用户的帮助，否则他们会在20分种之内帮你搞定。一个星期也太夸张了.&nbsp;<br />
如果一开始用的就是Linux就没有这个问题。你想想如果你没有用过&nbsp;windows，你肯定会很习惯&nbsp;/etc,&nbsp;/usr, &nbsp;/usr/local&nbsp;,...&nbsp;而不是&nbsp;C:,&nbsp;D:,&nbsp;E:,&nbsp;...&nbsp;是不是？如果你只用过Linux，你第一次用&nbsp;windows&nbsp;时恐怕也会问："/bin&nbsp;目录哪里去了啊？"&nbsp;<br />
最重要的是，你用惯了的UNIX工具，它们可以伴随你一生，而不会那么容易变化或消失。你可以永远不用再换另外的工具了。除非那个工具比你这个好的太多，而且可以完全模拟你现在的工具。&nbsp;<br />
我们实验室一个60多岁的老师，用vi,&nbsp;cc,&nbsp;make,&nbsp;...都几十年了，他以前的经验绝对没有白费，而且教会了我们一批又一批的学生。vi&nbsp;伴随着&nbsp;UNIX&nbsp;的最初发行而诞生，直到今天还是世界上头两号编辑器之一！有些人的&nbsp;FVWM&nbsp;配置文件已经用了&nbsp;10&nbsp;多年，现在完全不经修改还可以用。 &nbsp;<br />
看看&nbsp;Windows&nbsp;的工具，你从&nbsp;Borland&nbsp;C++&nbsp;换到&nbsp;VC,&nbsp;就必需适应新的环境：菜单不同了，颜色不同了，按钮不同了，帮助信息不同了，热键不同了，编译器参数，调试器功能也不同了，&#8230;&#8230;&nbsp;那个时候恐怕花要花你很多时间去适应。当你刚刚适应了&nbsp;VC,&nbsp;你又要换成VJ, &nbsp;PowerBuilder,&nbsp;C++Builder,&nbsp;...&nbsp;<br />
很多windows程序员都是这样，开头在dos下用Turbo&nbsp;C,&nbsp;然后是 &nbsp;Borland&nbsp;C,&nbsp;VC,&nbsp;C++&nbsp;Builder,&nbsp;......不断追赶微软的潮流。而且微软的SDK,&nbsp;MFC,&nbsp;.NET&nbsp;&#8230;&#8230;&nbsp;什么都在不断变化，不断出问题，又不断的在修改&#8230;&#8230;&nbsp;Windows&nbsp;程序员不得不买又厚又重的&nbsp;Microsoft&nbsp;Press&nbsp;的书籍，看了才一个月，又过时了。今天你才学会了写&nbsp;VxD，明天你就必须用WDM&nbsp;了。你不得不注册&nbsp;MSDN&nbsp;才能赶上&nbsp;Microsoft&nbsp;的步伐。很多人说："计算机是贵族的专业。"&nbsp;这就是微软一手造成的。&nbsp;<br />
这些东西才是没完没了的浪费大家的时间和金钱的。这是是浪费生命！我们为什么不使用从诞生就那么一致和完美的 &nbsp;UNIX？你需要理解先进工具的设计理念。UNIX&nbsp;的工具就像我们用的汽车，它的离合器，油门，刹车，方向盘，后视镜，永远都在同样的位置。用惯了的话，你对你的汽车的每一个部件都会了如指掌，甚至你自己都可以修车了。这难道不好吗？&nbsp;<br />
有人说："你说我们需要了解&nbsp;UNIX，难道你要开车还必须了解汽车的结构吗？"&nbsp;你去问问开车的司机，哪一个不了解汽车的结构的，那他的驾照就是混来的。你难道想要傻瓜型的"微软牌汽车"吗？我们来看看：&nbsp;<br />
你买的微软牌汽车最开头只有一个座位，每加一个座位你得向汽车公司付钱。车上的防撞气囊不时会冒出来，说是为了你的安全。每开100英里要大修一次，每过一年要换一次引擎。附带的，你还必须换用由微软汽车公司指定的石油公司提供的新型号的机油。你的车出了问题，但是法律规定，你不准私自拆开你的汽车来修理，你必需到微软汽车公司指定的维修点去，需要付相当多的钱才能修好一个小毛病。&nbsp;<br />
最可气的是，你每换一个型号的微软牌汽车，它的刹车和离合器都在不同的位置，你需要重新去考驾驶执照。如果这辆汽车在途中刹车失灵，你受了重伤，你也不能状告微软汽车公司，因为你买来汽车之后必须签一个合同，说"由于微软牌汽车对你和家人造成的一切死伤，微软概不负责。"&nbsp;<br />
怎样完全用&nbsp;GNU/Linux&nbsp;工作&nbsp;<br />
说了这么多&nbsp;Windows&nbsp;的不好。我还没有告诉你我怎么用&nbsp;Linux&nbsp;处理有些必要的事情。半年以前我由于中文老是配置不好，一直是双系统，不时需要重起到&nbsp;Win2k&nbsp;来处理汉字。后来我找到了&nbsp;miniChinput,&nbsp;XSIM&nbsp;和&nbsp;SCIM&nbsp;输入法。这下可以处理汉字了。而且&nbsp;VIM&nbsp;和Emacs&nbsp;对汉字支持越来越好。我的大部分文本是用&nbsp;VIM&nbsp;编辑的，包括程序，信件，网页，LaTeX&nbsp;论文，MetaPost&nbsp;绘图语言。&nbsp;<br />
我不用&nbsp;Word&nbsp;这样的程序写论文，而是用&nbsp;LaTeX，因为这是世界上效果最好，最方便的论文工具，是大多数学术杂志要求的格式。幻灯都是用&nbsp;ConTeXt&nbsp;做的，用起来很简单，而且效果非常漂亮。你可以看看我的TeX介绍。&nbsp;<br />
至于绘图，你可以用很多可视化的工具，比如&nbsp;xfig，dia。但是对于我来说，任何可视化的工具都不能完成某些任务，我需要一种可以精确描述图形的语言。我找到了MetaPost。它简单又好用，而且效果是世界一流的。我的插图，如果不是图像，都是MetaPost&nbsp;画出来的。&nbsp;<br />
我曾经抱怨 &nbsp;mozilla-mail&nbsp;经常突然消失，损坏我好几封快要完成的信件。后来我发现mozilla&nbsp;的邮件处理程序确实是不稳定的，功能又弱，有经验的 &nbsp;UNIX&nbsp;用户都不用这样的程序。Mutt&nbsp;是一个非常稳定可靠的&nbsp;UNIX&nbsp;邮件处理程序，而且功能非常强大。我曾经为&nbsp;Gnome&nbsp;和&nbsp;KDE&nbsp;的不稳定而烦恼。现在我找到了非常强大的&nbsp;FVWM。KDE，Gnome也能和&nbsp;FVWM&nbsp;一起工作。虽然&nbsp;Gnome&nbsp;和&nbsp;KDE&nbsp;总体不稳定，但是某些部件程序还不错，很多&nbsp;gtk,&nbsp;Qt&nbsp;的程序也很不错，它们很多都是可以独立于这些桌面环境运行的。&nbsp;<br />
Linux&nbsp;有很多强大方便的工作方式是&nbsp;Windows&nbsp;没有的，或者有类似的东西，但是很差劲或者用起来不方便。比如&nbsp;ssh&nbsp;服务，rsync，cvs，expect&nbsp;&#8230;&#8230;&nbsp;<br />
结论&nbsp;<br />
我写这么多的目的是什么？我希望喜欢&nbsp;Linux&nbsp;的朋友，完全清除微软和&nbsp;Windows&nbsp;灌输在你脑子里的谬论，别再相信它们所谓的"新技术"，别再追赶&nbsp;Windows，因为追赶Windows&nbsp;＝&nbsp;倒退。马克思有一个思想很重要，"新生事物并不一定是在最近出现的。"&nbsp;<br />
UNIX，Xwindow,&nbsp;TeX&nbsp;虽然都比&nbsp;Windows&nbsp;先出现，但是它们才是先进生产力的代表。我们要清楚的认识到什么才是真正的现代化，什么才是真正的自动化。&nbsp;<br />
消除学计算机很难的幻觉，勇敢的拿起像&nbsp;bash,&nbsp;FVWM,&nbsp;TeX,&nbsp;VIM,&nbsp;Emacs,&nbsp;Mutt&nbsp;&#8230;&#8230;这样强大的程序，勇敢的面对符号。不要再埋怨"Linux&nbsp;为什么不能像&nbsp;Windows&nbsp;那样"，不要再浪费时间试用这样那样的程序，不要再忙着升级。你需要理解&nbsp;UNIX&nbsp;的工作方式，因为那是大多数科学家的工作方式。Linux&nbsp;可以成为你的好朋友，你需要认识它，了解它，信任它，才能完全的靠它来高效的工作。当然，在游戏机，手机，掌上电脑里，或者在用电脑来娱乐的时候，用一些"傻瓜软件"还是不错的.&nbsp;<br />
我希望小学，中学的计算机老师能够提高自己的素质，在孩子们的启蒙教育中充分利用Linux&nbsp;神秘的特点，引起孩子们对数学，对符号的好奇心。诱导他们用计算机来解决世界上的有趣问题，而不要把教学的范围局限于计算机的操作和它自身的问题。&nbsp;<br />
附录:&nbsp;我用来处理日常事务的&nbsp;Linux&nbsp;程序&nbsp;<br />
好了好了。我知道你发现自己应该转向&nbsp;Linux，你很后悔当初为什么中了微软的邪。但是不要着急。因为这些东西本来只是工具，它们是用来完成你的主要任务的辅助而已。你以前选错了工具，这不要紧。你还是拥有你自己原来的专业技能，那才是最重要的。工具的东西只有慢慢适应转换，不能一蹴而就，否则你会感到非常没意思，甚至放弃。&nbsp;<br />
如果你只想做一个像我这样的普通用户，主要目的是用&nbsp;Linux&nbsp;来完成自己的任务，那就可以不用系统管理员或者网络管理员的标准来要求自己，因为当一个系统和网络管理员确实很辛苦。这里我对实验室的网管同学鞠一躬，谢谢你的指点和帮助.&nbsp;不用把你的机器当成网络服务器，不用开放没有必要的服务，设置好&nbsp;ssh,&nbsp;ftp&nbsp;已经足够了。这样会省去了解很多没必要了解的东西的时间。不用过度考虑"安全"，因为&nbsp;Linux&nbsp;缺省已经很安全了。不过你有兴趣了解更多那也无妨。&nbsp;<br />
下面给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工程软件比如 &nbsp;Matlab,&nbsp;Mathematica,&nbsp;Maple,&nbsp;HSpice,&nbsp;Design&nbsp;Compiler,&nbsp;&#8230;&#8230;&nbsp;还有其它物理上的，化学上的，生物上的&nbsp;&#8230;&#8230;&nbsp;都必然有&nbsp;Linux&nbsp;和&nbsp;UNIX&nbsp;的版本。当然他们很多不是免费的，不要总是觉得什么都应该免费，自由不等于免费。它们是经过很多人辛勤劳动的产物，是可靠的程序，它们物有所值。&nbsp;<br />
下面列出我常用的一些&nbsp;Linux&nbsp;程序。一个列表里可能有很多，那是为了方便你来选择，我列出了比较信得过的。但其实很多只有第一个是我真正在用的，我不喜欢试用程序。我不是一个合格的网络管理员，我的服务器都只设置了我自己需要的功能，那样可以省去我很多麻烦。<br />
Shell:&nbsp;bash。它结合了&nbsp;csh&nbsp;和&nbsp;ksh&nbsp;的优点，并且有&nbsp;readline&nbsp;功能，你可以随意绑定自己的键盘。&nbsp;<br />
编辑器：&nbsp;VIM,&nbsp;Emacs。&nbsp;<br />
程序开发：&nbsp;GCC,&nbsp;make,&nbsp;ld,&nbsp;Scheme48,&nbsp;j2sdk,&nbsp;Perl,&nbsp;Python,&nbsp;Tcl/Tk&nbsp;...&nbsp;<br />
论文，幻灯工具：LaTeX,&nbsp;ConTeXt&nbsp;<br />
绘图工具：MetaPost。这个语言太强了，以至于我只用它了。你不熟悉的话可以用xfig,&nbsp;dia&nbsp;来画一些流程图之类的图片。&nbsp;<br />
图像处理：ImageMagick。其中的&nbsp;import&nbsp;程序可以屏幕抓图，convert&nbsp;程序可以转换图像格式，display&nbsp;可以显示图片和简单编辑(缩放，换质量，转格式，简单绘图，简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用&nbsp;Gimp,&nbsp;它几乎和Photoshop差不多。&nbsp;<br />
自动管理工具：make。我可以用make来自动编译程序，自动编译文档，自动更新插图&#8230;&#8230;&nbsp;全自动，而且不会重复劳动。&nbsp;<br />
数值计算程序：SciLab。这个程序基本上可以代替&nbsp;Matlab。&nbsp;<br />
代数计算程序：MAXIMA。这个程序基于世界上最老的计算机代数系统之一:&nbsp;由美国能源部(DOE)发行的&nbsp;MIT&nbsp;Macsyma&nbsp;系统。它是用 &nbsp;Common&nbsp;Lisp&nbsp;实现的。很多现在的符号计算程序比如&nbsp;Maple&nbsp;都从&nbsp;MAXIMA&nbsp;身上学到很多东西。它现在经过&nbsp;DOE&nbsp;批准以GPL 发行，永远是一个自由软件。&nbsp;<br />
加密程序：GnuPG。我的&nbsp;PGP&nbsp;密钥就是它搞出来的。&nbsp;<br />
打包，压缩程序。什么都有:&nbsp;tar,&nbsp;gzip,&nbsp;bzip2,&nbsp;zip,&nbsp;rar,&nbsp;...&nbsp;<br />
虚拟光驱程序。Linux&nbsp;不需要虚拟光驱程序，直接&nbsp;mount&nbsp;就行了。&nbsp;<br />
ftp&nbsp;服务器：proftpd,&nbsp;vsftpd。proftpd&nbsp;功能很强，但是我只用了最简单的一种设置。&nbsp;<br />
WWW&nbsp;服务器：apache。(我一般没有开)&nbsp;<br />
ftp&nbsp; 客户程序：lftp，ncftp。它们都是文本方式操作的，但是比起图形界面的方便的多。比如&nbsp;lftp&nbsp;几乎具有&nbsp;bash&nbsp;的所有方便功能，Tab&nbsp; 补全，bookmark,&nbsp;queue,&nbsp;后台下载，镜像&#8230;&#8230;&nbsp;Linux&nbsp;也有图形界面的&nbsp;ftp&nbsp;客户程序，但是大多不稳定，有很多问题。这就是很多人抱怨&nbsp;Linux&nbsp;不如&nbsp;Windows&nbsp;的一个小原因。还有很多人用&nbsp;Wine&nbsp;模拟&nbsp;Windows&nbsp;的leapftp，其实&nbsp;lftp&nbsp;比 &nbsp;leapftp&nbsp;好很多，你需要的只是适应一下。&nbsp;<br />
自动下载工具：wget。它非常稳定，有一次我下载一个程序，用&nbsp;IE&nbsp;和 &nbsp;Mozilla&nbsp;下载回来的文件都是坏的，最后还是&nbsp;wget&nbsp;可靠的传输了数据。用它甚至可以镜像整个网站，比起WebZip&nbsp;这样的 &nbsp;Windows&nbsp;程序强多了，而且不会因为你不付钱就在下载回来的网页里强制插入广告。&nbsp;<br />
虚拟终端：rxvt,&nbsp;xterm,&nbsp;gnome-terminal,&nbsp;mlterm,&nbsp;...&nbsp;<br />
X&nbsp;server:&nbsp;XFree86&nbsp;<br />
窗口管理器：FVWM。编译加入了&nbsp;libstroke。&nbsp;<br />
中文输入：XSIM。被我修改过以适应&nbsp;FVWM&nbsp;的需要。另外推荐你还可以用&nbsp;SCIM。&nbsp;<br />
email&nbsp;处理：Mutt&nbsp;+&nbsp;Postfix&nbsp;+&nbsp;fetchmail&nbsp;<br />
看&nbsp;PDF,&nbsp;PS,&nbsp;DJVU&nbsp;文件：Acrobat&nbsp;Reader,&nbsp;xpdf,&nbsp;GhostScript,&nbsp;gv,&nbsp;djvu工具包和netscape&nbsp;插件。&nbsp;<br />
看CAJ文档。我从来不看CAJ之类的文档，如果找不到PDF或PS，直接去图书馆借最好。<br />
看网页：Mozilla,&nbsp;Phoenix,&nbsp;lynx。Mozilla-Xft&nbsp;的显示效果比IE&nbsp;好很多。&nbsp;<br />
英汉字典：IBM智能词典，星际译王。&nbsp;<br />
编辑网页：我用VIM&nbsp;直接写&nbsp;HTML。你如果想要图形方式的可以用其它的比如screem,&nbsp;BlueFish。&nbsp;<br />
登录其它&nbsp;UNIX,&nbsp;Linux&nbsp;机器：openSSH,&nbsp;telnet。&nbsp;我喜欢用&nbsp;openSSH&nbsp;把其它机器的X&nbsp;程序通过&nbsp;ssh&nbsp;加密的隧道传到我机器上显示。&nbsp;<br />
登录&nbsp;Windows2000&nbsp;server&nbsp;的&nbsp;display&nbsp;service:&nbsp;rdesktop，...我有一天试了一下，不错。后来就没有用过了。&nbsp;<br />
同步程序：rsync。我用&nbsp;rsync&nbsp;通过&nbsp;ssh&nbsp;来跟某些机器同步数据，或者做自己机器上不同目录间的同步。&nbsp;<br />
上BBS：rxvt(或任何一种终端)&nbsp;+&nbsp;telnet&nbsp;+&nbsp;chatbot(helloooo&nbsp;机器人的程序)&nbsp;<br />
QQ,&nbsp;ICQ:&nbsp;我没有&nbsp;QQ&nbsp;或&nbsp;ICQ。不过你可以用&nbsp;Gaim,&nbsp;它同时支持&nbsp;QQ,&nbsp;ICQ&nbsp;和很多其它的即时通信方式。ICQ&nbsp;用户也可以用&nbsp;Licq。&nbsp;<br />
放录像：MPlayer,&nbsp;RealPlayer。MPlayer&nbsp;太好了，直接就可以放&nbsp;VCD,&nbsp;DVD,&nbsp;divx,&nbsp;wma,&nbsp;wmv&nbsp;...&nbsp;用 &nbsp;Windows&nbsp;的同学都很羡慕我，说&nbsp;Windows&nbsp;要放这个需要大堆插件。rm&nbsp;最好还是用&nbsp;realplayer&nbsp;放，它也是免费的。&nbsp;<br />
放音乐：&nbsp;xmms(mp3,ogg都可以),&nbsp;mpg321(放mp3),&nbsp;ogg123(放ogg)。mpg321&nbsp;不如xmms管理音乐文件那么方便，但是有时我还是用&nbsp;mpg321&nbsp;放&nbsp;mp3&nbsp;作为背景音乐，因为懒得开一个xmms窗口:-)<br />
游戏：我觉得&nbsp;KDE&nbsp;的那个&nbsp;ksokoban(推箱子)，很好玩&nbsp;:-)&nbsp;<br />
看&nbsp;Word&nbsp; 文档。请&nbsp;Word&nbsp;用户把文档全部转为&nbsp;PDF&nbsp;或&nbsp;PS&nbsp;再给我，文档里没有特殊的格式干脆就用文本吧，何必那么麻烦。以前很奇怪的是，通知里本来没有什么特殊的格式居然还要发doc附件的email。现在好了，我们系发通知都用文本，PDF，甚至图片了。<br />
其它程序：还有很多我需要用而你不一定用得着的。比如，Doctor&nbsp;Scheme,&nbsp;<br />
Scheme48, &nbsp;Scsh,&nbsp;kawa...这些程序只有&nbsp;Doctor&nbsp;Scheme&nbsp;有Windows版本。还有很多幕后工作但是你一般不察觉的：xinetd, &nbsp;telnetd,&nbsp;sshd,&nbsp;crond,&nbsp;atd,&nbsp;lpd,&nbsp;...&nbsp;他们都比&nbsp;Windows&nbsp;的对应者强的多，或者根本没有对应者。
<img src ="http://www.blogjava.net/zhouf/aggbug/238125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-11-01 21:30 <a href="http://www.blogjava.net/zhouf/articles/238125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wine中文乱码的解决方法</title><link>http://www.blogjava.net/zhouf/articles/237405.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 29 Oct 2008 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/237405.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/237405.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/237405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/237405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/237405.html</trackback:ping><description><![CDATA[新装的wine中文全是乱码，需要修改一下几个配置文件，找到一篇比较详细的配置说明，分享一下：<br />
&#8220; wine下中文的配置方案<br />
步骤：
<p>1. 初始设置</p>
<p>运行 winecfg，把模拟的 Windows 系统设置为 Windows XP 或者 Windows 2000。</p>
<p>2. 准备字体</p>
<p>为了让 Windows 应用程序看上去更美观，所以需要 Windows 下面的字体。</p>
<p>由于我已经将 simsun.ttc 复制到 /usr/share/fonts/windows/ 目录中了。所以我只需要在 ~/.wine/drive_c/windows/fonts/ 目录中为 simsun.ttc 创建一个符号连接：</p>
<p>cd ~/.wine/drive_c/windows/fonts<br />
ln -s /usr/share/fonts/windows/simsun.ttc simsun.ttc<br />
ln -s /usr/share/fonts/windows/simsun.ttc simfang.ttc</p>
<p>创建一个 simfang.ttc 是许多 Windows 应用默认使用 simfang.ttc 字体。<br />
3. 修改 ~/.wine/system.reg</p>
<p>装好字体后，还要修改一下 Wine 的注册表设置，指定与字体相关的设置：</p>
<p>gedit ~/.wine/system.reg</p>
<p>（一定要使用 gedit 或其他支持 gb2312/utf8 编码的编辑器修改这些文件，否则文件中的中文可能变乱码）</p>
<p>搜索： LogPixels<br />
找到的行应该是：[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]<br />
将其中的：<br />
"LogPixels"=dword:00000060</p>
<p>改为：<br />
"LogPixels"=dword:00000070</p>
<p>搜索： FontSubstitutes<br />
找到的行应该是：[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]<br />
将其中的：<br />
"MS Shell Dlg"="Tahoma"<br />
"MS Shell Dlg 2&#8243;="Tahoma"</p>
<p>改为：<br />
"MS Shell Dlg"="SimSun"<br />
"MS Shell Dlg 2&#8243;="SimSun"</p>
<p>4. 修改 ~/.wine/drive_c/windows/win.ini</p>
<p>gedit ~/.wine/drive_c/windows/win.ini<br />
在文件末尾加入：</p>
<p>[Desktop]<br />
menufontsize=13<br />
messagefontsize=13<br />
statusfontsize=13<br />
IconTitleSize=13</p>
<br />
<p><span>&nbsp;&nbsp; 5. <font color="#ff0000">最关键的一步，网上很多文章中没有提到的一步</font>──把下面的代码保存为zh.reg，然后终端执行regedit zh.reg。从Windows目录下的Fonts里的simsun.ttc复制到/home/user/.wine/drive_c/windows/fonts里面。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REGEDIT4<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Arial"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Arial CE,238"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Arial CYR,204"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Arial Greek,161"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Arial TUR,162"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Courier New"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Courier New CE,238"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Courier New CYR,204"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Courier New Greek,161"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Courier New TUR,162"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "FixedSys"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Helv"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Helvetica"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "MS Sans Serif"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "MS Shell Dlg"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "MS Shell Dlg 2"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "System"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Tahoma"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Times"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Times New Roman CE,238"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Times New Roman CYR,204"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Times New Roman Greek,161"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Times New Roman TUR,162"="simsun"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Tms Rmn"="simsun"</span></p>
<p>之后，中文正常显示哈哈！</p>
<br />
此文出处:http://blog.chinaunix.net/u1/41660/showart_1146355.html
<img src ="http://www.blogjava.net/zhouf/aggbug/237405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-10-29 16:38 <a href="http://www.blogjava.net/zhouf/articles/237405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>选择了Emacs</title><link>http://www.blogjava.net/zhouf/articles/235952.html</link><dc:creator>ZhouFeng</dc:creator><author>ZhouFeng</author><pubDate>Wed, 22 Oct 2008 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhouf/articles/235952.html</guid><wfw:comment>http://www.blogjava.net/zhouf/comments/235952.html</wfw:comment><comments>http://www.blogjava.net/zhouf/articles/235952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouf/comments/commentRss/235952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouf/services/trackbacks/235952.html</trackback:ping><description><![CDATA[选择了Emacs。<br />
Emacs被誉为世界上最强的编辑器。<br />
世界上的程序员分三种，一种使用Emacs，一种使用vim，剩余的是其它。<br />
下面是收集的一点Emacs的配置<br />
<div align="left"><font color="#339966">&nbsp;;;去掉启动欢迎界面<br />
(setq inhibit-startup-message t)<br />
<br />
;; 设置窗口大小<br />
(set-frame-height (selected-frame) 30)<br />
(set-frame-width (selected-frame) 90)<br />
<br />
;;不显示工具条<br />
(tool-bar-mode -1)<br />
<br />
;;不要总是没完没了的问yes or no, 为什么不能用 y/n<br />
(fset 'yes-or-no-p 'y-or-n-p)<br />
<br />
;;不要生成临时文件<br />
(setq-default make-backup-files nil)<br />
<br />
;;括号匹配时显示另外一边的括号，而不是烦人的跳到另一个括号。<br />
(show-paren-mode t)<br />
(setq show-paren-style 'parentheses)<br />
<br />
;;打开高亮 #M-x global-font-lock-mode<br />
(global-font-lock-mode t)<br />
<br />
;;把title设置为&#8220;文件名@LC's Emacs"<br />
(setq frame-title-format<br />
'("GNU/Emacs - [ " (buffer-file-name "%f \]"<br />
(dired-directory dired-directory "%b \]"))))<br />
<br />
;;光标靠近鼠标的时候，让鼠标自动让开，别挡住视线<br />
(mouse-avoidance-mode 'animate)<br />
<br />
;; 自动存盘<br />
(setq auto-save-mode t)<br />
<br />
;; 反显选中区域<br />
(transient-mark-mode t)<br />
<br />
(setq load-path (cons "d:/soft/green_soft/ntemacs23/site-lisp/" load-path))<br />
;(add-to-list 'load-path "d:/soft/green_soft/ntemacs23/site-lisp/")<br />
;;(set-scroll-bar-mode nil) ; no scroll bar, even in x-window system<br />
(require 'wb-line-number)<br />
;;缺省显示行号<br />
;;(wb-line-number-enable)<br />
;;显示行号 ＃M-x wb-line-number-toggle</font><br />
</div>
参考网址：<br />
<a href="http://www.emacs.cn/" target="_blank">http://www.emacs.cn</a><br />
<a href="http://www.gnu.org/software/emacs/" target="_blank">http://www.gnu.org/software/emacs/</a><br />
<img src ="http://www.blogjava.net/zhouf/aggbug/235952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouf/" target="_blank">ZhouFeng</a> 2008-10-22 15:53 <a href="http://www.blogjava.net/zhouf/articles/235952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>