2004-10-21

卡特尔16PF,人格测验

16PF测验是美国人卡特尔教授搞的一个人格测试理论。他认为人格有16种基本因素,即根源特质;所有其他人格都来源于这16种特质。这位老先生也不容易,搞了20年才搞定这套理论,据说现在这个方法挺流行的。前几天看到有人在用这个东西,我也下载了一个免费软件,只是不知道测得准不准:



看起来和自我评价差不多,不过一些地方还是有点出乎我的意料,算是对自己人格、性格的重新认识吧。

要是有兴趣,你也可以自己试一试,点击这里下载评测软件

格言

做人须急时不躁、气时不恼、忙里偷闲、苦中作乐!

2004-10-08

Google 现在越搞越复杂了

今天在 Google 上搜东西,竟然看到这么一个提示:

因应一项依 「数位千禧年著作权法案」(简称 DMCA)的控诉,本页已移除 1 项查询结果。您如果想了解是哪些资料被移除,请见 DMCA 控诉

树大招风呀,没给 Yahoo、MSN 挑过的刺都在 Google 这里给挑出来了。

2004-10-02

火车站

每到节假日,都为回家的事情头疼,人实在是太多啦。不过这个十一还是终于回到家了。唉,这节日的车站真是个疯狂的地方。既然人在车站,我难免也会作出些疯狂的举动,呵呵 ;)

中关村与“理想”

到中关村的理想大厦转了一圈,新楼盘就是不太好找。突然有点感触,原来在中关村寻找“理想”真的不是那么容易的。

2004-09-26

文章两三篇

最近在琢木鸟写了几篇文字,不在 blog 里贴了,有兴趣的可以去看看:

Arch 与 SVN 孰优孰劣?

今天读了一篇对 Arch 作者的访谈,Tom Lord 好好数落了一通 SVN 和 CVS,呵呵。虽然读起来很有意思,但和这篇文章的大多数读者一样,我也不太认同他的观点。

确实,虽然 CVS 在开源界使用最广,但 CVS 糟糕的设计令人们早就想把它扔掉了。虽然它也是开放源码的,但复杂的设计,让其它开发者根本没法替它做任何“外科手术”,这也造就了 CVS 版本稳定的神话──不过这个名声和 Tex 的肯定不能同日而语了。CVS 的众多问题也就一直延续下来。终于有了 Subversion,在众人拾柴火焰高的开发中,终于在 1.0 推出的时候被广泛接受。我也是对 SVN 有很强的好感。

今天读了这篇文章,Lord 对 SVN 的一些批评并不是没有道理。但仅仅因为某些设计就把 SVN 贬得一无是处,我看不妥。什么软件在行家的眼里都是能挑出毛病来的,如果只看缺点无异于一叶障目。SVN 实现了 CVS 的所有功能,还实现了大家久已期待的很多特性,并且现在软件已经进入稳定期,又有了各个平台的客户端,还在大家最期待 CVS 的替代者时及时推出。这些因素相结合,大家怎么能不放弃 CVS,转向 SVN 呢?反观 Arch,也许架构设计确实一流,但到现在了还没有能让大家从容上手的版本出炉,也没有 Windows 版本软件(没办法,即使在开源界,用MS系统的人也还是很多的),再加上开发者稀少,难怪用户数量平平了。

很多开始代码很丑陋的开源项目也都成功了,光说自己的设计优秀是不行的,这里面道道还多着呢,怎么 Lord 同志现在还没明白这个理儿呀?

2004-09-10

碳纳米泡沫 - 中文维基百科

科学美国人》今年第8期登载了一个很有趣的新闻,报道了一个材料科学界的新发现。虽说是“新”发现,其实也已经是1997年的事儿了,这就是“碳纳米泡沫”。我看完了它,第一反应就是把它编写到维基百科里。看了看,维基百科里现在只有英文版中有它的一个条目。综合一下科学美国人和网上的其它报道,我编写了它在中文维基百科中的条目

