YOYO的最新BLOG文章

Mar
23

今天的天气,真得很不错,可以说是春天最好的天气了吧。不冷不热,微风拂面,空气清新,阳光明媚,这样的北京才是最美的北京。

这么多要素,为什么标题中我要强调微风呢?因为只有空气的流动才能把北京工业和机动车产生的废气吹散,才能保持空气的清新,而空气流动太大的话,就会带起来很多的尘沙,甚至是沙尘暴,那就适得其反了。

记得过年回老家的时候,晚上坐在院子里,仰望天上密密麻麻的星星,久久不想进屋,虽然天气很冷。我对我妈说,北京的天空星星很少,少得几乎都看不到,因为那里的空间污染太严重了,还是家里的天空看起来更美一些。

在北京生活了快三年了,对北京也有一定的感情,一直都在期望什么时候北京的天空一直都像老家这样就好了,我知道这只能是个期望而已,所以在没有可以期望的时候也就期望北京的天空可以多吹过几次微风。因为微风吹过的北京,才是清澈透明的北京,才是最美的北京。

Tags: , ,
Posted in 心情往事
Mar
21

一直都没搞明白是因为什么,我的机器上的IIS安装了就是不能使用,老是提示我数据库无法连接,但是实际上程序是没有问题的,这样折腾着安装卸载了IIS好几次,都无济于事。

于是在最无奈,最紧急的时候,我到绿色软件站上搜了一下不用安装可以搭建ASP环境的软件,没想到真的找到了两个,一个是Freda Web,一个是Asp Web Server (AWS)。

freda web

Asp Web Server

两个软件各有特点:从功能上来讲,AWS更强大一些,可以支持绝大部分的ASP功能,而Freda Web就略显弱了一些,只能支持最基本的一些ASP语法,对于验证码也无法显示;从方便上来讲的话,Freda Web更方便一些,可以设置服务器指向不同的目录,而AWS只能运行当前目录下面的文件,所以就需要在运行不同的站点的时候来回不断的移动相应的文件。

两个软件都只能运行单个站点,如果是从应急性的角度讲,应该也不会有太多的站点来切换,所以我认为AWS更好一些,毕竟功能是否强大是一个软件最重要的指标。

具体到个人,可能喜好不一样,选择也会不一样,适合自己的就是最好的。

Tags: , ,
Posted in Server
Mar
20

由于最近一些人对服务器上的mssql的要求越来越迫切,我花了整整一晚上的时间把SQL Server 2000安装上了,至此服务器上最常用的一些服务都有了。

在Windows 2003上安装SQL Server 2000有一点小小的问题,所以在这里特别的说一下。

上传和安装的过程中没有太大的问题,只是在安装的时候有一个小小的提示,说是sql 2000 sp2无法安装在这个版本的操作系统上,是否继续?选择继续,很快SQL Server就安装完了,但是安装之后的SQL Server 2000却无法工作,根本原因是1433端口没有打开(检测1433端口是否打开的命令可以用:telnet: 127.0.0.1 1433)。这是为什么呢?

这是因为Windows 2003版本太高,而SQL Server 2000的版本太低了,解决这个问题的办法是去微软的网站上下载一个SQL Server 2000的SP3补丁,把SQL Server 2000升级到SP3就可以正常使用了。

安装之后的服务器已经具有了ASPPHP,PERL,MYSQL,MSSQL等这些服务,也成为更加完善的全能服务器了。

Mar
19

今天我的笔记本电脑的桌面上出现了一个“发送文件到另一计算机”的图标,一会儿还发出一古怪的声音,然后就看到右下角的任务栏上出现了另一个图标,显示的文字是IBM7109E2F08B2,居然还是IBM的。

mm-1.gif

mm-2.gif

这个现象以前也出过,当时我没太看清楚,而这次看清楚了,挺像个无线连接的图标。我用的是无线局域网,但是也不是这样的啊。难道是有人在连接我的电脑?是黑客攻击?还是什么其他的无线设备?都不得而知。

一个莫名其妙的来访者,到底是什么呢。。。。。

Mar
18

昨天,SNS领域又增加了一名新成员,那就是由雅虎中国前总裁谢文和他的团队开发的一起网。对于为什么离开雅虎中国一年多后又重新返回互联网,谢文的回答是“此次复出,主要是对目前中国互联网web2.0的发展现状不太满意,感觉还有比较大的空间和余地”。

谢文于1996年进入互联网行业,对互联网有比较深入的研究,被麦田认为是国内在sns的理解、眼光和格局方面最有独到见解的人,这次推出一起网应该也是其对国内SNS研究之后的又一次尝试,也是继续创造中国facebook的又一个典型案例。

