|
|
2006年12月19日
用SQL Server2005同义词链接Oracle数据库可以将Oracle中的表,视图等映射到SQL2005中,直接在SQL2005中操作Oracle的数据,非常简单方便。
下面具体一部一部讲解如何实现的。
环境:Windows2005+SQL2005,数据库名字为amd
Oracle 9i,服务器IP:10.**.***.** 服务名 inter
第一步:在SQL2005服务器上安装Oracle9i客户端,要链接Oracle必须安装Oracle的客户端才可以使用。具体安装步骤不多说了。
第二步:配置Oracle服务器的链接。在安装好客户端后(假设安装在D:\oracle目录),将D:\oracle\ora90\network\ADMIN\tnsnames.ora文件新建一个 MIS 修改HOST=10.****** 和SERVICE_NAME = inter.具体参见http://blog.csdn.net/studyzy/archive/2006/12/08/1434616.aspx 修改完成后重启服务器。
第三步:在SQL2005中建立链接服务器。登录SQL2005后在服务器对象->链接服务器上右键,新建。选择驱动OLEDB Provider for Oracle,填写链接服务器“TEST”产品名称Oracle,数据源“MIS”。然后在安全性选项卡中新建用户“sa”,远程用户密码就是Oracle的用户名密码。点击确定完成链接服务器的建立。
第四步:添加同义词。新建查询,输入
USE [amd]
GO
CREATE SYNONYM [dbo].mis_vendor FOR [TEST]..[MIS].MIS_VENDOR
GO
这样就可以将同义词添加到数据库中。注意后面的MIS是用户名(架构名)MIS_VENDOR是表名,这两个必须大写。
第五步:测试结果,运行select * from mis_vendor 可以得到结果。
2006年10月12日
大家都知道用账户XXXX@163.com发送邮件到study2y@dormforce.net的时候,是163的服务器通过SMTP协议将邮件发送到DormForce邮箱的,但是163怎么知道DormForce这个邮件系统的IP啊?
猜想1:以前设在Foxmail的时候设置SMTP服务器可以设置为smtp.163.com,那么就可以同样认为163是发邮件到smtp.dormforce.net这个域名的服务器去了,但是我们根本没有smtp.dormforce.net这个域名啊。所以这个猜想不成立。
猜想2:我们在设置邮件服务器的时候有些是设置为mail.xxx.com。难道说163是把邮件都投到了mail.dormforce.net这个域名下面。有可能!ping 这个域名指向的是195,既然有这个域名那肯定有他的作用。
猜想3:163把邮件发到我们域名申请的DNS那儿,那儿再把邮件对Dormforce.net 下面的所有二级域名进行广播。
到底是怎么回事还不是很了解。有待解决。
2006年9月25日
<a href='javascript:Test()'>ttttt</a>与<input type="button" value="ttttt" onclick="Test();";/>居然在执行上会有所不同.
最近在写音乐站,做了一个播放器,这个东西可花了我好多时间,最后终于在html代码中实现了mp3播放器.但是在把本地html中文件嵌入到服务器aspx中时就出了问题.随便点暂停,快进...都要跳到下一首歌曲.郁闷了很久,找了半天.终于找到原因了.原来在本地写测试代码的时候是通过button来调用Javascript,而在网站上,由于页面的需要就通过a href 来调用.原因就出在这儿,居然这两个调用函数后会产生不同的结果,具体原理不明白.
2006年9月20日
以前上传音乐下载文件等使用的FTP都是到SourceForge上去找的,现在好了,VS2005对WebRequest进行了扩展,除了以前使用的Http类以外还多了FtpWebRequest。现在我们就可以不用第三方的FTP类库了。
FtpWebRequest实现下载文件的方法如下:
Stream stream = null;
StreamReader reader = null;
try
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftp://202.115.22.138/test.txt);
ftpRequest.Credentials = new NetworkCredential("sa", "studyzy");
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
stream = ftpResponse.GetResponseStream();
reader = new StreamReader(stream, Encoding.Default);
string txt = reader.ReadToEnd();
return txt;
}
catch
{
return "读取FTP文件失败";
}
finally
{
if (reader != null) { reader.Close(); }
if (stream != null) { stream.Close(); }
}
以上代码只是将FTP中的文本文件读取到内存中,要保存到硬盘只需要使用StreamWriter 。同样的方法可以实现FTP的其他功能。
2006年9月14日
这段时间在做一个编码转换的程序,其中用到了一个SDK,是以DCOM形式发布的。把这个DCOM添加到引用中,用VS2005编写成一个WebService程序,没有多久就成功了,本以为大功告成,可是接下来的麻烦就来了。
在将我的WebService程序发布添加到IIS中去以后,编码就无法完成!同样的代码,在粘贴到Windows程序中写了一个测试代码运行又一切正常。同样的代码WindowsForm中运行正常,在IIS中就无法使用这个问题以前也遇到过,一般是权限的问题。于是把AspNet用户的权限改为管理员权限还是不能运行。这个就麻烦了,知道是权限问题却不知道到底哪儿点权限有问题,郁闷。
打开事件查看器,发现里面有如下的系统错误日志:
DCOM 遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。 ”,试图以参数“”启动服务 StiSvc 以运行服务器:
{A1F4E726-8CF1-11D1-BF92-0060081ED811}
这个日志已经告诉我们了,错误就出在DCOM的权限上。原来以WindowsForm或在VS2005中的Web项目运行的时候,调用这个DCOM的是当前操作用户的权限,所以一般也没有问题,但是用IIS调用的时候就涉及到用户 IUSR_××××,IWAM_×××,Network Service 等用户权限,由于这些用户的权限在各个配置中都比较低,所以造成如文件不能写入,DCOM不能调用等错误。
我们这儿的解决办法其实也不复杂,到注册表中搜索提示的{******-*****}这个ID,可以找到这个DCOM的名字,然后运行中输入dcomcnfg打开组件服务,然后找到这个DCOM和相关调用的DCOM,将其权限中添加Network Service,把这个用户权限什么远程启动,远程激活之类的都打开。然后记住一定要重启机器,这样我们就可以在IIS中调用DCOM了。
2006年9月9日
最近已经把栋力无限的Web服务器换了.更换后网站由于权限或其他设置的问题请联系我.
目前就是发帖还有点问题.
2006年9月5日
最近想研究一下Bug跟踪,好在以后的项目中得到应用,花了几个晚上终于搞出来一个。Bug跟踪的软件还是比较多,我第一个见到的是Microsoft的 Raid4.5。不过这个东西我网上找不到软件也找不到资料。听说比较有名的是Bugzilla,但是安装复杂。另外还有一些国产货如BugFree,BugMan,开源我的推荐是mantis,听说比bugzilla好,也比jira好,是2000年左右开发一直到现在都在更新的项目在错误追踪系统中,Mantis绝对是个轻量级的工具,无论安装还是配置或使用,正如它自己的目标中所宣称的。但是,对一个中小型的项目来言,功能够用。
mantis,严格遵循缺陷的生命周期,灵活的权限控制。
使用之前,先了解一下Mantis基本特性:
l 个人可定制的Email通知功能,每个用户可根据自身的工作特点只订阅相关缺陷状态邮件;
l 支持多项目、多语言;
l 权限设置灵活,不同角色有不同权限,每个项目可设为公开或私有状态,每个缺陷可设为公开或私有状态,每个缺陷可以在不同项目间移动;
l 主页可发布项目相关新闻,方便信息传播;
l 方便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;
l 缺陷报告可打印或输出为CSV格式,0.18.0版:支持可定制的报表输出,可定制用户输入域;
l 有各种缺陷趋势图和柱状图,为项目状态分析提供依据,如果不能满足要求,可以把数据输出到Excel中进一步分析;
l 流程定制方便且符合标准,满足一般的缺陷跟踪。
0、介绍
Mantis是一个基于php/MySQL/web的开源的错误追踪系统。
Mantis中的bug追踪及处理和管理流程参考下图。

