小小

IT
数据加载中……

2010年2月24日

ORACLE中字符串split的一种方法

一种方法是用函数:这里转帖网上摘抄的一个函数

  CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);

  CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)

  RETURN str_split

  PIPELINED

  AS

  v_length   NUMBER := LENGTH(p_string);

  v_start    NUMBER := 1;

  v_index    NUMBER;

  BEGIN

  WHILE(v_start <= v_length)

  LOOP

  v_index := INSTR(p_string, p_delimiter, v_start);

  IF v_index = 0

  THEN

  PIPE ROW(SUBSTR(p_string, v_start));

  v_start := v_length + 1;

  ELSE

  PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));

  v_start := v_index + 1;

  END IF;

  END LOOP;

  RETURN;

  END splitstr;

  这里提供另外一种方法,tbw利用oracle的正则相关函数实现:

  select dbms_lob.substr(regexp_substr('abc,def,ggg,1,2,3,4,5', '[^,]+', 1, x.n)) as player_guid

  from dual a, (select rownum n from dual connect by rownum < 100) x

  这里利用了函数 regexp_substr和connect by

  其中rownum < 100 会连接限制split的次数 '[^,]+'为split拆分的正则表达式,这里为【,】逗号

  上面sql语句结果是:

  abc

  def

  ggg

  1

  2

  3

  4

  5

posted @ 2010-02-24 05:22 小小it 阅读(3162) | 评论 (0)编辑 收藏
sql语句实现循环添加1000个数据

select * from ausertable order by userid;

  commit;  //执行 结束

  1:最近刚开始用oracle 数据库,很多东西都不怎么懂,要在tbw账号表添加 1000个账号,找了一些资料,经过测试可以使用,开始 我吧语法 都跟SqlServer  里面的混了,花了一个上午的时间,下面就是测试的数据的代码:特别注意的是:'01'||to_char(i)这里 一直meiyo

  DECLARE

  i number:=0;

  BEGIN

  for i in 1..100 loop

  insert into AUSERTABLE(USERID,USERPID,USERNAME)

  values('01'||to_char(i),'8','武汉');

  dbms_output.put_line(i);

  end loop;

  END;

posted @ 2010-02-24 05:21 小小it 阅读(847) | 评论 (0)编辑 收藏

2010年2月13日

教你如何Oracle数据导入

学习Oracle时,你可能会遇到Oracle数据导入问题,这里将介绍Oracle数据导入问题的解决方法,在这里拿出来和大家分享一下。Oracle数据导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

  1. 获取帮助

  imp help=y

  2. 导入一个完整数据库

  imp system/manager file=bible_db log=dible_db full=y ignore=y

  3. 导入一个或一组指定用户所属的全部表、索引和其他对象

  imp system/manager file=seapark log=seapark fromuser=seapark imp

  system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

  4. 将一个用户所属的数据导入另一个用户

  imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

  imp system/manager file=tank log=tank fromuser=(seapark,amy)

  touser=(seapark1, amy1)

  5. 导入一个表

  imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

  6. 从多个文件导入

  imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

  log=paycheck, filesize=1G full=y

  7. 使用参数文件

  imp system/manager parfile=bible_tables.par

  Import the sample tables used for the Oracle8i Database Administrator's

  Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

  8. 增量导入

  imp system./manager inctype= RECTORE FULL=Y FILE=A

  Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
转载:http://www.mengbu.com/  地址:http://www.mengbu.com/news/56/

posted @ 2010-02-13 01:58 小小it 阅读(655) | 评论 (0)编辑 收藏

2010年2月4日

iis rewrite 规则收集整理 精华 推荐!

转载请注明来源:枫子整理并发布于:http://www.imfeng.com/iis-rewrite-rules-collect-isapi-rewrite/

二级域名:
RewriteCond Host: (?!/.|www|ww)(.*).gongluela.com
RewriteRule (.*) http/://www.gongluela.com/$1$2 [I,R]

防盗链:
ISAPI_Rewrite的httpd.ini内容写的是下面内容,如果你也遇到盗链的困扰,建议可以参考一下:

RewriteCond Host: (.+)
RewriteCond Referer: (?!http://(?:www\.gongluela\.com|www\.imfeng\.com|www\.goboyo\.com|www\.soso\.com|www\.google\.com|cache\.baidu\.com)).+
RewriteRule .*\.(?:jpg|kmz|kml|zip) /block.gif [I,O]

注释:第二行里面的域名是允许链接图片的网站列表,目前我允许我自己的两个站和另外bloglines、zhuaxia、google、baidu这四个网站引用我站文件,其他网站的引用被禁止。

  第三行是禁止引用的文件类型,包括jpg图片、Google Earth的kmz和kml、zip文件。当然,还可以增加其他类型,比如gif、rar等,因为我站没有那些文件,所以没有添加上去。

下面是转载的一点文章,特转给帅哥看的。

发这个帮助文件是因为在给朋友设置主机的时候发现他们的ISAPI Rewrite的设置都有些不正确,有些甚至阻碍了站点的正常运行。就把官方自带的英文帮助粗略的翻译了一下。大家可以自由使用和转载。但转载时如果你愿意请注明是 蓝色 翻译的版本。

===================
ISAPI Rewrite 配置简介:

在NT/2000/XP和2003平台上,ISAPI Rewrite在系统帐户下射入INETINFO进程与 IIS 以共存模式过滤器运行。所以系统帐户应该给予对ISAPI- REWIRITE DLLS Internet匿名访问组 可读可执行权限 和所有的 HTTPD。INI 文件可读权限,还应该给予系统帐户对于所有包括 HTTPD。INI 文件的文件夹的可写权限,这将允许产生 HTTP。 PARSE。ERRORS 日志文件,来记录配置文件语法错误。对于PROXY模块也需要额外的权限,因为它将运行于连接池或HIGH-ISPLATED 应用模式,IIS帐户共享池和HIGH-ISOLATION池应被给予对RWHELPERE。DLL的可读权限。缺省情况下IWAM-《计算机名》被用于所有的池,在相应的COM+应用设置中应借助COM+ADMINISTRATION MMC SNAP-IN建立池帐户

配置文件格式化:

配置文件分为两种: GLOBAL(服务器全局模式)和 INDIVIDUAL(站点独立设置模式)文件,GLOBAL(服务器端全局模式)配置文件应该被放在ISAPI-REWRITE 安装目录中,名为 httpd.ini 。这个文件可以通过开始菜单的快捷方式访问和配置,这个文件里面的映射规则为全局规则,将针对所有站点起效。INDIVIDUAL(站点独立设置模式)配置文件应该被放在虚拟站点的根目录内,也被命名为httpd.ini文件,这里面应该放置针对站点的映射配置设置,只针对被放置的虚拟站点有效。两种类型的 httpd.ini 都是标准的windows ini 文件。所有的映射规则应该被放置在 [ISAPI_Rewrite] 之后。之前的文件文本将被忽略。
HTTPD.INI文件示例

[ISAPI_Rewrite]

# This is a comment

# 300 = 5 minutes

CacheClockRate 300

RepeatLimit 20

# 设置其他人没有下载 httpd.ini 和 httpd.parse.errors 文件的权限

RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O]

# Block external access to the Helper ISAPI Extension

RewriteRule .*\.isrwhlp / [F,I,O]

# 配置规则

RewriteCond Host: (.+)

RewriteCond 指令

Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]

这一指令定义一个条件规则,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前预行RewriteCond指令,后面的规则只有它的,模式匹配URI的当前状态并且额外的条件也被应用才会被应用。

TestVerb

Specifies verb that will be matched against regular expression.

特别定义的动词匹配规定的表达式

TestVerb=(URL | METHOD | VERSION | HTTPHeaderName: | %ServerVariable) where:

URL – returns Request-URI of client request as described in RFC 2068 (HTTP 1.1);

返回客户端在RFC2068中描述的需求的Request-URI

METHOD – returns HTTP method of client request (OPTIONS, GET, HEAD, POST, PUT, Delete or TRACE);

返回客户端需求(OPTIONS, GET, HEAD, POST, PUT, Delete or TRACE)的HTTP方法

VERSION – returns HTTP version;

返回HTTP版本

HTTPHeaderName – returns value of the specified HTTP header. HTTPHeaderName can be any valid HTTP header name. Header names should include the trailing colon “:”. If specified header does not exists in a client’s request TestVerb is treated as empty string.

返回特定义的HTTP头文件的值

HTTPHeaderName =

Accept:

Accept-Charset:

Accept-Encoding:

Accept-Language:

Authorization:

Cookie:

From:

Host:

If-Modified-Since:

If-Match:

If-None-Match:

If-Range:

If-Unmodified-Since:

Max-Forwards:

Proxy-Authorization:

Range:

Referer:

User-Agent:

Any-Custom-Header

得到更多的关于HTTP头文件的和他们的值的信息参考RFC2068

ServerVariable 返回特定义的服务器变量的值 。例如服务器端口,全部服务器变量列表应在IIS文档中建立,变量名应用%符预定;

CondPattern

The regular expression to match TestVerb

规则表达式匹配TestVerb

[Flags]

Flags is a comma-separated list of the following flags:

O (nOrmalize)

Normalizes string before processing. Normalization includes removing of an URL-encoding, illegal characters, etc. This flag is useful with URLs and URL-encoded headers

RewriteRule 指令

Syntax: RewriteRule Pattern FormatString [Flags]

这个指令可以不止发生一次,每个指令定义一个单独的重写规则,这些规则的定义命令很重要,因为这个命令在应用运行时规则是有用途的

I (ignore case)

