2009年11月28日星期六

ubuntu9.10安装配置jdk

1. 下载jdk1.6

到http://java.sun.com上下载jdk-6u10-linux-i586.bin文件。

2、进入安装目录cd /opt, copy文件到安装目录,例:sudo cp /home/jond/软件/jdk-6u10-linux-i586.bin jdk-6u10-linux-i586.bin

3、赋予文件可执行权限:chmod +x jdk-6u10-linux-i586.bin

4、安装需要root权限,先su到root用户。

执行安装:sudo ./jdk-6u10-linux-i586.bin;

安装协议按q跳过。

5、配置环境变量:

用root权限 在/etc/profile文件最后添加以下代码:

export JAVA_HOME=/opt/jdk1.6.0_10
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


执行命令source /etc/profile 让环境变量立即生效。

6、这个时候就搞定收工了:java -version

java version “1.6.0_10″
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)

2009年10月7日星期三

Linux 文件系统管理命令

1.ext3 fs 文件系统结构


# df      -> 使用 df 命令以及参数 i 来了解目前系统中的 i-node 大小与数量
# df -i 


2.文件系统的基本命令操作


# pwd     -> 显示目前工作目录
# ls      -> 列出目录内容
# ls -al  -> 若是要得到详细资料可以使用参数 -l ,参数 -a 以显示隐藏文件


3.目录切换 —— cd


# cd ~         ->(或仅输入 cd)回到目前登录用户主目录
# cd nsmail    -> 切换到当前目录下层的 nsmail 目录
# cd ..        -> 回到上一层目录
# cd /         -> 直接切换到根目录


4.文件的复制、移动与删掉



  • 文件复制

   将 /test1 目录下的 file1 复制到 /test3目录,并将文件名称改为 files2,可以输入以下的命令:

# cp /test1/file1 /test3/files2

   若是要将 dir1 下的所有目录包括子目录都复制到 dir2,并变更文件系统格式,可输入以下的命令

# cp -ax dir1 dir2

  • 文件移动(重命名)


# mv /test1/file1 /test3/files2    ->将 /test1 目录下的 file1 移动至 /test3 目录,并将文件名称改为 file2


  • 文件删除

# rm /test1/file1   ->将 /test1 目录下的 file1 文件删除


5.目录的新增与删除


# mkdir /fax   ->  新增一个名为 "/fax" 目录的方法
# rmdir /fax   ->  删除目录

rmdir:  '/fax': Directory not empty    -> 如果出现类似的错误,说明目录中还有文件

# rm -rf /fax    -> 强制删除目录以其中的文件


6.创建链接文件

# ln -s /test1/file1 /test3/file1.ln   ->将 /test1 目录中的 file1 在 /test3 目录中创建一个名为 file.ln 的链接

7.查看文件内容

# cat /test1/file1.txt   ->  查看 /test1 目录下的 file1.txt 内容
# cat > /test1/file2.txt   -> 直接在键盘中输入内容,并且将内容存储为文件,但需注意一点,在输入最后一行后,必须按一次 Enter 键,否则最后一行不会显示出来,在输入完毕之后按 Ctrl+C 以结束输入工作。
# cat -b /test1/file2.txt   -> 则系统会在每一非空白行前加入编号,以便识别
# cat /test1/file.txt /test1/file2.txt /test1/file3.txt  -> 将 /test1/file.txt /test1/file2.txt /test1/file3.txt 3个文件内容同时显示出来
# cat /test1/file.txt /test1/file2.txt > /test1/new.txt    -> 将 /test1/file.txt /test1/file2.txt 的文件内容合并为 new.txt

8.一页一页显示文件内容 —— more

使用 “more” 命令,它可以将文件内容以一次一页(或一行)的方式来显示

# more /etc/imrc   ->  逐页查看 /etc 目录中的 imrc 文件内容,按一下空格键,显示下一页的内容,按一下 Enter 键,向下多显示一行的内容

# more +9 /etc/imrc   -> 显示文件中由第9页起的内容

# more +/do /etc/imrc   -> 显示文件中第一个do字符串出现的页数及之后的内容


9.交互式操作显示文件内容 —— less


# less /etc/imrc  -> 可以使用方向键来控制浏览的上下左右画面。按 “H” 键会出现在线使用说明,按 “Q” 键可以离开浏览模式


