Big Fish
Sunday, January 23, 2005
生日提醒
以前在一个网站注册的,今天突然想起来了。。。
Hi
Click on the link below and please enter your birthday for me. I am creating a birthday list of all my friends and family.
http://www.BirthdayAlarm.com/dob/29526393a823254728b362
Many thanks
Fishy
各位注册一下吧,我老年痴呆的迹象越来越严重了。。。只用填月和日,可以不用填年的
Thursday, January 06, 2005
Jabber和Psi简介
(我今天发在水木清华上的推广文章,转过来备个份,呵呵)
作者:fishy9@smth。转载请注明作者
Jabber是一个开放的基于XML的IM(Instant Message,即时消息,也就是聊天了)协议,其主页是:http://www.jabber.org
Jabber是一个协议,这与QQ、MSN和ICQ之类的都不一样,QQ、MSN和ICQ都是产品。Jabber是一个开放的协议,就好像FTP一样。QQ、MSN和ICQ可能可以有人分析出他的通信协议,做出非官方的客户端软件来,但你用的还是官方提供的那几个服务器。而Jabber就不一样了,就好像现在谁都可以开FTP服务器一样,你也可以开你自己的Jabber服务器。
对,这就是Jabber协议最大的特点:公开。但这样你也许会有疑问,我和我的朋友使用不同的Jabber服务器,是不是我们之间就不能聊天了?答案是否定的。所有的Jabber服务器互相之间都是连通的,就像email一样。我用@163.com的信箱,你用@sohu.com的信箱,是不是我们之间就不能发信了呢?你当然知道不是,所以,Jabber也一样 ;-)
Jabber服务器不光可以跟别的Jabber服务器互联,如果你使用的Jabber服务器装了别的聊天软件的Transport,那么你还可以使用你的Jabber帐号跟着使用这些聊天软件的朋友互联。目前已有的Transports有:MSN, ICQ, Yahoo Messenger, AIM, SMS(短信)等。
除了聊天和Transports,Jabber还提供以下功能:文件传送、会议(你可以理解为聊天室)、用户目录等。
另外,Jabber还有一个独创功能,称为presence。precense表示你的一个状态(在线、乐意聊天、离开、离开很久、不想被打扰、隐身和离线),以及相应的状态信息(也就是说对于你的状态的详细解释,比如说,你可以把状态设置为不想被打扰,然后状态信息里写上"我正在被资本家压迫,没空聊天":P),你的好友可以在他的好友列表里面看到你的状态,以及你的状态信息。更进一步的,你可以对不同的好友设置不同的presence,这样,你可以对你的老板显示"听候差遣",而对其他人显示"我正在被资本家压迫":P
Jabber标识叫做JID(Jabber ID),JID看起来很像一个email地址(Jabber其实也确实可以看作是email的延伸),形式为ID @ server,比如user_AT_jabber.org(将"_AT_"替换成"@")。
比如说,我使用的Jabber服务器是jabber.com.cn,用户名为fishy,那么我的JID就是fishy_AT_jabber.com.cn(同上:P)。jabber.com.cn上面提供了MSN, ICQ, Yahoo和AIM的Transports,因此我可以在服务器上注册我的MSN帐号,这样我就可以跟我的MSN朋友聊天,而他们并不知道我用的不是MSN,他们看到的是我在服务器上注册的那个MSN帐号在跟他们聊天。同时,我还注册了我的Yahoo帐号和ICQ号码,因此,我只需要开一个Jabber客户端,就可以同时跟Jabber, MSN, Yahoo和ICQ上面的好友聊天。(注意,并不是所有的Jabber服务器都提供Transports)
我使用的Jabber客户端是Psi(跟sigh的读音相同,主页http://psi.affinix.com/),这是一个使用Qt库编写的客户端,因此可以运行在Windows, Linux和Mac OS等操作系统上。Psi基本上实现了Jabber的所有标准协议和大部分扩展协议,包括:聊天、会议、Transports、presence、表情图标、用户目录以及消息加密(使用GnuPG实现RSA加密,你可以使用1024位甚至2048位密钥加密!这样就不可能有其它人知道你们在聊什么了)。
赶快装个Jabber客户端,注册一个JID,然后开始享受你的Jabber之旅吧。
Tuesday, January 04, 2005
22小时
连续22小时没睡,写了个某国内操作系统平台上面的控制台下的全屏幕文本编辑器。本来是说做一个类似于vi的编辑器的,但是那个平台下的conio.h里面的_getch()函数的实现有问题,导致上下左右的左键和ESC键不可区分(太弱智了。。。),最后不得已,只好做了个类似于edit的。
总的来说不算太难,我用了两个Buffer,一个屏幕Buffer,一个文件Buffer,然后用了巨量的memmove来写程序,写得我头晕@_@
关键问题是那个平台的文档有限,所以各种问题特别的麻烦。最简单的一个例子,我从写程序到跑我写的程序,需要经历以下五个步骤:
- 在Windows下编辑程序,比如用gvim
- 进入那个平台给Windows提供的SDK环境,编译程序
- 将编译好的程序拷贝到机器的FAT32分区
- 进入VMware下的DOS虚拟机,把FAT32分区里面的程序拷贝到虚拟机的C盘
- 进入VMware下的那个平台的虚拟机,运行程序
所以说开发的效率十分低下。。。另外调试也是个很麻烦的事情,因为做全屏幕的文本编辑器,所以需要用比较底层的东西来输出文本,导致printf不能与之混用,结果就是,不光不能调试,连printf都用不了,找错全靠看代码,我哭。。。
不过不管怎么样终于做完了,做完后删掉DDK, SDK, VMware,硬盘上一下子多出来1.74G,真感动。。。