碳纳米泡沫


维基百科,自由的百科全书。


碳纳米泡沫元素的同素异形体之一,1997年澳大利亚国立大学的Andrei V. Rode及其合作者发现。

碳纳米泡沫呈蛛网状,具有分形结构,有铁磁性。泡沫由许多原子团簇构成,每个含有约4000个碳原子,直径约6到9纳米; 其中很多原子团连在一起,形成了纤细的网。在碳纳米泡沫中,有许多七边形的结构。研究者认为,七边形的结构造是它有很多未成对的电子的原因;泡沫也因此而 具有了磁性,这是其他任何一种碳的同素异形体所没有的特性。研究者还发现,在低于-183°C时,泡沫还具有永久磁性。

碳纳米泡沫的密度很低,与碳气凝胶很相似,但密度是它的百分之一;它是目前世上最轻的物质之一,密度约为2mg每立方公分,仅有海平面上空气密度的几分之一。

这种泡沫还是的不良导体,可以积聚静电而吸附在其他物质上;它的热传导性也很差。

它的制备方法为,在充满气的容器中放入玻璃形状的碳,用每秒一万次的激光脉冲轰击,使其温度骤升到大约1万摄氏度并爆炸,在容器壁上即可获得一层碳纳米泡沫构成的薄膜。

由于纳米泡沫具有的铁磁性,将来有可能把它们的颗粒注射入人体,用来改善磁共振成像的清晰程度。它们也可能被应用到利用电子自旋或电子磁性的自旋器件中。


原文:http://zh.wikipedia.org/wiki/碳纳米泡沫

2004-09-09

GMail 在升级?

2004年9月9日,上午09:53,访问Gmail,惊奇地发现如下提示:

Server Error

Gmail is temporarily unavailable. Cross your fingers and try again in a few minutes. We're sorry for the inconvenience.

难道是 Gmail 在升级,还是我“荣幸地”看到了 Gmail 服务器发狂的一景,呵呵。几分钟后,世界又归于平静,我顺利的进入了 Inbox。

2004-09-02

中国大陆活跃的 Python 和 Zope 社区

Python

Python.cn邮件列表,我想这绝对是现在最活跃的一个社区了,能人众多,也有很多热心人。琢木鸟社区是 Python.cn 邮件列表中催生的一个自由社区,正在处于上升期,汇集了很多资源和项目。中国 Linux 论坛Python 版,在 web 形式的论坛里,这里算是很活跃的了。不过由于论坛的这种松散的联络方式,这里一直也没能达到热烈的程度。

Zope

中文 Zope 用户组是现在大陆唯一比较活跃的 Zope 社区了,这里收集了大量 Zope 资料,是 Zope 用户和开发者的聚集地。

2004-09-01

与 p2p 软件有关的一些防火墙 Forwarding 设置

BitTorrent,我喜欢把它叫做“比特风暴”,它的需要很简单,只要提供 TCP 端口 6881 到 6999 就可以了。

eDonkey 或者 eMule/xMule 需要的东西就多了一点,需要 TCP 端口 4661、4665 和 4771、UDP 端口 4665 和 4672。不过一些 ISP 会封锁 4661 端口,所以人们经常会用自选的其他端口代替 4661。

2004-08-25

解决在 Python 中登录网站的问题

所谓登录进入一个网站,实际上就是在浏览器里留下一些暂时或长期的 cookie 而已。如果我们用 Python 访问一些需要登录才能看到的内容,只要把登录之后传回来的cookies再传回去就行了。

虽然 Python2.3 提供了 Cookie 这个模块,但做为操作客户端 cookie 来说并不实用。我们也可以靠自己维护 http header 来实现这些功能,但这很很麻烦。还好有人提供了不错的模块,比如 CookieClient 就是不错的选择。下面是我用 CookieClient 编写的一个访问 linuxforum 的示例脚本:

#!/usr/bin/env python
# -*- coding: GB2312 -*-
# xyb at linuxforum.net