10.识别文件类型 —— file


# file /etc/*   -> 利用 file 命令查看 /etc 目录下所有文件类型


11.输出文件内容前面与后面的部分 —— head 和 tail


# head -3 /usr/share/magic   -> 显示文件前3行内容。

# tail -3 /usr/share/magic  -> 显示文件的最后3行内容

# tail +50 /usr/share/magic  -> 使用 “+行数” 的参数来指定由第几行显示至文件结尾的内容

2009年9月29日星期二

网络图形格式

GIF 图像

   GIF 图像是一种图形交换格式。它是一种位图图像,每个像素都被赋予或映射到一种特定的颜色。一个 GIF 图形最多可以有256中颜色。这些图像通常被用于线画图、文本、徴标或卡通图像,也就是所有不必为了平滑颜色过渡而要求有数千种颜色的图像。用这种方法可以将图像文件压缩,进而减少下载的时间。
   
   GIF 图像格式有3个重要的属性。

   第一个是 GIF 图像支持透明度,用户可以将它其中的一种或多种颜色设定为自动与图像所在页面的背景颜色相匹配。如果在网页上使用圆形或不规则形状的标或插图,在图像的载入过程中会显示出一个矩形框,告诉用户这个图形的实际大小和形状。


GIF 图像支持透明度


   第二个属性是“隔行显示”,网页被浏览时,如果图片的下载让浏览者等待很长时间,那么这个网页将会失去很多的浏览者。GIF 图像的隔行显示功能并不是让图片的下载速度加快,而是通过隔行显示的方式让浏览者在图像的下载过程中能够看到一些内容,而不是一直在一个空白页面中等待,使浏览者在等待下载时不会很枯燥。

   最后一个属性是 GIF 动画。通过 GIF 格式可以制作一些简单的小动画,在使用这些动画时不必另外地使用插件或辅助程序,只需很简单地插入图片就可以了。不过使用这种小动画会增加网页的大小,所以不要过多使用。


JPEG 图像

  JPEG 联合图像专家组图像格式的扩展名可以是 .jpg、.jpeg 或 .jpe ,比较常见的是 .jpg ,JPEG 格式是专门为处理照片而开发的。和 GIF 图像相比,JPEG 格式提供了数百种颜色,每个像素可以有24位的颜色信息,而 GIF 格式只有256色,而每个像素只有8位颜色信息。很显然,JPEG 格式的图片在显示方面比 GIF 强大,但 JPEG 格式没有透明度和动画的功能。

   为了提高 JPEG 图像的可用性,必须要压缩大量的颜色信息。一般来说,图片压缩的程度越高,图像的质量就会越差。在保存图片时会有图片压缩的一些设置,如图所示。


图片压缩后质量对比



   这是在Photoshop中进行的压缩设置。第一张是未经压缩的图片,第二张的压缩程度很低,它在显示方面也较好一些。第三张是中等压缩品质,图像在显示方面可能不是特别的完美,但是它的下载速度快一些。而最后一张就是压缩程度最高的效果,图像在显示方面相对差一些,但是它的下载速度却是最快的,而且当将图片还原为100%比例显示的时会与原图没有太大区别。

    由于每个图形对压缩都会有不同的反应,在使用 JPEG 图像时要对多个图片进行比较,并选择最合适的一张。用户浏览网页中的 JPEG 图像,图像必须要先下载到浏览器中,当在浏览时,还需解压缩。这个步骤会增加网页浏览的时间,不过为了使浏览者能看到质量较好的图片,这个过程是不可或缺的。


png 图像

   PNG 格式的中文扩展名是便携式网络图片。PNG 图像的优点就像 GIF 一样没有像素上的损失,并能像 JPEG 那样呈现更多的颜色。而且 PNG 格式也提供了一种隔行显示方案,在显示速度上比 GIF 和 JPEG 更快一些。同时 PNG 图像又具有 JPEG 图像没有的透明度支持能力。

2009年9月23日星期三

I/O 重新导向及管道

1. I/O 重新导向

  • 输出导向

# ls -al /etc > /test1/ext.txt     -> 将 /etc 目录下的文件数据结果存储到 /test1/etc.txt 文件中


# cat > /test1/editor.txt   -> 成为简单的文字编辑器

I Love Linux !! -> 按 Enter 键
                -> 按 Ctrl+c 就可结束文件编辑

  • 附加输出导向
