Monthly Archives: February 2006

单身的幸运

有时候真的不知道单身到第十一件好事还是坏事.至少单身的时候想干什么就干什么,想去哪里就去哪里,不用管别人怎么想的. 但是单身毕竟也有寂寞的时候.

看看傻达和谢佳就不错,这样走到一起了.考研的学校也一起,一起学习,一起奋斗.但是毕竟成事在天.谁也不知道会发什么事情.

今天考研成绩出来了,谢佳考得不错,基本上就没有问题了.下午打电话祝贺一下,顺便问一下傻达的成绩.谁知道他不知道考号,还不知道.

到了晚上,他给我发个短信,说是自己考得不好,基本上是没有希望了。 要我帮他学C#,好回去找工作。没想到会这样。

后来谢佳上网,和我聊天,说是比较郁闷,好像还哭了。我猜到也是这件事情。的确,一天经过大喜,又来一次大悲。换了谁都受不了。大喜,那就因为自己奋斗了半年终于有了收获,大悲,那是因为可能会和另一半分开。

我凌晨一点多发短信给谢佳,说是他没有事情。一切都好,发愤的事情我会帮助他的。想不到她也没有睡,估计她今晚也是没有睡好。
大四下学期,这是情侣们最烦的时候了。分开,还是不分开?坚持,还是不坚持? 都是问题。

我已经见过很多这样的例子了。有的人当机立断,长痛不如短痛,分得很洒脱;有的人瞻前顾后,生怕对方不同意,于是小心翼翼; 也有的人还放不下,但又无可奈何。

这种感觉,我不是不知道。但是我知道,有些事情,你是无法改变的,你无法让中国迁都到杭州,不能叫李开复把google中国总部定在哈尔滨。所以面对你的只有两条路:要么放下一切,好聚好散,时间会让你忘记一切;要么坚持下去,最后修成正果。无论哪条路,总不会轻松。

所以,一切的一切,单身最好!

我像TMAC?

晕死了,刚从床上睁开眼睛,就被魏然发现一个惊天大秘密,说我像麦迪。厚嘴唇,耷拉的眼睛。

唉,谁叫是刚醒来呢,萎靡也是正常的。谁知道下午开题报告的前在走廊中等待的时候,LS兄竟然对美鸥MM说:你看,懋懋像不像TMAC?
我再次晕,大哥,你是不是知道了今天麦迪去老婆家的葬礼,不在场,咱们家明明得了最佳,所以乱发感慨呀!

不过无所谓啦.反正我喜欢TMAC.顺便抬起脚,Show一下鞋子。看,这就是TMAC。

BTW,我可不会去mop,让达人们鉴定我像不像TMAC。太BT了。

BT时的遐想(续)

学校里的game和sports ftp挂了,所以只能重新操起BT这行当。BT之余,也随便想想。

  1. BT就是力量
  2. BT至今可以说是网络上最普遍的最新信息交流方式和电影、视频等资源下载的最佳方式。之所以流行,是因为它是我们体会到了奉献、共享、平等、自由和交流。它原来是一种技术,现在成为了一种生活方式、一种价值观。总会有人发布最新的东西,只要有人,哪怕是一个人发布,那么所有人都会获得。星星之火,可以燎原。
    任何人都可以发布,任何人都可以下载。这里没有尊卑,没有束缚,不用注册,不用visa。
    在BT的时候,我们总会听到一句话,下载完之后尽量多做种。做种子是为了让更多人能获得信息,让好东西让更多人享受。

  3. 傍大款
  4. 学校上网要用代理,下BT只能自己去连接别人,速度很慢。基本在几十K左右。但是不时的会发现,某一个下载任务突然达到200K。仔细一看,原来这个任务中,与某一个客户的速度达到了180K,而其他的只有几K,甚至更少。
    只要一个,我的速度提高了好几倍,一个任务可以少下载好几个小时。
    这多像傍上一个大款呀!很多女生都梦想榜上一个有钱人,这样就可以少奋斗几十年。
    只不过人家也有下载完下线的时候,大款也有喜新厌旧、事业失意的时候,BT可以换一个再来,人生还可以吗?

  5. 坚持的力量
  6. 下载视频一般都很大,有几百兆,游戏更多,可以到几个G。而下载的速度经常只有几十K。我常常担心,这种速度能下完吗?
    人生何不是如此?我们往往看到一个人做的事情是如何的伟大,感慨他是如何做到的。我们往往看到自己要去的地方有多遥远,要做的事情是多么不可能,想想怎么可能继续呢?
    每个人都会这么问自己,不同的是,成功的人在问完之后继续做自己的事情,而失败的人却催头丧气。不积跬步,无以至千里。跬步与千里,连接这两个有好几个数量级之差名词的是我们的恒心,一往无前的勇气。
    往往在几个小时或是几天之后,我就把那些不可能的任务完成了。这就是坚持!

  7. 0不是最小的,100不是最大的
  8. 每每看到与我连接的是那些完成0%的用户,我就想将它们断掉;而见到连接上那些100%的种子,我就想速度又能上去了。
    但是,结果往往出人意料。0%的用户虽然刚刚开始,但是我们的数据交换往往不是最慢的,而与种子,速度很可能是0。
    0%的用户是最有活力的,它们广建连接,将收到的数据迅速的转发出去。而100%的用户,它们却可能离你很远,根本连接不上。
    人生何偿不是如此?总渴望与那些名气最响的人大交道,拜学问最渊博的人做老师,而对那些巫医乐师百工之人嗤之以鼻。但是殊不知,名气最响可能是欺世盗名,学问渊博可能因循守旧,最好的人也可能会江郎才尽。而那些庶民却始终近于生活,富有活力。

