样式1-- http://www.livebaby.cn





样式1









样式二


样式2-- http://www.livebaby.cn





样式2









样式三


样式3 -- http://www.livebaby.cn






样式3








样式四


简写CSS圆角






简写CSS圆角






样式五 哈哈3D的


3D圆角 -- http://www.livebaby.cn






3D圆角









样式六  纯HTML的


html圆角 -- http://www.livebaby.cn
























































html圆角


请教各位高手:如何让Linux在默认情况下登录到命令行,而不是桌面?
改/etc/inittab
id:5:initdefault为
id:3:initedfault
这个好像有人问过的
问题的提出是源于 这位兄弟的BLOG,在他的这个实现中,Python具有相当不错的性能,不但优于帖子中的C实现性能,也优于随后的跟贴中众多的C++实现的性能。

在经过了多次尝试,我还是很难找出一个优于Python性能的实现。这不是一件正常的事情,Python的性能注定不会优于C/C++,这是因为Python是解释执行的,解释的过程必然会消耗CPU时间,所以我查阅了Python的源码试图找出为何Python对于这个任务有如此好的性能的原因。

任务描述如下

对于一个78W行的文本文件,每一行是一个Email地址,文件中存在有重复的行,任务的要求是尽可能快的从这个文本文件生成一个无重复的Email的文本文件

一些相关的实现,可以参看这个地址
有如下的三个问题需要注意

对于这种大量的字符串比较,直接使用字符串比较函数是严重妨碍性能的
IO性能是要注意的
尽可能的少使用占用内存
在我的尝试中,发现重复调用 ofstream::operator<< 是比较影响性能的,而使用 fprintf或使用copy 等 STL 算法输出到则性能好的多。使用一种好的Hash算法是影响程序性能的关键。任务中的EMail字符串总是具有[a-z]*[0-9]*@([a-z]*\.)+[a-z]* 的形式,例如 joson123@sina.com.cn joson72345@sina.com.cn 的格式。

在$PySrc/Objects/dictobject.c 中,对Python的Hash机制作了一些描述,总的来说,Python的Hash机制对于这种连续型的字符串有相当好的离散度,对于这个 78W 例子,python_hash() % 780000能够很均匀的分散到各个值,最大的冲突数为 8。 以下是按照类似 Python的 Hash算法实现的 C++ 版本的结果

E:\Workspace\Temp\Email>my 经过了1687.5000毫秒 E:\Workspace\Temp\Email>my 经过了1718.7500毫秒 E:\Workspace\Temp\Email>my 经过了1671.8750毫秒 E:\Workspace\Temp\Email>my 经过了1656.2500毫秒 E:\Workspace\Temp\Email>py_email.py 2.82014641526 E:\Workspace\Temp\Email>py_email.py 2.74879181572 E:\Workspace\Temp\Email>py_email.py 2.76348586203 E:\Workspace\Temp\Email>dir *.txt 2006-03-28  13:09        19,388,869 email.txt 2006-03-29  22:51        17,779,266 email_new.txt (py_email.py 写出) 2006-03-29  22:50        17,779,266 email_new_my.txt (my.exe 写出)
py_email.py 的实现参看这里 my.cpp 实现如下 使用 cl /O2 /EHsc /D_CRT_SECURE_NO_DEPRECATE my.cpp 编译
#include <cstdio> #include <windows.h>  using namespace std; #define c_mul(a, b) (a * b & 0xFFFFFFFF) size_t python_hash(const char * str) {   size_t value = str[0] << 7;   size_t len = 0;   while(*str != 0)   {     value = c_mul(1000003, value) ^ *str++;     len++;   }   value = value ^ len;   if (value == (size_t)-1)   value = (size_t)-2;   return value; } size_t hash(const char * str, size_t seed = 1) {   size_t h = 0, g;    size_t len = 0;   while (*str)  {      h = (h << 4) + *str++;      if ((g = (h & 0xF0000000))) {        h = h ^ (g >> 24);        h = h ^ g;        h = h ^ seed;     }      len++;   }    return h;  } #define MAX_TABLE_SIZE (780000) #define MAX_CONFI 9 struct hash_item {   size_t items[MAX_CONFI];   size_t item_count;   hash_item()   {     item_count = 0;   }   bool check_has(const char * str)   {     size_t key = hash(str);     for(size_t i = 0; i < item_count; i++)     {       if (items[i] == key)       return true;     }     items[item_count++] = key;     return false;   } }; int main( void ) {   __int64 t1, t2;   GetSystemTimeAsFileTime( (LPFILETIME)&t1 );   FILE * fin = fopen("email.txt", "r");   FILE * fout = fopen("email_new_my.txt", "w+");   size_t hash_key_a = 0;   size_t hash_key_b = 0;   size_t pos_x = 0;   size_t pos_y = 0;   const char * buffer = NULL;   char line[255];   fgets(line, 255, fin);   hash_item * table = new hash_item[MAX_TABLE_SIZE];   while(!feof(fin))   {     buffer = line;     hash_key_a = python_hash(buffer);     pos_x = hash_key_a % MAX_TABLE_SIZE;     if (!table[pos_x].check_has(buffer))       fprintf(fout, "%s", buffer);       fgets(line, 255, fin);   }   GetSystemTimeAsFileTime( (LPFILETIME)&t2 );   printf( "经过了%I64d.%04I64d毫秒\n", (t2-t1)/10000, (t2-t1)%10000 );   fclose(fin);   fclose(fout);   delete [] table; }