# cat >> /test1/origin.txt -> 可以在键盘输入内容,附加在源文件之后

  • 输入导向
    输出导向的概念和输入导向刚好相反。前者是将命令或程序的执行结果通过屏幕或文件来输出,但是后者却是将键盘或文件提供命令来执行。

# cat file1

The content of file1 !


# cat < file1


The content of file1 !


    在上述的范例中,二者的输出结果完全相同,但是在执行的程序上却完全不同。在"cat file1"命令中,cat 的标准输入文件为 file1 。因此 cat 在收到输入文件后会执行它的功能而将 file1 的内容显示到屏幕。但是在 "cat < file1"命令中,cat 并没有任何的标准输入文件,而是利用“输入重导(<)”的功能将 file1 传给 cat 当成标准输入文件,最后才能将 file1 的内容显示到屏幕。
   
   在可以接受参数的命令上,输入重导并没有很大的用处,但是在无法接受参数的命令上就相当有用,例如 "patch"

# patch patch-2.4.3-2

# patch < patch-2.4.3-2

   因为patch命令无法接受参数,所以在上述的第一行命令输入后,patch 命令会将 
patch-2.4.3-2 视为参数,因为它无法接受参数,所以画面不会有任何的反应,若是利用输入重导 (<) 来将 patch-2.4.3-2 文件输入给 patch ,则系统就会开始执行源代码更新的操作。

  • 附加输入导向(<< 字符串)
    附加输入导向可以自行定义一个字符串,例如 quit ,系统在收到此字符串前,会持续地将数据输入文件,这个功能经常使用在电子邮件系统中。以下是一个传送电子邮件的范例,假设我们定义的字符串是"Finsh",可以继续输入邮件内容。当输入"Finsh"字符串后,系统便会结束邮件的编辑并且寄出。

# mail 751446682@qq.com << Finsh

>The mail is from sherlock

>Finsh -> 结束邮件的编辑并且寄出.

  • 错误输出导向(&>)
   错误输出导向不论是正常或错误的执行,都不会将信息结果显示在屏幕上,而是直接写入文件中。一般的程序设计师都会习惯将程序测试和出错时所有信息(正常和错误)记录在文件中,以利日后修改时参考。

# ls /user1 > /test1/error.txt

ls: /usr1 : No such file or directory -> 错误信息显示在屏幕

# cat /test1/error.txt -> 错误信息没有记录在文件中

# ls /usr1 &> /test1/error.txt -> 没有出现错误信息

# cat /test1/error.txt -> 错误记录在文件中

2.管道

   
   Linux 系统中的“管道”最主要的功能是将其他程序的输出结果直接导向到另一个程序来当成输入数据。

   举例来说,/etc 目录下的文件有很多。若是使用 "ls al"命令,它们并没有办法在同一页中显示,若是我们要浏览第一页中的数据,可能不是很方便,此时可以将"ls -al"命令产生的结果利用管道 (|) 直接导向至 "less" 命令。然后就可以使用上下键来逐行浏览输出结果。

# ls -al /etc | less

# ls -l /etc | grep mysql  ->在 etc 目录中搜索包含 mysql 关键字的文件

2009年9月16日星期三

Ubuntu 9.10 上网设置


一.基本设置


Ubuntu图形界面有时候配置网络不能生效,可以用命令行配置。

打开终端

administrator@administrator-desktop:~$ sudo gedit /etc/network/interfaces



DHCP

DHCP配置如下(假设通过eth0上网)



auto eth0
iface eth0 inet dhcp #指定为dhcp



保存文件,重启。


administrator@administrator-desktop:~$ sudo /etc/init.d/networking restart
 

Static IP

静态IP地址配置如下(假设通过eth0上网) 


auto lo
iface lo inet loopback #这2行 本来就有 , 添加下面的代码
auto eth0
iface eth0 inet static #指定为static
address 192.168.0.107 #换成自己的IP地址
gateway 192.168.0.1 #换成自己的网关
netmask 255.255.255.0 #换成自己的子网掩码



同样需要重启

administrator@administrator-desktop:~$ sudo /etc/init.d/networking restart


DNS

如果有必要,配置DNS

administrator@administrator-desktop:~$ sudo gedit /etc/resolv.conf


