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。现在改过了。