搞定图片显示

花了一天的功夫,终于搞定了左边那个图片的动态显示.用js调试真的很麻烦,不能看到变量值,不知道什么抛出异常,太郁闷了!

原来想做一个向左移动的效果,现在看看,会相当郁闷,所以改成直接显示了。

基于Ajax模式的Blog Browser

只所以说成是Ajax,其实是我写成的代码,一不小心发现这就使传说中的Ajax模式。原来什么先进的东西,原来是这么平民化。

先说一下应用吧,背景是这样的:我有很多xml文件,作为单个xml文件,可以通过xml+xsl的形式进行浏览。例如,可以在浏览器中输入”http://marvel.hit.edu.cn:8080/weblogs/2004_8_23.xml”l来查看2004年8月23号的blog。问题是缺少我不知道我在哪些日子大发感慨,何况在浏览器中直接输入地址是一件很麻烦的事情。

于是,我需要做的事情是:

  1. 了解我写了哪些日记
  2. 获取这些日记

显然,第一件事情需要在服务器端完成,第二件事情是客户端浏览器完成的。

于是我先写了一个C程序,获得所有日志的信息,整合到一个xml文件中。(xml格式有利于客户端解析),代码在此 。执行之后生成的文件为list.xml

之后,我在浏览器中就需要获得list.xml的信息,并且需要解析该文件。普通的方法不行,我需要使用XMLHttp请求(在Firefox中称之为XMLHttpRequest,而在ie中,这是一个ActiveX控件,叫做Microsoft.XMLHTTP)。

下载函数主要代码如下,详见源文件:

[coolcode lang=”javascript”]
function loadXMLDoc(url)
{
// code for Mozilla, etc.
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject)
{
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}

if (xmlhttp)
{
xmlhttp.onreadystatechange=xmlhttpChange;
xmlhttp.open(“GET”,url,true);
xmlhttp.send(null);
}
}
function xmlhttpChange()
{
if (xmlhttp.readyState!=4)
return;
// if “OK”
if (xmlhttp.status==200 || xmlhttp.status==0)
{
//Code Goes here…
}
else
{
document.getElementById(“content”).innerHTML = “Problem retrieving XML data”;
}
}
[/coolcode]

  1. xmlhttp.readyState是指xmlhttp请求的状态,0为未初始化,1为正在装载,2为装载完毕,3为交互中,4为完成。当状态发生变化的时候,浏览器会回调xmlhttp.onreadystatechange函数,即xmlhttpChange。(请使用回调函数这种形式,不要使用while的无穷循环来判断是否完成,这种方式会大量消耗处理器资源,并且不能显示页面)
    xmlhttp.status是指返回的状态,Web正常返回为200 ,本地调试正常返回为0。
  2. 处理代码略去,如果想了解更多,可以参考http://marvel.hit.edu.cn:8080/weblogs/view_xml_blog.html。
  3. loadXMLDoc需要被调用两次,第一次获得list.xml,第二次获得某一天的日志文件

返回的xml文件解析

当我们获得了xml文件,自然需要对文件进行解析。 解析日志文件的代码如下(解析list.xml的代码类似,详见文件):