nameserver 8.8.4.4 #换成自己 DNS
nameserver 8.8.8.8 #换成自己 DNS



二、配置锐捷验证(主要用于校园网上网)


1.下载myxrgsu


2.把myxrgsu.tar.gz文件拷贝到你的主目录里,打开终端,然后如下:


administrator@administrator-desktop:~$ tar -zxvf myxrgsu.tar.gz #解压缩myxrgsu.tar.gz文件
administrator@administrator-desktop:~$ cd myxrgsu/ #进入myxrgsu目录中
administrator@administrator-desktop:~$ sudo cp libpcap.so.0.6.2 /usr/lib #拷贝库文件
administrator@administrator-desktop:~$ sudo cp libstdc++.so.5 /usr/lib #拷贝库文件
administrator@administrator-desktop:~$ sudo cp myxrgsu /usr/bin #拷贝库文件
administrator@administrator-desktop:~$ sudo myxrgsu
[sudo] password for administrator: #输入你的账户口令
XRGSupplicant 1.1.1
Ruijie Network CopyRight 2004-2005
Please input your user name:2007060503302 #输入你的锐捷帐号
Please input your password: #输入你的锐捷密码
Use DHCP,1-Use,0-UnUse(Default: 0):
Use default auth parameter,0-Use 1-UnUse(Default: 0):
Searching server...
Connecting server...
Authenticating...
Authenticate SUCCESSFULLY!
Please input 'unauth' to LogOff:

2009年9月11日星期五

Vi命令

1、Vi的执行与离开

sherlock@sherlock-laptop:~$ vi   #进入vim可以查看有关命令

2、Vi的操作模式

Command Mode

    控制光标的移动、删除字符、区段复制,以及进入Insert Mode或者Last Line Mode功能

Insert Mode

    唯一的功能即是文字数据的输入。按Esc键可以回到Command Mode。

Last Line Mode

    保存文件、离开Vi,以及其它的设置。例如查找或取代字符串等。
vi 操作模式图示说明
Vi的操作模式
i    插入,由当前的光标位置输入文字

a    增加,由当前的光标的下一个位置输入汉字

o    插入新行,加入新行并且由行首开始输入汉字


Command Mode 功能键介绍

1、移动光标

命令                   说明

h 或 ←             光标左移一格
j 或 ↓             光标下移一格
k 或 ↑             光标上移一格
l 或 →             光标右移一格
Ctrl+B              向后滚动一个屏幕
Ctrl+F              向前滚动一个屏幕
Ctrl+U              向后滚动半个屏幕
Ctrl+D              向前滚动半个屏幕
Ctrl+E              向后滚动半行
Ctrl+Y              向前滚动半行
数字0               光标移至该行的行首
G                   光标移至最后一行的行首
W或w                光标移至下个字的前缀
e                   光标移至下个字的字尾
b                   光标移至上个字的前缀
$                   光标移至该行的行尾
数字+l              光标移至该行指定的字符
                    例如“7l”表示将光标移至该行的第7个字符
{                   光标向前移动一个段落
}                   光标向后移动一个段落
H                   移至屏幕顶端
M                   移至屏幕中间
L                   移至屏幕底部
o                   在光标下面插入一行
O                   在光标上面插入一行
~                   改变字母大小写
2、复制文字

命令                   说明

y+y                 复制整行
y+w                 复制单字
数字+y+y            5+y+y表示将目前光标所在位置以及其后的5行一同复制
数字+y+w            5+y+w表示将目前光标所在位置以及其后的5个字一同复制
p                   粘帖

3、删除文字

命令                   说明

d+↑                可将光标所在位置的行与上一行同时删除
d+↓                同上
d+d                 删除光标所在那行。若要删除数行,可按值d键。直到全数删除为止
数字+d+↑           同理
数字+d+↓           同理
d+l                 删除一个字符

Last Line Mode

命令                   说明

e 文件名            ":e test"命令会在当前的目录中建立名为test的文件
n 文件名            ":n test"命令会在当前的Vi窗口中加载名为test的文件
w                   将目前的文件内容加以保存。如果这是一个新文件,必须要指定文件            
                    名,如:":w test"
