Gegroepeerd op:
Datum
Categorie
8/03/2009
鼠标就像女人的乳房,要大小适中手感好,并且经久耐用。 --mark一个,过段时间补充心得。
21/01/2009
一个叫做Matt的略胖的男人,在世界不同地方跳着同一种舞蹈,这就是Where the Hell is Matt? 系列视频的全部内容。
14个月内走遍了42个国家
有趣网站分享:
糖果盒 , 这个idea国外已经有了,但是不知道国内会发展成什么样子。 不过如果你有兴趣浏览更多的好网站,也不放去看看。
PS:毕竟是校友做的,打个广告吧。
13/01/2009
今天试用了“
世界之窗 ”3.0. 界面和Chrome很像,但是IE内核,所以银行性质的网站也可以访问,速度快,资源少。推荐一个。
9/01/2009
Server 2003 下bugzilla的安装手记
下载软件
1. bugzilla-2.22.6
2. ActivePerl-5.8.2.808-MSWin32-x86.msi
3. mysql-4.1.22-win32.zip
4. mysql-administrator-1.1.2-win.msi
步骤:
1. 安装Perl
安装很简单,双击就可以了。 我用的版本是5.8.2。 刚开始安装的是5.10的,但是中间安装bugzilla需要的perl模块的时候老是有问题,后来用了5.8.0的也还是不行,有些模块要求版本大于5.8.0。
安装完成以后,dos命令行下运行”perl –version”,如果系统提示无法找到命令。 将perl的bin路径添加到系统变量path中。
2. 安装MySQL
我下载的是windows下的安装版,双击setup.exe一路点一下去就可以了。
3. 安装mysql-administrator-1.1.2-win.msi
双击安装。这个一个图形化的mysql管理软件,mysql主页可以下到,一路点击以后就可以了。
打开软件,链接到mysql,选择”Startup Variables”->”Advanced”,将”Def.Char Set”设置为”utf8”,这个是为了解决mysql的中文支持问题。
4. 创建数据库和用户
为bugzilla创建数据库如bugzilla,添加用户,命令如下:
mysql> CREATE DATABASE `bugzilla` D EFAULT CHARACTER SET utf8 ;
mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES ON bugs.* TO bugs@localhost INDENTIFIED BY '$db_pass';
5. 安装bugzilla
解压bugzilla到硬盘,比如c:\\bugzilla.
Dos 命令行切换到c:\\bugzilla。 运行“perl Checksetup.pl”
按照页面提示安装相关模块。 常规的命令形式为“ppm install DBI ”,如果提示有多个候选模块。 则运行“ppm”,“install DBI”,“install 1”,表示安装第一个候选模块。
再运行“perl Checksetup.pl”, 按提示输入必要信息。
修改bugzilla安装目录下的localconfig文件,输入数据库用户,密码,端口信息。
6. 配置IIS
为BugZilla创建一个虚拟目录,指定端口,默认为80,并且在默认文档中添加Index.cgi. 打开 控制面板->管理工具->Internet 服务管理器,在默认 Web 站点, 点按右键选择属性->主目录->配置…,在应用程序映射中点击添加 增加如下的内容: Executable: C:\Perl\bin\perl.exe -T %s %s “ (千万不要少最后那个引号) Extension: .cgi 总做对应是所有。
将.pl, .plx的映射动作也改为所有。
Internet 服务管理器->主 目录->执行权限改为“脚本和可执行文件“。 Internet 服务管理器->Web服务扩展, 允许“所有未知的CGI扩展”“所 有位置的ISAPI扩展”
打开 http://localhost/bugzilla ,运气好的话就进去了
7. 邮件服务配置
Bugzilla 默认的是使用sendmail发送邮件,不支持smtp,所要稍作修改。 网上有推荐用windows的sendmail的,但是我没成功。
安装Perl的支持邮件模块
在DOS窗口中,执行以下命令添加下载模块的地址 C:\>ppm rep add glob http://glob.com.au/ppm
然后用以下命令安装: c:\>ppm install Net::SMTP
搜到很多结果,全部安装了就是。
安装一个windows先的sendmail, 下载地址为 http://www.glob.com.au/sendmail/sendmail.zip , 解压缩到bugzilla目录下,运行.exe执行文件,然后修改sendmail.ini中的配置信息。
然后报个bug,看看是不是有新邮件到邮箱里。
8. 汉化问题
上面提到修改数据库的默认编码问题,就是为了解决中文支持问题。此外为了保证中文能正确显示,还有作一些修改。
确保Bugzilla连接数据库的字字符集设置,需要相应的文件:
..\bugzilla\Bugzilla\DB.pm
762 行 # connect using our known info to the specified db
763 行 # Apache::DBI will cache this when using mod_perl
764 行 my $self = DBI->connect($dsn, $user, $pass, $attributes)
765 行 or die "\nCan't connect to the database.\nError: $DBI::errstr\n"
766 行 . " Is your database installed and up and running?\n Do you have"
767 行 . " the correct username and password selected in localconfig?\n\n";
# 数据库的编码为UTF8,为了防止出现编码转换,使用下面的设置。
$self->do("SET NAMES 'utf8'");
确保Bugzilla页面默认的字符集为utf8:
修改..\bugzilla\Bugzilla\CGI.pm 的第55行改为 $self->charset('UTF-8')。
要想邮件不出现乱码
修改..bugzilla\Bugzilla\CGI.pm的第55行改为 $self->charset('UTF-8');
进入Bugzilla的系统设置(Parameters)里面,在 newchangedmail 一项里的 文本框文字的第一行加上Content-type: text/plain; charset=UTF-8 ,加后变为:
Content-type: text/plain; charset=UTF-8
From: bugzilla-daemon
To: %to%
……
收到的email的主题仍为乱码,网上提供的解决方案是:
打开文件 \Bugzilla\BugMail.pm, 在第 586 行加上两行:
use Encode;
$substs{"summary"} = encode('MIME-Q', $substs{"summary"});
界面汉化很简单,从网上下载汉化包,放到template下即可,我用的是utf8版的。
然后再Bugzilla的localization界面修改languages为cn即可。
9. 使用whine(定制)功能
Bugzilla 提供的一个强大的(whine)定制功能,linux下可以用crontab执行定期的命名,windows我是写一个whine.bat
G:\Perl\bin\perl.exe -T G:\bugzilla-2.22.6\whine.pl
然后把这个设定为windows的计划任务,每隔15分钟运行。
使用whine的时候,如果语言不是en而是cn的时候,邮件发不出来。命令行下打印出邮件内容,发现从一开始就乱码。一个折中的解决办法是强制whine发送邮件时系统语言为en
修改whine.pl
行36: use Bugzilla::BugMail;
行37: use Bugzilla::Util;
# 添加本行,强制指定邮件语言为英文
Bugzilla::Config::SetParam('languages','en') ;
这样cn下的while邮件问题,被丑陋的解决了。希望有大侠提供更好的办法。
12/07/2008
入手一个X61 B54。新鲜了半天,把所谓的指纹识别,一键恢复,硬盘保护都玩遍了。 后来发现无法用指纹代替bios密码,上网看了n多的教程,结果还是没有用,看到一个类似的兄弟发的帖,有人回说是因为bios版本太高。我又不敢乱降bios,所以就放弃了-reset default setting。结果问题就来了,已经xp就蓝屏,接下来更多问题就来了,一键恢复-没用,启动盘-没用,死的心都有。U盘启动Winpe,看不到硬盘。后来想起是不是硬盘支持的问题,于是到bios里面改了 Onboard IDE Operate Mode设为Compatible Mode。 重启一下,好了。我真是一头不长肉的猪。
老杨回家给偶带水蜜桃了,期待ing~~
另:Windows live space真是越来越恶心了,发个日志还要装控件,又慢的要死。鄙视,一同鄙视电信的114。
1/09/2006
Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。 Validator目前可实现的验证类型有: 1.是否为空; 2.中文字符; 3.双字节字符 4.英文; 5.数字; 6.整数; 7.实数; 8.Email地址; 9.使用HTTP协议的网址; 10.电话号码; 11.货币; 12.手机号码; 13.邮政编码; 14.身份证号码; 15.QQ号码; 16.日期; 17.符合安全规则的密码; 18.某项的重复值; 19.两数的关系比较; 20.判断输入值是否在(n, m)区间; 21.输入字符长度限制(可按字节比较); 22.对于具有相同名称的单选按钮的选中判断; 23.限制具有相同名称的多选按钮的选中数目; 24.自定义的正则表达式验证; 运行环境(客户端): 在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过; 在Lunix RedHat 9下的Netscape测试通过;
用法 Step 1:<form onSubmit="return Validator.Validate(this,3)" action="your_application_page" method="post"> ... ... </form> Step 2:验证输入是否Email地址 <input name="Email" dataType="Email" msg="信箱格式不正确"> or <input name="Email" dataType="Custom" regexp="^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$" msg="信箱格式不正确"> Step 3:验证下拉菜单是否选中 <select name="Operation" dataType="Require" msg="未选择所用操作系统" > <option value="">选择您所用的操作系统</option> <option value="Win98">Win98</option> <option value="Win2k">Win2k</option> <option value="WinXP">WinXP</option> </select> Step 4:验证是否选中单选按钮组中的一个 广东<input name="Province" value="1" type="radio"> 陕西<input name="Province" value="2" type="radio"> 浙江<input name="Province" value="3" type="radio"> 江西<input name="Province" value="4" type="radio" dataType="Group" msg="必须选定一个省份" > Step 5:限制多选按钮组的选中个数 运动<input name="Favorite" value="1" type="checkbox"> 上网<input name="Favorite" value="2" type="checkbox"> 听音乐<input name="Favorite" value="3" type="checkbox"> 看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3" msg="必须选择2~3种爱好">
属性: dataType="Require | Chinese | English | Number | Integer | Double | Email | Url | Phone | Mobile | Currency | Zip | IdCard | QQ | Date | SafeString | Repeat | Compare | Range | Limit | LimitB | Group | Custom" max="int" min="int" msg="string" (Required) operator="NotEqual | GreaterThan | GreaterThanEqual | LessThan | LessThanEqual | Equal" (only if dataType="Compare") require="true | false" to="sting | int" (Only if dataType="Repeat" || "Compare") format="ymd | dmy" (Only if dataType="Date") regexp="object" (Required when dateType="Customer")
<script> /************************************************* Validator v1.01 code by 我佛山人 wfsr@cunite.com http://www.cunite.com *************************************************/ Validator = { Require : /.+/, Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/, Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/, Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/, IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/, Currency : /^\d+(\.\d+)?$/, Number : /^\d+$/, Zip : /^[1-9]\d{5}$/, QQ : /^[1-9]\d{4,8}$/, Integer : /^[-\+]?\d+$/, Double : /^[-\+]?\d+(\.\d+)?$/, English : /^[A-Za-z]+$/, Chinese : /^[\u0391-\uFFE5]+$/, UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/, IsSafe : function(str){return !this.UnSafe.test(str);}, SafeString : "this.IsSafe(value)", Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))", LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))", Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))", Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value", Range : "getAttribute('min') < value && value < getAttribute('max')", Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))", Custom : "this.Exec(value, getAttribute('regexp'))", Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))", ErrorItem : [document.forms[0]], ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"], Validate : function(theForm, mode){ var obj = theForm || event.srcElement; var count = obj.elements.length; this.ErrorMessage.length = 1; this.ErrorItem.length = 1; this.ErrorItem[0] = obj; for(var i=0;i<count;i++){ with(obj.elements[i]){ var _dataType = getAttribute("dataType"); if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue; this.ClearState(obj.elements[i]); if(getAttribute("require") == "false" && value == "") continue; switch(_dataType){ case "Date" : case "Repeat" : case "Range" : case "Compare" : case "Custom" : case "Group" : case "Limit" : case "LimitB" : case "SafeString" : if(!eval(this[_dataType])) { this.AddError(i, getAttribute("msg")); } break; default : if(!this[_dataType].test(value)){ this.AddError(i, getAttribute("msg")); } break; } } } if(this.ErrorMessage.length > 1){ mode = mode || 1; var errCount = this.ErrorItem.length; switch(mode){ case 2 : for(var i=1;i<errCount;i++) this.ErrorItem[i].style.color = "red"; case 1 : alert(this.ErrorMessage.join("\n")); this.ErrorItem[1].focus(); break; case 3 : for(var i=1;i<errCount;i++){ try{ var span = document.createElement("SPAN"); span.id = "__ErrorMessagePanel"; span.style.color = "red"; this.ErrorItem[i].parentNode.appendChild(span); span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*"); } catch(e){alert(e.description);} } this.ErrorItem[1].focus(); break; default : alert(this.ErrorMessage.join("\n")); break; } return false; } return true; }, limit : function(len,min, max){ min = min || 0; max = max || Number.MAX_VALUE; return min <= len && len <= max; }, LenB : function(str){ return str.replace(/[^\x00-\xff]/g,"**").length; }, ClearState : function(elem){ with(elem){ if(style.color == "red") style.color = ""; var lastNode = parentNode.childNodes[parentNode.childNodes.length-1]; if(lastNode.id == "__ErrorMessagePanel") parentNode.removeChild(lastNode); } }, AddError : function(index, str){ this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index]; this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str; }, Exec : function(op, reg){ return new RegExp(reg,"g").test(op); }, compare : function(op1,operator,op2){ switch (operator) { case "NotEqual": return (op1 != op2); case "GreaterThan": return (op1 > op2); case "GreaterThanEqual": return (op1 >= op2); case "LessThan": return (op1 < op2); case "LessThanEqual": return (op1 <= op2); default: return (op1 == op2); } }, MustChecked : function(name, min, max){ var groups = document.getElementsByName(name); var hasChecked = 0; min = min || 1; max = max || groups.length; for(var i=groups.length-1;i>=0;i--) if(groups[i].checked) hasChecked++; return min <= hasChecked && hasChecked <= max; }, IsDate : function(op, formatString){ formatString = formatString || "ymd"; var m, year, month, day; switch(formatString){ case "ymd" : m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$ ")); if(m == null ) return false; day = m[6]; month = m[5]--; year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10)); break; case "dmy" : m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$ ")); if(m == null ) return false; day = m[1]; month = m[3]--; year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10)); break; default : break; } if(!parseInt(month)) return false; month = month==12 ?0:month; var date = new Date(year, month, day); return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()); function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;} } } </script>
Ajax 基于以下的技术: standards-based presentation using XHTML and CSS; dynamic display and interaction using the Document Object Model; data interchange and manipulation using XML and XSLT; asynchronous data retrieval using XMLHttpRequest; and JavaScript binding everything together.
这说明,Ajax 本身虽然没有标准,但是 Ajax 基于以下的 Web 标准: XHTML/CSS/DOM/XML/XSLT/JavaScript(ECMAScript),还有一个 XMLHttpRequest 目前正在进行标准化。 这些基于 Web 标准的技术目前都已经很成熟了,Ajax 是所有这些技术的集合,因此 Ajax 并没有必要再发明一个新的标准。
来源:www.javajia.com
笔者使用Eclipse有些时日了,从Eclipse2.0使用到现在,今天从 http://www.eclipse.org 上下载了最新版的Eclipse3.1,使用之后犹感它的强大,Eclipse在平时的工作中给笔者带来了非常的方便,更兼 如此今天 使用Eclipse3.1后更感觉它的得心和应手,使人耳目一新,因此笔记将它的新特性及使用后感写出来。希望 Eclipse能给更多的JAVA和C开发者带来工作中的方便。
一、新特性
1.速度更快,效率更高。我们打开Eclipse3.1一看,包括启动,开发的速度都 比3.0快很多了,我大约测试一下,同一个环境下,比3.0启动快了几十 秒。 2.组件功能更强大,并带有非常强大图形编辑功能,支持可视化的Applet,Swing,AWT等图形组件的开发。 3.支持EJB3.0. 4.支持UML2.0,并带有UML2.0模型编辑器。 5.带有商业智能的报表项目和报表开发。 6.支持新版的AOP插件用于可视化的开发AOP应用程序和调试AOP的应用程序。 7.不像3.0一定需要JDK5.0的JRE,它只需要JDK1.4.1以上就可以了。二、各插件介绍 1. JDT(Java Development Tools):Java设计工具,最新版3.1RC4,需求Eclipse3.1支持. 2. PDE(Plugin Development Environment):插件设计环境,用于设计自定义插件,最新版3.1RC4,需求Eclipse3.1支持 3. Platform: Eclipse的核心运行平台,目前最新版3.1. 4. C/C++ IDE: 一看就知道,用于设计C/C++项目。 5. EMF(Eclipse Modeling Framework):Eclipse模型框架,目前最新版2.1.0,支持 Eclipse3.1及更新版 6. GEF (Graphical Editor Framework):图形编辑框架,用于辅助图形设计,目前最新版 3.1RC4,支持Eclipse3.1. 7. UML2: UML编辑器,最新版1.1RC4,支持Eclipse3.1,需求EMF2.1RC1 8. VE(Visual Editor):可视化图形编辑组件,用于提供AWT/SWT/Swing的图形编辑,最新版1.1M2,支持Eclipse3.1 9. J2EE Standard Tools:用于设计J2EE应用程序的插件,最新版1.0M5,支持Eclipse3.1. 10. WST - Web Standards Tools: 用于设计Web应用程序的插件,最新版1.0M5,支持Eclipse3.1. 11. Eclipse Test and Performance Tools Platform:用于调试,单元测试和测试项目的插件。 12. Business Intelligence and Reporting Tools (BIRT):商业智能和商业报表开发插件,它包括Chart Engine(图形引擎),Report Framework(报表框架),Runtime ENV(运行时环境)。 13. AJDT - AspectJ Development Tools:用于开发AOP(面向方面编程)的开发ECLIPSE插件。 14. AspectJ: 用于开发AOP的开发环境。 15. CME - Concern Manipulation Environment:用于开发AOP的一组可视化工具插件。三、下载和安装 1.下载,从Eclipse的网站 http://www.eclipse.org/downloads 下载上述插件。并解压压缩。 2.安装有多种方法,我推荐用Eclipse环境中Help菜单中的安装并更新。 (1)将解压后的Eclipse-sdk-platform-win32-3.1目录挎贝一个你要做为安装的目录如C:\ (2)将JDK1.4.1及以上的JDK的JRE挎贝到eclipse.exe所在的目录。 (3)点击eclipse.exe运行,启动eclipse (4)我们发现非常快的速度就启动了eclipse3.1,进入它一个欢迎界面。 (5)我们选择Help/SoftWare Update/Search and Installer菜单,选择。 (6)依提示一个个完成安装。四、总结 Eclipse是一款免费的IDE,支持JAVA和C/C++开发,非常方便与快捷,有强大而又灵活扩展的插件功能,目前Borland也加入该社团的开 发,因此我们相信eclipse将成为IDE 的饺饺者了。
-----------------------------------
附:在Eclipse3.1中比较重要的插件
最大的一个项目就是WTP(Web Tools Platform web工具平台),它预计在七月底发布新的版本。WTP现在拥有两个子项目,分别是:WST和JST。WST是Web Standard Tools的缩写,它为Web应用程序开发提供了公共的底层基础结构,并且为大量的web语言,如:HTML/XHMTL, CSS , JavaScript, Web services, SQL , XML, XSD, WSDL, 等等提供编辑工具,校验工具以及文档产生工具。同时能够发布、部署、运行以及调试,启动和停止目标服务器上的应用程序。 JST是J2EE Standard Tools的缩写,它是WST对于J2EE应用程序和服务器的扩展,包括一组简化使用J2EE API(JSP, JCA, JDBC, JTA, JMS, JMX, JNDI, Web services)开发的工具。它在WST的基础上支持J2EE servlet引擎和EJB容器,包括:Apache Tomcat, Apache Geronimo, 和 ObjectWeb Jonas。 另一个重要的项目就是BIRT(Business Intelligence and Reporting Tools),BIRT1.1将于7月发布,基于Eclipse3.1。 还有就是TPTP(Eclipse Test and Performance Tools Platform)项目,也就是Hyades。它在7月将发布4.0版本,此版本将更好的集成JUnit。 VE(Visual Editor)项目,在Eclipse3.1发布后大概两周将发布其1.1版本。 AspectJ项目,新版本的AspectJ将支持J2SE5.0的所有特性,集成AspectWerkz风格的代码,更好的部署(尤其对于基于容器的环境),更快的性能,更广泛的IDE支持。 RCP(Rich Client Platform),伴随着J2SE1.5和新的SWT,Java是否能够重新回到桌面上来?
17/07/2006
这几天为了fix一个关于验证bug,把js狠狠的研究了一下.
parseInt(string [,radix ])
If the radix is not specified or is specified as 0, JavaScript assumes the following:
If the input string begins with "0x", the radix is 16 (hexadecimal).
If the input string begins with "0", the radix is 8 (octal).
If the input string begins with any other value, the radix is 10 (decimal).
The following 例子 all return 15:
parseInt("F", 16) parseInt("17", 8) parseInt("15", 10) parseInt(15.99, 10) parseInt("FXX123", 16) parseInt("1111", 2) parseInt("15*3", 10)
ps:parseInt("08",10)=8;parseInt("08")=0;
关于日期的比较
var date1 = new Date("2006","08","08");//实际日期其实是2006-9-8
var date2 = new Date("2006","08","09");
if(date1>date2){return "great";}
else if(date1<date2){return "less";}
else{return "equal";}
如果是要和当前日期比较
var today = new Date();
var current = new Date(today.getYear(),today.getMonth(),today.getDate());
//getMonth() 属于0~11
then compare date1 to current.
正则表达式语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
这里有一些可能会遇到的正则表达式示例:
Visual Basic VBScript 匹配 Scripting Edition
/^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一 个连字符以及一个5位数字组成。
/<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一个 HTML 标记。
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后 向引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’ 匹配一个换行符。序列 ’\\’ 匹配 "\" 而 "\(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以 及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 "Bob" 中的 ’o’,但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 "Bob" 中的 ’o’,但能匹配 "foooood" 中的所有 o。’o{1,}’ 等价于 ’o+’。’o{0,}’ 则等价于 ’o*’。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹 配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个o。 ’o{0,1}’等价于’o?’。请注意在逗号和两个数之间不能有空格
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的 匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜 索的字符串。例如,对于字符串 "oooo",’o+?’ 将匹配单个 "o",而 ’o+’ 将匹配所有 ’o’。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任 何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在 Visual Basic Scripting Edition 中则使用 $0…$9 属性。要 匹配圆括号字符,请使用 ’\(’ 或 ’\)’。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹 配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合 一个模式的各个部分是很有用。例如, ’industr(?:y|ies) 就 是一个比 ’industry|industries’ 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符 串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后 使用。例如,’Windows (?=95|98|NT|2000)’ 能匹配"Windows 2000"中的"Windows",但不能匹配"Windows3 .1"中"Windows"。 预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹 配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之 后开始。
(?!pattern) 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹 配,也就是说,该匹配不需要获取供以后使用。例如’Windows (?!95|98|NT|2000)’ 能匹配 "Windows 3.1" 中的 "Windows", 但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字 符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开 始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 x 或 y。例如,’z|food’ 能匹配 "z" 或 "food"。’(z|f) ood’ 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, ’[abc]’ 可以 匹配 "plain" 中的 ’a’。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, ’[^abc]’ 可以 匹配 "plain" 中的’p’。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,’[a-z]’ 可以匹 配 ’a’ 到 ’z’ 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如, ’[^a-z]’ 可以匹配任何不在 ’a’ 到 ’z’ 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ’er\b’ 可以匹配"never" 中的 ’er’,但不能匹配 "verb" 中 的 ’er’。
\B 匹配非单词边界。’er\B’ 能匹配 "verb" 中的 ’er’,但不能匹 配 "never" 中的 ’er’。
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或 回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一 个原义的 ’c’ 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确 定的两个数字长。例如, ’\x41’ 匹配 "A"。’\x041’ 则等价 于 ’\x04’ & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。 例如,’(.)\1’ 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制 数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有 is preceded by at least nm 个获取得子表达式,则 nm 为后 向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文 字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为 八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0- 7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字 符。例如, \u00A9 匹配版权符号 (?)。
C:\Program Files\ATI Technologies\ATI Control Panel\". 一般不需要 Ati2xxxx.exe For ATI video cards. System Tray access to display mode changing, 一般不需要 AGRSMMSG agrsmmsg.exe is the SoftModem Messaging Applet for your AMR modem. 一般不需要 BluetoothAuthenticationAgentAssociated with a Bluetooth adapter. 一般不需要 BMMGAG Displays a battery gauge icon in the Taskbar (not the System Tray). Provides shortcuts to IBM's proprietary power saving settings and to a battery information window. 建议保留 BMMLREFBattery Manager for IBM ThinkPad laptops 建议保留 BMMMONWND IBM Battery Information 一般不需要 EXSHOW95.EXESupport software for some of the Kensington mice. Provides access to extra features like those available with enhanced Logitech and MS devices 一般不需要 QCWLIconUsed by IBM Thinkpad laptops with built-in wireless card (802.11). System Tray icon that provides a shortcut to "Wireless Connection Status" and allows to turn WL on and off 一般不需要 S3TRAY2 S3 display configuration taskbar utility for S3 chipset based graphics cards. Can be run from Start-> Settings -> Control Panel -> Display一般不需要 EZEJMNAP ezejmnap.exe is component of the ThinkPad EasyEject Utility,It manages to devices connected to your ThinkPad and makes it easier to disconnect multiple devices from your system. 一般不需要 SynTPEnh syntpenh.exe is a process installed alongside the Synaptics TouchPad for laptop computer touchpads. Provides additional configurations and support, and is essential on some machines for the functioning of this input device. 建议保留 SynTPLpr Syntplpr.exe is called Synaptics touchpad driver helper, it is a TouchPad Driver Helper Application that is essential for touchpad to work properly. 建议保留 (注:以上两个进程都是关于触摸屏的,其中有一个关闭之后,无法屏蔽“触摸屏”,另一个关闭之后就没有这个问题,我记不清楚了,大家自己试试) TP4EX tp4ex.exe is a process from IBM providing accessibility options for an IBM TrackPoint.一般不需要 TPHKMGR It allows the configuration of the FN keys your IBM Thinkpad laptop. 建议保留 TPHOTKEY (TPHKMGR) Activates "ThinkPad Help" when the "Thinkpad key" is pressed on an IBM ThinkPad laptop. Also activates the audio buttons (volume up/down, mute) on models such as the Thinkpad T30建议保留 TPKMAPHELPERIBM ThinkPad Help process 一般不需要 TpShocksResponsible for controlling the IBM Hard Drive Active Protection system found on newer models of IBM Thinkpads, including T41, T42, X40, R50, and R51. 建议保留 ThinkPad 系列本本启动项(MSCONIG)详解 最近在优化本本,参照偶的R50本本翻译了一些本本启动常见的启动项解释,网友可在自己机上开始->运行->msconfig,在启动选项卡可以看到下面类似内容,可通过把项目前的选择清除禁用以达到提升系统启动速度.大都是TP的内容。 操作建议说明: ? "Y" – 正常启动项,应跳过允许其启动 ? "N" – 非必须启动项 – 一般都可以从开始程序组里手动启动 ? "U" – 用户选择项 – 取决于用户个人喜好 ? "X" – 完全没用的 – 常常是病毒,间谍软件,广告和资源跟踪软件等。 Y SynTPLpr syntplpr.exe UltraNav 定位设备驱动辅助. 是使触控板等设备可用的必要程序。 U SynTPEnh syntpenh.exe 显示UltraNav 定位设备图标并可启动UltraNav 定位设备设置向导 U SNDMon SNDMon.exe 赛门铁克软件升级项,可手动执行的。 U Symantec NetDriver Monitor SNDMon.exe 同上,赛门铁克软件升级项,可手动执行的。 U SoundMAXPnP SMax4PNP.exe SoundMax集成声卡程序,用于自定义声音,如音效和环境等。 U ctfmon ctfmon.exe CTFMon与Office XP里的语言/选择输入服务有关. 这个你关不了的,因为只要Office XP相关软件启动它又恢复回启动项了。 Y ccApp ccApp.exe 诺顿病毒软件的. 如果没有启动就无法自动保护和检查邮件了。 Y AGRSMMSG AGRSMMSG.exe IBM AMR 调制解调器驱动 U BMMLREF BMMLREF.EXE IBM本本的电池管理 U BMMGAG Rundll32 PWRMONIT.DLL, StartPwrMonitor 显示电池图标在任务栏(而非系统栏), 提供设定电源管理模式的快捷方式和显示电池信息。 U BlueToothAuthentication Agent RunDLL32.exe irprops.cpl, BluetoothAuthenticationAgent 蓝牙软件相关,位于红外端口控制面板项 N EzEjMnAp EzEjMnAp.exe 在开始->程序里就有啦, 是管理插拔EasyEject Utility连接外设的。 U gcasServ gcasServ.exe 就是微软的 Antispyware 反间谍软件 N MSPY2002 ImScInst.exe 微软IME,可在IE,Outlook和Word日/中文翻译 Y TpShocks TpShocks.exe IBM的硬盘动态保护系统, 包含于T41, T42, X40, R50, and R51等型号本本。 本本的好东东,可别禁了。 U TpHotKey TPHKMGR.EXE 当按下 "Access IBM"键时可激活 "ThinkPad Help" , 同时也可激活声音按钮,象Thinkpad T30型号的 U TP4EX tp4ex.exe 可提升小红点性能 U TPKMAPHELPER TpKmapAp.exe IBM的keyboard Customizer Utility(定制键盘设置)的帮助信息 U TpKmapMn TpKmapMn.exe 提供特殊组合功能键定制,这个在开始->程序里就有啦。 N PHIME2002ASync TINTSETP.EXE 微软IME,可在IE,Outlook和Word日/中文翻译 Y UrlLstCk UrlLstCk.exe 是诺顿安全特警软件的,网址检查列表,应该不禁的。 N PRONoMgr.exe PRONoMgr.exe 用于启动系统栏英特尔PRO系列网卡对话框,没什么用 U QCTRAY Qctray.exe 在系统栏显示图标,用于提供"IBM Access Connections"向导以便更改网络环境。和只提供 无线网络相关的QCWLIcon不同 U QCWLICON Qcwlicon.exe 用于有内置无线网卡的TP(802.11).提供显示无线连接状态(如信号强弱)并允许开关无线连线的系统栏图标 N S3TRAY S3Tray.exe S3 显卡设置. 一样可以从控制面板里"显示"运行的 ? s3tray2 s3tray2.exe 大概和S3TRAY一样吧?
23/11/2005
英文原版图书下载ftp及帐号密码
ftp://www.netyi.net
帐号:enbook 密码:chinanetyi