[coolcode lang=”javascript”]
var title=xmlhttp.responseXML.getElementsByTagName(“Title”);
document.getElementById(“content”).innerHTML += (title[0].firstChild.data+”
“);
var posttime=xmlhttp.responseXML.getElementsByTagName(“PostTime”);
var post;
if(posttime[0] == null)
{
var year=xmlhttp.responseXML.getElementsByTagName(“Year”)[0].firstChild.data;
var month=xmlhttp.responseXML.getElementsByTagName(“Month”)[0].firstChild.data;
var day=xmlhttp.responseXML.getElementsByTagName(“Day”)[0].firstChild.data;
post= year+” – “+month+” – “+day;
}
else
{
post = posttime[0].firstChild.data;
}
document.getElementById(“content”).innerHTML += (post+”
“);

var content=xmlhttp.responseXML.getElementsByTagName(“Content”);
document.getElementById(“content”).innerHTML += (content[0].firstChild.data);

[/coolcode]

这次,全部搞定.分析一下

  1. 服务器端使用了C程序生成xml格式的文件,这可以看过Ajax的服务器端程序生成xml格式的结果供浏览器使用
  2. 浏览器客户端使用了xmlhttp的请求,异步获得了服务器端的xml结果,此期间没有刷新,只是出现了“Loading”的提示。解析完毕后即可显示内容。可以看出,Ajax的三大特征“异步交互、JavaScript脚本和XML封装数据的三大特征”完全得到了发挥

结论是:这次遵循了分析问题、解决问题的一般思路,搞定之后居然发现使用的模式就是现在相当热的技术。从而可见,做技术,应该是从实践需要出发,而不是单纯的去追求新的技术、新的框架。即使是最新的技术和框架,它们的出现必定有它们的道理,不需要刻意去学习。相反,实践才是最重要的,从实际中发现问题,解决问题,也许就能找到一种新的方法。如果我这个页面早做几年,也许我就是Ajax的创造者,你说呢?
附:Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新 加裁,就可以动态地更新。使用Ajax,你可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面。

那一晚,我开始怀疑……

从今晚开始,我怀疑爱情是否真的没有保质期?
I:今晚一个人过节吗?
D:是的,车上寂寞吗?
I:嗯,车摇得头晕死了。这么久才等到你短信,还以为你不理我了呢。
D:我干吗不理你呀,我上网没听到吗
I:那怎么前几天上qq给你打招呼,结果没有反应呀
D:呵呵,你给我打招呼的时候我已经下了。你问我几号回去对吧
I:好像是吧,结果连你最后一面也没有见上,就先你一步走了。晕……
D:干吗这么说啊,你以后都不准备见我了?
I:Joking…记得高中时你给我的信里写道,在我失落的时候,你可以用不太强壮的臂膀抱着我。很享受着暴寒的话。现在只有你可以抚慰一颗寂寞郁闷有点头晕的心了
D:你还记得,现在听起来是有点酸。可是我的真心话。那以后我不说了
I:你的话我全记得,还留着你给我的字条呢。也许你自己都忘了吧。读起来彼时彼景,还是那么清晰。为什么不说了呢,不相信我吗?
D:不是不相信,是觉得酸,还有一点羞羞。我想我所有的异性朋友里你是让我感到最安全的。虽然很多年不见,这种的感觉没变过
I:我也没变。常想如果没去桐高,没去冰城。也许一切都会不同。这几天我常常在想,趁着现在有勇气的时候,我们还能重续前缘吗?可惜种种原因,没有当面说出来
D:可是你上了桐高,你去了哈尔滨..在这以前我一直特别珍视我们之间的感情
I:一切都可以会到原点,一切都可以重新开始,只要有勇气面对,明天依旧美好,不是吗?
D:不可以,不可以。四年可以发生很多事..
D:你的样子像是在吟诗一样,好好笑。我忍不知要笑一下。四年我也在等别人
I:也许有点可笑,我懂了,任何东西都会有保质期。除了祝福,没有什么礼物可以送你:)
D:我会收着你的祝福,可惜离我好远。你是不是觉得我很傻。有的时候我觉得很累。你困吗,困就睡吧。
I:我觉得我更傻,可能过期的菠萝罐头味道也不错。做个好梦
D:呵呵..大傻瓜。睡觉吧

也许只能对自己说,不求天长地久,只求曾经拥有。

潘bird

今天遇上潘承宇了。我们寒吁的内容开始自然是前途方向问题,之后就是篮球了。
我最怀念我们自然课结束后,五班和六班一起打篮球的那段时光了。大家都无有无虑的打球,不用考虑其他的东西。
这种感觉真好……

BT时的遐想

逛了一下mop,洗完脚,原来准备钻到被窝里的。但是看到BT速度到了本日最高速,就不想错过这段时间。所以,暂且写一点东西吧……