import sys
import ClientCookie
from urllib import urlencode

# add loader
cookies = ClientCookie.LWPCookieJar()
opener = ClientCookie.build_opener(
ClientCookie.HTTPCookieProcessor(cookies),
ClientCookie.HTTPRefererProcessor,
ClientCookie.HTTPEquivProcessor,
ClientCookie.HTTPRefreshProcessor,
ClientCookie.SeekableProcessor)
opener.addheaders = [
("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3"),
("Accept", "text/html, image/jpeg, image/png, text/*, image/*, */*")]
ClientCookie.install_opener(opener)

# check args
if len(sys.argv) <= 2:
print "Usage: %s USERNAME PASSWORD" % (sys.argv[0])
sys.exit(1)
else:
UserName = sys.argv[1]
Password = sys.argv[2]

# login
data = {
'Loginname': UserName,
'Loginpass': Password,
'firstlogin': 1,
'option': '登入论坛'
}
urldata = urlencode(data)
r = ClientCookie.urlopen("http://www.linuxforum.net/forum/start_page.php", urldata)

# show result
results = r.read()
open('start.html', 'w').write(results)

# then, user page
r = ClientCookie.urlopen("http://www.linuxforum.net/forum/login.php?Cat=")
results = r.read()
open('user.html', 'w').write(results)

# read messages
r = ClientCookie.urlopen("http://www.linuxforum.net/forum/viewmessages.php?Cat=&box=received")
results = r.read()
open('inbox.html', 'w').write(results)

# save cookies to file
cookies.save("./cookies")

这个例子里用的是 ClientCookie-0.9.4a。

不过从 Python2.4 开始,将会增加 clientlib 来提供对客户端 cookie 的支持,其中绝大部分代码都是 ClientCookie 里的,只不过调整了一下组织方式和文档,并且和 urllib2 整合在了一起。把上面的代码翻译一下,就可以得到如下的代码:

#!/usr/bin/env python
# -*- coding: GB2312 -*-
# xyb at linuxforum.net

import sys
from urllib import urlencode
import cookielib, urllib2
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
opener.addheaders = [
("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3"),
("Accept", "text/html, image/jpeg, image/png, text/*, image/*, */*")]

# check args
if len(sys.argv) <= 2:
print "Usage: %s USERNAME PASSWORD" % (sys.argv[0])
sys.exit(1)
else:
UserName = sys.argv[1]
Password = sys.argv[2]

# login
data = {
'Loginname': UserName,
'Loginpass': Password,
'firstlogin': 1,
'option': '登入论坛'
}
urldata = urlencode(data)
r = opener.open("http://www.linuxforum.net/forum/start_page.php", urldata)

# show result
results = r.read()
open('start.html', 'w').write(results)

# then, user page
r = urllib2.urlopen("http://www.linuxforum.net/forum/login.php?Cat=")
results = r.read()
open('user.html', 'w').write(results)

# read messages
r = urllib2.urlopen("http://www.linuxforum.net/forum/viewmessages.php?Cat=&box=received")
results = r.read()
open('inbox.html', 'w').write(results)

# save cookies to file
cj.save("./cookies")

不过现在 Python2.4a2 的 urllib2 还有点 bug,它导致发出的请求 header 会有两个大小写不同的 Content-Length。这也导致我们的这个例子现在还不能正常运行,不过我想等正式的 Python2.4 出来以后这段代码应该能直接执行。

另外,在上面的代码中我是使用的 cookielib.LWPCookieJar() 或 ClientCookie.LWPCookieJar(),其实还有 MozillaCookieJar、MSIECookieJar、MSIEDBCookieJar 和
BSDDBCookieJar 这些选择。

2004-09-06,注:Python2.4a3 发布,clientlib 没有什么问题了,我的那段倒是有问题,一是需要 install_opener,二是需要使用 urllib2.urlopen。现在改过了。

2004-08-21

