# Friday, June 02, 2006
虽然 Apache 的名声可能比 IIS 好,但我相信用 IIS 来做 Web 服务器的人一定也不少。说实话,我觉得 IIS 还是不错的,尤其是 Windows 2003 的 IIS 6(马上 Longhorn Server 的 IIS 7 也就要来了,相信会更好),性能和稳定性都相当不错。但是我发现许多用 IIS 的人不太会设置 Web 服务器的权限,因此,出现漏洞被人黑掉也就不足为奇了。但我们不应该把这归咎于 IIS 的不安全。如果对站点的每个目录都配以正确的权限,出现漏洞被人黑掉的机会还是很小的(Web 应用程序本身有问题和通过其它方式入侵黑掉服务器的除外)。下面是我在配置过程中总结的一些经验,希望对大家有所帮助。
posted on Friday, June 02, 2006 1:13:14 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, May 11, 2006

用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

posted on Thursday, May 11, 2006 9:57:11 AM (China Standard Time, UTC+08:00)  #    Comments [1]
# Monday, April 10, 2006

用下面这个东西类可以在客户端使用HashTable哦,比较喜欢^_^

<script language="javascript" type="text/javascript">
function Hashtable()
{
this._hash = new Object();
this.add = function(key,value){
if(typeof(key)!="undefined"){
if(this.contains(key)==false){
this._hash[key]=typeof(value)=="undefined"?null:value;
return true;
} else {
return false;
}
} else {
return false;
}
}
this.remove = function(key){delete this._hash[key];}
this.count = function(){var i=0;for(var k in this._hash){i++;} return i;}
this.items = function(key){return this._hash[key];}
this.contains = function(key){ return typeof(this._hash[key])!="undefined";}
this.clear = function(){for(var k in this._hash){delete this._hash[k];}}
}
var a = new Hashtable();
a.add("aa");
a.add("bb",2342);
a.add("bb",2342);
a.remove("aa");
alert(a.count());
alert(a.contains("bb"));
alert(a.contains("aa"));
alert(a.items("bb"));
</script>
posted on Monday, April 10, 2006 1:46:00 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Tuesday, March 28, 2006

以下是INETA牛人Stephen Walther的比较测试结论.希望对大家有用

  • DataReadear比DataSet快15%
  • SqlDataReader比OleDbDataReader快50%
  • 用DataReader的ASP风格的表格显示比DataGrid绑定DataReader快60%
  • 用Ordinal的DataReader访问字段比用名字访问快15%
  • DataGrid中用AutoGenerateColumns=true比用显式绑定快24%
  • 尽量用缓存


数据不一定是非常准确的,毕竟硬件方面还是会有些影响的。但是作为提高系统效率的参照应该还是比较有用的。

posted on Tuesday, March 28, 2006 11:31:00 PM (China Standard Time, UTC+08:00)  #    Comments [4]

近一段时间一直忙于公司的项目,无暇来更新技术博客。最近几天将会做一些补充。
公司的服务器在近一个月的时间内时常崩溃,由于我们项目组开发的网站访问量远超过服务器上其他的网站,所以服务器管理员认为是我们的网站程序造成的系统崩溃。但是事实是怎么样的呢?请见以下描述:


服务器管理人员(管):你看服务器的负荷又被你们的网站占了99%,服务器崩溃了。你看一个w3wp.exe进程的cpu消耗是99%。其他客户的网站都是小型程序不可能是他们造成的,肯定是你们造成的。
:我们的网站是不好用了哦,难道真是我们的问题……我回去瞧瞧。(暗地在想,日访问量最多4万的站,不至于让我的程序这样吧)