不管大小写强行指定字符匹配(http://www.chnjc.com/),这个FLAG影响RewriteRule指令和相应的RewriteCond 指令

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

P (force proxy)

强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,必须确认代理字符串是一个有效的URI包括协议主机等等否则代理将返回错误

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CL (Case Lower)

小写

CU (Case Upper)

大写

RewriteHeader directive

Syntax: RewriteHeader HeaderName Pattern FormatString [Flags]

这个指令是RewriteRule的更概括化变种,它不仅重写URL的客户端需求部分,而且重写HTTP头,这个指令不仅用于重写。生成,删除任何HTTP头,甚至改变客户端请求的方法

HeaderName

指定将被重写的客户头(http://www.yaopinwang.org/),可取的值与 RewriteCond 指令中TestVerb参数相同

Pattern

限定规则表达式以匹配Request-URI,

FormatString

限定将生成新的URI的FormatString

[Flags]

是一个下列FLAGS的命令分隔列表

I (ignore case)

不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CL (Case Lower)

小写

CU (Case Upper)

大写

 

要重移动头,FORMAT STRING模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理信息

RewriteHeader User-Agent: .* $0

并且这一规则将把OLD-URL HEADER 加入请求中。

RewriteCond URL (.*)RewriteHeader Old-URL: ^$ $1

最后一个例子将通过改变请求方法定向所有的WEBDAV请求到/WEBDAV。ASP

RewriteCond METHOD OPTIONS

RewriteRule (.*) /webdav.asp?$1

RewriteHeader METHOD OPTIONS GET

RewriteProxy directive

Syntax: RewriteProxy Pattern FormatString [Flags]

强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,这将允许IIS作为代理服务器并且重路由到其他站点和服务器

Pattern

限定规则表达式以匹配Request-URI,

FormatString

限定将生成新的URI的FormatString

[Flags]

是一个下列FLAGS的命令分隔列表

D (Delegate security)

代理模式将试图以当前假冒的用户资格登陆远程服务器,

C (use Credentials)

代理模式将试图一在URL或基本授权头文件中指定的资格登陆远程服务器,用这个标记你可以使用http://user:password@host.com/path/ syntax 作为URL

F (Follow redirects)

缺省情况下ISAPI_Rewrite 将试图将MAP远程服务器返回的重定向指令到本地服务器命名空间,如果远程服务器返回重定向点到那台服务器其他的某个位置,ISAPI_Rewrite 将修改这一重定向指令指向本服务器名,这将避免用户看到真实(内部)服务器名称

使用F标记强制代理模式内部跟踪远程服务器返回的重定向指令,使用这个标记如果你根本不需要接受远程服务器的重定向指令,在WINHTTP设置中有重定向限制以避免远程重定向循环

I (ignore case)

不管大小写强行指定字符匹配

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CacheClockRate directive

Syntax: CacheClockRate Interval

这个指令只在GLOBAL配置内容中出现,如果这个指令在SITE-LEVEL内容中出现将被忽略并把错误信息写入httpd.parse.errors 文件

ISAPI_Rewrite caches每次在第一次加载时配置(http://www.mshuba.com/),使用这个指令你可以限定当一个特定站点从缓存中清理的不活动周期,把这个参数设置的足够大你可以强制 ISAPI_Rewrite 永不清理缓存,记住任何配置文件的改变将在下次请求后立即更新而忽略这个周期

Interval

限定特定配置被清理出缓存的不作为时间(以秒计),缺省值3600(1小时)

EnableConfig and DisableConfig directives

Syntax:

EnableConfig [SiteID|"Site name"]

DisableConfig [SiteID|"Site name"]

对所选站点激活或不激活SITE-LEVEL配置或者改变缺省配置,缺省SITE-LEVEL配置不激活,这个指令只出现在GLOBAL配置内容中

SiteID

Numeric metabase identifier of a site

Site name

Name of the site as it appears in the IIS console

不用参数使用这个命令将改变缺省配置到ENABLE/DISABLE配置进程

例子

下面例子将使配置仅作用于ID=1(典型是缺省站点)名字是MY SITE的站点

DisableConfig

EnableConfig 1

EnableConfig”My site”

下边例子将激活名称为SOMESITE配置因为它分割设置重载了缺省设置

EnableConfig”Some site”

DisableConfig

EnableRewrite and DisableRewrite directives

Syntax:

EnableRewrite [SiteID|"Site name"]

DisableRewrite [SiteID|"Site name"]

对所选站点激活或不激活重写或者改变缺省配置,缺省重写配置激活,这个指令只出现在GLOBAL配置内容中

SiteID

Numeric metabase identifier of a site

Site name

Name of the site as it appears in the IIS console.

不使用参数这个命令将全部激活或者不激活

RepeatLimit directive

Syntax: RepeatLimit Limit

这个指令可以出现在GLOBAL和SITE-LEVEL配置文件中,如果出现在GLOBAL配置文件中竟改变GLOBAL对于所有站点的限制,出现在SITE-LEVEL配置中竟只改变对于这个站点的限制并且这个限制不能超过GLOBAL限制

ISAPI_Rewrite在实行规则时允许循环,这个指令允许限制最大可能循环的数量,可以设置为0或1而不支持循环,

LIMIT

限制最大循环数量,缺省32

RFStyle directive

Syntax: RFStyle Old | New

Configuration Utility

ISAPI_Rewrite Full包括配置功用(可以在 ISAPI_Rewrite 程序组中启动),它允许你浏览测试状态并输入注册码(如果在安装过程中没有注册),并且调整部分与代理模式操作相关的产品功能,UTILITY是由三个页面组成的属性表

Trial page允许你浏览TIRAL状态并输入注册码(如果在安装过程中没有注册)

Settings page

这页包含对下列参数的编辑框

Helper URL

这个参数影响过滤器和代理模块之间的联系方式,它即可以是以点做前缀的文件扩展名(如 .isrwhlp)也可以是绝对路径,

第一种情况下扩展名将追加在初始请求URI上并且代理模块竟通过SCRIPT MAP激活,缺省扩展名isrwhlp在安装进程中加在global script map 中,如果你改变这个扩展名或者你的应用不继承global script map 设置你应该手动添加向script map 所需求的入口。这个应该有如下参数

Executable: An absolute path to the rwhelper.dll in the short form

Extension: Desired extension (.isrwhlp is default)

Verbs radio button: All Verbs

Script engine checkbox: Checked

Check that file exists checkbox: Unchecked

我们已经创建了一个WSH script proxycfg.vbs ,可以简单在一个a script maps中注册,她位于安装文件夹并且可以在命令行一如下方式运行

cscript proxycfg.vbs [-r] [MetabasePath]

Optional -r 强制注册扩展名

Optional MetabasePath parameter allows specification of the first metabase key to process. By default it is “/localhost/W3SVC”.

要在所有现存的 script maps 中注册你可以以如下命令行激活 script

cscript proxycfg.vbs -r

 

第二种情况下你应该提供一个URI作为’Helper URL’的值(http://www.gongluela.com/),你也应该map 一个 ISAPI_Rewrite的安装文件夹作为美意个站点的虚拟文件家

注意:根据顾客反应,IIS5(也许包括IIS4)对长目录名有问题。所以我们强烈推荐使用短目录名

Worker threads limit

这个参数限制在代理扩展线程池中工作线程数,缺省为0意味着这个限制等于处理器数量乘以2

Active threads limit

这个参数限制当前运行线程数,这个数量不可大于”Worker threads limit”. 缺省0意思是等于处理器数量

Queue size 这个参数定义最大请求数量,如果你曾经看到Queue timeout expired” 信息在 the Application event log中你可以增加这个参数

Queue timeout

这个参数定义你在内部请求队列中防止新请求的最大等待时间,如果你曾经看到Queue timeout expired” 信息在 the Application event log中你可以增加这个参数

Connect timeout

以毫秒设定代理模块连接超时

Send timeout

以毫秒设定代理模块发送超时

Receive timeout

以毫秒设定代理模块发送超时

About page.

It contains copyright information and a link to the ISAPI_Rewrite’s web site.

Regular expression syntax

这一部分覆盖了 ISAPI_Rewrite规定的表达句法

Literals

所有字符都是原意除了 “.”, “*”, “?”, “+”, “(”, “)”, “{”, “}”, “[", "]“, “^” and “$”.,这些字符在用“\”处理时是原意,原意指一个字符匹配自身

Wildcard

The dot character “.” matches any single character except null character and newline character

以下为句法

Repeats

A repeat is an expression that is repeated an arbitrary number of times. An expression followed by “*” can be repeated any number of times including zero. An expression followed by “+” can be repeated any number of times, but at least once. An expression followed by “?” may be repeated zero or one times only. When it is necessary to specify the minimum and maximum number of repeats explicitly, the bounds operator “{}” may be used, thus “a{2}” is the letter “a” repeated exactly twice, “a{2,4}” represents the letter “a” repeated between 2 and 4 times, and “a{2,}” represents the letter “a” repeated at least twice with no upper limit. Note that there must be no white-space inside the {}, and there is no upper limit on the values of the lower and upper bounds. All repeat expressions refer to the shortest possible previous sub-expression: a single character; a character set, or a sub-expression grouped with “()” for example.

Examples:

“ba*” will match all of “b”, “ba”, “baaa” etc.

“ba+” will match “ba” or “baaaa” for example but not “b”.

“ba?” will match “b” or “ba”.

“ba{2,4}” will match “baa”, “baaa” and “baaaa”.

Non-greedy repeats

Non-greedy repeats are possible by appending a ‘?’ after the repeat; a non-greedy repeat is one which will match the shortest possible string.

For example to match html tag pairs one could use something like:

“<\s*tagname[^>]*>(.*?)<\s*/tagname\s*>”

In this case $1 will contain the text between the tag pairs, and will be the shortest possible matching string.

Parenthesis

Parentheses serve two purposes, to group items together into a sub-expression, and to mark what generated the match. For example the expression “(ab)*” would match all of the string “ababab”. All sub matches marked by parenthesis can be back referenced using \N or $N syntax. It is permissible for sub-expressions to match null strings. Sub-expressions are indexed from left to right starting from 1, sub-expression 0 is the whole expression.

Non-Marking Parenthesis

Sometimes you need to group sub-expressions with parenthesis, but don’t want the parenthesis to spit out another marked sub-expression, in this case a non-marking parenthesis (?:expression) can be used. For example the following expression creates no sub-expressions:

“(?:abc)*”

Alternatives

Alternatives occur when the expression can match either one sub-expression or another, each alternative is separated by a “|”. Each alternative is the largest possible previous sub-expression; this is the opposite behaviour from repetition operators.

Examples:

“a(b|c)” could match “ab” or “ac”.

“abc|def” could match “abc” or “def”.

Sets

A set is a set of characters that can match any single character that is a member of the set. Sets are delimited by “[" and "]” and can contain literals, character ranges, character classes, collating elements and equivalence classes. Set declarations that start with “^” contain the compliment of the elements that follow.

Examples:

Character literals:

“[abc]” will match either of “a”, “b”, or “c”.

“[^abc] will match any character other than “a”, “b”, or “c”.

Character ranges:

“[a-z]” will match any character in the range “a” to “z”.

“[^A-Z]” will match any character other than those in the range “A” to “Z”.

Character classes

Character classes are denoted using the syntax “[:classname:]” within a set declaration, for example “[[:space:]]” is the set of all whitespace characters. The available character classes are:

alnum Any alpha numeric character.

alpha Any alphabetical character a-z and A-Z. Other characters may also be included depending upon the locale.

blank Any blank character, either a space or a tab(http://www.xbszgs.com/).

cntrl Any control character.

digit Any digit 0-9.

graph Any graphical character.

lower Any lower case character a-z. Other characters may also be included depending upon the locale.

print Any printable character.

punct Any punctuation character.

space Any whitespace character.

upper Any upper case character A-Z. Other characters may also be included depending upon the locale.

xdigit Any hexadecimal digit character, 0-9, a-f and A-F.

word Any word character – all alphanumeric characters plus the underscore.

unicode Any character whose code is greater than 255, this applies to the wide character traits classes only.

There are some shortcuts that can be used in place of the character classes:

\w in place of [:word:]

\s in place of [:space:]

\d in place of [:digit:]

\l in place of [:lower:]

\u in place of [:upper:]

Collating elements

Collating elements take the general form [.tagname.] inside a set declaration, where tagname is either a single character, or a name of a collating element, for example [[.a.]] is equivalent to [a], and [[.comma.]] is equivalent to [,]. ISAPI_Rewrite supports all the standard POSIX collating element names, and in addition the following digraphs: “ae”, “ch”, “ll”, “ss”, “nj”, “dz”, “lj”, each in lower, upper and title case variations. Multi-character collating elements can result in the set matching more than one character, for example [[.ae.]] would match two characters, but note that [^[.ae.]] would only match one character.

Equivalence classes

Equivalenceclassestakethegeneralform[=tagname=] inside a set declaration, where tagname is either a single character, or a name of a collating element, and matches any character that is a member of the same primary equivalence class as the collating element [.tagname.]. An equivalence class is a set of characters that collate the same, a primary equivalence class is a set of characters whose primary sort key are all the same (for example strings are typically collated by character, then by accent, and then by case; the primary sort key then relates to the character, the secondary to the accentation, and the tertiary to the case). If there is no equivalence class corresponding to tagname, then [=tagname=] is exactly the same as [.tagname.].

To include a literal “-” in a set declaration then: make it the first character after the opening “[" or "[^", the endpoint of a range, a collating element, or precede it with an escape character as in "[\-]“. To include a literal “[" or "]” or “^” in a set then make them the endpoint of a range, a collating element, or precede with an escape character.

Line anchors

An anchor is something that matches the null string at the start(http://www.jiamengku.com/) or end of a line: “^” matches the null string at the start of a line, “$” matches the null string at the end of a line.

Back references

A back reference is a reference to a previous sub-expression that has already been matched, the reference is to what the sub-expression matched, not to the expression itself. A back reference consists of the escape character “\” followed by a digit “1″ to “9″, “\1″ refers to the first sub-expression, “\2″ to the second etc. For example the expression “(.*)\1″ matches any string that is repeated about its mid-point for example “abcabc” or “xyzxyz”. A back reference to a sub-expression that did not participate in any match, matches the null string. In ISAPI_Rewrite all back references are global for entire RewriteRule and corresponding RewriteCond directives. Sub matches are numbered up to down and left to right beginning from the first RewriteCond directive of the corresponding RewriteRule directive, if there is one.

Forward Lookahead Asserts

There are two forms of these; one for positive forward lookahead asserts, and one for negative lookahead asserts:

“(?=abc)” matches zero characters only if they are followed by the expression “abc”.

“(?!abc)” matches zero characters only if they are not followed by the expression “abc”.

Word operators

The following operators are provided for compatibility with the GNU regular expression library.

“\w” matches any single character that is a member of the “word” character class, this is identical to the expression “[[:word:]]”.

“\W” matches any single character that is not a member of the “word” character class, this is identical to the expression “[^[:word:]]”.

“\<” matches the null string at the start of a word.

“\>” matches the null string at the end of the word.

“\b” matches the null string at either the start or the end of a word.

“\B” matches a null string within a word.

Escape operator

The escape character “\” has several meanings.

The escape operator may introduce an operator for example: back references, or a word operator.

The escape operator may make the following character normal, for example “\*” represents a literal “*” rather than the repeat operator.

Single character escape sequences:

The following escape sequences are aliases for single characters:

Escape sequence Character code Meaning

\a 0×07 Bell character.

\t 0×09 Tab character.

\v 0×0B Vertical tab.

\e 0×1B ASCII Escape character.

\0dd 0dd An octal character code, where dd is one or more octal digits.

\xXX 0xXX A hexadecimal character code, where XX is one or more hexadecimal digits.

\x{XX} 0xXX A hexadecimal character code, where XX is one or more hexadecimal digits, optionally a unicode character.

\cZ z-@ An ASCII escape sequence control-Z, where Z is any ASCII character greater than or equal to the character code for ‘@’.

Miscellaneous escape sequences:

The following are provided mostly for perl compatibility, but note that there are some differences in the meanings of \l \L \u and \U:

Escape sequence Meaning

\w Equivalent to [[:word:]].

\W Equivalent to [^[:word:]].

\s Equivalent to [[:space:]].

\S Equivalent to [^[:space:]].

\d Equivalent to [[:digit:]].

\D Equivalent to [^[:digit:]].

\l Equivalent to [[:lower:]].

\L Equivalent to [^[:lower:]].

\u Equivalent to [[:upper:]].

\U Equivalent to [^[:upper:]].

\C Any single character, equivalent to ‘.’.

\X Match any Unicode combining character sequence, for example “a\x 0301″ (a letter a with an acute).

\Q The begin quote operator, everything that follows is treated as a literal character until a \E end quote operator is found.

\E The end quote operator, terminates a sequence begun with \Q.

What gets matched?

The regular expression will match the first possible matching string, if more than one string starting at a given location can match then it matches the longest possible string. In cases where their are multiple possible matches all starting at the same location, and all of the same length, then the match chosen is the one with the longest first sub-expression, if that is the same for two or more matches, then the second sub-expression will be examined and so on. Note that ISAPI_Rewrite uses MATCH algorithm. The result is matched only if the expression matches the whole input sequence. For example:

RewriteCond URL ^/somedir/.* #will match any request to somedir directory and subdirectories, while

RewriteCond URL ^/somedir/ #will match only request to the root of the somedir.

Special note about “pathological” regular expressions

ISAPI_Rewrite uses a very powerful regular expressions engine Regex++ written by Dr. John Maddock. But as any real thing it’s not ideal: There exists some “pathological” expressions which may require exponential time for matching; these all involve nested repetition operators, for example attempting to match the expression “(a*a)*b” against N letter a’s requires time proportional to 2N. These expressions can (almost) always be rewritten in such a way as to avoid the problem, for example “(a*a)*b” could be rewritten as “a*b” which requires only time linearly proportional to N to solve. In the general case, non-nested repeat expressions require time proportional to N2, however if the clauses are mutually exclusive then they can be matched in linear time – this is the case with “a*b”, for each character the matcher will either match an “a” or a “b” or fail, where as with “a*a” the matcher can’t tell which branch to take (the first “a” or the second) and so has to try both.

Boost 1.29.0 Regex++ could detect “pathological” regular expressions and terminate theirs matching. When a rule fails ISAPI_Rewrite sends “500 Internal Server error – Rule Failed” status to a client to indicate configuration error. Also the failed rule is disabled to prevent performance losses

Format string syntax

In format strings, all characters are treated as literals except: “(”, “)”, “$”, “\”, “?”, “:”.

To use any of these as literals you must prefix them with the escape character \

The following special sequences are recognized:

Grouping:

Use the parenthesis characters ( and ) to group sub-expressions within the format string, use \( and \) to represent literal ‘(’ and ‘)’.

Sub-expression expansions:

The following perl like expressions expand to a particular matched sub-expression:

$` Expands to all the text from the end of the previous match to the start of the current match, if there was no previous match in the current operation, then everything from the start of the input string to the start of the match.

$’ Expands to all the text from the end of the match to the end of the input string.

$& Expands to all of the current match.

$0 Expands to all of the current match.

$N Expands to the text that matched sub-expression N.

Conditional expressions:

Conditional expressions allow two different format strings to be selected dependent upon whether a sub-expression participated in the match or not:

?Ntrue_expression:false_expression

Executes true_expression if sub-expression N participated in the match, otherwise executes false_expression.

Example: suppose we search for “(while)|(for)” then the format string “?1WHILE:FOR” would output what matched, but in upper case

Escape sequences:

The following escape sequences are also allowed:

\a The bell character.

\f The form feed character.

\n The newline character.

\r The carriage return character.

\t The tab character.

\v A vertical tab character.

\x A hexadecimal character – for example \x0D.

\x{} A possible unicode hexadecimal character – for example \x{1A0}

\cx The ASCII escape character x, for example \c@ is equivalent to escape-@.

\e The ASCII escape character.

\dd An octal character constant, for example \10

Examples例子

Emulating host-header-based virtual sites on a single site

例如你在两个域名注册www.gongluela.comwww.jiamengku.com,现在你可以创建两个不同的站点而使用单一的物理站点。把以下规则加入到你的httpd.ini 文件

[ISAPI_Rewrite]

#Fix missing slash char on folders

RewriteCond Host: (.*)

RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,R]

#Emulate site1

RewriteCond Host: (?:www\.)?site1\.com

RewriteRule (.*) /site1$1 [I,L]

#Emulate site2

RewriteCond Host: (?:www\.)?site2\.com

RewriteRule (.*) /site2$1 [I,L]

现在你可以把你的站点放在/site1 和 /site2 目录中.

或者你可以应用更多的类规则:

[ISAPI_Rewrite]

#Fix missing slash char on folders

RewriteCond Host: (.*)

RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,R]

RewriteCond Host: (www\.)?(.+)

RewriteRule (.*) /$2$3

为站点应该命名目录为 /somesite1.com, /somesite2.info, etc.

Using loops (Next flag) to convert request parameters

假如你希望有物理URL如 http://www.myhost.com/foo.asp?a=A&b=B&c=C 使用请求如 http://www.myhost.com/foo.asp/a/A/b/B/c/C 参数数量可以从两个请求之间变化

至少有两个解决办法。你可以简单的为每一可能的参数数量添加一个分隔规则或者你可以使用一个技术说明如下面的例子

ISAPI_Rewrite]

RewriteRule (.*?\.asp)(\?[^/]*)?/([^/]*)/([^/]*)(.*) $1(?2$2&:\?)$3=$4$5 [NS,I]

这个规则将从请求的URL中抽取一个参数追加在请求字符的末尾并且从头重启规则进程。所以它将循环直到所有参数被移动到适当的位置,或者直到超过RepeatLimit

也存在许多这个规则的变种。但使用不同的分隔字符,例如。使用URLS如http://www.myhost.com/foo.asp~a~A~b~B~c~C 可以应中下面的规则:

ISAPI_Rewrite]

RewriteRule (.*?\.asp)(\?[^~]*)?~([^~]*)~([^~]*)(.*) $1(?2$2&:\?)$3=$4$5 [NS,I]

Running servers behind IIS

假如我们有一个内网服务器运行IIS而几个公司服务器运行其他平台,这些服务器不能从INTERNET直接进入,而只能从我们公司的网络进入,有一个简单的例子可以使用代理标记映射其他服务器到IIS命名空间:

[ISAPI_Rewrite]

RewriteProxy /mappoint(.+) http\://sitedomain$1 [I,U]

Moving sites from UNIX to IIS

这个规则可以帮助你把URL从 /~username 改变到 /username 和从 /file.html 改变到 /file.htm. 这个在你仅仅把你的站从UNIX移动到IIS并且保持搜索引擎和其他外部页面对老页面的连接时是有用的

[ISAPI_Rewrite]

#redirecting to update old links

RewriteRule (.*)\.html $1.htm

RewriteRule /~(.*) http\://myserver/$1 [R]

Moving site location

许多网管问这样的问题:他们要重定向所有的请求到一个新的网络服务器,当你需要建立一个更新的站点取代老的的时候经常出现这样的问题,解决方案是用ISAPI_Rewrite 于老服务器中

[ISAPI_Rewrite]

#redirecting to update old links

RewriteRule (.+) http\://newwebserver$1 [R]

Browser-dependent content

Dynamically generated robots.txt

robots.txt是一个搜索引擎用来发现能不能被索引的文件,但是为一个大站创建一个有许多动态内容的这个文件是很复杂的工作,我们可以写一个robots.asp script

现在使用单一规则生成 robots.txt

[ISAPI_Rewrite]

RewriteRule /robots\.txt /robots.asp

Making search engines to index dynamic pages

站点的内容存储在XML文件中,在服务器上有一个/XMLProcess.asp 文件处理XML文件并返回HTML到最终用户,URLS到文档有如下形式

http://www.mysite.com/XMLProcess.asp?xml=/somdir/somedoc.xml

但是许多公共引擎不能索引此类文档,因为URLS包含问号(文档动态生成),

ISAPI_Rewrite可以完全消除这个问题

[ISAPI_Rewrite]

RewriteRule /doc(.*)\.htm /XMLProcess.asp\?xml=$1.xml

现在使用如同http://www.mysite.com/doc/somedir/somedoc.htm的URL进入文档,搜索引擎将不知道不是somedoc.htm 文件并且内容是动态生成的

Negative expressions (NOT

有时当模式不匹配你需要应用规则,这种情况下你可以使用在规则表达式中称为Forward Lookahead Asserts

例如你需要不使用IE把所有用户移动到别的地点

[ISAPI_Rewrite]

# Redirect all non Internet Explorer users

# to another location

RewriteCond User-Agent: (?!.*MSIE).*

RewriteRule (.*) /nonie$1

Dynamic authentification

例如我们在站点上有一些成员域,我们在这个域上需要密码保护文件而我们不喜欢用BUILT-IN服务器安全,这个情况下可以建立一个ASP脚本(称为proxy.asp),这个脚本将代理所有请求到成员域并且检查请求允许,这里有一个简单的模板你可以放进你自己的授权代码

现在我们要通过配置 ISAPI_Rewrite 通过这个页面代理请求:

[ISAPI_Rewrite]

# Proxy all requests through proxy.asp

RewriteRule /members(.+) /proxy.asp\?http\://mysite.com/members$1

保护图片 防止盗链
Blocking inline-images (stop hot linking

假设我们在http://www.mysite.com/下有些页面调用一些GIF、jpg、png图片,不允许别人盗链引用到他们自己的页面上,因为这样大大增加了服务器流量。
当然我们不能100%保护图片,但我们至少可以在得到浏览器发出的HTTP Referer header的地方限制这种情况,因为这个可以判断是否我们自己的站点调用了我们自己的图片。

[ISAPI_Rewrite]

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|png) /block.gif [I,O]

注:ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com/download/,就是那Lite Version (free)啦。

posted @ 2010-02-04 03:31 小小it 阅读(1242) | 评论 (0)编辑 收藏

2008年10月12日

一路读心情小记

一路读心情小记

转载:小说一路读:http://www.yiludu.cn/

    想起友人说起,他愿意花很多钱去买回一年的青春。我想我并不愿意过多地徘徊于生涩年华之中。我那些已逝的年青时代,于同龄人而言,显得那般无力与苍白。很多时候,我甚至害怕回忆。害怕面对记忆中那个内心填满颓靡的少女,徘徊在无人的十字路口,试图让自己找一个出发点,却跌跌撞撞了好些时候。那些活在自我世界里的时间,把一个本应芬芳的年华,变得萎靡。让我同样想起了生活在北京的一个文友。她把大把大把的青春全耗在了北京郊区租住的小平房里,每天在昏暗的屋内用纤细的指头敲着一个又一个虚构却唯美的生活故事。文字落幕,回到现实生活中的她却得依靠香烟来麻醉自己。而谁都不知道这样一个女人,其实她最大的梦想仅仅是当一个木匠。就像魔杰座唱的那样所以她说自己也是失败的。因为青春的日子过得不着梦想的边际。或许,没法深入到文海中央只能徘徊于潜水湾的所谓的文人们,就只能打着爱好写作的旗号招摇。而在旁人的眼中,这些人其实是疯子。当然,这疯子,也包括我。否则,收录文学怎么会在看了“不繁华的旅途是孤寂且无聊的”这样一句话后,便很不信邪的又给自己制造了一个理想。将来,我要拉着我的王子,背着画板和笔记本去荒芜人烟的燎原跋涉,去幽静古老的小镇徒步,而小镇的街头有流浪歌手在唱着苏打绿的小情歌……
  
  正所谓的理想,应该也就是想想罢了。回到现实生活当中,因受台风的影响,感觉这个城市今年的秋天来得有点早。

posted @ 2008-10-12 04:04 小小it 阅读(138) | 评论 (0)编辑 收藏
两只小羊一点收录文学

两只小羊一点收录文学

转载:收录文学http://www.sluwx.cn/

乡政府响应上级号召搞对口扶贫,党委秘书艾妮左想右想花一百元买了两只小山羊。两只小山羊一公一母,毛茸茸的。艾妮把两只小山羊拴在一条绳上,牵到了包扶的李老汉家。

  李老汉用一种怪怪的眼光看了看爱妮,以为他是用UUSee网络电视呢?无声的接过两只小羊。李老汉并不老,只是胡子长了些相貌老了些,人其实才五十出头。李老汉从来对乡政府的扶贫工作就不配合,但绝不反抗。比方早些年政府号召大家种药,李老汉硬是不种。乡政府工作人员亲自给他种上,李老汉不管不问,后来地荒的成了乱坟冈。再比方说,乡政府号召大家搞袋料香菇,他把柴禾弄好放在院子里,就是不粉碎。不粉碎就装不成袋料,装不成袋料他的任务就完不成。结果政府就免费给他粉碎,并装上了袋。可再来检查时,李老汉的袋料还是原样----李老汉把袋料蒸过了,但就是不点菌。类似这样的事发生在李老汉身上的还有几起。乡政府总结了,李老汉的行为类似于印度独立时的甘地,搞的是不合作运动。

  爱妮包扶李老汉,收录文学还是真动了脑筋的。李老汉总不至于把两只小羊放在圈里活活饿死吧!

  其实李老汉还有几只羊,可就是繁殖不起来。爱妮送李老汉两只羊,这次他没有向以前那样不合作。把两只小羊侍弄的精神焕发,膘肥体壮,子孙成群。李老汉想,这群羊是我的了,我风里来雨里去的,如果爱妮来要羊,就把两只长大了的羊给她。可是,没有过几天,他的想法就发生了变化。为什么给她两只羊?羊是我喂大的还她两只小羊就不错了。可是又过了几天,他的想法又发生了变化,为什么还他两只小羊,他的两只小羊不是我喂,早就死了。

  乡政府离城远,还翻山。艾妮在一次出差时车翻人亡。

  艾妮一死,李老汉开始还有点伤悲。可不久他就高兴起来了一路读着一部小说。爱妮一死,就不会要羊了。

  艾妮的丈夫在一个阳光明媚的早上来到了老李的家。此时的李老汉今非昔比,羊群里的已经一百多头了。艾妮的丈夫递给李老汉一只香烟:“当年爱妮送给你的两只羊,是她自己花钱买的,我想看看那两只小羊……”

  李老汉抽着艾妮丈夫发的黄金叶,拿眼斜瞅着艾妮的丈夫说:“你家艾妮送过我两只羊吗?”

  李老汉干脆脖子一歪:“想要我的羊?没门!就是掏钱也不卖给你!”

  李老汉放出了狗,艾妮的丈夫撒腿就跑,可狗的速度好像比他更快,他只好加快速度……

  后来,乡书记对李老汉说,艾妮的丈夫是来给你的羊圈消毒的,你怎么放狗咬人呢?

posted @ 2008-10-12 04:04 小小it 阅读(163) | 评论 (0)编辑 收藏
国内博客营销是如何的

本来这篇准备写几个博客营销做的比较好的案例,不过欣欣提醒我说除了广告商之外,部分博客的不认真对待是更主要的问题,因此我这里从参与话题广告的博客的角度再谈一谈自己的一些看法。

       在我所见的话题广告文章中,的确有部分用户只是敷衍了事,比如把广告的相关介绍抄上,然后随便写两句无关痛痒的评价了事。我在上一篇文章中强调广告主应该努力去与博客交流与对话,不过前提是建立在博客认真了解并使用相关产品,表达自己独到的见解与观点之后。只有这样,广告主与博客之间的交流与对话才有产生的条件。那怎么成为一个合格的参与话题广告的博客,个人觉得应该注意以下几点:

1、选择自己感兴趣的广告。不用接受一个自己毫不了解的广告然后无病呻吟一番,那样不但你写着不舒服,让你的读者看着也不舒服。

2、认真了解与使用产品。至少你应该看看产品的 FAQ,帮助文档,了解该产品到底有些什么功能与特点,然后试用每一项功能。因为只有这样,你的评论才是有价值的。

3、写文章之前先用搜索看看其他人怎么说。当然这并不是要求每一个博客都有独到的见解,不过当你尽可能多的了解其他人的评论,对自己的评论质量也是有帮助的。

4、按照广告要求完成文章。其实这一点是很多博客忽视的,比如加相关的申明图片和链接,达到字数要求等等,而最终导致文章得不到通过。永远记住,你参与的是一场商业活动,既然参与,你就得遵守游戏规则。

       博客与广告商应该做的我都说到了,那让我们再来看看夹在中间的 Feedsky 做得怎样。前段时间 Feedsky 对所有参与话题广告的博客进行了重新定价并开始收取 50% 的手续费,很多定价降低的博客表达了强烈的不满,特别是那些数据很高,唯独在 Feedsky 中订阅数很少的博客影响最大。

       我在前面提到广告商不要关心博客营销中的点击数据,而要重视与博客的交流与对话。从另一方面讲,博客的各项数据不应该成为对博客定价的唯一标准。广告商需要的是一个典型的用户,有见解的用户,能提供有价值意见的用户,而对产品的传播是次要的。而 Feedsky 应该将博客在每次参与话题广告中的表现加入到定价的考虑因素之内,而且权重要高才行。简单点说,就是写得好的,不管博客的其他数据怎样,定价会越来越高;写得差的,即便博客其他数据高,定价也会调低。而 Feedsky 已经投放了不少的话题广告,相信在这一点上也是有条件做到的。

       我始终都是看好话题广告的,不过这需要在这条关系链上的各方共同完善,哪一个环节出了问题影响都会很大。当然以上不管对广告商、博客还是 Feedsky 提出的意见都是个人不成熟的看法,如有不妥之处,还请大家多多指证。

转载:UUSee下载http://www.uusee5.org.cn/

posted @ 2008-10-12 04:03 小小it 阅读(1046) | 评论 (0)编辑 收藏

2008年9月27日

魔杰座和玫瑰的年华

魔杰座和玫瑰的年华

当少年站在河边,魔杰座河水仿佛流逝的时光。而他看见了一路读http://www.yiludu.cn/)的影子,它们不断被冲刷和更改,直至变成一首首精致的诗风干在岸上潮湿的季雨里。

  当少女站在香樟树下,夏天仿佛她的恋人。而她看见了未来的影子,它们在斑驳的树荫下一直蔓延,直至消散在那渐远的单车和白色的衬衣里。

  对于每一个我所喜欢的歌手,他们的歌都会在我的脑海里形成一种幻觉。水木年华给我的幻觉便是这样的一个男孩和女孩的组合。他和她构成了我们的象征,他们是一幅画,一幅清晰素描着我们青春那水中与树下的往事的图画,让所有人有所念亦有所伤。而在此后不断的深入里,水与木这两种不同的元素便紧紧地在意识里结合,从未有过半点的分离。

  水木年华的歌总是带着很强的画面感,属于干净淳朴的那种,于是所有的歌便成了一个个短小而丰富的故事,短小的是篇幅,丰富的却不仅仅只是一个过程,更有这个过程里的情感。最早接触他们的一首歌是《爱春秋》——“我摘一朵带着露水的玫瑰花/要送给我最爱的她”。这种信手拈来的唯美绝非一个不具备诗人气质的艺术家所能达到。在这里,我更愿意把玫瑰理解成青春的心事,娇嫩而高贵,只配为心爱之人所拥有。正如他们之前的《一生有你》——“多少人曾爱慕你年轻时的容颜,可知谁愿承受岁月无情的变迁”。在那年,水木年华凭借这首歌完美地将叶芝的诗用流行元素加以诠释,也因此唤醒了多数青年内心卡徒酒吧http://www.katu98.cn/)的旧梦。

来源:魔杰座-周杰伦新专辑魔杰座 http://www.imfeng.com/post/mojiezuo.html

posted @ 2008-09-27 03:14 小小it 阅读(140) | 评论 (0)编辑 收藏

2008年9月24日

有助于你编程而立即要做的10件事

中午看到这篇文章,觉得道理的,推荐给大家看看。
很多IT人,都在忙碌着搞代码,却不知道,除了单纯的写代码,还要关注很多相关的东西。不然,你的代码,本身就是一个问题。
转载自:http://www.yiludu.cn/ 

1.升级单元测试

你的编程没有测试?你应当随时进行测试,即TATFT ( testing all the fucking time )。当然你应当选择比仅是单元测试更好的方式。RSpec和Shoulda是两个可以选来使用的工具。

2.试用TDD

既然你在测试,那你就应当记录下这些测试。不要记录代码并用后来的测试覆盖它,而应当是方法的记录。TDD ( Test Drive Development ) 可以使你编出更好的代码,TATFT最重要的基础就是 TDD。进行TATFT并不难,首先你写下你所能做的最简单的测试并运行,观察测试的失败,然后写出执行语句以便使测试通过,不停地重复这样的过程就可以了。

3.自动化部署

自动化是你最好的朋友,想要实现自动Capistrano是相当好用的工具。在你配置部署好你的项目后,第一个要装的东西就应当是Capistrano。从第一天起就可以自动化部署将会节约你大量的时间。

4.安装 SCM

安装 SCM并学习使用它,这样做的好处是可以使那些超重的库中的代码不再那么冗繁,目前有大量的工具可以选择,我每天使用的是Git。Git是一款很特别的分布式SCM,即DSCM。DSCM是很有前景的,它可以同有其他库的用户们协同工作。

5.审查持续集成

现在我们已经测试了代码并将其安全的存放在库内。比起不停地测试,什么是更好的方式?自动测试是个不错的选择。很感激有cruisecontrol.rb的存在,这个应用工具自动运行了那些琐碎的测试。

6.了解你的代码

写代码是一回事,但是更重要的事情是了解代码。可以用四种自动化工具来帮助你了解代码:flog、 tarantula、rcov 和saikuro。这些工具分别有其独到之处,我很乐意向你介绍它们。
Flog,可以按字母排列的顺序来记录复杂的结果。

Tarantula,根据相关性原则和一些灵活的创意设计的。它所做的是spider 你的Rail应用以便去搜索坏链接。这真是令人得到解脱,使我受益匪浅。

Rcov,这是一个在Ruby界相当受欢迎的工具。它是一个C0范围工具,换言之,它精确的测定出你的代码中哪些部分在被测试,哪些部分没被测试。唯一的缺陷是它不能测试诸如:“if condition_a && condition_b || condition_c”. 这样的语句。

Saikuro,可以测量出你代码环的复杂性,即可以计算出你代码branche 和path的数量。当然你代码的复杂性越低,它运行的越容易。

7.升级你的Fixtures

Fixtures 是看起来很有创意的事物之一,但有诸多的弊端。对于Fixtures,只有极少的替代,我选择使用Rails Scenarios,原因是它在测试中工作起来像Fixtures一样,但是允许我做比YAML更好的DSL。我也可以在一个文件内指定多重的 Scenarios,这将使事情变得更有组织性。

8.收集分析对象

在Rail平台上搭建新的系统。每周都会有新的监控工具出现,这样我们有很多的选择,在这里我介绍我已经使用过的工具:HopToad 和 TuneUp。

HopToad对于异常报文有不错的能力,它可收集间断应用并用简便的方式显示收集结果。还有,这是一个免费软件~

TuneUp用另外一种方式获取数据,它计算每一处分别花费多长时间去组合自身。你的页面是不是花费了很长时间去组建?但你又不知道是因为什么缘故花费了这么久,使用TuneUp来查一下吧,你会发现一些你以前从未想到过的事情。另外,TuneUp是一款开源软件,你可以登陆进他们的托管服务分享你的结果。

9.阅读其他人的代码

你想成为更优秀的程序员吗?那一定要多读代码,这包括好的、坏的、你自己的、其他人的代码等。阅读代码是一项很多程序员都不重视的技能,但其实能够快速阅读他人的代码并理解其中的含义是一种极其需要的能力。

10.写博客的习惯

就我个人来说,当我阅读博客的时候我可以找到所有的信息。大部分时候我是会撰写跟技术相关的要点,偶尔讨论点轻松的话题。写博客是出于分享的原因,你可以写下能够帮你节约时间的技术技巧,也可以是一些你想要记住的技术难点和命令之类。

posted @ 2008-09-24 23:58 小小it 阅读(158) | 评论 (0)编辑 收藏
有关BIOS的二十四个解答

文章来源:一路读 www.yiludu.cn

1. 什么是可擦写(Flash)的BIOS ? 

BIOS的发音是"bye-ose," 是基本输入/输出系统的缩写。BIOS是机器的硬件自带的、

在电脑没有访问磁盘上程序之前决定机器基本功能的软件系统。就PC而言,BIOS 包含了

控制键盘、显示屏幕,磁盘驱动器,串行通讯设备和很多其它功能的代码。

一般地,BIOS存储在主板上的ROM 芯片(所以通常叫 ROM BIOS),这确保了BIOS的

一般可用性和不会因为磁盘的问题而损坏。它也确保了机器能够启动。因为RAM 比ROM的

速度快, 很多的机器制造商设计的BIOS在机器启动时能从ROM被拷贝到RAM去运行,这项技

术也叫shadowing。

当今,很多PC的主板都有flash BIOS, 意味这BIOS 是存储在可重新改写的flash 内

存芯片, 如果需要的话改写毫不费力。

PC机的BIOS是标准化的,所有的PC在BIOS这一级别上是类似的(尽管因为生产商不同

,BIOS的版本非常多)。而常说DOS功能是通过磁盘上的软件实现的, 所以不用更换BIOS

,你可以很简单地升级你的DOS系统。

能够处理Plug-and-Play (PnP) 设备的BIOS叫 PnP BIOS, 或PnP-aware BIOS。一般

而言,flash BIOS都是PnP BIOS。


2. 怎么确定我的系统里是可擦写的BIOS(Flash Bios chip) ? 

很简单,把机箱打开,揭开BIOS 芯片上(一般是28 或 32脚的双列直插式集成电路,

上面是贴的是印有BIOS生产商的封条)的封条,可以看到芯片的型号。对照下面,你就可

以确定系统里是否包含可擦写的BIOS。

Am29F010: AMD 5 伏的 flash ROM 
Am28F010, Am28F010A: AMD 12 伏的 flash ROM 
AT28C010, AT28MC010, AT29C010, AT29LC010, AT29MC010: Atmel 5 伏的 flash ROM 
CAT28F010V5, CAT28F010V5I: Catalyst 5 伏的 flash ROM 
CAT28F010, CAT28F010I: Catalyst 12 伏的 flash ROM 
28F010: Fujitsu(富士通) 12 伏的 flash ROM 或 ISSI 12 伏的 flash ROM 
HN58C1000: Hitachi(东芝) 5 伏的 flash ROM 
HN28F101, HN29C010, HN29C010B, HN58C1001, HN58V1001: 
Hitachi (东芝)12 伏的 flash ROM 
A28F010, 28F001BX-B, 28F001BX-T, 28F010: Intel 12 伏的 flash ROM 
M5M28F101FP, M5M28F101P, M5M28F101RV, M5M28F101VP: 
Mitsubishi 12 伏的 flash ROM 
MX28F1000: MXIC 12 伏的 flash ROM 
MSM28F101: OKI 12 伏的 flash ROM 
KM29C010: Samsung 5 伏的 flash ROM 
DQ28C010, DYM28C010, DQM28C010A: SEEQ 5 伏的 flash ROM 
DQ47F010, DQ48F010: SEEQ 12 伏的 flash ROM 
M28F010, M28F1001: SGS-Thomson 12 伏的 flash ROM 
28EE011, 29EE010: SST 5 伏的 flash ROM 
PH29EE010: SST ROM Chip - 可擦写(Flashable) 
TMS29F010: Texas-Instr. 5 伏的 flash ROM 
TMS28F010: Texas-Instr. 12 伏的 flash ROM 
W29EE011: Winbond 5 伏的 flash ROM 
W27F010: Winbond 12 伏的 flash ROM 
X28C010, X28C010I, XM28C010, XM28C010I: XICOR 5 伏的 flash ROM 
29LVxxx - 3V Flash memory (较少见) 
28Cxxx - EEPROM, 和Flash memory 相似
27Cxxx - With window. EPROM: 只读, 一次性写入。

其它型号开头的字母不是28或29的芯片可能就是普通的ROM。
3. 我需要升级BIOS吗 ? 

升级BIOS有很多的理由,其中有重要的,也有不太重要的。就我们PC用户而言,最重

要的原因就是和Windows 有关。如果在一台机器上的BIOS过时了,Windows 的配置就不会

达到最佳状态。

现在市场上出售的硬盘容量都会远大于528M,为了支持这些大容量硬盘,BIOS必须支

持LBA (Logical Block Addressing,逻辑块寻址) 的技术。如果你的 BIOS 不支持,而

你又想使用硬盘的全部容量,就必须使用能“欺骗”BIOS的专用软件。而这些专用软件的

使用会让Windows访问硬盘时采用兼容模式,造成性能的降低。

为了让Windows能充分支持Plug 'n Play 的设备,你也需要 PnP-BIOS。这也是升级

BIOS的重要原因。

第三个重要原因就是升级BIOS可以解决以前BIOS的错误(bugs)。

其它不太重要的原因包括:BIOS有新的设置,从光驱启动机器,从SCSI设备上启动等

等。

4. 从哪儿下载Flash BIOSs ? 

a、各大主板厂商的BIOS更新数据相关网址 

1)华硕ASUShttp://www.asus.com.tw 

486电脑BIOS升级程序网址( http://www.asus.com.tw/Products/Bios/bios-486.html ;


Pentium电脑BIOS升级程序网址( http://www.asus.com.tw/Products/Bios/bios-

p54.html )
Pentium pro和PentiumⅡ电脑BIOS升级程序网址( 

http://www.asus.com.tw/Products/Bios/bios-p6.html)

2)技嘉GIGABYTEhttp://www.giga-byte.com ;)

Beta BIOS系列http://www.giga-byte.com/gigabyte-web/sw_bata.htm)
AGP BIOS系列( http://www.giga-byte.com/gigabyte-web/swagp.htm ;)
Intel 440GX 系列( http://www.giga-byte.com/gigabyte-web/swgx.htm ;)
Intel 440BX 系列( http://www.giga-byte.com/gigabyte-web/swbx.htm ;)
Intel 440ZX 系列( http://www.giga-byte.com/gigabyte-web/swzx.htm ;)
Intel 440EX 系列( http://www.giga-byte.com/gigabyte-web/swex.htm ;)
Intel 440LX 系列( http://www.giga-byte.com/gigabyte-web/swlx1.htm ;)
Intel 430TX 系列( http://www.giga-byte.com/gigabyte-web/swtx.htm ;)
VIA 系列( http://www.giga-byte.com/gigabyte-web/swvia.htm ;)
ALi 系列( http://www.giga-byte.com/gigabyte-web/swali.htm ;)
SiS 系列( http://www.giga-byte.com/gigabyte-web/swsis.htm ;)
其他旧型号主板( http://www.giga-byte.com/gigabyte-web/swother.htm ;)

3)微星MSIhttp://www.ecs.com.tw)

MS-41系列主板( http://www.msi.com.tw/chinese/bios/486.htm ;)
MS-51系列主板( http://www.msi.com.tw/chinese/bios/51.htm ;)
MS-61系列主板( http://www.msi.com.tw/chinese/bios/61.htm ;)

4)升技 [ABIT] http://www.abit.com.tw/html/cload.htm) 

5)联尚 [AIR] http://www.airwebs.com/download.html) 

6)浩鑫 [SHUTTLE] ( ftp://ftp.spacewalker.com/bios/) 

7)建基 [AOPEN] http://w3.aopen.com.tw/tech/biosdrv.htm) 

8)映泰 [BIOSTAR] http://192.72.144.27/service.htm) 

9)艾崴 [IWILL] http://www.iwill.com.tw/csupport/index_bios.html) 

10)捷邦 [J-BOND] http://www.jbond.com/companyf.html) 

11)迈科 [MICRONICS] http://www.micronics.com/) 

12)梅捷 [SOYO] http://www.soyo.com.tw/chinese/product/biosup.htm) 

13)丽台 [SUPERMICRO] http://www.supermicro.com/download/dlframe.htm) 

14)磐英 [EPOX] http://www.epox.com/support/bios.html) 

15)忆华 [EFA] http://www.efa.com.tw/elec/efa/c-service.html) 

16)友通 [DFI ] http://components.dfiweb.com/support/downloads.asp) 

17)精英 [ECS] http://www.ecs.com.tw/ecs/ecs/spp-m.htm) 

18)大众 [LEO] http://www.fic.com.tw/techsupport/bios/index.htm) 

19)迈肯 [MYCOMP] http://www.mycomp-tmc.com/BIOS.htm) 

20)福扬 [FYI] http://www.fyi.com.tw/download-c.htm) 

21)中凌 [ATREND] http://www.atrend.com.tw/download/frame-bios.html) 

22)海洋 [OCTEK] http://www.oceanhk.com/drivers/others/biso) 

23)宏基 [ACER] http://www.aopenamerica.com/tech/mainbd/default.htm) 

24)联想 [QDI] http://www.qdigrp.com/driver.htm) 

25)宏鹰 [PCCHIPS] http://www.pcchips.com.tw/BIOS.html) 

26)捷波 [JETBOARD] http://www.jetway.com.tw/evisn/jwd/jwd01/index.html) 

27)联讯 [DATAEXPERT] http://www.dataexpert.com.tw/service/) 

28)皇朝 ( http://megastar.kamtronic.com  

29)承启( http://www.chintech.com.tw  

30)钻石( http://www.dfiweb.com  

31)致福( http://www.gvc.com.tw 

32)英特尔( http://www.intel.com  

33)华基( http://www.zida.com  

34)麒麟( http://www.pcchips.com  

b、主要 BIOS 生产公司网站

Award BIOS 公司 (美国) http://www.award.com/)
Award BIOS 公司 (台湾) http://www.award.com.tw/)
Award 技术咨询中心 (只限email,mailto:support@unicore.com )
AMI BIOS 公司 http://www.amibios.com/)
Microid Research http://www.mrbios.com/)
Micro Firmware , 开发并发行Phoenix BIOS及升级BIOS数据文件 

http://www.firmware.com/)
Phoenix BIOS 公司 http://www.phoenix.com/)
Unicore (提供BIOS升级数据文件 ,只限Award BIOS。 http://www.unicore.com/
5. 主板的名称不知道怎么办 ? 

如果你的BIOS是Award BIOS, 你可以向award888@ms1.hinet.net或

support@unicore.com发封邮件,里面附上你的BIOS的1) 版本号 2) 系列号(part 

number) 3) 发布日期。award的系列号包含了它所支持芯片的信息。这个信息出现在机器

启动后,屏幕显示正在进行内存检验的时刻。这时按PAUSE键,就可以读系列号,BIOS的

日期和版本了。不过,有的主板生产商把这个信息去除了,你只有向他们查询。

6. 如何升级我的BIOS ? 

升级BIOS需要1) BIOS的读写程序( flasher) 和 2) BIOS的最新数据文件。读写程

序将把这个数据文件写入到BIOS的芯片里。下面是不同BIOS的升级命令:

awdflash xxx.bin (对 Award BIOSs)
amiflash xxx.bin (对 AMI BIOSs)
mrflash xxx.bin (对 MRBIOSs)

注意:

a、 在读写器要求你存储当前的BIOS时,选“YES”,这样在升级BIOS时如果出现问

题了还可以恢复原来的BIOS。

b、有些主板生产商提供自己的升级软件程序(一般不能拷贝),注意在升级前在

BIOS里把“System BIOS Cacheable”的选项设为NO。

c、千万不要使用错误的BIOS数据文件,否则你的机器就不能启动了。

7. 升级Award BIOS时出现提示“Insufficient memory (内存不足)”怎么办?

解决方法有:

a. 在CMOS 的“Chipset Features”的设置里, Disable掉“ Video Bios 

Cacheable”。

b. 按 Esc,F10,存储退出。

c. 重启动,在出现"Windows Starting" 时按Ctrl+F5,这可以不加载Drvspace.bin,

省了大约108K 的内存空间。

d. 开始升级BIOS ,重启动。

e. 重进入CMOS的“Chipset Features”的设置里, Enable“ Video Bios 

Cacheable”。按 Esc,F10,存储退出。

9. 如何恢复损坏的BIOS ? 

方案一:利用根区BIOS(Boot-block BIOS)

当今大多数基于AWARD BIOS的主板里都有根区BIOS,这是个在升级BIOS时不会被覆盖

的一小部分BIOS。它只支持很基本的硬件如:软盘等。如果你的显卡是PCI的,在BIOS被

损坏后你的屏幕将是漆黑一片,因为根区BIOS只支持ISA 的显卡。

根区BIOS 可以执行可引导软盘上的AUTOEXEC.BAT。这样我们可以把Award flasher 

和正确的 BIOS 文件(*.bin )放在软盘上并在AUTOEXEC.BAT 里加入BIOS升级命令。

方案二: 得到新的BIOS芯片

a、联系主板生产商,看是否他们能提供BIOS芯片。有些生产商是免费提供的。

b、联系卖相关芯片的电脑公司,如Unicore Softwarehttp://www.unicore.com/) 

或 Midco Computers (以前的 RC Systems公司http://www.midcocomputers.com/)。下

面是Midco的一段广告: 
"我们向公众提供BIOS的更换芯片。请访问 www.midcocomputers.com ,我们将乐意帮助

你。 "

方案三:热交换

注意:本人不对本方法导致的任何问题负责,风险自负。

用另外一块可以正常使用的BIOS芯片来更换当前损坏的芯片,而正常BIOS芯片的主板

必须尽量和损坏的一致。在正常芯片的机器上先把“System BIOS cacheable”设为

ENABLE,进入DOS后,把正常的芯片拔掉,用损坏的芯片来替代,然后正确地升级BIOS即

可。

注意:建议使用MRBIOS的读写程序,他们的产品名声最好。可以访问

ftp://ftp.mrbios.com找相关软件。

方案四: (适用于INTEL主板) 

把Flash Recovery 的跳线放在recovery mode的位置,把可启动的BIOS升级软盘放入

,启动机器。
因为没被覆盖的根区BIOS不支持PCI的显卡,这时屏幕上什么都没有。你可以通过鸣笛声

和软盘LED来观察。当机器响了一下,接着软盘的LED亮时,系统就正在升级你的BIOS。当

软盘的LED灯灭时,说明恢复已完成,关机。把跳线恢复到缺省位置,重启动继续恢复。

10. 如果我的BIOS有问题而目前又找不到升级文件怎么办?

可以试着找到主板型号不同但BIOS生产商相同的BIOS。下面的文字是从新闻组里摘录

的:

“最近我在本人的Triton 芯片组的主板上进行了一系列的BIOS的测试,是为了检验

一种主板能否使用不同主板生产商提供的BIOS。结论是:大多数是可以的。所以,即使是

不同生产商提供的BIOS也可以一定限度地通用。

实验内容:我想升级我的Amptron PM7700B 主板的BIOS,版本号从v4.50PG BIOS 到

v4.51PG,希望能纠正电源管理方面的错误(显示器随机空白,硬盘老处于“睡眠”状态

)。我的机器配置是:Maxtor 1.6GB 硬盘(IDE0的master模式), Aztech的 4x CD-ROM 

(IDE1的Slave模式), SB16声卡, AMD 5x86-75 超频到90MHz (老式的SSA-5 版本). 

实验里所使用的BIOS有:ASUS(华硕)460FX主板使用的Award v4.51PG,FIC的PT-

2003 430FX主板使用的Award v4.50PG,ECS TR5510主板使用的 Award v4.51PG,还有

Shuttle HOT-541 主板使用的Award v4.51PG。

请注意,如果主板生产商提供的BIOS升级程序和其他的不同(比如华硕),它就不能

被用来升级别的主板的BIOS。所以,除了华硕的主板,AWDFLASH v5.2 都能顺利地升级其

他主板BIOS。

笔者还发现,MR-BIOS的29C010.EXE (请使用和你的主板芯片组相符合的软件)能更

新所有主板的BIOS。ftp://ftp.mrbios.com里你可以找到29C010.EXE 和 28F010.EXE 

,在那里长度大于60k的zip文件里有不少好的东西。

结果:

a、华硕( ASUS )BIOS 工作正常, 但内存只检测到8MB(实际上有16MB),因为内

存的原因, Win95还“发现”了不少新的设备。

b、升级了FIC 430FX BIOS, 机器不能访问软盘(尝试后,系统死机),但硬盘正常

启动和工作。

c、ECS TR5510 BIOS 表现最好,最终我也采用了它。它解决了电源管理的错误,还

解决了以前按SHIFT-F5不能直接进入纯DOS模式的问题。(该问题估计是Amptron的 BIOS

和AMD 5x86 CPU不兼容的缘故)同时,在WinTune96的测试下内存和硬盘的访问速度也增

加了几个MB/S。

d、Shuttle HOT-541 BIOS和ESC的BIOS一样,解决了同样的问题。但在win95下,不

能直接检测到光驱。

结论:

a、所有实验用的BIOS都没有导致永久性的、不可恢复性的错误,90-100% 的功能都

正常(ECS的甚至解决了原Amptron BIOS的问题)。

b、如果你也想尝试这样的作法,请记住一定要使用相同芯片组的BIOS升级文件,输

入/输出(I/O)的芯片也要和你自己的相同。我主板上所使用的I/O 芯片是UM8669 。如

果你的I/O芯片不同,升级后可能会导致串口不工作或更糟的结果。

c、在硬盘里保存一份完好的BIOS文件和升级软件。避免如果软盘不能启动,恢复不

了BIOS的情况。 

d、实验用的BIOS没有一种让我的机器变得彻底毁坏,不过你的运气就不一定这么好

了。

e、一般初学者不要使用不同生产商提供的BIOS,除非

1) 你有EPROM烧录器,写片BIOS芯片对你来说非常容易。
2) 你有同种类型的芯片,能非常熟练地*作“热插拔”技术。
3) 你有冒险的勇气。

11. 在Award或AMI的网站里为何没有我的BIOS的升级文件 ? 

Award 和AMI会为特定的主板生产商提供符合特定主板和芯片组的BIOS升级文件,然

后生产商再利用Award/AMI提供的工具, 对这些BIOS文件作出最后的修改和优化。

也就是说,生产商比Award/AMI更了解他们的主板,能提供更好的BIOS升级。

注意:http://www.award.com.tw/download/bios/里包括了好多主板如ali、cyrix 

、intel、opti、sis 、via的BIOS升级文件。不过你最好先在主板生产商自己的网页里找

升级文件,如果没有的话,才来此处下载。

12. 在哪儿能找到我的BIOS的技术帮助 ? 

在你主板的网站上(如果有的话),有问题也可以向他们发电子邮件。

13. PROM, EPROM, EPROM 这些名词代表什么 ? 

PROM (可编程只读存储器 programmable read-only memory) 是数据只可写入一次的

存储器芯片。一旦数据写入到PROM, 就永久保存。不象PC系统里的内存,PROM在关机时里

面的信息依然保存。

PROM 和 ROM (只读存储器) 的差异是PROM 生产出来后是空白的存储器,而ROM在生

产出来后就已经被写入信息了。要想写入到PROM ,需要特殊的设备--PROM 编程器或PROM 

烧录器。

EPROM (可擦除可编程只读存储器erasable programmable read-only memory)属于特

殊的一种 PROM,内部的信息可以用紫外线来擦除。一旦擦除后,就可以被写入信息。

而EEPROM和PROM类似, 但擦除时需要电而不是紫外线。EEPROM(电擦除可编程只读存

储器 electrically erasable programmable read-only memory)和PROM一样,关机后信

息不会消失,没有RAM快。

一种特殊的EEPROM, 称之为flash EEPROM, 在电脑里可以被重写,不再需要特殊的烧

录器。我们常说的可读写式BIOS的芯片就是有它们构成的。

14. Award Flasher 5.33 有什么新的功能? 

Award BIOS 的二进制数据文件的文件名一般是和BIOS系列号一致的。因为文件名的

类似,用户可能偶然失误使用错误的数据文件。

为了避免这个问题,在新版的 AWDFLASH.EXE version 5.33增加了检测的功能,如果

它发现用户使用的数据文件和主板的型号不符就报警,报警信息是:“The program 

file's part number does not match with your system ”

如果你认为自己不会犯这样的错误,可以用“/Py”PASS掉检测功能:Awdflash 

2Axxxxxx.BIN /Py 

15. 为何在网站里不再有MRBIOS 的软件 ? 

因为他们不再属于共享软件了,需要请ftp://ftp.mrbios.com里找找。最新MRBIOS

的版本是3.42 。

16. 在DEBUG里如何恢复BIOS的出厂值?

a、针对AMI/Award BIOS:

C:\DEBUG (在纯DOS下,不是windows里的DOS窗口)
-O 70 17
-O 71 17
Q

b、针对Phoenix BIOS:

C:\DEBUG (在纯DOS下,不是windows里的DOS窗口)
-O 70 FF
-O 71 17
Q

17. 我的密码忘了,如何破解BIOS里的密码保护? 

a、针对 Award BIOS:

试试下面的密码: AWARD_SW, j262 , HLT, SER, SKY_FOX, BIOSTAR, ALFAROME, 

lkwpeter, 
j256, AWARD?SW, LKWPETER, Syxz, aLLy, 589589, 589721, awkward, CONCAT

也可在网上下载有关的破解程序。

b、针对AMI BIOS:

试试下面的密码:AMI, BIOS, PASSWORD, HEWITT RAND, AMI?SW, AMI_SW, LKWPETER, 

A.M.I.

也可在网上下载有关的破解程序。

18. AMI BIOS 的鸣笛有何含义?

除去8声鸣笛,其他的都会造成机器不能启动:

1 声鸣笛 刷新失败
2 声鸣笛 奇/偶校验错误
3 声鸣笛 基本64K 内存错误
4 声鸣笛 定时器失效
5 声鸣笛 处理器错误
6 声鸣笛 8042 的 A20信号错误
7 声鸣笛 处理器特殊中断错误
8 声鸣笛 显存读/写错误
9 声鸣笛 ROM 校验错误
10 声鸣笛 CMOS 关闭寄存器读/写错误
11 声鸣笛 Cache 内存损坏

19. 如何解决上述的鸣笛错误?

对1 、 2、3 声鸣笛,可以试着重安装内存条,如果错误仍然存在,更换好的内存条



对4、5、7 、10声鸣笛,到经销商处更换主板。

对6声鸣笛,重新安装键盘控制器芯片。如果错误继续,更换该芯片。如果错误继续

,检查和键盘有关的部件,如更换好的键盘,检查主板上是否有键盘保险丝。

对8声鸣笛, 更换显卡或显存。

对9声鸣笛,更换BIOS芯片。

如果没有任何鸣笛,而显示器上漆黑一片,先检查电源,连接主板上的POWER LED到

LED上,如果LED亮,而驱动器有转动的声音就说明电源是好的。

接着,检查主板上有没有松动的部件。松动的处理器,BIOS芯片,晶振或芯片组都能

导致主板不工作。

接着,除了显卡,把所有的插卡都拔掉。这时系统至少能加电并出现显卡信息。然后

,再一次一个地插卡,直到问题出现。

上述方法失效的话,只有到经销商更换主板了。

20. 如何在MRBIOS里插入NCR SCSI BIOS v3.07 或 4.03 ?

其实很简单,不过针对不同版本的mr bios方法也不同。

首先,到Windows95.com 下载'Hex Workshop',它能在二进制状态下编辑文件。插入

SCSI BIOS的原理就是把 mr bios前面没用的空间删除,在附加上NCR 的flash BIOS,然

后存储文件。

尽管mr bios 网站上说它的BIOS大小是92k,可下载后文件长度要大于这个值。用上

述的二进制编辑软件把它前面的空格删除,以保正长度为92k。再将NCR v3.07 的BIOS 追

加上,这样文件长度就是108k (92k + 16k NCR v3.07 ), 也可追加32k的 NCR v4.03,

长度是124k. 


21. 如何对INTEL OEM主板升级它的Intel AMI BIOS? 

比如:想把1.00.xx.CB0H 升级到1.00.xx.CB0。"1.00.xx.CB0H"里的H表示这是INTEL

为其他主板生产商(此处代表VOBIS公司)制造的OEM主板,所以下面的方法也适用于任何

使用AMI BIOS的INTEL OEM主板 ,比如从1.00.xx.BC0R升级到1.00.xx.BC0。

背景资料:

"1.00.xx.CB0"的BIOS是AMI为Intel的主板芯片组特制的(也叫"Advanced-E/V"主板)

,然后主板生产商VOBIS再对它作稍微的修改,称之为"1.00.xx.CB0H"。很可能字母"H"代

表 他们生产PC上标注的"HIGHSCREEN" 。所以,我们可以使用常见的AMI的BIOS来升级它



你可以ftp://download.intel.nl/design/motherbd/ev/里下载"1.00.xx.CB0"的

BIOS版本,版本号为02, 03, 04, 05 和 06 。如果你现在试着用这些BIOS,就会有错误

信息: "the data are corrupt or you are using a wrong BIOS"(数据错误或BIOS文

件有误)。原因就是INTEL提供的BIOS的ID字符串只是1.00.02.CB0,与机器中现有的

1.00.02.CB0H不符,所以升级程序不执行,升级失败。

解决方法:

a. 下载和目前机器里版本号相同的1.00.02.CB0 和最新版本号的1.00.06.CB0。

b. 按照网页"http://developer.intel.com/design/motherbd/genbios.htm";的指令

,创建2张启动盘,一个版本号一个。

c. 在1.00.02.CB0的软盘里,有文件"1002cb0_.bio" 和"1002cb0_.bi1"。用文本编

辑器把里面的"CB0 " (注意CB0后面的空格不能省略) 替换为 "CB0H"。每个文件只有一个

,只能替换一处。

d. 用修改的启动盘引导机器,令人惊奇的是现在机器的BIOS-ID 变成了1.00.02.CB0 

,而不是1.00.02.CB0H。

e. 用另一张启动盘(1.00.06.CB0)引导,并升级成功,当前的BIOS版本是

1.00.06.CB0。

注意:

a. Intel提供的升级软件有保存当前BIOS的功能,应该使用它并创建一启动盘。这样

升级出现问题时,可以利用主板提供的BIOS-recovery跳线,来恢复原来的BIOS。

b. 有可能直接修改06版本号的启动盘,而升级成功。

c. 如果VOBIS不仅往BIOS里添加了他们的公司名,还作了功能性的修改,上述的*作

就有一定的风险。

22. 如何对INTEL OEM主板升级它的Intel Phoenix BIOS ?

a、到INTEL的网站上下载针对该主板的最新的BIOS,把它放在一张可启动的软盘里。

b、进入BIOS, enable选项'Check for User Flash ROMS' ,并关机。

c、把主板上的BIOS跳线设置为RECOVERY模式。将启动盘放入引导机器,它将自动进

入恢复程序,并加载软盘里最新的BIOS。

d、关机,恢复BIOS跳线到正常模式,开机即可。

23. 如何更换Award BIOS启动时的EPA logo 画面?

a、首先,要有BIOS数据文件( *.BIN )用来先编辑再写入BIOS里,要确认该文件和

你主板是对应的。

b、http://members.aol.com/mrosenb257/下载BMPtoEPA, BMPtoEPA是个自由软件

,运行于Windows9x下,能把BMP 文件转换为EPA 。

c、有了需要的EPA 文件后,要找到专用软件CBROM 或 CBROM6,它能把EPA文件放在

*.BIN文件里,格式为:cbrom *.BIN /EPA savedEPA.epa (*.BIN 是BIOS数据文件,

savedEPA.epa是需要的EPA文件)。另外,CBROM 适用于Award V4.51 ,而CBROM6适用于

Award V6.0 。

d、现在就可以升级你的BIOS了,成功后EPA logo画面就变成你需要的了。

24. 如何在windows里避免“IRQ Routing Table errors”?

如果你主板使用的是VIA芯片组,就需要安装最新的VIA IRQ Routing的补丁软件

http://www.via.com.tw/)。

如果还不行,就在BIOS里disable掉 'OnChip USB'。如果成功的话,就应和主板生产

商联系获得最新的BIOS。(比如,Shuttle HOT591P 主板就有这种情况,升级BIOS后就没

问题了。)

posted @ 2008-09-24 23:53 小小it 阅读(267) | 评论 (0)编辑 收藏
仅列出标题  下一页