[url=http://wiki.woodpecker.org.cn/moin/BPUG]啄木鸟Python开源社区 [/url]
如何给按钮加上链接功能
解决思路:
按钮属于控件级的对象,优先级比较高,所以不能象图片或文本一样直接加链接,只能通过按钮的单击事件调用脚本的方式来实现。
具体步骤:
   1.在原窗口打开链接

   <input type="button"  
value="闪吧" onClick="location=’http://www.flash8.net’">
   <button onClick="location.href=’http://www.flash8.net’">闪吧</button>
   <form action="http://www.flash8.net"><input type="submit" value="打开链接"></form>

   2.在新窗口中打开链接

   <input type="button"  
value="闪吧" onClick="window.open(’http://www.flash8.net’)">
   <button onClick="window.open(’http://www.flash8.net’)">闪吧</button>
   <form action="http://www.flash8.net"  
target="_blank"><input type="submit" value="打开链接"></form>

注意:onClick调用的代码里的引号在只有一重时可以单双嵌套,超过两重就必须用"\"号转义且转义的引号必须跟里层的引号一致,如:

<button onClick="this.innerHTML=’<font color=\’red\’>http://www.flash8.net</font>’">闪吧</button>



<button onClick=’this.innerHTML="<font color=\"red\">http://www.flash8.net</font>"’>闪吧</button>

而下面都是错误的写法:

<button onClick="this.innerHTML=’<font color=’red’>http://www.flash8.net</font>’">闪吧</button>

<button onClick="this.innerHTML=’<font color="red">http://www.flash8.net</font>’">闪吧</button>

<button onClick="this.innerHTML=’<font color=\"red\">http://www.flash8.net</font>’">闪吧</button>

提示:大部分属于window或document对象的方法和属性都可以省略前缀window或document,比如说本例中的location.href(location.href又可以简写为location,因为location的默认对象为href)就是window.location.href或document.location.href的省略式写法。
技巧:本例中还可以用下面的方法来代替location.href
location.replace(url)
location.assign(url)
navigate(url)
特别提示
第一步中的代码运行后,单击按钮将跳转到链接目标。而第二步的在单击按钮后将在新窗口中打开链接。

特别说明

本例主要是通过用onClick捕获用户在按钮上的单击事件,然后调用location对象的href方法或window对象的open方法来打开链接。另外一个技巧是通过提交表单来实现链接功能,按钮必须是type=submit类型的按钮,表单的action值就是链接目标,target值就是链接打开的目标方式。
find . -name "changeusr*"
find . -type d -name "app*" 查找目录












现在用document.images.length来判断图片个数

















$ sed '/test/'d example-----删除example文件所有包含test的行。


1. Sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。

2. 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。

3. Sed命令
调用sed命令有两种形式:

sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)


a\
在当前行后面加入一行文本。

b lable
分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。

c\
用新的文本改变本行的文本。

d
从模板块(Pattern space)位置删除行。

D
删除模板块的第一行。

i\
在当前行上面插入文本。

h
拷贝模板块的内容到内存中的缓冲区。

H
追加模板块的内容到内存中的缓冲区

g
获得内存缓冲区的内容,并替代当前模板块中的文本。

G
获得内存缓冲区的内容,并追加到当前模板块文本的后面。

l
列表不能打印字符的清单。

