不同语言的URLEncode
[ 2006/09/01 12:44 | by ipaddr ]
不同语言的URLEncode
1.javascript
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent(encodedURIString)
必选的 encodedURIString 参数代表一个已编码的 URI 组件。
说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初
始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如
/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务
器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
2.PHP
urlencode()
urldecode()
3.ASP
Server.UrlEncode>>>>>>>>>>>>>>>>>>>>>>>>>
1.javascript
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent(encodedURIString)
必选的 encodedURIString 参数代表一个已编码的 URI 组件。
说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初
始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如
/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务
器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
2.PHP
urlencode()
urldecode()
3.ASP
Server.UrlEncode>>>>>>>>>>>>>>>>>>>>>>>>>
如何在Windows下定期执行一个Bash程序
[ 2006/08/30 17:14 | by ipaddr ]
如何在Windows下定期执行一个Bash程序
1.需要安装Cygwin,详见我写的Cygwin使用心得
2.将Cygwin下面的/bin设置到系统PATH中,比如PATH=%PATH%;c:/cygwin/bin
3.Bash程序里面,如果命令与Windows有冲突的,需要指定路径,比如find命令,Windows也有find命令,但不如Bash下
面的强大,你需要在程序里指定路径,如下:
/bin/find ./ -type f -mtime -10 -mtime +15 -exec rm -f {} \;
(或者,你可以将c:/cygwin/bin/放在PATH的最前面)
与Windows没冲突的命令,你可以直接使用,比如tar,ssh等.
4.制定一个任务与计划,计划的执行命令为:
c:\cygwin\bin\bash.exe c:\scripts\bash\ipaddr\bcomcn.sh
补充:
Windows下在的Schedular调用Bash Scripts需要注意以下几点:
1.调用方法:D:/cygwin/bin/bash.exe D:/mt/scripts/bash.sh (可设置启动路径为D:/mt/scripts/)
2.必须将D:/cygwin/bin加到系统的%PATH%环境变量,否则,除Bash内部命令外,其它Unix命令不可用
3.如果D:/cygwin/bin加在%PATH%最后面,则某些与Windows同名的程序,需要使用全路径,比如:
/bin/find –type f –name “”
如果D:/cygwin/bin放在%PATH%最前面,则可以直接使用find,为安全起见,建议Bash Scripts里面使用全路径的find命令
4.所有系统变量会带到Bash Scripts里面,比如Windows里的COMPUTERNAME可以Scripts里面直接使用$COMPUTERNAME调用。
5.可直接调用Dos命令,如taskkill /F /IM process.exe , C:/progra~1/winrar/rar a bcomcn.rar D:/bcomcn/
6.路径分隔符使用/,而不是\
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1.需要安装Cygwin,详见我写的Cygwin使用心得
2.将Cygwin下面的/bin设置到系统PATH中,比如PATH=%PATH%;c:/cygwin/bin
3.Bash程序里面,如果命令与Windows有冲突的,需要指定路径,比如find命令,Windows也有find命令,但不如Bash下
面的强大,你需要在程序里指定路径,如下:
/bin/find ./ -type f -mtime -10 -mtime +15 -exec rm -f {} \;
(或者,你可以将c:/cygwin/bin/放在PATH的最前面)
与Windows没冲突的命令,你可以直接使用,比如tar,ssh等.
4.制定一个任务与计划,计划的执行命令为:
c:\cygwin\bin\bash.exe c:\scripts\bash\ipaddr\bcomcn.sh
补充:
Windows下在的Schedular调用Bash Scripts需要注意以下几点:
1.调用方法:D:/cygwin/bin/bash.exe D:/mt/scripts/bash.sh (可设置启动路径为D:/mt/scripts/)
2.必须将D:/cygwin/bin加到系统的%PATH%环境变量,否则,除Bash内部命令外,其它Unix命令不可用
3.如果D:/cygwin/bin加在%PATH%最后面,则某些与Windows同名的程序,需要使用全路径,比如:
/bin/find –type f –name “”
如果D:/cygwin/bin放在%PATH%最前面,则可以直接使用find,为安全起见,建议Bash Scripts里面使用全路径的find命令
4.所有系统变量会带到Bash Scripts里面,比如Windows里的COMPUTERNAME可以Scripts里面直接使用$COMPUTERNAME调用。
5.可直接调用Dos命令,如taskkill /F /IM process.exe , C:/progra~1/winrar/rar a bcomcn.rar D:/bcomcn/
6.路径分隔符使用/,而不是\
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1:
一个外地人拿一张50圆的票子,在售票员面前晃着:见过没?见过没 ?……
卖票的傻了,干脆拿出一张100的Show了一下:你见过没?
最后才搞明白,那人是想去“建国门!”
2 要钱
一次乘公交车回家,上车后发现钱包里没有一元零钞,一着急,便掏出一张十元大票进投币口。后来越想越觉得窝囊,便跟司机商量,能不能让我守在门口,将下一站乘客本应投进投币口的钱据为己有?司机同意了。
车很快驶到下一站,很多人争着上车。我挡在门口,对第一位乘客说:“把钱给我。”对方一愣:“凭啥?”三言两语也解释不请,我就说:“给我就行了,别的不用管。”对方瞅瞅司机,司机点头默许。于是,一元钱到手。依法炮制,很快收了八个一元钱。接着上来一位大汉,虎背熊腰,剃着板寸,露着刺青。见我拦着他,怒道:“干吗呢? 哥们儿?”我说:“一会儿再跟你说,先把钱给我。”对方眼珠子都圆了:“说啥呢?”我说:“把钱给我!”对方张大了嘴,冲司机问:“这小子干吗的?”大汉堵在门口,后面的人上不来,而车厢里的人急着发车,所以大家七嘴八舌地嚷起来了:“??唆什么呢!快给钱!”大汉很快瘪了下去。只见他从口袋里掏出钱包递过来,哭丧着脸说:“老大,身上就这点钱,你们人多,我服了。”
3 小偷
某君乘公车常掉钱包,一天上车前,某君把厚厚的一叠纸折好放进信封,下车后发现信封被偷。第二天,某君刚上车不久,觉得腰间有一硬物,摸来一看,是昨天的那个信封,信封上写着:请不要开这样的玩笑,影响正常工作,谢谢!
4 下车
公交车在等红灯时,一男子叫道:“司机,开一下门,我要下车。
“这里是站牌吗?”司机怒道。
“就因为这里不是站牌我才给你说一声——司机无语。
5 追车
早上赶公共汽车,到站台的时候,汽车已经启动了。于是我只好边追边喊:“师傅,等等我!师傅,等等我呀!“这时一乘客从车窗探出头来冲我说了一句:“八戒你就别追了。”
6 拉环
一个很胖的女人上了公交车,找不到座位,只能拉着车上的拉环,不料司机一个急刹车,胖女人把拉环拉断了,并一下子扑到了司机面前,司机看着她和她手上的拉环,没好气的说:“集满三个,送司机签名照一张!”
7 座位
有一个漂亮小姐,上公交车后从包里拿出纸巾使劲的擦了擦座位,正要坐下时,放了一个屁,旁边的一个先生听到了,打趣地说:小姐真是爱卫生,擦了那么久,还要吹一下!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
一个外地人拿一张50圆的票子,在售票员面前晃着:见过没?见过没 ?……
卖票的傻了,干脆拿出一张100的Show了一下:你见过没?
最后才搞明白,那人是想去“建国门!”
2 要钱
一次乘公交车回家,上车后发现钱包里没有一元零钞,一着急,便掏出一张十元大票进投币口。后来越想越觉得窝囊,便跟司机商量,能不能让我守在门口,将下一站乘客本应投进投币口的钱据为己有?司机同意了。
车很快驶到下一站,很多人争着上车。我挡在门口,对第一位乘客说:“把钱给我。”对方一愣:“凭啥?”三言两语也解释不请,我就说:“给我就行了,别的不用管。”对方瞅瞅司机,司机点头默许。于是,一元钱到手。依法炮制,很快收了八个一元钱。接着上来一位大汉,虎背熊腰,剃着板寸,露着刺青。见我拦着他,怒道:“干吗呢? 哥们儿?”我说:“一会儿再跟你说,先把钱给我。”对方眼珠子都圆了:“说啥呢?”我说:“把钱给我!”对方张大了嘴,冲司机问:“这小子干吗的?”大汉堵在门口,后面的人上不来,而车厢里的人急着发车,所以大家七嘴八舌地嚷起来了:“??唆什么呢!快给钱!”大汉很快瘪了下去。只见他从口袋里掏出钱包递过来,哭丧着脸说:“老大,身上就这点钱,你们人多,我服了。”
3 小偷
某君乘公车常掉钱包,一天上车前,某君把厚厚的一叠纸折好放进信封,下车后发现信封被偷。第二天,某君刚上车不久,觉得腰间有一硬物,摸来一看,是昨天的那个信封,信封上写着:请不要开这样的玩笑,影响正常工作,谢谢!
4 下车
公交车在等红灯时,一男子叫道:“司机,开一下门,我要下车。
“这里是站牌吗?”司机怒道。
“就因为这里不是站牌我才给你说一声——司机无语。
5 追车
早上赶公共汽车,到站台的时候,汽车已经启动了。于是我只好边追边喊:“师傅,等等我!师傅,等等我呀!“这时一乘客从车窗探出头来冲我说了一句:“八戒你就别追了。”
6 拉环
一个很胖的女人上了公交车,找不到座位,只能拉着车上的拉环,不料司机一个急刹车,胖女人把拉环拉断了,并一下子扑到了司机面前,司机看着她和她手上的拉环,没好气的说:“集满三个,送司机签名照一张!”
7 座位
有一个漂亮小姐,上公交车后从包里拿出纸巾使劲的擦了擦座位,正要坐下时,放了一个屁,旁边的一个先生听到了,打趣地说:小姐真是爱卫生,擦了那么久,还要吹一下!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cygwin使用心得
[ 2006/08/16 10:01 | by ipaddr ]
cygwin使用心得
1.在cygwin里访问Windows盘
cd /cygdrive/c
cd c:
2.整合cygwin命令到Windows中
假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)
就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
3.使用TGZ备份
将cygwin的BIN加入到PATH
建一个BAT文件:
@echo off
d:
cd d:\website\8thmanage
tar czvf 8thmanage.tgz 8thmanage
4.Windows使用SHELL脚本
将cygwin的BIN加入到PATH
在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/
在Windows下执行:
d:\cygwin\bin\bash d:\cygwin\var\t.sh
(可以定期执行)
5.同步Windows系统用户
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
如果有Domain的话,需要加上-d domainname
6.安装系统服务
cygrunsrv
7.cygwing下使用rsync
a.安装rsync组件
b.进入cygwin,配置服务器
vi /etc/rsyncd.conf
...screts file=/etc/tom.ipaddr.pas
配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400
chmod 0400 /etc/tom.ipaddr.pas
c.启动服务端
rsync --daemon
d.客户端同步
在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。
8.cygwin下使用SSHD
a.需要安装了cygrunsrc,openssh
b.运行ssh-host-config -y
一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,
(或者,增加一系统环境变量CUGWIN=nesec tty)
c.已经安装好SSHD服务到你的Windows服务中,可以直接在服务中启动,关闭。
(cygrunsrc -S sshd或者net start sshd)
9.中文显示
vi ~/.bashrc
# 让ls和dir命令显示中文和颜色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GBK"
# 输出为中文编码
export OUTPUT_CHARSET="GBK"
~/.inputrc为
set completion-ignore-case on
set meta-flag on
set output-meta on
set convert-meta off
cygwin.bat脚本为:
@echo off
set MAKE_MODE=UNIX
--------------------------------
安装
可以直接到http://www.cygwin.com下载一个安装程序,setup.exe,这个程序只是一个安装程序,所有的模块将从网络下载安装。或者,你可以下载一个cygwin.iso的镜像,直接映象成光盘,再从光盘本地安装,这样会快很多,而且不用考虑断线的问题。
X下的中文支持
locale支持
Cygwin的locale支持一直都有问题,好在X程序还可以使用XLOCALE。
建议还是使用zh_CN.gbk, 不要使用zh_CN.GB2312
在移植程序时需要注意不要让程序连接libcygwin.a里面的setlocale,而是采用libX11.a里面的_Xsetlocale。方法是:检查被移植程序的全部源代码,发现
#include
就修改为
#define X_LOCALE
#include
同时注意程序的连接库要添加-lX11.
如果对于结果没有把握,可以找个Dependency Walker查看程序是否连接到了cygwin1.dll里面的setlocale,如果是,就说明有遗漏。
中文字体
PCF点阵字体
GTK1.x 和其他一些老的X程序都是用X字体,
注意必须要有编码与locale一致的字体,比如用zh_CN.gbk就必须要由GBK编码的字体,用zh_CN.GB2312就必须要有GB2312编码的字体
如果使用zh_CN.GB2312,这里有一个RedOffice面带的点阵字体包
可以采用ttf2bdf从TTF抽取得到bdf格式,然后再用bdf2pcf得到pcf格式的字体文件。
(这里有一个Windows版本的TTF2BDF,可以将Windows TTF字体转换出BDF字体, 注意得到bdf后要手工编辑一下文件头,将编码声明修改正确)
得
到字体之后,放到某个目录下,执行mkfontdir生成fonts.dir,然后用xset +fp
/path/to/your/fonts将字体路径加入即可(注意与fontconfig的配置不同,这里路径是不递归的,如果有的字体放在子目录里面,
子目录也需要添加进去才行)。
TTF字体
很多新的应用程序(比如GTK2)都使用fontconfig/libxft2来显示字体,它对TTF字体的支持比较好(X以前通过freetype, xft模块也支持TTF字体,但对中日韩字体的支持不是太好,而且也在Cygwin下似乎也没有这些模块)
完全可以使用Linux下的arphic字体包. 如果没有安装Linux,可以到http://packages.debian.org下载相应的包,然后用7zip解压提取出ttf文件。
得到字体文件之后,放到某个目录之下,编辑/etc/fonts/local.conf,将字体路径加入:
/path/to/my/ttf/fonts如果只是自己使用,可以将字体文件放到~/.fonts下,不需要修改任何配置,最多三十秒fontconfig就能够发现这些字体了。
中文输入法
老黄(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,均可以从我的网站上找到 http://www.oliwen.com/bama...
一般设置了LC_CTYPE和XMODIFIERS就可以在程序中激活输入输入法了(除非这个程序没有XIM支持):
LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"
export LC_CTYPE XMODIFIERS
对于fcitx而言,XMODIFIERS设置为什么都可以(但必须要设置),所以设置为"@im=Chinput"的话chinput和fcitx都可以正常使用
VI中的 Backspace 與 Delete 按鍵異常
首先確定 $TERM的設定為cygwin
echo $TERM
若不是,請設定為
TERM = cygwin
export TERM
Backspace 與 Delete這兩個鍵正常狀況下只有一個有用。可在 $HOME/.bash_profile 任選一個來使用
stty erase '^H' //ctrl+v, ctrl+h
stty erase '^?'
------------------------
Cygwin使用指南
1 引言
cygwin 是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。本文将对其作一介绍。
2 机理
cygnus 当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
关于cygwin实现的更详细描述,请参考http://cygwin.com/cygwin-ug-net/highlights.html.
3 安装设置cygwin
3.1 安装
要安装网络版的cygwin,可以到http://cygwin.com,点击"Install Cygwin Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。
3.2 环境变量
开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。 可以随意编辑该文件。
CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty
C:\> set CYGWIN=tty notitle glob
PATH 变量被cygwin应用程序作为搜索可知性文件的路径列表。当一个cygwin进程启动时,该变量被从windows格式(e.g. C:\WinNT\system32;C:\WinNT)转换成unix格式(e.g., /WinNT/system32:/WinNT)。如果想在不运行bash的时候也能够使用cygwin工具集,PATH起码应该包含x:\cygwin \bin,其中x:\cygwin 是你的系统中的cygwin目录。
HOME变量用来指定主目录,推荐在执行bash前定义该变量。当 cygwin进程启动时,该变量也被从windows格式转换成unix格式,例如,作者的机器上HOME的值为C:\(dos命令set HOME就可以看到他的值,set HOME=XXX可以进行设置),在bash中用echo $HOME看,其值为/cygdrive/c.
TERM变量指定终端型态。如果美对它进行设置,它将自动设为cygwin。
LD_LIBRARY_PATH被cygwin函数dlopen()作为搜索.dll文件的路径列表,该变量也被从windows格式转换成unix格式。多数Cygwin应用程序不使用dlopen,因而不需要该变量。
3.3 改变cygwin的最大存储容量
Cygwin 程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
4 使用cygwin
这一段讲一下cygwin和传统unix系统的不同之处。
4.1 映射路径名
4.1.1 引言
cygwin 同时支持win32和posix风格的路径,路径分隔符可以是正斜杠也可以是反斜杠。还支持UNC路径名。(在网络中,UNC是一种确定文件位置的方法,使用这种方法用户可以不关心存储设备的物理位置,方便了用户使用。在Windows操作系统,Novell Netware和其它操作系统中,都已经使用了这种规范以取代本地命名系统。在UNC中,我们不用关心文件在什么盘(或卷)上,不用关心这个盘(或卷)所在服务器在什么地方。我们只要以下面格式就可以访问文件:
\\服务器名\共享名\路径\文件名
共享名有时也被称为文件所在卷或存储设备的逻辑标识,但使用它的目的是让用户不必关心这些卷或存储设备所在的物理位置。)
符合posix标准的操作系统(如linux)没有盘符的概念。所有的绝对路径都以一个斜杠开始,而不是盘符(如c:)。所有的文件系统都是其中的子目录。例如,两个硬盘,其中之一为根,另一个可能是在/disk2路径下。
因为许多unix系统上的程序假定存在单一的posix文件系统结构,所以cygwin专门维护了一个针对win32文件系统的内部posix视图,使这些程序可以在windows下正确运行。在某些必要的情况下,cygwin会使用这种映射来进行win32和posix路径之间的转换。
4.1.2 cygwin mount表
cygwin 中的mount程序用来把win32盘符和网络共享路径映射到cygwin的内部posix目录树。这是与典型unix mount程序相似的概念。对于那些对unix不熟悉而具有windows背景的的人来说,mount程序和早期的dos命令join非常相似,就是把一个盘符作为其他路径的子目录。
路径映射信息存放在当前用户的cygwin mount表中,这个mount table 又在windows的注册表中。这样,当该用户下一次登录进来时,这些信息又从注册表中取出。mount 表分为两种,除了每个用户特定的表,还有系统范围的mount表,每个cygwin用户的安装表都继承自系统表。系统表只能由拥有合适权限的用户(windows nt的管理员)修改。
当前用户的mount表可以在注册表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系统表
存在HKEY_LOCAL_MACHINE下。
posix 根路径/缺省指向系统分区,但是可以使用mount命令重新指向到windows文件系统中的任何路径。cygwin从win32路径生成posix路径时,总是使用mount表中最长的前缀。例如如果c:被同时安装在/c和/,cygwin将把C:/foo/bar转换成/c/foo/bar.
如果不加任何参数地调用mount命令,会把Cygwin当前安装点集合全部列出。在下面的例子中,c盘是POSIX根,而d盘被映射到/d。本例中,根是一个系统范围的安装点,它对所有用户都是可见的,而/d仅对当前用户可见。
c:\> mount
f:\cygwin\bin on /usr/bin type system (binmode)
f:\cygwin\lib on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
还可以使用mount命令增加新的安装点,用umount删除安装点。
当Cygwin 不能根据已有的安装点把某个win32路径转化为posix路径时,cygwin会自动把它转化到一个处于缺省posix路径/cygdrive下的的一个安装点. 例如,如果Cygwin 访问Z:\foo,而Z盘当前不在安装表内,那么Z:\将被自动转化成/cygdrive/Z.
可以给每个安装点赋予特殊的属性。自动安装的分区显示为“auto”安装。安装点还可以选择是"textmode"还是 "binmode",这个属性决定了文本文件和二进制文件是否按同样的方式处理。
4.1.3 其他路径相关信息
cygpath工具提供了在shell脚本中进行win32-posix路径格式转换的能力。
HOME, PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格式(例如,如果存在从该win32路径到posix路径的安装,会把c:\cygwin\bin转为/bin)。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1.在cygwin里访问Windows盘
cd /cygdrive/c
cd c:
2.整合cygwin命令到Windows中
假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)
就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
3.使用TGZ备份
将cygwin的BIN加入到PATH
建一个BAT文件:
@echo off
d:
cd d:\website\8thmanage
tar czvf 8thmanage.tgz 8thmanage
4.Windows使用SHELL脚本
将cygwin的BIN加入到PATH
在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/
在Windows下执行:
d:\cygwin\bin\bash d:\cygwin\var\t.sh
(可以定期执行)
5.同步Windows系统用户
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
如果有Domain的话,需要加上-d domainname
6.安装系统服务
cygrunsrv
7.cygwing下使用rsync
a.安装rsync组件
b.进入cygwin,配置服务器
vi /etc/rsyncd.conf
...screts file=/etc/tom.ipaddr.pas
配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400
chmod 0400 /etc/tom.ipaddr.pas
c.启动服务端
rsync --daemon
d.客户端同步
在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。
8.cygwin下使用SSHD
a.需要安装了cygrunsrc,openssh
b.运行ssh-host-config -y
一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,
(或者,增加一系统环境变量CUGWIN=nesec tty)
c.已经安装好SSHD服务到你的Windows服务中,可以直接在服务中启动,关闭。
(cygrunsrc -S sshd或者net start sshd)
9.中文显示
vi ~/.bashrc
# 让ls和dir命令显示中文和颜色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GBK"
# 输出为中文编码
export OUTPUT_CHARSET="GBK"
~/.inputrc为
set completion-ignore-case on
set meta-flag on
set output-meta on
set convert-meta off
cygwin.bat脚本为:
@echo off
set MAKE_MODE=UNIX
--------------------------------
安装
可以直接到http://www.cygwin.com下载一个安装程序,setup.exe,这个程序只是一个安装程序,所有的模块将从网络下载安装。或者,你可以下载一个cygwin.iso的镜像,直接映象成光盘,再从光盘本地安装,这样会快很多,而且不用考虑断线的问题。
X下的中文支持
locale支持
Cygwin的locale支持一直都有问题,好在X程序还可以使用XLOCALE。
建议还是使用zh_CN.gbk, 不要使用zh_CN.GB2312
在移植程序时需要注意不要让程序连接libcygwin.a里面的setlocale,而是采用libX11.a里面的_Xsetlocale。方法是:检查被移植程序的全部源代码,发现
#include
就修改为
#define X_LOCALE
#include
同时注意程序的连接库要添加-lX11.
如果对于结果没有把握,可以找个Dependency Walker查看程序是否连接到了cygwin1.dll里面的setlocale,如果是,就说明有遗漏。
中文字体
PCF点阵字体
GTK1.x 和其他一些老的X程序都是用X字体,
注意必须要有编码与locale一致的字体,比如用zh_CN.gbk就必须要由GBK编码的字体,用zh_CN.GB2312就必须要有GB2312编码的字体
如果使用zh_CN.GB2312,这里有一个RedOffice面带的点阵字体包
可以采用ttf2bdf从TTF抽取得到bdf格式,然后再用bdf2pcf得到pcf格式的字体文件。
(这里有一个Windows版本的TTF2BDF,可以将Windows TTF字体转换出BDF字体, 注意得到bdf后要手工编辑一下文件头,将编码声明修改正确)
得
到字体之后,放到某个目录下,执行mkfontdir生成fonts.dir,然后用xset +fp
/path/to/your/fonts将字体路径加入即可(注意与fontconfig的配置不同,这里路径是不递归的,如果有的字体放在子目录里面,
子目录也需要添加进去才行)。
TTF字体
很多新的应用程序(比如GTK2)都使用fontconfig/libxft2来显示字体,它对TTF字体的支持比较好(X以前通过freetype, xft模块也支持TTF字体,但对中日韩字体的支持不是太好,而且也在Cygwin下似乎也没有这些模块)
完全可以使用Linux下的arphic字体包. 如果没有安装Linux,可以到http://packages.debian.org下载相应的包,然后用7zip解压提取出ttf文件。
得到字体文件之后,放到某个目录之下,编辑/etc/fonts/local.conf,将字体路径加入:
/path/to/my/ttf/fonts如果只是自己使用,可以将字体文件放到~/.fonts下,不需要修改任何配置,最多三十秒fontconfig就能够发现这些字体了。
中文输入法
老黄(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,均可以从我的网站上找到 http://www.oliwen.com/bama...
一般设置了LC_CTYPE和XMODIFIERS就可以在程序中激活输入输入法了(除非这个程序没有XIM支持):
LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"
export LC_CTYPE XMODIFIERS
对于fcitx而言,XMODIFIERS设置为什么都可以(但必须要设置),所以设置为"@im=Chinput"的话chinput和fcitx都可以正常使用
VI中的 Backspace 與 Delete 按鍵異常
首先確定 $TERM的設定為cygwin
echo $TERM
若不是,請設定為
TERM = cygwin
export TERM
Backspace 與 Delete這兩個鍵正常狀況下只有一個有用。可在 $HOME/.bash_profile 任選一個來使用
stty erase '^H' //ctrl+v, ctrl+h
stty erase '^?'
------------------------
Cygwin使用指南
1 引言
cygwin 是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。本文将对其作一介绍。
2 机理
cygnus 当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
关于cygwin实现的更详细描述,请参考http://cygwin.com/cygwin-ug-net/highlights.html.
3 安装设置cygwin
3.1 安装
要安装网络版的cygwin,可以到http://cygwin.com,点击"Install Cygwin Now!"。这样会先下载一个叫做setup.exe的GUI安装程序,用它能下载一个完整的cygwin。按照每一屏的指示可以方便的进行安装。
3.2 环境变量
开始运行bash之前,应该设置一些环境变量。cygwin提供了一个.bat文件,里面已经设置好了最重要的环境变量。通过它来启动bash是最安全的办法。这个.bat文件安装在cygwin所在的根目录下。 可以随意编辑该文件。
CYGWIN变量用来针对cygwin运行时系统进行多种全局设置。开始时,可以不设置CYGWIN或者在执行bash前用类似下面的格式在dos框下把它设为tty
C:\> set CYGWIN=tty notitle glob
PATH 变量被cygwin应用程序作为搜索可知性文件的路径列表。当一个cygwin进程启动时,该变量被从windows格式(e.g. C:\WinNT\system32;C:\WinNT)转换成unix格式(e.g., /WinNT/system32:/WinNT)。如果想在不运行bash的时候也能够使用cygwin工具集,PATH起码应该包含x:\cygwin \bin,其中x:\cygwin 是你的系统中的cygwin目录。
HOME变量用来指定主目录,推荐在执行bash前定义该变量。当 cygwin进程启动时,该变量也被从windows格式转换成unix格式,例如,作者的机器上HOME的值为C:\(dos命令set HOME就可以看到他的值,set HOME=XXX可以进行设置),在bash中用echo $HOME看,其值为/cygdrive/c.
TERM变量指定终端型态。如果美对它进行设置,它将自动设为cygwin。
LD_LIBRARY_PATH被cygwin函数dlopen()作为搜索.dll文件的路径列表,该变量也被从windows格式转换成unix格式。多数Cygwin应用程序不使用dlopen,因而不需要该变量。
3.3 改变cygwin的最大存储容量
Cygwin 程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
4 使用cygwin
这一段讲一下cygwin和传统unix系统的不同之处。
4.1 映射路径名
4.1.1 引言
cygwin 同时支持win32和posix风格的路径,路径分隔符可以是正斜杠也可以是反斜杠。还支持UNC路径名。(在网络中,UNC是一种确定文件位置的方法,使用这种方法用户可以不关心存储设备的物理位置,方便了用户使用。在Windows操作系统,Novell Netware和其它操作系统中,都已经使用了这种规范以取代本地命名系统。在UNC中,我们不用关心文件在什么盘(或卷)上,不用关心这个盘(或卷)所在服务器在什么地方。我们只要以下面格式就可以访问文件:
\\服务器名\共享名\路径\文件名
共享名有时也被称为文件所在卷或存储设备的逻辑标识,但使用它的目的是让用户不必关心这些卷或存储设备所在的物理位置。)
符合posix标准的操作系统(如linux)没有盘符的概念。所有的绝对路径都以一个斜杠开始,而不是盘符(如c:)。所有的文件系统都是其中的子目录。例如,两个硬盘,其中之一为根,另一个可能是在/disk2路径下。
因为许多unix系统上的程序假定存在单一的posix文件系统结构,所以cygwin专门维护了一个针对win32文件系统的内部posix视图,使这些程序可以在windows下正确运行。在某些必要的情况下,cygwin会使用这种映射来进行win32和posix路径之间的转换。
4.1.2 cygwin mount表
cygwin 中的mount程序用来把win32盘符和网络共享路径映射到cygwin的内部posix目录树。这是与典型unix mount程序相似的概念。对于那些对unix不熟悉而具有windows背景的的人来说,mount程序和早期的dos命令join非常相似,就是把一个盘符作为其他路径的子目录。
路径映射信息存放在当前用户的cygwin mount表中,这个mount table 又在windows的注册表中。这样,当该用户下一次登录进来时,这些信息又从注册表中取出。mount 表分为两种,除了每个用户特定的表,还有系统范围的mount表,每个cygwin用户的安装表都继承自系统表。系统表只能由拥有合适权限的用户(windows nt的管理员)修改。
当前用户的mount表可以在注册表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系统表
存在HKEY_LOCAL_MACHINE下。
posix 根路径/缺省指向系统分区,但是可以使用mount命令重新指向到windows文件系统中的任何路径。cygwin从win32路径生成posix路径时,总是使用mount表中最长的前缀。例如如果c:被同时安装在/c和/,cygwin将把C:/foo/bar转换成/c/foo/bar.
如果不加任何参数地调用mount命令,会把Cygwin当前安装点集合全部列出。在下面的例子中,c盘是POSIX根,而d盘被映射到/d。本例中,根是一个系统范围的安装点,它对所有用户都是可见的,而/d仅对当前用户可见。
c:\> mount
f:\cygwin\bin on /usr/bin type system (binmode)
f:\cygwin\lib on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
还可以使用mount命令增加新的安装点,用umount删除安装点。
当Cygwin 不能根据已有的安装点把某个win32路径转化为posix路径时,cygwin会自动把它转化到一个处于缺省posix路径/cygdrive下的的一个安装点. 例如,如果Cygwin 访问Z:\foo,而Z盘当前不在安装表内,那么Z:\将被自动转化成/cygdrive/Z.
可以给每个安装点赋予特殊的属性。自动安装的分区显示为“auto”安装。安装点还可以选择是"textmode"还是 "binmode",这个属性决定了文本文件和二进制文件是否按同样的方式处理。
4.1.3 其他路径相关信息
cygpath工具提供了在shell脚本中进行win32-posix路径格式转换的能力。
HOME, PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格式(例如,如果存在从该win32路径到posix路径的安装,会把c:\cygwin\bin转为/bin)。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bash中的比较
BASH中字符串和数字的比较各不相同,详见下表:
对应的操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
判断字符串是否为空时,使用-z或-n,如下用法:
#!/bin/bash
IPADDR=""
if [ -n "$IPADDR" ] #注意,一定要加上双引号
then
echo "Fail"
fi
>>>>>>>>>>>>>>>>>>>>>
BASH中字符串和数字的比较各不相同,详见下表:
对应的操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
判断字符串是否为空时,使用-z或-n,如下用法:
#!/bin/bash
IPADDR=""
if [ -n "$IPADDR" ] #注意,一定要加上双引号
then
echo "Fail"
fi
>>>>>>>>>>>>>>>>>>>>>
XP下IIS出现MSXML3.DLL拒绝访问错误的解决办法
[ 2006/08/14 23:11 | by ipaddr ]
IIS报错:
msxml3.dll (0x80070005)
拒绝访问
解决办法:
Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
改为
Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
或
Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.4.0") >>>>>>>>>>>>
设定sql server定期自动备份数据库
[ 2006/08/14 12:08 | by ipaddr ]
企业管理器中的Tools,Database Maintenance Planner,可以设置数据库的定期自动备份计划。并通过启动Sql server Agent来自动运行备份计划。具体步骤如下:
1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器
2、然后点上面菜单中的工具-->选择数据库维护计划器
3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择
4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定
5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:\databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名默认的是BAK
6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成
7、完成后系统很可能会提示Sql Server Agent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务
8、可以设置启动启动sql server Agent:运行Services.msc,设置sqlserverAgent为自动启动。
修改计划:
打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划>>>>>>>>>>>>
How to customize ERD2005
[ 2006/08/12 23:38 | by ipaddr ]
一.简介
Winternals software 公司是于 1996 年由 Bryce Cogswell Ph.D. 和 Mark Russinovich Ph.D. 共同成立于美国德州,该公司主要产品为Windows 2000/NT 的系统修复和管理工具。这些修复与管理工具可应用于修复与救回损毁的 Windows-based 系统,让您不需从新装置系统。
ERD Commander 2005 Boot CD,是一个一个可以启动机器的光盘镜像,用Nero刻盘后,就得到了一张超酷的启动光盘了。用此光盘启动后,可以进入一个类似windows桌面的界面,有开始菜单等,最重要的是内置了一些有用的工具。ERD Commander 2005 Boot CD,可以算是Windows系统管理员的终极武器,系统修复的顶级软件,支持windows nt,2k,xp,2003。可以在系统出问题的情况下,用它对硬盘上的dead system进行一系列检修和操作,包括修改管理员口令,编辑注册表,停用和启用设备驱动和服务,崩溃分析,文件修复,系统还原.至于文件操作之类自然不在话下。ERD Commander的强大在于,可以直接对硬盘上的系统进行一些正常情况下只有进入系统才能进行的维护和修复操作。在用户和dead system之间建立起了桥梁。如果还能进入系统,下面所说的这些功能都可以比较轻易得找到替代品,也不用费那么大劲用ERD Commander的启动光盘。
光盘启动后,其中的资源管理器可以访问NTFS分区,可以像Windows的资源管理器一样粘贴复制。对于ntfs分区设置了权限而无法访问的文件夹,可以很方便的修改为everyone都可以访问。还有一个工具可以修改Windows 2000/XP/2003的用户密码,不怕忘记密码了,看来Windows2000/XP/2003的密码也不怎么安全。还有一个和Windows自带的注册表编辑器一样的注册表编辑器,在Windows无法启动时,可以用它来修改注册表。还有和Windows下一样的记事本和命令提示符。设置好网络后还可以联网。在Windows崩溃后,还可以用它来添加删除驱动和禁用一些服务,对于全部用NTFS的人。这张盘应该是非常有用的。 基本就是一个Win32的平台,就像是一个简化了可以刻到光盘的Win2000,xp,一些XP下命令提示符中的程序,例如subst.exe等,都可以在其平台下运行!
用 ERD Commander 2005 Boot CD 启动系统跟安装操作系统时的界面很类似。如果你有无法被操作系统识别的硬件(尤其是SCSI设备),那就需要先把它们的驱动程序写入软驱,启动时按“F6”读入驱动,否则用光盘启动后这些设备将无法正常使用。这个版本实际上包括了ERD Commander和Remote Recovery Client,如果运行后者,那么可以通过网络远程对这台机器进行修复操作。选择前者的话,会自动列出硬盘上安装的Windows,如果你装有两个或者更多的Windows操作系统,就可以在这里选择用ERD Commander进入哪个系统,选择好后再指定你的键盘布局和时区。如果没有系统或者不选,则有些功能象编辑注册表不能用,原因也是显而易见的。
ERD Commander 2005 Boot CD 启动电脑后会自动搜索并安装网卡驱动,常见网卡都能正确配置,也有搜索不成功的,这样就不能使用网络。这步比较慢,如果不需要使用网络,直接选跳过。ERD Commander 2005 会根据DHCP服务器分配IP地址,如果你的网络中没有DHCP服务器,则需要在Administrative Tools菜单下的TCP/IP Configuration里给你的系统临时指派一个。其次,默认情况下 ERD Commander 启动后会把你的电脑添加到WORKGROUP工作组中,如果你需要访问其他工作组或者域中的电脑,首先就要加入这个工作组或域:双击Network Neighborhood图标进入网络邻居,然后在Tools菜单下点击Add Domain,输入想要加入的域或者工作组的名称,然后确定。
除了这些功能,ERD Commander还可以做很多事,例如重新配置系统服务、修改系统注册表等,而这些功能操作上跟Windows中的没有太大区别,大家可以自己试试。不过在运行ERD Commander的时候一定要确保光盘一直在光驱中,否则系统会自动被锁死。
整个 ERD Commander 2005 比较庞大,简单说说它的一些功能,其实有的看程序名字就知道了。
●Autoruns:可以修改windows的启动加载项目,一般系统崩溃很少因为autorun的程序出错而引起,即使有,也可以进入安全模式解决,所以用到这项的时候也不多。
●Disk Management 磁盘管理:建分区,格式化磁盘。
●Event Log 事件日志:察看事件日志,没什么好说。
●Regedit 注册表编辑:类似于 Windows Regedit,但功能少一些。
●Service and Driver Manager 服务和驱动程序管理:这个比较有用。因为不良的驱动引起windows崩溃无法启动的可能性比较大。而有些驱动即使是安全模式也会加载,进安全模式也不管用。这个时候可以用ERD把可疑的驱动禁止掉。
●System Info 系统信息:系统的软硬件环境信息。
●TCP/IP Configuration TCP/IP 配置:配置网络。
●File Sharing 文件共享:启动文件在网络共享。
●Map Network Drive 映射网络驱动器:顾名思义。
●Crash Analyzer 故障分析:分析 Windows 系统故障转储文件,这个比较专业,一般用户也不会用到。
●Disk Commander:用于数据恢复,功能强大,可以修复硬盘、分区和被删除文件。
●FileRestore,恢复被删除的文件,提供一些条件供查找。
●DiskWipe 磁盘擦除:提供了两种算法,可以是四次覆盖 (美国国防部 5220.22-M),这样神仙也救不了。
●HotFix Uninstall 卸载补丁:用于卸载已经安装的Windows补丁包。安装补丁包一般情况下没有问题,不过一旦和其他的东西冲突或者补丁本身有问题,就用得着这个功能了。
●LockSmith 修锁工:用于修改硬盘上系统的密码,包括管理员的也可以。这个可能是这些组件中最著名的了。
●System Compare 系统比较:可以比较当前系统和远程计算机系统的差异。
●System File Repair 系统文件修理:修复系统文件,类似于用sfc /scannow来检查系统文件,进行系统修复。
●System Restore 系统还原:用于Windows XP的还原。当然前提是之前创建了还原点。系统备份有很多强大的工具,true image,ghost等,不是非要用XP自带的还原。我习惯于关闭系统还原功能。不过如果是使用这个功能创建了还原点,而系统被破坏进不去又无法还原的时候,这个功能就很有用了。
●Explorer 资源管理:和windows的差不多,可以方便地进行文件的复制删除等操作,正好可以用来备份崩溃系统上的重要数据到别处。
●Firefox 火狐浏览器:可以用来下载一些需要的程序和补丁等。
●Solution Wizard 应用向导:提供了一个比较方便的向导,帮助用户使用上述工具,如果熟悉上面说的这些工具,自行挑选即可。
二.定制
我使用易通汉化的ERD2005做模板,做了以下定制
a.修改启动密码(zhoutang,ipaddr)
b.修改启动信息
c.修改FireFox书签
d.加入部分工具
主要工作是修改了启动密码,默认易通汉化的ERD2005的密码是Yitong,我想改成自己的,折腾了很久,最后找到了解决办法.
定制过程中, 使用了Winternals Administrator's Pak工具包(生成ERD Commander2005),UltraISO(编辑ISO文件),UltraEdit(编辑二进制文件),Cygwin(diff,find等命令).
定制过程大致如下:
A.首先,使用Winternals Administrator's Pak生成两张光盘,一张有密码,一张没有密码
B.将两张光盘解压
C.使用Cygwin的diff -a disk1/ disk2/对两张光盘对比,发现只有I386/System32/config/下的software不同
D.使用Editplus打开,发现果然有PASSWORD字符串.
E.使用Winternals Administrrator's Pak生成一张带密码(ipaddr)的光盘,并且把software从ISO文件提取出来,同时,把易通的汉化版的software提取出来
F.使用UltraEditor,打开两个software,都找到Password处(大约在a3200h,a0af0h的位置),将易通的Software的PASSWORD字符串后面的12个字节,改成我们导出的Software文件Password后面的同样内容.(需要用Ultraeditor进行二进制编辑).保存并将software通过UltraISO压回ISO文件.
G.测试通过,可以使用新密码登录ERD Commander了.
H.修改I386/txtsetup.sif的loaderprompt可以定制启动信息
I.修改/I386/system32/FireFoxProfile/Application Data/Mozilla/Firefox/Profiles/gqv4hl5n.default下的bookmarks.html定制Firefox.
J.在/Program下面,加入Editplus(编辑器),FileZilla(一个功能超强的绿色FTP,支持SFTP.),ProcessExplorer,Putty,tsc(windows remote desktop),更新了WINRAR.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Winternals software 公司是于 1996 年由 Bryce Cogswell Ph.D. 和 Mark Russinovich Ph.D. 共同成立于美国德州,该公司主要产品为Windows 2000/NT 的系统修复和管理工具。这些修复与管理工具可应用于修复与救回损毁的 Windows-based 系统,让您不需从新装置系统。
ERD Commander 2005 Boot CD,是一个一个可以启动机器的光盘镜像,用Nero刻盘后,就得到了一张超酷的启动光盘了。用此光盘启动后,可以进入一个类似windows桌面的界面,有开始菜单等,最重要的是内置了一些有用的工具。ERD Commander 2005 Boot CD,可以算是Windows系统管理员的终极武器,系统修复的顶级软件,支持windows nt,2k,xp,2003。可以在系统出问题的情况下,用它对硬盘上的dead system进行一系列检修和操作,包括修改管理员口令,编辑注册表,停用和启用设备驱动和服务,崩溃分析,文件修复,系统还原.至于文件操作之类自然不在话下。ERD Commander的强大在于,可以直接对硬盘上的系统进行一些正常情况下只有进入系统才能进行的维护和修复操作。在用户和dead system之间建立起了桥梁。如果还能进入系统,下面所说的这些功能都可以比较轻易得找到替代品,也不用费那么大劲用ERD Commander的启动光盘。
光盘启动后,其中的资源管理器可以访问NTFS分区,可以像Windows的资源管理器一样粘贴复制。对于ntfs分区设置了权限而无法访问的文件夹,可以很方便的修改为everyone都可以访问。还有一个工具可以修改Windows 2000/XP/2003的用户密码,不怕忘记密码了,看来Windows2000/XP/2003的密码也不怎么安全。还有一个和Windows自带的注册表编辑器一样的注册表编辑器,在Windows无法启动时,可以用它来修改注册表。还有和Windows下一样的记事本和命令提示符。设置好网络后还可以联网。在Windows崩溃后,还可以用它来添加删除驱动和禁用一些服务,对于全部用NTFS的人。这张盘应该是非常有用的。 基本就是一个Win32的平台,就像是一个简化了可以刻到光盘的Win2000,xp,一些XP下命令提示符中的程序,例如subst.exe等,都可以在其平台下运行!
用 ERD Commander 2005 Boot CD 启动系统跟安装操作系统时的界面很类似。如果你有无法被操作系统识别的硬件(尤其是SCSI设备),那就需要先把它们的驱动程序写入软驱,启动时按“F6”读入驱动,否则用光盘启动后这些设备将无法正常使用。这个版本实际上包括了ERD Commander和Remote Recovery Client,如果运行后者,那么可以通过网络远程对这台机器进行修复操作。选择前者的话,会自动列出硬盘上安装的Windows,如果你装有两个或者更多的Windows操作系统,就可以在这里选择用ERD Commander进入哪个系统,选择好后再指定你的键盘布局和时区。如果没有系统或者不选,则有些功能象编辑注册表不能用,原因也是显而易见的。
ERD Commander 2005 Boot CD 启动电脑后会自动搜索并安装网卡驱动,常见网卡都能正确配置,也有搜索不成功的,这样就不能使用网络。这步比较慢,如果不需要使用网络,直接选跳过。ERD Commander 2005 会根据DHCP服务器分配IP地址,如果你的网络中没有DHCP服务器,则需要在Administrative Tools菜单下的TCP/IP Configuration里给你的系统临时指派一个。其次,默认情况下 ERD Commander 启动后会把你的电脑添加到WORKGROUP工作组中,如果你需要访问其他工作组或者域中的电脑,首先就要加入这个工作组或域:双击Network Neighborhood图标进入网络邻居,然后在Tools菜单下点击Add Domain,输入想要加入的域或者工作组的名称,然后确定。
除了这些功能,ERD Commander还可以做很多事,例如重新配置系统服务、修改系统注册表等,而这些功能操作上跟Windows中的没有太大区别,大家可以自己试试。不过在运行ERD Commander的时候一定要确保光盘一直在光驱中,否则系统会自动被锁死。
整个 ERD Commander 2005 比较庞大,简单说说它的一些功能,其实有的看程序名字就知道了。
●Autoruns:可以修改windows的启动加载项目,一般系统崩溃很少因为autorun的程序出错而引起,即使有,也可以进入安全模式解决,所以用到这项的时候也不多。
●Disk Management 磁盘管理:建分区,格式化磁盘。
●Event Log 事件日志:察看事件日志,没什么好说。
●Regedit 注册表编辑:类似于 Windows Regedit,但功能少一些。
●Service and Driver Manager 服务和驱动程序管理:这个比较有用。因为不良的驱动引起windows崩溃无法启动的可能性比较大。而有些驱动即使是安全模式也会加载,进安全模式也不管用。这个时候可以用ERD把可疑的驱动禁止掉。
●System Info 系统信息:系统的软硬件环境信息。
●TCP/IP Configuration TCP/IP 配置:配置网络。
●File Sharing 文件共享:启动文件在网络共享。
●Map Network Drive 映射网络驱动器:顾名思义。
●Crash Analyzer 故障分析:分析 Windows 系统故障转储文件,这个比较专业,一般用户也不会用到。
●Disk Commander:用于数据恢复,功能强大,可以修复硬盘、分区和被删除文件。
●FileRestore,恢复被删除的文件,提供一些条件供查找。
●DiskWipe 磁盘擦除:提供了两种算法,可以是四次覆盖 (美国国防部 5220.22-M),这样神仙也救不了。
●HotFix Uninstall 卸载补丁:用于卸载已经安装的Windows补丁包。安装补丁包一般情况下没有问题,不过一旦和其他的东西冲突或者补丁本身有问题,就用得着这个功能了。
●LockSmith 修锁工:用于修改硬盘上系统的密码,包括管理员的也可以。这个可能是这些组件中最著名的了。
●System Compare 系统比较:可以比较当前系统和远程计算机系统的差异。
●System File Repair 系统文件修理:修复系统文件,类似于用sfc /scannow来检查系统文件,进行系统修复。
●System Restore 系统还原:用于Windows XP的还原。当然前提是之前创建了还原点。系统备份有很多强大的工具,true image,ghost等,不是非要用XP自带的还原。我习惯于关闭系统还原功能。不过如果是使用这个功能创建了还原点,而系统被破坏进不去又无法还原的时候,这个功能就很有用了。
●Explorer 资源管理:和windows的差不多,可以方便地进行文件的复制删除等操作,正好可以用来备份崩溃系统上的重要数据到别处。
●Firefox 火狐浏览器:可以用来下载一些需要的程序和补丁等。
●Solution Wizard 应用向导:提供了一个比较方便的向导,帮助用户使用上述工具,如果熟悉上面说的这些工具,自行挑选即可。
二.定制
我使用易通汉化的ERD2005做模板,做了以下定制
a.修改启动密码(zhoutang,ipaddr)
b.修改启动信息
c.修改FireFox书签
d.加入部分工具
主要工作是修改了启动密码,默认易通汉化的ERD2005的密码是Yitong,我想改成自己的,折腾了很久,最后找到了解决办法.
定制过程中, 使用了Winternals Administrator's Pak工具包(生成ERD Commander2005),UltraISO(编辑ISO文件),UltraEdit(编辑二进制文件),Cygwin(diff,find等命令).
定制过程大致如下:
A.首先,使用Winternals Administrator's Pak生成两张光盘,一张有密码,一张没有密码
B.将两张光盘解压
C.使用Cygwin的diff -a disk1/ disk2/对两张光盘对比,发现只有I386/System32/config/下的software不同
D.使用Editplus打开,发现果然有PASSWORD字符串.
E.使用Winternals Administrrator's Pak生成一张带密码(ipaddr)的光盘,并且把software从ISO文件提取出来,同时,把易通的汉化版的software提取出来
F.使用UltraEditor,打开两个software,都找到Password处(大约在a3200h,a0af0h的位置),将易通的Software的PASSWORD字符串后面的12个字节,改成我们导出的Software文件Password后面的同样内容.(需要用Ultraeditor进行二进制编辑).保存并将software通过UltraISO压回ISO文件.
G.测试通过,可以使用新密码登录ERD Commander了.
H.修改I386/txtsetup.sif的loaderprompt可以定制启动信息
I.修改/I386/system32/FireFoxProfile/Application Data/Mozilla/Firefox/Profiles/gqv4hl5n.default下的bookmarks.html定制Firefox.
J.在/Program下面,加入Editplus(编辑器),FileZilla(一个功能超强的绿色FTP,支持SFTP.),ProcessExplorer,Putty,tsc(windows remote desktop),更新了WINRAR.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
免费,绿色,强大的FTP软件FileZilla
[ 2006/08/12 19:30 | by ipaddr ]
FileZilla是一款免费,绿色,强大的FTP软件,功能大致如下:
The main features of FileZilla are:
Ability to resume Uploads/Downloads (if the server supports it)
Custom Commands
Site Manager with folders
Keep Alive system
Timeout detection
Firewall support
SOCKS4/5 and HTTP1.1 Proxy support
SSL secured connections
SFTP support
Upload/Download Queue
Drag&Drop
Multi-language support
GSS authentication and encryption using Kerberos
官方网站:http://sourceforge.net/projects/filezilla
>>>>>>>>>>>>>>>>>>>>
点评主流开源数据库的技术特点
[ 2006/08/11 08:17 | by ipaddr ]
随着开放源代码软件的使用越来越广泛,像Linux操作系统一样,开放源代码数据库的出现也有其必然性。在当Oracle、IBM、Microsoft、Sybase
等几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。开源数据库系统并不是一个新事物,如Postgres(PostgreSQL的前身)已经有20年的发展历史了,而著名的MySQL今年4月刚刚度过了其10周年纪念活动。
1、MYSQL
MysQL是瑞典的T.c.X公司负责开发和维护的,它是一个真正的多用户、多线程SQL数据库服务器。MysQL是以一个客户机/服务器结构实现其功能的,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。MySQL主要特点是快速、健壮和易用。MySQL的官方发音是“My Ess Que Ell”(不是MY-SEQUEL)。目前MySQL的最新版本是5.0,MySQL的网址是:http://www.mysql.com,MySQL的标志是一个小海豚。
MySQL的技术特点:
1. 它使用的核心线程是完全多线程,支持多处理器。
2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。
4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
MaxDB是2003年SAP公司和MySQL AB公司合作之后SAP DB新的名称。MaxDB是一款重量级的、获得SAP R/3认证,适宜于联机事务处理和联机分析处理等多种业务类型的高可用性、高可靠性和极具伸缩性的数据库,支持大容量的用户和并发业务操作,采用多线程多进程的服务器设计,支持多处理器的应用,并通过集群和热部署提供高可靠性,支持TB级的海量数据,支持企业级的数据同步和复制等复杂应用。
2. PostgreSQL
PostgreSQL是一种运行在Unix和Linux操作系统(在NT平台借助Cygnus也可以运行)平台上的免费的开放源码的关系数据库。最早是由美国加州大学伯克利分校开发的,开始只是作为一个演示系统发表,但是随着时间的推移,逐步分发,得到很多实际的应用,才逐步流行起来。PostgreSQ的网址是http://www.postgresql.org/,最新版本是2005年10月4日发布的8.0.4。PostgreSQL的官方发音是:Post-gres-Q-L。
PostgreSQL的技术特点:
1. 支持SQL。作为关系数据库,它支持SQL89标准也支持部分SQL92大部分功能。
2. 有丰富的数据类型。许多数据类型是一些商业数据库都没有提供的。
3. 面向对象。它包含了一些面向对象的技术,如继承和类。
4. 支持大数据库,它不同于一般的桌面数据库,能够支持几乎不受限制大小的数据库,而且性能稳定。
5. 方便集成web,提供一些接口方便 PHP,Perl等语言操作数据库。
6. 事务处理。相对一些其他免费数据库如MySQL,他提供了事务处理,可以满足一些商业领域的数据需要。
7. PostgreSQL运行速度明显低于MySQL。因为MySQL使用了线程,而PostgreSQL使用的是进程。在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。
3. Firebird
2000年7月,Borland(即现在的Inprise)公司公布了其数据库产品Interbase的源代码。Firebird数据库就是从该数据库中派生出来的。当时,Interbase是与客户/服务器版本的Delphi产品捆绑在一些销售的。现在,Interbase已经变成了一只开放源码中的“火鸟”。 Firebird 网址是http://firebird.sourceforge.net/ ,最新版本是2005年8月5日发布的1.5.3。
Firebird的技术特点
Firebird相对MySQL和PostgreSQL来说比较小,其RPM版本只有3.0MB。这也使其可以称得上是理想的“嵌入式数据库”,可用于与其它应用程序服务器和应用程序捆绑。Firebird具有大部分成熟数据库所具有的功能,比如支持存储过程、SQL兼容等。如果用户有使用DB2或PostgreSQL的经验,就会发现Firebird与它们的语法非常相似,数据类型和数据处理方式也很类似。 Firebird的设计思想是小型、快速和最小化的管理。这对于需要一个数据库用于存储数据,但又不想花太多时间来调整数据性能的开发人员很适用。实际上在很多情况下,我们并不需要存储程序或复杂的表之间的关联。这时会发现Firebird在大小和功能之间找到了一个理想的平衡点。
现在有两个版本的Firebird服务器软件可供下载,分别是Firebird Super Server和Firebird Classic Server。简单来说,二者的区别在于设计的方法不同。Super Server使用线程同时为多个客户连接提供服务,而Classic Server使用的则是Interbase的方法,采用为每个连接提供一个独立服务器进程的方式。如果想对二者的区别有更多的了解,可查看http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ss_vs_classic。对于“嵌入式数据库”的用户,这两个版本之间没有太大的区别。从理论上讲,如果应用程序的用户很多,那么Super Server将是一个较好的选择。
4. mSQL
mSQL(mini SQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。mSQL(mini SQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了。由于mSQL较简单,在运行简单的SQL语句时速度比MySQL略快,而MySQL在线程和索引上下了功夫,运行复杂的SQL语句时比mSQL,PostgreSQL等都要快一些。MSQL的网址是:http://www.hughes.com.au ,最新版本是2005年5月8日发布的3.7。
mSQL的技术特点:
安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是 全部可读/写。mSQL缺乏 ANSI SQL 的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可以得到一个称为 W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHP API。
嵌入式数据库
嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
5. Berkeley DB
像MySQL这类基于C/S结构的关系型数据库系统虽然代表着目前数据库应用的主流,但却并不能满足所有应用场合的需要。有时我们需要的可能只是一个简单的基于磁盘文件的数据库系统。这样不仅可以避免安装庞大的数据库服务器,而且还可以简化数据库应用程序的设计。Berkeley DB正是基于这样的思想提出来的。官方网址是:http://www.sleepycat.com/ ,最新版本是2005年8月5日发布的4.3。
的技术特点:
Berkeley DB是一个开放源代码的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务。应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。与常用的数据库管理系统(如MySQL和Oracle等)有所不同,在Berkeley DB中并没有数据库服务器的概念。应用程序不需要事先同数据库服务建立起网络连接,而是通过内嵌在程序中的Berkeley DB函数库来完成对数据的保存、查询、修改和删除等操作。
Berkeley DB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数。而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。俗话说:“麻雀虽小五脏俱全。”Berkeley DB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡。就拿对数据的并发操作来说,Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。此外,如果想在资源受限的嵌入式系统上进行数据库管理,Berkeley DB可能就是惟一正确的选择了。
Berkeley DB作为一种嵌入式数据库系统在许多方面有着独特的优势。首先,由于其应用程序和数据库管理系统运行在相同的进程空间当中,进行数据操作时可以避免繁琐的进程间通信,因此耗费在通信上的开销自然也就降低到了极低程度。其次,Berkeley DB使用简单的函数调用接口来完成所有的数据库操作,而不是在数据库系统中经常用到的SQL语言。这样就避免了对结构化查询语言进行解析和处理所需的开销。
6. SQLite
SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。它是作为 PHP V4.3 中的一个选项引入的,构建在 PHP V5 中。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。SQLite 的网址是,最新版本是2005年9月24日发布的3.2.7 。
SQLite的技术特点:
SQLite 对 SQL92 标准的支持包括索引、限制、触发和查看。SQLite 不支持外键限制,但支持原子的、一致的、独立和持久 (ACID) 的事务(后面会提供有关 ACID 的更多信息)。这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
总结:
目前的开源数据库还不能在功能和处理能力方面追上商业级产品,但价格的侵蚀力无法回避,开源数据库迅速增长的市场份额甚至让数据库领域的三巨头,Oracle、IBM、微软都感到忐忑不安。开源数据库的用户在增长,并正在被越来越多的用户所采用。在嵌入式数据库领域,开源数据库优势更加明显。分析师称开放源码正在迅速被数据库技术所采用。开放源码“从2000年被怀疑到2005年已经发展成为全球的主流技术”。低成本甚至免费的开源数据库时代即将来临。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
等几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。开源数据库系统并不是一个新事物,如Postgres(PostgreSQL的前身)已经有20年的发展历史了,而著名的MySQL今年4月刚刚度过了其10周年纪念活动。
1、MYSQL
MysQL是瑞典的T.c.X公司负责开发和维护的,它是一个真正的多用户、多线程SQL数据库服务器。MysQL是以一个客户机/服务器结构实现其功能的,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。MySQL主要特点是快速、健壮和易用。MySQL的官方发音是“My Ess Que Ell”(不是MY-SEQUEL)。目前MySQL的最新版本是5.0,MySQL的网址是:http://www.mysql.com,MySQL的标志是一个小海豚。
MySQL的技术特点:
1. 它使用的核心线程是完全多线程,支持多处理器。
2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。
4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
MaxDB是2003年SAP公司和MySQL AB公司合作之后SAP DB新的名称。MaxDB是一款重量级的、获得SAP R/3认证,适宜于联机事务处理和联机分析处理等多种业务类型的高可用性、高可靠性和极具伸缩性的数据库,支持大容量的用户和并发业务操作,采用多线程多进程的服务器设计,支持多处理器的应用,并通过集群和热部署提供高可靠性,支持TB级的海量数据,支持企业级的数据同步和复制等复杂应用。
2. PostgreSQL
PostgreSQL是一种运行在Unix和Linux操作系统(在NT平台借助Cygnus也可以运行)平台上的免费的开放源码的关系数据库。最早是由美国加州大学伯克利分校开发的,开始只是作为一个演示系统发表,但是随着时间的推移,逐步分发,得到很多实际的应用,才逐步流行起来。PostgreSQ的网址是http://www.postgresql.org/,最新版本是2005年10月4日发布的8.0.4。PostgreSQL的官方发音是:Post-gres-Q-L。
PostgreSQL的技术特点:
1. 支持SQL。作为关系数据库,它支持SQL89标准也支持部分SQL92大部分功能。
2. 有丰富的数据类型。许多数据类型是一些商业数据库都没有提供的。
3. 面向对象。它包含了一些面向对象的技术,如继承和类。
4. 支持大数据库,它不同于一般的桌面数据库,能够支持几乎不受限制大小的数据库,而且性能稳定。
5. 方便集成web,提供一些接口方便 PHP,Perl等语言操作数据库。
6. 事务处理。相对一些其他免费数据库如MySQL,他提供了事务处理,可以满足一些商业领域的数据需要。
7. PostgreSQL运行速度明显低于MySQL。因为MySQL使用了线程,而PostgreSQL使用的是进程。在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。
3. Firebird
2000年7月,Borland(即现在的Inprise)公司公布了其数据库产品Interbase的源代码。Firebird数据库就是从该数据库中派生出来的。当时,Interbase是与客户/服务器版本的Delphi产品捆绑在一些销售的。现在,Interbase已经变成了一只开放源码中的“火鸟”。 Firebird 网址是http://firebird.sourceforge.net/ ,最新版本是2005年8月5日发布的1.5.3。
Firebird的技术特点
Firebird相对MySQL和PostgreSQL来说比较小,其RPM版本只有3.0MB。这也使其可以称得上是理想的“嵌入式数据库”,可用于与其它应用程序服务器和应用程序捆绑。Firebird具有大部分成熟数据库所具有的功能,比如支持存储过程、SQL兼容等。如果用户有使用DB2或PostgreSQL的经验,就会发现Firebird与它们的语法非常相似,数据类型和数据处理方式也很类似。 Firebird的设计思想是小型、快速和最小化的管理。这对于需要一个数据库用于存储数据,但又不想花太多时间来调整数据性能的开发人员很适用。实际上在很多情况下,我们并不需要存储程序或复杂的表之间的关联。这时会发现Firebird在大小和功能之间找到了一个理想的平衡点。
现在有两个版本的Firebird服务器软件可供下载,分别是Firebird Super Server和Firebird Classic Server。简单来说,二者的区别在于设计的方法不同。Super Server使用线程同时为多个客户连接提供服务,而Classic Server使用的则是Interbase的方法,采用为每个连接提供一个独立服务器进程的方式。如果想对二者的区别有更多的了解,可查看http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ss_vs_classic。对于“嵌入式数据库”的用户,这两个版本之间没有太大的区别。从理论上讲,如果应用程序的用户很多,那么Super Server将是一个较好的选择。
4. mSQL
mSQL(mini SQL)是一个单用户数据库管理系统,个人使用免费,商业使用收费。由于它的短小精悍,使其开发的应用系统特别受到互联网用户青睐。mSQL(mini SQL)是一种小型的关系数据库,性能不是太好,对SQL语言的支持也不够完全,但在一些网络数据库应用中是足够了。由于mSQL较简单,在运行简单的SQL语句时速度比MySQL略快,而MySQL在线程和索引上下了功夫,运行复杂的SQL语句时比mSQL,PostgreSQL等都要快一些。MSQL的网址是:http://www.hughes.com.au ,最新版本是2005年5月8日发布的3.7。
mSQL的技术特点:
安全性方面,mSQL通过ACL文件设定各主机上各用户的访问权限,缺省是 全部可读/写。mSQL缺乏 ANSI SQL 的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可以得到一个称为 W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHP API。
嵌入式数据库
嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。
5. Berkeley DB
像MySQL这类基于C/S结构的关系型数据库系统虽然代表着目前数据库应用的主流,但却并不能满足所有应用场合的需要。有时我们需要的可能只是一个简单的基于磁盘文件的数据库系统。这样不仅可以避免安装庞大的数据库服务器,而且还可以简化数据库应用程序的设计。Berkeley DB正是基于这样的思想提出来的。官方网址是:http://www.sleepycat.com/ ,最新版本是2005年8月5日发布的4.3。
的技术特点:
Berkeley DB是一个开放源代码的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务。应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。与常用的数据库管理系统(如MySQL和Oracle等)有所不同,在Berkeley DB中并没有数据库服务器的概念。应用程序不需要事先同数据库服务建立起网络连接,而是通过内嵌在程序中的Berkeley DB函数库来完成对数据的保存、查询、修改和删除等操作。
Berkeley DB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数。而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。俗话说:“麻雀虽小五脏俱全。”Berkeley DB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡。就拿对数据的并发操作来说,Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。此外,如果想在资源受限的嵌入式系统上进行数据库管理,Berkeley DB可能就是惟一正确的选择了。
Berkeley DB作为一种嵌入式数据库系统在许多方面有着独特的优势。首先,由于其应用程序和数据库管理系统运行在相同的进程空间当中,进行数据操作时可以避免繁琐的进程间通信,因此耗费在通信上的开销自然也就降低到了极低程度。其次,Berkeley DB使用简单的函数调用接口来完成所有的数据库操作,而不是在数据库系统中经常用到的SQL语言。这样就避免了对结构化查询语言进行解析和处理所需的开销。
6. SQLite
SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。它是作为 PHP V4.3 中的一个选项引入的,构建在 PHP V5 中。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。SQLite 的网址是,最新版本是2005年9月24日发布的3.2.7 。
SQLite的技术特点:
SQLite 对 SQL92 标准的支持包括索引、限制、触发和查看。SQLite 不支持外键限制,但支持原子的、一致的、独立和持久 (ACID) 的事务(后面会提供有关 ACID 的更多信息)。这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
总结:
目前的开源数据库还不能在功能和处理能力方面追上商业级产品,但价格的侵蚀力无法回避,开源数据库迅速增长的市场份额甚至让数据库领域的三巨头,Oracle、IBM、微软都感到忐忑不安。开源数据库的用户在增长,并正在被越来越多的用户所采用。在嵌入式数据库领域,开源数据库优势更加明显。分析师称开放源码正在迅速被数据库技术所采用。开放源码“从2000年被怀疑到2005年已经发展成为全球的主流技术”。低成本甚至免费的开源数据库时代即将来临。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>