今天我注册了一个账号,体验了一下一起网的功能。怎么说呢?优劣参半。一起网的内测版的功能是比较多,在内容方面,可以说是一个海内网的升级版,而在完善程度上却远远不如海内做得好,还有不少的bug,当然这和推出的时间长短有关系。而另一个让人郁闷的问题是慢,不仅仅是网页打开的速度慢,而且发送邀请链接和验证链接也慢,如果说发送邀请链接是人为操作的,那发送的验证链接不应该也是人工操作的吧,但是照样很慢。

一起网的技术团队是由海量科技的技术团队组成的,据说其在数据挖掘方面有很深的研究,这次加上谢文这个在互联网行业经验丰富的CEO,不知道一起网会给中国互联网带来什么,是更多的惊喜,还是更多的叹息,还是让我们拭目以待吧。

Tags: , ,
Posted in web 2.0, 想说就说
Mar
16

宅男,“御宅男”的简称,日语外来词,是一个近年出现的次文化族群。御宅(お宅/オタク)(发音:OTAKU)是日语的第二人称单。御宅男的最初含义是“ACG的过度狂热者”,就是特别沉迷于美少女类的成人动漫或者游戏的男子。后来逐渐被引申为“对某特定事物的爱好极端偏执且不与人接触而窝在家里的人”。

我这里指的宅男嘛,恩,当然是后来的意思了,呵呵。

连续有三个月了,我没有一个完整的时间做点别的事情了,以前下班之后还做点饭,现在是叫外卖了,天天都在电脑前折腾,平生第一次感觉我有这么多的事情要做,甚至同一段时间有四五件事等着做的程度。

而今天下午,忽然感觉一下子就没事可做了,好像所有的事情一下子都做完了似的。其实当时还在改一个朋友要给他改的网站,但是相比起那四五件事情等着做的程序,已经不值一提了。一时感觉特别的闲,特别的无聊,特别的不想做什么东西,于是找出好几个月没玩的跑跑卡丁车飙了几局,真的是应了那句“不是累死,就是闲死”。

这样的时间并没有持续太长,晚上的时候,一些事情就来了,于是我忙碌的日子在还没彻底结束的时候又要开始了。

晚上莫名地想起了“宅男”这个词,于是到网上查了查宅男的判断条件

1.痴迷:痴迷于某事物,动漫,明星.某人.某事情….此种痴迷也是突发性的,突然爱上.不能自拔!
2.依赖电脑:长时间不能用电脑将会很要命!
3.依赖网络:干什么都想上网.上网又没事做.经常挂在网上面!
4.不想去上学/上班:有时候会很厌恶上学/上班.极度讨厌.但却继续没有办法!
5.作息时间很不稳定:没有一个规整的作息时间!
6.极少出门:与其出门.不如呆在家里.参与一个要出门的活动往往会花很多时间考虑!
7.不喜欢接触陌生人:在现实中与陌生人交流.认识陌生人会感到恐惧!
8.性格多少有两面性:在不喜欢的事情面前.会掩饰自己内心的想法.得过且过.有时候感觉自己有双重性格!
9.收藏癖:最少喜欢收藏一种或多种物品.并乐此不疲!
10.独身:一般情况下是独身!
11.胖:体型偏胖 不会瘦就是了!
12.喜欢或有写日记/日志:喜欢写日志或日记.或用相片记录自己的生活!
13.喜欢上虚拟的人物:有喜欢上虚拟人物的倾向.比如漫画里的角色.书本里的角色等非现实生活中的人物!
14.闷骚:无可否认.宅人是世界上最闷骚的人之一.或多或少都被人评论自己闷骚!
15.常常会有一只宠物..

这里面最符合我的是2,5,10,看来我还不是太宅,还不彻底……(特注:12条并不适合我,理由嘛,我想AW的这篇文章多少能说明一点)

宅女是和宅男相对应的对女性的一个特指,其特点和宅男有很多的类似,具体宅到什么程度,请到这里检测一下。

其实我觉得宅男宅女不是一个太好的生活方式,至少对于我来说,我并不是太喜欢,对人的健康生活也不是很好。正好现在是春暖花开的季节,没有事情的宅男宅女们,可以走出家门,到大自然中去感受一下,那肯定是另一种不一样的感觉。

Tags: , ,
Posted in 想说就说
Mar
12

今天谈Ajax的简单入门,对很多IT从业者来说可能有些晚了,毕竟Ajax被狂热吹捧的时代已经过去了,而现在使用Ajax技术已经不是什么新鲜的事情了,但是对一些初学者还是很有必要的。

Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作。

首先我们来了解怎么在javascript中创建这个对象:

var xmlHttp = new XMLHttpRequest();

这行简单的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了 XMLHttpRequest 对象。但是对于市场占有率达到70%的IE来说,这种方法是不行的,而不同的IE版本还有不同的创建方法,所以我们需要在IE下面使用下面两种创建对象的办法:

try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");//针对较新的浏览器
} catch (err) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//针对较老的浏览器
} catch (err2) {
xmlHttp = false;
}
}

即使这样,我们也无法预料有些浏览器可能无法创建这个对象,所以在创建不成功的情况下,我们还要加上一句:

if (!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}

结合起来就是:

var xmlHttp = false;
try {
xmlHttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlHttp = false;
}
}
}
if (!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}

然后,让我们建立一个函数getInfo(),打开异步请求:

function getInfo() {
var num = document.getElementById("num").value;//获得表单的数据
var url = "/ajax/1.php?n=" + escape(num);
xmlHttp.open("GET", url, true);//这里的true代表是异步请求
}

一旦用 open() 配置好之后,就可以发送请求了。虽然可以使用 send() 发送数据,但也能通过 URL 本身发送数据。事实上,在大部分GET 请求中,用 URL 发送数据要容易得多,所以这里用null作为send()的参数就可以了。url地址里面的php文件是被请求来处理所需要数据的php文件,就像我们平时用PHP的时候一样,后面的参数可以加多个,并用&分隔开来。

xmlHttp.send(null);

在发送了数据之后,我们需要用回调方法来获得服务器的状态,所以就用到了onreadystatechange 属性。

xmlHttp.onreadystatechange = updatePage;

此语句已经要放在send()语句前面,这样才会有效,后面的updatePage是处理返回信息的一个函数。完整的getInfo()如下:

function getInfo() {
var num = document.getElementById("num").value;//获得表单的数据
var url = "/ajax/1.php?n=" + escape(num);
xmlHttp.open("GET", url, true);//这里的true代表是异步请求
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}

我们还需要在html里面来触发这个函数:

<input name="num" id="num" onblur="getInfo()" type="text" />

下面我们需要来编写updatePage()这个函数:

function updatePage(){
if (xmlhttp.readyState == 4) {
var response = xmlhttp.responseText;
document.getElementById("city").value = response;
}
}

上面这段代码里面的readyState是服务器返回的一个状态,4这个状态表示请求已经发送,并处理完毕。responseText是获得服务器返回的信息,然后通过javascript赋给ID为city的表单。

到此,一个简单的Ajax程序就完成了,完整的javascript代码如下:

var xmlHttp = false;
try {
xmlHttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlHttp = false;
}
}
}
if (!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}
 
function getInfo() {
var num = document.getElementById("num").value;//获得表单的数据
var url = "/ajax/1.php?n=" + escape(num);
xmlHttp.open("GET", url, true);//这里的true代表是异步请求
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
 
function updatePage(){
if (xmlhttp.readyState == 4) {
var response = xmlhttp.responseText;
document.getElementById("city").value = response;
}
}

这里还缺一个php文件,由于处理的方式不一样,写法也不一样,而且这不是Ajax的主要部分,所以这里就不放代码了。只要记住php是输出并返回所需要的数据就可以了。

Mar
10

去掉框架横向滚动条的问题困扰了我很久了,一直都没有找到很妥善的办法来解决,网络上也是莫衷一是,没有一个完全正确的,而今天我终于解决了,这主要应该感谢SkyClan,他那一篇去掉横向滚动条的文章写的很棒,只是有点小小的错误,我在下面会提到。

框架代码:

<frameset id="frame" rows="*,80" frameborder="no" border="0" framespacing="0">
 
<frame src="content.html" name="mainFrame" id="mainFrame" scrolling="Auto"
 
noresize="noresize" title="mainFrame" />
 
<frame src="bottom.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>

这段代码在Firefox下面是正常的,但是在IE上运行总是有一个横向的滚动条,特别烦人。而你把mainFrame里面的scrolling设置为yes之后,IE是好了,而Firefox里面就出问题了,所以我首先考虑到的是用javascript解决,但是最终是失败的,而我代码是没有问题的,所以我也不知道为什么会是失败的。

这里还有一个办法,如果你的框架是用于动态网站上的话,你可以通过动态语言来控制在不同的浏览器下面现实不同的scrolling的值,不过不是动态网站的话就没办法了,继续往下看吧。

在用CSS来解决的时候,Skyclan给出的办法是在mainFrame的文件中(content.html)另外加一段CSS,如下:

body {
overflow: scroll;
overflow-x: hidden;
overflow-x: auto !important;
}

而我测试的结果是失败的,而我把上面的CSS样式中的body{…}改为htm{…}却成功了。经过我的反复测试得出的结论是只有在不声明DTD的时候body{…}和html{…}才是都可以的,声明了DTD的情况下,只有html{…}是可以的

通过上面的方法,丑陋的横向滚动条终于没有了,最后还是要再次感谢SkyClan。

Tags: , ,
Posted in HTML | CSS