<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5796527</id><updated>2011-11-28T08:36:31.452+08:00</updated><category term='linux'/><category term='apache'/><category term='setup'/><category term='android'/><category term='ldap'/><category term='funny'/><category term='shell'/><category term='python'/><category term='web'/><category term='perl'/><category term='debian'/><category term='GFW'/><category term='ubuntu'/><category term='django'/><category term='subversion'/><category term='google'/><category term='唠叨'/><title type='text'>举头望明月</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default?start-index=101&amp;max-results=100'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>116</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5796527.post-6061808750401745315</id><published>2010-10-27T06:54:00.004+08:00</published><updated>2010-10-27T07:15:47.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>导出Google Apps里所有的用户组和组员</title><content type='html'>&lt;a href="http://www.google.com/apps/"&gt;Google Apps&lt;/a&gt;的管理功能很不错，但用户组多了不好管理，时常要拿出来晒晒，调整一下结构。这就经常需要把所有组和组员列出来，幸亏Google提供了&lt;a href="http://code.google.com/googleapps/domain/gdata_provisioning_api_v2.0_reference_python.html#Retrieve_Member_Example"&gt;API&lt;/a&gt;，懒人的办法就是用脚本搞定。下面是python示例，输出比较简单。知道了如何做，你可以自己改成输出csv或者任何其他格式，都会容易。多说无益，上代码。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# Author: xieyanbo@gmail.com&lt;br /&gt;# dump_google_apps_mail_groups.py&lt;br /&gt;# export mail groups and group members from Google Apps service&lt;br /&gt;&lt;br /&gt;import gdata.apps.groups.service&lt;br /&gt;&lt;br /&gt;def print_all_members(email, domain, password):&lt;br /&gt;    group_service = gdata.apps.groups.service.GroupsService(email=email,&lt;br /&gt;            domain=domain, password=password)&lt;br /&gt;    group_service.ProgrammaticLogin()&lt;br /&gt;&lt;br /&gt;    def print_members(group_id):&lt;br /&gt;        for user in group_service.RetrieveAllMembers(group_id):&lt;br /&gt;            print user['memberId']&lt;br /&gt;&lt;br /&gt;    def shrink(str, max=20):&lt;br /&gt;        if not str:&lt;br /&gt;            return ''&lt;br /&gt;        str = str.replace('\n', ' ').strip().decode('utf8')&lt;br /&gt;        if len(str) &gt; max:&lt;br /&gt;            short = str[:max-3] + '...'&lt;br /&gt;        else:&lt;br /&gt;            short = str&lt;br /&gt;        return str.encode('utf8')&lt;br /&gt;&lt;br /&gt;    def print_groups(groups):&lt;br /&gt;        for group in groups:&lt;br /&gt;            gid = group['groupId']&lt;br /&gt;            print '%s, %s, %s' % (gid, group['groupName'],&lt;br /&gt;                    shrink(group['description']))&lt;br /&gt;            print '='*60&lt;br /&gt;            print_members(gid)&lt;br /&gt;            print&lt;br /&gt;&lt;br /&gt;    groups = group_service.RetrieveAllGroups()&lt;br /&gt;    print_groups(groups)&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    from optparse import OptionParser&lt;br /&gt;    parser = OptionParser()&lt;br /&gt;&lt;br /&gt;    parser.add_option('-e', '--email')&lt;br /&gt;    parser.add_option('-d', '--domain')&lt;br /&gt;    parser.add_option('-p', '--password')&lt;br /&gt;    options, args = parser.parse_args()&lt;br /&gt;&lt;br /&gt;    if not options.email:&lt;br /&gt;        parser.error('need email address to login')&lt;br /&gt;    if not options.domain:&lt;br /&gt;        parser.error('need domain to login')&lt;br /&gt;    if not options.password:&lt;br /&gt;        import getpass&lt;br /&gt;        password = getpass.getpass('Password: ')&lt;br /&gt;    else:&lt;br /&gt;        password = options.password or login&lt;br /&gt;    print_all_members(options.email, options.domain, password)&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    main()&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-6061808750401745315?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/6061808750401745315/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=6061808750401745315' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/6061808750401745315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/6061808750401745315'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2010/10/google-apps.html' title='导出Google Apps里所有的用户组和组员'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-5649779985046809519</id><published>2010-07-07T11:31:00.004+08:00</published><updated>2010-07-07T12:17:24.086+08:00</updated><title type='text'>在Gentoo里调试新软件包</title><content type='html'>最近又开始研究web测试的技术，迷上了西门子开发的&lt;a href="http://code.google.com/p/robotframework/"&gt;robot framework&lt;/a&gt;。不过服务器用的Gentoo上还没有这东西，只好自力更生。所以先记录一下给Gentoo添加新软件包的过程，下次也好照抄，以后再说robot framework有多好。&lt;br /&gt;&lt;br /&gt;Gentoo的包管理器叫做Portage，描述文件叫Portfile。现在的portage很讲究目录结构，就是Gentoo里的PORTDIR structure，所谓category。robot framework是用python开发的，照例是在dev-python下的某个目录中。没想到的是，现在ebuild对目录的检查很严格，即使在调试时安装本地的portfile也要遵循该结构：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;mkdir -p dev-python/robotframework&lt;br /&gt;mv robotframework-2.5.ebuild dev-python/robotframework/&lt;br /&gt;cd dev-python/robotframework&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;然后利用底层的ebuild包管理命令，对本地包生成数字摘要、测试安装和部署：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo ebuild robotframework-2.5.ebuild digest&lt;br /&gt;sudo ebuild robotframework-2.5.ebuild install&lt;br /&gt;sudo ebuild robotframework-2.5.ebuild qmerge&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;digest是最近新增加的指令？有这个命令省事多了，调试起来很happy。&lt;br /&gt;&lt;br /&gt;调试过程需要反复修改，得删除已经用qmerge安装到系统目录中的文件，以及portfile的缓存：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;sudo emerge -C robotframework-2.5&lt;br /&gt;sudo rm -rf /var/tmp/portage/dev-python/robotframework-2.5/&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;把dev-python/robotframework和dev-python/robotframework-seleniumlibrary向Gentoo提交了，不知道审核要多久。&lt;br /&gt;&lt;br /&gt;完。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-5649779985046809519?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/5649779985046809519/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=5649779985046809519' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/5649779985046809519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/5649779985046809519'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2010/07/gentoo.html' title='在Gentoo里调试新软件包'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-3106459884594212167</id><published>2009-04-26T16:11:00.005+08:00</published><updated>2009-04-26T16:56:08.508+08:00</updated><title type='text'>请，给点提示吧，bitten</title><content type='html'>一直在用&lt;a href="http://bitten.edgewall.org/"&gt;bitten&lt;/a&gt;做集成测试，效果挺好，现在天天离不了它。不过最近被它搞的很郁闷，因为bitten-slave吐出一行神秘的错误信息：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;[DEBUG   ] Sending POST request to 'https://mytrac.com/build/5632/steps/'&lt;br /&gt;[WARNING ] Server returned error 403: Forbidden&lt;br /&gt;[ERROR   ] HTTP Error 403: Forbidden&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;起因是因为最近升级了bitten，顺便想把以前的单个进程拆成多个，加快一下bitten的执行速度。人家说，一个和尚有水吃，两个和尚抬水吃，三个和尚没水吃，没想到软件也是这样。两个slave一块跑起来，就有了问题：有时这个出错，有时那个出错，提示都是神秘的403。观察了一下，出现错误的时候，都是某slave A先执行，B稍后也开始执行，然后A再次向服务器POST数据就会出错。猜测可能用户之间有冲突，试过了几种方式，使用各自独立的用户名，在不同目录执行，在不同机器执行，但问题依旧。今天费了些力气，把bitten的代码跟踪了半天，发现程序调用了这个&lt;a href="http://bitten.edgewall.org/browser/trunk/bitten/queue.py?rev=629#L260"&gt;函数&lt;/a&gt;：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;    def reset_orphaned_builds(self):&lt;br /&gt;       """Reset all in-progress builds to ``PENDING`` state if they've been&lt;br /&gt;       running so long that the configured timeout has been reached.&lt;br /&gt;    &lt;br /&gt;       This is used to cleanup after slaves that have unexpectedly cancelled&lt;br /&gt;       a build without notifying the master, or are for some other reason not&lt;br /&gt;       reporting back status updates.&lt;br /&gt;       """&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;幸亏代码里有注释，这才恍然大悟，原来是timeout参数在作怪。进入trac管理界面，把timeout从10秒调高到500秒，总算解决了问题。&lt;br /&gt;&lt;br /&gt;实际上，在bitten描述&lt;a href="http://bitten.edgewall.org/wiki/MasterSlaveProtocolHttp#CancellingBuilds"&gt;客户端协议&lt;/a&gt;的文档中，已经指出了这一问题：&lt;br /&gt;&lt;blockquote&gt;To handle the case of build slaves going away at some point between having created a build and completing the build, the build master should have a configurable timeout. All in-progress builds would be checked against this timeout; if there has been no activity on the build for an amount of time exceeding the timeout, the master should cancel the build, resetting it the PENDING state. If a slave later does decide to come back to life and post results, it would get 404 (Not Found) or 409 (Conflict) errors, and should cancel the build on its side, too. &lt;/blockquote&gt;&lt;br /&gt;但由于未明的原因，bitten的实现用403代替了404、409，并且没有给出进一步的提示信息。要是bitten-slave能打印一条附加信息，告诉我403的原因可能跟timeout设置有关系，那该多好呀。&lt;br /&gt;&lt;br /&gt;这个故事告诉我们，别嫌提示信息废话太多，能多写一点是一点，不定什么时候它就会节省自己和别人的若干时间。折腾了三天以后，我现在太喜欢话唠的软件啦。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-3106459884594212167?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/3106459884594212167/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=3106459884594212167' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3106459884594212167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3106459884594212167'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2009/04/bitten.html' title='请，给点提示吧，bitten'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-5505354893951349967</id><published>2007-11-30T18:45:00.000+08:00</published><updated>2007-11-30T19:00:34.050+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>用于django中的缓存decorator</title><content type='html'>myproject/&lt;a href="http://www.djangosnippets.org/snippets/492/"&gt;decorators.py&lt;/a&gt;代码：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;from django.core.cache import cache&lt;br /&gt;&lt;br /&gt;def cached(cache_key='', timeout_seconds=1800):&lt;br /&gt;    def _cached(func):&lt;br /&gt;        def do_cache(*args, **kws):&lt;br /&gt;            if isinstance(cache_key, str):&lt;br /&gt;                key = cache_key % locals()&lt;br /&gt;            elif callable(cache_key):&lt;br /&gt;                key = cache_key(*args, **kws)&lt;br /&gt;            data = cache.get(key)&lt;br /&gt;            if data: return data&lt;br /&gt;            data = func(*args, **kws)&lt;br /&gt;            cache.set(key, data, timeout_seconds)&lt;br /&gt;            return data&lt;br /&gt;        return do_cache&lt;br /&gt;    return _cached&lt;/pre&gt;&lt;/blockquote&gt;只能用于静态数据的缓存，如果需要对connection.cursor等对象进行缓存，那需要函数本身做更多的处理，不是这个decorator要解决的问题。&lt;br /&gt;&lt;br /&gt;使用范例1，简单的cache key：&lt;blockquote&gt;&lt;pre&gt;from myproject.decorators import cached&lt;br /&gt;&lt;br /&gt;class MenuItem(models.Model):&lt;br /&gt;    @classmethod&lt;br /&gt;    @cached('menu_root')&lt;br /&gt;    def get_root(self):&lt;br /&gt;        return MenuItem.objects.get(pk=1)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;使用范例2，cache key需要根据调用参数来决定：&lt;blockquote&gt;&lt;pre&gt;@cached(lambda u: 'user_privileges_%s' % u.username, 3600)&lt;br /&gt;def get_user_privileges(user):&lt;br /&gt;    #...&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;使用范例3，需要只对直接调用者做缓存，递归的调用不需要，那么把要递归函数独立出来：&lt;blockquote&gt;&lt;pre&gt;class MenuItem(models.Model):&lt;br /&gt;    @cached(lambda s,u: 'user_menu_%s_%s' % (u.username, s.id), 3600)&lt;br /&gt;    def permit_menu_items(self, user):&lt;br /&gt;        return self._permit_menu_items(user)&lt;br /&gt;&lt;br /&gt;    def _permit_menu_items(self, user):&lt;br /&gt;        items = []&lt;br /&gt;        for mi in self.children():&lt;br /&gt;            items += [n for n in mi._permit_menu_items(user)]&lt;br /&gt;        return items&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;使用范例4，返回结果中部分需要做缓存的，首先把要缓存的部分extract出来，然后对其应用缓存机制：&lt;blockquote&gt;&lt;pre&gt;class Report:&lt;br /&gt;    def get_summary(self, day, path='', sort='path', type='daily'):&lt;br /&gt;        data = self._get_summary(day, path, type)&lt;br /&gt;        # sort ...&lt;br /&gt;        return data&lt;br /&gt;&lt;br /&gt;    @cached(lambda s,d,p,t:'summary_%s_%s_%s'%(d,p,t), 3600*24)&lt;br /&gt;    def _get_summary(self, day, path='', type='daily'):&lt;br /&gt;        #...&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-5505354893951349967?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/5505354893951349967/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=5505354893951349967' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/5505354893951349967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/5505354893951349967'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/11/djangodecorator.html' title='用于django中的缓存decorator'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-3228840773814474773</id><published>2007-11-16T00:06:00.000+08:00</published><updated>2007-11-16T00:16:36.583+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>人们研究android的热情高涨</title><content type='html'>短短一天时间，又有很多新情况发生。&lt;br /&gt;&lt;br /&gt;首先，有人测试了汉字的显示，发现可以支持。我也在模拟器里试了一下，确实很容易。系统内带了&lt;a href="http://www.sda-asia.com/sda/features/psecom,id,1638,nodeid,1,_language,Singapore.html"&gt;几种字体&lt;/a&gt;，其中有一款支持CJK字符。&lt;br /&gt;&lt;br /&gt;其次，有人&lt;a href="http://groups.google.com/group/android-developers/browse_thread/thread/dffafba924e3a2e6"&gt;成功编译&lt;/a&gt;了c版本的&lt;a href="http://benno.id.au/blog/2007/11/13/android-native-apps"&gt;hello world&lt;/a&gt;，并执行成功。使用的是arm的编译器。而且还编译了&lt;a href="http://benno.id.au/blog/2007/11/14/android-busybox"&gt;全功能的busybox&lt;/a&gt;，可以安装到模拟器的系统中。&lt;br /&gt;&lt;br /&gt;另外，已经&lt;a href="http://www.burtonini.com/blog/computers/poky-android-2007-11-13-18-00&lt;br /&gt;"&gt;有人&lt;/a&gt;成功编译linux放入android模拟器中运行。&lt;br /&gt;&lt;br /&gt;邮件列表里很多人都在打听、讨论能不能用C/C++/Python/Ruby之类的语言代替java来开发。今天去&lt;a href="http://www.jython.org/"&gt;jython&lt;/a&gt;的项目主页看了看，惊奇的发现项目复苏了，jython 2.2已经正式发布。期待高手把jython打包集成进android吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-3228840773814474773?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/3228840773814474773/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=3228840773814474773' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3228840773814474773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3228840773814474773'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/11/android_16.html' title='人们研究android的热情高涨'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-510679324921740823</id><published>2007-11-15T23:46:00.000+08:00</published><updated>2007-11-16T00:20:00.872+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Django+Cheetah</title><content type='html'>最近在用&lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;做东西，考虑到现在的流行程度，用Django在稳定性、bug修正速度、参考资料等方面很有优势。但它的模板系统很被一些人诟病，很多用python开发者第一次使用Django都会对它发点牢骚。Python语言的魅力之一就是它的开发，甚至对象实例在运行中都可以随时被改变。但Django因为一些考虑，人为的限制了模板系统的功能，不允许它过于强大。作为一种设计思想，增加限制可以简化问题的复杂程度、提高效率和代码安全性等等，好处不少。但我们是Python程序员，不受拘束、流畅而连贯的书写代码是我们的一贯风格（或说是追求目标），反正我可不愿被当孩子一样限制不许做这、不许做那。用最快的速度，写出糟糕但是能运行的代码，也是程序员应该争取的一个权利--有了可以跑的代码，才能有生存的机会，才能有后续的优化。所以我要寻找一种Django模板的替换方案。&lt;br /&gt;&lt;br /&gt;从编写者的舒适角度来看，zpt等类似php的语法写起来感觉都恩罗唆，逻辑之外要码的累赘字符太多了，不够爽快。类似&lt;a href="http://webpy.org/"&gt;webpy&lt;/a&gt;、&lt;a href="http://www.cheetahtemplate.org/"&gt;Cheetah&lt;/a&gt;的模板用起来更简单，而且有着类似python的语法风格，个人比较喜欢。据测试，Cheetah的速度也非常快，历史又很悠久，社区活跃，使用起来基本没有后顾之忧。所以我选择Cheetah。参考了&lt;a href="http://www.eflorenzano.com/blog/cheetah-and-django/" title="Cheetah and Django"&gt;Eric Florenzano的文章&lt;/a&gt;，在Django中使用Cheetah非常简单。首先要在settings.py中配置模板目录：&lt;blockquote&gt;&lt;code&gt;TEMPLATE_DIRS = (&lt;br /&gt;    '/path/to/myproject/templates',&lt;br /&gt;)&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;然后编写一个使用Cheetah模板的render_to_response函数，用来代替Django自带的：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;import os.path&lt;br /&gt;from Cheetah.Template import Template&lt;br /&gt;from django.conf import settings&lt;br /&gt;from django.http import HttpResponse&lt;br /&gt;&lt;br /&gt;def render_to_response(template_name, context=None, **kwargs):&lt;br /&gt;    for template_dir in settings.TEMPLATE_DIRS:&lt;br /&gt;        path = os.path.join(template_dir, template_name)&lt;br /&gt;        if os.path.exists(path):&lt;br /&gt;            template = Template(file = path, searchList = (context,))&lt;br /&gt;            return HttpResponse(unicode(str(template), 'utf-8'), **kwargs)&lt;br /&gt;    raise ValueError, 'Could not find template for %s' % template_name&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;我是把上面这段代码放在myproject/shortcuts.py文件中。使用起来是这样子：&lt;blockquote&gt;&lt;pre&gt;from myproject.shortcuts import render_to_response&lt;br /&gt;def index(request):&lt;br /&gt;    return render_to_response('index.tmpl', {'title': 'index')&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-510679324921740823?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/510679324921740823/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=510679324921740823' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/510679324921740823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/510679324921740823'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/11/djangocheetah.html' title='Django+Cheetah'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-3689205124532435438</id><published>2007-11-15T23:31:00.000+08:00</published><updated>2007-11-16T00:18:47.684+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><title type='text'>Dell 640m的双显示器配置</title><content type='html'>参考了一下Ubuntu论坛里&lt;a href="http://ubuntuforums.org/showthread.php?t=358265" title="Dual Monitors on Dell 640m laptop"&gt;一个帖子&lt;/a&gt;，配置好了双显示器，也算是把多出来的一个显示器利用上了。这里是xorg.conf的后半部分：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;  BoardName    "945 GM"&lt;br /&gt;  BusID        "0:2:0"&lt;br /&gt;  Driver       "i810"&lt;br /&gt;  Identifier   "Device[1]"&lt;br /&gt;  Option       "MonitorLayout" "CRT,LFP"&lt;br /&gt;  Screen       1&lt;br /&gt;  VendorName   "Intel"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt;  BoardName    "945 GM"&lt;br /&gt;  BusID        "0:2:0"&lt;br /&gt;  Driver       "i810"&lt;br /&gt;  Identifier   "Device[0]"&lt;br /&gt;  Screen       0&lt;br /&gt;  VendorName   "Intel"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;  DisplaySize  340 270&lt;br /&gt;  Identifier   "Monitor[0]"&lt;br /&gt;  ModelName    "DELL 1708FP"&lt;br /&gt;  VendorName   "DELL"&lt;br /&gt;  Option       "DPMS"&lt;br /&gt;  HorizSync    31-80&lt;br /&gt;  VertRefresh  56-75&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;  DisplaySize  305 230&lt;br /&gt;  Identifier   "Monitor[1]"&lt;br /&gt;  ModelName    "DELL 1280X800 LAPTOP"&lt;br /&gt;  VendorName   "DELL"&lt;br /&gt;  Option       "DPMS"&lt;br /&gt;  HorizSync    30-67&lt;br /&gt;  VertRefresh  30-60&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;  Device       "Device[0]"&lt;br /&gt;  Identifier   "Screen[0]"&lt;br /&gt;  Monitor      "Monitor[0]"&lt;br /&gt;  DefaultDepth 24&lt;br /&gt;  SubSection "Display"&lt;br /&gt;    Modes      "1280x1024" "1152x864" "1024x768" "800x600" "720x400" "640x480"&lt;br /&gt;  EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt;  Device       "Device[1]"&lt;br /&gt;  Identifier   "Screen[1]"&lt;br /&gt;  Monitor      "Monitor[1]"&lt;br /&gt;  DefaultDepth 24&lt;br /&gt;  SubSection "Display"&lt;br /&gt;    Modes      "1280x800" "1024x768" "800x600" "640x480"&lt;br /&gt;  EndSubSection&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "ServerLayout"&lt;br /&gt;  Identifier   "Default Layout"&lt;br /&gt;  InputDevice  "Generic Keyboard"&lt;br /&gt;  InputDevice  "Configured Mouse"&lt;br /&gt;  Option       "Clone"    "off"&lt;br /&gt;  Option       "Xinerama" "on"&lt;br /&gt;  Screen       "Screen[1]" leftof "Screen[0]"&lt;br /&gt;  Screen       "Screen[0]"&lt;br /&gt;  InputDevice  "Synaptics Touchpad"&lt;br /&gt;  InputDevice  "stylus" "SendCoreEvents"&lt;br /&gt;  InputDevice  "cursor" "SendCoreEvents"&lt;br /&gt;  InputDevice  "eraser" "SendCoreEvents"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "DRI"&lt;br /&gt;  Mode 0666&lt;br /&gt;EndSection&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Xinerama模式非常好用，笔记本屏幕的和外接的DELL LCD显示器都可以打到最大分辨率；如果按ctrl_alt_"num +"或者ctrl_alt_"num 1"，还可以即时切换鼠标指针所在屏幕的分辨率，在外接投影仪时很方便。让我很纳闷的是，配置里“Screen "Screen[0]"”这一句必须写在screen[1]的后面，不知道是什么原因。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-3689205124532435438?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/3689205124532435438/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=3689205124532435438' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3689205124532435438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3689205124532435438'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/11/dell-640m.html' title='Dell 640m的双显示器配置'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-2307555650768267787</id><published>2007-11-14T23:38:00.000+08:00</published><updated>2007-11-16T00:17:04.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>android真是热火朝天呀</title><content type='html'>才一天，&lt;a href="http://code.google.com/android/"&gt;android&lt;/a&gt;的&lt;a href="http://groups.google.com/group/android-developers/"&gt;google group&lt;/a&gt;里就600多主题了。可惜blogsearch.google.com里还现在搜不到任何andriod主题的blog文章，但我已经四处看到不少文章了。我也&lt;a href="http://code.google.com/android/download.html"&gt;下载&lt;/a&gt;了一个sdk，用起来很不错。模拟器是基于qemu的，速度很快。不过浏览豆瓣会有文字重叠或者被压缩成条的问题，跟豆瓣的css和 layout table有很大关系，看来要改善在手机的webkit浏览器上的效果，豆瓣还要做很多努力。&lt;br /&gt;&lt;br /&gt;google groups里有人在问，&lt;a href="http://groups.google.com/group/android-developers/browse_thread/thread/90ed8c51e1547516"&gt;能不能用python语言来做开发&lt;/a&gt;。但从架构来看，官方会提供的应该只有java。所以有人建议用jython来做，一样能访问所有的api，这个主意倒是不错，但jython项目现在还活跃吗？用五六年前的python语法和类库来开发程序，还是让我死了好啦。&lt;br /&gt;&lt;br /&gt;不知道有没有提供像XIM之类的输入法api，但是既然和中国电信、日本docomo这些公司合作，应该会有人在做CJK的输入法吧？可是对他们的开发出来东西的质量表示怀疑，各个智能手机平台上好用的中文输入法大多是个人开发的，这个功能需要好的用户体验才能，这些大公司往往欠缺的就是替用户着想的能力或说是动力。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-2307555650768267787?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/2307555650768267787/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=2307555650768267787' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2307555650768267787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2307555650768267787'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/11/android.html' title='android真是热火朝天呀'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-2882462259194201661</id><published>2007-10-28T16:03:00.000+08:00</published><updated>2007-10-28T16:17:35.389+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>让程序只能启动一份</title><content type='html'>有时写的程序因为资源等等原因，应该只启动一份。利用指定的文件锁，可以实现这样的功能。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;import os&lt;br /&gt;import fcntl&lt;br /&gt;import errno&lt;br /&gt;&lt;br /&gt;def lock_file(filename):&lt;br /&gt;    fd = os.open(filename, os.O_CREAT | os.O_WRONLY, 0666)&lt;br /&gt;    try:&lt;br /&gt;        fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)&lt;br /&gt;        return True&lt;br /&gt;    except IOError, e:&lt;br /&gt;        if e.errno in (errno.EACCES, errno.EAGAIN):&lt;br /&gt;            return False&lt;br /&gt;&lt;br /&gt;if not lock_file('/tmp/test.lock'):&lt;br /&gt;  print "another instance is running"lock_file('/tmp/test.lock')&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;再附上一份perl的代码：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;use Fcntl qw(:flock);&lt;br /&gt;&lt;br /&gt;  my $lockdir = 'lock';&lt;br /&gt;  if (!-d $lockdir) {&lt;br /&gt;      mkdir $lockdir, 0755;&lt;br /&gt;      my $status=$!;&lt;br /&gt;      die "Failed to create $lockdir: $status\n" if (!-d $lockdir);&lt;br /&gt;  }&lt;br /&gt;  my $lockfile="$lockdir/test.pid";&lt;br /&gt;  if (!open(PID, "&gt;$lockfile")) {&lt;br /&gt;    die "can not open pid file\n";&lt;br /&gt;  }&lt;br /&gt;  unless (flock(PID, LOCK_EX|LOCK_NB)) {&lt;br /&gt;    die "can not lock pid file\n";&lt;br /&gt;  }&lt;br /&gt;  print "locked\n";&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;顺便再抱怨两句，perl5补丁摞补丁的语法很怪异，异常处理机制竟然要用if...unless，类的写法也搞得跟写dll一样。不得不说，perl的语法离现代语言太远了。一个优美的语言可以提高开发效率，期待一下perl6最终出来的样子。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-2882462259194201661?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/2882462259194201661/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=2882462259194201661' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2882462259194201661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2882462259194201661'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/10/blog-post_28.html' title='让程序只能启动一份'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-528766157013824458</id><published>2007-10-28T14:15:00.000+08:00</published><updated>2007-10-28T16:18:27.932+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>在python和perl程序中启用logging记录日志</title><content type='html'>写一些脚本程序的时候，合理的记录日志是必不可少的，尽量不往stdout乱打印信息为好，这时python的logging模块很用用处。不过调试时为了方便，还是希望日志也打印到stdout一份，这样出现什么问题一目了然；否则就只有再开个terminal，用tail -f my.log来检查了。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;import logging&lt;br /&gt;&lt;br /&gt;def _init_logging(logfile, debug=False):&lt;br /&gt;    if debug:&lt;br /&gt;        level = logging.DEBUG&lt;br /&gt;    else:&lt;br /&gt;        level = logging.INFO&lt;br /&gt;    logging.basicConfig(level=level, format='%(asctime)s %(message)s',&lt;br /&gt;            datefmt='%Y-%m-%d %H:%M:%S', filename=logfile, filemode='w')&lt;br /&gt;    if debug:&lt;br /&gt;        console = logging.StreamHandler()&lt;br /&gt;        console.setLevel(logging.DEBUG)&lt;br /&gt;        formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')&lt;br /&gt;        console.setFormatter(formatter)&lt;br /&gt;        logging.getLogger('').addHandler(console)&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    import os&lt;br /&gt;    debug = os.environ.get('DEBUG') and True or False&lt;br /&gt;    _init_logging('my.log', debug=debug)&lt;br /&gt;    logging.info('start')&lt;br /&gt;&lt;br /&gt;    logging.info('end')&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;这样程序就会知道检查环境变量DEBUG，往合适的地方打印信息了。调试程序时执行方法：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;$ DEBUG=1 ./my.py&lt;br /&gt;2007-10-22 17:30:59,917 INFO     start&lt;br /&gt;2007-10-22 17:31:02,027 INFO     end&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;最近还写了一些perl代码，和上面差不多功能的perl代码也贴出来：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;use strict;&lt;br /&gt;use Log::Log4perl qw(:easy);&lt;br /&gt;&lt;br /&gt;my $log_file = "/tmp/my.log";&lt;br /&gt;&lt;br /&gt;if (exists $ENV{DEBUG} &amp;&amp; $ENV{DEBUG}) {&lt;br /&gt;  Log::Log4perl-&gt;easy_init(&lt;br /&gt;    {file  =&gt; "&gt;&gt; " . log_file, level =&gt; $DEBUG},&lt;br /&gt;    {file  =&gt; "STDOUT", level =&gt; $DEBUG},&lt;br /&gt;  );&lt;br /&gt;} else {&lt;br /&gt;  Log::Log4perl-&gt;easy_init(&lt;br /&gt;    {file  =&gt; "&gt;&gt; " . $log_file, level =&gt; $DEBUG},&lt;br /&gt;  );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;INFO("start...");&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;这里用到log4perl模块，需要提前安装：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;sudo perl -MCPAN -e'install Log::Log4perl'&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;虽然适应了一段时间，但perl满眼$@%这些助记符，还是很阻碍阅读和思维连贯，不习惯。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-528766157013824458?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/528766157013824458/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=528766157013824458' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/528766157013824458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/528766157013824458'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/10/pythonperllogging.html' title='在python和perl程序中启用logging记录日志'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-1872860619837464400</id><published>2007-10-11T02:35:00.000+08:00</published><updated>2007-10-11T03:07:34.375+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>睡觉还是思考，这是个问题</title><content type='html'>晚上回家，意外发现被防盗门挡在了屋外。防盗门不防小偷，倒防主人，真是奇怪。叫来开锁公司，师傅跟铁门叫了一个多小时的劲，最终还是无功而返，我们一起被楼上吵得忍无可忍的邻居给轰走了。无奈之下，只有回办公室委屈一夜了，真是郁闷。&lt;br /&gt;&lt;br /&gt;以前熬夜的时候，要么整晚不睡，要么是办公室有沙发，可以当成临时的床。现在的办公室没沙发这个设备，经过一番调研，决定用三个椅子拼在一起。按从电视看到的经验，这应该是办公室临时床铺的经典模式，不少人应该都这么干过，不过睡到上面的感觉可是只有自己心知肚明了。中间的椅子正好硌着腰眼，肩膀也只能有半个放到椅子面上，感觉别提多难受了。可就在这时，明明已经累的够呛，眼皮都酸的不想抬起来了，脑袋里的思想倒活跃起来了，平常做沙发上闭目沉思都没这时候想法多。可见现今哲学家变少是有道理的，只有睡硬板床的人各种稀奇古怪的想法才能层出不穷，有了席梦思睡的谁还瞎琢磨事呀，早呼呼大睡了。就在辗转反侧--俗称“烙饼”--之际，已经把手机里&lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done" title="Get Things Done"&gt;GTD&lt;/a&gt;软件里的事情又review了一遍，这次效率真高，很高兴；但是又发现严重拖延的事情非常多，继续郁闷...下半年其实过得不好，事实证明计划不如变化，现在离梦想中的幸福生活似乎更加遥远了...烙饼到第九圈，还是睡不着。人生苦短，可竟然还得睡觉。据说达芬奇天天打盹，加起来每天只睡两三个小时，看他能研究那么多领域也就不足为奇了。我不求达到奇人的地步，只要让我今晚少睡几个小时，明天照样能精神起来就好了。&lt;br /&gt;&lt;br /&gt;这个故事告诉我们，家里床铺不好的人有可能得腰锥疾病，也有可能成为一代大家，切记切记。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-1872860619837464400?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/1872860619837464400/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=1872860619837464400' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/1872860619837464400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/1872860619837464400'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/10/blog-post.html' title='睡觉还是思考，这是个问题'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-2163489813337194603</id><published>2007-08-28T19:27:00.000+08:00</published><updated>2007-08-28T19:35:03.661+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>怪序字符？</title><content type='html'>最近人们流行贴怪序字符，想必用Linux的人不会大惊小怪。其实大家贴的这就是三个unicode的字符：\u202d\u202e\u0489，前两个叫做控制字符LRO和RLO，也就是“从左到右覆盖”和“从右到左覆盖”。这些控制字符是给阿拉伯语等特殊书写顺序的语言准备的，没有什么稀奇。所有用Linux系统的人都可以在gedit等编辑区的右键菜单中任意添加这些控制字符，以方便阿拉伯语、希伯来语等书写，以及它们同其他语言的混合录入。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-2163489813337194603?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/2163489813337194603/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=2163489813337194603' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2163489813337194603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/2163489813337194603'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/blog-post_28.html' title='怪序字符？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-4227941321140511085</id><published>2007-08-27T10:41:00.000+08:00</published><updated>2007-08-27T10:56:29.252+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>原来还有个脚本叫ssh-copy-id</title><content type='html'>才发现openssh-client里有个脚本叫做ssh-copy-id，看了看openssh官方&lt;a href="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/"&gt;CVSweb&lt;/a&gt;中的代码，也没有找到，它从那里冒出来的？根据Debian包里的ChangeLog记录，1999年这个脚本就被加进去了，奇怪一直都没注意到它。原来都用这个脚本来把自己的ssh公钥发布到服务器上：&lt;blockquote&gt;&lt;code&gt;#!/bin/sh&lt;br /&gt;ssh "$target" 'test -d .ssh || mkdir -m 0700 .ssh ; cat &gt;&gt; .ssh/authorized_keys &amp;&amp; chmod 0600 .ssh/*' &lt; ~/.ssh/id_rsa.pub&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;现在可以舍弃了，据说&lt;a href="http://www.chiark.greenend.org.uk/ucgi/~cjwatson/cvsweb/openssh/contrib/ssh-copy-id?rev=1.6;content-type=text%2Fplain"&gt;ssh-copy-id&lt;/a&gt;兼容性更好。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-4227941321140511085?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/4227941321140511085/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=4227941321140511085' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4227941321140511085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4227941321140511085'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/ssh-copy-id.html' title='原来还有个脚本叫ssh-copy-id'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-1346574741403650748</id><published>2007-08-20T00:32:00.000+08:00</published><updated>2007-08-20T00:39:34.104+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>无线上网中</title><content type='html'>终于可以在家里无线上网啦，可惜最近某人老是不上网，心情也受了影响，高兴不起来。&lt;br /&gt;&lt;br /&gt;最近需要赶着还债的事情还真不少，有的忙了。&lt;br /&gt;&lt;br /&gt;睡觉。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-1346574741403650748?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/1346574741403650748/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=1346574741403650748' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/1346574741403650748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/1346574741403650748'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/blog-post_20.html' title='无线上网中'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-4680548711318517428</id><published>2007-08-19T11:18:00.000+08:00</published><updated>2007-08-19T11:24:33.648+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>广而告之：诈骗信一封</title><content type='html'>发到我的gmail邮箱里来了，诈骗、传销、垃圾邮件，都被占全了。第一次收到以创业为诱饵的中文诈骗信，广而告之一下。不知道网上有没有向公安机关举报的地址呢？&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;from:  Oafkow &lt;lqwd@ccicards.com&gt;&lt;br /&gt;to:  xiexiege@163.com  &lt;br /&gt;date:  Aug 18, 2007 8:34 PM  &lt;br /&gt;subject:  m创业邀请函  &lt;br /&gt;&lt;br /&gt;亲爱的朋友：&lt;br /&gt;您好！&lt;br /&gt;     关于“筹集创业资金互助”活动的通告&lt;br /&gt;&lt;br /&gt;     请静下心把这封信仔细看完，然后马上行动！！！&lt;br /&gt;&lt;br /&gt;各位辛勤创业的同仁：&lt;br /&gt;&lt;br /&gt;   我们没有钱，所以我们要挣钱，所以我们要创业，但是创业的艰难在于启动资金筹措问题上，而互助却是中华民族的传&lt;br /&gt;&lt;br /&gt;统美德。这项由创业同仁们自发组织的互助活动的目的是要帮助所有自愿加入该互助活动的朋友完成心愿,筹集创业资金，达&lt;br /&gt;&lt;br /&gt;到创业的目的。只要你参与,并严格按规则操作,你必将得到丰厚的资助。你不但自己可以得到几十万、上百万的资金,也支持&lt;br /&gt;&lt;br /&gt;了其他的创业者.如果说创业是人生的转折点,那么有幸参加这次互助活动就是我们的一个人生转折点.然而毕竟多数的创业者&lt;br /&gt;&lt;br /&gt;收不到这封信,而为之遗憾!所以，当你得到无数创业人的资助时,别忘了还有更多和我们一样正在为创业而痛苦的朋友！给他&lt;br /&gt;&lt;br /&gt;一封信，助他度过难关。其实创业的艰难在于启动资金筹措问题上，而互助却是中华民族的传统美德，所以我认为很有必要&lt;br /&gt;&lt;br /&gt;参与。&lt;br /&gt;&lt;br /&gt; 一、创业资金筹措的方法：&lt;br /&gt;&lt;br /&gt;就是依据《二八法则》,使10元变成100万元 ！如果你花10元钱买彩票，得头等大奖的概率是千万分之一，而你只要汇出十块&lt;br /&gt;&lt;br /&gt;钱，有百分之百的把握得到１００万回报。这个活动的可行性在于它严格遵守《二八法则》。世上有很多奇妙的事，《二八&lt;br /&gt;&lt;br /&gt;法则》就是其中之一：社会上８０％的财富在２０％的人手里，２０％的财富在８０％的人手里。只要花费１０块钱，然后&lt;br /&gt;&lt;br /&gt;发200个Ｅ－ｍａｉｌ，你就可以验证《二八法则》的灵运，同时将得到１００万的收入。　&lt;br /&gt;&lt;br /&gt; 二、“筹集创业资金联谊互助”活动的原理:&lt;br /&gt;&lt;br /&gt;本活动采用著名的“倍增扩散法”，这种方法没有永远的第一和穷尽.这种方法是每个人都有平等的机会从第四位升到第一&lt;br /&gt;&lt;br /&gt;位,只要参加活动,就可以100％获得可观效益,这并不像彩票一样只有千万分之一的运气,而是收到信并积极响应者都必然得到&lt;br /&gt;&lt;br /&gt;巨额回报。每人按规则向100人(或更多的创业者)发出联谊信,按20％的反馈率算,用“倍增扩散法“计算一下,可想而知其效&lt;br /&gt;&lt;br /&gt;果。&lt;br /&gt;&lt;br /&gt; 三、互助联谊排序表：&lt;br /&gt;&lt;br /&gt;1号 中国工商银行 卡号： 95588 04000 15516 1751 康国平&lt;br /&gt;&lt;br /&gt;2号 中国农业银行 卡号： 62284 80120 07038 3514 魏  芬&lt;br /&gt;&lt;br /&gt;3号 中国工商银行 卡号:  95588 04000 16530 4243 陈  瑜&lt;br /&gt;&lt;br /&gt;4号 中国招商银行 卡号： 6225  8800  0122  7850 王志华&lt;br /&gt;&lt;br /&gt;表中四位创业者的编号为1号、2号、3号、4号,你收到信后,以最短的时间给1号寄去10元(寄钱的时间越长,扩散就越慢,你升&lt;br /&gt;&lt;br /&gt;级到1号的时间也越晚.世间之事有时也是很微妙的，诚实的人也有诚实的回报，别因小失大哦！)然后将编号为1的创业者删&lt;br /&gt;&lt;br /&gt;掉(此时1号已经被资助完毕),请你将2、3、4号的创业人依次递进,成为1、2、3,再把你的姓名和卡号,加在4号的位置上(注意&lt;br /&gt;&lt;br /&gt;你一定要在资助完1号才可以将你的卡号加上去),你就成了第4号,排好后把些信分别发给200位或尽量更多各地创业人,当这&lt;br /&gt;&lt;br /&gt;200位再发出信时，你就是200X200=40000封信中的3号了，依次类推，当你变成1号时，扩散人数可想而知,对你的回报是惊人&lt;br /&gt;&lt;br /&gt;的.而且你寄出仅仅10元的投入,且是寄给1号的创业人。你就会开始得到朋友们资助的创业资金了！当然发出的信越多效果就&lt;br /&gt;&lt;br /&gt;越佳，建议你多坚持发信一段时间！前面的劳动都是你应该做的，也是在为你增加资助的人数，所以不要跳级，这样只会让&lt;br /&gt;&lt;br /&gt;你得到的资助变少几百倍！&lt;br /&gt;&lt;br /&gt;以下是对倍增扩散法的图例说明(注意,本图以每位创业者发两封邮件为例)&lt;br /&gt;                               ☆（你－创业者１）&lt;br /&gt;                                           ↓&lt;br /&gt;↓&lt;br /&gt; ↓￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣↓&lt;br /&gt;                  ★                                            ★------４级&lt;br /&gt;                  ↓　　　　　　　　　　　　　　　　　　　　　　↓&lt;br /&gt;↓￣￣￣￣￣￣ ￣￣￣↓　　　　　　　　　　　↓￣￣￣￣￣￣￣￣￣￣↓&lt;br /&gt;★　　　　　         ★　　　　　　　　　　　★　　　　　　　      ★-----３级&lt;br /&gt;↓　　　　　　　　　 ↓　　　　　　　　　　　↓　　　　　　　　　　↓&lt;br /&gt;  ↓￣￣￣￣↓　　　　↓￣￣￣￣￣↓　　　　　↓￣￣￣￣￣↓　　　  ↓￣￣￣￣￣↓&lt;br /&gt;  ★　　    ★        ★　　      ★　        ★          ★        ★          ★-----２级&lt;br /&gt;  ↓　　　　↓　　　　↓　　　　　↓　　　　　↓　　　　　↓　　　  ↓　　　　　↓&lt;br /&gt;↓￣￣↓　↓￣￣↓　↓￣￣↓　　↓￣￣↓　　↓￣￣↓　　↓￣￣↓　↓￣￣↓　  ↓￣￣↓&lt;br /&gt;★　　★　★　　★　★　　★　　★　　★　　★　　★　　★　　★　★　　★　  ★　　★------１级&lt;br /&gt;&lt;br /&gt;  收到你发出的信件的人是处于４级的创业者－－２人（这时你的银行卡号是排在４号位）&lt;br /&gt;&lt;br /&gt;  当４级的创业者将信件发出时收件人是３级的创业者－－４人（这时你的银行卡号是排在３号位）&lt;br /&gt;&lt;br /&gt;  当３级的创业者将信件发出时收件人是２级的创业者－－８人（这时你的银行卡号是排在２号位）&lt;br /&gt;&lt;br /&gt;  当２级的创业者将信件发出时收件人是１级的创业者－－１６人（这时你的银行卡号是排在１号位）&lt;br /&gt;&lt;br /&gt;  若以每位创业者发100封邮件的话当你的银行卡号排在１号位时就有100X100X100X100=100000000人收到邮件&lt;br /&gt;&lt;br /&gt; 四、注意:&lt;br /&gt;&lt;br /&gt;在你给1号创业人打钱后,,请按原格式递进,消除1号,将其余号按顺序递进,增加你为4号,重新把互助联谊信修改一下,尽快发,&lt;br /&gt;&lt;br /&gt;务必认真校对清楚,众人拾柴火焰高,如在你处中断,实在太可惜.本来我们都是公布创业者的地址和姓名，但应广大创业者的&lt;br /&gt;&lt;br /&gt;要求，我们把创业者的名字和地址做自愿处理，愿意公布的也可以，不愿意的也可以匿名从事。对一些主动返回信息的资助&lt;br /&gt;&lt;br /&gt;者作报道：到目前为止，收到较多创业资金的有:&lt;br /&gt;&lt;br /&gt;重庆市石桥铺达飞苑南华街423号赵东林(邮编:400039 电话:023-61613581)，他发了235份邮件，收到资助款72万元；南京市&lt;br /&gt;&lt;br /&gt;珠江路373号-5A韦良栋(邮编:210018  电话:025-86871956)发出联谊信220封，三个月后收到120万元；天津大港中学李万祥&lt;br /&gt;&lt;br /&gt;(邮编:300270)发了330份邮件，两个月收到100余万元；湖南长沙市东区政协委员刘振时(邮编:410011)发出220封联谊信，三&lt;br /&gt;&lt;br /&gt;个月收到130万元。&lt;br /&gt;&lt;br /&gt; 五、来信选登:&lt;br /&gt;&lt;br /&gt;我是山东筑港工程公司一名工程师,业余时间搞了摩托车防松气门等十余项发明并申请专利,始终无法成功转让,自己仅靠工资&lt;br /&gt;&lt;br /&gt;收入,无起步资金,连专利年费都交不起,可幸运的是今年一月我收到了一位创业者发来的“互助联谊信“,当时我未在乎,后我&lt;br /&gt;&lt;br /&gt;认真阅读,分析了一下它的原理,认为可行,不就10块钱?况且又是互助,我就按信中要求的操作规律,给1号寄了10元,我把排序&lt;br /&gt;&lt;br /&gt;表重新排好,发了100份,约两个月后,真让我高兴,我陆续收到各地创业者来的资助.打过来的资助，现已累计了180万元,我并&lt;br /&gt;&lt;br /&gt;未花费多少精力,竟然得到如些丰厚回报,我谨向支持我的创业者同仁和组委会表示我的诚挚的感谢!(山东省筑港工程总公司&lt;br /&gt;&lt;br /&gt;段兴 通信地址:表惠路8号 邮编: 265032)我是一名政协委员,我怀着万分感动的心情给你们写信,表达我对创业互助联谊活动&lt;br /&gt;&lt;br /&gt;的感谢!因我喜爱搞发明,1983年我发明的“新型无钥匙保险锁“,1990年获得湖南省新技术博览会一等奖,但我平时的工资仅&lt;br /&gt;&lt;br /&gt;500多元,家中还欠了不少债,当我收到“互助联谊信“后,觉得有道理,怀着试试的心情发出了 120份互助联谊信,大概过了两&lt;br /&gt;&lt;br /&gt;个月,仅三个月我的卡里就收到全国各地创业人资助款160万元,我好兴奋!我不仅还清了所有债务,还用这笔资金办了一个企&lt;br /&gt;&lt;br /&gt;业-长沙市龙江超级保险柜有限公司,我未想到我仅汇出10元,得到如此回报,互助的力量无穷!说心里话,我还后悔发的太少&lt;br /&gt;&lt;br /&gt;了…...(通信地址:湖南长沙市东区政协转刘振时 邮编:410011)&lt;br /&gt;&lt;br /&gt;   也许有人不会相信，但自然法则造就的事实。顺便提醒一下，当你收到了超过１千元的时候，请给收到信时排序表上的4&lt;br /&gt;&lt;br /&gt;人各寄上20元，因为他们是你生命中的贵人，是值得你感恩的。&lt;br /&gt;&lt;br /&gt;致&lt;br /&gt;礼！&lt;br /&gt;                                             182007&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;邮件信头：&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;Received: by 10.114.196.20 with SMTP id t20cs632823waf;&lt;br /&gt;        Sat, 18 Aug 2007 05:34:16 -0700 (PDT)&lt;br /&gt;Received: by 10.35.110.13 with SMTP id n13mr4677532pym.1187440455920;&lt;br /&gt;        Sat, 18 Aug 2007 05:34:15 -0700 (PDT)&lt;br /&gt;Return-Path: &lt;lqwd@ccicards.com&gt;&lt;br /&gt;Received: from ccicards.com ([206.173.124.181])&lt;br /&gt;        by mx.google.com with ESMTP id e1si1799104nzd.2007.08.18.05.34.15;&lt;br /&gt;        Sat, 18 Aug 2007 05:34:15 -0700 (PDT)&lt;br /&gt;Received-SPF: neutral (google.com: 206.173.124.181 is neither permitted nor denied by best guess record for domain of lqwd@ccicards.com) client-ip=206.173.124.181;&lt;br /&gt;Authentication-Results: mx.google.com; spf=neutral (google.com: 206.173.124.181 is neither permitted nor denied by best guess record for domain of lqwd@ccicards.com) smtp.mail=lqwd@ccicards.com&lt;br /&gt;Received: from 8017A300191F4BE [116.24.119.199] by ccicards.com with ESMTP&lt;br /&gt;  (SMTPD-9.04) id A7311730; Sat, 18 Aug 2007 07:33:53 -0500&lt;br /&gt;Message-Id: &lt;200708180733380.SM12488@8017A300191F4BE&gt;&lt;br /&gt;From: "Oafkow" &lt;lqwd@ccicards.com&gt;&lt;br /&gt;Subject: =?GB2312?B?bbS00rXR+8fruq8=?=&lt;br /&gt;To: xiexiege@163.com&lt;br /&gt;Content-Type: text/plain&lt;br /&gt;MIME-Version: 1.0&lt;br /&gt;Content-Transfer-Encoding: base64&lt;br /&gt;Date: Sat, 18 Aug 2007 20:34:00 +0800&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-4680548711318517428?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/4680548711318517428/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=4680548711318517428' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4680548711318517428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4680548711318517428'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/blog-post_19.html' title='广而告之：诈骗信一封'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-4610365621351180315</id><published>2007-08-03T19:50:00.000+08:00</published><updated>2007-08-03T20:13:54.573+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GFW'/><title type='text'>强烈推荐OpenDNS</title><content type='html'>今天收到 &lt;a href="http://www.opbyte.it/grsync/" title="Grsync is a GUI (Graphical User Interface) for rsync, the commandline directory synchronization tool."&gt;grsync&lt;/a&gt; 作者给翻译人员的一封信，要求大家都去一个专为这个项目建立的 &lt;a href="http://opbyte.freeforums.org/"&gt;forum&lt;/a&gt; 上。直接点击地址，打不开。莫非是域名还没生效？dig了一下，发现二级域名和顶级域名都找不到，好像不对吧，从web archive上&lt;a href="http://web.archive.org/web/*/http://freeforums.org/"&gt;看&lt;/a&gt;，人家的网站2003年就有了。新装的机器上一直都没设置使用 &lt;a href="http://www.opendns.com/" title="OpenDNS provides a safer, faster and smarter DNS service that is free, with no software to install."&gt;OpenDNS&lt;/a&gt; 呢，修改 /etc/resolv.conf，加入两行：&lt;blockquote&gt;&lt;code&gt;nameserver 208.67.222.222&lt;br /&gt;nameserver 208.67.220.220&lt;/code&gt;&lt;/blockquote&gt;再试，果然，是因为“有人”把这个域名给河蟹了。接下来又撞上了一堵墙，这次只能用 &lt;a href="http://tor.eff.org/" title="Tor 是一个工具集，帮助各类组织和个人增强互联网上活动的安全。"&gt;Tor&lt;/a&gt; 翻墙了。&lt;br /&gt;&lt;br /&gt;被这样搞掉的网站有多少？实在不好统计。总之学个教训，Tor好用，但还要记得DNS安全，别让人把你劫持了。DNS直接返回无效算是容易发现的，有人要是有目的的域名劫持，后果就可怕了，所以还是提前防备一下的好。虽然咱不干犯法的事，但谁知道呢，现在遍地的条条框框，你能保证不会有一天被它给框进去？&lt;br /&gt;&lt;br /&gt;p.s. 预测一下，什么时候 OpenDNS 会流行起来？什么时候它也会被河蟹掉？被河蟹也可以算是一种另类的受欢迎指数吧 -__-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-4610365621351180315?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/4610365621351180315/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=4610365621351180315' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4610365621351180315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4610365621351180315'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/opendns.html' title='强烈推荐OpenDNS'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-582021160134398992</id><published>2007-08-02T20:51:00.000+08:00</published><updated>2007-08-02T21:25:13.924+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>“GPS技术在气象学中的应用”</title><content type='html'>昨天被大雨所困，想起了F1赛事精准的天气预报和GPS。今天上网查了一下，&lt;a href="http://news.xinhuanet.com/newscenter/2002-08/03/content_509068.htm" title="上海GPS气象服务网启动 准确预报半小时内天气"&gt;GPS早就被气象部门用来采集数据&lt;/a&gt;了，&lt;a href="http://www.unistrong.com/productline/News/page.aspx?articleid=1061" title="GPS技术在气象学中的应用"&gt;GPS技术在气象学中的应用&lt;/a&gt;还真少。不过，这些家伙搞的都是观测系统，什么时候有公司能根据个人GPS提供的方位为我们实时传送气象预报呢？我记得有些手机是有GPS配件的，等过两年GPS变成了手机的标配，再在手机上加几个温度湿度气压之类的传感器，手机就变成全能的气象终端啦，既可以给观测系统提供实时的数据，又可以接收精度很高的个人化天气预报。看起来国外已经有人在做这事了，有&lt;a href="http://www.spectrum.ieee.org/apr06/comments/1362" title="A BETTER WEATHER FORECAST"&gt;气象专家的研究&lt;/a&gt;，也有&lt;a href="http://www.lbszone.com/content/view/1507/2/" title="XM to Introduce First Personal Weather Tracking System, Demonstrate In-Car Video and More at CES"&gt;商业公司的系统&lt;/a&gt;；国内不知道是不是因为卫星系统国有，没有人冒风险去研究这种偏门的项目，好像没有这方面的消息。人家已经快要开始搞产品商业化时，我们这边的新闻还是某地又建了几个“高科技”的GPS气象采集基站，各部门领导很有面子云云。难道是我们又输在起跑线上了？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-582021160134398992?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/582021160134398992/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=582021160134398992' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/582021160134398992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/582021160134398992'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/gps.html' title='“GPS技术在气象学中的应用”'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-3433620631795870000</id><published>2007-08-01T20:38:00.000+08:00</published><updated>2007-08-01T20:52:09.100+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>果真是天有不测风云</title><content type='html'>早晨看到阳光灿烂，赶紧把昨天洗完晾在房间里的衣服挂到外面的晾衣绳上。晚上下班了，忽然听到外面淅沥哗啦，又开始下雨啦！怎么昨天的暴雨还没下够？今年北京的雨水可是下足了。上网看看北京今天的天气预报，也是说晴转多云，就没提到会下雨这回事。话说天有不测风云，果然不错。前几天看F1德国站的比赛，那两场雨预报的，准确的让人瞠目结舌。不过特定地点、特定时间的预报会比大范围的预报容易做一些吧，什么时候通过GPS就能实时接收这么准确的气象预报就好啦，呵呵。顶着早晨的大太阳，我可没想到晚上会被大雨困在办公室：可怜，完全没想到要带雨伞 :(&lt;br /&gt;&lt;br /&gt;多等一会，雨停了后回家再把衣服洗一遍吧....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-3433620631795870000?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/3433620631795870000/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=3433620631795870000' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3433620631795870000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/3433620631795870000'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/08/blog-post.html' title='果真是天有不测风云'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-8453667706297902461</id><published>2007-07-29T16:51:00.000+08:00</published><updated>2007-07-29T17:13:54.946+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='唠叨'/><title type='text'>收拾心情，继续似水流年中的流水帐</title><content type='html'>我写blog是因为时常有跟别人分享点什么东西的冲动，写出来也许能跟人产生共鸣；或是指望帮人解决碰到的同样问题，自己心里也能有些窃喜。不过自打GFW愈演愈烈，访问国外blog的人全都会撞上一堵墙，偏巧我又只信任国外的blog服务...本来就拙于写字，如此有中国特色的blog体验更是让人心里烦躁，blog也就慢慢荒废了。&lt;br /&gt;&lt;br /&gt;不过今年的见闻让我又有所领悟，当撞墙已经成为常态，练就翻墙绝顶轻功的人岂不是会越来越多？也许有一天世界又会大同，blog在墙里还是墙外还有什么分别。干脆抛开这些烦人的事情，哪怕铜墙铁壁终于铸成，起码墙外的人还能知道墙里的人曾经有这样的生活。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-8453667706297902461?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/8453667706297902461/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=8453667706297902461' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/8453667706297902461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/8453667706297902461'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/07/blog-post.html' title='收拾心情，继续似水流年中的流水帐'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-4240705993832194930</id><published>2007-07-28T16:40:00.000+08:00</published><updated>2007-08-01T12:00:25.571+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>在Ubuntu上安装用Windows目录服务做认证的Subversion服务</title><content type='html'>最近需要架设一台svn服务器，在Ubuntu Feisty(7.04)上安装了一下，非常容易。网上有很多相关资料，不过我需要让用户使用Windows的目录服务(Active Directory)来认证身份，参照了这篇&lt;a href="http://www.itguyonline.com/blog/2007/05/02/ldap-authentication-for-subversion-on-ubuntu-feisty/" title="LDAP Authentication for Subversion on Ubuntu Feisty lesen"&gt;LDAP Authentication for Subversion on Ubuntu Feisty&lt;/a&gt;文章，在这里做个文档备份：&lt;blockquote&gt;&lt;code&gt;# sudo apt-get install libapache2-svn subversion subversion-tools&lt;br /&gt;# cd /etc/apache2/mods-enabled&lt;br /&gt;# sudo ln -s /etc/apache2/mods-available/dav_svn.load&lt;br /&gt;&lt;b&gt;# sudo ln -s /etc/apache2/mods-available/ldap.load&lt;/b&gt;&lt;br /&gt;&lt;b&gt;# sudo ln -s /etc/apache2/mods-available/authnz_ldap.load&lt;/b&gt;&lt;br /&gt;# sudo /etc/init.d/apache2 restart# cd /etc/apache2/mods-enabled&lt;br /&gt;# sudo touch dav_svn.conf&lt;br /&gt;# sudo vi dav_svn.conf&lt;/code&gt;&lt;/blockquote&gt;其中加粗的两个命令是启用ldap相关的apache模块，这是参考的文章中没有提到的，否则会出现：“&lt;code&gt;Unknown Authn provider: ldap&lt;/code&gt;”的错误提示。&lt;br /&gt;&lt;br /&gt;dav_svn.conf文件，指明svn仓库在那里，如何认证用户身份：&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;br /&gt;&amp;lt;Location /svn/&amp;gt;&lt;br /&gt;DAV svn&lt;br /&gt;SVNParentPath /home/svn&lt;br /&gt;AuthType Basic&lt;br /&gt;AuthName "Subversion Repository"&lt;br /&gt;AuthBasicProvider ldap&lt;br /&gt;AuthLDAPBindDN "cn=readuser,ou=dep,dc=mydomain,dc=com"&lt;br /&gt;AuthLDAPBindPassword "password"&lt;br /&gt;AuthLDAPURL "ldap://adserver:3268/ou=dep,dc=mydomain,dc=com?sAMAccountName?sub?(objectClass=user)"&lt;br /&gt;AuthzLDAPAuthoritative Off&lt;br /&gt;Require valid-user&lt;br /&gt;SVNListParentPath on&lt;br /&gt;AuthzSVNAccessFile /home/svn/authz.conf&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;authz.conf文件，定义用户的组和访问不同项目仓库的权限：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;[groups]&lt;br /&gt;svnadmin = xieyanbo&lt;br /&gt;erpadmin = user1&lt;br /&gt;&lt;br /&gt;[/]&lt;br /&gt;* =&lt;br /&gt;@svnadmin = rw&lt;br /&gt;&lt;br /&gt;[sandbox:/]&lt;br /&gt;* = rw&lt;br /&gt;&lt;br /&gt;[repos1:/]&lt;br /&gt;@erpadmin = rw&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;为了创建项目方便，写了一个脚本&lt;span style="font-family:courier new;"&gt;add_project.sh&lt;/span&gt;做一些琐碎的事情，比如目录权限、配置文件的修改等：&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;project_name="$1"&lt;br /&gt;&lt;br /&gt;if [ x"$project_name" = "x" ]; then&lt;br /&gt;echo "$0 PROJECT_NAME"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;sudo mkdir /home/svn/"$project_name"&lt;br /&gt;sudo svnadmin create /home/svn/"$project_name"&lt;br /&gt;sudo chown -R www-data:www-data /home/svn/"$project_name"&lt;br /&gt;sudo chmod -R go-rwxs /home/svn/"$project_name"&lt;br /&gt;sudo sh -c "echo 'auth-access = write' &gt;&gt; /home/svn/$project_name/conf/svnserve.conf"&lt;br /&gt;sudo sh -c "echo '['$project_name':/]' &gt;&gt; /home/svn/authz.conf"&lt;br /&gt;sudo sh -c "echo &gt;&gt; /home/svn/authz.conf"&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;补充，增加SSL支持&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;参考《&lt;a href="http://wiki.freaks-unidos.net/Apache2%20SSL%20and%20Subversion%20in%20Debian" title="Apache2 SSL and Subversion in Debian"&gt;Apache2 SSL and Subversion in Debian&lt;/a&gt;》，给服务添加SSL支持。助记如下：&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;code&gt;sudo apt-get install openssl&lt;br /&gt;sudo mkdir /etc/apache2/ssl&lt;br /&gt;export RANDFILE=/dev/random&lt;br /&gt;sudo openssl req $@ -new -x509 -days 365 -nodes \&lt;br /&gt;    -out /etc/apache2/ssl/apache.pem \&lt;br /&gt;    -keyout /etc/apache2/ssl/apache.pem&lt;br /&gt;sudo chmod 600 /etc/apache2/ssl/apache.pem&lt;br /&gt;cd /etc/apache2/sites-available/&lt;br /&gt;sudo cp default ssl&lt;br /&gt;sudo a2ensite ssl&lt;br /&gt;sudo a2enmod ssl&lt;br /&gt;sudo vi /etc/apache2/ports.conf # add Listen 443&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;其实生成证书用apache的命令&lt;code&gt;apache2-ssl-certificate&lt;/code&gt;很方便，但Ubuntu从Debian继承的一个&lt;a href="https://launchpad.net/ubuntu/+source/apache2/+bug/77675" title="apache2-ssl-certificate has gone missing since feisty"&gt;bug&lt;/a&gt;把它给搞丢了，可惜...下面是ssl的apache配置文件/etc/apache2/sites-available/ssl的内容：&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;code&gt;&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;  SSLEngine On&lt;br /&gt;  SSLCertificateFile /etc/apache2/ssl/apache.pem&lt;br /&gt;  Include /etc/apache2/mods-enabled/dav_svn.conf&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;2007-08-01再补充，&lt;code&gt;SVNListParentPath on&lt;/code&gt;的bug临时应对方案&lt;/h3&gt;&lt;br /&gt;参考&lt;a href="http://subversion.tigris.org/issues/show_bug.cgi?id=2753" title="SVNListParentPath feature doesn't work when svn authz is used."&gt;svn bug #2753&lt;/a&gt;，在使用 authz 的情况下，&lt;code&gt;SVNListParentPath on&lt;/code&gt;这个设置会失效，apache总是报告权限错误。避免这种情况的临时方案：把&lt;code&gt;&amp;lt;Location /svn&amp;gt;&lt;/code&gt;改成&lt;code&gt;&amp;lt;Location /svn/&amp;gt;&lt;/code&gt;，路径的最后面增加一个斜线。还真是个古怪的bug呀。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-4240705993832194930?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/4240705993832194930/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=4240705993832194930' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4240705993832194930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/4240705993832194930'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2007/07/ubuntuwindowssubversion.html' title='在Ubuntu上安装用Windows目录服务做认证的Subversion服务'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-115444622647297912</id><published>2006-08-01T23:26:00.000+08:00</published><updated>2006-08-01T23:30:26.473+08:00</updated><title type='text'>pkblogs，救星</title><content type='html'>最近借助&lt;a href="http://www.pkblogs.com/"&gt;pkblogs&lt;/a&gt;看了不少blogspot上的文章，真是广大受压迫人民的救星呀。托pkblogs的福，这个blog也能再利用一下了：&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.pkblogs.com/xieyanbo"&gt;http://www.pkblogs.com/xieyanbo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-115444622647297912?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/115444622647297912/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=115444622647297912' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/115444622647297912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/115444622647297912'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/08/pkblogs.html' title='pkblogs，救星'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-114127772962174737</id><published>2006-03-02T13:31:00.000+08:00</published><updated>2006-03-02T13:35:29.630+08:00</updated><title type='text'>好的心态比啥都强</title><content type='html'>偶尔读到一段话，有点共鸣：&lt;br /&gt;有句俗语说：“满怀希望的旅途要比到达目的地更快乐。”与之相对的是英国吉普赛诗人W•H•戴维斯(W. H. Davies)的诗句：“终日营营的生活会是怎样，无暇驻足停留凝神欣赏？”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-114127772962174737?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/114127772962174737/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=114127772962174737' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/114127772962174737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/114127772962174737'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/03/blog-post.html' title='好的心态比啥都强'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113972590424754915</id><published>2006-02-12T14:06:00.000+08:00</published><updated>2007-07-28T17:28:09.074+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>还是关于python的web开发</title><content type='html'>&lt;p&gt;&lt;a href="http://www.aminus.org/blogs/index.php"&gt;Peter Hunt&lt;/a&gt;在“&lt;a href="http://www.aminus.org/blogs/index.php/phunt/2006/01/04/how_python_wins_on_the_web"&gt;How Python wins on the Web&lt;/a&gt;”里说道：“In fact, what I would love more than anything would be a portable mod_wsgi across Apache, LightTPD, and IIS: a module that would let me drop a .egg file into a directory and have it automatically pick up and install the WSGI application from the archive. Once we've got this, a standard, portable way of easily installing ANY Python web app, we'll be getting somewhere.”心有戚戚焉。&lt;/p&gt;&lt;p&gt;一个大一统的Python Web Framework可能对企业用户更有吸引力，但它肯定不能适用于所有应用。对一个语言来说，拥有众多杀手级的应用才是证明它的存在价值的最好方法。最近工作不太顺心，不过倒正好是个机会，有闲暇的功夫补习这两年Web开发的发展。&lt;a href="http://www.zope.org/DevHome/Zope3"&gt;Zope3&lt;/a&gt;、&lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;的发展都不能忽视；但是要建一个好的网站，需要特别开发和优化的东西大多无法依靠这些框架，可能还反受框架之累；比起完整的解决方案，我更喜欢&lt;a href="http://www.python.org/peps/pep-0333.html"&gt;WSGI&lt;/a&gt;/Template/ORM这些部分都能各自独立，随心选择不同实现。高内聚，低耦合，这是硬道理呀。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113972590424754915?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113972590424754915/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113972590424754915' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113972590424754915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113972590424754915'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/02/pythonweb.html' title='还是关于python的web开发'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113963738117392763</id><published>2006-02-11T13:42:00.000+08:00</published><updated>2006-02-11T13:56:21.190+08:00</updated><title type='text'>ColorQuiz</title><content type='html'>&lt;!--ColorQuiz.com code--&gt;&lt;br /&gt;&lt;table bgcolor="white" border="1" cellpadding="3" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.colorquiz.com"&gt;&lt;img alt="ColorQuiz.com" src="http://www.colorquiz.com/images/colorquizlogosmall2.gif" border="0" height="32" width="120" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;xyb took the free ColorQuiz.com personality test!&lt;p&gt;&lt;i&gt;"Wants interesting and exciting things to happen. A..."&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.colorquiz.com/cgi-bin/results.cgi?do=print_blog&amp;picked1=3,5,0,6,2,1,4,7,2&amp;amp;picked2=5,4,3,2,6,1,0,7,3&amp;sex=Male&amp;amp;blog_name=xyb"&gt;Click here&lt;/a&gt; to read the rest of the results.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Free personality analysis from &lt;b&gt;ColorQuiz.com&lt;/b&gt;.&lt;br /&gt;Generated on Fri Feb 10 21:38:41 2006.&lt;h3&gt;Your Existing Situation&lt;/h3&gt;&lt;ul&gt;Active, but feels that insufficient progress or reward is being made for the effort exerted.&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Your Stress Sources&lt;/h3&gt;&lt;ul&gt;Wishes to be independent, unhampered, and free from any limitation or restriction, other than those which he imposes of himself or by his own choice and decision.&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Your Restrained Characteristics&lt;/h3&gt;&lt;ul&gt;Willing to participate and to allow himself to become involved, but tries to fend off conflict and disturbance in order to reduce tension.&lt;p&gt;Remains emotionally unattached even when involved in a close relationship.&lt;/p&gt;&lt;p&gt;Feels that he cannot do much about his existing problems and difficulties and that he must make the best of things as they are. Able to achieve satisfaction through sexual activity.&lt;/p&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Your Desired Objective&lt;/h3&gt;&lt;ul&gt;Wants interesting and exciting things to happen. Able to make himself well-liked by his obvious interest and by the very openness of his charm. Over-imaginative and given to fantasy or day-dreaming.&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Your Actual Problem&lt;/h3&gt;&lt;ul&gt;Seeks to avoid criticism and to prevent restriction of his freedom to act, and to decide for himself by the exercise of great personal charm in his dealings with others.&lt;/ul&gt;&lt;br /&gt;&lt;!--End ColorQuiz.com code--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113963738117392763?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113963738117392763/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113963738117392763' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113963738117392763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113963738117392763'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/02/colorquiz.html' title='ColorQuiz'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113920277667048344</id><published>2006-02-06T11:54:00.001+08:00</published><updated>2006-02-06T14:17:45.713+08:00</updated><title type='text'>脚本语言的胜利</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="/images/ruby_vs_java_books.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="/images/ruby_vs_java_books.jpg" border="0" alt="Ruby VS. Java Books" /&gt;&lt;/a&gt;碰巧看到“&lt;a href="http://plog.longwin.com.tw/post/1/309"&gt;&lt;br /&gt;Ruby on Rails将程式设计化繁为简&lt;/a&gt;”，里面的一张&lt;a href="/images/ruby_vs_java_books.jpg"&gt;照片&lt;/a&gt;很吸引眼球。文章还提到，脚本语言“兼具脚本(scripting)程式语言PHP的速度与易用性，以及Java结构式作法的‘干净和清爽’”，“Ruby on Rails备受瞩目，反映程式设计界兴起一股以脚本程式语言(scripting language)取代Java或微软C#的风潮”。相比于&lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;，&lt;a href="http://www.python.org"&gt;Python&lt;/a&gt;语言正在开发的Web framework &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;也吸引了Python界众多领军人物的眼光，第一个正式版的发布已进入倒计时；而&lt;a href="http://www.artima.com/weblogs/index.jsp?blogger=guido"&gt;Guido&lt;/a&gt;为自己在新公司Google的项目&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=146149"&gt;公开征集&lt;/a&gt;基于Python的Web framework，更是激起了空前热情的大讨论，网上的妙文不断。有理由相信，2006年将是Python的Web framwrok大发展的一年。而商业公司也在过去的两年里与脚本语言关系越来越密切，微软发布了&lt;a href="http://www.ironpython.com"&gt;IronPython&lt;/a&gt;，旨在把UNIX开发商吸引到.Net框架中；&lt;a href="http://www.zdnet.com.cn/developer/code/story/0,3800066897,39376951,00.htm"&gt;CNET的文章&lt;/a&gt;称，“过去曾经被正统的编程人员认为是玩具的脚本语言正在成为企业软件开发世界的一等公民”。&lt;br /&gt;&lt;br /&gt;在这里，我学到的是，在这个竞争激烈、一寸光阴一寸金的年代，开发框架的“易用性”正在成为压倒一切的重要特征；因为易用性给开发、部署、维护方面带来的时间与金钱的节约，是任何投资者都无法忽视的——包括公司的投资者和免费软件程序员。&lt;br /&gt;&lt;br /&gt;不过，企业应用一贯是期望使用的语言提供更成熟和繁复的架构，这本身和脚本语言的哲学有些相背；希望今后的几年脚本语言能给这个领域带来一些清新的风，而不是被“企业级应用”带到沟里去，忘了自己的本分。&lt;br /&gt;&lt;br /&gt;闲话一句，似乎Perl6的开发进度还是&lt;a href="http://wiki.perlchina.org/main/show/Ask+Tim%3A+When+will+Perl+6+ever+get+done"&gt;不太乐观&lt;/a&gt;，拭目以待吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113920277667048344?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113920277667048344/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113920277667048344' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113920277667048344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113920277667048344'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/02/blog-post.html' title='脚本语言的胜利'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113808518936455783</id><published>2006-01-24T14:46:00.001+08:00</published><updated>2006-01-24T14:51:03.226+08:00</updated><title type='text'>Teamwork揍是这样子地...吗？</title><content type='html'>&lt;p&gt;Team倒是有了，work嘛...&lt;a href="images/teamwork.jpg" title="Teamwork"&gt;&lt;br/&gt;&lt;img src="images/teamwork-t.jpg" title="Teamwork"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113808518936455783?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113808518936455783/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113808518936455783' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113808518936455783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113808518936455783'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/teamwork_24.html' title='Teamwork揍是这样子地...吗？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113766166047952800</id><published>2006-01-19T17:03:00.000+08:00</published><updated>2006-01-19T17:07:40.493+08:00</updated><title type='text'>《小王子》的测试</title><content type='html'>&lt;div align="center"&gt;&lt;img src="http://images.quizilla.com/N/noillusions/1042510312_ResultsFox.jpg" border="0" alt="fox."&gt;&lt;br&gt;You are the fox.&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://quizilla.com/users/noillusions/quizzes/Saint%20Exupery's%20'The%20Little%20Prince'%20Quiz./"&gt; Saint Exupery's 'The Little Prince' Quiz.&lt;/a&gt;&lt;BR&gt; &lt;font size="-2"&gt;brought to you by &lt;a href="http://quizilla.com"&gt;Quizilla&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113766166047952800?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113766166047952800/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113766166047952800' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113766166047952800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113766166047952800'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/blog-post.html' title='《小王子》的测试'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113765506949964778</id><published>2006-01-19T15:11:00.000+08:00</published><updated>2006-01-19T15:17:49.510+08:00</updated><title type='text'>用.netrc来自动登录</title><content type='html'>linux里面的好多程序都靠$HOME/.netrc来获取密码，进行认证。自己常用的lftp就是这样，也不知道为什么，它就是不用我已经配置好的ssh public key来，非得配置.netrc才能实现自动登录。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;machine 202.108.35.239&lt;br /&gt;        login xyb&lt;br /&gt;        password mask&lt;br /&gt;&lt;br /&gt;machine 202.106.182.247&lt;br /&gt;        login yanbo&lt;br /&gt;        password mask&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;这样配置好了，lftp就能自己查询相应的用户名和密码登录了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113765506949964778?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113765506949964778/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113765506949964778' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113765506949964778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113765506949964778'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/netrc.html' title='用.netrc来自动登录'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113764648445680140</id><published>2006-01-19T12:54:00.000+08:00</published><updated>2006-01-19T13:12:58.193+08:00</updated><title type='text'>Mass Transit - How Python wins on the Web</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;&lt;p&gt;由于&lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;带来的压力和展示出的美好前景，&lt;a href="http://www.python.org"&gt;Python&lt;/a&gt;圈子里一时Web Framework流行。&lt;a href="http://www.gosubway.org/"&gt;Subway&lt;/a&gt;、&lt;a href="http://www.turbogears.org/"&gt;Turbogears&lt;/a&gt;、&lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;，一个一个新的框架蓬勃发展。看起来生机勃勃，不过……&lt;a href="http://www.aminus.org/blogs/index.php"&gt;Mass Transit&lt;/a&gt;回顾了python的“重量级”应用，反思了最近的Framework的热潮，Python的魅力到底在那里呢？在“&lt;a href="http://www.aminus.org/blogs/index.php/phunt/2006/01/04/how_python_wins_on_the_web"&gt;How Python wins on the Web&lt;/a&gt;”这篇文章里，他提出了自己的一些观点。说实话，从使用者的角度来看，开发语言是&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;还是&lt;a href="http://www.perl.com"&gt;Perl&lt;/a&gt;还是&lt;a href="http://www.ruby-lang.org"&gt;Ruby&lt;/a&gt;，都不重要，重要的是产品的功能是我用得着的，同样重要的是产品是好维护的：一个&lt;a href="http://peak.telecommunity.com/DevCenter/PythonEggs"&gt;egg&lt;/a&gt;就可以部署的&lt;a href="http://www.python.org/peps/pep-0333.html"&gt;WSGI&lt;/a&gt;应用确实要更方便一些。&lt;/p&gt;&lt;p&gt; Read more at &lt;a href="http://www.aminus.org/blogs/index.php/phunt/2006/01/04/how_python_wins_on_the_web"&gt;www.aminus.org/blogs/in...&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113764648445680140?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113764648445680140/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113764648445680140' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113764648445680140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113764648445680140'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/mass-transit-how-python-wins-on-web.html' title='Mass Transit - How Python wins on the Web'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113689901746528275</id><published>2006-01-10T21:08:00.000+08:00</published><updated>2006-01-10T21:34:59.070+08:00</updated><title type='text'>基于postfix实现邮件用户的分布式处理</title><content type='html'>基于一些特殊的考虑，现在邮件系统经常面临把用户分散在几个不同服务器上的需求。这里谈一下我在使用postfix完成该功能时的一点认识和实践，需求所限，没有涉及到用户通过SMTP或者POP3登录收发邮件的部分。请各位朋友谅解并指正。&lt;br /&gt;&lt;br /&gt;一般分布情况下，MX和用户所在的服务器是分离的；本文所描述的即是这种设计。下面把用户所在的服务器简称为单元(UNIT)。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;MX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MX是接受邮件的关键，可以由一台或一组服务器组成。它对外开放SMTP端口，负责接受邮件并转投到收件人所在单元服务器。&lt;br /&gt;&lt;br /&gt;简单的说，一封信投递到我们的系统中，首先会进入MX，MX检查收件人是否存在，然后根据用户的信息把信通过smtp协议转发到他所在的UNIT上。&lt;br /&gt;&lt;br /&gt;由于用户分散在不同主机中，所以MX对用户进行查证的工作必须进行特殊的处理；这里大家可以集思广益，设计一两百种方案我看是没什么问题。不过，我们的任务是说明postfix如何处理用户分布的情况，所以我们假定已经有一个写好了的函数，调用它就可以查证用户了。我们利用它，就可以实现dict_unit这个map。利用选项 local_recipient_maps，使外部发信到我们的用户时，调用我们指定的接口对用户查证；输入为收件人的邮件地址。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;local_recipient_maps = unit:smtpcheck&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;这里dict_unit的实现在后面详细解释。&lt;br /&gt;&lt;br /&gt;用户查证是在访问者发出“RCPT &lt;user@my.com&gt;”指令时，如果postfix确认了该用户存在，就开始准备接收“DATA”指令发过来的邮件正文了。成功收到邮件后，通过配置好的 transport_maps，postfix可以询问我们的dict_unit，获得下一步处理的指令。比如，输入收件人邮件地址“user@my.com”，输出“smtp:unit12.my.com”，这就会让postfix通过smtp把信转投到unit12.my.com域名的这台机器上。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;transport_maps = unit:transportmx&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;UNIT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;邮件系统中的用户通过注册、转移等方式，被存放在不同的单元服务器中。他们负责接收从MX转投过来的信件，并最终放入存储系统中。&lt;br /&gt;&lt;br /&gt;在这里，一样会使用local_recipient_maps检查收件人是否真实存在。但与MX不同的是，这是信件的最终目的地，transport_maps查询的结果就不能再是“smtp:unit12.my.com”，要设置成合适的本地处理程序，比如local或者指定mda的名称(在etc/master.cf中设置)等。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;local_recipient_maps = unit:smtpcheck&lt;br /&gt;transport_maps = unit:transportunit&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;自定义的map&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;这里是dict_unit的实现示意。通过这个map，我们可以把前面提到的用户查证、转发邮件、处理邮件的所有指引工作在一起完成；实际上，它相当于一个多向的阀门，可以让邮件流向不同的方向。&lt;br /&gt;&lt;br /&gt;注意，这仅仅是示意的代码。有需要做开发的朋友请自行参考&lt;a href="http://d.scn.ru/proj/postfix/dict_pam/"&gt;dict_pam[1]&lt;/a&gt;的实现，那是真正可执行的代码。请不要写信询问我如何编写并调试可用的dict，&lt;a href="http://www.google.com/"&gt;google[2]&lt;/a&gt;和&lt;a href="http://www.postfix.org/"&gt;postfix官方网站[3]&lt;/a&gt;上都可以查到。&lt;br /&gt;&lt;br /&gt;这个函数负责处理用户查证的工作。&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static int dict_unit_smtpcheck(const char *name, char *result)&lt;br /&gt;{&lt;br /&gt;    char userhost[128] = {0};&lt;br /&gt;&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup smtp user: %s", name);&lt;br /&gt;    ret = getuser(name, &amp;userhost);&lt;br /&gt;    if (ret != 0){&lt;br /&gt;        if (msg_verbose)&lt;br /&gt;            msg_warn("dict_unit: lookup smtp failed, name: %s", name);&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup transport successed, name: %s, host: %s, path: %s",&lt;br /&gt;                name,&lt;br /&gt;                userhost);&lt;br /&gt;&lt;br /&gt;    strncpy(result, userhost, sizeof(userhost));&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;这个函数负责控制MX服务中邮件的流向。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static int dict_unit_transportmx(const char *name, char *result)&lt;br /&gt;{&lt;br /&gt;    char userhost[128] = {0};&lt;br /&gt;&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup transport user: %s", name);&lt;br /&gt;&lt;br /&gt;    ret = getuser(name, &amp;userhost);&lt;br /&gt;    if (ret != 0){&lt;br /&gt;        if (msg_verbose)&lt;br /&gt;            msg_warn("dict_unit: lookup transport failed, name: %s", name);&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup transport successed, name: %s, host: %s,",&lt;br /&gt;                name,&lt;br /&gt;                userhost);&lt;br /&gt;&lt;br /&gt;    /* result formal like: "smtp:unit12.my.com" */&lt;br /&gt;    strncpy(result, "smtp:", sizeof(userhost));&lt;br /&gt;    strncat(result, userhost, sizeof(userhost)-strlen("smtp:"));&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;这个函数负责控制UNIT中的邮件的流向。值得一提的是，这里我们使用了var_myhostname来鉴别该用户是不是本机的（很简陋，演示嘛），要正确编译的话，在src/global/dict_unit.c中，必须加入这一行：&lt;br /&gt;&lt;blockquote&gt;#include "mail_params.h"&lt;/blockquote&gt;&lt;br /&gt;要正确运行的话，则必须再在etc/main.cf中配置好正确的本机域名：&lt;br /&gt;&lt;blockquote&gt;myhostname = unit12.my.com&lt;/blockquote&gt;&lt;br /&gt;最后，我们这里的是调用了一个定制的MDA程序“mymda”来完成最终信件的投递。要让它能正确运行，得配置etc/master.cf，请自行查阅手册。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static int dict_unit_transportunit(const char *name, char *result)&lt;br /&gt;{&lt;br /&gt;    char userhost[128] = {0};&lt;br /&gt;&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup transport user: %s", name);&lt;br /&gt;&lt;br /&gt;    ret = getuser(name, &amp;userhost);&lt;br /&gt;    if (ret != 0){&lt;br /&gt;        if (msg_verbose)&lt;br /&gt;            msg_warn("dict_unit: lookup transport failed, name: %s", name);&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: lookup transport successed, name: %s, host: %s",&lt;br /&gt;                name,&lt;br /&gt;                userhost);&lt;br /&gt;&lt;br /&gt;    /* for local user, result is: "mymda:"&lt;br /&gt;     * for remote user, result is: "smtp:mx.my.com"&lt;br /&gt;     */&lt;br /&gt;    if (0==strnstr(userhost, var_myhostname, sizeof(userhost)))&lt;br /&gt;        /* MX can delivery it */&lt;br /&gt;        strncpy(result, "smtp:mx.my.com", sizeof(userhost));&lt;br /&gt;    else&lt;br /&gt;        /* local MDA is ok */&lt;br /&gt;        strncpy(result, "mymda:", sizeof(userhost));&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;最后，为了让上面的三个lookup能真正工作起来，要在dict对外提供的接口处调用他们。这个分流是通过lookup时传入的dict-&gt;service来辨认的，也就是在main.cf中的配置“unit:smtpcheck”冒号后面的部分。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static const char *dict_unit_lookup(DICT *dict, const char *name)&lt;br /&gt;{&lt;br /&gt;    DICT_unit *dp = (DICT_unit *) dict;&lt;br /&gt;    char result[128] = {0};&lt;br /&gt;    int ret;&lt;br /&gt;&lt;br /&gt;    if (0 == strcmp(vstring_str(dp-&gt;service), "smtpcheck"))&lt;br /&gt;        ret = dict_unit_smtpcheck(name, result);&lt;br /&gt;    else if (0 == strcmp(vstring_str(dp-&gt;service), "transportmx"))&lt;br /&gt;        ret = dict_unit_transportmx(name, result);&lt;br /&gt;    else if (0 == strcmp(vstring_str(dp-&gt;service), "transportunit"))&lt;br /&gt;        ret = dict_unit_transportunit(name, result);&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        if (msg_verbose)&lt;br /&gt;            msg_error("dict_unit: lookup unknown service %s, name %s.",&lt;br /&gt;                    vstring_str(dp-&gt;service), name);&lt;br /&gt;        return (0);&lt;br /&gt;    }&lt;br /&gt;    if ((0 != ret) || (0 == result[0]))&lt;br /&gt;        return (0);&lt;br /&gt;&lt;br /&gt;succ:&lt;br /&gt;    if (msg_verbose)&lt;br /&gt;        msg_info("dict_unit: service %s, name: %s, result: %s.",&lt;br /&gt;                vstring_str(dp-&gt;service), name, result);&lt;br /&gt;    vstring_strncpy(dp-&gt;result, result, sizeof(result));&lt;br /&gt;    return vstring_str(dp-&gt;result);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;组装在一起，这个控制邮件流向的大阀门就算是完工了。&lt;br /&gt;&lt;br /&gt;以上是利用postfix实现用户分布的一次实践。当然，方案并非只有一种，大家各有不同。请大家多多讨论，共同进步。&lt;br /&gt;&lt;br /&gt;本文基于&lt;a href="http://www.creativecommons.cn/"&gt;创作共用协议[4]&lt;/a&gt;之“&lt;a href="http://creativecommons.cn/licenses/by-sa/1.0/"&gt;署名-保持一致&lt;/a&gt;”[5]许可证发表，使用前请阅读该协议。-- xyb&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;参考&lt;/span&gt;&lt;br /&gt;[1] &lt;a href="http://d.scn.ru/proj/postfix/dict_pam/"&gt;http://d.scn.ru/proj/postfix/dict_pam/&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://www.google.com/"&gt;http://www.google.com/&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="http://www.postfix.org/"&gt;http://www.postfix.org/&lt;/a&gt;&lt;br /&gt;[4] &lt;a href="http://www.creativecommons.cn/"&gt;http://www.creativecommons.cn/&lt;/a&gt;&lt;br /&gt;[5] &lt;a href="http://creativecommons.cn/licenses/by-sa/1.0/"&gt;http://creativecommons.cn/licenses/by-sa/1.0/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113689901746528275?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113689901746528275/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113689901746528275' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113689901746528275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113689901746528275'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/postfix.html' title='基于postfix实现邮件用户的分布式处理'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113662046416667530</id><published>2006-01-07T15:32:00.000+08:00</published><updated>2006-01-07T15:54:24.216+08:00</updated><title type='text'>txt2pdbdoc</title><content type='html'>经常用palm看些电子书，所以用&lt;a href="http://homepage.mac.com/pauljlucas/software/txt2pdbdoc/"&gt;txt2pdbdoc&lt;/a&gt;自己做.pdb文件是免不了的。可是要命的是，中文文本用它制作时，常常发生core dump。今天没事，分析了一下，发现问题处在compress这个函数上。这是个非常简单的压缩算法；但该算法效率最差时，压缩之后的数据要比之前的还要大。看来这个算法对英文等字符集较小的文字效率不错，但对中文就有点水土不服啦。因为压缩后的数据超出了预期大小，造成了缓冲区溢出，引发莫名其妙的问题就在所难免了。&lt;br /&gt;&lt;br /&gt;找到问题所在，解决就很简单了：对中文文档，指定参数“-c”，不进行压缩。不过，这样其实是指标不治本，还是修改一下代码来的实在。把缓冲区增大到压缩算法效率最差时需要的空间。这里是修改之后的&lt;a href="http://xyb.8800.org/files/txt2pdbdoc.c-1.4.4-compress.patch"&gt;patch&lt;/a&gt;，把缓冲区增加到原来的两倍，问题解决。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113662046416667530?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113662046416667530/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113662046416667530' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113662046416667530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113662046416667530'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/txt2pdbdoc.html' title='txt2pdbdoc'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113653062075223163</id><published>2006-01-06T14:54:00.000+08:00</published><updated>2006-01-06T14:57:00.763+08:00</updated><title type='text'>How Do People See You?</title><content type='html'>&lt;table width=350 align=center border=0 cellspacing=0 cellpadding=2&gt;&lt;tr&gt;&lt;td bgcolor="#999999" align=center&gt;&lt;font face="Georgia, Times New Roman, Times, serif" style='color:black; font-size: 14pt;'&gt;&lt;b&gt;Slow and Steady&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCCCCC"&gt;&lt;center&gt;&lt;img src="http://images.blogthings.com/howdopeopleseeyouquiz/serious.jpg" height="100" width="100"&gt;&lt;/center&gt;&lt;font color="#000000"&gt;&lt;br /&gt;Your friends see you as painstaking and fussy. &lt;br /&gt;&lt;br /&gt;They see you as very cautious, extremely careful, a slow and steady plodder.&lt;br /&gt;&lt;br /&gt;It'd really surprise them if you ever did something impulsively or on the spur of the moment.&lt;br /&gt;&lt;br /&gt;They expect you to examine everything carefully from every angle and then usually decide against it.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div align="center"&gt;&lt;a href="http://www.blogthings.com/howdopeopleseeyouquiz/"&gt;How Do People See You?&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;厄，这是评测男生的吗？&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113653062075223163?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113653062075223163/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113653062075223163' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113653062075223163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113653062075223163'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/how-do-people-see-you.html' title='How Do People See You?'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113628253242711205</id><published>2006-01-03T18:02:00.000+08:00</published><updated>2006-01-03T18:08:54.210+08:00</updated><title type='text'>2006的第一场爱国卫生运动</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;昨天晚上睡觉，觉得背上有点痒。突然想到，住进来一直没有好好收拾过屋子和床铺，可能最近穿衣服、睡觉总是有点痒跟床上不干净有关系。今天起来大动干戈，把能洗的都拿去洗了，好好清扫了一下屋里的卫生。好多土呀。幸亏还有前两年非典剩下的口罩，劳动生产正好用上，哈哈。&lt;br/&gt;&lt;br/&gt;最近事稍微少了一点，刚刚上网正好看见有个&lt;a href="http://www.opbyte.it/grsync/"&gt;Grsync&lt;/a&gt;，翻译量很少，拿来即兴翻译了一下，提交给了作者。希望今年上半年能多些自主的时间，可以参与些开源项目。&lt;br/&gt;&lt;br/&gt;注：刚发完信一刻钟，Grsync的作者就回信了，反应倒是真快。算起来那边的时间该吃中午饭了，我也吃晚饭去啦 :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113628253242711205?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113628253242711205/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113628253242711205' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113628253242711205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113628253242711205'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2006/01/2006.html' title='2006的第一场爱国卫生运动'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113601097346896959</id><published>2005-12-31T14:36:00.000+08:00</published><updated>2005-12-31T14:38:45.966+08:00</updated><title type='text'>HELLO MY BABY lyrics (Phish) ♫</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;Hello my baby, hello my honey&lt;br/&gt;Hello my ragtime, summertime gal&lt;br/&gt;Send me a kiss by wire, by wire&lt;br/&gt;Baby, my heart's on fire, on fire&lt;br/&gt;If you refuse me, honey, you lose me&lt;br/&gt;And you'll be left alone, oh baby&lt;br/&gt;Telephone, and tell me, tell me&lt;br/&gt;Tell me I'm your very own, ohhhh&lt;br/&gt;&lt;br/&gt;Hello my baby, hello my honey&lt;br/&gt;Hello my ragtime, summertime gal&lt;br/&gt;Send me a kiss by wire, by wire&lt;br/&gt;Baby, my heart's on fire, on fire&lt;br/&gt;If you refuse me, honey, you lose me&lt;br/&gt;Then you'll be left alone, oh baby&lt;br/&gt;Telephone, and tell me, tell me&lt;br/&gt;Tell me I'm your very own&lt;br/&gt;Tell me that I'm your own&lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://phish.lyrics-songs.com/lyrics/30655/"&gt;phish.lyrics-songs.com/...&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113601097346896959?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113601097346896959/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113601097346896959' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113601097346896959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113601097346896959'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/hello-my-baby-lyrics-phish.html' title='HELLO MY BABY lyrics (Phish) ♫'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113583721538835300</id><published>2005-12-29T14:20:00.000+08:00</published><updated>2005-12-29T16:56:21.596+08:00</updated><title type='text'>这套小游戏好玩</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;img align="right" src="http://www.chiark.greenend.org.uk/%7Esgtatham/puzzles/solo.png"/&gt;&lt;br/&gt;“&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/puzzles/"&gt;Simon Tatham's Portable Puzzle Collection&lt;/a&gt;”收集了很多耐玩的小游戏，都可以同时运行在*nix/Windows/Mac OS X中，而且还&lt;a href="http://www.chiark.greenend.org.uk/%7Ejharvey/puzzles/"&gt;移植到了Palm上&lt;/a&gt;。太棒了，我可以在所有这些平台上玩一样的游戏了，呵呵。&lt;br/&gt;补充：在Debian里，可以直接sudo apt-get install sgt-puzzles安装该游戏包。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113583721538835300?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113583721538835300/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113583721538835300' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113583721538835300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113583721538835300'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/blog-post_29.html' title='这套小游戏好玩'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113583596351064228</id><published>2005-12-29T13:59:00.000+08:00</published><updated>2005-12-29T13:59:23.566+08:00</updated><title type='text'>完蛋，freebsd.org已经被!@#$，mozilla.org好像也要不行了</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;最新消息，&lt;a href="http://www.freebsd.org/"&gt;freebsd.org&lt;/a&gt;已经不通了，&lt;a href="http://www.mozilla.org/"&gt;mozilla.org&lt;/a&gt;在某些地方也已不通，&lt;a href="http://www.gnu.org/"&gt;gnu.org&lt;/a&gt;有时下载文件也会出问题……&lt;br/&gt;&lt;br/&gt;Orz&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113583596351064228?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113583596351064228/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113583596351064228' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113583596351064228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113583596351064228'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/freebsdorgmozillaorg.html' title='完蛋，freebsd.org已经被!@#$，mozilla.org好像也要不行了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113582303339949612</id><published>2005-12-29T10:23:00.000+08:00</published><updated>2005-12-29T10:36:06.513+08:00</updated><title type='text'>在firefox上共享文件，那会有多妙</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;这两天关于这个firefox上的&lt;a href="http://www.allpeers.com/index_f.htm"&gt;P2P插件&lt;/a&gt;的消息满天飞，今天又顺着slashdot的链接过去看看看……呵呵，又有一个被slashdot攻击的网站诞生liao：&lt;br/&gt;&lt;blockquote&gt;Sorry, the good news is that we have been slashdotted...&lt;br/&gt;The bad news is that our main server is down...&lt;br/&gt;&lt;br/&gt;Please try our &lt;a href="http://mirror.allpeers.com/"&gt;mirror site&lt;/a&gt; or come back later !&lt;br/&gt;&lt;br/&gt;We apologize for the trouble.&lt;/blockquote&gt; &lt;br/&gt;这说明大家都很期待这个神奇插件的诞生，呵呵。期待在浏览网页的时候，可以随时跟朋友共享自己的上网经历、有趣的文件、图片、网页，这感觉肯定会很妙的。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113582303339949612?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113582303339949612/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113582303339949612' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113582303339949612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113582303339949612'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/firefox.html' title='在firefox上共享文件，那会有多妙'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113532204144633309</id><published>2005-12-23T15:14:00.000+08:00</published><updated>2005-12-23T15:14:01.496+08:00</updated><title type='text'>XChat-GNOME翻译完毕</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;        这两天上班的事比较琐碎，而且感觉比较累，想休息休息，所以有机会就抽空        &lt;a href="https://launchpad.net/products/xchat-gnome/+translations"&gt;翻译&lt;/a&gt;        一下        &lt;a href="http://xchat-gnome.navi.cx/"&gt;XChat-GNOME&lt;/a&gt;        。托Rongjun Mu的福，我要翻译的部分实在已经很少了；所以在扫荡光了未翻译的条目后，又校对了一遍，疏漏应该相对少多了。有时间的朋友请帮忙再校对一下，谢啦。按照        &lt;a href="http://www.douban.com/subject/1316569/"&gt;GTD&lt;/a&gt;        做完第一件事，很开心，给自己记下一笔 :)      &lt;/p&gt;      &lt;p&gt;        另外，这个翻译用的        &lt;a href="https://wiki.ubuntu.com/Rosetta"&gt;rosetta&lt;/a&gt;        系统确实不错；从UI和URL上看来，应该是基于        &lt;a href="http://www.zope.org/DevHome/Zope3"&gt;Zope3&lt;/a&gt;        开发的。除了偶尔有点慢、偶尔会提交出错以外，用起来还是很方便的。可惜暂时还不会开放源码，而且项目大都是        &lt;a href="http://www.ubuntu.com/"&gt;ubuntu&lt;/a&gt;        相关的；不然在国内搞这么一套系统，就可以把很多亟需翻译的项目都很快的组织起来，让大家翻译PO、文档就像在线制作“        &lt;a href="http://wqy.sourceforge.net/cgi-bin/index.cgi"&gt;文泉驿&lt;/a&gt;        ”字体一样方便。关注一下，看它准备什么时候把代码放出来。      &lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://xchat-gnome.navi.cx/"&gt;xchat-gnome.navi.cx/&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113532204144633309?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113532204144633309/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113532204144633309' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113532204144633309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113532204144633309'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/xchat-gnome.html' title='XChat-GNOME翻译完毕'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113530873977133338</id><published>2005-12-23T11:32:00.000+08:00</published><updated>2005-12-23T11:32:19.823+08:00</updated><title type='text'>Python创始人Guido van Rossum去Google工作了</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;说Google在网罗全世界的IT精英，真的一点都不为过。希望中国也会出现像Google这样的公司，也许我们一起努力，10年之内“Google的中国版”公司能够出现？&lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://www.oreillynet.com/pub/wlg/8821?CMP=OTC-UD6648202101&amp;amp;amp;ATT=Python%20Creator%20Guido%20van%20Rossum%20now%20working%20at%20Google"&gt;www.oreillynet.com/pub/...&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113530873977133338?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113530873977133338/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113530873977133338' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113530873977133338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113530873977133338'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/pythonguido-van-rossumgoogle.html' title='Python创始人Guido van Rossum去Google工作了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113530545724470964</id><published>2005-12-23T10:37:00.000+08:00</published><updated>2005-12-23T10:47:25.166+08:00</updated><title type='text'>在 GNOME 里养小鱼(彩蛋)</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;&lt;p&gt;上次看到&lt;a href="http://linuxfire.dhis.org/%7Eeasthero/wordpress/?p=41"&gt;OOo的彩蛋&lt;/a&gt;，这次又有&lt;a href="http://www.gnome-cn.org/newsitems/gnome-wanda-a-fish/"&gt;GNOME的彩蛋&lt;/a&gt;。没事看看小鱼在面前游来游去，生活也会变得有生气起来。&lt;/p&gt;&lt;p&gt;GNOME彩蛋的启动和退出方法：使用 Alt+F2 打开“运行”对话框，输入free the fish并回车，开始养鱼；在小鱼身上点鼠标左键或右键，赶小鱼出家门。&lt;/p&gt;&lt;p&gt;OOo彩蛋的启动方法：在 OOo2 calc任意一个格子中输入=GAME(”StarWars”)，然后回车。&lt;/p&gt;&lt;p&gt;Read more at &lt;a href="http://www.gnome-cn.org/newsitems/gnome-wanda-a-fish/"&gt;www.gnome-cn.org/newsit...&lt;/a&gt;      &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113530545724470964?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113530545724470964/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113530545724470964' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113530545724470964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113530545724470964'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/gnome.html' title='在 GNOME 里养小鱼(彩蛋)'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113524449968036814</id><published>2005-12-22T17:41:00.000+08:00</published><updated>2005-12-22T17:47:25.566+08:00</updated><title type='text'>快换SHA吧，MD5真的不能再用了</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;&lt;p&gt;“md5 已经能够在很短的时间内被&lt;a href="http://it.slashdot.org/article.pl?sid=05/11/15/2037232"&gt;破解&lt;/a&gt;...”这下原来还存着侥幸，认为之前的论文只是理论研究成果，现实世界里MD5还是很安全的人们没有话说了吧。演示算法能45分钟破解MD5，足够让每个人都警惕了。要是觉得SHA1也不行，也可以试试&lt;a href="http://www-cse.ucsd.edu/users/mihir/papers/hmac.html"&gt;HMAC&lt;/a&gt;，基于&lt;a href="http://www.faqs.org/rfcs/rfc2104.html"&gt;RFC2104&lt;/a&gt;的算法。换了换了，我先去查查自己的代码里有什么地方用MD5……&lt;/p&gt;&lt;p&gt;Read more at &lt;a href="http://plog.longwin.com.tw/post/1/289"&gt;plog.longwin.com.tw/pos...&lt;/a&gt;&lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113524449968036814?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113524449968036814/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113524449968036814' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113524449968036814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113524449968036814'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/shamd5.html' title='快换SHA吧，MD5真的不能再用了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113523730021899720</id><published>2005-12-22T15:37:00.000+08:00</published><updated>2005-12-22T15:41:40.226+08:00</updated><title type='text'>备案大限到期，FreeBSD中文站遭殃</title><content type='html'>据可靠消息，由于没有进行备案，freebsd.org.cn被有关方面关闭。由于最近刚刚进行过数据备份，网站资料没有遭受损失。目前该网站维护人员正计划迁移到海外主机。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113523730021899720?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113523730021899720/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113523730021899720' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113523730021899720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113523730021899720'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/freebsd.html' title='备案大限到期，FreeBSD中文站遭殃'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113513109028361506</id><published>2005-12-21T10:11:00.000+08:00</published><updated>2005-12-21T10:20:03.296+08:00</updated><title type='text'>Wikipedia Founder Edits Own Bio</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;&lt;p&gt;最近这几天关于Jimmy的事真是连续不断呀，这都怎么了？是不是上次BBC报道过后，大家都盯上&lt;a href="http://en.wikipedia.org"&gt;Wikipedia&lt;/a&gt;、盯上Jimmy了？&lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt;又&lt;a href="http://slashdot.org/article.pl?sid=05/12/20/1852229"&gt;有人提到&lt;/a&gt;了Jimmy编辑过自己在维基百科上的自传曾经有18次之多，指责他违反了&lt;a href="http://en.wikipedia.org/wiki/WP:AUTO"&gt;编辑自传的原则&lt;/a&gt;。不过，我也持一些评论的网友的意见：如果有人恶意修改你的自传，加上些莫须有的东西，你都必须袖手旁观，这样才算中立，才算客观吗？要是非得那样那才是真见鬼了呢。那个原则，也确实只是SHOULD BE，而非MUST BE，不是强制性原则：&lt;/p&gt;&lt;blockquote&gt;This page is considered a guideline on Wikipedia. It illustrates standards of conduct, which many editors agree with in principle. However, it is not policy.&lt;/blockquote&gt;&lt;p&gt;另外，指责还包括另外一些道德上的事，比如Jimmy抹掉了Larry Sanger也是共同创始人的部分；并修改了Bomis.com的部分，据说那是一个色情图片网站。如果Larry是维基百科的共同创始人的话，那就是事实；这个事实也就不会因为Jimmy的自传里没有提到就混淆不请了。关于Bomis.com，厄，等有时间再研究吧；不过按照Slastdot上网友的考证，Jimmy修改之后的描述也许更恰当一些。更详细的讨论，还是请诸位朋友去看&lt;a href="http://slashdot.org/article.pl?sid=05/12/20/1852229"&gt;Slashdot&lt;/a&gt;吧。&lt;/p&gt; &lt;p&gt;Read more at &lt;a href="http://slashdot.org/article.pl?sid=05/12/20/1852229"&gt;slashdot.org/article.pl...&lt;/a&gt;      &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113513109028361506?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113513109028361506/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113513109028361506' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113513109028361506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113513109028361506'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/wikipedia-founder-edits-own-bio.html' title='Wikipedia Founder Edits Own Bio'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113508487909222263</id><published>2005-12-20T21:21:00.000+08:00</published><updated>2005-12-21T10:17:34.340+08:00</updated><title type='text'>NewsForge | IT management in Asia</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;看看亚洲的兄弟们多么艰苦呀：&lt;blockquote&gt;Managing an IT concern in Asia presents its own special set of challenges in addition to those faced by CIOs in other parts of the world. When asked what his worst nightmare scenario might be, Kim Carter, CEO of Carsena Technology Services in Thailand, responded, "The first thing I hear in the morning is: 'Hey, Boss, the server's down.' 'Then reboot it!' 'Can't, boss, the power's out, too.'"&lt;/blockquote&gt;LOL&lt;br&gt;据说国内一些互联网公司也基本处于这个水平。&lt;p&gt;Read more at &lt;a href="http://business.newsforge.com/article.pl?sid=05/12/19/2238256"&gt;business.newsforge.com/...&lt;/a&gt;      &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113508487909222263?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113508487909222263/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113508487909222263' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113508487909222263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113508487909222263'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/newsforge-it-management-in-asia.html' title='NewsForge | IT management in Asia'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113504564566924865</id><published>2005-12-20T10:27:00.000+08:00</published><updated>2005-12-20T10:27:25.816+08:00</updated><title type='text'>听Google工程师讲讲“性能的代价”</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;        相比较国内粗放的项目开发，Google公司的工程师真是像在做博士论文的课题呀。Google的首席工程师Luiz André Barroso在        &lt;a href="http://www.acmqueue.org/" title="美国计算机学会的国际计算机架构学会学报"&gt;ACM Queue&lt;/a&gt;        发表了“        &lt;a href="http://acmqueue.com/modules.php?name=Content&amp;amp;amp;pa=showpage&amp;amp;amp;pid=330&amp;amp;amp;page=1"&gt;The Price of Performance&lt;/a&gt;        ”，这里是“        &lt;a href="http://spaces.msn.com/members/nonocut/"&gt;胡说袋鼠&lt;/a&gt;        ”翻译的        &lt;a href="http://spaces.msn.com/members/nonocut/Blog/cns%211pLEcJtdYbmfLmtgayT_LkaQ%21403.entry"&gt;译文&lt;/a&gt;        。我在想，是不是中国也该培养点IT方向的清算师，帮我们算算自己公司里的糊涂帐。      &lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://spaces.msn.com/members/nonocut/Blog/cns%211pLEcJtdYbmfLmtgayT_LkaQ%21403.entry"&gt;spaces.msn.com/members/...&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113504564566924865?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113504564566924865/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113504564566924865' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113504564566924865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113504564566924865'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/google.html' title='听Google工程师讲讲“性能的代价”'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113499479079108654</id><published>2005-12-19T20:19:00.000+08:00</published><updated>2005-12-19T20:34:16.616+08:00</updated><title type='text'>谣传？维基百科创始人Jimmy Wales遇刺身亡？</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;Jimmy遇刺身亡？第一感觉就是－－谣传。但愿如我所想。&lt;p&gt;Read more at &lt;a href="http://hopesome.com/archives/628.html"&gt;hopesome.com/archives/6...&lt;/a&gt;&lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113499479079108654?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113499479079108654/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113499479079108654' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113499479079108654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113499479079108654'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/jimmy-wales.html' title='谣传？维基百科创始人Jimmy Wales遇刺身亡？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113496810024868294</id><published>2005-12-19T12:55:00.000+08:00</published><updated>2005-12-19T17:14:16.246+08:00</updated><title type='text'>del.icio.us的官方解释来了</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;del.icio.us对最近事故的官方解释如下：&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;Due to the power outage earlier in the week, we appear a number of  continued hiccups. We've taken everything offline to properly rebuild  and restore everything. I apologize and hope to have this resolved as  soon as possible. Thank you for your continued patience.&lt;/p&gt;&lt;p&gt;Updates will be posted &lt;a href="http://blog.del.icio.us/blog/2005/12/continued_hiccu.html"&gt;on our blog&lt;/a&gt;          as we have them.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;不过我访问他们的blog有点问题，始终连不上。恩，此刻访问他们blog的人肯定不少。&lt;br /&gt;&lt;p&gt;Read more at &lt;a href="http://del.icio.us/"&gt;del.icio.us/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113496810024868294?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113496810024868294/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113496810024868294' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496810024868294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496810024868294'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/delicious.html' title='del.icio.us的官方解释来了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113496726818898652</id><published>2005-12-19T11:42:00.000+08:00</published><updated>2005-12-19T12:41:08.200+08:00</updated><title type='text'>C语言的代码检查及单元测试</title><content type='html'>最近写C比较多，不过C的单元测试一直也没做起来，只能用shell写一些功能测试顶上了。先把找到的一些资料放着里，回头再研究吧。有那位朋友有C Unittest的经验，给提点建议吧。&lt;br /&gt;&lt;br /&gt;检查内存泄漏&lt;br /&gt;&lt;a href="http://www.gnome.org/projects/memprof/"&gt;http://www.gnome.org/projects/memprof/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://valgrind.org/"&gt;http://valgrind.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;代码安全性审计&lt;br /&gt;&lt;a href="http://directory.fsf.org/devel/build/RATS.html"&gt;http://directory.fsf.org/devel/build/RATS.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dwheeler.com/flawfinder/"&gt;http://www.dwheeler.com/flawfinder/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C语言单元测试&lt;br /&gt;&lt;a href="http://simplectest.sourceforge.net/index.php"&gt;http://simplectest.sourceforge.net/index.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gethos.net/opensource/cunit.php"&gt;http://gethos.net/opensource/cunit.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.recursism.com/s2004/zp/products/gnu%20autounit"&gt;http://www.recursism.com/s2004/zp/products/gnu%20autounit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cutest.sourceforge.net/"&gt;http://cutest.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://check.sourceforge.net/"&gt;http://check.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.falvotech.com/projects/cut.php"&gt;http://www.falvotech.com/projects/cut.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/cut"&gt;http://sourceforge.net/projects/cut&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cunit.sourceforge.net/"&gt;http://cunit.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://c2.com/cgi/wiki?PoorMansTestingFramework"&gt;http://c2.com/cgi/wiki?PoorMansTestingFramework&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113496726818898652?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113496726818898652/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113496726818898652' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496726818898652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496726818898652'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/c.html' title='C语言的代码检查及单元测试'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113496360984102602</id><published>2005-12-19T11:24:00.000+08:00</published><updated>2005-12-19T11:40:09.886+08:00</updated><title type='text'>备份有多重要</title><content type='html'>即使是自己最信赖的服务，也会有出错的时候。航天飞机都不能幸免，何况&lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt;呢：&lt;br /&gt;&lt;blockquote&gt;del.icio.us is down for emergency maintenance. we'll be back as soon possible.&lt;/blockquote&gt;&lt;br /&gt;还好我前些日子把自动备份加到crontab里了，阿弥陀佛：&lt;br /&gt;&lt;blockquote&gt;0 23 * * * curl --user myuser:mypassword -o /home/xyb/netbackup/delicious-xyb.xml http://del.icio.us/api/posts/all&lt;/blockquote&gt;&lt;br /&gt;每天一备，再加上&lt;a href="http://sourceforge.net/projects/sbackup/"&gt;Simple Backup&lt;/a&gt;，我基本上可以回朔到前一两个月的任何一个版本了。欧耶～&lt;br /&gt;这事让我又温习到的一个教训是，该出事的总会出事。还有，对一个服务太依赖了不好：如果有很多理由离不开它，那最好在“上瘾”之前先确定一下，它是不是提供了良好的备份支持或者后背方案。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113496360984102602?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113496360984102602/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113496360984102602' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496360984102602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113496360984102602'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/blog-post.html' title='备份有多重要'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113489889435639071</id><published>2005-12-18T17:22:00.000+08:00</published><updated>2005-12-18T17:41:36.940+08:00</updated><title type='text'>SSH穿梭机</title><content type='html'>许多人都经常在Linux/UNIX/*BSD的系统中来回穿梭，这是他们的日常工作，是养家糊口的方法。我也是其中的一员。在系统中跳来跳去、来回登录、传输文件，是挺烦人的；为了减少点麻烦，让日子过得更舒服一些，大家都积累了一些小手段，让事情变得更简单一些。今天记录一下我自己做这些事的方法。我的系统是&lt;a href="http://www.debian.org"&gt;Debian&lt;/a&gt;，下面也以它来讲解；但在其他的大多数系统中也都差不多，Windows系统则可以通过&lt;a href="http://www.cygwin.com"&gt;Cygwin&lt;/a&gt;来得到下面的这些程序。&lt;br /&gt;&lt;br /&gt;一般来说，这些系统都是通过&lt;a href="http://www.openssh.com" title="Open SSH"&gt;ssh&lt;/a&gt;来维护的；要使用它，得先安装openssh-client：&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install openssh-client&lt;/blockquote&gt;&lt;br /&gt;然后为自己创建用来进行登录认证的密钥，它可以帮助我们在登录时更安全和方便，也可以让一些工作实现自动化：&lt;br /&gt;&lt;blockquote&gt;test -d $HOME/.ssh || mkdir -m 0700 $HOME/.ssh&lt;br /&gt;ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -b 2048&lt;/blockquote&gt;&lt;br /&gt;在创建过程中，要输入两次passphrase。passphrase是只有主人知道的密码，是密钥的最后一层安全屏障；有了它，即使你的.ssh/id_rsa文件被人偷走，盗贼不知道passphrase也一样不能冒用。&lt;br /&gt;&lt;br /&gt;不过passphrase带来的一个问题是，每次使用密钥之前都要被提问，但ssh-add可以解决这个麻烦。不过我一般不直接使用ssh-add，有了更方便的&lt;a href="http://www.gentoo.org/proj/en/keychain/"&gt;Keychain&lt;/a&gt;，还可以更省心一些。安装Keychain:&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install keychain ssh-askpass&lt;/blockquote&gt;&lt;br /&gt;其中ssh-askpass是用来提问passphrase的小程序。也可以选择安装ssh-askpass-fullscreen或者ssh-askpass-gnome。然后&lt;br /&gt;&lt;blockquote&gt;mkdir -p $HOME/.keychain&lt;/blockquote&gt;&lt;br /&gt;并把一下语句放入自己的shell rc。比如我是用bash，则加入~/.bashrc：&lt;br /&gt;&lt;blockquote&gt;keychain ~/.ssh/id_rsa&lt;br /&gt;. ~/.keychain/${HOSTNAME}-sh&lt;/blockquote&gt;&lt;br /&gt;这样，可以在第一次登录shell的时候，自动加载密钥，而后就再也不会提问它了。&lt;br /&gt;&lt;br /&gt;至此我自己的工作环境就准备完毕了。为了登录到其他主机，还需要把密钥放入主机的~/.ssh/authorized_keys文件中。我通常使用下面的脚本来做这个工作：&lt;br /&gt;&lt;blockquote&gt;#!/bin/sh&lt;br /&gt;#sshpubkey.sh&lt;br /&gt;#Here's a little one liner that'll do the trick (for passwordless auth) after you've done the ssh-keygen:&lt;br /&gt;target="$1"&lt;br /&gt;ssh "$target" 'test -d .ssh || mkdir -m 0700 .ssh ; cat &gt;&gt; .ssh/authorized_keys &amp;&amp; chmod 0600 .ssh/*' &lt; ~/.ssh/id_rsa.pub&lt;/blockquote&gt;&lt;br /&gt;给要访问的主机添加认证时，只需执行：&lt;br /&gt;&lt;blockquote&gt;sh sshpubkey.sh xyb@my.host.com&lt;/blockquote&gt;&lt;br /&gt;就自动设置完毕了。&lt;br /&gt;&lt;br /&gt;下面我们就可以开始工作了。要登录它，就：&lt;br /&gt;&lt;blockquote&gt;ssh xyb@my.host.com&lt;/blockquote&gt;&lt;br /&gt;要上传文件时，执行：&lt;br /&gt;&lt;blockquote&gt;scp -r mydir/ xyb@my.host.com:/path/to/save&lt;/blockquote&gt;&lt;br /&gt;要下载文件时，执行&lt;br /&gt;&lt;blockquote&gt;scp -r xyb@my.host.com:/path/to/ mydir&lt;/blockquote&gt;&lt;br /&gt;这样就方便很多了。&lt;br /&gt;&lt;br /&gt;不过，有些文件可能经常需要更新。比如，我喜欢在自己的机器上编写程序，然后在另一台主机上编译和调试。所以，我需要有个工具能帮我把文件和目录“同步”到主机上去。这是lftp的长项：&lt;br /&gt;&lt;blockquote&gt;lftp -c "open sftp://xyb@my.host.com; mirror -R /my/dir /path/to/dir"&lt;/blockquote&gt;&lt;br /&gt;这一条命令就把数据从我的/my/dir目录“镜像”到了远程主机的/path/to/dir了；而且聪明的lftp会自动判断那些文件是被修改过的，它只更新那些新文件。实际上，我更喜欢这样使用：&lt;br /&gt;&lt;blockquote&gt;lftp -c "open sftp://xyb@my.host.com; repeat 2 mirror -X '*.swp' -v -R /my/dir /path/to/dir"&lt;/blockquote&gt;&lt;br /&gt;这条命令会把我的目录每2秒向远程主机同步一次，同时显示它做过那些更新，并忽略所有.swp文件：那是我的编辑器vim创建的临时文件。这样，我就可以放心的编辑我的源代码，每次保存的新代码，至多2秒钟之后就会出现在我的调试主机上了。是不是很方便呢 :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113489889435639071?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113489889435639071/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113489889435639071' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113489889435639071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113489889435639071'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/ssh.html' title='SSH穿梭机'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113447735808162332</id><published>2005-12-13T20:34:00.000+08:00</published><updated>2005-12-13T20:35:58.090+08:00</updated><title type='text'>Which OS Are You?</title><content type='html'>&lt;a href="http://bbspot.com/News/2003/01/os_quiz.php"&gt;&lt;img src="http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/palm.jpg" alt="You are Palm OS. Punctual, straightforward and very useful.  Your mother wants you to do more with your life like your cousin Wince, but you're happy with who you are." border="0" height="90" width="300" /&gt;&lt;br /&gt;Which OS are You?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113447735808162332?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113447735808162332/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113447735808162332' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113447735808162332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113447735808162332'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/12/which-os-are-you.html' title='Which OS Are You?'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-113072609578302033</id><published>2005-10-31T10:05:00.000+08:00</published><updated>2005-10-31T20:11:53.066+08:00</updated><title type='text'>维客中国，你真的明白GFDL吗？</title><content type='html'>今天一到公司，就看到一个好消息：&lt;a href="http://zh.wikipedia.org/" title="中文维基百科"&gt;维基百科&lt;/a&gt;遭遇的第三次封锁今早终于解除了！庆贺一下。&lt;br /&gt;&lt;br /&gt;不过也听到了一个不好的消息，&lt;a href="http://www.wikicn.com/"&gt;维客中国&lt;/a&gt;由于被“骇客”攻击，&lt;a href="http://post.baidu.com/f?kz=58333286" title="维客中国关闭，远离是非"&gt;决定关闭网站&lt;/a&gt;。说实在的，这件事情可真够乱的：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;正如维基百科的雪鸮所言，感觉“目前中国做互联网的人没有几个了解&lt;a href="http://zh.wikipedia.org/wiki/GFDL" title="GFDL（GNU自由文档许可证）"&gt;GFDL&lt;/a&gt;的人，看方东兴的声明，他明显不了解GFDL，感觉被搜派那帮学生当枪使了，他的声明说：我们反复向发起者确认过，网站内容没有侵权。显然那帮学生没告诉他实话”。说大家都不了解不太可能，但很多人没有认真研究过GFDL和版权法肯定是实情。甚至本身知道版权问题，知道GFDL，却为了商业利益而置若罔闻、我行我素的，在国内恐怕也不是一两个、三四个这样的数量。即使今天不被骇客所摧毁，明天也要顶着违反GFDL的名声，去操作“商业运作”。难道维客中国真的就想一辈子这么做下去么？&lt;/li&gt;&lt;br /&gt;&lt;li&gt;维基百科的大部分人都反对用暴力的方法解决版权的纠纷，更不要说为了泄愤而使用骇客手段。昨天晚上一帮维基百科人在msn里聊天，大家都比较担心被误解，怕让人以为是支持这种破坏行为的。Rights在&lt;a href="http://post.baidu.com/f?kz=58333286" title="维客中国关闭，远离是非"&gt;百度贴吧里的留言&lt;/a&gt;很好的表达了维基百科人的态度：“奉劝那些攻击者，向Wikicn与Wikipedia两方道歉吧，你们毁掉了一个网站的实体，也几近毁掉了另一个网站的声誉”。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;维基百科人其实很高兴有更多的中文维基出现；如果维基百科的知识能被合法、合理的使用，我们将非常高兴。维基百科是开放的，但也是&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E7%89%88%E6%9D%83%E4%BF%A1%E6%81%AF" title="维基百科的版权"&gt;有版权的&lt;/a&gt;，请遵守&lt;a href="http://zh.wikipedia.org/wiki/GFDL" title="GFDL（GNU自由文档许可证）"&gt;GFDL&lt;/a&gt;，也即《GNU自由文档许可证》，尊重维基百科每位参与者的贡献！请每位想使用维基百科资源的朋友务必先查阅它。&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;另外，昨天聊天时，有一位维基百科人宣布要结婚了。当时我不在计算机旁，现在借blog，祝她婚姻幸福，白头偕老！你在维基百科做得工作真棒 ^_^&lt;br /&gt;&lt;br /&gt;后记：2005-10-31晚，维基百科再次不能访问 :(&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/wikipedia rel=tag&gt;wikipedia&lt;/a&gt; &lt;a href=http://technorati.com/tag/维基百科 rel=tag&gt;维基百科&lt;/a&gt; &lt;a href=http://technorati.com/tag/GFDL rel=tag&gt;GFDL&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-113072609578302033?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/113072609578302033/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=113072609578302033' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113072609578302033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/113072609578302033'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/10/gfdl.html' title='维客中国，你真的明白GFDL吗？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112954708805759765</id><published>2005-10-17T18:26:00.000+08:00</published><updated>2005-10-17T19:08:31.013+08:00</updated><title type='text'>免光驱软驱安装Debian Sarge</title><content type='html'>换工作了，到新公司一看机器，气得鼻子都歪了，没有光驱、软驱？！问了问，部门就有一个USB的光驱，但用来读光盘安装软件的话，容易出错，不太好使。看来在最近阶段，只有自力更生啦，正好演练一下免软驱、光驱是怎么安装&lt;a href="http://www.debian.org/" title="Debian GNU/linux"&gt;Debian&lt;/a&gt;的，以前只听说过，可是没有真的做过。&lt;br /&gt;&lt;br /&gt;从linuxsir找到了一篇不错的&lt;a href="http://www.linuxsir.org/bbs/showthread.php?t=108911" title="VFloppy+grub.img安装Debian"&gt;帖子&lt;/a&gt;，不过按着做了半天，发现时过境迁，想装最新的sarge还真不知道要下载那个vmlinuz才行。还算运气，乱试了半天，终于找到了，原来hd-media才是我的“真命天子”。2.4内核的安装用下面这两个文件：&lt;br /&gt;&lt;a href="ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/vmlinuz" title="Debian Sarge vmlinuz(kernel 2.4)"&gt;ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/vmlinuz&lt;/a&gt;&lt;br /&gt;&lt;a href="ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/initrd.gz" title="Debian Sarge initrd.gz(kernel 2.4)"&gt;ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/initrd.gz&lt;/a&gt;&lt;br /&gt;2.6内核则要用这两个：&lt;br /&gt;&lt;a href="ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/2.6/vmlinuz" title="Debian Sarge vmlinuz(kernel 2.6)"&gt;ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/2.6/vmlinuz&lt;/a&gt;&lt;br /&gt;&lt;a href="ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/2.6/initrd.gz" title="Debian Sarge initrd.gz(kernel 2.6)"&gt;ftp://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/hd-media/2.6/initrd.gz&lt;/a&gt;&lt;br /&gt;下载完了放到C:\里。&lt;br /&gt;&lt;br /&gt;我是Windows XP系统，不过算我运气，IT的人为了部署机器方便，用Ghost克隆分区，所以C:的格式是FAT32的。好哇，这下Grub for Dos可以用了 :)&lt;br /&gt;&lt;a href="http://www.zevils.com/~matthewg/grub/grub.img" title="Grub for Dos"&gt;http://www.zevils.com/~matthewg/grub/grub.img&lt;/a&gt;&lt;br /&gt;下载了，也一样放到C:\中。&lt;br /&gt;&lt;br /&gt;剩下就是编辑C:\boot.ini，在最后增加一行，作为Grub的启动项：&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;c:\grub.img="grub"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;好了，重启系统，在启动菜单里选grub，就出现“Grub &gt;”提示符了。这时输入以下三条指令：&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;kernel (hd0,0)/vmlinuz root=/dev/ram ramdisk_size=20000 devfs=mount,dall rw&lt;br /&gt;initrd (hd0,0)/initrd.gz&lt;br /&gt;boot&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;就来到我熟悉的安装界面了，Cool!&lt;br /&gt;&lt;br /&gt;P.S. 用vmware试了试直接往物理硬盘上装，倒是可以，就是用真实的硬件启动的时候，就找不到dev/console了；查了查网络，看来有这个问题的不只我一个，不理它了。&lt;br /&gt;&lt;br /&gt;P.S. 装完Gnome和gdm，终于来到gdm的登陆界面。为了好看，我换主题……刚换到第三个，怎么突然就屏幕黑了？？唉，从此这屏幕在X里再也不亮了，可是从硬盘灯的闪烁来看，我摸黑也一样登陆进去了，这是怎么回事，各位朋友帮忙确诊一下吧，多谢多谢！X系统的配置应该都没什么问题的，显卡、显示器都自己找到了，可怎么会在换gdm主题的时候“熄火”呢？百思不得其解，各位支个招吧，最好能恢复安装原始状态，让他自己再把正确的配置文件生成出来。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112954708805759765?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112954708805759765/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112954708805759765' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112954708805759765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112954708805759765'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/10/debian-sarge.html' title='免光驱软驱安装Debian Sarge'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112954426109279138</id><published>2005-10-17T18:12:00.000+08:00</published><updated>2005-10-17T18:20:17.066+08:00</updated><title type='text'>16人格的测试火起来了？</title><content type='html'>一时之间怎么blog里到处都是做测试的？不过人家对&lt;a href="http://www.mulog.org/mulog/article.asp?id=526" title="可用作职业规划的性格测试 (Myers-Briggs Type Indicator)"&gt;16人格的资料&lt;/a&gt;比较多，自己也趁机再学习学习。一看可不得了，原来自己竟然是适合做“首席信息系统执行官”的料，好哇，那位同学想请俺去当CIO、CTO的，赶紧报名了，呵呵：&lt;br /&gt;ISTJ，感观型（内向，感觉，思维，判断）&lt;br /&gt;主要特征：安静、严肃，通过全面性和可靠性获得成功。实际，有责任感。决定有逻辑性，并一步步地朝着目标前进，不易分心。喜欢将工作、家庭和生活都安排得井井有条。重视传统和忠诚。&lt;br /&gt;常见适合职业举例：&lt;br /&gt;首席信息系统执行官&lt;br /&gt;天文学家&lt;br /&gt;数据库管理&lt;br /&gt;会计&lt;br /&gt;房地产经纪人&lt;br /&gt;侦探&lt;br /&gt;行政管理&lt;br /&gt;信用分析师&lt;br /&gt;&lt;br /&gt;:-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112954426109279138?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112954426109279138/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112954426109279138' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112954426109279138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112954426109279138'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/10/16.html' title='16人格的测试火起来了？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112280553618435567</id><published>2005-07-31T17:25:00.000+08:00</published><updated>2005-08-03T19:59:16.910+08:00</updated><title type='text'>用Python转换一些Unix里的时间格式</title><content type='html'>UNIX世界的时间是从1970年开始算起的，一些程序为了省事，直接把这个记录秒数的数字放到了日志等文件中。在shell里，可以用date很容易的获得这个秒数；借助awk则可以把秒数再还原成字符串。&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;0$ date +%s&lt;br /&gt;1122802026&lt;br /&gt;0$ echo 1122802026 | awk '{print strftime("%Y-%m-%d %H:%M:%S", $1)}'&lt;br /&gt;2005-07-31 17:27:06&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;不过我的一些程序是python编写的，为了转换这个数字，我使用下面的这个函数：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;import time&lt;br /&gt;def epoch2str(sec):&lt;br /&gt;    """convert epoch time(UNIX) to string&lt;br /&gt;&lt;br /&gt;    for example:&lt;br /&gt;    &gt;&gt;&gt; epoch2str(1122802026)&lt;br /&gt;    '2005-07-31 17:27:06'&lt;br /&gt;    """&lt;br /&gt;    return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(sec)))&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;还有一种日期格式，&lt;a href="http://cr.yp.to/libtai/tai64.html"&gt;TAI64&lt;/a&gt;，提供了一种64比特、以纳秒为最小单位的时间格式。它是与操作系统、硬件架构无关的，格式类似于“@4000000042eb9fce1a7faf0c”，主要是在Qmail的日志中比较常见。有一个叫做&lt;a href="http://cr.yp.to/daemontools.html"&gt;daemontools&lt;/a&gt;的软件包，它包含 &lt;a href="http://cr.yp.to/daemontools.html"&gt;tail64n&lt;/a&gt;和&lt;a href="http://cr.yp.to/daemontools/tai64nlocal.html"&gt;tai64nlocal&lt;/a&gt; 可以用来在shell中把这种时间转换成更易读的格式。不过这里的重点还是如何用python来读它。有一个&lt;a href="http://mikebabcock.ca/code/pytai/"&gt;pytai: TAI64 Python interface&lt;/a&gt;，提供完整的软件包，但我并不需要如此多的内容。看了看pytai的代码，发现读取方法其实很简单，完全可以简化成如下的一个函数：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;from string import atol&lt;br /&gt;from time import localtime,strftime&lt;br /&gt;&lt;br /&gt;def tai64time(tai64string, timeformat="%Y-%m-%d %H:%M:%S"):&lt;br /&gt;    """Convert TAI64 time format to human readable string.&lt;br /&gt;&lt;br /&gt;    TAI stands for Temps Atomique International, the current&lt;br /&gt;    international real-time standard. See alse:&lt;br /&gt;&lt;br /&gt;        http://cr.yp.to/libtai/tai64.html&lt;br /&gt;&lt;br /&gt;    for example:&lt;br /&gt;    &gt;&gt;&gt; tai64time('@4000000042eb9fce1a7faf0c')&lt;br /&gt;    '2005-07-30 23:42:06.444575500'&lt;br /&gt;    """&lt;br /&gt;    epoch = 4611686018427387904L&lt;br /&gt;    s = tai64string&lt;br /&gt;    if s[0] == "@": s = s[1:]&lt;br /&gt;    secs,usec = s[:16],s[16:24]&lt;br /&gt;    secs = atol(secs, 16)&lt;br /&gt;    nsec = atol(usec, 16)&lt;br /&gt;    return "%s.%d" % (strftime(timeformat, localtime(secs - epoch)), nsec)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112280553618435567?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112280553618435567/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112280553618435567' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112280553618435567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112280553618435567'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/pythonunix.html' title='用Python转换一些Unix里的时间格式'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112218654133080656</id><published>2005-07-24T14:16:00.000+08:00</published><updated>2005-07-24T14:29:01.336+08:00</updated><title type='text'>lftp中文设置</title><content type='html'>最近常上国内的ftp，有很多GBK编码的目录和文件名；而我的环境是zh_CN.UTF-8的，如果不设置一下，在我最喜欢用的lftp里就会乱码。每次老手工输入太麻烦，今天干脆放到配置文件里，顺便又加了两个别名：&lt;br /&gt;&lt;blockquote&gt;0$ cat ~/.lftp/rc&lt;br /&gt;set ftp:charset "gbk"&lt;br /&gt;set file:charset "UTF-8"&lt;br /&gt;alias cn "set ftp:charset gbk; set file:charset UTF-8"&lt;br /&gt;alias utf8 "set ftp:charset UTF-8; set file:charset UTF-8"&lt;/blockquote&gt;&lt;br /&gt;默认支持简体中文编码的文件名；两个别名则是在中文和UTF8设置间来回切换的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112218654133080656?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112218654133080656/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112218654133080656' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112218654133080656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112218654133080656'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/lftp.html' title='lftp中文设置'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112211172578084758</id><published>2005-07-23T17:36:00.000+08:00</published><updated>2005-07-23T17:42:07.166+08:00</updated><title type='text'>Legolas Greenleaf</title><content type='html'>看到这么多人的blog里都有了，俺也有点心痒痒了，想看看自己是那个，呵呵。&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.tk421.net/character/"&gt;&lt;img src="http://www.tk421.net/character/legolas.jpg" style="border-color: rgb(248, 248, 255);" alt="Which Fantasy/SciFi Character Are You?" border="2" height="216" width="274" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A naturally skilled companion to those around you, you earnestly use your prowess  out of concern to those you care about.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;This forest is old. Very old. Full of memory... and anger.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Legolas is a character from the Middle-Earth universe. A biography is available  at &lt;a href="http://www.theonering.net/movie/char/legolas.html"&gt;TheOneRing.net&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112211172578084758?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112211172578084758/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112211172578084758' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112211172578084758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112211172578084758'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/legolas-greenleaf.html' title='Legolas Greenleaf'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112211038326802763</id><published>2005-07-23T15:14:00.000+08:00</published><updated>2005-07-23T17:19:43.323+08:00</updated><title type='text'>寻找最快的Debian镜像服务器</title><content type='html'>随着对系统的习惯，我现在是越来越喜欢使用既有的软件和功能了。熟悉的软件和桌面仿佛有着一种独特的“气味”，让我用起来更舒服；把系统翻个底掉，找到所有隐藏的东西的那种生活，仿佛已经是很久远以前的事情了。&lt;br /&gt;&lt;br /&gt;现在用新软件越来越少，所以都是做个定时任务，让我的Debian系统半夜去下载升级包；然后等那天有空的时候，自己来操作升级软件：节省了升级时候的等待时间了。不过最近两天unstable里面狂升Xorg，一堆东西都乱七八糟的，不得不多关注一下了。&lt;br /&gt;&lt;br /&gt;话说自从换了工作地点，原来一直用的&lt;a href="ftp://debian.linux.org.tw/debian/" title="台湾的Debian镜像服务器"&gt;台湾&lt;/a&gt;和&lt;a href="ftp://ftp.jp.debian.org/debian/" title="日本的Debian镜像服务器"&gt;日本&lt;/a&gt;的Debian镜像服务器的速度立马大不如前。不过反正都是系统去下载东东，我也用不着等待，也就懒得管它了。今天正好有点时间，重新调整了一下sources.list，惊奇的发现现在官方镜像服务器列表里，我连接&lt;a href="http://debian.ihug.com.au"&gt;debian.ihug.com.au&lt;/a&gt;的速度最快，这是什么原理？&lt;br /&gt;&lt;br /&gt;做一下工作记录：&lt;br /&gt;&lt;br /&gt;1、先检索了一下检测Debian服务器速度的软件包：&lt;br /&gt;&lt;blockquote&gt;apt-cache search apt source&lt;/blockquote&gt;&lt;br /&gt;发现有&lt;a href="http://packages.debian.org/unstable/admin/apt-spy"&gt;apt-spy&lt;/a&gt;和&lt;a href="http://packages.debian.org/unstable/net/netselect-apt"&gt;netselect-apt&lt;/a&gt;两个软件都可用。以前用过apt-spy，这次就试试netselect-apt了：&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install netselect-apt&lt;/blockquote&gt;&lt;br /&gt;2、简单看一下帮助，学习一下：&lt;br /&gt;&lt;blockquote&gt;netselect-apt --help&lt;/blockquote&gt;&lt;br /&gt;启动程序，让它帮我生成unstable的sources.list：&lt;br /&gt;&lt;blockquote&gt;2$ sudo netselect-apt unstable&lt;br /&gt;Password:&lt;br /&gt;Using distribution unstable.&lt;br /&gt;Retrieving the list of mirrors from www.debian.org...&lt;br /&gt;&lt;br /&gt;--15:01:37--  http://www.debian.org/mirror/mirrors_full&lt;br /&gt;           =&gt; `mirrors_full'&lt;br /&gt;正在解析主机 www.debian.org... 194.109.137.218&lt;br /&gt;Connecting to www.debian.org|194.109.137.218|:80... 已连接。&lt;br /&gt;已发出 HTTP 请求，正在等待回应... 200 OK&lt;br /&gt;长度：174,758 (171K) [text/html]&lt;br /&gt;&lt;br /&gt;27% [==================&gt;                                                     ] 47,322        29.06K/s&lt;br /&gt;&lt;br /&gt;15:01:41 (29.03 KB/s) - Read error at byte 47322/174758 (Connection reset by peer). 重试中。&lt;/blockquote&gt;&lt;br /&gt;发现程序开始反复被从服务器上断开连接。嗯，惊诧了几秒钟，想到可能是GFW作怪，于是打开浏览器，通过代理手工把&lt;a href="http://www.debian.org/mirror/list-full" title="Debian代理服务器列表"&gt;Debian代理服务器列表&lt;/a&gt;拖到硬盘上（嗯，果然，应该是那个最能引起GFW警报的关键词ＦＲＥＥＮＥＴ作怪），放在netselect-apt执行时的目录中。&lt;br /&gt;&lt;br /&gt;3、再启动：&lt;br /&gt;&lt;blockquote&gt;0$ sudo netselect-apt unstable&lt;br /&gt;Using distribution unstable.&lt;br /&gt;There is a already a mirrors_full file in the current&lt;br /&gt;directory.  I'll use that, rather than downloading it again.&lt;br /&gt;&lt;br /&gt;Choosing a main Debian mirror using netselect.&lt;br /&gt;Running netselect to choose 1 out of 77 addresses.&lt;br /&gt;.......................................&lt;br /&gt;The fastest server seems to be:&lt;br /&gt;        http://debian.ihug.com.au/debian/&lt;br /&gt;&lt;br /&gt;Choosing a non-US Debian mirror using netselect.&lt;br /&gt;Running netselect to choose 1 out of 72 addresses.&lt;br /&gt;.....................................................&lt;br /&gt;The fastest non-US server seems to be:&lt;br /&gt;        http://194.97.2.70/debian-non-US/&lt;br /&gt;&lt;br /&gt;Writing sources.list.&lt;br /&gt;Done.&lt;/blockquote&gt;&lt;br /&gt;好了，看了看文件内容：&lt;br /&gt;&lt;blockquote&gt;0$ cat sources.list&lt;br /&gt;# the main Debian packages.&lt;br /&gt;deb http://debian.ihug.com.au/debian/ unstable main contrib&lt;br /&gt;# Uncomment the deb-src line if you want 'apt-get source'&lt;br /&gt;# to work with most packages.&lt;br /&gt;# deb-src http://debian.ihug.com.au/debian/ unstable main contrib&lt;br /&gt;&lt;br /&gt;# the non-US Debian packages.&lt;br /&gt;deb http://194.97.2.70/debian-non-US/ unstable/non-US main contrib&lt;br /&gt;# Uncomment the deb-src line if you want 'apt-get source'&lt;br /&gt;# to work with most non-US packages&lt;br /&gt;# deb-src http://194.97.2.70/debian-non-US/ unstable/non-US main contrib&lt;/blockquote&gt;&lt;br /&gt;4、把它加到/etc/apt/sources.list中，update一下：&lt;br /&gt;&lt;blockquote&gt;0$ sudo apt-get update&lt;br /&gt;获取：1 http://194.97.2.70 unstable/non-US Release.gpg [197B]&lt;br /&gt;获取：2 http://debian.ihug.com.au unstable Release.gpg [197B]&lt;br /&gt;获取：3 http://debian.cn99.com unstable Release.gpg [197B]&lt;br /&gt;获取：4 http://debian.ihug.com.au unstable Release [34.1kB]&lt;br /&gt;获取：5 http://debian.ihug.com.au unstable/main Packages [2851kB]&lt;br /&gt;获取：6 http://194.97.2.70 unstable/non-US Release [21.5kB]&lt;br /&gt;忽略 http://194.97.2.70 unstable/non-US Release&lt;br /&gt;命中 http://debian.cn99.com unstable Release&lt;br /&gt;忽略 http://194.97.2.70 unstable/non-US/main Packages&lt;br /&gt;命中 http://debian.cn99.com unstable/main Packages&lt;br /&gt;忽略 http://194.97.2.70 unstable/non-US/contrib Packages&lt;br /&gt;命中 http://debian.cn99.com unstable/non-free Packages&lt;br /&gt;命中 http://debian.cn99.com unstable/contrib Packages&lt;br /&gt;命中 http://debian.cn99.com unstable/main Sources&lt;br /&gt;命中 http://debian.cn99.com unstable/non-free Sources&lt;br /&gt;命中 http://debian.cn99.com unstable/contrib Sources&lt;br /&gt;获取：7 http://debian.ihug.com.au unstable/contrib Packages [55.8kB]&lt;br /&gt;获取：8 http://194.97.2.70 unstable/non-US/main Packages [5116B]&lt;br /&gt;获取：9 http://194.97.2.70 unstable/non-US/contrib Packages [20B]&lt;br /&gt;下载 2968kB，耗时 30s (97.2kB/s)&lt;br /&gt;正在读取软件包列表... 完成&lt;br /&gt;W: GPG error: http://194.97.2.70 unstable/non-US Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B629A24C38C6029A&lt;br /&gt;W: 您可能需要运行 apt-get update 来解决这些问题&lt;/blockquote&gt;&lt;br /&gt;还真是挺快的，下载很轻松就可以达到几百K的速度；就是得解决一下public key的问题。哈哈，前一阵子记的&lt;a href="2005/07/debian-apt-public-key_06.html" title="Debian Apt 的 public key 验证"&gt;笔记&lt;/a&gt;这回派上用场了：&lt;br /&gt;&lt;blockquote&gt;0$ gpg --keyserver wwwkeys.eu.pgp.net --recv-keys  B629A24C38C6029A&lt;br /&gt;gpg: 下载密钥‘38C6029A’，从 hkp 服务器 wwwkeys.eu.pgp.net&lt;br /&gt;gpg: 密钥 38C6029A：公钥“Debian Archive Automatic Signing Key (2003) &lt;ftpmaster@debian.org&gt;”已导入&lt;br /&gt;gpg: 需要 3 份勉强信任和 1 份完全信任，classic 信任模型&lt;br /&gt;gpg: 深度：0 有效性：  1 已签字：  0 信任度：0-，0q，0n，0m，0f，1u&lt;br /&gt;gpg: 下次信任度数据库检查将于 2006-03-07 进行&lt;br /&gt;gpg: 合计被处理的数量：1&lt;br /&gt;gpg:           已导入：1&lt;br /&gt;0$ gpg --armor --export B629A24C38C6029A | sudo apt-key add -&lt;br /&gt;gpg: 没有找到任何绝对信任的密钥&lt;br /&gt;OK&lt;/blockquote&gt;&lt;br /&gt;好了，以后我再装新软件随时都可以享受高速的感觉了 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112211038326802763?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112211038326802763/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112211038326802763' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112211038326802763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112211038326802763'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/debian.html' title='寻找最快的Debian镜像服务器'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112106883112082726</id><published>2005-07-11T15:53:00.000+08:00</published><updated>2005-07-23T17:46:24.700+08:00</updated><title type='text'>闲话习惯</title><content type='html'>&lt;a href="http://chuany.net/?p=66"&gt;有人这样子说&lt;/a&gt;：&lt;br /&gt;&lt;blockquote&gt;不管男生女生，如果其中一边一开始对另一边宠爱到不行，时间一久，会产生一种后果：&lt;br /&gt;&lt;br /&gt;1、宠人的一方会受不了，就像你讲的，人也有脾气和忍耐极限。&lt;br /&gt;2、被宠的一方长期下来会被“宠习惯”，他会认为“这已经是应该的”。&lt;br /&gt;&lt;br /&gt;所以当你受不了，开始出现“反抗”，他就会认为“你跟天下所有男人一样，对女人都是会变差的！”&lt;br /&gt;&lt;br /&gt;而不会先去思考“这样到底对不对”。&lt;br /&gt;&lt;br /&gt;讲了一堆废话，总之，人是会被宠坏的。&lt;br /&gt;你们需要的是平心静气认真沟通，尝试回到一个平衡点。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;不错，习惯一点养成，就会成为惯例，不管这个习惯本身是好是坏。从这点可以看到，教导小孩子是一件多么重要的事情。昨天坐火车，就看到了一些被惯坏的孩子，本来打扮的很可爱，可却一点礼貌的没有，让人很讨厌。&lt;br /&gt;&lt;br /&gt;当然，如何处理好与女朋友的关系，在这一点上也是需要我们严肃对待的，呵呵。我是不愿意让爱人受委屈的那种，看来这方面也要提前做一些心理准备了，免得到头来害人害己。&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/习惯 rel=tag&gt;习惯&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112106883112082726?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112106883112082726/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112106883112082726' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112106883112082726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112106883112082726'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/blog-post.html' title='闲话习惯'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112066220317068065</id><published>2005-07-06T22:53:00.001+08:00</published><updated>2005-07-23T17:48:38.726+08:00</updated><title type='text'>Debian Apt 的 public key 验证</title><content type='html'>最近两天想装blackdown java，谁成想apt-get update的时候告诉我gpg没有找到public key？！以前怎么没有见过这个提示？纳闷之余，查了一下，还真有apt-key这个命令，以前倒是一直没有注意过。到狗狗上查了一下，找到了解决办法，给root加上第三方的key就好，如此这般就行了：&lt;br /&gt;&lt;blockquote&gt;gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 529B8BDA&lt;br /&gt;gpg --armor --export 529B8BDA | sudo apt-key add -&lt;/blockquote&gt;&lt;br /&gt;其中，529B8BDA是报错时，提示没有找到的那个key的sign。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112066220317068065?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112066220317068065/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112066220317068065' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112066220317068065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112066220317068065'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/debian-apt-public-key_06.html' title='Debian Apt 的 public key 验证'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-112066152022278853</id><published>2005-07-06T22:47:00.000+08:00</published><updated>2005-07-06T22:52:00.226+08:00</updated><title type='text'>好久没写blog，上来喘口气</title><content type='html'>好不容易积攒了一点兴致，想来写一点感言，谁想半截Firefox不给劲，直接core dump了！晕。看来不是写长篇的料，干脆拉倒。剩下的日子，就盼着Firefox1.1赶紧出了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-112066152022278853?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/112066152022278853/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=112066152022278853' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112066152022278853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/112066152022278853'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/07/blog.html' title='好久没写blog，上来喘口气'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111838314692870084</id><published>2005-06-10T13:57:00.000+08:00</published><updated>2005-06-10T13:59:06.936+08:00</updated><title type='text'>现代版孔乙己</title><content type='html'>&lt;p&gt;　　鲁镇的bar的风格，跟别的地方是不一样的：都是当街一个原木的大吧台，吧台里面放着大桶的冰块。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　正如传闻中所说：“啤酒不冰的真难喝！”所以冰块对于一个bar来说，就好像拉面摊上的辣酱那么重要。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　出来打工的蓝领白领，在朝九晚五之后，每每花四块钱，买一扎啤酒——这是二十多年前的事，现在每扎要涨到十块——靠吧台外站着，凉凉地边喝边休息；要是肯多花一块，就能买一碟鱿鱼丝，或者开心果，做下酒物了；如果出到十几块，那就能买一样荤菜。但这些顾客，多半是蓝领帮，大抵没有这样阔绰。只有当白领的，才踱进店面隔壁的包间，开一瓶路易十四，用高脚杯斟了慢慢地喝。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我从十二岁起，便在镇口的咸亨bar里当差。正如品酒达人常说的那样：“酒醒了，可以喝了。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　所以像我这样永远都一副睡不醒样子的人，是不能去倒红酒的。掌柜说，我这种大脑冻住的伙计，怕伺候不了白领主顾，就在外头倒扎啤吧。外面的蓝领主顾，虽然容易说话，但唠唠叨叨夹缠不清的也很不少。他们往往要看着扎啤从桶子里倒出，看过杯底有水没有，又亲眼盯着将冰块放进杯子里，然后才放心——在这严格监督下，掺水也很难的。不过啤酒还在桶里的时候就已经掺过水了，不晓得再掺一次还有什么必要。但是掌柜的说我眼神不好，每次倒啤酒的时候都高出标准线零点零一公分，倒一千杯就得高出十公分，倒一万杯就得高出整整一米——这样让我倒下去一定会把他的bar败掉，所以倒扎啤这件事我也干不了。幸亏我在这条街上有人罩着，辞退不得，便改为专管往啤酒里加冰块的无聊职务了。养一个专往啤酒里加冰块的人那可比多倒零点零一公分的啤酒花钱多了，我都不晓得掌柜是怎么算这笔账的。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我从此便整天地站在吧台里，专司我的职务。虽然没有什么失职，但总觉得有些单调，有些无聊。掌柜是一副凶脸孔，主顾也没有好声气，无聊时Hip-Hop一把也会被掌柜教训。只有孔乙己到店，才可以笑几声，所以至今还记得。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己是喝扎啤而穿白领衬衫的惟一的人。他身材很高大，青白脸色，皱纹间时常夹些伤痕，一部乱蓬蓬的花白goatee。他穿的那件白领衬衫，简直就是野兽派作品，让人一见之下就感觉脑袋嗡嗡直响，而且有股子异味直冲脑门——古往今来任何一幅伟大作品都做不到后一点。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　从这件衬衫上我们可以看出孔乙己曾经从事过的行业，共计有：大排档里帮厨的，油漆小工，替人遛狗的宠物保姆，往电线杆子上写“办证： XXXXXXXX”的街头涂鸦艺人，等等。之所以还有等等一项，是因为衬衫上的某些遗迹过于诡异，实在考证不出其历史渊源。孔乙己对人说话，总是满口计算机专业术语，算法线程的，教人听了就想当机。因为他姓孔，又常说自己早年去过日本，潜心研究过任天堂八位家庭游戏机的编程，并且自封为超人气纯情恋爱游戏《你好！翼手龙妹妹》的世界最佳通关记录保持者，所以大家就从日语“你好”(こんにちは ，读音如kon-ni-ji-wa) 这个词中，替他取下一个绰号，叫做孔乙己。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己一到店，所有喝酒的人便都看着他笑，有的叫道：“孔乙己，你脸上又添上新伤疤了！在模仿浪客剑心么？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　他不回答，对吧台里说：“两扎啤酒，要一碟开心果。”便排出九元人民币，红彤彤的一长溜。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　他们又故意高声地嚷道：“你一定又偷了人家的东西了！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己睁大眼睛说：“你怎么这样凭空污人清白！我保留告你诽谤的权利！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“什么清白？我前天亲眼见你偷了何家的光盘，被人爆了气发超杀打到三十二连斩！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己便涨红了脸，额上的青筋条条绽出，争辩道：“窃光盘不能算偷……光盘！CDRom!这叫做资源共享……IT界的事，能算偷么？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　接着便是难懂的话，什么“君子固穷，有所穷有所不穷”，什么“盗版盘，两块三，想买正版没有钱”，什么“开放源码是大势所趋”，什么“Open Source”之类，引得众人都哄笑起来：店内外充满了快活的空气。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　听大家背地里谈论，孔乙己原来也学过计算机，但终于没有通过程序员等级考试，又搞不到风险投资，开不了公司，于是愈过愈穷，弄到将要讨饭了。幸而还会鼓捣电脑，便替人家修修机器，重装重装系统，换一碗饭吃。可惜他又有一样坏脾气，便是好吃懒做。主人家一不留神，便连人和光盘电脑，一齐失踪。如是几次，叫他修电脑的人也没有了。孔乙己没有法，便免不了偶然做些刻章办证卖盗版盘的事。但在我们店里，品行却比别人都好，就是从不拖欠；虽然偶尔没有现钱，暂时记在“多给小费人人赞，欠钱不还冚家铲”的粉板上，但不出一月，定然还清，从粉板上拭去了孔乙己的名字——要是过了一个月就会变成红名，进入任何一个酒吧都会立刻遭到酒保的攻击。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己喝过半扎啤酒，涨红的脸色渐渐复了原，旁人便又问道：“孔乙己，你当真会写程序么？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己看着问他的人，显出不屑置辩的神气。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　他们便接着说道：“你怎么连个微软认证都考不到呢？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己立刻显出颓唐不安模样，脸上笼上了一层灰色，嘴里说些话，这回可是全是十六进制编码，一些不懂了。在这时候，众人都哄笑起来：店内外充满了快活的空气。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　在这些时候，我可以附和着笑，掌柜是决不责备的。而且掌柜见了孔乙己，也每每这样问他，引人发笑。孔乙己自己知道不能和他们谈天，便只好向孩子说话。有一回对我说道：“你学过电脑么？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我略略点一点头。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;他说：“学过电脑？！我便考你一考：windows的扫雷，怎样玩的？”&lt;br /&gt;&lt;br /&gt;　　我想，讨饭一样的人，也配考我么？便转过脸去，不再理会。孔乙己等了许久，很恳切地说道：“不能玩罢？我教给你，记着！windows的扫雷那是入门基本功，可以锻炼手眼配合能力和逻辑思维能力。尤其是初学者，通过玩扫雷，可以迅速提高鼠标操作水平，练好了这个，以后再去玩星际魔兽这些需要微操作的游戏，进步就很快啦！说到微操作呢，这可是我的强项——在战网上他们都叫我快手小甜甜，因为我的按键速度比正常人高出百分之二十五以上！这就要感谢我灵活的右脚了，要不是键盘上放不下，我连左脚都能用上。这样一来又可以快上至少百分之二十……”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　想到孔乙己三十载陈年的香港脚在键盘上按来按去，我不禁全身寒颤了一下，下定决心以后去网吧得用酒精棉花擦一遍键盘先。孔乙己见我面露惧色，误以为我是被他唬住了，于是起劲地说下去：“扫雷这样的游戏可得花大力气学习。这都是基础呀！windows的基本操作！基本操作应该记着。将来进入信息时代的时候，干什么不得用电脑？以后你去网上菜场买二两猪肉，老板切好了就打个包给你QQ上传过来了……”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我暗想，现在才二十一世纪初，这信息时代可还早着呢，而且我买猪肉从来都不买二两的——我家爱吃猪头肉，每回都是买的整猪头，加了酱油、茴香、桂皮，焖得烂烂的端上桌来——放到桌上，那猪头看起来还是慈眉善目笑吟吟的呢。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　听孔乙己在那边絮絮叨叨说个不停，我又好笑，又不耐烦，只好懒懒地答他道：“扫雷还要你教，随便玩玩我也十秒之内就搞定了，这么弱智的游戏，还好意思在公开场合拿来说！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己显得极高兴的样子，用两个指头的长指甲敲着吧台，点头说：“Good！Smart&lt;br /&gt;boy！我看你也很有潜力的了。不过windows的扫雷有三种难度级别，你都玩过么？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我愈不耐烦了，假装掌柜的找我有事，赶紧闪开。孔乙己刚用指甲蘸了酒，想在吧台上画图，见我咻一下消失在人群里，便又叹一口气，显出极惋惜的样子。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　有几回，邻居孩子听得笑声，也赶热闹，围住了孔乙己。他便给他们开心果吃，一人一颗。孩子们拿了开心果，剥开壳一口吃掉，然后把壳纷纷地往孔乙己头上丢，说道：“一颗开心果就想打发我们？打发要饭的也嫌寒碜！伤自尊了！这事非用钱解决不可！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己着了慌，把两个兜都翻出来，说：“没钱了，我已经没钱了。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　于是孩子们一拥而上，把他摁倒在地上，脱下他一双开壳掉线的MIKE鞋，从鞋垫里掏出一沓一块钱来，一人买一大把开心果。孔乙己灰头土脸地从地上爬起来，穿上鞋子，自己摇头说：“风吹鸡蛋壳，财去人安乐。好诗！好诗！”于是这一群孩子都在笑声里走散了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己是这样的使人快活，可是没有他，别人也便这么过。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　有一天，大约是中秋前的两三天，掌柜正在慢慢地结账，取下粉板，忽然说，“孔乙己长久没有来了。还欠十九块钱呢！”我这才觉得他的确长久没有来了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　一个喝酒的人说道，“他怎么会来？他……他生活不能自理啦。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　掌柜说，“哦！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“他总仍旧是偷。这一回，是自己发昏，竟偷到丁举人家里去了。他家的电脑，偷得的吗？丁举人家那台可是银河三代巨型机，占地得有二百来平方米，孔乙己在那儿看四下里无人想搬机器……”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“好几吨重的机器他也想搬？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“他拿了个不锈钢汤勺在那儿拆螺丝，还没拆下两个来就让人逮到了。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“后来怎么样？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“怎么样？先写了检讨书，后来是打，打了大半夜，还是没打出来。”“没打出来？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“是啊，他早就不会提笔写字了，检讨书也是用电脑写。写完了还得拿打印机打出来，丁家那打印机本来有点儿小问题，让孔乙己上去一修，干脆就修成碎纸机了。这可不是讨打么？丁家五位公子轮番上阵，单刀，双节棍，三叉戟，四条腿的板凳，五年陈的绍兴老酒……”“老酒也行？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“哦，是老酒坛子。那五位公子可着实了得，先把孔乙己打到防御不能，再打到浮空，落地后再追加攻击，打了整整三个回合，终于打了个生活不能自理。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“后来呢？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“后来生活不能自理了。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“不能自理了又怎样呢？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“怎样？谁晓得？！大概是送医学院被人研究去了。”掌柜也不再问，仍然慢慢地算他的账。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　中秋之后，秋风是一天凉比一天，看看将近初冬；我整天的靠着空调，也需穿上南极人保暖内衣了。一天的下半天，没有一个顾客，我正趴在吧台上留着哈喇子打盹。忽然间听得一个声音：“来一扎啤酒。”这声音虽然极低，却很耳熟。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　看时又全没有人，我心慌慌以为自己幻听，还好站起来向外一望，看到那孔乙己便在吧台下对了门槛坐着。他脸上黑而且瘦，已经不成样子；穿一件千疮百孔渔网式小夹袄，盘着两条腿，下面垫一个蒲包，用草绳在肩上挂住；见了我，又说道：“来一扎啤酒。”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　掌柜也伸出头去，一面说，“孔乙己么？你还欠十九块钱呢！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;孔乙己很颓唐地仰面答道：“这……下回还清罢。这一回是现钱，酒要好。来常温的就行，别加冰块，这几天有点儿闹肚子。”&lt;br /&gt;&lt;br /&gt;　　掌柜仍然同平常一样，笑着对他说：“孔乙己，你又偷了东西了！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　但这回他却不十分分辩，单说了一句：“不要取笑！”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　“取笑？要是不偷，怎么会打断腿？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己一下子站了起来说，“断腿？谁断腿啦？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　他来了一个急停跳投，起跳后大幅后仰，姿态十分优美。掌柜大喊一声：“米高佐敦！”——他是他的扇子——眼看着孔乙己“扑通”一声后臀落地，忍不住问道：“腿没断，你垫个蒲团干嘛？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　孔乙己站起来拍拍裤子，低声说道：“扮成残疾人，比较容易要到钱，唉！经济不景气，各行各业都受影响。”他的眼神，很像恳求掌柜，不要继续追问。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　此时已经聚集了几个人，便和掌柜都笑了。我倒了酒，端出去，放在门槛上。他从破衣袋里摸出四个一块钱的钢镚儿来，放在他手里，见他满手是泥，原来他便用这手走来的。掌柜也看见了，教训我说：“看到了没有？这就是我说的，专业！扮腿断扮到这份儿上，跟真的断了腿还有什么区别？”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我只好点头称是。不一会儿，他喝完了酒，便又在旁人的说笑声中，坐着用这手慢慢走去了。掌柜看着他远去的背影，自言自语说道：“下回在地铁里看到断腿的乞丐，我可得留神了。”我不晓得他有什么好留神的，因为他从没给过任何一个乞丐哪怕一毛钱。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　自此以后，又长久没有看见孔乙己。到了年关，掌柜取下粉板说，“孔乙己还欠着十九块钱呢！就这么点儿钱，还真不值得让讨债公司去找他！”到了第二年的端午，又说“孔乙己还欠着十九个钱呢！利滚利的也得有小一百了吧？”到中秋可是没有说，再到年关也没有看见他。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　我到现在终于没有见——大约孔乙己的确是送医学院被人研究去了。&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/改编 rel=tag&gt;改编&lt;/a&gt; &lt;a href=http://technorati.com/tag/小说 rel=tag&gt;小说&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111838314692870084?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111838314692870084/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111838314692870084' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111838314692870084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111838314692870084'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/06/blog-post_10.html' title='现代版孔乙己'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111828094931146420</id><published>2005-06-09T09:24:00.000+08:00</published><updated>2005-06-09T09:49:11.356+08:00</updated><title type='text'>等爱的狐狸</title><content type='html'>&lt;p&gt;“我不能跟你玩。”狐狸说，“我还没有被驯养。” &lt;br /&gt;&lt;br /&gt;“对我来说，你还只是一个小男孩，就像其他千万个小男孩一样。我不需要你。你也同样用不着我。对你来说，我也不过是一只狐狸，和其他千万只狐狸一样。但是，如果你驯服了我，我们就互相不可缺少了。对我来说，你就是世界上唯一的了；我对你来说，也是世界上唯一的了。&lt;br /&gt;&lt;br /&gt;“驯养，就是建立某种联系……” &lt;br /&gt;&lt;br /&gt;“我的生活很单调。我捕捉鸡，而人又捕捉我。所有的鸡全都一样，所有的人也全都一样。因此，我感到有些厌烦了。但是，如果你要是驯服了我，我的生活就一定会是欢快的。我会辨认出一种与众不同的脚步声。其他的脚步声会使我躲到地下去，而你的脚步声就会象音乐一样让我从洞里走出来。再说，你看！你看到那边的麦田没有？我不吃面包，麦子对我来说，一点用也没有。我对麦田无动于衷。而这，真使人扫兴。但是，你有着金黄色的头发。那么，一旦你驯服了我，这就会十分美妙。麦子，是金黄色的，它就会使我想起你。而且，我甚至会喜欢那风吹麦浪的声音……”&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;--《&lt;a href="http://www.fairydream.net/html/littleprince/"&gt;小王子&lt;/a&gt;》&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/童话 rel=tag&gt;童话&lt;/a&gt; &lt;a href=http://technorati.com/tag/小王子 rel=tag&gt;小王子&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111828094931146420?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111828094931146420/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111828094931146420' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111828094931146420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111828094931146420'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/06/blog-post.html' title='等爱的狐狸'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111608809531039722</id><published>2005-05-15T00:14:00.000+08:00</published><updated>2005-05-18T22:09:14.440+08:00</updated><title type='text'>第1期维基读本正式发行</title><content type='html'>&lt;p&gt;中文版的第一期&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E7%BB%B4%E5%9F%BA%E8%AF%BB%E6%9C%AC" title="Wikipedia:维基读本"&gt;维基读本&lt;/a&gt;出版了！它收录了2005年1月-3月我们在条目上的重大进展，其中包括两篇&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E7%89%B9%E8%89%B2%E6%9D%A1%E7%9B%AE" title="Wikipedia:特色条目"&gt;特色条目&lt;/a&gt;（&lt;a href="http://zh.wikipedia.org/wiki/%E6%B1%89%E5%AD%97" title="汉字"&gt;汉字&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E5%A1%94" title="塔"&gt;塔&lt;/a&gt;），1篇&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E6%9D%A1%E7%9B%AE%E8%B4%A8%E9%87%8F%E6%8F%90%E5%8D%87%E8%AE%A1%E5%88%92" title="Wikipedia:条目质量提升计划"&gt;质量提升计划&lt;/a&gt;完成较好的条目（&lt;a href="http://zh.wikipedia.org/wiki/%E4%B8%8D%E5%B9%B3%E7%AD%89%E6%9D%A1%E7%BA%A6" title="不平等条约"&gt;不平等条约&lt;/a&gt;），以及&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E6%AF%8F%E5%91%A8%E7%BF%BB%E8%AF%91" title="Wikipedia:每周翻译"&gt;每周翻译&lt;/a&gt;计划中已经全部完成翻译的8篇条目（&lt;a href="http://zh.wikipedia.org/wiki/%E5%A4%A7%E7%86%8A%E7%8C%AB" title="大熊猫"&gt;大熊猫&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E7%91%B0%E7%91%AA%E9%87%91%E5%AD%97%E5%A1%94" title="瑰玛金字塔"&gt;瑰玛金字塔&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E5%91%BC%E9%BA%A6" title="呼麦"&gt;呼麦&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E9%BA%A6%E7%BA%B3%E9%BA%A6" title="麦纳麦"&gt;麦纳麦&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E4%B8%89%E6%9B%B2%E8%85%BF%E5%9B%BE" title="三曲腿图"&gt;三曲腿图&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E4%BD%AC%E6%97%8F" title="佬族"&gt;佬族&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E6%8B%89%E6%99%AE%E5%85%B0%E6%88%98%E5%BD%B9" title="拉普兰战役"&gt;拉普兰战役&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E7%BA%B8%E9%A3%9E%E6%9C%BA" title="纸飞机"&gt;纸飞机&lt;/a&gt;）。&lt;/p&gt;&lt;p&gt;目前还无法提供任何印刷版的刊物供读者订阅。如果您有任何相关讯息或者建议、帮助，请在&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia_talk:%E7%BB%B4%E5%9F%BA%E8%AF%BB%E6%9C%AC" title="Wikipedia talk:维基读本"&gt;Wikipedia talk:维基读本&lt;/a&gt;处提出。&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;下载&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://zh.wikipedia.org/wiki/PDF" title="PDF"&gt;PDF&lt;/a&gt;：&lt;a href="http://upload.wikimedia.org/wikipedia/zh/9/91/WikiReader_zh_vol-1.pdf" title="WikiReader zh vol-1.pdf"&gt;WikiReader zh vol-1.pdf&lt;/a&gt;(1.99 MB)&lt;/li&gt;&lt;li&gt;&lt;a href="http://zh.wikipedia.org/wiki/OpenOffice.org" title="OpenOffice.org"&gt;OpenOffice.org&lt;/a&gt;：&lt;a href="http://upload.wikimedia.org/wikipedia/zh/5/5d/WikiReader_zh_vol-1.sxw" title="WikiReader zh vol-1.sxw"&gt;WikiReader zh vol-1.sxw&lt;/a&gt;(2.21 MB)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;本期维基读本是繁简体混合的。&lt;/p&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/维基百科 rel=tag&gt;维基百科&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111608809531039722?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111608809531039722/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111608809531039722' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111608809531039722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111608809531039722'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/05/1.html' title='第1期维基读本正式发行'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111452488943348491</id><published>2005-04-26T22:10:00.000+08:00</published><updated>2005-04-26T22:19:38.553+08:00</updated><title type='text'>让我们把google玩出更多新花样吧</title><content type='html'>&lt;a href="http://www.weavedigital.com/guess-the-google/"&gt;GUESS-the-GOOGLE!&lt;/a&gt; flash的猜词小游戏，还有高分榜的哦。&lt;br /&gt;&lt;br /&gt;更新：刚玩了一局，得了254分。似乎都是常用的单词，只要认真玩肯定能得不少分的 :)&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/google rel=tag&gt;google&lt;/a&gt; &lt;a href=http://technorati.com/tag/flash rel=tag&gt;flash&lt;/a&gt; &lt;a href=http://technorati.com/tag/image rel=tag&gt;image&lt;/a&gt; &lt;a href=http://technorati.com/tag/game rel=tag&gt;game&lt;/a&gt; &lt;a href=http://technorati.com/tag/fun rel=tag&gt;fun&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111452488943348491?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111452488943348491/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111452488943348491' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111452488943348491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111452488943348491'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/google_26.html' title='让我们把google玩出更多新花样吧'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111413755863836493</id><published>2005-04-22T10:33:00.000+08:00</published><updated>2005-04-22T10:46:07.223+08:00</updated><title type='text'>IE真的很烦</title><content type='html'>找到我的blog在IE里显示白板一块的原因了，原来是我utf8编码的blog名称造成IE水土不服。只要我的html代码里还有“&amp;lt;title&amp;gt;举头望明月&amp;lt;/title&amp;gt;”，IE就不能正常显示。只好改名了。恼火的是，在firefox里显示很好的css布局，原来在IE里也会不太正常。唉，有时间再改吧。&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/IE rel=tag&gt;IE&lt;/a&gt; &lt;a href=http://technorati.com/tag/utf8 rel=tag&gt;utf8&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111413755863836493?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111413755863836493/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111413755863836493' title='7 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111413755863836493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111413755863836493'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/ie.html' title='IE真的很烦'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111390920665152223</id><published>2005-04-19T19:08:00.000+08:00</published><updated>2005-04-19T19:13:26.653+08:00</updated><title type='text'>纪念爱因斯坦</title><content type='html'>今年，验证引力波的&lt;a href="http://einstein.phys.uwm.edu/"&gt;Einstein@Home&lt;/a&gt;工程启动了；今天（4月19日），为了&lt;a href="http://210.72.10.14:8080/221/2005_4_19/221_639_1113901349191.html"&gt;纪念爱因斯坦&lt;/a&gt;，全球范围的“&lt;a href="http://www.news365.com.cn/xwzx/shxw/t20050419_474131.htm"&gt;光传递&lt;/a&gt;”活动也已经开始。&lt;br /&gt;&lt;br /&gt;不管人们如何评判爱因斯坦，他对现代物理与现代社会的影响都是无以伦比的；就让“&lt;a href="http://www.wyp2005.at/glob1-light.htm"&gt;物理照亮世界&lt;/a&gt;”吧。&lt;br /&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/爱因斯坦 rel=tag&gt;爱因斯坦&lt;/a&gt; &lt;/span&gt;&lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/纪念 rel=tag&gt;纪念&lt;/a&gt; &lt;/span&gt;&lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/Einstein rel=tag&gt;Einstein&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111390920665152223?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111390920665152223/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111390920665152223' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111390920665152223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111390920665152223'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post_19.html' title='纪念爱因斯坦'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111380674635136987</id><published>2005-04-18T14:06:00.000+08:00</published><updated>2005-04-18T14:45:46.353+08:00</updated><title type='text'>又一个测试</title><content type='html'>还是那个16人格的测试，不过是另外一种测法。多&lt;a href="http://www.chinahrd.net/renliziyuan_yjh/qu_MBTI.asp"&gt;测试&lt;/a&gt;一些，就多了解自己一些 :)&lt;br /&gt;&lt;pre&gt;您的人格类型是： ISTJ （内向，感觉，思维，判断）&lt;br /&gt;&lt;br /&gt;您的工作中的优势：&lt;br /&gt;　　◆ 办事精确，希望第一次就能把工作做好&lt;br /&gt;　　◆ 乐意遵循确定的日常安排和传统的方针政策&lt;br /&gt;　　◆ 每次都能十分专注地把注意力集中在一个项目或者任务上&lt;br /&gt;　　◆ 能够独立工作&lt;br /&gt;　　◆ 灵敏地组织能力&lt;br /&gt;　　◆ 一丝不苟，认真专注地对待具体问题，事实和细节&lt;br /&gt;　　◆ 相信传统地可取之处，并且能够遵循传统模式&lt;br /&gt;　　◆ 非常强的责任意识，别人可以信任你实现自己的诺言&lt;br /&gt;　　◆ 明白清晰的工作伦理，认为高效率和多成果是很重要的&lt;br /&gt;　　◆ 对实现目标有毅力和决心&lt;br /&gt;　　◆ 通情达理，视角现实&lt;br /&gt;&lt;br /&gt;您工作中可能存在的不足：&lt;br /&gt;　　◆ 不愿意尝试新的、没有经过考验的观点和想法&lt;br /&gt;　　◆ 对变动感到不安，排斥变革&lt;br /&gt;　　◆ 对需要很长时间才能完成的项目和任务缺乏耐心&lt;br /&gt;　　◆ 有时会因为近期目标而忽略长远需要&lt;br /&gt;　　◆ 办事死板，必要的时候难以事情新情况&lt;br /&gt;　　◆ 难以看到问题的整体以及行为的长远影响&lt;br /&gt;　　◆ 对于方针或者决定对别人造成的影响缺乏敏感性&lt;br /&gt;　　◆ 需要的时候不愿意改变努力的方向或者调整投入的多少&lt;br /&gt;　　◆ 不愿意促成必要的改变，也不愿意支持经过仔细考虑的风险行为&lt;/pre&gt;&lt;br /&gt;&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/测验 rel=tag&gt;测验&lt;/a&gt; &lt;/span&gt;&lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/自己 rel=tag&gt;自己&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111380674635136987?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111380674635136987/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111380674635136987' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111380674635136987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111380674635136987'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post_18.html' title='又一个测试'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111312903048063972</id><published>2005-04-10T18:11:00.000+08:00</published><updated>2005-04-10T18:30:30.483+08:00</updated><title type='text'>控制台下，python的自动完成功能</title><content type='html'>继承unix like系统的优良传统，&lt;a href="http://www.python.org"&gt;python&lt;/a&gt;也拥有强劲的&lt;a href="http://docs.python.org/lib/module-readline.html"&gt;readline模块&lt;/a&gt;（只在UNIX类系统中才能使用），可以很轻松的实现自动完成的功能。下面是我的一些设置：&lt;br /&gt;&lt;pre&gt;0$ env | grep python&lt;br /&gt;PYTHONSTARTUP=/home/xyb/.pythonstartup.py&lt;br /&gt;PYTHONPATH=/home/xyb/.python:/home/xyb/py:./&lt;br /&gt;0$ cat ~/.pythonstartup.py&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;# Last modified: 2004年11月11日 星期四 10时50分39秒 [xyb]&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import LazyPython&lt;br /&gt;sys.excepthook = LazyPython.LazyPython()&lt;br /&gt;del sys, LazyPython&lt;br /&gt;&lt;br /&gt;# Add auto-completion and a stored history file of commands to your Python&lt;br /&gt;# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is&lt;br /&gt;# bound to the Esc key by default (you can change it - see readline docs).&lt;br /&gt;#&lt;br /&gt;# Store the file in ~/.pystartup, and set an environment variable to point&lt;br /&gt;# to it:  "export PYTHONSTARTUP=/max/home/itamar/.pystartup" in bash.&lt;br /&gt;#&lt;br /&gt;# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the&lt;br /&gt;# full path to your home directory.&lt;br /&gt;&lt;br /&gt;import atexit&lt;br /&gt;import os&lt;br /&gt;import readline&lt;br /&gt;import rlcompleter&lt;br /&gt;&lt;br /&gt;readline.parse_and_bind('tab: complete')&lt;br /&gt;&lt;br /&gt;historyPath = os.path.expanduser("~/.pyhistory")&lt;br /&gt;&lt;br /&gt;def save_history(historyPath=historyPath):&lt;br /&gt;    import readline&lt;br /&gt;    readline.write_history_file(historyPath)&lt;br /&gt;&lt;br /&gt;if os.path.exists(historyPath):&lt;br /&gt;    readline.read_history_file(historyPath)&lt;br /&gt;&lt;br /&gt;atexit.register(save_history)&lt;br /&gt;del os, atexit, readline, rlcompleter, save_history, historyPath&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;首先，要有PYTHONSTARTUP环境变量，它会帮助python找到启动时要自动运行的脚本。如果你和我一样使用bash，可以把它直接放到bash的启动脚本.bashrc中：&lt;br /&gt;&lt;pre&gt;export PYTHONSTARTUP=~/.pythonstartup.py&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;其次，要把readline的相关功能放到python启动脚本中，上面的脚本中readline.parse_and_bind('tab: complete')这一句就就是做的这个工作。另外，脚本还加载了其它一些有用的功能，大家可以自己查资料。这个启动脚本也可以从这里&lt;a href="files/pythonstartup.py" title="python启动时加载脚本"&gt;下载&lt;/a&gt;，请大家按照自己的需要进行修改。&lt;br /&gt;&lt;br /&gt;有了这些设置，我们就可以按Tab键来让readline帮我们自动完成了。如果连按两次Tab键，则会把所有匹配的自动列出来：&lt;br /&gt;&lt;pre&gt;0$ python&lt;br /&gt;Python 2.3.5 (#2, Mar 26 2005, 17:32:32)&lt;br /&gt;[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;Welcome to Lazy Python.  Type "help LazyPython" for help.&lt;br /&gt;&gt;&gt;&gt; import types&lt;br /&gt;&gt;&gt;&gt; types.&lt;br /&gt;types.BooleanType          types.ObjectType&lt;br /&gt;types.BufferType           types.SliceType&lt;br /&gt;types.BuiltinFunctionType  types.StringType&lt;br /&gt;types.BuiltinMethodType    types.StringTypes&lt;br /&gt;types.ClassType            types.TracebackType&lt;br /&gt;types.CodeType             types.TupleType&lt;br /&gt;types.ComplexType          types.TypeType&lt;br /&gt;types.DictProxyType        types.UnboundMethodType&lt;br /&gt;types.DictType             types.UnicodeType&lt;br /&gt;types.DictionaryType       types.XRangeType&lt;br /&gt;types.EllipsisType         types.__class__&lt;br /&gt;types.FileType             types.__delattr__&lt;br /&gt;types.FloatType            types.__dict__&lt;br /&gt;types.FrameType            types.__doc__&lt;br /&gt;types.FunctionType         types.__file__&lt;br /&gt;types.GeneratorType        types.__getattribute__&lt;br /&gt;types.InstanceType         types.__hash__&lt;br /&gt;types.IntType              types.__init__&lt;br /&gt;types.LambdaType           types.__name__&lt;br /&gt;types.ListType             types.__new__&lt;br /&gt;types.LongType             types.__reduce__&lt;br /&gt;types.MethodType           types.__reduce_ex__&lt;br /&gt;types.ModuleType           types.__repr__&lt;br /&gt;types.NoneType             types.__setattr__&lt;br /&gt;types.NotImplementedType   types.__str__&lt;br /&gt;&gt;&gt;&gt; types.F&lt;br /&gt;types.FileType      types.FrameType&lt;br /&gt;types.FloatType     types.FunctionType&lt;br /&gt;&gt;&gt;&gt; types.F&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111312903048063972?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111312903048063972/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111312903048063972' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111312903048063972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111312903048063972'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/python.html' title='控制台下，python的自动完成功能'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111311218941763693</id><published>2005-04-10T13:40:00.000+08:00</published><updated>2005-04-10T13:49:49.416+08:00</updated><title type='text'>在我目力所及的地方，看到了游行的效果</title><content type='html'>今天中午去中芯大厦吃午饭，走到楼下，一抬头，发现昨天我们抗议的那个canon广告牌已经变成了光秃秃的一片，还有几个工人在收拾作业工具：看来抗议起效了，可喜可贺！可惜我今天又没有带相机。&lt;br /&gt;&lt;br /&gt;一位朋友谈起，如果我们在抵制日货方面，能促使日本厂商有所动作，去游说／施压给日本政府，说不定会有一定的效果。这在逻辑上能说通，但我还是有点怀疑效果究竟能有多大。但有希望总比没希望好：日本政府如果继续保持这种对亚洲国家的姿态，中、韩的民众情绪是不可能有缓和的机会的，早晚得让日本人吃下自己的苦果：这对大家都不是什么好事，何苦呢。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111311218941763693?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111311218941763693/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111311218941763693' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111311218941763693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111311218941763693'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post_111311218941763693.html' title='在我目力所及的地方，看到了游行的效果'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111310950162751332</id><published>2005-04-10T12:59:00.000+08:00</published><updated>2005-04-10T13:05:01.626+08:00</updated><title type='text'>评《血酬定律：中国历史中的生存游戏》</title><content type='html'>&lt;div style="align:right;float: right;"&gt;&lt;a href="http://douban.com/subject/1006560/"&gt;&lt;img src="http://douban.com/mpic/s1068326.jpg" title="《血酬定律：中国历史中的生存游戏》" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;我不是一个社会学研究者，也不知道&lt;a href="http://douban.com/subject/1006560/" title="《血酬定律：中国历史中的生存游戏》"&gt;这本流行书籍&lt;/a&gt;还能不能称作研究、做学问的著作，更不能评判书中的种种观点是否具有学术价值；但在字里行间，让我感觉到，就象古龙笔下冷静至极的武林高手，作者以笔为刀，解剖着古代中国社会弱肉强食的竞争。当种种令人发指的罪行被解构，成为在特定环境下必然的行动纲领，并被人们代代相传下去，联想到书名，我不禁不寒而栗。希望有了这本书，人们可以找到打破这所谓“定律”的方法，而不是把他奉为至典，就象那本臭名昭著的《厚黑学》。&lt;br /&gt;&lt;br /&gt;另载于：&lt;a href="http://douban.com/people/1000070/review/1000138/"&gt;豆瓣评论&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111310950162751332?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111310950162751332/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111310950162751332' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111310950162751332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111310950162751332'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post_10.html' title='评《血酬定律：中国历史中的生存游戏》'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111304155117009552</id><published>2005-04-09T17:44:00.000+08:00</published><updated>2005-04-09T18:12:31.170+08:00</updated><title type='text'>大风起兮</title><content type='html'>最近总是感觉缓不过精神头来，今天早晨蒙头大睡。睡到了11点，差不多了，赶紧起来，问了一下另外一哥们儿，原来大家都是只知道游行这事，但谁也不知道具体时间。&lt;br /&gt;&lt;br /&gt;吃过早饭兼午饭，顶着今年春天的第一场大风往公司赶。路上还和一哥们儿说一会儿去海龙看看情况来着，谁知道刚进了办公室没坐稳当，就听见楼下面隐隐传来口号的声音。放下了钱包、PDA，拿好身份证，赶紧和两个同事下楼，加入进去。喊了几句口号，又唱了一遍国歌，就来到了中芯大厦的楼下。这时我就有点儿感觉，这下午的行动看起来更象是率性而为。跑到中芯大厦低下对着一块巨高的canon广告牌喊口号，要求10分钟拆了。我和同事在楼下郁闷的看着六层楼高的广告牌子，怎么觉得都不太靠谱，没有什么可操作性呀。看来还是有点盲目了，也没什么威慑作用；喊了半天之后，大家终于认识到，大楼的人根本就不鸟你，这时似乎有人发现海龙的墙上也挂着一块sony的牌子，大家又移动，准备再换一个地方继续喊口号。待堵在门口的＃Ｘ也都离开了，赫然发现中芯的玻璃门禁闭，链锁把门；这还不算，里面密密麻麻的一堆保安是站的整整齐齐，呵呵，都来列队“欢迎”了。&lt;br /&gt;&lt;br /&gt;回来之后，有同事说上午9点活动已经开始了，当时就有人在海龙门口烧国旗来着；可惜没有多准备几面，应该每隔两个小时拿出一个来烧一烧才有气氛。&lt;br /&gt;&lt;br /&gt;参加这种活动，虽然自己也有一个数码相机，但那是canon的，这场合怎么好意思拿出来呢？唉，谁知道，到现场一看，围了一堆人噼噼啪啪的拍照片，没几个不是用的日本的相机、摄影机！这都怎么回事呀？！郁闷。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111304155117009552?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111304155117009552/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111304155117009552' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111304155117009552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111304155117009552'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post_09.html' title='大风起兮'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111296638656971674</id><published>2005-04-08T20:46:00.000+08:00</published><updated>2005-04-08T21:19:46.570+08:00</updated><title type='text'>kernel.org这帮变态的</title><content type='html'>&lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt;的新机器竟然有24G内存和10T的硬盘！这玩意即不是&lt;a href="http://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E9%9B%86%E7%BE%A4" title="计算机集群"&gt;集群&lt;/a&gt;，也不是&lt;a href="http://zh.wikipedia.org/wiki/%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97" title="磁盘阵列"&gt;盘阵&lt;/a&gt;，竟然就只是一台服务器而已。HP的DL585，嗯，这回可&lt;a href="http://h18004.www1.hp.com/products/servers/proliantdl585/index.html"&gt;印象深刻&lt;/a&gt;了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111296638656971674?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111296638656971674/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111296638656971674' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111296638656971674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111296638656971674'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/kernelorg.html' title='kernel.org这帮变态的'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111285631097315471</id><published>2005-04-07T14:41:00.000+08:00</published><updated>2005-04-07T14:45:10.973+08:00</updated><title type='text'>Yahoo! 360°!? Sixfoo! 660°!?!</title><content type='html'>&lt;a href="http://360.yahoo.com/"&gt;Yahoo! 360°&lt;/a&gt; VS &lt;a href="http://660.sixfoot6.com/"&gt;Sixfoo! 660°&lt;/a&gt;！&lt;br /&gt;&lt;br /&gt;总有好事之徒，哇哈哈。你还别说，学了个十足，还真的就能登录进去呢 lol&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111285631097315471?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111285631097315471/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111285631097315471' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285631097315471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285631097315471'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/yahoo-360-sixfoo-660.html' title='Yahoo! 360°!? Sixfoo! 660°!?!'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111285457614959264</id><published>2005-04-07T14:03:00.000+08:00</published><updated>2005-05-27T09:24:27.176+08:00</updated><title type='text'>Google的新特性</title><content type='html'>&lt;a href="http://www.google.com" title="google"&gt;Google&lt;/a&gt;现在可以当百科全书来使了，用define:keywords可以查询字、词。实际上，返回结果中最多出现、最有用处的，还是要数&lt;a href="http://www.wikipedia.org" title="维基百科"&gt;维基百科&lt;/a&gt;的内容了。大家可以用&lt;a href="http://www.google.com/search?hl=zh-CN&amp;q=define%3Agoogle&amp;btnG=Google%E6%90%9C%E7%B4%A2&amp;lr=" title="查询google"&gt;define:google&lt;/a&gt;来查询一下试试。Google还知道针对查询者的语言设置，来返回&lt;a href="http://zh.wikipedia.org" title="中文维基百科"&gt;不同语种的维基百科&lt;/a&gt;的内容，还是挺体贴人的。不过有一个不爽的地方，在查询结果页面的下面，有该词在其它语言的相关链接：“显示在  简体中文  俄文  德文  意大利语  法文  英文  西班牙文  所有语言所有可找到的定义”，这可实在是不符合中国人的说话的习惯，看来页面还没有汉化充分 ;)&lt;div class='tag_list'&gt;Tags: &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/维基百科 rel=tag&gt;维基百科&lt;/a&gt;&lt;/span&gt; &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/wikipedia rel=tag&gt;wikipedia&lt;/a&gt;&lt;/span&gt; &lt;span style=font-size:70%;&gt;&lt;a href=http://technorati.com/tag/google rel=tag&gt;google&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111285457614959264?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111285457614959264/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111285457614959264' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285457614959264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285457614959264'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/google.html' title='Google的新特性'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111285358360353390</id><published>2005-04-07T13:48:00.000+08:00</published><updated>2005-04-07T14:19:14.346+08:00</updated><title type='text'>《业余无线电通信（修订本）》</title><content type='html'>&lt;div style="align:right; float: right;"&gt;&lt;a href="http://douban.com/subject/1189694/"&gt;&lt;img src="http://douban.com/spic/s1136830.jpg"/ title="《业余无线电通信（修订本）》"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;今天又上“&lt;a href="http://douban.com/" title="豆瓣评论"&gt;豆瓣&lt;/a&gt;”转，突然想起曾经痴迷&lt;a href="http://zh.wikipedia.org/wiki/%E4%B8%9A%E4%BD%99%E6%97%A0%E7%BA%BF%E7%94%B5"  title="业余无线电"&gt;此道&lt;/a&gt;，还自己组装过无线电收发机；但当爱好与工作发生冲突的时候，我只能选择工作，毕竟生存才是最重要的。&lt;br /&gt;　　&lt;br /&gt;其实，一直想重新拾起自己的这点爱好，但无奈工作繁忙，总觉得无法脱身－－也许是我该反省一下自己的生活、工作方式的时候了。&lt;br /&gt;　　&lt;br /&gt;已经送人的那部收发机还安在否？下一次回家的时候该和以前的朋友联咯一下了。几年不见，不知道还能不能找到他们了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111285358360353390?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111285358360353390/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111285358360353390' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285358360353390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111285358360353390'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/04/blog-post.html' title='《业余无线电通信（修订本）》'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111115460654280953</id><published>2005-03-18T21:29:00.000+08:00</published><updated>2005-03-18T22:50:19.456+08:00</updated><title type='text'>最乐观的悲观主义者的乌鸦嘴又命中了</title><content type='html'>工作的忙乱之中，突然又看到某某网站被封（或说基本被封，差不多了），不过这回的名头更大，赫然就是水木。这年头，连水木这样的老实人都混不下去，你我还有什么好说的。虽然我是一个乐观主义者，但在官老爷与言论自由的对峙中，我一向是持悲观主义态度。其实我早就说过，上次的HT不会是最后一个，肯定还有更倒霉的。言犹在耳，就又出了这么一档子事，我都不禁对自己的乌鸦嘴佩服起来。还好，前些日子琢磨自己blog的去向，思前想后，还是固守了blogger这片地儿，虽然要自己找空间存放才能在国内看到，但毕竟不用担心那天被连窝端了。现在想想，还真是有先见之明了。唉，要是什么时候，我们在网上闲扯蛋之前不需要这种“先见之明”来提醒管住自己的嘴巴该有多好。&lt;br /&gt;&lt;br /&gt;再扯一句：水木去的不多，最近想换个地方租房，本来还想到水木上转转、找找的，这下可找的地方又少了一个。唉。眼看网站一个又一个的“无疾而终”，不免有兔死狐悲之感。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111115460654280953?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111115460654280953/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111115460654280953' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111115460654280953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111115460654280953'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/blog-post_18.html' title='最乐观的悲观主义者的乌鸦嘴又命中了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111115120716831052</id><published>2005-03-18T21:04:00.000+08:00</published><updated>2005-03-18T21:06:47.170+08:00</updated><title type='text'>一个值得纪念的时刻，不过已经溜走了</title><content type='html'>0$ date +%s&lt;br /&gt;1111151035&lt;br /&gt;&lt;br /&gt;千载难逢，可惜。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111115120716831052?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111115120716831052/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111115120716831052' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111115120716831052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111115120716831052'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/blog-post.html' title='一个值得纪念的时刻，不过已经溜走了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111063684085329762</id><published>2005-03-12T21:42:00.000+08:00</published><updated>2005-03-13T11:22:45.650+08:00</updated><title type='text'>用 twofish 做块加密</title><content type='html'>&lt;a href="http://www.schneier.com/twofish.html"&gt;Twofish&lt;/a&gt;是一种块加密算法。块加密算法适合进行流加密，倒是一个发展趋势。Twofish的运算速度比以前的Blowfish之类要快一点，今天终于有机会在Python里试验了一下。虽然这种算法已经出现了好几年，并且是被置于公共领域的算法，但我还是发现现在可以利用的Twofish算法库种类好象不多，也良莠不齐。算起来，还是从&lt;a href="http://www.gnupg.org/"&gt;GnuPG&lt;/a&gt;项目中衍生的&lt;a href="http://directory.fsf.org/security/libgcrypt.html"&gt;libgcrypt&lt;/a&gt;加密算法库比较完善，而且维护也比较及时，项目活跃程度比较高，用起来放心一点。&lt;br /&gt;&lt;br /&gt;在Debian中，安装libgcrypt比较方便：&lt;br /&gt;&lt;pre&gt;sudo apt-get install libgcrypt11 libgcrypt11-dev&lt;/pre&gt;&lt;br /&gt;不过libgcrypt是一个标准C代码库，为了在Python中使用，需要包装一下，把它做成Python扩展模块。在&lt;a href="http://www.sf.net/"&gt;sf.net&lt;/a&gt;上，我找到了&lt;a href="http://sourceforge.net/projects/libgcrypt-py/"&gt;libgcrypt-py&lt;/a&gt;。在Debian下，编译安装很顺利；但在FreeBSD下，好象gcc不会自己到/usr/local中查找对应的libgcrypt的库和头文件，导致编译失败。在对setup.py做了修改之后，终于安装成功了。&lt;br /&gt;&lt;pre&gt;--- libgcrypt-py-0.1.0/setup.py 2004-07-22 11:47:15.000000000 +0800&lt;br /&gt;+++ libgcrypt-py-0.1.0-new/setup.py     2005-03-12 21:37:24.122370040 +0800&lt;br /&gt;@@ -11,16 +11,25 @@&lt;br /&gt;     url="http://libgcrypt-py.sourceforge.net",&lt;br /&gt;     download_url="http://sourceforge.net/projects/libgcrypt-py/",&lt;br /&gt;     py_modules=['Gcrypt'],&lt;br /&gt;+    packages=['_Gcrypt'],&lt;br /&gt;     ext_package="_Gcrypt",&lt;br /&gt;     ext_modules=[&lt;br /&gt;         Extension("_Cipher", ["_Gcrypt/ciphermodule.c"],&lt;br /&gt;-            libraries=["gcrypt", "gpg-error"]),&lt;br /&gt;+            libraries=["gcrypt", "gpg-error"],&lt;br /&gt;+            library_dirs=["/lib", "/usr/lib", "/usr/local/lib"],&lt;br /&gt;+            include_dirs=["/usr/include", "/usr/local/include"]),&lt;br /&gt;         Extension("_Hash", ["_Gcrypt/hashmodule.c"],&lt;br /&gt;-            libraries=["gcrypt", "gpg-error"]),&lt;br /&gt;+            libraries=["gcrypt", "gpg-error"],&lt;br /&gt;+            library_dirs=["/lib", "/usr/lib", "/usr/local/lib"],&lt;br /&gt;+            include_dirs=["/usr/include", "/usr/local/include"]),&lt;br /&gt;         Extension("_Random", ["_Gcrypt/randommodule.c"],&lt;br /&gt;-            libraries=["gcrypt", "gpg-error"]),&lt;br /&gt;+            libraries=["gcrypt", "gpg-error"],&lt;br /&gt;+            library_dirs=["/lib", "/usr/lib", "/usr/local/lib"],&lt;br /&gt;+            include_dirs=["/usr/include", "/usr/local/include"]),&lt;br /&gt;         Extension("_Pk", ["_Gcrypt/pkmodule.c"],&lt;br /&gt;-            libraries=["gcrypt", "gpg-error"]),&lt;br /&gt;+            libraries=["gcrypt", "gpg-error"],&lt;br /&gt;+            library_dirs=["/lib", "/usr/lib", "/usr/local/lib"],&lt;br /&gt;+            include_dirs=["/usr/include", "/usr/local/include"]),&lt;br /&gt;         ]&lt;br /&gt;     )&lt;/pre&gt;&lt;br /&gt;下面就打开一个Python，来测试一下：&lt;br /&gt;&lt;pre&gt;import Gcrypt&lt;br /&gt;from binascii import hexlify, unhexlify&lt;br /&gt;&lt;br /&gt;key16 = '1234567890123456'&lt;br /&gt;mode = 'ECB'&lt;br /&gt;plaintext = '1234567812345678'&lt;br /&gt;&lt;br /&gt;t=Gcrypt.Cipher('TWOFISH-128', mode, key16)&lt;br /&gt;ciphertext = t.Encrypt(plaintext)&lt;br /&gt;shouldbe = '8dfc2c5cbc722c3eda60b6f6d5d64adaa08113c4a107dc0967880359b686c1d7'&lt;br /&gt;hexlify(ciphertext) == shouldbe&lt;br /&gt;hexlify(ciphertext) == shouldbe&lt;br /&gt;t.Decrypt(unhexlify(shouldbe)) == plaintext&lt;br /&gt;t.Decrypt(unhexlify(shouldbe)) == plaintext&lt;br /&gt;a=shouldbe.upper()&lt;br /&gt;' '.join([a[i:i+2] for i in range(0, len(a), 2)])&lt;br /&gt;&lt;br /&gt;key32 = key16 + '\0'*(32-len(key16))&lt;br /&gt;t=Gcrypt.Cipher('TWOFISH-256', mode, key32)&lt;br /&gt;ciphertext = t.Encrypt(plaintext)&lt;br /&gt;shouldbe = '2d74e616829cc6d036081177fd2bd231d8858c5d39bcb2336c2071b331beee9b'&lt;br /&gt;hexlify(ciphertext) == shouldbe&lt;br /&gt;hexlify(ciphertext) == shouldbe&lt;br /&gt;t.Decrypt(unhexlify(shouldbe)) == plaintext&lt;br /&gt;t.Decrypt(unhexlify(shouldbe)) == plaintext&lt;br /&gt;a=shouldbe.upper()&lt;br /&gt;' '.join([a[i:i+2] for i in range(0, len(a), 2)])&lt;/pre&gt;&lt;br /&gt;好了，结论是，基本可用。不过和我用C编写的libgcrypt测试程序比起来，Python版本的256位key的加密结果后16字节竟然不太一样！怎么回事？！难道这两只鱼非得要把每16字节一块单独进行运算吗？没办法，理论功底不够，暂且放下，等回头再试试吧。&lt;br /&gt;&lt;br /&gt;补：有人提到import Gcrypt会出错，系统提示“No module named _Gcrypt._Random”。出现这种情况一是在libgcrypt-py-0.1.0中执行的import命令，python在现有的目录结构中找不到_Random.so所致；另一个原因是，原代码中的setup.py缺少上面patch中的“packages=['_Gcrypt'],”这一行，这导致_Gcrypt/__init__.py没有被安装到系统中，这也同样会使import出错。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111063684085329762?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111063684085329762/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111063684085329762' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111063684085329762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111063684085329762'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/twofish.html' title='用 twofish 做块加密'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111045031439050372</id><published>2005-03-10T18:07:00.000+08:00</published><updated>2005-03-10T18:25:14.393+08:00</updated><title type='text'>在Python中接收和处理信号量</title><content type='html'>今天写程序，用到了信号量，做一下下笔记：&lt;br /&gt;&lt;pre&gt;#!/usr/bin/env python&lt;br /&gt;# sig.py&lt;br /&gt;# signal test&lt;br /&gt;import time&lt;br /&gt;import signal&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;NEEDEXIT=False&lt;br /&gt;def SignalHandler(sig, id):&lt;br /&gt;    global NEEDEXIT&lt;br /&gt;    if sig == signal.SIGUSR1:&lt;br /&gt;      print 'received signal USR1'&lt;br /&gt;    elif sig == signal.SIGHUP:&lt;br /&gt;      print 'received signal HUP'&lt;br /&gt;    elif sig == signal.SIGTERM:&lt;br /&gt;      print 'received SIGTERM, shutting down'&lt;br /&gt;      NEEDEXIT = True&lt;br /&gt;&lt;br /&gt;signal.signal(signal.SIGUSR1, SignalHandler)&lt;br /&gt;signal.signal(signal.SIGHUP, SignalHandler)&lt;br /&gt;signal.signal(signal.SIGTERM, SignalHandler)&lt;br /&gt;&lt;br /&gt;while 1:&lt;br /&gt;    if NEEDEXIT:&lt;br /&gt;        sys.exit()&lt;br /&gt;    time.sleep(1)&lt;/pre&gt;&lt;br /&gt;在我的debian上，可以使用的信号量：&lt;br /&gt;&lt;pre&gt;0$ kill -l&lt;br /&gt; 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL&lt;br /&gt; 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE&lt;br /&gt; 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2&lt;br /&gt;13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD&lt;br /&gt;18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN&lt;br /&gt;22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ&lt;br /&gt;26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO&lt;br /&gt;30) SIGPWR      31) SIGSYS      33) SIGRTMIN    34) SIGRTMIN+1&lt;br /&gt;35) SIGRTMIN+2  36) SIGRTMIN+3  37) SIGRTMIN+4  38) SIGRTMIN+5&lt;br /&gt;39) SIGRTMIN+6  40) SIGRTMIN+7  41) SIGRTMIN+8  42) SIGRTMIN+9&lt;br /&gt;43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13&lt;br /&gt;47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-15 50) SIGRTMAX-14&lt;br /&gt;51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10&lt;br /&gt;55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6&lt;br /&gt;59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2&lt;br /&gt;63) SIGRTMAX-1  64) SIGRTMAX&lt;/pre&gt;&lt;br /&gt;启动一下程序，测试一下：&lt;br /&gt;&lt;pre&gt;0$ python sig.py &amp;&lt;br /&gt;[1] 29465&lt;br /&gt;0$ kill -1 29465&lt;br /&gt;received signal HUP&lt;br /&gt;0$ kill -SIGHUP 29465&lt;br /&gt;received signal HUP&lt;br /&gt;0$ kill -10 29465&lt;br /&gt;received signal USR1&lt;br /&gt;0$ kill -SIGUSR1 29465&lt;br /&gt;received signal USR1&lt;br /&gt;0$ kill -15 29465&lt;br /&gt;received SIGTERM, shutting down&lt;br /&gt;0$&lt;br /&gt;[1]+  Done                    python sig.py&lt;br /&gt;0$&lt;/pre&gt;&lt;br /&gt;程序还是挺配合的 :) 这样以后就可以直接用 kill PID 来让我的程序“协议”退出了，哈哈。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111045031439050372?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111045031439050372/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111045031439050372' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111045031439050372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111045031439050372'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/python.html' title='在Python中接收和处理信号量'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111042705064540844</id><published>2005-03-10T11:57:00.000+08:00</published><updated>2005-03-10T12:41:55.803+08:00</updated><title type='text'>Post by Gnome-blog</title><content type='html'>&lt;p&gt;sudo apt-get install gnome-blog&lt;/p&gt;&lt;p&gt;&lt;br /&gt;gnome-blog-poster&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Gnome-blog功能简洁，支持blogger.com，很适合快速发布blog。&lt;br /&gt;&lt;br /&gt;可惜，最后的试验不成功－－不仅文章没有标题，而且所有中文都变成了乱码，难道是对我utf8的汉字编码水土不服！？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111042705064540844?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111042705064540844/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111042705064540844' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111042705064540844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111042705064540844'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/post-by-gnome-blog.html' title='Post by Gnome-blog'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111037636603340341</id><published>2005-03-09T21:34:00.000+08:00</published><updated>2005-03-09T23:36:21.683+08:00</updated><title type='text'>我使用的Blogger模板</title><content type='html'>从&lt;a href="http://www.zope.org"&gt;Zope&lt;/a&gt;平台的ftp换到真正纯文件的ftp，又调整了一下自己的&lt;a href="http://www.blogger.com"&gt;blogger&lt;/a&gt;模板。在自己手里放着也是放着，还是发布出来，说不定以后会帮到某位也用blogger和ftp发布的朋友呢。&lt;br /&gt;&lt;br /&gt;最初的模板是来自于&lt;a href="http://www.blogger.com"&gt;blogger.com&lt;/a&gt;的一个素雅的例子，手工调整了一点布局；增加了&lt;a href="http://www.haloscan.com/"&gt;HaloScan&lt;/a&gt;提供的&lt;a href="http://en.wikipedia.org/wiki/Trackback"&gt;Trackback&lt;/a&gt;功能；增加了计数器；增加了&lt;a href="http://www.truefresco.org/"&gt;trueFresco&lt;/a&gt;提供的&lt;a href="http://www.truefresco.org/referrers.htm"&gt;List referrers&lt;/a&gt;功能：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;模板：&lt;a href="/blog.tmpl.txt"&gt;blog.tmpl.txt&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;CSS：&lt;a href="/blog.css"&gt;blog.css&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111037636603340341?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111037636603340341/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111037636603340341' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111037636603340341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111037636603340341'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/blogger.html' title='我使用的Blogger模板'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-111015743869100336</id><published>2005-03-07T08:57:00.000+08:00</published><updated>2005-03-07T09:03:58.693+08:00</updated><title type='text'>庆祝我的Blog又获新生！</title><content type='html'>哈哈，太棒了！&lt;br /&gt;&lt;br /&gt;不用再等&lt;a href="http://www.freezope.org"&gt;freezope.org&lt;/a&gt;修复ftp的问题了，从&lt;a href="http://linuxfire.dhis.org/"&gt;linuxfire&lt;/a&gt;找到了空间存放我的blog。感谢linuxfire的主人hf_linux，也要感谢FKtPp的热心帮助。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-111015743869100336?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/111015743869100336/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=111015743869100336' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111015743869100336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/111015743869100336'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2005/03/blog.html' title='庆祝我的Blog又获新生！'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109832910059448165</id><published>2004-10-21T11:11:00.000+08:00</published><updated>2005-02-27T15:24:45.726+08:00</updated><title type='text'>卡特尔16PF，人格测验</title><content type='html'>16PF测验是美国人卡特尔教授搞的一个人格测试理论。他认为人格有16种基本因素，即根源特质；所有其他人格都来源于这16种特质。这位老先生也不容易，搞了20年才搞定这套理论，据说现在这个方法挺流行的。前几天看到有人在用这个东西，我也下载了一个免费软件，只是不知道测得准不准：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xie.freezope.org/upload/Files/xyb16pf.jpg"&gt;&lt;img src="http://xie.freezope.org/upload/Files/xyb16pf-t.jpg"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看起来和自我评价差不多，不过一些地方还是有点出乎我的意料，算是对自己人格、性格的重新认识吧。&lt;br /&gt;&lt;br /&gt;要是有兴趣，你也可以自己试一试，&lt;a href="http://www.china-psych.net/software/16pf34.rar"&gt;点击这里下载评测软件&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109832910059448165?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109832910059448165/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109832910059448165' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109832910059448165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109832910059448165'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/10/16pf.html' title='卡特尔16PF，人格测验'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109832822505011009</id><published>2004-10-21T11:07:00.000+08:00</published><updated>2004-10-21T11:10:25.050+08:00</updated><title type='text'>格言</title><content type='html'>做人须急时不躁、气时不恼、忙里偷闲、苦中作乐！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109832822505011009?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109832822505011009/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109832822505011009' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109832822505011009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109832822505011009'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/10/blog-post_21.html' title='格言'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109721318275042781</id><published>2004-10-08T13:19:00.000+08:00</published><updated>2004-10-08T13:26:22.750+08:00</updated><title type='text'>Google 现在越搞越复杂了</title><content type='html'>今天在 Google 上搜东西，竟然看到这么一个提示：&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;因应一项依 「数位千禧年著作权法案」（简称 DMCA）的控诉，本页已移除 1 项查询结果。您如果想了解是哪些资料被移除，请见&lt;a href="http://www.chillingeffects.org/dmca512/show.cgi?NoticeID=1002"&gt; DMCA 控诉&lt;/a&gt;。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;树大招风呀，没给 Yahoo、MSN 挑过的刺都在 Google 这里给挑出来了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109721318275042781?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109721318275042781/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109721318275042781' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109721318275042781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109721318275042781'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/10/google.html' title='Google 现在越搞越复杂了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109668372407123508</id><published>2004-10-02T10:18:00.000+08:00</published><updated>2004-10-02T10:33:04.036+08:00</updated><title type='text'>火车站</title><content type='html'>每到节假日，都为回家的事情头疼，人实在是太多啦。不过这个十一还是终于回到家了。唉，这节日的车站真是个疯狂的地方。既然人在车站，我难免也会作出些疯狂的举动，呵呵 ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109668372407123508?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109668372407123508/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109668372407123508' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109668372407123508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109668372407123508'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/10/blog-post_02.html' title='火车站'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109668303561705053</id><published>2004-10-02T10:06:00.000+08:00</published><updated>2004-10-02T10:31:42.460+08:00</updated><title type='text'>中关村与“理想”</title><content type='html'>到中关村的理想大厦转了一圈，新楼盘就是不太好找。突然有点感触，原来在中关村寻找“理想”真的不是那么容易的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109668303561705053?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109668303561705053/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109668303561705053' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109668303561705053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109668303561705053'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/10/blog-post.html' title='中关村与“理想”'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109619849898920064</id><published>2004-09-26T19:29:00.000+08:00</published><updated>2004-09-26T19:34:58.990+08:00</updated><title type='text'>文章两三篇</title><content type='html'>最近在&lt;a href="http://wiki.woodpecker.org.cn/"&gt;琢木鸟&lt;/a&gt;写了几篇文字，不在 blog 里贴了，有兴趣的可以去看看：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.woodpecker.org.cn/moin.cgi/PyUnitTut"&gt;Python 单元测试框架入门&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.woodpecker.org.cn/moin.cgi/VimPythonTDD"&gt;如何在 Vim 中实践 Python TDD&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.woodpecker.org.cn/moin.cgi/VimPython"&gt;在 Vim 中编写 Python 程序&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109619849898920064?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109619849898920064/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109619849898920064' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109619849898920064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109619849898920064'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/blog-post_26.html' title='文章两三篇'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109619795344418265</id><published>2004-09-26T18:44:00.000+08:00</published><updated>2004-09-26T19:25:53.446+08:00</updated><title type='text'>Arch 与 SVN 孰优孰劣？</title><content type='html'>今天读了一篇&lt;a href="http://osdir.com/Article1687.phtml"&gt;对 Arch 作者的访谈&lt;/a&gt;，Tom Lord 好好数落了一通 SVN 和 CVS，呵呵。虽然读起来很有意思，但和这篇文章的大多数读者一样，我也不太认同他的观点。&lt;br /&gt;&lt;br /&gt;确实，虽然 CVS 在开源界使用最广，但 CVS 糟糕的设计令人们早就想把它扔掉了。虽然它也是开放源码的，但复杂的设计，让其它开发者根本没法替它做任何“外科手术”，这也造就了 CVS 版本稳定的神话──不过这个名声和 Tex 的肯定不能同日而语了。CVS 的众多问题也就一直延续下来。终于有了 Subversion，在众人拾柴火焰高的开发中，终于在 1.0 推出的时候被广泛接受。我也是对 SVN 有很强的好感。&lt;br /&gt;&lt;br /&gt;今天读了这篇文章，Lord 对 SVN 的一些批评并不是没有道理。但仅仅因为某些设计就把 SVN 贬得一无是处，我看不妥。什么软件在行家的眼里都是能挑出毛病来的，如果只看缺点无异于一叶障目。SVN 实现了 CVS 的所有功能，还实现了大家久已期待的很多特性，并且现在软件已经进入稳定期，又有了各个平台的客户端，还在大家最期待 CVS 的替代者时及时推出。这些因素相结合，大家怎么能不放弃 CVS，转向 SVN 呢？反观 Arch，也许架构设计确实一流，但到现在了还没有能让大家从容上手的版本出炉，也没有 Windows 版本软件(没办法，即使在开源界，用MS系统的人也还是很多的)，再加上开发者稀少，难怪用户数量平平了。&lt;br /&gt;&lt;br /&gt;很多开始代码很丑陋的开源项目也都成功了，光说自己的设计优秀是不行的，这里面道道还多着呢，怎么 Lord 同志现在还没明白这个理儿呀？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109619795344418265?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109619795344418265/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109619795344418265' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109619795344418265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109619795344418265'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/arch-svn.html' title='Arch 与 SVN 孰优孰劣？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109581612733117341</id><published>2004-09-22T09:17:00.000+08:00</published><updated>2004-09-22T09:22:07.330+08:00</updated><title type='text'>维基百科已经达到100万条目！</title><content type='html'>新闻稿：&lt;a href="http://zh-wikipedia.go.nease.net/2004/09/100.html"&gt;http://zh-wikipedia.go.nease.net/2004/09/100.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;呵呵，这也应该算是草根的力量了吧 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109581612733117341?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109581612733117341/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109581612733117341' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109581612733117341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109581612733117341'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/100.html' title='维基百科已经达到100万条目！'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109479345318521956</id><published>2004-09-10T13:26:00.000+08:00</published><updated>2004-09-10T13:17:33.186+08:00</updated><title type='text'>碳纳米泡沫 - 中文维基百科</title><content type='html'>《&lt;a href="http://www.sciam.com/"&gt;科学美国人&lt;/a&gt;》今年第8期登载了一个&lt;a href="http://www.sciam.com.tw/news/newsshow.asp?FDocNo=525&amp;CL=29"&gt;很有趣的新闻&lt;/a&gt;，报道了一个材料科学界的新发现。虽说是“新”发现，其实也已经是1997年的事儿了，这就是“碳纳米泡沫”。我看完了它，第一反应就是把它编写到维基百科里。看了看，维基百科里现在只有英文版中有它的一个&lt;a href="http://en.wikipedia.org/wiki/Carbon_nanofoam"&gt;条目&lt;/a&gt;。综合一下科学美国人和网上的其它报道，我编写了它在中文维基百科中的&lt;a href="http://zh.wikipedia.org/wiki/%E7%A2%B3%E7%BA%B3%E7%B1%B3%E6%B3%A1%E6%B2%AB"&gt;条目&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span style="font-weight: bold;"&gt;碳纳米泡沫&lt;/span&gt;&lt;/h2&gt;&lt;hr&gt;&lt;h3&gt;&lt;small&gt;维基百科，自由的百科全书。&lt;/small&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;碳纳米泡沫&lt;/strong&gt;，&lt;a href="http://zh.wikipedia.org/wiki/%E7%A2%B3" title="碳"&gt;碳&lt;/a&gt;元素的&lt;a href="http://zh.wikipedia.org/wiki/%E5%90%8C%E7%B4%A0%E5%BC%82%E5%BD%A2%E4%BD%93" title="同素异形体"&gt;同素异形体&lt;/a&gt;之一，&lt;a href="http://zh.wikipedia.org/wiki/1997%E5%B9%B4" title="1997年"&gt;1997年&lt;/a&gt;由&lt;a href="http://zh.wikipedia.org/wiki/%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A" title="澳大利亚"&gt;澳大利亚&lt;/a&gt;国立大学的Andrei V. Rode及其合作者发现。&lt;/p&gt; &lt;p&gt;碳纳米泡沫呈蛛网状，具有&lt;a href="http://zh.wikipedia.org/wiki/%E5%88%86%E5%BD%A2" title="分形"&gt;分形&lt;/a&gt;结构，有&lt;a href="http://zh.wikipedia.org/w/wiki.phtml?title=%E9%93%81%E7%A3%81%E6%80%A7" class="new" title="铁磁性"&gt;铁磁性&lt;/a&gt;。泡沫由许多原子团簇构成，每个含有约4000个碳原子，直径约6到9&lt;a href="http://zh.wikipedia.org/wiki/%E7%BA%B3%E7%B1%B3" title="纳米"&gt;纳米&lt;/a&gt;； 其中很多原子团连在一起，形成了纤细的网。在碳纳米泡沫中，有许多七边形的结构。研究者认为，七边形的结构造是它有很多未成对的电子的原因；泡沫也因此而 具有了磁性，这是其他任何一种碳的同素异形体所没有的特性。研究者还发现，在低于-183°C时，泡沫还具有永久磁性。&lt;/p&gt; &lt;p&gt;碳纳米泡沫的&lt;a href="http://zh.wikipedia.org/wiki/%E5%AF%86%E5%BA%A6" title="密度"&gt;密度&lt;/a&gt;很低，与&lt;a href="http://zh.wikipedia.org/w/wiki.phtml?title=%E7%A2%B3%E6%B0%94%E5%87%9D%E8%83%B6"  title="碳气凝胶"&gt;碳气凝胶&lt;/a&gt;很相似，但密度是它的百分之一；它是目前世上最轻的物质之一，密度约为2mg每立方公分，仅有海平面上空气密度的几分之一。&lt;/p&gt; &lt;p&gt;这种泡沫还是&lt;a href="http://zh.wikipedia.org/wiki/%E7%94%B5" title="电"&gt;电&lt;/a&gt;的不良&lt;a href="http://zh.wikipedia.org/w/wiki.phtml?title=%E5%AF%BC%E4%BD%93" title="导体"&gt;导体&lt;/a&gt;，可以积聚&lt;a href="http://zh.wikipedia.org/w/wiki.phtml?title=%E9%9D%99%E7%94%B5" title="静电"&gt;静电&lt;/a&gt;而吸附在其他物质上；它的&lt;a href="http://zh.wikipedia.org/wiki/%E7%83%AD%E4%BC%A0%E5%AF%BC" title="热传导"&gt;热传导&lt;/a&gt;性也很差。&lt;/p&gt; &lt;p&gt;它的制备方法为，在充满&lt;a href="http://zh.wikipedia.org/wiki/%E6%B0%A9" title="氩"&gt;氩&lt;/a&gt;气的容器中放入玻璃形状的碳，用每秒一万次的&lt;a href="http://zh.wikipedia.org/wiki/%E6%BF%80%E5%85%89" title="激光"&gt;激光&lt;/a&gt;脉冲轰击，使其温度骤升到大约1万摄氏度并爆炸，在容器壁上即可获得一层碳纳米泡沫构成的薄膜。&lt;/p&gt; &lt;p&gt;由于纳米泡沫具有的铁磁性，将来有可能把它们的颗粒注射入人体，用来改善磁共振成像的清晰程度。它们也可能被应用到利用&lt;a href="http://zh.wikipedia.org/wiki/%E7%94%B5%E5%AD%90" title="电子"&gt;电子&lt;/a&gt;自旋或电子磁性的&lt;a href="http://zh.wikipedia.org/wiki/%E8%87%AA%E6%97%8B" title="自旋"&gt;自旋&lt;/a&gt;器件中。&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;原文：&lt;a href="http://zh.wikipedia.org/wiki/%E7%A2%B3%E7%BA%B3%E7%B1%B3%E6%B3%A1%E6%B2%AB"&gt;http://zh.wikipedia.org/wiki/碳纳米泡沫&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109479345318521956?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://zh.wikipedia.org/wiki/%E7%A2%B3%E7%BA%B3%E7%B1%B3%E6%B3%A1%E6%B2%AB' title='碳纳米泡沫 - 中文维基百科'/><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109479345318521956/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109479345318521956' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109479345318521956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109479345318521956'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/blog-post.html' title='碳纳米泡沫 - 中文维基百科'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109469512904918054</id><published>2004-09-09T09:54:00.000+08:00</published><updated>2004-09-09T09:58:49.050+08:00</updated><title type='text'>GMail 在升级？</title><content type='html'>2004年9月9日，上午09:53，访问Gmail，惊奇地发现如下提示：&lt;br /&gt;&lt;br /&gt;Server Error&lt;br /&gt;&lt;br /&gt;Gmail is temporarily unavailable. Cross your fingers and try again in a few minutes. We're sorry for the inconvenience.&lt;br /&gt;&lt;br /&gt;难道是 Gmail 在升级，还是我“荣幸地”看到了 Gmail 服务器发狂的一景，呵呵。几分钟后，世界又归于平静，我顺利的进入了 Inbox。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109469512904918054?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109469512904918054/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109469512904918054' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109469512904918054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109469512904918054'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/gmail.html' title='GMail 在升级？'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109409841215300392</id><published>2004-09-02T11:53:00.000+08:00</published><updated>2004-09-02T12:13:32.153+08:00</updated><title type='text'>中国大陆活跃的 Python 和 Zope 社区</title><content type='html'>Python&lt;br /&gt;&lt;br /&gt;&lt;a href="http://python.cn/"&gt;Python.cn&lt;/a&gt; 的&lt;a href="http://python.cn/pipermail/python-chinese/"&gt;邮件列表&lt;/a&gt;，我想这绝对是现在最活跃的一个社区了，能人众多，也有很多热心人。&lt;a href="http://wiki.woodpecker.org.cn/"&gt;琢木鸟社区&lt;/a&gt;是 Python.cn 邮件列表中催生的一个自由社区，正在处于上升期，汇集了很多资源和项目。&lt;a href="http://www.linuxforum.net"&gt;中国 Linux 论坛&lt;/a&gt;的 &lt;a href="http://www.linuxforum.net/forum/postlist.php?Cat=&amp;Board=python"&gt;Python 版&lt;/a&gt;，在 web 形式的论坛里，这里算是很活跃的了。不过由于论坛的这种松散的联络方式，这里一直也没能达到热烈的程度。&lt;br /&gt;&lt;br /&gt;Zope&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.czug.org/"&gt;中文 Zope 用户组&lt;/a&gt;是现在大陆唯一比较活跃的 Zope 社区了，这里收集了大量 Zope 资料，是 Zope 用户和开发者的聚集地。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109409841215300392?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109409841215300392/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109409841215300392' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109409841215300392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109409841215300392'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/python-zope.html' title='中国大陆活跃的 Python 和 Zope 社区'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109400506591555147</id><published>2004-09-01T09:59:00.000+08:00</published><updated>2004-09-01T10:18:12.856+08:00</updated><title type='text'>与 p2p 软件有关的一些防火墙 Forwarding 设置</title><content type='html'>&lt;a href="http://bitconjurer.org/BitTorrent/"&gt;BitTorrent&lt;/a&gt;，我喜欢把它叫做“比特风暴”，它的需要很简单，只要提供 TCP 端口 6881 到 6999 就可以了。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.edonkey2000.com/"&gt;eDonkey&lt;/a&gt; 或者 &lt;a href="http://www.emule-project.net/"&gt;eMule&lt;/a&gt;/&lt;a href="http://www.xmule.ws/"&gt;xMule&lt;/a&gt; 需要的东西就多了一点，需要 TCP 端口 4661、4665 和 4771、UDP 端口 4665 和 4672。不过一些 ISP 会封锁 4661 端口，所以人们经常会用自选的其他端口代替 4661。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109400506591555147?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109400506591555147/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109400506591555147' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109400506591555147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109400506591555147'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/09/p2p-forwarding.html' title='与 p2p 软件有关的一些防火墙 Forwarding 设置'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109342229162445941</id><published>2004-08-25T16:19:00.000+08:00</published><updated>2004-09-06T15:48:45.456+08:00</updated><title type='text'>解决在 Python 中登录网站的问题</title><content type='html'>所谓登录进入一个网站，实际上就是在浏览器里留下一些暂时或长期的 cookie 而已。如果我们用 Python 访问一些需要登录才能看到的内容，只要把登录之后传回来的cookies再传回去就行了。&lt;br /&gt;&lt;br /&gt;虽然 Python2.3 提供了 Cookie 这个模块，但做为操作客户端 cookie 来说并不实用。我们也可以靠自己维护 http header 来实现这些功能，但这很很麻烦。还好有人提供了不错的模块，比如 &lt;a href="http://wwwsearch.sourceforge.net/ClientCookie/"&gt;CookieClient&lt;/a&gt; 就是不错的选择。下面是我用 CookieClient 编写的一个访问 &lt;a href="http://www.linuxforum.net/"&gt;linuxforum&lt;/a&gt; 的示例脚本：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: GB2312 -*-&lt;br /&gt;# xyb at linuxforum.net&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import ClientCookie&lt;br /&gt;from urllib import urlencode&lt;br /&gt;&lt;br /&gt;# add loader&lt;br /&gt;cookies = ClientCookie.LWPCookieJar()&lt;br /&gt;opener = ClientCookie.build_opener(&lt;br /&gt;        ClientCookie.HTTPCookieProcessor(cookies),&lt;br /&gt;        ClientCookie.HTTPRefererProcessor,&lt;br /&gt;        ClientCookie.HTTPEquivProcessor,&lt;br /&gt;        ClientCookie.HTTPRefreshProcessor,&lt;br /&gt;        ClientCookie.SeekableProcessor)&lt;br /&gt;opener.addheaders = [&lt;br /&gt;        ("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3"),&lt;br /&gt;        ("Accept", "text/html, image/jpeg, image/png, text/*, image/*, */*")]&lt;br /&gt;ClientCookie.install_opener(opener)&lt;br /&gt;&lt;br /&gt;# check args&lt;br /&gt;if len(sys.argv) &lt;= 2:&lt;br /&gt;    print "Usage: %s USERNAME PASSWORD" % (sys.argv[0])&lt;br /&gt;    sys.exit(1)&lt;br /&gt;else:&lt;br /&gt;    UserName = sys.argv[1]&lt;br /&gt;    Password = sys.argv[2]&lt;br /&gt;&lt;br /&gt;# login&lt;br /&gt;data = {&lt;br /&gt;        'Loginname': UserName,&lt;br /&gt;        'Loginpass': Password,&lt;br /&gt;        'firstlogin': 1,&lt;br /&gt;        'option': '登入论坛'&lt;br /&gt;        }&lt;br /&gt;urldata = urlencode(data)&lt;br /&gt;r = ClientCookie.urlopen("http://www.linuxforum.net/forum/start_page.php", urldata)&lt;br /&gt;&lt;br /&gt;# show result&lt;br /&gt;results = r.read()&lt;br /&gt;open('start.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# then, user page&lt;br /&gt;r = ClientCookie.urlopen("http://www.linuxforum.net/forum/login.php?Cat=")&lt;br /&gt;results = r.read()&lt;br /&gt;open('user.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# read messages&lt;br /&gt;r = ClientCookie.urlopen("http://www.linuxforum.net/forum/viewmessages.php?Cat=&amp;box=received")&lt;br /&gt;results = r.read()&lt;br /&gt;open('inbox.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# save cookies to file&lt;br /&gt;cookies.save("./cookies")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;这个例子里用的是 ClientCookie-0.9.4a。&lt;br /&gt;&lt;br /&gt;不过从 Python2.4 开始，将会增加 &lt;a href="http://www.python.org/dev/doc/devel/lib/module-cookielib.html"&gt;clientlib&lt;/a&gt; 来提供对客户端 cookie 的支持，其中绝大部分代码都是 ClientCookie 里的，只不过调整了一下组织方式和文档，并且和 urllib2 整合在了一起。把上面的代码翻译一下，就可以得到如下的代码：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: GB2312 -*-&lt;br /&gt;# xyb at linuxforum.net&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;from urllib import urlencode&lt;br /&gt;import cookielib, urllib2&lt;br /&gt;cj = cookielib.LWPCookieJar()&lt;br /&gt;opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))&lt;br /&gt;urllib2.install_opener(opener)&lt;br /&gt;opener.addheaders = [&lt;br /&gt;        ("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3"),&lt;br /&gt;        ("Accept", "text/html, image/jpeg, image/png, text/*, image/*, */*")]&lt;br /&gt;&lt;br /&gt;# check args&lt;br /&gt;if len(sys.argv) &lt;= 2:&lt;br /&gt;    print "Usage: %s USERNAME PASSWORD" % (sys.argv[0])&lt;br /&gt;    sys.exit(1)&lt;br /&gt;else:&lt;br /&gt;    UserName = sys.argv[1]&lt;br /&gt;    Password = sys.argv[2]&lt;br /&gt;&lt;br /&gt;# login&lt;br /&gt;data = {&lt;br /&gt;        'Loginname': UserName,&lt;br /&gt;        'Loginpass': Password,&lt;br /&gt;        'firstlogin': 1,&lt;br /&gt;        'option': '登入论坛'&lt;br /&gt;        }&lt;br /&gt;urldata = urlencode(data)&lt;br /&gt;r = opener.open("http://www.linuxforum.net/forum/start_page.php", urldata)&lt;br /&gt;&lt;br /&gt;# show result&lt;br /&gt;results = r.read()&lt;br /&gt;open('start.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# then, user page&lt;br /&gt;r = urllib2.urlopen("http://www.linuxforum.net/forum/login.php?Cat=")&lt;br /&gt;results = r.read()&lt;br /&gt;open('user.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# read messages&lt;br /&gt;r = urllib2.urlopen("http://www.linuxforum.net/forum/viewmessages.php?Cat=&amp;box=received")&lt;br /&gt;results = r.read()&lt;br /&gt;open('inbox.html', 'w').write(results)&lt;br /&gt;&lt;br /&gt;# save cookies to file&lt;br /&gt;cj.save("./cookies")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;不过现在 Python2.4a2 的 urllib2 还有点 &lt;a href="http://python.org/sf/996159"&gt;bug&lt;/a&gt;，它导致发出的请求 header 会有两个大小写不同的 Content-Length。这也导致我们的这个例子现在还不能正常运行，不过我想等正式的 Python2.4 出来以后这段代码应该能直接执行。&lt;br /&gt;&lt;br /&gt;另外，在上面的代码中我是使用的 cookielib.LWPCookieJar() 或 ClientCookie.LWPCookieJar()，其实还有 MozillaCookieJar、MSIECookieJar、MSIEDBCookieJar 和 &lt;br /&gt;BSDDBCookieJar 这些选择。&lt;br /&gt;&lt;br /&gt;2004-09-06，注：Python2.4a3 发布，clientlib 没有什么问题了，我的那段倒是有问题，一是需要 install_opener，二是需要使用 urllib2.urlopen。现在改过了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109342229162445941?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109342229162445941/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109342229162445941' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109342229162445941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109342229162445941'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/08/python.html' title='解决在 Python 中登录网站的问题'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109308523077782297</id><published>2004-08-21T18:37:00.000+08:00</published><updated>2004-08-21T18:47:10.776+08:00</updated><title type='text'>好多小吃呀，留口水！</title><content type='html'>&lt;a title="维基百科，自由的百科全书。" href="http://zh.wikipedia.org/wiki/%E9%A6%96%E9%A1%B5"&gt;中文维基百科&lt;/a&gt;最近有一个&lt;a href="http://zh.wikipedia.org/wiki/Wikipedia:%E6%9D%A1%E7%9B%AE%E8%B4%A8%E9%87%8F%E6%8F%90%E5%8D%87%E8%AE%A1%E5%88%92" title="条目质量提升计划"&gt;条目质量提升计划&lt;/a&gt;，目标就是把已有的条目做到象模象样。最近几天选中了&lt;strong&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E5%B0%8F%E5%90%83" title="小吃"&gt;小吃&lt;/a&gt;&lt;/strong&gt;，一时之间连带&lt;strong&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E5%B0%8F%E5%90%83%E5%88%97%E8%A1%A8" title="小吃列表"&gt;小吃列表&lt;/a&gt;&lt;/strong&gt;条目也活跃了起来。今天好好看了看，头一回知道原来全国各地有这么多种小吃，看得我都流口水了，呵呵。你也要小心哦，不要把键盘都打湿了 ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109308523077782297?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109308523077782297/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109308523077782297' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109308523077782297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109308523077782297'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/08/blog-post_21.html' title='好多小吃呀，留口水！'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109308396835681868</id><published>2004-08-21T18:18:00.000+08:00</published><updated>2004-08-21T18:26:08.356+08:00</updated><title type='text'>笑话：怎样保持婚姻和谐</title><content type='html'>偶然看到，莞尔之余觉得这个笑话还真是寓意深刻呢 :)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;一对夫妇欢度他们的结婚纪念日，他们之间的和谐相处长期以来为人津津乐道。 当地的一位记者于是前去访问他们之所以拥有幸福婚姻的秘诀。&lt;br /&gt;&lt;br /&gt;丈夫向记者解释说：“嗯，这就要从我们的蜜月说起了。”&lt;br /&gt;&lt;br /&gt;我们到大峡谷度蜜月，原本我们是要骑驴子到峡谷底﹐不过才走了没有多久，我太太的驴子就跌了一跤。 我太太安静的说：“第一次。”&lt;br /&gt;&lt;br /&gt;再次上路以后没有多久那只驴子又跌了一跤，我太太又安静的说：“第二次。”&lt;br /&gt;&lt;br /&gt;还没有半哩路驴子又跌跤了，这时我太太拔出她的左轮手枪毙了那只驴子。&lt;br /&gt;&lt;br /&gt;我很不能认同她的行为，于是开始与她争论，这时，我的新婚妻子安静的对我说：“第一次……”&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109308396835681868?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109308396835681868/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109308396835681868' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109308396835681868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109308396835681868'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/08/blog-post.html' title='笑话：怎样保持婚姻和谐'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109235985460395591</id><published>2004-08-13T09:05:00.000+08:00</published><updated>2004-08-13T09:17:34.603+08:00</updated><title type='text'>在 Python 中生成 tar.bz2 文件</title><content type='html'>在 &lt;a href="http://aspn.activestate.com/ASPN/Cookbook/Python"&gt;Python Cookbook&lt;/a&gt; 中看到一个&lt;a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/299412"&gt;很有趣的方法&lt;/a&gt;来创建 tar.bz2 文件，但他的代码里错误太多了，正确的写法应该是这个样子的：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import tarfile&lt;br /&gt;import os&lt;br /&gt;out = tarfile.TarFile.open('out.tar.bz2', 'w:bz2')&lt;br /&gt;arcpath='/home/xyb/bin/'&lt;br /&gt;out.add(arcpath, arcname=os.path.basename(arcpath))&lt;br /&gt;out.close()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109235985460395591?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109235985460395591/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109235985460395591' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109235985460395591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109235985460395591'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/08/python-tarbz2.html' title='在 Python 中生成 tar.bz2 文件'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5796527.post-109141571434461172</id><published>2004-08-02T10:52:00.000+08:00</published><updated>2004-08-02T11:01:54.343+08:00</updated><title type='text'>Doom 3 真的是泄露了</title><content type='html'>DOOM 3 的泄漏据说已经&lt;a href="http://news.mydrivers.com/pages/20040802101326_36594.htm"&gt;被证实&lt;/a&gt;。咳，ID 这回又痛苦一把。&lt;br /&gt;&lt;br /&gt;过了一个晚上，我的DOOM3终于下载下来了。最终下载完成的这个版本 Reloaded 版，就说是 0day 正式认可的版本，包括 Keygen 和 Crack，1.7G呀，要是没有 BT 这东西，怎么可能想象一夜之间全世界都能下载得到！呵呵，不管怎么说，等下了班找台 Windows 试试。不过我可不抱什么幻想，我已经知道很多不错的机器运行起来都很慢，只有 20-30 fps :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5796527-109141571434461172?l=xieyanbo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xieyanbo.blogspot.com/feeds/109141571434461172/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5796527&amp;postID=109141571434461172' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109141571434461172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5796527/posts/default/109141571434461172'/><link rel='alternate' type='text/html' href='http://xieyanbo.blogspot.com/2004/08/doom-3_02.html' title='Doom 3 真的是泄露了'/><author><name>xyb</name><uri>http://www.blogger.com/profile/11574809298508868859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