好多小吃呀,留口水!

中文维基百科最近有一个条目质量提升计划,目标就是把已有的条目做到象模象样。最近几天选中了小吃,一时之间连带小吃列表条目也活跃了起来。今天好好看了看,头一回知道原来全国各地有这么多种小吃,看得我都流口水了,呵呵。你也要小心哦,不要把键盘都打湿了 ;)

笑话:怎样保持婚姻和谐

偶然看到,莞尔之余觉得这个笑话还真是寓意深刻呢 :)


一对夫妇欢度他们的结婚纪念日,他们之间的和谐相处长期以来为人津津乐道。 当地的一位记者于是前去访问他们之所以拥有幸福婚姻的秘诀。

丈夫向记者解释说:“嗯,这就要从我们的蜜月说起了。”

我们到大峡谷度蜜月,原本我们是要骑驴子到峡谷底﹐不过才走了没有多久,我太太的驴子就跌了一跤。 我太太安静的说:“第一次。”

再次上路以后没有多久那只驴子又跌了一跤,我太太又安静的说:“第二次。”

还没有半哩路驴子又跌跤了,这时我太太拔出她的左轮手枪毙了那只驴子。

我很不能认同她的行为,于是开始与她争论,这时,我的新婚妻子安静的对我说:“第一次……”

2004-08-13

在 Python 中生成 tar.bz2 文件

Python Cookbook 中看到一个很有趣的方法来创建 tar.bz2 文件,但他的代码里错误太多了,正确的写法应该是这个样子的:

import tarfile
import os
out = tarfile.TarFile.open('out.tar.bz2', 'w:bz2')
arcpath='/home/xyb/bin/'
out.add(arcpath, arcname=os.path.basename(arcpath))
out.close()

2004-08-02

Doom 3 真的是泄露了

DOOM 3 的泄漏据说已经被证实。咳,ID 这回又痛苦一把。

过了一个晚上,我的DOOM3终于下载下来了。最终下载完成的这个版本 Reloaded 版,就说是 0day 正式认可的版本,包括 Keygen 和 Crack,1.7G呀,要是没有 BT 这东西,怎么可能想象一夜之间全世界都能下载得到!呵呵,不管怎么说,等下了班找台 Windows 试试。不过我可不抱什么幻想,我已经知道很多不错的机器运行起来都很慢,只有 20-30 fps :(

2004-08-01

Doom 3 来了!?

刚看到有人说 0day 拿到了 Doom 3 的母盘,刚听说今天晚上会有 Doom 3 放出,就看到有人放出了 Doom 3 的种子:

http://66.90.75.92/suprnova//torrents/2306/Doom_3_POTUK.torrent
http://torrent.youceff.com/download.php?file=415634

其中第一个我已经开始下载,只是不知道这是不是真的:
$ btshowmetainfo.py Doom_3_POTUK.torrent
btshowmetainfo 20021207 - decode BitTorrent metainfo files

metainfo file.: Doom_3_POTUK.torrent
info hash.....: 2944a3841342e830b07288489e46543e86a5c09a
directory name: Doom 3
files.........:
D3_CD1.ISO (484235264)
D3_CD2.ISO (584992768)
D3_CD3.ISO (557527040)
archive size..: 1626755072 (1551 * 1048576 + 413696)
announce url..: http://www.potuk.org:2710/announce

其实应该支持 ID,去买正版,但是中国的情况……

2004-07-27

糟糕的运气

哎,太可惜了,最终还是没有参加成北京维基人聚会。为了这次聚会我还推迟了回家的日子,这只能说是我这个周末太倒霉了。

Mountain 早早就把聚会的日子告诉了我,我也很高兴终于能和朋友见见面、聊一聊了。星期六起床,拿起面包就吃,刚咬了几口,发觉味道不对!?翻过来一看,见鬼,下面有一点点白色的毛毛。幸亏发现的早,没有咬到,我想。我还不知道我这个周末的“霉运”就这么开始了。下午肚子有一点点硬,似乎消化不良的样子,我也没在意。但到了星期天,早晨6点就醒了,感觉特冷。开始发觉不舒服,发烧了。赶紧去买药,这一天就在吃药、歪在床上看电视中熬过去了。大夫还想给我开中药来着,我估摸吃西药快一点,说不定还能赶上晚上的聚会 :-) 不过最终这点希望还是破灭了,坚持到下午5点多,发现是没希望了,终于给 Mountain 发短消息,告诉他去不了了。咳,这事儿闹的。

