<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1049325099526816931</id><updated>2012-02-16T22:53:42.882+08:00</updated><category term='C#'/><category term='Python'/><category term='杂谈'/><category term='JSP'/><category term='ＩＴ'/><category term='Javascript'/><category term='SQL Server'/><category term='Pages4JSP'/><category term='Perl'/><category term='Custom Search'/><category term='Java'/><category term='Google App Engine'/><category term='Google'/><category term='Erlang'/><title type='text'>Cao Yongfeng's Blog</title><subtitle type='html'>if you think you can, you can.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4548591733965368800</id><published>2011-12-25T23:30:00.000+08:00</published><updated>2011-12-25T23:30:56.549+08:00</updated><title type='text'>如何在Facebook App中放置广告？还真是件令人头疼的事情</title><content type='html'>Google了一个晚上了，也没找到确切的答案。&lt;br /&gt;&lt;br /&gt;在Facebook的广告商白名单中找不到Google AdSense的影子，有些说可以在FB中放置Google AdSense的文章也都是几年前的了，可能已经不再适用。而Facebook也没有明确说明不允许Google AdSense。且Google AdSense的有些规则也确实不适用。&lt;br /&gt;&lt;br /&gt;头疼中。。。。。。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4548591733965368800?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4548591733965368800/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4548591733965368800' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4548591733965368800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4548591733965368800'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/12/facebook-app.html' title='如何在Facebook App中放置广告？还真是件令人头疼的事情'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4632304251078863745</id><published>2011-12-17T20:02:00.000+08:00</published><updated>2011-12-17T20:02:10.489+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>IE9 两大致命伤</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;IE9 两大致命伤：&lt;/span&gt;&lt;br style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;" /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;一、不支持Vista之前的系统，连Win2003都不支持。微软自己的浏览器，居然对自己公司的系统还这么挑剔，反而其它公司的产品如Chrome、Firefox的最新版却无此毛病。失败！&lt;/span&gt;&lt;br style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;" /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;二、不支持在HTML5中占重要位置的WebSocket，居然还好意思声称“完美支持HTML5”，失败中的失败！&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4632304251078863745?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4632304251078863745/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4632304251078863745' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4632304251078863745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4632304251078863745'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/12/ie9.html' title='IE9 两大致命伤'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2357322925401794698</id><published>2011-11-27T19:18:00.001+08:00</published><updated>2011-11-27T19:30:47.749+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>男人愿意等女人多久?路金波:只等3天</title><content type='html'>&lt;strong&gt;&lt;span style="color: #660000;"&gt;转自：http://lady.163.com/11/1124/10/7JKA8CJO00264IIU.html&lt;br /&gt;偶然间看到的，看到标题有点意思，就点进去看了看，本人认为，标题同样适用于：“女人愿意等男人多久?”&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;武侠故事里杨过等一个人花16年，言情小说更甚，动辄十载，一发狠一辈子就等过去了。在摩登都市，男人还会花多少时间等一个女人？&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;男人的等待亦真亦假&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;唐骏：现任新华都集团总裁，素有中国IT业“打工皇帝”之称，曾担任微软中国总裁、盛大总裁&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;生意场上，可能以时间换空间，情场上，时间根本就是爱情的敌人，再说若她阅人无数跑回来了，我还能有什么梦想成真的喜悦？年轻时，承诺等待是件特别让人心潮澎湃的事情，一说出口，就觉得自己大男人顶天立地，简直是天上难找地下无双的痴情汉。&lt;br /&gt;&lt;br /&gt;“他不过是想得到我，想让我感动，故意说这种根本不可能兑现的承诺……”小姐，我建议你也不要把男人想得太坏，否则自食恶果。就我对自己以及身边男士的了解，男人在说要等你多时，多半也是经过考虑，并且百分百认为自己能够做到。在这方面，文艺青年很容易就会说我要等你一辈子，而IT人士的大脑就像功能强大的计算机，他们会在心里设定一个条件，比如买房或升职之前我可以等你，反正无房无车也找不到什么好样的。相应，他们给出的期限可能是两年或三年。女人当然喜欢别人等自己一辈子，但在我来看，明显是后一种坚持的可能性更大。&lt;br /&gt;&lt;br /&gt;为什么大多数承诺最终没有兑现？恰巧也因为它是承诺，所谓承诺，本身就具备了超现实意义。这导致世上绝大多数承诺都无疾而终。男人天性里有随遇而安的成分，尤其成年男人。年轻时觉得一定要得到自己最爱的，经历几次挫折后，觉得能得到个合适的就不错。年纪渐长，男人的舞台亦渐宽，爱情不过是其中某一部分，绝不是全部的兴奋点，需要等待的爱情就更加令他兴奋不起来。&lt;br /&gt;&lt;br /&gt;男人承诺等你一年，他心里一定期待半年就开花结果。如果你爱他，根本不应该让他等那么久。在我眼中，暧昧的等待，半年都有半个世纪那么长了。要是一个女人判断一个男人是不是自己合适的恋爱对象，需要用上一年之久的时间，恐怕她不是太笨就是视力不好。成熟男女之间，三次约会基本应该明白对方是不是自己想要的人，接触五到十次，就可以确定要不要发展下去。见足二十次五十次都没感觉，还非要留点希望给对方让人家等，那就是让人陪玩。这种情况，只有傻瓜或自虐狂才会继续。&lt;br /&gt;&lt;br /&gt;也有种情况是彼此相爱，女孩因为学业或工作问题暂时不能结婚。这样的等待，在男人眼里五年十年都OK。如今男人，急房子急车子急工作，最不急的就是结婚。而前提是女人必定专一爱这个男人，并且始终让男人能感受到自己的心意。&lt;br /&gt;&lt;br /&gt;感情易生变，因此我们才始终叮咛自己要珍惜，及时把握。否则每个大美女后面岂不都要站着一两百个准备孤老终生的男人？无论如何，要是有一个男人曾经说过要等你，都应该感激他当时那样深刻地喜欢过你。情感语言原本不能够追求精确，它像“长命百岁”一样，是一个美好的愿望。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;不承诺等你的男人不牢靠？未必见得哟，请记得，现金永远比支票实惠。&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;张国立：台湾时报周刊社长兼总编辑，台湾地区知名作家。除了工作和老婆，也热爱旅游和美食。著有《我真的热爱女人》、《亚当和那根他妈的肋骨》、《2个人的意大利》、《一口咬定意大利》等。&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;我对女人的承诺，时间最长也最珍贵的发生在二十多岁时，女朋友去美国念书，在机场抱着我说：“一年，一年后你一定要来。”当时我很认真，充满信心地点头。现在回想，二十多岁连下个月会怎样也没法计划，我凭什么承诺一年后去美国？&lt;br /&gt;&lt;br /&gt;三十岁以前人的变化很大，突然间发现未来可以掌握在手里，很容易忘记过去。一个同学去德国留学，立誓要念个文学博士，没想到第二年他转到大学部改念机械花了六年时间重新念个学士，他对我说原来机械才是他的梦想。另一个同学毕业当天即和女朋友订婚，半年后女朋友嫁给别人，不怪那女孩，同学进入社会后才恍然觉悟，原来他不可能在五年内买车子还买房子。&lt;br /&gt;&lt;br /&gt;年纪愈大，承诺愈有意义，这时能明白什么该承诺，什么不该承诺。三十五岁那年我的好朋友马萧对他那坚持离婚的妻子说：“我等你五年。”马萧深爱他前妻，这是他愿意再给两人一个机会的原因，可是为何是五年呢？&lt;br /&gt;&lt;br /&gt;马萧说，离婚协议中儿子归他，他也下定决心要好好陪伴儿子走过童年，五年后儿子恰好小学毕业，对于男女关系应该有起码的体认。这时如若他的妈妈仍不肯回头，马萧也可以开始他的新生活，儿子较能体谅。啊，原来有意义的承诺，经常是在一堆附加条件下，才能成立。&lt;br /&gt;&lt;br /&gt;男人能给女人什么承诺？三年前我一个事业很强的女性朋友，估且叫她小可吧，忽然在去加拿大的旅行途中认识个男人，干脆留在当地结婚。我们都吓一跳，觉得小可大概一时头昏，都认定他们的婚姻不会有好结果。&lt;br /&gt;&lt;br /&gt;果然，一年不到就发生变化，小可受不了当妻子的生活。她决定回上海继续工作，老公见拦不住只能放她走，但拒绝离婚，说了句类似海枯石烂之类的话，永远等她回去。小可在上海找到工作生活很愉快，去年我去上海时却找不到她了，三个月前遇见她一个朋友，才知道小可终于回加拿大，而且已经怀孕。她老公真的等了两年多。对此我很好奇，究竟小可老公怎会如此痴心地等下去？现代社会还有这种稀有人类？&lt;br /&gt;&lt;br /&gt;至于我？二十多岁那次之后，我不再做什么等待的承诺，欺骗的成分甚高，即使未必是恶意的欺骗。等待也太累，人生有限，没办法靠喝牛奶、打桥牌硬撑。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;我等你，就三天，感情是个化学反应，三面之内见生死。&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;路金波：笔名“李寻欢”，上世纪90年代活跃在互联网各文学论坛，现为职业文化经理人，万榕书业出版人。&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;我发觉35岁的年龄很不适宜讨论男女问题。再年轻十岁，正是荒唐好时节，无耻者无畏，有多少爱可以胡来，有哪个姑娘值得等待？你我相逢在灯红酒绿谋的是一晌贪欢。高手过招，总在闪电之间。你错过了这道暧昧眼神，我已被另一个姑娘秒杀入温柔乡。英文说：WHO等WHO啊？&lt;br /&gt;&lt;br /&gt;或者再老二十。天命已然知了，因为懂得而慈悲。古龙说：老男人总被小姑娘骗，平白生出许多依恋。我所听说的传奇故事，来自一个朋友的朋友。年纪约莫在55岁吧，是个内地某省类似公安厅长的官员。认识一个北京某娱乐场所（说“天上人间”不算广告吧）的服务员——据说的确是点歌开酒发毛巾的真服务员，迷上。老男人所做的浪漫事，包括周末亲自驾车一整宿，平生第一次给姑娘送99朵玫瑰，当时脸比玫瑰还红。——这个故事到底持续几年，不得而知。但这不是反腐教材，也不是《三言二拍》。这是十足的《廊桥遗梦》+《失乐园》。&lt;br /&gt;&lt;br /&gt;三四十岁的男人，最金黄明亮的时候。连诺贝尔科学奖获得者出主要成果的平均年龄都是三十七岁。偏生这时候，原配还不老，又没更年期，不闹；孩子还小，天真浪漫，尤其是有个小女儿绕膝，奇妙。——这年龄的男人根本不是等人的命。《蜗居》的宋思明，连三爷都做得那么有风骨。电视机前的大龄女青年，看到他小心心立马碎了一地。&lt;br /&gt;&lt;br /&gt;感情是个化学反应。三面之内见生死。或者青山绿水，就此别过；或者推杯换盏，以后咱们是男女兄弟；又或者，在一起，赌未来，修成正果是缘“份”，半路分手——那他娘的当然也是缘“分”。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2357322925401794698?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2357322925401794698/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2357322925401794698' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2357322925401794698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2357322925401794698'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/11/3.html' title='男人愿意等女人多久?路金波:只等3天'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-3571359754862308585</id><published>2011-06-10T03:12:00.004+08:00</published><updated>2011-06-10T04:01:08.905+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><title type='text'>Rollback google app engine deployment</title><content type='html'>find gdk bin directory.&lt;br /&gt;&lt;br /&gt;start windows console, press follow line and enter:&lt;br /&gt;&lt;br /&gt;appcfg.cmd rollback [your app directory\build\web]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-3571359754862308585?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/3571359754862308585/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=3571359754862308585' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3571359754862308585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3571359754862308585'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/06/rollback-google-app-engine-deployment.html' title='Rollback google app engine deployment'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-5429736772264805058</id><published>2011-05-08T23:28:00.002+08:00</published><updated>2011-05-08T23:35:54.617+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ＩＴ'/><title type='text'>NetBeans 7.0 千呼万唤始出来</title><content type='html'>前不久，NetBeans 7.0 终于发布了。&lt;br /&gt;&lt;br /&gt;所谓期望越大，失望也就越大。用在NetBeans 7.0上再合适不过了。&lt;br /&gt;&lt;br /&gt;NetBeans 7.0 仍然没有解决启动缓慢的问题；仍然不支持分屏；仍然不支持快速打开文件夹；第三方插件的更新也跟不上，如Google App Engine的插件仍然停留在6.8的版本上。。。。&lt;br /&gt;&lt;br /&gt;凡此种种，NetBeans需要改进的地方太多了，与Visual Studio的差距仍然很大。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-5429736772264805058?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/5429736772264805058/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=5429736772264805058' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5429736772264805058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5429736772264805058'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/05/netbeans-70.html' title='NetBeans 7.0 千呼万唤始出来'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-996369373109885937</id><published>2011-02-12T06:51:00.003+08:00</published><updated>2011-02-12T12:03:42.385+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><title type='text'>Google App Engine异常 no matching index found 的解决方案</title><content type='html'>在Google App Engine中操作数据库时，遇到了一个奇怪的异常：no matching index found..&lt;br /&gt;而在本地测试时是一切正常的。&lt;br /&gt;从抛出的异常信息可看出，是数据索引相关的问题造成的。&lt;br /&gt;查看外网的索引，原来是应用了一个较旧的索引配置文件。&lt;br /&gt;但是，在更新App时，不是应该将本地新的索引更新到外网吗？&lt;br /&gt;查看本地自动生成的索引配置文件datastore-indexes-auto.xml，发现其中确实有个较旧的配置，新旧配置同时存在。删掉旧的那个。重新更新到外网，再次测试，异常消失。&lt;br /&gt;看来这是Google提供的工具还不够智能造成的。&lt;br /&gt;问题解决。&lt;br /&gt;&lt;br /&gt;已经天亮了，冲个凉之后去医院。&lt;br /&gt;牙痛了好多天了，近十天来几乎滴米未进，我发觉我的生命力还真TMD顽强，这么多天不吃饭居然也能挺过来。&lt;br /&gt;前两天就打算去医院的，但每次都睡到中午才醒，到了医院也应该排不上号了，于是继续睡。&lt;br /&gt;今天终于下定决心，通宵不睡，等着天亮去医院排队。我就奇怪了，怎么每天都那么多人看牙医呢？&lt;br /&gt;谁让咱穷呢？私人牙科看不起，只能老老实实地去排队了。&lt;br /&gt;无论如何，生活还得继续，编码不能停止。。。。&lt;br /&gt;不是吗？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-996369373109885937?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/996369373109885937/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=996369373109885937' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/996369373109885937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/996369373109885937'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/02/google-app-engine-no-matching-index.html' title='Google App Engine异常 no matching index found 的解决方案'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2916314287079001298</id><published>2011-02-09T01:49:00.003+08:00</published><updated>2011-02-10T22:21:32.945+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><title type='text'>解决Google App Engine发送EMail异常：Unauthorized sender</title><content type='html'>今天发现在Google App Engine中发送EMail时会抛出异常：Unauthorized sender。&lt;br /&gt;未经授权的发件人？&lt;br /&gt;Google App Engine文档中明确说明，为了减少垃圾邮件，发件人必须是管理者权限。&lt;br /&gt;检查发件帐户，发现已是管理者权限，奇怪了。再用App创建者帐户测试，仍然是同样的异常。而在另一个App中却是正常的。郁闷中。。。。&lt;br /&gt;求助于万能的Google，很多墙外的网址打不开，墙内的没找到什么有用的资料。&lt;br /&gt;幸好有翻墙利器FreeGate（似乎轮子只做了这么一件好事），终于在墙外找到了一个解决方案：&lt;a href="http://www.pressthered.com/solving_invalidsendererror_unauthorized_sender_in_appengine/"&gt;http://www.pressthered.com/solving_invalidsendererror_unauthorized_sender_in_appengine/&lt;/a&gt;。&lt;br /&gt;测试了一下，发送成功！&lt;br /&gt;原来，需要在App控制台中将发件帐户设置为开发者。但奇怪的是在我的另一个App中却不用如此设置。这也许是不同版本的GDK造成的吧，因为我另一个App的GDK用的是较旧的1.3版本。也许是GDK在升级后改变了发EMail的权限吧。&lt;br /&gt;终于搞定，可以安心地睡觉了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2916314287079001298?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2916314287079001298/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2916314287079001298' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2916314287079001298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2916314287079001298'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/02/google-app-engineemailunauthorized.html' title='解决Google App Engine发送EMail异常：Unauthorized sender'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-3210440619759993963</id><published>2011-02-04T06:55:00.002+08:00</published><updated>2011-02-04T07:03:09.447+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>终于将Google Custom Search搞定了</title><content type='html'>&lt;p&gt;整了一个晚上，终于将Google Custom Search整成我想要的结果了。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我说Google啊，你就不能将文档写清楚一点吗？&lt;/p&gt;&lt;br /&gt;&lt;p&gt;看这里：&lt;a href="http://www.nooong.com/search.html" target="_blank"&gt;http://www.nooong.com/search.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-3210440619759993963?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/3210440619759993963/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=3210440619759993963' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3210440619759993963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3210440619759993963'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/02/google-custom-search.html' title='终于将Google Custom Search搞定了'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4130202180384014370</id><published>2011-02-03T01:19:00.003+08:00</published><updated>2011-02-03T01:34:47.538+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>懂得放弃</title><content type='html'>又到春节了，在年三十前终于下定决心整理了一下我的小狗窝，别看窝小，却收拾出了几大纸皮箱的无用物，有一些旧书籍、包装盒、旧衣物、坏了的电器、拆换下来的电脑配件等等等等。也许是怀旧，也许是舍不得，也许是想着留下来今后可能会有用，但其实其中大部分都凌乱地摆在那一直没用过，久而久之占用了本已狭小的小窝很多空间，待满头大汗地清理完毕之后，小窝又宽敞了许多，丢弃后还少了些许牵挂。&lt;br /&gt;&lt;br /&gt;既然无用，何不放弃？对物如此，对事亦如此，对人，也如此。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4130202180384014370?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4130202180384014370/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4130202180384014370' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4130202180384014370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4130202180384014370'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/02/blog-post_03.html' title='懂得放弃'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-5317741793491380099</id><published>2011-02-03T01:17:00.003+08:00</published><updated>2011-02-03T01:34:21.242+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>启用了新的域名</title><content type='html'>启用了新的域名（caoyongfeng.com），但由于有些资源仍指向的是blogger域下的地址，所以有些资源在墙内仍无法显示，并且导致了一些功能不可用。过几天有时间再弄弄。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-5317741793491380099?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/5317741793491380099/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=5317741793491380099' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5317741793491380099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5317741793491380099'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2011/02/blog-post.html' title='启用了新的域名'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-6314257330075400367</id><published>2010-12-25T00:36:00.006+08:00</published><updated>2010-12-25T01:17:52.833+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Pages4JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Pages4JSP 简介</title><content type='html'>Pages4JSP是为JSP设计的一个用于展示层的库，其设计宗旨是：简单、高效、轻巧。&lt;br /&gt;为什么不使用Java社区中已有的框架，而要另外开发这个库呢？&lt;br /&gt;对asp.net有所了解的人都知道，在asp.net中，创建一个Master Page是非常方便的。但是在现有的各类JSP的框架中实现类似的功能却没有像在asp.net中那么方便。另外，面对那些复杂的标记，也是一件头痛的事情。很多时候，我们需要的仅仅是一枚钉子，而不是一个生产钉子的工厂。Pages4JSP就是为解决这些问题而设计的。&lt;br /&gt;在Pages4JSP中，一切都尽可能地简单。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-6314257330075400367?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/6314257330075400367/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=6314257330075400367' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6314257330075400367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6314257330075400367'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2010/12/pages4jsp.html' title='Pages4JSP 简介'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-7736432183938586734</id><published>2010-09-19T22:53:00.003+08:00</published><updated>2010-09-19T23:01:31.869+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>（转载）韩寒：游行的意义</title><content type='html'>&lt;span style="font-style:italic;"&gt;转载自：（原网址已被和谐，在轮子的网站上还有保留：&lt;a href="http://www.aboluowang.com/comment/data/2010/0918/article_17432.html"&gt;http://www.aboluowang.com/comment/data/2010/0918/article_17432.html&lt;/a&gt;）&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在这个敏感的时刻，我有的朋友开始研究要不要游行。当然，游的主体可以是反日保钓救船长。终于，在一个很多论坛里连“游行”两个字都打不出来的国家里，我们有行可以游了。那么，要不要参加这次命题一日游呢？&lt;br /&gt;&lt;br /&gt;首先，我认为在现代中国社会中，分为三个阶级，那就是主子，奴才和狗，而我们往往一人饰两角，至于饰演哪两个角色，我想不会有人觉得他在演主子吧。前一阵子，主子需要奴才去附和和伺候，但是现如今，主子需要狗去吼两声，因为在狗的逻辑里，无论主子怎么对待它，只要有外人来犯，狗总是该看家护院的。&lt;br /&gt;&lt;br /&gt;当弄明白了这个以后，回头想想就容易多了。但是，在这三个阶级以内，好在我还有选择做花花草草的权力。我的选择依据是，对于相关部门，小事和大事他 们的区别就是抗议一次和抗议十一次，有特权有能力的地方尚未出力，除了把人家日本大使变成了应召男郎以外，我们相关部门情绪稳定，并不见什么实际决心，别说武力上，连经济上都不敢有所动作。他们韬光养晦，所以我也韬光养晦。毕竟，我等做狗也罢，但要做一条戏狗，情以何堪。&lt;br /&gt;&lt;br /&gt;纵观事态发展，领导的内心似乎并不愤怒，领导只是觉得窝囊，那自然，我们也只能跟着觉得窝囊，你哪有上街去表达窝囊的，那岂不是更窝囊。领导没面子的时候，我们给他们长脸，但领导有面子的时候，我们被他们掌嘴。我被欺负，我不能游，你被欺负，你让我游，我又情以何堪。你也别说这种民族国土大事应该是 我们一起被欺负了，就算政府不作为，你活的一塌糊涂，也应该挺身而出。我自然可以挺身而出，但我的第一主题就是要求政府去作为，第二主题才是控诉来犯者， 因为领土问题从来都不是老百姓能解决的和该去解决的，尤其是在我国，老百姓自己都没有一寸土地，，所有的一切，都是问政府租的，所以，理论上，这事对我来说，就是我的房东在和别人就一块在地上的瓦而争执，这块瓦的确是风大的时候从房东的房顶上掉下来的，但房东也不敢去捡，因为可能要和隔壁人家打架。那我等租客在里面搅和什么呢。无土地者要去为他人争取土地，无尊严者要去为他人捍卫尊严，这样的人多少钱一斤？一斤多少个？&lt;br /&gt;&lt;br /&gt;但毕竟，这样的游行安全，好玩，显得很酷，关键是游完以后还能正常工作学习，甚至还有助于未来发展，毕竟也算不容易，所以大学生和老百姓抱着尝鲜唱黑脸的角度去游一游无妨。到时候政府唱一个白脸，说不定能有所见效。况且现在去游行玩的人相比起以前游行玩的人也有着些许不同，以前是彻底的国政不分，被 卖数钱，现如今很多青年终于能够将所谓爱国这件事情想的更明白，他们虽然依然愤怒，但开始反思自己为何每次都是那么窝囊和被动，回头也能更客观的看待国家和政府的关系，这也算是一个进步。对于任何国家来说，国家就是一个女人，执政者就是占有她的男人，有幸福美满的，有相处和睦的，有家庭暴力的，有关系紧张的，有离婚再嫁的，有不能改嫁的，但无论如何，你爱一个女人总不能连她的男人也一起爱了去。&lt;br /&gt;&lt;br /&gt;最后，这些都不重要，最重要的是，我，如果今天能为唐福珍和谢朝平而游行，那么明天我就一定会为钓鱼岛和奥运火炬而游行。但这又是一个悖论，往往你 能够为唐福珍谢朝平游行的时候，你往往就不会有钓鱼岛奥运火炬之类的事，而且更不会有唐福珍谢朝平之类的事出现。一个对内不能和平游行的民族，他的对外任何游行是完全没有价值的，那只是一场集体舞。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-7736432183938586734?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/7736432183938586734/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=7736432183938586734' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7736432183938586734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7736432183938586734'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2010/09/blog-post.html' title='（转载）韩寒：游行的意义'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4909094364692729107</id><published>2009-01-04T15:38:00.007+08:00</published><updated>2009-01-04T16:37:30.515+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang常用函数：内建函数（BIF）</title><content type='html'>所有的BIF都在erlang模块之中，而且大部分常用的BIF（如tuple_to_list）都已被自动导入，因此我们只需要写tuple_to_list(...)，而不是烦琐地写erlang:tuple_to_list(...)。&lt;br /&gt;参考：&lt;a href="http://www.erlang.org/doc/man/erlang.html"&gt;http://www.erlang.org/doc/man/erlang.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;binary_to_term(Bin)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;这个是term_to_binary(Term)的逆函数。将使用term_to_binary(Term)转换得到的二进制数据还原为原始数据。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;list_to_bianry(IoList)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;将IoList中的所有东西转换为一个二进制数据。这里的IoList是一个列表，其中的元素可以是0——255的整数、二进制数据或者另外一个IoList。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;size(Bin)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;返回二进制数据的字节长度。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;split_bianry(Bin, Pos)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;在Pos指定的位置将二进制数据Bin分割为两个部分。如：split_binary(&lt;&lt;1, 2, 3&gt;&gt;, 1)返回{&lt;&lt;1&gt;&gt;, &lt;&lt;2, 3&gt;&gt;}。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;term_to_binary(Term)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;这个函数可以将任何Erlang值转化为二进制数据。由term_to_binary转换得来的二进制数据可用于文件存储、网络传输等，而且在转换之后我们还可以从这些二进制数据中还原出原始的数据（使用binary_to_term），类似于C#中的序列化和反序列化。这个函数在需要对复杂的数据结构进行存储和网络传输时非常有用。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;time()&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;返回当前日期的时、分、秒&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;tuple_to_list(X)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;将元组转换为列表。如：tuple_to_list({12, cat, "hello"}). 返回[12, cat, "hello"]。&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4909094364692729107?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4909094364692729107/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4909094364692729107' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4909094364692729107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4909094364692729107'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2009/01/erlangbif.html' title='Erlang常用函数：内建函数（BIF）'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-8087015918921791758</id><published>2009-01-01T16:44:00.007+08:00</published><updated>2009-01-04T15:47:15.832+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang常用函数：lists模块</title><content type='html'>&lt;strong&gt;lists:map(F, L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;将函数F应用到列表L中的每一个元素&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:filter(F, L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;使用函数F计算列表L中的每一个元素，将结果为true的返回&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:member(X, L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;若X是列表L的成员，则返回true，否则返回false&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:sum(L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;计算列表L中所有元素的和&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:seq(S, N)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;返回一个由S至N的列表，例如：lists:seq(1, 3)返回[1, 2, 3]。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:max(L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;返回列表L中的最大值&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;lists:reverse(L)&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;将列表L反转&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-8087015918921791758?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/8087015918921791758/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=8087015918921791758' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8087015918921791758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8087015918921791758'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2009/01/erlang.html' title='Erlang常用函数：lists模块'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-6005559270447563755</id><published>2008-11-12T14:40:00.003+08:00</published><updated>2008-11-12T18:34:29.494+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>转：天门城管致死案果然“大事化小”</title><content type='html'>&lt;em&gt;原文地址：&lt;a href="http://news.163.com/08/1112/09/4QHPU48500012Q9L.html" target="_blank"&gt;http://news.163.com/08/1112/09/4QHPU48500012Q9L.html&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;湖北天门城管打死拍照男子魏文华一案一审终于宣判了，宣判结果一大堆，最多的获刑6年，最少获刑3年。更“不负众望”的是，判决书称，外伤致使魏文华的冠心病急性发作死亡。我不是医生，更不是对魏文华进行尸检的医生，我确实不懂魏文华到底是算殴打致死，还是殴打引起冠心病发作而死。&lt;br /&gt;&lt;br /&gt;魏文华是2008年1月7日被殴而死的，3天之后，就有网友发帖，天门这个案子，想不了了之是不可能了，唯一的办法只能是大事化小。怎么化小？只能在死因上作文章。于是，说魏文华患有心血管疾病。虽然家属认为魏文华生前无冠心病史，对认定其有冠心病的鉴定不服，并提出重新鉴定，但家属的说法抵不过权力：魏文华被殴打诱发了冠心病。殴打是诱因，冠心病是致死的元凶。这样，尽管城管殴打人虽说不对，但人是因冠心病而死，法律责任小了。&lt;br /&gt;&lt;br /&gt;按此逻辑，根据报道对判决书的引用，我们看到，该案的主要责任人孙代榜，罪名成了故意伤害，而不是故意杀人，不同的定性，责任大小也就不同了。不仅如此，判决书还称，案发后其到公安机关接受调查，被认定为有自首情节，且对魏文华进行了及时救治，故酌情判处有期徒刑6年。网友果然厉害，这个判决印证了之前的“大事化小”判断。我想厉害的不是网友，而是类似事件通常都是按照类似逻辑发展，“厉害”的网友不过是顺着权力主导的逻辑，做了个简单的推理。&lt;br /&gt;&lt;br /&gt;所以，一个公民的非正常死亡，不仅仅是个体和家庭的悲剧，更是被绝对化的权力完全脱离约束的极端体现。随意打人，甚至打死人，打死人之后都还有一套霸王逻辑将事情化小。除了极端到被殴致死的魏文华，还有更多背景和更多的伤痛值得记住。魏文华之死的前传，是天门城管“武装押运”垃圾车。两年前，有关部门与天门市的竟陵镇湾坝村商定，将该村皂(市)毛(嘴)公路旁的一块地划为垃圾填埋场。由于垃圾场臭味太大，并致饮水变质，2008年元旦，约定期限已到，村民不许其再填埋垃圾，遂导致城管“武装护送”垃圾车。当地村民现身阻止时，与执法人员发生冲突，不仅路过的魏文华被殴致死，至少还有5人被打伤住院。&lt;br /&gt;&lt;br /&gt;魏文华之死，是因为其成为暴力行凶的旁观者和见证人。不仅如此，他还用手机记录下了权力暴虐的影像。权力再暴虐，也害怕非法侵害他人生命健康的影像被公之于众，所以他们才殴打魏文华。而权力如此暴虐，理应被钉在耻辱架上，更应该接受司法的惩罚。但与此相反，它没有接受恰当的惩治，甚至当被告人在法庭上否认自己殴死魏文华之时，法庭仍然亲切地认为，这是一种“坦白从宽”的表现。这也应当算做权力的又一项罪名，一种令人叹为观止的“大事化小”能力，一种敢于在民意的众目睽睽下护短的胆识。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-6005559270447563755?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/6005559270447563755/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=6005559270447563755' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6005559270447563755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6005559270447563755'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/11/blog-post.html' title='转：天门城管致死案果然“大事化小”'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-9203514458195618795</id><published>2008-10-25T21:00:00.003+08:00</published><updated>2008-10-25T22:57:26.796+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>系花（转载）</title><content type='html'>　　我在全寝小聚的酒席上宣布我要在三个月之内把系花搞定时所有人一瞬间静了下来，然后沉默片刻，然后放肆地爆笑，一边喝酒一边开始了对我的无情嘲笑。而我一边喝酒一边冷冷地听着他们的无情嘲笑，在他们安静之后慢吞吞地说：即使是混混也有喜欢别人的权利，你们看我象条不自量力的狗，我看我自己象条堕入情网中的不自量力的狗。&lt;br /&gt;&lt;br /&gt;　　那年我大四，我们全寝室都是自费生，为了两到五分多交了三万元学费的失败男人。我们又是酒仙，又是战神，翘课喝酒打架作弊聚赌无所不为。其他同学远远地躲着我们。和别人想的不太一样，我们不孤独，我们极为冷静地看着自己，并且证明了任何环境下的任何人都不会缺少朋友。&lt;br /&gt;&lt;br /&gt;　　系花和她的朋友们和我们不一样。她们勤奋学习，爱好广泛，关心国家大事，见到老鼠就尖叫，并且不少都被保送读研。在她们看来一所大学总不可能都是正经学生吧，总应该有一批捣蛋分子吧，捣蛋分子应该就是不知羞耻地糟蹋父母血汗钱的自费生吧。在大家按例都这么看我们之后我们屈服了。并且相当于惯性一般地担当起了捣蛋这一重大责任，至少我们可以证明学校保安不是吃闲饭的——在他们和我们交上朋友以前。&lt;br /&gt;&lt;br /&gt;　　当痞子有一个明显好处，普通人说一千句好话都可能没人注意，而痞子们只要说上一句，大家就都会肃然起敬：哇，想不到这家伙还能说出这样的话来。&lt;br /&gt;&lt;br /&gt;　　我就是在这种情况下喜欢上系花的。在确信无疑地知道自己喜欢上了系花之后，我曾经在学校的花圃前闭着眼睛折了一根花枝，一片一片地往下掰叶子。她接受我，她不接受我，她接受我，她不接受我，只剩一片叶子了，掰下去她就不接受我。我怀着一丝伤感与失落掰下去，仔细找找，还有一片小得不成形状的。于是大喜，轻手轻脚的撕下来，然后发现另有一片更小的，然后发现只要你有显微镜和足够的耐心，可以一直撕到细胞，而其过程中必然面临一个多少细胞以上才可以称之为叶子的哲学问题。我很烦躁地把空枝扔到地上，转身要走，被早已埋伏一旁的门卫老大爷叫住罚了五块钱。&lt;br /&gt;&lt;br /&gt;　　后来我也设想过很多细节和情景。比如她在晚自习后回宿舍的路上被人截住并调戏，而且老天有眼被我撞上了，我把那批流氓打跑。可是且慢，平常打架时我一人打跑三五个很大程度上是因为大家知道我是痞子无赖，他们承认痞子无赖应该能打跑正经人，于是退却了。在对方不知道我是痞子无赖的情况下一对三或者一对五无异于自寻死路。又或者她外出过程中忽然得了重病，老天有眼又叫我撞上了，于是我急得疯狗一般把她送到医院，天啊，我怎么这么不是东西呀。况且系花结实健康得估计可以活到九十二岁。又或者她在全班春游划船时掉到了东湖里，又是老天有眼我救了她。可是她会游泳而我却不会呀。所以我一提要追系花，全寝兄弟看我的眼神一定是认为若要成功，老天有眼是远远不够的，老天应该至少和我有直接血缘关系。&lt;br /&gt;&lt;br /&gt;　　班主任常常喝骂我们，我很感激她从没当众这么干。如果人受的失败挫折太多，会认为此生已定而失去任何干劲的话，应该就是指我了。她说的最多的一句话基本上是干大事业的人应该如何如何，可是，为什么我一定要当干大事业的人呢？她也经常深入浅出地举例子，举得最多的是这么一件：某人自以为是很久了，忽然发现自己被人瞧不起，于是发愤努力，终成一代大家云云。我每次听完之后都想：这种笨蛋居然为了别人的一句评语狂热地做了十几年自己根本不喜欢的事，换了我打死也不干。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　一个很偶然的机会我和系花一起去借书，我当时一定认为老天大概真是我亲爹亲妈之类。可是我们借的书似乎换了个个儿，我借&lt;时间简史&gt;，她借&lt;倚天屠龙记&gt;，她看我的眼神象在看一条毫不相干的狗，轻描淡写地说：你也借这种书看？&lt;br /&gt;&lt;br /&gt;　　我只有一次引起她注意的回答机会。这难不倒我。我是全系写情书的第一圣手。我也一样轻描淡写地撒谎：我借书又不是为了看，是为了显得有深度。&lt;br /&gt;&lt;br /&gt;　　一丝笑意在系花脸上荡漾开来，她在心里已经认为我是个傻瓜了。可是除此之外，任何回答都只能让她认为礼节性的对话已然杀青而不再理我。果然，她带着浅浅的微笑再度开口：我以为你们应该很喜欢看武侠小说之类的。&lt;br /&gt;&lt;br /&gt;　　武侠小说……上乘武功动辄练个一百几十年，练成了再去杀人，你觉得很有意思么？我的语调平静，但心头有如鹿撞。在那一刹那间我愿意用剩余的全部生命换她一句回答。开口吧，小姐。我虔诚地想。&lt;br /&gt;&lt;br /&gt;　　系花把头转了过去，显示她美妙的脖子和肩膀，然后她低下头填写借书卡，头发垂下来遮住了半边脸。图书管理员是个中年女同志，她十分威严地望着我们。我想系花大概生气了。也好，不能让她高兴快乐如沐春风，把她气个半死也不错。更重要的是这种奇谈怪论她以前一定没听说过，而人们对新鲜事物总是抱着绝对好奇心的。那一刻我一点不否认我是在处心积虑地勾引系花——如果应该有爱情的话，我们为什么不尽力将它营造得荡气回肠呢？&lt;br /&gt;&lt;br /&gt;　 　在我全心全意的盼望中系花仍然没有说话。我一向具有在任何情况下控制局势的能力，但此时我真的心乱如麻。她可能认为自己被冒犯了。所以我又接着问：是你自己喜欢看还是别人推荐的？&lt;br /&gt;&lt;br /&gt;　 　室友推荐的。她们说金庸最近很红。系花抬起头来望着我。&lt;br /&gt;&lt;br /&gt;　 　你是看书还是追星？我说完之后不理她，转向管理员同志：请再给她拿一本井上靖的&lt;苍狼&gt;。&lt;br /&gt;&lt;br /&gt;　 　此时身后的门开了。回头，是本系号称“东方盖茨”的大牛人，整天叫嚣乎南北：中国不是人呆的地方！要去就去美国！我一向讨厌挖空心思想改变自己国籍的人，并且我知道“东方盖茨”这个外号，国内大概有上万人顶着呢。但现在他和系花说说笑笑，最后两人挽着手走了。临走时系花回头向我一笑：谢谢你推荐的书，我会看的。我也笑笑：没关系。笑的时候我非常害怕自己的眼泪会把挤出来的那一点快乐盖住，或者会控制不住抄起凳子对“东方盖茨”狠下毒手。但我还是平淡如水地目送他们出了门。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　当晚喝酒的时候寝室老大悲天悯人地对我说：别费劲了。系花有的是人追，你没戏。她看不上你。&lt;br /&gt;&lt;br /&gt;　　就是因为追不上，追着才有意思啊。我喝了一大口，又说：就好比喝酒，要是喝不醉，有什么意思？&lt;br /&gt;&lt;br /&gt;　　但那天晚上真的喝醉了。第二天醒来时头很疼，据寝室的兄弟说我除了摔碎一个酒瓶之外并没干其他特别的事，睡得很浓，象猪一样。我当然不信。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　还有几个月就要毕业了。离愁别伤使所有的同学一夜之间变成了无话不谈的好友，也包括我们这些痞子学生。那段日子啤酒的消费量是相当惊人的，学校甚至传出了某人二十四瓶不倒或二十瓶不倒之类的神话。在大学里任何两个毕业届的学生都应该至少喝过一顿酒，于是我也很自然地同这些传奇人物碰面了。我最多只能喝十瓶，但我把这些传奇人物都放倒了。在随后的几周里我又成了新一轮的传奇人物，外界风传我二十四瓶不倒，最终，我也被放倒了。本人成为历史而传奇还在继续。大家相信总会有人二十五瓶不倒。&lt;br /&gt;&lt;br /&gt;　　我一直也没机会问问系花到底看没看我推荐给她的&lt;苍狼&gt;。愚人节快到了，别人已经在兴致勃勃地准备新一轮的骗人计划。我想我该在那天送封情书给她吧。就算被拒绝了也不至于脸面丢尽，而且还有一个可以骗骗自己的理由：愚人节么，兴许她也在撒谎呢。但随即发现无论她怎样回答，自己都陷入了哲学中的二难命题。于是干脆想也不想。约她看场电影吧，请她喝杯咖啡吧，带她去通宵蹦的，或领她滑轮滑摔断自己一条腿，那都是没品位的家伙们干的事，何况系花也一定久经沙场，进攻重重防备中的敌人是危险的。&lt;br /&gt;&lt;br /&gt;　　这一段日子系花令我了无生趣。我之所以没有卑躬屈膝，阿谀奉承地跪倒在她石榴裙下的唯一原因是我认为如果你这么干能追到一个女孩子的话，那她一定不值得你追。但是从古到今，相思都是件风雅地折磨人的苦事，单相思都是件毫无风雅地折磨人的更苦的事。老大之流见我意志消沉，早已在外面向他们能搭得上话的每一位女生疯狂鼓吹我才情横溢，英俊不凡，锦心绣口，从一而终等等。我相信如果对方稍微无知一点的话他们绝对敢吹牛说我光荣地参加过抗美援朝。这么干的效果当然是爱归零，恐怕没有哪个女孩子会相信这样的弥天大谎，即使相信了也不会自己送上门。小说里写的爱情故事都是假的——我认为。 &lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　应该和她说。又是酒席，老三语重心长，一手执酒杯，一手抠脚指头逢。&lt;br /&gt;&lt;br /&gt;　　干吗要说呢？这个过程我已经觉得很快乐了，爱一个人也是幸福。我强词夺理，同时斩钉截铁地谢绝了他用刚刚抠脚丫的那只手递过来的鸡翅。事实上我很怕。我很怕失败，我怕她哈哈大笑，说：你这样的也敢动这种心思？我更怕她微微一笑，说：对不起哦。我还是学生我没考虑过。更何况盖茨大牛人也列席了这次饮宴。他迷惑地说：老赵要追人了？我怎么没看出来？说说，我帮你想办法。我们寝室的人当时就把酒喷了一桌子，让他该喝喝，这种事搀和不得。老三将我没接的鸡翅放到自己嘴里，恨的我只想剁了他那只手。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　现在可以说说大牛人了。我近来发现他除了是系花的当前男友和一心想出国之外别的地方还不太讨厌。尤其是酒德不错而酒量不行。再加上因为我的关系，我们寝室的人一见他就讨厌，所以但凡喝酒有他，他一定最先倒下。今天他也照例倒得一塌糊涂。我带着些许厌恶之情揪着他的领子把他弄回自己的宿舍，摊在床上。刚想走又被他一把抱住了。他在我耳朵边喷着酒气说：你们都是好人，你们不是败类。我爸那样的才是败类。&lt;br /&gt;&lt;br /&gt;　　因为他这一句话我没走成。我留下来听他胡说八道。第一次知道了这个一心想出国的人是西北某镇镇长的儿子，他所有关于中国没希望，要去美国的思想得自他父亲的一体传授，其实他很迷惘。他母亲死了六年半了，他那位担任镇长的家严大人几乎每年换一个年轻漂亮的女伴。最后他哭起考妣来，然后猛吐一气之后沉沉睡去。我看着他呆板的脸默默地想：对不起啦。我要撬你的女朋友。&lt;br /&gt;&lt;br /&gt;　　事实上这件事要操作起来是极为艰难的。倒不是由于他们如何如胶似漆，而是我在学校的劣迹如果传到家乡，足以把我家祖坟的土气黑。在学校里怎么样就更不用说了。可是我又能怎么办呢？我没追求，没前途，没钱。在这个人人一心想升官发财出国成名的社会里单薄幼稚。除了追寻我自以为是的爱情，我还能干些什么呢？&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　我真正有勇气向系花发起进攻是在四月初。愚人节过了，我没上当，也没骗人。系花倒是上了一百多当，可是她不在乎。当天至少有二十个以上的男生对她说：我爱你！天知道是真的假的。&lt;br /&gt;&lt;br /&gt;　　我已经习惯于没事时上系花所在的设计专教乱转一通了。每次看到各忙各的同学，我总是觉得很伤感。人想升官发财没什么不对的。几千年阶级斗争还不是为的经济利益？我这样对自己说。不想这么干的人被认为是无能，我就当个无能的人吧。&lt;br /&gt;&lt;br /&gt;　　那天我象往常一样推开了那间设计专教的门。教室里很暖和，有很痒的微风，可是只有系花一个人在。她抬起头来，我鼓起勇气说：有间事我想和你商量。&lt;br /&gt;&lt;br /&gt;　　说吧。系花的眼神之中没有一丝慌乱，不安或激动，连憎恶也没有，就好象一个等着和战士谈话的指导员。一瞬间我心凉如水，刚刚的任何激情都烟消云散。我语无伦次，虚脱一般地说：我想找你借点钱，最近喝酒喝得太凶，我们宿舍好几个人都没钱吃饭了。&lt;br /&gt;&lt;br /&gt;　　多少？&lt;br /&gt;&lt;br /&gt;　　三百吧。我随口报了个数。在大学里没钱了并不意味着你有可能饿死，只会意味着天天有人请。可是我能说什么？我必须找一个借口把谈话继续下去。&lt;br /&gt;&lt;br /&gt;　　什么时候还？&lt;br /&gt;&lt;br /&gt;　　好现象！要是打发一个痞子恶棍的话这一句根本不用问。于是我说道：下个月我家寄钱来时。&lt;br /&gt;&lt;br /&gt;　　那你下个月怎么办？&lt;br /&gt;&lt;br /&gt;　　再借。再不成就找个人管我饭。除非这个月你管我饭。&lt;br /&gt;&lt;br /&gt;　　一丝红潮涌上了系花的脸颊，不知道是愤怒还是害羞。她把正在写着的什么东西合在书里，站起来，夹着书本说：你在这里等，我去取。&lt;br /&gt;&lt;br /&gt;　　我目送她离开教室，即使她把写着的东西留在这里我也绝对不会去看。我是痞子没错，但不见得道德败坏。&lt;br /&gt;&lt;br /&gt;　　等她回来时教室里已经多了好几个人。她把三张百元大钞递给我时所有的人都屏息凝气，并且在心里暗暗地期待着发生些什么。系花把钱给我之后忽然开口说道：&lt;苍狼&gt;我看了，写的特棒。再推荐几本给我吧。&lt;br /&gt;&lt;br /&gt;　　想看什么就看什么吧。我心不在焉地说。一百年后没人会追究你看过什么书。&lt;br /&gt;&lt;br /&gt;　　系花奇怪地看我一眼：你的思想怎么总是那么灰色呢？&lt;br /&gt;&lt;br /&gt;　　灰色？我淡淡地说：不是灰色，只是这世界上有些游戏规则我不想遵守。&lt;br /&gt;&lt;br /&gt;　　系花又是奇怪地看我一眼。什么游戏规则？&lt;br /&gt;&lt;br /&gt;　　我注视着系花很久很久，也许只是片刻。然后一种英雄老尽的笑容在我唇间慢慢升起。说了你也不懂。你还年轻，是早晨八九点钟的太阳。&lt;br /&gt;&lt;br /&gt;　　你呢？你不是么？你比我还小着三个月呢！系花的声音里有被人轻视的愤怒。那一刹那间我想拥抱她。可是我没有，我只是略带伤感地说：没错，我也是早晨八九点种的太阳，可是不凑巧赶上了持续一整天的日食，这是没办法的事。说完之后我转身出了专教。&lt;br /&gt;&lt;br /&gt;　　教室里立刻传出了嘘声笑声和嗡嗡声。我站住，再次推门，已经有几位从座位上站起，摆出了迫不及待地冲向系花问个清楚的架势。一见到我他们立刻象被点了穴道一般定在空中，满眼好奇化为尴尬，片刻之后才坐了下去。我关门退出。&lt;br /&gt;&lt;br /&gt;　　刚走了两步门在我身后打开，系花追了出来，在我面前站住，欲言又止。&lt;br /&gt;&lt;br /&gt;　　什么事？我问到。&lt;br /&gt;&lt;br /&gt;　　下个月要是你没钱吃饭了就来找我。我管你。她脸上的红潮还没退尽。&lt;br /&gt;&lt;br /&gt;　　死也不吃女人的饭。&lt;br /&gt;&lt;br /&gt;　　你……&lt;br /&gt;&lt;br /&gt;　　我看着系花又急又气的样子暗暗好笑。道歉地说：别生气，我也想，可是你会瞧不起我的。说完不等她回答，径直下了楼，留在身后的是整整一春的寂静。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　流言总是传得比风还快。当天晚上有关我要追系花的传闻就已经街知巷闻了。同学们不问我，去问我同寝的兄弟：真的？老赵要追系花了？从老大到老七个个都被烦的头大如斗，最后在门上帖了张条子：所有探听老赵是否要追系花的人概不接待！！滚！！！！那个斗大的“滚”字是用红墨水写的。这一来反而弄的欲盖弥彰，坐实了老赵就是要追系花，然后眨眼间就流传出了无数关于老赵如何死缠烂打，一天一束花，一天一首诗，一天一封情书，给系花打饭占坐买饮料等等故事，在不同的故事里我在同一时刻干着几样互不搭边的事，男生们在告知女生们这一大消息时振振有辞：真的！怎么不是真的！当年我追你情书还是老赵写的！他一天写不了一封咱们学校没人行了！然后女生就粉拳加之：情书也不自己写，你好讨厌哦……&lt;br /&gt;&lt;br /&gt;　　那几天我真是恨透了这批快嘴。他们简直是为了传播小道消息而传播小道消息的。可我没别的办法，只能寄希望于一贯常理，流言不理它自己就会消亡。可我错了，两天之后我的态度又滋生了新一轮谣言：听说没有，老赵被系花甩了！真的假的？能骗你吗？那天我亲眼看到系花退给老赵三百块钱饮料费！！天啊……………………………&lt;br /&gt;&lt;br /&gt;　　所有的传播活动都是在背着我进行的，只有一个人例外，那就是东方盖茨大牛人大牛人对我的态度忽然间恶劣起来，与我相遇时立刻把头高高扬起，还不忘在鼻子里喷出一个“哼”字。他一定跟系花编造了无数关于我的坏话，可他错了，一个男人在一个女人面前往死里诋毁一个男人只会使那个女人保持对另一个男人的强烈好奇心。换了我一定会轻描淡写的说：老赵？这人不错，就是有点懒于上进些，我们常在一块儿喝酒的。我本来不预备理这个没经验的家伙，可有一天我去系花专教时听到他在里边破口大骂：老赵这人，不是个东西！&lt;br /&gt;&lt;br /&gt;　　我推开门，他第一眼就望见了我，眼神在一瞬间变得有些羞愧，但立刻就再度怒气冲冲起来。&lt;br /&gt;&lt;br /&gt;　　我带着微笑走到他面前：盖茨，我哪里得罪你了，你告诉我好不好？我以后好改进。&lt;br /&gt;&lt;br /&gt;　　盖茨的脸一瞬间涨得通红。你……………你没得罪我！我就是骂你！骂你不是东西！你能把我怎么样？&lt;br /&gt;&lt;br /&gt;　　不能怎么样。我依然微笑着回答：骂我的人很多，要是一个一个非得怎么样下去，我就干不了别的事了。你尽管骂，嗓子累了我请你喝杯芬达。&lt;br /&gt;&lt;br /&gt;　　盖茨好象一只斗鸡一样盯着我，但据我多年的对骂经验来看他是什么也说不出来了。他忽然冲到我面前扬起右手，但立刻被几个人牢牢地抱住了。同时有两个同学一脸惶恐地挡在了我身前。动弹不得的盖茨立刻把话题转向了我祖宗八代的性行为上。忽然他住了口，盯着门口不动。我转回头，系花不知什么时候进来了。&lt;br /&gt;&lt;br /&gt;　　对不起。我收起笑容，诚诚恳恳地说：刚刚我和你男朋友吵架了。&lt;br /&gt;&lt;br /&gt;　　他不是我男朋友。系花的声音冰冷无情。&lt;br /&gt;&lt;br /&gt;　　一瞬间盖茨又挣扎起来，破口大骂：不是就不是！谁稀罕你这种货色！我又不是找不到女朋友！家乡等我的多了！我还要出国！不是就不是！！&lt;br /&gt;&lt;br /&gt;　　系花转身快步跑出了专教，我追出去，教室里又响起了盖茨夹着哭腔的骂声。以后他会明白的。不管他骂什么，所有人都只会当他是在放屁。我在楼道拐角处追上了系花，她站住了，双肩一抖一抖的。我寂寞地靠在墙上，我的手帕已经脏得厉害了。忽然她转过身来抡圆了对我就是一嘴巴。可惜的很，我能征惯战的身体比思想还快地抓住了那只猛抽过来的手。她抽了一下没抽动。&lt;br /&gt;&lt;br /&gt;　　放开我！系花大喊，整撞楼都支起了耳朵。&lt;br /&gt;&lt;br /&gt;　　放开可以，我相当冷静地回答：但是你要答应不再打人。&lt;br /&gt;&lt;br /&gt;　　她点点头，我放开手，瞬间她又是一个大嘴巴抽了过来，这次她本来有机会的，奈何我的手还没放下，而且她的眼神也告诉我她没想好事。于是那只手又被抓住了。随即我小腿迎面骨上一连挨了几脚。我一边挨打一边说：打我没有用。真的恨我就想办法伤害我。然后我放开了她的手。系花反而冷静下来，绺一绺头发，头也不回地转身下了楼。我回过身，几道门洞同时有脑袋缩回，然后门关，然后响起一片嗡嗡的议论，中间夹杂着盖茨的破口大骂声。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　随后的几天很平静，我打听到了系花的呼机号码，还象平常一样夜夜喝酒，并且打听到盖茨最近变得特别能喝，有望创造一个新的不倒神话。随后季节变换的风把日子吹到了五月，当淅沥沥的雨声第一次响彻不眠之夜时，我觉得我忧伤得好似只有十七岁。&lt;br /&gt;&lt;br /&gt;　　然后我出去，找了个公用电话给系花打传呼。&lt;br /&gt;&lt;br /&gt;　　一定过了很久。地下的烟头可以扫成一堆时系花从校门方向慢慢地走了过来。再近些可以看出她淋了雨，头发和衣服紧紧地裹住了身子。她装作没看到我一般信步走来，在擦肩而过的一刹那，我轻轻地说：我已经给你打了五十二遍传呼，这是收费单。&lt;br /&gt;&lt;br /&gt;　　她站住了，看看我，把收费单拿过去揉成一团扔掉，继续走。我在她身后大喊：给我一分钟说话的机会！&lt;br /&gt;&lt;br /&gt;　　系花停下，抬起手腕，开始看表。我说道：我那天去教室只是想还你钱。&lt;br /&gt;&lt;br /&gt;　　她不动，继续看表。&lt;br /&gt;&lt;br /&gt;　　我有些着急，一些话沉郁在我胸口，想说又说不出来。我继续说：这个月你不用管我饭，我给广告公司画了个版面，挣了些钱。&lt;br /&gt;&lt;br /&gt;　　她依然不动。我在惶急之中似乎听到了滴滴答答的时间流逝声。天啊，延长这一分钟吧，事后你可以一年换一秒。我一点一点地冷静下来，说道：除了我妈和我妹妹，你是第一个打我的女性。&lt;br /&gt;&lt;br /&gt;　　系花双肩一耸，不会是在哭吧，一定是在笑。我反而彻底平静下来，悠悠地说道：我喜欢你，我想追你。我说完了，你走吧，回去换件衣服。&lt;br /&gt;&lt;br /&gt;　　一分钟还没到呢。系花忽然说。在雨声之中声音完美得不象是世间人。还有什么要说的？她问。&lt;br /&gt;&lt;br /&gt;　　还没到？我诧异地问。又想了想，实在是想不出什么要说的了。于是我说：没有了。&lt;br /&gt;&lt;br /&gt;　　不请我看场电影？喝杯咖啡/或者轮滑蹦的什么的？系花问到。听不懂声音背后的表情。&lt;br /&gt;&lt;br /&gt;　　那些事都太没品位了。我沉吟着说道。今天报纸上说有个老干部死了，咱们去参加遗体告别吧。&lt;br /&gt;&lt;br /&gt;　　系花嗤的一声笑了出来。我说的是真话，我现在思维迟钝，想不出什么更好的主意。她问：那老干部你认识么？&lt;br /&gt;&lt;br /&gt;　　……不认识。我说。&lt;br /&gt;&lt;br /&gt;　　遗体告别仪式什么时候？&lt;br /&gt;&lt;br /&gt;　　明天上午，要翘两节选修课。&lt;br /&gt;&lt;br /&gt;　　翘四节吧。我想看电影。&lt;br /&gt;&lt;br /&gt;　　那一分钟到没到？&lt;br /&gt;&lt;br /&gt;　　还没到。&lt;br /&gt;&lt;br /&gt;　　老天爷啊。我叫出声来：你真的听见我的话了？&lt;br /&gt;&lt;br /&gt;　　……什么话？&lt;br /&gt;&lt;br /&gt;　　刚刚我用剩下的寿命做筹码，让老天爷把这一分钟延长一点，看来他听到了，说完了这句话我大概就要死。我一边说一边走到系花身后。&lt;br /&gt;&lt;br /&gt;　　不会那么严重吧。系花转过身来：现在你是不是想让老天爷把你剩下的寿命还回来？&lt;br /&gt;&lt;br /&gt;　　不。我希望这一分钟无限拖下去，然后再把我剩下的寿命还回来！&lt;br /&gt;&lt;br /&gt;　　系花笑得直不起腰，你真的相信有老天爷么？我就是了。刚刚我的表忽然停了。&lt;br /&gt;&lt;br /&gt;　　你……&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　整个遗体告别过程庄严肃穆。我只要沉下脸，往那儿一摆就是一幅沉痛哀悼的表情。奈何系花一直忍不住在偷乐。我一边夹紧她挎着我的胳膊，一边悄声的告诫：“严肃点。”“咱们这是在约会。”“别乐了，那边已经有几个人在对咱们怒目而视了。”系花很服从地点点头，然后继续偷乐。好容易挨到了遗体旁边，我很恭敬地放下一朵小白花，拉着系花落荒而逃。&lt;br /&gt;&lt;br /&gt;　　电影太没意思。我们看了一半就跑出来了，坐在台阶上喝汽水。她拿着我的手剪我的指甲玩。&lt;br /&gt;&lt;br /&gt;　　你将来打算去哪儿？她忽然问。&lt;br /&gt;&lt;br /&gt;　　天涯海角地跟定了你。我信口回答，眼睛注视着来来往往的人群。&lt;br /&gt;&lt;br /&gt;　　真的？系花停下来看着我。我放肆地亲亲她的脸，她也亲亲我的。然后没头没脑地说：你用的是舒肤佳香皂。&lt;br /&gt;&lt;br /&gt;　　神。好灵的鼻子。我说，你一定是天上一位神仙下凡。&lt;br /&gt;&lt;br /&gt;　　哪一位？&lt;br /&gt;&lt;br /&gt;　　……二郎神麾下那一只哮天犬。然后我在她踢打我时顺势抱住了她，让她躺在坐在我身上，理理她的头发。她无限柔情地看着我，最后叹了一口气：知道吗？在图书馆那次我就对你特倾心。现在你越来越有趣了。放我下来。&lt;br /&gt;&lt;br /&gt;　　不放。&lt;br /&gt;&lt;br /&gt;　　放我下来。&lt;br /&gt;&lt;br /&gt;　　我要一直抱着你直到变成雕像。&lt;br /&gt;&lt;br /&gt;　　那一刻系花绝对是意乱情迷的，我觉得我可以想怎样就怎样。但我没有怎样，因为我只是个痞子，不是败类。我痛骂自己无数遍之后太息一声：下来吧，该上的课还得回去上。&lt;br /&gt;&lt;br /&gt;　　不。你说过要一直抱着我变成雕像的。&lt;br /&gt;&lt;br /&gt;　　那我把你抱回学校去。&lt;br /&gt;&lt;br /&gt;　　系花惊叫一声，身手敏捷地从我身上蹦了下来，察觉到自己的失态之后，不好意思的笑了笑。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　不出所料，学校里早已乱成了一锅粥。我翘课很正常，系花翘课可是开天辟地以来头一遭。课堂上讨论声音之大把老师活活气走了。无数人向别人夸耀自己的先见之明：老赵要追系花吧，你看我说过没错吧，这不，两人一起翘课看电影去了。这算是好一点的，歹毒一点的也有：老赵能坚持这么长时间？他们在哪家旅馆？不会在学校招待所吧？系花回来时肯定衣衫不整的。干了什么只有天知道。天知道？我自嘲地想：天的确知道，我差一点变成雕像。&lt;br /&gt;&lt;br /&gt;　　当晚的酒局前所未有的大，除了盖茨，所有认识的同学全都分期分批地挤进了我们宿舍。那一晚我们把小卖部的库存啤酒全部喝光，搞的卖东西的大姐摸不着头脑：怎么回事？男足世界杯没能出线啊！最后一个进来的同学喝了酒之后严肃的对我说：老赵你要小心些，我听说盖茨准备找人搞残你。我当时喝了八分酒，没放在心上。&lt;br /&gt;&lt;br /&gt;　　事实证明我不必放在心上。盖茨那段时间像霜打的茄子，一天要上十几回厕所，上厕所时踩死一只老鼠浑然不觉，一副失魂落魄的样子。而且五一长假已经到了，我没那么多精神理他，我正在绞尽脑汁使系花感到快乐和幸福。&lt;br /&gt;&lt;br /&gt;　　长假的第二天，我约系花去踏青，意外地遇上了盖茨大牛人，他挎着另一个本系女生，看见我们哼了一声就走了。系花心里一定惆怅不已，所有女人都希望男人为自己守身如玉，哪怕那个男人她不爱或是刚刚被她踹掉。我们看着盖茨和他的新欢走进不远处的麦当劳，隔了一会儿，系花忽然说：我饿了。我说我是穷酸一个请你吃麦当劳就没下顿了，咱们去吃大碗面吧。不知道这话有什么浪漫或是感人。系花听后激动不已，把我的胳膊抱的紧紧的。&lt;br /&gt;&lt;br /&gt;　　我一直认为系花之所以能陷入我的感情陷井或许是因为我带给她别人没有的新鲜感，但是看来不是。爱一个人是不需要任何理由的，这是句浪漫的套话。其实爱一个人很需要理由，爱应该是生存意识和经济意识支配下的神经冲动。我之所以追系花简单明了，就是因为她人长得漂亮，但若她仅仅是长得漂亮而已的话，我很可能在最初新鲜几天之后义无反顾地踹掉她。所以我觉得爱又是一个不断发现对方优点的过程，甚至把对方的缺点当成优点来进行表扬、吹捧和夸耀。在这种理由支配下系花很是干了些让我瞠目结舌的事，例如她在食堂吃饭时听到另外两个女生谈论本系谁能喝酒，都忍不住冲过去向她们大吹我的酒量。没错。系花使小性子、生气和闹别扭的样子在我看来可爱的不得了。但女性不就是因为这些才可爱吗？&lt;br /&gt;&lt;br /&gt;　　我和系花的爱情生活很是引起同宿舍兄弟的怨言，因为这批鲜廉寡耻的家伙经常大白天脱的赤条条地蒙头大睡，系花衣来找我他们就醒，醒了就想上厕所，想也只有憋着，老大说这样下去他迟早会落下神经衰弱的毛病，于是我建议系花以后由我去找她，但看女生楼门的老太太眼睛雪亮，经常义正辞严地拒绝我于城门之外。我们还要进行毕业设计，于是只能抓紧一切点滴时间偷情般的幽会。这一点可能使系花感到非常刺激，也使她注视我的眼睛越来越柔情无边，娇羞无限。这样下去迟早要出事，我怕一但动手，就深陷进去不能自拔了。系花常把她以前的和现在收到的情书给我看，我能看得出其中有一大批是我的手笔。有些懒人甚至不进行抄袭就将原稿送交，另一些是因为我懒，写了一封后照着记忆又写了一封大致相同的交了差，把它们对比着看也是件有趣的事。看完之后她就逼我发誓，天涯海角都跟定了她，有几次我烦得简直想一劳永逸地立个字据算了。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　五月来时，我接到了我叔叔的电话，她在电话里简单地列举了几件事：第一：我妈下岗失业了。第二：我父亲缠身多年的胆结石恶化，目前正在医院待手术。第三：今年的分配政策规定：自费生只能回生源所在地分配。我放下电话直接上了火车站，赶上回家的车，开车之后才想起我今晚答应了系花参加她的生日聚会。事实上我一直都没忘，只不过脑子乱的想不到了。&lt;br /&gt;&lt;br /&gt;　　我没能赶上父亲上手术台，我推开病房门的时候，第一眼就看到了平躺在病床上的父亲。一瞬间手脚冰凉，双眼发酸。父亲看到我之后，本来痛苦的表情渐渐有了一丝笑意。&lt;br /&gt;&lt;br /&gt;　　后来的几个不眠之夜里我想通了一件事，我不可能天涯海角得去追系花，我只能别无选择的回家。不是因为有什么关于自费生分配的狗屁文件，仅仅是因为我的家庭离不开我。就如同目前，我们家送不起红包给主治大夫，可是穷人有穷人的法子，我拎着五斤苹果绕了一下午敲开了他家的门，说：大夫，我爸一条命就交到你手里了。这件事换了我妈或我妹妹都绝对没有半点主意。&lt;br /&gt;&lt;br /&gt;　　一句话，我和系花不是同一种生活中的人。她是系花，我只是个痞子。我很冷静地分析着自己的痛苦，告诉自己；你想毁了这个好女孩子么？然后我叹息并且感到浮生萧条。&lt;br /&gt;&lt;br /&gt;　　我爸病情稍好了一些之后我叔叔托人把我引荐给了当地一家设计院。我们说了一些冠冕堂皇的话，我说我要为家乡经济建设贡献自己的微薄之力，那家设计院的人事科长说我们就是需要你这样有闯劲的小伙子。于是事情大致算是定下来了。回家之后电话铃一直在响，我提起电话，系花的声音传过来，她跟我说她要找我。&lt;br /&gt;&lt;br /&gt;　　我就是。我尽量装作平静的回答。&lt;br /&gt;&lt;br /&gt;　　系花哇的一声哭了出来。在她断断续续、夹杂着抽泣和怨恨的话声中她表达了如下几点大意：学校说我再不回来就给予除名惩罚，她现在正在替我完成我的毕业设计。她打了好多次电话都没有人接，以为我出事了，她想我都快想疯了。&lt;br /&gt;&lt;br /&gt;　　谢谢啊。我强忍着心中的巨大悲痛，语气淡漠地说。我会按行情把钱给你的。&lt;br /&gt;&lt;br /&gt;　　系花在那边破涕为笑：你真是，开玩笑也不选个时间。&lt;br /&gt;&lt;br /&gt;　　有件事我想告诉你。我说。&lt;br /&gt;&lt;br /&gt;　　说吧。&lt;br /&gt;&lt;br /&gt;　　我已经和我们市设计院签了合同。&lt;br /&gt;&lt;br /&gt;　　什么？&lt;br /&gt;&lt;br /&gt;　　那个院院长的女儿和我一批分进。她人不错，长的也漂亮，我把她追到手之后就回去。&lt;br /&gt;&lt;br /&gt;　　沉默。半晌之后系花轻轻笑着说：你这人真是。有时候我都不知道你说的话到底是真的假的。&lt;br /&gt;&lt;br /&gt;　　我听到了自己心脏慢慢绽裂的声音。我有生以来第一次体会到生存本身就是一种痛苦。可是我没有办法。况且古今以来，多少生死不渝的情侣都被这样那样的事情拆散了，再多一对又算得了什么呢？系花早就跟我说过毕业后要先去北京，然后考GRE，可是我不能。我唯一想考的研究生专业是古汉语。我也抛不开我的家人，我就象扎根在大地之上的草，鸟儿飞过是鸟儿的事，也许鸟儿会站在草茎上稍做休息，但草是留不住鸟儿的。我在自己彻底崩溃之前急急地说道：再见。然后就扣了电话。&lt;br /&gt;&lt;br /&gt;　　片刻之后电话又响了起来，我没有接。电话铃宁死不屈地持续响了下去。我躺在床上，透过窗子数外面的星星，感觉心房一阵阵的抽痛。大约半小时后，电话铃声停了。宿舍要关门了，她一定得回去。我推开窗子，窗台离地面有三十米高，任何人掉下去之后都会粉身碎骨。夜风很长，很凉。楼下的什么地方传来很有名的歌&lt;此情可待&gt;。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　两天后我一脸风尘地回到了学校，身上蹦子皆无。临走前我把我妈给的两百块钱又悄悄塞给了我妹妹。幸亏火车上有水，要不大概下不了车。我晕头转向地冲到了系办公室，听着劈头盖脸的批评履行完补假手续。考虑到确实事出有因，学校未做追究，只是警告我不可再犯。&lt;br /&gt;&lt;br /&gt;　　我从系里出来时已经饿得快要虚脱了。我冲进小卖部，依仗往日的信誉赊出了一瓶啤酒和一个面包，就坐在操场上开始吃。这时已经将近中午，低年级的学生们下课到食堂，看见我时窃窃私语。我低下头，我的衣服还算干净整齐，他们不至于把我当成要饭的。爱怎么说就怎么说吧。&lt;br /&gt;&lt;br /&gt;　　忽然我被人揪着领子提了起来。回头一看，是老大跟老三。他们一脸惊喜之色：回来了？快去专教看看吧。系花已经替你画了好几天图了。&lt;br /&gt;&lt;br /&gt;　　我跨进专教时教室里一片寂静，稀稀拉拉的几个学生都在聚精会神地埋头苦干，系花也在。不久之后有个男生抬头看到了我，吃了一惊，然后快步走到一名女学生桌前，悄悄地说了句什么。那名女生随即走到系花身边，趴在她耳朵边说话。系花抬起了头，要是走在街上我绝对认不出她。不到两周的时间她变得憔悴不堪，楚楚可怜。教室里其他人全都知趣地互相扯一扯衣袖退了出去。我走上前，无限爱怜地看着系花本来鲜艳娇嫩，现在却长了一溜水泡的干裂嘴唇。系花怔怔地望着我，小心翼翼地问：电话里你骗我的是不是？&lt;br /&gt;&lt;br /&gt;　　那一刻就是铁石人也会软下心来。我再也没有任何勇气对系花撒谎。于是我只有不说话，我低下头去，慢慢翻看着系花替我完成的图纸。&lt;br /&gt;&lt;br /&gt;　　电话里你骗我的是不是？系花又问了一模一样的一句话，声音象纸一样薄。一刹那间我微微弯地的身躯一震。我感到心如刀绞。可是在我刚开始追她时就注定了必须伤害她一次，当时我没有意识到我们生活在不同的社会圈里。于是我硬起心肠，声音沙哑地说：没有骗你。&lt;br /&gt;&lt;br /&gt;　　哦。系花的声音空洞。我抬起头，她呆了半晌之后默默地走向房门，脚步飘忽。我紧紧地抓住桌子，否则我会冲上去牢牢地一把抱住她的。&lt;br /&gt;&lt;br /&gt;　　系花终于走出了专教。门还在来回摆动时外面就传来了物体堕地声。我冲出去，几个守在外面的女生正搀着缩成一团，无声抽泣的系花。她们全都以仇恨和蔑视的目光看着我。最后她们把系花搀走了。我失魂落魄地在走廊上转来转去，不成调子地低声呼喝与狂笑，并且悲哀地发现我爱她爱得居然如此深刻。我觉得脸颊有点冷，伸手一摸，居然是一滴泪。&lt;br /&gt;&lt;br /&gt;　　后来我出去给广告公司打电话，我饿了，我要吃饭，而学校里大概没有一个人肯管我饭了。不管我是痞子还是败类，我都得活。&lt;br /&gt;&lt;br /&gt;　　在其后的几天里操场成了我的饭桌。我总是在中午和晚上独个儿买一瓶啤酒和一只面包坐下就吃。操场上飘来张楚的歌&lt;孤独的人是可耻的&gt;，我觉得我确实可耻，何止可耻，简直是无耻之极。象我这样的早该拉出去成批枪毙了。几天来老是有个似曾相识的低年级女生在我不远处停下，看上半天再走。于是在极度的空虚与无依无靠之中我开始象一个真正的流氓一样无法无天地勾引她。不久我就成功了，两天之后又觉得没意思，于是把她踹了。后来又换了一个，又踹了。我不知道这种留不下任何记忆的日子还要过多久。&lt;br /&gt;&lt;br /&gt;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　六月。天气热了起来，还有一个月就要毕业了。有一天正当我照例无聊地在操场上喝酒时，系花她们寝室的一个女生出现在我面前，严肃地对我说：她有话要和你说。&lt;br /&gt;&lt;br /&gt;　　寝室里只有系花一个人，我在她对面坐下，惊奇地发现她脸上的美丽之中夹杂了少许茫然和心碎。我垂下头，她开口了。她说她在墨尔本有个叔叔，老两口无儿无女，想叫她去澳洲读书定居。大概七月分就要走。&lt;br /&gt;&lt;br /&gt;　　这件事应该用不着和我商量。我说。其实我在一片茫然和悲痛之中觉得自己死了算了。&lt;br /&gt;&lt;br /&gt;　　她有些烦躁地摇摇头。&lt;br /&gt;&lt;br /&gt;　　你还喜欢我么？哪怕只有一点点？她忽然开口问到。我不知所措，抬起头来，只能看到她一双迷离的搀杂着希望与伤心欲绝的眼睛。我沉默了片刻，点点头。&lt;br /&gt;&lt;br /&gt;　　可以再和我多交往一个月么？她急切地问。&lt;br /&gt;&lt;br /&gt;　　我一时无法回答。最后相当谨慎地说：别玩了我怕我会陷进去，你也别陷得太深。&lt;br /&gt;&lt;br /&gt;　　这是我在国内最后一段日子了，我想过得快乐些。你能帮我骗骗我自己么？她的眼泪夺眶而出。一瞬间我的心房又不胜酸楚。我想到了上几周噩梦般的日子，想到了我给她和我自己的巨大伤害。最后我说：&lt;br /&gt;&lt;br /&gt;　　可以。&lt;br /&gt;&lt;br /&gt;　　系花的脸上浮现出了一种笑容，那是一种悲伤之中的笑容，象一朵行将凋落的梅花，让人觉得甜美又无限惋惜。她别过了头：从明天开始好了。尽你最大的努力骗我吧。&lt;br /&gt;&lt;br /&gt;　　于是在整个青春的最后一段岁月里我和系花恢复了形式上的恋人关系，我们依然甜言蜜语，如胶似漆，但很难，很难再找回当初的感觉了。我们就好象一对吸毒者，在饮鸩止渴一般疯狂地追寻精神寄托。我们清清楚楚地知道最后必然会导致更深的痛苦，但我和系花都顾不了那么多了。随着毕业的临近，我们也变得越来越是柔情似水。日期是个敏感的话题——系花会在毕业第二天乘航班到北京，然后转去墨尔本。&lt;br /&gt;&lt;br /&gt;　　在经历了答辩的紧张、彻夜的狂欢和抱头痛哭之后这一天终于到来了。在毕业的那一晚我和系花最后看了一场电影，其间她把我的左臂掐得乌青。最后我们又象从前一样坐在电影院前的台阶上。系花躺在我怀里对我说：象上次那样抱着我。我服从了。&lt;br /&gt;&lt;br /&gt;　　你曾经跟我说真的恨你就伤害你，我恐怕做不到了。因为我爱你，爱得快要死了。系花说。&lt;br /&gt;&lt;br /&gt;　　我知道。&lt;br /&gt;&lt;br /&gt;　　你爱不爱我？&lt;br /&gt;&lt;br /&gt;　　……………………………………………………&lt;br /&gt;&lt;br /&gt;　　就算是骗我吧，说你爱我！&lt;br /&gt;&lt;br /&gt;　　……………………………………………………&lt;br /&gt;&lt;br /&gt;　　你看来是不会开口了。系花一声轻叹，单薄的身子在夜风之中动了动。只要你说爱我，我就跟你回你的家乡去生活一辈子，要不我们一起出国，我要嫁给你。你怎么了？你哭了？你哭了！&lt;br /&gt;&lt;br /&gt;　　我底下头，刚刚有一滴泪珠掉在了系花的脖子上。不是我的还能是谁的？&lt;br /&gt;&lt;br /&gt;　　快点说啊！！我快没时间了。系花泣不成声。&lt;br /&gt;&lt;br /&gt;　　我没有哭。我尽量平静地说。可能是掉雨点了。咱们回去吧。恰恰在这个时候远处响起雷声，眨眼间一滴滴雨水打在干燥的地面上，可能还有我的泪。系花慢慢地站起身来，我摸摸口袋，那里有一封信，不，是一张便条。我已经没有语言组织能力去完成一封信了。那是我为自己写的第一封情书，非常短。&lt;br /&gt;&lt;br /&gt;　　“你问我是否爱你，是的。我从未如此强烈地爱过一个人，象爱你一样。也正因为爱你，我不能让你把终身托付给我这个浪荡流离、一无是处的人。我在电话中所说的一切全是假的，这些谎话伤害了你，却彻底地毁灭了我。如果我可以出国的话，如果我的家人不需要我的话，如果我能给你幸福的话，我会亲自对你说。可是现在不能。我只能谢谢你留给我的回忆，我会用它过完剩下的岁月。别了，我深深爱着的人，我爱你。”&lt;br /&gt;&lt;br /&gt;　　本来是想在上飞机之前交给她的。现在快湿了。我在犹豫该不该拿出来。我抬起头，系花在雨中等待着。&lt;br /&gt;&lt;br /&gt;　　你是我一生中见过的最好的女人。我在心里说，悄悄的把信取出来，揉成一团扔在地上。&lt;br /&gt;&lt;br /&gt;　　你明天还要赶飞机，我送你回去吧。我说。&lt;br /&gt;&lt;br /&gt;　　不用了。系花回答，我已经很满足了，谢谢你给我这些美好的时光，再见。她在哭。&lt;br /&gt;&lt;br /&gt;　　再见。&lt;br /&gt;&lt;br /&gt;　　我目送着系花消失在夜之尽头，忽然我快步追上去，一边跑一边大喊：等等！我还有话要说！我不管啦！放走你我会一辈子后悔的！我爱你！&lt;br /&gt;&lt;br /&gt;　　“嘭”的一声撞击声打断了我的话，我姿势笨拙地飞了起来，看到了一对巨大的车灯和一张惶急的司机的脸，在晕过去或死过去之前我想：她听到了吗？&lt;br /&gt;&lt;br /&gt; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆&lt;br /&gt;&lt;br /&gt;　　黑。。。。。。&lt;br /&gt;&lt;br /&gt;　　黑死了。。。。。。&lt;br /&gt;&lt;br /&gt;　　很黑！我忽然喊出声来，伸手向往眼前摸，立刻被几双有力的手按住了。瞬间人间的一切又回到了我的思想和感觉，嗅觉告诉我：这里是病房。&lt;br /&gt;&lt;br /&gt;　　放轻松。老大的声音。没事的。断了两根肋骨而已。你昏迷了一整天。那司机人还不错，他按你电话本上的号码给我们打了电话。&lt;br /&gt;&lt;br /&gt;　　我的眼睛呢？我惶急得大喊。&lt;br /&gt;&lt;br /&gt;　　头部遭到重击，暂时失明。放心，一个月后就又能看得见了。&lt;br /&gt;&lt;br /&gt;　　系花呢？我女朋友呢？&lt;br /&gt;&lt;br /&gt;　　走了，去了墨尔本。&lt;br /&gt;&lt;br /&gt;　　我在病房里放肆地哈哈大笑起来，最后不知道什么时候变成了嚎哭。那司机干嘛不把我撞死呢？&lt;br /&gt;&lt;br /&gt;　　兄弟还是兄弟。老大老三他们把我送回了家，我也算是毕业了，伤好后就可以工作了。我要用第一个月的工资买副手套给妈妈，买个暖水袋给爸爸。同寝的兄弟都没有走，他们说是反正渡假，在哪儿都一样，其实是怕我闷，我知道。从他们的对话中我知道盖茨考得一塌糊涂，最后偷渡去了美国。他们给我留了一张通讯录，最后，他们说系花直到飞机起飞前都一直在等我，她不知道我被车撞了。&lt;br /&gt;&lt;br /&gt;　　除了眼睛之外我的伤好的差不多了，又可以喝酒了。我们再度开席。在某次酒席上老三忽然冲进来大喊：系花给你来信了！她知道你们家的地址！&lt;br /&gt;&lt;br /&gt;　　不用念了。那信是你们昨天晚上编的吧。我冷冷地说。&lt;br /&gt;&lt;br /&gt;　　没有人回答。我有史以来第一次为我猜中了感到伤心无限。&lt;br /&gt;&lt;br /&gt;　　她会回来找你的。良久之后老大说：爱是没办法的事。&lt;br /&gt;&lt;br /&gt;　　她不会的，她会有新的生活。我语气平静，然而心灵却有如炼狱。她会把我忘了的。&lt;br /&gt;&lt;br /&gt;　　。。。。。。你今后打算怎么办？不想出国？考GRE吧，你很聪明的。&lt;br /&gt;&lt;br /&gt;　　我只想快点过完剩下的岁月。我忧伤地说。夏日被这句话冲得一凉。&lt;br /&gt;&lt;br /&gt;　　。。。。。。忘了她吧，忘了就好了。&lt;br /&gt;&lt;br /&gt;　　我会的。&lt;br /&gt;&lt;br /&gt;　　我没说谎，我一定会忘了那个令我刻骨铭心的人，我会用剩下的六十年寿命，一点一点地忘掉她。或者，我在彻底把她遗忘之前就已经死去了？&lt;br /&gt;&lt;br /&gt;　　外面的天空很静，有长风吹过。我的话溶在风中，眨眼就消失了踪迹。我举杯，饮干，在这个关于系花和她美丽的朝代之中，我默默地走着，却不回头…… ……　……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-9203514458195618795?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/9203514458195618795/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=9203514458195618795' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/9203514458195618795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/9203514458195618795'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/10/blog-post.html' title='系花（转载）'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4698907603827209503</id><published>2008-10-10T14:59:00.000+08:00</published><updated>2008-10-10T15:00:29.023+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>这个BLOG编辑代码太辛苦了，有时间我要给它写一个小插件</title><content type='html'>这个BLOG编辑代码太辛苦了，有时间我要给它写一个小插件&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4698907603827209503?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4698907603827209503/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4698907603827209503' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4698907603827209503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4698907603827209503'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/10/blog.html' title='这个BLOG编辑代码太辛苦了，有时间我要给它写一个小插件'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-8680493644106983059</id><published>2008-10-10T14:09:00.012+08:00</published><updated>2008-10-24T11:41:24.330+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>用Javascript操作Cookie</title><content type='html'>我们在WEB开发中，一般很少去操作Cookie，但对于一些不是很重要的用户行为的记录，为了减轻服务器的负担，使用Cookie是个不错的选择。&lt;br /&gt;记录Cookie就不用说了，比较简单。以下是我用Javascript实现的一个通用的记录Cookie的function：&lt;br /&gt;&lt;code&gt;/*name：Cookie名*/&lt;br /&gt;/*value：Cookie值*/&lt;br /&gt;/*expires：Cookie保留时长，以分钟为单位*/&lt;br /&gt;/*path：可访问此Cookie的网页的路径*/&lt;br /&gt;/*domain：域名，如：google.com*/&lt;br /&gt;/*secure：Cookie在网络传输过程中是否是加密的*/&lt;br /&gt;function addCookie(name,value,expires,path,domain,secure){&lt;br /&gt;　　　　if(name &amp;&amp; name.length &gt; 0 &amp;&amp; value){&lt;br /&gt;　　　　　　　　var _cookie = name+"=" + escape(value);&lt;br /&gt;　　　　　　　　if(expires &amp;&amp; !isNaN(expires))&lt;br /&gt;　　　　　　　　　　　　_cookie += ";expires=" + new Date(new Date().getTime() + expires * 60 * 1000).toGMTString();&lt;br /&gt;　　　　　　　　if(path) _cookie += ";path=" + path;&lt;br /&gt;　　　　　　　　if(domain) _cookie += ";domain=" + domain;&lt;br /&gt;　　　　　　　　if(secure) _cookie += ";secure";&lt;br /&gt;　　　　　　　　document.cookie = _cookie;&lt;br /&gt;　　　　}&lt;br /&gt;　　　　else alert("参数不符合要求！");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;那么，该如何用Javascript去读取Cookie呢？JS中的document.cookie只能取出所有的Cookie的字符串表示形式，而不是取得指定的某个Cookie。&lt;br /&gt;比较常见的方法是分析用document.cookie取出的值，找到指定Cookie名的起始点和终止点，然后取出值。很明显这种方法的效率是低下的，特别是当记录的Cookie比较多时这种情形更明显。&lt;br /&gt;另外一种比较好的方法是使用正则表达式分析document.cookie取出的值，但当需要读取较多的Cookie（或频繁地读取Cookie）时，就需要频繁地对document.cookie进行匹配，同样存在着效率的问题。&lt;br /&gt;&lt;br /&gt;下面说说我的思路：&lt;br /&gt;我们先来看看Cookie是如何存储的。输出document.cookie的值，是类似于这样字符串：name=cyf; qq=415664287　。很明显，非常有规律。如果能将这个字符串转换为JSON，就能非常方便地读取了。JSON作为Javascript的内置数据结构，用Javascript对JSON进行操作是非常方便和有效率的。下面开始实现：&lt;br /&gt;&lt;code&gt;function convertCookieToJSON(){&lt;br /&gt;　　　　var _cookie=document.cookie.replace(new RegExp("=","gi"),":'").replace(new RegExp(";\\s","gi"),"',");&lt;br /&gt;　　　　return eval("({" + _cookie + (_cookie.length &gt; 0 ? "'" : "") + "})");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;既然得到了用JSON数据结构表示的Cookie，要读取指定Cookie的值就变得非常简单了，如下所示：&lt;br /&gt;&lt;code&gt;　　　　var _jn = convertCookieToJSON();&lt;br /&gt;　　　　var _name = _jn.name;&lt;br /&gt;　　　　var _qq = _jn.qq;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-8680493644106983059?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/8680493644106983059/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=8680493644106983059' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8680493644106983059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8680493644106983059'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/10/web.html' title='用Javascript操作Cookie'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-526633806222944706</id><published>2008-09-11T22:46:00.004+08:00</published><updated>2008-10-28T18:11:05.198+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Javascript小技巧汇总</title><content type='html'>&lt;strong&gt;持续更新中。。。。。。&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;取得IFame中的元素&lt;/legend&gt;&lt;br /&gt;若WEB页面中有一ID为“ifm”的IFrame，该IFrame的SRC指向的Page中有一ID为“txt”的元素，则可这样获得此元素：&lt;br /&gt;&lt;code&gt;var _txt=document.getElementById("ifm").contentWindow.document.getElementById("txt");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;接着，就可对其进行操作了，如：&lt;br /&gt;&lt;code&gt;_txt.value="Hello World";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;经测试，IE和Firefox均支持。&lt;br /&gt;&lt;/fieldset&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-526633806222944706?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/526633806222944706/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=526633806222944706' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/526633806222944706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/526633806222944706'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/javascript.html' title='Javascript小技巧汇总'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-6037362642362485314</id><published>2008-09-09T21:53:00.002+08:00</published><updated>2008-09-09T22:01:46.302+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>住在我隔壁的小夫妻（转载）</title><content type='html'>　　你想洗礼一次自我的心灵吗？你想重新审视自己的人格吗？那么就请你花点时间，耐心的看完这篇文章。无须探究故事的真实，因为这个社会已经不太“真实”，也经不起真实的推敲。 &lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（一）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　从搬进这家民房的第一天，我就开始怀疑我隔壁的那个储藏室根本没住人。一天到晚黑黢黢的，没半点声响。 &lt;br /&gt;&lt;br /&gt;　　我终于还是忍受不了房间里那个破沙发了，便又一次跟房东要求，能不能让我把一些杂物放进隔壁的储藏室。房东斜着眼，哼了一下：跟你说过多少次了？那储藏室租给一对民工夫妇了，里面住着人呢！ &lt;br /&gt;&lt;br /&gt;　　我算见识了广东人的抠门，就打算再也不去碰这一鼻子灰了。 &lt;br /&gt;&lt;br /&gt;　　那天，我出来倒垃圾，经过储藏室的门，听到里面窸窸嗦嗦的，气就不打一处来，我知道肯定是老鼠又在里面大**了。我狠狠地一脚踹在门上，还不解气，就又猛踹一脚。 &lt;br /&gt;&lt;br /&gt;　　门吱嘎的开了，我吓了一跳。我以为我把门踹坏了；正忐忑不安的时候，一个女人的脑袋伸了出来，确切的说应该是个女孩或者少妇，从她那蓬松的马尾辫和还有些稚气的脸上我实在无法判断她的年龄。 &lt;br /&gt;&lt;br /&gt;　　她轻轻的问道：您找谁？ &lt;br /&gt;&lt;br /&gt;　　我愣了，呆在那里，不知道说什么好。&lt;br /&gt;&lt;br /&gt;　　这时候一个有些猥琐的男孩子也把脑袋凑着伸了出来，迟疑了一下说：你是隔壁的吧？！&lt;br /&gt;&lt;br /&gt;　　我一下子醒悟过来，说：是啊，是啊。 &lt;br /&gt;&lt;br /&gt;　　男孩子笑嘻嘻的得意的说：我上次下班回来见过你。 &lt;br /&gt;&lt;br /&gt;　　周围的空气戛然的停在那里，有些尴尬。我赶忙说着：不好意思，不好意思，打扰你们了。便迅速的溜回自己的房门。我听到了他们轻轻关房门的声音，还听到了他们窃窃私语的声音，好像在说：是不是我们平时动静太大，吵到邻居了？那以后我们要多注意了！之类的话。 &lt;br /&gt;&lt;br /&gt;　　我喝了口水，平静下来，我才确信，那个一天到晚黑洞洞的储藏室里真的住着俩人，这俩人也许就是房东说的那对民工夫妇。 &lt;br /&gt;&lt;br /&gt;　　我突然冷笑了一下，还夫妇呢，一看也就20来岁的样子，私奔出来的？还是新婚小夫妻？不自觉的笑了笑，自我解嘲的想：民工么， 农村出来的，结婚普遍早。那看来以后得称呼，那男人，那女人了。这样想着，还抑制不住的笑出了声。 &lt;br /&gt;&lt;br /&gt;　　第一次跟这对小夫妻接触是因为我忘记了带钥匙，进不了门，便找他们借工具，想把门撬开。 &lt;br /&gt;&lt;br /&gt;　　那是我第一次真正的去敲那个门，也是第一次去光顾那个阴暗的储藏室。 &lt;br /&gt;&lt;br /&gt;　　门开了，他们夫妻看到我似乎很惊喜，赶忙的让我进屋。我说明来意，他们夫妻就转身找家伙去了。门开着，里面黑乎乎的，我忍不住往里迈了一步。不知道脚被什么绊了一下，我以为是有老鼠，吓得“哎哟”大叫。他们中的一个，立马打开了灯。天花板上的那盏小灯散发着昏黄的光，我敢肯定那灯泡不会超过10瓦。我很怀疑他们能从哪里买到这样的灯泡，在这样一个南方大都市我实在想象不出来哪里会有卖这样的灯泡的。我猜想也许那是他们从老家带来的也说不定。 &lt;br /&gt;&lt;br /&gt;　　我打量着这个我曾经很想把杂物放进来的储藏室。我以最奢侈的估算，房间不会超过10个平方。四周没有任何一个窗户，门是唯一可以通风和出入的地方。房间里散发着一种潮湿的霉味，钻进嗓子眼，让人感觉恶心。我忍不住一个箭步退了出来。 &lt;br /&gt;&lt;br /&gt;　　可是我却清楚的看到，房间里除了一张单人木板床和零落在地上的锅碗瓢盘，真的没有任何插脚的地方，我真佩服那对小夫妻是怎么呆在里面生活的。&lt;br /&gt;&lt;br /&gt;　　最后，夫妻俩找到他们做饭的刀，也是唯一一个有可能打开我房门的工具，费了九牛二虎之力帮我弄开了门。 &lt;br /&gt;&lt;br /&gt;　　门开了，我并没有任何要他们进来的意思。他们站在门口，把着门框。踮着脚尖，一副腼腆的样子，打量着我这个两室一厅的房子。女人终于说了一句话：怎么从来没看见过您先生啊？我怔着脸说：我还没结婚。女的脸红了，似乎说错了话，低着头，不敢搭腔。男人不好意思地说；那您一个人住这么大的房子啊。我没回答。 &lt;br /&gt;&lt;br /&gt;　　两个人，半响没说话。不知道是谁先看到了我放在客厅的电脑，便忍不住说：您有电脑呢！ &lt;br /&gt;&lt;br /&gt;　　我心里一个咯噔，民工也懂电脑？我说：是啊，你会上网么？ &lt;br /&gt;&lt;br /&gt;　　男的挠了挠头皮说：我们读大学的时候，有电脑课，上过机。 &lt;br /&gt;&lt;br /&gt;　　我嗖的浑身一阵发凉，大学？他们是大学生？可是怎么看怎么不像阿！ &lt;br /&gt;&lt;br /&gt;　　我心里多少有点被欺骗的感觉，就故意问：那你们现在做什么工作的？你们什么学校毕业的？读的什么专业啊？ &lt;br /&gt;&lt;br /&gt;　　他们抿了抿嘴，有点不好意思，我以为这下可揭穿你们了，真虚伪！ &lt;br /&gt;&lt;br /&gt;　　突然男的开口了：我们读的学校不好，也就是个三流大学，我跟我老婆是一个大学的又是同乡，她读文科，我读理科。现在我做业务员，她在餐馆当服务员。 &lt;br /&gt;&lt;br /&gt;　　我撇了撇嘴，“哦”了一声。 &lt;br /&gt;&lt;br /&gt;　　“我是**大学研究生毕业”在我说完这句话的时候，我才发现，门口的两个人不知道什么时候已经走了。 &lt;br /&gt;&lt;br /&gt;　　我有点失落，猜测着他们有没有听到我提到**大学这个重点大学的名字。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（二）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　众所周知，这几年扩招，大学生可谓是遍地爬。大学容易读了，可是就业却难多了。三流大学的毕业生，真的是连民工都不如，要体力没体力，要脑力又够不上格。而且三流大学学费并不见得低，甚至要比好的大学要高很多，我就知道很多三流大学学费高的惊人。 &lt;br /&gt;&lt;br /&gt;　　看这对小夫妻，估计是农村出来的，当初他们也许并不知道，花光家里的积蓄，得到的这一纸文凭，原来在这个社会里也许什么都不是。背负着一身债务，出来打工才知道，原来三流大学的大学生只能跟小学没毕业的靠体力吃饭的民工是一个层次的，都是命比纸薄，人比命贱的。 &lt;br /&gt;&lt;br /&gt;　　第二天，虽然我内心深处还在揣测着，他们拿刀给我撬门技术这么好会不会哪天趁我不在也会这样熟练的顺手？可是总还是觉得别人帮了忙过意不去，就买了几斤南方的水果给他们拎了过去。 &lt;br /&gt;&lt;br /&gt;　　他们似乎受宠若惊，说什么也不要。我就告诉他们这是广州这边的规矩，找人帮了忙，一定要表示的，不收就是不给我面子。他们才诚惶诚恐的收下了。 &lt;br /&gt;&lt;br /&gt;　　没过一会，他们又来敲我的门。我以为是他们是把水果又送回来的，结果开门后的第一句话就说：请问，这水果最多能放多久？我诧异的望着他们，心里有点气，心想：难道他们以为我给他们买的水果过期了？我正要发作，他们便补充一句：能放到过年回家么？我愣了，他们说：过年没啥带回去的，这水果一定不便宜吧？我们想过年回去的时候带回去当年货。我有点哭笑不得说：广州天热，不能放那么久的，个把星期就得坏了。 &lt;br /&gt;&lt;br /&gt;　　他们有点无奈，说了句谢谢，就走了。 &lt;br /&gt;&lt;br /&gt;　　可是我明明听到：男的对女的说：要不我们想办法留到8月15，过节的时候打打馋吧。 &lt;br /&gt;&lt;br /&gt;　　一个月后，农历的8月15，单位每人发了一盒高级月饼，拿回来后，我拆开尝了一个，感觉很难吃，就想丢掉。 &lt;br /&gt;&lt;br /&gt;　　经过那个储藏室的门，我改变了主意，想着丢了也怪可惜的，他们那么可怜，倒不如给他们过节的好。 &lt;br /&gt;&lt;br /&gt;　　看着门虚掩着，我没敲，就径直推开了，那盏昏黄的灯亮着，两个人蹲在地上，男的正在小心翼翼的切一个小小的月饼，正准备把一块稍大点的给老婆吃，看到我站在门口，不知所措的说不出话来。女的正低头啃着明显已经有点坏了的水果，吃的津津有味，我看到她没有削皮，番石榴和火龙果都是带着皮吃的。 &lt;br /&gt;&lt;br /&gt;　　男人呆了五秒，赶紧要把那块稍微大点的月饼让给我吃，我说我不吃月饼的，然后说明了来意。把那盒月饼放在门口就准备离去。女人叫住了我：大姐，我都不知道说什么好了，你看，我们吃的水果也是您给的，您又给我们送月饼来，我都不知道该怎么报答您了，本来今天老公公司给他发了一个月饼，我们商量着给您送去的，可是一个拿不出手，就没好意思，我们也没什么稀罕物，你有啥事要帮忙的，一定吱应一声啊！ &lt;br /&gt;&lt;br /&gt;　　我这才知道，那一个月饼是她老公发的，我也这才知道，她啃的水果是一个月前我送给他们的。我本来想说：吃火龙果要扒皮。可是我忍了忍，没有说出来。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（三）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　周末，隔壁的女人来敲门，问我有什么事是他们帮得上忙的，我笑着说没有。她眼尖，看到我沙发上放着一大堆脏衣服，非要帮我洗，我说有洗衣机，一会丢进去就是了，不费事的。她尴尬的站在那里，像是很对不起的样子，不知道该做什么好。 &lt;br /&gt;&lt;br /&gt;　　我第一次，很热情的邀请她进门，坐一会。她脱了鞋，光着脚丫子，进了门。战战兢兢的，似乎怕弄脏了我的地板，不敢使劲踩下去。她哪里知道其实我已经一个多星期没有擦过地板了。 &lt;br /&gt;&lt;br /&gt;　　她告诉我，今天她休班，本来想帮我做点事的，可是没想到没做成。她似乎很羞愧，一直细声细气的答着我的话。她在我这里呆了半个小时，告诉了我他们的境遇，说那些话的时候她一直很温柔，像在说一个故事，丝毫没让我感觉到她的埋怨和委屈。 &lt;br /&gt;&lt;br /&gt;　　我给她倒的那杯矿泉水，她一直攥在手里，临走的时候，她望了望我，我点头示意，她带走了那个一次性的纸杯子和那杯矿泉水。我猜，她是想留给她的老公喝。&lt;br /&gt;&lt;br /&gt;　　从今天我才知道，他们是这样的： &lt;br /&gt;&lt;br /&gt;　　两个农村出来的孩子，父母都是守着一亩三分地的地道农民，每年家庭收入从来不会超过2000的贫困家庭，又都考上了同一所三流大学，学费每年的需要是父母不吃不喝的5 年的家庭收入。读不起书，不想去，父母不肯，说这是唯一一次改变农村孩子命运的机会，跪下来求你去读。来读了，没钱交学费，好歹有个助学贷款，好不容易凭着优异的成绩申请到了，可是毕业的时候却因为没有还清贷款不发毕业证。四年的生活费是靠着奖学金艰难的撑下来的。到头来，辛苦的付出却换不到那一纸毕业证。于是两人只能出来打工赚钱，攒够了钱好回去赎回毕业证。 &lt;br /&gt;&lt;br /&gt;　　他们租着这个城市最廉价的房子，吃着这个城市最廉价的饭菜，过着这个城市最贫困的生活，可是一年到头下来却还攒不到1万块钱。这样下去，要还完两人的贷款还要8年。&lt;br /&gt;&lt;br /&gt;　　我不知道8年对一个人的青春意味着什么，也不知道8年后是不是还能有机会有权利买回他们的毕业证。可是我知道8年的这样的生活，不是随便哪一个人能撑得住的！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（四）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　那天，我回来的时候，有点晚，楼道里的灯已经都开始亮着了，经过隔壁门口的时候，看到他们门开着，屋里照样还是黑黢黢的，男的蹲在门口大口大口的扒着面条，吃的很香。我问了一句：灯坏了？他先是迟疑了一下，然后憨憨的笑了：没呢，省电，反正楼道里的灯亮着，开着门，屋里也挺亮堂的。我笑了。我这才知道，怪不得他们屋里天天都不开灯。 &lt;br /&gt;&lt;br /&gt;　　那晚他们的门一直敞开着到很晚。我在客厅里能隐隐约约的听到他们的谈话。 &lt;br /&gt;&lt;br /&gt;　　他们先是谈了会，这个月又多花了多少钱，什么肥皂用的太快了，水太浪费了，上次过生日不该买那2斤肉的，以后洗菜的水可以洗脸，洗脸的水可以洗澡洗脚，洗脚的水可以洗袜子，洗袜子的水可以冲厕所等等之类的话。 &lt;br /&gt;&lt;br /&gt;　　他们一边自责着自己花钱太多，一边却又忍不住憧憬着美好的未来。 &lt;br /&gt;&lt;br /&gt;　　他们想象着，不久的将来，也许还完了钱，就可以要个孩子，也许将来还能攒前买房子呢。 &lt;br /&gt;&lt;br /&gt;　　听着他们兴奋的呢喃声，我久久没有睡意。 &lt;br /&gt;&lt;br /&gt;　　半夜，我听到男的喊肚子疼，好象疼的很厉害的样子，“哎呀哎呀”的叫着。女的 很着急，问怎么了？ 男的说好象今晚吃多了，撑着了。女的就招呼他赶紧起来上厕所。 &lt;br /&gt;&lt;br /&gt;　　男的迟疑了很久，似乎不想去，半响，我听到男的说话了：我不想去上厕所，我们攒的冲厕所的水还不够，那样这个月的水又要超支了。再说了，上完厕所，拉空了肚子，晚上容易饿！ &lt;br /&gt;&lt;br /&gt;　　听到这里，我脑袋轰的一下，空白了， 我的心被揪的生疼生疼，那句话成了我整夜的梦魇：拉空了肚子，我怕饿！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（五）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　听到那句话，我的心震撼了。我想到了我的爷爷。 &lt;br /&gt;&lt;br /&gt;　　爷爷生活在苦命的旧社会，在那个吃不饱，穿不暖的社会里，一年到头，小孩子拼命的盼着过年，因为过年能吃顿饱饭！ &lt;br /&gt;&lt;br /&gt;　　所以，每个孩子在过年那天，吃的撑的小肚子圆溜溜的，肚子再怎么涨，都不舍得去厕所。因为，去了厕所，拉空了肚子，会容易感觉到饿，可是过完了年，是没有机会再能吃顿饱饭的！所以每个孩子都憋着，忍着，因为那个年代，穷，人们怕饿， 孩子更怕饿！&lt;br /&gt;&lt;br /&gt;　　可是在21世纪，在这么发达的年代，你竟然能从一个大学毕业生的嘴巴里听到这样的话，你会有怎样的感觉？感动？悲恸？还是心酸？还是无可奈何的哀叹？ &lt;br /&gt;&lt;br /&gt;　　或许都是，或许都不是！ &lt;br /&gt;&lt;br /&gt;　　我无暇顾及一个弱者的心态，因为社会如此，我也无能为力。我唯一能表示的除了同情或许还是只有同情。 &lt;br /&gt;&lt;br /&gt;　　我也曾经鄙视过，甚至曾经在心底侮辱过： 活该，谁让你没本事考个名牌大学呢！没钱读个屁书，自作自受！ &lt;br /&gt;&lt;br /&gt;　　可是我也不得不承认，一个山里的孩子，是不能仅仅凭着聪明才智就能高攀的起名牌大学的门槛的；那需要能力，实力。实力有时候除了良好的教育，优秀的老师，还有很多很多，比如金钱堆砌的补习班，比如只有城里孩子才能享受的到的全方位的教育，又比如有有权有势的父母。 &lt;br /&gt;&lt;br /&gt;　　他们没有，他们是农村的孩子，他们没资格和权利有，没人给他们买各种辅导资料，也没有全国的优秀教师给他们手把手的教，他们没见过钢琴，没见过电脑，他们甚至除了村支书，不认识任何一个可以称得上干部的领导。&lt;br /&gt;&lt;br /&gt;　　他们一天到晚只会看发的那唯一的课本，只会拼命的学，只知道只有考上大学才能改变自己的命运。 &lt;br /&gt;&lt;br /&gt;　　听着他们蹩脚的英语，不太流利的普通话，有些邋遢的装扮，破旧过时的衣着，我们都会忍不住笑。 &lt;br /&gt;&lt;br /&gt;　　我们喜欢在背后对他们评头论足，喜欢抿着嘴吧装作淑女般的嘲笑他们的无知，甚至喜欢在要去吃麦当劳的时候故意问他们去不去。习惯了看他们的尴尬，习惯了看他们的无助，也习惯了他们失去的比得到多。 &lt;br /&gt;&lt;br /&gt;　　当我们有了太多的这样的习惯，于是我们便开始不在乎，他们是不是饿，是不是在我们浪费粮食的时候，他们在心底里还默念着：不敢去厕所，怕拉空了肚子，饿！的事实。 &lt;br /&gt;&lt;br /&gt;　　“人怎能跟人相比呢？没有可比性！农村的怎么能跟城市的孩子比呢？没比的必要！”这是以前我的一个朋友经常跟我说的一句话，那时候听了觉得好笑，现在想起来，觉得有点无可奈何的心酸。 &lt;br /&gt;&lt;br /&gt;　　人难道真分三六九等么？谁分的？你么？？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;(六)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　广州的治安是越来越差了，住这种私房，真的是冒着生命危险的。可是眼下我又找不到合适的房子搬，只能暂且战斗在最前线了。 &lt;br /&gt;&lt;br /&gt;　　整栋楼有十几个房东，他们是天天围着麻将桌懒得轮流值班的，反正偷的也不是他们家的东西。最后在我们几个房客的据理力争下，好歹请了一个保安。 &lt;br /&gt;&lt;br /&gt;　　我下班回来，看到楼下吵吵嚷嚷的，原来是保安抓住了个嫌疑犯。我好奇的瞥了一眼，这人不是别人，就是住在我隔壁的那个看上去有些猥琐的男人。他低着头，拼命的解释：自己不是小偷，自己是住在这里的。&lt;br /&gt;&lt;br /&gt;　　可是没有人相信他，因为当保安问他住几楼，哪个房间时，他只说了6楼，却说不出房门号。因为储藏室是没门牌号码的！ &lt;br /&gt;&lt;br /&gt;　　他像个吓坏了的孩子，眼睛惊恐的扫视着周围的每个人，听着叽里呱啦的客家话，他无力的解释像一个人最后的死命挣扎。 &lt;br /&gt;&lt;br /&gt;　　我本能的走过去，他看到了我，眼睛里充满了希望，含着泪珠的眸子闪过某种感激。我抬了抬我那总是直视远方的眼睛，发现周围的人都盯着我。 &lt;br /&gt;&lt;br /&gt;　　我迟疑了，立刻停住了自己那8公分的高跟鞋。我轻轻理了理自己的粉色洋装，脸上滑过让人不易察觉的一丝惊慌和害怕。我想扭头冲向楼梯，当作什么都没发生过。可是我怎么也抬不动我的双腿，我僵持在哪里半秒钟。 &lt;br /&gt;&lt;br /&gt;　　我尽量的压低嗓门，很礼貌矜持的说：你怎么没带大门的钥匙？是不是又丢了，真让人烦！ &lt;br /&gt;&lt;br /&gt;　　保安放开了他，我微笑着说：他是我的远房亲戚。不好意思，给你添麻烦了。 &lt;br /&gt;&lt;br /&gt;　　我扭头，踩着我那尖尖的高跟鞋上楼了，楼道里留下一串“嗒嗒”的响声。 &lt;br /&gt;&lt;br /&gt;　　他老婆回来的时候，一直隔着门，站在我门口不停的说着：谢谢。我没吱声。过了不久，似乎她已经走了的时候，我打开门，看到他们却还站在门口，捧着一大把花生和红枣。 &lt;br /&gt;&lt;br /&gt;　　我盯着他们，没开门，他们也没敢说这是给我。只是一个劲的解释：下午那会，他老公是想在楼下捡几个矿泉水瓶子呢；要早知道不让捡，他说啥也不去了。 &lt;br /&gt;&lt;br /&gt;　　我本想打断她的讲话，告诉他们：不是不让捡，是你们长的不像住在这栋楼里的人。可是我还是忍住了，继续听他们说。 &lt;br /&gt;&lt;br /&gt;　　他们始终低着头，轻声慢语的，说：他们也知道这里的规矩，人家帮了忙呢，一定要感谢的，可是他们没什么能拿的出手的东西，这是他们老乡回家给他们捎来的家里的特产，都是自家种的，没用过化肥， 让我放心吃。 &lt;br /&gt;&lt;br /&gt;　　我还是开了门，拿了张纸，让他们把那把礼物放在了一张洁白的A6纸上。 &lt;br /&gt;&lt;br /&gt;　　那把花生和枣我没有吃，我就放在那里，看着。他们都光溜溜的，泛着光，很心想的样子，一般大小的个头。很饱满。 &lt;br /&gt;&lt;br /&gt;　　我猜，他们一定是精心挑过了的。估计一麻袋里才能挑出这般的花生枣子吧。 &lt;br /&gt;&lt;br /&gt;　　想到这里，我笑了。不大会，我又后悔起来，我真不该笑！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（七）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　房东终于找上门了，开门见山的第一句话就是：是不是你家新住进一个人？我愣了好大一会，才想起来，可能是保安跟他说了。 &lt;br /&gt;&lt;br /&gt;　　我把事情的来龙去脉解释了一下，并试图说服房东给隔壁的门也挂个号，房东不情愿的“嗯呢”了几声，便走了。 &lt;br /&gt;&lt;br /&gt;　　第二天，我真的看到他们的门上贴了张纸，写着：清洁工具存放处。 &lt;br /&gt;&lt;br /&gt;　　没过几天，我大学里的死党兼室友和她新结识的男友来广州找乐，我被迫请了一天假，陪他们。 &lt;br /&gt;&lt;br /&gt;　　随便找了个馆子想请他们吃粤菜，可是朋友说粤菜没味，没吃几下，就嚷着走，后来还是不得不去了湘菜馆子，才算满足他们的胃口。吃完饭，没事，街上是不敢拎着包包闲逛的，就去了“钱柜”K歌，唱到一半，结果又使性子，非要去“朝歌”。弄来弄去，歌没唱好，还耽误了时间。 &lt;br /&gt;&lt;br /&gt;　　晚上回来的时候，已经有些晚了。可是我看到隔壁的灯还亮着，屋里还嘤嘤的传来抽泣的声音。 &lt;br /&gt;&lt;br /&gt;　　我没理会那声音，开了门，把朋友让了进去。朋友进门就开了电脑，把那首《不怕不怕》开的声音老大，震的整个房子都晃悠。 &lt;br /&gt;&lt;br /&gt;　　楼下的终于忍不住了。来敲门，让我们动静小点。我关了音乐，跟朋友谈起了隔壁的那对小夫妻。朋友以为我在讲故事，一边说着无聊，一边就摸过烟开始吸。我最讨厌烟味，因为那能呛出眼泪。 &lt;br /&gt;&lt;br /&gt;　　我赶朋友出门，让她在楼道里吸够了再回来。 &lt;br /&gt;&lt;br /&gt;　　半支烟工夫，朋友死命的敲门，兴奋的叫着她男朋友的名字，说快出来听戏。 &lt;br /&gt;&lt;br /&gt;　　他们俩出去，便没了声息。好久才回来。 &lt;br /&gt;&lt;br /&gt;　　朋友一进来，就凑到我耳朵边说：你别假正经了，是不是每天晚上没事，就去隔壁听音乐啊？ 我还没来得及反应过来，他们俩就大笑起来。没完没了的，怪烦人的。 &lt;br /&gt;&lt;br /&gt;　　后来，我才知道，原来他们俩是去隔壁门口听动静去了。至于什么动静，我没问，但我想，应该与颜色相关。 &lt;br /&gt;&lt;br /&gt;　　晚上睡不着拿起《洛丽塔》，看了两页，就开始走神。后来迷迷糊糊的睡着的时候，我似乎真的听到了隔壁的动静，声音不大，但很诱人。 &lt;br /&gt;&lt;br /&gt;　　朋友呆了还不到3天，我就开始烦躁，我感觉那种以往的宁静被打破了，而且一个单身女人看到一对情人在你面前晃来晃去的亲昵，真的容易中风！ &lt;br /&gt;&lt;br /&gt;　　送走他们，我开始变得神经质，我经常故意关门很大声，估计开开关关防盗门不停，故意想让隔壁听到我在发脾气，故意想让每个人都知道我心情很不好。 &lt;br /&gt;&lt;br /&gt;　　隔壁的小夫妻还是每次看见我笑笑的，有点腼腆的羞赧。男人那头有点油腻有点乱的头发依旧还是在发梢上泛着或多或少的头皮屑，女人的马尾辫也依旧蓬松的拢在后面，有点像秋天乱飞的树叶。 &lt;br /&gt;&lt;br /&gt;　　可是我见了他们，却没有笑，也不再板着脸，只是面无表情的点个头，用自己有力的鞋跟敲打着地面，匆匆离去。 &lt;br /&gt;&lt;br /&gt;　　每次低下头，看着自己那8公分的高跟鞋，我才恍惚的感觉到，其实没有了这鞋跟，我似乎也不高！ &lt;br /&gt;&lt;br /&gt;　　然后就是无休止的失落和郁闷！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;(八)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　有这么几天，那扇门一直关的紧紧的，屋里也一直没亮过灯，我扒在门缝里瞅，竟然不能看到里面的任何东西。有几次，我甚至使劲贴着耳朵听，竟然也丝毫没听到任何动静。我开始害怕，担心他们不声不响的搬走了。 &lt;br /&gt;&lt;br /&gt;　　我甚至开始抱怨，为什么走的时候没打声招呼。我不知所措，在房间里踱来踱去，狠命的撕扯着那个抱枕，用力敲打着键盘，写着一些很尖刻的文字，用蔑视的眼光看着周遭的一切。 &lt;br /&gt;&lt;br /&gt;　　我发现我有好久没这么情绪激动过了，甚至应该说我有很多年没这么情绪化了。我突然伤感起来。似乎失去了什么珍贵的东西，似乎别人偷走了原本属于我的一份心情。我开始诅咒，开始谩骂，开始憎恨这个世界。 &lt;br /&gt;&lt;br /&gt;　　我每天站在门口，期望着能突然有人站在我面前笑，我总是忍不住去瞄那扇门，希望能看到里面透出一丝淡淡的泛着黄晕的光。可是一连好几天，都没有。 &lt;br /&gt;&lt;br /&gt;　　我终于还是跑去找了那个有点啰嗦的房东。我说我要租那个储藏室。房东讶异的看着我：你要住？我皱了皱眉，说：我要放沙发。房东似乎有点为难：你想什么时候租？我诧异了：难道现在还有人住么？ 不是空出来了么？房东说：那对民工下个月到期。 &lt;br /&gt;&lt;br /&gt;　　我忽然有种莫名的欣喜，难道还没走？我结结巴巴的说着：那下个月我租！ &lt;br /&gt;&lt;br /&gt;　　等我再经过那扇门的时候，我有点高兴，因为我似乎看到里面锅碗瓢盘碰撞的声音，因为似乎我能听到他们的窃窃私语。 &lt;br /&gt;&lt;br /&gt;　　那天，我睡的很早，我其实一点也不困。可是我还是早早的躺在了床上，我睁大了眼睛，看着天花板，想着有一次能有人敲我的门。 &lt;br /&gt;&lt;br /&gt;　　一阵开门的声音惊动了我，尽管那声音小的还没蚊子“嗡嗡”声大，可是近几天我练就了一双聪慧的耳朵。我唰的从床上爬起来，冲了出去。 &lt;br /&gt;&lt;br /&gt;　　那女人看着我当啷的一声开门声，吓得站在哪里不动了。我很尴尬，赶忙掩饰自己的那种激动：回来了？怎么这几天都不在？回老家了么？女人望了我半响，吞吞吐吐的说：还没睡呢，大姐。没，没呢，没回去。这几天有事。 &lt;br /&gt;&lt;br /&gt;　　她第一次不是微笑着跟我说话，也是第一次没有过多的说什么，就进了那间我天天盯紧了的储藏室。 &lt;br /&gt;&lt;br /&gt;　　我愣在那里，好久，好久，我才反应过来。我突然想哭，是那种有点委屈，有点付出了很多热情却被冷落后的难过。可是我没哭出来，也没掉泪，我只是关了门，打开了电脑，开始漫无目的到处游荡。&lt;br /&gt;&lt;br /&gt;　　那晚，我听到她一个人忙到很晚，丁零当啷的不知道是做饭还是收拾东西。&lt;br /&gt;&lt;br /&gt;　　听到那个屋里一直传来一个人的声响，我突然很奇怪，那男人呢？ &lt;br /&gt;&lt;br /&gt;　　我孤单起来，感觉到寂寞的可怕，尤其是那隔壁的单调的动静，让我彻底的开始感觉到浑身冰凉。 &lt;br /&gt;&lt;br /&gt;　　我突然意识到：原来一个人是这么凄清，这么荒凉的可悲。我裹紧了睡衣，可是仍旧无法驱散这午夜的孤寂。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（九）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　她似乎有点不好意思，在门口站了许久，没有敲门，也没有要走的意思，低着头，好像在思索着怎么开口。 &lt;br /&gt;&lt;br /&gt;　　其实对于昨天那些简单的话语，在南方这个有点冷漠的城市，不算什么，客套显得奢侈，敷衍是每个人对周遭的理所当然的态度。可是我看得出来，她还并不适应这种人与之之间的冷淡和乏味的陌路。也许，她以为，在这里还是跟家里一样。可是，她单纯的，怎么能想象的出来在异地他乡很多时候人和人是没人情味可言的。 &lt;br /&gt;&lt;br /&gt;　　我主动开了门，走了出去，看着她，等她第一个开口。 &lt;br /&gt;&lt;br /&gt;　　她听到门响，忽的抬起头，眼睛里有点惊慌，有点不好意思的欣喜。她笑了笑，我明显的看到她的眼睛红红的，肿了，有哭过的痕迹。 &lt;br /&gt;&lt;br /&gt;　　她微微点了下头：对不起大姐，平时你挺照顾我们的，昨天我心里难受，对你态度不大好，你别在意。我还有事，要赶着出门，没别的事，我走了。&lt;br /&gt;&lt;br /&gt;　　她转过身，我一把拉住了她。我第一次像对一个朋友那样的语气问到：出啥事了？ &lt;br /&gt;&lt;br /&gt;　　她愣了，泪珠子像断了线一样，噼哩啪啦的掉下来，所有的委屈，压抑，和内心深处的痛苦，都随着眼泪倾泻下来。我毫无防备，她一下趴在我肩头，哭出声来。我没拒绝，轻轻的环住了她，想着也许这样能多少分担一些她那莫大的苦楚。 &lt;br /&gt;&lt;br /&gt;　　她娓娓道来，我才知道，她老公住院了。&lt;br /&gt;&lt;br /&gt;　　他老公本来做业务员，可是由于本性木讷，不善于交际，所以业绩一直不好，只好辞职了，另找了份体力活暂时做着。由于体质不好，又加上吃的不好，每天都很累，那天，去上班，不小心被掉下来的砖头砸破了头，住进了医院。本来以为这算工伤，单位会报销医药费，可是单位不仅不管，还把他开除了。积蓄都花光了，她只好回来收拾收拾，然后去把老公接回来养伤。 &lt;br /&gt;&lt;br /&gt;　　我拿出了张银行卡，想给她取点钱，暂时用着，她死活不肯，就一溜烟的跑下了楼。 &lt;br /&gt;&lt;br /&gt;　　下午她和她老公就回来了，她老公的头上包着纱布，有气无力的样子，看到我，还是挤出了笑容。看着他那矮矮瘦瘦的样子，我似乎觉得他看上去没那么猥琐，尽管卑微，却很精神；尽管怯懦，却很坚强。我回了他一个微笑，这一次，我笑的很真，很用心。 &lt;br /&gt;&lt;br /&gt;　　那一天，一整天，我心情都很好。这是我从来到这座城市后第一次这么开心，第一次这么用心的笑，第一次这么在乎自己是否笑的认真。 &lt;br /&gt;&lt;br /&gt;　　那天，我看到了自己脸上掉下来的面具，赤裸裸的摆在我面前，露着森森白牙无力的呻吟，无力的挣扎，无力的哀嚎。 &lt;br /&gt;&lt;br /&gt;　　而我，就那么漫不经心的，拿起打火机，点燃了它。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　我小心翼翼的敲开了他们家的门，女的不在家，上班去了，男的颤巍巍的站在门口，望着我傻乎乎的笑着，不知道该怎么把我让进门。 &lt;br /&gt;&lt;br /&gt;　　我并没有要进去的意思，就那么直直的站在门口，像聊天一样，像跟家人朋友说起话来：你们单位叫什么名字？凭什么在你上班期间受伤不按工伤负责医药费？他们有什么理由开除你？按照《劳动法》你有权利......我话还没说完，他就傻傻的笑了，插嘴道：我知道，我也读过大学，我也懂法，可是没用的！《劳动法》也许真的能保障你们这些白领的合法权益，可是对于一个民工，是没有任何保障可言的。拿什么保障？谁给你保障？你找谁讨说法？什么这个机构，那个机构都去过了，磨破了嘴皮子，根本没人管！去单位，那些老板雇佣的打手不把你打残废算是幸运的了，再说，去挨顿揍，最后还是自己掏腰包看病，更不划算。算了，我认了，谁让咱没啥社会地位呢！ &lt;br /&gt;&lt;br /&gt;　　听着他的叹气，听着他那些话语，我似乎感觉到了自己的幼稚，社会是残酷的，生活是残忍的。报纸上那些民工年年讨要工钱反被打，干了活拖欠工资，受了工伤没人管的新闻一幕幕浮现在我的眼前。我一下子开始清醒，社会就是这样的，你让这样的一个弱者去那里讨说法，你让这样的一个社会底层的人，拿什么来维护自己的权益？ &lt;br /&gt;&lt;br /&gt;　　我不再言语，我感到了语言的苍白无力，我感到了词汇的贫乏，我也感到了自己那些不太现实的想法的天真。 &lt;br /&gt;&lt;br /&gt;　　我有点虚弱的沉沉的叹息，呓语般的说：外面的社会太无奈，这么艰难，还是回去吧，与其这样备受凌辱和煎熬，不如回去过虽然贫困却有尊严的日子。 &lt;br /&gt;&lt;br /&gt;　　他还是笑了，笑的有点无奈。他抬起头，望着远处，似乎在自言自语：回去？回去怎么办？欠的学费无论如何要还的，都不还，国家怎么办？国家在我最需要帮助的时候伸出了手，我不能忘恩负义，做人要厚道！何况家里还有弟弟妹妹在读书，父母也年迈了，身体又不好，不赚钱，怎么供弟妹？怎么养爹娘？ &lt;br /&gt;&lt;br /&gt;　　做人要厚道！听到这句话，我惊呆了，一个生活这么艰难的人，一个沦落到社会最底层的人，竟然还想着国家，竟然做人的原则比我们这些衣冠楚楚的人都高尚。我开始感觉到自己似乎变小了，有些卑微。 &lt;br /&gt;&lt;br /&gt;　　我睁大眼睛，看着他，有那种很敬畏的目光一直盯着他，耳朵里飘过的全是他那些幽幽道来的话： &lt;br /&gt;&lt;br /&gt;　　农村真的穷，很多人都说，穷还生那么多？其实，为什么要生了一个还要生一个？谁愿意那么穷还要养几个孩子，生活压力更大，可是没办法。被逼的啊！在农村，人老了，没劳动能力的，就等于开始要养个闲人，农村的老人没养老保险，没任何社会福利，也没任何生活保障。如果不多生孩子，老了后，一个孩子养不起俩人老，那还不得活活饿死，于是只好多生几个，分轻负担。养儿防老是农村不得已的传统！ &lt;br /&gt;&lt;br /&gt;　　每个农村的父母都想自己孩子有出息，而想改变命运只有考大学一条出路，可是读大学却是很昂贵的，所以家里只要有一个考上大学的，全家都要遭殃，跟着砸锅卖铁的供着。可是现在大学生毕业工作很难找，尤其是读的学校不好，专业又不好，更难找；没拿到毕业证等于没上大学，去任何单位人家都要看你学历证书，没有，只能当民工。 &lt;br /&gt;&lt;br /&gt;　　说到这儿，他很无奈的摇了摇头，用力的憋着嘴巴，不再言语。 &lt;br /&gt;&lt;br /&gt;　　我也没说话，我不知道该说什么好，因为这是一个从小生活在城市里的孩子无法想象的，于是我选择沉默。也只能沉默。 &lt;br /&gt;&lt;br /&gt;　　中午，我叫了两份快餐，我端了一份给他，他说什么也不要。我假装生气道：我打扰你一个上午，让你没好好休息，请你吃个快餐算是表示歉意！他推辞不掉，只好接过去了。&lt;br /&gt;&lt;br /&gt;　　我知道一个快餐，太寒碜了，可是我知道，如果过于奢侈的东西，他又怎么肯接受？&lt;br /&gt;&lt;br /&gt;　　晚上，女的很晚才回来，累的一身疲惫。我听到男的说：我给你留了好吃的，你饿了吧，快吃吧。女人坚持说吃过了，非要男的吃，因为男的有伤在身，需要营养。听着他们推来推去。我的眼眶湿润了。&lt;br /&gt;&lt;br /&gt;　　我知道，我又错了，我太不了解他们彼此的爱了，他们的爱是双份的啊！又怎么忍心一个人独吞一份自己认为是好的东西，而让另一个咽着口水眼睁睁看着呢？ &lt;br /&gt;&lt;br /&gt;　　那天，我终于知道：两份爱的倍数很大，很大，很大。以至于我根本无法看到它的边际，无从理解它的内涵。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十一）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　男人终于慢慢的好起来了，等他完全康复的时候，我托朋友给他找了份稍微轻松点的工作，虽然赚钱不多，可是毕竟比先前的要好些。他们夫妻俩带着满怀的感激不知道说了多少遍：谢谢。尽管我一再说这是举手之劳，可是他们还是不停的说谢谢。弄的我都有些惭愧了。 &lt;br /&gt;&lt;br /&gt;　　一个月后，男人和女人兴高采烈的跑来拽着我往外走，我还没弄清怎么回事，他们就把我拖出了门外。直到楼下，我才搞明白，原来男人发工资了，非要请我吃饭。我呵呵的笑着，说：不用客气了，都是出门在外，互相照应是应该的，吃饭就免了吧。可是他们固执的拉住我，非请不可，说：不请，于情于理都说不过去。看着我也一副坚决不去的样子，他们俩急了：你是不是怕我们带的钱不够，不看，我带了好几百呢。说着就要去掏钱。看着他们憨厚可爱的样子，我实在推辞不过，只好答应了。&lt;br /&gt;&lt;br /&gt;　　我一边走着，一边想着：怎么样才能既让他们请了我，了却了他们的心愿，又能为他们省钱。我想起了广州最便宜的饭馆，拉面馆。 &lt;br /&gt;&lt;br /&gt;　　于是我装作沉思良久的样子说：我知道有个地方的东西很好吃，我最喜欢吃了。不如我们去吃兰州拉面吧。他们俩先是一呆，接着就说：那怎么行呢？怎么能请你只吃碗面呢？说啥也要请你吃顿好的。 &lt;br /&gt;&lt;br /&gt;　　我故意很生气的样子：我就喜欢吃拉面，你们要是诚心请我，就请我吃拉面，要是吃别的，我可不高兴了。 &lt;br /&gt;&lt;br /&gt;　　他们俩看我生气了，只好答应着，说：一切都依着我。 &lt;br /&gt;&lt;br /&gt;　　到了面馆，我点了一碗牛肉面，男的点了一碗素的，一碗牛肉的。等拉面端上来的时候，男人把最大的一碗带牛肉的面推到我面前，把另一碗有牛肉的端给他老婆，他自己的那碗却是碗小的素的。 &lt;br /&gt;&lt;br /&gt;　　看着我疑惑的眼神，男的赶紧解释到：我喜欢吃素的。以前的伤口还没长好，吃荤的对伤口不好，素的好。 &lt;br /&gt;&lt;br /&gt;　　其实我知道，这根本不关伤口的事，我知道他是为了省钱，可是他不会亏待朋友，于是只能亏待自己。 &lt;br /&gt;&lt;br /&gt;　　看着他大口的吃着面，看着他老婆不停的把牛肉夹到他碗里，看着夫妻两人你不停的你把肉夹给我，我把肉夹给你；我的嗓子哽在那里，难受的咽不下去一口面。我能感觉到我的眼前一片模糊，不知道是面的热气扑在了脸上，还是有别的东西糊住了眼睛，能感受的只有一阵潮湿。&lt;br /&gt;&lt;br /&gt;　　第一次，我学着他们的样子，吃光了碗里的面，喝光了碗里的汤，尽管我撑的胃疼。可是我第一次能感觉到我内心深处很充实，很满足。 &lt;br /&gt;&lt;br /&gt;　　虽然吃的是8块钱一碗的拉面，但是我知道这一餐很贵。那不仅仅是花去了他们好几天的生活费；让我得到的更不仅仅是饱饱的胃，而是我从未有过的感激和体会。这无论是多少钱都不能买得到的，也不是所有人都能得到的恩惠；那种价值只有人性中才有。&lt;br /&gt;&lt;br /&gt;　　我想，这是我至今为止吃过的最贵的一顿饭，它真的很奢侈，很昂贵。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十二）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　一个懒洋洋的午后，我的那个朋友给我打电话来，当我听完他的叙述，我吓呆了，我不知道他说的是不是真的，也没听清楚事情到底怎么回事，我只知道，我隔壁的那个男的被抓进了公安局。&lt;br /&gt;&lt;br /&gt;　　朋友不停的埋怨我，怎么会给这样的人介绍工作，言语间的不满，无疑是说，我让他帮忙找了这个工作，事情现在弄成这样，他在那个公司老板面前已经颜面尽失。听着他愤愤的挂断电话，我就知道，以后这个朋友算是没了，更别说再找他帮忙给那对夫妻介绍工作了。 &lt;br /&gt;&lt;br /&gt;　　我已经来不及关心，这份或许叫友谊的东西还是否能完整的存在，也无心去跟这位朋友道歉，我只想知道他怎么样？我只想弄清楚事情到底是怎么回事。我在潜意识里竟然多了份对他的信任，我告诉自己，也许这是个误会。 &lt;br /&gt;&lt;br /&gt;　　我请了假，急忙的赶回家，跑上楼，去敲那扇门，可是良久，都没人来开门。我有点失落，我想也许女的已经赶去公安局了。 &lt;br /&gt;&lt;br /&gt;　　我无力的靠在那里，望着隔壁我的门，突然伤感起来。我看到了我门框上贴着一张纸条，我跑过去，撕下来，是女的给我留的言。上面没说什么事，只是留下了一个派出所的地址。我来不及多想，便赶去了那个派出所。 &lt;br /&gt;&lt;br /&gt;　　赶到那里的时候，我看到两个民警正在对女的训话，女的低着头，忍住抽泣，耸动的肩膀似乎在极度的压抑着将要哭出来的声音。旁边还坐着一个中年妇女。那个中年妇女频频的皱着眉头，尽量的让身子往一边靠，唯恐女人那身有点破旧的衣服玷染她。我冲过去，拉住女的胳膊问道：到底出了什么事？ &lt;br /&gt;&lt;br /&gt;　　两个民警先是打量了我一番，沉吟了半响，然后口气缓和的问道：你是？我没看他们一眼，自顾的说：我是**晚报的记者，她是我的朋友，我想来找她了解一下情况。 &lt;br /&gt;&lt;br /&gt;　　两个民警互相看了一眼，半信半疑，但是又似乎不敢冒险，于是姿态便低了下来，不再大声的吼着对女人训话，对我也客气的套起交情来。 &lt;br /&gt;&lt;br /&gt;　　我把女人拉到一边，问她到底是怎么回事，她老公在哪里？女人看着我，还没开口，眼泪就刷的掉了下来，我安慰她不要哭，先把事情跟我说清楚，我们再想办法。 &lt;br /&gt;&lt;br /&gt;　　原来事情是这样的，今天上午，他老公去为公司的一个客户送资料，在公共汽车站等车的时候，正巧遇到“飞车党”抢劫正在等车的一个妇女的包。妇女拼命拉住自己的包哭喊，却没有一个人去管，正在双方你争我夺，僵持不下的时候，他看到了，想都没想，就冲过去，帮妇女夺包。无论贼人怎么打他，甚至拿出了刀子，可是他还是拉住包不放手，这时候执勤民警赶来，“飞车党”便逃窜了。&lt;br /&gt;&lt;br /&gt;　　本来事情就这么简单，可是当民警赶来的时候，看着他也在夺包，以为他是抢劫犯的同伙，就问那个被抢的妇女，认不认识这个男的，妇女一口咬定不认识，并且还强调：她也不知道这个男的是“飞车党”同伙，还是另一伙抢劫犯，反正跑上来就夺她的包。民警二话不说，就带走了男人。&lt;br /&gt;&lt;br /&gt;　　由于男人着急给客户送资料，所以再怎么解释都没用，挨了匪徒的打也就罢了，竟然还被民警猛揍一顿，让他老实交待。他怕耽误公司交待的任务，只好报出了公司的名字，本想着这样只是可以赶紧让公司派人来把资料及时转交给客户，没想到，公司一听，立马不承认他是本单位的人，也就是说他立马就被开除了。&lt;br /&gt;&lt;br /&gt;　　民警通知了他的老婆，他老婆一来，就被定性为：抢劫犯家属。不停的被训话，还让她交待问题。她吓得不知道说什么，脑袋一片空白，要是我不来，她真的不知道该怎么办？&lt;br /&gt;&lt;br /&gt;　　听完她的叙述，我一股无名火就上来了。我转身到那位妇女旁边：请问，你就是受害人？我想采访一下您，这是我的工作证件。妇女愣了，不知所措的看着我，我不理会她的莫名其妙，继续问道：请你详细描述一下当时的情况，你为什么就认定这个帮你夺包的人也是抢劫犯，为什么你就不能认为他是来帮你从匪徒手上夺回包的人呢？ &lt;br /&gt;&lt;br /&gt;　　妇女，看了看我，又看了看民警，慢吞吞的，结结巴巴的说：怎么可能有那么好的人？这年头，谁还爱管闲事啊？难道他不怕死？他要是真帮我，那他不是傻子就是精神有问题。警察听着，也频频点头，似乎她说的才是一个正常的人所应该做的。 &lt;br /&gt;&lt;br /&gt;　　看着他们理所当然然的表情，我愤怒了，我大吼起来：他如果是抢劫犯的同伙，为什么抢劫犯打他？他如果也想抢你东西，为什么警察来了不跑？在警察来之前那会，他完全可以抢了你东西就跑？你东西少了么？他打你了么？有目击证人可以证明他也是在抢你包么？你们警察有什么证据证明他就是抢劫犯？是因为他没有这个城市的户口？还是因为他穿着不够华丽？一个冒着生命危险帮你忙的人，你竟然还要指责他是抢劫犯？如果是你被冤枉，你会怎么样？ &lt;br /&gt;&lt;br /&gt;　　我深深吸了口气：你们在没证据的情况下，就抓人，就非法拘留，你们这是犯法！我指着那个妇女：你这样不识好歹，分不清好人坏人，你不觉得惭愧么？ 难道你也要教育你的孩子，事不关己？高高挂起？ &lt;br /&gt;&lt;br /&gt;　　所有的人都愣在那里，不说话，我知道，在这样一个治安混乱，世风日下，人心不古的城市，在这样一个，人与人之间冷漠的不带丁点温度的社会，在这样一种你被欺负，我无视的风气下，没有人开始相信善良，也没有人会去相信会有人无私去帮助别人，甚至当你去好心的做一件你认为对得起良心的事情的时候，在多数人眼里，那成了你伪善的最好外衣。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;(十三)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　警察可以抓错你，法律可以错判你，可是你要想去纠正这个错误却不是一件简单的事情。 &lt;br /&gt;&lt;br /&gt;　　抓错你，可以只是因为怀疑你，就能给你戴个嫌疑犯的帽子；疑罪从无在很多时候只是法律条文里的一句话而已，现实中能真正贯彻实施的屈指可数。判错你，可以有一万个理由归咎于司法的不健全，可是没有人会为你受到的不公待遇负责，提起国家赔偿，也只是说说而已，又有哪个人能真的得到过这样的道歉形式？！ &lt;br /&gt;&lt;br /&gt;　　我知道，要给他洗清罪名，我必须全力以赴，我必须有足够的证据证明他是无辜的，他是好人，他当时是想去帮助那个妇女。 &lt;br /&gt;&lt;br /&gt;　　尽管，现在妇女含糊其辞，已把自己搞糊涂了，自己也说不清楚他到底是不是来帮自己的等等理由来推脱，不想面对自己遇到好人，反咬一口的事实。警察也以虽然没有证据证明他是抢劫犯，但是事关他出现在事发现场，并与此事有关联为由，不能彻彻底底的还他一个清白。&lt;br /&gt;&lt;br /&gt;　　我知道，要靠抓住当时的那两个抢劫犯来为他洗脱不白之冤可能性微乎其微，我只能想办法找其他证据。我利用自己是记者的身份，想尽办法，找到了当时事发现场的2个目击证人，是一个报亭的老头和一个推着车买水果的妇女。他们都说当时那男的的确是去帮被抢的妇女夺包，不是抢劫犯。可是当我想要他们陪我去趟派出所跟警察证明一下的时候，他们却死活都不肯。说不想多管闲事，怕惹一身臊。在我苦苦哀求无果的情况下，我不得不耍了点小手段，与其说是手段，不如说是无奈之举。 &lt;br /&gt;&lt;br /&gt;　　我说我是记者，现在要对那天发生的事件，写篇评论。广州街头一妇女被抢，好心人施救，反被诬赖是歹徒，旁观者无人肯出头！我还故意说：你们俩我也会以匿名形式将你们事不关己的态度写进去的，不知道你们的孩子看了，会有何感想。 &lt;br /&gt;&lt;br /&gt;　　看着两人有点迟疑，我又说，如果你们肯证明，我当然也会在文章中把你们伸张正义，深明大义的善良举动报道出来的。我相信你们都是好人，都不会眼睁睁的看着另一个好人被诬赖受不白之苦的。 &lt;br /&gt;&lt;br /&gt;　　他们掂量了很久，终于还是被我说动了。 &lt;br /&gt;&lt;br /&gt;　　我又去找了男人公司的上司，尽管他很不情愿的开证明说那天的确是派男人去给客户送资料的事实，但是碍于我与他们老板朋友有交情的情面，还是开了。尽管，我也知道，那个原来的朋友其实也许已经没得朋友可作了。 &lt;br /&gt;&lt;br /&gt;　　我找了律师，咨询了这方面的法律，托了很多朋友和同学，终于把男人弄出来了。&lt;br /&gt;&lt;br /&gt;　　尽管出来的时候，警察没一句道歉的话，尽管那个受过他帮助的妇女没一个谢字。可是，我看得出来，他并没斤斤计较的去在乎。起码证明了他无罪，证明了他是个好人。 &lt;br /&gt;&lt;br /&gt;　　当这件事发生的时候，我失去了原本可以称之为好友的朋友；甚至失去了以后可能再联系的可能。但是我得到的更多，更多，我得到了让一个好人恢复声誉的机会，我得到了去帮助一个值得去帮助的人幸运，我也得到了一份我对自己的由衷的感激。 &lt;br /&gt;&lt;br /&gt;　　我不知道，他以后再碰到这样的事还会不会毫无顾虑的冲上去帮忙，也不知道他内心是不是已经开始对于做一个好人的概念有了新的诠释，可是我知道他本质的善良不会因此而动摇。 &lt;br /&gt;&lt;br /&gt;　　可是无论怎样，也不管以后他会不会继续这样做，我们都没资格再去怪他，也没权利去让一个受过伤害的好人忍着痛再去迎头顶刀子！因为，那个拿刀子伤害他的人，其实就是我们，我们这些人，我们这个社会。&lt;br /&gt;&lt;br /&gt;　　天空飘着雨，有点阴霾，来来往往的人潮，冷着一张张没表情的脸，继续在这个城市生活着，没有人知道曾经发生过这样的一件事，甚至当初亲眼见过此事的人也许早已当作一个谈资将其遗落在脑后。&lt;br /&gt;&lt;br /&gt;　　世界忘记了，可是我记得，那天记得，岁月记得。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;(十四)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　自此以后，那夫妻总是显得有点卑微，总是在感激了我之后，有点抬不起头来的难过。似乎全都是他们的错，似乎他给我们，给所有的人添了很大的麻烦一样。也许，真正善良的人都是这种心态，总是不停的从自身找原因，总是觉得如果我够好，又怎么会这样，却从来不去怪罪别人，不去把责任推卸到别人身上。 &lt;br /&gt;&lt;br /&gt;　　我试图给男人再找份好点的工作，无奈，夫妻两人总是笑眯眯的说：不麻烦了，他们找到工作，已经在上班了。其实我心里明白，他们知道上次给我添了乱，是无论如何弥补不了的，尽管我不在乎，可是他们在乎，他们不想再来让我为难，所以便拼命拒绝我的好意。&lt;br /&gt;&lt;br /&gt;　　男人早出晚归，我想或许是真的找到工作了。看着他们每天筋疲力尽的样子，我心里酸酸的，却又不知道该如何帮他们。我第一次感觉到：那种无可奈何的难过，竟然是能折磨人的。 &lt;br /&gt;&lt;br /&gt;　　元旦的时候，我在楼道遇到他们，夫妻二人高兴的跟我打招呼，说要出去吃大餐。看着他们有说有笑的出门，我心里不禁艳羡起来，也许在我们为他们难过的时候，他们却能找到属于他们自己的生活的点滴快乐和幸福。 &lt;br /&gt;&lt;br /&gt;　　第二天，我一看到他们，就开始调侃：昨天去哪里吃的大餐？他们并没有不好意思，而是神秘的笑了，那笑有点天真，又有点温暖。女的趴早我耳朵边悄悄的说：大姐，你知道么？有种店，是一块钱吃到饱的！我惊诧了，睁大眼睛看着他们。 &lt;br /&gt;&lt;br /&gt;　　在广州呆过的人都知道，有很多快餐店，为了吸引顾客，总喜欢在门口张贴着一块钱吃到饱的大条幅，可是我们每个去过的人都知道，那只是一种标语，真的进去消费了，是永远不可能会让你花一块钱吃顿饭的。说句实话，进去吃饭就算你一个人，吃下来，再怎么节省也要20块钱。何况是夫妻俩人一块去吃呢？ &lt;br /&gt;&lt;br /&gt;　　我很怀疑的看着他们，他们似乎有点不好意思了，男人终于忍不住了说：真的，大姐；我们没骗你，我们昨天去吃过了，我们两口子一共就花了五块钱！我失笑出声：怎么可能，米饭一个人都要算两块钱呢，五块钱，你们吃的啥？&lt;br /&gt;&lt;br /&gt;　　女人嘿嘿的笑了：我们进去，看菜单，发现只有一种小菜是一块钱，就是花生米，这么小一碟。一边说着，她便用手比划着，其实她不比划我也知道那碟花生，估计一共不会超过10粒花生米。因为在餐馆里，这种一块钱一碟的花生米，只是为了响应他们的一块钱吃到饱的口号的。现实中真正去点这个菜的人屈指可数。 &lt;br /&gt;&lt;br /&gt;　　女人还在眉飞色舞的说着：他们的例汤是免费的，一大盆呢！ 反正米饭按人头算钱，一个收两块，我们俩就着花生米一人吃了四碗米饭，喝光了所有的汤，吃的饱饱的，只花了五块钱呢。 &lt;br /&gt;&lt;br /&gt;　　说完，他们俩相视一笑，反而让我觉得不好意思起来。我不知道，他们是怀着多大的勇气，走进一个还不错的餐馆，坐下来，只点一碟花生米，却能吃完四碗饭的？我也不知道，他们在喝光免费的汤时， 一粒花生米就着一碗饭怎么就吃的那么满足，那么开心。 &lt;br /&gt;&lt;br /&gt;　　我想，当时，肯定有很多人用异样的眼光看着他们，甚至还会有人窃窃私语的笑话他们老土；也许他们甚至能够听到别人侮辱的话语，也能看到别人鄙视的眼光，但是他们却还能继续坐在那里，吃完那顿饭，并且是高高兴兴的吃完，然后拿五块钱去买单。 &lt;br /&gt;&lt;br /&gt;　　我并不觉得这样做有多么可耻，也并不觉得这样做会有什么不妥，拿五块钱来消费也是顾客，消费五块钱并不就比消费了50块的客人低一等。但是，无论什么时候，我们却往往看到在某些消费场合，似乎高消费更能得到好的周到的服务，又似乎有钱的更能得到尊重。 &lt;br /&gt;&lt;br /&gt;　　我承认，如果是我，怀里揣着五块钱，是绝对不敢去这样的餐厅消费的，我没有勇气去只叫一碟一块钱的花生米，也许尽管我的食量只是一碗米饭加一碟花生米，但是我还是会要几个也许我根本不会动一筷子的奢侈的菜。其实内心也知道那是浪费，但是又有哪个人不喜欢用钱的浪费来购买自己面子的实惠呢？&lt;br /&gt;&lt;br /&gt;　　在这个社会，有钱的比没钱的说话更有底气，富有的比贫穷的更能得到别人的尊重，高高在上大都是有钱人，社会底层的都是贫困潦倒的。毕竟现在是商品市场的社会，经济类型决定了钱是多么重要，钱变成了自尊，面子的代名词。我们每天都活在赚钱买面子的日子里。在我们奢侈的去花大笔钱买所谓的面子的时候，我们是否会想起有那么一群人，还挣扎在温饱线上呢？ &lt;br /&gt;&lt;br /&gt;　　月薪不如别人高感觉没面子，到现在还没有百来平方的房子感觉没面子，工作了几年还是普通职员也觉得没面子，看到别人的老婆比自己的漂亮也会觉得颜面尽失，甚至会因为别人的衣服比自己的名牌也会汗颜。我们活在一个面子至上的世界，那点卑微的自尊心总是遮掩着自己脆弱的颜面。回首已逝去的岁月，才发现其实活的并不快乐，是因为赚的钱太少了，买不起足够的面子？还是赚的钱买来的面子，遮住了自己的人性尊严？ &lt;br /&gt;&lt;br /&gt;　　金钱，生存，面子，自尊；在人生的天平上，到底孰重孰轻？！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十五）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　年前，我懒洋洋的等待着春节的到来，想着是否该回家陪父母过年。在我犹豫了又犹豫的时候，我发现离过年还不到10天了，我想公司是非要靠到年前才肯放假的，想着又要买全价的飞机票，便在心里开始狠狠的想：明年一定不再磨蹭，提前俩月买票，估计就能买4折的飞机票回去了。 &lt;br /&gt;&lt;br /&gt;　　就在我敷衍着年前最后几天的班，想着如何找个借口提前请假回家的那几天，我一直没看到隔壁的小夫妻。我以为他们早就回家过年去了。 &lt;br /&gt;&lt;br /&gt;　　可是就在一天半夜，女的敲开了我的门。我睁开惺忪的眼睛，含糊的问着：有事么？女的显得很不好意思，说：对不起，打扰你了，我想让您帮个忙，听说民工能网上订票，你能不能帮忙看看？我答应着，让她进了门，我打开电脑，开始帮忙给她订火车票。可惜的是，网上订票是要民工单位团体订票，她和她老公的单位都没有人给他们订票，他们个人又没资格网上订。她看了看规定，很郁闷的走了。我迷迷糊糊的竟然忘记说句安慰她的话。 &lt;br /&gt;&lt;br /&gt;　　第二天，我心里一直记得这件事，总觉得该做点什么。我从新闻上看到可电话订票，便匆匆记下了号码，准备给他们个惊喜。 &lt;br /&gt;&lt;br /&gt;　　下班时间还没到，我就急忙赶回去了，我回去的时候，女人在家，我好奇她为何没去上班，但是我只顾着说电话订票的事，就没来得及问。男人不在家，我絮絮叨叨的跟女人说着电话号码，我还掏出自己的手机让她赶紧打电话订票。 &lt;br /&gt;&lt;br /&gt;　　女人苦笑了一下，没接我的手机。眼里含着泪，哽咽着对我说：我就是因为打电话订票，被老板看到开除了。说着便苦起来：我这个月半个月的工资也没给，说我是违反规定了，不罚钱就算是宽大处理了。 &lt;br /&gt;&lt;br /&gt;　　原来，女人也听人说，可以电话订票，从一大早起来就去IC电话亭打电话，可是总打不进去，就在中午吃饭时间，偷偷溜出去打电话订票，可是打通了就说票已售完。一连一个星期都是如此，女人实在没办法，只好在早上店里没客人的时候，用店门口那个公用电话继续打电话，8点半就打通了，女人高兴的不得了，以为这次终于可以订到票了，结果却说票已售完。票没订到不说，打电话却被老板正巧看到了，说她上班时间做私事，就把她炒了。无论女人怎么苦苦哀求，还是惨遭开除。 &lt;br /&gt;&lt;br /&gt;　　我一边安慰女人：反正要过年了，也要赶着回家过年呢，不干了也好，明年回来找个更好的工作。一边说：要不再用我手机打打试试，说不定能订到票呢。 &lt;br /&gt;&lt;br /&gt;　　女人摇着头：不可能的，我老乡电话打了十几天了，也没订到，就算早上八点一开通服务，你第一个打进去，也订不到票，因为这个列次的火车过年很紧张，不可能正当途径买到票。&lt;br /&gt;&lt;br /&gt;　　我以前只知道过年买火车票难，可是没想到这么难。我就问：去火车站排队买不行么？ 不是听说那里很多票贩子么？实在买不到就买黄牛票吧。 &lt;br /&gt;&lt;br /&gt;　　女人沉思半响，说：我老公已经在火车站排队排了半个月了，还没买到票呢。他白天请假去排队买不到，晚上就通宵不睡觉在那里排队买，还是买不到。票贩子天天看到我老公，主动找我老公说了好几次，说他们有票，保证真的，可是手续费太贵了，我们不舍得阿！ &lt;br /&gt;&lt;br /&gt;　　我说：多少手续费？总不能比火车票价还贵吧！女人咧嘴笑了，那笑有点勉强：我们回去，坐硬座，票价才200多，可是手续费却要300，你说两张票连票钱加手续费就要1000多，我们一个月的钱啊。这不是喝我们血么？1000块钱，在我们老家，是一年的收入啊，我们怎么能舍得呢！ &lt;br /&gt;&lt;br /&gt;　　听着她的话，我无语了。我突然感到很自卑，感觉自己竟然是那么浅薄，那么无知。 &lt;br /&gt;&lt;br /&gt;　　为了两张回家的火车票，工作丢了，俩人日日夜夜去排队买票，拿着生活费去打那个比长途还贵的电话，半个月下来，得到的结果竟然是：票已售完。&lt;br /&gt;&lt;br /&gt;　　那么多火车票去哪里了？ 为什么天天排队买票都说没票了，票贩子却又喊着：去任何地方都有票，手续费300元呢？ &lt;br /&gt;&lt;br /&gt;　　到底，票都到了何人的手中？ 又是怎样到了这些人的手中的呢？而那天价手续费的暴利到底在养活着谁？ &lt;br /&gt;&lt;br /&gt;　　我气冲冲的拨通了火车站的服务电话，我刚说完车次，就被告知：春节前本次车票已全部售完，请转乘其他车次。 &lt;br /&gt;&lt;br /&gt;　　我有些失望，试图劝说他们能不能转车回去？或者坐长途汽车？女人惨淡的笑了笑：大姐你别操心了，没法转车，能经过我们那个小地方的，就这一个车次，到别的地方倒车，也不好买票，还是回不去，汽车太贵了，都快赶上飞机票价了，不如走回去呢。说着还半安慰我似的开着这个黑色的玩笑。&lt;br /&gt;&lt;br /&gt;　　看着她紧锁的眉头，想着也许这会她老公还在火车站满怀着那么点希望排着队，等着老天爷大发慈悲，给他们两张回家的票，而我却还在犹豫着过年回不回去陪父母，想着回趟家真累，来回路上够折腾人的。&lt;br /&gt;&lt;br /&gt;　　我开始觉得自己的卑鄙，甚至渺小。他们也许可以不回去，但是却非要坚持回去，是为了双方年迈苍老的父母？还是为了回去分担家里的忧愁？无论怎样，为了回去，却要付出这般代价，值得么？也许很多人不以为然，可是在亲情的天平上，这个砝码却很重。 &lt;br /&gt;&lt;br /&gt;　　一张过年回家的火车票，就那么一张薄薄的纸片，不知道要费多少心，伤多少神，排多少个夜晚的队，付出多大的代价才能得到！那里面到底藏着多少回家人的血汗，又写着多少回家人无奈的眼泪？！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;(十六)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　我的飞机票已经订好了，全价！ &lt;br /&gt;&lt;br /&gt;　　每到过年，航空公司都开始腰杆子硬起来，打死不打折，可是飞机票却依然紧俏，中国人都太恋家，过年花在回家路上的路费，也算是对拉动经济增长做点贡献了。&lt;br /&gt;&lt;br /&gt;　　“铁老大”，仍然牛气烘烘的一边说着加开临时列车，又一边抱歉的告诉你：票已售完。隔壁夫妻在轮班排队买票的情况下，还是没得到回家的那一张通行证。他们天天在火车站广场等着，盼着哪天能有个好心人来退票，可是这种奢望很渺茫，他们似乎也感觉到无力回天，除了等待奇迹，只能盘算着是不是真的要走回家。&lt;br /&gt;&lt;br /&gt;　　在此期间，我一直不停的在网络上搜索着关于这辆车次的消息。每次看到有人转让，我都急不可待的去联系，可是都是票贩子在打广告，手续费比票价都高，而且行情看涨，越来越高。 &lt;br /&gt;&lt;br /&gt;　　我想帮他们出手续费，只要他们出票价，可是他们死活不答应，说是原则问题，就是走回去也不买高价票。他们很正式的跟我说：我们是中国公民，为什么坐车要买高价票呢？我们又不比别人低一等！难道我们没权利去享受一张正当价钱的票么？都去买高价票，以后就真的只有高价票，没有正当的火车票了，那些暴利养活的都不是好人，我们越这样养他们，他们越贪婪。 &lt;br /&gt;&lt;br /&gt;　　听了他们的话，我沉默了。 &lt;br /&gt;&lt;br /&gt;　　我突然害怕起这个有点病态的社会来，我怕那致命的细菌会感染我！ &lt;br /&gt;&lt;br /&gt;　　我感到那么无能为力的难过，我很想为他们做点什么，可是我却到头来什么都没能为他们做，甚至只是两张火车票，我都不能帮他们。 &lt;br /&gt;&lt;br /&gt;　　我最终没逃脱，找关系，走后门的那些俗套。我托了朋友，朋友又托了朋友的一个在火车站工作的朋友，费了九牛二虎之力才弄到两张硬座票。吃饭，应酬，说着冠冕堂皇的感谢的话，最后，终于在每张票多付了100元的情况下我才有机会把票握在手里。 &lt;br /&gt;&lt;br /&gt;　　酒足饭饱后，那人打着酒嗝还在继续不停的说着：票是多么难买，别人多出300块手续费他都没给，因为看在老朋友面子上他就当免费帮朋友的忙。 &lt;br /&gt;&lt;br /&gt;　　我只好用感激的眼神望着他，说着千恩万谢的话，用一种谢谢你的大恩大德的态度来应承他的恩惠。他满足的笑着，我也在心里满意的想着：有了票，他们终于可以回家过年了。 &lt;br /&gt;&lt;br /&gt;　　当我把两张车票放在他们面前的时候，他们呆住了，用一种难以置信的崇敬的眼神望着我，良久都不说话。我笑着，什么话也没说。 &lt;br /&gt;&lt;br /&gt;　　女人突然问道：你是不是买来的高价票？我摇摇头？那票是哪里来的？我笑了。我没说实话，我不知道为什么，在他们面前有些虚伪的实话是不需要说出来的。我告诉他们。票是我的一个同事的朋友买的，原本要回家过年，可是公司突然说有事，回不去了，只好转让票。结果正巧让我知道了，我就赶紧买过来给你们送过来了。我怕他们说钱的事，赶紧补充：票人家没多要一分钱，要不去火车站退票还要扣手续费呢，你们要了，正好解决了人家后顾之忧，人家还省钱了呢。 &lt;br /&gt;&lt;br /&gt;　　他们高兴的说不出话来，一边把票接过去，反复的看着，抚摸着，一边掏钱给我。我说什么也不要。他们便怔住了脸，说我不要钱，他们就不要票。我没办法只好收下了钱。 &lt;br /&gt;&lt;br /&gt;　　他们走的日子比我早，我去车站送了他们。我偷偷买了些广州特产和水果，在他们检票进去的时候，把东西塞到了他们其中的一个大编织袋里。 &lt;br /&gt;&lt;br /&gt;　　看着他们拎着大包小包，里面装满的或许不是值钱的东西，但是脸上洋溢着的幸福的欢笑里，让人感觉那一切都很珍贵。 &lt;br /&gt;&lt;br /&gt;　　他们不时的回头看看我，用拎着包的手用力的跟我挥手，咧嘴笑着，眼神里的光彩很温暖，我内心涌起一种莫名的感动。竟然有想哭的冲动，我忍住了，也笑着朝他们挥手。&lt;br /&gt;&lt;br /&gt;　　他们的身影渐渐消失在人群中，我没走，站在那里，我似乎听到了火车的鸣笛声，那一定是他们要回家的那列火车，那火车里一定有他们要回家的两个座位。 &lt;br /&gt;&lt;br /&gt;　　归途很累，很遥远，可是回家的路却很温暖。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十七）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　我第一次觉得过春节不那么无聊，我第一次觉得来回的路上不那么劳累。整个年，我过的很快乐，当我再次回到广州的时候，他们夫妻还没回来。 &lt;br /&gt;&lt;br /&gt;　　我想，他们一定是买不到火车票，要等过了高峰期才能返回。我安静的等在那里，看着那扇我隔壁的门，希望，在偶尔一天，能再看到那熟悉的身影。 &lt;br /&gt;&lt;br /&gt;　　他们来的真的很迟，元宵节过后一个星期才姗姗来迟。我微笑着迎接他们，端去我买的汤圆，跟他们分享我所有的快乐。 &lt;br /&gt;&lt;br /&gt;　　女人跟男人商量着：想推个小木车卖点水果或者小吃。问我的意见，我说好。与其给别人打工那么累，还不自由，倒真不如自己买点小吃赚钱好些。 &lt;br /&gt;&lt;br /&gt;　　于是夫妻俩，便买了个二手的小木车，批发了点菠萝，西瓜，在家练熟了削菠萝和西瓜的技术，便开始上街卖起了西瓜菠萝，一块钱一块。白天女人一个人去，晚上，夫妻俩一起出门，广州这么乱，丈夫不放心，再晚都陪着老婆卖完了，再回来。第二天一早，又去上班。 &lt;br /&gt;&lt;br /&gt;　　看着他们恩爱的每天出出进进，我由衷的羡慕却又高兴着，我想，就算苦，两个人分担开来，也是甜的！如果将来能有这样一个人对我说；无论痛苦灾难，我都会在你身边。我听了一定会哭着嫁给他，虽然我不知道要等这样的一个人等多久，但是起码有了憧憬，人便分外的有了希望起来。 &lt;br /&gt;&lt;br /&gt;　　有时，很晚了，还没把削好的卖完，他们就拿回来，分给我吃。我每吃一块就会笑着对他们说：我又吃掉你们一块钱。 &lt;br /&gt;&lt;br /&gt;　　其实我在心里明白，他们完全可以不用送给我吃，他们生活拮据，完全可以自己吃掉，剩下的又不多，水果吃了又对身体好，以前平时都不舍得买。可是他们仍然愿意分给我，因为，在他们的内心里，他们认为是好的东西，都愿意跟别人分享。 &lt;br /&gt;&lt;br /&gt;　　记得以前，在学习和生活中，我们经常能接触到：无私，奉献，善良这些美好的字眼，可是不知道什么时候我们的周围发生了变化，在我们的字典里再也看不到那些美丽的东西，自私自利，冷漠，代替了那些小小的感动，成了我们的主流。 &lt;br /&gt;&lt;br /&gt;　　当我，又一次体会到这种久违了的感觉的时候，我欣喜若狂，像个孩子捡拾到了珍贵的宝贝，我想我一定好好珍藏起来，在哪天忘记的时候拿出来看看，提醒自己。 &lt;br /&gt;&lt;br /&gt;　　那天，我下午回来，看到女人在家，很奇怪她没出去卖东西。就半开玩笑的说：老板，该开工了？怎么还没走？女人看到我，先是灿然的笑了笑，说：今天一天都没出去，做买卖的家什没了！ &lt;br /&gt;&lt;br /&gt;　　没了？卖了？丢了？我连炮竹的问道。她说：昨晚，被城市管理者抓到了，都给砸烂了！ &lt;br /&gt;&lt;br /&gt;　　砸烂了？凭啥？我气汹汹的问。她无奈的摇头，说：说是影响市容市貌，还影响环境卫生！他们没别的事，就是专门抓小商贩的！ &lt;br /&gt;&lt;br /&gt;　　我惊呆了，抓小商贩的？我突然一阵悲哀，就算有一百个理由抓你们，也用不着砸打抢吧？！ 跟别人说明白不就行了么？用的着这么土匪行为么？ &lt;br /&gt;&lt;br /&gt;　　女人听了我的话，竟然笑了，说：我就心疼那菠萝西瓜，好好的，削好的被扔了，没削好的也被砸烂了扔的满地是，我倒糊涂了，是我们推小车卖西瓜脏呢？还是把西瓜砸烂在地上，弄的一地西瓜渣滓脏呢？！&lt;br /&gt;&lt;br /&gt;　　听着女人的疑问，我竟然不知道怎么回答！ &lt;br /&gt;&lt;br /&gt;　　是啊，到底是谁更肮脏？是那卖西瓜的小贩？还是那砸西瓜摊的城市管理者？ &lt;br /&gt;&lt;br /&gt;　　原本干干净净的一切，究竟谁是罪魁祸首，究竟是谁弄脏了我们的世界？！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十八）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　一辆花了一个月生活费买来的破旧的小木车，一堆花了半个月生活费买来的西瓜菠萝，竟然在光天化日之下，被一群同样跟你都叫做人的家伙砸了个稀巴烂，任由你苦苦哀求，任由你好话说尽，也任由你眼泪滂沱！ &lt;br /&gt;&lt;br /&gt;　　无情的打砸把你要生存的一点点希望给砸碎，冷漠的言语将你最后的自尊践踏的体无完肤，吼来喝去的态度对你的乞求熟视无睹，就这样，在一个人人平等的社会里，你被人踩在了脚底下！&lt;br /&gt;&lt;br /&gt;　　我能想象的出，女人当时的那种心碎，那种绝望，那种甚至是可怜的尊严被践踏的伤悲。可是，就算我再怎么去理解，我却永远不能替代那种伤心欲绝的体会。也许，这就是人类的悲哀，一种你无论如何不能逾越，不能跨过的鸿沟，你只能去了解，却不能去感受。&lt;br /&gt;&lt;br /&gt;　　我无力的想着所发生的一切，却又无能为力的苦笑。我竟然想为她讨个说话的能力都没有，我感到了自己的有限，感到了自己总在接受了别人的恩赐后却不能报答的那种难受，那种矛盾的苦楚。&lt;br /&gt;&lt;br /&gt;　　我很想，再出钱帮他们买辆小车，可是女人说无论如何不敢去卖西瓜菠萝了，不是怕城市管理者，是受不了那种活生生的好东西被糟蹋的场面，是见不得那种一片狼藉的情景。 &lt;br /&gt;&lt;br /&gt;　　我尽量出些能赚钱的主意，女人说老乡帮她找了个发传单的兼职，不累，她想先做着。我看着她有些消瘦的脸庞，心很疼！ &lt;br /&gt;&lt;br /&gt;　　想着这些天发生的事，我越想越上火，恨不得把这个世界洗刷一遍，可是只我一个人的眼泪不够，甚至全世界的人的眼泪也不够！ &lt;br /&gt;&lt;br /&gt;　　我竟然气的牙疼起来，半边脸都肿了，疼的我食不下咽，鼻子也因为牙疼上火，流鼻血。我干脆请了假，去医院看牙。 &lt;br /&gt;&lt;br /&gt;　　几天折腾下来，吃药，打针不管用，后来重新检查，又说牙疼发炎引起了这里毛病，那里毛病，然后又开始治疗，又一通打针，吃药，检查，再检查，结果还是没好，牙还继续疼着，我继续郁闷着。 &lt;br /&gt;&lt;br /&gt;　　最后，医生觉得给我拔牙补牙！会更有效，又折腾了几天，总算开始转好。这一个牙疼，花了6000多块。我才知道，原来嘴巴里长的是28颗金豆子，贵着呢！ &lt;br /&gt;&lt;br /&gt;　　可是看到新闻上那些天价医疗费，我又欣慰了，别人看个病都几百万呢，我才6000够便宜的了！ &lt;br /&gt;&lt;br /&gt;　　我突然感慨起来，也许有的人能付得起天价医疗费，可是我付不起！也许我能付得起6000块钱的治疗牙疼的钱，可是有的人就付不起！和还有更多的人比我贫穷，还有更多的人看不起病！ &lt;br /&gt;&lt;br /&gt;　　看病贵，看病难，这已不是什么新鲜话题，可是这个根深蒂固的问题却始终没得到解决！我想到我们不远的邻国印度，它虽然还不太富有，虽然也人口众多，但是医疗制度却还完善，全民医疗免费。我不由的羡慕起来，不由的想着哪天我们也能享受到此等待遇！ &lt;br /&gt;&lt;br /&gt;　　如果能有那么一天，我想，报道上就再也不会有某某小女孩得白血病家人倾家荡产筹钱治病，也不会有，某人得病无钱医治自杀身亡，更不会有为救治得病家人全家集体上街乞讨！ &lt;br /&gt;&lt;br /&gt;　　生病是谁的错？ 身体的错么？！ 没钱治病是谁的错？家人的错么？！医疗费用居高不下谁的错？医生的错么？！ &lt;br /&gt;&lt;br /&gt;　　也许谁都错了，也许谁都没错！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（十九）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　那天，我捂着半边脸，忍着隐隐作痛的牙，心里恨恨的想：这6000块钱算是白花了。 &lt;br /&gt;&lt;br /&gt;　　女人自从摊子被砸了后，便兼职发传单，可是活儿并不是天天都有，所以也是有一天没一天的在家歇着。这天她看到我蹲在门口，抱着头不说话，吓坏了。 &lt;br /&gt;&lt;br /&gt;　　她拍了拍我的肩膀，我抬起头，她才看到我的脸肿了。她心疼的问：怎么了？这是？我嘴里含糊不清的嘟囔着：倒霉啊，牙疼，快要老命了。 &lt;br /&gt;&lt;br /&gt;　　她急忙问：看医生没？要不要紧？我从疼痛的牙缝里挤出简单的话：看了，没用， 白花6000块，现在是牙也疼，心也疼！ &lt;br /&gt;&lt;br /&gt;　　女人让我张开嘴看了看，自语道：肿的很厉害，要从根里治，你等着。说完就一溜烟跑回家。 &lt;br /&gt;&lt;br /&gt;　　不大会，女人端来一碗黑乎乎的汤水要我喝，我看着脏兮兮的，就皱起了眉头。女人硬逼着我喝下去。就这样，连续好几天，女人都让我喝那种苦苦的黑汤水。结果竟然消肿了，慢慢的牙也不怎么疼了。我想一定是那黑汤水起了作用。 &lt;br /&gt;&lt;br /&gt;　　原来，女人怕在异地他乡生水土不服或者有个头疼脑热的，就从老家带了些中药过来，正好她老公有牙疼的毛病，就带了些这方面的中药。看到我疼的厉害，她就把那些药都熬了汤给我喝，没想到吃了几付，就好转了。 &lt;br /&gt;&lt;br /&gt;　　我想着，她把药都熬给我喝了，万一哪天她老公牙疼，可怎么办？女人竟然笑笑：没事，他咬咬牙就挺过去了。我知道牙疼的滋味，所以心里还是后悔吃了人家的药。 &lt;br /&gt;&lt;br /&gt;　　我问这药很贵吧？女人笑了：不值钱的，都是些花啊草啊的，家乡的山上多的是，又不是什么高科技生产出来的化学药品，只几块钱一副！ &lt;br /&gt;&lt;br /&gt;　　我开玩笑的说：几块钱？那我那6000块钱不是喂狗了？女人笑了：我们那里穷，人病去不起医院，只能找个老中医开点中药熬熬喝！6000块看个牙疼，就是村长一辈子也没这个福气！那要多少人家一年的收入呢。 &lt;br /&gt;&lt;br /&gt;　　我听着女人的话，开始心凉凉的。6000块，这数字在我心里边格外沉重。 &lt;br /&gt;&lt;br /&gt;　　女人突然问了一句：在这里的医院生孩子要多少钱？我沉吟了一下说：估计要个一万块吧！女人吓了一跳：一万块？那要是生完了就走，不住院呢？我想了想：也要好几千吧！女人愣了：马上要生了进医院，让医生帮忙接生出来，我立马走人，也要上万么？我不用他们啥东西，就借他们点时间，搭把手就行了。 &lt;br /&gt;&lt;br /&gt;　　我没明白女人话的意思，也没往深处想，只是担心着那些月收入不足千元的民工的老婆，如果来到这大都市，不小心怀孕了；来不及回乡下老家生产，，他们要拿什么去进这大城市医院的大门，平安的把孩子生下来呢？！ &lt;br /&gt;&lt;br /&gt;　　生存是人共同的权利，如果连生存都被剥夺，或者说为生存要付出惨痛的血的代价，这样的生存还能配的上人类赋予它的最初的意义么？ &lt;br /&gt;&lt;br /&gt;　　一个生命，一颗牙齿，一句问话，告诉我：生存= 艰辛！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（二十）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　看着自己滚圆的大腿，一天肥一圈的腰枝，近似蠕动的庞大躯体，我再也不能忍受我日渐臃肿的躯体。我决定要减肥！ &lt;br /&gt;&lt;br /&gt;　　减肥，对于一个有些懒惰的人来说，是很困难的事。克服这个问题，需要一个支撑点，我想到找一个人监督，或者找一个人陪我减肥来调动我的积极性。 &lt;br /&gt;&lt;br /&gt;　　我脑海里蹦出的第一个人，就是隔壁现在不用忙着上班的女人。我毫不犹豫的告诉了她我的想法，她没迟疑就答应了。 &lt;br /&gt;&lt;br /&gt;　　从此，她每天早晚都陪我跑步，陪我做运动。每次我都自嘲的跟她开玩笑：我真残忍，找你这么一个皮包骨头的瘦子跟我一起减肥！她总是安慰我：锻炼身体有益健康是好事，不管胖瘦运动都有好处。 &lt;br /&gt;&lt;br /&gt;　　我心安理得的每天让她陪着我，看着她越来越瘦，我又不免内疚，可是每次她的笑脸却又把我的那点愧疚吹的荡然无存。我只好总是借口减肥，把好吃的，好喝的都给她，她不要，我就生气，她没办法只好收下，眼里却总是满是不好意思的感激和受之有愧。于是她用更拼命的陪我运动来偿还我对她的那点小小的恩惠。&lt;br /&gt;&lt;br /&gt;　　我做梦也没想到，愚人节后的第二天，她来告诉我：她要回老家了！我以为她在补上愚人节没给我开过火玩笑的机会，可是我错了，她是真的要回家！因为她怀孕五六个月了！ &lt;br /&gt;&lt;br /&gt;　　她本来是打算在这边生的，后来听我说到生孩子估计都要上万的，就下决心提前回老家，在老家待产。怕再晚，挺着临盆的大肚子坐火车不方便，所以才决定现在就走。 &lt;br /&gt;&lt;br /&gt;　　我惊呆了，不知道该说什么；我满脑子浮现的都是，她怀孕了，我还让她陪我做剧烈运动的镜头！我感到自己的可恨，一个怀孕五六个月的女人，挺着隆起的肚子天天陪在我身边，我竟然视而不见，是我自私到只考虑自己？还是我冷漠到忘记了他人死活？ &lt;br /&gt;&lt;br /&gt;　　想着她每天笑靥如花，从来没表现出半点怨言和不高兴，我第一次感到自己的可恶。我开始鄙视自己，憎恨自己那种习惯于接受别人付出的不良嗜好。 &lt;br /&gt;&lt;br /&gt;　　看上去，她更瘦了，于是我更痛恨起自己来。也许她每天没命的跟我锻炼，回家却吃不饱，第二天却要半饿着肚子继续陪我运动，肚子里还有一个消耗着营养的胎儿，这是怎样的一份艰辛的心情？这是怎样的一种残忍的场面？ &lt;br /&gt;&lt;br /&gt;　　当我大吃大喝，山珍海味的把自己喂养成一个十足的胖子，却要求一个每天吃不饱，饿着肚皮的孕妇跟我一起运动减肥？！这就是人性的自私，这就是我的自私到极点的本质的最有力说明。&lt;br /&gt;&lt;br /&gt;　　我不得不承认，自始至终，我并没高尚到哪里去，我还是那个第一次见他们的时候的那个龌龊的人，尽管极力想用帮助别人来掩盖自己的哪些自私的本性，可是还是失败了，本质像个烙印，已经刻进了我的灵魂深处！ &lt;br /&gt;&lt;br /&gt;　　面对这着这样一个残酷的事实，我开始无地自容，我突然感觉我根本配不上做他们的朋友，尽管我曾那么的想，但是我不够格，也没资格去填下那份上帝面前的契约，我只是个自私的懦夫，我没权利要求灵魂对我有任何丝毫的原谅！ &lt;br /&gt;&lt;br /&gt;　　我被自己重重的摔倒在地上，被人性的刀子割的体无完肤。那感觉很痛；很麻木！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;（二十一）&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　我的所有的思想，他们并没有任何的觉察，只是用一种悲伤的情绪跟我道别。 &lt;br /&gt;&lt;br /&gt;　　女人是一个人走的，为了省钱，女人死活没让男人送。 &lt;br /&gt;&lt;br /&gt;　　我不知道一个挺着肚子的女人，拎着大包小包好几个，在熙熙攘攘的人群中是怎样挤上了火车，又是怎样的一个人孤孤单单的回到了家。但是，我知道，如果是我，我做不到，不是没勇气，是没那个能力！ &lt;br /&gt;&lt;br /&gt;　　没几天，男人就搬走了，因为他觉得一个人住个几百块的房子不划算，赚的钱都搭在住上了，为了省钱，他选择了免费的，和一群民工一起住在一个桥下搭的窝棚里。男人临走的时候，我给了他一个信封，信封里有一封我写给他老婆的信和一张银行卡。我叮嘱他，无论如何，回家的时候记得把信带给他老婆。他点头答应着，很坚定的说：保证完成任务。 &lt;br /&gt;&lt;br /&gt;　　从此我隔壁的储藏室空出来了，房东说我可以放我那张旧沙发了，可是我没放，只是在每次经过的时候，都会停下来，默默的盯着房门看很久，很久。 &lt;br /&gt;&lt;br /&gt;　　从那以后，我再也没见过他们夫妻二人。我不知道男人还在不在他说的桥下的窝棚里住着，也不知道他有没有时间回老家一趟顺便把我的那封信交给他老婆，更不知道在那个我连名字都叫不出来的他们的老家，他的老婆是否安好。 &lt;br /&gt;&lt;br /&gt;　　只是，从他们离开后，我开始喜欢穿平跟鞋，因为那感觉很踏实。 &lt;br /&gt;&lt;br /&gt;　　踏实到，我想着明天开始一个人学会为自己的心灵搬家。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-6037362642362485314?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/6037362642362485314/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=6037362642362485314' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6037362642362485314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6037362642362485314'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/blog-post_2776.html' title='住在我隔壁的小夫妻（转载）'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-7602602440004577301</id><published>2008-09-09T16:42:00.002+08:00</published><updated>2008-09-09T16:53:48.820+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server中重复数据处理的技巧</title><content type='html'>存在表 Ａ 和表 Ｂ ，表 Ａ 和表 Ｂ 的结构相同，如下所示：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; 表Ａ：                                      表Ｂ：&lt;br /&gt;  ID  ProName  Num　　　　　　　　　　 ID  ProName  Num&lt;br /&gt; ---------------------------　　　　-------------------------------&lt;br /&gt;  1       aaa          10            1         aaa           10&lt;br /&gt;  2       bbb          10            2         eee           10&lt;br /&gt;  3       bbb          10            3         fff           10&lt;br /&gt;  4       ccc          10            4         ggg           10&lt;br /&gt;  5       ddd          10            5         ggg           10&lt;br /&gt;  ............（其它数据省略）          ..............（其它数据省略）&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（1）取出表 Ａ 中所有不重复的数据（ ID 列是自增的主键，数据是否重复不包括 ID 列）：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; SELECT * FROM A As T&lt;br /&gt;    WHERE&lt;br /&gt;    (SELECT Count(*) FROM A WHERE ProName = T.ProName AND Num = T.Num) = 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（2）在表 A 中取出在表 B 中不存在的数据：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; SELECT * FROM A&lt;br /&gt;     WHERE&lt;br /&gt;     (SELECT Count(*) FROM B WHERE ProName = A.ProName AND Num = A.Num) = 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（3）取出表 Ａ 与表 Ｂ 中重复的数据：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     SELECT A.ProName,A.Num FROM A INNER JOIN B ON A.ProName = B.ProName AND A.Num = B.Num&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;     若表 Ａ 或表 Ｂ 中本身就存在重复数据，那么以上方法取出的数据将不完全，以下写法可解决此问题：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     SELECT DISTINCT ProName,Num FROM     --由于 ID 列是不重复的，所以此处不能包含 ID 列&lt;br /&gt;         (SELECT * FROM A UNION ALL SELECT * FROM B) As T&lt;br /&gt;        WHERE&lt;br /&gt;        (&lt;br /&gt;            SELECT Count(*) FROM&lt;br /&gt;                (SELECT * FROM A UNION ALL SELECT * FROM B) As P&lt;br /&gt;                WHERE&lt;br /&gt;                     ProName = T.ProName AND Num = T.Num&lt;br /&gt;        ) &gt; 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（4）取出表 Ａ 和表 Ｂ 中所有不重复的数据：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     SELECT * FROM&lt;br /&gt;        (SELECT * FROM A UNION ALL SELECT * FROM B) As T&lt;br /&gt;        WHERE&lt;br /&gt;        (&lt;br /&gt;             SELECT Count(*) FROM&lt;br /&gt;                  (SELECT * FROM A UNION ALL SELECT * FROM B) As P&lt;br /&gt;                  WHERE&lt;br /&gt;                      ProName = T.ProName AND Num = T.Num&lt;br /&gt;        ) = 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（5）取出表 Ａ 和表 Ｂ 中所有的数据，将重复的数据只显示一条：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     SELECT DISTINCT ProName,Num FROM&lt;br /&gt;         (SELECT * FROM A UNION ALL SELECT * FROM B) As T&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;     若要将 ID 也显示出来（重复记录只显示一条，即第一条的ID），则可这样解决：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     Declare @tb Table&lt;br /&gt;    (&lt;br /&gt;         tID int identity,    --添加一个整型的自增字段，以便取出唯一值&lt;br /&gt;          ID int,&lt;br /&gt;         ProName varchar(50),&lt;br /&gt;         Num int&lt;br /&gt;    )&lt;br /&gt;    INSERT INTO @tb SELECT * FROM (SELECT * FROM A UNION ALL SELECT * FROM B) As T&lt;br /&gt;    SELECT ID,ProName,Num FROM @tb As T&lt;br /&gt;         WHERE&lt;br /&gt;         (SELECT Count(*) FROM @tb WHERE ProName = T.ProName And Num = T.Num) = 1&lt;br /&gt;         OR&lt;br /&gt;         (&lt;br /&gt;              (SELECT Count(*) FROM @tb WHERE ProName = T.ProName And Num = T.Num) &gt; 1&lt;br /&gt;              And&lt;br /&gt;              tID = (SELECT Top 1 tID FROM @tb WHERE ProName = T.ProName And Num = T.Num)&lt;br /&gt;         )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（6）删除表 Ａ 中所有重复的数据：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     DELETE A&lt;br /&gt;         WHERE (SELECT Count(*) FROM A As T WHERE T.ProName = A.ProName And T.Num = A.Num) &gt; 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（7）将表Ａ中重复的数据只保留一条，其余删除：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     DELETE A&lt;br /&gt;         WHERE&lt;br /&gt;         (SELECT Count(*) FROM A As T WHERE T.ProName = A.ProName And T.Num = A.Num) &gt; 1&lt;br /&gt;         And&lt;br /&gt;         ID &lt;&gt; (SELECT Top 1 ID FROM A As T WHERE T.ProName = A.ProName And T.Num = A.Num)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-7602602440004577301?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/7602602440004577301/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=7602602440004577301' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7602602440004577301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7602602440004577301'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-server_9539.html' title='SQL Server中重复数据处理的技巧'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-6985669241581319278</id><published>2008-09-09T16:41:00.001+08:00</published><updated>2008-09-09T16:41:55.655+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server中的用户定义函数的特点及与存储过程的区别</title><content type='html'>（1）用户定义函数有一个严格的限制——它们不能有副作用。函数副作用（function side effect）是指函数对作用范围之外的资源（如不是在该函数中声明的非临时表）所做的永久性改动。基本上，这个限制就意味着函数应该在不改变数据库中任何内容的情况下返回一个值。&lt;br /&gt;&lt;br /&gt;（2）用户定义函数不能调用对每次调用都返回不同数据的内置函数，例如： NewId(), Rand() 等等（在SQL Server 2005中， 自定义函数中可以使用 GetDate() ）。以下写法是错误的：&lt;br /&gt; CREATE FUNCTION fnMyGetRand() &lt;br /&gt;   RETURNS varchar(50)&lt;br /&gt; BEGIN&lt;br /&gt;  RETURN Convert(varchar(50),Rand(),104)     -- 错误，不能在用户定义函数中使用Rand().&lt;br /&gt; END&lt;br /&gt;&lt;br /&gt;（3）用户定义函数和存储过程都可以返回一个结果集，但存储过程对于这个结果集的使用是有所限制的。只有函数（不是存储 过程）返回的结果集才能在 Select 语句的 From 子句中被引用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-6985669241581319278?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/6985669241581319278/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=6985669241581319278' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6985669241581319278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6985669241581319278'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-server_8269.html' title='SQL Server中的用户定义函数的特点及与存储过程的区别'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2704371084602439317</id><published>2008-09-09T16:40:00.001+08:00</published><updated>2008-09-09T16:40:36.938+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C#中类与结构的区别</title><content type='html'>　　结构的实例要比类的实例占用的内存少，结构变量－－尤其是结构数组变量－－在初始化方面的开销也要少一些。因此，如果需要的是一些“轻量级”的对象－－尤其是那些与数值比较近似的对象，用结构来实现它们就比较恰当；日期就是一个很好的例子。当需要声明一个类或结构，但希望它里面的实例字段尽可能少占用一些内存时，你的首选应该是结构－－除非还需要用到一些必须用类才能实现出来的功能。一般来说，以文本和图像为主数据比较适合用一个类来表示和处理，而以数值为主数据则比较适合用一个结构来表示和处理。&lt;br /&gt;类与结构的区别：&lt;br /&gt;（1）Ｃ＃允许在类里对字段进行初始化，不允许在结构里也这样做。结构里的字段将被自动设置为０或ＮＵＬＬ。&lt;br /&gt;（2）Ｃ＃不允许在结构里声明一个无参构造器，Ｃ＃做出这一限制的目的是为了加快基于结构的数组的创建速度。&lt;br /&gt;（3）继承能力是类和结构的重要区别之一。结构不支持继承机制。所有的结构都是从System.ValueType类间接地派生出来的，而System.ValueType类又是从System.Object类派生出来的。但Ｃ＃不允许程序员声明一个继承自某个结构的类，也不允许程序员声明一个继承自另一个结构的结构。一旦声明了一个结构，从System.ValueType类一直延续到这个结构的“家谱线”就走到尽头了。&lt;br /&gt;（4）结构是值类型，类是引用类型。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2704371084602439317?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2704371084602439317/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2704371084602439317' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2704371084602439317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2704371084602439317'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/c_09.html' title='C#中类与结构的区别'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-8820769209353686855</id><published>2008-09-09T16:39:00.001+08:00</published><updated>2008-09-09T16:39:46.602+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C#中的委托（delegate）与事件（event）</title><content type='html'>　　理解委托的一种好方式是把委托的作用当作是给方法签名指定名称。&lt;br /&gt;　　委托的定义类似于方法的定义，但没有方法体，定义的前面要加上关键字　delegate　。例如：&lt;br /&gt;　　　　delegate String GetAString();&lt;br /&gt;　　因为定义委托基本上是定义一个新类，所以可以在定义类的任何地方定义委托，即可以在另一个类的内部定义，也可以在任何类的外部定义，还可以在命名空间中把委托定义为顶层对象。根据定义的可见性，可以在委托定义上添加一般的访问修饰符：public、private和protected等：&lt;br /&gt;　　　　public delegate String GetAString();&lt;br /&gt;　　下面的代码段说明了如何使用委托。这是在 int 上调用 ToString() 方法的一种相当冗长的方式：&lt;br /&gt;　　　　private delegate String GetAString();&lt;br /&gt;　　　　static void Main()&lt;br /&gt;　　　　{&lt;br /&gt;　　　　　　int x = 10;&lt;br /&gt;　　　　　　GetAString temp = new GetAString(x.ToString);&lt;br /&gt;　　　　　　Console.WriteLine("String is " + temp());&lt;br /&gt;　　　　}&lt;br /&gt;　　在这段代码中，实例化了类型为 GetAString 的一个委托，并对它进行初始化，使它引用整形变量 x 的 ToString() 的方法。在Ｃ＃中，委托在语法上总是带有一个参数的构造函数，这个参数就是委托引用的方法。这个方法必须匹配最初定义委托时的签名。&lt;br /&gt;&lt;br /&gt;匿名方法：&lt;br /&gt;　　使用委托还有另外一种方式：即通过匿名方法。匿名方法是用作委托参数的一个代码块。用匿名方法定义委托的语法与前面的定义没有什么区别。但在实例化委托时就有区别了。例如：&lt;br /&gt;　　　　class Program&lt;br /&gt;　　　　{&lt;br /&gt;　　　　　　delegate String delegateTest(String val);&lt;br /&gt;  &lt;br /&gt;　　　　　　static void Main()&lt;br /&gt;　　　　　　{&lt;br /&gt;　　　　　　　　string mid = ",middle part,";&lt;br /&gt;   &lt;br /&gt;　　　　　　　　delegateTest anonDel = delegate(String param)&lt;br /&gt;　　　　　　　　{&lt;br /&gt;　　　　　　　　　　param += mid;&lt;br /&gt;　　　　　　　　　　param += "and this was added to the string.";&lt;br /&gt;　　　　　　　　　　return param;&lt;br /&gt;　　　　　　　　};&lt;br /&gt;&lt;br /&gt;　　　　　　　　Console.WriteLine(anonDel("Start of string"));&lt;br /&gt;　　　　　　}&lt;br /&gt;　　　　}&lt;br /&gt;&lt;br /&gt;多播委托：&lt;br /&gt;　　委托也可以包含多个方法，这种委托称为多播委托。如果调用多播委托，就可以按顺序连续调用多个方法。为此，委托的签名就必须返回 void （否则，返回值应送到何处？）。实际上，如果编译器发现某个委托返回 void ，就会自动假定这是一个多播委托。多播委托的用法如下：&lt;br /&gt;　　　　delegate void delegateTest();&lt;br /&gt;　　　　class MainClass&lt;br /&gt;　　　　{&lt;br /&gt;　　　　　　static void Main()&lt;br /&gt;　　　　　　{&lt;br /&gt;　　　　　　　　delegateTest test = new delegateTest(SomeoneMethod_1);&lt;br /&gt;　　　　　　　　test += new delegateTest(SomeoneMethod_2);&lt;br /&gt;　　　　　　　　test();&lt;br /&gt;　　　　　　}&lt;br /&gt;　　　　}&lt;br /&gt;　　多播委托可以识别运算符 + 和 += 。同时也可以识别运算符 - 和 -= ，以从委托中删除方法调用。&lt;br /&gt;&lt;br /&gt;事件：&lt;br /&gt;　　定义了委托之后，就可在委托的基础上定义一个事件：&lt;br /&gt;　　　　public void delegateTest();&lt;br /&gt;　　　　public static event delegateTest eventTest;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-8820769209353686855?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/8820769209353686855/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=8820769209353686855' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8820769209353686855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8820769209353686855'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/cdelegateevent.html' title='C#中的委托（delegate）与事件（event）'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-8183457368056138671</id><published>2008-09-09T16:37:00.001+08:00</published><updated>2008-09-09T16:37:58.263+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>.NET Remoting简介</title><content type='html'>　　.NET Remoting 可用来访问另一个应用程序域（例如另一个服务器）中的对象。.NET Remoting 为客户机和服务器端的.NET应用程序之间的通信提供了一种更为快速的格式。&lt;br /&gt;　　.NET Remoting 是在不同的应用程序域之间通信的技术。&lt;br /&gt;&lt;br /&gt;.NET Remoting 与 Web Service 之间的区别：&lt;br /&gt;    使用 Web Service 可以在网络上传送消息。通过 Web Service ，可以获得平台独立性。Web Service 不仅具有平台独立性，在客户和服务器之间的耦合也比较松散，所以更容易处理版本问题。&lt;br /&gt;    .NET Remoting 在客户和服务器之间提供较紧密的耦合，因为它们共享相同的对象类型。.NET Remoting 给CLR对象提供了在不同的应用程序域之间调用方法的功能。&lt;br /&gt;    .NET Remoting 与 WEB Service 大不相同。要 Web Service 中，对象是抽象的，客户不需要知道服务器的对象类型，与 .NET Remoting 不同，Web Service 是独立于平台的。&lt;br /&gt;&lt;br /&gt;.NET Remoting 体系结构中的主要元素：&lt;br /&gt;    远程对象：远程对象是运行在服务器上对象。客户机不能直接调用远程对象的方法，而要使用代理。使用.NET，很容易把远程对象对象和本地对象区分开：即每一个从 MarshalByRefObject 派生出来的类从来都不会离开它的应用程序域。客户可以通过代理对象调用远程对象的方法。&lt;br /&gt;    信道：信道用于客户机和服务器之间的通信。信道包括客户机的信道部分和服务器的信道部分。 .NET Remoting 2.0 提供了三种信道类型，它们分别通过 TCP 、 HTTP 和 IPC 进行通信。此外，还可以创建定制的信道，使用不同的协议通信。&lt;br /&gt;    消息：消息被发送到信道中。消息是为客户机和服务器之间的通信而创建的。消息包含远程对象的信息、被调用方法的名称以及所有的参数。&lt;br /&gt;    格式标识符：格式标识符用于定义消息是如何传输到信道中的。.NET 2.0 有SOAP格式标识符和二进制格式标识符。使用SOAP格式标识符，可以与不是基于 .NET Framework 的WEB服务通信。二进制格式标识符的速度更快，可以有效地用在企业网环境中。当然，也可以创建定制的格式标识符。&lt;br /&gt;    格式标识符提供程序：格式标识符提供程序用于把格式标识符与信道联系起来。在创建信道时，可以指定要使用的格式标识符提供程序，格式标识符提供程序则定义把数据传输到信道中时所使用的格式标识符。&lt;br /&gt;    代理对象：客户机使用的是代理对象上的方法，而不是远程对象上的方法。代理对象分为两种：即透明的代理对象和真实的代理对象。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-8183457368056138671?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/8183457368056138671/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=8183457368056138671' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8183457368056138671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8183457368056138671'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/net-remoting.html' title='.NET Remoting简介'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-5849115369709086217</id><published>2008-09-09T16:35:00.000+08:00</published><updated>2008-09-09T16:36:00.157+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C#中的线程</title><content type='html'>　　若要使用线程，需引用命名空间：System.Threading&lt;br /&gt;　　　　using System.Threading;&lt;br /&gt;　　线程是使用 Thread 类来处理的。一个 Thread 实例表示一个线程，即执行实例。实例化一个 Thread 对象，就可以创建另一个线程。&lt;br /&gt;　　Thread 构造函数需要一个参数，用于指定线程的入口－－即线程开始执行的方法。因为我们传送的是方法的详细信息，所以需要使用委托。实际上，委托已经在 System.Threading 类中定义好了。它称为 ThreadStart ，其签名如下：&lt;br /&gt;　　　　public delegate void ThreadStart();&lt;br /&gt;　　传送给 Thread 构造函数的参数必须是这种类型的委托。另一种方式是使用匿名方法。&lt;br /&gt;　　完成后，新线程实际上并没有执行任何任务，它只是在等待执行。需要调用 Thread.Start() 方法来启动线程。&lt;br /&gt;　　　　using System;&lt;br /&gt;　　　　using System.Threading;&lt;br /&gt;  &lt;br /&gt;　　　　class ThreadModelClass&lt;br /&gt;　　　　{&lt;br /&gt;　　　　　　static void Main()&lt;br /&gt;　　　　　　{&lt;br /&gt;　　　　　　　　Thread.CurrentThread.Name = "MainThread";&lt;br /&gt;&lt;br /&gt;　　　　　　　　ThreadStart startThread1 = new ThreadStart(ThreadFunction);&lt;br /&gt;　　　　　　　　Thread thread1 = new Thread(startThread1);&lt;br /&gt;　　　　　　　　thread1.Name = "NewThread1";&lt;br /&gt;　　　　　　　　thread1.Start();&lt;br /&gt;&lt;br /&gt;　　　　　　　　ThreadFunction();&lt;br /&gt;　　　　　　}&lt;br /&gt;&lt;br /&gt;　　　　　　protected static void ThreadFunction()&lt;br /&gt;　　　　　　{&lt;br /&gt;　　　　　　　　for(int i = 0;i &lt;= 1000000;i++)&lt;br /&gt;　　　　　　　　{&lt;br /&gt;　　　　　　　　　　if(i % 500 == 0)&lt;br /&gt;　　　　　　　　　　Console.WriteLine(Thread.CurrentThread.Name + ": " + i);&lt;br /&gt;　　　　　　　　}&lt;br /&gt;　　　　　　}&lt;br /&gt;　　　　}&lt;br /&gt;&lt;br /&gt;　　可以用 Suspend() 方法挂起一个会话进程，如果用户以后需要恢复该线程，可以使用 Resume() 方法，要终止线程，使用 Abort() 方法。在终止线程后需要等待一段时间，线程才被真正终止。如果后续的处理依赖于另一个已经终止的线程，可以调用 Join() 方法，等待线程终止：&lt;br /&gt;　　　　thread1.Abort();&lt;br /&gt;　　　　thread1.Join();&lt;br /&gt;&lt;br /&gt;线程的优先级：&lt;br /&gt;&lt;br /&gt;　　如果在应用程序中有多个线程在执行，但一些线程比另一些线程重要，则可设置线程的优先级。高优先级的线程可以完全阻止低任选级的线程执行。线程的优先可用 ThreadPriority 枚举来设置，优先级从高到低的顺序为：Highest , AboveNormal , Normal ,BelowNormal , Lowest 。&lt;br /&gt;　　　　thread1.Priority = ThreadPriority.AboveNormal;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-5849115369709086217?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/5849115369709086217/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=5849115369709086217' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5849115369709086217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5849115369709086217'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/c.html' title='C#中的线程'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2334684951217555746</id><published>2008-09-09T16:32:00.001+08:00</published><updated>2008-09-09T16:34:33.132+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2005 中的 PIVOT 和 UNPIVOT</title><content type='html'>　　可以使用 PIVOT 和 UNPIVOT 关系运算符对表值表达式进行操作以获得另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式，并在必要时对最终输出中所需的任何其余的列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作，将表值表达式的列转换为列值。&lt;br /&gt;　　常见的可能会用到 PIVOT 的情形是，需要生成交叉表格报表以汇总数据时。例如：&lt;br /&gt;　　若存在表 Pros ,字段和数据如下：&lt;br /&gt;　　　　 PID（产品ＩＤ）　　　Nums（数量）　　　　SID(仓库ＩＤ)&lt;br /&gt;　　　　-------------------------------------------------------------------&lt;br /&gt;　　　　　　　　1　　　　　　　　10　　　　　　　　　　1&lt;br /&gt;　　　　　　　　1　　　　　　　　20　　　　　　　　　　2&lt;br /&gt;　　　　　　　　1　　　　　　　　20　　　　　　　　　　1&lt;br /&gt;　　　　　　　　2　　　　　　　　10　　　　　　　　　　1&lt;br /&gt;　　　　　　　　2　　　　　　　　10　　　　　　　　　　3&lt;br /&gt;　　　　　　　　3　　　　　　　　10　　　　　　　　　　1&lt;br /&gt;　　　　　　　　3　　　　　　　　10　　　　　　　　　　2&lt;br /&gt;　　　　　　　　3　　　　　　　　20　　　　　　　　　　2&lt;br /&gt;　　　　　　　　3　　　　　　　　50　　　　　　　　　　3&lt;br /&gt;　　若要求出每种产品在每个仓库中的数量，并且以以下格式显示：（表 C ）&lt;br /&gt;             PID（产品ＩＤ）  S1（仓库１中的数量）  S2（仓库２中的数量）  S3（仓库３中的数量）&lt;br /&gt;　　　　--------------------------------------------------------------------------------------------&lt;br /&gt;　　　　　　　　　1　　　　　　　　30　　　　　　　　　　20　　　　　　　　　　 0&lt;br /&gt;　　　　　　　　　2　　　　　　　　10　　　　　　　　　　 0　　　　　　　　　　10&lt;br /&gt;　　　　　　　　　3　　　　　　　　10　　　　　　　　　　30　　　　　　　　　　50&lt;br /&gt;　　若要实现此功能，可使用PIVOT:&lt;br /&gt;　　　　SELECT PID,IsNull([1],0) S1,IsNull([2],0) S2,IsNull([3],0) S3 FROM Pros&lt;br /&gt;　　　　　　Pivot&lt;br /&gt;　　　　　　(&lt;br /&gt;　　　　　　　　Sum(Nums) For SID in ([1],[2],[3])&lt;br /&gt;            ) As A&lt;br /&gt;　　若仓库ＩＤ数量是不固定的，就是说事先并不知道有多少仓库和仓库的编号，则可先查询出所有的仓库ＩＤ，再用拼接查询字符串的方法得出查询语句：&lt;br /&gt;　　　　Declare @PreVar varchar(200)&lt;br /&gt;　　　　Declare @sql varchar(1000)&lt;br /&gt;　　　　Declare @var varchar(100)&lt;br /&gt;　　　　Set @PreVar = 'select PID,'&lt;br /&gt;　　　　Set @sql = ' from Pros pivot(sum(Nums) for SID in ('&lt;br /&gt;　　　　Declare @cur Cursor&lt;br /&gt;　　　　Set @cur = Cursor&lt;br /&gt;　　　　For SELECT SID FROM Pros Group by SID&lt;br /&gt;　　　　Open @cur&lt;br /&gt;　　　　Fetch next FROM @cur into @var&lt;br /&gt;　　　　While(@@FETCH_STATUS = 0)&lt;br /&gt;　　　　BEGIN&lt;br /&gt;　　　　　　Set @PreVar = @PreVar + 'IsNull([' + @var + '],0) S' + @var + ','&lt;br /&gt;　　　　　　Set @sql = @sql + '[' + @var + '],'&lt;br /&gt;　　　　　　Fetch next FROM @cur into @var&lt;br /&gt;　　　　END&lt;br /&gt;　　　　Close @cur&lt;br /&gt;　　　　Deallocate @cur&lt;br /&gt;　　　　Set @PreVar = Substring(@PreVar,1,Len(@PreVar) - 1)&lt;br /&gt;　　　　Set @sql = Substring(@sql,1,Len(@sql) - 1)&lt;br /&gt;　　　　Set @sql = @PreVar + @sql + ')) As A'&lt;br /&gt;　　　　EXEC (@sql)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　若要将 PIVOT 后的结果再转换成以前的格式，即将表 C 的数据显示为表 Pros 的格式，就需要用到 UNPIVOT ：&lt;br /&gt;　　　　SELECT PID,SID,Nums FROM&lt;br /&gt;　　　　　　(SELECT PID,S1 [1],S2 [2],S3 [3] FROM C) As T&lt;br /&gt;　　　　　　UnPivot&lt;br /&gt;　　　　　　(&lt;br /&gt;　　　　　　　　Nums&lt;br /&gt;　　　　　　　　For SID in ([1],[2],[3])&lt;br /&gt;　　　　　　) As P&lt;br /&gt;　　UNPIVOT 并不是 PIVOT 的完全反向操作，反向操作后的结果是 PIVOT 汇总后的数据。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2334684951217555746?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2334684951217555746/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2334684951217555746' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2334684951217555746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2334684951217555746'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-server-2005-pivot-unpivot.html' title='SQL Server 2005 中的 PIVOT 和 UNPIVOT'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-6061417379311212219</id><published>2008-09-09T16:31:00.001+08:00</published><updated>2008-09-09T16:31:57.235+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server：取出服务器上所有的数据库名称</title><content type='html'>&lt;blockquote&gt;use master&lt;br /&gt;&lt;br /&gt;select [name] from sysdatabases&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-6061417379311212219?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/6061417379311212219/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=6061417379311212219' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6061417379311212219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/6061417379311212219'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-server_09.html' title='SQL Server：取出服务器上所有的数据库名称'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-292883243848949085</id><published>2008-09-09T16:29:00.001+08:00</published><updated>2008-09-09T16:30:56.748+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server：取出数据库中所有表的名称和所有自定义表的名称</title><content type='html'>&lt;blockquote&gt;取出数据库中所有表的名称：&lt;br /&gt;&lt;br /&gt;select * from sysobjects&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;取出数据库中所有自定义表的名称：&lt;br /&gt;&lt;br /&gt;select * from sysobjects where  objectproperty(id,'IsUserTable')=1&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-292883243848949085?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/292883243848949085/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=292883243848949085' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/292883243848949085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/292883243848949085'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/blog-post_1768.html' title='SQL Server：取出数据库中所有表的名称和所有自定义表的名称'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-7392600576492026674</id><published>2008-09-09T16:25:00.002+08:00</published><updated>2008-09-09T16:28:54.029+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server：取得一个表中所有字段的名称</title><content type='html'>&lt;blockquote&gt;select [name] from syscolumns where object_name('id') = '[表名]'&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-7392600576492026674?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/7392600576492026674/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=7392600576492026674' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7392600576492026674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7392600576492026674'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-server.html' title='SQL Server：取得一个表中所有字段的名称'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-1011014266243624623</id><published>2008-09-09T16:22:00.002+08:00</published><updated>2008-10-11T02:37:15.082+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ＩＴ'/><title type='text'>开发成功游戏的指导方针</title><content type='html'>本文最早是由Bruce Shelly在2001年美国游戏开发会议上发表的一篇演讲，它向您展示了一支最成功的游戏开发团队Ensemble Studios（负责开发了一鸣惊人的帝国时代）的想象力，以及在开发商业游戏时必须谨记于心的一些重点。（由于译者水平的原因，译文可能与原文有所出入）&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;导言&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        首先，题目中的两个单词需要说明一下。“指导方针”一词，意思是一些建议和复选选项，而不是秘诀；“成功”一词的意思则是游戏在商业上的成功：包括销售与利润两个方面。我作这段陈述的目的在于：提出关于如何使游戏取得商业成功的一些策略、方法和要素。对于这些方针，您在自己的开发中运用的越多，您就越有可能最终取得游戏的成功。&lt;br /&gt;&lt;br /&gt;        这些指导方针的来源是多种多样的，但主要来自于实际开发经验。其中包括我个人20年的开发经验以及玩各种游戏的经历，也包括我与Ensemble Studios公司的同事、业界里的朋友以及过去的其他同事的长期讨论。尤其是与Sid Meier的讨论，这里陈述的大部分思想，都是首先从他那里了解到的。&lt;br /&gt;&lt;br /&gt;        在开始演讲之前，有两点需要说明一下。第一，我今天所陈述的游戏开发方针主要适用于“虚拟地图类”游戏和“策略类”游戏。这些游戏的着重点与“基于故事情节”的“顺序结构”类游戏的着重点不同。第二，今天陈述的内容主要涉及PC游戏，尽管其中的许多开发方针对于控制台游戏机也依然适用。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;吸引更多的用户&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;       当您着手开发一款PC游戏时，地球上每个拥有PC机的人都将是您潜在的市场。一旦对游戏的内容作出了决定（恐怖类、科幻类、即时策略类、射击类），您也就失去了那些“对您的游戏主题、类型、风格不感兴趣的”部分潜在用户。而商业上成功的游戏往往能够抓住大部分的市场份额，这源于他们所选择的游戏主题、类型和风格能够吸引更多的用户。因为PC逐渐被越来越多的社区、不同年龄层次的人、以及妇女们所接受，所以游戏的设计不一定非要针对某类人，也许是不应该仅针对那些传统意义上的用户，即年青的男性群体。&lt;br /&gt;&lt;br /&gt;        传统上，游戏主要是受到“核心用户”（年轻男子）的喜爱，所以游戏必须保持对这些“核心用户”的吸引力，但同时也要扩大它的吸引力，以带来更多的“临时用户”。既然这样，我们首先要得到“核心用户”的肯定，然后将他们对游戏肯定的言语拿到市场上进行宣传，这种做法可以提高游戏在“临时用户市场”的知名度，从而产生大量的销售额。&lt;br /&gt;&lt;br /&gt;        为了使游戏具有更大的吸引力，我们不仅要求游戏的某些方面或者选项要对“核心用户”具有吸引力，还应该在其他方面对“临时用户”具有一定的吸引力，而这些方面可能会吸引“核心用户”，也可能不会吸引“核心用户”。同时，我们需要了解游戏是如何吸引不同游戏者的，以及他们为什么喜欢这个游戏，游戏者“喜好”上的差异要求游戏通常具备单人和多人游戏的选项。&lt;br /&gt;&lt;br /&gt;        应当努力使您的游戏在同类型、同主题的游戏中做到最好。因为最好的游戏会带来巨大的利润，而这正是平常的游戏所不能达到的。&lt;br /&gt;&lt;br /&gt;        接下来陈述的内容主要涉及到：为了娱乐更多的用户，我们应该怎么做，或者说游戏应该具备什么功能。这意味着：通常要创造一些具有商业价值的艺术，而不是真正意义上的艺术。因为最好的游戏应该能够真正赢得游戏者的欢心，而不仅仅是供游戏者消遣一下（愉悦感很快就会消失）。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;区别与创新，拒绝模仿&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        任何游戏，其大部分的设计思想都来自于其他游戏。在设计自己的游戏时，自然地会受到成功游戏的启发，并从中借鉴。然而，要想取得成功，新的游戏必须明显地不同于旧的游戏，那些完全一样、毫无创新的模仿游戏，即所谓的克隆游戏，通常被认为是商业上的失败之作。&lt;br /&gt;&lt;br /&gt;        任何新游戏一般在游戏的主题、类型、风格上与竞争者相似。为了取得成功，新游戏必须在它的优势项目上超越其他对手，在劣势项目上也要不甘示弱。找出对手所设计游戏的特色以及缺点，这些都是您成功的机会，也是使您的游戏在市场上区别于其他游戏的主要途径。例如帝国时代I中的许多要素就是机会所在，因为其他的竞争对手（这里指游戏）很少甚至没有实现它们，这些要素包括：与历史相关的主题、有组织的队伍、随机地图、从不作弊的AI、不同级别的难度、多种胜利条件、历史注释以及漂亮的动画效果。正是由于这些要素，才使得“帝国时代”与众不同。也因此帮助Ensemble Studios建立了自己的声誉，从而使它也成为了“即时策略类游戏”的主导者。因此，我们要对“其他类型的潜在竞争对手”的优缺点进行分析，提示出它们的强项和弱项，从中寻找机会。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;尽早地建立原型&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        尽可能早地对游戏中所有的重要系统和技术建立原型，将有助于验证您的构思。从技术的角度讲，建立原型系统是非常有用的，但是对于游戏的测试而言，则是不太合适的。在游戏能够运行之前，设计者很大程度上是在猜测。因此，对于一个尚未完全设计好的游戏，它第一次运行时，总是会带来很多意外的情况。“用原型系统来测试游戏”对于“策略类”游戏和其他“虚拟地图类”游戏来说特别有用，因为它们不依赖于事先设计好的、顺序结构的故事线索。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;边玩边设计&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        一旦设计好一个可运行的原型，接下来每天都要对它进行测试，在测试的基础上进行调整，迅速地设计出新的版本，在这个过程中不断地改进游戏。测试也就是在您身为游戏者的条件下，去验证它哪里是正常工作的、哪里还存在着问题。大型的测试小组能产生更有价值的反馈信息，从而创建出更具有吸引力的游戏。我们的测试既要针对“核心用户”的使用情况，也要针对“临时用户”的使用情况。Ensemble Studios要求每位设计人员每周至少对当前的项目测试一次，并提供反馈信息。&lt;br /&gt;&lt;br /&gt;        这个过程的缺陷在于：很难对测试结果做出预测，并且开销很大。尽管如此，这样做确实能最终开发出一个有趣的游戏。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;有趣的决策＝有趣的游戏&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        让游戏者执行有趣、有步骤的决策是游戏设计方法上的飞跃。当游戏者对自己所做的决策感到满意时、当游戏者被“执行决策的节奏”所吸引时、当游戏者从自己做的正确决策中获到回报和成就感时，游戏者就得到了乐趣。但如果这样的决策设计得太频繁或者太随机，游戏者的乐趣就会减少。这样的做法存在一定风险，即：极有可能导致游戏者对游戏感到厌烦，从而放弃这个游戏。&lt;br /&gt;&lt;br /&gt;        好的游戏节奏能够增加决策时的乐趣。“即时”类游戏相对于那种“基于旋转操作的”游戏而言，具有先天的优势，因为“持续的时钟计时”会导致游戏者来不及决策而产生绝望感。如果游戏者可以做出许多合理的决策，但由于时间有限即只做出一部分决策，则游戏就会变得更加有趣。&lt;br /&gt;&lt;br /&gt;        当您为游戏设计新的特点时，一定要对决策部分进行“趣味度”测试。新增的特点或手法会增加游戏者决策时“趣味度”吗？如果答案不是强有力的肯定，请删掉它。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;首先提供15分钟的简易玩法&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        一位游戏者通常需要15分钟的时间才能熟悉这个游戏，否则，没有这15分钟我们可能永远地失去这位游戏者。如何吸引一个新的游戏者到游戏中来，这里提出了三个关键点：（1）一个有趣的开端；（2）进入时少设障碍（界面，背景故事）；（3）让游戏者只需执行少量的决策，随后再逐渐增加决策数（这是由“决策”所产生的倒金字塔原则）。这样，可以使游戏者很快而且很轻松地进入游戏，以至于他完全被游戏所吸引，从而愉快地娱乐着。只要这部分的设计十分恰当，则游戏者就会全身心地投入到游戏中，从而使他们在不知不觉中玩游戏。&lt;br /&gt;&lt;br /&gt;        每个游戏都不可或缺地需要游戏者执行一些设备工作。因为每个游戏都有特殊的控制键、人物介绍或者背景故事，所以必须设计一些指南或以更加精巧的方式在游戏者娱乐时告诉游戏者。内置于游戏本身的指南是最好的方法。如果游戏需要执行大量的毫无趣味的预备工作、或者令人沮丧的进入操作，则这样的游戏极有可能失败。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;游戏者不是设计者、程序员、计算机，他（她）应该从游戏中获得乐趣&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        尽管这条原则显而易见，但许多游戏正是没有遵循它而导致失败。这可能是由于某些设计者使得游戏具有了过多的特征，或者是设计者经过卓越地分析，设置了一条意外的、无人能找得到的唯一取胜路线。此外，游戏制造商将预算投到了大量的图像处理和动画设计中，这无疑使美工人员非常高兴，但却很少花时间去考虑如何将它们加入到实际的游戏中去。试想一下，如果游戏者需要频繁地等待计算机进行大量的计算，也许计算机得到乐趣比游戏者还要多。&lt;br /&gt;&lt;br /&gt;        游戏开发应当集中精力去赢取游戏者的欢心，为游戏者创造更多的娱乐。每个团队的工作，每一台机器的运转，都是为了这个目标。所有的代码、游戏特征、美工素材、音效、乐谱和计算机操作都应该增强娱乐性。也许有一点例外，就是那些出于商业上的考虑而设计的元素，如开场动画。&lt;br /&gt;&lt;br /&gt;        还有两点必须牢记，即：&lt;br /&gt;&lt;br /&gt;        （1）游戏者在游戏中应该被当成是英雄人物。&lt;br /&gt;&lt;br /&gt;        （2）在单人游戏中，游戏者应该能玩得尽兴，付出了很大努力但最终取得胜利。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设计史诗般的游戏，创立 / 宣传您的品牌&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        游戏中陌生的东西越多（风格、主题、艺术形式、技术、开发者、发行商），则越难以在市场上占一席之地，也越难以受到媒体、网络以及游戏者的关注，这些都与游戏能否在商业上取得成功直接相关。而创立一个成功的品牌，将使这些变得容易，并有可能为后继的产品奠定用户基础。最好是选择那些能够迎合市场和媒体想象力的游戏类型和主题，从而建立一系列相互关联的、史诗般的游戏。发行商也需要这样的品牌，他们更愿意在这些方面进行投资。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;增加产品的价值&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        虽然成功的游戏玩法是创造成功游戏的关键，但图像、音效以及音乐同样扮演着很重要的角色。图像和音效是游戏界面中最关键的元素。图像必须做到有吸引力、迷人且能刺激游戏者的好奇心。图像与音效应该能够迅速地传达游戏的信息，而无需游戏者太多的努力。三者结合，将能够创造出游戏的氛围，从而有助于游戏者忘我地游戏。可见，图像和声音对于游戏在市场上推广具有很重要的辅助作用。&lt;br /&gt;&lt;br /&gt;        不仅如此，高质量的图像、音效和音乐将增强游戏者的体验感，从而有助于提升游戏在质量上的知名度。如果这些方面在质量上不过关，尽管其他方面设计得很优秀，如游戏的提示信息，也会大大降低产品的影响力。可见，高标准的产品质量可以增加游戏、开发者以及发布商的声誉。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;界面的目标：直观、易用、使游戏者的满意度达到最高&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        界面常常是最后才考虑的要素，因为它不像游戏特色、图像、音效、以及游戏音乐那样，能够为游戏者创造一种氛围和感觉。没有人会对游戏菜单如何下拉或者按钮如何展现产生兴趣。因此，界面很少能够大幅度地增强游戏的好玩程度。然而，界面设计的不佳，也极有可能给游戏带来负面影响。切记，使用娱乐性、可视效果和声音来迎合游戏者的想像力只不过是成功的一半，而另一半则是如何让游戏者能够很轻松地接触到这些非常棒的东西。一个混乱、复杂、令人沮丧的界面设计可以毁掉一个游戏。如果游戏者在第一次玩游戏时就碰到这么糟糕的界面，也许会很轻易地失去兴趣，从而放弃该游戏。&lt;br /&gt;&lt;br /&gt;        另外，您应当尽可能地减少界面的层次（如多级菜单）和控制选项（如“玩帝国时代只需一只鼠标即可操作”就是一种比较好的设计）。当游戏者对“控制键或操作的学习”感到为难时，或者游戏者在玩之前不得不进行相当多的学习时，有必要提供一个非常有趣的指南。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;在一个游戏里提供多种游戏经历&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        为了帮助吸引更多的用户，在同一个游戏中可以包含各种游戏玩法和一些可调整的参数，通过参数之间不同的组合可以给游戏者提供各种不同的游戏经历。例如帝国时代中就包含了不同的游戏经历，如：多人死亡竞赛、单个游戏者战役、随机地图游戏、合作游戏、山头争夺游戏、“奇迹创造”竞赛。胜利的条件、地图的类型、难度级别的设立都是可用的参数，调整这些参数就可以形成不同的游戏经历。每种参数都具备多种选择，从而可以形成各种不同的游戏类型。&lt;br /&gt;&lt;br /&gt;        我们希望那些对游戏非常熟悉的中学生们（“核心游戏者”）告诉他们的朋友说：我们的游戏是他目前最喜欢的游戏。当那些朋友购买了我们的游戏以后，虽然他们的水平还不能与这些熟练的中学生们相媲美，但是通过调整游戏中的参数，他们仍然可以从中找到适合他们的游戏类型，从而获得乐趣。这样，普通游戏者和熟练的游戏者就都可以玩我们的游戏了，尽管他们玩的是游戏中完全不同的部分。&lt;br /&gt;&lt;br /&gt;        我们在一个游戏中为游戏者提供多种游戏经历，这无疑会增加购买游戏的用户，而且使这些用户对我们的游戏感到满意。而每一个感到满意的用户又反过来成为潜在的游戏宣传者。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;游戏者的投资&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        某些最成功的游戏要求游戏者在游戏时进行投资来建造帝国、角色设计或者城市基础设施。游戏者很乐意在游戏中创建这些东西，并拥有它们，使它们符合个人的喜好，进而在此基础上继续游戏。诸如此类的游戏有Sim City、Diablo以及Age of Kings。这种建造帝国、保卫帝国和进行模拟投资的玩法在游戏和游戏者之间建立了一种紧密的联系。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;增加游戏者自己的内容&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        游戏者乐意为自己最喜欢的游戏创建一些附加内容，如：为Flight Simulator游戏设计新的飞机、为射击游戏加入新的界面、为Age of Kings游戏增加新的场景。他们可以有机会成为游戏设计者，从而创建自己喜欢的游戏或者新的附件，然后观察自己的“杰作”在屏幕上运行。这样，不仅为游戏者们提供了“成为游戏设计者”的机会，而且游戏者们新增的内容反过来又延长了游戏的寿命，从而更加有助于提高游戏在市场上的知名度。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;可重玩性&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        最好是创建一个能够被反复重玩的游戏，而不是通常的那种一次性娱乐的游戏。增加游戏的可重玩性不仅提高了消费者的满意度，而且增加了游戏的外在价值。帝国时代系列游戏就通过随机地生成世界、各种地图、游戏类型以及多种文明来增加了自己的可重玩性。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;故事情节&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        游戏的故事（叙述或情节）是游戏者从头到尾执行游戏过程中所经历的一系列事件。精彩的游戏故事能够使游戏者始终保持兴趣和好奇而继续玩下去，并能增加游戏者的满意度。一个游戏所展现的故事取决于它的主题和胜利条件，以及游戏者取得胜利所必须战胜的困难。而精彩的故事通常会使用悬念、“时来运转”以及其他一些手法来保持游戏者的兴趣。其中，冒险类游戏要求设计者预先编写好故事，然后由游戏者来主演这个故事；而即时策略类游戏通常没有故事情节，取而代之的是张空的地图，这就好比一张白纸，游戏者一边玩一边在上面编写着自己的故事。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;质量、预算和进度&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        一个成功上市的优秀游戏，通常能够长期地带来利润，并对于消费者的满意度、游戏品牌和开发者 / 发行商的名望都有积极的影响。而一个匆忙上市的普通游戏则是一场灾难（资金、品牌、声望）。&lt;br /&gt;&lt;br /&gt;        与其说游戏开发是一门科学，不如说它是一门艺术，因此很难对它的结果进行预测。开发者必须能够说明他的“项目开发”正朝着目标顺利地进行着，而发行商则必须对项目的进展进行评估。我们没有理由在产品的质量上进行妥协，要么开发一个成功的游戏，要么就早点结束它。可见，建立早期原型系统的另一个好处就是：它可以在开发过程的前期就提示游戏是否能够正常运行。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;游戏、现实、历史&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        我们从事的是娱乐行业，而不是模仿业或教育业。我们的首要任务是创建有趣的、令人着迷的游戏。现实信息和历史信息只是一些资源和道具，我们使用它们为“呈现给游戏者的”问题增加趣味、故事以及人物特征。那并不意味着现实和历史事实不重要，只是它们不是我们首要目的。从我们的游戏中获得的教育应该是积极的，尽管相对利润而言它是第二位的。这是一个巨大的市场点，它可以增加开发者和发行商的声望。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;修饰游戏&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        在项目的最后应该留出时间来修饰游戏，把游戏的每个部分都提高到高价值产品的标准，并增加一些亮点。同样，应该对游戏进行严格的测试，以确保游戏各个方面的平衡（在适合的地方），确保没有单一的最优取胜策略（或标准、或特效方法等），并要消除游戏潜在的致命缺陷。当一个游戏到达消费者手上，我们希望他们觉得游戏的各方面都是经过精心设计和制作的。“对游戏进行润饰”可以告诉消费者我们花费了时间并且尽了力去精心设计这个非凡的产品。&lt;br /&gt;&lt;br /&gt;        “对游戏进行修饰”增加了消费进的满意度，提高了开发者和发行商的声望，并且赢得了游戏迷的“忠心”。缺少游戏的修饰工作，将给所有这些方面带来负面的影响，从而违背了“开发过程涉及到的所有人”制订的一致目标。因此我们没有理由不对游戏进行修饰。如果您负担不起这项工作，则意味着您正在进行的工作是不合时宜的，或者您的团队是不完善的（太小或者不成熟）。请记住，“即将完成”并不意味着“已经完成”。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-1011014266243624623?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/1011014266243624623/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=1011014266243624623' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/1011014266243624623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/1011014266243624623'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/blog-post_09.html' title='开发成功游戏的指导方针'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-8313133206747852088</id><published>2008-09-09T16:16:00.002+08:00</published><updated>2008-09-09T16:20:09.288+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>分别用Python、Perl实现对远程服务的访问，并对返回的JSON结构的数据进行处理</title><content type='html'>&lt;strong&gt;Python：&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;需要下载支持JSON的开源包：&lt;br /&gt;&lt;a href="http://pypi.python.org/pypi/python-json/" target="_blank"&gt;http://pypi.python.org/pypi/python-json/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;import urllib2&lt;br /&gt;import json&lt;br /&gt;&lt;br /&gt;response = urllib2.urlopen("url", "appKey=e0dba2eb-8495-4b7d-8c3c-cf76d7cc85df&amp;userName=CYF&amp;password=cyf").read()&lt;br /&gt;jsonData = json.read(response)&lt;br /&gt;print(jsonData["isSuccess"])&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Perl：&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;需要下载并安装以下支持JSON的开源包：（可用Perl Package Manager进行管理）&lt;br /&gt;&lt;a href="http://packages.ubuntu.com/zh-cn/gutsy/all/libjson-perl/download" target="_blank"&gt;http://packages.ubuntu.com/zh-cn/gutsy/all/libjson-perl/download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;use JSON;&lt;br /&gt;use LWP;&lt;br /&gt;&lt;br /&gt;my $url = "http://192.168.0.221/REST/AuthUser.ashx";&lt;br /&gt;my $browser = LWP::UserAgent-&gt;new;&lt;br /&gt;my $response = $browser-&gt;post( $url,&lt;br /&gt;    [ &lt;br /&gt;     "appKey" =&gt; "e0dba2eb-8495-4b7d-8c3c-cf76d7cc85df",&lt;br /&gt;     "userName" =&gt; "CYF",&lt;br /&gt;     "password" =&gt; "cyf"&lt;br /&gt;    ]&lt;br /&gt;  );&lt;br /&gt;$jsonData = from_json($response-&gt;content);&lt;br /&gt;print $jsonData-&gt;{"isSuccess"};&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-8313133206747852088?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/8313133206747852088/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=8313133206747852088' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8313133206747852088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/8313133206747852088'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/pythonperljson.html' title='分别用Python、Perl实现对远程服务的访问，并对返回的JSON结构的数据进行处理'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2783172954868271377</id><published>2008-09-09T16:15:00.001+08:00</published><updated>2008-09-09T16:15:49.554+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>用Python为EJabberd实现自定义的身份验证</title><content type='html'>（1）修改EJabberd的配置文件，使其进行身份验证时调用指定的脚本：&lt;br /&gt;&lt;br /&gt;%%%   ================&lt;br /&gt;%%%   SERVED HOSTNAMES&lt;br /&gt;&lt;br /&gt;%%&lt;br /&gt;%% hosts: Domains served by ejabberd.&lt;br /&gt;%% You can define one or several, for example:&lt;br /&gt;%% {hosts, ["example.net", "example.com", "example.org"]}.&lt;br /&gt;%%&lt;br /&gt;{hosts, ["localhost", "pala5.com", "192.168.0.223"]}.&lt;br /&gt;&lt;br /&gt;%%%   ==============&lt;br /&gt;%%%   AUTHENTICATION&lt;br /&gt;&lt;br /&gt;%%&lt;br /&gt;%% Authentication using external script&lt;br /&gt;%% Make sure the script is executable by ejabberd.&lt;br /&gt;%%&lt;br /&gt;{auth_method, external}.&lt;br /&gt;{extauth_program, "/home/user/ejabberd-2.0.0/paraworld_login.py"}.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;（2）在配置文件指定的进行身份验证的脚本目录增加如下两个Python脚本文件：&lt;br /&gt;&lt;br /&gt;PE.py：&lt;br /&gt;&lt;br /&gt;import md5&lt;br /&gt;import sys&lt;br /&gt;import time&lt;br /&gt;import urllib&lt;br /&gt;import urllib2&lt;br /&gt;import httplib&lt;br /&gt;import mimetypes&lt;br /&gt;import json&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RESPONSE_FORMAT = 'JSON'&lt;br /&gt;&lt;br /&gt;METHODS = {&lt;br /&gt;    "auth": {&lt;br /&gt;        "authUser": [&lt;br /&gt;            ("userName", str, []),&lt;br /&gt;            ("password", str, []),&lt;br /&gt;            ("server", str, ["optional"]),&lt;br /&gt;        ],&lt;br /&gt;    },&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;URLS = {&lt;br /&gt;    "paraworld.auth.authUser" : "http://192.168.0.221/REST/AuthUser.ashx",&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SECURE_URLS = {&lt;br /&gt;    "paraworld.auth.authUser" : "https://192.168.0.221/REST/AuthUser.ashx",&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Proxy(object):&lt;br /&gt;    def __init__(self, client, name):&lt;br /&gt;        self._client = client&lt;br /&gt;        self._name = name&lt;br /&gt;&lt;br /&gt;    def __call__(self, method, args=None, add_session_args=True):&lt;br /&gt;        return self._client('%s.%s' % (self._name, method), args)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# generate the Paraworld proxies&lt;br /&gt;def __generate_proxies():&lt;br /&gt;    for namespace in METHODS:&lt;br /&gt;        methods = {}&lt;br /&gt;&lt;br /&gt;        for method in METHODS[namespace]:&lt;br /&gt;            params = ['self']&lt;br /&gt;            body = ['args = {}']&lt;br /&gt;            for param_name, param_type, param_options in METHODS[namespace][method]:&lt;br /&gt;                param = param_name&lt;br /&gt;                for option in param_options:&lt;br /&gt;                    if isinstance(option, tuple) and option[0] == 'default':&lt;br /&gt;                        if param_type == list:&lt;br /&gt;                            param = '%s=None' % param_name&lt;br /&gt;                            body.append('if %s is None: %s = %s' % (param_name, param_name, repr(option[1])))&lt;br /&gt;                        else:&lt;br /&gt;                            param = '%s=%s' % (param_name, repr(option[1]))&lt;br /&gt;                if 'optional' in param_options:&lt;br /&gt;                    param = '%s=None' % param_name&lt;br /&gt;                    body.append('if %s is not None: args[\'%s\'] = %s' % (param_name, param_name, param_name))&lt;br /&gt;                else:&lt;br /&gt;                    body.append('args[\'%s\'] = %s' % (param_name, param_name))&lt;br /&gt;                params.append(param)&lt;br /&gt;            body.insert(0, 'def %s(%s):' % (method, ', '.join(params)))&lt;br /&gt;            body.append('return self(\'%s\', args)' % method)&lt;br /&gt;            exec('\n    '.join(body))&lt;br /&gt;            methods[method] = eval(method)&lt;br /&gt;        proxy = type('%sProxy' % namespace.title(), (Proxy, ), methods)&lt;br /&gt;        globals()[proxy.__name__] = proxy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;__generate_proxies()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class ParaworldError(Exception):&lt;br /&gt;    """Exception class for errors received from Paraworld."""&lt;br /&gt;&lt;br /&gt;    def __init__(self, code, msg, args=None):&lt;br /&gt;        self.code = code&lt;br /&gt;        self.msg = msg&lt;br /&gt;        self.args = args&lt;br /&gt;&lt;br /&gt;    def __str__(self):&lt;br /&gt;        return 'Error %s: %s' % (self.code, self.msg)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Paraworld(object):&lt;br /&gt;    def __init__(self, appKey, secretKey=None):&lt;br /&gt;        self.appKey = appKey&lt;br /&gt;        self.secretKey = secretKey&lt;br /&gt;        self.secret = None&lt;br /&gt;&lt;br /&gt;        for namespace in METHODS:&lt;br /&gt;            self.__dict__[namespace] = eval('%sProxy(self, \'%s\')' % (namespace.title(), 'paraworld.%s' % namespace))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _hash_args(self, args, secret=None):&lt;br /&gt;        """Hashes arguments by joining key=value pairs, appending a secret, and then taking the MD5 hex digest."""&lt;br /&gt;        &lt;br /&gt;        hasher = md5.new(''.join(['%s=%s' % (x, args[x]) for x in sorted(args.keys())]))&lt;br /&gt;        if secret:&lt;br /&gt;            hasher.update(secret)&lt;br /&gt;        elif self.secret:&lt;br /&gt;            hasher.update(self.secret)&lt;br /&gt;        else:&lt;br /&gt;            hasher.update(self.secretKey)&lt;br /&gt;        return hasher.hexdigest()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _parse_response_item(self, node):&lt;br /&gt;        """Parses an XML response node from Paraworld."""&lt;br /&gt;        &lt;br /&gt;        if node.nodeType == node.DOCUMENT_NODE and \&lt;br /&gt;            node.childNodes[0].hasAttributes() and \&lt;br /&gt;            node.childNodes[0].hasAttribute('list') and \&lt;br /&gt;            node.childNodes[0].getAttribute('list') == "true":&lt;br /&gt;            return {node.childNodes[0].nodeName: self._parse_response_list(node.childNodes[0])}&lt;br /&gt;        elif node.nodeType == node.ELEMENT_NODE and \&lt;br /&gt;            node.hasAttributes() and \&lt;br /&gt;            node.hasAttribute('list') and \&lt;br /&gt;            node.getAttribute('list')=="true":&lt;br /&gt;            return self._parse_response_list(node)&lt;br /&gt;        elif len(filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes)) &gt; 0:&lt;br /&gt;            return self._parse_response_dict(node)&lt;br /&gt;        else:&lt;br /&gt;            return ''.join(node.data for node in node.childNodes if node.nodeType == node.TEXT_NODE)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _parse_response_dict(self, node):&lt;br /&gt;        """Parses an XML dictionary response node from Paraworld."""&lt;br /&gt;        &lt;br /&gt;        result = {}&lt;br /&gt;        for item in filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes):&lt;br /&gt;            result[item.nodeName] = self._parse_response_item(item)&lt;br /&gt;        if node.nodeType == node.ELEMENT_NODE and node.hasAttributes():&lt;br /&gt;            if node.hasAttribute('id'):&lt;br /&gt;                result['id'] = node.getAttribute('id')&lt;br /&gt;        return result&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _parse_response_list(self, node):&lt;br /&gt;        """Parses an XML list response node from Paraworld."""&lt;br /&gt;        &lt;br /&gt;        result = []&lt;br /&gt;        for item in filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes):&lt;br /&gt;            result.append(self._parse_response_item(item))&lt;br /&gt;        return result&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _check_error(self, response):&lt;br /&gt;        """Checks if the given Paraworld response is an error, and then raises the appropriate exception."""&lt;br /&gt;        &lt;br /&gt;        if type(response) is dict and response.has_key('error_code'):&lt;br /&gt;            raise ParaworldError(response['error_code'], response['error_msg'], response['request_args'])&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _build_post_args(self, method, args=None):&lt;br /&gt;        """Adds to args parameters that are necessary for every call to the API."""&lt;br /&gt;        &lt;br /&gt;        if args is None:&lt;br /&gt;            args = {}&lt;br /&gt;&lt;br /&gt;        for arg in args.items():&lt;br /&gt;            if type(arg[1]) == list:&lt;br /&gt;                args[arg[0]] = ','.join(str(a) for a in arg[1])&lt;br /&gt;            elif type(arg[1]) == unicode:&lt;br /&gt;                args[arg[0]] = arg[1].encode("UTF-8")&lt;br /&gt;&lt;br /&gt;        args['method'] = method&lt;br /&gt;        args['appKey'] = self.appKey&lt;br /&gt;        args['v'] = '1.0'&lt;br /&gt;        #args['format'] = RESPONSE_FORMAT&lt;br /&gt;        args['sig'] = self._hash_args(args)&lt;br /&gt;&lt;br /&gt;        return args&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _add_session_args(self, args=None):&lt;br /&gt;        """Adds 'session_key' and 'call_id' to args, which are used for API calls that need sessions."""&lt;br /&gt;        &lt;br /&gt;        if args is None:&lt;br /&gt;            args = {}&lt;br /&gt;&lt;br /&gt;        if not self.session_key:&lt;br /&gt;            raise RuntimeError('Session key not set. Make sure auth.getSession has been called.')&lt;br /&gt;&lt;br /&gt;        args['session_key'] = self.session_key&lt;br /&gt;        args['call_id'] = str(int(time.time() * 1000))&lt;br /&gt;&lt;br /&gt;        return args&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def _parse_response(self, response, method, format=None):&lt;br /&gt;        """Parses the response according to the given (optional) format, which should be either 'JSON' or 'XML'."""&lt;br /&gt;        &lt;br /&gt;        if not format:&lt;br /&gt;            format = RESPONSE_FORMAT&lt;br /&gt;&lt;br /&gt;        if format == 'JSON':&lt;br /&gt;            result = json.read(response)&lt;br /&gt;    &lt;br /&gt;            self._check_error(result)&lt;br /&gt;        elif format == 'XML':&lt;br /&gt;            dom = minidom.parseString(response)&lt;br /&gt;            result = self._parse_response_item(dom)&lt;br /&gt;            dom.unlink()&lt;br /&gt;&lt;br /&gt;            if 'error_response' in result:&lt;br /&gt;                self._check_error(result['error_response'])&lt;br /&gt;&lt;br /&gt;            result = result[method[9:].replace('.', '_') + '_response']&lt;br /&gt;        else:&lt;br /&gt;            raise RuntimeError('Invalid format specified.')&lt;br /&gt;&lt;br /&gt;        return result&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def __call__(self, method, args=None, secure=False):&lt;br /&gt;        """Make a call to Paraworld's REST server."""&lt;br /&gt;        &lt;br /&gt;        post_data = urllib.urlencode(self._build_post_args(method, args))&lt;br /&gt;        if secure:&lt;br /&gt;            response = urllib2.urlopen(SECURE_URLS[method], post_data).read()&lt;br /&gt;        else:&lt;br /&gt;            response = urllib2.urlopen(URLS[method], post_data).read()&lt;br /&gt;&lt;br /&gt;        return self._parse_response(response, method)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;paraworld_login.py：&lt;br /&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import urllib2&lt;br /&gt;import json&lt;br /&gt;import PE&lt;br /&gt;from struct import *&lt;br /&gt;&lt;br /&gt;APP_KEY = "fae5feb1-9d4f-4a78-843a-1710992d4e00"&lt;br /&gt;&lt;br /&gt;Para = PE.Paraworld(APP_KEY, "")&lt;br /&gt;&lt;br /&gt;def from_ejabberd():&lt;br /&gt;    input_length = sys.stdin.read(2)&lt;br /&gt;    (size,) = unpack('&gt;h', input_length)&lt;br /&gt;    return sys.stdin.read(size).split(':')&lt;br /&gt;&lt;br /&gt;def to_ejabberd(bool):&lt;br /&gt;    answer = 0&lt;br /&gt;    if bool:&lt;br /&gt;        answer = 1&lt;br /&gt;    token = pack('&gt;hh', 2, answer)&lt;br /&gt;    sys.stdout.write(token)&lt;br /&gt;    sys.stdout.flush()&lt;br /&gt;&lt;br /&gt;def auth(username, server, password):&lt;br /&gt;    re = Para.auth.authUser(username, password, server)&lt;br /&gt;    if str.lower(re["isSuccess"]) == "true":&lt;br /&gt;        return True&lt;br /&gt;    else:&lt;br /&gt;        return False&lt;br /&gt;&lt;br /&gt;def isuser(username, server):&lt;br /&gt;    return True&lt;br /&gt;&lt;br /&gt;def setpass(username, server, password):&lt;br /&gt;    return True&lt;br /&gt;&lt;br /&gt;while True:&lt;br /&gt;    data = from_ejabberd()&lt;br /&gt;    success = False&lt;br /&gt;    if data[0] == "auth":&lt;br /&gt;        success = auth(data[1], data[2], data[3])&lt;br /&gt;    elif data[0] == "isuser":&lt;br /&gt;        success = isuser(data[1], data[2])&lt;br /&gt;    elif data[0] == "setpass":&lt;br /&gt;        success = setpass(data[1], data[2], data[3])&lt;br /&gt;    to_ejabberd(success)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（3）如果EJabberd服务处于启动状态，将其停止。&lt;br /&gt;&lt;br /&gt;（4）运行paraworld_login.py。&lt;br /&gt;&lt;br /&gt;（5）启动EJabberd。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2783172954868271377?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2783172954868271377/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2783172954868271377' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2783172954868271377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2783172954868271377'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/pythonejabberd.html' title='用Python为EJabberd实现自定义的身份验证'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-7526773654317112697</id><published>2008-09-09T16:11:00.001+08:00</published><updated>2008-09-09T16:13:16.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>马英九就职演说全文</title><content type='html'>　　各位友邦元首、各位贵宾、各位侨胞、各位乡亲父老、各位电视机前与网路上的朋友，大家早安，大家好！ &lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;一、二次政党轮替的历史意义&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　今年三月二十二日中华民国总统选举，台湾人民投下了改变台湾未来的一票。今天，我们在这里不是庆祝政党或个人的胜利，而是一起见证，台湾的民主已经跨越了一个历史性的里程碑。 &lt;br /&gt;&lt;br /&gt;　　我们的民主走过了一段颠簸的道路，现在终于有机会迈向成熟的坦途。在过去这一段波折的岁月里，人民对政府的信赖跌到谷底，政治操作扭曲了社会的核心价值，人民失去了经济安全感，台湾的国际支持也受到空前的折损。值得庆幸的是，跟很多年轻的民主国家相比，我们民主成长的阵痛期并不算长，台湾人民却能展现日趋成熟的民主风范，在关键时刻，作出明确的抉择：人民选择政治清廉、经济开放、族群和谐、两岸和平与迎向未来。 &lt;br /&gt;&lt;br /&gt;　　尤其重要的是，台湾人民一同找回了善良、正直、勤奋、诚信、包容、进取这一些传统的核心价值。这一段不平凡的民主成长经验，让我们获得了「台湾是亚洲和世界民主的灯塔」的赞誉，值得所有台湾人引以为傲。显然，中华民国已经成为一个受国际社会尊敬的民主国家。 &lt;br /&gt;&lt;br /&gt;　　不过，我们不会以此自满。我们要进一步追求民主品质的提升与民主内涵的充实，让台湾大步迈向「优质的民主」：在宪政主义的原则下，人权获得保障、法治得到贯彻、司法独立而公正、公民社会得以蓬勃发展。台湾的民主将不会再有非法监听、选择性办案、以及政治干预媒体或选务机关的现象。这是我们共同的愿景，也是我们下一阶段民主改革的目标。 &lt;br /&gt;&lt;br /&gt;　　在开票当天，全球有数亿的华人透过电视与网路的直播，密切关注选举的结果。因为台湾是全球唯一在中华文化土壤中，顺利完成二次政党轮替的民主范例，是全球华人寄以厚望的政治实验。如果这个政治实验能够成功，我们将为全球华人的民主发展作出史无前例的贡献，这是我们无法推卸的历史责任。 &lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;二、新时代的任务&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　未来新政府最紧迫的任务，就是带领台湾勇敢地迎接全球化带来的挑战。当前全球经济正处于巨变之中，新兴国家迅速崛起，我们必须快速提升台湾的国际竞争力，挽回过去流失的机会。当前全球经济环境的不稳定，将是我们振兴经济必须克服的困难。但是，我们深信，只要我们的战略正确、决心坚定，我们一定能达成我们的预定目标。 &lt;br /&gt;&lt;br /&gt;　　台湾是一个海岛，开放则兴盛、闭锁则衰败，这是历史的铁律。所以我们要坚持开放、大幅松绑、释放民间的活力、发挥台湾的优势；我们要引导企业立足台湾、联结亚太、布局全球；我们要协助劳工适应快速的科技变迁与产业调整；我们还要用心培育我们的下一代，让他们具有健全人格、公民素养、国际视野与终身学习的能力，同时要排除各种意识形态对教育的不当干扰。我们在回应全球化挑战的同时，一定要维护弱势群体的基本保障与发展的机会，也一定要兼顾台湾与全球生态环境的永续经营。 &lt;br /&gt;&lt;br /&gt;　　新政府另外一项重要任务就是导正政治风气，恢复人民对政府的信赖。我们将共同努力创造一个尊重人性、崇尚理性、保障多元、和解共生的环境。我们将促进族群以及新旧移民间的和谐，倡导政党良性竞争，并充分尊重媒体的监督与新闻自由。 &lt;br /&gt;&lt;br /&gt;　　新政府将树立廉能政治的新典范，严格要求官员的清廉与效能，并重建政商互动规范，防范金权政治的污染。我希望每一位行使公权力的公仆，都要牢牢记住「权力使人腐化，绝对的权力使人绝对的腐化」这一句着名的警语。我们将身体力行诚信政治，实践国民党「完全执政、完全负责」的政见。新政府所有的施政都要从全民福祉的高度出发，超越党派利益，贯彻行政中立。我们要让政府不再是拖累社会进步的绊脚石，而是领导台湾进步的发动机。 &lt;br /&gt;&lt;br /&gt;　　我坚信，中华民国总统最神圣的职责就是守护宪法。在一个年轻的民主国家，遵宪与行宪比修宪更重要。身为总统，我的首要任务就是树立宪法的权威与彰显守宪的价值。我一定会以身作则，严守宪政分际，真正落实权责相符的宪政体制。我们一定要做到：政府全面依法行政，行政院依法对立法院负责，司法机关落实法治人权，考试院健全文官体制，监察院纠弹违法失职。现在是我们建立优良宪政传统的最好机会，我们一定要牢牢把握。 &lt;br /&gt;&lt;br /&gt;　　我们要让台湾成为国际社会中受人敬重的成员。我们将以「尊严、自主、务实、灵活」作为处理对外关系与争取国际空间的指导原则。中华民国将善尽她国际公民的责任，在维护自由经济秩序、禁止核子扩散、防制全球暖化、遏阻恐怖活动、以及加强人道援助等全球议题上，承担我们应负的责任。我们要积极参与亚太区域合作，进一步加强与主要贸易夥伴的经贸关系，全面融入东亚经济整合，并对东亚的和平与繁荣作出积极贡献。 &lt;br /&gt;&lt;br /&gt;　　我们要强化与美国这一位安全盟友及贸易夥伴的合作关系；我们也要珍惜邦交国的情谊，信守相互的承诺；我们更要与所有理念相通的国家和衷共济，扩大合作。我们有防卫台湾安全的决心，将编列合理的国防预算，并采购必要的防卫性武器，以打造一支坚实的国防劲旅。追求两岸和平与维持区域稳定，是我们不变的目标。台湾未来一定要成为和平的缔造者，让国际社会刮目相看。 &lt;br /&gt;&lt;br /&gt;　　英九由衷的盼望，海峡两岸能抓住当前难得的历史机遇，从今天开始，共同开启和平共荣的历史新页。我们将以最符合台湾主流民意的「不统、不独、不武」的理念，在中华民国宪法架构下，维持台湾海峡的现状。一九九二年，两岸曾经达成「一中各表」的共识，随后并完成多次协商，促成两岸关系顺利的发展。英九在此重申，我们今后将继续在「九二共识」的基础上，尽早恢复协商，并秉持四月十二日在博鳌论坛中提出的「正视现实，开创未来；搁置争议，追求双赢」，寻求共同利益的平衡点。两岸走向双赢的起点，是经贸往来与文化交流的全面正常化，我们已经做好协商的准备。希望七月即将开始的周末包机直航与大陆观光客来台，能让两岸关系跨入一个崭新的时代。 &lt;br /&gt;&lt;br /&gt;　　未来我们也将与大陆就台湾国际空间与两岸和平协议进行协商。台湾要安全、要繁荣、更要尊严！唯有台湾在国际上不被孤立，两岸关系才能够向前发展。我们注意到胡锦涛先生最近三次有关两岸关系的谈话，分别是三月二十六日与美国布希总统谈到「九二共识」、四月十二日在博鳌论坛提出「四个继续」、以及四月二十九日主张两岸要「建立互信、搁置争议、求同存异、共创双赢」，这些观点都与我方的理念相当的一致。因此，英九愿意在此诚恳的呼吁：两岸不论在台湾海峡或国际社会，都应该和解休兵，并在国际组织及活动中相互协助、彼此尊重。两岸人民同属中华民族，本应各尽所能，齐头并进，共同贡献国际社会，而非恶性竞争、虚耗资源。我深信，以世界之大、中华民族智慧之高，台湾与大陆一定可以找到和平共荣之道。 &lt;br /&gt;&lt;br /&gt;　　英九坚信，两岸问题最终解决的关键不在主权争议，而在生活方式与核心价值。我们真诚关心大陆十三亿同胞的福祉，由衷盼望中国大陆能继续走向自由、民主与均富的大道，为两岸关系的长远和平发展，创造双赢的历史条件。 &lt;br /&gt;&lt;br /&gt;　　最近四川发生大地震，灾情十分的惨重，台湾人民不分党派，都表达由衷的关切，并愿意提供即时的援助，希望救灾工作顺利，灾民安置与灾区重建早日完成。 &lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;三、台湾的传承与愿景&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　从宣誓就职的这一刻开始，英九深知个人已经肩负二千三百万人民的付托，这是我一生最光荣的职务，也是我一生最重大的责任。英九虽然不是在台湾出生，但台湾是我成长的故乡，是我亲人埋骨的所在。我尤其感念台湾社会对我这样一个战后新移民的包容之义、栽培之恩与拥抱之情。我义无反顾，别无悬念，只有勇往直前，全力以赴！ &lt;br /&gt;&lt;br /&gt;　　四百多年来，台湾这块土地一直慷慨的接纳着先来后到的移民，滋养、庇护着我们，提供我们及后代子孙安身立命的空间，并以高峻的山峰、壮阔的大海，充实、淬砺着我们的心灵。我们继承的种种历史文化，不但在这片土地上得到延续，更得到扩充与创新，进而开创出丰盛多元的人文风景。 &lt;br /&gt;&lt;br /&gt;　　中华民国也在台湾得到了新生。在我任内，我们将庆祝中华民国开国一百周年。这一个亚洲最早诞生的民主共和国，在大陆的时间只有三十八年，在台湾的岁月却将超过一甲子。在这将近六十年间，中华民国与台湾的命运已经紧紧的结合在一起，共同经历了艰难险阻与悲欢岁月，更在追求民主的曲折道路上，有了长足的进步。国父孙中山先生的民主宪政理想，当年在中国大陆没有能够实现，但今天在台湾终于生根、开花、结果。 &lt;br /&gt;&lt;br /&gt;　　面对台湾的未来，英九充满了信心。多年来我走遍台湾各个角落，在与各行各业的互动当中，让我感受最深刻的就是：地无分南北，人无分老幼，善良、正直、勤奋、诚信、包容、进取这一些传统的核心价值，不但洋溢在台湾人的生活言行，也早已深植在台湾人的本性里。这是台湾一切进步力量的泉源，也是「台湾精神」的真谛。 &lt;br /&gt;&lt;br /&gt;　　盱衡时局，环顾东亚，台湾拥有绝佳的地理位置、珍贵的文化资产、深厚的人文素养、日渐成熟的民主、活力创新的企业、多元和谐的社会、活跃海内外的民间组织、遍布全球的爱乡侨民，以及来自世界各地的新移民。只要我们秉持「台湾精神」，善用我们的优势，并坚持「以台湾为主，对人民有利」的施政原则，我们一定可以将台澎金马建设为举世称羡的乐土、我们引以为傲的美丽家园。 &lt;br /&gt;&lt;br /&gt;　　台湾的振兴不只要靠政府的努力，更要靠人民的力量；需要借重民间的智慧、需要朝野协商合作、需要所有社会成员积极的投入。各位亲爱的父老兄弟姊妹们，我们要从此刻开始，卷起袖子，立即行动，打造美丽家园，为子孙奠定百年盛世的基础。让我们心连心、手牵手，大家一起来奋斗！ &lt;br /&gt;&lt;br /&gt;　　最在，请大家跟我一起高呼： &lt;br /&gt;&lt;br /&gt;　　台湾民主万岁！ &lt;br /&gt;&lt;br /&gt;　　中华民国万岁！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-7526773654317112697?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/7526773654317112697/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=7526773654317112697' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7526773654317112697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7526773654317112697'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/blog-post.html' title='马英九就职演说全文'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-5293947973683877747</id><published>2008-09-09T15:45:00.001+08:00</published><updated>2008-09-09T15:48:15.637+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>在Python中使用JSON</title><content type='html'>需要将下面的文件加入项目中：&lt;br /&gt;&lt;a href="http://pypi.python.org/pypi/python-json"&gt;http://pypi.python.org/pypi/python-json&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;然后就可以这样使用了：&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;import json&lt;br /&gt;&lt;br /&gt;a = '[1, 2 ,3 ]'&lt;br /&gt;obj = json.read(a)&lt;br /&gt;for x in obj:&lt;br /&gt;    print x&lt;br /&gt;&lt;/verbatim&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-5293947973683877747?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/5293947973683877747/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=5293947973683877747' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5293947973683877747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/5293947973683877747'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/pythonjson.html' title='在Python中使用JSON'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-4476847818572189432</id><published>2008-09-09T14:53:00.010+08:00</published><updated>2012-02-14T17:36:50.259+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ＩＴ'/><title type='text'>IT网络资源汇总</title><content type='html'>&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;SQL Server：&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;SQL Server Functions：&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ms174318.aspx" target="_blank"&gt;http://msdn.microsoft.com/zh-cn/library/ms174318.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html"&gt;http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;Make Yahoo! Web Service REST Calls With C#：&lt;br /&gt;&lt;a href="http://developer.yahoo.com/dotnet/howto-rest_cs.html" target="_blank"&gt;http://developer.yahoo.com/dotnet/howto-rest_cs.html&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;Javascript&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;JSMin：&lt;br /&gt;&lt;a href="http://www.crockford.com/javascript/jsmin.html" target="_blank"&gt;http://www.crockford.com/javascript/jsmin.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Packer:&lt;br /&gt;&lt;a href="http://dean.edwards.name/packer/" target="_blank"&gt;http://dean.edwards.name/packer/&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;Silverlight 2教程中文版：&lt;br /&gt;&lt;a href="http://blog.joycode.com/scottgu/archive/2008/02/29/114918.aspx" target="_blank"&gt;http://blog.joycode.com/scottgu/archive/2008/02/29/114918.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一步一步学Silverlight 2系列文章：&lt;br /&gt;&lt;a href="http://www.cnblogs.com/Terrylee/archive/2008/03/09/Silverlight2-step-by-step-Tutorials.html" target="_blank"&gt;http://www.cnblogs.com/Terrylee/archive/2008/03/09/Silverlight2-step-by-step-Tutorials.html&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;A Byte Of Python （简明Python教程）：&lt;br /&gt;&lt;a href="http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/" target="_blank"&gt;http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python Stuff：&lt;br /&gt;&lt;a href="http://undefined.org/python/#simplejson" target="_blank"&gt;http://undefined.org/python/#simplejson&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;深入 Python :Dive Into Python 中文版：&lt;br /&gt;&lt;a href="http://www.woodpecker.org.cn/diveintopython/toc/index.html" target="_blank"&gt;http://www.woodpecker.org.cn/diveintopython/toc/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python-JSON&lt;br /&gt;&lt;a href="http://pypi.python.org/pypi/python-json" target="_blank"&gt;http://pypi.python.org/pypi/python-json&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python ZSI SOAP client for JWSDP and .NET web service&lt;br /&gt;&lt;a href="http://users.skynet.be/pascalbotte/rcx-ws-doc/zsi.htm" target="_blank"&gt;http://users.skynet.be/pascalbotte/rcx-ws-doc/zsi.htm&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;Perl&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;JSON For Perl：&lt;br /&gt;&lt;a href="http://search.cpan.org/~makamaka/JSON-2.09/lib/JSON.pm" target="_blank"&gt;http://search.cpan.org/~makamaka/JSON-2.09/lib/JSON.pm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LWP与WEB的基本使用：&lt;br /&gt;&lt;a href="http://wiki.perlchina.org/index.php/LWP%E4%B8%8EWEB%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8" target="_blank"&gt;http://wiki.perlchina.org/index.php/LWP%E4%B8%8EWEB%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8&lt;/a&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;legend&gt;&lt;strong&gt;其它&lt;/strong&gt;&lt;/legend&gt;&lt;br /&gt;WMWare社区：&lt;br /&gt;&lt;a href="http://bbs.vmware.cn/forum-8-1.html" target="_blank"&gt;http://bbs.vmware.cn/forum-8-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LogParser：&lt;br /&gt;&lt;a href="http://www.microsoft.com/china/technet/community/columns/scripts/sg0105.mspx" target="_blank"&gt;脚本的故事&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/910447"&gt;LogParser 2.2 和 ASP.NET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;正则表达式：&lt;br /&gt;&lt;a href="http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm" target="_blank"&gt;正则表达式30分钟入门教程&lt;/a&gt;&lt;/fieldset&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-4476847818572189432?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/4476847818572189432/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=4476847818572189432' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4476847818572189432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/4476847818572189432'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/it.html' title='IT网络资源汇总'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-7597859360016243201</id><published>2008-09-09T14:40:00.004+08:00</published><updated>2008-09-09T14:53:40.303+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server中使用Backup语句进行数据库备份</title><content type='html'>&lt;strong&gt;语法：&lt;/strong&gt;&lt;br /&gt;backup database [database_name] to disk = [path]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;br /&gt;database_name：被备份的数据库的名称&lt;br /&gt;path：保存备份文件的磁盘物理路径&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;br /&gt;下面的示例将一个名为KM的数据库备份到C盘下的Backup_DataBase目录下，并以当前时间命名备份文件。&lt;br /&gt;可将以下T-SQL语句用在SQL Server的“作业”中，配置在每日的某个时间启动，达到自动备份数据库的目的。&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;declare @path nvarchar(256)&lt;br /&gt;set @path = 'C:\Backup_DataBase\KM_' + replace(replace(convert(nvarchar(32),getdate(),126),'.','_'),':','_') + '.bak'&lt;br /&gt;backup database [KM] to disk = @path&lt;br /&gt;&lt;/verbatim&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-7597859360016243201?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/7597859360016243201/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=7597859360016243201' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7597859360016243201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/7597859360016243201'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/09/sql-serverbackup.html' title='SQL Server中使用Backup语句进行数据库备份'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-2775450488335932068</id><published>2008-07-11T11:29:00.007+08:00</published><updated>2008-07-11T16:48:41.410+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ＩＴ'/><title type='text'>.Net平台下开发中文语音应用程序</title><content type='html'>&lt;em&gt;（本文转载自微软中文社区，原文地址：&lt;/em&gt;&lt;a href="http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx"&gt;&lt;em&gt;http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx&lt;/em&gt;&lt;/a&gt;&lt;em&gt;）&lt;/em&gt;&lt;br /&gt;&lt;div style="FONT: bold 18px/200% Verdana; COLOR: #21589c"&gt;.Net平台下开发中文语音应用程序&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;摘要：&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;语音是人类最自然的交互方式，也是现阶段软件用户界面发展的最高目标。微软公司一直积极推动语音技术的发展，并且公布了语音开发平台Speech SDK帮助开发人员实现语音应用。&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;随着.net技术深入人心，越来越多的程序员开始转到.net平台上进行开发。然而，在新发布的.net speech SDK里面并没有对中文语音进行支持，目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1()，本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;目录：&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;1. SAPI.51 SDK浅析以及安装&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;2. 导入COM对象到.Net&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;3. 用C#开发中文TTS应用程序示例&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;4. 结论&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;5. 参考文献&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;1． SAPI.51 SDK浅析以及安装&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;SAPI SDK是微软公司免费提供的语音应用开发工具包，这个SDK中包含了语音应用设计接口（SAPI）、微软的连续语音识别引擎（MCSR）以及微软的语音合成（TTS）引擎等等。目前的5.1版本一共可以支持3种语言的识别 (英语，汉语和日语)以及2种语言的合成（英语和汉语）。SAPI中还包括对于低层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及TTS管理等强大的设计接口。其结构如图(1)：&lt;/div&gt;&lt;img src="http://www.microsoft.com/china/community/images/TechArticleImages/Cnspeech1.jpg" /&gt;&lt;br /&gt;&lt;div style="FONT: bold 100% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;图(1)&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;语音引擎则通过DDI层（设备驱动接口）和SAPI(SpeechAPI)进行交互，应用程序通过API层和SAPI通信。通过使用这些API，用户可以快速开发在语音识别或语音合成方面应用程序。&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;SAPI5.1 SDK可以从微软网站下载：http://www.microsoft.com/speech/download/sdk51/（MD注：此地址有误，实际下载地址为http://www.microsoft.com/downloads/details.aspx?familyid=5E86EC97-40A7-453F-B0EE-6583171B4530&amp;amp;displaylang=en） 需要安装程序的有Speech SDK 5.1（68M）和5.1 Language Pack （81.5M）。&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;2． 导入COM对象到.Net&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;SAPI5.1的基于Windows平台的，通过COM接口进行调用。在.Net平台下要应用SAPI5.1，我们可以利用.Net Framework自带的强大工具TlbImp.exe来把SAPI SDK的COM对象导入到.Net中。TlbImp.exe产生一个管制的包装类，管理客户端可以使用它。包装类管理实际的COM对象的参考数。当包装类当作收集的垃圾时，包装类释放掉它包装的COM对象。当然，你也可以在VS.NET环境中通过从项目参考对话框选择COM对象，实现COM对象的导入，这个过程也是通过TlbImp.exe来完成的。&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;下面演示如何导入SAPI的COM对象：&lt;/div&gt;&lt;div style="BACKGROUND-COLOR: #eeeeee" width="100%"&gt;&lt;pre style="PADDING-LEFT: 20px; FONT: 100% Lucida Console"&gt;&lt;br /&gt;D:\Program Files\Common Files\Microsoft Shared\Speech&amp;gt;Tlbimp sapi.dll /out: DotNetSpeech.dll&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;在安转SDK以后，可以在D:\Program Files\Common Files\Microsoft Shared\Speech\目录下面找到SAPI.dll，这里面定义了SAPI的COM对象，用Tlbimp.exe工具将该dll转换成.net平台下的Assembly---DotNetSpeech.dll，转换的过程会提示不少的警告(warning)，但这部影响我们的开发，可以忽略。最后，我们可以用ildasm查看DotnetSpeech.dll里面的对象。&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;3． 用C#开发中文TTS应用程序示例&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;下面通过一个实例来介绍如何利用C# 进行开发语音应用程序，开发环境为：&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;操作系统： Windows 2000 中文版+ SP3&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;.Net Framework: 1.0.3705（英文版）&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;Visual Studio.Net 7.0.9466（英文版）&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;首先，新建一个C#的Windows Application工程SpeechApp，在开发环境的右边的解决方案管理器(Solution Explorer)中，添加DotNetSpeech对象库。右键点击"Reference"(参考)，选择"Add Reference"（添加参考），在弹出的文件选择对话框中找到刚才生成的DotNetSpeech.dll。&lt;/div&gt;&lt;img src="http://www.microsoft.com/china/community/images/TechArticleImages/Cnspeech2.jpg" /&gt;&lt;br /&gt;&lt;div style="FONT: bold 100% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;图(2)&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;打开Form1.cs代码文件,在代码开头添加名字空间（注意大小写）。&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;using DotNetSpeech;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;这样就实现了SAPI SDK的导入，下面我们就可以开始编写应用代码了。本示例演示如何把文本通过喇叭朗读出来以及把文本转化成语音信号（Wave声音文件），程序界面如图(3)：&lt;/div&gt;&lt;img src="http://www.microsoft.com/china/community/images/TechArticleImages/Cnspeech3.jpg" /&gt;&lt;br /&gt;&lt;div style="FONT: bold 100% Verdana"&gt;&lt;/div&gt;&lt;div style="BACKGROUND-COLOR: #eeeeee" width="100%"&gt;&lt;pre style="PADDING-LEFT: 20px; FONT: 100% Lucida Console"&gt;&lt;br /&gt;//朗读&lt;br /&gt;private void buttonSynthesis_Click(object sender, System.EventArgs e)&lt;br /&gt;{&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;&lt;br /&gt;        SpVoice Voice = new SpVoice();&lt;br /&gt;        Voice.Speak(this.textBoxText.Text, SpFlags);&lt;br /&gt;    }&lt;br /&gt;    catch (Exception er)&lt;br /&gt;    {&lt;br /&gt;        MessageBox.Show("An Error Occured!", "SpeechApp", MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;//生成声音文件(Wav)&lt;br /&gt;private void buttonTTStoWave_Click(object sender, System.EventArgs e)&lt;br /&gt;{&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;&lt;br /&gt;        SpVoice Voice = new SpVoice();&lt;br /&gt;        SaveFileDialog sfd = new SaveFileDialog();&lt;br /&gt;        sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";&lt;br /&gt;        sfd.Title = "Save to a wave file";&lt;br /&gt;        sfd.FilterIndex = 2;&lt;br /&gt;        sfd.RestoreDirectory = true;&lt;br /&gt;        if (sfd.ShowDialog() == DialogResult.OK)&lt;br /&gt;        {&lt;br /&gt;            SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;&lt;br /&gt;            SpFileStream SpFileStream = new SpFileStream();&lt;br /&gt;            SpFileStream.Open(sfd.FileName, SpFileMode, false);&lt;br /&gt;            Voice.AudioOutputStream = SpFileStream;&lt;br /&gt;            Voice.Speak(txtSpeakText.Text, SpFlags);&lt;br /&gt;            Voice.WaitUntilDone(Timeout.Infinite);&lt;br /&gt;            SpFileStream.Close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    catch (Exception er)&lt;br /&gt;    {&lt;br /&gt;        MessageBox.Show("An Error Occured!", "SpeechApp", MessageBoxButtons.OK, MessageBoxIcon.Error);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;接下来,还要去控制面板配置Speech SDK引擎当前所处理语言。打开"控制面板"，打开"语音"配置项目，可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成，还可以配置相关的硬件设备以及控制语速。（如图4）&lt;/div&gt;&lt;img src="http://www.microsoft.com/china/community/images/TechArticleImages/Cnspeech4.jpg" /&gt;&lt;br /&gt;&lt;div style="FONT: bold 100% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;在"文字-语音转换"的"语音选择"组合框中选择简体中文(Microsoft Simplified Chinese)。这样就可以合成汉语文字了。&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;回到VS.Net，F5编译运行刚才的应用程序，在文本框里输入汉字，戴上耳机，点击"朗读"按钮，开始体验新一代的智能人机界面吧，呵呵：）&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;4． 结论&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;微软为语音人机界面提供了强大的平台，.net环境更使这种开发方便快捷。赶快去下载SAPI5.1 SDK，让你的应用程序"绘声绘色"，体现Nature UI，Let’s GO!!!&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;br /&gt;&lt;div style="MARGIN-TOP: 15px; FONT: bold 85% Verdana; COLOR: #21589c"&gt;5． 参考文献&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;[1] Speech SDK自带的说明文档(SAPI.chm)&lt;/div&gt;&lt;div style="MARGIN-BOTTOM: 10px; FONT: 100%/140% Verdana"&gt;[2] MSDN (msdn.microsoft.com)&lt;/div&gt;&lt;hr color="#cccccc" size="1"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-2775450488335932068?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/2775450488335932068/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=2775450488335932068' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2775450488335932068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/2775450488335932068'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/07/blog-post.html' title='.Net平台下开发中文语音应用程序'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-3831906972524452504</id><published>2008-07-09T10:34:00.001+08:00</published><updated>2008-07-09T10:50:43.929+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>哈，在国内终于可以访问Google Blog了！</title><content type='html'>哈，在国内终于可以访问Google Blog了！&lt;br /&gt;MD Workshop正式启用！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-3831906972524452504?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/3831906972524452504/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=3831906972524452504' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3831906972524452504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/3831906972524452504'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/07/google-blog.html' title='哈，在国内终于可以访问Google Blog了！'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1049325099526816931.post-1763821625984427137</id><published>2008-05-21T23:44:00.000+08:00</published><updated>2008-05-21T23:49:02.112+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='杂谈'/><title type='text'>从163搬过来了</title><content type='html'>163的Blog太垃圾了&lt;br /&gt;发个文章居然不让显示，KAO&lt;br /&gt;如果不是最早的邮箱是在163注册的，早就不用它了&lt;br /&gt;从现在开始，Blog和邮箱都用Google的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1049325099526816931-1763821625984427137?l=www.caoyongfeng.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.caoyongfeng.com/feeds/1763821625984427137/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1049325099526816931&amp;postID=1763821625984427137' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/1763821625984427137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1049325099526816931/posts/default/1763821625984427137'/><link rel='alternate' type='text/html' href='http://www.caoyongfeng.com/2008/05/163.html' title='从163搬过来了'/><author><name>MD</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-DYGU52JEDlo/TWlUIWV3gJI/AAAAAAAAAIM/9lcdmgMIjds/s1600/AIbEiAIAAABECMyTtsu_xMGrwQEiC3ZjYXJkX3Bob3RvKihlYjNiYjRjYmYwMmY5M2ExM2EwNDY5MmU5NWU1ZDVhNTk5MTBlNzZmMAEg6kgVVxZSdXtYvvGZ6YjieifZ0w'/></author><thr:total>0</thr:total></entry></feed>