回去后我不断的修改程序中隐藏的瑕疵,并尽量避免服务器在访问高峰更新程序,但是服务器仍然时常崩溃,频率逐渐提高,最常的时候竟然是一天3次。郁闷……什么原因呢?
今日,服务器管理人员又把我喊过去,说:"你们看看吧,服务器又崩了,你们看看怎么办?我心理就郁闷了,我说你怎么就那么肯定是我们程序的进程造成的呢?"……一阵子罗嗦后,我说:"你把我们的站点和进程池关闭,然后重新启动服务器"……几分钟后,服务器启动了,我们的网站处于关闭状态,结果服务器仍然有个w3wp.exe的cpu消耗居高不下,我说这肯定不是我们的问题了。他们也知道自己判断失误了,但是并没有道歉。我回办公室测试,发现网站的数据维护程序有个一直无法正常使用,因为cpu都被一个非我们网站的w3wp.exe给占了,怎么办?于是自己就开始研究如何处理,并与服务器管理人员一起合作查找那个w3wp.exe的真正归宿,可是任务管理器里只有pdi号没有办法直接看到所属的服务器进程池啊。怎么办?google一下。
找到了微软的文档:Iisapp.vbs:IIS 应用程序查询脚本 于是在服务器上运行iisapp.vbs脚本,并根据pid查出了对应的w3wp的进程池归属,发现是某个客户网站的程序造成的,但是由于早期管理人员并没有将客户网站适当分配进程池,百余个网站在一个默认进程池里,怎么办继续查吧,先按照一定的规则对现有客户网站适当分配进程池,然后利用iisapp.vbs查出是一个济南客户的网站程序造成的,先停掉再说,ok一切正常了。期间发现我们的w3wp.exe进程cpu使用率一直在0-1%之间,而内存消耗也不到130M,心里还是比较满意的。等项目的二期工程时,我们再好好修整一下程序,提高性能并尽量减少服务器负担,以免超大访问量时不至于死掉了,呵呵


相关文章:Iisapp.vbs:IIS 应用程序查询脚本

posted on Tuesday, March 28, 2006 4:15:53 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, January 19, 2006

宝玉的Blog上看到了名为《Sql2005带来的分页便利》的短文,文章很短,但是却让我欣喜万分,MS终于在SQL Server上给解决了大量数据的分页问题了。以前我经常羡慕MySql用户可以使用很简单的办法来处理分页问题,而今天我们在Sql2005上也同样可以很方便的处理分页问题了。

select threadid from
(
select threadid, ROW_NUMBER() OVER (order by stickydate) as Pos from cs_threads
) as T
where T.Pos > 100000 and T.Pos < 100030

以上是原文提供的查询例子,其中最重要的就是ROW_NUMBER()了,这个东西需要结合order by来使用。:)

posted on Thursday, January 19, 2006 10:55:00 PM (China Standard Time, UTC+08:00)  #    Comments [1]
# Monday, January 09, 2006

在使用vbscript进行asp开发时,一些朋友会碰到以下类似的错误:
Microsoft VBscript 运行时错误 '800a000d'
类型不匹配: '*******'
/solweb/sdbottm_right.asp, line 80

错误原因:
该错误是因为在运行iis服务的windows 2003 server上安装了Internet Explorer 6 Service Pack 1 (KB832894)安全更新造成的。

解决方案:
要纠正该问题,请下载并安装Q831167.exe(http://www.microsoft.com/downloads/details.aspx?amp;amp;displaylang=en&familyid=254EB128-5053-48A7-8526-BD38215C74B2&displaylang=en),可以在Windows Server 2003机器上阅读微软知识库831167 http://support.microsoft.com/default.aspx?kbid=831167 了解一些相关信息。

posted on Monday, January 09, 2006 9:09:09 PM (China Standard Time, UTC+08:00)  #    Comments [1]
# Thursday, January 05, 2006

2006年1月份的中国MVP名单已经出炉了,恭喜大家:

http://www.microsoft.com/china/community/Professional/MVP/MVPListMain.aspx

  2006年 1月中国最有价值专家
     [MVPs awarded by January 1st, 2006]
 

董洵 朱长德 金戈 刘海蜀 苏红超
李洪根 杨涛 叶涛 孟宪会 李彦智
王宇虹 李争 金雪根 薛君敖 胡浩
沈荣 宋立桓 林路 钟世亮 吴建荣
卢茂强 黄文中 王辉 张巍 周建平
郗金甲 黄朝阳 赵晓明 陈希章 殷杰
温大文 衣明志 刘彻 蒋晟

很荣幸我跻身与其中,在2006年度我将更努力的学习,与各位技术同仁一起成长……

posted on Thursday, January 05, 2006 4:49:25 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Friday, December 30, 2005
在应用程序中经常需要判断文件的真实类型,以便使用正确的方式打开或者有效控制文件上传类型时,我们需要读取文件的ContentType信息,这里列出一些常见的
posted on Friday, December 30, 2005 3:07:59 PM (China Standard Time, UTC+08:00)  #    Comments [3]