星期一的早上一起来,发觉神清气爽,除了肚子比较饿,一切又正常了 !@#$% 这“霉面包”要是星期五的早晨吃到多好,不就正好可以参加这次 wiki parting 了?霉运就是霉运呀 :(

顺便说一句,吃的药里霍香正气水实在是太冲了,差点让我把好不容易填进肚子的一点吃的全吐出来,上帝保佑以后不要再喝这个东西啦。

还是那句话说的好:有嘛也别有病,没嘛也别没钱!在生病和健康之间又轮回了一把,寒号鸟说“朵罗罗,寒风冻死我,明天就垒窝!”,看来我也得赶紧“垒窝”了,垒个健康的窝。

2004-07-21

Doom 3 最低配置!

随着 Doom 3 官方网站增加新内容,这款令人期待的游戏离我们越来越近了。来自 Slashdot 的消息Computing column 搞到了 Doom 3 最低配置,不过我这里死活也连不上这个网站。还好这位仁兄把配置在 Slashdot 上直接给贴了出来,我们来一起看一下:

  • 内存:384 MB

  • CPU :1.5-GHz

  • 显卡:GeForce 3 或 Radeon 8500


记住,这只是最低配置,也就是只能勉强运行而已;真想好好玩游戏,肯定是得在这之上了。看来众位游戏迷、quake 迷又要有新一轮的升级了。我手头的机器配置也都不够,得预先做做准备工作了。

Debian 的里程碑

Netcraft 报道:在能上网的计算机中,已经有超过一百万台是使用的 GNU/Debian 操作系统!这是不是意味着 Debian 已经成为主流 GNU/Linux 系统之一?相比而下,Redhat 没有什么长进,在最近两个月市场占有率反而有点下降的意思;不过人家的市场是在服务器领域,个人市场的份额是不会放到眼里了。不管别人怎么,反正我已经是离不开 Debian 了 :-)

2004-07-17

其实中国大陆的 Python 能人真不少呀!

最近两天 Python 中文邮件列表上热闹非凡,HD 起了一个头,大家都在热烈讨论 Twisted,并立即开始着手对它的入门教程进行翻译──在短短两天的时间里,教程的翻译初稿已经基本出炉了。我翻译的第二部分经过 limodou 的校对,改掉错误一箩筐 :)

不过最让我惊奇的是,热烈的讨论引得多位“潜水”的 Python 能人现身。我以前还真没有想到国内用 Python 的人和公司竟然已经有这么多了,挺高兴的;不过这些情况平常都从来没被人提起过,大家都闷声发大财?盼望这个邮件列表能发展壮大,大家多交流,这样才能共同进步呀。

呵呵,下周由经验丰富的 HD 开始进行精解,这可是一件不能错过的事情。嗯,我听课用的小本本那去了?得赶紧找出来……

我也来试试SNS网络

金色葡萄正在进行维基百科上的sns网络实验看起来很有意思,我也不禁想来试试。

先来找两个随机的条目,排除掉那些什么“874年”、“欧洲”之类索然无味的条目,订下了循道衛理聯合教會自由文化做为这条SNS网络链路的头和尾。好,开始游戏啦!本来我以为总要花上十来分钟才能找到它们直接的联系通道,没想到两分钟不到已经搞定。是我太厉害了?还是条目里引出的链接不够丰富?呵呵,第一次实验大功告成,我的成果 :)
循道衛理聯合教會 -> 基督教 <- 基督教文化 <- 文化 <- 自由文化 (4跳)

