<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[蜻蜓点水 举重若轻]]></title>
	  <link>http://eishn.blog.163.com</link>
	  <description><![CDATA[你整个人都斯巴达了 ]]></description>
	  <language>zh-CN</language>
	  <pubDate>Sat, 9 Aug 2008 12:52:39 +0800</pubDate>
	  <lastBuildDate>Sat, 9 Aug 2008 12:52:39 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[eishn]]></managingEditor>
	  <webMaster><![CDATA[沈崴]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[蜻蜓点水 举重若轻]]></title>
	  	<url>http://ava.blog.163.com/photo/H3dgDB_fedrUStwDp50RTA==/599260225417031252.jpg</url>
	  	<link>http://eishn.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[开幕式不错呵]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820087904523125</link>
    <description><![CDATA[<div>尽管和印象系列有些似曾相识, 开幕式的焰火灯光和布景的确还挺好。后来听说这些是 x86 和 XP 做的系统, 一开始我怎么也不信, 不过看到据说是现场拍下来的这个图片以后, 我信了。<br><br><a href="http://img.blog.163.com/photo/16l0S3cK4fGkApWuTzEhUA==/874261277664002825.jpg" target="_blank" style="text-align: center; display: block;"><img src="http://img.blog.163.com/photo/16l0S3cK4fGkApWuTzEhUA==/874261277664002825.jpg"></a><br></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820087904523125</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820087904523125</guid>
    <pubDate>Sat, 9 Aug 2008 12:45:23 +0800</pubDate>
    <dcterms:modified>2008-08-09T12:50:22+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[奥运编码器]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820086261470252</link>
    <description><![CDATA[<div>为迎奥运, 特地写了个发帖编码器, 希望还没被封站的各位站长喜欢。<br><br>

<pre>escape = lambda s: __import__('re').compile(r'(\\u([0-9a-f]{4}))').sub(lambda m: '&amp;d;' %int(eval('0x' + m.groups()[1])), repr(s)[2:-1])</pre><br><br>

这里是效果 (感谢网易把 '#' 过滤了, 请复制后 replace '&amp;' -> '&amp;#'): <br><br>

&amp;12304;&amp;38472;&amp;22825;&amp;20339;&amp;12305;&amp;12288;&amp;12288;&amp;36814;&amp;25509;&amp;21478;&amp;19968;&amp;20010;&amp;26216;&amp;26342;&amp;65292;&amp;21628;&amp;21560;&amp;27745;&amp;26579;&amp;31354;&amp;27668;<br>&amp;12304;&amp;21016;&amp;27426;&amp;12305;&amp;12288;&amp;12288;&amp;25351;&amp;26631;&amp;25913;&amp;21464;&amp;21619;&amp;36947;&amp;19981;&amp;21464;&amp;65292;&amp;23614;&amp;27668;&amp;39128;&amp;28385;&amp;19996;&amp;35199;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;37027;&amp;33521;&amp;12305;&amp;12288;&amp;12288;&amp;25105;&amp;23478;&amp;22823;&amp;38376;&amp;24120;&amp;25171;&amp;24320;&amp;65292;&amp;22806;&amp;22320;&amp;20154;&amp;20986;&amp;21435;<br>&amp;12304;&amp;23385;&amp;29141;&amp;23039;&amp;12305;&amp;12288;&amp;12288;&amp;25910;&amp;23481;&amp;36807;&amp;23601;&amp;26377;&amp;20102;&amp;26696;&amp;24213;&amp;65292;&amp;20320;&amp;36824;&amp;25954;&amp;26469;&amp;36825;&amp;37324;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;23385;&amp;24742;&amp;12305;&amp;12288;&amp;12288;&amp;19981;&amp;31649;&amp;36828;&amp;36817;&amp;37117;&amp;26159;&amp;23458;&amp;20154;&amp;65292;&amp;21487;&amp;26159;&amp;20998;&amp;31561;&amp;32423;<br>&amp;12304;&amp;29579;&amp;21147;&amp;23439;&amp;12305;&amp;12288;&amp;12288;&amp;21482;&amp;35201;&amp;20320;&amp;26377;&amp;20154;&amp;27665;&amp;24065;&amp;65292;&amp;25105;&amp;20204;&amp;27426;&amp;36814;&amp;20320;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;38889;&amp;32418;&amp;12305;&amp;12288;&amp;12288;&amp;25105;&amp;23478;&amp;20303;&amp;30528;&amp;27915;&amp;22823;&amp;20154;&amp;65292;&amp;24320;&amp;25918;&amp;33258;&amp;24049;&amp;36523;&amp;20307;<br>&amp;12304;&amp;21608;&amp;21326;&amp;20581;&amp;12305;&amp;12288;&amp;12288;&amp;22312;&amp;25105;&amp;30340;&amp;20307;&amp;20869;&amp;25773;&amp;31181;&amp;65292;&amp;20026;&amp;20182;&amp;30041;&amp;19979;baby<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;26753;&amp;21647;&amp;29738;&amp;12305;&amp;12288;&amp;12288;&amp;36827;&amp;20140;&amp;26242;&amp;20303;&amp;37117;&amp;24471;&amp;21150;&amp;35777;&amp;65292;&amp;19981;&amp;36319;&amp;20320;&amp;25304;&amp;31036;<br>&amp;12304;&amp;32701;&amp;27849;&amp;12305;&amp;12288;&amp;12288;&amp;31532;&amp;20960;&amp;27425;&amp;36827;&amp;26469;&amp;27809;&amp;20851;&amp;31995;&amp;65292;&amp;27809;&amp;35777;&amp;36824;&amp;25304;&amp;20320;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;25104;&amp;40857;&amp;12305;&amp;12288;&amp;12288;&amp;21271;&amp;20140;&amp;27426;&amp;36814;&amp;20320;&amp;65292;&amp;20026;&amp;20320;&amp;24320;&amp;22825;&amp;36767;&amp;22320;<br>&amp;12304;&amp;20219;&amp;36132;&amp;40784;&amp;12305;&amp;12288;&amp;12288;&amp;20809;&amp;26045;&amp;24037;&amp;36153;&amp;23601;&amp;33457;&amp;20102;&amp;20960;&amp;21313;&amp;20159;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;34081;&amp;20381;&amp;26519;&amp;12305;&amp;12288;&amp;12288;&amp;21271;&amp;20140;&amp;27426;&amp;36814;&amp;20320;&amp;65292;&amp;22312;&amp;22826;&amp;38451;&amp;19979;&amp;31579;&amp;27801;&amp;38138;&amp;22320;<br>&amp;12304;&amp;23385;&amp;26976;&amp;12305;   &amp;24178;&amp;23436;&amp;27963;&amp;28378;&amp;22238;&amp;32769;&amp;23478;&amp;21435;<br>&amp;12288;&amp;12288;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;21608;&amp;31508;&amp;30021;&amp;12305;&amp;12288;&amp;12288;&amp;25105;&amp;23478;&amp;22823;&amp;38376;&amp;24120;&amp;25171;&amp;24320;&amp;65292;&amp;25910;&amp;20837;&amp;26469;&amp;33258;&amp;21508;&amp;22320;<br>&amp;12304;&amp;38886;&amp;21807;&amp;12305;&amp;12288;&amp;12288;&amp;23601;&amp;24403;&amp;25903;&amp;25345;&amp;39318;&amp;37117;&amp;20154;&amp;27665;&amp;65292;&amp;27809;&amp;20160;&amp;20040;&amp;20102;&amp;19981;&amp;36215;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;40644;&amp;26195;&amp;26126;&amp;12305;&amp;12288;&amp;12288;&amp;22825;&amp;22823;&amp;22320;&amp;22823;&amp;37117;&amp;26159;&amp;26379;&amp;21451;&amp;65292;&amp;37027;&amp;26159;&amp;22312;&amp;25918;&amp;23617;<br>&amp;12304;&amp;38889;&amp;24218;&amp;12305;&amp;12288;&amp;12288;&amp;20294;&amp;20320;&amp;33509;&amp;26159;&amp;37329;&amp;21457;&amp;30887;&amp;30524;&amp;65292;&amp;25105;&amp;23601;&amp;31561;&amp;24453;&amp;20320;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;27754;&amp;23792;&amp;12305;&amp;12288;&amp;12288;&amp;21271;&amp;20140;&amp;27426;&amp;36814;&amp;20320;&amp;65292;&amp;20351;&amp;21170;&amp;35752;&amp;22909;&amp;24863;&amp;21160;&amp;20320;<br>&amp;12304;&amp;33707;&amp;25991;&amp;34074;&amp;12305;&amp;12288;&amp;12288;&amp;35753;&amp;22823;&amp;22920;&amp;37117;&amp;21152;&amp;27833;&amp;21435;&amp;23398;&amp;33521;&amp;35821;<br>&amp;12288;&amp;12288;<br>&amp;12304;&amp;35885;&amp;26230;&amp;12305;&amp;12288;&amp;21271;&amp;20140;&amp;27426;&amp;36814;&amp;20320;&amp;65292;&amp;26377;&amp;22806;&amp;22269;&amp;25252;&amp;29031;&amp;20102;&amp;19981;&amp;36215;<br>&amp;12304;&amp;38472;&amp;22869;&amp;36805;&amp;12305;&amp;12288;&amp;12288;&amp;26377;&amp;32654;&amp;20803;&amp;23601;&amp;20250;&amp;26377;&amp;22855;&amp;36857;
</div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820086261470252</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820086261470252</guid>
    <pubDate>Sat, 26 Jul 2008 13:47:00 +0800</pubDate>
    <dcterms:modified>2008-07-26T13:54:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[[沈著湖州文史志] 第一章 治水英雄防风王]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820085484747953</link>
    <description><![CDATA[<div><p style="text-align: center;"><img src="http://travel.people.com.cn/mediafile/200712/11/P200712111830531938013424.jpg"></p>

<br><br>

<div style="font-size: 16px;">
<p>九百多年前, 一位慎姓京官外放湖州。当其所乘官船路过湖州归安县的潞溪时, 不禁为眼前的小桥流水和碧水青山所动, 于是产生了在此颐养天年的念头。没过多久, 致仕后的慎氏果真携家眷来潞溪定居, 过上了世外桃园般的生活, 且 "后人蕃衍多业儒", 成为湖州潞村的一大望族 [1]。慎氏后人中, 有一位中国的考古大家, 他就是慎微之先生。</p>

<p>二十世纪初, 随着西方近代考古学的传入, 黄河流域频频传出重大的考古发现, 一时黄河流域俨然成为中华文化的 "唯一" 发源地。在意识到这种思潮的荒谬之后, 江南史学界开始发掘长江下游的史前文化。出于小时候的经历, 慎微之先生马上把目光投向了离家不远的钱山漾。1934 年夏, 恰逢湖州大旱, 钱山漾水位落至 1857 年以来的最低, 露出多至三分之二的湖底。趁此良机, 慎微之冒暑拾取了大量的石器, 并据此写出巨著《湖州钱山漾石器之发现与中国文化之起源》。距今约 5250 ~ 4150 的钱山漾文化 [2] 遂浮出水面。</p>

<p>湖杭地区的钱山漾文化坐实了中华 5000 年的文明史, 同时随着我们在湖州钱山漾发掘出诸多保存完好的丝织品 (距今 4700 年), 中国丝绸的最终发源地也终于尘埃落定。这些文明的证据 [3] 慢慢撩开了历史的重重迷雾, 去伪存真。他们揭示了中华文明的起源, 就在于湖州地区。</p>

<p>因为得天独厚的气候地理条件, 湖州地区成为远古蛮荒时代最适宜人类居住的地方之一, 而太湖、下渚湖等水系则更使湖州成为人类文明诞生的摇篮。早在 10 万年前的旧石器时代, 湖州西苕溪流域就已有古人类生活了 [4]。经过五六千年前的新石器时代 [5], 到 5000 年前的钱山钱漾文明时期, 当时中国正处于部落联盟时期, 众古国皆以湖州德清传说中防风国地区 [6] 的部落为盟主。至此湖州地区已经成为中国整个东部和南部的文明中心。</p>

<p>这是一个空前强盛的农业文明。作为日用品的陶器、玉器工艺先进制作精美, 尤以黑陶著称。而且先民早在 5000 年前就已经穿上了丝制的衣服, 并且住在宽畅的九室 "豪宅" 里 [7]。皆令人叹为观止。同时湖州地区水网纵横渔业发达, 先民善于驭风驾舟。"四夷咸来归附", 不仅如此, 湖州地区的先民亦开始向中原地区发展。他们经过安徽、河南一直到达古代富饶的黄土高原, 带去了先进的文明和农作物, 并在那里定居下来。中原地区的华夏族由是形成 [8]。</p>

<p>在部落联盟时代, 作为整个中华文明的基础和根源, 湖州部族遂成为类似于后来周代之东周国一样的宗主国。是为夏之前的第一个朝代, 后来历史的发展也无不契合。</p>

<p>至 4000 年前, 气候变暖冰雪融化, 引发了一场世界范围的大洪水。湖州平原成为一片泽国, 更多的先民开始向北迁徙。据传说, 北方部落由禹带领治水, 而南方则是在防风王 (汪芒氏) 的带领下治水。在这一历史时期, 北方部族逐渐由夏禹统一。于是打破共和制, 构建一个统一王朝的想法开始在禹的思想中形成。根据吕思勉先生的地缘军事学说, 较之浙北平原, 中原地区更易于大规模军事集结, 故中原必更具有侵略性, 北方军事联盟对于南方农业地区的征服终不可避免。而现在禹的面前, 是建立夏王朝最后的障碍, 湖州地区曾经的宗主国, 南方防风国地区强大的部落联盟, 仍然占据着中国的半壁江山。</p>

<p>公元前 2198 年, 夏朝建立的前夜。在禹的努力下曾经席卷天下的洪水开始退却了。禹用的是疏通的方法, 将洪水导向大海。防风国承接的正是最后一段将大水导入东海的工程。防风氏不仅使用疏的方式, 也使用堵的办法, 搬运土石堵住洪水使其改道, 将其引入大海。其间治理了湘溪、英溪、阜溪以及塘泾河, 并且建立河道将下渚湖和东苕溪连通起来。防风王的事迹被传颂到了中原, 华夏族里大家纷纷传说, 在遥远的东方有一个防风王治理洪水非常厉害, 他不仅身材高大是个巨人, 而且力大无比, 能够开山造丘引水入海。现在洪水既退, 作为中原部落联盟的首领, 禹在绍兴茅山召开了一次盛大的庆功大会, 治水立下大功的防风王自然也在邀请之列。</p>

<p>然而庆功大会上离茅山最近的防风王却姗姗来迟, 禹盛怒之下将其杀害 [9]。然而, 防风氏的头颅被砍下后, 却没见出血, 大家正在惊异中, 突然一股白血从防风颈腔冲天而出。禹和各路诸侯都觉得不对劲, 经过调查这才知道当时天目山山洪爆发, 苕溪泛洪, 防风王因为救助被水冲走的百姓和大家一起排洪这才晚到。禹懊悔不已, 在防风国建立防风祠并亲自拜祭。</p>

<p>然而无论如何, 作为诸侯霸主的禹和后来的齐桓公一样大会诸侯, 并在诸侯会议上议除掉了南方部落联盟的首领。中原集团遂踏入沃野千里的浙北平原, 中国第一个南北朝时期以北方征服南方而告终。一如秦灭东周国, 位处湖州的宗主国既破, 中国第二个朝代夏便随之建立了。</p>

<p>而防风王汪罔氏的部族为了逃避中原华夏族的军事征服, 开始向浙西和安徽逃亡, 有些则驾船向着日本的方向出海了。随着南方部落联盟核心地区的陷落, 中国南方曾经无比繁荣的钱山漾文明诸部逐渐解体, 慢慢退出了历史舞台。一个时代结束了。然而防风氏毕竟有功于中华, 无论历史如何书写, 都成为我们无法抹去的历史记忆。对防风王的祭祀载入了夏朝祀典。浙北越人至今祭防风而不祭禹, 称 "祭禹要肚疼"。史载 [10] "越俗, 祭防风神, 奏防风古乐, 截竹三尺, 吹之如皋, 三人披发而舞" 庄严悲凉, 表达了对蒙冤先祖的哀思。</p>

<p>在湖州德清广袤的下渚湖湿地, 凭栏四望, 湖上秋水长天, 一枝枝羽状的芦花花穗, 染着落日余辉, 仿佛金与银在变相辉映, 又像是淡淡血痕, 洇润在素白色的锦缎上。当年的治水英雄告别这里的父老乡亲去会稽赴会时, 面对这故土圣泽, 满湖雪白的芦花和遍地翻滚的金色稻浪, 脸上大概绽开出芦花般灿烂的笑容。</p>

<p>然而哪里想到, 他这是 "壮士一去兮不复还" 的最后微笑 [11]。</p>
</div>

<br><br>

<div style="font-size: 14px; color: rgb(51, 51, 51);">[1]《浙江文物》双月刊, 2006 年第五期《穿西服、打赤足、拎竹篮的 “石头博士” —— 纪念钱山漾遗址发现者慎微之先生》 , 闵泉著 (http://www.zjww.gov.cn/magazine/2006-11-14/4327386.shtml)。这里对该文原文有多次引用。<br>
[2] 于钱山漾后两年后的 1936 年, 同一历史时期的良渚遗迹遂被发现。后以为命名, 称良渚文化。实乃大谬。因钱山漾发现更早, 并此文化的核心地区在于湖州 (这是有定论的), 故应命为钱山漾文化。后考古界多以良渚古城为伪 "良渚文化", 如此种种皆考古治学之反常。故严谨的考古学者, 非命之以钱山漾而不可也。<br>
[3]《中华读书报》, 2005 年 4 月 20 日, 林元锋《文明的证据》(http://www.gmw.cn/01ds/2005-04/20/content_220262.htm)。这里对于文中某些学术认识有所引用。<br>
[4] 溪龙遗存, 2002年10月至11月, 安吉、长兴两地发现旧石器时代文化遗物地点 30 多处, 石制品300多件。<br>
[5] 邱城遗址 (太湖马家浜文化, 距今 6000 年), 安乐遗址 (崧泽文化, 距今 5500 年)。<br>
[6]《路史 - 国名纪》注引《吴兴记》: "吴兴西有风山, 古防风国也。下有风渚, 今在武康东十八里。天宝改曰防风山, 禺山在其东二百步"。<br>
[7] 中华人民共和国国家文物局, 2005 年 6 月 24 日《湖州发现4000年前豪宅, 钱山漾遗址考古发掘结束》(http://www.sach.gov.cn/tabid/300/InfoID/3956/frtid/106/Default.aspx), 报告中称: "除了这些文物之外，考古人员发现一栋大型建筑遗址，这个遗址是一个八室的套间，占地面积达290平方米。…… 这个大房子的发现，充分反映了距今4000年前太湖地区先民们已掌握了高超的建筑空间分隔与组合技术，为中国史前建筑提供了珍贵的资料"。<br>
[8]《〈山海经〉考古》称中国夏朝的主体是先越之民。以稻作、语系、玉葬佐证。这在考古界已经得到证实, 故中原部族乃是由钱山漾文明即湖州地区向西向北迁徙所得。<br>
[9]《国语 - 鲁语》仲尼曰: "丘问之: 昔禹致群神于会稽之山, 防风氏后至, 禹杀而戮之, 其骨节专车。此为大矣"。<br>
[10] 梁《述异记》。<br>
[11] 网上关于 "防风国"、"防风王" 以及汪姓始祖的著述 (http://ks.cn.yahoo.com/question/1306121627641.html), 原作者暂无考。文末文采飞扬、语颇隽永, 为之倾倒。故原文引用, 稍有改动, 聊表敬意。</div>

<br><br>
<p><img src="http://www.uzai.com/sightImg/zhejiang/xiazhuhu_map.gif"></p></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820085484747953</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820085484747953</guid>
    <pubDate>Wed, 4 Jun 2008 20:47:47 +0800</pubDate>
    <dcterms:modified>2008-06-05T08:31:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[沈崴路由器建站教程]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820083995420860</link>
    <description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://usa.asus.com/100/images/products/460/460_m.gif" />

<h2>前言</h2>

<p>尽管在国外有一些闲置的服务器, 但是却不敢拿来建网站。网站这种应用出境率太高, 即使像 fr_eebsd.org 这种良民, 被 GF\/\/ 也是很容易的事情。到时候不仅 $ 打水漂, 可恨连 VPN 都用不了, 上网只能戴套, 实在是划不来。</p>

<p>于是乎我决定利用 ADSL/HTTB 带宽建站。至于服务器, 实在不想和豆瓣的阿北一样用笔记本来做, 一方面耗电, 另一方面笔记本常有爆炸事件, 不敢在无人职守的情况下超长待机。故决定使用 NAS (网络存储服务器, 网盘) 来做。</p>

<p>这里性价比最高的是 Buffalo 的 Linkstation 网盘, 首选的是 LinkStation HD-H120LAN120G 这个型号, 居然拥有高达 400G 的 MIPS CPU 以及  64M 的巨量内存 (耗电 20W 左右)。当然非常不幸的是, LS 120G 全上海断货, 而且奸商奇货可居哄抬物价, 这令 Cr@cker 非常不爽。</p>

<p>最终这直接导致了我选用路由器这种 "难民级" 设备来建站, 鸟枪变炮。于是就有了这篇文章。</p>

<br /><br />

<h2>硬件篇</h2>

<p>当然也会有少数人不理解, 路由器怎么可以拿来做网站呢? 是啊, 你一两百块钱买过来的这个小盒子尽管便宜, 却也是一台完整的高性能计算机了, 除了没有显示器和鼠标键盘。当然啦, 只要你愿意, 加个诸如摄像头或者声卡什么的外设还是可以的。</p>

<br />
<center><a href="http://neture.homeip.net/digiland/index.php"><img src="http://benlau.e-fever.org/modules/xcgal/albums/userpics/10001/normal_200503011129.jpg" /></a></center>
<br />

<p>大部分的路由器的固件都是可以重新刷过的, 诸如 LinkSys、D-Link、Buffalo、Netgear、ASUS 这些品牌的路由器都在著名固件 "OpenWrt" 支持之列。这里有一份详细的 <a style="text-decoration: underline; color: #338;" href="http://wiki.OpenWrt.org/TableOfHardware">支持列表</a>, 请先查阅。</p>

<p>经过研究, 我觉得 ASUS 系列的路由器较为实惠。首选 ASUS WL-HDD 这款 "网络硬盘盒", 他的特点是比起一般的路由器多一个 2.5 IDE 硬盘接口以及一个  USB 1.0 接口, 可以加装一块硬盘和 USB 盘用于存放网站数据。</p>

<p>其次是 ASUS WL-500b (可以升级到 WL-500g) 和 ASUS WL-500g 路由器, 他们使用和 WL-HDD 一样的硬件, 也带有一个 USB 1.0 接口。使之同样成为建站和网络打印服务器的首选。</p>

<p>WL-HDD/500b/500g 售价都在一两百元上下, WL-HDD 稍贵, 我在上海以 248￥ 拿到的货。他们的硬件配置都是 MIPS BCM4702 125MHz CPU、16MB SDR 32bit 内存和 4M 闪存 (耗电 10W)。</p>

<p>另一个版本 WL-500gP 稍贵, 拥有 200MHz CPU, 著名改*机网站 <a style="text-decoration: underline; color: #338;" href="http://neture.homeip.net/digiland/index.php">"数&位天堂"</a> 就是构建于 ASUS-WL-500gP 之上。网站上有 WL 全系列硬件配置表, 若要选购以作改机之用, 可以参考。</p>

<br />
<center><a href="http://neture.homeip.net/digiland/"><img src="http://neture.homeip.net/digiland/img/upload/table2008022001.gif" /></a><br/>(图片来源 <a style="text-decoration: underline; color: #338;" href="http://neture.homeip.net/digiland/index.php">"数位+天堂"</a>)</center>
<br />

<p>下面专为 ASUS 的 OLEG 固件开辟一节, 未在其他硬件上测试过, 其他路由器用户可快速掠过, 去到 OpenWrt 固件部分。</p>

<br /><br />

<h2>ASUS 专用固件 OLEG</h2>

<p>固件 (Firmware, 韌體) 被保存在路由器闪存中, 通常是一个完整的  Linux 操作系统。将路由器原固件改成自定义固件, 可以实现在原有路由器功能上增删定制任意自己想要的功能, 就像是操作一台完整的电脑一样。</p>

<p>刷新固件, 常用于使路由器自动下载  BT、绕过 ISP (诸如网xx通、电yy信) 的多a用b户c共d享e限f制, 绕过 ISP 的 DNS 域a名b劫c持d等流_氓行为。这里就不详加讨论了, 请诸位自己找资料。</p>

<p>OLEG 是 <a style="text-decoration: underline; color: #338;" href="http://neture.homeip.net/digiland/index.php">"数位天*堂"</a> 选用的固件, 是通过 ASUS 官方固件修改而来。门槛较低, 兼容性高, 这里推荐初级 ASUS 用户使用。下面是刷机步骤。</p>

<p style="padding: 10px;padding-left: 30px;padding-right: 25px;background-color: #ccc;color: #008;font-size: 10pt;">
1. 造访 http://oleg.wl500g.info/ , 下载最新的固件 (WL-HDD 用户请下载 1.9.2.7-9 及以前的版本, 其后版本不支持 WL-HDD)。<br />
2. 解压缩 WLxxx-1.9.2.x-x.zip 得到 trx 文件。<br />
3. 访问自己的路由器地址 http://192.168.1.1 (WL-HDD 是 http://192.168.1.220, 推荐使用直接的网线连接而不是无线方式), 登录后找到 "System Setup" 的 "Firmware Upgrade" 项, 上传 trx 文件。<br />
4. 稍候片刻, 等待机器自动重启。<br />
</p>

<br />
<center><img src="http://neture.homeip.net/digiland/img/upload/wl-500gp_firmware_20080124.gif"/><br />
(图片来源 <a style="text-decoration: underline; color: #338;" href="http://neture.homeip.net/digiland/index.php">"数位+天堂"</a>)<br /></center>
<br />

<p>重启后会再次进入管理界面, 设置用户名。这样你就可以通过 telnet 来登入路由器了 (密码: admin)。哇噻, 我的到了一个 Linux Shell!</p>

<p>接下来接入 USB 盘或者插上 IDE 盘, 如果不喜欢命令行的 fdisk 工具, 可以先使用其他工具分区格式化再接入 ASUS WL 设备。然后执行 "fdisk -l", 下面是在我机器 (WL-HDD) 上的显示。</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
Disk /dev/ide/host0/bus0/target0/lun0/disc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                                Device Boot    Start       End    Blocks   Id  System
/dev/ide/host0/bus0/target0/lun0/part1               1       14395   115627806   83  Linux
/dev/ide/host0/bus0/target0/lun0/part2           14396       14461      530145   82  Linux swap
/dev/ide/host0/bus0/target0/lun0/part3           14462       14527      530145   82  Linux swap
/dev/ide/host0/bus0/target0/lun0/part4           14528       14593      530145   82  Linux swap
</pre>
<br />

<p>接下来就是挂接硬盘 (当然, 如果对原装的 4M flash 有信心, 也可以不加硬盘撒):</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
# mount /dev/ide/host0/bus0/target0/lun0/part1 /opt
# swapon /dev/ide/host0/bus0/target0/lun0/part2
# swapon /dev/ide/host0/bus0/target0/lun0/part3
# swapon /dev/ide/host0/bus0/target0/lun0/part4
</pre>
<br />

<p>安装 ipkg (硬盘/U 盘已经加载置 /opt 目录):</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
# mkdir /opt/tmp
# mkdir /opt/tmp/ipkg
# wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ipkg-opt_0.99.163-9_mipsel.ipk
ipkg.sh install ipkg-opt_0.99.163-9_mipsel.ipk
# wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/uclibc-opt_0.9.28-13_mipsel.ipk
# ipkg.sh install uclibc-opt_0.9.28-13_mipsel.ipk
# ipkg update
</pre>
<br />

<p>这样我们就可以像使用 debian apt-get 一样直接通过 "ipkg install xxx" 来安装已经编译好的二进制程序了。</p>

<p>在 http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ 位置拥有大量的 ipk 文件, 这些都是 ipkg 包, 实际上, 我们大可不必使用 ipkg 程序来安装这些软件。</p>

<p>ipk 文件实际上是 tgz 格式的, 解包后会得到 data.tar.gz 和 control.tar.gz 两个 tgz 文件 (tgz 套着 tgz? 貌似很奇怪的样子), 而 data.tar.gz 就是二进制程序结构。使用解包的 data.tar.gz 文件, 可以提供一种更为灵活的系统维护形式 (初级用户不推荐)。</p>

<p>好了, 简单的配置就这样了, 请玩家继续深入阅读 OLEG 的相关参考资料。</p>
<p style="padding: 10px;padding-left: 30px;padding-right: 25px;background-color: #ccc;color: #008;font-size: 10pt;">
<a style="text-decoration: underline; color: #338;" href="http://neture.homeip.net/digiland/viewtopic.php?id=158">数.位天堂::ASUS 500 改机讨论区 WL-500g::系列改機基本步驟</a><br />
<a style="text-decoration: underline; color: #338;" href="http://www.sprayfly.com/wiki/Sprayfly">Sprayfly::WL-HDD/500 Setup Guide</a>
</p><p>

<br /><br />

</p><h2>OpenWrt 固件</h2>

<p>OpenWrt 固件通常是骇_机族的首选, 基本上你可以自由定制包括 Kernel 在内的所有东西, 这往往给人一种很爽的幻觉。除此之外, OpenWrt 还有一个叫做 DD-WRT 的表兄 (访问其<a style="text-decoration: underline; color: #338;" href="http://www.dd-wrt.com">主站</a>需_破.墙_) 以及 DebianWRT 的堂兄, 也可以在 OpenWrt 上跑 Gentoo。</p>

<p>其中 DD-WRT 在管理上相当便捷, 玩家也是颇多的, 这里也推荐大家不妨尝试一下。而在路由器上跑 Debian, 就比较诡异了, 而跑 Gentoo 就更是说不出的诡异了。这里我的首选还是 OpenWrt, 因为我需要一个足够小, 占用资源足够少的固件, OpenWrt 定制起来非常方便, 自己编译吧。</p>

<p>当然 OpenWrt 已经有编译版了, 只是想用 OpenWrt 而对定制没有要求的同学可以偷懒了。</p>

<p>这里做得比较漂亮的是 <a style="text-decoration: underline; color: #338;" href="http://porta2030.tossug.org/wiki/Software%3Bzh-tw">Hive</a> 版, 安装配置相当方便, 可以通过其站点 <a style="text-decoration: underline; color: #338;" href="http://downloads.hivenet.org/firmware/OpenWrt-brcm-2.4-jffs2-4MB.trx">获取</a> 资料。而 OpenWrt 官方也提供编译版 <a style="text-decoration: underline; color: #338;" href="http://downloads.OpenWrt.org/whiterussian/rc6/bin/">下载</a>。</p>


<p>下面, 就让我们来建立一个 OpenWrt 固件。首先, 显然你已经有一台运行 Linux 的计算机 (什么, 你是 Windows 用户? 那你来看我的博客做什么?), 然后上到 OpenWrt 官网, <a style="text-decoration: underline; color: #338;" href="http://www.OpenWrt.org">下载</a> 源码 (当然也可以使用 SVN)。</p>

<p>OpenWrt 有两个分支, 较新的是 "Kamikaze(神风? 晕)" 版, 另一个是 "whiterussian(白俄罗斯)" 版 <a style="text-decoration: underline; color: #338;" href="http://downloads.OpenWrt.org/whiterussian/rc6/whiterussian_rc6.tar.bz2">下载</a>。这里选用较为稳定的 whiterussian RC6 版本。下面我们开始配置编译。</p>

<br /><br />

<h2>编译 OpenWrt</h2>

<p>下面以我的 ASUS WL-HDD 设备为例, 来讲解 OpenWrt 的编译和配置。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ wget http://downloads.OpenWrt.org/whiterussian/rc6/whiterussian_rc6.tar.bz2
$ tar -xjf whiterussian_rc6.tar.bz2
$ cd whiterussian_rc6.tar.bz2
$ make menuconfig
</pre>
<br />

<p>接下来会出现配置选单, 大部分的选项使用默认即可。可以酌情修改配置, 一般来说只要不是改得太过分, 生成的固件都是可用的。因为我是 ASUS WL-HDD 的盒子, 所以我主要是在系统中取消了 httpd 服务 (后面会提到我将使用 Eurasia3 应用服务器提供 web 服务), 并且将 IDE 硬盘的支持设置为 "内建 ([*] builtin)" 模式。</p><p>
</p><pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #ff0; background-color: #00f;">
1. OpenWrt Package Selection --->
 Busybox Configuration --->
  Networking Utilities --->
   [ ] httpd

2. Kernel Configuration / Device Support --->
 [*] IDE Support, EXT3 filesystem support
</pre>
<br />

<p>USB 支持可以在系统安装好后使用模块加载 <a style="text-decoration: underline; color: #338;" href="http://wiki.OpenWrt.org/UsbStorageHowto">资料</a>。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #ff0; background-color: #00f;">
3. Target Root Filesystem --->
 [*] jffs2
</pre>
<br />

<p>这里决定了生成映像文件使用的文件格式, 其中 squashfs 是只读的, jffs2 是可写的, 我们通常选择 jffs2 格式, 以后可以直接读取编辑路由器的  flash 存储器。</p>

<p>配置完成后执行编译。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ make V=99
</pre>
<br />

<p>当编译完成后, 你可以在 whiterussian_rc6/bin 目录下找到生成的 trx 映像。</p><p>

</p><p>比如 OpenWrt-brcm-2.4-jffs2-4M.trx 这个映像, "brcm" 是通用的路由器硬件, jffs2 是文件系统, 4M 是指适用 flash 存储器大小, ASUS WL-HDD/500 的 flash 都是 4M, 适用于这个映像。</p>

<p>Kamikaze 和 Whiterussian 不同, 它生成诸如这样的映像 OpenWrt-brcm47xx-2.6-squashfs-64K.trx, 在硬件型号上可以自由配置。特别诡异的是在 Kamikaze 下 64K 指 4M flash, 而 128K 是指 8M flash 以此类推。</p>

<p>终于, 我们拿到了 trx 映像文件。其中只有 menuconfig 这一步有点工作量。貌似把系统日志部分 (syslogd) 砍掉, 可能会导致路由器重启失败, 需要保留, 其他服务应该都是可以取消的。</p>

<p>至于程序库, 可以等以后手工编译添加进系统。诸如 libpthread、libreadline 这些库是以后运行 Stackless Python 需要的, 对于非常常用的可以编译到镜像里去。</p>

<p>至于OpenWrt SDK 和 Image Builder, 我们在下面的开发中其实并不会用到, 不必选择编译。</p>

<p>在编译过程中, 会去网上拿许多依赖的 package 源码文件。比起 Kamikaze 来, Whiterussian 要下载海量的资源, 如果你网速不够快, 那么可以直接去 OpenWrt 官网上拿 (不推荐, 除非网速真的很慢)。你需要修改 whiterussian_rc6/scripts/download.pl 这个脚本, 清空 "foreach my $mirror (@ARGV) { ... }" 代码块即可。</p>

<p>编译完成以后, 请保留 whiterussian_rc6 目录, 这是我们接下来做交叉编译 (Cross Compiling) 的平台。</p>

<br /><br />

<h2>使用 OpenWrt</h2>

<p>将 OpenWrt trx 映像写入路由器, 你需要 whiterussian_rc6/scripts/flash.sh 这个工具。你也可以从 <a style="text-decoration: underline; color: #338;" href="http://downloads.hivenet.org/bin/flash.sh">这里</a>下载这个脚本。</p>

<p>现在将路由器调至回复模式, 计算机和路由器直接使用网线连接, 确信能够 ping 到。作好准备工作。</p>

<p>以我的 ASUS WL-HDD 为例, 连好网线以后, 按住 reset 按钮, 同时插上电源, 黄灯开始规律闪烁即进入 flash 回复模式。接下来确认 WL-HDD 在 192.168.1.1 这个位置 (当然如果你已经设置过 nvram, ip 以 nvram 为准), 如果 ip 不是 192.168.1.1, 你需要先修改 flash.sh 文件中关于 ip 的设定。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ apt-get install tftp
$ chmod +x flash.sh
$ ./flash.sh OpenWrt-brcm-2.4-jffs2-4M.trx asus
</pre>
<br />

<p>完成 Firmware 上传之后, 程序会回到 shell 下, 等待黄灯熄灭 (即开始更新 Firmware), 再等到 WLAN 绿灯亮起, 此时 Firmware 已经写入机器, 并且机器已经完成重启。恭喜恭喜!</p>

<p>解下来我们可以使用 telnet 192.168.1.1 登录进路由器。进入 Linux Shell 以后, 你可以使用 nvram show/set 命令来显示和设置 nvram, 修改机器 IP 等数据, 重启机器使修改生效。例如:</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
nvram set lan_ipaddr=192.168.0.2
nvram commit
</pre>
<br />

<p>Whiterussian 启动时加载 IDE 硬盘存在 BUG, 你需要修改 /etc/modules.d/20-ide 文件, 调整内核模块的加载顺序如下:</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
ide-core
pdc202xx_old
ide-detect
ide-disk
</pre>
<br />

<p>重启以后, ide 硬盘就可以被识别出来了。如果编译进了 fdisk, 那么可以用 fdisk -l 来查看硬盘。</p>

<p>和 OLEG 不同, OpenWrt 不用经过配置就可以使用 /etc/init.d 初始化脚本目录, 在里面添加启动脚本挂载硬盘, 并删掉不喜欢的服务。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
#!/bin/sh
# chmod +x /etc/init.d/S90Example
mount /dev/ide/host0/bus0/target0/lun0/part1 /mnt
swapon /dev/ide/host0/bus0/target0/lun0/part2
swapon /dev/ide/host0/bus0/target0/lun0/part3
swapon /dev/ide/host0/bus0/target0/lun0/part4
killall logger
killall syslogd
killall crond
killall klogd
</pre>
<br />

<p>下面使用 free 命令, 看看剩下多少内存留给我们接下来的应用 (果然是寸土寸金啊)。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
              total         used         free       shared      buffers
  Mem:        14296         7580         6716            0           56
 Swap:      1572828            0      1572828
Total:      1587124         7580      1579544
</pre>
<br />

<p>这样, 这个  Linux 系统已经可用了。</p>

<br /><br />

<h2>OpenWrt 下的本地编译环境</h2>

<p>在 OpenWrt 下也可以进行本地编译, 你可以 <a style="text-decoration: underline; color: #338;" href="http://www.uclibc.org/downloads/root_fs_mipsel.ext2.bz2">下载 root_fs_mipsel.ext2.bz2</a> , 并查阅 <a style="text-decoration: underline; color: #338;" href="http://wiki.openwrt.org/BuildingPackagesHowTo">相关资料</a>。</p><p>

</p><p>这里你不必真的在路由器上挂接 root_fs_mipsel.ext2 到文件系统上, 你可以在本地计算机上挂接并拷贝到路由器的 U 盘或者硬盘上。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ mkdir ~/tmp
$ mkdir ~/tmp/root
$ mount -o loop root_fs_mipsel.ext2 ~/tmp/root
$ cd ~/tmp
$ tar -cjf root_fs_mipsel.tar.bz2 root
</pre>
<br />

<p>然后把 root_fs_mipsel.tar.bz2 拷贝到路由器硬盘上解压缩。</p>
<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
# cd /mnt
# wget http://192.168.x.x/root_fs_mipsel.tar.bz2 # 如果本机有 HTTP 服务, 那么可以通过 wget 从本机上取得文件
# tar -xjf root_fs_mipsel.tar.bz2
</pre>
<br />

<p>这样我们就得到了 /mnt/root 目录, 里面包含了完整的编译环境和需要的库文件。接下来以 /mnt/root 为根 ('/') 目录, 即可使用本地编译环境。</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
# chroot /mnt/root/ /bin/ash -
# gcc -v
# exit
</pre>
<br />

<p>不过你应该永远避免在路由器上进行本地编译, 首先是速度极慢, 然后诸多依赖也不能满足 (比如 Include 等), 但是这里架设的编译环境也并不是没有用处, 因为在 root_fs_mipsel 的 lib 目录下有许多我们需要的重要的库文件可以直接拿来使用, 省去许多费事的编译。</p><p>

<br /><br />

</p><h2>为 OpenWrt 编译 Stackless Python</h2>

<p>很显然, <a style="text-decoration: underline; color: #338;" href="http://code.google.com/p/eurasia/">Eurasia3</a> 才是王道。不过这个 Web 应用服务器依赖于 Stackless Python。找了半天, 也只有 Python 的 ipk 包。好吧, 自己编译吧。</p>

<p>除了高度定制, 自己编译 OpenWrt 映像的另一个好处就是交叉编译环境已经准备好了。现在让我们回到 whiterussian_rc6 目录, 来设定交叉编译环境, 很简单, 你只要在你的 PC 中输入下面几条命令。</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ export PATH=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/usr/bin:/PATH/TO/whiterussian_rc6/staging_dir_mipsel/mipsel-linux-uclibc:/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin:$PATH
$ export AR=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-ar
$ export AS=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-as
$ export LD=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-ld
$ export NM=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-nm
$ export CC=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
$ export CPP=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-cpp
$ export GCC=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
$ export CXX=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-g++
$ export RANLIB=/PATH/TO/whiterussian_rc6/staging_dir_mipsel/bin/mipsel-linux-uclibc-ranlib
$ export ac_cv_linux_vers=2.4.30
$ export CFLAGS="-Os -s"
</pre>
<br />

<p>现在你的编译环境已经是面向 OpenWrt MIPS 系统的了, 与本地编译唯一的不同, 就是你需要对源代码包的 configure 脚本增加 --host=mipsel-linux 参数。</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ ./configure --host=mipsel-linux
$ make
$ make install
</pre>
<br />

<p>大部分 x86 体系的软件包都可以在交叉编译平台上通过编译。不过 Stackless Python 貌似并不支持 MIPS 体系的计算机, 为此我编写了一个补丁, 你可以访问 <a style="text-decoration: underline; color: #338;" href="http://www.stackless.com/pipermail/stackless/2008-April/003428.html">这个地址</a>, 将邮件中 "# stackless-2.52.mips.xcompile.patch" 以下部分复制出来保存为 stackless-2.52.mips.xcompile.patch 文件。下面我们就可以编译 Stackless Python 了。</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
$ wget http://www.stackless.com/binaries/stackless-252-export.tar.bz2
$ tar -xjf stackless-252-export.tar.bz2
$ cat stackless-2.52.mips.xcompile.patch | patch -p0
$ cd python-2.52
$ export CROSS_COMPILE=yes
$ ./configure --prefix=/opt/Stackless-2.5.2 --host=mipsel-linux
$ make
$ make install
</pre>
<br />

<p>现在我们在本机的 /opt 下得到了 Stackless-2.5.2 目录, 打包放到路由器的 /opt 目录下, 我们就可以正常使用 Stackless Python 了。</p>

<p>关于在其他版本的 Stackless Python 里如何 H@ck 代码以支持 MIPS 架构, 请仔细阅读 patch 文件。据 Richard Tew 说他对在 Stackless 中加入 MIPS 支持颇感兴趣, 除非他能跑得过 Python 的开发速度 (这好像有点冷~~`)。很显然 Guido 把 Stackless 拒之门外是一个严重错误, 喂喂, 别再鼓捣 Python 3000 什么拉!</p>

<p>现在登入 WL-HDD, 下载 Eurasia3, 编写一个 Eurasia3 (这里使用 svn 版, 我正准备发布的 alpha4 的原型, alpha2 可以在<a style="text-decoration: underline; color: #338;" href="http://eurasia.googlecode.com/files/Eurasia-3.0.0a2.tar.gz">这里</a>下载) 的测试程序:</p>

<pre style="padding: 10px;padding-left: 30px;padding-right: 25px;font-size: 10pt; color: #0f0; background-color: #111;">
# !/opt/Stackless-2.5.2/bin/python2.5
from Eurasia.web import config, mainloop

def controller(client):
 client.write(
  'HTTP/1.0 200 OK\r\n'
  'Content-Type: text\r\n'
  '\r\n'
  'hello world!' )

config(controller=controller,
 port=80)
mainloop()
</pre>
<br />

<p>做了一下小测试, hello world 每秒可以达到 40 个以上的请求数, 尽管比起一台普通的 PC 同样的 Eurasia3 程序慢了几百倍, 但是对于一台嵌入式设备而言, 已是颇令人满意了。</p>

<p style="color: #888;">
<b>PS:</b>据阿北说他的笔记本是做开发用途, 而不是做了网站, 这里勘下误。<br />
</p></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820083995420860</comments>
    <slash:comments>23</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820083995420860</guid>
    <pubDate>Wed, 9 Apr 2008 21:54:20 +0800</pubDate>
    <dcterms:modified>2008-04-10T14:26:21+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[霍德明: 再说一次我坚决反对用下调印花税来激活股市]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200833102224250</link>
    <description><![CDATA[<div><span style="font-weight: bold;"><br>转载按: </span>作为老股民, 个人对于绝对吸血性质的印花税<span style="font-weight: bold;"></span>也是深恶痛绝欲先除之而后快, 但现在可能还不是最佳时机。目前中国股市最大的敌人其实是投机资本, 投机资本的本质是要从广大散户和股票价值身上吸血, 只要市场还没有让投机资本有去无回的机制, 投资者就无法在股市中生存下去。<br><br>对应嗜血的投机热钱, 印花税或还有部分价值, 不应任由感情武断地调动, 而在政策市中越陷越深。目前的现状是监管者在过度投机下并没有及时抑制热钱, 交了白卷。广大投资者和被骗入市的投机散户们, <font size="4"><span style="font-weight: bold;">你们真正要去算账的, 可不是这个敢于站出来说真话的学者呦</span></font>。<br><br><br><div style="margin-left: 80px;"><img src="http://news1.jrj.com.cn/NewsPic/20070202/2007020215230159788.jpg" border="0">
<br></div>
<br>　　北京大学中国经济研究中心教授霍德明（摄影：杨松）
<br>
&nbsp;<br><font size="4"><br><span style="font-weight: bold;">霍德明: 再说一次我坚决反对用下调印花税来激活股市</span></font><br>
<br>　　<a href="http://guba.money.163.com/bbs/guba_tiaolou/67966258.html" target="_blank"><font color="#0000ff">《21世纪经济报道》上周访问了一些我对中国股市的看法</font></a>，发布以后，股民们的反映可谓排山倒海，对本人的漫骂与指控更是罄竹难书。然而，站在真相面前，凭着对学理的了解，我还是维持原来的看法。怎么说？
<br>
<br>　　根据国家统计局的资料，2007年3月我国的通胀率为3.3%，到了2007年9月通胀率达到5.3%的时候，已是自1997年2月以来的最高点，面对这种通胀压力，人民银行在2007年中上调10次存款准备率与6次利率，仍然是无济于事，2008年2月的通胀率更高达8.7%。短短的一年之内，通货膨胀着实令全国老百姓触目惊心。难道今年真要人民银行还要再上调10次存款准备率与6次利率吗？或是干脆由人民银行每日机动决定存款准备率与利率，再创造一个中国奇迹吗？
<br>
<br>　　经济学基本道理告诉我们：通胀的风险并非来自股市，也和房市无关，而是和过去数年的外汇储备急速增加，货币(M2)年增发率高达15%有直接因果关系。<b>过多的资金(流动性)只有三个地方去：股市，房市，和一般商品市场。</b>从2004-2005开涨的房价与股价，正是这种经济洪流的表现，而从2007开始的商品通胀也只是同样的洪流的另一种迟滞反应。

<br>
<br>　　了解了这个宏观环境，我们再来看一看近来房市的表现。虽然有一些报道提到房价已经跌了，但是根据北大中国经济研究中心徐滇庆教授的研究，发现房价下跌的言论多半是房地产开发商的伪消息，目的是在获得银行融资，实际上北京与上海的房价仍然以10%以上的速度增加，全国的房价并没有下跌的趋势。
<br>
<br>　　<b>如果过剩的资金造成房价和物价的上涨，为什么最近股价下跌呢？</b><u>原因在于中国股市中存在为数不少的投机大户与更多无知的散户。</u>自从去年530印花税调高以来，这些人操纵空间大幅度的被压缩，从而股价形成机制渐渐恢复正常。当前，心有不甘干的投机者与盲从附和的散户借着股市短期调整的现象，企图压迫政府管理层调降印花税。了解中国股市的人或许比我多，但是敢出面说真话的人并不多。<font style="font-size: 16pt;"><font color="#ff0000"><b>作为北京大学的一份子，更秉承北大肩挑国家负与的重任，吾等若不能挺身而出，横眉冷对这一股妖风，才是愧对全体国民对北大人的深切期望。</b></font></font>
<br>
<br>　　<b>目前我们面对的最大的威胁是通货膨胀压力。如果不坚决采取货币紧缩政策，今年的通胀率有可能冲上两位数。</b>一旦民众形成了通货膨胀预期，再要治理就很困难了。政府的宏观调控政策的目标是防范出现金融危机和社会危机。在一般情况下不应当过度干预市场。股市下跌是我们都不愿意看到的情况。可是要求政府来救市就有点不合情理。就像江河发洪水时，如果威胁到两岸居民的安全，政府必须组织力量防洪，甚至用强制的手段将危险地区的居民撤走。当股市飞涨的时候，很可能导发金融危机，因此必须加以调控。可是，当天旱时，河水几近枯竭，这肯定不是好事，可是政府能干些什么？除了采取一些抗旱措施之外，没有什么好做的。等过些天下雨了就好了。这次股市下跌，中国的经济基本面并没有出现多大的问题，下跌持续的时间肯定不会太长，更不会给整个金融体系带来很大的威胁。倘若真是信心危机，那么来得快，去得也快。过些时候自然好转。用不着大惊小怪。
<br>
<br>　　在政府没有提出有效办法解决流动性过剩的问题之前，中国的股价，房价，物价都还有一大股压力急待释放。就事论事若是没有这些不正常的压力，印花税就像是托宾税一样，它的影响力道有限。但是在此时此刻的巨大压力之下，印花税的丝毫变动都会造成股民心里更大的波动，到时一定是股价上冲下探，投机者坐享其成，大赚特赚。以后，<b>政府看到情势失控，再度调整印花税，如此周而复始，可怜的散户永远是别人的鱼肉。</b>

<br>
<br>　　<font style="font-size: 16pt;"><font color="#ff0000"><b>身为学者无法亲自打击罔法投机之徒，只能再说一次：我坚决反对用下调印花税来激活股市！</b></font></font>(北京大学中国经济研究中心网站供稿)
<br>
</div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200833102224250</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200833102224250</guid>
    <pubDate>Thu, 3 Apr 2008 10:22:24 +0800</pubDate>
    <dcterms:modified>2008-04-03T10:29:21+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[在中国股市里你不会被套]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200831105337749</link>
    <description><![CDATA[<div><div style="margin-left: 80px;"><img src="http://img2.quotes.money.163.com/chart/stimechart2/0000001.png"><br><br></div>有两种做股票的方式, 一种是投资, 另一种是投机。<br><br>1. 一般认为中国股市缺乏投资价值, 故股市中不存在投资人。<br>2. 用屁股想想都知道不可能有投机者会选择去做中长线。故股市投机必是短线甚而超短线运作, 在短期内无论涨跌, 即使亏本也须认赔, 必按时出货。而套牢必是长期持仓的结果, 不会发生在投机者身上。<br><br>综上所述, 中国既没有投资者, 而职业的投机者又不会被套牢, 故在中国股市中你不会被套牢。<br><br></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200831105337749</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200831105337749</guid>
    <pubDate>Tue, 1 Apr 2008 22:53:37 +0800</pubDate>
    <dcterms:modified>2008-04-01T22:53:37+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[沈崴手把手教你如何设置 EeePC 分辨率]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820081191431975</link>
    <description><![CDATA[<div><div style="text-align: center;">
<a href="http://img.blog.163.com/photo/fgaxBPU-Avuhz6XaDTlIxQ==/4239576099216411254.jpg" target="_blank"><img src="http://img.blog.163.com/photo/fgaxBPU-Avuhz6XaDTlIxQ==/4239576099216411254.jpg"></a><a href="http://img.blog.163.com/photo/bE9EKpbd--5neceofdYQTQ==/3459890413727963256.jpg" target="_blank"><img src="http://img.blog.163.com/photo/bE9EKpbd--5neceofdYQTQ==/3459890413727963256.jpg"></a><br><div style="text-align: left;"><br><font size="3"><span style="font-weight: bold;">设置分辨率</span></font><br><br>$ sudo apt-get install openbox # 这个窗口管理器比较轻盈, 诸位请酌情<br>$ sudo apt-get install vnc4server krdc # 安装 vnc 的服务器和客户端软件<br>$ sudo /etc/init.d/gdm stop # 终止当前的 X 服务<br><br>$ X &amp; # 启动 X, 然后按 Ctrl + Alt + Fn 回到命令行<br>$ export DISPLAY=:0 # 开始操作屏幕 0<br>$ openbox # 使用 openbox 窗口管理器<br><br>$ <a><span style="font-family: monospace;">vnc4server </span>:1 -depth 16 -geometry 1920x1152 -localhost -dpi 100 # 启用虚拟屏幕 :1<br>$ export DISPLAY=:1 # 开始操作屏幕 1<br>$ gnome-wm # 使用 gnome 窗口管理器<br>$ nautilus &amp; # nautilus 桌面<br>$ gnome-panel &amp; # gnome 菜单<br><br>$ vncpasswd # 设置 vnc 密码<br>$ export DISPLAY=:0<br>$ </a><a>krdc -fsh localhost:1 # 连接到虚拟屏幕 :1, 然后按 Alt + F7 回到 X 屏幕<br><br>基本上原理就是这样, 大家如果有空的话可以写到 sh 脚本里面去。<br><br><span style="font-weight: bold;">好看簿</span>: http://www.haokanbu.com/story/7044/<br><span style="font-weight: bold;">参考资料</span>: http://forum.eeeuser.com/viewtopic.php?id=14588<br></a></div></div></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820081191431975</comments>
    <slash:comments>5</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820081191431975</guid>
    <pubDate>Tue, 19 Feb 2008 13:43:19 +0800</pubDate>
    <dcterms:modified>2008-02-20T11:53:06+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[此帖必火]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200801110392835</link>
    <description><![CDATA[<div><p style="color: #888; font-size: 9px; text-align: center"><a href="http://v.youku.com/v_show/id_cj00XMTY0MTY0OA==.html">值得收藏 http://v.youku.com/v_show/id_cj00XMTY0MTY0OA==.html</a></p><br><br>
<center><embed allowScriptAccess="never" allowNetworking="internal"       src="http://player.youku.com/player.php/sid/XMTY0MTY0OA==/v.swf" quality="high" type="application/x-shockwave-flash" align="middle" height="372" width="450"></center></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200801110392835</comments>
    <slash:comments>6</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200801110392835</guid>
    <pubDate>Fri, 11 Jan 2008 10:39:28 +0800</pubDate>
    <dcterms:modified>2008-01-11T10:42:10+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[[ZEUUX] Microsoft Windows Vista究竟干了什么?]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200801001458974</link>
    <description><![CDATA[<div><h2>原作者：<a href="http://badvista.fsf.org/author/johns" target="_blank">John Sullivan</a> 翻译：<a href="mailto:yuchting@gmail.com">Yucheng Ting</a> 审校：夏武</h2>

<h3>Microsoft的新推出的操作系统Vista是一种历史的大倒退</h3>

<p>通常新的操作系统能让你使用计算机做比以前更多的事情。但是，Vista不是，它让你能做更少的事情。</p>

<p>Vista强制让你接受“数字版权管理”（DRM，Digital Right Management）的新形式。DRM就是所为的“数字霸权管理”，因为这个技术，大量的媒体软件公司都试图在欺骗你，为的是控制你和你使用的计算机。</p>

<p>安全技术专家，Bruce Schneier，简单总结到：</p>

<p><em>Windows Vista包括了一组你不想要“特性”。这些特性将会是你的计算机更加的不可信和不安全。它们使你的计算机更加不稳定，运行的更慢，同时导致了技术支持问题。它们甚
至会需要你升级现有的硬件和软件。但是这些"特性"根本就是没有用的。事实上，它们阻碍了你的使用：DRM就是这样的特性，在娱乐工业大亨的要求下，被强
加在你的机子上，同时你又不能拒绝使用它们。</em></p>


<h3>DRM增强了Microsoft和媒体集团（Big Media）的权利</h3>
<ul>
  <li>它们能决定你的计算机能用哪些软件，不能用哪些软件。</li>

  <li>它们能决定你计算机上的软件的配置，就在你安装它们的时候。</li>
  <li>它们强迫你安装一些新的软件，甚至是你在不想安装的时候（当然，你得为此付费）。</li>
  <li>它们限制你访问某些软件，甚至连你自己的数据文件也不例外。</li>
</ul>

<p>厂商通过技术手段强制实施了DRM。当你想做什么事的时候，你的计算机却告诉你：“你没有这个权利”。为了使这个方法更有效，你的计算机常常会监视你的工作。这种经常性的监视会占用计算机的计算能力和内存，同时这还是Microsoft为什么告诉你必须购买更新更快的硬件来运行Vista的一个重要原因。他们希望你去买新的硬件，不是因为你需要这些硬件，而是因为更有效得来限制你的工作“需要”。</p>

<p>Microsoft和其他的计算机公司有时把这种事情美其名曰“可信计算”（Trusted Computing）。其实，让你自己的计算机不信任自己而去信任Microsoft，叫做 "可疑计算"（Treacherous Computing）应该更贴切一点。</p>
<h3>就算你合法地购买了Vista，你也不会拥有它</h3>

<p>Windows Vista和之前的Windows版本一样，是一个专有软件：在一个严格限制你怎么使用它的许可证授权下出租给你，同时，在没有源代码的情况下，除了Microsoft，没有人能改变它或者验证它到底做了什么。</p>
<p>Microsoft说这种软件是最好的：</p>
<p><em>软件只有许可，不能被卖掉。这就是只给你使用这个软件的权利，然后Microsoft保留其他所有的权利。除非适用的法律给予你更多的权利，否则你只能在同意这个条款之后才能使用。为了能做到这一点，你必须遵守软件里面的任何技术限制，这些技术限制允许你以某些特定的方式使用软件。</em></p>
<p>为了使之更加含糊不清，不同版本的Vista有不同的限制。你可以在<a href="http://www.microsoft.com/about/legal/useterms/default.aspx">http://www.microsoft.com/about/legal/useterms/default.aspx</a>看到所有的这些许可证。</p>
<p>读这样的一些许可文件是一件很痛苦的事情，这就是为什么人们不反对这种许可的经常原因。但是如果我们不开始反对的话，我们将会失去自由。当你读这些许可文件的时候会看到如下的一些荒谬的限制条款：</p>
<ul>
<li>如果你是通过购买一台新的计算机而获得Vista拷贝的话，那么这份拷贝将永远只能在你这台计算机上使用。</li>
<li>如果你从零售商店购买Vista，并且已经安装到你的计算机上，那么当你试图安装到另一台机器上时，必须完全删除以前的Vista拷贝。</li>

<li>你给予了Microsoft通过一些程序（比如Windows Defender）来从你的系统上删除被探测到的间谍程序。</li>
<li>你同意Microsoft使用"Windows Genuine Advantage"系统来监控你的计算机。这个系统能智能地识别出那些Microsoft认为是盗版的拷贝的实例。不幸运的是，最近的调查表明这个系统已经弄混了500000个实例了。</li>
</ul>
<p>自由软件，如GNU/Linux不需要你来同意这些可笑的许可证条款。由于可以自由的复制，拷贝，以及和朋友共享这样的软件，所以它被称作自由软件。使用这样的软件，没有人会监视你的行为或是把你误认为是一个小偷。</p>
<h3>现在要做的是捍卫你的自由</h3>
<p>这里有一场正在进行中的战斗，在那些崇尚自由的人和那些想通过剥夺他人自由权利的公司（比如Microsoft）之间。DRM和荒谬的许可是这场战争的焦点。请加入我们，加入自由这一边，不仅对WindowsVista说不，对其他基于DRM的产品说不，而且对一般专有软件说不。使用非DRM和"自由"的软件，例如GNU/Linux操作系统。无论现在还是将来，使用自由软件将会使得你的工作在权利和自由不被限制的情况下完成。</p>
<p>随着越来越多的生活变成数字化，捍卫你的数字自由就象我们一直在捍卫演讲和出版方面的自由一样至关重要。</p>


<p>原文链接：<a href="http://badvista.fsf.org/what-s-wrong-with-microsoft-windows-vista">http://badvista.fsf.org/what-s-wrong-with-microsoft-windows-vista</a></p>
<p>ZEUUX 原文地址：<a href="http://www.zeuux.org/philosophy/what-s-wrong-with-microsoft-windows-vista.cn.html">http://www.zeuux.org/philosophy/what-s-wrong-with-microsoft-windows-vista.cn.html</a></p></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200801001458974</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200801001458974</guid>
    <pubDate>Thu, 10 Jan 2008 12:14:58 +0800</pubDate>
    <dcterms:modified>2008-01-10T12:14:58+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[标题见下图]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820080784239559</link>
    <description><![CDATA[<div>引用: <a href="http://kunshou.net/2008/01/blog-post_06.html">困兽的 Blog</a><br><br>

<center><img src="http://photo15.yupoo.com/20080106/123320_1566590931_fihnjtai.jpg"></center><br><br>

<center><embed allowScriptAccess="never" allowNetworking="internal"       src="http://player.youku.com/player.php/sid/XMTU0NTk5MDg=/v.swf" quality="high" type="application/x-shockwave-flash" align="middle" height="320" width="400"></center></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820080784239559</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820080784239559</guid>
    <pubDate>Mon, 7 Jan 2008 20:42:39 +0800</pubDate>
    <dcterms:modified>2008-01-07T20:44:25+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[[转载] 南方周末《系统》]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820071125103957333</link>
    <description><![CDATA[<div><p>【转载按语】他妈的，也加入 <a href="http://www.caobian.info/?p=2931">和菜头</a> 行动了。史玉柱同学, 往这里看过来哈。<br></p>
<p><strong>南方周末：《系统》<br>
来源: 南方周末<br>
作者: 曹筠武　张春蔚　王轶庶</strong></p>
<p>■编者按：</p>
<p>在一款同时在线人数超过百万、全部玩家加起来可以组成一个超级城市的网络游戏中，它的游戏精神是指向乐趣，还是指向权力和金钱？它的社会规则是新世
界的开放自由，还是率土之滨莫非王臣？这不只是对某一款游戏的追问，甚至也不只是对韩式网游的价值观的追问，而是对人与游戏、人与人的关系的追问。虚拟世
界是现实世界的一部分，也有着人们必须捍卫的准则。</p>
<p>在当下中国最火的一款网络游戏中，玩家们遭遇到一个“系统”，它正在施行一种充满诱惑力的统治。这个“系统”隐匿无踪，却无处不在。它是一位虚拟却
真实的垄断者。“如果没有我的允许，这个国家的一片叶子也不能动。”这是智利前独裁者皮诺切特的声音，悄然回响在这个虚拟世界之中。</p>
<p>白天，27岁的吕洋是成都一家医院的B超检查师。</p>
<p>晚上，她是一个国王，“楚国”的国王——玩家们更乐意按游戏里的名字尊称她为“女王”。在这个虚拟王国中，“女王”管理着数千臣民，他们都是她忠诚的战士。</p>
<p>在一款名叫《征途》的网络游戏中冲杀了半年多之后，吕洋自信看清了这样一个道理：尽管这款游戏自我标榜以古代侠客传统为背景，实际上钱才是在这个虚拟世界中行走江湖最关键的因素。</p>
<p>吕洋受过良好的专业教育，丈夫是生意人，资产殷实。钱对她来说从来不是问题，但她仍然忿忿不平地把这款游戏中一些风头正健的人称为“人民币玩家”。虽然在游戏中投入了数万元，但她仍然屡战屡败，原因就在于有人比她更愿意花钱，也花了多得多的钱。</p>
<p>正如《征途》的创造者史玉柱所言，这的确是一款适合有钱人的游戏。在这个世界里，欺凌他人的威力和合法的伤害权都标价出售。</p>
<p>尽管一切都是虚拟的，吕洋却曾经坚信她找到了一条通向光荣与梦想的金光大道。不过随着人民币的不断加速投入，和很多人一样，吕洋发现，金钱铸就的，其实是通往奴役之路。</p>
<p><strong>战争即将爆发</strong></p>
<p><strong>所有人都必须是“人民币玩家”——和平受到鄙视，战争受到推崇——被杀死者得到的只有耻辱</strong></p>
<p>坐在常去的一家网吧的VIP包房里，吕洋显得兴奋而又忧心忡忡，她面前的19英寸液晶宽屏上，黄色的粗体字反复闪动：“国战将在晚上8点15分开始”。她还有两个小时，对她手下的战士们做最后的动员和部署。</p>
<p>将要攻打楚国的是游戏中的头号强国魏国。魏国拥有上万名玩家，更为关键的是，魏国的支柱，“王者家族”成员们，个个都是令人敬畏的英雄，他们的等级
遥遥领先于一般人，装备着成套的最为昂贵和罕有的神圣铠甲和武器。在“世界英雄排行榜”上，他们长期牢牢地占据着前五十名中最靠前的位置。</p>
<p>他们拥有恐怖的杀伤力，人人以一当百。即使吕洋这个“女王”和他们对垒，如果战术采取不当，也存在被“秒杀”的危险。所谓秒杀，就是在几秒钟之内，
在意图还击之前，就被一招致命。吕洋的丈夫并不玩游戏，但他也会对此开开玩笑：“就像武侠小说里写的，如果刀够快，你可以听见自己的血从脖子里喷出来的声
音。”“女王”吕洋对他们最为忌惮，同时又略带鄙夷。“他们就是人民币玩家嘛。”她说。</p>
<p>实际上，只要进了这个虚拟的小世界，所有人都必须是“人民币玩家”，区别只在于你愿意花多少而已。</p>
<p>和以往的所有网络游戏不同，《征途》并不计时收费。简单地填写一份网上表格，就可以注册账号。只需要起个名字，选择性别、国家，一个虚拟身份就此诞
生，光荣而艰难的征服之路摆在了你的面前。根据游戏的主线故事背景，你会惊奇地发现其实你是皇族之后，由于战乱被弃于荒野，现在你长大了，知道了自己高贵
的血统，接下来该做的就是练一身好武艺，奋起于草莽之间，闻达于庙堂之上。建立自己的国家甚至取得统治世界的皇位以恢复祖先的荣光，则是你的终极目标。</p>
<p>故事很合中国人的口味，惟一令人感到困扰的是：热血沸腾之后，你发现现实和理想的差距原来是那么大。一个新诞生的身份是1级；而王国里最英勇的英雄
们能练到“转生170级”：练满普通人的168级之后，他们又获得新的不朽之身，并再次练到了170级。简单地说，那就是人和神的差距。英雄们手持
“完美的神圣武器”，浑身旋绕着代表高贵的紫色光晕；而你却两手空空，甚至全身上下只有一条遮羞的短裤。</p>
<p>现在，你可以购买点卡，持续地把人民币注入游戏中的账户，以便快速升级，购买各种名贵材料打造装备；你也可以不花钱，如果什么都不做，只是呆在游戏
里的话，系统不会向你收取一分钱。但很快你会发现，你连荒地里的一只蚊子都打不过，你的活动空间甚至仅限于出生地，一个叫“清源村”的小村子，更为广阔的
世界则是为英雄们准备的。当然，最让你沮丧的还在于，贵为皇族的你，却永远生活在被其他玩家“秒杀”的巨大阴影之中。</p>
<p>显然，吕洋走了一条真金白银铺就的英雄之路。她如今是“转生145级”，历经艰险戴上了王冠，她的坐骑是一条浑身闪着火光的龙。但英雄亦有英雄的烦恼，她的王国正面临严峻的挑战。</p>
<p>吕洋自认为是一个“和平主义者”，她把女性的温婉带到了对国家的治理之中。“女王”很少主动攻击别国，更喜欢带着臣民们消灭怪物，或者经营骆驼商队。但这并不能避免受到攻击。</p>
<p>“国战都是系统安排的，”吕洋解释说，“国王只需要提交申请，系统就会自动安排好战争爆发的时间。”</p>
<p>系统喜欢“国战”。这个虚拟世界里，“和平”受到鄙视，战争受到推崇。战胜国可以自动获得战败国国库里的金钱和物资，国家排名由“国战”胜利次数决
定，强国的臣民名字下闪耀着一颗颗星星，那代表着每一次辉煌的战胜。当然这并不是最重要的，对于战争中的人来说，冲入别国的土地，肆意砍杀每一个胆敢与之
抗衡的人，无疑是释放内心深处原始冲动的绝佳办法。</p>
<p>系统准确地捕捉着人性的弱点，召唤着玩家们在违背普世价值的虚拟世界中放纵自己的邪恶。它赋予战争中的人肆意杀戮的权力，给予杀人者加倍的经验值奖励；系统也会标明你的斩首纪录，那一串串数字就像印第安战士割下的头皮代表着无上的荣光，而被杀死者得到的只有耻辱。</p>
<p>吕洋打电话，上QQ，或者在游戏中直接交谈，她自知实力对比悬殊，因此通知手下的战士们集中力量，守住王城的一角。她的声音因紧张而略带颤抖，尽管对现实中的她来说无论胜败都毫发无伤，但在游戏里，她知道那意味着生存还是毁灭。</p>
<p>离战争爆发，还有两个小时。</p>
<p><strong>国王死了</strong></p>
<p><strong>推销员来了——冒险家乐园——都在“系统”的支配之下——小角色杀死了国王</strong></p>
<p>在开始“征途”之前，吕洋玩的是另一款游戏《传奇》。她玩得并不好，仅仅当作一种周末的消遣。《传奇》计时收费，玩家购买在线时间用来升级和打造装
备，所有的事情都费时费力。“比如你要打一个终极怪物，”吕洋说，“要跑很远的路，在迷宫里面转来转去，杀掉无数的小怪，可能耗一个晚上，你才跑到大怪的
面前。”最让人崩溃的是，当历尽艰辛终于站到大怪面前，一不小心却被秒杀了！那么，从头开始跑路吧。</p>
<p>吕洋可能从未得知，在她晕头转向地跑路时，一个叫“送礼只送脑白金”的玩家也在这款游戏中闯荡，他从来不耐烦那些烦琐的升级步骤，而是直接购买高级
别账号；他成千上万地花钱，砸下最顶级的装备。以钱铺路，他在最短的时间内得到了最强大的威力。在这款典型的韩式“泡菜”游戏里，他试验出了自己独辟蹊径
的玩法。这位玩家就是后来《征途》的老板史玉柱。</p>
<p>2007年年中的一天，就在吕洋常去的这家网吧，一个推销员站到了正在“跑路”的吕洋面前。他衣着得体，面带微笑，用充满诱惑力的词汇介绍了一款名叫《征途》的新游戏。“绝对不用走迷宫，我们要的就是爽快。”吕洋记得他这样保证。</p>
<p>吕洋就此和朋友们“踏上征途”。她的这些朋友们要么是医院的同事，要么是丈夫生意上的伙伴，空闲不多，但钱不少。他们很快发现，《征途》的确是一款爽快感十足的游戏，简直就是为他们这样的人设计的。</p>
<p>要找系统角色接受任务，不用费力去找，点F键，下拉菜单里角色名字一一罗列，就像网络上的超链接，双击名字，就自动找到面前；要去某个地方，不用走迷宫，点开地图，找到地名，鼠标左键单击，一会儿就到了。</p>
<p>很快吕洋就离开了“清源村”，热闹的“凤凰城”和辉煌壮丽的“王城”才是她的舞台。这位后起之秀被吸纳进了“楚国”最有威望的家族“桃花源”。单打
独斗是不现实的，拜入名门正派才是出头之道，这里就如同武侠小说描写的江湖；而家族与家族联合可以组成帮派，帮派各自有各自的势力范围，在达成妥协之后又
互相配合支撑起一个国家。</p>
<p>游戏里的大部分系统角色，比如杂货店老板或是锻造铺师傅，都可以被帮会控制，此后他们会持续贡献“保护费”。系统鼓励帮会争夺控制权，谁杀死竞争对手，谁就能接手保护费。帮主们因此热衷于抢夺街区和店铺。这样在吕洋看来，她的置身之处，又像是1920年代的上海滩。</p>
<p>这里的确像那个“冒险家乐园”。低级别的玩家甚至也可以挣钱！完成一些特定的任务，比如护镖，可以得到一定数量的“银两”；达到一定级别和保证一定在线时间后，系统甚至会给玩家“发工资”；还有各式各样的“奖励”、“返还”。</p>
<p>“其实都是些小钱，”吕洋说，“相比花掉的钱简直没法比。”但由此带来的成就感和满足感是无法比拟的，你能想象在砍翻敌人的同时还能挣“银子”么？“想得到更高级的奖励么？”吕洋说，“那就花更多的钱呗。”</p>
<p>时常有“外国人”冒险进入楚国，他们可能是魏国人，也可能是宋国人，或者是其他9个国家中任何一国人，但不管是哪国，一旦踏入楚国地界，他们的名字
就显示为红色，这个颜色意味着：敌人——应当杀死的人。每杀死一个这样的人，系统就会在“护国英雄排行榜”里为你加上光荣的一分。</p>
<p>他们并非是闲逛者，而是根据系统分配的指令而来，他们必须进入敌国完成诸如“刺探情报”或者“抢夺太庙资源”等等任务。而同样根据系统赋予的职责，家族和帮派此时的任务就是杀死他们。</p>
<p>那时吕洋还是一个小角色，她正在砍杀一头犀牛，屏幕上出现一条指令，帮主撒下了帮主令，要求帮众前往杀敌。点击“是”之后，吕洋被传送到王城边境附近，众人正把敌人围在当中奋力砍杀。</p>
<p>帮主“狼烟”是当然的主力，他是一个“武士”，近战肉搏是他的特长，他的“无双剑”能造成惊人的杀伤。在炫目的刀光闪耀间隙，吕洋突然发现敌人的坐骑是一只麒麟，这意味着他是一个国王，只有国王才拥有这种神兽！</p>
<p>吕洋是一个“法师”，她专修冰系法术，可以从远处以冰雪为武器。这是她参加的第一次激战，她站到一个安全的地方，将霜冻从空中撒向敌人。麒麟居然哀号倒下，国王死了！吕洋幸运地完成了最后一击。</p>
<p>屏幕上黄色的粗体字夸张地跳了出来：“天哪！吴国的国王居然被楚国的无名小辈女王杀死了！”吕洋在电脑前禁不住手舞足蹈，她杀死了国王，一个小角色杀死了国王！她双脚猛地一蹬，电脑黑屏了——她兴奋得把电源插头踢掉了。</p>
<p>往后几天，吕洋都有些“神神叨叨”的。游戏里“全世界”都知道她杀死了国王，朋友们有些羡慕地向她祝贺。即使在医院上班，吕洋也在办公室的电脑上下载了游戏，她就是喜欢挂在游戏里，反复地看那条早就过时的消息：“天哪！吴国的国王居然被楚国的无名小辈女王杀死了！”</p>
<p>有时候严厉的院长从办公室经过，威严地审视医生们的工作，吕洋只能把游戏界面最小化。她会悄悄地跟同事炫耀：“牛啥嘛，他要是耍游戏，我一招就把他砍翻！”院长其实并不坏，但吕洋觉得他“缺乏对女性应该有的尊重”。“在游戏里，女人也可以统治男人。”她宣称。</p>
<p><strong>国王万岁</strong></p>
<p><strong>核裂变一样蔓延的仇恨——好的装备都意味着金钱——总有无数的人在疯狂比拼——“国王万岁！”</strong></p>
<p>但“女王”其实并不像想象中一样“牛”，几天之后，就在王城外，一个敌人逼近，他骑着鬃毛飞散的烈马，威严得像天上的神，他只问了一句话：“你就是那个女王啊？”一个巨大的火球从天上砸下，落单的“女王”还没来得及答话，被“秒杀”了。</p>
<p>吕洋目瞪口呆，短暂的惊愕之后她脑子里只有一个想法，她要升级，要得到最好的装备，她要当真正的王，她要报仇！</p>
<p>仇恨是这个世界中最强大的动力。“秒杀”吕洋的玩家，立刻被系统自动排入她的仇人名单，时时提醒“女王”报仇雪恨。“仇人”是这里最常见的社会关系，仇恨关系同样存在于家族、帮会和国家之间。如同核裂变一样蔓延的冤冤相报，在这里是受到鼓励和颂扬的永恒主题。</p>
<p>她找到“代练使者”，一个代表系统与玩家做交易的虚拟角色，他就站在王城大道边上，答话谦卑而热情，乐意为有钱人服务。吕洋向“使者”支付人民币购买经验值，“使者”则让她迅速升级，从人变成了神。吕洋觉得这么做很值得，在这上面，她“只不过花了千把块钱”。</p>
<p>但是，杀伤力和防护力是由装备决定的，级别只是佩戴相应等级装备的必须条件。就像金庸的小说，内力的修炼是必须的，但一把玄铁剑却可以让杨过无敌于
天下。游戏中按照等级不同划分出了20等装备，以法师职业为例，武器由最初的柳木杖到最为罕有的至尊杖。此外还有铠甲、头盔、腰带、护腕、项链和戒指等
等。</p>
<p>这些好的装备都意味着金钱。和别的网络游戏不同，在这里，打怪和接任务不会掉装备。“我都要最好的，”吕洋说，“你只能去系统商店买材料，再找系统铸造商打造；或者，你只能去赌。”</p>
<p>“赌”，就是“开宝箱”。玩家向系统购买钥匙和箱子，很便宜，一块钱一套。用钥匙点击开启，屏幕上一个光芒闪耀的箱子缓缓打开，各种材料或装备如同
赌场大转轮一样排列在箱子里，光圈飞速转动，停下的地方就代表赌到的东西。箱子里经常会有玩家们最希望得到的高级装备，但转动的光圈却往往和它们擦肩而
过。</p>
<p>吕洋如今回忆，最疯狂的时候她就像一个赌场里的赌徒，会在屏幕前大声喊叫自己想要的东西，比如“乌木，乌木”，那是一种高级材料，而最后她往往得到的只是一点少得可怜的经验值。“乌木”，或者那威力强大的“幽冥戒指”，仍然摆在宝箱里，闪着诱惑的光。</p>
<p>这个世界中还存在着一个“开宝箱”排行榜，每天开宝箱最多的人，可以得到一颗罕有的令人倍增威力的“补天神石”。</p>
<p>这个巧妙的设置具有无穷的诱惑力，总有无数人在疯狂比拼开箱数量。吕洋曾一晚上开过上千个箱子，但始终功亏一篑，总有人比她更为执著，她从没拿到过那颗神奇的石头。</p>
<p>各式各样的排行榜随时闪现，世界英雄排行榜——根据级别和装备带来的威力排序；护国英雄排行榜——根据杀死敌国人的数量排序；国家实力排行榜
——根据国家物资和国战胜负记录排序……就像电视里随时出现的脑白金广告，实时变动的排名对野心勃勃的英雄们高频率轰炸，提醒他们在这个严酷的世界里一刻
也不能放松。</p>
<p>玩家在不懈地开着箱子，他们有时好运地得到一点好东西，绝大部分时间几无所获，但越是没有收获，他们越是迫不及待地打开下一个箱子。他们每点击一下，就代表一块钱，又一块钱……就像一个永不停歇的沙漏，金钱涓滴成河一般随着每一次点击汇成巨流，流向看不见的系统。</p>
<p>吕洋自认为运气还比较好，“平均开1000个箱子，好运的话能有十几次拿到好东西。”</p>
<p>由此吕洋成为了她现在所鄙夷的“人民币玩家”，上万的人民币被迅速而几乎不被察觉地花了出去。在游戏中。“女王”拥有了可怕的威力，她为自己，也为
朋友报仇；她接受请求，为本国的商队护镖；同时她也会和英雄们一起侵入别国。她声誉日隆，跻身英雄之列，在游戏里，她甚至和威猛的帮主“狼烟”喜结连理。
当然，也由于她在现实中是一个那么可爱的姑娘，她被推举为楚国的国王。“国王万岁！”人们向她俯首称臣。那是吕洋在征途中的最高点，也惟有在那转瞬即逝的
一刻，吕洋觉得自己付出的时间和金钱是值得的。</p>
<p><strong>国王累了</strong></p>
<p><strong>“系统”是最为勤奋的——女王觉得自己像驴子——花钱买你生气——快感只在一刹那</strong></p>
<p>吕洋心里清楚，王位是真金白银买来的。一套转生150级左右的顶级装备，平均要开5000个宝箱。按照系统繁复的装备打造设置，要给一套装备镶上
14颗星星，打开“灵魂锁链”，镶嵌补天神石，花费又在5000元左右。随着等级的提高，原有的装备又必须相应替换或升级。平均每升5级，装备就要更新一
套。</p>
<p>这时的“女王”已经成了一位熟练的开箱工，日复一日地开宝箱，升级装备，再淘汰，再升级……“后期主要就干这个事情了，”吕洋回忆，“不更新换代不行，不然国王很快就变菜鸟。”</p>
<p>这样的压力不仅仅来自于游戏内部。在吕洋常去的网吧，甚至洗手间里都贴着征途网络公司的宣传四格漫画。当你洗手的时候，你就能看见一个漫画小人，在尖刻地嘲笑那些疏于升级的“懒人”。而招贴画上威风凛凛的英雄在每个网吧的门口注视着你；勤奋的推销员们时常出现在玩家身边。</p>
<p>与媒体上的各种宣传攻势相比照，这些推销员被称为史玉柱的“地面部队”。他们大多是“脑白金”销售旧部，活跃在中国广大的二、三线城镇，对于如何发掘利润，他们有着训练有素的敏感和才能。</p>
<p>系统是吕洋见过的最为勤奋的游戏系统，它更新换代的频率令人应接不暇。“要么花钱买安全感；要么省钱，随时被欺负，”吕洋说，“一天不上线，就会觉
得自己又落后了，实在是太累了。”她觉得自己像被胡萝卜吸引着一直向前的驴子，总有更加强大的“威力”在前方向她招手，而漫漫“征途”几无止境。游戏中弥
漫的仇恨也令吕洋越来越厌恶。一些结下了梁子的人民币玩家在每一件小事上都要一争高下。他们反复抢夺对系统角色的控制，互相攻打帮派总舵，没完没了地袭击
对方的商队，在PK竞技场上更是置敌人于死地而后快。甚至宝箱排行榜第一名也是他们争夺的目标。</p>
<p>如果一个玩家开了5000个箱子，另一个就一定要开第5001个。他们把这种疯狂的玩法叫做“花钱买你生气”。</p>
<p>系统不停地自我更新，统御术层出不穷。就连传统的打怪任务，系统也干脆允许家族与家族之间抢夺砍杀boss的权力。身为一国之主，吕洋总是必须身先士卒，如果她稍有懈怠，总有红了眼的部下口出怨言。</p>
<p>这越来越不像吕洋想要的游戏。吕洋觉得这个世界变得愈发丑恶，荣誉被建立在仇恨和贪婪之上。和以前的激动不已相比，如今快感只在疯狂结束后的那一刹那，接下来她会觉得无聊。</p>
<p>在楚国遭遇魏国的挑战之前，“国王”已经开始厌倦了。</p>
<p><strong>地底的火在喷涌</strong></p>
<p><strong>只希望坚持半个小时——和平的气氛在蔓延——“跟你们老板说，不要尽干些挑拨离间的事情。”</strong></p>
<p>“国战”在晚上8点15分爆发。吕洋和朋友们，她最得力的几个“武士”，坐在网吧包房内奋起应战。每当大的战役爆发，他们就坐在一个包房内，就和真实的战斗一样，肩并肩便于及时沟通，更利于互相鼓舞。</p>
<p>敌人从王城东门涌入，他们的国王身先士卒，冲入东门后使用“帮主召集令”，这样，他最精锐的英雄们可以被瞬间传送到他的身边。随着旋风，魏国的武士
们从天而降，他们立即被楚国战士重重包围。“女王”知道这是敌人的精锐，尽管城门外大批敌人正在涌入，但这些国王的随从才是最可怕的威胁。</p>
<p>武士们挥动大刀，空气被划裂成一道道光芒，他们拥有最强大的近距攻击能力和防护力，总是冲杀在前；法师们念动咒语，大地裂开，地底的火喷涌而出，天上的风云也化身为凌厉的雷电冰霜；蜂拥而来的召唤兽，来自天界和冥界，呼啸着混战在一起。战场被淹没在超越自然的伟力之中。</p>
<p>半个小时，吕洋只希望坚持半个小时。她从来没奢望胜利，战前魏国人放话10分钟结束战斗，傲慢的挑衅令让人反感，在战前动员里，“女王”向臣民们保证，她一定坚守半个小时。</p>
<p>东门不可抗拒地被攻陷，“女王”转战王城宫殿，宫殿前矗立着“大将军王”塑像，只要他被砍倒，就意味着楚国输掉了战争。楚国的战士们把战车集中起来围住塑像，在猛烈的攻击下，只有坚固的战车能够提供些微保护。</p>
<p>吕洋使用了“防守虎符”，她的臣民可以被全部召集到身边，楚国全国动员，宫殿前的每一级阶梯都成为血海。魏国的英雄们每杀死一个对手，就会有十个或者更多的人把他们围住。战场已经陷入混乱，没有沟通，没有指挥，每个人眼里只有敌人，本能地砍杀，不停地砍杀……</p>
<p>但吕洋的判断是对的，“人民币”才具有决定性的意义，这是实力之战，系统这个胜利女神青睐祭献更多金钱的一方。当魏国的国王最后砍倒“大将军王”，吕洋看了一眼时间，她坚守了将近40分钟。</p>
<p>这是吕洋输掉的最后一场战争，尽管她也曾经赢得过国战，但这个生性温和的姑娘如今觉得即便胜利也不能再带来荣耀的感觉。战斗结束后，她充满厌恶地声
称不再履行保卫国家的责任。“再有国家来进攻，我的家族不参与应战了。”她向臣民们宣布。“有意义么？”吕洋反问她的质疑者们，“系统挑起战争，我们往里
投钱，谁投的钱多谁就赢。”她觉得没有胜利者，“都被系统耍了！”</p>
<p>帮主“狼烟”和家族里的其他人支持了她的决定。“我们也觉得，这不是我们在打仗嘛，”狼烟解释，“纯属被人卖了还帮人数钱。”</p>
<p>吕洋成了“世界”里著名的“反战”国王。她更热衷于和别国结为盟国，当然盟国可以轻易地撕毁和约，她也不在意。在和其他国王交涉时，她也总是强调，就算你来打我，我也不应战。“让他们自己觉得没意思。”吕洋有些狡猾地说。</p>
<p>和平的气氛在悄悄蔓延。“国战”次数进行得太多，各国国王和英雄们互相之间开始熟络，在无数次仇杀之后，他们中的大部分成了不打不相识的朋友。“时间长了，没人好意思动武了。”吕洋说。</p>
<p>上线的时候，她也只喜欢跟朋友们聊聊天，组织家族或者帮派的活动，惟一杀人的情况只限于为臣民的商队护镖的时候，她讨厌那些专门盘踞在边境附近、以砍杀平民和抢掠商队为乐的“强盗”。</p>
<p>在网吧，她又碰见了一个游戏推销员，并不是开始那个，但一样面带微笑，用充满诱惑力的词汇请她“提点意见”。这位推销员同时自信地声称：“万人国战的场面会更加宏大和频繁！”</p>
<p>就在这段时间，征途网络公司宣布“重组国家”。系统将原有各区的国家重新打乱组合，原来的友好关系打破了，陌生的国王们重新被扔进了新的竞技场，而仇恨将被重新点燃。</p>
<p>“跟你们老板说，不要尽干些挑拨离间的事情。”吕洋回答。</p>
<p>昔日勇猛精进的“女王”开始变得“不思进取”，她疏于升级，也不再渴求更好的装备。她在游戏里的配偶“狼烟”有些着急了，催促她赶紧跟上，不然就要被越来越多的人超过。</p>
<p>而吕洋现实中的丈夫是个关心妻子的人，他以为吕洋只是累了。一天早上，吕洋醒过来，发现不怎么玩游戏的丈夫坐在电脑前，替她不停地开着宝箱，他想为她打造更好的装备。吕洋突然觉得有些心酸，在下一次上线的时候，她悄悄跟“狼烟”“离婚”了。</p>
<p><strong>监牢，看不见</strong></p>
<p><strong>禁止市场经济——第二十二条军规：那儿有个概率——如果他们反对“系统”会发生什么——“天哪”</strong></p>
<p>尽管赞同“和平治国”方略的人并不很多，但吕洋发现，和她一样对这款游戏从赞赏变为不满的人越来越多。连吕洋都没有想到，玩家们居然自发组织了一场针对系统的“静坐抗议”。</p>
<p>事情起因于系统宣布的一项新规定：绑定。根据这项规定，玩家从系统获得的装备和“银两”，都属于绑定范畴，即只能自用，不能交易，不能交换，甚至不能拆成材料或者干脆丢弃！</p>
<p>在游戏里，每一种职业都必须搭配对应的装备，每一种装备又由对应的材料打造。开宝箱早已成为玩家获取装备和材料最主要的方式，当你耗费掉了人民币，
需要一块“乌木”却得最终得到一块水晶，玩家们通行的办法是互相交易各取所需，或者摆摊出售换取银两。征途网络公司的解释则是，他们发现有职业玩家将游戏
中获得的银两和装备在线下出售获利，“绑定”是为了打击这种行为。</p>
<p>玩家们最终发现，在这个世界里，自由市场经济在某种程度上被禁止了，合法的私有财产只许保有，不许交易。在这里只有一个庞大的终极卖家被允许存在，那就是系统本身。</p>
<p>在一些游戏论坛里，随处可以看见玩家们黑色幽默一般的抱怨。一个帖子说：“我是个法师，花了上百块钱转到了一把刀，可是我不能装备刀啊。这把名贵的刀对我一点用处也没有，我还不能把它扔了。我甚至还要花钱向系统买个包袱，因为我没有足够的空间来装这把刀！”</p>
<p>“这个游戏处处都是花钱的陷阱！”另一个玩家宣称。他举出“孔子”为例，这个万世师表的人物在游戏中负责“智力考试”，通过考试玩家可以获得海量的
升级经验。但是，受教育是很贵的，向“孔子”讨教问题，居然“20两银子一次”。甚至财大气粗的人民币玩家们也对过于频繁的更新力不从心。系统最新宣布，
可以给装备镶上第15颗星星。按照规则，购买4颗宝石充一颗星，看起来不麻烦，但是这里有一条“第二十二条军规”：连续镶星会导致所有的星星爆炸。</p>
<p>假如你已经花费了40颗宝石镶上了10颗星，而在镶第11颗时发生爆炸，那么前面的10颗星同时消失，你只能从头开始。从第10颗星开始，成功镶嵌的几率为50％，此后递减。星数越高，爆炸几率越高。</p>
<p>设计者在此利用概率原理和玩家们开了一个小小的玩笑。“我在冲第14颗星时，连着爆了11次。还不算前面爆炸的次数。”一个玩家抱怨。仅仅为了给他的至尊刀镶上第15颗星，他就花费了超过3000元。</p>
<p>玩家们出离愤怒，他们停止砍怪，不再接受任务，国王们都难得和平地坐到一起而不是申请“国战”。在游戏地图最中心的皇城广场上，密密麻麻地坐满了战士、法师、弓箭手和召唤术士们。这些往常醉心于杀戮的角色，如今用绝对的安静来对抗系统的贪得无厌。</p>
<p>吕洋当然不会缺席，她率领家族成员们加入静坐行列，她甚至花“10两银子一次”向“全世界”喊话：“游戏越改越烂，系统越来越贪！”</p>
<p>她惊愕地发现，“系统”两个字不能显示了，变成了**；再试“GM”，还是**；再试“史玉柱”，这次是***。</p>
<p>吕洋既愤怒又觉得好笑。是啊，这个隐匿无踪的**或***，却无处不在。它谦卑而热情地引导你花钱，它隐身其后挑起仇杀和战争，它让你兴奋或者激起你的愤怒，它创造一切并控制一切，它就是这个世界里的神。</p>
<p>**虽不可见，却始终看着你。没过几分钟，正在愤怒控诉的“女王”被抓进了监狱。按照系统的指令，她将被关押8个小时。这个“监狱”不在这个世界的地图上的任何一点，它只存在于系统中，就像索尔仁尼琴描写的古拉格群岛，你从不会看见它，你只是被运送到那里。</p>
<p>随后发生的一切，也正是只在那些最糟糕的世界中的监狱才会发生的。“女王”太显眼了，她的麒麟神兽暴露了她的身份。监狱里的人们看见了一个国王，就如同当初吕洋还是个小角色时看见国王一样难抑杀意。疯狂的人们围拢来砍杀，“女王”一次被杀死，又在原地复活，再被杀死……</p>
<p>屏幕上夸张的粗体字又一次次闪耀：“天哪，楚国的国王女王居然被无名小辈×××杀死了”。</p>
<p>吕洋突然觉得以前的自己真的是很愚蠢，她对“女王”，或者说另一个自己的生死毫不关心，她退出游戏，关了电脑，上床睡觉了。</p>
<p><strong>永远不再回来</strong></p>
<p><strong> 旧王逊位，新王登基——为什么会有仇恨——又是一个财富神话——永远不再回来</strong></p>
<p>第二天，吕洋上线，宣布“国王”逊位。她发现这里比现实世界更为真实，真实得那么残酷；她曾经试图挑战这个世界里弱肉强食的规则，对抗系统，却徒劳无功。现在，她彻底厌倦了。</p>
<p>一个渴望战斗的新锐武士接任了“国王”，并立即申请了新的国战。“女王”和她的家族没有参与这次战斗。楚国惨败而归。一个小角色，以往跟着“女王”
闯荡，如今被困在了敌国，完全是刀下鱼肉，他一次次在安全区复活，但只要尝试跑出安全区，就毫不例外地被杀死。这是个新玩家，他的账号里还没什么钱，连一
个安全离开的“竹蜻蜓”都买不起。</p>
<p>吕洋为这些小玩家们难过，他们原本是想获得些许游戏的快乐，却成了“人民币玩家”们发泄怒火或获得征服感的牺牲品。她上线，看着熙来攘往的虚拟角色
们，一个威严的法师背后可能是个谨小慎微的生意人，一个勇猛的武士背后可能是个和她一样的医生，也可能是任何一个在生活中原本善良谦逊的普通人。</p>
<p>“一个医生为什么一定要去杀死一个教师，而一个现实中的警察需要在游戏里伤害另外的人么？”吕洋禁不住思考一些奇怪的问题，“素不相识的普通人之间为什么会有仇恨？”</p>
<p>她开始注意到书架上那些以前还时常翻一翻的专业参考书。它们就整整齐齐地摆在那里，就像消失了很久，突然又出现了。天凉很久了，吕洋才头一回注意到窗子外面的行道树叶子开始黄了，淡黄的一片令人心里充满宁静。</p>
<p>她最后一次上线是在不久前。那时征途网络公司已经宣布部分地改变了“绑定”规则，公司成功地在纽约上市，第三财季实现营业收入4.052亿元，净利润2.902亿元，相比去年同期，增长率达到了惊人的164％和152％。公司账面现金达68亿元人民币。</p>
<p>又是一个财富神话。根据媒体的测算，史玉柱将以500亿身家荣登中国富豪排行榜的前列。</p>
<p>系统开始慷慨地在游戏里“发行股票”，宣称随着股价上涨，玩家可以按同样的价钱兑换成“银两”。但吕洋对这些充满诱惑力的新玩意再也不关心了，她只是被一个朋友强拉着上线的，朋友要在游戏里“举行婚礼”。</p>
<p>吕洋默不作声，藏身在前来庆贺的角色中，但是有一个人认出了她。这是一个武士，他手中的刀闪耀着光芒，显示着他强大的威力。“我认识你，”他说，“以前刚玩的时候你带过我们，现在我们也很厉害啦。”他们正在筹备新的国战，他告诉她。</p>
<p>他是谁？是请她护过镖，还是曾经被她从敌国营救？吕洋完全不记得了，她只觉得这些越来越多的威风凛凛的后起之秀，跟以前的她是那么相像，一样地野心勃勃，一样以为发现了一个美丽新世界。</p>
<p>她一句话也没回答，然后她下线了，并决定永远不再回来。</p>
<p>(应被采访者要求，文中姓名及游戏中名字为化名)</p>
<p><strong>“泡菜”开的花中国结的果</strong></p>
<p><strong>韩式网游的“精髓”</strong></p>
<p>“中国玩家在欧服美服都被视为不受欢迎的异类。”一位曾在《魔兽世界》任职的游戏经理说。中国人总有办法以欧美玩家望尘莫及的速度升到极高的级别，
在进行团队项目时也不喜欢遵守默认的利益分配规则。对于显得有些“迂腐”的欧美玩家来说，中国人就像是恐怖的异教徒。“欧美游戏并不鼓励力量上的无限优
势，比较讲究平衡和互相牵制，”曾经的魔兽经理说，“可能是因为传统文化和现实环境的影响，说实话中国玩家还是更适合丛林式游戏。”</p>
<p>一名网络游戏经理回忆，他曾经接待过一位跑到游戏公司的有钱但缺乏耐心的玩家。这位玩家专程前来咨询：是否可以直接付钱，购买顶级装备。公司上下当时哭笑不得。如今这名经理感叹，他们没有看到在这样的玩家身上，蕴含着巨大的商机，而《征途》看出来了，获得了成功。</p>
<p>恃强凌弱和功利主义的“社会准则”来自于韩式网游。在被称为“泡菜”的典型韩国网络游戏中，玩家最常做的功课是练级，而练级的目的则是获得强大的威
力和权力。没人能够否认这些游戏中的虚拟社会由对抗、暴力和欲望主宰，玩家们因此急功近利、恩怨分明、派系林立、残酷冷漠。这既是游戏的乐趣所在，亦是对
人性弱点的敏锐捕捉。</p>
<p>从《传奇》开始，韩式公会模式深入人心。这种模式极具东方式的家族色彩，对内严格管理，对外一致作战。行会会长可以自己制定行会会规，可以发出通缉令，与其他行会结盟或宣战。这种设置便于玩家们结成团体满足自己的战争欲望，同时也确立了集权式的“社会结构”。</p>
<p>这一社会结构不只存在于虚拟之中。每一个玩家背后都是一个活生生的人。相当多的行会成员来自于一个城市甚至同一间网吧。行会内部的利益关系日益复
杂，为了招募新手，行会可能会送装备、送钱。行会设置很多职位，成员之间等级森严，如同帮会。战争开始时各成员奋力杀戮，既获得暴力快感，又可以得到战利
品，而战利品又意味着金钱。战利品的分配亦遵从等级制度。</p>
<p>当韩式网游的“精髓”发挥到了极至，权力、荣誉和快感都来源于暴力，而暴力的最佳来源就是金钱。游戏设置亦乐于创造仇恨与贪欲，把玩家分为大大小小
的家族、帮派和国家，设立各种个人或组织争抢的目标，甚至直接挑起争斗。事实上，这并非《征途》一款游戏之功或之罪，这种价值指向正是韩式网络游戏的传统
精髓所在。</p>
<p>据说陈天桥在了解了《征途》的模式之后，连夜召开高管会议。会议的结果是《传奇》全面推行《征途》式的“免费”模式。《征途》取得了一个又一个令业
界瞠目结舌的成果，原先对史玉柱进军网游持嘲笑态度的游戏运营商们，开始纷纷潜心学习他的游戏设置。而征途网络公司近日已经将新开发的《巨人》投入公测，
根据一句前后矛盾的宣传语，它号称“最便宜的免费网游”。“《征途》式”网游，“最中国”的网游，将越来越多地出现在玩家面前。</p>
<p>这款最中国的游戏拥有最中国的玩家。除了《魔兽世界》等少数例子之外，不讲究权力与等级制度的欧美网游在中国玩家中并不风行。事实上，虚拟世界并不
可以与现实世界简单对应，电子游戏中的“合法伤害权”亦是必然乐趣之一。问题在于玩家们在追求这种虚拟乐趣时是否会违背自己在现实生活中的伦理准则。</p></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820071125103957333</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820071125103957333</guid>
    <pubDate>Tue, 25 Dec 2007 22:39:57 +0800</pubDate>
    <dcterms:modified>2007-12-25T22:50:07+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[在网页中实现文件上传进度条]]></title>	
    <link>http://eishn.blog.163.com/blog/static/6523182007112322444302</link>
    <description><![CDATA[<div>好的, 这是一篇让您 "虎须一震" 的文章。相信您已经为显示文件上传进度而头痛很久了。不过先别高兴得太早, 您手上的 Web 框架通常不支持进度条技术。哈哈哈哈。<br><br><span style="font-weight: bold;">得到上传文件的大小</span><br>很好。要显示进度条的关键是得到上传文件的大小。这个问题曾经也让在下晕乎了一下下, 因为我搜了一下 Google, 大家都说要 ActiveX 或者类似 Applet、Flash 这样的插件, 因为据说浏览器没有读取本地文件大小的权限。好了, 别理他们, 我这就告诉你无插件获取上传文件大小的方法。你看文件上传的报文:<br><br><div style="color: rgb(136, 136, 136);">POST / HTTP/1.1<br>Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, application/vnd.ms-powerpoint, */*<br>…<br>Content-Type: multipart/form-data; boundary=---------------------------7d439d362703b2<br>…<br>Cache-Control: no-cache<br><br>-----------------------------7d439d362703b2<br>Content-Disposition: form-data; name="test_file"; filename="xxx"<br>Content-Type: text/plain<br><br>1234abcd!@#$()-=:”<br>-----------------------------7d439d362703b2--</div><br>从 ”-----------------------------7d439d362703b2“ 开始就是 HTTP Body 了, 这部分的长度我们是可以得到的, 不错, 就是 'Content-Length'。很不幸文件的长度就是 Content-Length 减去两个分割线 '-----------------------------7d439d362703b2' 再减去子报文的头部 'Content-Disposition: form-data; name="test_file"; filename="xxx"\nContent-Type: text/plain' 剩下的长度。<br><br>很容易做到不是吗?<br><br><span style="font-weight: bold;">得到已上传数据大小, 并从另一条 HTTP 连接返回进度</span><br>实在没办法的话, 将上传数据写入临时文件, 并且立即 flush。这样你就可以通过 AJAX 定时去获取临时文件的大小, 计算出进度并返回。很好, 恶心得没话说。<br><br>略好的方法是使用应用服务器建立两个可以互相通信的线程, 建立两条长连接, 一条负责上传, 一条负责返回上传进度。上传线程可以累加已上传内容的大小, 供另一个反馈线程使用。当然协作线程会好很多, 否则你的应用可能只能支持不到 10 个用户同时上传文件。<br><br><span style="font-weight: bold;">恭喜您</span><br>显然您的 Web 框架不支持进度条显示, 马上升级你的技术吧。<br></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/6523182007112322444302</comments>
    <slash:comments>4</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/6523182007112322444302</guid>
    <pubDate>Sun, 23 Dec 2007 14:24:44 +0800</pubDate>
    <dcterms:modified>2007-12-24T13:28:59+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Eurasia3, 我把恶魔带临人间了吗?]]></title>	
    <link>http://eishn.blog.163.com/blog/static/6523182007102133552397</link>
    <description><![CDATA[<div>前日打包了 Eurasia 3 的预览版, 在我的机器上得到了每秒 4790 个请求 (rps) 的速度 (未优化), 而经过这两天的改进, Eurasia3 已经达到 5500+ rps 的速度 (作弊模式下 wfile 直写可达 10000 rps)。<br><br>根据 <a href="http://blog.opensource.org.cn/hdcola/2007/10/django-1.html" target="_blank">HD 的文章 "Django 的几种运行方法性能对比"</a> , 同样的 "Hello world!" 程序在同等配置的机器上, Django<span style="font-weight: bold;"> </span>每秒最多能处理 806 个请求。我同时测试了 Cherrypy3, 同样的程序也是 800 - 900 rps 的速度 (Cherrypy3 使用手工极限加速, 使用同等加速手段 Eurasia3 常规模式可达 7500+ rps)。<br><br>基本上, 对于最简单的 echo 应用, Eurasia3 在性能上已经是 Django 等老框架的 6 倍以上。这可能是 Django 等原始框架唯一的一个能和 Eurasia3 进行数值对比, 差距不算太大的地方。<br><br><span style="font-weight: bold;">Eurasia 项目页面</span><br style="font-weight: bold;"><a href="http://code.google.com/p/eurasia" target="_blank">http://code.google.com/p/eurasia</a><br><br><span style="font-weight: bold;">Eurasia 邮件列表</span><br><a href="http://groups.google.com/group/eurasia-users" target="_blank">http://groups.google.com/group/eurasia-users</a><br><br><span style="font-weight: bold;">Eurasia 3.0.0 预览报告</span><br><a href="http://groups.google.com/group/eurasia-users/browse_thread/thread/310b19fb3497ee67" target="_blank">http://groups.google.com/group/eurasia-users/browse_thread/thread/310b19fb3497ee67</a><br><br>Eurasia 3.0.0 Preview, 可以从:
<br> &nbsp; &nbsp;<a target="_blank" rel="nofollow" href="http://eurasia.googlecode.com/files/Eurasia-3.0.0-preview.tar.gz">http://eurasia.googlecode.com/files/Eurasia-3.0.0-preview.tar.gz</a> 下
<br> 载。
<br> <p>本次发布仍然使用 Python 标准库 asyncore.py 的算法, 优化阶段还未开始, 性能尚待提高。
<br> 这里提供部分简单功能的预览, 及简单的基准测试 (Apache ab)。欢迎讨论。
<br> </p><p>代码一, "hello world!"
<br> -------------------------------------------------------
<br> 代码:
<br> </p><p>#!/usr/bin/env python2.5
<br> #import psyco; psyco.full()
<br> </p><p>from web import Response, config, poll
<br> </p><p>def controller(req):
<br> &nbsp; &nbsp; &nbsp; &nbsp; resp = Response(req)
<br> &nbsp; &nbsp; &nbsp; &nbsp; resp['Content-Type'] = 'text/plain'
<br> &nbsp; &nbsp; &nbsp; &nbsp; print &gt;&gt; resp, 'hello world!'
<br> &nbsp; &nbsp; &nbsp; &nbsp; resp.close()
<br> </p><p>config(controller=controller, port=8080)
<br> while True:
<br> &nbsp; &nbsp; &nbsp; &nbsp; poll()
<br> </p><p>-------------------------------------------------------
<br> 基准测试 1:
<br> </p><p>$ ab -c 1021 -n 10000 '<a target="_blank" rel="nofollow" href="http://localhost:8080/%27">http://localhost:8080/'</a>
<br> </p>Server Software:
<br><p> Server Hostname: &nbsp; &nbsp; &nbsp; &nbsp;localhost
<br> Server Port: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8080
<br> </p><p>Document Path: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/
<br> Document Length: &nbsp; &nbsp; &nbsp; &nbsp;13 bytes
<br> </p><p>Concurrency Level: &nbsp; &nbsp; &nbsp;1021
<br> Time taken for tests: &nbsp; 2.84486 seconds
<br> Complete requests: &nbsp; &nbsp; &nbsp;10000
<br> Failed requests: &nbsp; &nbsp; &nbsp; &nbsp;0
<br> Write errors: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0
<br> Total transferred: &nbsp; &nbsp; &nbsp;1770885 bytes
<br> HTML transferred: &nbsp; &nbsp; &nbsp; 130065 bytes
<br> Requests per second: &nbsp; &nbsp;4797.35 [#/sec] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 212.826 [ms] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 0.208 [ms] (mean, across all concurrent
<br> requests)
<br> Transfer rate: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;829.46 [Kbytes/sec] received
<br> </p><p>Connection Times (ms)
<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min &nbsp;mean[+/-sd] median &nbsp; max
<br> Connect: &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp;1 &nbsp; 3.5 &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; &nbsp;24
<br> Processing: &nbsp; &nbsp; 9 &nbsp; 26 &nbsp; 3.4 &nbsp; &nbsp; 26 &nbsp; &nbsp; 230
<br> Waiting: &nbsp; &nbsp; &nbsp; &nbsp;7 &nbsp; 25 &nbsp; 3.4 &nbsp; &nbsp; 25 &nbsp; &nbsp; 228
<br> Total: &nbsp; &nbsp; &nbsp; &nbsp; 25 &nbsp; 27 &nbsp; 4.7 &nbsp; &nbsp; 27 &nbsp; &nbsp; 231
<br> </p><p>Percentage of the requests served within a certain time (ms)
<br> &nbsp; 50% &nbsp; &nbsp; 27
<br> &nbsp; 66% &nbsp; &nbsp; 27
<br> &nbsp; 75% &nbsp; &nbsp; 27
<br> &nbsp; 80% &nbsp; &nbsp; 27
<br> &nbsp; 90% &nbsp; &nbsp; 28
<br> &nbsp; 95% &nbsp; &nbsp; 28
<br> &nbsp; 98% &nbsp; &nbsp; 45
<br> &nbsp; 99% &nbsp; &nbsp; 50
<br> &nbsp;100% &nbsp; &nbsp;231 (longest request)
<br> </p><p>-------------------------------------------------------
<br> 基准测试 2, 使用 psyco.full() 优化:
<br> </p><p>$ ab -c 1021 -n 10000 '<a target="_blank" rel="nofollow" href="http://localhost:8080/%27">http://localhost:8080/'</a>
<br> </p>Server Software:
<br><p> Server Hostname: &nbsp; &nbsp; &nbsp; &nbsp;localhost
<br> Server Port: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8080
<br> </p><p>Document Path: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/
<br> Document Length: &nbsp; &nbsp; &nbsp; &nbsp;13 bytes
<br> </p><p>Concurrency Level: &nbsp; &nbsp; &nbsp;1021
<br> Time taken for tests: &nbsp; 1.519026 seconds
<br> Complete requests: &nbsp; &nbsp; &nbsp;10000
<br> Failed requests: &nbsp; &nbsp; &nbsp; &nbsp;0
<br> Write errors: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0
<br> Total transferred: &nbsp; &nbsp; &nbsp;1770708 bytes
<br> HTML transferred: &nbsp; &nbsp; &nbsp; 130052 bytes
<br> Requests per second: &nbsp; &nbsp;6583.17 [#/sec] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 155.093 [ms] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 0.152 [ms] (mean, across all concurrent
<br> requests)
<br> Transfer rate: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1138.23 [Kbytes/sec] received
<br> </p><p>Connection Times (ms)
<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min &nbsp;mean[+/-sd] median &nbsp; max
<br> Connect: &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp;1 &nbsp; 4.0 &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; &nbsp;25
<br> Processing: &nbsp; &nbsp;10 &nbsp; 18 &nbsp; 3.6 &nbsp; &nbsp; 19 &nbsp; &nbsp; 239
<br> Waiting: &nbsp; &nbsp; &nbsp; &nbsp;9 &nbsp; 17 &nbsp; 3.5 &nbsp; &nbsp; 17 &nbsp; &nbsp; 237
<br> Total: &nbsp; &nbsp; &nbsp; &nbsp; 18 &nbsp; 20 &nbsp; 5.6 &nbsp; &nbsp; 20 &nbsp; &nbsp; 241
<br> </p><p>Percentage of the requests served within a certain time (ms)
<br> &nbsp; 50% &nbsp; &nbsp; 20
<br> &nbsp; 66% &nbsp; &nbsp; 20
<br> &nbsp; 75% &nbsp; &nbsp; 20
<br> &nbsp; 80% &nbsp; &nbsp; 20
<br> &nbsp; 90% &nbsp; &nbsp; 21
<br> &nbsp; 95% &nbsp; &nbsp; 21
<br> &nbsp; 98% &nbsp; &nbsp; 46
<br> &nbsp; 99% &nbsp; &nbsp; 47
<br> &nbsp;100% &nbsp; &nbsp;241 (longest request)
<br> </p><p>代码 2: Eurasia3 自带 Demo
<br> -------------------------------------------------------
<br> 启动 demo:
<br> &nbsp; &nbsp; $ ./demo start
<br> </p><p>功能:
<br> &nbsp; &nbsp;使用了逻辑调度器, 每 0.1 秒对协程进行一次调度。
<br> &nbsp; &nbsp;使用了 session, 在测试中为每个请求建立一份 session (共计 10000 份)。
<br> </p><p>-------------------------------------------------------
<br> 基准测试:
<br> </p><p>$ ab -c 1021 -n 10000 '<a target="_blank" rel="nofollow" href="http://localhost:8080/%27">http://localhost:8080/'</a>
<br></p>Server Software:
<br><p> Server Hostname: &nbsp; &nbsp; &nbsp; &nbsp;localhost
<br> Server Port: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8080
<br> </p><p>Document Path: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/
<br> Document Length: &nbsp; &nbsp; &nbsp; &nbsp;8 bytes
<br> </p><p>Concurrency Level: &nbsp; &nbsp; &nbsp;1021
<br> Time taken for tests: &nbsp; 8.923888 seconds
<br> Complete requests: &nbsp; &nbsp; &nbsp;10000
<br> Failed requests: &nbsp; &nbsp; &nbsp; &nbsp;0
<br> Write errors: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0
<br> Total transferred: &nbsp; &nbsp; &nbsp;2521500 bytes
<br> HTML transferred: &nbsp; &nbsp; &nbsp; 80688 bytes
<br> Requests per second: &nbsp; &nbsp;1120.59 [#/sec] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 911.129 [ms] (mean)
<br> Time per request: &nbsp; &nbsp; &nbsp; 0.892 [ms] (mean, across all concurrent
<br> requests)
<br> Transfer rate: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;275.89 [Kbytes/sec] received
<br> </p><p>Connection Times (ms)
<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min &nbsp;mean[+/-sd] median &nbsp; max
<br> Connect: &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp;252 823.2 &nbsp; &nbsp; &nbsp;5 &nbsp; &nbsp;3011
<br> Processing: &nbsp; 130 &nbsp;186 &nbsp;89.0 &nbsp; &nbsp;170 &nbsp; &nbsp; 921
<br> Waiting: &nbsp; &nbsp; &nbsp;129 &nbsp;182 &nbsp;89.1 &nbsp; &nbsp;165 &nbsp; &nbsp; 915
<br> Total: &nbsp; &nbsp; &nbsp; &nbsp;143 &nbsp;438 877.6 &nbsp; &nbsp;176 &nbsp; &nbsp;3929
<br> </p>Percentage of the requests served within a certain time (ms)
<br> &nbsp; 50% &nbsp; &nbsp;176
<br> &nbsp; 66% &nbsp; &nbsp;180
<br> &nbsp; 75% &nbsp; &nbsp;185
<br> &nbsp; 80% &nbsp; &nbsp;191
<br> &nbsp; 90% &nbsp; &nbsp;221
<br> &nbsp; 95% &nbsp; 3223
<br> &nbsp; 98% &nbsp; 3419
<br> &nbsp; 99% &nbsp; 3916
<br> &nbsp;100% &nbsp; 3929 (longest request)<br><br><br>附录 (机器配置):<br><br><p>$ cat /proc/version
<br> Linux version 2.6.20-16-generic (root@terranova) (gcc version 4.1.2
<br> (Ubuntu 4.1.2-0ubuntu4)) #2 SMP Sun Sep 23 19:50:39 UTC 2007
<br> </p><p>$ cat /proc/cpuinfo
<br> processor &nbsp; &nbsp; &nbsp; : 0
<br> vendor_id &nbsp; &nbsp; &nbsp; : AuthenticAMD
<br> cpu family &nbsp; &nbsp; &nbsp;: 15
<br> model &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 75
<br> model name &nbsp; &nbsp; &nbsp;: AMD Athlon(tm) 64 X2 Dual Core Processor 3600+
<br> stepping &nbsp; &nbsp; &nbsp; &nbsp;: 2
<br> cpu MHz &nbsp; &nbsp; &nbsp; &nbsp; : 2009.283
<br> cache size &nbsp; &nbsp; &nbsp;: 256 KB
<br> physical id &nbsp; &nbsp; : 0
<br> siblings &nbsp; &nbsp; &nbsp; &nbsp;: 2
<br> core id &nbsp; &nbsp; &nbsp; &nbsp; : 0
<br> cpu cores &nbsp; &nbsp; &nbsp; : 2
<br> fdiv_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> hlt_bug &nbsp; &nbsp; &nbsp; &nbsp; : no
<br> f00f_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> coma_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> fpu &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : yes
<br> fpu_exception &nbsp; : yes
<br> cpuid level &nbsp; &nbsp; : 1
<br> wp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: yes
<br> flags &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
<br> mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
<br> fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy
<br> ts fid vid ttp tm stc
<br> bogomips &nbsp; &nbsp; &nbsp; &nbsp;: 4021.64
<br> clflush size &nbsp; &nbsp;: 64
<br> </p><p>processor &nbsp; &nbsp; &nbsp; : 1
<br> vendor_id &nbsp; &nbsp; &nbsp; : AuthenticAMD
<br> cpu family &nbsp; &nbsp; &nbsp;: 15
<br> model &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 75
<br> model name &nbsp; &nbsp; &nbsp;: AMD Athlon(tm) 64 X2 Dual Core Processor 3600+
<br> stepping &nbsp; &nbsp; &nbsp; &nbsp;: 2
<br> cpu MHz &nbsp; &nbsp; &nbsp; &nbsp; : 2009.283
<br> cache size &nbsp; &nbsp; &nbsp;: 256 KB
<br> physical id &nbsp; &nbsp; : 0
<br> siblings &nbsp; &nbsp; &nbsp; &nbsp;: 2
<br> core id &nbsp; &nbsp; &nbsp; &nbsp; : 1
<br> cpu cores &nbsp; &nbsp; &nbsp; : 2
<br> fdiv_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> hlt_bug &nbsp; &nbsp; &nbsp; &nbsp; : no
<br> f00f_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> coma_bug &nbsp; &nbsp; &nbsp; &nbsp;: no
<br> fpu &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : yes
<br> fpu_exception &nbsp; : yes
<br> cpuid level &nbsp; &nbsp; : 1
<br> wp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: yes
<br> flags &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
<br> mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
<br> fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy
<br> ts fid vid ttp tm stc
<br> bogomips &nbsp; &nbsp; &nbsp; &nbsp;: 4018.57
<br> clflush size &nbsp; &nbsp;: 64
<br> </p>$ cat /proc/meminfo
<br> MemTotal: &nbsp; &nbsp; &nbsp;2075004 kB
<br> MemFree: &nbsp; &nbsp; &nbsp; 1841156 kB
<br> Buffers: &nbsp; &nbsp; &nbsp; &nbsp; 10448 kB
<br> Cached: &nbsp; &nbsp; &nbsp; &nbsp; 173656 kB
<br> SwapCached: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 kB
<br> Active: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;95236 kB
<br> Inactive: &nbsp; &nbsp; &nbsp; 107744 kB
<br> HighTotal: &nbsp; &nbsp; 1178496 kB
<br> HighFree: &nbsp; &nbsp; &nbsp; 973204 kB
<br> LowTotal: &nbsp; &nbsp; &nbsp; 896508 kB
<br> LowFree: &nbsp; &nbsp; &nbsp; &nbsp;867952 kB
<br> SwapTotal: &nbsp; &nbsp; 6080560 kB
<br> SwapFree: &nbsp; &nbsp; &nbsp;6080560 kB
<br> Dirty: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4 kB
<br> Writeback: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 kB
<br> AnonPages: &nbsp; &nbsp; &nbsp; 18968 kB
<br> Mapped: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 8952 kB
<br> Slab: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;14340 kB
<br> SReclaimable: &nbsp; &nbsp; 6168 kB
<br> SUnreclaim: &nbsp; &nbsp; &nbsp; 8172 kB
<br> PageTables: &nbsp; &nbsp; &nbsp; &nbsp;844 kB
<br> NFS_Unstable: &nbsp; &nbsp; &nbsp; &nbsp;0 kB
<br> Bounce: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 kB
<br> CommitLimit: &nbsp; 7118060 kB
<br> Committed_AS: &nbsp; 513260 kB
<br> VmallocTotal: &nbsp; 114680 kB
<br> VmallocUsed: &nbsp; &nbsp; 11708 kB
<br> VmallocChunk: &nbsp; &nbsp;67544 kB<br>
</div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/6523182007102133552397</comments>
    <slash:comments>13</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/6523182007102133552397</guid>
    <pubDate>Wed, 21 Nov 2007 15:35:52 +0800</pubDate>
    <dcterms:modified>2007-11-21T16:24:32+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[攀岩的乐趣]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200710186445910</link>
    <description><![CDATA[<div>攀岩很刺激。我在阳朔看到了, 人可以爬到将自己摔死的高度。当然我也试过, 这里顺便说一下, 我手无缚鸡之力。<br><br>因为家族遗传, 身材比较魁梧, 因此家里严禁锻炼臂力, 防止变成倒三角型的肌肉男。我当然痛恨这种有勇无谋的形象, 因此我取而代之投戎从笔。从此, 臂力就比较贫弱了, 这导致后来只能从事一些简单劳动, 画几幅画, 写一点诗, 编两首曲, 或者比如程序来混口饭吃。当然了, 玩攀岩的都知道, 其实并不需要什么臂力。好吧, 我恐高。<br><br>我不知道有什么理由可以不恐高。爬到高处然后把自己摔死, 匹夫也。于是乎后来我去了华山, 辛苦大家来赶黄金周, 这让我明白了两个道理。一, 其实并没有人真的恐高; 二, 在黄金周睡觉好过出来旅游。<br><br>我回忆了一下, 老家吴兴郡乃是天下所谓极限运动之都, 脸皮也就厚了起来, 纵然手无缚鸡之力, 亦或恐高, 攀个岩恐怕也不是什么难事。另一方面, 对大众装逼运动我通常都没有什么好感, 比如轮滑。作为表示, 我踩着滑板背着琴从中穿过, 一个豚跃飞出校门, 并在空中弹出一个漂亮的和铉, 绝尘而去。<br><br>我行驶在钱塘县无人的郊外上, 自鸣得意地想, 作为一个成熟的上国男人, 是内敛的。大隐于市, 掩人耳目, 岂能炫技于市井。正得意间, 后面警车作响, 交警喝道, 此路不能行滑板, 且卸板步行! 心中一惊, 遂使绝技, 加速至时速数百夺高速而走。警望尘兴叹。<br><br>对应另一个装逼运动攀岩, 我似乎更喜欢爬山, 你选择一个坡度, 擎着树干藤蔓就开始往上爬, 你能看到奇花异草和毒蛇猛兽, 渴饮露水饥食花果, 得自然趣味。我自鸣得意地想, 对于一个成熟的上国男人, 攀岩是不合适的。西方蛮夷更喜欢征服, 他登山是要征服一个山头, 攀岩亦如是。而真正的中国人, 寻求天人合一, 在山间以甘泉泡上一杯绿茶, 得道成仙, 知天运命。<br><br>相反, 另一项极限运动却是颇值得称道的。译名城市疾走, 或曰跑酷。它很可以装逼, 但是它和某些貌似很惊险刺激, 却又需要昂贵安全器械的极限运动不同, 没有任何禁锢和形式。喜欢装逼的人仍然可以抛开那根绳子赤手爬到雪线以上, 也可以简单到绕西湖跑上十圈, 也可以像火箭一样穿过闹市步行街而不碰到任何人。<br><br>很简单, 不是吗? 当然, 我这里并不是要推广爬山或是疾走什么的。本文的主旨是告诉大家攀岩的乐趣, 好了, 回到数年前的攀岩现场, 这时我已经绑好了绳子。<br><br>我很快地攀了上去, 到了上面便有些恐高, 于是就下来了。<br><br><embed allowScriptAccess="never" allowNetworking="internal"       type="application/x-shockwave-flash" src="http://www.youtube.com/v/rsDYf4-JKTA" style="margin: 0px auto 10px; display: block; text-align: center;" autostart="0" loop="0" height="355" width="425">&nbsp;<br><br><embed allowScriptAccess="never" allowNetworking="internal"       type="application/x-shockwave-flash" src="http://www.youtube.com/v/3KSr1pozm6Y" style="margin: 0px auto 10px; display: block; text-align: center;" autostart="0" loop="0" height="355" width="425">&nbsp;</div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200710186445910</comments>
    <slash:comments>6</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200710186445910</guid>
    <pubDate>Sun, 18 Nov 2007 18:04:45 +0800</pubDate>
    <dcterms:modified>2007-11-18T20:38:47+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[欲购从速]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200710143739204</link>
    <description><![CDATA[<div><center><embed allowScriptAccess="never" allowNetworking="internal"       src="http://player.youku.com/player.php/sid/XNzE2MDQw/v.swf" style="display: block; width: 450px; height: 327px;" autostart="0" loop="0"><br /><embed allowScriptAccess="never" allowNetworking="internal"       src="http://player.youku.com/player.php/sid/XODExMjQ3Ng==/v.swf" style="display: block; width: 450px; height: 327px;" autostart="0" loop="0"></center></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200710143739204</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200710143739204</guid>
    <pubDate>Wed, 14 Nov 2007 15:07:39 +0800</pubDate>
    <dcterms:modified>2007-11-14T15:17:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[在网页中实现单击图片立即上传文件]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820077133835626</link>
    <description><![CDATA[<div><p>点击图片弹出文件浏览框, 选择文件点击确定便立即上传文件 ── 这被认为是一种不可能实现的技术。因为本博是变态的, 所以这里当然要讲解一下了。不过江湖凶险, 本博还是建议大伙不要轻易尝试。</p><p style="text-align: center;"><a href="http://img.blog.163.com/photo/QlauM5nQBwYQYtpnu9URmw==/486388759756826806.jpg" target="_blank"><img src="http://img.blog.163.com/photo/UZN0-zYXCR8ovG2z5R7m4g==/482448110082881358.jpg"></a></p>
<br>
<p>好了, 下面我们就根据这张例图, 从左到右一步一步地讲解。</p>
<br>
<h3>第一步, 找一张很帅很帅的图片</h3>
<p>我们需要一张很帅的图片作为上传按钮, 这是所有步骤中最关键和最为困难的一步。花了九牛二虎之力, 在下终于找到了一张举世无双的帅气图片 (见上面的例图), 无疑我们已经成功了 99%。</p>
<br>
<h3>第二、第三、第四步</h3>
<p>使用浮动层把透明的文件上传控件 (的按钮部分) 覆盖到图片上。这样用户去点图片, 其实点到的是文件上传控件的 "浏览按钮"。这样, 用户的感觉好像是点击了这个图片才弹出文件选择框的。</p>
<br>
<h3>设定文件上传控件的 onchange 事件, 实现选定文件立即上传</h3>
<p>设置文件上传控件的 "onchange" 事件, 立即调用文件上传表单 (form) 的 "submit()" 方法。这样用户使用文件选择框选择好文件, 单击确定, 文件上传过程就立即开始了。</p>
<br>
<h3>使用透明文件上传按钮盖住图片的关键</h3>
<ul>
<li>我们只需要文件上传控件的按钮部分, 如果无法隐藏文件上传控件左半边的字符输入框部分, 就把他移出屏幕。</li>
<li>如果文件上传控件不够大, 不能完全覆盖图片, 就修改控件的字体大小, 增加 font-size 就可以搞大文件上传控件按钮的大小。</li>
<li>如果还是不够大, 就用两个文件上传控件来覆盖图片。</li>
</ul>
<br>
<p style="text-align: center;">当然上述技巧都相当地恶心。这也是博主忠告诸位不要轻易尝试的原因。</p>
<br>
<h3>代码</h3>
<pre>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;<br>&lt;title&gt;upload.html, 一个文件上传按钮, 用于 iframe 嵌入&lt;/title&gt;<br>&lt;script language="JavaScript"&gt;<br>window.do_upload = function(n) {<br> if(document.getElementById('upload').value == '')<br>  return;<br><br> document.getElementById('upload_display').style.display = 'none';<br> document.getElementById('uploading').style.display = '';<br><br> var l = filename.split(/[\/\\]/), filename = l[l.length - 1];<br><br> // TODO: 本窗口将被用于提交文件,<br> //  请在父窗口 ( window.parent) 再生成一个文件上传按钮<br><br> document.forms[n].submit();<br>};<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body style="padding: 0px; margin: 0px; vertical-align: middle; text-align: center;"&gt;<br>&lt;span id="upload_display"&gt;<br>&lt;img src="http://9.douban.com/mpic/s2356949.jpg"<br> style="position: absolute; left: 0px; top: 0px;"/&gt;<br>&lt;form action="upload.cgi" method="post" enctype="multipart/form-data"&gt;<br> &lt;input id="upload" name="upload" type="file" onchange="do_upload(0)"<br>  style="position: absolute; top: 0px; font-size: 44px; left: -640px; -moz-opacity:0; filter:alpha(opacity: 0); opacity: 0;" /&gt;<br>&lt;form action="upload.cgi" method="post" enctype="multipart/form-data"&gt;<br> &lt;input id="upload" name="upload" type="file" onchange="do_upload(1)"<br>  style="position: absolute; top: 60px; font-size: 44px; left: -640px; -moz-opacity:0; filter:alpha(opacity: 0); opacity: 0;" /&gt;<br>&lt;/form&gt;<br>&lt;/span&gt;<br><br>&lt;span id="uploading" style="display: none; font-size: 12px; color: #961;"&gt;uploading ...&lt;/span&gt;<br><br>&lt;/body&gt;<br>&lt;/html&gt;<br></pre>

<br>
<h3>最后一步, 使用 iframe 在需要上传的地方嵌入这个页面</h3>
<p>&lt;iframe src="upload.html" border="0" frameborder="no" style="width: 124px; height: 124px;"&gt;&lt;/iframe&gt;</p></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820077133835626</comments>
    <slash:comments>17</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820077133835626</guid>
    <pubDate>Wed, 1 Aug 2007 15:38:35 +0800</pubDate>
    <dcterms:modified>2007-08-01T15:59:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[清廉战士片头]]></title>	
    <link>http://eishn.blog.163.com/blog/static/6523182007627102714340</link>
    <description><![CDATA[<div><a href="http://www.cnlzyx.cn/" style="color: rgb(153, 51, 51);">清廉战士</a>无疑是今年夏天最接近于空调的网游神作, 在下抢先一步安装了这个今年最值得期待的网游。尽管无论在 Wine 还是在 XP 虚拟机上都跑不起来, 我还是在一堆 ".bak" 和 "Thumbs.db" 文件中找到了片头动画。"雷电满怀骄傲地邀请您体验这段冒险, 这年春天, 世界的命运在你的掌握之中 ..."。<a href="http://www.cnlzyx.cn/" style="color: rgb(153, 51, 51);">中国廉政文化游戏网</a>, 您太有才了! <br><br><br>
<div style="padding-left: 100px;"><embed allowScriptAccess="never" allowNetworking="internal"       src="http://www.youtube.com/v/WTr3Kkgzqpo" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></div></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/6523182007627102714340</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/6523182007627102714340</guid>
    <pubDate>Fri, 27 Jul 2007 22:27:14 +0800</pubDate>
    <dcterms:modified>2007-07-27T23:25:28+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[漂亮的回旋踢 (实时视频)]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200761354220263</link>
    <description><![CDATA[<div><img src="http://img.blog.163.com/photo/UVCW2HIA8xcsWSQfz6Pf4g==/348184546191252269.jpg">
<br><br>
(过两亿了, 有客留言有 PS 的可能, 故下面录像为证)
<br><br>
<embed allowScriptAccess="never" allowNetworking="internal"       src="http://www.youtube.com/v/x2TNmcfAQIc" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425">
<br><br>
(闯关过 20 亿实时视频, 试了两次)
<br><br>
<a href="http://www.ywlt.com/flash/0bells.swf"><b>这个游戏在这里</b></a></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200761354220263</comments>
    <slash:comments>15</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200761354220263</guid>
    <pubDate>Fri, 13 Jul 2007 17:42:20 +0800</pubDate>
    <dcterms:modified>2007-07-16T20:13:04+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[EveryDo (易度) 火了]]></title>	
    <link>http://eishn.blog.163.com/blog/static/652318200761213041311</link>
    <description><![CDATA[<div><a href="http://www.everydo.com/"><img src="http://everydo.com/logo.jpg"></a> 发布已经经过一周时间, 从<a href="http://zopen.cn/">上海润普</a>那里得知 <a href="http://www.everydo.com/">EveryDo</a> 最近无论销售还是用户的增长都非常顺利。从试验版 <a href="http://mytodo.cn/">MyTodo</a> 以来, 我是看着 <a href="http://www.everydo.com/">EveryDo</a> 成长起来的, 也为 <a href="http://www.everydo.com/">EveryDO</a> 感到高兴。在这里向 <a href="http://www.everydo.com/">EveryDo</a> 的开发及营销团队祝贺一下。
<br><br>
在国内 Plone 内容管理同行中, <a href="http://blog.czug.org/panjy">潘俊勇</a>他们一直是跑在前列的。包括这次的 <a href="http://www.everydo.com/">EveryDo</a> 可能是国内第一个大型的 <a href="http://plone.org">Plone3</a> 杀手级应用。比起 PHP、ASP 这种古董, <a href="http://plone.org">Plone3</a> 已经是领先好几代的东西了。无论在 AJAX、数据库、搜索引擎等技术层面, 还是在易用性、稳定性、速度方面, <a href="http://plone.org">Plone3</a> 都领先太多。<a href="http://www.everydo.com/">EveryDo</a> 就是这么一个彻头彻尾的 Plone3 应用。
<br><br>
受老潘邀请有幸成为第一批 "内测" 用户, 在第一时间感受到了 <a href="http://www.everydo.com">EveryDo</a> 在企业级协作上的威力。感觉和其他同类的协同工具完全是两种思想。我想大部分专业技术人员一定对繁琐的流程和协作方式而深恶痛绝, 我猜想老潘他们肯定也是如此, 因此简洁原则被他们彻底的贯彻了。据 <a href="http://www.everydo.com">EveryDo</a> 的设计团队自己说, 简洁正是是他们追求的目标。当然无论是技术体验还是使用体验, 不同的人总有不同的感觉, 这就要用户们自己去感觉了。
<br><br>
我这里也不累赘了, <a href="http://www.everydo.com">EveryDo</a> 设计团队把他们的设计思想都写在这里了: "<a href="http://everydo.com/buzz">我们的声音</a>", "<a href="http://everydo.com/weblog">易度博文</a>"。读来令人感慨, 我想这些文章中体现的思想所试用的范围已经不局限于 <a href="http://www.everydo.com">EveryDo</a> 和协作管理领域了。
<br><br>
对我来说, <a href="http://zopen.cn/">上海润普</a> 已经是一个通过开放源代码持续发展的典型成功案例了。<a href="http://zopen.cn/">上海润普</a> 一直是开放源代码和自由软件的贡献者, 老潘他们也一直在  <a href="http://www.czug.org">CZUG</a> 社区担当 Plone 技术的免费咨询者的角色。他们不仅赢得了技术社区的尊敬, 也赢得了市场的信赖。在许多程序员还在为如何支持开源事业迷茫、许多企业还在为开源模式犹豫的时候, 他们已经坚实地走出了一条道路。这难道不值得我们去学习吗?
<br><br>
最后祝愿 <a href="http://www.everydo.com">EveryDo</a> 发展得越来越好, 也祝 <a href="http://zopen.cn/">上海润普</a> 搞出更多好玩的产品, 早日成为中国的 Google :)
<br><br>
这里顺手给 <a href="http://www.everydo.com">EveryDo</a> 发一条广告, 大家赶紧去申请属于自己的虚拟协作站点吧: 
<br><br>
<img src="http://everydo.com/images/opensource_signup.gif"><br><br>
<p style="text-align: center;"><a href="http://signup.everydo.com/signup"><img alt="" src="http://everydo.com/buzz/images/join_image2.gif"></a> <span class="fontLight">OR</span>
<a href="http://everydo.com/case"><img alt="" src="http://everydo.com/buzz/images/everydo_who.gif"></a></p><br></div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/652318200761213041311</comments>
    <slash:comments>4</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/652318200761213041311</guid>
    <pubDate>Thu, 12 Jul 2007 13:30:41 +0800</pubDate>
    <dcterms:modified>2007-07-12T13:30:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Openlaszlo 是个好东西]]></title>	
    <link>http://eishn.blog.163.com/blog/static/65231820075236105741</link>
    <description><![CDATA[<div>嗯, 这里不讨论任何低级趣味的技术。Openlaszlo 也未必真的就是好东西 (Flex 不参加活动)。现在 Openlaszlo 最让人感兴趣的应该还是<a href="http://www.openlaszlo.org/lps4/demos/youtube/youtube.lzx?debug=false&amp;lzr=swf8" style="color: rgb(0, 128, 0);">[这个]</a>。我已经开始考虑是否要追随新技术了:<br><br><br><div style="margin-left: 80px;"><embed allowScriptAccess="never" allowNetworking="internal"        src="http://www.youtube.com/v/r2BOApUvFpw" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed><br><br><embed allowScriptAccess="never" allowNetworking="internal"        src="http://www.youtube.com/v/O9mEKMz2Pvo" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed><br><br><embed allowScriptAccess="never" allowNetworking="internal"          src="http://www.youtube.com/v/Ddn4MGaS3N4" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"><br><br><embed allowScriptAccess="never" allowNetworking="internal"          src="http://www.youtube.com/v/JsD6uEZsIsU" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"><br><br><embed allowScriptAccess="never" allowNetworking="internal"     src="http://www.youtube.com/v/1xPGqWt3L7A" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></div><br><br>
美工做过了, 程序也写过了, 象棋、摄影各种各样莫名其妙的奖也拿过了, 接下来的目标是: 职业音乐人 …… 如果不太难的话。</div>]]></description>
	    <author><![CDATA[沈崴]]></author>
	    <comments>http://eishn.blog.163.com/blog/static/65231820075236105741</comments>
    <slash:comments>8</slash:comments>
    <guid isPermaLink="true">http://eishn.blog.163.com/blog/static/65231820075236105741</guid>
    <pubDate>Sat, 23 Jun 2007 18:10:05 +0800</pubDate>
    <dcterms:modified>2007-06-23T21:59:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[我的密友]]></title>	
    <link></link>
    <description><![CDATA[<div>
			<a href="http://fangchengfc.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/ds6a5hmB_VN7ljJ883ceJw==/169729410958913493.jpg" border="0" />房房</a>
			<a href="http://suliaoade.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/pUW9ObqXCobB5uHY-612Tw==/171699735793924753.jpg" border="0" />奥妙</a>
			<a href="http://laiyonghao.popo.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/QnDkfV52E0VeZNKPfop05Q==/2830230890825727136.jpg" border="0" />赖勇浩</a>
			<a href="http://coollen.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/64UB0z3v_x9jGdzjk7iZHA==/621778223553898459.jpg" border="0" />Coollen.MMX</a>
			<a href="http://kingway2096.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/hlOwnAlgEZH9YMMhioAJRw==/2830512365802643200.jpg" border="0" />麒麟王</a>
			<a href="http://charlie-wj.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/Kzm57d5XWkVai36KybNLbQ==/584342051651380959.jpg" border="0" />风魔</a>
			<a href="http://blog.163.com/cqit_jsj/" target="_blank"><img src="http://ava.blog.163.com/photo/SPzoVSG6KHuuFb2tSs0EZA==/4021432992265145113.jpg" border="0" />魏中华</a>
			<a href="http://skywind3000.popo.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/b84X6Wm1X5TioBRgqN6Gyg==/919297273937184070.jpg" border="0" />小林子</a>
			<a href="http://p628p.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/Jx_iUFM35bSzDtQDdAFSCQ==/429249339483983567.jpg" border="0" />過眼雲煙</a>
			<a href="http://anya528.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/YCmlS1Q8S7gYN8nmhlS_rg==/178736610211505041.jpg" border="0" />印子</a>
			<a href="http://love8810.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/wWODSOPertQ9jyfMVQKUTQ==/451204387668387968.jpg" border="0" />心海</a>
			<a href="http://ngz1985.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/ze8lb-uQAV9W8cuhmEhARw==/4842495499330126102.jpg" border="0" />熊喵</a>
			<a href="http://kasicass.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/2C1OBTQkWhw6du6vK3zPlg==/4573405421594738942.jpg" border="0" />kasicass</a>
			<a href="http://amyluo.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/hLM3yVtQWaFYwGxYR9Gc7g==/227150306205500808.jpg" border="0" />财女RunIntoFireFlie</a>
			<a href="http://blog.163.com/lisa_hz/" target="_blank"><img src="http://ava.blog.163.com/photo/rpAXZ0JO7CN640YHgDt9Og==/3386143969829526391.jpg" border="0" />七楼</a>
			<a href="http://mis.bb.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/0UVzOXTO2mIAa8yftv5u_w==/5388838429125540845.jpg" border="0" />满眼繁花</a>
			<a href="http://blog.163.com/jericho_wjh/" target="_blank"><img src="http://ava.blog.163.com/photo/HQ-bz-Cd3dbtTNGDo2t8vQ==/2053078480127528121.jpg" border="0" />Jericho</a>
			<a href="http://zsuxqm.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/cqUkv2n1PfRS9b1IwGfPpg==/1440307455828515533.jpg" border="0" />隐湖之鲤</a>
			<a href="http://joecen.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/FlgTgxEzND58JIrKKPOz_Q==/3993848444547504184.jpg" border="0" />海洋蓝宝石</a>
			<a href="http://1.vb.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/nEkjDQzCsWYWCzyP-1nU4A==/3681974170352354326.jpg" border="0" />李李</a>
			<a href="http://yuyuxp.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/UkEcHCAKHvMWZs0QMpMQ3A==/2307250384097355080.jpg" border="0" />紫色的味道</a>
			<a href="http://demonbeck.popo.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/oWIYwrlDRixm80DattxVSw==/4790141153662051729.jpg" border="0" />阿蒙蒙</a>
			<a href="http://fanxiaojie.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/CiES4-NOwsHAlMT1xB6Lcw==/424182789905595836.jpg" border="0" />悟怡</a>
</div>]]></description>
    <guid isPermaLink="false">http://eishn.blog.163.com/friends</guid>
    <pubDate>Tue, 1 Jan 2008 00:00:00 +0800</pubDate>
    <dcterms:modified>2008-01-01T00:00:00+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>