默认的mantis用户类型及其权限叁看下表,具体使用时可据需要修改名称及增删用户类型),
| |
View Bug |
Report Bug |
Update Bug |
Assign Bug |
Resolve Bug |
Close Bug |
Reopen Bug |
Delete Bug |
| Viewer |
Y |
N |
N |
N |
N |
N |
N |
N |
| Reporter |
Y |
Y |
N |
N |
N |
N |
N |
N |
| Updater |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
N |
| Developer |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
| Manager |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
| Administrator |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
1、下载
Mantis是一款开源软件,可以从SourceForge上下载,最新版本为1.0.5,刚发布不久。安装要求PHP版本为4.0.3 或以上,MySQL版本为3.23.2或以上(它计划在其2.0版本中支持其它关系数据库)。
2、安装
我采用的是在Windows2003环境下,Apache+PHP+MySql的方式进行的,具体怎么在Windows下搭建这个环境我就不用多说了,百度一下到处都是。
安装好了我们要运行的平台接下来就是安装Mantis了。由于Mantis的对中文的支持不是很好,所以安装过程还是有的复杂。若用网上默认的方式进行安装就会出现乱码或者根本无法写入中文信息的问题。通过一个晚上的摸索,我总结出如下的方法:
1,MySql在安装好进行配置的时候,一定要将字符编码改为UTF-8,这样保存中文到数据库的时候才不会报错。
2,使用一个小软件(附件中),将Mantis文件夹下的所有PHP文件由GB编码批量转换为UTF8编码。注意,这里有一个文件不能这样转,那就是lang文件夹下的strings_chinese_traditional_utf8.txt,如果这个文件也转了的花最后网页上会全是乱码。
3,将Mantis这个文件夹放到PHPWeb目录中,这样就可以通过http://localhost:8080/mantis/index.php访问Mantis项目了。
4,第一次访问index.php会让你配置数据库,然后他就会在MySql中生成他使用的数据库bugtracker。同时也会修改掉Mantis目录下的配置文件config_inc.php。
5,打开config_inc.php,这里就保存了刚才配置的MySql的连接配置。在其中添加如下代码:
$g_return_path_email = 'admin@example.com';
$g_default_language = 'chinese_simplified_utf8';
$g_phpMailer_method = 2;
$g_smtp_host = '202.115.22.195';
$g_smtp_username = 'studyzy';
$g_smtp_password = '密码';
到此,我们的Mantis配置安装就结束了,而且也不会有中文乱码的问题。
6,测试:再次输入index.php,这个时候将不会再出现要求数据库配置的页面,
如果出现登录页面,则一切OK!
3、应用
以administrator用户登录,密码为root,新建一个用户,权限为administrate。以新用户登录,删除administor.
同时,将安装目录/mantis下admin目录删除。
[内有附件]
2006年8月26日
最近,周鸿祎推出了一个安全卫士360免费软件,能够除掉大部分的病毒流氓插件。各大IT网站和媒体有赞有骂。最近qihoo又和alibaba打开官司了,挺是热闹。今天和大家一块儿来分析一下周鸿祎的安全卫士360
一、名字分析:
安全卫士360这个名字不够创新,叫安全卫士的软件老早就有了。后面加了一个360,为什么不加365呢?不知道是不是故意要放过一部分。
据说,安全卫士放过了几个关系好的或者收购的插件,如果能够一块儿干掉的话(让软件分析出来,用户选择删除还是留得形式),周鸿祎的身板会更直一些。
二、试用感受:
软件非常小,不到1M、几秒钟就下载完了。安装好一试用,吓我了一跳。因为它发现我的电脑里面居然还中了不少病毒插件。要知道,我每天上网的时候,防病毒插件方面是非常卡非常谨慎的。能够发现连卡巴斯基等软件都发现不了的病毒插件,确实够牛!
按照其官方说法,确实能够除掉170种病毒插件,这个数据目前还是最NB的。
以前经常用摩法兔子来修理病毒插件,但是后来摩法兔子变成流氓兔子了,安装的时候不敬过用户同意就自己擅自修改用户的注册表,强行把主页设置成haokan123,所以吓的我每次用兔子修理掉病毒插件之后,还有花很长时间来手工修理这个流氓兔。
从使用感受上来讲,安全卫士360比兔子要强很多,站到普通网民的利益来考虑,安全卫士360还是值得推荐的,起码可以帮助大家消灭掉绝大部分的病毒插件和流氓插件。
三、推广策略分析:
安全卫士360的推广和卡巴斯基拉上了关系,只要下载使用安全卫士360、可以获得使用正版卡巴斯基半年。这招非常好,一举夺得。
1、卡巴斯基是世界顶尖的杀毒软件,和其合作,形象上得到了保证。
2、卡巴斯基很优秀,但是国内的正版用户太少了,借此机会让用户免费试用上半年,估计大部分用户都离不开了,对卡巴斯基的推广也是有非常大的帮助的。
这个软件是以qihoo的名誉推出来的,笔者认为这不是一个太好的策略,因为这样会遭到各方的流氓病毒插件公司的围剿,引来众多的是非。
如果这个产品是一个软件是以卡巴斯基名义推出来的、或者是一个独立的公司推出来的,估计效果上会更加的好一些。
目前,迅雷网站首页没有推荐安全卫士360,而是推荐的是魔法兔子,有点奇怪。为什么借用资源大力来推呢?
也许是因为一些顾虑吧,顾虑多来纠纷,纠纷起源于利益之争。
四、各方利益分析:
1、针对广大普通的网民而言,周鸿祎办了一件大好事,为广大用户解决了不少烦恼,值得我们大家佩服。这是一句公道话,媒体上骂周鸿祎的牛人们估计骂完还是要用一用这个软件的。因为骂是因为公司安排。没办法!
2、针对靠流氓插件和病毒插件致富的公司而言:周鸿祎办了一件大坏事,因为周鸿祎这种做法等于废其功力、断其财路。不过这些公司活该,方法你们是学习周鸿祎的,但是学习的走火入魔了,就是你们的不对了。
最早的3721是一个标准的插件,因为它的功能对底端网民还是有一定好处的。但是后来有了竞争,面对竞争,为了抢站市场而采取的推广方法上就开始流氓了,周鸿祎也说现在的3721很流氓,把马云给气晕了。
而这些后来的跟进者呢?把插件变成了流氓插件,然后又把流氓插件进化成病毒插件,最后干脆直接修炼成了病毒。不给用户一点好处,强制安装、自动伪装、无法卸载、导致用户系统出问题、强行弹出广告……
走火入魔的下场是很惨的,被废武功了总比最好突然死掉要好一些!
3、对qihoo公司而言:帮助其铲掉各方竞争对手插件,提高之身在网民心中的形象。另外也可以帮周鸿祎出以下在yahoo中受的气。
从目前周鸿祎的布局来看,他不急于让他控制的这些网站赚钱,靠这个软件赚钱应该不是目的。
五、前途命运分析:
这个软件目前的争议太多了,争议会导致以下结果:
1、 媒体的频繁曝光,会让越来越多的人知道这个软件,并且会下载使用这个软件。上次的迅雷事件就是一个很好的说明。
2、 因为众多方面人士的关注,可以有效地防止安全卫士360以后有不轨行为。
3、 如果能够良性发展,可以逐步发展成为一个公益软件、如果能够成为这样一个软件的话,是最好的。可以靠各方赞助维持开发成本。
安作者王通要求给出 出处:http://ufoer.blog.ccidnet.com/blog/ccid/do_showone/tid_72613.html
360安全卫士下载地址:http://www.360safe.com/
2006年8月21日
大家说到QQ协议都觉得很神秘,是因为QQ不像MSN或者ICQ协议都已经官方公布了,而QQ的没有公布。研究
它的人也不是特别的多,虽然已经有了基于QQ协议所写成的第三方软件 foicq, qq plugins for gaim,
LumaQQ,但是由于他们是基于二进制Stream的协议过于复杂,大家阅读代码也有一定的难度,再加上网络
上解析QQ协议的文章也不是十分多,所以基于QQ网络协议的应用程序也是寥寥无几的。现在我就把基于HT
TP的QQ协议进行一个粗浅的剖析,希望对大家有所帮助。源码部分就用我喜欢的DELPHI和现在比较流行的
C#语言对QQ协议的实现进行具体分析。
1、找寻支持QQ HTTP协议的服务器。
大家也许会被一些假像所迷惑,也许会认为QQ的HTTP服务器是基于80口进行通信的(如:218.17.209.23:
80),其实不然,正真基于HTTP的服务器应该是:http://tqq.tencent.com:8000,它是一个通过8000口
进行通讯的服务器。
由于QQ的HTTP服务器并不支持HTTP协议中GET方法,它支持POST方法。所以我们要给QQ的HTTP协议传参数
,那么就必需要用POST方式才行。
2、C#和DELPHI是实现HTTP的POST方法的通信。
C#:
C#里System.Web空间下提供了一个叫做WebClient的对象,使用此对象就可以使C#直接对服务器发送WEB
客户端的请求。那么我们要对服务器提交POST方法那么就必须使用其UploadData()方法才行。首先把要请
求的信息先转换为字节(因为POST提交的是字符的流数据),然后再做为UploadData()的参数。使用Uplo
adData()进行数据提交,最后返回,POST的回馈信息。如下:
WebClient _client = new WebClient();
string postValues = "VER=1.0&CMD=Query_Stat&SEQ=12321&UIN=29501213&TN=50&UN=0";
Byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postValues);
Byte[] pageData = _client.UploadData(Host,"POST",byteArray);
这样,我们就利用C#进行了一次HTTP的POST方法提交了。
DELPHI:
Delphi里我们利用一个比较流行的第三方VCL,INDY HTTP(这个组件D6,D7里面自带)进行HTTP通信。
使用其的POST方法便可以进行HTTP的POST通信,因为组件比较好用,我就不在其描述具体的过程了。大家
可以参考以下代码:
function PostWebPage(url,para:String;TimeOut:Integer):String;
var
tmpWeb:TIdHTTP;
retrun:String;
Proxy:String;
i:Integer;
paralist:TStrings;
begin
retrun:='';
try
paralist:=TStringList.Create;
paralist.Text:=_Replacing(para,'&',#13#10);
tmpWeb:=TIdHTTP.Create(nil);
tmpWeb.ReadTimeout:=TimeOut;
for i:=1 to 3 do
begin
try
retrun:=tmpWeb.Post(url,paralist);
except end;
if retrun<>'' then break;
end;
finally
tmpWeb.Disconnect;
FreeAndNil(tmpWeb);
FreeAndNil(paralist);
end;
Result:=retrun;
end;
值在传入、返回时,其是基于UTF-8进行的,C#显示中文是很常,而DELPHI就要进行UTF-8的转换了。大家
可通过Utf8ToAnsi()、AnsiToUtf8()进行转换。(编码转换是C#的优越性之一)
3、实现QQ的用户登录。
在QQ通信中用户必需要登录后才可以进行互相发送信息等。QQ的登录是很关键的,大家所看到的用户在线
,并不是用户的QQ一直连接着服务器,而是定时发送消信给服务器,证明自己还连着线,如果超出时间QQ
就认为用户已经掉线了。
在登录协议中,QQ的密码是用标准的MD5来进行加密,DELPHI的用户只需要下个MD5加密模块就可以了,而
C#自已带有,但是直接用不了,必需进行处理后,才能使其变成标准的MD5,处理代码如下:
public static string MD5(string toCryString)
{
MD5CryptoServiceProvider hashmd5;
hashmd5 = new MD5CryptoServiceProvider();
return
BitConverter.ToString(hashmd5.ComputeHash(Encoding.Default.GetBytes(toCryString))).Replace("
-","").ToLower();//asp是小写,把所有字符变小写
}
了解QQ是如何对用户密码加密后,那么我们就开始真正,解析QQ的HTTP登录协议了,我们把协议当传POST
的参数传给服务器,而服务器则回馈相应的信息给客户端:
传入协议:
VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5=1&LC=9326B87B234E7235
VER是用来说明QQ协议的版本,CMD是说明协议的命令,Login就是指QQ的登录了,SEQ是他的为了防止重
复发送而设定的一个标记,一般我们取当前时间数值的一段放入即可。(C#:DateTime.Now.Ticks.ToStr
ing().Substring(7,7) DELPHI:CopyStr(inttostr(GetTickCount()),1,5)),UIN是说明你当前要登录
的用户QQ号,PS,是MD5加密过后的密码的值。
返回协议:
VER=1.1&CMD=Login&SEQ=11281&UIN=&RES=0&RS=0&HI=60&LI=300(成功)
RES为0表示成功返回,RS为0表示登录成功。
VER=1.1&CMD=Login&SEQ=11422&UIN=315103947&RES=0&RS=1&RA=登录失败
RS为1表示登录失败,那么就会出现提示信息RA说明原因。
4、获得QQ名单。
如果您加了您的好友,那么您的好友就会放入你的QQ的好友名单里面,那么我们要得到QQ名单就必需给QQ
服务器发送得到好友名单的协议(我就不从复已知的参数了):
VER=1.1&CMD=List&SEQ=&UIN=&TN=160&UN=0
服务器得到协议后如果成功则返回:
VER=1.1&CMD=LIST&SEQ=43661&UIN=29501213&RES=0&FN=1&SN=24&UN=561256,1943497,....
UN后面则是您好友的QQ号码,每个号码都由,进行分开。那么我们只需要得到UN后面的代码,把它列表化
就OK了。C#可以用string.Split(',')把值放入列表进行处理,而DELPHI可以使用Split()把数值放入TStr
ings里进行处理。
5、获得QQ好友在线名单
获得QQ好友在线名单,跟获得好友名单差不多,唯一不同的是用的命令不同用的是Query_Stat,协议如下
:
VER=1.1&CMD=Query_Stat&SEQ=&UIN=&TN=50&UN=0
服务器得到协议后如果成功则返回:
VER=1.1&CMD=QUERY_STAT&SEQ=-1&UIN=29501213&RES=0&FC=141,270,270,&FN=1&SN=3&ST=10,10,10,&UN=1
2327207,24259132,29501213,&NK= □,微程,鶹鸑,&
FC为QQ头像的的ID,如的头像ID为270,那么其头使用的图片为91.bmp,其算法为ID/3+1。ST为QQ用户的状
态,10为上线,20为离线,30为忙碌。UN为在线用户的QQ号,NK为在线用户的QQ昵称。ST,UN,NK,每个
逗号隔开的数据相互对应。在得到消息后如果用的是DELPHI语言,那么要用Utf8ToAnsi()进行转换,不然
会出现乱码。
6、得到QQ用户的信息。
如果要看到QQ用户的真实名称,MAIL,年龄,个人说明等信息,那么我们必需要向服务器发送得到好友信
息的信息:
VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=2&UN=
UN为要查看用户信息的QQ号。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=GETINFO&SEQ=12707&UIN=415103947&RES=0&AD=云南昆明&AG=0&EM=Microprogramer@hotmail
.com&FC=270&HP=msger.org(建设中...)&JB=程序员&LV=2&PC=650000&PH=0871-6466529&PR=网络为媒%252
c关系为本%252c信息为财%252c客户为主.%0d%0a&PV=云南省&RN=刘X&SC=社会大学&SX=0&UN=24259132&NK=
微程
AD用户的联系地址,AG为用户年龄,EM为用户MAIL,FC为用户头像,HP为用户网站,JB为用户职业,PC为
用户邮编,PH为用户联系电话,PR为用户简介,PV为用户所以的省,RN为用户真实名称,SC为用户毕业院
校,SX为用户性别,UN为用户QQ号,NK为用户QQ昵称。在得到消息后如果用的是DELPHI语言,那么要用Ut
f8ToAnsi()进行转换,不然会出现乱码。
7、增加QQ好友。
想要新增好友,就要发送AddToList命令给服务器,具体命令如下:
VER=1.1&CMD=AddToList&SEQ=&UIN=&UN=
UN为我们要增加用户的QQ号。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=AddToList&SEQ=13666&UIN=415103947&RES=0&CD=0&UN=24259132
CD为被加QQ的身份验证状态,CD为0表示“允许任何人把我列为好友”,CD为1表示“需要身份证认才能把
我列为好友”,CD为3表示“不允许任何人把我列为好友”。如果CD为0那么信息回馈后,用户就直接加为
好友了,如果CD为1,那么还要发送一次回应加为好友的响应。
8、回应加为好友的响应。
回应加为好友响应是双方的:1、如果你发送了请求加对方为好友,如果对方需要验证,那么必需发送回
应加为好友的响应。2、如果对方发送加为好友请求给你,那么你可以加应加为好友的响应,一是加为好
友,一是通过验证,一是拒决加为好友。我们要向服务器发送命令:
VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=
CD为响应状态,CD为0表示“通过验证”。CD为1表示“拒决加为对方为好友”。CD为2表示“为请求对方
加为好友”。RS为你要请求的理由,如果您用的是DELPHI那么RS在发送之间要用AnsiToUtf8()进行转换,
不然发送过后,请求理由会变成“?”。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=Ack_AddToList&SEQ=1130&UIN=415103947&RES=0&
9、删除好友。
删除好友其实很容易,向服务器发送DelFromList命令则可以删除用户:
VER=1.1&CMD=DelFromList&SEQ=&UIN=&UN=
UN为要删除用户的QQ号。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=DelFromList&SEQ=24514&UIN=415103947&RES=0&
10、改变用户当前状态。
可以把QQ设置为在线,隐身等状态,我们可以发送Change_Stat给服务器以改变当前状态,具体命令如下
:
VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST=
ST为要改变的状态,10为上线,20为离线,30为忙碌。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=Change_Stat&SEQ=17512&UIN=415103947&RES=0&
11、退出登录
要退出登录,要向服务器发送命令Logout,具体命令如下:
VER=1.1&CMD=Logout&SEQ=&UIN=
服务器得到协议后如果成功则返回:
VER=1.1&CMD=LOGOUT&SEQ=15803&UIN=415103947&RES=0
12、获得好友QQ的消息
如果要接收好友的消息,要向服务器发送命令GetMsgEx,具体命令如下:
VER=1.1&CMD=GetMsgEx&SEQ=&UIN=
服务器得到协议后如果成功则返回:
VER=1.1&CMD=GETMSGEX&SEQ=56661&UIN=29501213&RES=0&MN=3&MT=99,9,9,&UN=24259132,24259132,24259
132,&MG=30 ,asdfasdfasdfasdf ,asdfasdfasdf ,&
MT表示消息类型,99表示系统消息,9表示用户消息。UN表示消息发送来源用户,MG表示发送的消息,MG
消息可以表示某些特定的系统含意,譬如:当MT为99,MG为30,UN为24259132则表示用户4259132现在处
于忙碌状态,可根据此消息进行好友列表的刷新,提高效率。在得到消息后如果用的是DELPHI语言,那么
要用Utf8ToAnsi()进行转换,不然会出现乱码。
13、向好友QQ发送消息
要发送消息给好友,要向服务器发送命令CLTMSG命令,具体命令如下:
VER=1.1&CMD=CLTMSG&SEQ=&UIN=&UN=&MG=
UN为消息发送给的用户QQ号码,MG为发送给该用户的消息。如果您用的是DELPHI那么MG在发送之间要用An
siToUtf8()进行转换,不然发送过后,消息会变成“?”。
服务器得到协议后如果成功则返回:
VER=1.1&CMD=CLTMSG&SEQ=15803&UIN=415103947&RES=0
好了,以上就是QQ基于HTTP的一个不完全的协议分析,在无源码前提下,在下能力有限,只能够分析这么
多了。利用以上协议您就可以实现很多东西,如:QQ机器人,QQ广告系统,即时通讯的整合工具等等。
2006年8月18日
最近在做AJAX,想用javascript实现DataList功能,遇到一个棘手的问题,由于要生成的HTML很长,所以我写成如下的形式:
list.innerHTML="<table><tr>";
list.innerHTML+="<td>"
......
但是这样生成的innerHTML始终不对,研究了半天,原来是innerHTML搞得鬼.innerHTML自带了语法检查功能,他会自动把不完整的HTML代码补充完整.运行如下的一个测试代码就可以发现了.
document.getElementById("AlbumList").innerHTML="<table><tr>";
alert(document.getElementById("AlbumList").innerHTML);
他会自动把我的代码里面添加了<tbody>和</tr></table>等标记.神奇!!!
那么不让他自动填写的一个办法就是用一个中间变量:
var html="<table><tr>";
html+="<td>";
......
list.innerHTML=html;
就这样就可以解决问题了.
2006年8月6日
昨天晚上发现电脑出了点问题,用一用的系统消耗的内存就上到了1G多,系统报告虚拟内存不足.看了一下任务管理器,发现一个进程WINLOGON.exe可疑.网上找了一下资料,原来是中了木马"落雪",该木马还真强,在安全模式下用administrator登录也会启动,而且无法结束进程,而且江民卡巴都没有报告有病毒.花了点时间,找到了一个专杀工具,火速解决战斗,这个木马是通过电子邮件传播的,大家都看看自己的进程里面是不是有WINLOGON.exe,而且用户是当前用户的,有那就中招了.下面给出他的资料和专杀工具.
winlogon.exe病毒的查杀方法这个进程是不是一个传奇世界程序的图标使用51破解版传家宝会生产一个WINLOGON.EXE进程
正常的winlogon系统进程,其用户名为“SYSTEM” 程序名为小写winlogon.exe。
而伪装成该进程的木马程序其用户名为当前系统用户名,且程序名为大写的WINLOGON.exe。
进程查看方式 ctrl+alt+del 然后选择进程。正常情况下有且只有一个winlogon.exe进程,其用户名为“SYSTEM”。如果出现了两个winlogon.exe,且其中一个为大写,用户名为当前系统用户的话,表明可能存在木马。
这个木马非常厉害,能破坏掉木马克星,使其不能正常运行。目前我使用其他杀毒软件未能查出。
那个WINDOWS下的WINLOGON.EXE确实是病毒,但是,她不过是这个病毒中的小角色而已,大家打开D盘看看是否有一个pagefile的DOS指向文件和一个autorun.inf文件了,呵呵,当然都是隐藏的,删这几个没用的,因为她关联了很多东西,甚至在安全模式都难搞,只要运行任何程序,或者双击打开D盘,她就会重新被安装了,呵呵,这段时间很多人被盗就是因为这个破解的传家宝了,而且杀毒软件查不出来,有人叫这个病毒为 ”落雪“ 是专门盗传奇传奇世界的木马,至于会不会盗其他帐号如QQ,网银 就看她高兴了,呵呵,估计也都是一并录制。不怕毒和要减少损失的最好开启防火墙阻止除了自己信任的几个常用任务出门,其他的全部阻挡,当然大家最好尽快备份,然后关门杀毒
包括方新等修改过的51pywg传家宝,和他们破解的其他一切外挂,这次嫌疑最大的是51PYWG,至于其他合作网站估计也逃不了关系,特别是方新网站,已经被证实过多次在网站放木马,虽然他解释是被黑了,但是不能排除其他可能,特别小心那些启动后连接网站的外挂,不排除启动器本身就有毒,反正一句话,这种启动就连接某网站的破解软件最容易放毒,至于什么时候放,怎么方,比如一天放几个小时,都要看他怎么爽,用也尽量用那种完全本地破解验证版的,虽然挂盟现在好像还没发现被放马或者自己放,但是千万小心,,最近传奇世界传奇N多人被盗号,目标直指这些网站,以下是最近特别毒的WINLOGON.EXE盗号病毒清除方法,注意这个假的WINLOGON.EXE是在WINDOWS下,进程里头表现为当前用户或ADMINISTRATOR.另外一个 SYSTEM的winlogon.exe是正常的,那个千万不要乱删,看清楚了,前面一个是大写,后面一个是小写,而且经部分网友证实,此文件连接目的地为河南。
解决“落雪”病毒的方法
症状:D盘双击打不开,里面有autorun.inf和pagefile.com文件
做这个病毒的人也太强了,在安全模式用Administrator一样解决不了!经过一个下午的奋战才算勉强解决。 我没用什么查杀木马的软件,全是手动一个一个把它揪出来把他删掉的。它所关联的文件如下,绝大多数文件都是显示为系统文件和隐藏的。 所以要在文件夹选项里打开显示隐藏文件。
D盘里就两个,搞得你无法双击打开D盘。C盘里盘里的就多了!
D:\autorun.inf
D:\pagefile.com
C:\Program Files\Internet Explorer\iexplore.com
C:\Program Files\Common Files\iexplore.com
C:\WINDOWS\1.com
C:\WINDOWS\iexplore.com
C:\WINDOWS\finder.com
C:\WINDOWS\Exeroud.exe(忘了是不是这个名字了,红色图标有传奇世界图标的)
C:\WINDOWS\Debug\*** Programme.exe(也是上面那个图标,名字忘了-_- 好大好明显非隐藏的)
C:\Windows\system32\command.com 这个不要轻易删,看看是不是和下面几个日期不一样而和其他文件日期一样,如果和其他文件大部分系统文件日期一样就不能删,当然系统文件肯定不是这段时间的。
C:\Windows\system32\msconfig.com
C:\Windows\system32\regedit.com
C:\Windows\system32\dxdiag.com
C:\Windows\system32\rundll32.com
C:\Windows\system32\finder.com
C:\Windows\system32\a.exe
对了,看看这些文件的日期,看看其他地方还有没有相同时间的文件还是.COM结尾的可疑文件,小心不
要运行任何程序,要不就又启动了,包括双击磁盘
还有一个头号文件!WINLOGON.EXE!做了这么多工作目的就是要干掉她!!!
C:\Windows\WINLOGON.EXE
这个在进程里可以看得到,有两个,一个是真的,一个是假的。
真的是小写winlogon.exe,(不知你们的是不是),用户名是SYSTEM,
而假的是大写的WINLOGON.EXE,用户名是你自己的用户名。
这个文件在进程里是中止不了的,说是关键进程无法中止,搞得跟真的一样!就连在安全模式下它都会
呆在你的进程里! 我现在所知道的就这些,要是不放心,就最好看一下其中一个文件的修改日期,然后用“搜索”搜这天修改过的文件,相同时间的肯定会出来一大堆的, 连系统还原夹里都有!! 这些文件会自己关联的,要是你删了一部分,不小心运行了一个,或在开始-运行里运行msocnfig,command,regedit这些命令,所有的这些文件全会自己补充回来!
知道了这些文件,首先关闭可以关闭的所有程序,打开程序附件里头的WINDOWS资源管理器,并在上面的工具里头的文件夹选项里头的查看里设置显示所有文件和文件假,取消隐藏受保护操作系统文件,然后打开开始菜单的运行,输入命令 regedit,进注册表,到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
里面,有一个Torjan pragramme,这个明摆着“我是木马”,删!!
然后注销! 重新进入系统后,打开“任务管理器”,看看有没rundll32,有的话先中止了,不知这个是真还是假,小心为好。 到D盘(注意不要双击进入!否则又会激活这个病毒)右键,选“打开”,把autorun.inf和pagefile.com删掉,
然后再到C盘把上面所列出来的文件都删掉!中途注意不要双击到其中一个文件,否则所有步骤都要重新来过! 然后再注销。
我在奋战过程中,把那些文件删掉后,所有的exe文件全都打不开了,运行cmd也不行。
然后,到C:\Windows\system32 里,把cmd.exe文件复制出来,比如到桌面,改名成cmd.com 嘿嘿 我也会用com文件,然后双击这个COM文件
然后行动可以进入到DOS下的命令提示符。
再打入以下的命令:
assoc .exe=exefile (assoc与.exe之间有空格)
ftype exefile="%1" %*
这样exe文件就可以运行了。 如果不会打命令,只要打开CMD.COM后复制上面的两行分两次粘贴上去执行就可以了。
但我在弄完这些之后,在开机的进入用户时会有些慢,并会跳出一个警告框,说文件"1"找不到。(应该是Windows下的1.com文件。),最后用上网助手之类的软件全面修复IE设置
最后说一下怎么解决开机跳出找不到文件“1.com”的方法:
在运行程序中运行“regedit”,打开注册表,在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]中把"Shell"="Explorer.exe 1"恢复为"Shell"="Explorer.exe"
大功告成!大家分享一下吧! [内有附件]
2006年8月5日
看着大家都把自己的Blog打扮得那么漂亮了.我也有点心痒痒,心动不如行动.花了点时间,在网上去找了一些素材,然后再自己PS了一些,终于把自己的Blog改好了.CSS不容易啊!
2006年8月3日
我们的音乐站以前由于图片放在196上导致连接数过多,用户无法听歌,后来所有音乐站专辑的图片就转到了数据库中.那知道现在就变成了数据库连接数过多或者是连接池不够了,导致网站经常报错,那好吧,图片又转移.这会就直接转移到Web服务器上了,直接作为一般的网站图片存放.
龚军勇已经写了个程序把所有数据库的图片转移到Web服务器上了,但是现在要更新新专辑怎么办?于是龚提出的一个办法就是专门写了一个页面,执行这个页面,把专辑ID传过去,那么就可以把数据库中的图片复制到Web服务器.个人觉得这个方法还是比较麻烦,但是要在Web服务器上开FTP吧似乎也不好,于是我想到了一个办法,那就是在音乐站中写一个WebService,然后在专辑上传程序中调用这个WebService就可以把图片写到Web服务器上,而不需要在服务器上再开启其他的什么服务.
具体做法如下:
服务端:
[WebMethod]
public string WritePic(byte[] src, int id)//src为图片字节数组,id为专辑的id
{
try
{
MemoryStream msImage = new MemoryStream(src);
Image imgFile = Image.FromStream(msImage);
string path = Server.MapPath(".");
imgFile.Save(path + "\\" + id + ".jpg", ImageFormat.Jpeg);
imgFile.Dispose();
}
catch (Exception ex)
{
return ex.Message;
}
return "Success";
}
客户端调用:
FileStream fs = new FileStream(fileName, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
byte[] pic=br.ReadBytes((int)fs.Length);
UsingWebService.localhost.Service s = new UsingWebService.localhost.Service();//调用Web服务
MessageBox.Show(s.WritePic(pic,Convert.ToInt32(textBox1.Text)));//显示操作结果
br.Close();
fs.Close();
2006年7月25日
刚看这个东西,还以为是rp啦,结果发现写反了。查了一下资料,转贴如下。
PR是英文Pagerank 的缩写形式,Pagerank取自Google的创始人LarryPage,它是Google排名运算法则(排名公式)的一部分,Pagerank是Google对网页重要性的评估,是Google用来衡量一个网站的好坏的唯一标准。PR值的级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎。Google把自己的网站的PR值定到9,这说明Google这个网站是非常受欢迎的,也可以说这个网站非常重要。一个PR值为1的网站表明这个网站不太具有流行度,而PR值为7到10则表明这个网站非常受欢迎。那么PR值都受那些因素影响呢?下面我们一起来看看。
一、网站外部链接的质量和数量
在计算网站排名时,Pagerank会将网站的外部链接数考虑进去。并不能说一个网站的外部链接数越多其PR值就越高,如果这样的话,一个网站尽可能获得最多的外部链接就OK了,有这种想法是错误的。Google对一个网站上的外部链接数的重视程度并不意味着你因此可以不求策略地与任何网站建立连接。这是因为Google并不是简单地由计算网站的外部链接数来决定其等级。
这里的学问可就多了,首先,要看网站外部链接的PR值,也可以说是要考虑网站的外部链接质量;其次,Google的Pagerank系统不单考虑一个网站的外部链接质量,也会考虑其数量。这个问题看来很有复杂。首先让我们来解释一下什么是阻尼因数(damping factor)。阻尼因素就是当你投票或链接到另外一个站点时所获得的实际PR分值。阻尼因数一般是0.85。当然比起你网站的实际PR值,它就显得微不足道了。现在让我们来看看这个PR分值的计算公式:PR(A)=(1-d)+d(PR(t1)/C(t1)+...+PR(tn)/C(tn))
公式解释:其中PR(A)表示的是从一个外部链接站点t1上,依据Pagerank?系统给你的网站所增加的PR分值;PR(t1)表示该外部链接网站本身的PR分值;C(t1)则表示该外部链接站点所拥有的外部链接数量。大家要谨记:一个网站的投票权值只有该网站PR分值的0.85,而且这个0.85的权值平均分配给其链接的每个外部网站。
设想一个我们网站www.chinasem.net, 被链接至PR值为4,外部链接数为10的网站www.chajia.com, 则计算公式如下:
PR(AKA)=(1-0.85)+0.85*(4/10)=0.15+0.85*(0.4)=0.15+0.34=0.49
也就是说,如果我的网站获得一个PR值为4,外部链接数为9的网站的链接,最后我的网站将获得的PR分值=0.49。
再让我们看看如果我们网站获得的是一个PR分值为8,外部链接数为32的网站的链接,那么我将获得的PR分值将是:
也就是说,如果我的网站获得一个PR值为8,外部链接数为32的网站的链接,最后我的网站将获得的PR分值=0.3625。
上述两个例子表明,外部链接站点的PR值固然重要,该站点的外部链接数也是一个需要考虑的重要因素。在建设你自己网站的外部链接时,应尽可能找那些PR值高且外部链接数又少的网站。这样一来你网站上这样的外部链接站点越多,你的PR值就会越高,从而使得你的排名得到显著提升。
二、网站被三大知名网络目录DMOZ,Yahoo和Looksmart收录
众所周知,Google的Pagerank系统对那些门户网络目录如DMOZ,Yahoo和Looksmart尤为器重。特别是对DMOZ。一个网站上的DMOZ链接对Google的Pagerank?来说,就好象一块金子一样有价值。如果你的网站为ODP收录,则可有效提升你的页面等级。
向ODP提交你的站点并为它收录,其实并不是一件难事,只是要多花点时间而已。只要确保你的网站提供了良好的内容,然后在ODP合适的目录下点击"增加站点",按照提示一步步来就OK了。至少要保证你的索引页(INDEX PAGE)被收录进去。所以,如果你的网站内容涉及完全不同的几块内容,你可以把每个内容的网页分别向ODP提交-不过请记住"欲速则不达"。等到Google对其目录更新后,你就能看到你的PR值会有什么变化了。
如果你的网站为Yahoo和Looksmart所收录,那么你的PR值会得到显著提升。如果你的网站是非商业性质的或几乎完全是非商业性质的内容,那么你可以通过zeall.com使你的网站为著名的网络目录Looksmart所收录。Looksmart也是从Zeal网络目录获得非商业搜索列表。
在向Zeal.com提交你的网站前,你得先通过它的一个会员小测试。别担心,这个测试是很简单的。如果你是一个网站管理员,而你的网站又已经收录在三大知名网络目录DMOZ,Yahoo和Looksmart中,我猜想你的网站的PR值一定比较高,而且搜索排名也不会差。
三、Google在你的网站抓取的页面数
Google在你的网站抓取的页面数,数目越多,Pagerank值越高。但通常Google并不会主动抓取你的网站的所有页面,尤其是网址里带有“?”的动态链接,Google不主动,那就要我们主动了,最笨的办法是把网站所有的页面都提交给Google,但我想没有谁真会这么做,但页面不多的话可以试试。更好的办法是制作一个静态Html页面,通常被称作“网站地图”或“网站导航”,它里面包含你要添加的所有网址(例如:http://www.heitian.com),然后把这个静态页面提交给Google
顺便说一下,查询PR值可以到http://rankwhere.com/google-page-rank.php ,查了一下栋力无限的PR值为4,好低啊!stu home .net的PR值为5,UESTC官方网站PR值为6
2006年7月23日
使用了CommunityServer2.0一段时间了,总体给我的感觉就是:功能强大,代码复杂,运行缓慢,容易报错,修改困难。说他运行慢我还可以忍受,就当是自己的网速慢,可最受不了的就是他还给我经常报错,尤其是后台管理,经常是根本登录不进去,错误发生在哪儿也不知道。忍无可忍,于是还是想用AspNetForum,经过了一段时间的奋斗,终于把用户认证搞定了,还是使用的是教务处那块认证方式,而且使用Membership和WebService,目前已经架到了正是服务器上,用户反映良好,具体见:http://www.dormforce.net/Forums/
而对于那个郁闷的CS2.0,虽然挂在服务器上,不过资源共享,后台管理根本无法进去,就看那个论坛版块还可以用,不过还是那个字“慢”。不得不思考将Blog,相册,论坛,文件下载……这么多功能集合在一个网站中,写得那么复杂,运行缓慢,调试困难到底有多大的意义,个人认为,CS2.0其实就是微软为了推广asp.net,而编写他的程序员又为了炫耀技术,故意把一些本来很简单的东西写的很复杂,难于理解和修改。
栋力无限基于CS2.0毕竟是一个大胆的设想,而其可用性和给用户带来的用户体验却极低。还是比较喜欢网站项目专业化点,论坛是一个项目,音乐站是个项目,软件站,影视站等各自做成一个项目,便于升级和维护,不用做成这么一个大杂烩。
2006年7月22日
前几天网管会的空调坏了,而且天气又特别热,除了跑到中心会议室上自习吹吹空调,就只剩下去游泳和回寝室洗个冷水澡了。就这样的日子过了好几天,终于熬出头了--换空调了。哪晓得,刚把空调换上,天气又开始变坏,气温下降,夜夜下雨,都让人感觉有点冷了。昏!
就这么一热几天再来冷几天,身体可受不了,一不小心就感冒了!每天只有卫生纸不离身,痛苦得用嘴来呼吸。郁闷啊,本学期第一次感冒!特发此贴,提醒大家小心一点,多多预防,我可不希望再传染上两个。
现在外面还在下着大雨……
2006年7月21日
最近在研究Membership这个东西,也就是一个微软提供Account,由于他的通用性这个Membership集成在VS2005中了,新的登录控件等都是用的Membership。其实Membership在1.1的时候就有了,不过是单独发布的一个组件,我最早是见于CommunityServer。把他们的数据库拿来分析对比可以发现,其实表,视图是完全一样的,不过就是存储过程不同。但这个不同可就麻烦了,1.1的Membership根本无法在2.0的数据库中添加帐户什么的,同样2.0的Membership也不能使用1.1的数据库。那么我想无论是1.1还是2.0的项目都使用同一个Membership数据库该怎么办啦?
为了达到无论是1.1的系统还是2.0的系统都使用同一个数据库的目的,我就把2.0的存储过程用户改为dbo,把1.1的存储过程改为membership,结果还是大失所望,Membership根本没有提供数据执行用户的修改,也就是说,只能执行dbo用户的存储过程。郁闷!
那么我就把数据库这边完全用2.0的Membership数据库嘛,在1.1中要到这个数据库中进行认证的时候就不用1.1的Membership(根本用不起),直接调用数据库中的存储过程嘛。这样当然是可以的,可是用户密码是SHA1加密的,而且其他地方也有不少修改,那么就要再从新写一个能执行2.0数据库的Membership,虽然有Reflector来看源代码,但是这个周期太长了,更痛苦。
那么还有什么好办法啦?最终我想到还是使用WebService算了。在2005下面建立WebService项目,使用2.0Membership数据库,把要用到的几个验证函数都写成Web服务,然后再在1.1中直接调用Web服务就是了。这个方法比较简单,以后所有2.0项目就可以直接使用Membership了,而1.1项目就调用Web服务。
呵呵,目前我所想到的就是这样的解决办法,也不知道还有更好的方案。
2006年6月23日
很早以前就从电驴中托下来了数独,也玩了一阵,感觉自己的智商还不行,也没有那个耐心一直盯着屏幕。最近有些无聊又玩起了搁在那儿已久的数独了。建议大家没有玩过的也去玩一下,目前在欧美玩的很火哦。
“数独”(sudoku)一词来自日语,意思是“单独的数字”或“只出现一次的数字”。概括来说,它就是一种填数字游戏。
数独的游戏规则很简单,9x9个格子里,已有若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字,使得每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每个行列及每个小九宫格里都只能出现一次。
在线玩数独:http://sudoku.17kao.com.cn/sudoku/jsp/main.htm
2006年5月1日
<html xmlns:v>
<head><style>V\:*{behavior:url(#default#VML);}</style>
</head>
<body>
<V:RoundRect style="position:relative;width:200px;height:100px">
<V:Shadow on="T" type="single" color="#b3b3b3" offset="5px,5px"/>
<V:textbox style="font-size:9pt">漂亮的圆角!</V:textbox>
</V:RoundRect>
</body>
</html>
漂亮的圆角!
2006年4月19日
在不是js打开的页面上按window.close(),会有提示框,很烦,现在可以不用了,没有提示框直接关闭窗口。
以前有人贴过利用IE5.5/6.0漏洞做的无提示窗口,
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</object>
<input type="button" name="Button" value="关闭窗口" onClick="document.all.WebBrowser.ExecWB(45,1)">
但后来ie6.0出了补丁,便失效了
现在有一种很简单的无提示关闭窗口代码如下:
<input type="button" onClick="window.opener = 'xxx';window.close();" value="IE6最简单的无提示关闭窗口" >
这个方法的确很不错! [内有附件]
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="return false;" 防止复制
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标
6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标
7. <input style="ime-mode:disabled"> 关闭输入法
8. 永远都会带着框架
<script language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>
9. 防止被人frame
<SCRIPT LANGUAGE=JAVASCRIPT><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
10. 网页将不能被另存为
<noscript><iframe src=*.html></iframe></noscript>
11. <input type=button value=查看网页源代码
onclick="window.location = "view-source:"+ "http://www.pconline.com.cn"">
12.删除时确认
<a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&areyou=删除&page=1"">删除</a>
13. 取得控件的绝对位置
//Javascript
<script language="Javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>
//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>
14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart("character",e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">
15. 判断上一页的来源
javascript:
document.referrer
16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE
1.最基本,最常用的,测试物理网络的
ping 192.168.0.8 -t ,参数-t是等待用户去中断测试
2.查看DNS、IP、Mac等
A.Win98:winipcfg
B.Win2000以上:Ipconfig/all
C.NSLOOKUP:如查看河北的DNS
C:\>nslookup
Default Server: ns.hesjptt.net.cn
Address: 202.99.160.68
>server 202.99.41.2 则将DNS改为了41.2
> pop.pcpop.com
Server: ns.hesjptt.net.cn
Address: 202.99.160.68
Non-authoritative answer:
Name: pop.pcpop.com
Address: 202.99.160.212
3.网络信使
Net send 计算机名/IP * (广播) 传送内容,注意不能跨网段
net stop messenger 停止信使服务,也可以在面板-服务修改
net start messenger 开始信使服务
4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)
ping -a IP -t ,只显示NetBios名
nbtstat -a 192.168.10.146 比较全的
5.netstat -a 显示出你的计算机当前所开放的所有端口
netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等
6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址
arp -a
7.在代理服务器端
捆绑IP和MAC地址,解决局域网内盗用IP!:
ARP -s 192.168.10.59 00 -50-ff-6c-08-75
解除网卡的IP与MAC地址的绑定:
arp -d 网卡IP
8.在网络邻居上隐藏你的计算机
net config server /hidden:yes
net config server /hidden:no 则为开启
9.几个net命令
A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
比如:查看这个IP上的共享资源,就可以
C:\>net view 192.168.10.8
在 192.168.10.8 的共享资源
资源共享名 类型 用途 注释
--------------------------------------
网站服务 Disk
命令成功完成。
B.查看计算机上的用户帐号列表 net user
C.查看网络链接 net use
例如:net use z: \192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘
D.记录链接 net session
例如: C:\>net session
计算机 用户名 客户类型 打开空闲时间
-------------------------------------------------------------------------------
\192.168.10.110 ROME Windows 2000 2195 0 00:03:12
\192.168.10.51 ROME Windows 2000 2195 0 00:00:39
命令成功完成。
10.路由跟踪命令
A.tracert pop.pcpop.com
B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%
11.关于共享安全的几个命令
A.查看你机器的共享资源 net share
B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)
net share c$ /d
net share d$ /d
net share ipc$ /d
net share admin$ /d
注意$后有空格。
C.增加一个共享:
c:\net share mymovie=e:\downloads\movie /users:1
mymovie 共享成功。
同时限制链接用户数为1人。
12.在DOS行下设置静态IP
A.设置静态IP
CMD
netsh
netsh>int
interface>ip
interface ip>set add "本地链接" static IP地址 mask gateway
B.查看IP设置
interface ip>show address
Arp
显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
语法
arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
参数
-a [InetAddr] [-N IfaceAddr]
显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
-g [InetAddr] [-N IfaceAddr]
与 -a 相同。
-d InetAddr [IfaceAddr]
删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。
-s InetAddr EtherAddr [IfaceAddr]
向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
/?
在命令提示符显示帮助。
注释
InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。
通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要显示所有接口的 ARP 缓存表,可键入:
arp -a
对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:
arp -a -N 10.0.0.99
要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:
arp -s 10.0.0.80 00-AA-00-4F-2A-9C
At
计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。
语法
at [\ComputerName] [{[ID] [/delete] /delete [/yes]}]
at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,...] /next:date[,...]}] command]
参数
\computername
指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。
ID
指定指派给已计划命令的识别码。
/delete
取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。
/yes
删除已计划的事件时,对来自系统的所有询问都回答“是”。
hours:minutes
指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。
/interactive
对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。
/every:
在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。
date
指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。
/next:
在下一个指定日期(比如,下一个星期四)到来时运行 command。
command
指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。
/?
在命令提示符显示帮助。
注释
Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。
使用 at
使用 at 命令时,要求您必须是本地 Administrators 组的成员。
2006年4月16日
今天终于考完了怨炼的三级PC技术。虽然说考来也没有什么用,不过班上很多人都报了,也就跟风交25¥去看看是个什么样的东东。昨天考的是笔试,那可不是人做的题,四川的三级和全国的三级简直是两回事,尽是考些接口阿,中断阿,光是问答题就5道,考,这个有什么优点,那个有什么缺点,这两个又有什么区别,这东西怎么背的下来啊?总之,最后郁闷的走出考室。
今天就是更恐怖的上机了,全是编写完整的程序,可不像全国的是填空什么的。这个还没有什么,最变态的是还在软盘的DOS下运行,那个速度简直无法忍受。看着周围有些人更夸张,连EDIT都用不来,其他的DIR估计也不会。题的内容怎么个变态法我就不想多说了,我也没有记住,主要还是我的汇编还不怎么会写。看来我还是不怎么适合于搞底层啊!
2006年4月4日
今天突然又用起了Firefox,打开我们的MusicForce发现用户登录框,关键字输入框还是和IE比起来变形了,专辑页面的“专辑简介”还是一样变形。于是对比了一下IE和Firefox下的HTML源码,终于找到问题了。这个可能是asp.net的一个bug。具体情况如下:
在我们用VS做页面的时候一般是把控件托到页面上,然后再在属性栏设置Width Height等属性。这样产生的aspx代码如下:
<asp:textbox
id="TextBox1" runat="server" style="BORDER-RIGHT:#848283 1px solid; BORDER-TOP:#848283 1px solid; FONT-SIZE:12px; BORDER-
LEFT:#848283 1px solid; COLOR:#848283; BORDER-BOTTOM:#848283 1px solid; FONT-FAMILY:Verdana;" Width="96"></asp:textbox>
若是在IE中浏览就会产生如下HTML:
<input name="TextBox1" type="text" id="TextBox1" style="width:96px;BORDER-RIGHT:#848283 1px solid; BORDER-TOP:#848283 1px solid; FONT-SIZE:12px; BORDER-LEFT:#848283 1px solid; COLOR:#848283; BORDER-BOTTOM:#848283 1px solid; FONT-FAMILY:Verdana; hight:18px" />
也就是说服务器把我设置的服务器控件的属性变成了HTML中的style,但是若在Firefox下浏览得到的HTML如下:
<input name="TextBox1" type="text" id="TextBox1" style="BORDER-RIGHT:#848283 1px solid; BORDER-TOP:#848283 1px solid;
FONT-SIZE:12px; BORDER-LEFT:#848283 1px solid; COLOR:#848283; BORDER-BOTTOM:#848283 1px solid; FONT-FAMILY:Verdana;
hight:18px" />
对比一下就可以发现,在使用Firefox作为浏览器的时候服务器传回的HTML中没有把属性设置的Width转换到Style中,结果导致了在Firefox下页面变形。
解决办法:
1。直接在服务器控件中把width:9px;写到style中。
2。这个问题我在自己机器上测试了一下,发现Asp.net2.0已经把这个问题解决了,Firefox浏览也很正常。(还是.net2.0好哈)
DormForce服务器上的音乐站代码我已经按方法1 添加了,我在Firefox上浏览一切正常。
2006年3月24日
四川省大学生“综合素质A级证书”评选条例发布,对比其中的标准,发现原来个人综合素质那么低(只有三个条件满足)。
以下标准不知道你满足了几个。
PS:一切评选条件必须要有书面证明才算!
四川省大学生“综合素质A级证书”评选条例
一、 参评对象:参评对象无名额限制,凡我省全日制高等院校在校学生(含专科生、本科生),均可参评“综合素质A级证书”。
二、 参评条件
1、 参选基准:学业成绩优良,身心健康,无处分记录,曾获校级三好学生(校级优秀学生干部或奖学金)一次以上。
2、 评选条件:
(1) 参加社会实践活动并受校级以上表彰。
(2) 获‘挑战杯“等全国性科技竞赛鼓励奖或省级三等奖以上奖励。
(3) 在市州级以上刊物发表论文1篇或校级刊物发表论文2篇以上;在省级或国家级刊物上发表其他类文章1篇以上。
(4) 文体活动中,获市级或校级一等奖以上奖励。
(5) 获国家级英语证书或计算机二级或普通话二级甲等以上证书。
(6) 取得第二学位或第二专业学习并毕业。
(7) 在思想品德方面有突出事迹获校级以上表彰,如见义勇为、拾金不昧、乐于助人等。
(8) 取得会计、秘书、程序员、运动员等国家级证书(不包括英语和计算机)。
(9) 担任班长、团支书或校院(系)团学组织部长级以上职务或担任校级学生社团负责人(含副职)以上职务。
(10) 在其它方面(不含一至九项)有突出事迹或受到省级以上奖励的,请单列申请,附有关证明材料。
以上所列评选项目中满足5项(含5项)以上的大学本科在校学生和满足4项(含4项)以上的大学专科在校学生。
三、 评选程序:本人申请(附有关证明材料),学校党、团、学组织审核确认,团省委、省学联终审确定。
附件2:
四川省大学生“综合素质A级证书”评分项目表
|
项目
|
参 评 事 项
|
在满足项目栏划“∨”
|
|
参选基准
|
学业成绩优良,身心健康,无处分记录,曾获校级三好学生(校级优秀学生干部或奖学金)一次以上
|
|
|
一
|
参加社会实践活动并受校级以上表彰。
|
|
|
二
|
获‘挑战杯“等全国性科技竞赛鼓励奖或省级三等奖以上奖励
|
|
|
三
|
在市州级以上刊物发表论文1篇或校级刊物发表论文2篇以上,在省级或国家级刊物上发表其他类文章1篇以上
|
|
|
四
|
文体活动中,获市级以上奖励或校级一等奖
|
|
|
五
|
获国家级英语证书或计算机二级证书或普通话二级甲等以上证书
|
|
|
六
|
取得第二学位或第二专业学习并毕业。
|
|
|
七
|
在思想品德方面有突出事迹获校级以上表彰,如见义勇为、拾金不昧、乐于助人等
|
|
|
八
|
取得会计、秘书、程序员、运动员等国家级证书(不包括英语和计算机)
|
|
|
九
|
担任班长、团支书或校院(系)团学组织部长级以上职务或担任校级学生社团负责人(含副职)以上职务
|
|
|
十
|
在其它方面(不含一至九项)有突出事迹或受到省级以上奖励的,请单列申请,附有关证明材料
|
|
注:1、所有奖项须是大学期间获得。
2、第十项中有不同类别的突出事迹或奖励的,最多可算两项计入。
|