n
读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

N
追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

p
打印模板块的行。

P(大写)
打印模板块的第一行。

q
退出Sed。

r file
从file中读行。

t label
if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

T label
错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

w file
写并追加模板块到file末尾。

W file
写并追加模板块的第一行到file末尾。

!
表示后面的命令对所有没有被选定的行发生作用。

s/re/string
用string替换正则表达式re。

=
打印当前行号码。

#
把注释扩展到下一个换行符以前。

以下的是替换标记
g表示行内全面替换。

p表示打印行。

w表示把行写入一个文件。

x表示互换模板块中的文本和缓冲区中的文本。

y表示把一个字符翻译为另外的字符(但是不用于正则表达式)

4. 选项
-e command, --expression=command
允许多台编辑。

-h, --help
打印帮助,并显示bug列表的地址。

-n, --quiet, --silent
取消默认输出。

-f, --filer=script-file
引导sed脚本文件名。

-V, --version
打印版本和版权信息。

5. 元字符集
^
锚定行的开始 如:/^sed/匹配所有以sed开头的行。

$
锚定行的结束 如:/sed$/匹配所有以sed结尾的行。

.
匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。

*
匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

[]
匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^]
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

\(..\)
保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

\<
锚定单词的开始,如:/\
\>
锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。

x\{m\}
重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。

x\{m,\}
重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。

x\{m,n\}
重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

6. 实例
删除:d命令
$ sed '2d' example-----删除example文件的第二行。

$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。

$ sed '$d' example-----删除example文件的最后一行。

$ sed '/test/'d example-----删除example文件所有包含test的行。

替换:s命令
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。

$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。

$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。

选定行的范围:逗号
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。

$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。

$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。

多点编辑:e命令
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。

从文件读入:r命令
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

写入文件:w命令
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。

追加命令:a命令
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

插入:i命令
$ sed '/test/i\\

new line

-------------------------' example

如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。

下一个:n命令
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。

变形:y命令
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。

退出:q命令
$ sed '10q' example-----打印完第10行后,退出sed。

保持和获取:h命令和G命令
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

保持和互换:h命令和x命令
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

7. 脚本
Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。

8. 小技巧
在sed的命令行中引用shell变量时要使用双引号,而不是通常所用的单引号。下面是一个根据name变量的内容来删除named.conf文件中zone段的脚本:

name='zone\ "localhost"'
sed "/$name/,/};/d" named.conf

<html>
<head>
<script language="javascript">
function showPic(FilePathValue,strShowImgDivID,strW,strH)  
{  
   var Pic = document.getElementById(strShowImgDivID);
   Pic.innerHTML="<img src='"+FilePathValue+"' width='"+strW+"' height='"+strH+"' border='0'>";  
}  
</script>  
</head>
<body>
<input type="file" onChange="showPic(this.value,'div1',200,200);">
<div id="div1"></div>
</body>
</html>
今天配置一台FreeBSD的WEB服务器, 以前都没怎么搞成功Mysql和Apache自动启动的问题,今天重新碰见, 上线问网友, 说只要写一个脚本到/usr/local/etc/rc.d下面就行, 于是我写了个脚本, 重启动系统后还是无法启动服务。

  郁闷!

  后来他又说,有没有把文件的属性设为755,我一看,没有,呵呵,设置了,重启动,行了。

  举例说明:

  比如我要启动mysql, 那么我就需要写一个 mysql.sh的文件,里面包含以下内容:

  #! /bin/sh

  /usr/local/mysql/bin/mysqld_safe &

  然后把mysql.sh 复制到 /usr/local/etc/rc.d 下面,然后:

  chmod 755 /usr/local/etc/rc.d/mysql.sh

  就是设置为该脚本文件属性为755,重启动系统后就能自动启动该服务了!

  启动其他服务类似。

  当然,除了上面的启动服务方式,还有一种方法。

  就是在 /etc/rc.local 里面加上要启动的服务,那么系统下次启动的时候就会自动启动。

  如果 /etc/rc.local 文件不存在,那么就建立一个,比如我们要让我们的mysql启动,那么就编辑该文件:

  ee /etc/rc.local

  然后在里面加上一行:

  /usr/local/mysql/bin/mysqld_safe &

  那么下次系统启动的话,mysql就启动了,如果要启动很多,就依此类推加上启动命令。

  另外,今天还有个问题,就是停用sendmail服务的问题,因为我不需要这个服务,而且它还可能构成安全威胁。我们知道普通的停用一些inetd管理的服务的话,都是在 /usr/rc.conf里面加上:

  sshd_enable="NO"

  就行了,于是我就加上

  sendmail_enable="NO"

  重启系统后,ps一看,sendmail还在,晕!

  问网友,才知道,sendmail跟别的不一样,必须设成:

  sendmail_enable="NONE"

  重启后,就不会启动sendmail了!

