<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>梦.:如此短暂</title>
	<atom:link href="http://www.briefdream.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.briefdream.com/feed/</link>
	<description>WindyWinter的梦::上善若水，水利万物而不争，处众人之所恶，故几于道。</description>
	<lastBuildDate>Thu, 18 Mar 2010 06:27:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<atom:link rel='hub' href='http://www.briefdream.com/?pushpress=hub'/>
		<item>
		<title>pppd禁止相同用户多个连接</title>
		<link>http://www.briefdream.com/pppd%e7%a6%81%e6%ad%a2%e7%9b%b8%e5%90%8c%e7%94%a8%e6%88%b7%e5%a4%9a%e4%b8%aa%e8%bf%9e%e6%8e%a5/</link>
		<comments>http://www.briefdream.com/pppd%e7%a6%81%e6%ad%a2%e7%9b%b8%e5%90%8c%e7%94%a8%e6%88%b7%e5%a4%9a%e4%b8%aa%e8%bf%9e%e6%8e%a5/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 06:27:45 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[PPTP]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=640</guid>
		<description><![CDATA[　　推特教牧师发起了一个VPN公益项目，我帮忙搭建了测试用的基本的VPN server。需要禁止PPTP VPN相同用户多个连接。Poptop的用户验证是由pppd负责的，pppd自身没有这样的功能，而为10用户级别的VPN做一套MPPE+RADIUS+MySQL有点过于奢侈了。Google一下发现这里有一个利用pppd的auth-up脚本实现禁止多个连接的脚本（新连接自动踢掉旧连接），需要用一下awk，原脚本USER变量写错了，更正后的脚本如下：
……<br /><span class="readmore"><a href="http://www.briefdream.com/pppd%e7%a6%81%e6%ad%a2%e7%9b%b8%e5%90%8c%e7%94%a8%e6%88%b7%e5%a4%9a%e4%b8%aa%e8%bf%9e%e6%8e%a5/" title="pppd禁止相同用户多个连接">阅读全文——共724字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　<a href="http://twitter.com/newsinchina">推特教牧师</a>发起了一个<a href="http://docs.google.com/View?id=dt86f7p_6hmdq4cfb">VPN公益项目</a>，我帮忙搭建了测试用的基本的VPN server。需要禁止PPTP VPN相同用户多个连接。Poptop的用户验证是由pppd负责的，pppd自身没有这样的功能，而为10用户级别的VPN做一套MPPE+RADIUS+MySQL有点过于奢侈了。Google一下发现<a href="http://marc.info/?l=poptop-server&#038;m=113936659109216&#038;w=2">这里</a>有一个利用pppd的auth-up脚本实现禁止多个连接的脚本（新连接自动踢掉旧连接），需要用一下awk，原脚本USER变量写错了，更正后的脚本如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.briefdream.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=640&amp;download=auth-up">auth-up</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6402"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p640code2"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># get the username from the parameters</span>
<span style="color: #007800;">USER</span>=<span style="color: #007800;">$2</span>
<span style="color: #666666; font-style: italic;"># create the directory to keep pid files per user</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users
<span style="color: #666666; font-style: italic;"># interlock access to directory</span>
lockfile-create <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users
<span style="color: #666666; font-style: italic;"># if there is a session already for this user, terminate the old one</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$USER</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-HUP</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$USER</span><span style="color: #000000; font-weight: bold;">`</span>
    <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$USER</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #666666; font-style: italic;"># remember the pid of the pppd process</span>
<span style="color: #007800;">PPID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'/PPid/ { print $2; }'</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$$</span><span style="color: #000000; font-weight: bold;">/</span>status<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$PPID</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$USER</span>
<span style="color: #666666; font-style: italic;"># release interlock</span>
lockfile-remove <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>pptpd-users</pre></td></tr></table></div>

<img src="http://www.briefdream.com/?ak_action=api_record_view&id=640&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/notes-on-moving-to-vps/" title="搬家笔记 (2009-08-15)">搬家笔记</a></li>
	<li><a href="http://www.briefdream.com/%e6%8a%95%e6%88%91%e4%bb%a5%e6%9c%a8%e7%93%9c%ef%bc%8c%e6%8a%a5%e4%b9%8b%e4%bb%a5%e7%90%bc%e7%90%9a/" title="投我以木瓜，报之以琼琚 (2009-08-22)">投我以木瓜，报之以琼琚</a></li>
	<li><a href="http://www.briefdream.com/qixi-3/" title="七夕之三 (2009-08-27)">七夕之三</a></li>
	<li><a href="http://www.briefdream.com/ipv6-vpn/" title="IPv6 VPN (2009-11-13)">IPv6 VPN</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/pppd%e7%a6%81%e6%ad%a2%e7%9b%b8%e5%90%8c%e7%94%a8%e6%88%b7%e5%a4%9a%e4%b8%aa%e8%bf%9e%e6%8e%a5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>基于PubSubHubbub的Feed实时同步到Twitter服务</title>
		<link>http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/</link>
		<comments>http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 05:17:18 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[PubSubHubbub]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=612</guid>
		<description><![CDATA[　　为了这个蛋疼的Project，刷了好多屏，发了好多测试日志，给大家带来了很多不便，先行道歉。
　　Version: 6
　　Update 2010-3-3: 处理退订。
　　Update 2010-3-2: 以发布时间标记更新，解决重复发布问题。
……<br /><span class="readmore"><a href="http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/" title="基于PubSubHubbub的Feed实时同步到Twitter服务">阅读全文——共1069字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　为了这个蛋疼的Project，刷了好多屏，发了好多测试日志，给大家带来了很多不便，先行道歉。<br />
　　<strong>Version: </strong>6<br />
　　<strong>Update 2010-3-3: </strong>处理退订。<br />
　　<strong>Update 2010-3-2: </strong>以发布时间标记更新，解决重复发布问题。<br />
　　<strong>Update 2010-2-9: </strong>引入<a href="http://feedparser.org/">Universal Feed Parser</a>库，基本上可以处理所有的Feed格式了。<br />
　　<strong>下载: </strong><a href="http://www.briefdream.com/download/hub2tweet.zip" title="Downloaded 5 times">hub2tweet</a><br />
　　<strong>演示: </strong><a href="http://hub2tweets.appspot.com/">hub2tweets</a><br />
　　<a href="http://www.williamlong.info/">williamlong</a>在GAE上搭建过一个<a href="http://www.williamlong.info/archives/2020.html">基于PubSubHubBub的RSS Feed实时同步Twitter服务</a>，基于<a href="http://code.google.com/p/hub2tweet/">hub2tweet</a>。但我不喜欢他定制的发布格式，而且他一直没有公布代码，所以我只好从hub2tweet起家重新又改了一遍。<br />
　　修改的结果与他描述的并无多大区别，唯标题之前可以加个Prefix以示区分，缩短网址改用is.gd（还有个orz.se备用），发布出来的tweet的效果大致如下：</p>
<blockquote><p>
[Prefix] 思想改造与极权主义心理: 原作者：Robert Jay Lifton 来源Thought Reform and the Psychology of Totalism 译者george@tecn北卡罗莱纳大学出版社 ... http://bit.ly/c9Ib2q
</p></blockquote>
<p>　　如果你觉得上面的形式很符合自己的审美观，可以直接用我搭建好的<a href="http://hub2tweets.appspot.com/">hub2tweets</a>。不过不建议这么做，因为我改完的这个程序完全就是删档封测版（网游术语，指位于不删档封测、第一内测、第二内测、第n内测、公测之前的测试版），我会不停的在上面修改——也就意味着不停的出bug。<br />
　　推荐的方法是下载我改过的<a href="http://www.briefdream.com/download/hub2tweet.zip" title="Downloaded 5 times">hub2tweet</a>，看懂代码后修修补补自己在GAE搭建一个，或者干脆还是从hub2tweet改起。<br />
　　上传到GAE后要先访问<strong>http://your_app_name.appspot.com/admin/oauth_config</strong>配置Consumer key和Consumer secret，也就意味着要提前<a href="http://twitter.com/oauth">申请twitter appilication</a>。<del datetime="2010-02-09T05:28:04+00:00">目前只能处理Atom Feed，不知道<a href="http://www.williamlong.info/">williamlong</a>是怎么改成让它支持RSS Feed的。好在WordPress和Google Reader Share都能输出Atom Feed。</del>引入<a href="http://feedparser.org/">Universal Feed Parser</a>库，基本上可以处理所有的Feed格式了。<br />
　　另外，经过实验，WordPress的PubSubHubbub插件不能正常与hub服务器通信，WP PubSubHubbub插件正常。</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=612&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/sync-twitter-timeline-to-renren-status-via-google-app-engine/" title="用GAE同步twitter到人人网状态 (2010-02-13)">用GAE同步twitter到人人网状态</a></li>
	<li><a href="http://www.briefdream.com/%e7%9a%8e%e7%9a%8e%e7%99%bd%e9%a9%b9%ef%bc%8c%e9%a3%9f%e6%88%91%e5%9c%ba%e8%8b%97/" title="皎皎白驹，食我场苗 (2009-12-05)">皎皎白驹，食我场苗</a></li>
	<li><a href="http://www.briefdream.com/im-feeling-tired-these-days/" title="最近几天感觉好累 (2007-09-23)">最近几天感觉好累</a></li>
	<li><a href="http://www.briefdream.com/%e6%97%a5%e5%b1%85%e6%9c%88%e8%af%b8%ef%bc%8c%e7%85%a7%e4%b8%b4%e4%b8%8b%e5%9c%9f/" title="日居月诸，照临下土 (2009-06-25)">日居月诸，照临下土</a></li>
	<li><a href="http://www.briefdream.com/notes-on-moving-to-vps/" title="搬家笔记 (2009-08-15)">搬家笔记</a></li>
	<li><a href="http://www.briefdream.com/im-so-tired/" title="好累啊…… (2008-02-13)">好累啊……</a></li>
	<li><a href="http://www.briefdream.com/%e5%90%af%e7%94%a8ssl%e6%94%af%e6%8c%81%e5%92%8c%e5%a4%87%e7%94%a8%e5%9f%9f%e5%90%8d/" title="启用SSL支持和备用域名 (2010-01-22)">启用SSL支持和备用域名</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online Slot Machine RVM</title>
		<link>http://www.briefdream.com/online-slot-machine-rvm/</link>
		<comments>http://www.briefdream.com/online-slot-machine-rvm/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:33:33 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[付费评论]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=637</guid>
		<description><![CDATA[This is a paid review for Casino Scandinavia.
If you want to play in poker or other games would have to go to the casino. But real casinos often cheat people, some even pollute the air with hormones to get customers addictive. Fortunately with the advanced technology developed, it can be done in your own home even from your bedroom. It can be done via the Internet by accessing the service site that has a lot of poker today.
……<br /><span class="readmore"><a href="http://www.briefdream.com/online-slot-machine-rvm/" title="Online Slot Machine RVM">阅读全文——共1173字</a></span>]]></description>
			<content:encoded><![CDATA[<p>This is a paid review for <a href="http://www.casinoscandinavia.com/03/slot-machines/">Casino Scandinavia</a>.<br />
If you want to play in poker or other games would have to go to the casino. But real casinos often cheat people, some even pollute the air with hormones to get customers addictive. Fortunately with the advanced technology developed, it can be done in your own home even from your bedroom. It can be done via the Internet by accessing the service site that has a lot of poker today.<br />
<a href="http://www.casinoscandinavia.com/">Best Online Casinos</a> is such a site deserving a try. This <a href="http://www.casinoscandinavia.com/">Best Online Casinos</a> ensures that consumer engage themselves in a quality gambling network available on Internet. This site gives rating of top online casino according to their bonuses, facility of such casinos online. There is no cheating money and dishonest in this online casinos. They also provide the gratuity offers, rating, payout proportion, find the best online slots casinos and download information.<br />
One game that was popular was <a href="http://www.casinoscandinavia.com/03/slot-machines/">slot machine rvm</a>. How to play is very simple and easy. You only need to invest your own funds. After that you only need to match the picture or the numbers arriving in a <a href="http://www.casinoscandinavia.com/03/slot-machines/">slot machine rvm</a>. Usually there are at least three pictures or figures should be drawn. If all the images together then you will win and your money will be double value.<br />
So if you do seriously to play best online slot machines, don’t waste your valuable time to get started. Please visit <a href="http://www.casinoscandinavia.com/">Best Online Casinos</a> and enjoy gambling.</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=637&type=feed" alt="" />
	<ul class="st-related-posts">
	<li>No related posts.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/online-slot-machine-rvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0.0131 per view</title>
		<link>http://www.briefdream.com/00131-per-view/</link>
		<comments>http://www.briefdream.com/00131-per-view/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 06:00:29 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[公告板]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=634</guid>
		<description><![CDATA[　　￥0.0131，是我为梦.:如此短暂的一篇文章的一次全文阅读付出的维护费用，用VPS搬到Woodstock, IL后两个月的租价除以这两个月里所有文章被阅读次数的总和得出。想到梦.:如此短暂每被大家访问一次，我就要出1分多钱，有时候还是挺心疼的。当然，租价的一半应该算作我的上网费，实际上没有那么多。
　　随着技术的进步，现在有了在linux上用TUN/TAP构建6to4隧道的方法，提供了进一步下降IPv6 VPN的成本的方案。受此启发，VPS又一次搬家，到了Asheville, NC。但是并没有采取这个方案——因为我用的还是Xen based VPS。实测Native IPv6与Tunnel Broker接入在性能上没什么区别。搬家之后上面那个数值将下降到￥0.0098。
]]></description>
			<content:encoded><![CDATA[<p>　　<strong>￥0.0131</strong>，是我为<span class='wp_keywordlink'><a href="http://www.briefdream.com" title="梦.:如此短暂" rel="nofollow">梦.:如此短暂</a></span>的一篇文章的一次全文阅读付出的维护费用，用VPS搬到Woodstock, IL后两个月的租价除以这两个月里所有文章被阅读次数的总和得出。想到<span class='wp_keywordlink'><a href="http://www.briefdream.com" title="梦.:如此短暂" rel="nofollow">梦.:如此短暂</a></span>每被大家访问一次，我就要出1分多钱，有时候还是挺心疼的。当然，租价的一半应该算作我的上网费，实际上没有那么多。<br />
　　随着技术的进步，现在有了<a href="http://www.lostriver.net/linux-userspace-6to4-tun/">在linux上用TUN/TAP构建6to4隧道</a>的方法，提供了进一步下降<a href="http://www.briefdream.com/ipv6-vpn/">IPv6 VPN</a>的成本的方案。受此启发，VPS又一次搬家，到了Asheville, NC。但是并没有采取这个方案——因为我用的还是Xen based VPS。实测Native IPv6与Tunnel Broker接入在性能上没什么区别。搬家之后上面那个数值将下降到￥0.0098。</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=634&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/notes-on-moving-to-vps/" title="搬家笔记 (2009-08-15)">搬家笔记</a></li>
	<li><a href="http://www.briefdream.com/seeking-vps-co-tenant/" title="寻求合租VPS (2009-07-25)">寻求合租VPS</a></li>
	<li><a href="http://www.briefdream.com/%e8%a7%a3%e5%86%b3%e9%94%99%e8%af%af%e7%9a%84ipv6%e8%b7%af%e7%94%b1%e5%b9%bf%e6%92%ad%e6%80%bb%e7%bb%93/" title="解决错误的IPv6路由广播总结 (2010-01-21)">解决错误的IPv6路由广播总结</a></li>
	<li><a href="http://www.briefdream.com/%e6%95%85%e9%9a%9c%e6%8a%a5%e5%91%8a/" title="故障报告 (2009-09-10)">故障报告</a></li>
	<li><a href="http://www.briefdream.com/%e6%90%ac%e5%ae%b6/" title="搬家 (2009-08-10)">搬家</a></li>
	<li><a href="http://www.briefdream.com/%e6%8b%92%e7%bb%9dipv6%e5%b9%bf%e6%92%ad/" title="拒绝IPv6广播 (2009-10-29)">拒绝IPv6广播</a></li>
	<li><a href="http://www.briefdream.com/%e6%8a%95%e6%88%91%e4%bb%a5%e6%9c%a8%e7%93%9c%ef%bc%8c%e6%8a%a5%e4%b9%8b%e4%bb%a5%e7%90%bc%e7%90%9a/" title="投我以木瓜，报之以琼琚 (2009-08-22)">投我以木瓜，报之以琼琚</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/00131-per-view/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>魏武三诏令</title>
		<link>http://www.briefdream.com/%e9%ad%8f%e6%ad%a6%e4%b8%89%e8%af%8f%e4%bb%a4/</link>
		<comments>http://www.briefdream.com/%e9%ad%8f%e6%ad%a6%e4%b8%89%e8%af%8f%e4%bb%a4/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 02:35:23 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[资源共享]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=629</guid>
		<description><![CDATA[　　看《新宋》中出现过“魏武三诏令”的说法，一直没找到原文。今天找到了。
　　《唯才是举》，建安十五年（210年）春：
自古受命及中兴之君，易尝不得贤人君子与之共治天下者乎？及其得贤也，曾不出阎巷，岂幸相遇哉？上之人不求之耳。今天下尚未定，此特求贤之急时也。“孟公绰为赵、魏老则优，不可以为膝、薛大夫”。若必廉士而后可用，则齐桓其何以霸世！今天下得无有被褐怀玉而钓于渭滨者乎？又得无盗嫂受金而未遇无知者乎？二三子其佐我明扬仄陋，唯才是举，吾得而用之。
……<br /><span class="readmore"><a href="http://www.briefdream.com/%e9%ad%8f%e6%ad%a6%e4%b8%89%e8%af%8f%e4%bb%a4/" title="魏武三诏令">阅读全文——共535字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　看《新宋》中出现过“魏武三诏令”的说法，一直没找到原文。今天找到了。<br />
　　《唯才是举》，建安十五年（210年）春：</p>
<blockquote><p>自古受命及中兴之君，易尝不得贤人君子与之共治天下者乎？及其得贤也，曾不出阎巷，岂幸相遇哉？上之人不求之耳。今天下尚未定，此特求贤之急时也。“孟公绰为赵、魏老则优，不可以为膝、薛大夫”。若必廉士而后可用，则齐桓其何以霸世！今天下得无有被褐怀玉而钓于渭滨者乎？又得无盗嫂受金而未遇无知者乎？二三子其佐我明扬仄陋，唯才是举，吾得而用之。</p></blockquote>
<p>　　《求才令》，建安十九年（214年）：</p>
<blockquote><p>夫有行之士未必能进取，进取之士未必能有行也。陈平岂笃行，苏秦岂守信邪？而陈平定汉业，苏秦济弱燕。由此观之，士有偏短，庸可废乎！有司明恩此义，则士无遗滞，官无废业矣。</p></blockquote>
<p>　　《求才令》，建安二十二年（217年）八月：</p>
<blockquote><p>昔伊挚、傅说出于贱人，管仲，桓公贼也，皆用之以兴。萧何、曹参，县吏也，韩信、陈平负汗辱之名，有见笑之耻，卒能成就王业，声著千载。吴起贪将，杀妻自信，散金求官，母死不归，然在魏，秦人不敢东向；在楚，则三晋不敢南谋。今天下得无有至德之人，放在民间，及果勇不顾，临敌力战：若文俗之吏，高才异质，或堪为将守；负汗辱之名，见笑之行；或不仁不孝，而有治国用兵之术。其各举所知，勿有所疑。</p></blockquote>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=629&type=feed" alt="" />
	<ul class="st-related-posts">
	<li>No related posts.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/%e9%ad%8f%e6%ad%a6%e4%b8%89%e8%af%8f%e4%bb%a4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用GAE同步twitter到人人网状态</title>
		<link>http://www.briefdream.com/sync-twitter-timeline-to-renren-status-via-google-app-engine/</link>
		<comments>http://www.briefdream.com/sync-twitter-timeline-to-renren-status-via-google-app-engine/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 17:34:13 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[renren]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=611</guid>
		<description><![CDATA[　　yegle做过一个同步twitter到人人网状态的PHP脚本，但要求有点高——必须有php-cli组件，估计大多数虚拟主机都没有。Shellex又做了一个用GAE实现的版本，这个可用性高一点，不过他的原版需要webpy和simplejson，需要上传很多东西，而且拼写有错。我改了一下，直接引用django里面的simplejson，再用webapp替换webpy，这样只需要一个文件就能实现了。
……<br /><span class="readmore"><a href="http://www.briefdream.com/sync-twitter-timeline-to-renren-status-via-google-app-engine/" title="用GAE同步twitter到人人网状态">阅读全文——共3923字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　<span class='wp_keywordlink'><a href="http://yegle.net" title="yegle" target="_blank">yegle</a></span>做过一个同步twitter到人人网状态的<a href="http://yegle.net/2009/10/31/php-script-synchronizing-twitter-to-renren/">PHP脚本</a>，但要求有点高——必须有php-cli组件，估计大多数虚拟主机都没有。Shellex又做了一个<a href="http://www.sxnsx.com/sync-twitter-timeline-to-renren-status-by-google-app-engine/">用GAE实现的版本</a>，这个可用性高一点，不过他的原版需要webpy和simplejson，需要上传很多东西，而且拼写有错。我改了一下，直接引用django里面的simplejson，再用webapp替换webpy，这样只需要一个文件就能实现了。<br />
　　纪念<a href="http://docs.google.com/View?id=d8xbpp6_4hhpb2dfd">冯正虎</a>成功回国特别更新：Retweet一并同步。<br />
　　脚本文件twitter2renren.py：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.briefdream.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=611&amp;download=twitter2renren.py">twitter2renren.py</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6116"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
</pre></td><td class="code" id="p611code6"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.6</span>
<span style="color: #808080; font-style: italic;">#coding=utf8</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">Cookie</span>,<span style="color: #dc143c;">urllib</span>
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span> <span style="color: #ff7700;font-weight:bold;">import</span> simplejson
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">api</span> <span style="color: #ff7700;font-weight:bold;">import</span> urlfetch
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">ext</span> <span style="color: #ff7700;font-weight:bold;">import</span> db
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">ext</span> <span style="color: #ff7700;font-weight:bold;">import</span> webapp
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">ext</span>.<span style="color: black;">webapp</span>.<span style="color: black;">util</span> <span style="color: #ff7700;font-weight:bold;">import</span> run_wsgi_app
&nbsp;
renren_usr = <span style="color: #483d8b;">'你的人人网用户名'</span>
renren_passwd = <span style="color: #483d8b;">'人人网密码'</span>
twitter_usr = <span style="color: #483d8b;">'推特用户名'</span>
twitter_passwd = <span style="color: #483d8b;">'推特密码'</span>
last_non_sync_tweet = <span style="color: #483d8b;">'最后一条不需要同步的tweet的id，比如：8726641859'</span>
last_non_sync_retweet = <span style="color: #483d8b;">'8883341324'</span>
&nbsp;
cookie_buf = <span style="color: #dc143c;">Cookie</span>.<span style="color: black;">SimpleCookie</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Record<span style="color: black;">&#40;</span>db.<span style="color: black;">Model</span><span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;">#key is twitter_usr</span>
	last_tweet = db.<span style="color: black;">StringProperty</span><span style="color: black;">&#40;</span>required=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
	last_retweet = db.<span style="color: black;">StringProperty</span><span style="color: black;">&#40;</span>required=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> make_cookie_header<span style="color: black;">&#40;</span>cookie<span style="color: black;">&#41;</span>:
	ret = <span style="color: #483d8b;">''</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> v <span style="color: #ff7700;font-weight:bold;">in</span> cookie.<span style="color: black;">values</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
		ret += <span style="color: #483d8b;">'%s=%s;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>v.<span style="color: black;">key</span>, v.<span style="color: black;">value</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> ret
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> get_tweets <span style="color: black;">&#40;</span>usr, passwd<span style="color: black;">&#41;</span>:
	record = Record.<span style="color: black;">get_or_insert</span><span style="color: black;">&#40;</span>twitter_usr, last_tweet=last_non_sync_tweet, last_retweet=last_non_sync_retweet<span style="color: black;">&#41;</span>
	new_timeline = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
	timeline_uri = <span style="color: #483d8b;">'http://%s:%s@twitter.com/statuses/user_timeline.json?count=10&amp;since_id=%s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>usr, passwd, record.<span style="color: black;">last_tweet</span><span style="color: black;">&#41;</span>
	timeline = simplejson.<span style="color: black;">loads</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>timeline_uri<span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	retweets_uri = <span style="color: #483d8b;">'http://%s:%s@api.twitter.com/1/statuses/retweeted_by_me.json?count=10&amp;since_id=%s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>usr, passwd, record.<span style="color: black;">last_retweet</span><span style="color: black;">&#41;</span>
	retweets = simplejson.<span style="color: black;">loads</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>retweets_uri<span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>timeline<span style="color: black;">&#41;</span> <span style="color: #66cc66;">!</span>= <span style="color: #ff4500;">0</span>:
		record.<span style="color: black;">last_tweet</span> = <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>timeline<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>retweets<span style="color: black;">&#41;</span> <span style="color: #66cc66;">!</span>= <span style="color: #ff4500;">0</span>:
		record.<span style="color: black;">last_retweet</span> = <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>retweets<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	record.<span style="color: black;">put</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> tweet <span style="color: #ff7700;font-weight:bold;">in</span> timeline:
		<span style="color: #ff7700;font-weight:bold;">if</span> tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'text'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">!</span>= <span style="color: #483d8b;">'@'</span> :
			new_timeline.<span style="color: black;">append</span><span style="color: black;">&#40;</span>tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'text'</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> tweet <span style="color: #ff7700;font-weight:bold;">in</span> retweets:
		new_timeline.<span style="color: black;">append</span><span style="color: black;">&#40;</span>tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'text'</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> new_timeline
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> login2renren<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	verify_url = <span style="color: #483d8b;">'http://passport.renren.com/PLogin.do'</span>
	verify_data= <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span>
		<span style="color: #483d8b;">'domain'</span>:<span style="color: #483d8b;">'renren.com'</span>,
		<span style="color: #483d8b;">'email'</span>:  renren_usr,
		<span style="color: #483d8b;">'password'</span>: renren_passwd,
		<span style="color: #483d8b;">'origURL'</span>:<span style="color: #483d8b;">'http://home.renren.com/Home.do'</span>,
	<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
	result = urlfetch.<span style="color: black;">fetch</span><span style="color: black;">&#40;</span>
		url=verify_url,
		headers=<span style="color: black;">&#123;</span>
			<span style="color: #483d8b;">'Cookie'</span>:make_cookie_header<span style="color: black;">&#40;</span>cookie_buf<span style="color: black;">&#41;</span>,
			<span style="color: #483d8b;">'Content-Type'</span>: <span style="color: #483d8b;">'application/x-www-form-urlencoded'</span>,
			<span style="color: #483d8b;">'user-agent'</span>:<span style="color: #483d8b;">'Mozilla/5.0 (Linux; U; Linux i686; en-US) Gecko/20100115 Firefox/3.6'</span>,
		<span style="color: black;">&#125;</span>,
		method=urlfetch.<span style="color: black;">POST</span>,
		payload=verify_data,
		follow_redirects = <span style="color: #008000;">False</span>,
	<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> result
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> do_redirect<span style="color: black;">&#40;</span>url, cookie<span style="color: black;">&#41;</span>:
	result = urlfetch.<span style="color: black;">fetch</span><span style="color: black;">&#40;</span>
		url=url,
		headers=<span style="color: black;">&#123;</span>
			<span style="color: #483d8b;">'Cookie'</span>:make_cookie_header<span style="color: black;">&#40;</span>cookie<span style="color: black;">&#41;</span>,
			<span style="color: #483d8b;">'Content-Type'</span>: <span style="color: #483d8b;">'application/x-www-form-urlencoded'</span>,
			<span style="color: #483d8b;">'user-agent'</span>:<span style="color: #483d8b;">'Mozilla/5.0 (Linux; U; Linux i686; en-US) Gecko/20100115 Firefox/3.6'</span>,
		<span style="color: black;">&#125;</span>,
		method=urlfetch.<span style="color: black;">GET</span>,
		follow_redirects = <span style="color: #008000;">False</span>,
	<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> result
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> send_status<span style="color: black;">&#40;</span>status, cookie<span style="color: black;">&#41;</span>:
	status_url = <span style="color: #483d8b;">'http://status.renren.com/doing/update.do'</span>
	status_data = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span>
		<span style="color: #483d8b;">'c'</span>: status,
		<span style="color: #483d8b;">'raw'</span>: status,
		<span style="color: #483d8b;">'isAtHome'</span>: <span style="color: #ff4500;">0</span>,
	<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
	result = urlfetch.<span style="color: black;">fetch</span><span style="color: black;">&#40;</span>
		url=status_url,
		headers=<span style="color: black;">&#123;</span>
			<span style="color: #483d8b;">'Cookie'</span>:make_cookie_header<span style="color: black;">&#40;</span>cookie<span style="color: black;">&#41;</span>,
			<span style="color: #483d8b;">'Content-Type'</span>: <span style="color: #483d8b;">'application/x-www-form-urlencoded'</span>,
			<span style="color: #483d8b;">'user-agent'</span>:<span style="color: #483d8b;">'Mozilla/5.0 (Linux; U; Linux i686; en-US) Gecko/20100115 Firefox/3.6'</span>,
			<span style="color: #483d8b;">'Referer'</span>: <span style="color: #483d8b;">'http://status.renren.com/ajaxproxy.htm'</span>
		<span style="color: black;">&#125;</span>,
		method=urlfetch.<span style="color: black;">POST</span>,
		payload=status_data,
	<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">return</span> result
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> sync<span style="color: black;">&#40;</span>webapp.<span style="color: black;">RequestHandler</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">def</span> get<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">global</span> cookie_buf
		<span style="color: #808080; font-style: italic;">#get timeline</span>
		timeline = get_tweets<span style="color: black;">&#40;</span>twitter_usr, twitter_passwd<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>timeline<span style="color: black;">&#41;</span> == <span style="color: #ff4500;">0</span>:
			<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">'no tweets to sync.'</span>
		<span style="color: #808080; font-style: italic;">#login to renren</span>
		result = login2renren<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		cookie_buf = <span style="color: #dc143c;">Cookie</span>.<span style="color: black;">SimpleCookie</span><span style="color: black;">&#40;</span>result.<span style="color: black;">headers</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'set-cookie'</span>, <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
		callback_url = result.<span style="color: black;">headers</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'location'</span>,<span style="color: #483d8b;">'xx'</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
		result = do_redirect<span style="color: black;">&#40;</span>callback_url, cookie_buf<span style="color: black;">&#41;</span>
		cookie_buf = <span style="color: #dc143c;">Cookie</span>.<span style="color: black;">SimpleCookie</span><span style="color: black;">&#40;</span>result.<span style="color: black;">headers</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'set-cookie'</span>, <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;">#post status</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> tweet <span style="color: #ff7700;font-weight:bold;">in</span> timeline:
			result = send_status<span style="color: black;">&#40;</span>tweet, cookie_buf<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">'ok'</span>
&nbsp;
application = webapp.<span style="color: black;">WSGIApplication</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/twitter2renren'</span>, sync<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
	run_wsgi_app<span style="color: black;">&#40;</span>application<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>　　配置文件cron.yaml，每5分钟触发一次：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.briefdream.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=611&amp;download=cron.yaml">cron.yaml</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6117"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p611code7"><pre class="ini" style="font-family:monospace;">cron:
- description: twitter2renren
  url: /twitter2renren
  schedule: every <span style="">5</span> minutes</pre></td></tr></table></div>

<p>　　配置文件app.yaml，限制只有管理员才能访问/twitter2renren：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.briefdream.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=611&amp;download=app.yaml">app.yaml</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6118"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p611code8"><pre class="ini" style="font-family:monospace;">application: 你的app名字
version: <span style="">8</span>
runtime: python
api_version: <span style="">1</span>
&nbsp;
handlers:
- url: /twitter2renren
  script: twitter2renren.py
  login: admin</pre></td></tr></table></div>

<p>　　另：前天刚拿到一个SAE的帐号，不知道能干点什么用……有谁知道的，请悄悄告诉我……</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=611&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/" title="基于PubSubHubbub的Feed实时同步到Twitter服务 (2010-03-03)">基于PubSubHubbub的Feed实时同步到Twitter服务</a></li>
	<li><a href="http://www.briefdream.com/%e7%9a%8e%e7%9a%8e%e7%99%bd%e9%a9%b9%ef%bc%8c%e9%a3%9f%e6%88%91%e5%9c%ba%e8%8b%97/" title="皎皎白驹，食我场苗 (2009-12-05)">皎皎白驹，食我场苗</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/sync-twitter-timeline-to-renren-status-via-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>素棺</title>
		<link>http://www.briefdream.com/%e7%b4%a0%e6%a3%ba/</link>
		<comments>http://www.briefdream.com/%e7%b4%a0%e6%a3%ba/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:35:40 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[他山之石]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=617</guid>
		<description><![CDATA[转载自《纵览中国》
首发于《纵览中国》
素棺
作者：郑义
……<br /><span class="readmore"><a href="http://www.briefdream.com/%e7%b4%a0%e6%a3%ba/" title="素棺">阅读全文——共23004字</a></span>]]></description>
			<content:encoded><![CDATA[<blockquote><p>转载自<a href="http://www.chinainperspective.com/">《纵览中国》</a><br />
首发于《纵览中国》</p></blockquote>
<p align=center><strong>素棺</strong><br />
作者：郑义</p>
<p align="center">
1<br />
<a href="/wp-content/media/suguan1.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan1.jpg" alt="" title="素棺-葬礼" width="553" height="362" class="aligncenter size-full wp-image-618" /></a>
</p>
<p>　　2005年4月8日上午。罗马梵蒂冈。<br />
　　教宗约翰·保罗二世丧礼。<br />
　　当人们肩着那棺材从圣彼得大教堂高大的门厅出来，通过几棵苍翠的盆栽棕榈树，走进南欧那如葡萄酒般令人微醺的春风——<br />
　　我眼前顿时一亮：一个长形木箱，一个包装箱！<br />
　　温存明澈的阳光下，人们将装敛着84岁教宗的木箱抬到圣彼得广场中央，直接放置於一块红地毯上。后来我知道这是教宗的遗愿，一个基督徒应有的谦恭。高低尊卑是人类通感，无须翻译。按照中国汉地习俗，棺木应以特制的名为“交木”的高凳支起，以取“离地三尺即成佛”之美意。这位德行圣洁、地位崇高的老人，却直接躺卧在大地上，一个降卑得不能再低的位置。<br />
　　来自全球的二百多位国王、王后、总统、总理和首相，亲见这只俭朴的木箱从大教堂暗影中抬出来，置于他们脚下。不知道这些尊贵显赫的人作何感想，我分明感觉到某种来自心灵的震撼。<br />
　　我曾经是一个木匠。一瞬之间，我觉得我领悟了教宗棺材所隐含的意义。<br />
　　一个高贵的灵魂在离世之际向我们表达的谦卑。<br />
　　如葡萄酒般令人沉醉的春风中，棕榈树舞动着优美纤细如诗如歌的树叶……</p>
<p align="center">
2<br />
<a href="/wp-content/media/suguan4.png" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan4.png" alt="" title="素棺-葬礼" width="296" height="216" class="aligncenter size-full wp-image-621" /></a>
</p>
<p>　　从电视画面上，以人身高为参照，我迅速作出了习惯性的职业判断：高不及膝，大约50厘米上下，长约两米。从木色及疤节看，材质为最常见的松柏木。板子不算厚，5厘米左右。榫卯粘接，最简捷最传统的木箱结构。准确地说，这不是棺材，而是一只木箱，一只没有油漆的长木箱。用木匠的行话来说，一只“白皮木匣子”。我们甚至不会说“白皮棺材”，因为棺材是有讲究的，不能如此简陋。<br />
　　年轻时，我当过乡村木匠，还做过建筑木工，打造过不少棺材。常常是下班收工之前，木工厂的头儿走进机声喧嚣的车间来布置任务。他大声吆喝道：嘿，歇歇……又使劲拍巴掌，或者随手拿起一根木方子敲打靠门口的木工案。待电刨子电锯都停下来，便宣布某某师傅过世了，今天辛苦大家加个班，赶做一口棺材。孝子就在车间门口跪下，向散布於各式工作台边的木工们磕个头，低声说有劳各位师傅了。老木工们就说，赶紧、赶紧起来，赶紧地……嗨嗨，你爹他咋说走就走了！孝子递过来几封点心饼干，放在就近的木案上。头儿就说，大家先垫巴垫巴，赶完了工，晚上，主家在食堂预备了一桌酒菜，有酒啊！一听有酒有菜，弟兄们就乐了，也顾不得孝子还没走，车间里吆喝成一片：听见没，有酒啊！今儿晚上做个圆的！——所谓“圆的”，是指棺材盖和两块侧帮要做出弧度，看上去很排场，正儿八经的棺材模样儿。这三块大板要做出弧度，是要多流点汗的。拼板对缝要掌握好角度，燕尾榫也不好打，最后还要用手工刨推出平滑光洁的弧面。总而言之，那几口酒也不是白喝的。若无酒菜，等孝子一离去，弟兄们就会叫唤：肚儿都混不圆，棺材也没法儿圆！那一晚，就只能对付一口平板棺材了。<br />
　　下班前，制材厂便用卡车送来新锯解出的松木板材，木香四溢，至少有两寸厚，超过了教宗的棺材。照老规矩，越是富贵之人，棺材板就越厚。一位令人敬重的老木工师傅过世，弟兄们心里不好过，也发表不出如何感人的悼词，只知道闷起头来把棺材往好里做。一不小心，棺材板就厚得出了格儿。这具木工厂历史上最排场的棺材什么都好，就是太重，多少人也抬它不动，最后是动用了吊车。<br />
　　如此，依我制作棺材的经验，教宗的棺材实在未入流，不能称之为棺材，只能说是一只没上漆的白皮木匣子。正儿八经的好棺材，除了材质优良，做工精美，还须油漆彩绘。在我插队的太行山区，旧时士绅家棺材，每年都要用大漆油一遍，七八遍下来，真是油光瓦亮。有的还烫松香，二三百斤松香烫上去，日后棺材朽烂如泥，这松香壳子也是巍然不动的。大财主家，舍得花钱，还要贴金彩绘，画上些松柏梅竹、鹿鹤龙凤等吉祥物。有的则画了宛如仙境的庄园别墅、亭台楼阁，叫老人看了高兴，也显出后人的孝敬。现如今中国人盛钱了，棺材也就与时俱进，更为阔绰排场。贴金彩绘不算了，讲究起精雕细刻、“工艺棺材”。什么“百寿全浮雕”、“百福全浮雕”、“九龙全浮雕”、“龙凤线雕”等等，死都死出了“千年盛世”之气派。<br />
　　这样比照下来，教宗那只薄薄的未漆未画未雕的木匣子，即便勉强称之为棺材，也是一具白茬棺材——素棺。约翰·保罗二世，怎么说也是一位大人物，按照中国大陆的翻译，是“教皇”，应享九五之尊的。当然那译法饶有深意，事情做得不够正派。“教宗”“教皇”皆意译，其拉丁文原文是papa，即父亲之昵称 “爸爸”，并无一丝“皇帝”的意思。大陆之外通常译为 “教宗”，祖宗、宗庙之宗，是取其头衔中“教会创始人圣彼得继承者”之意。即便如此，即便不是“教皇”而是“教宗”，不是“皇帝”而是“宗徒”，也不应该是一具素棺就抬出去埋了的。<br />
　　我觉得我应该写一写教宗的素棺以及与之相关的种种故事了。当过木匠的作家恐怕不算很多，做过棺材的作家就更少了。当过木匠做过棺材并亲睹教宗葬仪且为素棺所震动的作家，全世界有几位呢？</p>
<p align="center">3</p>
<p>　　后来媒体报道证实，教宗的素棺确系柏木打造。就心中不免小有自得：当年辨认木材的基本功未曾荒废。中国民间也喜爱以柏木为棺，芳香防腐，又是常见树种，经济实惠。可惜大树伐尽，时下已找不到可割制棺材的大料，能用柏木做个棺材堵头，也就不错了。对於基督教，柏木则更是一种情感的载体。柏木在《圣经》里被称为香柏木，用於祭祀和建筑。所罗门王所建的神殿，就是以香柏木做栋梁、做墙围，做祭坛。这种圣经作家经常提及的与神相关的树木，自然给信众以特殊的亲切感。<br />
　　在中国古代，棺木以梓木、楠木为最佳。这两种木头，皆质地温润柔和，木理文静典雅，不易变形，百年不朽。古代帝王将相多以梓木、楠木为棺。可惜梓木已基本砍光，现从美国进口。楠木离绝种不远，早就见不到了。制作棺材的材料，除木材之外，还有铜、石等等。铜棺自然昂贵，石棺若选用大理石花岗石等优质石料，再加以雕刻打磨，也是只有帝王可享用的。<br />
　　还有一种棺材叫船棺，是中国南方古老葬具。顾名思义，其状如船，如独木舟，一般用整段巨木刳成。底部盛尸，两头微翘，如船头尾。棺盖作半圆形，也是一段刳空的树木，如遮阳避雨的船篷。迄今发现的最古老船棺，是悬葬於武夷山岩洞中的两具，均用整段楠木刳成，与现今闽南等地使用的渔船形制相仿。经碳素测定，制作时间距今三四千年以上，大致与埃及金字塔同期或稍晚。江河难以涉渡，使初民幻想生死之间必有一水为分野。以船为棺，或是想让死者魂灵渡过天上银河，返回遥远之故乡。这真是一个关于永生的美好期盼。<br />
　　历史步入当代，十月革命一声炮响，不仅给人类带来一种崭新的社会制度，也同时带来一种极具创意的葬具——水晶棺。这里面就有了新故事，是与教宗素棺和历史上一切葬具大异其趣的。</p>
<p align="center">4</p>
<p>　　人类历史上第一具水晶棺是供奉列宁的。他缔造了无产专政，从巨掌中释放出雷电、烈火与旷世大饥馑，是始皇帝，自然应该以不朽之躯光照万代。以天然水晶制棺，绝非易事。按照苏俄早期的技术条件，估计也就是称之为人造水晶的高铅玻璃。更困难的是遗体防腐：既要瞻仰，便不能像古埃及木乃伊那般用香料麻布缠裹起来，还要保持庄严安详，栩栩如生。奉命参与其事的医生们害怕试验失败惨遭不测，一个个虚与委蛇。惟有一名犹太籍生物化学家泽巴尔斯基同志敢冒风险，配制出一种神奇防腐液。从此，他便成了已故领袖的首席御医，年年岁岁与尸身为伴。每周两次开棺，把遗体送进消毒室检查、涂药。每十八个月把遗体放入防腐液浸泡两周。但遗体之腐烂不可阻止，上世纪三十年代，替换了部分开始腐烂的皮肤和双手指骨。二次世界大战期间，德军逼近莫斯科，列宁遗体被送上一列装甲火车，紧急转移到西伯利亚油田。泽巴尔斯基和他的同事们充分利用了“天高皇帝远”的自由，施行了一次奇迹般的“青春疗法”：他们清除了列宁皮肤上的色斑，填高了已塌陷的鼻子和眼睛，以至於战争结束返回莫斯科后，人们感觉列宁的容貌似乎比刚去世时还年轻。惜乎好景不长，尸体继续腐烂，只好再截去一条腿和部分左手，代以假肢。至六十年代，遗体再次大面积腐烂，势不可挡，即便像致力于核弹、航天研究那般不惜工本，也莫可奈何。不得不将头颅取下，安装在人造躯体上。手术精湛，天衣无缝。没人能看出丝毫破绽。<br />
　　因保护列宁遗体厥功甚伟，泽巴尔斯基先后被赐封了一大堆名号勋章。斯大林多疑。列宁的其他近侍，如列宁陵墓指挥部的几任司令，包括列宁早期的卫队长，皆先后被秘密处决。一位与泽巴尔斯基亲密合作的著名教授也神秘死亡。在忠实守护列宁遗体25年之后，泽巴尔斯基也成了克里姆林宫锦衣卫的下一个猎物。斯大林在报告上批示：“在没有找到可靠的替代人选之前，不要动手。”自然，被克格勃惦记上了的泽巴尔斯基最终也未能逃脱厄运，但没有杀头，仅仅是被捕入狱。他的儿子小泽巴尔斯基奉旨接班，先后参加了斯大林、胡志明、金日成等一干共产领袖的遗体保存，成为一代偶像制作大师。</p>
<p align="center">
5<br />
<a href="/wp-content/media/suguan3.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan3.jpg" alt="" title="素棺-斯大林" width="557" height="326" class="aligncenter size-full wp-image-620" /></a>
</p>
<p>　　斯大林去见马克思时，老泽巴尔斯基还在吃牢饭，但他所发明的神奇防腐液和遗体处理秘技却流传下来。斯大林停止呼吸两小时後，遗体就被送到列宁墓下面的特别生物实验室进行解剖和初步处理，然後再运去参加规模盛大的追悼仪式。其后，防腐处理进行了三个月，同时赶制出新水晶棺。由于初期防腐处理及时，斯大林遗体状况绝佳，本当永垂不朽，却不料八年后的1961年深秋，为了加速推行“非斯大林化”，苏共22大正式通过决议，将斯大林遗体移出列宁墓。此时，已是赫鲁晓夫秘密报告第六个年头了。<br />
　　决议通过当晚，红场实行戒严。<br />
　　克里姆林宫卫队开启水晶棺，把斯大林请出来，安放到一个普通木棺内。匆忙之中，没忘记把元帅礼服上的黄金纽扣换成铜的。遗体覆以黑纱，露出脸和半个胸部。然后钉上棺盖，由八名军官抬到克里姆林宫红墙下一个刚掘出的土坑边。简短默哀后，埋进墓穴。有人证实，新土上又倾倒了几车混凝土。那意思是永远埋葬，再也不可能爬出来了。<br />
　　多年后，一位当时在现场的守墓士兵来到《共青团真理报》编辑部，披露了一段鲜为人知的轶事：就在迁葬那晚，红场上聚集了大批斯大林的格鲁吉亚老乡，打算阻止迁葬行动。情绪激动的老乡们冲到陵墓前，与守墓士兵们扭打，抢夺枪支。精锐的“捷尔仁斯基师”紧急出动，“像扔柴禾一般，把在场的格鲁吉亚人统统扔上卡车；洒水车则将死者血迹冲洗干净。”<br />
　　奴隶为暴君打抱不平，却又遭习惯性野蛮弹压，这真是双重的悲剧，委实令人无言以对而唯有叹息。</p>
<p align="center">6</p>
<p>　　水晶棺俨然成为共产帝国之祖制，就连以简朴著称的胡志明也不能不躬行如仪。胡撒手尘寰是在越南战争结束之前的1969年初秋，有幸没看到数百万民众投奔怒海的最后一幕。据估计，出逃者中只有半数抵达了自由的彼岸，另外一半因饥饿、脱水、风浪、船只损坏或海盗攻击而命丧大海。<br />
　　早在胡志明逝世前两年，越共高层就秘密派出专家组远赴苏联，接受列宁陵墓研究院专家培训，掌握了人死之后最初二十小时防腐绝技。胡病危期间，苏联专家组便赶到河内，准备随时伺候。胡刚咽气，装载遗体的车队便开出主席府，驶离首都。适逢战时，为躲避美国飞机猛烈空袭，军队在距河内三十公里的某处热带丛林中抢建了一座临时地宫。在这个代号为75A的秘密基地内，专家们取出死者全部内脏，清洗了整个循环系统，直至每一根毛细血管，然后整容、定型，移入水晶棺。动作之快，真正是尸骨未寒。由是之故，胡志明遗体状况远较列宁及后来的毛泽东为好，与斯大林不相伯仲。<br />
　　始料未及的是，不旋踵，这个临时地宫附近居然发现了美军伞兵。虽合乎逻辑的判断是搜寻失踪的飞行员，但亦不敢掉以轻心，连忙再次转移。新的避难所建在一山洞里，距75A基地约七十公里，代号为K84。为保密计，运送水晶棺的装甲车只在夜间行动。为躲避美军空中巡视，每修筑一段山路，就让装甲车走一段，随即连夜将这段山路毁掉，恢复原植被。如此走走停停，夜行昼匿，耗时十余天，装甲车才走完这段并不漫长的路程。这次密林转移所表现出来的智慧和情感，实令人感谓。<br />
　　三年半后，1973年初,美越巴黎和谈达成协议，胡遗体再次迁回75A。再两年后，官式陵墓落成，胡志明躺在水晶棺里返回首部河内，永享香烟。</p>
<p align="center">7</p>
<p>　　在胡志明水晶棺里，他的脚边，放置了一双用废旧轮胎制作的“抗战鞋”，以示死者生前之克俭。（这与毛泽东穿了几十年打了73个补丁的睡衣颇有异曲同工之妙。）但以举国之力建造的陵墓、水晶棺以及尸身防腐的巨额费用，不能不使人生出某种反讽，并联想起另一类棺材，那些属于赤贫者、被屠戮者、被驱策而枉死者、被剥夺被凌辱者的最后长眠之所。<br />
　　我在长篇小说《神树》里写过一种“活底棺材”。那是文革后期太行山区的新生事物。说人死了不给国家作贡献，还要占口棺材，要破旧立新，移风易俗，其实也真是缺木料。老辈人栽的，山坳里长的，只要是树，都砍绝了。这种“活底棺材”，也不知系何人所发明，棺材底是活的，抬到墓坑上，开关一搬，死人就翻进坑里。摔得灰头土脸，如同摔死狗一般。气不过的，就偷偷半夜刨开，给死人擦了脸，一床棉被一裹，两口大瓮一对，将就着一埋，也就算送了终。不过话说回来，那时节，用棺材埋人还是颇有风险的。许多棺材刚埋进去，夜里就有人刨出来。不是盗陪葬，而是要木头。最早唱出“东方红太阳升中国出了个毛泽东”的陕西省佳县（即原葭县）张庄，在强迫集体化之后就盗墓成风。张庄离县城近，消息灵通，城里谁家白天埋人了，晚上就去把棺材板刨出来，锯成薄板、木方，再制成风箱炕桌箱柜椅凳，拿到城里去卖，然后到“黑市”上买点粮食回来过日子。这样看来，“活底棺材”也还是有几分道理的。<br />
　　韩战期间有一种“布棺材”。战死的中国军人，一般就地掩埋。布棺材是一人形单层白布套，中间开缝，一边系带。人刚死，尸身柔软，用布棺材摆弄好了，就像是一堆堆白面袋。一位军队文化教员回忆道：“覆盖在布棺材上只有薄薄一层土，两三寸左右。下雨天，每个低矮的小坟头四周汪著淡红的血水。大雨滂沱时，就溅起粉红色水珠。雨水浸泡著尸体，经久仍流出淡红的血，奇怪极了，惨极了……”其实这也无可厚非，战争环境，不得已而为之。按当时规定，只有战斗英雄、团以上干部、立过一等功的营级干部须运回国安葬，其余的，就都“青山处处埋忠骨”了。<br />
　　毛时代，饿死累死的右派反革命一般没有棺材，挖个坑盖点土就算很“革命人道主义”。开头还插块木牌子，写上劳教人员某某之墓，后来死人多了，来不及一个个埋，就一批批埋。有的劳改农场用推土机挖大坑，一层一层地，就像纳粹在奥斯威辛集中营那么摞起来埋。杀人不当回事，随便安个罪名，拖出去就毙了，每次还要全体列队观礼。见多了，生死就无所谓了。被杀的人也坦然，说，“我们死了有个好棺材——狼肚皮！”山上狼多，枪毙了的人草草埋点土，都被狼掏出来吃了，此谓“狼肚皮棺材”。虽为黑色幽默之语，但确凿装过无数死者。纵然无法归入任何棺材分类学纲目，仍为现实之一种，或可略带一笔，聊作红朝志异。</p>
<p align="center">8</p>
<p>　　胡志明是杀人百万级的，毛泽东是杀人千万级的，至少在人数上超过了斯大林，自然更加伟大，是更应该享用水晶棺的。毛驾崩之后，中共“一号工程”紧急下达：赶制水晶棺，以供万世瞻仰。<br />
　　上面只是一句话，下面可就为难死了：世上仅苏联有制造水晶棺的经验，可现在不相往来，上哪儿打听去呢？有人记起孙中山逝世时，曾向苏联订购了一具水晶棺，没用上，便寻到香山公园某库房，找到这具尘封已久的水晶棺。一看之下，大失所望：不过是镀镍钢框架玻璃棺，哪里是什么水晶！而且玻璃不厚，易破碎，密封隔热性能都不好。据驻外使馆提供的资讯，列宁、胡志明的水晶棺也是金属框架支撑，还有光学缺陷，看来也不是真正的水晶。称之为水晶棺，不过是特种玻璃的一种过誉之词。但是，“一号工程”明确指令的是“一个世界一流的水晶棺”，谁又敢降格以求，用特种玻璃取代？于是，“水晶棺”这一美称这一传说这一关于肉身不朽的痴迷，因一位绝代君王之死而不敢不成为现实。<br />
　　水晶，古老又稀有，亦称“水精”、“水玉”。透明石英的结晶体。硬度为7，殊难加工。过去，珠宝商查验水晶，皆手持一小钢锉，刻不出划痕者方为真品。一颗宝石级珍珠之长成不过需时数年，水晶却需数百年甚至数千万年。水晶尚有一神奇特性——吸收阳光，储存的阳光越充足越是灿烂。因其贵重、佳美、奇异，遂成为制作名贵首饰的材料，水晶钻石便是其中之极品。材质较钻石经济，却视觉上又如钻石般光艳夺目。全世界顶级“水钻”出产於莱茵河北岸，叫做奥地利施华洛钻，简称奥钻。与之一河相隔的捷克钻也算是名钻，但吸引阳光能力不如奥钻，不如奥钻璀璨炫目。<br />
　　一具棺材之所需，可制作上亿颗水钻了吧？<br />
　　那些年，用中共自己的话来说，“国民经济已到了崩溃的边沿”。</p>
<p align="center">9</p>
<p>　　天然水晶蕴藏量极为有限。南美巴西独占全球总量百分之九十，剩下的零头，分散于包括中国在内的三十几个国家，其稀少可想而知了。中国最好的水晶集中在江苏东海县105矿，是一个保密单位，因天然水晶是国防战略物资。既是御制水晶棺，则无所不尽其极，所用矿石要晶莹剔透，无丝毫杂质，每立方米所含气泡还不能超过2个。在军队看守下，选矿工人们不眠不休，从数万块矿石里一块块精选出超级水晶32吨，用飞机火车分批送至北京。<br />
　　研制工作交付给北京、上海和锦州三个保密厂协同完成。为稳妥起见，试制时没敢用天然水晶，而以K9人造水晶代替。昏天黑地的5个月后，北京玻璃总厂试制的1号棺送交审查。博物馆大展厅，水晶棺里是一个穿好衣服的人体模型，头是毛的石膏像。灯光亮起，不料棺壁上出现了几个映像。中央领导们紧张了，转过来再转过去，说“怎么看见有五个‘红太阳’啊？这个问题一定得解决。我们只能有一个‘红太阳’。”<br />
　　当然只能有一个“红太阳”！1号棺被否定。紧接着的2号棺也失败在“红太阳”的数目上。天无二日，自古皆然。但连影儿也不能有，就有点象笑话了。经不懈努力，3号棺终於成功。“红太阳”不仅活着是唯一的，死后也是唯一的。<br />
　　接下来，就是用昂贵的天然水晶真刀真枪地做4号棺了。<br />
　　天然水晶很小，眼镜片大小的也罕见。制造超大型水晶板材，全世界也没有成熟工艺。情急之中，只好祭出“蚂蚁啃骨头”之看家本事。先把水晶研磨成粉状，再把水晶粉熔炼成几厘米见方的小块，最后把小水晶块一块块往大里熔接。水晶熔点超过钢铁，高达摄氏1700度，必须在熔化的一瞬间完成焊接，若参入一个气泡或一丝杂质，那就意味着整块水晶大板完全报废。这种高温高难度高政治风险的超级工艺，无人敢于一试。在反复动员下，一位石姓老技工斗胆走上了操作位置。从那个时代过来的人都明白：他必定是三代工农，如他所熔焊的超纯度水晶，用显微镜也找不出丝毫疵瑕。1700度的高温下，他紧盯焊缝精心操作，厚厚的金属防护服上青烟缭绕，还有专人往身上浇水。后来敢上手的人多了，进度这才加快。但每次的熔焊量以克计，而整个水晶棺重约两吨。工人们说，越往后，人的胆子就越小，生怕出现一丝杂质而前功尽弃。<br />
　　1977年毛泽东逝世周年前夕，一具世界史上名副其实的水晶棺终于制成。此为4号棺。为了应付地震、战争、破坏、损耗等意外事件，又制做了5号棺。<br />
　　最终完成的水晶棺，实际的长、宽、高数据，精确到百分之一毫米，不到一根头发丝粗细。<br />
　　为保证呈梯形的棺体真空拼接，其板材长宽之比允许误差为万分之一。<br />
　　水晶棺石英纯度达到了“六个九”——99.9999％，即杂质含量为百万分之一。<br />
　　这种水晶棺，全世界从来没人再也没人能做出来，从亘古直到永远。</p>
<p align="center">
10<br />
<a href="/wp-content/media/suguan2.gif" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan2.gif" alt="" title="素棺-毛泽东水晶棺" width="600" height="420" class="aligncenter size-full wp-image-619" /></a>
</p>
<p>　　毛的水晶棺，除北京玻璃总厂的这先后五具，上海、四川等地还自行制做了二十余具，以表达对已故君王的抑制不住的热爱。<br />
　　所有这些水晶棺奇迹，皆指向一个最终的奇迹——肉身不朽。<br />
　　遗憾的是，此一终极关怀已不可能实现——<br />
　　毛泽东逝世当日，遗体只进行了一般性防腐处理。按照中共峰层最初安排，遗体将在吊唁活动结束后火化。因毛生前曾号召火葬，并带头在文告上签字画押。始料不及的是，内部党争激烈，次日又做出永垂不朽的决议。朝令夕改，这就给紧急召来的专家学者们出了天大难题：要长期防腐，须死后两小时取出内脏，并把全身血管，包括毛细血管洗净，然后注入防腐剂。现在血液没有及时放掉，要做长期防腐为时已晚。别无他方，御医们只好立即往遗体里灌注常规性防腐剂福尔马林。灌到文献要求的16升，无人敢叫停，一直把毛灌得全身肿胀，表皮光亮，防腐液如汗水从毛孔中渗出。此刻的毛，形象怪诞，全身肿胀，脸如气球，颈头同粗，两耳外翘。毛的贴身秘书张玉凤指责道：“你们把主席搞成这个样子，中央能同意吗？”如寒冰般凝结的气氛中，有人吓得几乎虚脱。於是，人们又用毛巾垫上棉花揉挤毛的脸和脖颈，试图将液体挤到深部和胸腔里去。有位年轻医生用力稍大，把脸右侧皮肤擦掉一小块，吓得浑身发抖。多亏一沉着冷静的老专家，用棉花棒沾上凡士林和黄色颜料细心涂抹，总算看不出来了。经长时间揉挤，毛面部退肿，两耳外翘已不明显，颈部还粗。但灾难总算过去，勉强可供瞻仰了。<br />
　　接下来，就应该对遗体进行永久保存的处理了。遗体保护小组的专家们完全束手无策。本应向苏联讨教，但苏联是毛生前最痛恨的“修正主义”，水火不容，还在乌苏里江上打了一仗。于是，只好转而向其真传弟子越南求助。越南人不仅掌握了苏联遗体防腐的全套秘笈，且出于蓝而青于蓝。在中苏冲突中，越南一向骑墙。这次故伎重演，只传授初期保存技术，中期和长期技术则秘而不宣。既给了中国面子，又不致得罪苏联。<br />
　　如此，只有“自力更生”了。高层一声令下，一批处于被监视劳改状态的专家学者即刻“解放”。 有人上午还在“五七干校” 放牛啃窝头，下午就被紧急装上飞机，到北京方知所为何故。<br />
　　列宁遗体，二十年后开始大面积腐败，四十年后烂光，仅剩一颗头颅。毛已陈尸三十余年，大约也烂得差不多了吧？对此，当局已有万全之策，早就做了一真假莫辩的蜡像，烂光了又如何？</p>
<p align="center">11</p>
<p>　　就在人家那些保密厂、劳动模范、优秀党员精心研制水晶棺同时，我们木工厂的弟兄们也隔三差五地打造些寻常木棺。汗流浃背，兴高采烈，为了午夜之后一桌简单的酒菜。如若一段时间喝不上酒，就会怅然若失地互相打问：嘿，怎么不死人啦？老师傅们就会说，等春天看吧，一开春就忙不过来了。我就一边推着刨子，怔怔地看着从刨口翻出来的一缕缕刨花，纳闷着：怎么会是春天，那不是万物复苏的季节吗？<br />
　　就在毛泽东逝世那年，记不清季节了，我还单独打了一口棺材。<br />
　　凭一人之力做棺材很少见，因为棺材料太厚重，一个人奈何不得。但我打的这棺材是穷人的，不重，只能算木匣子。一日，运输队修理工黑小寻来，说弟弟死了，给打口棺材吧。黑小是个人见人爱的好小伙儿。相貌英俊，个子高而匀称，家境贫寒，几十块工资养活着他妈和两个上学的弟弟。一年四季总穿件沾满机油的破工作服。冬天在室外修车，顶风冒雪的，就套上件同样油腻破烂的小棉袄。一年三百六十五天，几千人的大单位，无论谁喊一声“黑小”，就一准会看见一张向他扭过来的笑盈盈的油花脸。黑小那绵善好像是从娘胎里带来的。二十岁出头，正是不服气爱惹事的年纪，却从未见过他跟谁红过脸。又聪明能干，修车技术一流，再加上仗义，淳朴、诚实，搁在今天，全中国恐怕找不出几个了。私下喜欢他的姑娘不少，敢谈婚论嫁的就不好说了——太穷，在那个穷困时代里也是数得着的穷！<br />
　　从来不求我的黑小说他弟弟死了，我也不敢多问，背上帆布工具袋，拎两张锯就跟他走。他家远在几百里之外，一座小城边上。记得是土房，一户户，用板皮子钉成的栅栏隔开。一家人红着眼圈儿，我就自己四处踅摸木料。拆了副旧床板，院角上找了几块厚薄不一的杂木，似乎还从栅栏上撬下来几块厚实点的板皮子，锯一锯钉一钉，好歹凑成了一口不大不小的薄棺材。我心里明白，这哪里是啥棺材，埋人的匣子吧，到地方不散就行。合力把他弟从炕上抬过来装进去，十多岁的大孩子了，怎么说病就死呢！把“木匣子”盖上后，我抬起头，看黑小一眼，问：怎么着？黑小红着眼说，钉吧。我抓起一把大钉子，闷头就钉。哭声顿起，剩下的一家三口，围在棺材边喊那孩子小名，哭叫道：“躲钉！躲钉啊……”我心里一颤，就更发狠地抡圆斧子钉。板子太薄，钉子稍微一偏就会出头。虽然留心尽量钉正，但想着钉尖下是个苦孩子，心里咋也不好受。“他娘的，没讲究，没讲究……”就一边钉一边默念着安慰自己，“没讲究，没讲究，咱穷人家有他娘的啥讲究呢！”<br />
　　然后，抬到郊外，挖个坑，埋了。</p>
<p align="center">12</p>
<p>　　毛泽东去世十八年后，金日成也骤然辞世。他不独是朝鲜人民的金太阳，也是世界革命的伟大领袖，自然应盛敛于水晶棺，以光照千秋。<br />
　　金日成死得突然。1994年盛夏某夜，金从外地视察回来，甫坐定，便得知一位亲随上将病故。追问病因，答称脑溢血。又问如何救治，答称保守疗法。金气得浑身哆嗦，拍案大怒，问“为何不开颅抢救？这些医生就怕负责任！是不是住的烽火医院？把院长叫来，给我说清楚！”话音刚落，便呼吸困难，骤然倒地。周围乱作一团，急呼直升飞机抢救。时逢夜雨，直升机慌不择路，竟撞在山腰上坠毁。第二架直升机随即起飞，战战兢兢避山而行，停落在别墅外一箭之地。保健医生及一众亲随撑著雨伞，用担架将金日成抬上飞机，急赴平壤烽火医院抢救。保健医生当时便诊断系心脏病突发，本应就地抢救而不能大动，但责任过于重大，御医乱了方寸。经如此一番折腾，烽火医院亦回天无术。几小时后，金日成失去生命迹象。医院院长和保健医生被捕入狱。朝鲜举国致哀，如天塌地陷。全国两千二百万人口，至平壤吊唁的竟达一千万。也就是说，除老人孩子，几乎所有青壮男女都去了。举行国葬时，台上金正日率百官守灵，台下百万群众哭声震天，晕死者不计其数。<br />
　　金日成是朝鲜人民的父亲加天神。在中小学课本里，金手持从日本人那里缴获的老三八式步枪，当着彭德怀面，一枪击落一架美国飞机。还当着一群天真孩童之面，用一粒花池里随手捡起的石子，挥手间击落一颗美国卫星。一位西方肖像画家曾如是说：“我第一次拜会主席的瞬间被无法言明的灵感所笼罩。他的尊颜中散发出的全知全能和博爱之光芒，是我此前所不敢描绘的上帝之崇高形象。我画的不是人的肖像，而是上帝的肖像。”<br />
　　同志们，说的何其好啊！它道出了偶像崇拜的秘密：以人凌驾于神，把人性的罪恶神圣化，把那些以杀戮、抢掠、仇恨、奸淫、欺骗为业的暴君尊为上帝。</p>
<p align="center"><a href="/wp-content/media/suguan5.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan5.jpg" alt="" title="素棺-金日成" width="589" height="413" class="aligncenter size-full wp-image-622" /></a></p>
<p>　　金上帝的遗体也是由前苏联专家做永久防腐，然后高卧于鲜花簇拥的水晶棺，供人恸哭顶礼。参拜者要通过顶级安检，禁止携带任何物品。要在自动清洁地毯上除尽鞋底尘土，再经吸入式过滤器彻底清除衣服上的细菌。到得金日成寝宫，参观者要绕水晶棺一周，从东西南北四个方向，分别向领袖深深鞠躬。许多人难以抑制，放声痛哭。最令人难忘的是通往寝宫的通道，这是一条长达七八百米的电动走廊，其速度之慢，或为世界之最。二十分钟的蜗行牛步，使人倍感压抑而不敢不生敬畏之情。每隔二三十米，更有一身着民族服装的朝鲜女子端庄而立，面带哀思，宛若活殉。不知道这些以哀伤为业的美女俑，在日常生活中能否洗脱死亡的气息。她们的青春与爱情，还能拥有烂漫无忧的笑靥吗？残暴如秦始皇者，殉葬者亦不过陶俑而已，如何比得上妙龄美女鲜活生动。<br />
　　金日成遗体防腐处理耗资100万美元，每年维护保养费80万美元。其陵寝“锦绣山纪念宫” 造价8亿9千万美元。在上世纪九十年代中期，这笔费用可购买玉米600万吨。以同期朝鲜饿死人口300万计，平均每人两吨。</p>
<p align="center">13</p>
<p>　　教宗的素棺、我当木工时和弟兄们打造的木棺、以及那些“活底棺材”、“布棺材”、“狼肚皮棺材”、黑小弟弟的棺材之属，委实与水晶棺隔天隔地隔着九重天堂再加上狗日的十八层地狱。<br />
　　而且，这些普通简陋的棺材，装的尽是无权无势的穷人、好人。水晶棺则不然，那些以尸身不朽来僭越上帝的偶像，无一不是两手染血的杀人犯。其中被认为较为温和的列宁，心底也激荡着仇恨嗜杀的旋风。<br />
　　列宁曾亲自下令将已逊位的沙皇尼古拉二世满门杀绝，包括皇后、四位公主、14岁的小王子，甚至连带1名御医和3名侍从，并怯懦地毁尸灭迹。<br />
　　列宁派出武装工作队到农村抢粮，遭农民反抗。为镇压某地区农民暴动，他亲自下令绞死“至少100个已知的地主、富人和吸血鬼”，要求“确保人民都能充分看到绞刑的执行”，要求公布姓名、抢走全部谷物。他还特别写明，“此事应办得让周围几百公里的人民都能看见、颤抖、知道、喊叫：‘那些吸血的富农们，他们正在被绞死，将窒息而死。’”<br />
　　列宁镇压僧侣的反抗：“……趁此机会我们能够杀掉一批反动僧侣界和反动资产阶级的代表人物，越多越好。现在正是应该教训这群人的时候，使他们在几十年内连任何反抗都不敢想。”“现在我们必须……残暴镇压他们的一切抵抗，以致他们几十年内都不会忘记。”“在这次事件中，我们枪毙的反动僧侣代表和反动资产阶级分子的数量越多越好，……使得他们在几十年内都不敢梦想任何形式的抵抗。”<br />
　　列宁甚至还下令枪毙那些因传统节日而不来上班的工人。<br />
　　太多的杀戮和鲜血，迫使曾率先炮轰冬宫因而被称作“十月革命的光荣和骄傲”的喀琅施塔德水兵发动起义。1921年春，十月革命胜利后3年多，2万6千名水兵、工人和布尔什维克党员在集会上呼喊：“让我们来把那些使得工人反对农民、农民反对工人的家伙们赶走，因为我们已经自相残杀得够了！”对这些革命元勋，列宁的答复是坚决镇压：“我要让你们几十年里不敢再打反对派的念头。”他命令6万军队立即进攻，甚至使用了毒气。困守要塞12天后，起义者用电报向全世界发出了他们最后的声音：“……我们在临死前高呼：抗议共产主义专制者们的残杀！自由选举的苏维埃万岁！”<br />
　　苏联解体后，越来越多的解密文件描画出列宁富于历史首创精神的残暴。自列宁始，不加限制的残暴成为共产世界之通例：废止法律的专政、有组织的恐怖、大规模杀戮、大规模饿死、按数字杀人、杀农民、杀工人、杀军人、杀资产者、杀知识分子、杀不同政见同志……列宁最优秀的学生如斯大林、毛泽东之流，杀人已杀到人类思维无法理解的疯狂魔幻之境。<br />
　　这样的一些仇恨与死亡的播种者、死神，怎么就胆敢盛敛于透明的水晶棺里供后世瞻仰呢？<br />
　　他们与希特勒一起，制造了一个人类历史上最血腥的世纪，怎么就胆敢奢望永生呢？</p>
<p align="center">14</p>
<p>　　陈尸水晶棺似乎并非这些红色君王之本意。<br />
　　一说列宁希望安葬于圣彼得堡与母亲相伴，却未找到书面凭据，但列宁夫人克鲁普斯卡娅曾在一封信中明确谈及列宁希望葬于克里姆林宫红墙脚下，应该是确实的。斯大林死于暴病，未及留下遗嘱。毛泽东带头签名火化，并曾对二战名将蒙哥马利元帅说过，“人死后最好火葬，把骨灰丢到海里去喂鱼。”没有任何线索证实胡志明想进水晶棺。金日成死于心脏病发作，也没有托付身后之事。尽管如此，在最高权力转移的非常时期，他们的皇储们为了以先帝之威望确立新君之地位，仍旧把他们装了水晶棺。因此，有人说这些手握王爵，口出天宪的极权主义者也被他们所创立的制度剥夺了自由。此话有几分道理，但细思量起来，似为一偏之论。究其实，这些红色君王们尽为偶像崇拜痴迷者。从他们一生自封神圣之行状，以及蛰伏于内心深处的隐秘欲念，水晶棺应该是一个没有违背他们意志的逻辑终点。<br />
　　这些彻底的唯物主义即虚无主义者，说不怕死，其实是最怕的。斯大林有过四位替身。外出时让替身坐车从克里姆林宫出发，走标准路线，他则走另一条小路、绕路。斯大林不信任医生，不准医生接近，甚至拒绝服用克里姆林宫药房的药，而让卫队军官到莫斯科郊区去买。给他看过病的医生下场都不好，不是解职就是逮捕，只有少数例外。毛泽东出行，则是临时指定路线。住下后，一起疑心，即刻转移。某次在庐山开会，突然说一声“走”，不顾夜深雾浓，命卫士在车前打手电探路也要走。到“美庐”本应住下，不料毛又一声“走”，就再走，转移到另一处不起眼的小别墅“175”。毛的专列火车头，出发前要把煤尽行卸下，再由保卫人员一铲一铲装上去。水箱的水要全部放掉，要人打着手电爬进去检查。毛晚年有一次患病昏迷，刚醒过来，守候在床边的周恩来紧握他手，泪水夺眶而出：“主席，主席，大权还在你的手里！”这委实是最知心贴肺的一句话：一生一死，难以割舍的是权力。一口气喘不上来，生杀予夺的大权和超过所罗门王的荣华富贵便成过眼云烟。既然必死，那末，在他们的集体潜意识里，能使尸身不朽并供万世敬拜的水晶棺，就成了永生、永恒的一个假想的实现。<br />
　　只是，这种永生是极为可怕的。<br />
　　《圣经·创世纪》记载了第一位杀人犯该隐的故事。该隐杀了他的兄弟，上帝问他：你的兄弟在哪里？该隐谎称不知。上帝便说：你做了什么事？你兄弟的血，从地里向我哀告！上帝判该隐流放远方，并在他额上刻下记号，免得为人所杀，并宣称“凡杀该隐的必遭报七倍”。——死亡是太轻的惩罚。该隐必带着耻辱的印迹与世长存。<br />
　　水晶棺就是现代该隐那可怕的印迹。<br />
　　他们就不怕后人会指点着他们的不朽之躯说“那就是他”吗？<br />
　　他们就不怕最后的审判吗？<br />
　　时候到了，上帝将从云端轻声问：该隐，你的兄弟在哪里！</p>
<p align="center">15</p>
<p>　　又想起教宗的棺材，那只停放於圣彼得广场上简朴至极的木箱。<br />
　　紧贴着慈母般的大地，其上是淡蓝色的春风、自由安详的鸽群、如女声合唱般圣洁又深邃的天宆。<br />
　　一切安排皆缘自梵蒂冈传统以及教宗本人遗嘱：历代教宗皆安放於一具不加修饰的柏木箱，教宗还特别嘱咐要“素棺”放入大地，并在棺盖上撒一捧祖国波兰大地的泥土。<br />
　　走笔至此，一线晨光渐照亮思维的小径：水晶棺与素棺，奢华简朴倒在其次，其深在的意义是死亡——如何理解并面对死亡。<br />
　　教宗是波兰人，出生于第一次世界大战焦土之上，曾先后生活于德国纳粹和共产制度之下。纳粹杀害了600万犹太人，还使更多的人死於战争。横跨欧亚大陆的共产极权，使超过一亿人死於屠杀、秘密处决、监禁、苦役、街头暴力和人为大饥馑。教宗曾如是说：“在我们这个世紀里，不幸出現了两个极权体制：带来战争及集中营的纳粹主义、带来高压及恐怖统治的共产主义。可以说，我是从內部来认识他们的。”这种亲临现场的悲剧性经历，必然使他对人的自由，人的死亡产生至为深切的关怀。<br />
　　教宗个人也多次与死亡相对。在那些四目凝望之际，应该比我们更深地洞悉了死亡的秘密。<br />
　　教宗早年生涯一直笼罩在亲人死亡的阴影中。童年丧母，少年失兄，青年亡父，自此孑然一身。十五岁时，一位玩伴拿捡来的手枪开玩笑地朝他扣动扳机，子弹从头边呼啸而过。十九岁那年，和父亲在逃难途中遭到德国飞机贴地扫射，弹如飞蝗，死生一线。二十岁在采石场服劳役，崩落的岩石砸死了身边的工友。二十三岁遭遇两次严重车祸，其中一次是被德军重型卡车撞成重伤，昏死在路边排水沟，被一位不知名的女人救起。六十一岁在梵蒂冈遇刺，刺客近距离连开两枪。<br />
　　那末，对他来说，死亡是什么呢？</p>
<p align="center">16</p>
<p>　　“不要害怕。（Be Not Afraid.）”<br />
　　“不要害怕”，这是他当选为教宗之后对人们所说的第一句话。<br />
　　从那时起，这一句“不要害怕”就成了他的口头语，成了他标帜性的语言，成了他对基督教世界以及全人类的不断重复的伟大召唤。他以此激励普天之下受苦受难者，也以此真诚自勉。教宗在位26年，是近世纪任职最长的一位。如果你眼睁睁看见他从体魄强健、精力过人的盛年逐渐老去，日益虚弱不堪，眼睁睁看着他艰难挣扎，临近死亡，却依旧在那里永远念叨“不要害怕，不要害怕……”，你就不得不认真思索一番此话之真意。<br />
　　如同太阳与地球的关系决定了白昼与黑夜，上帝与人的互动则分出了信仰与虚无。不要害怕饥饿、匮乏、压迫、凌辱、不要害怕人世所加诸於我们的一切苦难。也不要害怕自私、贪婪、软弱、仇恨，不要害怕我们内心深处不时涌动的种种罪恶。不要害怕，不要害怕一切。你只须敞开心扉，接纳那位伟大的爱的使者耶稣基督。——《圣经》坚定不移地宣称：“在爱里没有惧怕”。<br />
　　在母亲怀中没有害怕。<br />
　　是啊，在生命的创造者、爱的恩赐者上帝怀中，你害怕什么呢？<br />
　　初代门徒约翰曾用一句话简约概括《圣经》救赎真理：“神爱世人，甚至将他的独生子赐给他们，叫一切信他的，不至灭亡，反得永生。”这位约翰，就是亲临耶稣殉难现场，并接受耶稣气绝前最后嘱托，把玛丽亚奉为生母的那位约翰。也就是追随耶稣之前在加利利海上打渔为生的渔夫约翰，《约翰福音》的作者约翰，十二使徒中唯一没有被钉十字架或砍头的约翰。公元96年，约翰从流放地拔摩海岛回到小亚细亚的以弗所城，在那里继续传讲耶稣的生平和思想。其时他已近90高龄，年迈体衰，只能请人抬到聚会之处。每次讲道都要说：“孩子们哪，你们要彼此相爱！”最后一次讲道，也是阐释这一句话。讲完之后，就在讲台上安然谢世。<br />
　　——讲述一珠玫瑰，使徒约翰始于根系，教宗约翰则始于繁花摇曳的枝头。<br />
　　这是同一株爱的玫瑰。</p>
<p align="center">
17<br />
<a href="/wp-content/media/suguan6.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan6.jpg" alt="" title="素棺-教宗当选" width="300" height="430" class="aligncenter size-full wp-image-623" /></a>
</p>
<p>　　1979年，教宗当选后第一次回到自己故乡。所到之处万人空巷，整个波兰社会为之撼动。其时，社会主义波兰正陷于迷茫与绝望，工人运动惨遭镇压的流血场面仍叫人心有余悸。教宗在布道及各种场合，直接向上千万信众发出“不要害怕”的呼召。他对饱受欺凌的同胞说：“你们是人，你们有尊严，你们不该卑躬屈膝。”他犹如一股自由的信风席卷波兰，驱走恐惧，带来信仰、希望和爱。<br />
　　次年，民主运动狂飙再起，格但斯克列宁造船厂工人的罢工震动世界。名不见经传的电工瓦文萨登上历史舞台，成为波兰的勇气与希望。<br />
　　瓦文萨始终把教宗视为最可信托的精神领袖，在他政治生涯跌落低谷时期，曾与教宗在一片树林中秘密会面，没有政治密谋而唯有灵魂的倾诉。瓦文萨向教宗坦陈内心深处的隐秘，说最令人苦痛不堪的尚不是政治挫折，而是心中对权势者挥之不去的仇恨。他备受熬煎，如被囚禁于心灵的地狱。教宗对瓦文萨推心置腹，用上帝之爱劝勉他，鼓舞他凭借神的力量驱逐灵魂中的黑暗。他为他祈祷，祝愿他像耶稣那样“爱仇敌”，宽恕那些曾以不义、欺凌来对待自己的人。没有采访，没有记录，不知道说了哪些话。但我猜想，教宗一定会轻轻地念叨“不要害怕，不要害怕……在爱里没有惧怕……”<br />
　　感人的一幕。<br />
　　两个被爱所洗净的灵魂。</p>
<p align="center">18</p>
<p>　　1981年5月13日下午5时许，教宗乘一辆白色敞篷车，在圣彼得广场上徐行，向众多朝圣者亲切致意。不同肤色、性别、甚至不同政见与宗教的人，看到这位慈爱的老人，都会加入那热情不息的欢呼：“John-Paul-Two，We-Love-You!”（约翰-保罗-二世，我们-爱-您！）车停下来，教宗从一对年轻父母手中抱起一个不到两岁的小女孩莎拉，并把她高举起，连同女孩儿手中牵着的幸福的红气球。他刚把身穿粉红色衣裙的小莎拉还给父母，枪声响起，鸽群惊飞……紧接着又是一记枪响，教宗倒下，鲜血从白袍上透出。教宗喃喃道：“玛丽亚，我的圣母！玛丽亚，我的圣母！”第一颗子弹打断了大肠和小肠，穿出体外，落在车上。第二颗子弹打伤了右肘和左手食指，然后击伤了两个美国女人。由于失血过多，情况危殆，教廷为他举行了临终仪式。五个多小时手术抢救，生命方得以挽回。<br />
　　之前一月余，里根总统遇刺。子弹也是从距离主动脉几毫米的位置穿过。这两位曾七次晤谈的老友咸以为大难不死是上帝的旨意，用教宗的话来说，就是“一只手扣动了扳机，另一只手却改变了子弹的方向。”因为神所赋予他们的结束共产邪恶这一伟大使命尚未完成。<br />
　　遇刺第四天，教宗在病榻上录制了一篇简短谈话，通过扩音器向守候在广场上的民众播放。声音柔弱安详：“我为那个枪击我的弟兄祈祷。我已经诚挚地宽恕了他。”教宗的这位弟兄，是保加利亚雇佣的土耳其枪手，保加利亚背后，是最关心教宗健康的老朋友苏联克格勃。痊愈之后，教宗专诚去牢房看望那位正在服刑的青年杀手。一间窄小的囚室，密密的铁柱割碎了窗外的阳光。令教宗极为惊讶的是，凶手头一句话竟然是：“您为什么没死？”他说他知道自己是瞄得很准的，理当一枪毙命。老人拉他坐下，说我们今天的会面是一个人与另一个人，是兄弟式的。他低下头，与青年交谈。年轻人顾不上请求宽恕，却陷入某种巨大惊恐。他觉得有一种超自然的力量在庇护受害者，那是一位女神，一位将要审判并处死他的女神。教宗一手与年轻人相握，另一只手扶住他肩，轻声为他祷告、祝福。从凶手的眼睛里能看出一种心灵的震撼。最后，年轻人低下头，亲吻老人的手。</p>
<p align="center"><a href="/wp-content/media/suguan7.png" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan7.png" alt="" title="素棺-教宗探望凶手" width="243" height="185" class="aligncenter size-full wp-image-624" /></a></p>
<p>　　事隔二十多年，尚在狱中服刑的凶手听闻教宗一病不起，便委托律师和意大利通讯社向教宗转交一封亲笔信，祝老人早日康复，愿上帝赐予他健康和神奇的力量。</p>
<p align="center">19</p>
<p>　　1992年的一天，特瑞莎修女忽然来到教宗面前，请求祝福。其时，教宗正与一些年轻人谈心。他一面请特瑞莎修女落座，一面对青年们解释，她就要去一个内战中的国家。无须更多说明，人们都明白特瑞莎修女将前往的是波斯尼亚和黑塞哥维那，那里战火正炽。前南斯拉夫解体之后，塞尔维亚、克罗地亚和穆斯林之间爆发种族战争，动用重炮、坦克装甲车甚至多管火箭炮和飞机，直杀得天地变色，日月无光。城市在战火中崩塌燃烧，难民如洪水四处奔逃，种族屠杀和大规模强奸震惊世界。<br />
　　辞别教宗之后，特瑞莎修女带着老人的祝福与托付，双手抱着一支半人多高、杯口粗细的特制复活节蜡烛，进入巴尔干战场。她恳求，在这支绘有圣母像的蜡烛燃尽之前，交战双方停火，给她一点点时间去解救无辜无助的孤儿。蜡烛是下午4时点燃的，至5时，枪炮声完全止息。特瑞莎修女进入被围困的医院和救助机构，救出70余名孤儿、残疾儿，其中大多数是穆斯林。<br />
　　为制止波黑种族屠杀，教宗创立了一个新概念，叫“人道干预”。他的愤怒谴责，嗓音嘶哑的呼吁，传到了萨拉热窝的地下室，传到了维和部队隔离的“保护区”，给深陷於黑暗和种族仇恨中的人们带来希望和安慰。</p>
<p align="center">20</p>
<p>　　“在爱里没有惧怕”，对教宗而言，这不仅是一个真理的启示，也是终生践行的生活准则。“不要害怕，不要害怕……”这不仅是对他人的劝勉，也是对自己的誓约。因此，他义无反顾地承担起基督教群体在悠长历史中所犯下的种种罪行与过失——<br />
　　数百年前，教会曾参与非洲奴隶贩卖。1991年早春时节，教宗代表天主教向上帝和非洲人请求宽恕。<br />
　　三百多年前，物理学家伽利略曾遭受教会的异端审判。1992年秋，教宗公开为伽利略平反，并表示道歉。<br />
　　千年以来，基督教不断迫害犹太人，把耶酥之死归罪於整个犹太民族。2000年春，教宗历史性访问耶路撒冷，到犹太圣殿遗址前忏悔，把一封致歉信放进 “哭墙”上巨石的缝隙，请求上帝宽恕基督徒对犹太人所犯下的一切罪行。他的手颤抖着，如寒风中最后一片枯叶。</p>
<p align="center"><a href="/wp-content/media/suguan8.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan8.jpg" alt="" title="素棺-教宗-哭墙" width="550" height="380" class="aligncenter size-full wp-image-625" /></a></p>
<p>　　他越过台伯河，越过历任教宗的足迹，走进那些最古老的犹太教堂，对话、忏悔、呼吁和解。亲临者回忆，保罗二世演讲时，时常难以自持。当那首犹太圣歌，那首犹太人从出生一直唱到死，唱到毒气室门口的圣歌《我相信》响起来，教宗更难掩悲戚。当歌声渐次高亢响亮之际，他便情不能禁地鞠躬谢罪，并以手掩面。<br />
　　在飞往里约热内卢的飞机上，随行记者和教宗谈起他愈来愈频密的忏悔行动。教宗温和地发了句牢骚，说，有趣的是，他代表天主教不断地忏悔，请求宽恕，却始终得不到任何回应。“也许理当如此吧……”我不能要求这种忏悔求恕的行为必须是双向的，哪怕不断悔罪使天主教遭人误解，处于尴尬状态。因为不断认罪悔改是圣经真理所要求的。<br />
　　千禧年之初，教宗以一项史无前例的举动感动了全世界。他在圣彼得大教堂举行的庄严仪式上，发表文告，真诚忏悔并祈求上帝宽赦历代天主教会所犯下的诸般罪过。其中包括背离圣经，强迫教徒悔罪；十字军东征烧杀掳掠；宗教裁判所迫害异端；分裂基督教；敌视犹太教，对犹太人惨遭种族灭绝保持沉默；强行传教，侵害原住民；贬抑女性地位与尊严；对诸多社会问题漠不关心，等等。最后，他拄着杖，蹒跚着行至一座耶稣受难雕像前，亲吻耶稣的脚，以此宣示认罪之真诚。<br />
　　——千载之罪、普世之过，他那老迈之躯能承担得起吗？<br />
　　有一张照片，在教宗辞世后制成邮票——</p>
<p align="center"><a href="/wp-content/media/suguan9.png" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan9.png" alt="" title="素棺-教宗祷告" width="397" height="320" class="aligncenter size-full wp-image-626" /></a></p>
<p>　　低垂苍老的头，双唇微翕，说不清在啜泣或祷告，也许是啜泣着祷告。歪扭的面庞上一道道皱纹，如悲悯之泪冲刷出的大山的沟壑，如被愁苦之浪撞得支离破碎的海边的岩石，如忏悔之火焚烤过的伤痕累累的树皮。白发凌乱的额头无力地抵靠着权杖，衰老的躯体勉力支撑，一如沉浸於丧子之痛不可自拔的老父。有大风刮起，银色的丝质长袍猛烈飞起，宛若一只受伤的巨鸟挣扎着展开一翼……<br />
　　这面容和躯体所透露出的情感，恰与权杖上端耶稣受难像呼应，那就是承担与悲悯、价值和意义，那就是在一个柔弱的肉体里因爱而生的灵魂的力量。<br />
　　这是一幅绝美的经典之作。<br />
　　在这赤裸的灵魂面前，你无法不为之深深打动。<br />
　　尘世上如此之多的罪恶，他一风烛残年的老人，担得动吗？<br />
　　当然担不动。<br />
　　他的额羸弱地贴靠着杖端十字架上的耶稣：担不动的苦难他要交给他。<br />
　　他一定是在哭泣着对自己念叨：不要害怕，不要害怕……</p>
<p align="center">21</p>
<p>　　人们常在心里闪过一个疑问：为何教宗的面容总是很悲戚、愁苦？<br />
　　有位记者则把这一不解上升为尖锐指责：为何教宗还要把他最后的痛苦展现给世界，为何他不早日退位？他的目的是什么？<br />
　　我以为，这是一个无知到令人惭愧的问题，几乎相当于责问教宗为何要作“痛苦秀”，譬如性感女星们总要“不经意地”乍现裙底风光。居然，一位“接近教宗的人士”作出了如下解释：我们的教宗愿意永远和世人在一起，只有世人给他带来安慰。他要像耶酥基督那样，把他的痛苦和受难展现在人们眼前，给人们留下难忘的印象。<br />
　　我斗胆质疑这一解释。教宗和他的神都不是“展现”型人物，不是演员，不作秀。圣者的一生，就是从形体走向精神，从芜杂走向单纯，从表现走向率真。他们的满面苦相，实在是缘自内心深处的悲悯——<br />
　　圣城耶路撒冷，纳粹大屠杀纪念馆。纪念大厅四墙以未经雕凿的大石垒成，气氛压抑。两名随从抬着花圈，走向黑色大理石卧碑。教宗拄杖随后，步履颠跛。他亲手点燃如下致辞：“在这座纪念馆里，我们的心灵亟须静默，在静默中追忆。我们要在静默中，设法为涌现的记忆找出一个意义。我们保持静默，是因为没有任何言语，足以表现出大屠杀的悲痛历史。”有小唱诗班在轻声哼唱。老人面色凝重，长时间沉默无语，整个身体都在微微抖颤。<br />
　　乍得，俗称“非洲死亡之心”，非洲中部那个极端贫穷而腐败的国家。越野车在沙漠上行驶，一个仅有几座小土房的村落进入视野。教宗吩咐停车，走进家徒四壁一贫如洗的土屋，去看，去沉思，去理解，目光惊讶而沉痛。从此，从乍得这个被人世所遗忘的小小村落，教宗开始不倦地讲述黑色非洲的苦难和世界的责任。<br />
　　在巴西，那个在苍翠山峰耸立着巨大耶稣雕像的信仰的巴西、热情奔放的巴西，教宗走进最潦倒绝望的贫民窟。面前所展现的，是超出想象力的恐怖的穷困。他睁大眼睛，不断向四面张望，痛苦而无助。他不知道应该做些什么才能把人们从这绝境中拯救出来。他颤巍巍摘下自己的戒指，送给遇见的一个不知名姓的穷人。随行者大吃一惊，那是教宗的戒指呀！这位在精神世界最有权势的人，那一刻显然深感无力。那张如苦瓜般皱纹纵横的脸上，流淌着难掩的忏悔与自责。<br />
　　在哥伦比亚，这个孕育了加西亚·马尔克斯的魔幻的国家，混血的姑娘容颜姣好，加勒比海深蓝色的浪涛拍打着鲜花丛生的崖岸。风水流转，《百年孤独》中所描写过的那些对印第安人、黑人、穷人、妇女儿童的不义却依然存在。在一个公开集会上，一位部落首领抛开官方事先核准过的讲稿，直陈社会不公。当地教会人士制止不住，冲上讲台要抢夺麦克风。教宗神色冷峻，大声说：“让他讲！”全场肃然。主啊，您让我放牧您的羊群，可他们还在百年的孤独中挣扎……</p>
<p align="center">22</p>
<p>　　约翰·保罗二世是历史上出行最多的一位教宗。在担任圣职的26年里，这位通晓八种语言的传道者，发表了3000多次演讲，访问了127个国家，路程合计100多万公里，相当於地球到月亮距离的3倍。可谓足迹所至，无远弗届。以至於那些以奔走为业的记者，也尊崇地称他为“飞行的圣座”。 这位“上帝的众仆之仆”，拄着他的杖，风尘仆仆躜行于途，一直走到老病侵寻的暮年走到死。一如旧约时代，先知摩西拄着牧杖，带领百万奴隶出埃及、过红海走向自由之地，走向自己的死亡。千禧之年，教宗登上西奈山巅，迎着三千多年前吹拂过摩西的高原之风，远眺上帝应许之地。那一刻，他定然如摩西一样感悟到岁月无情。<br />
　　再也走不动了。垂垂老矣。</p>
<p align="center"><a href="/wp-content/media/suguan11.jpg" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan11.jpg" alt="" title="素棺-教宗静思" width="390" height="453" class="aligncenter size-full wp-image-639" /></a></p>
<p>　　他早已不是当年那个酷爱足球、滑雪、登山、游泳、划船的运动健将。家乡斯卡瓦河洪水泛滥时往返横渡如得水蛟龙之强健，已成流水落花之忆。往昔1米8身高，80公斤体重，标准运动员身材，如今已是弯腰曲背，步履支离。神拿走了他的青春英俊，把他变得跟自己一样丑陋。他的公开演讲已令人目不忍睹：手在抖，讲稿在抖，话筒在抖。语音含混不清了，面部表情也僵硬迟钝了。那一年，在他的出生之地，一个露天大型集会上，参与表演的少年们唱起了“祝您长命百岁”，他颤抖着嘟囔了一句“说来容易，做起来难！”短暂静默之后，掌声骤起，全场笑翻……<br />
　　死亡迫近了。他不怕死吗？<br />
　　2005年早春，罗马时间4月2日晚9时许，一代教宗约翰·保罗二世溘然长逝，享年八十四岁。<br />
　　他死于春天，复活节之后，万物复苏的季节。</p>
<p align="center">23</p>
<p>　　在人生的尽头，他仍然安详喜乐。他安慰身边的助手们不要为他流泪，“我很快乐，你们也要一样，让我们一起欢欣祷告。”一位意大利红衣主教在与教宗作最后告别之后，出来告诉人们，教宗躺在铺上纯白被单的大床上，身上插满各种管子和医疗仪器，已不能说话，但“我被他那动人的笑容迷住了。”<br />
　　广场上燃起了繁星般烛光。<br />
　　有人说，让我们点几支蜡烛，照亮他通往天堂的路，就像他过去26年来为我们所做的一样。有人说，他不只在活着的時候是我们的典范，现在，他更在教导我们如何走向死亡。<br />
　　每天晚上，老教宗所做的最后一件事，就是打开卧室窗户，眺望灯火不熄的罗马，并举起双手为罗马的人与城祝福。在生命已进入倒计数时，他请求助手搀扶他走到窗前，向圣彼得广场上成千上万的守夜者做例行的祝福。他鼓足最后力量，只说出了一个单词：“阿门”，然后无力倒下。——正如使徒保罗所定义：“爱是永不止息。”<br />
　　我们没有想到，在耶稣之后，在现实世界有幸见到如此美好的人性。他是耶稣的影子。他预先把天堂展示给我们。与他同世真是上帝赐予我们的格外的恩典。<br />
　　弥留时刻，教宗在昏迷中说了一句波兰话：“请让我进入天父的家。”他还说了这样一句：“I have looked for you. Now you have come to me. And I thank you.”有人说，这是过去教宗对青年们多次重复的一句话：“我曾寻找你们，现在你们到我这里来。谢谢你们！”有人说，那是他已经看到了耶稣的荣光：“我曾寻找您，现在您来到我面前。谢谢您！”后一种解读或许更切近事实。<br />
　　一位梵蒂冈主教说：“他已经看到并且触摸到神。”<br />
　　人世的重负已然放下。现在是与神独对的时刻了。<br />
　　——数年前，教宗曾写过如下祷词：<br />
　　“当我们‘过世’的时刻确实到来之际，求赐我们能坦然相待，对身后一切，没有放不下的遗憾。在寻觅您如此长久之后再与您相遇，我们会跟那些带着信仰与希望先我们而去的人一样，重获我们在人世间认为真正美好的一切！”<br />
　　钟声响起。<br />
　　天堂之门已经打开。<br />
　　梵蒂冈发言人宣布：“我们热爱的圣父约翰·保罗二世已回到他的故乡。让我们为他祈祷。”<br />
　　索达诺大主教同聚集在圣彼得广场的人们一起，含泪为教宗祈祷。<br />
　　紧接着，数万人爆发出如海潮般的没有休止的欢呼声。<br />
　　这是人类生命史上至为辉煌的一刻。<br />
　　大主教说：“愿永恒之光照耀他，愿他在平和中安睡。”<br />
　　在灿烂光辉的欢呼声中，死亡不再可怕，而确凿是投向一個慈爱的怀抱。</p>
<p align="center">24</p>
<p>　　梵蒂冈宣布：葬礼于六天之后举行。<br />
　　美国总统乔治·布什是第一位抵达罗马的国家元首。同行者有夫人劳拉、国务卿赖斯及两位前总统老布什和克林顿。这个由三位总统、一位总统夫人一位国务卿组成的代表团在教宗遗体前集体下跪。曾多次被教宗严词批评的布什总统说：“世界失去了一位为人类自由而战的人。”“我们将永远记住这位谦卑、智慧、无所畏惧的神父。他成为历史上伟大的道德领袖之一。我们感激神为我们送来了这样一个人：他是波兰的儿子，并成为罗马的主教及世代追念的英雄。”<br />
　　促成波兰共产党倒台的历史功勋，按照瓦文萨的说法，“50%归教宗，30％归波兰人民，20％归里根、撒切尔、戈尔巴乔夫和叶利钦。”戈尔巴乔夫则说：“没有教宗的努力和角色，东欧的变化是不可能的。”<br />
　　教宗约翰·保罗二世推动了波兰的自由运动，引发了东欧特别是苏联的共产总崩溃。由此，冷战终结，人类从核末日的阴影下得到拯救。<br />
　　教宗之死，标志着以残暴著称的二十世纪正式落幕。<br />
　　四月八日，有60万人涌入圣彼得大广场，为教宗送行。<br />
　　另一个自发形成的分会场是他的故乡瓦多维采、奥斯威辛集中营所在地克拉科夫、首都华沙和整个波兰。仅瓦多维采一地便聚集了80万人，挤满了广场和主要街道，收看特大屏幕电视转播，为他们慈爱的父亲和忠诚的儿子送行。<br />
　　这一天，波兰全国歇业，建筑物上街树上到处垂挂了沉重黑纱。当罗马葬礼开始的时刻，华沙无名战士墓六座古炮台同时鸣放26响礼炮，以纪念教宗在位的26年。<br />
　　罗马。<br />
　　在管风琴奏出的圣乐中，12个身穿黑色大礼服的人抬着教宗的素棺从圣彼得大教堂正门的阴影走出。当那个简单朴素的柏木箱刚刚走进明媚如初恋少女的阳光，走进罗马的视线——<br />
　　掌声响起来，经久不息……<br />
　　广场上60万民众以及各国元首、特使全体起立恭迎。<br />
　　素棺被放置于一块红色地毯上，紧贴地面。棺盖上放了一本打开的大红封面的《圣经》。<br />
　　这是一个早春时节，春风骀荡。<br />
　　合唱队唱起了安魂曲：“赐给他永远安息，主啊……”<br />
　　主教们头戴白色礼冠，身披深红法袍，鱼贯进入广场。一浪强风袭来，把他们的红袍吹得凌乱不堪，有人赶紧伸手护住高高的礼冠，有的则已经脱落，茫然不知去向。棺盖上摊开的《圣经》被吹起十数页，每页都呈完美弓形，如满风之帆。<br />
　　弥撒讲道中，主祭的拉辛格大主教（后来的新任教宗）回顾了约翰·保罗二世简短生平及一生业绩，最后说道：“热爱基督是我们敬爱的教宗的力量泉源，凡是看过他祈祷，听过他讲道的人都知道。正是因他深深地根植于基督心中，所以他能够承受那超越人力的重担……就在他生命中最后的一个复活节，他仍然强忍病痛出现在他的书房窗口，祝福罗马和全世界。我们深信，我们敬爱的教宗现在正伫立在天父家窗口，从那里看着我们并为我们祈福……”拉辛格以口音很重的意大利语说：“今天我们将他的遗体埋在地下，犹如不朽的种子——我们的心满怀悲伤，然而同时也充满了喜乐的希望与深深的感激！”<br />
　　大主教的话激起一阵又一阵掌声。<br />
　　人们齐声高呼：“立即封圣！立即封圣！立即封圣……”前后持续五分多钟。<br />
　　弥撒结束后，宿怨甚深的东西方主教们一起主持了告别仪式。最后，十二位抬灵人再次入场，抬起素棺，缓慢地走向圣保罗大教堂。在即将进入殿门之际，抬灵柩的人们把教宗的素棺转向广场大众。所有的人都意识到，最后告别的时候到了——<br />
　　掌声骤起，如浪如潮，绵延不绝，长达十五分钟……<br />
　　钟声齐鸣……<br />
　　在全球数十亿人注目下，教宗约翰·保罗二世的灵柩经过那几棵在春风中如醉如痴的棕榈，消失在殿门深红色帐幕中。<br />
　　在春天在复活的季节，他满怀信心、希望与爱离我们而去。<br />
　　那棕榈是胜利的象征。近两千年前，耶稣进入耶路撒冷，走向他一生中最辉煌之顶点，走向十字架酷刑，走向复活，就是踏着万民为他铺下的棕榈叶之路。<br />
　　谢谢您，教宗！感谢您战胜死亡，感谢您教我们如何面对死亡！<br />
　　神必将“凭借那叫万有归服的大能，将我们这卑贱的身体改变形状，和他自己荣耀的身体相似。”（《圣经·菲立比书》）</p>
<p align="center">
25<br />
<a href="/wp-content/media/suguan10.png" rel="shadowbox[post-617];player=img;"><img src="/wp-content/media/suguan10.png" alt="" title="素棺-教宗墓" width="234" height="174" class="aligncenter size-full wp-image-627" /></a>
</p>
<p>　　教宗的素棺带给我长久的心灵激荡，如一粒埋进泥土的种籽，静候着春雨降临。几年后，我感到内心涌动起某种诉说的欲望，那颗不经意间撒落的种籽悄然萌发。当我把这些棺材的故事连缀成篇，就看出了高贵与鄙俗、谦卑与狂傲、慈爱与残暴、信仰与虚无之间判若云泥的分野。<br />
　　我脱离了原初的构思，从素棺写到水晶棺再写到教宗其人。我追随着那个水晶般纯净透亮的灵魂，在波兰的阳光下高举起人类自由的旗帜，在梵蒂冈的窗口凝望圣洁的鸽群，在周三接见日拥抱着热泪盈眶的悔改的妓女，在青年们的舞场上手舞足蹈，在耶路撒冷残存的“哭墙”前低首忏悔，在记者面前做一个俏皮的怪样，在馨香宁静的私人祈祷室沉思叹息，在马尼拉世界青年节上接受川流不息的致敬，一任青年们的泪水浸透了纯白的教袍……<br />
　　对于有些人，死亡是不可抵御的腐烂，是万有之灭，是永恒之死。而对于有些人，死亡却是通往新世界的再生之路。不经意间，我窥视了一个难以打破的上帝的奥秘。虽然我再也说不出更多的话，但保罗二世，这位泥土所造的谦卑者，这位“众仆之仆”所给予我的感动是长存的。<br />
　　我耳边将永远回响圣彼得广场上的欢呼：“John-Paul-Two，We-Love-You!”<br />
　　还有那为教宗送行的如海浪奔涌绵延的掌声。<br />
　　我相信他已经重获“我们在人世间认为真正美好的一切！”<br />
　　正如使徒保罗那坚如磐石的字句：旧世已过，看，一切都焕然更新！（《圣经·哥林多后书》）</p>
<p>　　写于2009年感恩节前后<br />
　　旬日雨雪漫漫<br />
　　大地吸足了雨水，后院小河满了，水塘湖泊满了，远处的波多马克河也满了<br />
　　春天准备好了</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=617&type=feed" alt="" />
	<ul class="st-related-posts">
	<li>No related posts.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/%e7%b4%a0%e6%a3%ba/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>启用SSL支持和备用域名</title>
		<link>http://www.briefdream.com/%e5%90%af%e7%94%a8ssl%e6%94%af%e6%8c%81%e5%92%8c%e5%a4%87%e7%94%a8%e5%9f%9f%e5%90%8d/</link>
		<comments>http://www.briefdream.com/%e5%90%af%e7%94%a8ssl%e6%94%af%e6%8c%81%e5%92%8c%e5%a4%87%e7%94%a8%e5%9f%9f%e5%90%8d/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 04:55:56 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[公告板]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[域名]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=607</guid>
		<description><![CDATA[　　这是一场不对称战争。
　　梦.:如此短暂已经开始尝试启用SSL支持，现在https://www.briefdream.com已经基本上能用了（登录才会体现），不过有部分插件没有考虑https的问题，还是会给出http开头的地址。
　　使用的是StartCom签发的证书，IE 7.0.5730.13、Chrome 3.0.195.25、Firefox 3.5.7已经通过，Opera 10.01没有通过。Lighttpd的配置方法可以参考Howto: Linux Lighttpd SSL (Secure Server Layer) Https Configuration And Installation，证书的炮制方法见《全球可信并且唯一免费的HTTPS(SSL)证书颁发机构：StartSSL》和HOWTO: Certificate installation instructions for Lighttpd。需要注意的只有，pemfile是由key和crt组成的；ca-file指的是startcom的根证书，这里是由ca.pem和sub.class1.server.ca.pem组成的。
……<br /><span class="readmore"><a href="http://www.briefdream.com/%e5%90%af%e7%94%a8ssl%e6%94%af%e6%8c%81%e5%92%8c%e5%a4%87%e7%94%a8%e5%9f%9f%e5%90%8d/" title="启用SSL支持和备用域名">阅读全文——共1293字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　这是一场不对称战争。<br />
　　<span class='wp_keywordlink'><a href="http://www.briefdream.com" title="梦.:如此短暂" rel="nofollow">梦.:如此短暂</a></span>已经开始尝试启用SSL支持，现在<a href="https://www.briefdream.com">https://www.briefdream.com</a>已经基本上能用了（登录才会体现），不过有部分插件没有考虑https的问题，还是会给出http开头的地址。<br />
　　使用的是StartCom签发的证书，IE 7.0.5730.13、Chrome 3.0.195.25、Firefox 3.5.7已经通过，Opera 10.01没有通过。Lighttpd的配置方法可以参考<a href="http://www.cyberciti.biz/tips/how-to-install-ssl-lighttpd-https-configuration.html"><em>Howto: Linux Lighttpd SSL (Secure Server Layer) Https Configuration And Installation</em></a>，证书的炮制方法见<a href="http://blog.s135.com/startssl/">《全球可信并且唯一免费的HTTPS(SSL)证书颁发机构：StartSSL》</a>和<a href="http://forum.startcom.org/viewtopic.php?t=719"><em>HOWTO: Certificate installation instructions for Lighttpd</em></a>。需要注意的只有，pemfile是由key和crt组成的；ca-file指的是startcom的根证书，这里是由ca.pem和sub.class1.server.ca.pem组成的。<br />
　　WordPress本来也没有考虑https的问题，把下面这个补丁加在主题的function.php里面能够极大的改善这种情况——改写option_siteurl和option_home能使得绝大多数插件和主题在访客用https方法访问的时候，返回https开头的地址。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p607code11'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p60711"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p607code11"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Fix the URL root for SSL</span>
<span style="color: #000000; font-weight: bold;">function</span> fix_ssl_siteurl<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$scheme</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>is_ssl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'https'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'http'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">===</span> <a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'http'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>is_ssl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/str_replace"><span style="color: #990000;">str_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$scheme}</span>://&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$url</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'option_siteurl'</span><span style="color: #339933;">,</span> fix_ssl_siteurl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'option_home'</span><span style="color: #339933;">,</span> fix_ssl_siteurl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>　　启用了备用域名<strong><a href="http://d.ream.tk">d.ream.tk</a></strong>和<strong><a href="http://www.briefdream.tk">www.briefdream.tk</a></strong>，不过这两个域名上的https还没有搞定。上面那段代码可以把http://www.briefdream.com改写成https://www.briefdream.com，却不能把http://d.ream.tk改写成https://d.ream.tk，真是奇怪。想令WordPress同时绑定多个域名，可以把下面的代码加入wp-config.php里。在Settings->Miscellaneous里设置Full URL path to files可以令WordPress的编辑器在插入图片等附件时插入相对URI而不是完整的绝对URI。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p607code12'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p60712"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p607code12"><pre class="php" style="font-family:monospace;"><a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_HOME'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_HOST'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/define"><span style="color: #990000;">define</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_SITEURL'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'http://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_HOST'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<img src="http://www.briefdream.com/?ak_action=api_record_view&id=607&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/im-feeling-tired-these-days/" title="最近几天感觉好累 (2007-09-23)">最近几天感觉好累</a></li>
	<li><a href="http://www.briefdream.com/%e6%97%a5%e5%b1%85%e6%9c%88%e8%af%b8%ef%bc%8c%e7%85%a7%e4%b8%b4%e4%b8%8b%e5%9c%9f/" title="日居月诸，照临下土 (2009-06-25)">日居月诸，照临下土</a></li>
	<li><a href="http://www.briefdream.com/notes-on-moving-to-vps/" title="搬家笔记 (2009-08-15)">搬家笔记</a></li>
	<li><a href="http://www.briefdream.com/im-so-tired/" title="好累啊…… (2008-02-13)">好累啊……</a></li>
	<li><a href="http://www.briefdream.com/feed-to-twitter-real-time-synchronization-service-based-on-pubsubhubbub-protocol/" title="基于PubSubHubbub的Feed实时同步到Twitter服务 (2010-03-03)">基于PubSubHubbub的Feed实时同步到Twitter服务</a></li>
	<li><a href="http://www.briefdream.com/domain-changed/" title="域名更换公告 (2007-10-25)">域名更换公告</a></li>
	<li><a href="http://www.briefdream.com/garland-2c-released/" title="发布一下自己改的Garland主题 (2007-09-22)">发布一下自己改的Garland主题</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/%e5%90%af%e7%94%a8ssl%e6%94%af%e6%8c%81%e5%92%8c%e5%a4%87%e7%94%a8%e5%9f%9f%e5%90%8d/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>解决错误的IPv6路由广播总结</title>
		<link>http://www.briefdream.com/%e8%a7%a3%e5%86%b3%e9%94%99%e8%af%af%e7%9a%84ipv6%e8%b7%af%e7%94%b1%e5%b9%bf%e6%92%ad%e6%80%bb%e7%bb%93/</link>
		<comments>http://www.briefdream.com/%e8%a7%a3%e5%86%b3%e9%94%99%e8%af%af%e7%9a%84ipv6%e8%b7%af%e7%94%b1%e5%b9%bf%e6%92%ad%e6%80%bb%e7%bb%93/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 12:24:45 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=604</guid>
		<description><![CDATA[　　IPv6路由广播是IPv6的新特性之一——无状态自动配置的实现途径。IPv6协议规定了两种设备自动配置方案，一种由DHCPv6实现，另一种就是无状态自动配置——路由器广播本地子网的前缀和对应的路由器地址，新入网的设备根据这些信息自动配置网络。无状态自动配置的缺点是无法自动配置DNS。与在IPv4网络上随意发布DHCP信息相对应，在IPv6网络上发布错误的前缀也会干扰本地子网的使用者，而由于IPv6用户较少，不容易得到网络管理员的关注，故自己掌握如何解决这样的错误的IPv6路由广播是必要的。
……<br /><span class="readmore"><a href="http://www.briefdream.com/%e8%a7%a3%e5%86%b3%e9%94%99%e8%af%af%e7%9a%84ipv6%e8%b7%af%e7%94%b1%e5%b9%bf%e6%92%ad%e6%80%bb%e7%bb%93/" title="解决错误的IPv6路由广播总结">阅读全文——共1679字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　IPv6路由广播是IPv6的新特性之一——无状态自动配置的实现途径。IPv6协议规定了两种设备自动配置方案，一种由DHCPv6实现，另一种就是无状态自动配置——路由器广播本地子网的前缀和对应的路由器地址，新入网的设备根据这些信息自动配置网络。无状态自动配置的缺点是无法自动配置DNS。与在IPv4网络上随意发布DHCP信息相对应，在IPv6网络上发布错误的前缀也会干扰本地子网的使用者，而由于IPv6用户较少，不容易得到网络管理员的关注，故自己掌握如何解决这样的错误的IPv6路由广播是必要的。<br />
　　首先必须描述一些基本知识。与IPv4地址由网路号和主机号构成相似，IPv6地址由前缀和主机号构成，且大多数场合下，前缀和主机号各有64位。可以理解为一个本地子网有<img src="http://www.briefdream.com/wp-content/cache/tex_5212463e37406b73b693fe832f7bc8c2.png" align="absmiddle" class="tex" alt="2^{64}" />的地址空间，故随意构造主机号造成撞车的概率很小。而通常IPv6无状态自动配置会给出这样的地址：</p>
<blockquote><p><strong>2001:da8:d800:75</strong>:<font color=blue>204:7d</font><font color=red>ff:fe</font><font color=blue>b3:16f4</font></p></blockquote>
<p>其中，黑体部分是路由广播出来的前缀，蓝色部分是你的MAC地址（前2位可能跟你看到的MAC地址不同，因为这里有编址模式的问题，但后面的几位一定相同），红色的ff:fe是固定值。一台主机可能会自己构造或者被分配多个IPv6地址，主机发送IP包时，应该在路由表上按最长前缀匹配原则选择特定的地址作为源地址——如果真的这么做，就不需要下面那么麻烦的解决方案了。问题是似乎没有人这么做。</p>
<h6>Windows XP SP2 / Windows XP SP3</h6>
<p>　　Windows XP的IPv6无状态自动配置关不掉，自动配置出来的永久地址删不掉。<br />
　　如果得到的错误广播是2002::开头的，那么相对容易解决一些——用prefix policy指定优先选择2001::开头的地址就可以了。</p>
<blockquote><p>netsh int ipv6 set p 2001::/16 1 1 persistent</p></blockquote>
<p>　　而如果错误广播是2001::开头的，那么就麻烦一些，prefix policy在这种情况下不管用，而且是直接把最后配置的地址当作源地址。所以解决办法是首先关掉每5分钟自动生成一次临时地址的功能，然后手动配置一个正确的IPv6地址和网关。在命令行中执行netsh，进入netsh，以下将是在netsh中操作：</p>
<blockquote><p>
int ipv6<br />
set pri dis<br />
show int  #看清楚自己的网卡对应的Idx是什么，下面<font color=blue>Idx</font>的位置填这个号码，<font color=purple>Address</font>的位置填一个自己编的IPv6地址，比如我喜欢把ff:fe改成ff:ff后的地址填在这<br />
add addr <font color=blue>Idx</font> <font color=purple>Address</font><br />
add r ::0/0 <font color=blue>Idx</font> 网关地址<br />
quit  #退出
</p></blockquote>
<h6>Windows Vista / Windows 7 / Windows Server 2008</h6>
<p>　　Windows Vista之后的版本中的IPv6无状态自动配置终于可以关掉了。</p>
<blockquote><p>
netsh interface ipv6 set interface "你的本地连接的名称，比如’本地连接1‘" routerdiscovery=disable
</p></blockquote>
<h6>Linux</h6>
<p>　　Linux下有三种办法，前两种思路类似，一是<a href="http://www.briefdream.com/%E6%8B%92%E7%BB%9Dipv6%E5%B9%BF%E6%92%AD/">拒绝IPv6路由广播</a>，二是禁止自动配置。两个都是runtime kernel parameter，前者在net.ipv6.conf.&lt;interface>.accept_ra，置0为拒绝；后者是net.ipv6.conf.&lt;interface>.autoconf，置0为禁止。设置一个便可。之后手动设置地址和网关就可以了。<br />
　　再有一种办法是用ip6tables丢弃错误广播的路由器送来的包。下面的命令将该规则添加到ip6tables。需要知道发送错误的广播的路由器的MAC地址，用tcpdump、wireshark等工具都可以轻易取得（注意观察Advertisement的发送者就是了）。</p>
<blockquote><p>ip6tables -A INPUT -p icmpv6 -m mac --mac-source "路由器MAC地址" -j DROP</p></blockquote>
<p>有些发行版有/etc/network/if-pre-up.d/icmpv6-routerfilt文件，可以直接在这个文件中配置。</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=604&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/%e6%8b%92%e7%bb%9dipv6%e5%b9%bf%e6%92%ad/" title="拒绝IPv6广播 (2009-10-29)">拒绝IPv6广播</a></li>
	<li><a href="http://www.briefdream.com/notes-on-moving-to-vps/" title="搬家笔记 (2009-08-15)">搬家笔记</a></li>
	<li><a href="http://www.briefdream.com/setup-tex-utf-8-cjk-enviroment-in-ubuntu/" title="在Ubuntu下简易配置Tex UTF-8中文环境 (2008-03-01)">在Ubuntu下简易配置Tex UTF-8中文环境</a></li>
	<li><a href="http://www.briefdream.com/fc6-configuration/" title="FC下常用软件的安装配置 (2007-02-12)">FC下常用软件的安装配置</a></li>
	<li><a href="http://www.briefdream.com/kan-dao-da-jia-shuo-ke-cheng-wo-ye-shuo-yi-shuo-wo-de-gan-shou/" title="看到大家说课程，我也说一说我的感受 (2009-03-26)">看到大家说课程，我也说一说我的感受</a></li>
	<li><a href="http://www.briefdream.com/2-good-ides/" title="推荐两个好用的IDE for C++ (2007-02-07)">推荐两个好用的IDE for C++</a></li>
	<li><a href="http://www.briefdream.com/seeking-vps-co-tenant/" title="寻求合租VPS (2009-07-25)">寻求合租VPS</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/%e8%a7%a3%e5%86%b3%e9%94%99%e8%af%af%e7%9a%84ipv6%e8%b7%af%e7%94%b1%e5%b9%bf%e6%92%ad%e6%80%bb%e7%bb%93/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>程序员的政治学</title>
		<link>http://www.briefdream.com/politics-for-programmers/</link>
		<comments>http://www.briefdream.com/politics-for-programmers/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 03:30:04 +0000</pubDate>
		<dc:creator>WindyWinter</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[心情文字]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[政治]]></category>

		<guid isPermaLink="false">http://www.briefdream.com/?p=603</guid>
		<description><![CDATA[　　起因是这样的（节选）：

标  题: 关于今天C++考试一题的疑问 
发信站: 瀚海星云 (2010年01月08日18:35:06 星期五), 站内信件 WWWPOST
……<br /><span class="readmore"><a href="http://www.briefdream.com/politics-for-programmers/" title="程序员的政治学">阅读全文——共330字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　起因是这样的（节选）：</p>
<blockquote><p>
标  题: 关于今天C++考试一题的疑问<br />
发信站: 瀚海星云 (2010年01月08日18:35:06 星期五), 站内信件 WWWPOST</p>
<p>该题第一问要求补全代码，没问题；第二问要求写运行结果，但我发现这问答案依赖于<br />
编译器。<br />
题目代码有点长，不全贴出来了。main函数：<br />
<code><br />
{<br />
    MyComplex a(2,2), b(1,1);<br />
    MyComplex c;<br />
    c = a + b;<br />
    return 0;<br />
}<br />
</code><br />
在MyComplex类中各个构造函数和析构函数均有打印输出。并且重载了operator=和<br />
operator+：<br />
<code><br />
    const MyComplex&#038; operator=(const MyComplex&#038; other){<br />
        rpart = other.rpart;<br />
        ipart = other.ipart;<br />
        cout << "Overriding operator=: " << endl;<br />
        return *this;<br />
    }<br />
    MyComplex operator+(const MyComplex&#038; com){<br />
        cout << "Overriding operator+ : " << endl;<br />
        //return MyComplex(rpart + com.rpart, ipart + com.ipart);<br />
        MyComplex temp;<br />
        temp.rpart = rpart + com.rpart;<br />
        temp.ipart = ipart + com.ipart;<br />
        return temp;<br />
    }<br />
</code>
</p></blockquote>
<p>　　我也参加了这场考试，并且凑巧的是前一天用g++测试过类似的代码，得到的结果是c = a + b中不会调用MyComplex类的拷贝构造函数（MyComplex类有拷贝构造函数），于是不假思索就写上去了。但随后就发现确实有问题。</p>
<blockquote><p>
问题主要集中在临时变量temp的析构时间。按照书上的理论，temp在operator+运行完以<br />
后应该立即析构，并且由于返回值是类实例，因此编译器会隐式的构造一个新的类实例<br />
，用拷贝构造函数构造，并且将这个不可见的实例的const引用作为operator=的参数传<br />
递进去，在operator=执行完毕后析构。
</p></blockquote>
<p>　　C++中的确有变量离开作用域就应当被销毁的原则，按照这样的原则，应当得到如下结果：</p>
<blockquote><p>
ConstructorB : 1<br />
ConstructorB : 2<br />
Constructor : 3<br />
Overriding operator+ :<br />
Constructor : 4<br />
Copy constructor : 5<br />
Destructor : 4<br />
Overriding operator=:<br />
Destructor : 3<br />
Destructor : 2<br />
Destructor : 1<br />
Destructor : 0
</p></blockquote>
<p>　　但g++给出的结果的确是：</p>
<blockquote><p>
ConstructorB : 1<br />
ConstructorB : 2<br />
Constructor : 3<br />
Overriding operator+ :<br />
Constructor : 4<br />
Overriding operator=:<br />
Destructor : 3<br />
Destructor : 2<br />
Destructor : 1<br />
Destructor : 0
</p></blockquote>
<p>　　我不相信g++有错，于是去翻查了《ISO C++ Standard (ISO14882) 2003》，发现这里的确留了个口子，而且限定严格，适用范围极小，几乎就是专门为这个题目打造的——3.7.2.3节中规定，12.8中有各种特殊情况，除此以外按6.7节处理，而12.8.15节完全就是这个题目。看来，我们又遇到了一位没有耐心的把757页的C++标准看完的出题人。不过这也怪不得他，标准委员会的思维跳跃幅度，岂是我辈可比？如此冗长的标准，手段已经堪比律师和国会议员了。<br />
　　试卷上还有一题是问“位拷贝”的。不知道是谁发明了“位拷贝”这个概念，它是绝对错误的，C++标准中从来没有这样混乱的概念。标准中对编译器合成的拷贝构造函数的描述在12.8.8节，大致做的是按默认构造函数中基类和成员的初始化的顺序，依次调用其拷贝构造函数（数组类型和内置类型按值拷贝）。<br />
　　<a href="http://en.wikipedia.org/wiki/Operation_Aurora">Operation Aurora</a>终于让长久以来不满于李开复的妥协政策的Sergey Brin找到了爆发点。我们见惯了不为五斗米折腰的人，今天，终于见到了宁可不赚钱，也要坚持自己的价值观的企业。（那些认定Google此举所谋者大的循环论证，请不要来打扰评论区了。）</p>
<img src="http://www.briefdream.com/?ak_action=api_record_view&id=603&type=feed" alt="" />
	<ul class="st-related-posts">
	<li><a href="http://www.briefdream.com/kd-tree-color-problem/" title="线段染色问题 (2007-01-07)">线段染色问题</a></li>
	<li><a href="http://www.briefdream.com/fisrt-program-in-c/" title="第一次用C++写程序——C++与Pascal在数组定义上的区别 (2007-01-06)">第一次用C++写程序——C++与Pascal在数组定义上的区别</a></li>
	<li><a href="http://www.briefdream.com/a-strange-function/" title="研究了一个形式怪异的函数 (2007-06-12)">研究了一个形式怪异的函数</a></li>
	<li><a href="http://www.briefdream.com/kan-dao-da-jia-shuo-ke-cheng-wo-ye-shuo-yi-shuo-wo-de-gan-shou/" title="看到大家说课程，我也说一说我的感受 (2009-03-26)">看到大家说课程，我也说一说我的感受</a></li>
	<li><a href="http://www.briefdream.com/%e7%9a%8e%e7%9a%8e%e7%99%bd%e9%a9%b9%ef%bc%8c%e9%a3%9f%e6%88%91%e5%9c%ba%e8%8b%97/" title="皎皎白驹，食我场苗 (2009-12-05)">皎皎白驹，食我场苗</a></li>
	<li><a href="http://www.briefdream.com/flush-cpp-standard-input-stream-buffer/" title="清空C++标准输入流缓冲区 (2008-10-13)">清空C++标准输入流缓冲区</a></li>
	<li><a href="http://www.briefdream.com/2-good-ides/" title="推荐两个好用的IDE for C++ (2007-02-07)">推荐两个好用的IDE for C++</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.briefdream.com/politics-for-programmers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