q                   若是文件有修改,Vi会出现错误信息
q!                  强制离开Vi,不保存文件
wq                  保存退出
set nu              显示行号
set nonu            取消行号
输入数字            若直接输入数字再按Esc键就可将光标移至该行该首
/字符串             此命令用来查找特定字符串,例如:":/tcp",如果搜索的字符串不是     
                    所要的,可以按"n"键来往下继续查找
?字符串             此命令用来查找特定字符串,例如:":/tcp",如果搜索的字符串不是    
                    所要的,可以按"n"键来往上继续查找

补充

在GUI下:
(1)可按i进入插入模式
(2)使用鼠标拖动反选要粘贴的内容,按鼠标左键复制选定块到缓冲区
(3)然后将光标移到要粘贴处,按鼠标中键(两键鼠标可同时按左右键),粘贴缓冲区内容。

在纯文本终端下:
(1)选定文本块,使用v进入可视模式;移动光标键选定内容
(2)复制选定块到缓冲区,用y;复制整行,用yy
(3)剪切选定块到缓冲区,用d;剪切整行用dd
(4)粘贴缓冲区中的内容,用p

在同一编辑窗打开第二个文件,用:sp [filename]
在多个编辑文件之间切换,用Ctrl+w

命令前面加数字表示重复次数,加字母表示使用的缓冲区名称。
获取帮助,用:help [内容或命令]

a) 撤消上一个编辑操作。 ====》 U
b) 重复上一个编辑操作。 ====》 .
c) 还原被撤消的编辑操作。 ====》 Ctrl + R


更多有关Vi的命令查看Ubuntu 命令技巧

2009年6月16日星期二

编程是一门艺术


        世界上的万物本来就是相互作用、相互影响、相互联系的,代数是用数字来表达世界,几何用图形来表示世界,语文是用文字来说明世界,计算机是用0和1来记录世界,虽然表现形式不一样,但本质却是一样的。人类用语言来相互交流沟通,人类与计算机是用编程语言来相互交流的。

        说到底,我认为编程纯粹就是一种思维的活动,编程语言就仅仅作为一门人与计算机交流的工具而已。编程语言就像人类的语言一样,在人类的语言中有汉语、英语、德语、法语、日语;在编程语言中有C++、Java、C#、PHP,同样有优劣、是否流行之分。语言本身自古以来就扮演着非常重要的角色,没有语言,就没有人类今天伟大的文明。自然而然地,语言就成为了一门学问,一门艺术。

        俗话说:“看菜吃放,量体裁衣”。说的就是说话要看对象。这编程语言也一样,要根据不同的需求来决定用哪门语言。具体问题具体分析,如果要做操作系统,那么你必须要用大量汇编语言混合C语言来做。这样作出的操作系统相对来说性能才会更高,运行的速度才会更快。但是如果要做一些桌面软件或者银行系统的话,那么用Java或者C#会更加合适。 而开发一些网站,用PHP则会更加合适。

        文明既然是由于人类长期劳动而派生的产物,那么,它就与人类的活动是息息相关的。 水永远是鱼儿赖以生存息息之地,天空是雄鹰得以翱翔的地方。软件道理也是一样,Windows的应用程序不能在Linux平台上运行,Linux上的程序不能在Windows平台上运行。之所以不兼容,是因为平台不同。

  


 













       既然编程语言是人类的杰作,那么人一定赋予编程语言人性化的思想。就像这Java或者C#就是典型的纯粹的面向对象语言。这是一种新兴的编程思想,与过去传统的面向过程的思想编程完全不同。

        举一个运动员射击的程序

        按照传统的面向过程的思想编程:首先你要通过编程依次实现运动员拿枪,装子弹,举抢,瞄准,扣动扳机.总之,就是一步一步地顺序地实现编程.

        但是,按照面向对象思想:首先你要考虑要想实现运动员射击的程序,有哪些类和哪些对象,应该需要运动员类,枪类,子弹类吧。

        在考虑一个类里有哪些属性和方法,属性和方法要放在合适的类里。至于实现的细节暂时不必理会,主要封装在方法里了.在考虑类之间的联系,再处理好类调用之间的关系。      

        就具体那Java语言来说吧。

        Java语言最重要的三个特征就是——类的封装性、类的继承性和类的多态性。

        类的封装性

        1、隐藏类的实现细节。  

        2、让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

        3、便于修改,增强代码的可维护性。

        4、可进行数据检查

        1和2尚且好理解,可是3和4应该如何来理解呢?

        对于3,我觉得就是面向对象的一个重要特点,开发程序的时候,对于一些常用的方法或函数或者一些反复出现的常量变量等,都可以把他放到一个类里封装起来,这样,如果需要修改这些中的一个的话,就可以很方便了,不用去检查所有出现这些变量或函数及方法的地方了,便于维护。

       对于4 以便对于需要用户输入数据的程序JAVA中一般会提供set和get方法来设置和读取数据,这样就可以在set方法中先检查数据是否合法,而不是让用户直接来操作变量。


        类的继承性

        1、在java中通过关键字 extends 继承一个已有的类,被继承的类成为父类(基类),新的类称为子类(派生类图片)。

  2、在java中,不允许多继承

  3、在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的 覆盖。

  4、覆盖 发生在子类与父类之间。

  5、特殊变量super 提供了对父类的访问。

  6、可以使用super 访问父类被子类隐藏的变量和覆盖的方法。

  7、每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有构造方法,那么在编译的时候就会报错。

        类的多态性

  1、通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。

  2、简单概括多态性:当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有这个方法就调用子类的方法,如果子类没有这个方法就调用父类的这个方法。

  3、多态性的好处:它可以根据在运行的时候,根据我们传递不同对象的引用,来调用不同对象的方法。

       

        我认为Java的三个特性在很大的程度上是跟生物学和管理学相关的。

        再说说成员变量和成员函数吧。其实,这成员变量就像对象存在的一个属性仰或说状态。就那人来说吧,人的生死就是一种状态,性别就是一种属性。

        而这成员函数就根据这不同状态或者属性来处理一些逻辑。就像人饿了要吃放,渴了要喝水一样。

        在这里还涉及到一个重要概念——事件,程序一般都是按照事件来驱动的。就像运动员射中目标了或者没射中目标,这就是一个事件。

        至于裁判要给多少分,可以把裁判作为一个监听器来处理,要给多少分就是监听器要处理的逻辑。

        一个应用程序都是有其规律性可言的。它就像世界的万物一样,有生老病死。一个应用程序相对应的生命周期那就是——初始化状态,运行状态,暂停状态,销毁状态,其中不同的状态一般对应一个相应的方法。

        其实,我认为一个应用程序抽象出来也不过只有5种最基本简单的操作——创建,插入,删除,修改,查询。

        因为世界本来就很简单。

