<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[海峡IT网 - 操作系统]]></title>
<link>http://www.haixiait.com/</link>
<description><![CDATA[haixiaIT.COM_创造价值,传播技术,分享快乐!]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[airzen@126.com(airzen)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>海峡IT网</title>
	<url>http://www.haixiait.com/images/logos.gif</url>
	<link>http://www.haixiait.com/</link>
	<description>海峡IT网</description>
</image>

			<item>
			<link>http://www.haixiait.com/article.asp?id=398</link>
			<title><![CDATA[修改HOSTS文件的批处理(参数化)便于大家使用.]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Fri,13 Aug 2010 15:25:46 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=398</guid>
		<description><![CDATA[<p>&nbsp;@echo off</p>
<div>&nbsp;</div>
<div>set HOSTNAME=www.haixiait.com</div>
<div>set HOSTIP=203.171.231.232</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>find %systemroot%\system32\drivers\etc\hosts &quot;%HOSTNAME%&quot; /I &gt;nul</div>
<div>&nbsp;</div>
<div>if %ERRORLEVEL% EQU 0 (</div>
<div>&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>rem 已有此设置</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>echo 已经设置过该hosts[%HOSTNAME%]&nbsp;</div>
<div>&nbsp;</div>
<div>) else (</div>
<div>&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>rem 无此设置,设置</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>attrib %systemroot%\System32\drivers\etc\hosts -r -h -s</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>echo. &gt;&gt;%systemroot%\system32\drivers\etc\hosts</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>echo %HOSTIP% %HOSTNAME%&gt;&gt;%systemroot%\system32\drivers\etc\hosts</div>
<div><span class="Apple-tab-span" style="white-space:pre">	</span>echo 成功修改hosts,请通过[%HOSTNAME%]进行访问</div>
<div>&nbsp;</div>
<div>)</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>pause&nbsp;</div>
<div>start http://%HOSTNAME%</div>
<div>----------------------------------------------------------------------------------------------</div>
<div>以上另存为bat 文件即可,海峡IT原创.</div>
<div>&nbsp;</div>
<div>特点:</div>
<div>1.自检索系统目录</div>
<div>2.防止HOSTS重复设置带自动检查</div>
<div>3.灵活的参数化设置</div>
<div>&nbsp;</div>
<div>&nbsp;</div>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=396</link>
			<title><![CDATA[谷歌浏览器下图片SRC为空二次加载的BUG]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Tue,13 Jul 2010 17:35:32 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=396</guid>
		<description><![CDATA[<p><strong>版本:</strong> 谷歌浏览器5.0.375.99</p>
<p><strong>测试平台:</strong>win2003 server</p>
<p><strong>问题:</strong>一个页面访问量增加的问题,在FF和IE下都是没有问题,每刷新一次访问题增1,而在谷歌浏览器5.0.375.99下面每刷新一下访问量增2,实在是奇怪,经过很多很多的测试,我们的工程师终于搞明白了.</p>
<p><strong>解答:</strong><span style="color: rgb(0, 0, 255); ">在谷歌浏览器中因为有一个图片的SRC=&quot;&quot; 也就是说这张图片没有源,导致谷歌浏览器会重新加载一个该页,把该页的内容作为该图片的源来进行显示.估计这也是谷歌浏览器的工作原理吧.</span></p>
<p>&nbsp;</p>
<p><span style="color: rgb(0, 0, 255); ">还有一个问题,当用户在断网的情况下是无法查看页面源代码的,也就是说谷歌浏览器是实时请求页面源代码的.</span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=387</link>
			<title><![CDATA[DOS命令淘金——ECHO命令详解]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Fri,09 Apr 2010 10:23:46 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=387</guid>
		<description><![CDATA[<p>　　ECHO命令是大家都熟悉的DOS批处理命令的一条子命令，但它的一些功能和用法也许你并不是全都知道，不信你瞧： 1． 作为控制批处理命令在执行时是否显示命令行自身的开关 <br />
　　格式：ECHO [ON|OFF] <br />
　　如果想关闭&ldquo;ECHO OFF&rdquo;命令行自身的显示，则需要在该命令行前加上&ldquo;@&rdquo;。 <br />
　　2． 显示当前ECHO设置状态 <br />
　　格式：ECHO <br />
　　3． 输出提示信息 <br />
　　格式：ECHO信息内容 <br />
　　上述是ECHO命令常见的三种用法，也是大家熟悉和会用的，但作为DOS命令淘金者你还应该知道下面的技巧： <br />
　　4． 关闭DOS命令提示符 <br />
　　在DOS提示符状态下键入ECHO OFF，能够关闭DOS提示符的显示使屏幕只留下光标，直至键入ECHO ON，提示符才会重新出现。 <br />
　　5． 输出空行，即相当于输入一个回车 <br />
　　格式：ECHO． <br />
　　值得注意的是命令行中的&ldquo;．&rdquo;要紧跟在ECHO后面中间不能有空格，否则&ldquo;．&rdquo;将被当作提示信息输出到屏幕。另外&ldquo;．&rdquo;可以用，：；&rdquo;／[\]＋等任一符号替代。 <br />
　　在下面的例子中ECHO．输出的回车，经DOS管道转向作为TIME命令的输入，即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后，自动返回到DOS提示符状态： <br />
　　C:&gt;ECHO.|TIME <br />
　　ECHO命令输出空行的另一个应用实例是：将ECHO．加在自动批处理文件中，使原本在屏幕下方显示的提示画面，出现在屏幕上方。 <br />
　　6． 答复命令中的提问 <br />
　　格式：ECHO答复语|命令文件名 <br />
　　上述格式可以用于简化一些需要人机对话的命令（如：CHKDSK／F；FORMAT Drive:；del *.*）的操作，它是通过DOS管道命令把ECHO命令输出的预置答复语作为人机对话命令的输入。下面的例子就相当于在调用的命令出现人机对话时输入&ldquo;Y&rdquo;回车： <br />
　　C:&gt;ECHO Y|CHKDSK/F <br />
　　C:&gt;ECHO Y|DEL A :*.* <br />
　　7． 建立新文件或增加文件内容 <br />
　　格式：ECHO 文件内容＞文件名 <br />
　　ECHO 文件内容＞＞文件名 <br />
　　例如：C:&gt;ECHO @ECHO OFF&gt;AUTOEXEC.BAT建立自动批处理文件 <br />
　　C:&gt;ECHO C:\CPAV\BOOTSAFE&gt;&gt;AUTOEXEC.BAT向自动批处理文件中追加内容 <br />
　　C:TYPE AUTOEXEC.BAT显示该自动批处理文件 <br />
　　@ECHO OFF <br />
　　C:\CPAV\BOOTSAFE <br />
　　8． 向打印机输出打印内容或打印控制码 <br />
　　格式：ECHO 打印机控制码＞PRN <br />
　　ECHO 打印内容＞PRN <br />
　　下面的例子是向M－1724打印机输入打印控制码。＜Alt＞156是按住Alt键在小键盘键入156，类似情况依此类推： <br />
　　C:&gt;ECHO &lt;Alt&gt;+156&lt;Alt&gt;+42&lt;Alt&gt;+116&gt;PRN（输入下划线命令FS＊t） <br />
　　C:&gt;ECHO &lt;Alt&gt;+155@&gt;PRN（输入初始化命令ESC@） <br />
　　C:&gt;ECHO.&gt;PRN（换行） <br />
　　9． 使喇叭鸣响 <br />
　　C:&gt;ECHO ^G <br />
　　&ldquo;^G&rdquo;是用Ctrl＋G或Alt＋007输入，输入多个^G可以产生多声鸣响。使用方法是直接将其加入批处理文件中或做成批处理文件调用。 <br />
　　10．执行ESC控制序列修改屏幕和键盘设置 <br />
　　我们知道DOS的设备驱动程序ANSI.SYS提供了一套用来修改屏幕和键盘设置的ESC控制序列。如执行下述内容的批处理程序可以把功能键F12定义为DOS命令&ldquo;DIR／W&rdquo;，并把屏幕颜色修改为白色字符蓝色背景。 <br />
　　@ECHO&rdquo;&larr;[0;134;&rdquo;DIR/W&rdquo;;13p <br />
　　@ECHO&rdquo;&larr;[1;37;44m <br />
　　（注：批处理文件中&ldquo;&larr;&rdquo;字符的输入方法是在编辑状态下按Alt中小键盘上的27） <br />
　　DOS命令是接触计算机的人首先要学到的，对许多人来说是太熟悉太简单了，其实不然，在这些命令中蕴藏着丰富的内容，仍有待于我们进一步去理解去开发，如果你是一个有心人就一定会从这些自以为熟知的命令中发现新的闪光点，淘得真金</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=386</link>
			<title><![CDATA[最强之dos命令 – for ]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Fri,09 Apr 2010 10:15:38 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=386</guid>
		<description><![CDATA[<p>这篇文章是网上找的，很多初学DOS的朋友对FOR语句掌握的好不是太过熟悉，希望这边文章能够给你开阔思路帮助你把FOR语句学好，主要的参数介绍和实例讲的都很清楚，也<a class="channel_keylink" target="_blank" href="http://www.txwb.com/Article/wyzl/MFYX/200703/5504.html">希望</a>对DOS越来越感兴趣－－－＞发挥你的想像力吧 <br />
<br />
　　　　　　　　　　　　　　　正文开始 <br />
<br />
以前常觉得DOS的命令行功能太弱，无法象UNIX一样可以用命令行完成非常复杂的操作。实际上，当MS从WIN2K开始将命令行增强后，已经借鉴了相当多UNIX的优点，虽然还无法做到象UNIX那么灵活，但已可完成绝大多数的任务，比如用&amp;&amp;和　　连接两个（或更多）命令，由前一个的返回值来决定下一个是否执行，等等。而在这些增强中，最明显的，就是FOR命令。 <br />
举个例子，用适当的参数，可用FOR命令将 date /t 的输出 从 &quot;Sat 07/13/2002&quot; 变成你想要的格式，比如， &quot;2002-07-13&quot;： <br />
<br />
c:\&gt;for /f &quot;tokens=2,3,4 delims=/ &quot; %a in ('date /t') do @echo %c-%a-%b <br />
2002-07-13 <br />
<br />
该例将在（3）中详细说明。 <br />
0. 基本应用 <br />
简单说，FOR是个循环，可以用你指定的循环范围生成一系列命令。最简单的例子，就是人工指定循环范围，然后对每个值执行指定的命令。例如，想快速报告每个硬盘分区的剩余空间： <br />
<br />
for %a in (c: d: e: f do @dir %a\ 　 find &quot;bytes free&quot; <br />
<br />
将输出： <br />
<br />
8 Dir(s) 1,361,334,272 bytes free <br />
15 Dir(s) 8,505,581,568 bytes free <br />
12 Dir(s) 12,975,149,056 bytes free <br />
7 Dir(s) 11,658,854,400 bytes free <br />
<br />
用它可以使一些不支持通配符的命令对一系列文件进行操作。在WIN9X中，TYPE命令（显示文件内容）是不支持*.txt这种格式的（WIN2K开始TYPE已支持通配）。遇到类似情况就可以用FOR： <br />
<br />
for %a in (*.txt) do type %a <br />
<br />
这些还不是FOR最强大的功能。我认为它最强大的功能，表现在以下这些高级应用： <br />
<br />
1. 可以用 /r 参数遍历整个目录树 <br />
2. 可以用 /f 参数将文本文件内容作为循环范围 <br />
3. 可以用 /f 参数将某一命令执行结果作为循环范围 <br />
4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分 <br />
<br />
现分别举例说明如下： <br />
1. 用 /r 遍历目录树 <br />
当用 *.* 或 *.txt 等文件名通配符作为 for /r 的循环范围时，可以对当前目录下所有文件（包括子目录里面的文件）进行操作。举个例子，你想在当前目录的所有txt文件（包括子目录）内容中查找&quot;bluebear&quot;字样，但由于find本身不能遍历子目录，所以我们用for: <br />
<br />
for /r . %a in (*.txt) do @find &quot;bluebear&quot; %a <br />
<br />
find 前面的 @ 只是让输出结果不包括 find 命令本身。这是DOS很早就有的功能。和FOR无关。 <br />
当用 . 作为循环范围时，for 只将子目录的结构（目录名）作为循环范围，而不包括里面的文件。有点象 TREE 命令，不过侧重点不同。TREE 的重点是用很漂亮易读的格式输出，而FOR的输出适合一些自动任务，例如，我们都知道用CVS管理的项目中，每个子目录下都会有一个CVS目录，有时在软件发行时我们想把这些CVS目录全部去掉： <br />
<br />
for /r . %a in (.) do @if exist %a\CVS rd /s /q %a\CVS <br />
<br />
先用 if exist 判断一下，是因为 for 只是机械的对每个目录进行列举，如果有些目录下面没有CVS也会被执行到。用 if exist 判断一下比较安全。 <br />
这种删除命令威力太大，请小心使用。最好是在真正执行以上的删除命令前，将 rd /s /q 换成 @echo 先列出要删出的目录，确认无误后再换回rd /s /q： <br />
<br />
for /r . %a in (.) do @if exist %a\CVS @echo %a\CVS <br />
<br />
可能目录中会多出一层 &quot;.&quot;，比如 c:\proj\release\.\CVS ，但不会影响命令的执行效果。 <br />
2. 将某一文件内容或命令执行结果作为循环范围： <br />
假如你有一个文件 todel.txt，里面是所有要删除的文件列表，现在你想将里面列出的每个文件都删掉。假设这个文件是每个文件名占一行，象这样： <br />
<br />
c:\temp\a1.txt <br />
c:\temp\a2.txt <br />
c:\temp\subdir\b3.txt <br />
c:\temp\subdir\b4.txt <br />
<br />
那么可以用FOR来完成： <br />
<br />
for /f %a in (todel.txt) do del %a <br />
<br />
这个命令还可以更强大。比如你的 todel.txt 并不是象上面例子那么干净，而是由DIR直接生成，有一些没用的信息，比如这样： <br />
<br />
Volume in drive D is DATA <br />
Volume Serial Number is C47C-9908 <br />
Directory of D:\tmp <br />
09/26/2001 12:50 PM 18,426 alg0925.txt <br />
12/02/2001 04:29 AM 795 bsample.txt <br />
04/11/2002 04:18 AM 2,043 invitation.txt <br />
4 File(s) 25,651 bytes <br />
0 Dir(s) 4,060,700,672 bytes free <br />
<br />
for 仍然可以解出其中的文件名并进行操作： <br />
<br />
for /f &quot;skip=5 tokens=5&quot; %a in (todel.txt) do @if exist %a DEL %a <br />
<br />
当然，上面这个命令是在进行删除，如果你只是想看看哪些文件将被操作，把DEL换成echo: <br />
<br />
for /f &quot;skip=5 tokens=5&quot; %a in (todel.txt) do @if exist %a echo %a <br />
<br />
你将看到： <br />
<br />
alg0925.txt <br />
bsample.txt <br />
invitation.txt <br />
<br />
skip=5表示跳过前5行（就是DIR输出的头部信息），tokens=5表示将每行的第5列作为循环值放入%a，正好是文件名。在这里我加了一个文件存在判断，是因为最后一行的&quot;free&quot;刚好也是第5列，目前还想不出好的办法来滤掉最后两行，所以检查一下可保万无一失。 <br />
3. 可以用 /f 参数将某一命令执行结果作为循环范围 <br />
非常有用的功能。比如，我们想知道目前的环境变量有哪些名字（我们只要名字，不要值）。可是SET命令的输出是&ldquo;名字=值&rdquo;的格式，现在可以用FOR来只取得名字部分： <br />
<br />
FOR /F &quot;delims==&quot; %i IN ('set') DO @echo %i <br />
<br />
将看到： <br />
<br />
ALLUSERSPROFILE <br />
APPDATA <br />
CLASSPATH <br />
CommonProgramFiles <br />
COMPUTERNAME <br />
ComSpec <br />
dircmd <br />
HOMEDRIVE <br />
...... <br />
<br />
这里是将set命令执行的结果拿来作为循环范围。delims==表示用=作为分隔符，由于FOR /F默认是用每行第一个TOKEN，所以可以分离出变量名。如果是想仅列出值：</p>
<p>FOR /F &quot;delims== tokens=2&quot; %i IN ('set') DO @echo %i <br />
<br />
tokens=2和前例相同，表示将第二列（由=作为分隔符）作为循环值。 <br />
再来个更有用的例子： <br />
我们知道 date /t （/t表示不要询问用户输入）的输出是象这样的： <br />
<br />
Sat 07/13/2002 <br />
<br />
现在我想分离出日期部分，也就是13： <br />
<br />
for /f &quot;tokens=3 delims=/ &quot; %a in ('date /t') do @echo %a <br />
<br />
实际上把 tokens后面换成1,2,3或4，你将分别得到Sat, 07, 13和2002。注意delims=/后面还有个空格，表示/和空格都是分隔符。由于这个空格delims必须是/f选项的最后一项。 <br />
再灵活一点，象本文开头提到的，将日期用2002-07-13的格式输出： <br />
<br />
for /f &quot;tokens=2,3,4 delims=/ &quot; %a in ('date /t') do @echo %c-%a-%b <br />
<br />
当tokens后跟多个值时，将分别映射到%a, %b, %c等。实际上跟你指定的变量有关，如果你指定的是 %i, 它们就会用%i, %j, %k等。 <br />
灵活应用这一点，几乎没有做不了的事。 <br />
4. 可以用 %~ 操作符将文件名分离成文件名、扩展名、盘符等独立部分 <br />
这个比较简单，就是说将循环变量的值自动分离成只要文件名，只要扩展名，或只要盘符等等。 <br />
例：要将 c:\mp3下所有mp3的歌名列出，如果用一般的 dir /b/s 或 for /r ，将会是这样： <br />
<br />
g:\mp3\Archived\05-18-01-A\游鸿明-下沙\游鸿明-01 下沙.mp3 <br />
g:\mp3\Archived\05-18-01-A\游鸿明-下沙\游鸿明-02 21个人.mp3 <br />
...... <br />
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-阿修罗.mp3 <br />
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-彼岸花.mp3 <br />
g:\mp3\Archived\05-18-01-A\王菲-寓言\王菲-不爱我的我不爱.mp3 <br />
...... <br />
<br />
如果我只要歌名（不要路径和&quot;.mp3&quot;）： <br />
<br />
游鸿明-01 下沙 <br />
游鸿明-02 21个人 <br />
...... <br />
王菲-阿修罗 <br />
王菲-彼岸花 <br />
王菲-不爱我的我不爱 <br />
...... <br />
<br />
那么可以用FOR命令： <br />
<br />
for /r g:\mp3 %a in (*.mp3) do @echo %~na <br />
<br />
凡是 %~ 开头的操作符，都是文件名的分离操作。具体请看 for /? 帮助。 <br />
本文举的例子有些可能没有实际用处，或可用其它办法完成。仅用于体现FOR可以不借助其它工具，仅用DOS命令组合，就可完成相当灵活的任务 <br />
&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=385</link>
			<title><![CDATA[AHCI 全称Serial ATA Advanced Host Controller Interf]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Fri,02 Apr 2010 09:14:04 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=385</guid>
		<description><![CDATA[<p>1.AHCI，全称为Serial ATA Advanced Host Controller Interface（串行ATA高级主控接口），是在Intel的指导下，由多家公司联合研发的接口标准，其研发小组成员主要包括Intel、AMD、戴尔、Marvell、迈拓、微软、Red Hat、希捷和StorageGear等著名企业。AHCI描述了一种PCI类设备，主要是在系统内存和串行ATA设备之间扮演一种接口的角色，而且它在不同的操作系统和硬件中是通用的。 <br />
2.大家都知道，如果要开启SATA硬盘的NCQ功能，必须在主板BIOS内将SATA模式设为AHCI，在这个模式下的SATA硬盘将采用原生方式工作以支持NCQ。不过，如果我们预先在BIOS中将SATA模式设置为STANDARD IDE来安装操作系统的话，那么在后期切换到AHCI后将无法进入操作系统，因为系统无法正确识别硬盘。反过来，在AHCI模式下安装操作系统，却可以在BIOS中自由切换AHCI于STANDARD IDE两种模式，以开启或关闭NCQ功能。 <br />
3.目前SATA比较重要的特性，是通过打开AHCI才能去实现，换句话说，没有打开ACHI的SATA就只能说是单纯提高了外部传输率的IDE。<br />
&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=383</link>
			<title><![CDATA[遇到一个灰常奇怪的问题.]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Thu,25 Mar 2010 10:46:21 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=383</guid>
		<description><![CDATA[<p>环境是win2k3 IIS6<br />
问大家一个非常奇怪的问题..<br />
一个站点的二级目录下有一个index.html,并且仅有这么一个文件<br />
发现用 <a href="http://domain/dir/">http://domain/dir/</a><br />
可以访问..<br />
但是用 <a href="http://domain/dir/index.html">http://domain/dir/index.html</a> 却显示404<br />
其中三级或四级目录中的.html均可访问..</p>
<p>最后将index.html改为index.htm不管是目录还是全URL均可访问.奇怪了.<br />
&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=382</link>
			<title><![CDATA[Awstats在win2003 IIS6下的配置]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Sun,21 Mar 2010 17:38:41 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=382</guid>
		<description><![CDATA[<p>第一步:perl的支持.</p>
<p>ActivePerl-5.10.1.1007-MSWin32-x86-291969.msi 下载地址如下:<br />
<a href="http://downloads.activestate.com/ActivePerl/releases/5.10.1.1007/ActivePerl-5.10.1.1007-MSWin32-x86-291969.msi">http://downloads.activestate.com/ActivePerl/releases/5.10.1.1007/ActivePerl-5.10.1.1007-MSWin32-x86-291969.msi</a>&nbsp;</p>
<p>直接安装:没必要全部安装,仅安装Perl即可.如下图</p>
<p><img alt="" src="http://www.haixiait.com/attachments/month_1003/t2010321164957.jpg" /></p>
<p>一路NEXT ... -&gt; finish ,好了,Perl安装完毕</p>
<p>第二步:AWstats的安装,</p>
<p><a href="http://awstats.sourceforge.net">http://awstats.sourceforge.net</a></p>
<p>点击: http://prdownloads.sourceforge.net/awstats/awstats-6.95.zip 直接下载</p>
<p>有EXE和也有ZIP的,airzen 强列建议手动下zip,解压手动配置.</p>
<p>将zip解压至某个目录,airzen解压在D:\AWStats目录,如下:</p>
<p><img alt="" src="http://www.haixiait.com/attachments/month_1003/r201032117022.jpg" /></p>
<p>第三步IIS的配置</p>
<p>airzen的作法是对AWStats单独配置成一个站点,需要注意如下几点.<br />
<img alt="" src="http://www.haixiait.com/attachments/month_1003/y201032117454.jpg" /></p>
<p>接下来,我们让.pl 可以在IIS中运行,那么就得将perl添加到web服务扩展中.如下图:</p>
<p><img alt="" src="http://www.haixiait.com/attachments/month_1003/i2010321171059.jpg" /></p>
<p>接下来,我们还拐过头配置刚才建立的那个站点(AWstats)..在这个站点上点右键 ,属性.</p>
<p><img alt="" src="http://www.haixiait.com/attachments/month_1003/92010321171544.jpg" /></p>
<p>好了,至此,perl的对IIS站点的支持已经OK.</p>
<p>但是还需要再配置两个东东,一,对于配置文件的更改,在awstats/wwwroot/cgi-bin/awstats.你的站点.conf</p>
<p>airzen上传一个demo,直接改下域名就行了..<a href="http://www.haixiait.com/attachments/month_1003/y2010321172223.txt"><img alt="" border="0" style="margin: 0px 2px -4px 0px" src="http://www.haixiait.com/../../images/download.gif" />点击下载此文件</a>&nbsp;(awstats.localhost.conf里面只需要更改<br />
LogFile,为你配置站点的文件目录及命名规则,<br />
LogFormat = 2 ,这里指IIS日志<br />
SiteDomain=&quot;xxx&quot;,改为你自己的站点<br />
HostAliases=&quot;localhost <a href="http://www.localhost">www.localhost</a> 127.0.0.1 localhost&quot; 这里为你的站点别名,如果没有,可以不用改<br />
)</p>
<p>以上范本中更改后另存为一份.OK,</p>
<p>打开你的awstats站点,http://your-awstats.site:port/awstats/cgi-bin/awstats.pl ,不过这个时候会发生一些小意外</p>
<p><strong>权限问题</strong></p>
<p>注意提示,应该是权限的问题,提示没有读取权限,这时打开你的日志目录,在安全中加入Everyone 读取权限,即可.</p>
<p>这时刷新一下,应该就可以了.</p>
<p>经过airzen的测试,不需要将IIS的日志更改为awstats,指定的12项,也许是偶使用的版本(awstats 6.95)比较新的缘故.</p>
<hr />
<p>&nbsp;</p>
<p><span style="color: #0000ff"><strong>另外附加配置文档中的一些细节,摘自网络:</strong></span></p>
<p>AllowAccessFromWebToAuthenticatedUsersOnly=0<br />
这是只允许授权用户访问，0则任何人都可以访问，1则只有指定用户可以访问，不过遗憾的是IIS上不能<br />
设置，只能在Apach上。<br />
AllowAccessFromWebToFollowingAuthenticatedUsers=&quot;&quot;<br />
上面设置为1之后这个选项就可以指定是哪个用户来访问了，多个用户可以用空格格开。<br />
如：AllowAccessFromWebToFollowingAuthenticatedUsers=&quot;aweige luotuo 猪头 死猫&quot;<br />
AllowAccessFromWebToFollowingIPAddresses=&quot;&quot;<br />
这个就厉害了，只有指定IP才能访问，一样，多个IP用空格分开，比如：<br />
AllowAccessFromWebToFollowingIPAddresses=&quot;127.0.0.1 192.168.1.100&quot;<br />
<strong>精确统计<br />
</strong>因为IIS日志保罗万象，只要是过来访问的他都记下来，而这些访问可能是我们自己测试的，或者是Robot<br />
或者Spider过来抓我们时所留下的脚印等等，因此可能影响awstats分析的准确性。为此，它提供了一个<br />
消极的忽略功能和一个积极的只允许功能（的确非常的完善，忍不住赞一下！）。<br />
忽略功能：<br />
SkipHosts=&quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 忽略来自哪个主机的访问<br />
SkipUserAgents=&quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;忽略哪个UserAgent的访问<br />
SkipFiles=&quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 忽略对哪个文件的访问<br />
SkipReferrersBlackList=&quot;&quot;&nbsp;&nbsp;对来访网址的限制，不过这个最好不要设置，因为设置后你的网站会非常<br />
的慢，至少慢5倍，怕了吧？呵呵<br />
只允许功能：<br />
OnlyHosts=&quot;&quot;<br />
OnlyUserAgents=&quot;&quot;<br />
OnlyFiles=&quot;&quot;<br />
跟上面一样，只是不再是忽略，而是只统计这些访问<br />
<strong>错误处理</strong><br />
良好的错误处理能力是一个完善系统的重要表现，awstats也不例外。一下设置就可以提供详细的错误处<br />
理：<br />
WarningMessages=1&nbsp;&nbsp; 1显示警告信息，0不显示<br />
ErrorMessages=&quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;自定义错误信息<br />
DebugMessages=0&nbsp;&nbsp;&nbsp;&nbsp; 1显示错误调试信息，0不显示<br />
&nbsp;</p>
<hr />
<p><br />
<strong><span style="color: #0000ff">统计数据的自动化更新(在服务器空闲的时段自动更新)</span></strong></p>
<p>虽然可以实现网页端统计更新,但是会比较的慢,占用太多的资源,你完全可以在WINDOWS中的计划任务来实现.</p>
<p>在D:\<strong>awstats\tools/</strong>新建一个批处理文件 就叫updataall.bat吧.内容如下</p>
<p>C:\Perl\bin\Perl.exe awstats_updateall.pl now -awstatsprog=../wwwroot/cgi-bin/awstats.pl -configdir=../wwwroot/cgi-bin</p>
<p>在DOS下执行:</p>
<p>schtasks /create /tn &quot;AWStats UpdateAll Statistics&quot; /tr d:\awstats\tools\updateall.bat /sc daily /st 02:00<br />
同时输入密码,来使此任务生效,即,每天凌晨2:00执行该任务.</p>
<p>OK,至此.一个简单的awstats,配置完成.更多细节可以参考配置文件中的英文说明..</p>
<p>&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=377</link>
			<title><![CDATA[HTML <base> 标签]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Sat,16 Jan 2010 20:21:07 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=377</guid>
		<description><![CDATA[<h1>HTML &lt;base&gt; 标签</h1>
<div>
<h2>定义和用法</h2>
<p>&lt;base&gt; 标签为页面上的所有链接规定默认地址或默认目标。</p>
<p>通常情况下，浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。</p>
<p>使用 &lt;base&gt; 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL，而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 &lt;a&gt;、&lt;img&gt;、&lt;link&gt;、&lt;form&gt; 标签中的 URL。</p>
</div>
<div>
<h2>实例</h2>
<pre>
&lt;head&gt;
<code>&lt;base href=&quot;http://www.w3school.com.cn/i/&quot; /&gt;</code>
<code>&lt;base target=&quot;_blank&quot; /&gt;</code>
&lt;/head&gt;

&lt;body&gt;
&lt;img src=&quot;eg_smile.gif&quot; /&gt;
&lt;a href=&quot;http://www.w3school.com.cn&quot;&gt;W3School&lt;/a&gt;
&lt;/body&gt;
</pre>
<p><a href="http://www.w3school.com.cn/tiy/t.asp?f=html_base_test">TIY</a></p>
</div>
<div>
<h2>HTML 与 XHTML 之间的差异</h2>
<p>在 HTML 中，&lt;base&gt; 标签没有结束标签；在 XHTML 中，&lt;base&gt; 标签必须被正确地关闭。</p>
</div>
<div>
<h2>提示和注释：</h2>
<p class="note"><span>注释：</span>&lt;base&gt; 标签必须位于 head 元素内部。</p>
</div>
<div>
<h2>必需的属性</h2>
<p>DTD 指示此属性允许在哪种 DTD 中使用。S=Strict, T=Transitional, F=Frameset.</p>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 15%">属性</th>
            <th style="width: 20%">值</th>
            <th style="width: 60%">描述</th>
            <th style="width: 5%">DTD</th>
        </tr>
        <tr>
            <td><a title="HTML &lt;base&gt; 标签的 href 属性" href="http://www.w3school.com.cn/tags/att_base_href.asp">href</a></td>
            <td><i>URL</i></td>
            <td>规定页面中所有相对链接的基准 URL。</td>
            <td>STF</td>
        </tr>
    </tbody>
</table>
</div>
<div>
<h2>可选的属性</h2>
<table class="dataintable">
    <tbody>
        <tr>
            <th style="width: 15%">属性</th>
            <th style="width: 20%">值</th>
            <th style="width: 60%">描述</th>
            <th style="width: 5%">DTD</th>
        </tr>
        <tr>
            <td><a title="HTML &lt;base&gt; 标签的 target 属性" href="http://www.w3school.com.cn/tags/att_base_target.asp">target</a></td>
            <td>
            <ul>
                <li>_blank</li>
                <li>_parent</li>
                <li>_self</li>
                <li>_top</li>
                <li><i>framename</i></li>
            </ul>
            </td>
            <td>在何处打开页面中所有的链接。</td>
            <td>TF</td>
        </tr>
    </tbody>
</table>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=374</link>
			<title><![CDATA[微软IIS被发现一个严重安全漏洞]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Sat,26 Dec 2009 17:23:35 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=374</guid>
		<description><![CDATA[<p><strong>一位研究人员发现最新版本的微软互联网信息服务中有一个安全漏洞，能够让攻击者在运行这个流程的Web服务的计算机上执行恶意代码。</strong><br />
据研究人员 Soroush Dalili说，这个安全漏洞存在于互联网信息服务解析代冒号或者分号的文件名的方式中。许多Web应用程序设置为拒绝包含可执行文件的文件夹，如活跃的 服务器网页，这些可执行文件的扩展名通常是&ldquo;.ASP&rdquo;。通过把&ldquo;；.jpg&rdquo;或者其它有益的文件扩展名附加到一个恶意文件，攻击者就能够绕过过滤器并且 有可能欺骗服务器运行这个恶意软件。</p>
<p>对于这个安全漏洞似乎还存在一些分歧。Dalili说，这个安全漏洞影响到所有版本的互联网信息服务。虽然他把这个安全漏洞列为&ldquo;非常严重&rdquo;等级的安全漏洞，但是，安全漏洞跟踪公司Secunia把它分类为&ldquo;不太严重&rdquo;的安全漏洞。这是这家公司安全漏洞五个等级之中的第二级。<br />
<br />
Dalili说，这个安全漏洞的影响是绝对高的，因为攻击者通过在&ldquo;.asp&rdquo;、&ldquo;.cer&rdquo;、&ldquo;asa&rdquo;等可执行文件扩展名后面使用一个分号就能够绕过文件扩展名保护措施。由于互联网信息服务的这个弱点，许多Web应用程序都容易受到文件上载的攻击。<br />
<br />
Dalili介绍了这种攻击的情形。他说，假如一个网站仅接受JPG文件作为用户的头像，用户可以向这个服务器上载自己的头像。现在，攻击者可以向这个服务器上载&ldquo;Avatar.asp；.jpg&rdquo;文件。Web应用程序把这个文件看作是一个JPG文件。因此，这个文件就允许上载到这个服务器。但是，当攻击者打开这个上载的文件的时候，互联网信息服务就认为这个文件是一个ASP文件并且设法使用&ldquo;asp.dll&rdquo;运行这个文件。<br />
<br />
Dalili说，因此，攻击者使用这种方法能够向服务器上载一个Web外壳。大多数上载程序只能控制文件的最后部分作为其扩展名。通过使用这种方法，他们的保护措施就被绕过了。<br />
<br />
Secunia没有解释它的评估结论是如果做出的。但是，这家公司证实这个安全漏洞存在于运行完全使用补丁的带微软互联网安全服务第六版的Windows Server 2003 R2 SP2操作系统的机器中。<br />
<br />
微软发言人称，微软研究人员正在对这个报告展开调查。微软目前还不知道针对这个报告的安全漏洞实施的攻击。 <br />
&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.haixiait.com/article.asp?id=308</link>
			<title><![CDATA[【转载】子网掩码的概念及实际运用]]></title>
			<author>airzen@126.com(airzen)</author>
			<category><![CDATA[操作系统]]></category>
			<pubDate>Thu,07 May 2009 12:00:49 +0800</pubDate>
			<guid>http://www.haixiait.com/default.asp?id=308</guid>
		<description><![CDATA[<p>　　在TCP/IP协议中，SUBNET MASKS（子网掩码）的作用是用来区分网络上的主机是否在同一网络取段内&hellip;&hellip;</p>
<p>&nbsp;</p>
<p>　　在TCP/IP协议中，SUBNETMASKS(子网掩码)的作用是用来区分网络上的主机是否在同一网络取段内。在大型网络中，CLASSA的SUBNETMASKS为255.0.0.0， CLASS B的SUBNET MASKS为255.255.0.0，CLASSC的SUBNETMASKS为255.255.255.0。</p>
<p>　　假如某台主机的SUBNETMASKS为IP地址为202.119.115.78，它的SUBNETMASKS为255.255.255.0。将这两个数据作AND运算后，所得出的值中的非0的BYTE部分即为NETWORKID。运算步骤如下：</p>
<p>　　202.119.115.78的二进制值为：</p>
<p>　　11001010.01110111.01110011.01001110</p>
<p>　　255.255.255.0的二进制值为:</p>
<p>　　11111111.11111111.11111111.00000000</p>
<p>　　AND后的结果为：</p>
<p>　　11001010.01110111.01110011.00000000</p>
<p>　　转为二进制后即为：</p>
<p>　　202.119.115.0</p>
<p>　　它就是NETWORK ID，在IP地址中剩下的即为HOST ID，即为78，这样当有另一台主机的IP地址为202.119.115.83，它的SUBNET MASKS也是255.255.255.0，则其NETWORKID为202.119.115，HOSTID为83，因为这两台主机的NETWORKID都是202.119.115，因此，这两台主机在同一网段内。</p>
<p>　　但是，在实际应用中，可能会有多个分布与各地的网络，而且，每个网络的主机数量并不很多，如果申请多个NETWORKID，会造成IP资源的浪费，而且很不经济，如果我们在SUBNETMASKS上动一下手脚，可以在只申请一个NETWORKID的基础上解决这个问题。</p>
<p>　　比如，我们有三个不同的子网，每个网络的HOST数量各为20、25和50，下面依次称为甲、乙和丙网，但只申请了一个NETWORKID就是202.119.115。首先我们把甲和乙网的SUBNETMASKS改为255.255.255.224，224的二进制为11100000，即它的SUBNETMASKS为：</p>
<p>　　11111111.11111111.11111111.11100000</p>
<p>　　这样，我们把HOSTID的高三位用来分割子网，这三位共有000、001、010、011、100、101、110、111八种组合，除去000(代表本身)和111(代表广播)，还有六个组合，也就是可提供六个子网，它们的IP地址分别为：(前三个字节还是202.119.115)</p>
<p>　　00100001~00111110 即33~62为第一个子网</p>
<p>　　01000001~01011110 即65~94为第二个子网</p>
<p>　　01100001~01111110 即97~126为第三个子网</p>
<p>　　10000001~10011110 即129~158为第四个子网</p>
<p>　　10100001~10111110 即161~190为第五个子网</p>
<p>　　11000001~11011110 即193~222为第六个子网</p>
<p>　　选用161~190段给甲网，193~222段给乙网，因为各个子网都支持30台主机，足以应付甲网和乙网20台和25台的需求。</p>
<p>　　再来看丙网，由于丙网有50台主机，按上述分割方法无法满足它的IP需求，我们可以将它的SUBNETMASKS设为255.255.255.192，由于192的二进制值为11000000，按上述方法，它可以划分为两个子网，IP地址为：</p>
<p>　　01000001~01111110 即65~126为第一个子网</p>
<p>　　10000001~10111110 即129~190为第二个子网</p>
<p>　　这样每个子网有62个IP可用，将65~126分配丙网，多个子网用一个NETWORK ID 即告实现。</p>
<p>　　如果将子网掩码设置过大，也就是说子网范围扩大。那么根据子网寻径规则，很可能发往和本地机不在同一子网内的目的机的数据，会因为错误的相与结果而认为是在同一子网内，那么，数据包将在本子网内循环，直到超时并抛弃。数据不能正确到达目的机，导致网络传输错误。如果将子网掩码设置得过小，那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输，数据包都交给缺省网关处理，这样势必增加缺省网关的负担，造成网络效率下降。因此，任意设置子网掩码是不对的，应该根据网络管理部门的规定进行设置。</p>
<p>　　随着IP地址资源的日趋枯竭，可供分配的IP地址越来越少，往往一个拥有几百台计算机规模的网络只能得到区区几个IP地址，于是，许多人开始采用其他技术来扩展IP空间。</p>
<p>　　1.子网掩码设置</p>
<p>　　如果你所分配的IP地址仅能满足对主机的需求，但远不能满足你欲在局域网中再建若干子网的需要，设置子网掩码就是你不得不采取的措施了。</p>
<p>　　子网掩码同样也以四个字节来表示，用来区分IP地址的网络号和主机号， 默认子网掩码如下表所示：</p>
<p>　　子网掩码(以十进制表示)</p>
<p>　　A类 255.0.0.0</p>
<p>　　B类 255.255.0.0</p>
<p>　　C类 255.255.255.0</p>
<p>　　当IP地址与子网掩码相与时，非零部分即被确认为网络号。</p>
<p>　　假如我们将子网掩码中第四字节最高位起的某些位由0修改成1，使本来应当属于主机号的部分改变成为网络号，这样就实现了我们划分子网的目的。例如你得到了一个C类网络地址198.189.98，按常规，你所有的设备从198.189.98.0到198.189.98.254都将处于同一网络之中，但如果你需要将自己的网络划分成5个子网以便管理，那就必须修改子网掩码255.255.255.0，将此掩码的第四个字节中的前三位再拿出来充当子网掩码，即将第四字节的00000000修改成11100000(十进制数为224)，故应当将子网掩码设置为255.255.255.224。这样我们有001、010、011、100、101、110六种方式与之相与得到不同的网络号(除去000和111作为保留地址不能使用)，各子网的前三个字节仍然是198.189.98。可以知道：如子网掩码的位数越多，能划分的子网数也就越多，但是每个子网的主机数就会越少。子网掩码的划分设置也有一个缺点：划分的子网越多，损失的IP地址也会越多。因为每个子网都会保留全0或全1的两个地址而不能使用。</p>
<p>　　2.动态IP地址设置</p>
<p>　　DHCP(DynamicHostConfigurationProtocol)动态主机配置协议是一种多个工作站共享IP地址的方法。当我们分配到的IP地址数目远小于一个网络工作站的数目时，如果为每个设备都分配一个固定的IP地址，则显然有一部分计算机将不能连入网络。DHCP为我们提供了一个较好的解决方法，其前提条件是其中每一个设备都不是随时都需要连接入网，并且同一时刻上网的设备不会很多。动态IP地址，顾名思义就是每一个设备所取得的IP地址是非固定的，即计算机连入网络时自动申请取得一个合法的IP地址，断开网络时自动归还，以便其他计算机使用。这样，我们可以用较少的IP地址构建较大的网络，也可以增加网络工作站的可移性，如果一台主机从一个子网移动到另一个子网时，由于网络号的不同将修改该计算机的IP地址，否则无法与其他主机通信，而如果我们采用动态IP地址，就会减少网络管理的复杂性。现在DHCP已非常流行，所支持的软件很多，且可以运行于不同机器和平台。目前拨号上Internet的用户就基本上采用这种方法。</p>
<p>　　3.非路由地址</p>
<p>　　在IP地址范围内，IANA(InternetAssignedNumbersAuthority)将一部分地址保留作为私人IP地址空间，专门用于内部局域网使用，这些地址如下表：</p>
<p>　　类 IP地址范围 网络数</p>
<p>　　A 10.0.0.010.255.255.255 1</p>
<p>　　B 172.16.0.0172.31.255.255 16</p>
<p>　　C 192.168.0.0192.168.255.255 255</p>
<p>　　这些地址是不会被Internet分配的，因此它们在Internet上也从来不会被路由，虽然它们不能直接和Internet网连接，但仍旧可以被用来和Internet通讯，我们可以根据需要来选用适当的地址类，在内部局域网中大胆地将这些地址当作公用IP地址一样地使用。在Internet上，那些不需要与Internet通讯的设备，如打印机、可管理集线器等也可以使用这些地址，以节省IP地址资源。</p>
<p>　　4.代理服务器</p>
<p>　　代理服务器其实是Internet上的一台主机设备，它有一个固定的IP地址，当你需要上Internet时，就向该服务器提出请求，代理服务器接受请求并为你建立连接，然后将你所需要的服务返回信息通知你，所有的数据信息和通讯处理都是通过代理服务器的IP地址来完成。这种情况下，我们局域网内部的主机就应使用非路由地址，这样，即能保证内部主机之间的通讯，又能拒绝外来网络的直接访问请求。</p>
<p>　　代理服务器具有以下两个优点：一是如果你请求的数据已被同一网段上的其他人请求过了，那么大多数代理服务器都能从Cache中调用这些数据直接传给你，避免重新连接的时间和带宽;二是代理服务器可以保护你的内部网络不受入侵，也可以设置对某些主机的访问能力进行必要限制，这实际上起着代理防火墙的作用。</p>
<p>　　支持代理服务器的软件也非常多，WinGate、MsProxy等都是非常流行的代理服务器软件。在中国，代理服务器的使用也越来越广泛，中国公众多媒体通讯网(169)其实就是一个巨大的使用代理服务器的例子。</p>
<p>　　5.地址翻译</p>
<p>　　所谓地址翻译实际上是路由器中的一个数据包处理过程。当数据包通过路由器时，地址翻译过程将其中的内部私有IP地址解析出来，将其翻译为一个合法的IP地址。地址翻译过程可以按预先定义好的地址表一一映射翻译，也可以将多个内部私有地址翻译为一个外部合法IP地址。由于网络内每个设备都有一个内部稳定的IP地址，所以这种方法具有较强的网络安全控制性能。</p>]]></description>
		</item>
		
</channel>
</rss>







