<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6301049</id><updated>2011-11-28T07:27:57.181+08:00</updated><category term='eclipse'/><category term='JAVA'/><category term='vi'/><category term='Linux'/><category term='subversion'/><category term='Rails'/><title type='text'>Sisyphus的笔记本</title><subtitle type='html'>一个程序员对他的学习过程和学习心得的记录。这里既包括自己的心得，也包括部分自己认为有用的网络内容摘抄。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6301049.post-2609671284306029064</id><published>2010-08-15T23:54:00.001+08:00</published><updated>2010-08-15T23:54:42.637+08:00</updated><title type='text'>Test to continue update my blog on Google server</title><content type='html'>This is a test blog. I can&amp;#39;t touch my blog site for a long time. The reason is that I can not access by normal way. The Internet was broke by the firewall from our government. I think I can try using email to update my blog. This is the first try.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-2609671284306029064?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/2609671284306029064/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=2609671284306029064' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/2609671284306029064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/2609671284306029064'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2010/08/test-to-continue-update-my-blog-on.html' title='Test to continue update my blog on Google server'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-3733578628886090437</id><published>2007-08-12T22:20:00.000+08:00</published><updated>2007-08-12T22:28:31.508+08:00</updated><title type='text'>vim中打开window下的文本文件乱码问题的解决</title><content type='html'>最近在vim下打开windows平台上写的文本文档，中文都是乱码，从网上爬了半天找到了如下的解决方案：&lt;br /&gt;系统locale是utf-8（很多linux系统默认的locale形式），编辑的文档是GB2312或GBK形式的（Windows记事本默认保存形式，大部分编辑器也默认保存为这个形式，所以最常见），终端类型utf-8（也就是假定客户端是putty类的unicode软件）&lt;br /&gt;则vim打开文档后，encoding=utf-8（locale决定的），fileencoding=latin1（自动编码判断机制不准导致的），termencoding=空（默认无需转换term编码），显示文件为乱码。&lt;br /&gt;解决方案1：首先要修正fileencoding为cp936或者euc-cn（二者一样的，只不过叫法不同），注意修正的方法不是:set fileencoding=cp936，这只是将文件保存为cp936，正确的方法是重新以cp936的编码方式加载文件为:edit ++enc=cp936，可以简写为:e ++enc=cp936。&lt;br /&gt;解决方案2：临时改变vim运行的locale环境，方法是以LANG=zh_CN vim abc.txt的方式来启动vim，则此时encoding=euc-cn（locale决定的），fileencoding=空（此locale下文件编码自动判别功能不启用，所以fileencoding为文件本身编码方式不变，也就是euc-cn），termencoding=空（默认值，为空则等于encoding）此时还是乱码的，因为我们的ssh终端认为接受的数据为utf-8，但vim发送数据为euc-cn，所以还是不对。此时再用命令:set termencoding=utf-8将终端数据输出为utf-8，则显示正常。&lt;br /&gt;在这里http://dawnh.net/index.php?tag=vim有方案的来源。&lt;br /&gt;经过测试,解决方案1有效，解决方案2在我的xubuntu的utf－8系统上不行。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-3733578628886090437?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dawnh.net/index.php?tag=vim' title='vim中打开window下的文本文件乱码问题的解决'/><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/3733578628886090437/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=3733578628886090437' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/3733578628886090437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/3733578628886090437'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/08/vimwindow.html' title='vim中打开window下的文本文件乱码问题的解决'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-4736733905419948850</id><published>2007-08-05T23:46:00.000+08:00</published><updated>2007-08-05T23:55:09.673+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>在ubuntu中禁用和启用触摸板</title><content type='html'>为了解决在笔记本上敲经常受到触摸板的影响，希望能随时把触摸板禁用和启用，在网上查了一下资料，找到了办法，首先确认&lt;br /&gt;系统里有没有synclient命令，如果没有就安装，然后修改/etc/X11/xorg.conf文件在Synaptics Touchpad的Section里增加Option          "SHMConfig"             "true"，&lt;br /&gt;然后编写两个shell，&lt;br /&gt;enabletouch.sh&lt;br /&gt;#!/bin/bash&lt;br /&gt;synclient touchpadoff=0&lt;br /&gt;disabletouch.sh&lt;br /&gt;#!/bin/bash&lt;br /&gt;synclient touchpadoff=1&lt;br /&gt;这样在你想禁用和启用触摸板的时候分别执行以上的shell&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-4736733905419948850?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/4736733905419948850/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=4736733905419948850' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/4736733905419948850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/4736733905419948850'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/08/ubuntu.html' title='在ubuntu中禁用和启用触摸板'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-7709478707578943151</id><published>2007-06-22T13:35:00.000+08:00</published><updated>2007-06-22T13:51:01.143+08:00</updated><title type='text'>ubuntu 7.04安装中grub-install(hd0) err的解决</title><content type='html'>今天在我的机器上安装ubuntu,因为本来有FC4，现在希望两个能并存。所以ubuntu安装在另外一个分区上，简单说一下我的分区情况：&lt;br /&gt;磁盘一开始有一个windowxp,然后建立了三个分区，然后在磁盘剩下的位置建立了FC4的主分区和1G的swap,在使用FC4顺手了以后，把所有的windows分区使用mkfs格式化成了ext3,ubuntu7.04也是在这个分区上安装的，安装前面很顺利，但是到安装grub的时候出现一场grub-install(hd0)错误。怎么也装不上ubuntu。&lt;br /&gt;由于原来安装FC4的时候已经有了grub，就想通过修改FC4上的menu.lst来启动ubuntu，但是失败了，在grub的命令行下，也无法访问安装了ubuntu7.04的磁盘。什么原因呢？&lt;br /&gt;无意中使用fdisk -l看一下分区，发现，原来的windows分区的分区类型还是windows，虽然实际分区已经是ext3了，会不会是这个问题，用fdisk 的t命令修改分区类型为83（linux主分区）。重新安装，OK，一切顺利，装上了！看来grub只看分区表里的分区类型，而linux下的mkfs并不修改分区表里的分区类型,mount的时候不看分区表的分区类型，造成我的windows分区在linux下使用正常，但是grub不认&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-7709478707578943151?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/7709478707578943151/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=7709478707578943151' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/7709478707578943151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/7709478707578943151'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/06/ubuntu-704grub-installhd0-err.html' title='ubuntu 7.04安装中grub-install(hd0) err的解决'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-995734142387708872</id><published>2007-06-19T13:25:00.000+08:00</published><updated>2007-06-19T13:37:13.138+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FC4的swap丢了</title><content type='html'>昨晚在倒腾ubuntu7.04，想让FC4和Ubuntu 7.04并存，搞了一个晚上也没有成功，看来还是GRUB的问题，继续研究吧，今天又进了FC4，一开始使用很正常，可是应用程序一开多，突然系统停止响应就看到硬盘在不挺的闪烁，还以为系统出了什么问题，换到终端下top一看，很正常阿，怎么硬盘老在闪，很快我的eclipse就自己崩溃了，以前从来没有遇到过，再看一下top的内存使用，发现不对劲了，原来是swap丢了!难怪，突然就不响应了，全凭内存在跑阿。放狗一阵狂咬，呵呵，找到了，解决如下：&lt;br /&gt;先mkswap:&lt;br /&gt; /sbin/mkswap -L swap /dev/hda8&lt;br /&gt;然后swapon:&lt;br /&gt;/sbin/swapon /dev/hda8&lt;br /&gt;再在fstab中写/dev/hda8 swap swap defaults 0 0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-995734142387708872?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/995734142387708872/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=995734142387708872' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/995734142387708872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/995734142387708872'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/06/fc4swap.html' title='FC4的swap丢了'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-124307828070505824</id><published>2007-05-30T22:05:00.000+08:00</published><updated>2007-05-30T22:12:01.021+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>让RHEL4可以更新</title><content type='html'>单位的机器上刚装了RHEL4服务器，不过没有购买red hat的服务，怎么更新呢，在网上搜索了一下发现可以通过chinalinuxpub提供的yum更新，安装步骤如下：&lt;br /&gt;下载地址: http://www.chinalinuxpub.com/yum.tgz&lt;br /&gt;tar zxvf yum.tgz &lt;br /&gt;cd yum &lt;br /&gt;rpm -ivh *.rpm&lt;br /&gt;rm -rf /etc/yum.repos.d/CentOS-Base.repo &lt;br /&gt;vi /etc/yum.repos.d/as4-update.repo &lt;br /&gt;加入： &lt;br /&gt;#released updates &lt;br /&gt;[update] &lt;br /&gt;name=Red Hat Enterprise AS release 4 Updates &lt;br /&gt;baseurl=http://ftp.chinalinuxpub.com/redhat/enterprise/updates/4AS/ &lt;br /&gt;gpgcheck=1 &lt;br /&gt;gpgkey=http://ftp.chinalinuxpub.com/redhat/enterprise/RPM-GPG-KEY-linuxpub &lt;br /&gt;vi /etc/yum.repos.d/as4-base.repo &lt;br /&gt;加入： &lt;br /&gt;#released base &lt;br /&gt;[base] &lt;br /&gt;name=Red Hat Enterprise AS release 4 Updates &lt;br /&gt;baseurl=http://ftp.chinalinuxpub.com/redhat/enterprise/os/i***/RedHat/ &lt;br /&gt;gpgcheck=1 &lt;br /&gt;gpgkey=http://ftp.chinalinuxpub.com/redhat/enterprise/RPM-GPG-KEY-linuxpub&lt;br /&gt;这时候yum update会出现&lt;br /&gt;The GPG keys listed for the "Red Hat Enterprise AS release 4 Updates" repository are already installed but they are not correct for this package.&lt;br /&gt;Check that the correct key URLs are configured for this repository.&lt;br /&gt;的错误&lt;br /&gt;这时候rpm --import /usr/share/rhn/RPM-GPG-KEY&lt;br /&gt;yum就可以正常update了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-124307828070505824?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/124307828070505824/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=124307828070505824' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/124307828070505824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/124307828070505824'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/05/rhel4.html' title='让RHEL4可以更新'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-1811081728904534552</id><published>2007-05-16T09:29:00.000+08:00</published><updated>2007-05-16T10:10:15.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>在FC4环境下用javaHL接口通过eclipse访问本地的SVN</title><content type='html'>最近在做一些把CVS向SVN迁移的前期准备工作，由于现在个人的开发平台是FC4，所以目前都是在FC4上做测试。&lt;br /&gt;目前的java开发工具eclipse可以安装subclipse，来提供对subversion的访问支持，为了使用本地的subversion,也就是file:///的库地址。发现FC4上安装盘上提供了subversion 1.2中包括JavaHL版本低于1.3.1，而subclipse 1.0插件必须要JavaHL版本高于1.3.1以上才能正常工作，为了让eclipse可以通过javaHL访问本地SVN，我开始做subversion版本升级。&lt;br /&gt;直接从subversion官网上下rpm安装，发现没有FC4对应的二进制版本，看来只好从源码开始编译了&lt;br /&gt;经过网络搜索和摸索，汇总的安装过程如下。&lt;br /&gt;1、从网上下载apr 1.28,apr-util 1.28,subversion 1.4.0的源代码&lt;br /&gt;2、从源里安装berkeley-db 4.3&lt;br /&gt;3、安装apr 1.28,过程比较简单./configure,make,make install&lt;br /&gt;4、安装apr-util 1.28,安装过程&lt;br /&gt;          ./configure --with-apr=/usr/local/apr  --with-berkeley-db=/usr/lib&lt;br /&gt;          make&lt;br /&gt;          make install&lt;br /&gt;5、安装subversion1.4.0&lt;br /&gt;         ./configure  --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr --with-berkeley-db=/usr/lib --enable-FEATURE=yes --enable-javahl&lt;br /&gt;         make&lt;br /&gt;         make javahl&lt;br /&gt;         make install&lt;br /&gt;         make install-javahl&lt;br /&gt;6、在eclpse.ini里增加-Djava.library.path=/usr/local/lib&lt;br /&gt;现在可以在eclipse里选择javaHL作为SVN接口使用file:///。。。地址了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-1811081728904534552?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/1811081728904534552/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=1811081728904534552' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/1811081728904534552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/1811081728904534552'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/05/fc4javahleclipsesvn.html' title='在FC4环境下用javaHL接口通过eclipse访问本地的SVN'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-6178760256702635841</id><published>2007-04-23T23:55:00.000+08:00</published><updated>2007-04-24T00:11:02.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>整理思路的好工具FreeMind</title><content type='html'>这两天发现了一个整理思路的工具，或者叫mindmap工具，就是FreeMind,虽然版本只有0.9beta但是基本功能已经相当稳定了，使用起来相当顺手，特别是按照思考顺序整理文档的方式，确实很利于整理思路，理清楚关系，FreeMind提供中文界面而且是基于java开发的，在linux下使用会遇到一个问题，就是java的应用程序无法显示中文，打开的freemind上所有的菜单都是方块，这时候就需要你把字体拷贝到&lt;jre目录&gt;/lib/fonts/fallback/目录下，我拷贝的是windows系统的simsun.ttc，这样就可以看到中文的FreeMind了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-6178760256702635841?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/6178760256702635841/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=6178760256702635841' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6178760256702635841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6178760256702635841'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/04/freemind.html' title='整理思路的好工具FreeMind'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-3119009054848367224</id><published>2007-04-22T11:31:00.000+08:00</published><updated>2007-04-22T11:36:39.843+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FireFox的Java插件安装问题解决方法</title><content type='html'>使用FireFox无法自动安装Java的plugin,造成很多网站的aplet无法运行，以下安装方法适用于firefox 2.0.0.3,JDK 1.6：&lt;br /&gt;在firefox安装目录下的 plugins 子目录（我的是/usr/lib/firefox/plugins)下&lt;br /&gt;键入以下命令，在当前目录中创建一个指向 JRE ns7/libjavaplugin_oji.so 文件的符号链接：&lt;br /&gt;ln -s &lt;JRE 安装目录&gt;/jre/plugin/i386/ns7/libjavaplugin_oji.so &lt;br /&gt;然后重起firefox就可以了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-3119009054848367224?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/3119009054848367224/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=3119009054848367224' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/3119009054848367224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/3119009054848367224'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/04/firefoxjava.html' title='FireFox的Java插件安装问题解决方法'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-806298511572973683</id><published>2007-04-02T16:31:00.000+08:00</published><updated>2007-04-02T16:32:17.560+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Bash 使用技巧大补贴（转）</title><content type='html'>Bash 是我们经常与之打交道的 Shell 程序，本文针对其使用技巧进行了搜罗。相信在你看过这些内容之后，定会在 Bash 的世界里游刃有余。&lt;br /&gt;&lt;br /&gt;    * 从历史中执行命令&lt;br /&gt;&lt;br /&gt;      有时候，我们需要在 Bash 中重复执行先前的命令。你当然可以使用上方向键来查看之前曾经运行过的命令。但这里有一种更好的方式：你可以按 Ctrl + r 组合键进入历史搜索模式，一旦找到需要重复执行的命令，按回车键即可。&lt;br /&gt;    * 重复命令参数&lt;br /&gt;&lt;br /&gt;      先来看一个例子：&lt;br /&gt;&lt;br /&gt;      mkdir /path/to/exampledir&lt;br /&gt;      cd !$&lt;br /&gt;&lt;br /&gt;      本例中，第一行命令将创建一个目录，而第二行的命令则转到刚创建的目录。这里，“!$”的作用就是重复前一个命令的参数。事实上，不仅是命令的参数可以重复，命令的选项同样可以。另外，Esc + . 快捷键可以切换这些命令参数或选项。&lt;br /&gt;    * 用于编辑的快捷键&lt;br /&gt;          o Ctrl + a：将光标定位到命令的开头&lt;br /&gt;          o Ctrl + e：与上一个快捷键相反，将光标定位到命令的结尾&lt;br /&gt;          o Ctrl + u：剪切光标之前的内容&lt;br /&gt;          o Ctrl + k：与上一个快捷键相反，剪切光标之后的内容&lt;br /&gt;          o Ctrl + y：粘贴以上两个快捷键所剪切的内容&lt;br /&gt;          o Ctrl + t：交换光标之前两个字符的顺序&lt;br /&gt;          o Ctrl + w：删除光标左边的参数（选项）或内容&lt;br /&gt;          o Ctrl + l：清屏&lt;br /&gt;    * 处理作业&lt;br /&gt;&lt;br /&gt;      首先，使用 Ctrl + z 快捷键可以让正在执行的命令挂起。如果要让该进程在后台执行，那么可以执行 bg 命令。而 fg 命令则可以让该进程重新回到前台来。使用 jobs 命令能够查看到哪些进程在后台执行。&lt;br /&gt;&lt;br /&gt;      你也可以在 fg 或 bg 命令中使用作业 id，如：&lt;br /&gt;      fg %3&lt;br /&gt;&lt;br /&gt;      又如：&lt;br /&gt;      bg %7&lt;br /&gt;    * 使用置换&lt;br /&gt;          o 命令置换&lt;br /&gt;&lt;br /&gt;            先看例子：&lt;br /&gt;            du -h -a -c $(find . -name *.conf 2&gt;&amp;-)&lt;br /&gt;&lt;br /&gt;            注意 $() 中的部分，这将告诉 Bash 运行 find 命令，然后把返回的结果作为 du 的参数。&lt;br /&gt;          o 进程置换&lt;br /&gt;&lt;br /&gt;            仍然先看例子：&lt;br /&gt;            diff &lt;(ps axo comm) &lt;(ssh user@host ps axo comm)&lt;br /&gt;&lt;br /&gt;            该命令将比较本地系统和远程系统中正在运行的进程。请注意 &lt;() 中的部分。&lt;br /&gt;          o xargs&lt;br /&gt;&lt;br /&gt;            看例：&lt;br /&gt;            find . -name *.conf -print0 | xargs -0 grep -l -Z mem_limit | xargs -0 -i cp {} {}.bak&lt;br /&gt;&lt;br /&gt;            该命令将备份当前目录中的所有 .conf 文件。 &lt;br /&gt;    * 使用管道&lt;br /&gt;&lt;br /&gt;      下面是一个简单的使用管道的例子：&lt;br /&gt;      ps aux | grep init&lt;br /&gt;&lt;br /&gt;      这里，“|”操作符将 ps aux 的输出重定向给 grep init。&lt;br /&gt;&lt;br /&gt;      下面还有两个稍微复杂点的例子：&lt;br /&gt;      ps aux | tee filename | grep init&lt;br /&gt;&lt;br /&gt;      及：&lt;br /&gt;      ps aux | tee -a filename | grep init&lt;br /&gt;    * 将标准输出保存为文件&lt;br /&gt;&lt;br /&gt;      你可以将命令的标准输出内容保存到一个文件中，举例如下：&lt;br /&gt;      ps aux &gt; filename&lt;br /&gt;&lt;br /&gt;      注意其中的“&gt;”符号。&lt;br /&gt;&lt;br /&gt;      你也可以将这些输出内容追加到一个已存在的文件中：&lt;br /&gt;      ps aux &gt;&gt; filename&lt;br /&gt;&lt;br /&gt;      你还可以分割一个较长的行：&lt;br /&gt;      command1 | command2 | ... | commandN &gt; tempfile1&lt;br /&gt;      cat tempfile1 | command1 | command2 | ... | commandN &gt; tempfile2&lt;br /&gt;    * 标准流：重定向与组合&lt;br /&gt;&lt;br /&gt;      重定向流的例子：&lt;br /&gt;      ps aux 2&gt;&amp;1 | grep init&lt;br /&gt;&lt;br /&gt;      这里的数字代表：&lt;br /&gt;          o 0：stdin&lt;br /&gt;          o 1：stdout&lt;br /&gt;          o 2：sterr&lt;br /&gt;&lt;br /&gt;      上面的命令中，“grep init”不仅搜索“ps aux”的标准输出，而且搜索 sterr 输出。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-806298511572973683?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://linuxtoy.org/archives/the-best-tips-and-tricks-for-bash.html' title='Bash 使用技巧大补贴（转）'/><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/806298511572973683/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=806298511572973683' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/806298511572973683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/806298511572973683'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/04/bash.html' title='Bash 使用技巧大补贴（转）'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-4816293514105505699</id><published>2007-03-18T18:21:00.000+08:00</published><updated>2007-03-19T11:07:50.709+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux常见命令（2）</title><content type='html'>&lt;table border="1" bordercolor="black" cols="3" width="380"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" width="185"&gt;命令&lt;/td&gt;&lt;td width="190"&gt;描述&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;apropos word&lt;/td&gt;&lt;td width="190"&gt;显示和word相关的命令。 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/threadsafe"&gt;线程安全&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;which command&lt;/td&gt;&lt;td width="190"&gt;显示命令的完整路径名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;time command&lt;/td&gt;&lt;td width="190"&gt;计算命令运行的时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;time cat&lt;/td&gt;&lt;td width="190"&gt;开始计时. Ctrl-d停止。参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/sw"&gt;sw&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;nice&lt;u&gt;&lt;a href="http://www.pixelbeat.org/lkdb/info.html"&gt; info&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;td width="190"&gt;运行一个低优先级命令（这里是info）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;renice 19 -p $$&lt;/td&gt;&lt;td width="190"&gt;使脚本运行于低优先级。用于非交互任务。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;look prefix&lt;/td&gt;&lt;td width="190"&gt;在（有序）字典中快速查找&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;grep &lt;u&gt;&lt;a href="http://www.pixelbeat.org/settings/.bashrc"&gt;--color&lt;/a&gt;&lt;/u&gt; expr...ion /usr/share/dict/words&lt;/td&gt;&lt;td width="190"&gt;使字典中匹配的正则表达式高亮&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;gpg -c file&lt;/td&gt;&lt;td width="190"&gt;文件加密&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;gpg file.gpg&lt;/td&gt;&lt;td width="190"&gt;文件解密&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;alias hd='od -Ax -tx1z -v'&lt;/td&gt;&lt;td width="190"&gt;方便的十六进制输出。 (用法举例: • hd /proc/self/cmdline | less)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;alias realpath='readlink -f'&lt;/td&gt;&lt;td width="190"&gt;显示符号链接指向的真实路径((用法举例: • realpath ~/../$USER)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;set | grep $USER&lt;/td&gt;&lt;td width="190"&gt;在当前&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/env.html"&gt;环境&lt;/a&gt;&lt;/u&gt;中查找$ USER&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ls /usr/bin | pr -T9 -W$COLUMNS&lt;/td&gt;&lt;td width="190"&gt;在当前终端宽度上打印9列输出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;touch -c -t 0304050607 file&lt;/td&gt;&lt;td width="190"&gt; 改变文件的时间标签 (YYMMDDhhmm)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;目录操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cd -&lt;/td&gt;&lt;td width="190"&gt;回到前一目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cd&lt;/td&gt;&lt;td width="190"&gt;回到用户目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;(cd dir &amp;amp;&amp; command)&lt;/td&gt;&lt;td width="190"&gt;进入目录dir，执行命令command然后回到当前目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;pushd .&lt;/td&gt;&lt;td width="190"&gt;将当前目录压入栈，以后你可以使用popd回到此目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;光盘&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;gzip &amp;lt; /dev/cdrom &amp;gt; cdrom.iso.gz&lt;/td&gt;&lt;td width="190"&gt;保存光盘拷贝&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;mkisofs -V NAME -r dir | gzip &amp;gt; cdrom.iso.gz&lt;/td&gt;&lt;td width="190"&gt;建立目录dir的光盘镜像&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;mount -o loop cdrom.iso /mnt/dir&lt;/td&gt;&lt;td width="190"&gt;将光盘镜像挂载到 /mnt/dir (只读)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;cdrecord -v dev=/dev/cdrom blank=fast&lt;/td&gt;&lt;td width="190"&gt;清空一张CDRW&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -&lt;/td&gt;&lt;td width="190"&gt;烧录光盘镜像 (使用 dev=ATAPI -scanbus 来确认该使用的 dev)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;cdparanoia -B&lt;/td&gt;&lt;td width="190"&gt;在当前目录下将光盘音轨转录成wav文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;cdrecord -v dev=/dev/cdrom -audio *.wav&lt;/td&gt;&lt;td width="190"&gt;将当前目录下的wav文件烧成音乐光盘 (参见cdrdao)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'&lt;/td&gt;&lt;td width="190"&gt;将wav文件转换成ogg格式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;归档&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;tar c dir/ | bzip2 &amp;gt; dir.tar.bz2&lt;/td&gt;&lt;td width="190"&gt;将目录dir/压缩打包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;bzip2 -dc dir.tar.bz2 | tar x&lt;/td&gt;&lt;td width="190"&gt;展开压缩包 (对tar.gz文件使用gzip而不是bzip2)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;tar c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'&lt;/td&gt;&lt;td width="190"&gt;目录dir/压缩打包并放到远程机器上&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find dir/ -name '*.txt' | tar c --files-from=- | bzip2 &amp;gt; dir_txt.tar.bz2&lt;/td&gt;&lt;td width="190"&gt;将目录dir/及其子目录下所有.txt文件打包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents&lt;/td&gt;&lt;td width="190"&gt;将目录dir/及其子目录下所有.txt按照目录结构拷贝到dir_txt/&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;( tar c /dir/to/copy ) | ( cd /where/to/ &amp;amp;&amp; tar x -p )&lt;/td&gt;&lt;td width="190"&gt;拷贝目录copy/到目录/where/to/并保持文件属性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;( cd /dir/to/copy &amp;amp;&amp; tar c . ) | ( cd /where/to/ &amp;amp;&amp; tar x -p )&lt;/td&gt;&lt;td width="190"&gt;拷贝目录copy/下的所有文件到目录/where/to/并保持文件属性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;( tar c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ &amp;amp;&amp; tar x -p'&lt;/td&gt;&lt;td width="190"&gt;拷贝目录copy/到远程目录/where/to/并保持文件属性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;dd bs=1M if=/dev/hda | gzip | ssh user@remote 'dd of=hda.gz'&lt;/td&gt;&lt;td width="190"&gt;将整个硬盘备份到远程机器上&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;rsync (使用 --dry-run选项进行测试)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;rsync -P rsync://rsync.server.com/path/to/file file&lt;/td&gt;&lt;td width="190"&gt;只获取diffs.当下载有问题时可以作多次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;rsync --bwlimit=1000 fromfile tofile&lt;/td&gt;&lt;td width="190"&gt;有速度限制的本地拷贝，对I/O有利&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'&lt;/td&gt;&lt;td width="190"&gt;镜像网站(使用压缩和加密)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;rsync -auz -e ssh remote:/dir/ . &amp;amp;&amp; rsync -auz -e ssh . remote:/dir/&lt;/td&gt;&lt;td width="190"&gt;同步当前目录和远程目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;文件搜索&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;alias l='ls -l --color=auto'&lt;/td&gt;&lt;td width="190"&gt;单字符文件列表命令&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ls -lrt&lt;/td&gt;&lt;td width="190"&gt;按日期显示文件. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/newest"&gt;newest&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find -name '*.[ch]' | xargs grep -E 'expr'&lt;/td&gt;&lt;td width="190"&gt;在当前目录及其子目录下所有.c和.h文件中寻找'expr'. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/findrepo"&gt;findrepo&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find -type f -print0 | xargs -r0 grep -F 'string'&lt;/td&gt;&lt;td width="190"&gt;在当前目录及其子目录中的常规文件中查找字符串'string'&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find -maxdepth 1 -type f | xargs grep -F 'string'&lt;/td&gt;&lt;td width="190"&gt;在当前目录下查找字符串'string'&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;find -maxdepth 1 -type d | while &lt;u&gt;&lt;a href="http://www.pixelbeat.org/programming/readline/"&gt;read&lt;/a&gt;&lt;/u&gt; dir; do echo $dir; echo cmd2; done&lt;/td&gt;&lt;td width="190"&gt;对每一个找到的文件执行多个命令(使用while循环)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;find -type f ! -perm -444&lt;/td&gt;&lt;td width="190"&gt;寻找所有不可读的文件(对网站有用)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;find -type d ! -perm -111&lt;/td&gt;&lt;td width="190"&gt;寻找不可访问的目录(对网站有用)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;locate -r 'file[^/]*\.txt'&lt;/td&gt;&lt;td width="190"&gt;使用locate 查找所有符合*file*.txt的文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;网络(ifconfig, route, mii-tool, nslookup 命令皆已过时)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ip link show&lt;/td&gt;&lt;td width="190"&gt;显示interface列表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;ethtool interface&lt;/td&gt;&lt;td width="190"&gt;显示interface状态&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;ip link set dev eth0 name wan&lt;/td&gt;&lt;td width="190"&gt;重命名eth0为wan&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;ip addr add 1.2.3.4/24 brd + dev eth0&lt;/td&gt;&lt;td width="190"&gt;添加ip和掩码(255.255.255.0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;ip link set dev interface up&lt;/td&gt;&lt;td width="190"&gt;启动interface(或关闭)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;ip route add default via 1.2.3.254&lt;/td&gt;&lt;td width="190"&gt;设置默认网关1.2.3.254&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;tc qdisc add dev lo root handle 1:0 netem delay 20msec&lt;/td&gt;&lt;td width="190"&gt;增加20ms传输时间到loopback设备(调试用)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;tc qdisc del dev lo root&lt;/td&gt;&lt;td width="190"&gt;移除上面添加的传输时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;host pixelbeat.org&lt;/td&gt;&lt;td width="190"&gt;查找给定名字的ip地址，反之亦然&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;hostname -i&lt;/td&gt;&lt;td width="190"&gt;查找本地ip地址(相当于host `hostname`)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;netstat -tupl&lt;/td&gt;&lt;td width="190"&gt;列出系统中的internet服务&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;netstat -tup&lt;/td&gt;&lt;td width="190"&gt;列出活跃的连接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;wget (多用途下载工具)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;(cd cmdline &amp;amp;&amp; wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)&lt;/td&gt;&lt;td width="190"&gt;在当前目录中下载指定网页及其相关的文件使其可完全浏览&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget -c http://www.example.com/large.file&lt;/td&gt;&lt;td width="190"&gt;继续上次未完的下载&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/&lt;/td&gt;&lt;td width="190"&gt;批量下载文件到当前目录中&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget ftp://remote/file[1-9].iso/&lt;/td&gt;&lt;td width="190"&gt;下载FTP站上的整个目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head&lt;/td&gt;&lt;td width="190"&gt;直接处理输出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;echo 'wget url' | at 01:00&lt;/td&gt;&lt;td width="190"&gt;在下午一点钟下载指定文件到当前目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget --limit-rate=20k url&lt;/td&gt;&lt;td width="190"&gt;限制下载速度(这里限制到20KB/s)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget -nv --spider --force-html -i bookmarks.html&lt;/td&gt;&lt;td width="190"&gt;检查文件中的链接是否存在&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;wget --mirror http://www.example.com/&lt;/td&gt;&lt;td width="190"&gt;更新网站的本地拷贝(可以方便地用于cron)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;windows (samba提供所有windows相关的网络支持)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;smbtree&lt;/td&gt;&lt;td width="190"&gt;寻找一个windows主机. 参见findsmb&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;nmblookup -A 1.2.3.4&lt;/td&gt;&lt;td width="190"&gt;寻找一个指定ip的windows (netbios)名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;smbclient -L windows_box&lt;/td&gt;&lt;td width="190"&gt;显示在windows主机或samba服务器上的所有共享&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share&lt;/td&gt;&lt;td width="190"&gt;挂载一个windows共享&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;echo 'message' | smbclient -M windows_box&lt;/td&gt;&lt;td width="190"&gt;发送一个弹出信息到windows主机(XP sp2默认关闭此功能)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;数学&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo '(1 + sqrt(5))/2' | bc -l&lt;/td&gt;&lt;td width="190"&gt;方便的计算器(计算 φ)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cho 'obase=16; ibase=10; 123' | bc&lt;/td&gt;&lt;td width="190"&gt;进制转换(十进制到十六进制)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo $((0x2dec))&lt;/td&gt;&lt;td width="190"&gt;进制转换(十六进制到十进制)((shell数学扩展))&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc&lt;/td&gt;&lt;td width="190"&gt;更复杂地计算，这里计算了最大的FastE包率&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python&lt;/td&gt;&lt;td width="190"&gt;Python处理数值的科学表示法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist&lt;/td&gt;&lt;td width="190"&gt;显示FastE包率相对于包大小的图形&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;文本操作 (sed使用标准输入和标准输出，如果想要编辑文件，则需添加&amp;lt;oldfile &amp;gt;newfile)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed 's/string1/string2/g'&lt;/td&gt;&lt;td width="190"&gt;使用string2替换string1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed 's/\(.*\)1/\12/g'&lt;/td&gt;&lt;td width="190"&gt;将任何以1结尾的字符串替换为以2结尾的字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed '/ *#/d; /^ *$/d'&lt;/td&gt;&lt;td width="190"&gt;删除注释和空白行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed ':a; /\\$/N; s/\\\n//; ta'&lt;/td&gt;&lt;td width="190"&gt;连接结尾有\的行和其下一行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed 's/[ \t]*$//'&lt;/td&gt;&lt;td width="190"&gt;删除每行后的空白&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed 's/\([\\`\\"$\\\\]\)/\\\1/g'&lt;/td&gt;&lt;td width="190"&gt;将所有转义字符之前加上\&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed -n '1000p;1000q'&lt;/td&gt;&lt;td width="190"&gt;输出第一千行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed -n '10,20p;20q'&lt;/td&gt;&lt;td width="190"&gt;输出第10-20行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sed -n 's/.*&amp;lt;[tT][iI][tT][lL][eE]&amp;gt;\(.*\)&amp;lt;\/[tT][iI][tT][lL][eE]&amp;gt;.*/\1/p;T;q'&lt;/td&gt;&lt;td width="190"&gt;输出HTML文件的&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;字段中的 内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;sort -t. -k1,1n -k2,2n -k3,3n -k4,4n&lt;/td&gt;&lt;td width="190"&gt;排序IPV4地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo 'Test' | tr '[:lower:]' '[:upper:]'&lt;/td&gt;&lt;td width="190"&gt;转换成大写&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;tr -dc '[:print:]' &amp;lt; /dev/urandom&lt;/td&gt;&lt;td width="190"&gt;过滤掉不能打印的字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;grep 'processor' /proc/cpuinfo | wc -l&lt;/td&gt;&lt;td width="190"&gt;计算指定单词出现的次数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;集合操作 (如果是英文文本的话&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/env.html"&gt;LANG=C&lt;/a&gt;&lt;/u&gt;可以提高速度)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C sort file1 file2 | uniq&lt;/td&gt;&lt;td width="190"&gt;两个未排序文件的并集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C sort file1 file2 | uniq -d&lt;/td&gt;&lt;td width="190"&gt;两个未排序文件的交集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C sort file1 file1 file2 | uniq -u&lt;/td&gt;&lt;td width="190"&gt;两个未排序文件的差集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C sort file1 file2 | uniq -u&lt;/td&gt;&lt;td width="190"&gt;两个未排序文件的对称差集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C comm file1 file2 | sed 's/^\t*//'&lt;/td&gt;&lt;td width="190"&gt;两个有序文件的并集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C comm -12 file1 file2&lt;/td&gt;&lt;td width="190"&gt;两个有序文件的交集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C comm -13 file1 file2&lt;/td&gt;&lt;td width="190"&gt;两个有序文件的差集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;LANG=C comm -3 file1 file2 | sed 's/^\t*//'&lt;/td&gt;&lt;td width="190"&gt;两个有序文件的对称差集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;日历&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cal -3&lt;/td&gt;&lt;td width="190"&gt;显示一日历&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cal 9 1752&lt;/td&gt;&lt;td width="190"&gt;显示指定月，年的日历&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;date -d fri&lt;/td&gt;&lt;td width="190"&gt;这个星期五是几号. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/day"&gt;day&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;date --date='25 Dec' +%A&lt;/td&gt;&lt;td width="190"&gt;今年的圣诞节是星期几&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;date --date '1970-01-01 UTC 1234567890 seconds'&lt;/td&gt;&lt;td width="190"&gt;将一相对于1970-01-01 00：00的秒数转换成时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;TZ=':America/Los_Angeles' date&lt;/td&gt;&lt;td width="190"&gt;显示当前的美国西岸时间(使用tzselect寻找时区)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;echo "mail -s 'get the train' P@draigBrady.com &amp;lt; /dev/null" | at 17:45&lt;/td&gt;&lt;td width="190"&gt;在指定的时间发送邮件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"&lt;/td&gt;&lt;td width="190"&gt;在给定的时间弹出对话框&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;locales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;printf "%'d\n" 1234&lt;/td&gt;&lt;td width="190"&gt;根据locale输出正确的数字分隔&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo "I live in `locale territory`"&lt;/td&gt;&lt;td width="190"&gt;从locale数据库中展开信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;locale | cut -d= -f1 | xargs locale -kc | less&lt;/td&gt;&lt;td width="190"&gt;显示在locale数据库中的所有字段&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;LANG=en_IE.utf8 locale int_prefix&lt;/td&gt;&lt;td width="190"&gt;查找指定地区的locale信息。参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/ccodes"&gt;ccodes&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;磁盘空间 (参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/fslint/"&gt;FSlint)&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ls -lSr&lt;/td&gt;&lt;td width="190"&gt;按文件大小降序显示文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;du -s * | sort -k1,1rn | head&lt;/td&gt;&lt;td width="190"&gt;显示当前目录下占用空间最大的一批文件. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/dutop"&gt;dutop&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;df -h&lt;/td&gt;&lt;td width="190"&gt;显示空余的磁盘空间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;df -i&lt;/td&gt;&lt;td width="190"&gt;显示空余的inode&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;fdisk -l&lt;/td&gt;&lt;td width="190"&gt;显示磁盘分区大小和类型（在root下执行）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/packaging.html"&gt;rpm&lt;/a&gt;&lt;/u&gt; -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n&lt;/td&gt;&lt;td width="190"&gt;显示所有在rpm发布版上安装的&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/packaging.html"&gt;包&lt;/a&gt;&lt;/u&gt;，并以包字节大小为序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/packaging.html"&gt;dpkg&lt;/a&gt;&lt;/u&gt;-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n&lt;/td&gt;&lt;td width="190"&gt;显示所有在deb发布版上安装的&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/packaging.html"&gt;包&lt;/a&gt;&lt;/u&gt;，并以KB包大小为序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;dd bs=1 seek=2TB if=/dev/null of=ext3.test&lt;/td&gt;&lt;td width="190"&gt;建立一个大的测试文件（不占用空间）. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/truncate"&gt;truncate&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;监视/调试&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;strace -c ls &amp;gt;/dev/null&lt;/td&gt;&lt;td width="190"&gt;总结/剖析命令进行的系统调用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;strace -f -e open ls &amp;gt;/dev/null&lt;/td&gt;&lt;td width="190"&gt;显示命令进行的系统调用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ltrace -f -e getenv ls &amp;gt;/dev/null&lt;/td&gt;&lt;td width="190"&gt;显示命令调用的库函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;lsof -p $$&lt;/td&gt;&lt;td width="190"&gt;显示当前进程打开的文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;lsof ~&lt;/td&gt;&lt;td width="190"&gt;显示打开用户目录的进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;tcpdump not port 22&lt;/td&gt;&lt;td width="190"&gt;显示除了ssh外的网络交通. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/tcpdump_not_me"&gt;tcpdump_not_me&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ps -e -o pid,args --forest&lt;/td&gt;&lt;td width="190"&gt;以树状结构显示进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'&lt;/td&gt;&lt;td width="190"&gt;以CPU占用率为序显示进程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS&lt;/td&gt;&lt;td width="190"&gt;以内存使用量为序显示进程. 参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/ps_mem.py"&gt;ps_mem.py&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ps -C firefox-bin -L -o pid,tid,pcpu,state&lt;/td&gt;&lt;td width="190"&gt;显示指定进程的所有线程信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;ps -p 1,2&lt;/td&gt;&lt;td width="190"&gt;显示指定进程ID的进程信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;last reboot&lt;/td&gt;&lt;td width="190"&gt;显示系统重启记录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;free -m&lt;/td&gt;&lt;td width="190"&gt;显示(剩余的)内存总量(-m以MB为单位显示)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;watch -n1 'cat /proc/interrupts'&lt;/td&gt;&lt;td width="190"&gt;监测文件/proc/interrupts的变化&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;系统信息 (参见&lt;u&gt;&lt;a href="http://www.pixelbeat.org/scripts/sysinfo"&gt;sysinfo)&lt;/a&gt;&lt;/u&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;hdparm -i /dev/hda&lt;/td&gt;&lt;td width="190"&gt;显示关于磁盘hda的信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;hdparm -tT /dev/hda&lt;/td&gt;&lt;td width="190"&gt;检测磁盘hda的读取速度&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;badblocks -s /dev/hda&lt;/td&gt;&lt;td width="190"&gt;检测磁盘hda上所有的坏扇区&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;mount | column -t&lt;/td&gt;&lt;td width="190"&gt;显示所有挂载的文件系统并对齐输出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;cat /proc/partitions&lt;/td&gt;&lt;td width="190"&gt;显示所有在系统中注册的分区&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;grep MemTotal /proc/meminfo&lt;/td&gt;&lt;td width="190"&gt;显示系统可见的内存总量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;grep "model name" /proc/cpuinfo&lt;/td&gt;&lt;td width="190"&gt;显示CPU信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;lspci -tv&lt;/td&gt;&lt;td width="190"&gt;显示PCI信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;lsusb -tv&lt;/td&gt;&lt;td width="190"&gt;显示USB信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;recode (iconv, dos2unix, unix2dos 已经过时了)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;recode -l | less&lt;/td&gt;&lt;td width="190"&gt;显示所有有效的字符集及其别名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode windows-1252.. file_to_change.txt&lt;/td&gt;&lt;td width="190"&gt;转换Windows下的ansi文件到当前的字符集(自动进行回车换行符的转换)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode utf-8/CRLF.. file_to_change.txt&lt;/td&gt;&lt;td width="190"&gt;转换Windows下的ansi文件到当前的字符集&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode iso-8859-15..utf8 file_to_change.txt&lt;/td&gt;&lt;td width="190"&gt;转换Latin9（西欧）字符集文件到utf8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode ../b64 &amp;lt; file.txt &amp;gt; file.b64&lt;/td&gt;&lt;td width="190"&gt;Base64编码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode /qp.. &amp;lt; file.txt &amp;gt; file.qp&lt;/td&gt;&lt;td width="190"&gt;Quoted-printable格式解码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt; &lt;/td&gt;&lt;td width="170"&gt;recode ..HTML &amp;lt; file.txt &amp;gt; file.html&lt;/td&gt;&lt;td width="190"&gt;将文本文件转换成HTML&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;recode -lf windows-1252 | grep euro&lt;/td&gt;&lt;td width="190"&gt;在&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/utf8.html"&gt;字符表&lt;/a&gt;&lt;/u&gt;中查找欧元符号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo -n 0x80 | recode latin-9/x1..dump&lt;/td&gt;&lt;td width="190"&gt;显示字符在latin-9中的字符映射&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo -n 0x20AC | recode ucs-2/x2..latin-9/x&lt;/td&gt;&lt;td width="190"&gt;显示latin-9编码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;echo -n 0x20AC | recode ucs-2/x2..utf-8/x&lt;/td&gt;&lt;td width="190"&gt;显示utf-8编码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;交互&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;&lt;u&gt;&lt;a href="http://www.pixelbeat.org/lkdb/mc.html"&gt;mc&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;td width="190"&gt;强大的文件管理器，可以浏览rpm, tar, ftp, ssh, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;&lt;u&gt;&lt;a href="http://www.pixelbeat.org/lkdb/screen.html"&gt;screen&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;td width="190"&gt;多窗口的虚拟终端, ...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;links&lt;/td&gt;&lt;td width="190"&gt;网页浏览器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;&lt;u&gt;&lt;a href="http://www.pixelbeat.org/docs/ssia/ssia.html"&gt;gnuplot&lt;/a&gt;&lt;/u&gt;&lt;/td&gt;&lt;td width="190"&gt;交互式并可进行脚本编程的画图工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="15"&gt;＊&lt;/td&gt;&lt;td width="170"&gt;octave&lt;/td&gt;&lt;td width="190"&gt;类似于matlab的工具&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-4816293514105505699?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.pixelbeat.org/cmdline_zh_CN.html' title='Linux常见命令（2）'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/4816293514105505699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/4816293514105505699'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/03/linux2.html' title='Linux常见命令（2）'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-6130809667353299018</id><published>2007-03-12T00:36:00.000+08:00</published><updated>2007-03-12T00:37:26.516+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>有用的 Linux 命令(转)</title><content type='html'>&lt;ol&gt;&lt;li&gt;arch：显示处理器的架构类型&lt;/li&gt;&lt;li&gt;cat：查看文件的内容，如 &lt;code&gt;cat lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;cd：更改工作目录，如 &lt;code&gt;cd /bin&lt;/code&gt;&lt;/li&gt;&lt;li&gt;cksum：查看 CRC 校验和及文件的字节数，如 &lt;code&gt;cksum lorem.txt moo.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;cp：复制文件，如 &lt;code&gt;cp lorem.txt copy_of_lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;date：显示当前的日期和时间&lt;/li&gt;&lt;li&gt;df：查看磁盘的占用空间及可用空间&lt;/li&gt;&lt;li&gt;du：查看目录的占用空间，如 &lt;code&gt;du -h /bin&lt;/code&gt;&lt;/li&gt;&lt;li&gt;echo：回显文本，如 &lt;code&gt;echo foobar&lt;/code&gt;&lt;/li&gt;&lt;li&gt;groups：查看你的帐号属于哪些用户组&lt;/li&gt;&lt;li&gt;hostname：显示主机名称&lt;/li&gt;&lt;li&gt;id：查看用户 id、组 id 及你帐号的组&lt;/li&gt;&lt;li&gt;man：阅读手册页，如 &lt;code&gt;man bash&lt;/code&gt;&lt;/li&gt;&lt;li&gt;md5sum：查看文件的 MD5 值，如 &lt;code&gt;md5sum lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;mkdir：创建目录，如 &lt;code&gt;mkdir foobar&lt;/code&gt;&lt;/li&gt;&lt;li&gt;mv：移动或重命名文件，如 &lt;code&gt;mv lorem.txt ipsum.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;ping：ping 主机，如 &lt;code&gt;ping -c 2 127.0.0.1&lt;/code&gt;&lt;/li&gt;&lt;li&gt;ps：查看正在运行的进程&lt;/li&gt;&lt;li&gt;pwd：查看当前工作的目录&lt;/li&gt;&lt;li&gt;sha1sum：查看文件的 SHA1 值，如 &lt;code&gt;sha1sum lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;stat：查看文件的状态，如 &lt;code&gt;stat lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;rm：删除文件或目录，如 &lt;code&gt;rm lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;rmdir：删除目录，如 &lt;code&gt;rmdir foobar&lt;/code&gt;&lt;/li&gt;&lt;li&gt;touch：更改文件的访问及修改时间戳，如果该文件不存在，则创建它，如 &lt;code&gt;touch lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;tty：查看当前终端的名称&lt;/li&gt;&lt;li&gt;uname：查看系统、主机名称、内核版本、日期与时间、以及处理器等信息，如 &lt;code&gt;uname -a&lt;/code&gt;&lt;/li&gt;&lt;li&gt;uptime：查看系统已经运行了多长的时间&lt;/li&gt;&lt;li&gt;w：查看谁登录及他们在干什么&lt;/li&gt;&lt;li&gt;wc：统计文件的行数，如 &lt;code&gt;wc -l lorem.txt&lt;/code&gt;&lt;/li&gt;&lt;li&gt;who：查看谁登录了系统&lt;/li&gt;&lt;li&gt;whoami：查看你的用户名（或帐号名）&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-6130809667353299018?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/6130809667353299018/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=6130809667353299018' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6130809667353299018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6130809667353299018'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/03/linux.html' title='有用的 Linux 命令(转)'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-8273716154043756667</id><published>2007-03-10T13:57:00.000+08:00</published><updated>2007-03-12T00:39:25.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>如何从源码包安装软件？（转贴）</title><content type='html'>原文：http://www.linuxsir.org/bbs/showthread.php?p=1447471#post1447471&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如何从源码包安装软件？&lt;br /&gt;&lt;br /&gt;从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件&lt;br /&gt;&lt;br /&gt;它会告诉你怎样才能成功安装&lt;br /&gt;通常从源码包安装软件的步骤是：&lt;br /&gt;tar jxvf gtk+-2.4.13.tar.bz2 解开源码包&lt;br /&gt;cd gtk+-2.4.13/ 进入源码目录&lt;br /&gt;./configure 似乎在某些环境下./configure会造成终端退出&lt;br /&gt;而使用. configure则会正常运行,如果有这个现象，就试试 . configure&lt;br /&gt;&lt;br /&gt;通过configure程序猜测主机信息，最终建立Makefile,以完成make，所以如果./configure不成功&lt;br /&gt;而去make的话,就会出现"make: *** No targets specified and no makefile found. Stop."&lt;br /&gt;make 当./configure成功结束后，就开始正式编译程序了.&lt;br /&gt;make install 编译成功后使用make install安装&lt;br /&gt;make uninstall 某些软件支持卸载，可能使用该方法卸载，如果支持的话，通常会在README中写到(似乎比较少)&lt;br /&gt;&lt;br /&gt;configure程序带有很多参数，可以通过 ./configure --help 查看详细内容,通常位于前面的是常规configure的&lt;br /&gt;参数说明，末尾是该程序的可用参数说明。&lt;br /&gt;./configure --prefix=/usr 指定安装目录，通常从源码包编译安装的软件默认会放在/usr/local下&lt;br /&gt;因为这是FHS(Filesystem Hierarchy Standard)的规定，不知道什么是FHS？看看这篇文章吧：&lt;br /&gt;http://www.pathname.com/fhs/pub/fhs-2.3.html 相信它会让你对linux系统结构有更好的理解，很值得读读。&lt;br /&gt;&lt;br /&gt;再说一下几个关系到能否成功编译的东东：/etc/ld.so.conf ldconfig PKG_CONFIG_PATH&lt;br /&gt;&lt;br /&gt;首先说下/etc/ld.so.conf:&lt;br /&gt;&lt;br /&gt;这个文件记录了编译时使用的动态链接库的路径。&lt;br /&gt;默认情况下，编译器只会使用/lib和/usr/lib这两个目录下的库文件&lt;br /&gt;如果你安装了某些库，比如在安装gtk+-2.4.13时它会需要glib-2.0 &gt;= 2.4.0,辛苦的安装好glib后&lt;br /&gt;没有指定 --prefix=/usr 这样glib库就装到了/usr/local下，而又没有在/etc/ld.so.conf中添加/usr/local/lib&lt;br /&gt;这个搜索路径，所以编译gtk+-2.4.13就会出错了&lt;br /&gt;对于这种情况有两种方法解决：&lt;br /&gt;一：在编译glib-2.4.x时，指定安装到/usr下，这样库文件就会放在/usr/lib中，gtk就不会找不到需要的库文件了&lt;br /&gt;对于安装库文件来说，这是个好办法，这样也不用设置PKG_CONFIG_PATH了 (稍后说明)&lt;br /&gt;&lt;br /&gt;二：将/usr/local/lib加入到/etc/ld.so.conf中，这样安装gtk时就会去搜索/usr/local/lib,同样可以找到需要的库&lt;br /&gt;将/usr/local/lib加入到/etc/ld.so.conf也是必须的，这样以后安装东东到local下，就不会出现这样的问题了。&lt;br /&gt;将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择 ^_^&lt;br /&gt;添加方法也极其简单，将库文件的绝对路径直接写进去就OK了，一行一个。例如：&lt;br /&gt;/usr/X11R6/lib&lt;br /&gt;/usr/local/lib&lt;br /&gt;/opt/lib&lt;br /&gt;&lt;br /&gt;再来看看ldconfig是个什么东东吧 ：&lt;br /&gt;&lt;br /&gt;它是一个程序，通常它位于/sbin下，是root用户使用的东东。具体作用及用法可以man ldconfig查到&lt;br /&gt;简单的说，它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用&lt;br /&gt;因此当安装完一些库文件，(例如刚安装好glib)，或者修改ld.so.conf增加新的库路径后，需要运行一下/sbin/ldconfig&lt;br /&gt;使所有的库文件都被缓存到ld.so.cache中，如果没做，即使库文件明明就在/usr/lib下的，也是不会被使用的，结果&lt;br /&gt;编译过程中抱错，缺少xxx库，去查看发现明明就在那放着，搞的想大骂computer蠢猪一个。 ^_^&lt;br /&gt;我曾经编译KDE时就犯过这个错误，(它需要每编译好一个东东，都要运行一遍)，所以&lt;br /&gt;&lt;br /&gt;切记改动库文件后一定要运行一下ldconfig，在任何目录下运行都可以。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;再来说说 PKG_CONFIG_PATH这个变量吧:&lt;br /&gt;&lt;br /&gt;经常在论坛上看到有人问"为什么我已经安装了glib-2.4.x，但是编译gtk+-2.4.x 还是提示glib版本太低阿？&lt;br /&gt;为什么我安装了glib-2.4.x，还是提示找不到阿？。。。。。。"都是这个变量搞的鬼。&lt;br /&gt;先来看一个编译过程中出现的错误 (编译gtk+-2.4.13):&lt;br /&gt;&lt;br /&gt;checking for pkg-config... /usr/bin/pkg-config&lt;br /&gt;checking for glib-2.0 &gt;= 2.4.0 atk &gt;= 1.0.1 pango &gt;= 1.4.0... Package glib-2.0 was not found in the pkg-config search path.&lt;br /&gt;Perhaps you should add the directory containing `glib-2.0.pc'&lt;br /&gt;to the PKG_CONFIG_PATH environment variable&lt;br /&gt;No package 'glib-2.0' found&lt;br /&gt;&lt;br /&gt;configure: error: Library requirements (glib-2.0 &gt;= 2.4.0 atk &gt;= 1.0.1 pango &gt;= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.&lt;br /&gt;[root@NEWLFS gtk+-2.4.13]#&lt;br /&gt;很明显，上面这段说明，没有找到glib-2.4.x,并且提示应该将glib-2.0.pc加入到PKG_CONFIG_PATH下。&lt;br /&gt;究竟这个pkg-config PKG_CONFIG_PATH glib-2.0.pc 是做什么的呢？ let me tell you ^_^&lt;br /&gt;先说说它是哪冒出来的，当安装了pkgconfig-x.x.x这个包后，就多出了pkg-config，它就是需要PKG_CONFIG_PATH的东东&lt;br /&gt;pkgconfig-x.x.x又是做什么的？ 来看一段说明：&lt;br /&gt;&lt;br /&gt;代码:&lt;br /&gt;&lt;br /&gt;The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution. pkg-config is a function that returns meta information for the specified library. The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.&lt;br /&gt;&lt;br /&gt;我想看过这段说明后，你已经大概了解了它是做什么的吧。&lt;br /&gt;其实pkg-config就是向configure程序提供系统信息的程序，比如软件的版本啦，库的版本啦，库的路径啦，等等&lt;br /&gt;这些信息只是在编译其间使用。你可以 ls /usr/lib/pkgconfig 下，会看到许多的*.pc,用文本编辑器打开&lt;br /&gt;会发现类似下面的信息：&lt;br /&gt;&lt;br /&gt;prefix=/usr&lt;br /&gt;exec_prefix=$&lt;br /&gt;libdir=$/lib&lt;br /&gt;includedir=$/include&lt;br /&gt;&lt;br /&gt;glib_genmarshal=glib-genmarshal&lt;br /&gt;gobject_query=gobject-query&lt;br /&gt;glib_mkenums=glib-mkenums&lt;br /&gt;&lt;br /&gt;Name: GLib&lt;br /&gt;Description: C Utility Library&lt;br /&gt;Version: 2.4.7&lt;br /&gt;Libs: -L$ -lglib-2.0&lt;br /&gt;Cflags: -I$/glib-2.0 -I$/glib-2.0/include&lt;br /&gt;&lt;br /&gt;明白了吧，configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东东所在的位置，要不去哪里找呀。&lt;br /&gt;不用我说你也知道为什么会出现上面那些问题了吧。&lt;br /&gt;&lt;br /&gt;解决的办法很简单，设定正确的PKG_CONFIG_PATH，假如将glib-2.x.x装到了/usr/local/下，那么glib-2.0.pc就会在&lt;br /&gt;/usr/local/lib/pkgconfig下，将这个路径添加到PKG_CONFIG_PATH下就可以啦。并且确保configure找到的是正确的&lt;br /&gt;glib-2.0.pc,就是将其他的lib/pkgconfig目录glib-2.0.pc干掉就是啦。(如果有的话 ^-^)&lt;br /&gt;设定好后可以加入到~/.bashrc中，例如：&lt;br /&gt;PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:&lt;br /&gt;/usr/X11R6/lib/pkgconfig&lt;br /&gt;[root@NEWLFS ~]#echo $PKG_CONFIG_PATH&lt;br /&gt;/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig&lt;br /&gt;&lt;br /&gt;从上面可以看出，安装库文件时，指定安装到/usr，是很有好处的，无论是/etc/ld.so.conf还是PKG_CONFIG_PATH&lt;br /&gt;默认都会去搜索/usr/lib的，可以省下许多麻烦，不过从源码包管理上来说，都装在/usr下&lt;br /&gt;管理是个问题，不如装在/usr/local下方便管理&lt;br /&gt;其实只要设置好ld.so.conf，PKG_CONFIG_PATH路径后，就OK啦 ^_^&lt;br /&gt;&lt;br /&gt;另外某些软件因为版本原因(比如emacs-21.3)，在gcc-3.4.x下编译无法成功,(make 出错)&lt;br /&gt;使用低版本的gcc就可能编译通过。&lt;br /&gt;可能是因为gcc-3.3.x和gcc-3.4.x变化很大的缘故吧。&lt;br /&gt;&lt;br /&gt;暂时想到了这么多，先记下这些吧，如果你对源码包编译有了一点的了解，就不枉我打了这么半天字啦。 ^_^&lt;br /&gt;&lt;br /&gt;另外./configure 通过，make 出错，遇到这样的问题比较难办，只能凭经验查找原因，比如某个头文件没有找到，&lt;br /&gt;这时候要顺着出错的位置一行的一行往上找错，比如显示xxxx.h no such file or directory 说明缺少头文件&lt;br /&gt;然后去google搜。&lt;br /&gt;或者找到感觉有价值的错误信息，拿到google去搜，往往会找到解决的办法。还是开始的那句话，要仔细看README,INSTALL&lt;br /&gt;程序如何安装，需要什么依赖文件，等等。&lt;br /&gt;&lt;br /&gt;另外对于newbie来说，编译时，往往不知道是否成功编译通过，而编译没有通过就去make install&lt;br /&gt;必然会出错，增加了解决问题的复杂性，可以通过下面方法检查是否编译成功：&lt;br /&gt;&lt;br /&gt;一：编译完成后，输入echo $? 如果返回结果为0,则表示正常结束，否则就出错了&lt;br /&gt;echo $? 表示 检查上一条命令的退出状态，程序正常退出 返回0,错误退出返回非0。&lt;br /&gt;二：编译时，可以用&amp;&amp;amp;amp;连接命令， &amp;&amp;amp; 表示"当前一条命令正常结束，后面的命令才会执行"，就是"与"啦。&lt;br /&gt;这个办法很好，即节省时间，又可防止出错。例：&lt;br /&gt;./configure --prefix=/usr &amp;&amp;amp;amp; make &amp;&amp;amp; make install&lt;br /&gt;&lt;br /&gt;编译DOSBOX时出现"cdrom.h:20:23: SDL_sound.h: No such file or directory"&lt;br /&gt;&lt;br /&gt;今天忽然想回味下经典DOS游戏，于是编译这个DOSBOX模拟器，README中说明需要SDL_SOUND&lt;br /&gt;于是下载，安装，很顺利，没有指定安装路径，于是默认的安装到了/usr/local/&lt;br /&gt;当编译DOSBOX make 时，出现如下错误：&lt;br /&gt;if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I/usr/include/SDL -D_REENTRANT -march=pentium4 -O3 -pipe -fomit-frame-pointer -MT dos_programs.o -MD -MP -MF ".deps/dos_programs.Tpo" -c -o dos_programs.o dos_programs.cpp; \&lt;br /&gt;then mv -f ".deps/dos_programs.Tpo" ".deps/dos_programs.Po"; else rm -f ".deps/dos_programs.Tpo"; exit 1; fi&lt;br /&gt;In file included from dos_programs.cpp:30:&lt;br /&gt;cdrom.h:20:23: SDL_sound.h: No such file or directory &lt;------错误的原因在这里&lt;br /&gt;In file included from dos_programs.cpp:30:&lt;br /&gt;cdrom.h:137: error: ISO C++ forbids declaration of `Sound_Sample' with no type&lt;br /&gt;cdrom.h:137: error: expected `;' before '*' token&lt;br /&gt;make[3]: *** [dos_programs.o] Error 1&lt;br /&gt;make[3]: Leaving directory `/root/software/dosbox-0.63/src/dos'&lt;br /&gt;make[2]: *** [all-recursive] Error 1&lt;br /&gt;make[2]: Leaving directory `/root/software/dosbox-0.63/src'&lt;br /&gt;make[1]: *** [all-recursive] Error 1&lt;br /&gt;make[1]: Leaving directory `/root/software/dosbox-0.63'&lt;br /&gt;make: *** [all] Error 2&lt;br /&gt;[root@NEWLFS dosbox-0.63]#&lt;br /&gt;看来是因为cdrom.h没有找到SDL_sound.h这个头文件&lt;br /&gt;所以出现了下面的错误，但是我明明已经安装好了SDL_sound阿？&lt;br /&gt;经过查找，在/usr/local/include/SDL/下找到了SDL_sound.h&lt;br /&gt;看来dosbox没有去搜寻/usr/local/include/SDL下的头文件，既然找到了原因，就容易解决啦&lt;br /&gt;&lt;br /&gt;[root@NEWLFS dosbox-0.63]#ln -s /usr/local/include/SDL/SDL_sound.h /usr/include&lt;br /&gt;&lt;br /&gt;做个链接到/usr/include下，这样DOSBOX就可以找到了，顺利编译成功，回味仙剑ing....^_^&lt;br /&gt;曾经编译Xorg-6.8.1的时候，也出现找不到freetype.h的问题，原因也是如此。&lt;br /&gt;编译安装软件时，经常遇到类似的情况，都是因为找不到需要的头文件而出现错误，也许是因为&lt;br /&gt;没有安装相关的头文件，或者是安装了但没有找到，如上例。&lt;br /&gt;找不到的情况：做个链接到/usr/include下，就可以了。&lt;br /&gt;没安装的情况：去google找什么东东包括该头文件，安装上就应该可以了。&lt;br /&gt;通常错误提示也都是"No such file or directory"，所以编译失败时要好好找找错误信息哦。&lt;br /&gt;错误信息总是在Error上面不远的，耐心点 ^_^&lt;br /&gt;&lt;br /&gt;不修改/etc/ld.so.conf使用非默认路径下的库文件-----LD_LIBRARY_PATH&lt;br /&gt;&lt;br /&gt;环境变量LD_LIBRARY_PATH列出了查找共享库时除了默认路径之外的其他路径。&lt;br /&gt;如果不想修改或无法修改(无root权限)/etc/ld.so.conf而使用其他路径下的库文件&lt;br /&gt;就需要设置LD_LIBRARY_PATH了，例：export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib&lt;br /&gt;这样就可以使用/opt/lib下的库文件啦。当然还是修改/etc/ld.so.conf方便。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-8273716154043756667?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/8273716154043756667/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=8273716154043756667' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/8273716154043756667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/8273716154043756667'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/03/blog-post.html' title='如何从源码包安装软件？（转贴）'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-6435429337927437020</id><published>2007-02-06T13:11:00.000+08:00</published><updated>2007-03-12T00:41:28.624+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FC4 &amp; IE</title><content type='html'>有些时候我们必须使用IE，比如所我们单位正在使用的TD，试一下：&lt;br /&gt;&lt;br /&gt;//Open a terminal. Log in as root to install wine and cabextract:&lt;br /&gt;&lt;br /&gt;yum -y install wine*&lt;br /&gt;&lt;br /&gt;yum -y install cabextract&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Logout and install IEs 4 Linux with your normal user account:&lt;br /&gt;&lt;br /&gt;wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz&lt;br /&gt;&lt;br /&gt;tar zxvf ies4linux-latest.tar.gz&lt;br /&gt;&lt;br /&gt;cd ies4linux-*&lt;br /&gt;&lt;br /&gt;./ies4linux&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-6435429337927437020?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.tatanka.com.br/ies4linux/page/Installation:Fedora' title='FC4 &amp; IE'/><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/6435429337927437020/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=6435429337927437020' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6435429337927437020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/6435429337927437020'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/02/fc4-ie.html' title='FC4 &amp; IE'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116988601853008826</id><published>2007-01-27T16:20:00.000+08:00</published><updated>2007-03-12T00:42:03.187+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>关于NFS的问题汇总</title><content type='html'>最近在调试NFS中解决了如下几个问题。&lt;br /&gt;1.服务器端的/etc/exports里的配置一定要写正确，特别是配置里面的地址，应该写的是客户端的地址，或者客户端的子网。&lt;br /&gt;保证在服务端执行/usr/sbin/showmount -e可以正确显示出exports里配置的NFS目录。&lt;br /&gt;2.在服务端修改NFSD使用的端口，由原来的自由端口改为固定端口。然后在防火墙上把配置的端口打开。修改过程如下&lt;br /&gt;edit /etc/sysconfig/nfs增加&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;STATD_PORT=4000&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;MOUNTD_PORT=4001&lt;br /&gt;&lt;br /&gt;edit /etc/modprobe.conf增加&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;options lockd nlm_udpport=4002 nlm_tcpport=4002&lt;br /&gt;&lt;br /&gt;edit /etc/services增加&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;rquotad 4003/tcp # rquotad&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;rquotad 4003/udp # rquotad&lt;br /&gt;在防火墙里打开4000，4001，4002，4003 端口的tcp和udp&lt;br /&gt;3.在客户端执行/usr/sbin/showmount -e  XXX.XXX.XXX.XXX地址，如果能正确显示服务端的共享目录，那么客户端和服务端通讯已经没问题了，后面就mount NFS就可以了&lt;br /&gt;以下错误的原因是：&lt;br /&gt;NFS not register //客户端或者服务端的NFS服务没起&lt;br /&gt;no route, no receive//服务器端的放火墙问题&lt;br /&gt;no permission//服务端的exports文件写错了，比如IP地址写的不对&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116988601853008826?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.stevesearle.com/tech/faq.html' title='关于NFS的问题汇总'/><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116988601853008826/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116988601853008826' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116988601853008826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116988601853008826'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/01/nfs.html' title='关于NFS的问题汇总'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116936920005155965</id><published>2007-01-21T16:45:00.000+08:00</published><updated>2007-03-12T00:42:36.402+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>这两天遇到的一些关于linux下使用磁盘的问题汇总</title><content type='html'>&lt;ol&gt;&lt;li&gt;在fstab里面怎么给一个非root的用户mount一个vfat的磁盘?&lt;br /&gt;如果是vfat的磁盘,你可以在fstab里的参数中增加uid=XXX,gid=XXX,来指定一个vfat磁盘在启动后自动以哪个用户哪个用户组mount(感谢补锅匠).&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:13;"&gt;&lt;span style="font-size:100%;"&gt;grub 挂了如何恢复?&lt;br /&gt;当时自己新装了一块硬盘,在使用pq时发现了错误,就修复了一下,重起后发现grub不能正常使用,直接位于"grub&gt;"提示符号下.&lt;br /&gt;解决方法:使用grub的命令,首先 root (hdX,Y),然后 setup (hdX),hdX指的是grub安装的磁盘,一般是hd0,Y表示linux分区的位置,如你安装在hda5,那么Y=4.你还可以通过"cat (hdX,Y)/路径"查看磁盘上的文件.比如"cat (hd0,5)/boot/grub/menu.lst",查看启动配置.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:13;"&gt;&lt;/span&gt;如何给一个非root的用户mount一个ext3的磁盘?&lt;br /&gt;在fstab里面增加一行和/的参数一样defaults,使用root帐户mount了以后,会发现无论这个目录以前是用什么帐户建立的,mount了以后都变成root:root,这使用使用chown,修改mount后的目录的owner成你需要的非root用户,以后无论怎么mount这个目录的owner都是这个用户了.&lt;/li&gt;&lt;li&gt;fstab中一个ext3设备名写错了造成"fsck.ext3错误"系统无法正常启动&lt;br /&gt;在filesystem repair模式下,由于/分区没有问题,所以使用&lt;span style="font-size:100%;"&gt;"mount -o remount,rw /",修改/etc/fstab文件为正确的设备名后重新启动,问题解决,如果/分区有问题,需要在grub,按下E编辑启动参数,在kernel那行后面增加 "rw"&lt;/span&gt;&lt;span style="font-size:13;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116936920005155965?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116936920005155965/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116936920005155965' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116936920005155965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116936920005155965'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2007/01/linux.html' title='这两天遇到的一些关于linux下使用磁盘的问题汇总'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116485248636515404</id><published>2006-11-30T09:31:00.000+08:00</published><updated>2007-03-12T00:43:12.417+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>"Agile Web Development With Rails"看到第100页了</title><content type='html'>第一次看英文书,看了这么多,现在已经有了一些看英文书的习惯了:)&lt;br /&gt;目前刚用rails做了两个小例子,对rails有如下体会.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;两个有趣的概念migration和scaffold&lt;/li&gt;&lt;ol&gt;&lt;li&gt;migration的字面意思的迁移,在rails里面主要用在数据库方面.无论是建立多个数据库(开发库,测试库,产品库)还是对库的数据结构做调整,对库中的数据做变动,只要不是自己的程序去做的,都归结到migration里面,而且rails通过一种操作规范把所有操作过程记录下来,这对于以后的部署和测试,我感觉是特别有帮助.在库中有一张schema_info表,这是rails自动生成的,它记录了当前migration的版本.&lt;/li&gt;&lt;li&gt;scaffold提供了一个快速的工具,目前我的体会是,它可以通过你建立的表,直接生成相关的其他代码,从而提供一套web界面来让你直接通过浏览,增,删,改表里的数据.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;方便的工具/script和rake.&lt;/li&gt;&lt;ol&gt;&lt;li&gt;/script是在应用下的一个目录的名字,这个目录下存放大量的脚本,这些脚本是你生成代码的工具,当然它本身也是rails自己生成的.目前我用到了&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;ruby script/server                                             --启动web服务器&lt;/li&gt;&lt;li&gt;ruby script/generate controller 控制器名称  --建立一个controller&lt;/li&gt;&lt;li&gt;ruby script/generate model 表名                    --建立一个数据库的表&lt;/li&gt;&lt;li&gt;ruby script/generate migration 数据库变动名 --建立一次对数据库操作(非程序操作)&lt;/li&gt;&lt;li&gt;ruby script/generate scaffold product admin   --根据model,controller生成scaffold实际的代码.&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;rake目前看是rails一个很重要的工具,主要是做数据库方面操作命令比如&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;rake db:migrate,它就是实际执行前面"ruby script/generate migration"生成的代码的,而且他里面还有版本的概念你还可以用rake db:migrate VERSION=??让数据库到恢复一个特定版本的情况.对于rake还有很多别的功能,目前我没用到,暂时不提.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;MVC严格的结构特征&lt;/li&gt;&lt;ol&gt;&lt;li&gt;对于一个应用来说,应用系统的目录是已设定的,目录的用途已经按照MVC的形式做了规范,目录中的代码通过rails内部的机制做连接,按照默认的格式和用途很容易使用&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116485248636515404?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116485248636515404/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116485248636515404' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116485248636515404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116485248636515404'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/11/agile-web-development-with-rails100.html' title='&quot;Agile Web Development With Rails&quot;看到第100页了'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116304255453121813</id><published>2006-11-09T11:18:00.000+08:00</published><updated>2007-03-12T00:43:48.518+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>打算学习一下RoR</title><content type='html'>最近看了程序员的杂志,发现ruby on rails比较有意思,同时ruby作为一门不错的脚本语言也可以看一看,目前来说我觉得对于web开发中JAVA系统的脚本语言粘合剂,还没有什么概念,RoR的构架和开发方式,无疑会对传统的spring+hibernate或者struts+hibernate产生冲击.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116304255453121813?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116304255453121813/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116304255453121813' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116304255453121813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116304255453121813'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/11/ror.html' title='打算学习一下RoR'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116067345301846650</id><published>2006-10-13T01:17:00.000+08:00</published><updated>2007-03-12T00:44:43.828+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>700M配置无线网卡成功拉</title><content type='html'>晚上配置无线网卡成功,终于可以把线扯了,呵呵,&lt;br /&gt;其实在FC4里面已经带了IPW2200的驱动程序,不过能不能用,我现在也不知道了,我是按照http://ipw2200.sf.net/上把最新的程序下下来,在安装过程中,还涉及到ieee80211和firmware,按照INSTALL文档里的说明做就可以了,README.ipw2200是操作说明装好了驱动后要看一下,里面些的很复杂,我没全看,应为我发现之要使用iwconfig和iwlist这两个配置命令,我的无线已经通了,不过也许是应为用的是Linux,笔记本上的wifi指示灯并不亮,这两个配置命令,直接看man拉,主要就是iwconfig去配置ssid,这个配好了,用iwlist一扫就看到自己的无线路由器了,这时发现网已经通了,在装驱动的过程中,发现有关于内核的一些说明,我还没看懂,不知道modprobe有多大的用处.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116067345301846650?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116067345301846650/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116067345301846650' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116067345301846650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116067345301846650'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/10/700m.html' title='700M配置无线网卡成功拉'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-116050050754740964</id><published>2006-10-11T01:14:00.000+08:00</published><updated>2007-03-12T00:45:11.780+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>在700M上安装FC4的步骤</title><content type='html'>网上搜来的,谢谢作者,原始地址在&lt;br /&gt;http://www.cs.cornell.edu/~scs49/install_linux.html&lt;br /&gt;互联网就是好阿&lt;br /&gt;Installing Linux Distro Fedora Core 4 on Dell Inspiron 700m Laptop&lt;br /&gt;&lt;br /&gt;   * How to get Fedora Core 4&lt;br /&gt;   * . . . Download&lt;br /&gt;   * . . . Partition&lt;br /&gt;   * . . . . . . . . . Digital Wolf adds&lt;br /&gt;   * . . . . . . . . . Some tips by Kambiz&lt;br /&gt;   * . . . Installation&lt;br /&gt;   * . . . Configuration&lt;br /&gt;   * . . . . . . Setting up the wireless networking&lt;br /&gt;   * . . . . . . . . . Tips for Intel Pro Wireless 2200 and setting up closed and encrypted wi-fi&lt;br /&gt;   * . . . . . . . . . Guido Maneman adds...&lt;br /&gt;   * . . . . . . Screen Resolution&lt;br /&gt;   * . . . . . . Sound&lt;br /&gt;   * . . . . . . Accessing Windows files&lt;br /&gt;   * . . . . . . Installing Realplayer&lt;br /&gt;   * . . . . . . . . . Some tips by Ganesh - New&lt;br /&gt;   * . . . . . . . . . Some tips by Venkatesh&lt;br /&gt;   * . . . . . . Plugins - java and flash&lt;br /&gt;   * . . . Software Suspend a.k.a. Hibernate&lt;br /&gt;   * . . . Playing movies and listening to MP3s&lt;br /&gt;   * . . . Hard disk performance tuning and solving the heating up problem&lt;br /&gt;   * . . . Bug fix to get a console by hitting Alt+Ctrl+Fn (Bug 160470)&lt;br /&gt;   * Feedback&lt;br /&gt;   * Links&lt;br /&gt;   * Thanks to...&lt;br /&gt;&lt;br /&gt;I've spent a lot of time installing and configuring Fedora Core 4 on my Dell Inspiron 700m. I decided to write this down for my own reference and so that you all don't spend your valuable time on things which I learnt the hard way.&lt;br /&gt;How to get Fedora Core 4&lt;br /&gt;Download&lt;br /&gt;&lt;br /&gt;   * Download the official Fedora 4 Core installation images from: Fedora Core website&lt;br /&gt;   * Check the SHA1 signature of all the files downloaded using some program like SHA1files&lt;br /&gt;   * After verifying the signature, burn the CDs / DVDs. Use any of the tools mentioned on http://www.petri.co.il/how_to_write_iso_files_to_cd.htm for doing that.&lt;br /&gt;&lt;br /&gt;Partition&lt;br /&gt;For partitioning, I downloaded Knoppix, burnt it on a CD and then ran ntfsresize. However, I think there might be a simpler way. If you find one let me know.&lt;br /&gt;Digital Wolf adds&lt;br /&gt;I happen to have access to ghost and a usb hard drive. my laptop's hd is 60gb and was partitioned as a C: drive for XP Pro. The usb drive is 40gb. I cleaned up my 60gb, ghosted it to the 40gb (booting into BartPE with ghost installed), then re-ghosted it back. When ghosting it back, I am given the option to resize the partition its going on. I selected 40gb and was left with 20gb for my linux.&lt;br /&gt;Some tips by Kambiz&lt;br /&gt;in response to the partitioning section check out http://www.sysresccd.org/ I find it a very useful disk aside from it's ability to resize partitions (NTFS too) because of it's other uses. Here's the description of it: SystemRescueCd is a linux system on a bootable cdrom for repairing your system and your data after a crash. It also aims to provide an easy way to carry out admin tasks on your computer, such as creating and editing the partitions of the hard disk. It contains a lot of system utilities (parted, partimage, fstools, ...) and basic ones (editors, midnight commander, network tools). It aims to be very easy to use: just boot from the cdrom, and you can do everything. The kernel of the system supports most important file systems (ext2/ext3, reiserfs, xfs, jfs, vfat, ntfs, iso9660), and network ones (samba and nfs).&lt;br /&gt;Installation&lt;br /&gt;&lt;br /&gt;   * Pop in the CD (or DVD) in your drive and restart your computer. Make sure that the BIOS settings are set to boot from the CD (or DVD). On Dell Inspiron 700m, when the "DELL" boot up screen flashes up, press F12. Go to Boot devices and change the first boot device.. TODO.&lt;br /&gt;   * On restarating, the CD will boot and Fedora Core 4 installer will start. Follow the instructions.&lt;br /&gt;   * Make sure you select the Development tools and deselect Helix Player during the installation.&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;&lt;br /&gt;OK, so here is where the fun begins! ;-) Almost all of the following require you to be root.&lt;br /&gt;Setting up the wireless networking&lt;br /&gt;&lt;br /&gt;I have Intel Pro Wireless 2100 card in my 700m. To check which one you have, run:&lt;br /&gt;&lt;br /&gt;#lspci | grep Wireless&lt;br /&gt;&lt;br /&gt;which should give an output like:&lt;br /&gt;&lt;br /&gt;02:01.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)&lt;br /&gt;&lt;br /&gt;If you get an output which says the adapter is 2200, then scroll down for some tips regarding that.&lt;br /&gt;&lt;br /&gt;  1. Download the IPW2100 Firmware from: http://ipw2100.sourceforge.net/firmware.php. (I used v0.55) Extract all the files to the /lib/firmware directory.&lt;br /&gt;  2. Download the IPW2100 driver files from http://ipw2100.sourceforge.net/. I used version 1.1.0. Make sure you use a version ending with .0 since only these are the stable ones.&lt;br /&gt;  3. Extract all the files to a directory and run #make. After that run #make install to install the driver.&lt;br /&gt;  4. Copy this file as /etc/sysconfig/network-scripts/ifcfg-eth1&lt;br /&gt;  5. Reboot your computer (you can issue the #reboot command on the terminal for this) and wireless networking should now be working.&lt;br /&gt;  6. I also found the Wifi-radar utility very useful for managing my wifi connections in GNOME. Download it from: http://www.bitbuilder.com/wifi_radar/&lt;br /&gt;&lt;br /&gt;Tips for Intel Pro Wireless 2200 and setting up closed and encrypted wi-fi&lt;br /&gt;&lt;br /&gt;Here are some tips from Thomas Savarimuthu:&lt;br /&gt;&lt;br /&gt;   Actually, i had an Intel 2200 BG mini PCI card and hence i had to guess (from IPW2100 URL) and find the right URL for IPW2200 - http://ipw2200.sourceforge.net. Even though i downloaded the correct firmware, i had trouble connecting to my office wireless network, since it is a closed and encrypted wi-fi network. So, i knew that i had to explicitely declare the SSID and WEP KEY in a config file, but i don't know which files to edit and what parameters to add. After a quick search i found the necessary information from one of the reference link you mentioned in the bottom of your page. He had mentioned about the parameters and configuration files to edit.&lt;br /&gt;&lt;br /&gt;   I had to add the following parameters into /etc/sysconfig/network-scripts/ifcfg-eth1&lt;br /&gt;&lt;br /&gt;   DEVICE=eth1&lt;br /&gt;   IPV6INIT=no&lt;br /&gt;   ONBOOT=yes&lt;br /&gt;   USERCTL=yes ( if you want non-root user to start/shut this port)&lt;br /&gt;   PEERDNS=yes&lt;br /&gt;   BOOTPROTO=dhcp&lt;br /&gt;   TYPE=Wireless&lt;br /&gt;   ESSID="xxxxx" (put your closed network name)&lt;br /&gt;   CHANNEL=1&lt;br /&gt;   MODE=Managed&lt;br /&gt;   SECURITY=Restricted ( in cased of WEP key in "Shared" security mode)&lt;br /&gt;&lt;br /&gt;   and create a new file /etc/sysconfig/network-scripts/keys-eth1 to add the corresponding WEP key as below:&lt;br /&gt;   KEY=XXXXXXXX (HEX or STRING)&lt;br /&gt;&lt;br /&gt;   More over the IPW2200 driver available in the kernel-2.6.11 works fine if i just download and copy the corresponding firmware to /lib/firmware .&lt;br /&gt;&lt;br /&gt;Guido Maneman adds...&lt;br /&gt;&lt;br /&gt;   I was fiddling around with getting wireless lan to work.&lt;br /&gt;&lt;br /&gt;   Thomas Savarimuthu told you to put SECURITY=Restricted ( in cased of WEP key in "Shared" security mode) in /etc/sysconfig/network-scripts/ifcfg-eth1, but this doesn't work.&lt;br /&gt;&lt;br /&gt;   I found a hint in http://www.redhat.com/archives/rhl-beta-list/2003-July/msg00848.html , removed SECURITY=Restricted in /etc/sysconfig/network-scripts/ifcfg-eth1 and added KEY="restricted 12345678901234567890123456" to /etc/sysconfig/network-scripts/keys-eth1&lt;br /&gt;&lt;br /&gt;Screen Resolution&lt;br /&gt;&lt;br /&gt;To get the screen resolution of 1280x800 (the default for Dell Inspiron 700m) follow these steps:&lt;br /&gt;&lt;br /&gt;   * Download 855Resolution package from http://perso.wanadoo.fr/apoirier/ I used version 0.4&lt;br /&gt;   * Extract the contents in any directory and run #make to compile the package. After that, run #make install to install it. Make sure you have the C compiler and other libraries installed. (Thanks to James McIntosh for pointing this out).&lt;br /&gt;   * Run #gtf 1280 800 60 to get a modeline for your laptop. On my laptop it gives:&lt;br /&gt;&lt;br /&gt; # 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz&lt;br /&gt; Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync&lt;br /&gt;&lt;br /&gt;   * Copy the Modeline to your /etc/X11/xorg.conf file in the Monitor section. You can refer to my xorg.conf (Note: You can use a simple editor like gedit to edit a file, e.g. #gedit /etc/X11/xorg.conf &amp;. The &amp;amp; at the end of the command runs the program in the background, so that you can keep using the terminal).&lt;br /&gt;   * In the Modes listed in the Screen section of xorg.conf, add "1280x800". I also removed all other modes from the line.&lt;br /&gt;   * Run #855resolution -l which gives an output like :&lt;br /&gt;&lt;br /&gt;855resolution version 0.4, by Alain Poirier&lt;br /&gt;&lt;br /&gt;Chipset: 855GM (id=0x35808086)&lt;br /&gt;VBIOS type: 2&lt;br /&gt;VBIOS Version: 3104&lt;br /&gt;&lt;br /&gt;Mode 30 : 640x480, 8 bits/pixel&lt;br /&gt;Mode 32 : 800x600, 8 bits/pixel&lt;br /&gt;Mode 34 : 1024x768, 8 bits/pixel&lt;br /&gt;Mode 38 : 1280x1024, 8 bits/pixel&lt;br /&gt;Mode 3a : 1600x1200, 8 bits/pixel&lt;br /&gt;Mode 3c : 1920x1440, 8 bits/pixel&lt;br /&gt;Mode 41 : 640x480, 16 bits/pixel&lt;br /&gt;Mode 43 : 800x600, 16 bits/pixel&lt;br /&gt;Mode 45 : 1024x768, 16 bits/pixel&lt;br /&gt;Mode 49 : 1280x1024, 16 bits/pixel&lt;br /&gt;Mode 4b : 1600x1200, 16 bits/pixel&lt;br /&gt;Mode 4d : 1920x1440, 16 bits/pixel&lt;br /&gt;Mode 50 : 640x480, 32 bits/pixel&lt;br /&gt;Mode 52 : 800x600, 32 bits/pixel&lt;br /&gt;Mode 54 : 1024x768, 32 bits/pixel&lt;br /&gt;Mode 58 : 1280x1024, 32 bits/pixel&lt;br /&gt;Mode 5a : 1600x1200, 32 bits/pixel&lt;br /&gt;Mode 5c : 1920x1440, 32 bits/pixel&lt;br /&gt;Mode 7c : 1280x800, 8 bits/pixel&lt;br /&gt;Mode 7d : 1280x800, 16 bits/pixel&lt;br /&gt;Mode 7e : 1280x800, 32 bits/pixel&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   * We are interested in mode 7d or 7e (not tried) as these are 1280x800 modes. So run, #855resolution 7d 1280 800 and you should get an output like:&lt;br /&gt;&lt;br /&gt;855resolution version 0.4, by Alain Poirier&lt;br /&gt;&lt;br /&gt;Chipset: 855GM (id=0x35808086)&lt;br /&gt;VBIOS type: 2&lt;br /&gt;VBIOS Version: 3104&lt;br /&gt;&lt;br /&gt;** Patch mode 7d to resolution 1280x800 complete&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     which means everything is OK. Don't worry, you won't see any changes in your screen right now.&lt;br /&gt;   * Now we have to ensure that this is run everytime you start X. So add the following to your /etc/rc.local file:&lt;br /&gt;&lt;br /&gt;if [ `runlevel | cut -f2 -d' '` -eq 5 ]; then&lt;br /&gt;#runscript&lt;br /&gt;855resolution 7d 1280 800&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;   * Now restart your computer and you should see much better resolution of 1280x800.&lt;br /&gt;&lt;br /&gt;Sound&lt;br /&gt;&lt;br /&gt;   * To enable sound from your laptop, run #alsamixer.&lt;br /&gt;   * Scroll to the rightmost colum using the right arrow and hit m. (i.e. turn it on)&lt;br /&gt;   * Exit the program by pressing Esc. Sound should now be working.&lt;br /&gt;   * You might also want to configure the volume buttons on the keyboard (Fn + F5 - Mute, Fn + F6 - Volume Down and Fn + F7 - Volume Up). This is very simple to do in GNOME. Go to Desktop -&gt; Preferences -&gt; Keyboard shortcuts and here specify these keys for the corresponding actions.&lt;br /&gt;&lt;br /&gt;Accessing Windows files&lt;br /&gt;&lt;br /&gt;The following applies only if you have an NTFS partition on which windows is running. To check that, run #fdisk -l | grep NTFS If you see a line like&lt;br /&gt;&lt;br /&gt;/dev/hda2   *           7        2456    19679625    7  HPFS/NTFS&lt;br /&gt;&lt;br /&gt;, then it means that you are having your windows ntfs partition on /dev/hda2.&lt;br /&gt;&lt;br /&gt;I will now explain how to read files from the ntfs partition.&lt;br /&gt;&lt;br /&gt;   * Download the linux ntfs kernel module from http://prdownloads.sourceforge.net/linux-ntfs/kernel-module-ntfs-2.6.11-1.1369_FC4-2.1.22-0.rr.6.0.i686.rpm and install it.&lt;br /&gt;   * Next, run #/sbin/modprobe ntfs. There should be no output. Now you are all set.&lt;br /&gt;   * Now, to mount the windows partition, run&lt;br /&gt;&lt;br /&gt;#mkdir /mnt/windows&lt;br /&gt;#mount /dev/hda2 /mnt/windows -t ntfs -r -o umask=0222&lt;br /&gt;&lt;br /&gt;   * Now #ls /mnt/windows/ should show you your windows files. Note that you can only read from the partition, you can't write to it. There are other modules available which can write to ntfs too, but I haven't tried them since I don't want to take the risk.&lt;br /&gt;&lt;br /&gt;Installing Realplayer&lt;br /&gt;&lt;br /&gt;   * Before installing realplayer, you need some libraries. Run #yum -y -install compat-libstdc++-33 to get the libraries.&lt;br /&gt;   * Download RPM from www.real.com and install it.&lt;br /&gt;   * Restart firefox.&lt;br /&gt;   * Check if real player is working by listening to BBC Radio. (Note: Not all sites may work. See workaround below)&lt;br /&gt;     Some sites like www.raaga.com do not work in spite of this. I've tried my best, but there seems to be no way of getting them to work, so I had to use a workaround. Do this only if there are some sites which do not work, otherwise you should be all set.&lt;br /&gt;         o Download and install wine from http://winehq.org/site/download-rh. I am using the i686 package of wine 20050524.&lt;br /&gt;         o Run #wine. It will create default directories, etc.&lt;br /&gt;         o Copy this file as your wine config file, i.e. save it as ~/.wine/config&lt;br /&gt;         o Download the windows installer of firefox and install it by opening it with wine. Start it using wine (You may have to give a command like # wine /root/.wine/drive_c/Program\ Files/Mozilla\ Firefox/firefox.exe , and install realplayer (windows version) from www.real.com through it. (At the end of installation, real player hangs, but after restarting, everything works ok for me).&lt;br /&gt;         o Now this installation of firefox should be able to play all sorts of internet radios, etc. (At least, it plays raaga.com and smashits.com for me!)&lt;br /&gt;         o If you find a better solution, please let me know!&lt;br /&gt;     Some tips by Ganesh - New&lt;br /&gt;&lt;br /&gt;     Realplayer plugin incompatibility with firefox arises due to the fact that firefox is compiles with gcc &gt; 3.2 where as the stock realplayer download from real.com is compiled with gcc 3.2.&lt;br /&gt;&lt;br /&gt;     The solution to this problem is finding realplayer compiled with gcc &gt; 3.2. here is the link to such a realplayer version ......... it is not the latest release, but works with raaga.com, musicindiaonline.com and smashits.com https://helixcommunity.org/download.php/954/RealPlayer-10.0.3-rc1-rhel4.src.rpm.tar.bz2&lt;br /&gt;&lt;br /&gt;     installation is kind of warped. rpm puts the install.bz2 in /usr/src/redhat/SOURCES .... so make sure /usr/src/redhat/SOURCES directory exists.&lt;br /&gt;&lt;br /&gt;     anyway here are the steps&lt;br /&gt;&lt;br /&gt;tar -jxvf RealPlayer-10.0.3-rc1-rhel4.src.rpm.tar.bz2&lt;br /&gt;rpm -ivh --nodeps RealPlayer-10.0.3-rc1-rhel4.src.rpm&lt;br /&gt;mkdir realplayer&lt;br /&gt;cd realplayer&lt;br /&gt;tar -jxvf /usr/src/redhat/SOURCES/install.bz2&lt;br /&gt;&lt;br /&gt;     Some tips by Venkatesh&lt;br /&gt;     I too have been having a lot of problems for the last four months on getting raaga.com to work on my linux box. A few minutes ago it started working and I thought I should write to you the feedback. This is WITHOUT using Wine.&lt;br /&gt;&lt;br /&gt;     First, my configuration. I've a Dell Inspiron 1150 laptop since eight months. No problems with this box - it works well.&lt;br /&gt;&lt;br /&gt;     In Jan 2005 I installed Linux Fedora Core 2.0 on this box (dual-boot, XP Home on the other partition). The default Mozilla that came with this FC2 dist is version 1.6. I downloaded RealPlayer and JDK and got raaga.com to work.&lt;br /&gt;&lt;br /&gt;     Usually the Red Hat Network comes up time and again for autoupdation, and it installed Mozilla 1.7.3.&lt;br /&gt;&lt;br /&gt;     Thereafter, raaga.com stopped working! After that I didn't know what happened.&lt;br /&gt;&lt;br /&gt;     After four months of (trivial, naive) fighting I just got a new installation of FC2 on the same box, to work. Here are some points to consider.&lt;br /&gt;        1. Mozilla 1.6 is compiled with gcc 3.2; therefore we need to ensure that our gcc libs are 3.2 and above. I've got 3.3 as part of the default install -- no problems&lt;br /&gt;        2. It is Java 1.4.2 that is compatible with gcc 3.2 and above. I am not sure about Java 1.5 (aka 5.0) and its compatibility. I had to uninstall Java 1.5 and reinstall Java 1.4.2 just for the sake of raaga.com! After installation, the plugin had to be linked with the subdirectory ns6-gcc32 and not the default ns6.&lt;br /&gt;        3. The docs in Mozilla--&gt;Help--&gt;Plugins clearly suggest downloading and installing RealPlayer VERSION 10.0.0.297. I had earlier been trying with RealPlayer Gold which was not effective. Upon trying today with 10.0.0.297, it worked.&lt;br /&gt;&lt;br /&gt;     I suspect we need to pay careful attention to the version numbers and the gcc/glibc that was used to compile, and its compatibilities.&lt;br /&gt;&lt;br /&gt;     Hope these points help to some extent. Please write back if you could get your box to play raaga.com without using Wine.&lt;br /&gt;&lt;br /&gt;Plugins - java and flash&lt;br /&gt;&lt;br /&gt;   * Download the java plugin JRE 1.5 Update 3 from sun from : http://java.sun.com/j2se/1.5.0/download.jsp. Download the Linux self extracting file (ends with .bin). Do not download the .rpm package! Read the Fedora Core 4 release notes if you want to know why.&lt;br /&gt;   * Run #chmod +x jre-1_5_0_03-linux-i586.bin and then #./jre-1_5_0_03-linux-i586.bin to install the plugin.&lt;br /&gt;   * Move the package to /opt/ directory by running #mv jre1.5.0_03 /opt/&lt;br /&gt;   * Next make a symbolic link for firefox to recognize the plugin. #ln -s /opt/jre1.5.0_03/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/libjavaplugin_oji.so More details at: http://plugindoc.mozdev.org/faqs/java.html#Linux&lt;br /&gt;   * To install the flash plugin, just visit any page with flash content on it. Firefox shows a message on top of the page saying that some plugins are required for the page. Click on the link and install flash.&lt;br /&gt;&lt;br /&gt;Software Suspend a.k.a. Hibernate&lt;br /&gt;&lt;br /&gt;Here's how to get your box to hibernate and wake up as in Windows.&lt;br /&gt;&lt;br /&gt;   * Get the hibernate rpm from Matthias Hensler's page: http://mhensler.de/swsusp/download/hibernate-1.08-1.i386.rpm and install the package.&lt;br /&gt;   * Save this file as /etc/hibernate/hibernate.conf&lt;br /&gt;   * Get the kernel rpm corresponding to Fedora Core 4 : http://mhensler.de/swsusp/download/kernel-2.6.11-1.1369_FC4_cubbi8_swsusp2.i686.rpm and install it&lt;br /&gt;   * Edit /etc/grub.conf and add resume2=swap:/dev/??? (i.e. your swap drive) to the end of the kernel line. For example, look at my grub.conf Note that your swap drive may be different.&lt;br /&gt;   * Run the following commands:&lt;br /&gt;&lt;br /&gt;# cd /root/ &amp;&amp;amp; mkdir myinitrd/ &amp;&amp;amp; cd myinitrd/ (create temporary directory)&lt;br /&gt;# gzip -dc &lt; /boot/initrd-2.6.11-1.1369_FC4_cubbi8_swsusp2.img|cpio -i (unpack the current initrd) # gedit init &amp; (edit the init-file and include these two lines after mount -t sysfs ... and before echo Creating /dev:   echo Activating software suspend   echo &gt; /proc/software_suspend/do_resume&lt;br /&gt;# find . | cpio -o -c | gzip -9 &gt; /boot/initrd-2.6.11-1.1369_FC4_cubbi8_swsusp2.img (create the new initrd)&lt;br /&gt;# cd .. &amp;amp;&amp; rm -rf myinitrd/ (Cleanup)&lt;br /&gt;&lt;br /&gt;   * Now you can reboot with your new kernel. To hibernate, run #hibernate&lt;br /&gt;&lt;br /&gt;Playing movies and listening to MP3s&lt;br /&gt;&lt;br /&gt;I use xmms for listening to mp3s and xine for viewing DVDs, etc. You may also need the MPlayer package to play Windows media files. Here's how to get it.&lt;br /&gt;&lt;br /&gt;   * Download this file as /etc/yum.conf&lt;br /&gt;   * Run #yum --enablerepo freshrpms install xine xmms mplayer&lt;br /&gt;   * By default, because of licensing issues, Fedora Core 4 does not ship with MP3 decoders. Get one from: http://www.gurulabs.com/goodies/downloads.php (Note: The rpm for fedora core 3 works fine).&lt;br /&gt;   * Also get the mplayerplug-in which allows windows media to be played in a browser from: http://mplayerplug-in.sourceforge.net/download.php (Again, the Fedora Core 3 rpm worked fine for me)&lt;br /&gt;&lt;br /&gt;Hard disk performance tuning and solving the heating up problem&lt;br /&gt;&lt;br /&gt;At this point everything was working fine, except that my laptop was unusually hot (as compared to Windoze). It turns out that although CPU throttling is inbuilt in the kernel (and works fine), hard disk is not put in the 'spin down' mode automatically.&lt;br /&gt;&lt;br /&gt;Here's what I've done till now:&lt;br /&gt;&lt;br /&gt;   * Edit /etc/sysconfig/harddisks and add -m16 to the EXTRA_PARAMS line. Alternatively, uncomment the line MULTIPLE_IO=16 (Suggested by Stephen Lau). This will reduce the hard disk usage and considerably reduces power consumption. For more details see #man hdparm.&lt;br /&gt;   * Download and install Laptop Mode Tools. Download the tarball; installation is easy: just run #./install in the directory where you extracted all the files. I am still experimenting with it's options, so keep checking this page for updates.&lt;br /&gt;&lt;br /&gt;Bug fix to get a console by hitting Alt+Ctrl+Fn (Bug 160470)&lt;br /&gt;&lt;br /&gt;I could not get a terminal by hitting Alt+Ctrl+Fn (for example try Alt+Ctrl+F1). It turns out that this is a documented bug on bugzilla: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=160470. To fix this bug, download this file as /usr/X11R6/lib/modules/libvgahw.a and restart. Now the problem should be fixed.&lt;br /&gt;Feedback&lt;br /&gt;&lt;br /&gt;Please send me any comments, corrections and suggestions at : scs49 at cornell dot edu. All corrections/suggestions will be acknowledged. My only aim of maintaining this page is to make life easier for other people.&lt;br /&gt;Links&lt;br /&gt;&lt;br /&gt;Here are a few useful links&lt;br /&gt;&lt;br /&gt;   * Mauriat Miranda's Personal Fedora Core 4 Installation Guide&lt;br /&gt;   * Installing Fedora Core 3 (Linux) on Dell 700m by Mike&lt;br /&gt;   * Software Suspend with Linux and Fedora Core - M. Hensler&lt;br /&gt;   * TuxMobil: Linux with Laptops, Notebooks, PDAs, Mobile Phones and Portable Computers&lt;br /&gt;&lt;br /&gt;Thanks to...&lt;br /&gt;&lt;br /&gt;   * Stephen Lau for pointing out some broken links and some tips regarding hdparm.&lt;br /&gt;   * All other contributors. Keep your tips coming in and I will keep updating this page!&lt;br /&gt;&lt;br /&gt;Last updated: November 01 2005&lt;br /&gt;&lt;br /&gt;The latest version of this document can be found at : http://www.cs.cornell.edu/~scs49/install_linux.html&lt;br /&gt;&lt;br /&gt;Built with gvim on a Dell Inspiron 700m running Fedora Core 4&lt;br /&gt;&lt;br /&gt;Valid HTML 4.0!&lt;br /&gt;&lt;br /&gt;StatCounter - Free Web Tracker and Counter&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-116050050754740964?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/116050050754740964/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=116050050754740964' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116050050754740964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/116050050754740964'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/10/700mfc4.html' title='在700M上安装FC4的步骤'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115997978105413412</id><published>2006-10-05T00:13:00.000+08:00</published><updated>2007-03-12T00:45:46.350+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>关于MTU</title><content type='html'>使用VPN数据会中断的问题已经查到并解决。在这里总结一下吧。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;现象&lt;/span&gt;：&lt;br /&gt;在LINUX下使用PPTP Client建立VPN连接，在使用中，遭遇到当通过VPN做CVS做项目数据同步的时候遇到固定的一个项目的一个固定的文件，VPN将会中断，另外一种现象是，通过FTP传递一个100M的文件时，VPN会中断。所谓的中断指的是：客户端和服务器端的VPN仍然是通的，不过，无法通过VPN访问服务器所在的局域网内网了。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;解决办法&lt;/span&gt;：&lt;br /&gt;通过检索PPTP网站，发现有相关描述&lt;a href="http://pptpclient.sourceforge.net/howto-diagnosis.phtml#connections_freeze"&gt;http://pptpclient.sourceforge.net/howto-diagnosis.phtml#connections_freeze&lt;/a&gt;，按照这里的描述通过修改MTU数值可以解决这个问题。因此在PPTP Client的配置里面，选择最后一项“杂项”在PPPD的参数里面增加“mtu 1404"。（感谢&lt;span style="font-weight: bold;"&gt;补锅匠&lt;/span&gt;找到了解决办法）&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;分析&lt;/span&gt;：&lt;br /&gt;根据我的理解，在LINUX里面有一个物理设备eth0负责网络数据传输，根据乙太网的MTU要求，eth0的MTU为1500，即每个包1500Byte，超过1500就会有分片。这个1500包括了IP包头和数据段。当建立了一个VPN后，会形成一个逻辑的PPP0设备，他是一个逻辑网络设备负责网络数据传输，传输的时候是通过eth0这个实际物理设备来完成的。对于PPP0也有MTU，它包括VPN协议的包头加数据，那么PPP0的MTU是多少才比较合适呢？由于PPP0是通过eth0做传输的，为了避免对数据包的切片，就要求，PPP0上的MTU必须要比eth0上的MTU要小。这样PPP0的数据再加上IP包头就会比eth0的MTU=1500小，所以在PPP0上设置MTU =1404。甚至是个比1404更小的数字，通过ifconfig你可以看到eth0的MTU就是1500，而PPP0的MTU就是1400。据说在windows系统中，你建立一个VPN连接后windows系统自动会把这个虚拟网卡的MTU改成1400，所以在使用中你不会遇到这个问题。（感谢&lt;span style="font-weight: bold;"&gt;嘻嘻&lt;/span&gt;不厌其烦的解释）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115997978105413412?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115997978105413412/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115997978105413412' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115997978105413412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115997978105413412'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/10/mtu.html' title='关于MTU'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115945996477059393</id><published>2006-09-29T00:11:00.000+08:00</published><updated>2007-03-12T00:46:37.820+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>进行有效编辑的七种习惯</title><content type='html'>一篇不错的文章,有空就多看几遍罗&lt;br /&gt;进行有效编辑的七种习惯&lt;br /&gt;Bram Moolenaar&lt;br /&gt;&lt;br /&gt;如果你的很多时间是用来敲纯文本，写程序或HTML，那么有效地使用一个好的编&lt;br /&gt;辑器能节省你不少时间。这篇文章里的指导和提示将有助于你更快工作，更少犯&lt;br /&gt;错误。&lt;br /&gt;&lt;br /&gt;文中采用开源文本编辑器Vim(Vi IMproved)说明有效编辑的思想，但这些思想也&lt;br /&gt;适用于其他编辑器。择合适的编辑器只是有效编辑的第一步，对于哪个编辑器更&lt;br /&gt;好的讨论将占很大地方，这里就不提了。如果你不知道该用哪个编辑器，或者对&lt;br /&gt;现在所使用的不太满意，不妨试试Vim；你是不会失望的。&lt;br /&gt;&lt;br /&gt;第一部分：编辑一个文件&lt;br /&gt;&lt;br /&gt;快速定位&lt;br /&gt;&lt;br /&gt;编辑中大部分时间是花费在阅读、查错和寻找应该进行编辑的地方上，而不是插&lt;br /&gt;入新文字或进行修改。在文件中不断定位(navigate)是经常要做的，所以最好学&lt;br /&gt;会如何快速地进行。&lt;br /&gt;&lt;br /&gt;你常会搜寻文档中的一些文字。或者找出包含特定词或词组的行。你当然可以使&lt;br /&gt;用搜寻命令 /pattern，不过还有更聪明的方法：&lt;br /&gt;&lt;br /&gt;* 如果你看到一个特定词，想看看其他地方是不是出现过同样的词，可以使用&lt;br /&gt;* 命令。它将对光标所指的词进行搜寻。&lt;br /&gt;* 如果设置了 ' incsearch' 选项，Vim将在你正在输入搜寻模式的时候就&lt;br /&gt;显示搜寻的结果（而不是等到你敲了回车之后）。这能够使你更快地找出拼写&lt;br /&gt;错误。&lt;br /&gt;* 如果设置了 ' hlsearch' 选项，Vim将使用黄色背景对搜寻结果进行高亮&lt;br /&gt;显示。你可以对搜寻的结果一目了然。应用在程序代码中可以显示变量的所有&lt;br /&gt;引用。你甚至不需要移动鼠标就能看到所有的搜寻结果。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;对于结构化的文档，快速定位的办法就更多了。Vim提供专门针对C程序（以及&lt;br /&gt;C++、Java等等）的特殊命令：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 使用 %可以从开始括号跳到对应的关闭括号。或者从 ``#if'' 跳到对&lt;br /&gt;应的 ``#endif''。事实上， % 可以完成许多对应项之间的跳转。可&lt;br /&gt;以用来检查if()和{}结构是否平衡。&lt;br /&gt;* 使用 [{可以在代码段(block)中跳回到段起始的 ``{``。&lt;br /&gt;* 使用 gb 可以从引用某个变量的地方跳转到它的局部声明。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;定位的方法当然不止这些。关键是你需要知道有这些命令。你也许会说不可能学&lt;br /&gt;会所有命令 ? Vim里有成百个定位命令，有的很简单，有的很聪明 ? 这需要&lt;br /&gt;几星期的学习。不过，你不必如此；你只需要了解自己的编辑特点，然后掌握相&lt;br /&gt;关的定位命令就可以了。&lt;br /&gt;&lt;br /&gt;可以采取三个基本步骤：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. 在你进行编辑的时候，注意那些重复进行的操作。&lt;br /&gt;2. 找出能快速进行这些操作的编辑命令。阅读文档，问问朋友，或者看看其他&lt;br /&gt;人是如何做的。&lt;br /&gt;3. 进行练习，知道熟练为止。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;让我们通过以下这个例子说明一下：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. 你发现在写C程序时，经常要查找函数定义。你目前使用 * 命令对函&lt;br /&gt;数名进行搜寻，但得到的往往是函数的引用而不是函数定义。你觉得一定会&lt;br /&gt;有更好的办法。&lt;br /&gt;2. 读过一篇快速参考以后，你发现关于定位标记的说明，里面说明了如何定位&lt;br /&gt;函数定义，这正是你要找的！&lt;br /&gt;3. 你试着生成了一个标记文件，使用Vim自带的ctags程序。你学会了使用&lt;br /&gt;CTRL-] 命令，发现这省了不少事。为了更方便，你在 Makefile 里加&lt;br /&gt;入了几行以自动生成标记文件。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;当你使用以上三个步骤时，有几点需要注意的地方：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* ``我只想完成任务，不想去读那些文档来找新的命令。''。如果你真的是这&lt;br /&gt;么想的，那么你将永远停留在计算的石器时代。有些人编写什么都用&lt;br /&gt;Notepad，却总不明白为什么其他人总能用他一半的时间成任务。&lt;br /&gt;* 不要过分。如果你总为一点小事也要去找完美的命令，你就没法集中精力到&lt;br /&gt;你本要完成的任务上了。只要找出那些耗费过多时间的操作，然后使用相关&lt;br /&gt;的命令直到熟练就可以了。这以后你就能集中精力到自己的文档上了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下面这些章节给出了大多数人遇到的操作。你仿照它们在实际工作中使用&lt;br /&gt;三个基本步骤。&lt;br /&gt;&lt;br /&gt;不要敲两次&lt;br /&gt;&lt;br /&gt;我们所使用的字词集合是有限的。既使是词组和句子也不过是有限的几个。对于&lt;br /&gt;程序来说更是如此。很明显，你不想把同样的东西敲上两遍。&lt;br /&gt;&lt;br /&gt;你经常会想把一个词替换成另一个。如果是全文件替换，你可以使用&lt;br /&gt;:s (substitute)命令。如果只是几个位置需要被替换，一个快速办法是使&lt;br /&gt;用 * 命令找出下一个词，使用 cw 来进行替换。然后敲&lt;br /&gt;n 找到下个词，再用 . 重复 cw 命令。&lt;br /&gt;&lt;br /&gt;. 命令重复上一个改变。这里的改变是插入、删除或替换操作。能够重复&lt;br /&gt;进行操作是个极为强大的机制。如果好好使用它，那么你大部分的编辑工作可能&lt;br /&gt;只不过是敲几下 . 的事。小心不要在两次重复之间做其他修改，因为这&lt;br /&gt;将改变你要重复的操作。如果确实需要如此，可以使用 m 命令记住要修&lt;br /&gt;改的位置，等重复操作进行完毕之后再回过头来修改它。&lt;br /&gt;&lt;br /&gt;有些函数名和变量名可能很难敲。你能准确无误地输入&lt;br /&gt;``XpmCreatePixmapFromData''么？Vim的自动补齐机制能给你省不少事。它查看&lt;br /&gt;你正在编辑的文件以及#include文件，你可以只敲入``XpmCr''，然后使用&lt;br /&gt;CTRL-N 命令让Vim把它补齐为``XpmCreatePixmapFromData''。这不但节省&lt;br /&gt;了输入时间，而且减少了输入的错误。&lt;br /&gt;&lt;br /&gt;如果你有同样的词组或句子需要输入多次，还有个更简单的办法。Vim可以进行&lt;br /&gt;录制宏。使用 qa 命令开始在'a'寄存器里录制宏。然后正常地输入编&lt;br /&gt;辑命令，最后用 q 退出录制状态。如果你想重复所录制的命令，只需&lt;br /&gt;执行 @a 命令。Vim总共提供26个这样的宏寄存器。&lt;br /&gt;&lt;br /&gt;使用宏录制功能可以记录各种操作，不只限于插入操作。如果你想重复一些东西，&lt;br /&gt;不妨一试。&lt;br /&gt;&lt;br /&gt;需要注意的是记录的命令会被原封不动地重复执行。在进行定位时简单的重复宏&lt;br /&gt;操作可能不是你想要的结果。比如对于一个词这里可能需要左移4个字符，在下&lt;br /&gt;个地方可能就要左移5个字符。所以必须定位到合适的位置再重复进行宏操作。&lt;br /&gt;&lt;br /&gt;如果你要重复的命令很复杂，把它们一次敲进去会很困难。这时你可以写一个脚&lt;br /&gt;本或宏。这常被用于建立代码模板；比如，一个函数头。你想做得多聪明就可以&lt;br /&gt;做得多聪明。&lt;br /&gt;&lt;br /&gt;知错就改&lt;br /&gt;&lt;br /&gt;编辑时经常会出错。无人能免。关键是快速发现并进行改正。编辑器应该提供这&lt;br /&gt;方面的支持，不过你必须告诉它什么是对什么是错。&lt;br /&gt;&lt;br /&gt;你可能常常会重复同样的错误，你的手指所做的并非是你要它做的。可以使用缩&lt;br /&gt;写(abbreviation)进行修正。下面是一些例子：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* :abbr Lunix Linux&lt;br /&gt;* :abbr accross across&lt;br /&gt;* :abbr hte the&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这些词会在编辑时被自动改正。&lt;br /&gt;&lt;br /&gt;同样的机制也可以用于对很长的词语进行缩写。特别适用于输入那些你觉得很难&lt;br /&gt;敲的词，它可以避免出错。比如：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* :abbr pn pinguin&lt;br /&gt;* :abbr MS Mandrake Software&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但有时候你想要的正是那些缩写，比如想插入``MS''。所以缩写中最好使用那些&lt;br /&gt;不会出现在文中的词。&lt;br /&gt;&lt;br /&gt;Vim提供了一个很聪明的高亮机制，一般用于程序的语法高亮，不过也可以用来&lt;br /&gt;查错。&lt;br /&gt;&lt;br /&gt;语法高亮会使用颜色显示注释。这听上去不是什么特别重要的功能，不过一旦用&lt;br /&gt;起来就会发现这其实很有用。你能够快速地发现那些没有高亮却本应作为注释的&lt;br /&gt;文字（可能是因为忘了敲注释符）。也可以发现一些被错误当成注释的代码（可&lt;br /&gt;能是因为忘了敲``*/''）。这些错误在黑白方式下是很难被发现的，浪费了不少&lt;br /&gt;调试时间。&lt;br /&gt;&lt;br /&gt;语法高亮也可以用来查找不匹配的括号。一个未被匹配的``)''会被亮红色背景&lt;br /&gt;加以标识。你可以使用 % 命令他们是被如何匹配的，然后把``(''或&lt;br /&gt;``)''插入到合适的位置。&lt;br /&gt;&lt;br /&gt;另一类常犯的错误也很容易发现，比如把 ``#include ＜stdio.h＞''敲成了&lt;br /&gt;``#included ＜stdio.h＞''。在黑白方式下这是很难发现的，但在语法高亮下&lt;br /&gt;则能很快发现``include''能被高亮而``included''没有。&lt;br /&gt;&lt;br /&gt;再看一个更复杂的例子：对于英文文本你可以定义一个所要使用的词的长列表。&lt;br /&gt;所有未在表中出现的词都可能是错误，并进行高亮显示。可以定义几个用于编辑&lt;br /&gt;词表的宏。这正是字处理器的拼写检查功能。Vim中是靠一些脚本来实现的，你&lt;br /&gt;也可以对它进行定制：比如，只对注释中的文字进行拼写检查。&lt;br /&gt;&lt;br /&gt;第二部分：编辑多个文件&lt;br /&gt;&lt;br /&gt;文件总是成帮结伙&lt;br /&gt;&lt;br /&gt;人们很少只编辑一个文件。一般需要顺序或同时编辑一些相关的文件。你应该利&lt;br /&gt;用编辑器使多文件编辑工作更为高效地。&lt;br /&gt;&lt;br /&gt;上面提到的标识(tag)机制也支持跨文件搜寻。一般做法是为项目的所有文件生&lt;br /&gt;成标识文件，然后在项目的所有文件中搜寻函数、结构、类型(typedef)等的定&lt;br /&gt;义。这比手工搜寻要快捷的多；我浏览一个程序要做的第一件事便是建立标识文&lt;br /&gt;件。&lt;br /&gt;&lt;br /&gt;另一个强大的功能是使用 :grep 命令对一组文件进行模式搜寻。Vim把&lt;br /&gt;搜寻结果做成一个列表，然后跳到第一个结果。使用 :cn 命令跳到下&lt;br /&gt;一个结果。如果你想改变一个函数调用的、参数个数，那么这个功能会很有用。&lt;br /&gt;&lt;br /&gt;头文件里有很多有用的信息。然而要知道一个声明出现在哪个头文件中却需要花&lt;br /&gt;不少时间。Vim能够理解头文件，能够从中找到你需要的东西。把光标移动到函&lt;br /&gt;数名下，然后敲 [I：Vim就会显示出一个头文件中该函数名的所有匹配。&lt;br /&gt;如果你想得到更详细的结果，可以直接跳到声明中。一个类似的命令可以用于检&lt;br /&gt;查你所使用的头文件是否正确。&lt;br /&gt;&lt;br /&gt;你可以把Vim的编辑区域进行分隔，用来编辑不同的文件。你可以对两个或多个&lt;br /&gt;文件进行比较，或者进行拷贝/粘贴。有许多命令用于打开关闭窗口，文件间跳&lt;br /&gt;转，暂时隐藏文件等等。可以再使用上面提到的三个基本步骤选择合适的命令进&lt;br /&gt;行学习。&lt;br /&gt;&lt;br /&gt;多窗口还有更多的用法。预览标识(preview-tag)就是个很好的例子。它打开一&lt;br /&gt;个特殊的预览窗口，光标还保留在你正在编辑的文件中。预览窗口中可以是光标&lt;br /&gt;所指函数的声明。如果你移动光标到另一个名字下，停留一两秒，预览窗口中就&lt;br /&gt;会显示那个名字的定义。名字还可以是头文件中声明的结构或函数。&lt;br /&gt;&lt;br /&gt;让我们一起来工作&lt;br /&gt;&lt;br /&gt;编辑器可以编辑文件。e-mail程序可以收发消息。操作系统可以运行程序。每个&lt;br /&gt;程序都有它自己的任务，而且应该做好。如果能让程序一同工作，那么就会实现&lt;br /&gt;很强大的功能。&lt;br /&gt;&lt;br /&gt;举个简单的例子：选择一个列表中的结构化的文字，并对它进行排序：&lt;br /&gt;!sort。这将使用外部命令``sort''来过滤文件。容易吧？排序功能是可以&lt;br /&gt;添加到编译器中的。不过看一下``man sort''就知道它有很多选项。它可能用了&lt;br /&gt;一个极为精巧的排序算法。你还打算把它加到编辑器中么？更何况还有其他不少&lt;br /&gt;过滤程序。编辑器可能会变得很大。&lt;br /&gt;&lt;br /&gt;Unix精神的一个体现就是提供独立的程序，各自做好自己的任务，然后组合起来&lt;br /&gt;完成更大的任务。不幸的是，许多编辑器不能很好地和其他程序一起工作，比如，&lt;br /&gt;你不能包Netscape的邮件编辑器换成其他编辑器。这样你只能使用那个不顺手的&lt;br /&gt;程序。另一个趋势是在编辑器里提供所有的功能，Emacs就是个代表（有人说&lt;br /&gt;Emacs其实是个操作系统，只是可以用来编辑文件）。&lt;br /&gt;&lt;br /&gt;Vim尽力和其他程序集成，但这需要经过斗争。目前Vim已经可以作为&lt;br /&gt;MS-Developer Studio和Sniff的编辑器。一些e-mail程序（比如Mutt）也支持外&lt;br /&gt;部编辑器。和Sun Workshop的集成工作正在进行中。总的来说这个领域还有待提&lt;br /&gt;高。将来我们会有一个大于其各部分总和的系统。&lt;br /&gt;&lt;br /&gt;文本结构化&lt;br /&gt;&lt;br /&gt;你可能经常会遇到有一些结构的文本，这些结构可能同于那些现有命令所支持的&lt;br /&gt;结构。这样你不得不利用那些底层的``砖头''创建你自己的宏和脚本。这里说明&lt;br /&gt;的就是这类更复杂的东西。&lt;br /&gt;&lt;br /&gt;有个简单的办法可以加速编辑-编译-修改这个循环。Vim提供 :make 命&lt;br /&gt;令，用于进行编译，并且获取错误输出，把你带到发生错误的地方进行修正。如&lt;br /&gt;果你使用了另一个编译器，那么错误就无法被Vim获得。如果不想自己动手，可&lt;br /&gt;以修改' errorformat'选项。告诉Vim错误是什么样子，以及如何从中获&lt;br /&gt;得文件名和行号。它支持复杂的gcc错误信息，所以应该也能支持其他编译器。&lt;br /&gt;&lt;br /&gt;有时处理一个新的文件类型只需要设置几个选项或写一些宏。比如，为了在man&lt;br /&gt;手册中进行跳转，你可以写一个宏获取光标下的词，清除缓冲区，然后读入新的&lt;br /&gt;man手册。这是简单而高效的参照(cross-reference)方法。&lt;br /&gt;&lt;br /&gt;使用三个基本步骤，你可以更有效地处理各种结构化文件。只需要想想你想对文&lt;br /&gt;件采取的操作，然后找到相应的命令去用就是了。就这么简单，你只要去做就成&lt;br /&gt;了。&lt;br /&gt;&lt;br /&gt;第三部分：磨刀&lt;br /&gt;&lt;br /&gt;养成习惯&lt;br /&gt;&lt;br /&gt;要学会开车必须下功夫。这是不是你只骑自行车的原因么？当然不是，你会发现&lt;br /&gt;你必须花时间来获得所需的技术。文本编辑也不例外。你需要学习新的命令，并&lt;br /&gt;使用它直至成为习惯。&lt;br /&gt;&lt;br /&gt;另一方面，你不应该试图学习编辑器提供的每个命令。这是彻底的浪费时间。大&lt;br /&gt;多数人只需要学习10%到20%的命令就足够工作了。但是每个人所需要的命令都&lt;br /&gt;各不相同。你需要不断学习，找出那些可以自动完成的重复操作。如果你只做一&lt;br /&gt;次操作，而且以后也不会再去做，那么就不需要进行优化。是如果你发现你在过&lt;br /&gt;去的一小时中重复了好几遍同样的操作，那么就有必要查看一下手册，看看能否&lt;br /&gt;更快速地完成。或者写一个宏来做。如果是是个不小的任务，比如对一类文本进&lt;br /&gt;行对齐，你需要阅读一下新闻组或看看Internet上是不是有人已经解决了同样的&lt;br /&gt;问题。&lt;br /&gt;&lt;br /&gt;最根本的步骤是最后的那一个。你可能能够找到一个重复性的任务，找到一个不&lt;br /&gt;错的作法，可过了一个周末就彻底忘了自己是怎么做的了。这不成。你必须重复&lt;br /&gt;你的作法直到烂熟于胸。只有这时你才真正获得了你需要的高效。一次不要学得&lt;br /&gt;太多。一次只试一些工作得很好的方法。对于那些不常用的技巧，你可能只需要&lt;br /&gt;把它记下来，留待以后查阅。总之，如果抱着这样的目标，你的编辑技能就会更&lt;br /&gt;加有效。&lt;br /&gt;&lt;br /&gt;最后需要指出的是，如果人们忽略了以上几点会发生什么：我仍然可以看到有人&lt;br /&gt;盯着屏幕看上半天，用两个指头敲几下，然后继续抬头看着屏幕，还抱怨自己太&lt;br /&gt;累.. 把十个指头都用上！这不光更快，还不累。每天抽出一个小时练习一下指&lt;br /&gt;法，只要几星期就足够了。&lt;br /&gt;&lt;br /&gt;后记&lt;br /&gt;&lt;br /&gt;书名得益于Stephen R. Covey所著的那本畅销书《高效人的七种习惯》(``The 7&lt;br /&gt;habits of highly effective people'')。&lt;br /&gt;&lt;br /&gt;关于作者&lt;br /&gt;&lt;br /&gt;Bram Moolenaar是Vim的主要作者。他编写了Vim核心功能，并采纳了许多开发者&lt;br /&gt;提供的代码。他的e-mail地址是：Bram@Moolenaar.net&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115945996477059393?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115945996477059393/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115945996477059393' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115945996477059393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115945996477059393'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/09/blog-post.html' title='进行有效编辑的七种习惯'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115932955469667394</id><published>2006-09-27T11:57:00.000+08:00</published><updated>2006-09-27T11:59:14.710+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>在vi里开发JAVA代码</title><content type='html'>准备建立自己好的编辑习惯,vi看来是个不错的开始&lt;br /&gt;转帖自http://java.ccidnet.com/art/3743/20050901/519667_1.html&lt;br /&gt;&lt;br /&gt;大多数的软件开发人员都会在其生涯的某个时候碰到vi编辑器??如果不是在大学里的话，那就是在实际使用的UNIX机器上，将自己的Windows桌面机器里所编码东西安装到完全成熟的集成开发环境（IDE）里的时候。很少能够碰到长期从事微软系统开发的开发人员不会在一个月至少使用vi一次。有些开发人员很喜爱vi，而其他的则很厌恶它。但是对于一个Java 的开发人员来说，要想让vi成为一个更好的开发环境将会有很多的工作需要完成。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;很多人都预料Java和vi并不总是能够共同工作。因为vi是小型功利主义的同义词，而Java则像是一头笨拙的大型动物。选择将vi作为其主要工作环境的Java开发人员可能是比较罕见的，但是即使是偶尔使用vi的用户，也能够从花上一点时间将它配置一下，使之与Java更加友好上获益。你可能会很震惊的看到，当所有提到的工作都做到位之后，vi能够为你的IDE提供多少特性。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;让我们开始吧&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;首先，要确信你的vi命令已经连接到了vim库，至少要象征性地连接到了或者替代了（aliased）。Vim的意思是Vi Improved，它几乎已经在vi及其衍生产品中占据了的主导地位。它速度快，易维护，特性丰富，而且几乎在每个平台上都有。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一旦你安装好了vim，就要在你的主目录下创建一个叫做.vimrc的文件。Listing A显示了一个很好的.vimrc起始文件。这个文件里的几个命令行告诉vi要给Java的源代码涂上颜色，使其更易于阅读。其结果并不十分重要，而且如果你不喜欢显示出来的颜色，你可以放心地取消它们。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;对标签跳跃的支持&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;标签是Java的标识符，它们可以是包装名、类名、方法名，或者是字段名。在你的代码里创建一个所有标签的大型索引，能够让你使用单个按键就跳跃到任何类、方法或者字段的定义上。这些索引文件都是使用ctags程序创建的，后者在vim的发行版里都有。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ctags会获取Java源文件或者包含有Java源代码的目录的列表，从中提取标识符的信息，再生成所vi需要的用于跳跃到标签的排序索引。下面一行代码是ctags调用的一个例子，只要JAVA_HOME变量被正确地定义，它会生成一个包含有项目源代码里所有标识符的标签文件，Sun核心库源代码也是如此：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一旦标签索引创建好了，你所需要做的只是告诉vi要在哪里找到它。这一步是通过将set tags=~/.tags添加到你的~/.vimrc文件里实现的。有了可用的标签索引文件，而且vi也知道了要到哪里去找到它，你现在就可以通过按 [CTRL] ]来跳跃到任何标识符上了。尽管这对于跳跃到你已经定义的方法、类和你自己编写的字段上很有用，但是如果你将Java核心类库加到你的标签索引里将会更加有用。现在，只用简单地对任何核心类库的类或者方法按[Ctrl] ]，你就会跳跃到它完全使用javadoc所编写成的定义。.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;标签名的填充&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;虽然跳跃到类、方法和字段定义所在的位置对于查看其javadoc以及检查其内容是有很用处的，但是更常见的情况是，你只是需要检查一个关键字的定义。在大多数IDE里，这一点是通过输入关键字完成的。但是，如果你已经将你的标签文件像前面一部分所讲的那样设置了，那么在vi里填入关键字就只是一个导向性的配置了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;将set complete=.,w,b,u,t,I这一行放到你的~/.vimrc文件里，能够让你在插入模式下通过按[Ctrl]N自动地将任何类、方法或者字段名填满。连续按[Ctrl]N将移动到下一个相匹配的地方。当你看到你想要找的标签时，只用继续输入你源代码剩下的部分就行了。你可以在vim的Web 网站上找到其他关于标签名填充的提示，包括使用Tab键来进行填充。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;方法的折叠&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;好的实践经验告诉我们：你应该保持类的短小和简单，因为程序复杂性表现在类的层次性上，而不是500行的方法上。不幸的是，有些类已经脱离了控制，变得事实上无法移动操作了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IDE常常会在左边一个狭窄的框体提供一个列出了内容里方法的表格，以此来减轻开发人员查看冗长源代码的困难。与之相对的是，vi提供了一种它叫做“方法折叠（method folding）”的可折叠程序块。折叠允许你隐藏被缩排过的（indented）代码块开头和结尾之间的所有代码。要激活折叠，就要把set foldmethod=indent加到你的~/vimrc里。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一旦方法的折叠被激活，你就可以使用:set foldlevel=0来极大地精简一个Java的源文件。如果将折叠的层数设置为零，那么你就是在告诉vi只显示完全没有被缩排的命令行，而后者在大多数Java源文件里代表着包装、导入，以及类或者接口的定义行。设置foldlevel=1就是告诉vi说：除了没有被缩排的命令行，只缩排过一次的命令行也应该被显示，它们包括方法的签名以及其他一些不多的内容。要打开一个折叠夹并查看某个方法所隐藏的内容，你就要在被折叠的命令行上输入zO。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;通过设置foldlevel就能够很轻易地开启或者取消方法的折叠。我喜欢在调试的时候使用它，但是不喜欢在编写新代码的时候使用它。你要自己来决定它应该如何去适应你的工作方式。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;编译和快速修补的编辑&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IDE不仅仅只是用于编辑；它们还是编译环境。Vi在不需要使用外部编译器和剖析结果信息上的工作做得非常好。现在很多Java的项目都将易于编写脚本的Ant作为一个创建环境。我没有向.vimrc文件里加载很多Ant专用的设置，而是单独创建了一个做作vimAnt脚本，见Listing B。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这个脚本调用了一个带有几个参数的Ant可执行文件，然后对输出进行过滤，让其只包含编译器输出。你现在几乎就准备好从vi里调用Ant了。你只需要将Listing C里的命令行加到你的~/.vimrc文件里。这些命令行告诉vi要调用你所创建的vimAnt脚本，并提示它如何剖析Ant的jikes输出。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在你的系统路径下有了vimAnt脚本之后，你现在就可以使用:make命令来初始化编译了。当前目录及其所有的父目录都会被搜索，以寻找一个build.xml文件，这个文件的类对象会被调用。错误输出会被vi自动地剖析。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一旦你在vi里进行了带有错误的编译，你就可以使用快速修复（quick fix）模式来迅速地到达错误地点，进行及时的修补。:cn命令会把你带到下一个出错地点，而不考虑它在什么文件里。:cc命令会向你显示当前错误的编译器输出信息；而:cl会生成一个列有项目所有错误的列表，以供浏览这些错误。修补好你的错误，你就离成功的编译只有一:make之遥了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115932955469667394?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115932955469667394/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115932955469667394' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115932955469667394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115932955469667394'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/09/vijava.html' title='在vi里开发JAVA代码'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115925690099781697</id><published>2006-09-26T15:48:00.000+08:00</published><updated>2006-09-26T15:48:21.190+08:00</updated><title type='text'>wherethehellisbrian</title><content type='html'>&lt;a href="http://wherethehellisbrian.blogspot.com/"&gt;wherethehellisbrian&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115925690099781697?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wherethehellisbrian.blogspot.com/' title='wherethehellisbrian'/><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115925690099781697/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115925690099781697' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115925690099781697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115925690099781697'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/09/wherethehellisbrian.html' title='wherethehellisbrian'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115923314871018781</id><published>2006-09-26T09:05:00.000+08:00</published><updated>2006-09-26T09:12:28.723+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FC4下使用VPN继续受挫</title><content type='html'>在FC4下使用VPN遇到两个问题,&lt;br /&gt;1.在eclipse使用CVS通过VPN获得项目的时候,一个固定的项目会中断VPN&lt;br /&gt;2.通过使用wine模拟使用BQQ,发现无法登陆网络.&lt;br /&gt;&lt;br /&gt;在第1个问题上,客户端用的是PPTP Client,服务端用的是PPDP,但是用CVS check out 固定的项目就会造成通过VPN服务器访问内网中断,但是客户端到VPN服务器的访问仍然是通的.试图通过修改家里的路由器的MTU值来解决这个问题,最终失败,仍然没有找到问题的解决办法.&lt;br /&gt;&lt;br /&gt;对于第2个问题,通过windows平台测试,发现windows平台下的BQQ,也无法通过VPN登陆内网,估计是服务器的配置上可能有问题.等重新检查服务器的配置后才能确定了.&lt;br /&gt;&lt;br /&gt;随便翻了两页书,发现Xwindow的结构还是挺有意思的,负责控制画界面和硬件打交道的部分是server,应用程序是client,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115923314871018781?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115923314871018781/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115923314871018781' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115923314871018781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115923314871018781'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/09/fc4vpn.html' title='FC4下使用VPN继续受挫'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-115916718231877582</id><published>2006-09-25T14:48:00.000+08:00</published><updated>2006-09-25T15:30:38.580+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>FC4配置网络摘录</title><content type='html'>&lt;div class="smallfont"&gt;&lt;strong style="font-weight: normal;"&gt;以下是从&lt;/strong&gt;&lt;span class="navbar" style="color: rgb(51, 0, 51);"&gt;&lt;a accesskey="1" href="http://www.linuxeden.com/forum/index.php?"&gt;Linux伊甸园论坛&lt;/a&gt;&lt;/span&gt; 上看到的帖子，对我配置Linux Fc4帮助很大。感谢作者&lt;a class="bigusername" href="http://www.linuxeden.com/forum/member.php?u=11432"&gt;gt4317&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;【原创】FC4 安装配置过程（打魔兽，上QQ2005）要求加精&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;自从上次安装了QQ为了能用wine再装一遍，折腾了很长时间，FC4装上快3个星期了，基本被驯服并且愿意为我工作了。鄙人花了近300个小时的时间。现在写个安装手册，强烈要求版主加精，希望有人愿意看。&lt;br /&gt;&lt;br /&gt;1、安装FC4&lt;br /&gt;光盘安装是傻瓜化安装，我就不说了，安装过程中出错自己解决。&lt;br /&gt;下载fedora core 4 4个iso文件，下面将的是硬盘安装方法。为了少打几个字母，我把4个文件放在&lt;br /&gt;d盘的d:\fc4下的1.iso,2.iso,2.iso,4.iso&lt;br /&gt;&lt;br /&gt;将1.iso中的isolinux解出到d:\fc4\boot&lt;br /&gt;然后，去红旗盘中找了个loadlin.exe(网络上到处都是)&lt;br /&gt;建立boot.bat&lt;br /&gt;loadlin vmlinuz initrd=initrd.img ramdisk_size=64000 %1 %2 %3 %4 %5 %6 %7 %8 %9&lt;br /&gt;上述文件全部放在d:\fc4\boot下&lt;br /&gt;然后，使用98盘启动（只要是纯dos就行）&lt;br /&gt;d:&lt;br /&gt;cd fc4&lt;br /&gt;cd boot&lt;br /&gt;boot&lt;br /&gt;然后系统控制全被交给你内存虚拟盘中的linux并且开始了安装。&lt;br /&gt;语言我选的是US,键盘US，然后选择硬盘安装。然后用上下光标移动到/dev/hda5输入fc4&lt;br /&gt;然后就开始安装了。再次说明一下。&lt;br /&gt;/dev/hdaX 是第一个硬盘，第二个硬盘是/dev/hdbx&lt;br /&gt;每个硬盘的主分区是1－4，第一个硬盘就是/dev/hda1-4如果有了扩展分区，那么下面的逻辑驱动器是从5开始的。如果你的硬盘是一个主分区3个逻辑驱动器，那么编号分别是&lt;br /&gt;/dev/hda1 -&gt;c:&lt;br /&gt;/dev/hda5 -&gt;d&lt;br /&gt;/dev/hda6 -&gt;e&lt;br /&gt;/dev/hda7 -&gt;f&lt;br /&gt;&lt;br /&gt;然后的安装过程自己看把，一般没有问题。&lt;br /&gt;安装完成的向导中，建立一个非root用户。我建的是admin&lt;br /&gt;一定要建，早晚都要用，现在建更好。&lt;br /&gt;装完了吗？？恭喜你，入门了。&lt;br /&gt;&lt;br /&gt;2、安装nvidia的显卡驱动。&lt;br /&gt;FC4的显示驱动安装和FC3稍微有点不一样。ATI的自己研究吧&lt;br /&gt;还有就是装了nvidia的驱动后，鼠标光标旁边的杂点也不见了，一般的屏幕偏移现象有消失了并且打开了3d的opengl支持。&lt;br /&gt;显卡的驱动一定要装，不然后面说的游戏速度慢不要再问我。&lt;br /&gt;下载nvidia的驱动，放到tmp（推荐，避免某些不可预知的权限问题）下。&lt;br /&gt;/tmp/NVIDIA-Linux-x86-1.0-7667-pkg1.run&lt;br /&gt;在安装前确保安装了&lt;br /&gt;GCC,compat-gcc,libstdc++,compat-libstdc++,kernel,kernel-devel&lt;br /&gt;然后更改/etc/selinux/config文件&lt;br /&gt;将SELISELINUX=enforcing加个#注释&lt;br /&gt;再加一行&lt;br /&gt;SELINUX=disabled&lt;br /&gt;然后重新启动你的电脑&lt;br /&gt;起来后用ctrl+alt+f1切到控制台，使用root登录，一应要用root&lt;br /&gt;然后使用init 3切换到单用户模式并强行关掉gnome&lt;br /&gt;然后cd /tmp&lt;br /&gt;./NVIDIA*.run&lt;br /&gt;执行安装程序，过程中如果提示没有没有识别出你的kernel并且要上nvidia的网站下更新版本的时候选NO其余都是YES／Accept&lt;br /&gt;安装完成后，把刚才的/etc/selinux/config文件改回来，另外修改/etc/X11/xorg.conf&lt;br /&gt;把启动modules中的"dri"的一行去掉&lt;br /&gt;然后把驱动中有"nv"的地方换成"nvidia"&lt;br /&gt;保存，退出&lt;br /&gt;然后执行fixfiles relabel之后有个几分钟的等待。然后重启，重启过程中有个地方也有大概10分钟的等待，等着吧，他在重新relabel以便selinux&lt;br /&gt;然后进gnome的时候出现了nvidia的logo就成功了。&lt;br /&gt;&lt;br /&gt;如果此时的屏幕还有偏移，开个终端运行xvidtune然后调整，然后apply预览一下。调好后选show把参数显示出来，然后在/etc/X11/xorg.conf中，显示器的那节中以下列方式加上一行&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;Identifier "Monitor0"&lt;br /&gt;VendorName "Monitor Vendor"&lt;br /&gt;ModelName "MIRECHANG 77"&lt;br /&gt;DisplaySize 320 240&lt;br /&gt;HorizSync 30.0 - 71.0&lt;br /&gt;VertRefresh 50.0 - 160.0&lt;br /&gt;Option "dpms"&lt;br /&gt;ModeLine "1024x768" xxx xxx xxx xxx xxx xxx xxx xxx xx xxx xxx xxx&lt;br /&gt;EndSection&lt;br /&gt;然后重启你的x就OK&lt;br /&gt;&lt;br /&gt;3、访问NTFS分区&lt;br /&gt;下载&lt;br /&gt;kernel-module-ntfs-2.6.11-1.1369_FC4-2.1.22-0.rr.6.4.i686.rpm&lt;br /&gt;然后rpm -ivh kernel＊.11＊i686.rpm 安装该文件&lt;br /&gt;&lt;br /&gt;3、自动加载windows下的分区&lt;br /&gt;我有c,d,e，分别是hda1,hda5,hda6,其中c是ntfs的。&lt;br /&gt;在/mnt下建立目录&lt;br /&gt;mkdir c&lt;br /&gt;mkdir d&lt;br /&gt;mkdir e&lt;br /&gt;然后修改/etc/fstab&lt;br /&gt;加上下列几行&lt;br /&gt;/dev/hda1 /mnt/c ntfs iocharset=utf8&lt;br /&gt;/dev/hda5 /mnt/d vfat iocharset=utf8&lt;br /&gt;/dev/hda6 /mnt/e vfat iocharset=utf8&lt;br /&gt;然后重新启动计算机&lt;br /&gt;&lt;br /&gt;4、美化中文界面。&lt;br /&gt;上面已经加载了ntfs的分区，不错，那个就是我的windows的安装盘。&lt;br /&gt;将windows/fonts/ 下的中文字体，simsun.ttc是必须的，其他的自己看着办。复制到 /usr/share/fonts/chinese/TrueType下。然后更改配置文件。如果不想该配置文件先把上述目录清空了在将中文字体复制进去 就行了，我原来就是这样做的，但是该配置文件更保险。&lt;br /&gt;修改/etc/fonts/fonts.conf&lt;br /&gt;看见下面一段一段的，整个文件****有6断&lt;br /&gt;&lt;br /&gt;&lt;family&gt;Times&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Times New Roman&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Nimbus Roman No9 L&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Luxi Serif&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Sazanami Mincho&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Kochi Mincho&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Simsun&lt;/family&gt; ＃像这样，把Simsun这行加在系统默认所有中文字体的前面。&lt;br /&gt;&lt;family&gt;AR PL SungtiL GB&lt;/family&gt;&lt;br /&gt;&lt;family&gt;AR PL Mingti2L Big5&lt;/family&gt;&lt;br /&gt;&lt;family&gt;Baekmuk Batang&lt;/family&gt;&lt;br /&gt;&lt;default&gt;&lt;family&gt;serif&lt;/family&gt;&lt;/default&gt;&lt;br /&gt;总共有6段，全部修改完，再把首选项中的字体中的大小改为9。然后注销，重新登录，然后字体近乎完美，和windows已经差距不大了，某些地方比windows更漂亮。比FC中好多了。&lt;br /&gt;&lt;br /&gt;5、安装输入法&lt;br /&gt;FC4自带的iiimf有点.....我更喜欢scim&lt;br /&gt;那么装吧,我这个方法首先要保证能上网并连上了。（怎样配制PPPoe上网不要我说了吧）&lt;br /&gt;开个终端然后&lt;br /&gt;yum remove iiimf*&lt;br /&gt;删除原来的输入法，*一定要跟，*是什么意思大家都应该知道吧，和ls中的用法一样。&lt;br /&gt;然后&lt;br /&gt;yum install scim*&lt;br /&gt;安装scim,这是完全的安装，如果要选择一下先用yum list scim*看一下有些什么再分别安装，反正也不大，几个M就完全安装了&lt;br /&gt;然后在配置一下。去首选项中的更多首选项中的scim的配置中，把不用的输入法前面的勾去掉。省得以后ctrl+shift切换输入法使用次数&lt;br /&gt;&lt;br /&gt;6、播放MP3&lt;br /&gt;到网络上下个bmp装上就可以了全名是beep-media-player&lt;br /&gt;然后安装它的mp3,wmv的插件。&lt;br /&gt;&lt;br /&gt;7、播放rmvb&lt;br /&gt;FC4自己带的helix基本不能放东西。到real.com上下个&lt;br /&gt;RealPlayer10GOLD.bin&lt;br /&gt;然后给执行权限，也可以点右键属性可执行的地方打个勾&lt;br /&gt;chmod a+x RealPlayer10GOLD.bin&lt;br /&gt;然后./RealPlayer10GOLD.bin然后自己看着办&lt;br /&gt;&lt;br /&gt;8、配置游戏&lt;br /&gt;鄙人非常喜欢玩游戏，如魔兽，CS&lt;br /&gt;这里使用的是cedega，他对游戏的支持远远比wine好，特别是3D加速。但是cedega是要收钱的。我用的是盗版的，不要告我哦。&lt;br /&gt;wine我也再用，等下你们就知道了。&lt;br /&gt;下载cedega 4.3的rpm安装包，然后安装，不要告诉我你不会装rpm&lt;br /&gt;然后就OK了，例如运行魔兽&lt;br /&gt;&lt;br /&gt;开个终端然后cedega War3.exe然后就OK了，速度和windows 下基本没有差别。&lt;br /&gt;&lt;br /&gt;9、配置QQ2005&lt;br /&gt;&lt;br /&gt;这是最麻烦的东西了，我安装过程中花的时间最长的就是这个。对wine版本控制的要求几乎到了疯狂的地步，我敢保证你我高诉你的方法能用，并且是独门秘籍。你在整个互联网上都搜不到，我光这个东西花了近150个小时。&lt;br /&gt;&lt;br /&gt;首先安装wine注意版本，我用的是最新的20050628&lt;br /&gt;&lt;br /&gt;还记得我叫你建的非root用户吗，现在就要用，如果没有建，那么赶快useradd -g root xxxxx一个&lt;br /&gt;下面的安装我一直也必须使用admin用户，非root ，一定是重启然后用非root用户登录的，不能su xxxxx,切记&lt;br /&gt;&lt;br /&gt;一定要是这个版本，不信你就走这瞧，并且不能下rpm一定要用源码自己编，现在还没有for FC4 的rpm&lt;br /&gt;下载源码，然后安装，安装也是有学问的，不要一来就configure 然后make &amp;&amp;amp; make install 如果你是那样装的，我敢保证你很麻烦。&lt;br /&gt;下载源码包，解压&lt;br /&gt;然后进入cd wine-20050628&lt;br /&gt;然后安装，一定用我这种方法&lt;br /&gt;./tools/wineinstall&lt;br /&gt;输入上面的命令，然后它就自动configure/make depend/make/make install了&lt;br /&gt;慢，我的爱机跑了近半小时然后提示是否要建config文件选是，其他的自己看着半，&lt;br /&gt;如果中途出错了，检查你的系统。如果还是不行，那么很遗憾，用装不上QQ了。&lt;br /&gt;&lt;br /&gt;然后安装wine-config-sidenet&lt;br /&gt;到sidenet的网站下，网址我记不清了，自己google一下。&lt;br /&gt;是个tgz的文件，然后cp到／tmp下，解压。&lt;br /&gt;&lt;br /&gt;然后最重要的是dcom98.exe和mfc40.dll千万不能用2000或xp下的版本。它的readme中有地址，到微软网站下。&lt;br /&gt;然后解压出dcom98.exe和mfc40.dll放在刚才解出的/tmp/wine-config-sidenet目录下&lt;br /&gt;然后./setup运行&lt;br /&gt;提示语言时输入cn回车&lt;br /&gt;选安装内容的时候选3&lt;br /&gt;是否装ie输入y&lt;br /&gt;是否装dcom98输入y&lt;br /&gt;是否装media player 7输入n&lt;br /&gt;其他的一般都是y&lt;br /&gt;然后，它就自动备份了你的/home/admin/.wine目录,自动下载安装，安装速度看你的网络情况和机器配置，期间最好不要动你的机器，不要做任何操作，死了可别怪我没有告诉你。ie的安装过程和windows一样，自己装吧.&lt;br /&gt;我的机器跑了将近半个小是，然后OK了，它会自动启动你的ie看看是否能上网，如果能上，你就基本成功了&lt;br /&gt;&lt;br /&gt;最后下载qq2005beta2.exe放在你的虚拟c盘中，我的是/home/admin/c下。（很重要）&lt;br /&gt;然后wine qq2005beta2.exe&lt;br /&gt;然后像windows下一样的安装。装完就能运行了&lt;br /&gt;&lt;br /&gt;顺便说一下，运行的速度很慢，不要以为它死了。如果你没有特殊要求，建议使用lumaQQ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上面就是我近300小时的心血。&lt;br /&gt;希望能帮助大家，有的方法希望能有抛砖引玉的作用，如果你能顺利的完成上面所有步骤的安装，那么，这个你实际已经能使用FC4代替windows下的大部分操作了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-115916718231877582?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuv-sisyphus.blogspot.com/feeds/115916718231877582/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6301049&amp;postID=115916718231877582' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115916718231877582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/115916718231877582'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2006/09/fc4.html' title='FC4配置网络摘录'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-107361937137099497</id><published>2004-01-09T11:36:00.000+08:00</published><updated>2006-09-25T15:21:53.776+08:00</updated><title type='text'>开始更新是比较困难的事情</title><content type='html'>开始更新是比较困难的事情&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-107361937137099497?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107361937137099497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107361937137099497'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2004/01/blog-post.html' title='开始更新是比较困难的事情'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-107356708648965098</id><published>2004-01-08T21:03:00.000+08:00</published><updated>2006-09-25T15:22:08.553+08:00</updated><title type='text'>开始学习struts</title><content type='html'>开始学习struts&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-107356708648965098?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107356708648965098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107356708648965098'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2004/01/struts.html' title='开始学习struts'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6301049.post-107356363366025701</id><published>2004-01-08T20:06:00.000+08:00</published><updated>2006-09-25T15:22:32.213+08:00</updated><title type='text'>Blog开谈</title><content type='html'>Want to know, This is The First One&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6301049-107356363366025701?l=kuv-sisyphus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107356363366025701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6301049/posts/default/107356363366025701'/><link rel='alternate' type='text/html' href='http://kuv-sisyphus.blogspot.com/2004/01/blog.html' title='Blog开谈'/><author><name>Sisyphus</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
