5

你不用ie6就算了,你还要别人不用IE6?
俺抱着十分不解的态度,一群见风便是雨的家伙。
还记得MS的维纳思计划吗?
还记得ff铺天盖地的推广吗?
MS之所以屡推出一个个失败的ie7,ie8吗?
一个成熟的应用所用的技术必须是经过大量的白鼠检验过的,接触过很多成熟的网站项目,哪个不是用sql2000+asp呢?不用怀疑asp的能力。

大家喜欢用什么ff,ggchrom,我不反对,但您至少要明白,他们都是以牺牲内存做代价的。
拿某人的说法就是,ie6必将长期与我们共同存在。

标签:

25

原来在delphi ,我用的是7
new不但是过程,还是函数
本来是手误
var p:pVar;
p:=new(pvar) 和new(p)是一样的。
打开cpu窗口,产生的汇编代码是一模一样的。
帮助中说new 是一个procedure
第一句逻辑意义正确,第二句简练。

标签:,

22

英文大小写,不低碳。从计算机编程的角度来说,我们不得不花大量的时间来处理字符的大小写比较、转换。而且占用26个ascii码表,本来可以用来填充火星文的。一个完全没有必要的选择。
也许有一天,聪明的英文语系的人会去掉大写字母。

标签:

11

from:http://justcoding.javaeye.com/blog/547384
想弄个iis rewrite模块,找了个文章,录于下。

Apache的Mod_rewrite学习 (RewriteCond重写规则的条件)收藏
RewriteCond Syntax: RewriteCond TestString CondPattern [flags]   RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。  TestString是一个字符串,除了包含普通的字符外,还可以包括下列的可扩展结构: (全文…)

标签:,

8

如何编程实现ISAPI筛选器 (呆呆abingle.com原创文章,欢迎保留作者信息转载)

本文将详细地讲解如何制作isapi筛选器,以iis6.0为实验平台,结合实例代码,讲讲isapi(isapiFilter)筛选器制作。水平有限,有些地方谨凭主观臆测。

isapi传统意义应该是isapiExtention,是与cgi(但比cgi效率高)相并列的一组概念,与filter是两种完全不同的概念。这是微软一种不负责任的定义,Internet Server Application Programming Interface,不做深究。

isapifilter是iis的一种回调机制。

做一个dll,只要实现两个导出函数就可以被iis加载。
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
ver是一个纪录,传递描述和一些参数(80-ssl类型,优先级,以及需要得到的通知类型)
Function HttpFilterProc(Var pfc: THTTP_FILTER_CONTEXT;NotificationType: DWORD; pvNotification: pointer): DWORD; Stdcall;
pfc是一个当前过滤器的环境纪录,notificationtype,就是上面所说的通知类型,pvnotification一个数据指针,依据不同的通知类型而有不同的定义。

上面两个导出函数实现了就可以正常工作。
Function TerminateFilter (dwFlags : DWORD): BOOL stdcall;
这个也可以导出,用于iis释放filter时做一些清理收场工作,可有可无。