一:虚拟机IP配置方法:


二:虚拟机域名配置方法:
经过一晚上的操作,终于成功整合.写一篇文章和大家交流一下经验,什么问题可以联系我. 我使用的操作系统是FreeBSD最新版本6.1,如果是别的操作系统安装方法有少许不一样,请作适当处理.
说明:本文档系alone原创,经过辛勤实验,努力编辑而成,转载无妨,请不要修改任何内容。参考不少前辈文章,不一一列举,谨表感谢!如有错误,敬请好手斧正!费话少说,进入正题.

首先安装整合的工具必不可少.我整个过程用的到工具如下:
Freebsd6.1
下载地址:http://www.freebsd.org
Apache2.2.3
下载地址: http://www.apache.org
Mysql5.0.26 for freebsd
下载地址: http://dev.mysql.com/downloads/
Php5.1.6
下载地址: http://www.php.net/downloads.php
libxml2-2.6.19
下载地址:
http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.19.tar.gz
libiconv-1.9.1
下载地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
Phpmyadmin2.9.0.2 for nix
下载地址: http://www.mycodes.net/soft/6369.htm


一、   Freebsd的安装
安装FreeBSD就不讲了,熟悉linux的很容易上手,只要稍微定制一下就可以了,过程我就不说了。建议新手选择ALL安装方式。

二、   安装Apache

安装Apache要简单点,我这里安装的Apache版本是 httpd-2.2.3,下载回来的包叫做 httpd-2.2.3.tar.gz 我们放在 /usr/local/src目录下。如果没有该目录,就自己建一个。
首先进入目录后解压缩:
# cd /usr/local/src
# tar -zxvf httpd-2.0.50.tar.gz
然后就会得到 httpd-2.0.50目录,我们进入目录
# cd httpd-2.0.50
首先配置:
# ./configure --prefix=/usr/local/apache \--enable-module=so
\*--prefix指定我们要把Apache安装在那个目录,我们这里装在 /usr/local/apache下*\
\*--enable-module=so必设,不然后面配置php时要出问题*\
执行上面的命令,如果没有错误信息,证明配置成功,然后进行编译:
# make
一两分钟就编译完了,然后进行安装:
# make install
安装完成后,Apache就存放在 /usr/local/apache目录下了, bin是执行文件的目录,conf是配置文件目录,htdocs是网页的主目录,logs是日志目录.
Apache通过 bin/apachectl或者bin/httpd来控制启动或者停止.

# /usr/local/apache/bin/httpd -k start #启动apache
# /usr/local/apache/bin/httpd -k stop #停止apache
# /usr/local/apache/bin/httpd -k restart #重启apache

然后你可以通过 http://IP来测试apache是否安装成功,如果出现apache的页面则安装成功,否则请检查上面的步骤.

三、   安装MySQL

我使用的的Mysql是5.0.26二进制版,不需要编译。
把它下到/usr/local/src目录下,下载回来的包名字叫 mysql-5.0.26.tar.gz,然后我们把它解压出来:

# tar -zxvf mysql-5.0.26.tar.gz

解压后生成/usr/local/mysql目录,我们进入该目录:

# cd mysql

#pw groupadd mysql   #建立mysql组
#pw useradd –g mysql mysql   #建立mysql用户并且加入到mysql组中
#scripts/mysql_install_db --user=mysql   #初试化表并且规定用mysql用户来访问
#chown -R root .   #然后设置权限
#chown -R mysql data
#chgrp -R mysql .
设置完成后,基本上就装好了,好了,我们运行一下我们的mysql:

  # /usr/local/mysql/bin/mysqld_safe --user=mysql &

  如果没有问题的话,应该会出现类似这样的提示:
[1] 42264 # Starting mysqld daemon with databases from /usr/local/mysql/var
这就证明你安装成功了,如果出现:

[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
062110 01:53:45 mysqld ended

则证明你的mysql运行不来,请查看错误日志: /usr/local/mysql/var/*.err 然后确定安装是否成功,如果没有成功,请检查上面的步骤是否正确

.
安装完成后,能够通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,如果你装了apache并且能够解析php的话,也能使用phpMyadmin来管

理你的mysql,记得装完后使用mysql或者mysqladmin来修改root的密码,这里我们就不说了,请参考相关的文章.

四、   安装php5脚本支持
去以下地址下载源代码包到/usr/local/src/下,
接着,安装libxml2 (安装php5必须,我们先不装,测试一下效果):
#cd /usr/local/src
#tar –zxvf php-5.1.6.tar.gz
#cd php-5.1.6
#./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
有关于zend 的参数 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
可见php内建对php加速软件zend的支持
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
出错啦
现在来装libxml2
#tar –zxvf libxml2-sources-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure
#make;make install
再来配置:
# cd /usr/local/src/php-5.1.6
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
显示:

configure: error: Please specify the install prefix of iconv with --with-iconv=;

--with-iconv-dir=DIR   XMLRPC-EPI: iconv dir for XMLRPC-EPI.
xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML.

# cd /usr/ports/converters/iconv
# make all
# make install
===>; Installing for iconv-2.0_3
===>;   iconv-2.0_3 depends on file: /usr/local/bin/perl5.8.5 - found
===>;   Generating temporary packing list
===>; Checking if converters/iconv already installed
pkg_info: package bsdpan-DBD-mysql-2.9007 has no origin recorded
pkg_info: package bsdpan-DBI-1.48 has no origin recorded
===>; lib
install -C -o root -g wheel -m 444   libbiconv.a /usr/local/lib
install -C -o root -g wheel -m 444   libbiconv_p.a /usr/local/lib
install -s -o root -g wheel -m 444   libbiconv.so.2 /usr/local/lib
ln -fs libbiconv.so.2 /usr/local/lib/libbiconv.so
install -C -o root -g wheel -m 444 biconv.h /usr/local/include
install -o root -g wheel -m 444 biconv.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_open.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_close.3.gz /usr/local/man/man3
===>; ccs
cd /usr/ports/converters/iconv/work/iconv-2.0/ccs; install -o root -g wheel -m 444   big5.cct cns11643-plane1.cct cns11643-plane2.cct cns11643-plane14.cct cp775.cct cp850.cct cp852.cct cp855.cct cp866.cct gb_2312-80.cct iso-8859-1.cct iso-8859-2.cct iso-8859-4.cct iso-8859-5.cct iso-8859-15.cct jis_x0201.cct jis_x0208-1983.cct jis_x0212-1990.cct koi8-r.cct koi8-u.cct ksx1001.cct shift_jis.cct /usr/local/share/iconv; install -o root -g wheel -m 555 iconv_mktbl /usr/local/bin
===>; ces
cd /usr/ports/converters/iconv/work/iconv-2.0/ces && install -o root -g wheel -m 444   euc-jp.so euc-kr.so euc-tw.so gb2312.so iso-10646-ucs-2.so iso-10646-ucs-4.so ucs-2-internal.so utf-16.so /usr/local/libexec/iconv
===>; util
install -s -o root -g wheel -m 555   biconv /usr/local/bin
install -o root -g wheel -m 444 biconv.1.gz /usr/local/man/man1
{ echo "# BEGIN iconv"; cat /usr/ports/converters/iconv/work/iconv-2.0/ccs/charset.aliases /usr/ports/converters/iconv/work/iconv-2.0/ces/charset.aliases | /usr/ports/converters/iconv/work/iconv-2.0/iconv_builtin -n us-ascii utf-8 ucs-4-internal; echo "# END iconv"; } >; /usr/local/share/iconv/charset.aliases
===>;   Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>;   Registering installation for iconv-2.0_3

  再装libiconv-1.9.1.tar.gz,把libiconv-1.9.1.tar.gz放到/usr/local/src/下
# tar -zvxf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
#make;make install
# cd /php-5.0.4
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
+--------------------------------------------------------------------+
| License:                           |
| This software is subject to the PHP License, available in this   |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement.   |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.             |
+--------------------------------------------------------------------+

到此php5成功配置完成. Thanks : )
#make
#make test
#make install
# cp /usr/local/src/php-5.0.4/php.ini-dist /usr/local/lib/php.ini

配置php.ini请参考手册

五、   phpMyAdmin的安装
phpMyAdmin是比较好的通过web访问方式来管理数据库的免费程序。
下载该程序后,通过flashfxp上传到/usr/local/apache/htdocs/目录下,执行如下命令:
#cd /usr/local/apache/htdocs
#tar –zvxf phpMyAdmin-2.9.0.2.tar.gz
mv –fi phpMyAdmin-2.9.0.2 phpmyadmin
www# cd phpmyadmin
www#cp config..simple.inc.php config.inc.php
修改config.inc.php文件如下:
(1)查找$cfg['PmaAbsoluteUri'] = ''; ,将该行内容更改为$cfg['PmaAbsoluteUri'] = 'http://IP/phpmyadmin/';
执行:wq!命令保存退出,在IE浏览器里输入http://IP/phpmyadmin/就可以访问了。
请注意其中的红色文字,默认的mysql数据库用户名root是没有密码的,这是一个安全漏洞,所以我们要修改数据库的密码,请执行如下步骤:
首先点“权限”,进入另一个页面
在新页面中,勾选三个用户,只剩下一个用户名为root、主机为localhost的用户,然后点“执行”来删除那三个勾选的用户,
只剩下一个root用户了,勾选它,点“编辑”,再点击“更改密码”下面的“密码”前的圆圈,选择它,然后敲入你的mysql数据库密码(比如789),再点“执行”。这样mysql的数据库密码就改变了。当然了,我们也可以通过phpmyadmin来创建新的mysql数据库名,用户名等等,这些功能就要你自己去探索了。我们再点IE浏览器里的“刷新”来刷新该页面,就会出现无法访问的情况。
出现上面的情况后,也不要着急,我们可以修改phpmyadmin的配置文件config.inc.php来解决这个问题,执行如下命令:
www#vi config.inc.php
更改内容如下:
(2)查找$cfg['Servers'][$i]['auth_type'] = 'config';
更改为$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['controluser'] = '你的用户名';
$cfg['Servers'][$i]['controlpass'] = '你的密码';
然后重新在IE浏览器里输入http://IP/phpmyadmin/ 访问,敲入用户名“root”和密码后,点“确定”,就可以重新进入到phpmyadmin管理页面,至此,phpmyadmin安装完毕。


到些,整个过程完毕.你可以上传php网站程序、修改apache的httpd.conf文件配置一台高性能的web服务器,当然也不要忘了mysql数据库对数据库、用户相应的增减。在这里我就不说了。现在已经是凌晨3点,累就一个字。呼呼去咯……



后话:当然你也可以直接选择ports安装,更方便快捷。
附过程:
# cd /usr/ports/www/apache2
# make install clean

# cd /usr/ports/databases/mysql5X-server
# make install clean
# source ~/.cshrc
# mysql_install_db --user=mysql

# cd /usr/ports/lang/php5
# make install clean
在出现的界面中选中apache2, 如果要用zend,不要选debug

cp /usr/local/etc/php.ini-dist php.ini
vi /usr/local/etc/apache2/httpd.conf
添加
AddType application/x-http-php .php
AddType application/x-http-php-source .phps
在 DirectoryIndex 后加一个 index.php

# cd /usr/ports/lang/php5-extensions
# make config
在出现的界面中选种想要的
# make install clean

如果要装zend,去www.zend.com 下载相应的包,解压缩
# ./install.sh

就这么简单。
如果php要装GD libxml2 libxslt 等支持,源码都要自己装,用ports只要选一下就ok了~而且以后方便升级和维护。

由于改版,把资料弄得有点混乱,现在重发下。
<script language="javascript">
function setcheckboxes(str)
{
 var ischecked = document.form4.boxname.checked;
 var element = document.getElementsByName(str);
 var num  = (typeof(element.length) != 'undefined') ? element.length : 0;

 if (num)
 {
   for (var i = 0; i < num; i++)
   {
     element[i].checked = ischecked;
   }
 }
 else
 {
   element.checked = ischecked;
 }
 document.getElementsByName('boxname').checked=ischecked;
}

</script>
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
 <tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
 <tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
 <tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
 <tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
 <tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<form action="" method="POST" name="form4">
     <td colspan="7" style="text-align:left;"><input type="checkbox" name="boxname" id="boxname" onclick="setcheckboxes('checkent[]')" value="aa1" style="margin:0 0 0 0.7%" />
       <label for="aa1">全选/取消</label></td>
   </tr>
 </form>

 
<TD colspan=3 width=600 bgColor=#B2DFEE>工作日志提交人:$name<TD></TR>
style=table-layout: fixed这种属性很少用,直接用width就fix了


#wrap{word-break:break-all; width:888px; overflow:auto;}

<div id="wrap">字。。。</div>
(firfox出现滚动条)

dony:
word-wrap:break-word;

参考了解:http://homepage.yesky.com/207/7707707.shtml
安装所需软件
sendmail.8.12.10.tar.gz http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz http://asg.web.cmu.edu/cyrus/

安装步骤
1、先安装cyrus-sasl-2.1.18.tar.gz,sendmail安装时要用到sasl(简单认证和安全层协议)的库文件的头文件。
解压缩:
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
编译:
进入刚解压的源码目录,运行以下命令完成安装。
#./configure --prefix=/usr/local/sasl2 --enable-login
一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。
#make # 编译
#make install # 安装
完成以上linux程序安装三步曲之后,就可以开始配置和测试了。

2、配置SASL
为了把SASL应用于sendmail认证,还需进行一些配置工作。sendmail会到/usr/lib目录下去找SASL2库,而我们是把程序安装在 /usr/local/sasl2中,为什么不把软件安装在/usr/lib目录呢?这主要是为了好管理自已安装的软件啦。所以我们要在/usr/lib 目录下做一个链接:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .
ok,接着要在/var/目录下建一个目录给saslauthd进程存在临时数据。
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
注:如果没有这些目录,运行saslauthd时,会提示出错。
ok, 接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文件来把MTA程序定义成一个SASL 应用。配置文件名为Sendmail.conf(注意是大写的S),位于/usr/lib/sasl2目录中,也就是 /usr/local/sasl2/lib/sasl2这个目录,记得上面新建的链接了吗?在该文件中你定义你希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求。
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' > Sendmail.conf

3、测试
ok,现在可以运行saslauthd了,并进行测试。
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow
用shadow的用户和密码进行验证
# ./testsaslauthd -u userid -p password
0: OK "Success."
如果出现以上信息,就说明saslauthd正常运行了。testsaslauthd程序默认是没有编译的,你需要在源码目录树的saslauthd子目录中运行 # make testsaslauthd命令生成。

4、sasl2安装完成后,就要开始安装sendmail了。
先解压sendmail源码。
# tar -zxvf sendmail.8.12.10.tar.gz
如果要sendmail支持SASL,需要修改源码的位置配置文件site.config.m4。site.config.m4位于源码目录树的devtools/Site。文件中应包含以下行:
PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')
第一行配置正则表达式相关内容
第二、三行配置表示在sendmail程序中支持sasl2和tcp_wrapper(可通过hosts.allow和hosts.deny控制访问)
第四、五行配置指出sasl2的库文件和头文件的位置。

ok,接着在编译前要建立一些用户和目录,并确保有正确的权限。
sendmail必须有一个set-group-id(默认是smmsp组)的程序来在一个组可写的目录中查询排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并设置相应的权限,具体设置要求可查询源码目录树下sendmail/SECURITY文档。
# groupadd smmsp
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue
# chmod -R 770 /var/spool/clientmqueue
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

ok,接下来就可以进入源码目录树开始编译了。
# ./Build -c
-c选项能删除上次编译产生的文件。
# ./Build install
编译完成后就可以进行安装。

5、sendmail配置
要sendmail 正常运行,还需配置几个文件,首先最重要的就是sendmail.cf 文件了。它在源码目录树下的cf/cf目录下有很多例子可参考。你可以拷贝使用。由于sendmail.cf中的语法很复杂,所以不建议手工修改。我们可以以sendmail.mc文档配合sendmail-cf目录下的宏通过m4预处理器自动生成。m4预处理器用来从一组宏文件中创建sendmail配置文件。宏文件作为输入被读进来。宏被展开,然后写到一个输出文件。sendmail-cf目录一般放在/usr/share目录下。其实 sendmail-cf目录的内容和源码目录树下的cf目录的内容是一样的,所以,为了保证sendmail-cf目录的内容与安装版本同步,要把源码目录树下的cf目录的内容拷贝到/usr/share/sendmail-cf目录。

sendmail.mc配置文档内容如下:
divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(`SMART_HOST',`smtp.your.provider')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
分页: 258/272 第一页 上页 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 下页 最后页 [ 显示模式: 摘要 | 列表 ]