这个假期说长不长,说短不短。 再过几天,我就要回去了。说实话,真的有点想回去了,至少那里有暖气,不会像现在这样容易想钻被窝;那里有干不完的事情,不会想现在这样胡思乱想。

哈尔滨在我的心中也许还是一个名词,尽管我在那里一年要待十一个月,并且已经四年了。这个城市注定只是的一个驿站,我迟早会离它而去。两年后,或是更久一些,不过是时间问题。

不是因为它不好,只是因为不可能。正如两个恋人会因为非感情问题而分手。男人会对女人说:“我爱你,但是我相信他能让你更幸福”。听起来有一点心酸,但是这样的事情不只在电视里发生。

我没有能力说服布林和拉里佩奇将google中国总部设在哈尔滨,我也没有能力说服我自己把快乐老家设在哈尔滨。在一个大时代中,我们无能为力,正如晴雯性格率真,但抗争不过大观园的等级制度;学生崇尚自由,但抗争不过当局的高压政策。也许有一天,我有能力改造世界;但是在此之前,我只能被世界改造。
哈尔滨不会是我的家,永远不会。 奇妙的是,我却把工大当成了一个家,寝室是我的卧室,实验室是我的书房,食堂是我的餐桌。不同之处是,它们之间的距离被线形地放大了几十倍。而我,是一个在家工作的soho一族!

所以,回校,对于我说是从老家到新家的过程。这样想,就不会有太多的不舍。但是,很难掩饰自己的失落,很难抛下身后的一切。

BT速度终于降下来了,我也可以回到那温暖的被窝。当然要先忍受一下刚进去那一刹那痛苦。

失落

我喜欢一种永恒的东西,一种简单的东西。它永恒,亘古不变,如宇宙;它简单,但是优美大方。如用0和1来表示能整个宇宙。
《英语学习》曾经有一篇文章叫作“Slow is beautiful”,多好。我们都希望自己的节奏放慢,给自己放个假,但是往往在别人的追赶之下越来越快。某一天自己真的慢下来,却发现自己已经做不动了。路也到了尽头。
我想象中的生活就是这样的:简单而又永恒。也许,青山绿水,男耕女织,闲情逸致,其乐融融,正是我梦想中的桃园。
可惜,生活本不永恒,生活本不简单。我生活的年代却是一个科学就是生产力的时代,闲情野鹤,已是最贫穷或最富有的象征;我的专业却是一个不断创新的专业。道高一尺,魔高一丈,也许我的工作就是不断的挑战0和1的极限,不断制造更快的矛和更坚的盾。每个人都生活在这个大时代中,既然不能反抗,那就享受吧;既然不能改变潮起潮落,那就随波逐流吧。
我希望一切都是永恒的,生命、爱情、事业、荣誉 ……
但是我的生活却是充满了变数,我自己,也是一个在外漂泊的浪子。明天我也许在上海、杭州,或者是北京、哈尔滨,又或许是开往某地的火车上;明天可能是万里无云的晴天,但也有可能是乌云密布的雨天,又或许是暴雪严寒。我不知道明天会发生怎样,纽约可能发生911了,火箭可能又输球了,心中却又希望不变,我们依旧在同一个城市,她依旧那么漂亮可爱。心中的矛盾,使我实难抉择。也许明天,它不是我想要的,她不是我想爱的,既然这样,今天我就不应该去要它,去爱她。
几许失落,几许惆怅。不是少不经世,也不是为赋新词强说愁,而是真的对现在不满,对未来迷茫,为信仰沦丧而悲伤,为真爱难觅而吁嘘。
别人说我前途光明,但是我却没看出来前途在哪里,哪怕一丝昏暗的灯光。如果我在美国,我也许会吸毒,会hip-hop,会刺青,会变成Lost Generation,甚至成为天使之城中的Zen或是美国的God father。
无数次告诉自己,要活得开心一些。同学在聊天的时候,说IT生活是痛苦中伴随快乐,而我说IT生活是快乐中有一些痛苦。于是他说我豁达,也许吧。不管这是心理暗示也好,还是真的一种信念也罢,我都会走下去。

FF支持xsl了

今天看看msn的聊天记录,它们是用xml+xsl实现的.我将xml用firefox浏览,意外地发现竟然能够正常显示.
不知道Firefox什么时候开始支持的,估计是1.5的时候吧.

以前我的blog是用了xml+xsl方式,但是发现ff不支持。于是是用了xml+css的方式,但是总觉得这种方式不太好,既然是用了xml这种形式,就应该严格一些,优美一些,但是单纯通过css文件就破坏了这种和谐。

现在好了, 我可以重写我的xsl文件了。呵呵