2004-07-13

Freshmeat.net 挂了

刚刚访问任何一个项目页面,都得到如下结果:
Error connecting to MySQL Server.

没想到这么有名的网站也会出这种问题,不过这种情况只持续了几分钟就被修复了。是因为人太多还是因为系统设计的问题呢?呵呵,谁知道。

Google 在纳斯达克上市

今天一上班就看到 Google 上市的消息,27个亿的原始股,肯定被人炒的一塌胡涂,可惜国内的“玩家”不能加入这个行列,错失大好的赚钱机会呀,我都替他们惋惜 :)

这次 Google 还是选择了纳斯达克而非纽约证交所上市,看来 NASDAQ 还是科技股的大本营呀。既然国内没有染指的机会,我们就放松心态,看看这次 Google IPO 带来的新一轮互联网热潮究竟能热到什么地步吧。

2004-07-10

testing...

Hello, blogger!

今天把blog的模板改了改

昨天的模板用了一些图片,而且滚动页面时背景图片不动,这在我的firefox上浏览起来很慢。尽管那个页面的网页观感很淡雅,我很喜欢,但也只能忍痛割爱了。今天找了一个比较简洁的页面模板,参考维基百科网络杂志,又加入了haloscan.com网站的Trackback功能,现在看起来象那么回事了 :)

2004-07-09

完成blog的主机转移

终于忍受不了blogspot的封锁了,今天把blog转移到了freezope.org的主机上。

顺便改了改页面模板,从
http://blogtemplates.noipo.org/找了一个,看起来还不错,不过还是有可以改进的地方。有时间自己编辑试试。

Gmail与Python

Gmail 让全世界激动,但它不支持pop3、imap、smtp(google方面说正在考虑增加pop3),只能当webmail来使用。这给人们了很大的不便,于是有人开始写程序来做这件事情。Python显然是很适合做这类工作的,第一个看到的是 gmail.py,来自于 Adrian Holovaty:
http://www.holovaty.com/blog/archive/2004/06/18/1751
http://www.holovaty.com/blog/archive/2004/06/20/0242

我自己写了个脚本checkgmail.py,利用gmail.py来检查是否有什么新邮件到来:
#!/usr/bin/env python

# -*- coding: GB2312 -*-

"""Check new mails at gmail.com

add this line to cron, using 'crontab -e':
*/20 * * * * /home/xyb/bin/checkgmail.py 2> /dev/null
"""

__revision__ = '0.1'

import sys
sys.path.append('/home/xyb/py/')

def loop():
import time
from gmail import GmailClient
c = GmailClient()
c.login('account','passport')
while True:
print time.asctime(), len(c.get_inbox_conversations(is_unread=True))
time.sleep(60)

def scan():
import time
from gmail import GmailClient
all=(('account1','passport1'),('account2','passport2'),)
for u,p in all:
c = GmailClient()
c.login(u,p)
new=len(c.get_inbox_conversations(is_unread=True))
if new:
print time.asctime(), u+'@gmail.com', new
del c

def main():
import sys
if len(sys.argv)==1:
scan()

if '__main__'==__name__:
main()

还有人写了把yahoo、outlook之类的邮件系统中的联系人转到gmail里的脚本。

最近,有人发布了libgmail:
http://sourceforge.net/projects/libgmail/
不知道用起来怎么样。

2004-06-17

今天意外发现自己的 blogger 网站可以直接浏览了

不知道是不是属于国内封锁的偶尔放松。

比起国内的 blogger 网站,我还是更喜欢国外的 blogger 服务,尤其是 xml-rpc 服务,是我想在国内服务商中找到的功能,不过很可惜,没有 :(

2004-06-10

增加了自己的profile

以后似乎可以通过profile页面来观看自己的blog来,这可真是奇怪的组合:
http://www.blogger.com/profile/1916250