<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://kevin.9511.net/wp-atom.php">
	<title type="text">后院|kevin’s backyard</title>
	<subtitle type="text">立志做一个混事业型男人</subtitle>

	<updated>2010-03-14T18:38:03Z</updated>
	<generator uri="http://wordpress.org/" version="2.8.4">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://kevin.9511.net" />
	<id>http://kevin.9511.net/feed/atom</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/rui7905" /><feedburner:info uri="rui7905" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[互联网行业注定是弱势群体]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/wFv2qOZzgss/495.html" />
		<id>http://kevin.9511.net/?p=495</id>
		<updated>2010-03-09T18:37:41Z</updated>
		<published>2010-03-09T18:37:41Z</published>
		<category scheme="http://kevin.9511.net" term="互联网" />		<summary type="html"><![CDATA[从李彦宏的博客看到的，看完之后，只有一声叹息。悄悄的转载，呐喊的不要。
互联网，据说是唯一一个在国内市场打败了所有气势汹汹的国际寡头同行的中国产业；互联网，据说是一个曾经完全靠一批有梦想的人用规范的民营资本运作起来如 今正在国进民退的朝阳产业；移动互联网，据说是中国目前真正可以和世界基本同步的新兴战略产业。但是，在中国最高级别的决策会议上，却没有一个人愿意振臂 高呼，或者哪怕是敢于提一两个句子来呐喊。
原文地址：http://mrpad.blog.sohu.com/145352885.html
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/495.html">&lt;p&gt;从&lt;a href="http://hi.baidu.com/liyanhong/blog/item/bcc079310c5c5812ebc4af7c.html" target="_blank"&gt;李彦宏的博客&lt;/a&gt;看到的，看完之后，只有一声叹息。悄悄的转载，呐喊的不要。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;互联网，据说是唯一一个在国内市场打败了所有气势汹汹的国际寡头同行的中国产业；互联网，据说是一个曾经完全靠一批有梦想的人用规范的民营资本运作起来如 今正在国进民退的朝阳产业；移动互联网，据说是中国目前真正可以和世界基本同步的新兴战略产业。但是，在中国最高级别的决策会议上，却没有一个人愿意振臂 高呼，或者哪怕是敢于提一两个句子来呐喊。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;原文地址：&lt;a href="http://mrpad.blog.sohu.com/145352885.html" target="_blank"&gt;http://mrpad.blog.sohu.com/145352885.html&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/wFv2qOZzgss" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/495.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/495.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/495.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[玛丽和马克思]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/-mS119mtfCI/486.html" />
		<id>http://kevin.9511.net/?p=486</id>
		<updated>2010-02-25T19:19:26Z</updated>
		<published>2010-02-25T19:09:26Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="电影" />		<summary type="html"><![CDATA[很久没写点字了，工作乱七八糟，生活杂乱无章，也实在没什么好写的。今夜本来是要早睡，关机前发现昨天开始下载的《玛丽和马克思》已经完成。于是乎，伴着烟盒里仅有的4根将军和半杯浓茶，就这么看完了。
这是一部没有震撼的特效、没有曲折的情节、没有大规模的宣传、制作简陋到极点的独立动画电影。正是这样一部起初看的我有点昏昏欲睡的动画，在豆瓣上拿到了少有的9分（阿凡达也不过才9.1分）。更让人动容的是，这片子改编自一个真实的故事。甚至字母翻译者在片尾都额外加上了一句“谨以虔诚之心翻译本片字幕献给过去现在未来的所有朋友”。
看片子的过程中不止一次的发现其实自己有时候很像Max。正当我在笨拙的试图组织一些文字去表达我现在的心情时，看到了豆瓣上的这篇评论，且与我的感觉如此的想象。摘抄两段，以表我意。
看到他坐在打字机前面认真的敲打的每一个字，那些单调而寂静的场景是多么的熟悉。大部分时间，我就是这样度过，或者说，即使有很多人在身边，我也常常会有一种很安静的感觉，似乎只能听到那些声音的频率而已。我仿佛看到我自己，丑陋，肥胖，懒惰，懦弱，却渴望美好，勇敢与坚强。而同时Max又是那样的可爱， 他会发明属于自己的词confuzzled，他会给市长写信，他的内心深处有着多么可爱而顽皮的一面啊。但是同时，他不断的在数有几根烟头。我一直觉得， 当有一天你觉得生活不再精彩的时候，就会开始计算身边的一切，就如同睡不着数羊一样，这只是一种让自己坚持下去的办法。那些一个人寂寞的夜晚，如果是日久 天长的话，一定会吞没心中的信念。
我想我之所以像Max一样也如此的焦虑与厌烦多半是出于对于自己的失望。我们都曾经因为自己的小智慧而得意洋洋。但当我走过青少年时代，发现自己并没有变得好看，也没有很有钱之后，我并非自愿但是毫无选择的接受了“我并不完美”的这个事实。我无法跟任何一个人很自然的在生活中谈起这些事情，因为这些心底的 痛苦似乎并不适合作为日常交谈的内容。我每天都如此深刻地感受着自己的不完美，却无能为力。我发现原来我可以成为任何样子，却不可能成为我所期待的那样 子。就像Max所说的那样，when i was young, I want to be anybody but  myself。似乎如果有一天我真地对自己彻底失望了，我也会开始和Max一样过上单调的生活，因为如果无法成为最完美的样子，其他的一切都并没有什么区 别了。如果我不能像Max一样遇到Mary，我宁愿一个人静静地在某个清晨离开。也许人生不过就是这样。
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/486.html">&lt;p&gt;很久没写点字了，工作乱七八糟，生活杂乱无章，也实在没什么好写的。今夜本来是要早睡，关机前发现昨天开始下载的《&lt;a href="http://www.douban.com/subject/3072124/" target="_blank"&gt;玛丽和马克思&lt;/a&gt;》已经完成。于是乎，伴着烟盒里仅有的4根将军和半杯浓茶，就这么看完了。&lt;/p&gt;
&lt;p&gt;这是一部没有震撼的特效、没有曲折的情节、没有大规模的宣传、制作简陋到极点的独立动画电影。正是这样一部起初看的我有点昏昏欲睡的动画，在豆瓣上拿到了少有的9分（阿凡达也不过才9.1分）。更让人动容的是，这片子改编自一个真实的故事。甚至字母翻译者在片尾都额外加上了一句“谨以虔诚之心翻译本片字幕献给过去现在未来的所有朋友”。&lt;/p&gt;
&lt;p&gt;看片子的过程中不止一次的发现其实自己有时候很像Max。正当我在笨拙的试图组织一些文字去表达我现在的心情时，看到了豆瓣上的这篇&lt;a href="http://www.douban.com/review/2799257/" target="_blank"&gt;评论&lt;/a&gt;，且与我的感觉如此的想象。摘抄两段，以表我意。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;看到他坐在打字机前面认真的敲打的每一个字，那些单调而寂静的场景是多么的熟悉。大部分时间，我就是这样度过，或者说，即使有很多人在身边，我也常常会有一种很安静的感觉，似乎只能听到那些声音的频率而已。我仿佛看到我自己，丑陋，肥胖，懒惰，懦弱，却渴望美好，勇敢与坚强。而同时Max又是那样的可爱， 他会发明属于自己的词confuzzled，他会给市长写信，他的内心深处有着多么可爱而顽皮的一面啊。但是同时，他不断的在数有几根烟头。我一直觉得， 当有一天你觉得生活不再精彩的时候，就会开始计算身边的一切，就如同睡不着数羊一样，这只是一种让自己坚持下去的办法。那些一个人寂寞的夜晚，如果是日久 天长的话，一定会吞没心中的信念。&lt;/p&gt;
&lt;p&gt;我想我之所以像Max一样也如此的焦虑与厌烦多半是出于对于自己的失望。我们都曾经因为自己的小智慧而得意洋洋。但当我走过青少年时代，发现自己并没有变得好看，也没有很有钱之后，我并非自愿但是毫无选择的接受了“我并不完美”的这个事实。我无法跟任何一个人很自然的在生活中谈起这些事情，因为这些心底的 痛苦似乎并不适合作为日常交谈的内容。我每天都如此深刻地感受着自己的不完美，却无能为力。我发现原来我可以成为任何样子，却不可能成为我所期待的那样 子。就像Max所说的那样，when i was young, I want to be anybody but  myself。似乎如果有一天我真地对自己彻底失望了，我也会开始和Max一样过上单调的生活，因为如果无法成为最完美的样子，其他的一切都并没有什么区 别了。如果我不能像Max一样遇到Mary，我宁愿一个人静静地在某个清晨离开。也许人生不过就是这样。&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/-mS119mtfCI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/486.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/486.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/486.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[通过GoogleReader备份博客并恢复到Wordpress中]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/NIgh3CJ-A3g/454.html" />
		<id>http://kevin.9511.net/?p=454</id>
		<updated>2010-02-02T16:05:59Z</updated>
		<published>2010-01-13T20:24:15Z</published>
		<category scheme="http://kevin.9511.net" term="互联网" /><category scheme="http://kevin.9511.net" term="技术备案" /><category scheme="http://kevin.9511.net" term="appengine" /><category scheme="http://kevin.9511.net" term="atom2rss" /><category scheme="http://kevin.9511.net" term="google" /><category scheme="http://kevin.9511.net" term="reader" /><category scheme="http://kevin.9511.net" term="wordpress" />		<summary type="html"><![CDATA[备份的方法很简单，当然就是通过feed订阅喽。下面是导出的方法。
在google reader中将要导出的博客归入一个新建的类别（label），最好为英文，并在“设置”中将此类别设为“公开”。
通过以下URL即可查看该博客的atom格式的种子（feed）输出：
http://www.google.com/reader/public/atom/user/{userid}/label/{labelname}?n=1000
其中{userid}，可以在 这个页面 的“在新窗口中预览共享条目页”连接中找到。{labelname}是刚刚那个新建的类别名称。n=1000代表一次性输出1000条。
google reader只提供了atom格式的feed输出(后来知道blogger也是如此)，但wordpress却只接受rss格式的输入。他俩不会有仇吧？
为了将atom转换成rss，于是在GAE上做了个atom2rss的工具：http://atom2rss.appspot.com。如果不知道修改hosts文件直接访问appspot的方法，访问可能需要翻墙。
简单介绍下atom2rss这个小工具吧。
1，只支持Atom1.0到RSS2.0的转换并需要提供atom1.0格式种子的URL
2，使用jython+modjy编写，运行于Google AppEngine
3，使用了 http://atom.geekhood.net/ 提供的XSLT转换模板。
4，代码在这里：http://code.google.com/p/atom2rss-jython/
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/454.html">&lt;p&gt;备份的方法很简单，当然就是通过feed订阅喽。下面是导出的方法。&lt;/p&gt;
&lt;p&gt;在google reader中将要导出的博客归入一个新建的类别（label），最好为英文，并在“设置”中将此类别设为“公开”。&lt;/p&gt;
&lt;p&gt;通过以下URL即可查看该博客的atom格式的种子（feed）输出：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;http://www.google.com/reader/public/atom/user/{userid}/label/{labelname}?n=1000&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其中{userid}，可以在 &lt;a href="http://www.google.com/reader/view/user/-/state/com.google/broadcast#friends-manager-page" target="_blank"&gt;这个页面&lt;/a&gt; 的“在新窗口中预览共享条目页”连接中找到。{labelname}是刚刚那个新建的类别名称。n=1000代表一次性输出1000条。&lt;span id="more-454"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;google reader只提供了atom格式的feed输出(后来知道blogger也是如此)，但wordpress却只接受rss格式的输入。他俩不会有仇吧？&lt;/p&gt;
&lt;p&gt;为了将atom转换成rss，于是在GAE上做了个atom2rss的工具：&lt;a href="http://atom2rss.appspot.com" target="_blank"&gt;http://atom2rss.appspot.com&lt;/a&gt;。如果不知道修改hosts文件直接访问appspot的方法，访问可能需要翻墙。&lt;/p&gt;
&lt;p&gt;简单介绍下atom2rss这个小工具吧。&lt;/p&gt;
&lt;p&gt;1，只支持Atom1.0到RSS2.0的转换并需要提供atom1.0格式种子的URL&lt;/p&gt;
&lt;p&gt;2，使用jython+modjy编写，运行于Google AppEngine&lt;/p&gt;
&lt;p&gt;3，使用了 http://atom.geekhood.net/ 提供的XSLT转换模板。&lt;/p&gt;
&lt;p&gt;4，代码在这里：&lt;a href="http://code.google.com/p/atom2rss-jython/" target="_blank"&gt;http://code.google.com/p/atom2rss-jython/&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/NIgh3CJ-A3g" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/454.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/454.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/454.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[jython+modjy在GoogleAppEngine上开发的几个小问题]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/mOHBrbuqXYA/451.html" />
		<id>http://kevin.9511.net/?p=451</id>
		<updated>2010-01-18T22:37:32Z</updated>
		<published>2010-01-13T19:38:51Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="appengine" /><category scheme="http://kevin.9511.net" term="jython" /><category scheme="http://kevin.9511.net" term="modjy" />		<summary type="html"><![CDATA[也许是因为比较新或者应用范围有限，网上关于jython+modjy的资料实在少的很。再加上google appengine这个比较特殊的平台，甭说例子了，连点有用的文章都没有。我最近在GAE上用jython+modjy做了个小玩意，折腾了好几天，写这篇文章总结一下开发过程中遇到了几个小问题
1，在每个程序的第一行声明源文件的编码格式
不管是Jython还是Python，如果不做这个声明，不管你是否将文件存为了UTF-8格式或者其他什么格式，源文件将以默认的ASCII编码格式进行处理。这也是一些中文乱码出现的原因，所以，指定编码格式是个好习惯！以下这两种种方式都是正确的：

# coding=utf-8
# -*- coding: latin-1 -*-

更多格式可参考：http://www.python.org/dev/peps/pep-0263/
2，Unicode对象
与Python一样，在Jython内部是用Unicode来处理字符串的。经Jython做过处理的字符串，最终显示时均需要用unicode对象的encode()方法转换成相应编码方式进行显示，未进行操作过的硬编码除外。代码片段如下：
bs=&#8221;红梅&#8221;+&#8221;红河&#8221;    &#60;==此时经过“+”操作，bs为unicode对象。
bs.encode(&#8217;utf-8&#8242;) &#60;==解码后可以utf-8编码方式显示。
3，获得get/post数据的方式
除了在jython内调用JAVA类的方式之外，可以用以下方法获得：
post = environ['j2ee.request']
bs = post.getParameterValues(&#8217;atom&#8217;)[0]
其中环境变量environ['j2ee.request']，其实是一个 org.mortbay.jetty.Request 对象
应该还有其他更简单的方式，不过我没找到。
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/451.html">&lt;p&gt;也许是因为比较新或者应用范围有限，网上关于jython+modjy的资料实在少的很。再加上google appengine这个比较特殊的平台，甭说例子了，连点有用的文章都没有。我最近在GAE上用jython+modjy做了个小玩意，折腾了好几天，写这篇文章总结一下开发过程中遇到了几个小问题&lt;/p&gt;
&lt;p&gt;1，在每个程序的第一行声明源文件的编码格式&lt;/p&gt;
&lt;p&gt;不管是Jython还是Python，如果不做这个声明，不管你是否将文件存为了UTF-8格式或者其他什么格式，源文件将以默认的ASCII编码格式进行处理。这也是一些中文乱码出现的原因，所以，指定编码格式是个好习惯！以下这两种种方式都是正确的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;# coding=utf-8
# -*- coding: latin-1 -*-&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;更多格式可参考：http://www.python.org/dev/peps/pep-0263/&lt;span id="more-451"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;2，Unicode对象&lt;/p&gt;
&lt;p&gt;与Python一样，在Jython内部是用Unicode来处理字符串的。经Jython做过处理的字符串，最终显示时均需要用unicode对象的encode()方法转换成相应编码方式进行显示，未进行操作过的硬编码除外。代码片段如下：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;bs=&amp;#8221;红梅&amp;#8221;+&amp;#8221;红河&amp;#8221;    &amp;lt;==此时经过“+”操作，bs为unicode对象。&lt;br /&gt;
bs.encode(&amp;#8217;utf-8&amp;#8242;) &amp;lt;==解码后可以utf-8编码方式显示。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;3，获得get/post数据的方式&lt;/p&gt;
&lt;p&gt;除了在jython内调用JAVA类的方式之外，可以用以下方法获得：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;post = environ['j2ee.request']&lt;br /&gt;
bs = post.getParameterValues(&amp;#8217;atom&amp;#8217;)[0]&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其中环境变量environ['j2ee.request']，其实是一个 org.mortbay.jetty.Request 对象&lt;/p&gt;
&lt;p&gt;应该还有其他更简单的方式，不过我没找到。&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/mOHBrbuqXYA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/451.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/451.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/451.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[Jython+Modjy+GoogleAppEngine]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/T-dovvnk6C4/442.html" />
		<id>http://kevin.9511.net/?p=442</id>
		<updated>2010-03-14T18:38:03Z</updated>
		<published>2010-01-13T18:44:01Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="appengine" /><category scheme="http://kevin.9511.net" term="java" /><category scheme="http://kevin.9511.net" term="jython" /><category scheme="http://kevin.9511.net" term="modjy" /><category scheme="http://kevin.9511.net" term="python" />		<summary type="html"><![CDATA[Modjy是一个让Jython应用可以在Java Servlet容器内运行的桥梁，是一个标准的WSGI实现。并且该项目已经被正式纳入到了Jython项目中。
现在Jython和modjy也可以在目前世界上最大的Servlet容器——Google AppEngine上运行了。
之前要使Jython运行在Google AppEngine上，是需要使用Google发布的的一个补丁，但最新的Jython2.5版已经不需要了。
Google AppEngine服务限制每个应用程序所包含的文件不能大于1000个。但是Jython的Lib目录下文件很多，显然已经超过了这个限制。最简单的解决方法是把所有的库文件都放在一个ZIP文件内。然后，还需要建立一个.pth文件应来指向这个zip文件。这个.pth文件的主文件名是什么无所谓，可以随便起。文件内容只需一句话“lib.zip”。把all.pth和lib.zip一起放在你的GoogleAppEngine项目WEB-INF/lib-python目录下。
这个过程看起来比较复杂，不过没关系，modjy官方提供了一个制作好的包，你只需要下载Jython2.5，并把jython.jar文件复制到WEB-INF/lib目录下就好了。
下面的链接是这个包的地址：
http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip
OR
http://downloads.xhaus.com/modjy_webapp_google_appengine/
里面还包含一个完整的使用modjy开发的demo程序，可以直接不经修改的在GoogleAppEngine上运行。样子看这里：http://jywsgi.appspot.com/ 。整个压缩包的结构如下：

以上文字大部分翻译自modjy官方的一个说明，原文在这里。
参考文档
http://code.google.com/appengine/docs/java/overview.html
http://opensource.xhaus.com/projects/modjy/wiki
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/442.html">&lt;p&gt;&lt;a href="http://modjy.xhaus.com/" target="_blank"&gt;Modjy&lt;/a&gt;是一个让&lt;a href="http://www.jython.org/" target="_blank"&gt;Jython&lt;/a&gt;应用可以在Java Servlet容器内运行的桥梁，是一个标准的&lt;a href="http://zh.wikipedia.org/wiki/WSGI" target="_blank"&gt;WSGI&lt;/a&gt;实现。并且该项目已经被正式纳入到了Jython项目中。&lt;/p&gt;
&lt;p&gt;现在Jython和modjy也可以在目前世界上最大的Servlet容器——Google AppEngine上运行了。&lt;/p&gt;
&lt;p&gt;之前要使Jython运行在Google AppEngine上，是需要使用Google发布的的一个补丁，但最新的Jython2.5版已经不需要了。&lt;span id="more-442"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Google AppEngine服务限制每个应用程序所包含的文件不能大于1000个。但是Jython的Lib目录下文件很多，显然已经超过了这个限制。最简单的解决方法是把所有的库文件都放在一个ZIP文件内。然后，还需要建立一个.pth文件应来指向这个zip文件。这个.pth文件的主文件名是什么无所谓，可以随便起。文件内容只需一句话“lib.zip”。把all.pth和lib.zip一起放在你的GoogleAppEngine项目WEB-INF/lib-python目录下。&lt;/p&gt;
&lt;p&gt;这个过程看起来比较复杂，不过没关系，modjy官方提供了一个制作好的包，你只需要下载Jython2.5，并把jython.jar文件复制到WEB-INF/lib目录下就好了。&lt;/p&gt;
&lt;p&gt;下面的链接是这个包的地址：&lt;br /&gt;
&lt;a href="http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip" target="_blank"&gt;http://code.google.com/p/rui7905/downloads/detail?name=modjy_webapp.zip&lt;/a&gt;&lt;br /&gt;
OR&lt;br /&gt;
&lt;a href="http://downloads.xhaus.com/modjy_webapp_google_appengine/" target="_blank"&gt;http://downloads.xhaus.com/modjy_webapp_google_appengine/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;里面还包含一个完整的使用modjy开发的demo程序，可以直接不经修改的在GoogleAppEngine上运行。样子看这里：&lt;a href="http://jywsgi.appspot.com/" target="_blank"&gt;http://jywsgi.appspot.com/&lt;/a&gt; 。整个压缩包的结构如下：&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-449" title="modjy_webapp" src="http://kevin.9511.net/wp-content/uploads/2010/01/modjy_webapp.png" alt="modjy_webapp" width="435" height="208" /&gt;&lt;/p&gt;
&lt;p&gt;以上文字大部分翻译自modjy官方的一个说明，&lt;a href="http://opensource.xhaus.com/projects/modjy/wiki/ModjyGoogleAppEngine"&gt;原文在这里&lt;/a&gt;。&lt;br /&gt;
参考文档&lt;br /&gt;
&lt;a href="http://code.google.com/appengine/docs/java/overview.html" target="_blank"&gt;http://code.google.com/appengine/docs/java/overview.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://opensource.xhaus.com/projects/modjy/wiki" target="_blank"&gt;http://opensource.xhaus.com/projects/modjy/wiki&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/T-dovvnk6C4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/442.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/442.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/442.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[GoogleAppEngine上有意思的玩意和工具]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/VMyLlOeWhWU/432.html" />
		<id>http://kevin.9511.net/?p=432</id>
		<updated>2010-01-18T22:38:20Z</updated>
		<published>2010-01-07T02:33:12Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="gae" /><category scheme="http://kevin.9511.net" term="google" /><category scheme="http://kevin.9511.net" term="google appengine" /><category scheme="http://kevin.9511.net" term="python" />		<summary type="html"><![CDATA[Google的AppEngine真是个挺好玩也挺耐玩的东西，可我除了用它做了个TwitterAPI的代理，其他的也想不出来能在上面玩点啥了。
闲着无聊，就开始翻看code.google.com上的目录，并以“GoogleAppEngine”为关键字搜索。翻了一个多小时，也算找了几个好玩的东西，有些是跑在GAE上的应用程序，有些是GAE的辅助开发工具，还有些……我也不知道能干嘛了，反正都是跟GAE有关。那些多如牛毛的Blog啊Proxy啊framework啊之类的东西实在是没啥新意，就略过不提了……
google-appengine-wx-launcher
用wxWidgets写的一个运行于Windows平台下的应用程序，用来创建、运行、部署、管理你的Google App Engine项目。该项目也有运行在Mac和Linux上的版本。
http://code.google.com/p/google-appengine-wx-launcher/
gae-testbed
GAE应用的测试环境
http://code.google.com/p/gae-testbed/
google-file-service(Java)
跑在GAE上的开源文件存储服务
http://code.google.com/p/google-file-service/
fashion-girls
开源的跑在GAE上的个人相册
http://code.google.com/p/fashion-girls/
gaelucene
Run Lucene Application On Google AppEngine
http://code.google.com/p/gaelucene/
appscale
开源的GAE云计算接口解决方案，该项目由加州大学圣巴巴拉分校RACELab开发并被google和美国国家科学基金会所支持。看上去比较NB，好像是可以用它自己搭建一个可以运行GAE应用的运行环境。
http://code.google.com/p/appscale/
GAESQL
在线设计 Google App Engine 的数据库 , 并且能将设计结果输出为 python 的脚本。GAE SQL Designer
http://gaesql.appspot.com/
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/432.html">&lt;p&gt;Google的AppEngine真是个挺好玩也挺耐玩的东西，可我除了用它做了个TwitterAPI的代理，其他的也想不出来能在上面玩点啥了。&lt;/p&gt;
&lt;p&gt;闲着无聊，就开始翻看code.google.com上的目录，并以“GoogleAppEngine”为关键字搜索。翻了一个多小时，也算找了几个好玩的东西，有些是跑在GAE上的应用程序，有些是GAE的辅助开发工具，还有些……我也不知道能干嘛了，反正都是跟GAE有关。那些多如牛毛的Blog啊Proxy啊framework啊之类的东西实在是没啥新意，就略过不提了……&lt;span id="more-432"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;google-appengine-wx-launcher&lt;/strong&gt;&lt;br /&gt;
用wxWidgets写的一个运行于Windows平台下的应用程序，用来创建、运行、部署、管理你的Google App Engine项目。该项目也有运行在Mac和Linux上的版本。&lt;br /&gt;
&lt;a href="http://code.google.com/p/google-appengine-wx-launcher/" target="_blank"&gt;http://code.google.com/p/google-appengine-wx-launcher/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gae-testbed&lt;/strong&gt;&lt;br /&gt;
GAE应用的测试环境&lt;br /&gt;
&lt;a href="http://code.google.com/p/google-appengine-wx-launcher/" target="_blank"&gt;http://code.google.com/p/gae-testbed/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;google-file-service&lt;/strong&gt;(Java)&lt;br /&gt;
跑在GAE上的开源文件存储服务&lt;br /&gt;
&lt;a href="http://code.google.com/p/google-file-service/" target="_blank"&gt;http://code.google.com/p/google-file-service/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;fashion-girls&lt;/strong&gt;&lt;br /&gt;
开源的跑在GAE上的个人相册&lt;br /&gt;
&lt;a href="http://code.google.com/p/fashion-girls/" target="_blank"&gt;http://code.google.com/p/fashion-girls/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gaelucene&lt;/strong&gt;&lt;br /&gt;
Run Lucene Application On Google AppEngine&lt;br /&gt;
&lt;a href="http://code.google.com/p/gaelucene/" target="_blank"&gt;http://code.google.com/p/gaelucene/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;appscale&lt;/strong&gt;&lt;br /&gt;
开源的GAE云计算接口解决方案，该项目由加州大学圣巴巴拉分校RACELab开发并被google和美国国家科学基金会所支持。看上去比较NB，好像是可以用它自己搭建一个可以运行GAE应用的运行环境。&lt;br /&gt;
&lt;a href="http://code.google.com/p/appscale/" target="_blank"&gt;http://code.google.com/p/appscale/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GAESQL&lt;/strong&gt;&lt;br /&gt;
在线设计 Google App Engine 的数据库 , 并且能将设计结果输出为 python 的脚本。GAE SQL Designer&lt;br /&gt;
&lt;a href="http://gaesql.appspot.com/" target="_blank"&gt;http://gaesql.appspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/VMyLlOeWhWU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/432.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/432.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/432.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[QQ群里的男性健康直播节目]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/vk4EUxsH2XE/421.html" />
		<id>http://kevin.9511.net/?p=421</id>
		<updated>2010-01-18T22:38:37Z</updated>
		<published>2009-12-18T03:10:15Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="QQ" />		<summary type="html"><![CDATA[寂寞的夜晚……寂寞的QQ群里一群寂寞的傻老爷们儿的即兴直播。Action !


]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/421.html">&lt;p&gt;&lt;strong&gt;寂寞的夜晚……寂寞的QQ群里一群寂寞的傻老爷们儿的即兴直播。Action !&lt;span id="more-421"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-427" title="1" src="http://kevin.9511.net/wp-content/uploads/2009/12/11.png" alt="1" width="525" height="206" /&gt;&lt;img class="alignnone size-full wp-image-423" title="2" src="http://kevin.9511.net/wp-content/uploads/2009/12/2.png" alt="2" width="522" height="524" /&gt;&lt;img class="alignnone size-full wp-image-424" title="3" src="http://kevin.9511.net/wp-content/uploads/2009/12/3.png" alt="3" width="523" height="525" /&gt;&lt;img class="alignnone size-full wp-image-425" title="4" src="http://kevin.9511.net/wp-content/uploads/2009/12/4.png" alt="4" width="526" height="412" /&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/vk4EUxsH2XE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/421.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/421.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/421.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[TwitClientRank下线了]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/i9RoW8Ipho0/411.html" />
		<id>http://kevin.9511.net/?p=411</id>
		<updated>2010-01-18T22:39:12Z</updated>
		<published>2009-12-17T09:52:47Z</published>
		<category scheme="http://kevin.9511.net" term="互联网" /><category scheme="http://kevin.9511.net" term="twitter" />		<summary type="html"><![CDATA[前阵子无聊搞了个小程序用来统计到底有多少个Twitter的客户端
于是有了http://www.9511.net/TwitClientRank.html这个页面
可最新这个页面知道的人越来越多了，也让我越来越担心了。
服务器不是我一个人的，而且是蹭的哥们儿公司的机房，这些让我不得不小心，只有将这个页面下线图个安心。
最后一次的数据页面，我放在GoogleSites上了，估计要翻墙
这个小程序的源代码我也公开了吧
如果有不怕事的或者墙外有空间的哥们儿能给再架起来，那是最好不过了，起码目前我没这个能力。
代码有少许改动，主要是为了隐去我的一些服务器环境信息。数据库中的数据是截至目前最新的。
【代码传送门】【页面传送门】
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/411.html">&lt;p&gt;前阵子无聊搞了个小程序用来统计到底有多少个Twitter的客户端&lt;/p&gt;
&lt;p&gt;于是有了&lt;a href="http://www.9511.net/TwitClientRank.html" target="_blank"&gt;http://www.9511.net/TwitClientRank.html&lt;/a&gt;这个页面&lt;/p&gt;
&lt;p&gt;可最新这个页面知道的人越来越多了，也让我越来越担心了。&lt;br /&gt;
服务器不是我一个人的，而且是蹭的哥们儿公司的机房，这些让我不得不小心，只有将这个页面下线图个安心。&lt;span id="more-411"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;最后一次的数据页面，我放在GoogleSites上了，估计要翻墙&lt;/p&gt;
&lt;p&gt;这个小程序的源代码我也公开了吧&lt;/p&gt;
&lt;p&gt;如果有不怕事的或者墙外有空间的哥们儿能给再架起来，那是最好不过了，起码目前我没这个能力。&lt;br /&gt;
代码有少许改动，主要是为了隐去我的一些服务器环境信息。数据库中的数据是截至目前最新的。&lt;/p&gt;
&lt;p&gt;【&lt;a href="http://gtap.googlecode.com/files/TwitClientRank.tar.gz" target="_blank"&gt;代码传送门&lt;/a&gt;】【&lt;a href="http://sites.google.com/site/twitclientrank/" target="_blank"&gt;页面传送门&lt;/a&gt;】&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/i9RoW8Ipho0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/411.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/411.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/411.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[使用SCP和Cron进行数据备份]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/WeK7c-u9D80/406.html" />
		<id>http://kevin.9511.net/?p=406</id>
		<updated>2010-01-18T22:39:27Z</updated>
		<published>2009-12-10T11:15:36Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="crontab" /><category scheme="http://kevin.9511.net" term="linux" /><category scheme="http://kevin.9511.net" term="scp" />		<summary type="html"><![CDATA[服务器间的数据同步，rsync的确是个好方式，不过它只能被动同步而不能主动分发。
本想使用SVN+rsync的方案进行代码的管理，可是因为上面说到的原因，无法达到代码的即时分发。
遂想起SCP这个东西，但SCP每次执行必须要在控制台输入手动输入密码，于是就Google到了下面这个文章。
人家说的是用SCP进行数据备份，我是用来跟SVN的hook功能一起达到即时分发代码的目的，原理是一样的。
实在懒的翻译了，文章来自：http://www.spaceprogram.com/knowledge/cron_scp.html
Introduction
This document will explain the steps required to use scp in cron. This is generally useful to do automated backups on Linux and other nix variations.
Instructions
These instructions will walk you through what it takes.
1. Generate a private/public key pair 
Simple command to do this:
ssh-keygen -t rsa
Leave the passphrase empty so that cron can use it [...]]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/406.html">&lt;p&gt;服务器间的数据同步，rsync的确是个好方式，不过它只能被动同步而不能主动分发。&lt;/p&gt;
&lt;p&gt;本想使用SVN+rsync的方案进行代码的管理，可是因为上面说到的原因，无法达到代码的即时分发。&lt;/p&gt;
&lt;p&gt;遂想起SCP这个东西，但SCP每次执行必须要在控制台输入手动输入密码，于是就Google到了下面这个文章。&lt;/p&gt;
&lt;p&gt;人家说的是用SCP进行数据备份，我是用来跟SVN的hook功能一起达到即时分发代码的目的，原理是一样的。&lt;span id="more-406"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;实在懒的翻译了，文章来自：&lt;a href="http://www.spaceprogram.com/knowledge/cron_scp.html" target="_blank"&gt;http://www.spaceprogram.com/knowledge/cron_scp.html&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;Introduction&lt;/h5&gt;
&lt;p&gt;This document will explain the steps required to use scp in cron. This is generally useful to do automated backups on Linux and other nix variations.&lt;/p&gt;
&lt;h5&gt;Instructions&lt;/h5&gt;
&lt;p&gt;These instructions will walk you through what it takes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Generate a private/public key pair &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simple command to do this:&lt;/p&gt;
&lt;div&gt;ssh-keygen -t rsa&lt;/div&gt;
&lt;p&gt;Leave the passphrase empty so that cron can use it passwordless. Just         be sure nobody gets your private key.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Copy the public key to the remote server &lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;scp ~/.ssh/id_rsa.pub remote_host:&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;3. Add local key to remote servers trusted key &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Log on to the remote server and if there has never been a key created         for this user on the remote machine, run the &lt;span&gt;ssh-keygen         -t rsa&lt;/span&gt; just to get the key directory and stuff set up.&lt;/p&gt;
&lt;p&gt;Then concatenate the new key to your authorized_keys file:&lt;/p&gt;
&lt;p&gt;cat ~/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;/p&gt;
&lt;p&gt;Now for some reason, you may have to do this to the keys file:&lt;/p&gt;
&lt;p&gt;chmod 644 ~/.ssh/authorized_keys&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Now try logging into the remote machine again from local &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ssh REMOTE_USERNAME@remote_host&lt;/p&gt;
&lt;p&gt;This &lt;em&gt;should&lt;/em&gt; log you in without asking for a password. If it doesn&amp;#8217;t, then something must be wrong at this point and you should go through the steps above again.&lt;/p&gt;
&lt;p&gt;This should also mean that scp will work the same way and you might want to test that scp works by copying a file from local to remote using scp. If no password, then we&amp;#8217;re all good.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Now lets test out cron script&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My cron script for this example is simply going to copy a directory         of files using scp to the remote server.&lt;/p&gt;
&lt;p&gt;scp -r /PATH_TO_FILES/ REMOTE_USER@remote_host:BACKUPS/&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s about all she wrote. Save that in a file called backup.sh (or whatever you want to call it), chmod 755 i it and then try running it. ./backup.sh to run it. If it works, then next stop is to cron it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Add script to cron jobs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Easiest way is to simply copy the backup.sh file into /etc/cron.daily/ . This will make it run every day. Choose another cron.SOMETIME to make it run more or less often. If you want more control on when it&amp;#8217;s run, read up on adding it to the crontab.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/WeK7c-u9D80" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/406.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/406.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/406.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[lilei和hanmeimei的欲望人生]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/HL8-XUM_M24/379.html" />
		<id>http://kevin.9511.net/?p=379</id>
		<updated>2010-01-18T22:39:44Z</updated>
		<published>2009-09-27T23:40:21Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="两性" /><category scheme="http://kevin.9511.net" term="人生" /><category scheme="http://kevin.9511.net" term="欲望" />		<summary type="html"><![CDATA[很早之前看过，非常不错的漫画故事。虽然口味偏重，但还是能让人体会那种相濡以沫和白头偕老的幸福。
今天突然想起来了，花了好久好久才找到，是sohu.com以前做的一个专题。
以下文字来自该专题的编者按，出处链接已经失效。不知道lilei和hanmeimei是谁的，点这里
男人频道一直想做个探讨和表现男女一生欲望的专题，却又不愿把它弄得像网上很多类似专题一样色欲横流。既要保证品位，又要彰显情趣，这是领导们给这个专题的要求，也或许就是领导们的性爱观。说简单点，男人频道不能做男盗女娼遍青史的放大和言传，却可以做一只红杏出墙来的管窥和意会，而且故事要精彩。
受知名游戏《模拟人生》的启发，我们决定设定两个虚拟人物，用一程虚拟人生的故事来完成这个专题。于是我们联系了漫画师，联系了原创作者，确定了用Lilei和Hanmeimei这两个英语课本上的卡通人为蓝本人物来完成一个悲欢离合里性致盎然的故事。因为前一阵子，有心的网友们翻起了故纸堆，编起了这两个白开水一样的家伙的故事。Lilei和Hanmeimei无性格，不可爱，只会堆着一脸假笑拽几句极其easy和死板的英语，但那些故事却饶有趣味和深意，引起了社会广泛的关注。我们用这对纸上男女的模拟人生来串起这个大专题，或会引起一代人的共鸣，希望大家都来参与为他们人生进行的创作。
既然是原创，不如再深挖三尺。lilei和Hanmeimei的新编故事源自互联网，网友们巨大的集合创造力远大于我们一个频道，我们希望能够抛砖引玉，开个故事的头，网友们可以在这个基础上发挥你们伟大而极致的想象力，尽情编写Lilei和Hanmeimei的纸上一生。我们将根据来自四面八方的灵感，创作出一百幅漫画（lilei50幅，Hanmeimei50幅），以及相对应的文字，我相信，这个由千言万语凝聚成的故事，一定会栩栩如生，荡人心魄。
生怕以后想要看的时候又找不到了，就把页面截图存下来了。存在picasa上，看不了的，参考这里。

]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/379.html">&lt;p&gt;很早之前看过，非常不错的漫画故事。虽然口味偏重，但还是能让人体会那种相濡以沫和白头偕老的幸福。&lt;/p&gt;
&lt;p&gt;今天突然想起来了，花了好久好久才找到，是sohu.com以前做的一个&lt;a href="http://men.sohu.com/s2008/3967/s258855099/" target="_blank"&gt;专题&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;以下文字来自该专题的编者按，出处链接已经失效。不知道lilei和hanmeimei是谁的，&lt;a href="http://is.gd/3Jycd" target="_blank"&gt;点这里&lt;/a&gt;&lt;span id="more-379"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;男人频道一直想做个探讨和表现男女一生欲望的专题，却又不愿把它弄得像网上很多类似专题一样色欲横流。既要保证品位，又要彰显情趣，这是领导们给这个专题的要求，也或许就是领导们的性爱观。说简单点，男人频道不能做男盗女娼遍青史的放大和言传，却可以做一只红杏出墙来的管窥和意会，而且故事要精彩。&lt;/p&gt;
&lt;p&gt;受知名游戏《模拟人生》的启发，我们决定设定两个虚拟人物，用一程虚拟人生的故事来完成这个专题。于是我们联系了漫画师，联系了原创作者，确定了用Lilei和Hanmeimei这两个英语课本上的卡通人为蓝本人物来完成一个悲欢离合里性致盎然的故事。因为前一阵子，有心的网友们翻起了故纸堆，编起了这两个白开水一样的家伙的故事。Lilei和Hanmeimei无性格，不可爱，只会堆着一脸假笑拽几句极其easy和死板的英语，但那些故事却饶有趣味和深意，引起了社会广泛的关注。我们用这对纸上男女的模拟人生来串起这个大专题，或会引起一代人的共鸣，希望大家都来参与为他们人生进行的创作。&lt;/p&gt;
&lt;p&gt;既然是原创，不如再深挖三尺。lilei和Hanmeimei的新编故事源自互联网，网友们巨大的集合创造力远大于我们一个频道，我们希望能够抛砖引玉，开个故事的头，网友们可以在这个基础上发挥你们伟大而极致的想象力，尽情编写Lilei和Hanmeimei的纸上一生。我们将根据来自四面八方的灵感，创作出一百幅漫画（lilei50幅，Hanmeimei50幅），以及相对应的文字，我相信，这个由千言万语凝聚成的故事，一定会栩栩如生，荡人心魄。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;生怕以后想要看的时候又找不到了，就把页面截图存下来了。存在picasa上，看不了的，&lt;a href="http://kevin.9511.net/archives/300.html" target="_blank"&gt;参考这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="630" height="420" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="flashvars" value="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;noautoplay=1&amp;amp;hl=zh_CN&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmysqlee%2Falbumid%2F5386290216495315361%3Falt%3Drss%26kind%3Dphoto%26hl%3Dzh_CN" /&gt;&lt;param name="src" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" /&gt;&lt;embed type="application/x-shockwave-flash" width="630" height="420" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;noautoplay=1&amp;amp;hl=zh_CN&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fmysqlee%2Falbumid%2F5386290216495315361%3Falt%3Drss%26kind%3Dphoto%26hl%3Dzh_CN"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/HL8-XUM_M24" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/379.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/379.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/379.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[茶凉了，我再去给你续上吧]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/XrkGqxrfVWQ/365.html" />
		<id>http://kevin.9511.net/?p=365</id>
		<updated>2010-01-18T22:40:19Z</updated>
		<published>2009-09-12T23:28:53Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="俞飞鸿" /><category scheme="http://kevin.9511.net" term="爱有来生" /><category scheme="http://kevin.9511.net" term="电影" />		<summary type="html"><![CDATA[以前我一直在想 总有一天她会来的
不管知不知道 她一定还会走到这棵树下来
只要她来了 只要看她一眼 不管她变成了什么样子
我一定还能认得出她来
我就这样一直的等 一直等
可是这个故事快讲完了 我才意识到
我从来都没有问过自己 我为什么要等她
我们前世都身不由己  我以为今生碰到她 我们可以从头再来 我可以让她幸福
可是我没有想过的是
也许今生的她正生活得非常幸福 就像你一样
我想给她的一切 她都已经有了
其实我想要的不就是给她幸福吗
所以只要她是快乐的 这快乐是不是我给的 能不能等到她 都不重要了
…………
来生我们再会，来生，我会等你
想到自己有过的那些时刻，最后的最后，我还是克制不住的流泪了。俞飞鸿作品《爱有来生》
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/365.html">&lt;blockquote&gt;&lt;p&gt;以前我一直在想 总有一天她会来的&lt;br /&gt;
不管知不知道 她一定还会走到这棵树下来&lt;br /&gt;
只要她来了 只要看她一眼 不管她变成了什么样子&lt;br /&gt;
我一定还能认得出她来&lt;/p&gt;
&lt;p&gt;我就这样一直的等 一直等&lt;br /&gt;
可是这个故事快讲完了 我才意识到&lt;br /&gt;
我从来都没有问过自己 我为什么要等她&lt;br /&gt;
我们前世都身不由己  我以为今生碰到她 我们可以从头再来 我可以让她幸福&lt;span id="more-365"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;可是我没有想过的是&lt;br /&gt;
也许今生的她正生活得非常幸福 就像你一样&lt;br /&gt;
我想给她的一切 她都已经有了&lt;br /&gt;
其实我想要的不就是给她幸福吗&lt;br /&gt;
所以只要她是快乐的 这快乐是不是我给的 能不能等到她 都不重要了&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;…………&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;来生我们再会，来生，我会等你&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;想到自己有过的那些时刻，最后的最后，我还是克制不住的流泪了。俞飞鸿作品《爱有来生》&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/XrkGqxrfVWQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/365.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/365.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/365.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[【转载】Hello，sTrANgErs]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/wTnA1uIRHzc/356.html" />
		<id>http://kevin.9511.net/?p=356</id>
		<updated>2010-01-18T22:40:34Z</updated>
		<published>2009-09-03T05:14:05Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" />		<summary type="html"><![CDATA[很少转载，难得看到如此让人动容的文章，遂收藏之
原文出处：http://nownow.blogbus.com/logs/45452083.html
人生就是这样的，有的人遇到便携手一生；有的人只能陪你一段路，也有的人，注定只是一个瞬间邂逅过的陌生人，无论是否有缘分，也总是走着走着就散了……
而无论身处何处，无论我们是否记得那些曾经见面，却成为陌生的陌生人，但愿我们都有时间抬头仰望星空，都在过我们希望的生活。
一号陌生人
一号小朋友是我在丽都广场偶遇的。节假日的丽都附近，是狗仔最爱去拍国产明星八卦新闻的地方，而工作日的丽都，没人，安静，绿色环绕，是我的乐土。
某个安静的午后，我跟好朋友张悦然谈完事情，等待朋友来接我的空挡里，跑去巴克买咖啡，发觉有个很帅气很帅气的小正太，一身Gap的潮流童装，一个人孤独的坐着沙发里面吃maffin，超有型的，于是忍不住就走上前跟他搭讪，问他，我可以坐这里吗？
小正太很淡定的看了我一眼说，yes pls，但我有女朋友了，先告诉你。
哇，还是一个讲洋文的，难怪是个小正太。
“你叫什么，怎么一个人呢？爸爸妈妈呢”忍不住，我的问题一大堆
小正太撇撇嘴说，“作为一个陌生人，你这样问，很不礼貌。但我还是告诉你，我叫Oscar
我一个人是因为我讨厌Mara一直跟着我，所以她去超市了
我的爸爸妈妈正在楼上的律师楼协议离婚……”
Oscar今年7岁半，原来住在日本大阪，但他是一个美国banana小孩，妈妈是中国人，据他说是个著名的舞蹈演员，爸爸是美国人，好像是一个美国商会驻日本的一个什么什么，那段英文我听的不是很真切，而他也翻不成中文。
我问Oscar，他们离婚，你会难过吗？
Oscar说，喔，我们都是公平的，他们愿意分，我接受，但上帝保佑，不要再吵架
就怎么样都好
那你要跟爸爸还是妈妈呢？
爸爸要留在日本，在日本不能说英文，我不想。而妈妈有了新的男朋友，在北京
那你想去哪儿？
我想回旧金山，因为Linda在那里
Linda是谁？她跟Mara是怎么回事
Oscar不高兴了，说，Mara是菲律宾人，而Linda是我的太阳，她是我女朋友
我一下就乐了
Oscar又不高兴了，说，请你尊重我的女朋友
我赶忙点头说，Linda很需要你吗？
Oscar字正腔圆的说，我绝对不会像爸爸对待妈妈那样对待Linda的，我不会在Linda需要我的时候不在她的身边，我不会让她失去我……as a man，我要对她负责任。
这时候，一个穿着相当入时，确实很美很美的年轻女郎走进来，跟Oscar说，怎么就你一个人，Mara呢？我们走吧。
Oscar问，mum，你签字了吗？
女郎看了我一眼，什么也没说，拉着Oscar离开了。
二号陌生人
我的工作，需要我每年不断的看演唱会和音乐会。
那几天正在沮丧期，工作的进展不如预期，又面对某一个vip人士给的选项，留在北京奋斗真的去另外一个地方过富足而平静的生活，犹豫而矛盾。
于是科尔家长说，想也想不出，我们去看演唱会吧。
硕大的工体，其实不怎么是我的菜的歌手，很多很多人聚集在一起，却依然让我觉得充满了距离感。
我们坐在第七排，而我注意到，有个矮小的女生，来来去去的在我身旁和前面晃，看了我很多次。盖斯基调侃我说，人家认得你哇。
后来，开场，几万人跟着帅哥鬼那么high，而我却完全置身事外，于是决定退场。终于，偶像开始唱慢歌的时候，我偷偷摸摸的往外蹭，准备去找来北京做唱片的Francis聊天去。
但也许因为我们坐在内场的最中间，因此磨磨蹭蹭了很久，才走到边上的出口，于是我就看到了二号小姐。
她头发短短的，一件白色的小tee和简单的牛仔裤，很安静的在万人的叫喊中对着我笑。她问我，你是闹闹吗？我说我是。
然后遇到一曲结束，在大家的尖声叫喊中，我完全听不到她在说什么，是很长的几句。
偶像中场讲话，略微安静一点的场地，二号小姐跟我说，我是你的读者。
每每遇到这种事情，其实我也不知道自己要回答什么，好像这种时候我就是个不怎么大方的人，就只是简单的说了个谢谢
那女孩说，我还记得你写过的那句王尔德说的话，“即使身处阴沟，也总有人看得到星星”，我会努力做那个可以看到星星的人……
在那场合，突然听到有陌生人说这句话，真的是……然后，她就递给我一个小东西说，我想送你个小礼物，可是真不好意思，我只能送你这个……然后她就跑开了
我手里，是一个做的笨笨的幸运星，而需要知道的是，那是拿那天演唱会的票外面的票卡折的……需要知道的是，我们都见过那种用来做票卡的纸，有多么的厚，而把那纸折成一个幸运星，又有多么的麻烦……
幸福的是，我是真的，就这样简单的，被你鼓励了。
我很喜欢那句话，因此会一次次写在我的博客里。而人生的一种幸运，就是你的信念，可以传递给对的人，并且一路被继续传递着。
三号陌生人
三号小朋友是最让我难忘的一枚。
遇到他是在我的故乡济南。不久前，回去看爸爸妈妈，而每次回济南，我最爱做的事情就是跟爸爸一起在周末早晨去逛英雄山的书市和旧货市场，买些有的没 的好玩的东西，英雄山市场出来，延伸到新世界百货门口，是一大片自由摆摊和卖艺的人。远远的，我就听到很有些功力的唢呐声。循声走过去，远远就见一对爷孙 样貌的老人和孩子，正在一片嘈杂的人群的脚边卖力表演，爸爸常常说我有职业病，只要遇到这种跟民间音乐相关的凡此种种，我是无论如何都要去看看的，因为只 听声音就不难分辨，水准真的很不错，而且笙与唢呐，结合的完美。
大抵因为他们去的晚了，或者因为他们是外地人，所以没有什么好一些的位置可以留给他们，他们表演的地方，是一个行人如织的转角，即使你想停下来，除 非很用力的挤过去，蹲下来，否则根本没可能停留。他们的面前，摆了一块破破的布，上面歪歪扭扭的写了他们的状况，那块布已经被来去的行人踩的乱七八糟了。
我 用了好几分钟挤到前面，布上大约是说，孩子的爸爸是个复员军人，回村路上遇到车祸，残疾了。孩子妈妈之后就留下一家老小走掉了，而孩子的爷爷是个腿脚不便 的老人，他们的生活没什么依靠，现在只有靠卖艺维持生计。但那段文字的最后，专门写到，只要有一线可能，爷爷还是会用卖艺的钱送孩子念点儿书……
那孩子，很矮小很矮小，看不出年纪。但笙却驾驭的非常好。你知道，中国的传统民间乐器，其实就像民间相声或戏曲一样，原本就应该是一代传一代，师傅带徒弟，爷爷教儿孙，这样传承下来的艺术，有一种原汁原味的地道，与学院派是截然不同的感觉。我真的是瞬间就被那孩子征服了。
听了两曲，我还想听，但环境不允许。蹲在那块布前面的我显然是挡了很多人的路，曲子中间有几度，我都被挤倒，跪在了地上，再勉强蹲起来，然后再被挤到……
不得已，我拿出200块钱，递给老爷爷说，你们演的真好，但我得走了……
爷爷激动的不知道怎么办好，大叫了一声，哎呦……这……这可怎么是好……
你知道，卖艺的人一直被我所尊重，除却因为他是像我们一样凭本事吃饭之外，还有一点，就是尊严，他们是不会因为你给了钱就给你磕头或者下跪的，他们就是为你表演，而当他的付出被认同的时候，他的欣喜与手足无措，却是让我心疼的
面对那个手足无措的爷爷，我匆忙离开，而，没走几步，我的衣服被拉了一下，回头看
居然是那个穿着蓝色破旧衣服，一脸严肃的小男孩，他拿着他的笙。
他小小一个人，掷地有声的跟我说，我爷爷说了，不能白拿人家的钱，我们刚才没演好。我得再给你演一段……
他说完，就立正站好，完全像一个演员在舞台上一样，就在新世界商城对面的公共汽车站牌下，很认真的为我吹起了笙……
真的，我无法写下我当时的震撼于澎湃，总之瞬间我的眼泪就奔了出来，而我必须忍住，忍住，因为他需要的不是同情，而是被尊重。不管周围的人怎么怪异 的讨论，莫名的冷漠，或者谈论，我就定定的站在他对面，等他把一首曲子吹完，然后他给我鞠个躬，说，谢谢！就跑开了，完全不似一个孩子
而他一走开，我的眼泪，瞬间就飚了出来……
四号陌生人
很多年以来，几个大人带着我们几个年轻点儿的，一直在一起盖学校。从不到处说，也因为我们有着共识，说了就会有人骂你摆样子，就会有人觉得你做的不够，就会有人声称你要做更多，索性干脆不讲。
上 个月末，我们在晋北的一所简单的小学落成，但尚未有家具课桌。这次排队排到我，于是赶去。结果我就关键时刻掉链子了，怨不得任何人的，我把背包掉在了县城 里。坦白说，丢的钱不多，但却是最需要的钱，不跟木匠作坊结账，就没办法拉走课桌送去村子的小学校里，而最要命的是，我稀里马虎的，把手机、身份证、钱 包、工作证等等所有重要的东西通通都丢了，连个电话都没办法打。于是站在脏兮兮的招待所门口，无助的哭了……
四号陌生人出现了，是一个胖胖的中年男，后来知道，他是天津人，做矿的。去那座晋北小城，是因为他的一个矿出了事故，他亲自去安抚其中一个 家在那座小城的事故矿工的家属。他坐着一辆在那座土黄色想小城里看起来如此高级的奥迪车，缓缓开过我站的招待所门口，大约是看到一个站在门口哭的稀里哗啦 的女生吧，于是停车，走过来问我，是怎么了。而我也顾不得什么其他，大致说了下，但鼻涕一把泪一把，也就没什么逻辑，就一直说对不起孩子们，校长还在等我 的课桌，我还没给他们救助的伙食费，都是我不好，等等等等。
四号先生用一根烟的功夫听完，扔掉烟头，然后一边取钱包一边问我，你从北京来的吧，志 愿者吧……就这样，他给了我1200块钱，然后走到车上，对着窗口说了几句，里面就递出一支电话。他走回来，把电话给我，然后说，只能先给你这么多，剩下 的你还是得自己想办法的。再给你个手机，你试着联系联系你们北京的人吧，先应急再说。
然后他看我也不是个会说话的人，好像我们也没什么可说的，于是就上车走了。过了半晌，我才反应过来，我是遇到一位煤老板，而我连他的名字都不知道……
用他给的电话，我联络了北京的前辈，前辈联系了太原的哥们，送钱送物，解救了我，而他给的1200块钱，也确实在最需要的时候搭救了我一把。顺便说一嘴，其实盖学校或买课桌椅这件事，在广大的中国农村，还是很廉价的。晋北的学校，五大间+全部课桌椅，不过7万人民币……
回 北京的车上，我仔细的翻阅过那支很旧的手机，好像他们是来自山西榆次的，因为里面有好几个当地号码的固定电话，但我却无法知道他的名字。我一直等待那位帮 我过的四号陌生人再打来，但却从未。不久之后，一位中年男打给我，号称是电话的机主，请我快递回去给他，并告诉我们，他的老板也去了那所学校，捐了 2000本书，并且告诉我那次的邂逅是因为他去处理事故遇到的矿工家属，而至于名字，他却从未对我说过。
至此，四号陌生人的故事，也就结束了，一样的，我想我很难再遇到他。
对于北京人来说，很难想象距离你100公里的北京郊区就会有山区的农民穷到年收入500元，也很难想象仅仅就在山西北京交界处不远，沿着古 长城的村落，就有人穷到一家一条完好的裤子，谁出门谁穿，这些，听起来都太像传奇，太像故事了。人就是这样的，总认为贫困距离自己很远，总是用一种居高临 下的施舍的态度去面对那些其实距离你不过几十几百公里的活生生的存在。
人人都愿意去指责那些富人，一听到煤老板就觉得都是人渣，赚的是沾着人血的钱，而我们身处的现实世界里，是不是富人都是从不做好事的冷血动物？当你知道几十亿的救灾捐款都去了哪儿的时候，你还会为当年王石坚决不肯向红十字会捐款而遭受的种种指责投赞成票吗？
每个人，对我们身处的世界都充满着不满，但重点是，在指责和批判以外，我们是不是可以身体力行的做一点事情。假如，一个富人做了，那不管他 的资本积累是怎样完成的，也不管他捐出来的钱占到他财产比例有多么小，只要他做了，那至少在这一点上面，他就比那些什么都不做，但一直在抱怨和指责、挑毛 病的普通人，来的有意义与有价值。
在周周的第一本书里，他选来写序的朋友有段超精彩的话：“他坚信一件事，穿着Prada， 戴着劳力士，并不妨碍内心仰望星空，也不会迷失在选择的面前。世俗生活和精神生活不应该被划分的那么明确，它们并不相悖，如果世间的万物平等，那么它们都 闪烁着本质的光芒。”这几句话，是我想说的。
叔本华说，我即他人，人皆众生。
Nownow 完稿于首都机场。
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/356.html">&lt;p&gt;&lt;em&gt;很少转载，难得看到如此让人动容的文章，遂收藏之&lt;br /&gt;
原文出处：&lt;/em&gt;&lt;a href="http://nownow.blogbus.com/logs/45452083.html"&gt;http://nownow.blogbus.com/logs/45452083.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;人生就是这样的，有的人遇到便携手一生；有的人只能陪你一段路，也有的人，注定只是一个瞬间邂逅过的陌生人，无论是否有缘分，也总是走着走着就散了……&lt;br /&gt;
而无论身处何处，无论我们是否记得那些曾经见面，却成为陌生的陌生人，但愿我们都有时间抬头仰望星空，都在过我们希望的生活。&lt;span id="more-356"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;一号陌生人&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一号小朋友是我在丽都广场偶遇的。节假日的丽都附近，是狗仔最爱去拍国产明星八卦新闻的地方，而工作日的丽都，没人，安静，绿色环绕，是我的乐土。&lt;br /&gt;
某个安静的午后，我跟好朋友张悦然谈完事情，等待朋友来接我的空挡里，跑去巴克买咖啡，发觉有个很帅气很帅气的小正太，一身Gap的潮流童装，一个人孤独的坐着沙发里面吃maffin，超有型的，于是忍不住就走上前跟他搭讪，问他，我可以坐这里吗？&lt;/p&gt;
&lt;p&gt;小正太很淡定的看了我一眼说，yes pls，但我有女朋友了，先告诉你。&lt;br /&gt;
哇，还是一个讲洋文的，难怪是个小正太。&lt;br /&gt;
“你叫什么，怎么一个人呢？爸爸妈妈呢”忍不住，我的问题一大堆&lt;br /&gt;
小正太撇撇嘴说，“作为一个陌生人，你这样问，很不礼貌。但我还是告诉你，我叫Oscar&lt;br /&gt;
我一个人是因为我讨厌Mara一直跟着我，所以她去超市了&lt;br /&gt;
我的爸爸妈妈正在楼上的律师楼协议离婚……”&lt;/p&gt;
&lt;p&gt;Oscar今年7岁半，原来住在日本大阪，但他是一个美国banana小孩，妈妈是中国人，据他说是个著名的舞蹈演员，爸爸是美国人，好像是一个美国商会驻日本的一个什么什么，那段英文我听的不是很真切，而他也翻不成中文。&lt;/p&gt;
&lt;p&gt;我问Oscar，他们离婚，你会难过吗？&lt;br /&gt;
Oscar说，喔，我们都是公平的，他们愿意分，我接受，但上帝保佑，不要再吵架&lt;br /&gt;
就怎么样都好&lt;br /&gt;
那你要跟爸爸还是妈妈呢？&lt;br /&gt;
爸爸要留在日本，在日本不能说英文，我不想。而妈妈有了新的男朋友，在北京&lt;br /&gt;
那你想去哪儿？&lt;br /&gt;
我想回旧金山，因为Linda在那里&lt;br /&gt;
Linda是谁？她跟Mara是怎么回事&lt;br /&gt;
Oscar不高兴了，说，Mara是菲律宾人，而Linda是我的太阳，她是我女朋友&lt;br /&gt;
我一下就乐了&lt;br /&gt;
Oscar又不高兴了，说，请你尊重我的女朋友&lt;br /&gt;
我赶忙点头说，Linda很需要你吗？&lt;/p&gt;
&lt;p&gt;Oscar字正腔圆的说，我绝对不会像爸爸对待妈妈那样对待Linda的，我不会在Linda需要我的时候不在她的身边，我不会让她失去我……as a man，我要对她负责任。&lt;/p&gt;
&lt;p&gt;这时候，一个穿着相当入时，确实很美很美的年轻女郎走进来，跟Oscar说，怎么就你一个人，Mara呢？我们走吧。&lt;br /&gt;
Oscar问，mum，你签字了吗？&lt;br /&gt;
女郎看了我一眼，什么也没说，拉着Oscar离开了。&lt;br /&gt;
&lt;strong&gt;二号陌生人&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我的工作，需要我每年不断的看演唱会和音乐会。&lt;/p&gt;
&lt;p&gt;那几天正在沮丧期，工作的进展不如预期，又面对某一个vip人士给的选项，留在北京奋斗真的去另外一个地方过富足而平静的生活，犹豫而矛盾。&lt;br /&gt;
于是科尔家长说，想也想不出，我们去看演唱会吧。&lt;br /&gt;
硕大的工体，其实不怎么是我的菜的歌手，很多很多人聚集在一起，却依然让我觉得充满了距离感。&lt;br /&gt;
我们坐在第七排，而我注意到，有个矮小的女生，来来去去的在我身旁和前面晃，看了我很多次。盖斯基调侃我说，人家认得你哇。&lt;br /&gt;
后来，开场，几万人跟着帅哥鬼那么high，而我却完全置身事外，于是决定退场。终于，偶像开始唱慢歌的时候，我偷偷摸摸的往外蹭，准备去找来北京做唱片的Francis聊天去。&lt;br /&gt;
但也许因为我们坐在内场的最中间，因此磨磨蹭蹭了很久，才走到边上的出口，于是我就看到了二号小姐。&lt;br /&gt;
她头发短短的，一件白色的小tee和简单的牛仔裤，很安静的在万人的叫喊中对着我笑。她问我，你是闹闹吗？我说我是。&lt;br /&gt;
然后遇到一曲结束，在大家的尖声叫喊中，我完全听不到她在说什么，是很长的几句。&lt;br /&gt;
偶像中场讲话，略微安静一点的场地，二号小姐跟我说，我是你的读者。&lt;br /&gt;
每每遇到这种事情，其实我也不知道自己要回答什么，好像这种时候我就是个不怎么大方的人，就只是简单的说了个谢谢&lt;br /&gt;
那女孩说，我还记得你写过的那句王尔德说的话，“即使身处阴沟，也总有人看得到星星”，我会努力做那个可以看到星星的人……&lt;/p&gt;
&lt;p&gt;在那场合，突然听到有陌生人说这句话，真的是……然后，她就递给我一个小东西说，我想送你个小礼物，可是真不好意思，我只能送你这个……然后她就跑开了&lt;/p&gt;
&lt;p&gt;我手里，是一个做的笨笨的幸运星，而需要知道的是，那是拿那天演唱会的票外面的票卡折的……需要知道的是，我们都见过那种用来做票卡的纸，有多么的厚，而把那纸折成一个幸运星，又有多么的麻烦……&lt;/p&gt;
&lt;p&gt;幸福的是，我是真的，就这样简单的，被你鼓励了。&lt;/p&gt;
&lt;p&gt;我很喜欢那句话，因此会一次次写在我的博客里。而人生的一种幸运，就是你的信念，可以传递给对的人，并且一路被继续传递着。&lt;br /&gt;
&lt;strong&gt;三号陌生人&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;三号小朋友是最让我难忘的一枚。&lt;/p&gt;
&lt;p&gt;遇到他是在我的故乡济南。不久前，回去看爸爸妈妈，而每次回济南，我最爱做的事情就是跟爸爸一起在周末早晨去逛英雄山的书市和旧货市场，买些有的没 的好玩的东西，英雄山市场出来，延伸到新世界百货门口，是一大片自由摆摊和卖艺的人。远远的，我就听到很有些功力的唢呐声。循声走过去，远远就见一对爷孙 样貌的老人和孩子，正在一片嘈杂的人群的脚边卖力表演，爸爸常常说我有职业病，只要遇到这种跟民间音乐相关的凡此种种，我是无论如何都要去看看的，因为只 听声音就不难分辨，水准真的很不错，而且笙与唢呐，结合的完美。&lt;/p&gt;
&lt;p&gt;大抵因为他们去的晚了，或者因为他们是外地人，所以没有什么好一些的位置可以留给他们，他们表演的地方，是一个行人如织的转角，即使你想停下来，除 非很用力的挤过去，蹲下来，否则根本没可能停留。他们的面前，摆了一块破破的布，上面歪歪扭扭的写了他们的状况，那块布已经被来去的行人踩的乱七八糟了。&lt;br /&gt;
我 用了好几分钟挤到前面，布上大约是说，孩子的爸爸是个复员军人，回村路上遇到车祸，残疾了。孩子妈妈之后就留下一家老小走掉了，而孩子的爷爷是个腿脚不便 的老人，他们的生活没什么依靠，现在只有靠卖艺维持生计。但那段文字的最后，专门写到，只要有一线可能，爷爷还是会用卖艺的钱送孩子念点儿书……&lt;/p&gt;
&lt;p&gt;那孩子，很矮小很矮小，看不出年纪。但笙却驾驭的非常好。你知道，中国的传统民间乐器，其实就像民间相声或戏曲一样，原本就应该是一代传一代，师傅带徒弟，爷爷教儿孙，这样传承下来的艺术，有一种原汁原味的地道，与学院派是截然不同的感觉。我真的是瞬间就被那孩子征服了。&lt;/p&gt;
&lt;p&gt;听了两曲，我还想听，但环境不允许。蹲在那块布前面的我显然是挡了很多人的路，曲子中间有几度，我都被挤倒，跪在了地上，再勉强蹲起来，然后再被挤到……&lt;br /&gt;
不得已，我拿出200块钱，递给老爷爷说，你们演的真好，但我得走了……&lt;/p&gt;
&lt;p&gt;爷爷激动的不知道怎么办好，大叫了一声，哎呦……这……这可怎么是好……&lt;br /&gt;
你知道，卖艺的人一直被我所尊重，除却因为他是像我们一样凭本事吃饭之外，还有一点，就是尊严，他们是不会因为你给了钱就给你磕头或者下跪的，他们就是为你表演，而当他的付出被认同的时候，他的欣喜与手足无措，却是让我心疼的&lt;br /&gt;
面对那个手足无措的爷爷，我匆忙离开，而，没走几步，我的衣服被拉了一下，回头看&lt;br /&gt;
居然是那个穿着蓝色破旧衣服，一脸严肃的小男孩，他拿着他的笙。&lt;/p&gt;
&lt;p&gt;他小小一个人，掷地有声的跟我说，我爷爷说了，不能白拿人家的钱，我们刚才没演好。我得再给你演一段……&lt;br /&gt;
他说完，就立正站好，完全像一个演员在舞台上一样，就在新世界商城对面的公共汽车站牌下，很认真的为我吹起了笙……&lt;/p&gt;
&lt;p&gt;真的，我无法写下我当时的震撼于澎湃，总之瞬间我的眼泪就奔了出来，而我必须忍住，忍住，因为他需要的不是同情，而是被尊重。不管周围的人怎么怪异 的讨论，莫名的冷漠，或者谈论，我就定定的站在他对面，等他把一首曲子吹完，然后他给我鞠个躬，说，谢谢！就跑开了，完全不似一个孩子&lt;/p&gt;
&lt;p&gt;而他一走开，我的眼泪，瞬间就飚了出来……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四号陌生人&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多年以来，几个大人带着我们几个年轻点儿的，一直在一起盖学校。从不到处说，也因为我们有着共识，说了就会有人骂你摆样子，就会有人觉得你做的不够，就会有人声称你要做更多，索性干脆不讲。&lt;br /&gt;
上 个月末，我们在晋北的一所简单的小学落成，但尚未有家具课桌。这次排队排到我，于是赶去。结果我就关键时刻掉链子了，怨不得任何人的，我把背包掉在了县城 里。坦白说，丢的钱不多，但却是最需要的钱，不跟木匠作坊结账，就没办法拉走课桌送去村子的小学校里，而最要命的是，我稀里马虎的，把手机、身份证、钱 包、工作证等等所有重要的东西通通都丢了，连个电话都没办法打。于是站在脏兮兮的招待所门口，无助的哭了……&lt;br /&gt;
四号陌生人出现了，是一个胖胖的中年男，后来知道，他是天津人，做矿的。去那座晋北小城，是因为他的一个矿出了事故，他亲自去安抚其中一个 家在那座小城的事故矿工的家属。他坐着一辆在那座土黄色想小城里看起来如此高级的奥迪车，缓缓开过我站的招待所门口，大约是看到一个站在门口哭的稀里哗啦 的女生吧，于是停车，走过来问我，是怎么了。而我也顾不得什么其他，大致说了下，但鼻涕一把泪一把，也就没什么逻辑，就一直说对不起孩子们，校长还在等我 的课桌，我还没给他们救助的伙食费，都是我不好，等等等等。&lt;br /&gt;
四号先生用一根烟的功夫听完，扔掉烟头，然后一边取钱包一边问我，你从北京来的吧，志 愿者吧……就这样，他给了我1200块钱，然后走到车上，对着窗口说了几句，里面就递出一支电话。他走回来，把电话给我，然后说，只能先给你这么多，剩下 的你还是得自己想办法的。再给你个手机，你试着联系联系你们北京的人吧，先应急再说。&lt;br /&gt;
然后他看我也不是个会说话的人，好像我们也没什么可说的，于是就上车走了。过了半晌，我才反应过来，我是遇到一位煤老板，而我连他的名字都不知道……&lt;br /&gt;
用他给的电话，我联络了北京的前辈，前辈联系了太原的哥们，送钱送物，解救了我，而他给的1200块钱，也确实在最需要的时候搭救了我一把。顺便说一嘴，其实盖学校或买课桌椅这件事，在广大的中国农村，还是很廉价的。晋北的学校，五大间+全部课桌椅，不过7万人民币……&lt;br /&gt;
回 北京的车上，我仔细的翻阅过那支很旧的手机，好像他们是来自山西榆次的，因为里面有好几个当地号码的固定电话，但我却无法知道他的名字。我一直等待那位帮 我过的四号陌生人再打来，但却从未。不久之后，一位中年男打给我，号称是电话的机主，请我快递回去给他，并告诉我们，他的老板也去了那所学校，捐了 2000本书，并且告诉我那次的邂逅是因为他去处理事故遇到的矿工家属，而至于名字，他却从未对我说过。&lt;br /&gt;
至此，四号陌生人的故事，也就结束了，一样的，我想我很难再遇到他。&lt;br /&gt;
对于北京人来说，很难想象距离你100公里的北京郊区就会有山区的农民穷到年收入500元，也很难想象仅仅就在山西北京交界处不远，沿着古 长城的村落，就有人穷到一家一条完好的裤子，谁出门谁穿，这些，听起来都太像传奇，太像故事了。人就是这样的，总认为贫困距离自己很远，总是用一种居高临 下的施舍的态度去面对那些其实距离你不过几十几百公里的活生生的存在。&lt;br /&gt;
人人都愿意去指责那些富人，一听到煤老板就觉得都是人渣，赚的是沾着人血的钱，而我们身处的现实世界里，是不是富人都是从不做好事的冷血动物？当你知道几十亿的救灾捐款都去了哪儿的时候，你还会为当年王石坚决不肯向红十字会捐款而遭受的种种指责投赞成票吗？&lt;br /&gt;
每个人，对我们身处的世界都充满着不满，但重点是，在指责和批判以外，我们是不是可以身体力行的做一点事情。假如，一个富人做了，那不管他 的资本积累是怎样完成的，也不管他捐出来的钱占到他财产比例有多么小，只要他做了，那至少在这一点上面，他就比那些什么都不做，但一直在抱怨和指责、挑毛 病的普通人，来的有意义与有价值。&lt;br /&gt;
在周周的第一本书里，他选来写序的朋友有段超精彩的话：“他坚信一件事，穿着Prada， 戴着劳力士，并不妨碍内心仰望星空，也不会迷失在选择的面前。世俗生活和精神生活不应该被划分的那么明确，它们并不相悖，如果世间的万物平等，那么它们都 闪烁着本质的光芒。”这几句话，是我想说的。&lt;/p&gt;
&lt;p&gt;叔本华说，我即他人，人皆众生。&lt;/p&gt;
&lt;p&gt;Nownow 完稿于首都机场。&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/wTnA1uIRHzc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/356.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/356.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/356.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[又被MySQL的字符集搞了]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/3SZ7eFhgLfg/349.html" />
		<id>http://kevin.9511.net/?p=349</id>
		<updated>2010-01-18T22:41:21Z</updated>
		<published>2009-08-26T18:35:43Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="mysql" /><category scheme="http://kevin.9511.net" term="php" />		<summary type="html"><![CDATA[两台Server，一台装有MySQL Server和Client，另一台编译安装时用 &#8211;without-server 参数只安装了Client。
前两天配置服务器的时候，小心小心再小心的注意字符集问题，认认真真的在Server端配置了my.cnf，结果还是把Client端的事给忘了。进去的数据，依旧乱码。奋战两个小时，才找到问题，解决之。总结如下：
1，即使只安装了Client端，为了使MySQL默认使用UTF-8字符集，也需要在Client端的服务器上配置my.cnf
2，即使在Client端通过命令行方式连接Sever问题解决了，也不要侥幸的认为在用PHP连接的时候会正常。my.cnf只会影响MySQL的相关程序。
3，使用PHP连接MySQL时，使用“SET NAMES UTF8”，是个好习惯。
4，服务器端的my.cnf里，添加一行“init_connect = &#8216;SET NAMES utf8&#8242;”是个一劳永逸的办法。注意，root用户会忽略此参数。
参考：
http://www.toplee.com/blog/259.html
http://kevin.9511.net/archives/173.html
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/349.html">&lt;p&gt;两台Server，一台装有MySQL Server和Client，另一台编译安装时用 &amp;#8211;without-server 参数只安装了Client。&lt;/p&gt;
&lt;p&gt;前两天配置服务器的时候，小心小心再小心的注意字符集问题，认认真真的在Server端配置了my.cnf，结果还是把Client端的事给忘了。进去的数据，依旧乱码。奋战两个小时，才找到问题，解决之。总结如下：&lt;span id="more-349"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1，即使只安装了Client端，为了使MySQL默认使用UTF-8字符集，也需要在Client端的服务器上配置my.cnf&lt;/p&gt;
&lt;p&gt;2，即使在Client端通过命令行方式连接Sever问题解决了，也不要侥幸的认为在用PHP连接的时候会正常。my.cnf只会影响MySQL的相关程序。&lt;/p&gt;
&lt;p&gt;3，使用PHP连接MySQL时，使用“SET NAMES UTF8”，是个好习惯。&lt;/p&gt;
&lt;p&gt;4，服务器端的my.cnf里，添加一行“init_connect = &amp;#8216;SET NAMES utf8&amp;#8242;”是个一劳永逸的办法。注意，root用户会忽略此参数。&lt;/p&gt;
&lt;p&gt;参考：&lt;br /&gt;
&lt;a href="http://www.toplee.com/blog/259.html" target="_blank"&gt;http://www.toplee.com/blog/259.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://kevin.9511.net/archives/173.html" target="_blank"&gt;http://kevin.9511.net/archives/173.html&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/3SZ7eFhgLfg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/349.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/349.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/349.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[htpasswd命令及crypt函数]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/Z5joD-FvETg/343.html" />
		<id>http://kevin.9511.net/?p=343</id>
		<updated>2010-01-18T22:41:36Z</updated>
		<published>2009-08-22T19:09:32Z</published>
		<category scheme="http://kevin.9511.net" term="技术备案" /><category scheme="http://kevin.9511.net" term="apache" /><category scheme="http://kevin.9511.net" term="crypt" /><category scheme="http://kevin.9511.net" term="htpasswd" />		<summary type="html"><![CDATA[在apache上应用basic auth的时候，会有一步是使用apache提供的htpasswd命令来生成passwd文件。如下：
/usr/local/apache-2.2.4/bin/htpasswd -c ./passwd kevin
这样，就为用户名为“kevin”的用户在当前目录下的passwd文件中创建了一条记录，内容包含用户名及将用户输入的密码加密后字符串。如果文件已存在，则可忽略参数“-c”。
用久了，就会发现，相同的用户名和密码，每一次使用htpasswd命令之后生成的加密字符串都是不同的。那么在随后的应用中，apache又是怎么来校验“用户输入密码经加密后的结果”与“文件中已存在的加密结果”是否匹配呢？
htpasswd默认情况，是使用系统库中的crypt()函数来对密码明文进行单向加密的。在网上找到该函数的说明：
crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码，key字符串长度仅取前8个字符，超过此长度的字符没有意义。参数salt为两个字 符组成的字符串，由a-z,A-Z,0-9,".",和"/"所组成，用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针，参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符，前两个字符为参数salt代表的字符串。
默认情况下，htpasswd在对密码明文加密的时候，会随机生成一个两位的salt值。加密后的13位字符串的头两位即是这个salt的值。
在应用过程中，apache根据用户输入的用户名查找出密码文件中已存在的加密字符串，并取该字符串的头两位作为salt，以此对用户输入的密码明文进行crypt()加密，如果结果与密码文件中的加密字符串相同，则匹配上了。
综上所述，对于同一个字符串，crypt()函数的加密结果受到第二个可选参数“salt”(干扰串)影响，而加密结果中又含有这个干扰串。这就明白了虽然用htpasswd每次生成的加密结果不同(随机生成salt并包含在结果中)但apache又可以进行正确校验(salt已知)的原因了。
还有，因为htpasswd默认使用crypt()函数进行加密，所以，在这种情况下密码内容超过8位的字符没有意义。即，“12345678”与“123456789”的加密结果是一样的。
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/343.html">&lt;p&gt;在apache上应用basic auth的时候，会有一步是使用apache提供的htpasswd命令来生成passwd文件。如下：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;/usr/local/apache-2.2.4/bin/htpasswd -c ./passwd kevin&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这样，就为用户名为“kevin”的用户在当前目录下的passwd文件中创建了一条记录，内容包含用户名及将用户输入的密码加密后字符串。如果文件已存在，则可忽略参数“-c”。&lt;span id="more-343"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;用久了，就会发现，相同的用户名和密码，每一次使用htpasswd命令之后生成的加密字符串都是不同的。那么在随后的应用中，apache又是怎么来校验“用户输入密码经加密后的结果”与“文件中已存在的加密结果”是否匹配呢？&lt;/p&gt;
&lt;p&gt;htpasswd默认情况，是使用系统库中的crypt()函数来对密码明文进行单向加密的。在网上找到该函数的说明：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&lt;span style="color: #000000;"&gt;crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码，key字符串长度仅取前8个字符，超过此长度的字符没有意义。参数salt为两个字 符组成的字符串，由a-z,A-Z,0-9,".",和"/"所组成，用来决定使用4096种不同内建表格的哪一个。&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: #000000;"&gt;函数执行成功后会返回指向编码过的字符串指针，参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符，前两个字符为参数salt代表的字符串。&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;默认情况下，htpasswd在对密码明文加密的时候，会随机生成一个两位的salt值。加密后的13位字符串的头两位即是这个salt的值。&lt;/p&gt;
&lt;p&gt;在应用过程中，apache根据用户输入的用户名查找出密码文件中已存在的加密字符串，并取该字符串的头两位作为salt，以此对用户输入的密码明文进行crypt()加密，如果结果与密码文件中的加密字符串相同，则匹配上了。&lt;/p&gt;
&lt;p&gt;综上所述，对于同一个字符串，crypt()函数的加密结果受到第二个可选参数“salt”(干扰串)影响，而加密结果中又含有这个干扰串。这就明白了虽然用htpasswd每次生成的加密结果不同(随机生成salt并包含在结果中)但apache又可以进行正确校验(salt已知)的原因了。&lt;/p&gt;
&lt;p&gt;还有，因为htpasswd默认使用crypt()函数进行加密，所以，在这种情况下密码内容超过8位的字符没有意义。即，“12345678”与“123456789”的加密结果是一样的。&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/Z5joD-FvETg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/343.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/343.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/343.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[基本连接验证(Basic Access Authorization)的原理]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/bSeO79Fvh8A/332.html" />
		<id>http://kevin.9511.net/?p=332</id>
		<updated>2010-02-28T20:00:19Z</updated>
		<published>2009-08-22T12:06:04Z</published>
		<category scheme="http://kevin.9511.net" term="技术备案" /><category scheme="http://kevin.9511.net" term="gtap" /><category scheme="http://kevin.9511.net" term="http" /><category scheme="http://kevin.9511.net" term="https" /><category scheme="http://kevin.9511.net" term="php" />		<summary type="html"><![CDATA[前段时间在搞GTAP，最近又研究ZendFramework的Auth模块，重新又对身份认证的这个小东西小小的研究了一小下。在查找资料时，同样没有在中文互联网内找到什么可用的资源。以下文字大部分翻译自wikipedia关于Basic Access Authorization的英文页面。
我们通常说的基于HTTP的基本验证(Basic Authorization)的英文全称应该是“Basic Access Authorization”，这是在RFC2617中定义的。
在一个HTTP交互的过程中，“基本连接认证”(没有找到中文翻译，姑且这么叫吧)是一个允许浏览器或其他客户端程序在发起请求时向服务器端以用户名+密码的方式提供身份证明的方法。
在传输之前，用户名和密码被一个冒号连接在一起，并以base64算法进行编码，如用户名“kevin”和密码“9511.net”先用冒号进行连接成“kevin:9511.net”，然后再对这个新字符串用base64算法编码，结果就是“a2V2aW46OTUxMS5uZXQ==”。这个经base64算法编码后的字符串被提交到服务器端，并由服务器端用base64算法进行解码，然后用一个冒号分割出用户名和密码，最后由服务器端针对用户和密码进行认证。
在具体的传输环节上，由于此认证方式是基于HTTP协议，所以请求和响应的内容都是存在于header中。For Example：
客户端请求
GET /private/index.html HTTP/1.0
Host: localhost
服务器端响应：
HTTP/1.0 401 Authorization Required   &#60;== 状态码
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm=&#8221;Secure Area&#8221;  &#60;==必要值，realm的值可自定义
Content-Type: text/html
Content-Length: 311
此时客户端收到响应后，会出现一个对话框，由用户填写用户名和密码。并将用户填写的内容经处理发送到服务器端：
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic a2V2aW46OTUxMS5uZXQ==
服务端对再次收到的数据进行处理，如果认为此用户通过，则返回正常的请求结果。
基本连接认证的整个过程就是这么简单，在最流行、装机量最大的WEB服务器软件apache中内置了对基本连接认证的支持。怎么在apache内配置实用，网上到处都是复制来复制去的文章，就不多说了。
其实包括PHP在内的语言好多语言，都可以通过自定义header信息来提供独立于web server之外的基本连接认证支持。比如PHP，如果一个Request中包含“Authorization: Basic a2V2aW46OTUxMS5uZXQ==”这样的内容，PHP就会将“a2V2aW46OTUxMS5uZXQ==”进行解码然后将用户名和密码分别放入$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']两个超全局变量中，那么剩下的就跟上面说的过程都一样了。
$_SERVER['PHP_AUTH_USER']))

]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/332.html">&lt;p&gt;前段时间在搞&lt;a href="http://code.google.com/p/gtap/" target="_blank"&gt;GTAP&lt;/a&gt;，最近又研究ZendFramework的Auth模块，重新又对身份认证的这个小东西小小的研究了一小下。在查找资料时，同样没有在中文互联网内找到什么可用的资源。以下文字大部分翻译自wikipedia&lt;a href="http://en.wikipedia.org/wiki/Basic_access_authentication" target="_self"&gt;关于Basic Access Authorization的英文页面&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;我们通常说的基于HTTP的基本验证(Basic Authorization)的英文全称应该是“Basic Access Authorization”，这是在&lt;a href="http://tools.ietf.org/html/rfc2617" target="_blank"&gt;RFC2617&lt;/a&gt;中定义的。&lt;span id="more-332"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;在一个HTTP交互的过程中，“基本连接认证”(没有找到中文翻译，姑且这么叫吧)是一个允许浏览器或其他客户端程序在发起请求时向服务器端以用户名+密码的方式提供身份证明的方法。&lt;/p&gt;
&lt;p&gt;在传输之前，用户名和密码被一个冒号连接在一起，并以base64算法进行编码，如用户名“kevin”和密码“9511.net”先用冒号进行连接成“kevin:9511.net”，然后再对这个新字符串用base64算法编码，结果就是“a2V2aW46OTUxMS5uZXQ==”。这个经base64算法编码后的字符串被提交到服务器端，并由服务器端用base64算法进行解码，然后用一个冒号分割出用户名和密码，最后由服务器端针对用户和密码进行认证。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在具体的传输环节上，由于此认证方式是基于HTTP协议，所以请求和响应的内容都是存在于header中。For Example：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;客户端请求&lt;br /&gt;
GET /private/index.html HTTP/1.0&lt;br /&gt;
Host: localhost&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;服务器端响应：&lt;br /&gt;
HTTP/1.0 401 Authorization Required   &amp;lt;== 状态码&lt;br /&gt;
Server: HTTPd/1.0&lt;br /&gt;
Date: Sat, 27 Nov 2004 10:18:15 GMT&lt;br /&gt;
WWW-Authenticate: Basic realm=&amp;#8221;Secure Area&amp;#8221;  &amp;lt;==必要值，realm的值可自定义&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
Content-Length: 311&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;此时客户端收到响应后，会出现一个对话框，由用户填写用户名和密码。并将用户填写的内容经处理发送到服务器端：&lt;br /&gt;
GET /private/index.html HTTP/1.0&lt;br /&gt;
Host: localhost&lt;br /&gt;
Authorization: Basic a2V2aW46OTUxMS5uZXQ==&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;服务端对再次收到的数据进行处理，如果认为此用户通过，则返回正常的请求结果。&lt;/p&gt;
&lt;p&gt;基本连接认证的整个过程就是这么简单，在最流行、装机量最大的WEB服务器软件apache中内置了对基本连接认证的支持。怎么在apache内配置实用，网上到处都是复制来复制去的文章，就不多说了。&lt;/p&gt;
&lt;p&gt;其实包括PHP在内的语言好多语言，都可以通过自定义header信息来提供独立于web server之外的基本连接认证支持。比如PHP，如果一个Request中包含“Authorization: Basic a2V2aW46OTUxMS5uZXQ==”这样的内容，PHP就会将“a2V2aW46OTUxMS5uZXQ==”进行解码然后将用户名和密码分别放入$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']两个超全局变量中，那么剩下的就跟上面说的过程都一样了。&lt;/p&gt;
&lt;div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 354px; width: 1px; height: 1px;"&gt;&lt;span style="color: #0000bb;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #007700;"&gt;[&lt;/span&gt;&lt;span style="color: #dd0000;"&gt;'PHP_AUTH_USER'&lt;/span&gt;&lt;span style="color: #007700;"&gt;]))&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/bSeO79Fvh8A" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/332.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/332.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/332.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[读书流水帐]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/0qa_38U1s2I/327.html" />
		<id>http://kevin.9511.net/?p=327</id>
		<updated>2010-01-18T22:42:17Z</updated>
		<published>2009-08-18T20:58:08Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="读书" />		<summary type="html"><![CDATA[趁着坐出租、等飞机、拉大便、睡不着觉的大把时间，最近这些日子把《明朝那些事儿》的第一部看完了，真的是比较酣畅。史书能写成这样，难怪火的一塌糊涂。相对于清朝那些事儿，明朝的历史我除了对头尾有个大致的了解，基本上是个小白，这回碰上写如此有意思的讲明朝的史书，必须势不可挡的读下去！已经在JOYO订了第二部。
米兰昆德拉的《不能承受的生命之轻》早有耳闻，这回趁着去书店也给买了回来。看了10来章，又让我有了初中的时候看《悲惨世界》和《巴黎圣母院》的感觉&#8212;-有点累。这种力作，我的感觉是必须全神贯注的去读，稍微走点神就看不明白他在说啥。也许是理科出身，看这类半哲半文的书，还真是比较吃力。
前阵子从Rachel MM那里要来了传播学的书单，打算恶补一下传播学方面的基础知识。现在做互联网不了解了解社会学方面的知识，好像根本做不下去了，只知其然不知其所以然，真是书到用时方恨少。恩，从《传播学教程》开始。。
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/327.html">&lt;p&gt;趁着坐出租、等飞机、拉大便、睡不着觉的大把时间，最近这些日子把&lt;a href="http://www.douban.com/subject/1873231/" target="_blank"&gt;《明朝那些事儿》的第一部&lt;/a&gt;看完了，真的是比较酣畅。史书能写成这样，难怪火的一塌糊涂。相对于清朝那些事儿，明朝的历史我除了对头尾有个大致的了解，基本上是个小白，这回碰上写如此有意思的讲明朝的史书，必须势不可挡的读下去！已经在JOYO订了第二部。&lt;span id="more-327"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;米兰昆德拉的&lt;a href="http://www.douban.com/subject/1017143/" target="_blank"&gt;《不能承受的生命之轻》&lt;/a&gt;早有耳闻，这回趁着去书店也给买了回来。看了10来章，又让我有了初中的时候看《悲惨世界》和《巴黎圣母院》的感觉&amp;#8212;-有点累。这种力作，我的感觉是必须全神贯注的去读，稍微走点神就看不明白他在说啥。也许是理科出身，看这类半哲半文的书，还真是比较吃力。&lt;/p&gt;
&lt;p&gt;前阵子从&lt;a href="http://rachelmemory.blogbus.com/" target="_blank"&gt;Rachel&lt;/a&gt; MM那里要来了传播学的书单，打算恶补一下传播学方面的基础知识。现在做互联网不了解了解社会学方面的知识，好像根本做不下去了，只知其然不知其所以然，真是书到用时方恨少。恩，从&lt;a href="http://www.douban.com/subject/1070287/" target="_blank"&gt;《传播学教程》&lt;/a&gt;开始。。&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/0qa_38U1s2I" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/327.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/327.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/327.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[2003年的一篇文档]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/VIwLcXbh4-0/319.html" />
		<id>http://kevin.9511.net/?p=319</id>
		<updated>2009-08-14T08:55:27Z</updated>
		<published>2009-08-14T08:54:58Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="iptables" /><category scheme="http://kevin.9511.net" term="linux" />		<summary type="html"><![CDATA[刚刚清理台式机上文件，发现了一篇2003年在量子的时候写的一篇配置局域网Linux网关服务器的文档。虽然罗嗦了挺长，其实就是用iptables把请求转来转去。现在看来简单的很，当初却是研究了好几天的成果……
http://rui7905.googlecode.com/files/LinuxGW.rar
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/319.html">&lt;p&gt;刚刚清理台式机上文件，发现了一篇2003年在量子的时候写的一篇配置局域网Linux网关服务器的文档。虽然罗嗦了挺长，其实就是用iptables把请求转来转去。现在看来简单的很，当初却是研究了好几天的成果……&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://rui7905.googlecode.com/files/LinuxGW.rar" target="_blank"&gt;http://rui7905.googlecode.com/files/LinuxGW.rar&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/VIwLcXbh4-0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/319.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/319.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/319.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[安装Bugzilla遇到的问题]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/RviW26f7lNc/294.html" />
		<id>http://kevin.9511.net/?p=294</id>
		<updated>2010-01-18T22:43:01Z</updated>
		<published>2009-07-28T10:27:57Z</published>
		<category scheme="http://kevin.9511.net" term="技术备案" /><category scheme="http://kevin.9511.net" term="bugzilla" /><category scheme="http://kevin.9511.net" term="ldconfig" /><category scheme="http://kevin.9511.net" term="mysql" /><category scheme="http://kevin.9511.net" term="perl" />		<summary type="html"><![CDATA[几天前，要为公司架设Bugzilla系统，因为一个DBD::mysql的问题，花费了整整一宿的时间。该问题的解决，又是在浩瀚的英文互联网资源的帮助下得到的解决。中文资料，除了复制就是粘贴，根本没有解决问题的方法，而且按照资料根本无法安装成功，也不知道这些人是怎么弄成的。现在就做个简单的中文版的备份吧。
由于checksetup.pl脚本的存在，其实bugzilla的安装应该是非常顺利的，10多分钟，基本所有bugzilla需要的cpan扩展包都安装成功，最后出了一个数据库选择的提示。bugzilla目前可支持MySQL、PostgreSQL、Oracle三种数据库，需要要按自己的实际环境安装不同数据库的CPAN模块。所有的中文文档里，对这个步骤的形容都是跟其他模块一样，一条“/usr/bin/perl install-module.pl DBD::mysql”就可以搞定，可实际上……并非如此，起码我这么装没有成功，我个人估计，是因为他们安装Bugzilla的服务器跟mysql所运行的服务器在一台上面。我要安装Bugzilla的服务器，只编译安装了mysqlclient，并没有server存在。
在安装Bugzilla的时候，通过其提供的“install-module.pl”命令安装的CPAN模块，都是装在Bugzilla所在目录的lib目录下。而手动下载CPAN模块并安装的时候，在我的这台服务器上，默认是安装到“/usr/lib/perl5/5.8.5/”目录下的。这两个目录的结构相同。Bugzilla的checksetup.pl脚本在检测安装所需模块的时候，这连个路径都会扫描。
通过http://search.cpan.org搜索“DBD-mysql”，并下载“DBD::mysql”。解压缩后运行下面命令：
perl Makefile.PL &#8211;libs=&#8221;-L/usr/local/mysql-5.1.36/lib/mysql -lmysqlclient -L/usr/lib -lz&#8221; &#8211;cflags=-I/usr/local/mysql-5.1.36/include/mysql &#8211;mysql_config=/usr/local/mysql-5.1.36/bin/mysql_config &#8211;testhost=192.168.1.208 &#8211;testdb=test &#8211;testuser=bugs &#8211;testpassword=bugs
其中的“/usr/local/mysql-5.1.36”是安装mysqlclient的路径。在安装DBD::mysql的时候，会检测与mysql服务器的联通性，这里的testhost、testdb、testuser、testpassword就是做这个用的。用户bugs我事先在mysql服务器添加好了。
安装好“DBD::mysql”后，再次运行checksetup.pl脚本，出现了如下提示：
Reading ./localconfig&#8230;
Checking for       DBD-mysql (v2.9003) ok: found v4.005
Had to create DBD::mysql::dr::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI.pm line 1213, &#60;DATA&#62; line 228.
Use of uninitialized value in subroutine entry at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI.pm line 1213, &#60;DATA&#62; line 228.
Had to create DBD::mysql::db::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBI.pm line 1243, [...]]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/294.html">&lt;p&gt;几天前，要为公司架设Bugzilla系统，因为一个DBD::mysql的问题，花费了整整一宿的时间。该问题的解决，又是在浩瀚的英文互联网资源的帮助下得到的解决。中文资料，除了复制就是粘贴，根本没有解决问题的方法，而且按照资料根本无法安装成功，也不知道这些人是怎么弄成的。现在就做个简单的中文版的备份吧。&lt;span id="more-294"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;由于checksetup.pl脚本的存在，其实bugzilla的安装应该是非常顺利的，10多分钟，基本所有bugzilla需要的cpan扩展包都安装成功，最后出了一个数据库选择的提示。bugzilla目前可支持MySQL、PostgreSQL、Oracle三种数据库，需要要按自己的实际环境安装不同数据库的CPAN模块。所有的中文文档里，对这个步骤的形容都是跟其他模块一样，一条“/usr/bin/perl install-module.pl DBD::mysql”就可以搞定，可实际上……并非如此，起码我这么装没有成功，我个人估计，是因为他们安装Bugzilla的服务器跟mysql所运行的服务器在一台上面。我要安装Bugzilla的服务器，只编译安装了mysqlclient，并没有server存在。&lt;/p&gt;
&lt;p&gt;在安装Bugzilla的时候，通过其提供的“install-module.pl”命令安装的CPAN模块，都是装在Bugzilla所在目录的lib目录下。而手动下载CPAN模块并安装的时候，在我的这台服务器上，默认是安装到“/usr/lib/perl5/5.8.5/”目录下的。这两个目录的结构相同。Bugzilla的checksetup.pl脚本在检测安装所需模块的时候，这连个路径都会扫描。&lt;/p&gt;
&lt;p&gt;通过http://search.cpan.org搜索“DBD-mysql”，并下载“DBD::mysql”。解压缩后运行下面命令：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;perl Makefile.PL &amp;#8211;libs=&amp;#8221;-L/usr/local/mysql-5.1.36/lib/mysql -lmysqlclient -L/usr/lib -lz&amp;#8221; &amp;#8211;cflags=-I/usr/local/mysql-5.1.36/include/mysql &amp;#8211;mysql_config=/usr/local/mysql-5.1.36/bin/mysql_config &amp;#8211;testhost=192.168.1.208 &amp;#8211;testdb=test &amp;#8211;testuser=bugs &amp;#8211;testpassword=bugs&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其中的“/usr/local/mysql-5.1.36”是安装mysqlclient的路径。在安装DBD::mysql的时候，会检测与mysql服务器的联通性，这里的testhost、testdb、testuser、testpassword就是做这个用的。用户bugs我事先在mysql服务器添加好了。&lt;/p&gt;
&lt;p&gt;安装好“DBD::mysql”后，再次运行checksetup.pl脚本，出现了如下提示：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Reading ./localconfig&amp;#8230;&lt;br /&gt;
Checking for       DBD-mysql (v2.9003) ok: found v4.005&lt;br /&gt;
Had to create DBD::mysql::dr::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI.pm line 1213, &amp;lt;DATA&amp;gt; line 228.&lt;br /&gt;
Use of uninitialized value in subroutine entry at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI.pm line 1213, &amp;lt;DATA&amp;gt; line 228.&lt;br /&gt;
Had to create DBD::mysql::db::imp_data_size unexpectedly at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBI.pm line 1243, &amp;lt;DATA&amp;gt; line 228.&lt;br /&gt;
Use of uninitialized value in subroutine entry at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBI.pm line 1243, &amp;lt;DATA&amp;gt; line 228.&lt;br /&gt;
There was an error connecting to MySQL:&lt;/p&gt;
&lt;p&gt;Undefined subroutine &amp;amp;DBD::mysql::db::_login called at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/mysql.pm line 142, &amp;lt;DATA&amp;gt; line 228.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在网上查了很长时间，按照网上的描述，修改localconfig文件n次，重新安装配置DBD::mysqln次，依然未果，而且就网上的说法，造成这个错误提示的原因有很多种。正在抓耳挠腮，郁闷之极的时候，突然看到一个邮件里表里有说mysql lib的问题。马上想到自己安装mysql的时候，是rpm卸载掉系统默认的4.0后，手动编译安装的mysql5.1。赶紧运行ldconfig，靠的，还真没有mysql的lib。修改/etc/ld.so.conf文件，把mysql的lib路径加进去，运行ldconfig。然后回到bugzilla目录重新运行checksetup.pl，一切哦耶了。&lt;/p&gt;
&lt;p&gt;在中文论坛里，也看到一些人说mysql本来是4.x，bugzilla运行正常，后来升级成5.x之后，就出错了。这些错误应该也是跟我的问题一样，跟mysql的版本没什么关系。&lt;/p&gt;
&lt;p&gt;关于ldconfig的问题，再次提醒下自己……&lt;a href="http://kevin.9511.net/archives/177.html" target="_blank"&gt;http://kevin.9511.net/archives/177.html&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/RviW26f7lNc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/294.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/294.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/294.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[如何访问Google Picasa(非穿墙)]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/eiDkVsifOYw/300.html" />
		<id>http://kevin.9511.net/?p=300</id>
		<updated>2010-01-18T22:43:19Z</updated>
		<published>2009-07-26T15:06:37Z</published>
		<category scheme="http://kevin.9511.net" term="互联网" /><category scheme="http://kevin.9511.net" term="google" /><category scheme="http://kevin.9511.net" term="https" /><category scheme="http://kevin.9511.net" term="twitter" />		<summary type="html"><![CDATA[我大部分的图片目前是存在Google的Picasaweb上的，由于一些众所周知的原因，picasa的图片地址无法访问了(主域名还能访问，相当于只有架子没有内容)。网上找来如下方法。将下面这段加入到“C:\WINDOWS\system32\drivers\etc\”目录下的hosts文件的末尾，重启浏览器即可访问。
203.208.39.104 lh1.ggpht.com
203.208.39.104 lh2.ggpht.com
203.208.39.104 lh3.ggpht.com
203.208.39.104 lh4.ggpht.com
203.208.39.104 lh5.ggpht.com
203.208.39.104 lh6.ggpht.com
下面这段是twitter的，方法同上，已失效。
168.143.161.20 twitter.com
168.143.162.101 assets1.twitter.com
168.143.162.101 static.twitter.com
168.143.162.101 assets0.twitter.com
168.143.162.101 assets2.twitter.com
168.143.162.101 assets3.twitter.com
168.143.162.101 assets4.twitter.com
访问这些网站，一定得记得把前头的“http://”改成“https://”！！
]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/300.html">&lt;p&gt;我大部分的图片目前是存在Google的Picasaweb上的，由于一些众所周知的原因，picasa的图片地址无法访问了(主域名还能访问，相当于只有架子没有内容)。网上找来如下方法。将下面这段加入到“C:\WINDOWS\system32\drivers\etc\”目录下的hosts文件的末尾，重启浏览器即可访问。&lt;span id="more-300"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;203.208.39.104 lh1.ggpht.com&lt;br /&gt;
203.208.39.104 lh2.ggpht.com&lt;br /&gt;
203.208.39.104 lh3.ggpht.com&lt;br /&gt;
203.208.39.104 lh4.ggpht.com&lt;br /&gt;
203.208.39.104 lh5.ggpht.com&lt;br /&gt;
203.208.39.104 lh6.ggpht.com&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;下面这段是twitter的，方法同上，已失效。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;168.143.161.20 twitter.com&lt;br /&gt;
168.143.162.101 assets1.twitter.com&lt;br /&gt;
168.143.162.101 static.twitter.com&lt;br /&gt;
168.143.162.101 assets0.twitter.com&lt;br /&gt;
168.143.162.101 assets2.twitter.com&lt;br /&gt;
168.143.162.101 assets3.twitter.com&lt;br /&gt;
168.143.162.101 assets4.twitter.com&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;访问这些网站，一定得记得把前头的“http://”改成“https://”！！&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/eiDkVsifOYw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/300.html#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/300.html/feed/atom" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/300.html</feedburner:origLink></entry>
		<entry>
		<author>
			<name>kevin</name>
					</author>
		<title type="html"><![CDATA[我的高中老师]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/rui7905/~3/5gqK6fw0vQI/284.html" />
		<id>http://kevin.9511.net/?p=284</id>
		<updated>2009-07-23T22:10:31Z</updated>
		<published>2009-07-23T22:06:13Z</published>
		<category scheme="http://kevin.9511.net" term="七零八碎" /><category scheme="http://kevin.9511.net" term="山东省实验中学" /><category scheme="http://kevin.9511.net" term="济南" /><category scheme="http://kevin.9511.net" term="高中" />		<summary type="html"><![CDATA[刚才无意中在维基百科发现了俺高中母校“山东省实验中学”的词条，介绍还挺详细，而且有还有官方网站的地址，就进去随便看了看。浏览教师的时候，就想找找自己上学那会儿的老师们。突然发现有好几科的老师都忘记是谁了。。。幸好上面有照片，慢慢辨认，也认出了大部分。
为了不让他们随着时间的流逝慢慢在我脑海中淡忘，趁此机会，赶紧保存把照片保存下来。唯一遗憾的是没找到当初高三教俺物理哪位德高望重、号称带了n年毕业班的王老师。

]]></summary>
		<content type="html" xml:base="http://kevin.9511.net/archives/284.html">&lt;p&gt;刚才无意中在维基百科发现了俺高中母校&lt;a href="http://zh.wikipedia.org/wiki/%E5%B1%B1%E4%B8%9C%E7%9C%81%E5%AE%9E%E9%AA%8C%E4%B8%AD%E5%AD%A6" target="_blank"&gt;“山东省实验中学”的词条&lt;/a&gt;，介绍还挺详细，而且有还有&lt;a href="http://www.sdshiyan.cn/shiyanweb/" target="_blank"&gt;官方网站的地址&lt;/a&gt;，就进去随便看了看。浏览教师的时候，就想找找自己上学那会儿的老师们。突然发现有好几科的老师都忘记是谁了。。。幸好上面有照片，慢慢辨认，也认出了大部分。&lt;/p&gt;
&lt;p&gt;为了不让他们随着时间的流逝慢慢在我脑海中淡忘，趁此机会，赶紧保存把照片保存下来。唯一遗憾的是没找到当初高三教俺物理哪位德高望重、号称带了n年毕业班的王老师。&lt;/p&gt;
&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="267" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="flashvars" value="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Frui7905%2Falbumid%2F5361776933152037409%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" /&gt;&lt;param name="src" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" /&gt;&lt;embed type="application/x-shockwave-flash" width="400" height="267" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Frui7905%2Falbumid%2F5361776933152037409%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/rui7905/~4/5gqK6fw0vQI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://kevin.9511.net/archives/284.html#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://kevin.9511.net/archives/284.html/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://kevin.9511.net/archives/284.html</feedburner:origLink></entry>
	</feed>