下面为代码:
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
Begin
Ver.lpszFilterDesc := ‘dyydyysoft For iis5-6′;
Ver.dwFilterVersion := MakeLong(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
Ver.dwFlags := SF_NOTIFY_NONSECURE_PORT //非ssl
Or SF_NOTIFY_SECURE_PORT //ssl
Or SF_NOTIFY_ORDER_DEFAULT //缺省优先级,按照msdn上说 ,default应该是中优先级,但isapi4中为low,可以手工修正。当然也无所谓,优先级只是排定几个isapifilter加载时的顺序,谁也不会往筛选器上加几个,影响iis效率的。
Or SF_NOTIFY_URL_MAP ;//拦截的通知类型,这里指定了,才会在后面的httpfilterproc回调中得到宿主iis的通知。
Result := True;
End;

delphi中怎么导出函数呢?export or exports 有什么区别? 其实我也不明白。查看帮助,其实export是16位编程用的导出函数的方法,而32位编程用exports导出。
所以function a();bool;stdcall;export;不能导出函数,只是为了向前兼容,要用exports导出。如下:
exports funca,funcb;

好了,下面是一个完整的代码,编译后只有15.5K,只是简单注册了下通知,而没有实际功能。
_____________________________________________________________________

library IISfilter;
uses ISAPI4,Windows;
Function GetFilterVersion(Var Ver: THTTP_FILTER_VERSION): BOOL; Stdcall;
Begin
Ver.lpszFilterDesc := ‘dyydyysoft For iis5-6 abingle.com’;
Ver.dwFilterVersion := MakeLong(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
Ver.dwFlags := SF_NOTIFY_NONSECURE_PORT //非ssl
Or SF_NOTIFY_SECURE_PORT //ssl
Or SF_NOTIFY_ORDER_DEFAULT //缺省优先级,按照msdn上说 ,default应该是中优先级,但isapi4中为low,可以手工修正。当然也无所谓,优先级只是排定几个isapifilter加载时的顺序,谁也不会往筛选器上加几个,影响iis效率的。
Or SF_NOTIFY_URL_MAP ;//拦截的通知类型,这里指定了,才会在后面的httpfilterproc回调中得到宿主iis的通知。
Result := True;
End;
Function HttpFilterProc(Var pfc: THTTP_FILTER_CONTEXT;NotificationType: DWORD; pvNotification: pointer): DWORD; Stdcall;
begin
Result := SF_STATUS_REQ_NEXT_NOTIFICATION;//继续处理。
end;
Exports
GetFilterVersion,
HttpFilterProc;
begin
end.
_______________________________________________________________________________________

(全文…)

标签:,

28

去除遨游浏览器的”使用遨游下载”
用reshack打开maxthon.ex用reshack打开maxthon.exe ,找到所有包括DOWNLOADALL BY MX和Download by Maxthon的菜单项,删除之.

标签:

18

deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码;
zlib(RFC1950):一种格式,是对deflate进行了简单的封装,他也是一个实现库(delphi中有zlib,zlibex)
gzip(RFC1952):一种格式,也是对deflate进行的封装。

gzip = gzip头 + deflate编码的实际内容 + gzip尾
zlib = zlib头 + deflate编码的实际内容 + zlib尾

因最近在做一些关于网页解码方面的事情,压缩都是gzip,deflate.

deflate返回的就是zlib格式。浏览器可以解压,但ie系列要求必需是纯正的deflate格式,故解压时必须手动的添加一个头和尾,原来采集finance.sina.com.cn上的数据就是deflate格式,今天看了下,改用gzip压缩了。当时,只在deflate数据前加了两个字节:#$78#$9c,就可以用zlib解压了。

gzip格式和deflate相比,有了一些头信息:
GZIP文件由1到多个“块”组成,实际上通常只有1块。每个块包含头、数据和尾三部分。块的概貌如下:

+—+—+—+—+—+—+—+—+—+—+========//========+===========//==========+—+—+—+—+—+—+—+—+
|ID1|ID2| CM|FLG| MTIME |XFL| OS| 额外的头字段 | 压缩的数据 | CRC32 | ISIZE |
+—+—+—+—+—+—+—+—+—+—+========//========+===========//==========+—+—+—+—+—+—+—+—+
1. 头部分
ID1与ID2:各1字节。固定值,ID1 = 31 (0×1F),ID2 = 139(0×8B),指示GZIP格式。
CM:1字节。压缩方法。目前只有一种:CM = 8,指示DEFLATE方法。
FLG:1字节。标志。
bit 0 FTEXT – 指示文本数据
bit 1 FHCRC – 指示存在CRC16头校验字段
bit 2 FEXTRA – 指示存在可选项字段
bit 3 FNAME – 指示存在原文件名字段
bit 4 FCOMMENT – 指示存在注释字段
bit 5-7 保留

MTIME:4字节。更改时间。UINX格式。
XFL:1字节。附加的标志。当CM = 8时,XFL = 2 – 最大压缩但最慢的算法;XFL = 4 – 最快但最小压缩的算法
OS:1字节。操作系统,确切地说应该是文件系统。有下列定义:
0 – FAT文件系统 (MS-DOS, OS/2, NT/Win32)
1 – Amiga
2 – VMS/OpenVMS
3 – Unix
4 – VM/CMS
5 – Atari TOS
6 – HPFS文件系统 (OS/2, NT)
7 – Macintosh
8 – Z-System
9 – CP/M
10 – TOPS-20
11 – NTFS文件系统 (NT)
12 – QDOS
13 – Acorn RISCOS
255 – 未知

额外的头字段:
(若 FLG.FEXTRA = 1)

+—+—+—+—+===============//================+
|SI1|SI2| XLEN | 长度为XLEN字节的可选项 |
+—+—+—+—+===============//================+
(若 FLG.FNAME = 1)

+=======================//========================+
| 原文件名(以NULL结尾) |
+=======================//========================+
(若 FLG.FCOMMENT = 1)

+=======================//========================+
| 注释文字(只能使用iso-8859-1字符,以NULL结尾) |
+=======================//========================+
(若 FLG.FHCRC = 1)

+—+—+
| CRC16 |
+—+—+
存在额外的可选项时,SI1与SI2指示可选项ID,XLEN指示可选项字节数。如 SI1 = 0×41 (‘A’),SI2 = 0×70 (‘P’),表示可选项是Apollo文件格式的额外数据。

2. 数据部分
DEFLATE数据格式,包含一系列子数据块。子块概貌如下:

+……+……+……+=============//============+
|BFINAL| BTYPE | 数据 |
+……+……+……+=============//============+
BFINAL:1比特。0 – 还有后续子块;1 – 该子块是最后一块。
BTYPE:2比特。00 – 不压缩;01 – 静态Huffman编码压缩;10 – 动态Huffman编码压缩;11 – 保留。
各种情形的处理过程,请参考后面列出的RFC文档。

3. 尾部分
CRC32:4字节。原始(未压缩)数据的32位校验和。
ISIZE:4字节。原始(未压缩)数据的长度的低32位。
GZIP中字节排列顺序是LSB方式,即Little-Endian,与ZLIB中的相反。

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。即MS的错误deflate (raw deflate).zlib头第1字节一般是0×78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0×7801,python zlib.compress()结果头部为0×789c。

注:以上文字属于多段摘抄,非原创。收录于此,感谢原作者们。

标签:, ,

5

360/50的结果是多少?

(A) 7……1    (B) 70……1 (C) 7……10
我竟然选了A,晕了。
360/50=36/5=7……1 ,选(A)
你会算错吗?

标签:

1
2011卡塔尔亚洲杯赛程
A组赛程:
  2011-1-7:卡塔尔 VS 乌兹别克
  2011-1-8:科威特 VS 中国
  2011-1-12:中国 VS 卡塔尔 乌兹别克 VS 科威特
  2011-1-16:卡塔尔 VS 科威特 中国 VS 乌兹别克
  B组赛程
  1-9 日本 VS 约旦 沙特 VS 叙利亚
  1-13 叙利亚 VS 日本 约旦 VS 沙特
  1-17 约旦 VS 叙利亚 沙特 VS 日本
  C组赛程
  1-10 印度 VS 澳大利亚 韩国 VS 巴林
  1-14 巴林 VS 印度 澳大利亚 VS 韩国
  1-18 澳大利亚 VS 巴林  韩国 VS 印度
  D组赛程
  1-11 朝鲜 VS 阿联酋 伊拉克 VS 伊朗
  1-15 伊朗 VS 朝鲜  阿联酋 VS 伊拉克
  1-19 阿联酋 VS D4 伊拉克 VS 朝鲜
  1/4决赛
  1-21 QF1(A组第1vsB组第2) QF2(B组第1vsA组第2)
  1-22 QF3(C组第1vsD组第2) QF4(D组第1vsC组第2)
  半决赛
  1-25 QF1胜者vsQF胜者 QF2胜者vsQF4胜者
  决赛
  1-28 三四名决赛
  1-29 冠亚军决赛

标签:

14
十二

移动,还是做手机算了。

铁通,还是做你那个打不通固话得了。
这些网,你用了会很头痛。移动,铁通,没有自己的骨干网,用得心都会滴血。
全是通过自己的代理,或者网络转换到骨干网上。
铁通更牛,把上传速度限制了,下BT的人要急死。
明年用联(网)通的算了,10M光纤到户,600元包年,只时有时连接电信骨干有些问题。
真正好用的还是电信!

标签:

 
© 呆呆的博客