2009年4月9日星期四

Ubuntu 8.10 安装常用软件


安装词霸星际译王
sudo apt-get install stardict stardict-common


以Root权限打开文件夹(右键菜单)
sudo apt-get install nautilus-gksu

终端加到右键菜单
sudo apt-get install nautilus-open-terminal

安装虚拟软件(打开Windows程序)
sudo apt-get install wine

安装Adobe Reader
到Adobe网站下载Ubuntu版本的Adobe Reader,点击这里,然后双击安装

安装Google Chrome浏览器
界面比Firefox更友好,浏览速度更快,到Google下载Ubuntu版本的Chrome,点击这里,双击即可安装

安装Mplayer播放器,比系统自带的电影播放器好用
sudo apt-get install totem-xine ffmpeg lame faad sox mjpegtools
sudo apt-get install mplayer mplayer-fonts gnome-mplayer

安装飞鸽
sudo apt-get install iptux

安装打开chm文件的软件
sudo apt-get install chmsee

安装FTP
sudo apt-get install vsftpd  # FTP设置文件/etc/vsftpd.conf,详细配置情况,参考http://wiki.ubuntu.org.cn/Vsftpd

安装FTP客户端
sudo apt-get install filezilla

Ubuntu Server 下 Apache的安装和设置
https://help.ubuntu.com/community/ApacheMySQLPHP
http://www.91linux.com/html/linux_pub/ubuntu/20080506/10670.html
PHP以CGI方式安装
https://help.ubuntu.com/community/lighttpd#PHP
https://help.ubuntu.com/community/HelpOnInstalling/FastCgi
https://help.ubuntu.com/community/DinkelVersus/ApacheServer
http://blog.chinaunix.net/u/6140/showart_458158.html
http://www.seaoffire.net/fcgi-faq.html
http://typo3.org/development/articles/using-php-with-mod-fcgid/page/3/
ubuntu 安装PHP扩展php-curl
sudo aptitude install php5-curl