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

<channel>
	<title>坪溪笔谈</title>
	<atom:link href="http://blog.feihoo.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.feihoo.com</link>
	<description>Work as an worker</description>
	<lastBuildDate>Tue, 13 Jul 2010 06:33:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>15%技术，75%思维和性格</title>
		<link>http://blog.feihoo.com/2010/07/15%e6%8a%80%e6%9c%af%ef%bc%8c75%e6%80%9d%e7%bb%b4%e5%92%8c%e6%80%a7%e6%a0%bc.html</link>
		<comments>http://blog.feihoo.com/2010/07/15%e6%8a%80%e6%9c%af%ef%bc%8c75%e6%80%9d%e7%bb%b4%e5%92%8c%e6%80%a7%e6%a0%bc.html#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:28:06 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@生活]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=650</guid>
		<description><![CDATA[有感于下面这句话（来自AgileChina论坛有关程序员职业规划的讨论（Jacky Huang)）。
一个人的成功，15%来自他的专业技术，75%来自于他的思维和性格，10%来自于机遇。
虽然下面Jeff Xiong做了一些批驳，但是我大致同意上面这句话。一方面上面所指的成功因素的比例跟时间分配上的比例完全是不可比的，另一方面，专业技术的发展与性格和思维根本就是分不开的。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>有感于下面这句话（来自<a href="http://groups.google.com/group/agilechina/browse_thread/thread/bf2b754de80d104f/87fdf3bcb87b78e4?lnk=gst&#038;q=%E4%B8%93%E4%B8%9A#87fdf3bcb87b78e4">AgileChina论坛有关程序员职业规划的讨论（Jacky Huang)</a>）。</p>
<blockquote><p>一个人的成功，15%来自他的专业技术，75%来自于他的思维和性格，10%来自于机遇。</p></blockquote>
<p>虽然下面<a href="http://groups.google.com/groups/profile?enc_user=YW5jlxMAAAB93sZziShE5jMv1MkXsps6WMj6vob75xS36mXc24h6ww">Jeff Xiong</a>做了一些批驳，但是我大致同意上面这句话。一方面上面所指的成功因素的比例跟时间分配上的比例完全是不可比的，另一方面，专业技术的发展与性格和思维根本就是分不开的。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/07/15%e6%8a%80%e6%9c%af%ef%bc%8c75%e6%80%9d%e7%bb%b4%e5%92%8c%e6%80%a7%e6%a0%bc.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>（翻译）Orx教程：1. object</title>
		<link>http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html</link>
		<comments>http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html#comments</comments>
		<pubDate>Mon, 05 Jul 2010 02:22:06 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[orx]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=641</guid>
		<description><![CDATA[本文译自 orx tutorials 的对象(object)。phpxer 译，九天雁翎 （博客）修订。最新版本见Orx官方中文Wiki。
Object （对象）教程
总结
由于orx是数据驱动的，我们只需要两行代码创建一个viewport（视口）和一个object。它们的所有属性都定义在配置文件（01_Object.ini）中。
Viewport关联到一个按照配置文件中的信息隐含创建的camera(摄像头)。在配置文件里，你还可以设置它们的大小，坐标，对象的颜色，缩放，旋转，动画，物理属性等等。你甚至无需增加一行代码就可以让任何的配置获得随机值。
在后面的一个示例中我们将看到如何使用一行代码生成复杂的object体系甚至整个 scene（场景）（所有的背景对象和普通对象）。
现在，你可以尝试取消01_Object.ini中某些行的注释，自己尝试一下，然后再继续学习这个教程。完整的选项列表请查看CreationTemplate.ini。
详细说明
创建一个object是相当简单的。不过，我们首先需确保已经加载了定义了所有object(对象)的属性的配置文件。我们还要通过viewport/camera组合显示创建好的object(对象)。
不要慌张！所有这些都很容易。
在这篇教程中，我们将加载一个位于父目录中的配置文件。正如你可能想到的，在所有的可执行程序都根据其构建类别（mingw, msvs2005, msvs2008, 等）位于各自的子目录的情况下，我们不打算在每个地方重复同样的配置文件。1)
在我们的例子中，加载配置文件使用类似下面这行代码的方式实现：
    orxConfig_Load(&#8221;../01_Object.ini&#8221;);
然后我们创建viewport(视口)。注意 camera的创建是按照为这个viewport预置的配置信息自动完成的。
    orxViewport_CreateFromConfig(&#8221;Viewport&#8221;);
我们差不多完成了。现在我们只需要创建 object！
    orxObject_CreateFromConfig(&#8221;Object&#8221;);
就这样了！object(对象)已经创建，并且由于在camera的视觉平截体（frustum）内，将会被显示出来。
现在，因为我们使用Orx默认的启动器，我们需要申明我们的插件入口点（这里是我们的Init函数）。这可以使用一个宏很容易地实现。

orxSTATUS Init&#40;&#41;&#123;...&#125;
orxPLUGIN_DECLARE_ENTRY_POINT&#40;Init&#41;;

因为orx是数据驱动的，我们不需要手动加载任何数据，例如一个sprite（精灵）。一切都由数据管理器为我们搞定，它会确保sprites不在内存中重复并在其不再使用时自动释放的
如果你查看配置文件，在[Object]这一节，你将看到你可以设定所有的对象属性，例如 graphic (sprite)，锚点，颜色，透明度，物理属性，坐标，旋转，缩放，tiling(平铺)（重复），动画，视觉特效，等等。
不要担心，这一切都将在后面的教程中讲到。
现在我们拥有了一个object（对象），我们需要学习如何与之交互。这将我们带入第二个教程：clock.
资源


源代码: 01_Object.c
配置文件: 01_Object.ini


1) 不过，如果你的配置文件名字与可执行文件匹配并且在同一个文件夹下，它将被自动加载。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>本文译自<a href="http://orx-project.org/wiki/en/orx/tutorials/main"> orx tutorials </a>的<a href="http://orx-project.org/wiki/en/orx/tutorials/object">对象(object)</a>。<a href="http://blog.feihoo.com">phpxer</a> 译，九天雁翎 （<a href="http://blog.csdn.net/vagrxie">博客</a>）修订。最新版本见<a href="http://orx-project.org/wiki/cn/orx/main">Orx官方中文Wiki</a>。</p>
<h3>Object （对象）教程</h3>
<h4>总结</h4>
<p>由于orx是数据驱动的，我们只需要两行代码创建一个viewport（视口）和一个object。它们的所有属性都定义在配置文件（01_Object.ini）中。</p>
<p>Viewport关联到一个按照配置文件中的信息隐含创建的camera(摄像头)。在配置文件里，你还可以设置它们的大小，坐标，对象的颜色，缩放，旋转，动画，物理属性等等。你甚至无需增加一行代码就可以让任何的配置获得随机值。</p>
<p>在后面的一个示例中我们将看到如何使用一行代码生成复杂的object体系甚至整个 scene（场景）（所有的背景对象和普通对象）。</p>
<p>现在，你可以尝试取消01_Object.ini中某些行的注释，自己尝试一下，然后再继续学习这个教程。完整的选项列表请查看CreationTemplate.ini。</p>
<h4>详细说明</h4>
<p>创建一个object是相当简单的。不过，我们首先需确保已经加载了定义了所有object(对象)的属性的配置文件。我们还要通过viewport/camera组合显示创建好的object(对象)。</p>
<p>不要慌张！所有这些都很容易。</p>
<p>在这篇教程中，我们将加载一个位于父目录中的配置文件。正如你可能想到的，在所有的可执行程序都根据其构建类别（mingw, msvs2005, msvs2008, 等）位于各自的子目录的情况下，我们不打算在每个地方重复同样的配置文件。1)</p>
<p>在我们的例子中，加载配置文件使用类似下面这行代码的方式实现：<br />
    orxConfig_Load(&#8221;../01_Object.ini&#8221;);</p>
<p>然后我们创建viewport(视口)。注意 camera的创建是按照为这个viewport预置的配置信息自动完成的。<br />
    orxViewport_CreateFromConfig(&#8221;Viewport&#8221;);</p>
<p>我们差不多完成了。现在我们只需要创建 object！<br />
    orxObject_CreateFromConfig(&#8221;Object&#8221;);</p>
<p>就这样了！object(对象)已经创建，并且由于在camera的视觉平截体（frustum）内，将会被显示出来。<br />
现在，因为我们使用Orx默认的启动器，我们需要申明我们的插件入口点（这里是我们的Init函数）。这可以使用一个宏很容易地实现。</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">orxSTATUS Init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span>
orxPLUGIN_DECLARE_ENTRY_POINT<span style="color: #009900;">&#40;</span>Init<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>因为orx是数据驱动的，我们不需要手动加载任何数据，例如一个sprite（精灵）。一切都由数据管理器为我们搞定，它会确保sprites不在内存中重复并在其不再使用时自动释放的<br />
如果你查看配置文件，在[Object]这一节，你将看到你可以设定所有的对象属性，例如 graphic (sprite)，锚点，颜色，透明度，物理属性，坐标，旋转，缩放，tiling(平铺)（重复），动画，视觉特效，等等。<br />
不要担心，这一切都将在后面的教程中讲到。</p>
<p>现在我们拥有了一个object（对象），我们需要学习如何与之交互。这将我们带入第二个教程：clock.</p>
<h4>资源</h4>
<ul>
<li>
源代码: 01_Object.c</li>
<li>配置文件: 01_Object.ini</li>
</ul>
<hr/>
1) 不过，如果你的配置文件名字与可执行文件匹配并且在同一个文件夹下，它将被自动加载。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>（翻译）Orx教程：0.Basic</title>
		<link>http://blog.feihoo.com/2010/07/orx_tutorial_cn_basic.html</link>
		<comments>http://blog.feihoo.com/2010/07/orx_tutorial_cn_basic.html#comments</comments>
		<pubDate>Mon, 05 Jul 2010 02:05:19 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[orx]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=633</guid>
		<description><![CDATA[本文译自 orx tutorials 的首页(main)。phpxer 译，九天雁翎 （博客）修订。最新版本见Orx官方Wiki中文教程。
教程
本教程主要包含Orx的基础和高级教程。Orx 是一个开源、跨平台、轻量级、数据驱动的2D游戏引擎。
安装
这些教程演示了如何设置不同的编程环境(IDE)来运行orx1)。

Microsoft Visual  Studio (C++) for Windows: Tutorial / Download (Express version)
CodeLite for Windows,  Linux and Mac OS X: Tutorial / Download
XCode for Mac OS X: Tutorial / Download

基础
本节将要介绍orx的基础知识。
你可以从这里下载Windows(mingw,  msvs2005 &#38; msvs2008). Linux 和 MacOS X下的可执行文件（包括项目文件，数据和源码）。
前九个基础教程（#1 &#8211;  #9）使用默认的orx启动程序为基础(underlying  layer)，这样易于快速测试/制作原型2。
它们被编译成运行时加载（在命令行3) 上  或配置文件中指定它们的名字）的动态连接库。
此外，下面的内容 4) 解释了哪些行为是由默认的orx.exe/orx 启动程序提供的。
这是一个基础的C教程。
由于我们在本教程中使用默认的可执行文件，下面的代码将以插件的方式加载和执行。
另外，一些基础设施有主执行文件为我们处理。
首先，它会加载所有可用的插件和模块。如果你只 [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：1. object'>（翻译）Orx教程：1. object</a></li><li><a href='http://blog.feihoo.com/2010/04/virtual-machine-guest-host-share-file.html' rel='bookmark' title='Permanent Link: 虚拟机中Host与Guest文件共享'>虚拟机中Host与Guest文件共享</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>本文译自<a href="http://orx-project.org/wiki/en/orx/tutorials/main"> orx tutorials </a>的<a href="http://orx-project.org/wiki/en/orx/tutorials/main">首页(main)</a>。<a href="http://blog.feihoo.com">phpxer</a> 译，九天雁翎 （<a href="http://blog.csdn.net/vagrxie">博客</a>）修订。最新版本见<a href="http://orx-project.org/wiki/cn/orx/main">Orx官方Wiki中文教程</a>。</p>
<h1 id="internal-source-marker_0.1506159657689189"><span style="font-size: 24pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;">教程</span></h1>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">本教程主要包含Orx的基础和高级教程。Orx 是一个开源、跨平台、轻量级、数据驱动的2D游戏引擎。</span></p>
<h2><span style="font-size: 18pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;">安装</span></h2>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">这些教程演示了如何设置不同的编程环境(IDE)</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">来运行</span><a href="https://docs.google.com/document/edit?id=1UGLudR9zxbNw8tNoAqoRX4y45JoBKvjd4OzubCHQJ3E&amp;hl=en&amp;authkey=CMza34sF"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">orx</span></a><span style="font-size: 6.6pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: super;">1)</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">。</span></p>
<ul>
<li style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">Microsoft Visual  Studio (C++) for Windows:</span><a href="http://orx-project.org/wiki/en/orx/tutorials/setup_msvs"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Tutorial</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> /</span><a href="http://www.microsoft.com/Express/VC/"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Download (Express version)</span></a></li>
<li style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">CodeLite for Windows,  Linux and Mac OS X:</span><a href="http://orx-project.org/wiki/en/orx/tutorials/setup_codelite"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Tutorial</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> /</span><a href="http://www.codelite.org/"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Download</span></a></li>
<li style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">XCode for Mac OS X:</span><a href="http://orx-project.org/wiki/en/orx/tutorials/setup_xcode"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Tutorial</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> /</span><a href="http://developer.apple.com/technology/Xcode.html"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Download</span></a></li>
</ul>
<h2><a href="http://developer.apple.com/technology/Xcode.html"><span style="font-size: 18pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;">基础</span></a></h2>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">本节将要介绍orx的基础知识。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">你可以从</span><a href="https://sourceforge.net/projects/orx/files"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">这里</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">下载Windows(mingw,  msvs2005 &amp; msvs2008). Linux 和 MacOS X下的</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">可执行文件</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">（包括项目文件，数据和源码）。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">前九个基础教程（#1 &#8211;  #9）使用默认的orx启动程序为</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">基础</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">(underlying  layer)，这样易于快速测试/制作原型</span><span style="font-size: 6.6pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: super;">2</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">它们被编译成运行时加载（在命令行</span><span style="font-size: 6.6pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: super;">3)</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 上  或配置文件中指定它们的名字）的动态连接库。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">此外，下面的内容</span><span style="font-size: 6.6pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: super;"> </span><a href="http://orx-project.org/wiki/en/orx/tutorials/main#fn__4"><span style="font-size: 6.6pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: super; text-decoration: underline;">4)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 解释了哪些行为是由默认的orx.exe/orx 启动程序提供的。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">这是一个基础的C教程。</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">由于我们在本教程中使用默认的可执行文件，下面的代码将以插件的方式加载和执行。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">另外，一些</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">基础设施</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">有</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">主执行文件</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">为我们处理。</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">首先，它会加载所有可用的插件和模块。如果你只 需要其中的一些，最好编写你自己的</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">可执行文件</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">而不是插件。这部分包含在</span><a href="http://orx-project.org/wiki/en/orx/tutorials/standalone"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">后面的教程</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">中。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">主执行文件还处理下面这些</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">键盘输入</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">：</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">* F11 是</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">纵向对齐切换</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">* Escape 退出</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">* F12 截屏</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">* 退格键(Backspace)  重新载入全部配置文件</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">如果有 orxSYSTEM_EVENT_CLOSE事件发生，程序也会退出。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">不过，如果使用  orx作为传统库构建你自己的可执行文件当然也是可以的（也很容易做到）。在</span><a href="http://orx-project.org/wiki/en/orx/tutorials/standalone"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">教程 #10</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">(使用C++编写) 和 </span><a href="http://orx-project.org/wiki/en/orx/tutorials/spawner"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">教程 #11</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> (使用 C编写)。</span><a href="http://orx-project.org/wiki/en/orx/tutorials/standalone"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">教程 #10</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 还演示了如何使用orx编写C++代码</span><span style="font-size: 6.6pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: super;">5)</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">。  同样地，你可以用任何可与C连接的语言编写程序。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">在将来的发布中将会为某些常见语言提供封装。如果你想编写这种封装库，为orx做贡献，请通过</span><a href="http://forum.orx-project.org/"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">论坛</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">联系我们。</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">当前提供的基础教程列表：</span></p>
<ol>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/object"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">object</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/clock"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">clock</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/frame"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">frame</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/anim"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">animation</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/viewport"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">viewport &amp;  camera</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/sound"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">sound &amp; music</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/fx"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">fx</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/physics"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">physics</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/scrolling"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">scrolling</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C++]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/standalone"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">stand alone &amp;  localization</span></a></li>
<li style="list-style-type: decimal; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">[C]</span><a href="http://orx-project.org/wiki/en/orx/tutorials/spawner"><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">spawner &amp;  shader</span></a></li>
</ol>
<h2><a href="http://orx-project.org/wiki/en/orx/tutorials/spawner"><span style="font-size: 18pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;">社区</span></a></h2>
<p><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">下面这些教程由社区创建，它们是了解如何使用 orx的不错的资源，可以在这里寻找到对一些简单问题的解答。</span></p>
<ul>
<li style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"><a href="http://orx-project.org/wiki/en/orx/tutorials/community/grey"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">Grey&#8217;s tutorials</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">（英文版）</span></li>
</ul>
<p><a href="http://orx-project.org/wiki/en/orx/tutorials/community/grey"></a><br />
<a href="http://orx-project.org/wiki/en/orx/tutorials/main#fnt__1"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">1)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 所有的IDE都是免费可以从英特网上下载的。</span><br />
<a href="http://orx-project.org/wiki/en/orx/tutorials/main#fnt__2"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">2)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> one line for the  whole initialization, no main function to write, no loop to handle</span><br />
<span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">用一行代码完成初始化，不需要写main函数， 没有</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">循环</span><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;">要处理</span><br />
<a href="http://orx-project.org/wiki/en/orx/tutorials/main#fnt__3"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">3)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 另提供了 .bat/.sh  脚本方便启动所有示例</span><br />
<a href="http://orx-project.org/wiki/en/orx/tutorials/main#fnt__4"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">4)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> 你将在在所有教程的源文件的开始处看到这些内容</span><br />
<a href="http://orx-project.org/wiki/en/orx/tutorials/main#fnt__5"><span style="font-size: 11pt; font-family: Arial; color: #000099; background-color: transparent; font-weight: normal; font-style: normal; vertical-align: baseline; text-decoration: underline;">5)</span></a><span style="font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline;"> Orx本身使用C编写</span></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：1. object'>（翻译）Orx教程：1. object</a></li><li><a href='http://blog.feihoo.com/2010/04/virtual-machine-guest-host-share-file.html' rel='bookmark' title='Permanent Link: 虚拟机中Host与Guest文件共享'>虚拟机中Host与Guest文件共享</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/07/orx_tutorial_cn_basic.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>提高工作效率的方法</title>
		<link>http://blog.feihoo.com/2010/04/work-effcient-thoughts.html</link>
		<comments>http://blog.feihoo.com/2010/04/work-effcient-thoughts.html#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:56:30 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Architecture & design]]></category>
		<category><![CDATA[$软件工程与管理]]></category>
		<category><![CDATA[effcient]]></category>
		<category><![CDATA[systemdesign]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=619</guid>
		<description><![CDATA[最近一段时间以来，效率相当地高。 纵观前些年的工作效率中，少有这么利落快速而且不加班的。 回顾这几年，我工作效率的提高主要有下面的几个方面。
一、集中目标
专注目标。凡是工作效率高的时间段里，工作目标都很明确。每天一上班，心里就想明白了今天要干什么，每天下班时，想想今天都实现了什么，有什么目标还没有实现。尽管每天早上来了先看看股票新闻，中午饭后看看股票新闻，偶尔下午还打个盹什么的，但工作的时候确实格外专注，丝毫也不会走神。

分离与当前无关的任务/问题。专注目标不是那么容易做到的。印象中以前工作中经常会碰到的问题是工作中遇到的问题。一方面可能得益于基本功的增强，最近虽然也遇到了一些问题，但是都能够通过简单阅读或查找文档，或浏览问题相关的库的源码解决； 另一方面，遇到的问题我总是避繁就简，首先倾向于寻找简单可用可靠的方案，并将心中的疑虑记录下来，集中成一个列表，工作之外翻翻书，系统思考和学习，而不会因为这个问题而叉开思路对相关的内容研究一番。总之，专注当前的任务，把新问题记录下来，回头再专心攻克。
例如我第一次用ibatis，遇到了一些表可以用集合和映射来加强Pojo的OO功能，但是我并不熟悉ibatis的这些特性，并且使用简单的方案也是可行的，于是就直接使用简便方案(在我看来，ibatis主要是将SQL集中起来管理、简化SQL操纵，对OO不感冒)。
工作列表。不论是开发还是设计，一个文本格式的位于源代码存储系统下的待办工作列表与IDE中的TODO项一起构成了专注目标的重要工具。工作目标分解是基本工作步骤，记录工作中产生的新的问题（任务），这样，子问题越来越多，项目中要干的事情越来越丰富。经常性地调整当前工作任务列表，根据重要性对这些任务进行划分。每天都干掉一些问题，经常想着那些最重要的问题。
简单但有迹可寻的设计材料。在思考和工作的过程中，一方面，项目的过程通常比较长，另一方面经验相对丰富的人手头总是有多个事情在并行进行。当时间太长记不清出了或者是切换任务时，经常要查看此前的代码和设计，易于修改以及有历史记录的设计材料对于保持设计思路的完整十分有意义。（设计材料还应该包括重要的图）
正式准确可以依靠的需求文档。这一条无论怎么说都不过分，遇到需求不确定的地方，就去查需求文档。如果没有，就请能够回答的人来回答，委托给他，先去做别的。细想在上一家公司，经常要承担多种角色，甚至连需求也经常没人给一个最终决策，设计开发的时候在模棱两可的需求之间做决定，很烦心。对于一个设计/开发人员而言，需求人员在需求问题方面就是绝对的权威。如果有些建议，可以建议，但一切均以需求/产品人员为准。
单元测试。另一有助于集中精力编码的就是单元测试。单元测试让我集中精力实现当前的功能，需要依赖的其他功能，我总是先生成一个接口，让当前的功能通过测试后再专心去实现该接口。一天下来，一个一个的测试点亮了绿色，一个一个的接口被实现，整天都是十分惬意的。单元测试的另外一个收益就是放心地去重构吧，放心地去做新的特性吧。
二、简化问题的能力
无论是在广义的工作方法/工作态度上，还是在针对具体问题的设计/实现上，我认为最重要的个人能力就是化繁为简了。化繁为简是所有工作方法/软件设计的核心。将那些可以砍掉的工作砍掉（最多做个记录），做到尽可能地经济，尽可能地简单。
从工作方法和态度上来讲，真正需要去做的工作才值得去做，大力砍掉那些不应该在当前工作中处理的事情。例如不必要的优化，不必要的扩展性，不必要的性能，不必要的功能，可以不要的技术，不必要的流程，不必要的文档，统统砍掉，一切可以没有的全都不能有。
工作中也可能遇到非关键的难题，通常绕过它们，使用更简单的方案就是了。纠缠于这些不重要的难题，最容易浪费时间。例如，eclipse忽然坏掉了，最好的方法是重装一个; 又如以前我经常自己建一个持续集成服务器，现在我直接养成每次写完代码手工跑一遍的习惯（前提是够用）。简化你的工作！简化！
从设计/实现来讲，最好的方案就是最简单直接、一眼就能看懂的方案。记得刚到一个新的环境，有一个统计任务，既要用到数据库也要用缓存，我做了精细的设计来保证最终一致性，状态流程都很完整，并且使用线程池来并发运行分批处理，最后再合并。虽然控制得很完美很精细，但是流程和结构都很复杂。上头根据此前的项目经验给出了一个更简单的例子，直接将各个任务划分为多个线程，分开存储，到了该统计的时候，冻结数据在所有的分区上做统计。状态砍掉一半，流程缩减一半。
事实上，作为简单直接的一个附带效应，最简单直接的方式，通常性能也最好。
简化问题的能力，是一个人的核心能力。
三、基本功
基本功的内容十分复杂。首先，对整个计算机体系的理解，对操作系统/虚拟机/数据库本质的理解，对语言基础类和库的理解，我觉得是核心基本功。
第二项基本功，就是学习能力。 通过快速阅读核心文档理解核心思想，然后其他的东西总是能从文档中查到就行。细枝末节的东西，即学即用，学过就忘可也。
第三项基本功，就是文档、资料的搜索和收集。
要想在工作中如行云流水，另外一个方面就是避开暂时还不熟悉的技术和工具，不熟悉的东西很难用好，更难用顺畅。尤其是那些纠结复杂、华而不实的技术，不要去碰。这属于简化能力的范畴。
四、工具
选择工具的核心标准，就是简单朴素可信赖。
文本格式的设计，加上易于修改的图。 我喜欢用一个简单的文本格式来记录设计，随时修改，随时查阅。而附上几幅简单直接的图，经常能够更简单直接地表达更多的内容。
简单的可信赖的工具。我曾经将很长的时间用来构建Maven的环境上，用Maven管理依赖，尤其是跟Eclipse协作时，经常出现诡异。现在我用ant，或者只用Maven，maven不与eclipse纠缠在一起。如果一个工具出几次诡异现象，那就干脆丢掉它。
版本管理工具。 不仅仅源码要由版本管理，整个项目过程的所有知识，全部用版本管理系统管理起来，集中存放。现在我用subversion和git。


Related posts:设计与开发的五条原则


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html' rel='bookmark' title='Permanent Link: 设计与开发的五条原则'>设计与开发的五条原则</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>最近一段时间以来，效率相当地高。 纵观前些年的工作效率中，少有这么利落快速而且不加班的。 回顾这几年，我工作效率的提高主要有下面的几个方面。</p>
<h5>一、集中目标</h5>
<p><strong>专注目标。</strong>凡是工作效率高的时间段里，工作目标都很明确。每天一上班，心里就想明白了今天要干什么，每天下班时，想想今天都实现了什么，有什么目标还没有实现。尽管每天早上来了先看看股票新闻，中午饭后看看股票新闻，偶尔下午还打个盹什么的，但工作的时候确实格外专注，丝毫也不会走神。<br />
<strong><br />
分离与当前无关的任务/问题。</strong>专注目标不是那么容易做到的。印象中以前工作中经常会碰到的问题是工作中遇到的问题。一方面可能得益于基本功的增强，最近虽然也遇到了一些问题，但是都能够通过简单阅读或查找文档，或浏览问题相关的库的源码解决； 另一方面，遇到的问题我总是避繁就简，首先倾向于寻找简单可用可靠的方案，并将心中的疑虑记录下来，集中成一个列表，工作之外翻翻书，系统思考和学习，而不会因为这个问题而叉开思路对相关的内容研究一番。总之，专注当前的任务，把新问题记录下来，回头再专心攻克。</p>
<p>例如我第一次用ibatis，遇到了一些表可以用集合和映射来加强Pojo的OO功能，但是我并不熟悉ibatis的这些特性，并且使用简单的方案也是可行的，于是就直接使用简便方案(在我看来，ibatis主要是将SQL集中起来管理、简化SQL操纵，对OO不感冒)。</p>
<p><strong>工作列表。</strong>不论是开发还是设计，一个文本格式的位于源代码存储系统下的待办工作列表与IDE中的TODO项一起构成了专注目标的重要工具。工作目标分解是基本工作步骤，记录工作中产生的新的问题（任务），这样，子问题越来越多，项目中要干的事情越来越丰富。经常性地调整当前工作任务列表，根据重要性对这些任务进行划分。每天都干掉一些问题，经常想着那些最重要的问题。</p>
<p><strong>简单但有迹可寻的设计材料。</strong>在思考和工作的过程中，一方面，项目的过程通常比较长，另一方面经验相对丰富的人手头总是有多个事情在并行进行。当时间太长记不清出了或者是切换任务时，经常要查看此前的代码和设计，易于修改以及有历史记录的设计材料对于保持设计思路的完整十分有意义。（设计材料还应该包括重要的图）</p>
<p><strong>正式准确可以依靠的需求文档。</strong>这一条无论怎么说都不过分，遇到需求不确定的地方，就去查需求文档。如果没有，就请能够回答的人来回答，委托给他，先去做别的。细想在上一家公司，经常要承担多种角色，甚至连需求也经常没人给一个最终决策，设计开发的时候在模棱两可的需求之间做决定，很烦心。对于一个设计/开发人员而言，需求人员在需求问题方面就是绝对的权威。如果有些建议，可以建议，但一切均以需求/产品人员为准。</p>
<p><strong>单元测试。</strong>另一有助于集中精力编码的就是单元测试。单元测试让我集中精力实现当前的功能，需要依赖的其他功能，我总是先生成一个接口，让当前的功能通过测试后再专心去实现该接口。一天下来，一个一个的测试点亮了绿色，一个一个的接口被实现，整天都是十分惬意的。单元测试的另外一个收益就是放心地去重构吧，放心地去做新的特性吧。</p>
<h5>二、简化问题的能力</h5>
<p>无论是在广义的工作方法/工作态度上，还是在针对具体问题的设计/实现上，我认为最重要的个人能力就是化繁为简了。化繁为简是所有工作方法/软件设计的核心。将那些可以砍掉的工作砍掉（最多做个记录），做到尽可能地经济，尽可能地简单。</p>
<p>从工作方法和态度上来讲，真正需要去做的工作才值得去做，大力砍掉那些不应该在当前工作中处理的事情。例如不必要的优化，不必要的扩展性，不必要的性能，不必要的功能，可以不要的技术，不必要的流程，不必要的文档，统统砍掉，<strong>一切可以没有的全都不能有</strong>。</p>
<p>工作中也可能遇到非关键的难题，通常绕过它们，使用更简单的方案就是了。纠缠于这些不重要的难题，最容易浪费时间。例如，eclipse忽然坏掉了，最好的方法是重装一个; 又如以前我经常自己建一个持续集成服务器，现在我直接养成每次写完代码手工跑一遍的习惯（前提是够用）。简化你的工作！简化！</p>
<p>从设计/实现来讲，最好的方案就是最简单直接、一眼就能看懂的方案。记得刚到一个新的环境，有一个统计任务，既要用到数据库也要用缓存，我做了精细的设计来保证最终一致性，状态流程都很完整，并且使用线程池来并发运行分批处理，最后再合并。虽然控制得很完美很精细，但是流程和结构都很复杂。上头根据此前的项目经验给出了一个更简单的例子，直接将各个任务划分为多个线程，分开存储，到了该统计的时候，冻结数据在所有的分区上做统计。状态砍掉一半，流程缩减一半。</p>
<p>事实上，作为简单直接的一个附带效应，最简单直接的方式，通常性能也最好。</p>
<p><strong>简化问题的能力，是一个人的核心能力。</strong></p>
<h5>三、基本功</h5>
<p>基本功的内容十分复杂。首先，对整个计算机体系的理解，对操作系统/虚拟机/数据库本质的理解，对语言基础类和库的理解，我觉得是<strong>核心基本功</strong>。</p>
<p>第二项基本功，就是<strong>学习能力</strong>。 通过快速阅读核心文档理解核心思想，然后其他的东西总是能从文档中查到就行。细枝末节的东西，即学即用，学过就忘可也。</p>
<p>第三项基本功，就是<strong>文档、资料的搜索和收集</strong>。</p>
<p>要想在工作中如行云流水，另外一个方面就是避开暂时还不熟悉的技术和工具，不熟悉的东西很难用好，更难用顺畅。尤其是那些纠结复杂、华而不实的技术，不要去碰。这属于简化能力的范畴。</p>
<h5>四、工具</h5>
<p>选择工具的核心标准，就是<strong>简单朴素可信赖</strong>。</p>
<p>文本格式的设计，加上易于修改的图。 我喜欢用一个简单的文本格式来记录设计，随时修改，随时查阅。而附上几幅简单直接的图，经常能够更简单直接地表达更多的内容。</p>
<p>简单的可信赖的工具。我曾经将很长的时间用来构建Maven的环境上，用Maven管理依赖，尤其是跟Eclipse协作时，经常出现诡异。现在我用ant，或者只用Maven，maven不与eclipse纠缠在一起。如果一个工具出几次诡异现象，那就干脆丢掉它。</p>
<p>版本管理工具。 不仅仅源码要由版本管理，整个项目过程的所有知识，全部用版本管理系统管理起来，集中存放。现在我用subversion和git。</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html' rel='bookmark' title='Permanent Link: 设计与开发的五条原则'>设计与开发的五条原则</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/04/work-effcient-thoughts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>虚拟机中Host与Guest文件共享</title>
		<link>http://blog.feihoo.com/2010/04/virtual-machine-guest-host-share-file.html</link>
		<comments>http://blog.feihoo.com/2010/04/virtual-machine-guest-host-share-file.html#comments</comments>
		<pubDate>Tue, 13 Apr 2010 09:09:50 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=609</guid>
		<description><![CDATA[   最近很多工作在Linux下做，但是因为整个公司的环境是Windows，很多事情也经常要在Windows下处理。于是在Windows XP上用VMware搭建了OpenSUSE，同时使用这两种系统。经过这段时间的使用，觉得OpenSUSE的桌面支持确实是做得不错的，似乎比Ubuntu更加方便简单。但是Ubuntu更流行，很多简单的设置问题，网络上随处可见Ubuntu的解决方案，而SUSE的方案却难觅踪影。 
   例如，我经常使用VMWare的共享文件夹特性来在Host与Guest之间交换数据，共享文件。 但是在OpenSUSE下，却没有找到合适的方法。最终，不得不求助于Samba。 Samba在OpenSUSE上的安装是很方便的，基本上遵照 How To Samba With openSuse 10.3 And Windows XP 的指导，三两步就完成了。 完毕以后，在Windows XP 下映射一个盘符到 \\GUEST_HOSTNAME\users 就完成了。我完全关闭了Guest上的防火墙，有防火墙反而可能招致麻烦。
而在OpenSUSE上访问Windows XP也很简单，基本上遵照 SDB:Access to Windows Shares 的 Manual Procedure 部分，将Windows XP共享目录加入到 /etc/fstab 中：

  1 /dev/sda1            swap   [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>   最近很多工作在Linux下做，但是因为整个公司的环境是Windows，很多事情也经常要在Windows下处理。于是在Windows XP上用VMware搭建了OpenSUSE，同时使用这两种系统。经过这段时间的使用，觉得OpenSUSE的桌面支持确实是做得不错的，似乎比Ubuntu更加方便简单。但是Ubuntu更流行，很多简单的设置问题，网络上随处可见Ubuntu的解决方案，而SUSE的方案却难觅踪影。 </p>
<p>   例如，我经常使用VMWare的共享文件夹特性来在Host与Guest之间交换数据，共享文件。 但是在OpenSUSE下，却没有找到合适的方法。最终，不得不求助于Samba。 Samba在OpenSUSE上的安装是很方便的，基本上遵照 <a href="http://www.tweakhound.com/linux/samba/page_1.htm">How To Samba With openSuse 10.3 And Windows XP</a> 的指导，三两步就完成了。 完毕以后，在Windows XP 下映射一个盘符到 \\GUEST_HOSTNAME\users 就完成了。我完全关闭了Guest上的防火墙，有防火墙反而可能招致麻烦。</p>
<p>而在OpenSUSE上访问Windows XP也很简单，基本上遵照 <a href="http://en.opensuse.org/SDB:Access_to_Windows_Shares" class="broken_link" >SDB:Access to Windows Shares</a> 的 Manual Procedure 部分，将Windows XP共享目录加入到 /etc/fstab 中：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">  <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda1            swap                 swap       defaults              <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">2</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2            <span style="color: #000000; font-weight: bold;">/</span>                    ext4       acl,user_xattr        <span style="color: #000000;">1</span> <span style="color: #000000;">1</span>
  <span style="color: #000000;">3</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda3            <span style="color: #000000; font-weight: bold;">/</span>home                ext4       acl,user_xattr        <span style="color: #000000;">1</span> <span style="color: #000000;">2</span>
  <span style="color: #000000;">4</span> proc                 <span style="color: #000000; font-weight: bold;">/</span>proc                proc       defaults              <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">5</span> sysfs                <span style="color: #000000; font-weight: bold;">/</span>sys                 sysfs      noauto                <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">6</span> debugfs              <span style="color: #000000; font-weight: bold;">/</span>sys<span style="color: #000000; font-weight: bold;">/</span>kernel<span style="color: #000000; font-weight: bold;">/</span>debug    debugfs    noauto                <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">7</span> usbfs                <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span>bus<span style="color: #000000; font-weight: bold;">/</span>usb        usbfs      noauto                <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">8</span> devpts               <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>pts             devpts     <span style="color: #007800;">mode</span>=0620,<span style="color: #007800;">gid</span>=<span style="color: #000000;">5</span>       <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>
  <span style="color: #000000;">9</span> <span style="color: #000000; font-weight: bold;">//</span>x.x.x.x<span style="color: #000000; font-weight: bold;">/</span>work   <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>windows    cifs  auto,<span style="color: #007800;">uid</span>=liuz,<span style="color: #007800;">gid</span>=<span style="color: #c20cb9; font-weight: bold;">users</span>,<span style="color: #007800;"><span style="color: #7a0874; font-weight: bold;">umask</span></span>=0002,<span style="color: #007800;">iocharset</span>=utf8,<span style="color: #007800;">credentials</span>=<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>winpasswd <span style="color: #000000;">0</span> <span style="color: #000000;">0</span></pre></div></div>

<p>别忘了保护你的密码文件：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">600</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>winpassword</pre></div></div>

<p>特殊之处，是指定了一个 uid=liuz， 将文件的所有者指定为liuz这个用户，方便增删改等操作。有关 uid,gid,umask等的解释如下： (<a href="http://forum.ubuntu.org.cn/viewtopic.php?f=50&#038;t=138806" class="broken_link" >来源</a>)</p>
<blockquote><p>
uid与gid<br />
uid即user identifer，gid即group identifer。设置所有文件的所有者和群组。gid=64，即权限为所有者可读、写，不能执行，群组用户可读、不能写、执行。<br />
umask<br />
umask即user mask，即用户屏蔽。umask=007，即所有文件的权限中，屏蔽其它使用者的读、写、执行权限。 </p></blockquote>
<h5>总结</h5>
<p>总结一下我使用的这三种方法：</p>
<ul>
<li>1) 使用VMware提供的共享文件夹功能。</li>
<li>2) 使用Samba为Windows Host OS 共享Linux Guest OS文件系统。</li>
<li>3) 在Linux Guest OS中mount Host OS （Windows系统）的共享文件夹。 </li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/04/virtual-machine-guest-host-share-file.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>导出Memcached中的全部数据</title>
		<link>http://blog.feihoo.com/2010/04/dump_memcached.html</link>
		<comments>http://blog.feihoo.com/2010/04/dump_memcached.html#comments</comments>
		<pubDate>Mon, 05 Apr 2010 08:34:13 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=564</guid>
		<description><![CDATA[因为特别的原因，需要从Memcached中导出所有的数据。因为Memcached对数据的遍历是明确不支持的，所以必须想歪门邪道的方法。
现在网络上主要有两种思路，一种是通过Memcached提供的stats cachedump命令导出，例如下面这些网址：

dump all keys from memcached
Dumping MemcacheD Content (Keys) with PHP
Robbin的文章

以上文章都利用这个命令导出了部分数据。但事实上，cachedump的输出会限制在 2*1024*1024=2M 字节的长度内（Memecahed source: items.c, func: do_item_cachedump），其导出的格式如下所示：

ITEM key990017 [1 b; 1270394155 s]
ITEM key990016 [1 b; 1270394155 s]
ITEM key990015 [1 b; 1270394155 s]
ITEM key990014 [1 b; 1270394155 s]

即使不计算key的长度，每一条数据至少要占掉近三十个字节，2M最多到几万项数据。对于Item数量很大的情况下，这种方法并不能导出全部数据。
下面的地址佐证了这些观点。

官方邮件列表上的解释
上面提到的文章 memcache dump and load 的读者也在评论中进行了分析

第二种思路来自 Twitter infrastructure team 的 Evan Weaver 的 peeping into memcached , 利用 linux [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>因为特别的原因，需要从<a href="http://memcached.org">Memcached</a>中导出所有的数据。因为<a href="http://code.google.com/p/memcached/wiki/FAQ#Can_I_iterate_the_items_of_the_memcached_server?">Memcached对数据的遍历是明确不支持</a>的，所以必须想歪门邪道的方法。</p>
<p>现在网络上主要有两种思路，一种是通过Memcached提供的stats cachedump命令导出，例如下面这些网址：</p>
<ul>
<li><a href="http://groups.google.com/group/memcached/browse_thread/thread/d8f3637b84cca7b7?pli=1">dump all keys from memcached</a></li>
<li><a href="http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html">Dumping MemcacheD Content (Keys) with PHP</a></li>
<li><a href="http://robbin.javaeye.com/blog/252345">Robbin的文章</a></li>
</ul>
<p>以上文章都利用这个命令导出了部分数据。但事实上，cachedump的输出会限制在 2*1024*1024=2M 字节的长度内（<a href="http://github.com/memcached/memcached/blob/master/items.c#L357">Memecahed source: items.c, func: do_item_cachedump</a>），其导出的格式如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">ITEM key990017 [1 b; 1270394155 s]
ITEM key990016 [1 b; 1270394155 s]
ITEM key990015 [1 b; 1270394155 s]
ITEM key990014 [1 b; 1270394155 s]</pre></div></div>

<p>即使不计算key的长度，每一条数据至少要占掉近三十个字节，2M最多到几万项数据。对于Item数量很大的情况下，这种方法并不能导出全部数据。</p>
<p>下面的地址佐证了这些观点。</p>
<ul>
<li><a href="http://lists.danga.com/pipermail/memcached/2007-April/003906.html">官方邮件列表上的解释</a></li>
<li>上面提到的文章 <a href="http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html">memcache dump and load</a> 的读者也在评论中进行了分析</li>
</ul>
<p>第二种思路来自 Twitter infrastructure team 的 <a href="http://blog.evanweaver.com/about/">Evan Weaver</a> 的 <a href="http://blog.evanweaver.com/articles/2009/04/20/peeping-into-memcached/">peeping into memcached</a> , 利用 linux 的 ptrace 系统调用导出memcached进程中数据，分析这些数据得到memcached的所有Key。</p>
<p>但是这种方式有其限制的，一方面，编译Memcached时必须编译入调试信息 （参见<a href="http://blog.evanweaver.com/files/doc/fauna/peep/files/README.html">link</a>）； 另一方面，在分析时对内存消耗太大。我们对一个只使用了64M内存、含有76万左右数据项的Memcached进程进行分析，在完成23万左右数据项时，分析进程占用内存的达到1040M，导致虚拟机内存用满，关闭了该进程。</p>
<p>因为我们现在运行的memcached是不带编译符号的，所以放弃了第二种方式。 第一种方式，则只能考虑怎么将slabs中的数据分批导出来。 Memcached 支持一个可选的 slabs reassign <src slab> <dest slab> 命令，可以将一个slab内的数据项移动到其他slab。但这个命令必须在编译 memcached 时加入该特性。</p>
<p>最后，还是利用了第一种方法，每一次导出一批数据以后就从memcached中删除这一批数据，直到全部导出为止。 虽然这种办法很土，但是还是能够应付一次性数据迁移。 当然这是不得以而为之，明智的做法还是在一开始就不要将需要持久化的数据只存在与memcached中。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/04/dump_memcached.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我的VPS使用经验</title>
		<link>http://blog.feihoo.com/2010/03/my_vps_experience.html</link>
		<comments>http://blog.feihoo.com/2010/03/my_vps_experience.html#comments</comments>
		<pubDate>Sun, 28 Mar 2010 08:48:02 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[fsckvps]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[vpslink]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=573</guid>
		<description><![CDATA[VPSlink/Tetonic/fsckvps
约一年多前开始使用 vpslink 的 Xen VPS，前不久因为实在是没什么事情做，只放了一个博客，觉得有点不值得，就搬到了 Tektonic 上的 OpenVZ VPS。Tektonic的OpenVZ性能也还可以，但很快就发现网速实在是不行。于是试用了一下fsckvps，速度还不错的，可惜服务不好，尤其是上次事故以后，客服响应很差。另外，发现OpenVZ的虚拟机运行java基本是不可行的，甚至 ant/maven 编译个程序都不行。只能将某些能够修改JVM参数的程序手工做好设置（-Xmx480M）才能运行。
Linode
于是开始试用在中国颇为有名的 linode，我比较穷，选择了最便宜的 Linode 360，$19.95/M。 听 blogkid 的 博文 选择了 Fremont 的机房。输入信用卡，vps 很快开通。但是ssh一上去，感觉上很卡，测试了一下速度，速度才 几 K/S。受不了了，在本地测试了一下，发现blogkid 推荐的两个机房（Fremont, Newark）的速度都不行。倒是 Dellas 机房的速度很快，北京联通1M宽带能到140K左右。
于是发了个ticket给linode，很快就回信了，让我重新登录控制面板。果然，控制面板上有了自动迁移机房的按钮。于是开始迁移，速度很慢。第二天早上起来发现迁移完了。试用了一下，速度确实不错。不过很快又遇到了问题，做一个hive的测试，因为内存太少，数据一大进程一多，实在是受不了啊&#8230;&#8230;
于是退了 Linode，申请退款。 
Fsckvps + AWS
最后决定采用Fsckvps+AWS的方案。fsckvps 的价格很便宜，虽然fsckvps最近刚刚出过事情，但是我只有一个博客，数据是每天自动备份的。何况 fsckvps 的网速实在是快（北京联通1M能到180K/S，性价比相当不错，我不到 $10/M（年付）就能拿到 512M （burst 1024M)的内存。 Fsckvps的vps的网速实在是不错，在Google Webmaster Tools中，显示我这个博客的速度faster than %92 of sites：
On average, pages in your site take 1.1 seconds to [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li></ol>]]></description>
			<content:encoded><![CDATA[<h5>VPSlink/Tetonic/fsckvps</h5>
<p>约一年多前开始使用 <a href="http://www.vpslink.com">vpslink</a> 的 Xen VPS，前不久因为实在是没什么事情做，只放了一个博客，觉得有点不值得，就搬到了 <a href="http://www.tektonic.net/">Tektonic</a> 上的 OpenVZ VPS。Tektonic的OpenVZ性能也还可以，但很快就发现网速实在是不行。于是试用了一下fsckvps，速度还不错的，可惜服务不好，尤其是上次事故以后，客服响应很差。另外，发现OpenVZ的虚拟机运行java基本是不可行的，甚至 ant/maven 编译个程序都不行。只能将某些能够修改JVM参数的程序手工做好设置（-Xmx480M）才能运行。</p>
<h5>Linode</h5>
<p>于是开始试用在中国颇为有名的 <a href="http://www.linode.com">linode</a>，我比较穷，选择了最便宜的 Linode 360，$19.95/M。 听 <a href="http://www.blogkid.net/linode">blogkid 的 博文</a> 选择了 Fremont 的机房。输入信用卡，vps 很快开通。但是ssh一上去，感觉上很卡，测试了一下速度，速度才 几 K/S。受不了了，在本地测试了一下，发现<a href="http://www.blogkid.net/linode">blogkid 推荐</a>的两个机房（Fremont, Newark）的速度都不行。倒是 Dellas 机房的速度很快，北京联通1M宽带能到140K左右。</p>
<p>于是发了个ticket给linode，很快就回信了，让我重新登录控制面板。果然，控制面板上有了自动迁移机房的按钮。于是开始迁移，速度很慢。第二天早上起来发现迁移完了。试用了一下，速度确实不错。不过很快又遇到了问题，做一个hive的测试，因为内存太少，数据一大进程一多，实在是受不了啊&#8230;&#8230;</p>
<p>于是退了 Linode，申请退款。 </p>
<h5>Fsckvps + AWS</h5>
<p>最后决定采用Fsckvps+AWS的方案。<a href="http://www.fsckvps.com">fsckvps</a> 的价格很便宜，虽然fsckvps最近刚刚出过事情，但是我只有一个博客，数据是每天自动备份的。何况 fsckvps 的网速实在是快（北京联通1M能到180K/S，性价比相当不错，我不到 $10/M（年付）就能拿到 512M （burst 1024M)的内存。 Fsckvps的vps的网速实在是不错，在<a href="http://www.google.com/webmasters/tools">Google Webmaster Tools</a>中，显示我这个博客的速度faster than %92 of sites：</p>
<blockquote><p>On average, pages in your site take 1.1 seconds to load (updated on Mar 15, 2010). This is faster than 92% of sites.</p></blockquote>
<p>但是<strong> fsckvps 的虚拟机是 OpenVZ的，你不能用swap，所以基本上不要指望运行吃内存太猛的程序了，在64位平台上，1024M内存的vps连java &#8211;version都跑不了</strong>。</p>
<p>而其他需要经常在线的应用，则挪到<a href="http://aws.amazon.com">AWS</a>去跑了。</p>
<p>于是我最后的方案就变成了 FsckVps + AWS. 一个月算起来也不到12$，而且AWS的服务器组集群都行，想咋搞就咋搞。从Fsckvps上操控AWS，实在是太惬意了。当然，AWS对个人的linux操作能力要求是不低的&#8230;</p>
<h5>总结：</h5>
<ul>
<li>1) Linode 的网速，以我家（北京网通1M）来看，Dellas 的网速是最快的。 1M 能够保持在120K以上，平均在 140K 左右。 其他三个中心的速度并不快。当然网速的问题，不同的时间，不同的宽带差别可能很大。Linode的服务相当不错，控制面板相当智能化，退款也爽快</li>
<li>2）fsckvps 性价比最高，网速最快（在Atlanta机房，达到140~180K/S，相当稳定）。</li>
<li>3）最终的策略是 fsckvps + AWS, 没有多少在线应用的穷人的选择。</li>
</ul>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/03/my_vps_experience.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>云计算：安全是七寸 &#8212; Google App Engine 宕机</title>
		<link>http://blog.feihoo.com/2010/02/%e4%ba%91%e8%ae%a1%e7%ae%97%ef%bc%9a%e5%ae%89%e5%85%a8%e6%98%af%e4%b8%83%e5%af%b8-google-app-engine-%e5%ae%95%e6%9c%ba.html</link>
		<comments>http://blog.feihoo.com/2010/02/%e4%ba%91%e8%ae%a1%e7%ae%97%ef%bc%9a%e5%ae%89%e5%85%a8%e6%98%af%e4%b8%83%e5%af%b8-google-app-engine-%e5%ae%95%e6%9c%ba.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:12:48 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$IT Thoughts]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=553</guid>
		<description><![CDATA[云计算虽然是一个热门的概念，但是安全仍然是云计算的七寸。不管吹嘘得有多好，一家宕机就大面积的用户业务停掉这样的事情只需要发生一次，就够热闹的。这不，Google App Engine 宕机了。
（英文：Google App Engine is Down &#8211; Backup Data Center Having Problems, 中文： （CSDN新闻）谷歌App Engine宕机：备份数据中心发生故障）


Related posts:Maybe Another Choice for QQ?


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html' rel='bookmark' title='Permanent Link: Maybe Another Choice for QQ?'>Maybe Another Choice for QQ?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>云计算虽然是一个热门的概念，但是安全仍然是云计算的七寸。不管吹嘘得有多好，一家宕机就大面积的用户业务停掉这样的事情只需要发生一次，就够热闹的。这不，Google App Engine 宕机了。</p>
<p>（英文：<a href="http://www.readwriteweb.com/cloud/2010/02/google-app-engine-is-down---ba.php">Google App Engine is Down &#8211; Backup Data Center Having Problems</a>, 中文： <a href="http://news.csdn.net/a/20100225/217203.html">（CSDN新闻）谷歌App Engine宕机：备份数据中心发生故障</a>）</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html' rel='bookmark' title='Permanent Link: Maybe Another Choice for QQ?'>Maybe Another Choice for QQ?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/02/%e4%ba%91%e8%ae%a1%e7%ae%97%ef%bc%9a%e5%ae%89%e5%85%a8%e6%98%af%e4%b8%83%e5%af%b8-google-app-engine-%e5%ae%95%e6%9c%ba.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DBCP连接池(一)：原理与基本配置</title>
		<link>http://blog.feihoo.com/2010/01/dbcp_principle.html</link>
		<comments>http://blog.feihoo.com/2010/01/dbcp_principle.html#comments</comments>
		<pubDate>Fri, 29 Jan 2010 06:20:15 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Performance]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[commons-pool]]></category>
		<category><![CDATA[dbcp]]></category>
		<category><![CDATA[连接池]]></category>
		<category><![CDATA[pool]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=51</guid>
		<description><![CDATA[大约在半年前，曾经帮同事解决过一个Commons-dbcp连接池的问题。当时遇到的问题比较诡异，但是其实并不是什么特别复杂的问题，了解DBCP的原理，大部分问题就迎刃而解了。本文主要对连接池的基本原理以及dbcp的实现方式做一个分析，对dbcp的配置参数结合原理做一个简单解释。
连接池扼要
JDBC是一套通用的Java语言与多种数据库（文件）通讯的标准API。大部分针对数据库服务器（例如Oracle, MySQL等等）的JDBC实现都是基于TCP/IP连接的客户端-服务器端通讯方式。
当我们需要执行一个数据库操作时，有下面三步：

客户端与服务器之间建立一个数据库连接
执行某种数据库操作
断开连接

如果每次处理都要走上面的三步，则应用程序与数据库服务器都要将大量的时间和资源消耗在数据连接的断开与建立上。对于并发较大的系统，建立一次连接然后缓存起来连续使用，直到程序结束等情况下再释放连接，就能够将系统资源集中在对数据库操作的处理上，从而大大提高性能。通常情况下将数据连接的建立和断开委托给一种能够数据库连接池的组件或服务进行管理。而DBCP, C3p0, Proxool等都是常用的开源的连接池组件。
就好像A公司在郊外，他们公司附近没有出租车。如果A公司有人要出去办事，他必须打电话给出租公司订车，用完车后他还要付账报销。 这样每个人出去一趟都必须订车、退车和报销。员工的很多时间白白花费在这上面了。于是A公司跟出租车公司定了一个合同，出租车公司给了他们一个车队。要用车随时去楼下找车队就可以了，用完了也不必结帐，A公司统一跟出租车公司订车和结帐。这个车队就好比连接池，由公司（应用程序）来统一向出租车公司（数据库服务器）订车（建立连接）和退车（关闭连接）。
DBCP的配置参数以及背后的原理
Commons-dbcp连接池的配置参数比较多，也比较复杂，主要分为

Jdbc连接参数（username, password, url, driverClassName, connectionProperties ）
事务处理参数 （defaultAutoCommit, defaultReadOnly, defaultTransactionIsolation, defaultCatalog）
连接池参数（详见下文）
连接池中链接存活性测试参数（详见下文）
预处理查询池化参数（poolPreparedStatements, maxOpenPreparedStatements）
丢弃失效链接相关参数（详见下文）以及一个控制是否可以正常情况下处于访问连接池包装下的底层JDBC链接参数（accessToUnderlyingConnectionAllowed）

其中Jdbc链接参数、事务处理都跟连接池关系不大，另预处理查询池化参数本文不详细叙述。有关commons-dbcp的详细参数配置信息请参考官方文档。 
连接池的配置
再用车队来比喻，出租车公司每提供一辆车给A公司，A公司肯定要付出一定费用。这时候维持车队的大小就很重要了，在项目少用车少的时候，车队肯定要减少，不然很多空闲车辆也要付出成本；在项目多用车多的时候，肯定要扩大车队，不然车不够用，车队忙不过来。A公司可以简单地设地两个阀值来动态调节车队中空闲的车辆数目以满足动态需求，一个是最小空闲车辆数(最小空空闲连接数（minIdle），当剩余的空车数目小于该数目时，A公司就向出租车公司请求加入新车。 一个是最大空闲车辆数（maxIdle），当剩余的车大于该数目时，就将刚刚用用完的车还给出租车公司从而减少车队数量。 
另外，这家出租车公司可能要为多个客户服务，要考虑能够提供给A公司的最大的车数量，不能超过某个数量(maxActive)。所以A公司想出租车申请新车时首先要看下当前正在用的车辆数目是否超过了这个最大数目，如果没有超过那就直接申请新车，否则可以让申请者（应用程序中执行请求的线程）等待 (maxWait0 当等待时间超过 maxWait时，失败）。
在连接池中，这几个参数是十分重要的，官方的说明如下，是我们调节系统性能时需要认真考虑的值。


Parameter
Default
Description


initialSize
0

      The initial number of connections that are created when the pool is started.Since: 1.2线程池启动时初始化的连接数
   


maxActive
8

      The maximum number of active connections that [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html' rel='bookmark' title='Permanent Link: 细节背后：为什么线程协作之前必须先获得锁?'>细节背后：为什么线程协作之前必须先获得锁?</a></li><li><a href='http://blog.feihoo.com/2008/06/%e6%9c%89%e5%85%b3-sum%e4%b8%8elimit%e7%bb%84%e5%90%88%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e9%97%ae%e9%a2%98.html' rel='bookmark' title='Permanent Link: 有关 sum与limit组合使用时的问题'>有关 sum与limit组合使用时的问题</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>大约在半年前，曾经帮同事解决过一个Commons-dbcp连接池的问题。当时遇到的问题比较诡异，但是其实并不是什么特别复杂的问题，了解DBCP的原理，大部分问题就迎刃而解了。本文主要对连接池的基本原理以及dbcp的实现方式做一个分析，对dbcp的配置参数结合原理做一个简单解释。</p>
<h5>连接池扼要</h5>
<p><a href="http://java.sun.com/javase/technologies/database/">JDBC</a>是一套通用的Java语言与多种数据库（文件）通讯的标准API。大部分针对数据库服务器（例如Oracle, MySQL等等）的JDBC实现都是基于TCP/IP连接的客户端-服务器端通讯方式。</p>
<p>当我们需要执行一个数据库操作时，有下面三步：</p>
<ol>
<li>客户端与服务器之间建立一个数据库连接</li>
<li>执行某种数据库操作</li>
<li>断开连接</li>
</ol>
<p>如果每次处理都要走上面的三步，则应用程序与数据库服务器都要将大量的时间和资源消耗在数据连接的断开与建立上。对于并发较大的系统，建立一次连接然后缓存起来连续使用，直到程序结束等情况下再释放连接，就能够将系统资源集中在对数据库操作的处理上，从而大大提高性能。通常情况下将数据连接的建立和断开委托给一种能够数据库连接池的组件或服务进行管理。而DBCP, C3p0, Proxool等都是常用的开源的连接池组件。</p>
<p>就好像A公司在郊外，他们公司附近没有出租车。如果A公司有人要出去办事，他必须打电话给出租公司订车，用完车后他还要付账报销。 这样每个人出去一趟都必须订车、退车和报销。员工的很多时间白白花费在这上面了。于是A公司跟出租车公司定了一个合同，出租车公司给了他们一个车队。要用车随时去楼下找车队就可以了，用完了也不必结帐，A公司统一跟出租车公司订车和结帐。这个车队就好比连接池，由公司（应用程序）来统一向出租车公司（数据库服务器）订车（建立连接）和退车（关闭连接）。</p>
<h5>DBCP的配置参数以及背后的原理</h5>
<p>Commons-dbcp连接池的配置参数比较多，也比较复杂，主要分为</p>
<ul>
<li>Jdbc连接参数（username, password, url, driverClassName, connectionProperties ）</li>
<li>事务处理参数 （defaultAutoCommit, defaultReadOnly, defaultTransactionIsolation, defaultCatalog）</li>
<li>连接池参数（详见下文）</li>
<li>连接池中链接存活性测试参数（详见下文）</li>
<li>预处理查询池化参数（poolPreparedStatements, maxOpenPreparedStatements）</li>
<li>丢弃失效链接相关参数（详见下文）以及一个控制是否可以正常情况下处于访问连接池包装下的底层JDBC链接参数（accessToUnderlyingConnectionAllowed）</li>
</ul>
<p>其中Jdbc链接参数、事务处理都跟连接池关系不大，另预处理查询池化参数本文不详细叙述。有关commons-dbcp的详细参数配置信息请参考<a href="http://commons.apache.org/dbcp/configuration.html">官方文档</a>。 </p>
<h5>连接池的配置</h5>
<p>再用车队来比喻，出租车公司每提供一辆车给A公司，A公司肯定要付出一定费用。这时候维持车队的大小就很重要了，在项目少用车少的时候，车队肯定要减少，不然很多空闲车辆也要付出成本；在项目多用车多的时候，肯定要扩大车队，不然车不够用，车队忙不过来。A公司可以简单地设地两个阀值来动态调节车队中空闲的车辆数目以满足动态需求，一个是最小空闲车辆数(最小空空闲连接数（minIdle），当剩余的空车数目小于该数目时，A公司就向出租车公司请求加入新车。 一个是最大空闲车辆数（maxIdle），当剩余的车大于该数目时，就将刚刚用用完的车还给出租车公司从而减少车队数量。 </p>
<p>另外，这家出租车公司可能要为多个客户服务，要考虑能够提供给A公司的最大的车数量，不能超过某个数量(maxActive)。所以A公司想出租车申请新车时首先要看下当前正在用的车辆数目是否超过了这个最大数目，如果没有超过那就直接申请新车，否则可以让申请者（应用程序中执行请求的线程）等待 (maxWait<=0, 无限等待; maxWait>0 当等待时间超过 maxWait时，失败）。</p>
<p>在连接池中，这几个参数是十分重要的，官方的说明如下，是我们调节系统性能时需要认真考虑的值。</p>
<table>
<hr />
<th>Parameter</th>
<th>Default</th>
<th>Description</th>
</hr>
<tr class="a">
<td>initialSize</td>
<td>0</td>
<td>
      The initial number of connections that are created when the pool is started.<br /></br>Since: 1.2<br />线程池启动时初始化的连接数
   </td>
</tr>
<tr class="b">
<td>maxActive</td>
<td>8</td>
<td>
      The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit.<br/>最大活动连接数，如果非正整数，则不做限制。
   </td>
</tr>
<tr class="a">
<td>maxIdle</td>
<td>8</td>
<td>
      The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.<br />最大空闲连接数。
   </td>
</tr>
<tr class="b">
<td>minIdle</td>
<td>0</td>
<td>The minimum number of connections that can remain idle in the pool, without extra ones being created, or zero to create none.<br />最小空闲连接数。
   </td>
</tr>
<tr class="a">
<td>maxWait</td>
<td>indefinitely</td>
<td>
      The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.<br />（在没有连接可用时）连接池等待一个数据连接可用时的以毫秒计的最大等待时间，超时以后抛出异常， -1 则将无限等待
</td>
</tr>
</table>
<p>实际上，Dbcp 依赖于 commons-pool 来存储连接对象。 <a href="http://commons.apache.org/dbcp/api-1.2.2/org/apache/commons/dbcp/BasicDataSource.html">BasicDataSource</a>默认使用<a href="http://commons.apache.org/pool/api-1.5.4/org/apache/commons/pool/impl/GenericObjectPool.html">GenericObjectPool</a>来管理连接对象。除了请求的线程会在请求和返回连接过程中影响池中连接实例外，另有一个跑着GenericObjectPool.Evictor类型 (implements Runnable) 的实例的线程，也会影响池中的数据库连接。</p>
<p>请继续阅读下一篇：<a href="http://blog.feihoo.com/archives/542" class="broken_link" >《DBCP连接池（二）：Commons-pool的设计》</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html' rel='bookmark' title='Permanent Link: 细节背后：为什么线程协作之前必须先获得锁?'>细节背后：为什么线程协作之前必须先获得锁?</a></li><li><a href='http://blog.feihoo.com/2008/06/%e6%9c%89%e5%85%b3-sum%e4%b8%8elimit%e7%bb%84%e5%90%88%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e9%97%ae%e9%a2%98.html' rel='bookmark' title='Permanent Link: 有关 sum与limit组合使用时的问题'>有关 sum与limit组合使用时的问题</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/01/dbcp_principle.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>推荐：（袁伟时）现代化与中国的历史教科书问题</title>
		<link>http://blog.feihoo.com/2010/01/%e6%8e%a8%e8%8d%90%ef%bc%9a%ef%bc%88%e8%a2%81%e4%bc%9f%e6%97%b6%ef%bc%89%e7%8e%b0%e4%bb%a3%e5%8c%96%e4%b8%8e%e4%b8%ad%e5%9b%bd%e7%9a%84%e5%8e%86%e5%8f%b2%e6%95%99%e7%a7%91%e4%b9%a6%e9%97%ae%e9%a2%98.html</link>
		<comments>http://blog.feihoo.com/2010/01/%e6%8e%a8%e8%8d%90%ef%bc%9a%ef%bc%88%e8%a2%81%e4%bc%9f%e6%97%b6%ef%bc%89%e7%8e%b0%e4%bb%a3%e5%8c%96%e4%b8%8e%e4%b8%ad%e5%9b%bd%e7%9a%84%e5%8e%86%e5%8f%b2%e6%95%99%e7%a7%91%e4%b9%a6%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 01:56:55 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=499</guid>
		<description><![CDATA[    以前只知道日本右翼历史教科书是怎么篡改历史的，最近读到袁伟时先生的这篇文章，我深受震动，原来我们的历史教科书也有问题。 我们自小接受的历史教育里竟然也有对历史的裁剪、修改，给我们对中国近代历史的认识造成了太严重的影响。影响有多严重，列个提纲各位看官就知道了：

火烧圆明园是无法避免的？ （看过这个问题你会明白第二次鸦片战争中中方对于战争的起因、过程和结果都负有重要责任）
(义和团)是爱国壮举还是摧残文明和反人道的罪行 （看过这个问题，你会明白义和团的罪恶和八国联军侵占北京不只是对方的责任。 两国交战不杀来使在中国历史上早已认知，要是随意杀死对方的民众就更不应该了，这一段历史教科书里对史实的篡改实在是太糟糕了。在我们记恨南京屠杀时，也想想我们的清政府和义和团所犯下的杀戮。）

    我们的心中积累了太多的仇恨和屈辱，认真对待这一百多年的近代历史，对我们的世界观异常重要。毫无疑问，帝国主义在中国领土上犯下了罪行，但是正确地认知这一进程中的真相，认识到我们的国家在这个转变过程中所经历的曲折、所犯下的错误和之所以这样的原因，或许我们能原谅清朝当政者为何犯下愚昧的错误，理解义和团先民为何会去破坏铁路、会去杀无辜的教民，明白为何赞叹夏宫的英法要烧毁圆明园、为何八国联军杀进北京最后却用庚子赔款做一些有益于中国民族进步的事情，还原一个真实的历史，才能让我们有一个正常的、自信的、健全的世界观。 
再引一段吧：
 19、20世纪中国人干了不少“无法无天”的事，义和团事件是其中的典型。值得重视的是不但至今有人把野蛮的行为说成是“革命”，而且到了20世纪90年代，有人竟把主张遵守现行国际条约的观点视为应该严加批判的卖国投降观点！
  这篇文章或许是因为其真实而对国人的思想产生强大的震撼，直接导致了刊登该文的杂志主编被撤职，杂志停刊。
2006年1月11日“中国青年报”的《冰点》周刊因刊出袁伟时文章《现代化与历史教科书》[2]，因而导致暂时停刊，并引致主编李大同及副主编卢跃刚撤职。3月1日《冰点》复刊，刊登张海鹏的《反帝反封建是近代中国历史的主题》文章批驳上文，并拒刊袁伟时《为何、何时、如何反帝反封建》文章。（来源：维基百科）
也许有的读者会质疑袁伟时的观点，那太好了，希望有人出来反驳一下，真理越辩越明。
   下面给出两个版本的链接，内容大致是一样的，只是青年报的版本用语可能更谨慎些。同时放在这里是为了降低因墙影响不能阅读的概率。
文章链接：

现代化与中国的历史教科书问题（版本一，中国青年报）
现代化与中国的历史教科书问题 （ 五柳村 ） 



No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>    以前只知道日本右翼历史教科书是怎么篡改历史的，最近读到袁伟时先生的这篇文章，我深受震动，原来我们的历史教科书也有问题。 我们自小接受的历史教育里竟然也有对历史的裁剪、修改，给我们对中国近代历史的认识造成了太严重的影响。影响有多严重，列个提纲各位看官就知道了：</p>
<ul>
<li><strong>火烧圆明园是无法避免的？</strong> （看过这个问题你会明白第二次鸦片战争中中方对于战争的起因、过程和结果都负有重要责任）</li>
<li>(义和团)<strong>是爱国壮举还是摧残文明和反人道的罪行</strong> （看过这个问题，你会明白义和团的罪恶和八国联军侵占北京不只是对方的责任。 两国交战不杀来使在中国历史上早已认知，要是随意杀死对方的民众就更不应该了，这一段历史教科书里对史实的篡改实在是太糟糕了。在我们记恨南京屠杀时，也想想我们的清政府和义和团所犯下的杀戮。）</li>
</ul>
<p><div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><img src="http://blog.feihoo.com/wp-content/uploads/2010/01/chuzhonglishi.jpg" alt="初中历史教科书图片" title="初中历史教科书图片" width="300" height="300" class="size-full wp-image-507" /><p class="wp-caption-text">初中历史教科书图片(本图片不代表袁伟时文章中批判的教材,袁文可能指的是别的版本）</p></div><br />
    我们的心中积累了太多的仇恨和屈辱，认真对待这一百多年的近代历史，对我们的世界观异常重要。毫无疑问，帝国主义在中国领土上犯下了罪行，但是正确地认知这一进程中的真相，认识到我们的国家在这个转变过程中所经历的曲折、所犯下的错误和之所以这样的原因，或许我们能原谅清朝当政者为何犯下愚昧的错误，理解义和团先民为何会去破坏铁路、会去杀无辜的教民，明白为何赞叹夏宫的英法要烧毁圆明园、为何八国联军杀进北京最后却用庚子赔款做一些有益于中国民族进步的事情，还原一个真实的历史，才能让我们有一个正常的、自信的、健全的世界观。 </p>
<p>再引一段吧：</p>
<blockquote><p> 19、20世纪中国人干了不少“无法无天”的事，义和团事件是其中的典型。值得重视的是不但至今有人把野蛮的行为说成是“革命”，而且到了20世纪90年代，有人竟把主张遵守现行国际条约的观点视为应该严加批判的卖国投降观点！</p></blockquote>
<p>  这篇文章或许是因为其真实而对国人的思想产生强大的震撼，直接导致了刊登该文的杂志主编被撤职，杂志停刊。</p>
<blockquote><p>2006年1月11日“中国青年报”的《冰点》周刊因刊出袁伟时文章《现代化与历史教科书》[2]，因而导致暂时停刊，并引致主编李大同及副主编卢跃刚撤职。3月1日《冰点》复刊，刊登张海鹏的《反帝反封建是近代中国历史的主题》文章批驳上文，并拒刊袁伟时《为何、何时、如何反帝反封建》文章。（来源：<a href="http://zh.wikipedia.org/zh-cn/%E8%A2%81%E4%BC%9F%E6%97%B6">维基百科</a>）</p></blockquote>
<p>也许有的读者会质疑袁伟时的观点，那太好了，希望有人出来反驳一下，真理越辩越明。</p>
<p>   下面给出两个版本的链接，内容大致是一样的，只是青年报的版本用语可能更谨慎些。同时放在这里是为了降低因墙影响不能阅读的概率。</p>
<p>文章链接：</p>
<ul>
<li><a href="http://zqb.cyol.com/gb/zqb/2006-01/11/content_118530.htm">现代化与中国的历史教科书问题</a>（版本一，中国青年报）</li>
<li><a href="http://www.taosl.net/cn019.htm">现代化与中国的历史教科书问题</a> （ 五柳村 ） </li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/01/%e6%8e%a8%e8%8d%90%ef%bc%9a%ef%bc%88%e8%a2%81%e4%bc%9f%e6%97%b6%ef%bc%89%e7%8e%b0%e4%bb%a3%e5%8c%96%e4%b8%8e%e4%b8%ad%e5%9b%bd%e7%9a%84%e5%8e%86%e5%8f%b2%e6%95%99%e7%a7%91%e4%b9%a6%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十多年后再见到卓依婷</title>
		<link>http://blog.feihoo.com/2010/01/%e5%8d%81%e5%a4%9a%e5%b9%b4%e5%90%8e%e5%86%8d%e8%a7%81%e5%88%b0%e5%8d%93%e4%be%9d%e5%a9%b7.html</link>
		<comments>http://blog.feihoo.com/2010/01/%e5%8d%81%e5%a4%9a%e5%b9%b4%e5%90%8e%e5%86%8d%e8%a7%81%e5%88%b0%e5%8d%93%e4%be%9d%e5%a9%b7.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 16:44:07 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@生活]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=494</guid>
		<description><![CDATA[上初中的时候，因为舅舅、叔叔他们都特别喜欢卓依婷，我听得最多的歌声差不多也是卓依婷的，于是渐渐喜欢上了她的歌声。初高中的时候就听舅舅说她已经因为车祸离世了，感到十分惋惜。
后来我把我们家人对于卓依婷的热爱，以及她已经离世等等都告诉了老婆。才知道她也是喜欢卓依婷的歌的。不过这两天听了三四个人演唱的《小城故事》，觉得都和原唱有一定的差距。而卓依婷估计唱这个歌的时候年纪还很小，歌声有些区别也是可以理解的。
于是我顺便Google了一下有关卓依婷的资料，没想到发现搜索提示框里排名第二的是”卓依婷之死“，于是搜索进去，结果大吃一惊，原来她并没有去世。各种消息都是以讹传讹吧。老婆说，他应该把这个消息告诉我舅舅和叔叔，他们也应该会感到高兴的，因为可以买新专辑了  。
她只是中间休息了两年（她81年出生，我想休息一下学学东西也是好的），但是2001年复出后没有很特别的成果，加上个人低调等原因，有关她的消息不是特别多。可能这些年努力也不容易，她之前给人民的主要印象还是年少时的作品，如今好些年了，要转变也不是一个容易的事情。祝她顺利。
顺便去看了看她的博客，觉得很平易近人，有一种很亲切的感觉。
另外，她现在签约优格音乐文化有限公司，暂时不知道该公司的更多资料。她还开通了官方网站。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>上初中的时候，因为舅舅、叔叔他们都特别喜欢<a href="http://blog.sina.com.cn/timizhuo">卓依婷</a>，我听得最多的歌声差不多也是<a href="http://blog.sina.com.cn/timizhuo">卓依婷</a>的，于是渐渐喜欢上了她的歌声。初高中的时候就听舅舅说她已经因为车祸离世了，感到十分惋惜。</p>
<p>后来我把我们家人对于卓依婷的热爱，以及她已经离世等等都告诉了老婆。才知道她也是喜欢卓依婷的歌的。不过这两天听了三四个人演唱的《小城故事》，觉得都和原唱有一定的差距。而卓依婷估计唱这个歌的时候年纪还很小，歌声有些区别也是可以理解的。</p>
<p>于是我顺便Google了一下有关卓依婷的资料，没想到发现搜索提示框里排名第二的是”卓依婷之死“，于是搜索进去，结果大吃一惊，原来她并没有去世。各种消息都是以讹传讹吧。老婆说，他应该把这个消息告诉我舅舅和叔叔，他们也应该会感到高兴的，因为可以买新专辑了 <img src='http://blog.feihoo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 。</p>
<p>她只是中间休息了两年（她81年出生，我想休息一下学学东西也是好的），但是2001年复出后没有很特别的成果，加上个人低调等原因，有关她的消息不是特别多。可能这些年努力也不容易，她之前给人民的主要印象还是年少时的作品，如今好些年了，要转变也不是一个容易的事情。祝她顺利。</p>
<p>顺便去看了看<a href="http://blog.sina.com.cn/timizhuo">她的博客</a>，觉得很平易近人，有一种很亲切的感觉。</p>
<p>另外，她现在签约优格音乐文化有限公司，暂时不知道该公司的更多资料。她还开通了<a href="http://www.timitimi.com/">官方网站</a>。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/01/%e5%8d%81%e5%a4%9a%e5%b9%b4%e5%90%8e%e5%86%8d%e8%a7%81%e5%88%b0%e5%8d%93%e4%be%9d%e5%a9%b7.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>请资助小怡帆</title>
		<link>http://blog.feihoo.com/2010/01/help-yifan.html</link>
		<comments>http://blog.feihoo.com/2010/01/help-yifan.html#comments</comments>
		<pubDate>Wed, 06 Jan 2010 07:46:30 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@生活]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=480</guid>
		<description><![CDATA[Update(2010-3-18): 小怡凡在各界爱心人士的帮助下终于踏上了去往美国医疗的路程。详情在拯救小怡凡主页上。 还要担心手术会怎样，真心祈愿她早日康复！
从小怡凡的主页上了解到：第一，如果要孩子一定要让自己身体健康、强壮；第二，如果孩子有不好，要提早治疗，找几家医院或许能相互参考。
 2010年1月19日亚历山大医生带回来怡帆的血样检测及影像分析结果，排除了由DNA变异导致的先天性肺疾病， 确切的病症是&#8221;肺细胞代谢缺陷&#8221;，肺间质形成脂肪蛋白阻碍氧气进入血液交换，这正是肺部影像一直呈现毛玻璃状的真正原因， 由此导致左心室向肺部加速血液输送，形成“肺动脉高压”。北京市儿童医院2006年对怡帆实施过两次“肺灌洗”， 灌洗液培养结果未见蛋白成分，后归结于“肺纤维化”。几年来，未能及时对症治疗和控制肺间质的脂肪蛋白生长， 错过了治疗及手术修复的最佳时机，目前必须通过全肺移植来救治。
由于我的工作性质以及之前努力工作却忽视了身体，我有些担心我家小宝贝，祈祷他/她在妈妈肚子里健康孕育、成长！
===============================================================================
下面是一个患病需要高昂费用去救助的孩子，他的爸爸妈妈只有一年多点的时间来筹集500,000$，人民币是350万。病情越来越严重了，时间快到了，可是却还不一定能够攒足这笔费用。我老婆看了小孩的照片和故事，心疼不已。我看着也心疼。只可惜我却失业半年了，经济状况也不好，只能提供一点捐款。在这里贴下小怡帆的照片，希望过往的人们看到，伸出援助之手。在为小怡帆祈祷的同时，也祈愿天下的小孩子都健康活泼。 

很感谢您能抽时间了解怡帆的事情，怡帆是我四岁的女儿，患有肺动脉高压，需要二十四小时吸氧来维持呼吸， 北京儿童医院诊断为肺纤维化，国内无法医治。在和睦家医院亚历山大医生的全力帮助下， 怡帆有机会去美国德州儿童医院接受心肺移植手术，费用十分昂贵，作为孩子的父母， 我们没有足够的时间来积累这笔费用，为此，和睦家基金会帮助我们建立了怡帆基金，寻求社会的帮助， 请您抽出少量的时间浏览www.yifanfund.com和 www.help-yifan.org， 同时将这个网站告诉您周围的朋友，并恳请提供一些帮助来挽救这个孩子。谢谢！
上面的话来自怡帆的父亲，我们的朋友潘俊廷。
详细请去救助小怡帆的主页。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><strong>Update(2010-3-18):</strong> 小怡凡在各界爱心人士的帮助下终于踏上了去往美国医疗的路程。详情在<a href="http://www.help-yifan.org/situation.html">拯救小怡凡主页</a>上。 还要担心手术会怎样，真心祈愿她早日康复！</p>
<p>从小怡凡的主页上了解到：第一，如果要孩子一定要让自己身体健康、强壮；第二，如果孩子有不好，要提早治疗，找几家医院或许能相互参考。</p>
<blockquote><p> 2010年1月19日亚历山大医生带回来怡帆的血样检测及影像分析结果，排除了由DNA变异导致的先天性肺疾病， 确切的病症是&#8221;肺细胞代谢缺陷&#8221;，肺间质形成脂肪蛋白阻碍氧气进入血液交换，这正是肺部影像一直呈现毛玻璃状的真正原因， 由此导致左心室向肺部加速血液输送，形成“肺动脉高压”。北京市儿童医院2006年对怡帆实施过两次“肺灌洗”， 灌洗液培养结果未见蛋白成分，后归结于“肺纤维化”。几年来，未能及时对症治疗和控制肺间质的脂肪蛋白生长， 错过了治疗及手术修复的最佳时机，目前必须通过全肺移植来救治。</p></blockquote>
<p>由于我的工作性质以及之前努力工作却忽视了身体，我有些担心我家小宝贝，祈祷他/她在妈妈肚子里健康孕育、成长！<br />
===============================================================================</p>
<p>下面是一个患病需要高昂费用去救助的孩子，他的爸爸妈妈只有一年多点的时间来筹集500,000$，人民币是350万。病情越来越严重了，时间快到了，可是却还不一定能够攒足这笔费用。我老婆看了小孩的照片和故事，心疼不已。我看着也心疼。只可惜我却失业半年了，经济状况也不好，只能提供一点捐款。在这里贴下小怡帆的照片，希望过往的人们看到，伸出援助之手。在为小怡帆祈祷的同时，也祈愿天下的小孩子都健康活泼。 </p>
<p><img src="http://blog.feihoo.com/wp-content/uploads/2010/01/a.jpg" alt="a" title="a" width="389" height="389" class="aligncenter size-full wp-image-518" /></p>
<blockquote><p>很感谢您能抽时间了解怡帆的事情，怡帆是我四岁的女儿，患有肺动脉高压，需要二十四小时吸氧来维持呼吸， 北京儿童医院诊断为肺纤维化，国内无法医治。在和睦家医院亚历山大医生的全力帮助下， 怡帆有机会去美国德州儿童医院接受心肺移植手术，费用十分昂贵，作为孩子的父母， 我们没有足够的时间来积累这笔费用，为此，和睦家基金会帮助我们建立了怡帆基金，寻求社会的帮助， 请您抽出少量的时间浏览<a href="http://www.yifanfund.com">www.yifanfund.com</a>和 <a href="http://www.help-yifan.org">www.help-yifan.org</a>， 同时将这个网站告诉您周围的朋友，并恳请提供一些帮助来挽救这个孩子。谢谢！</p>
<p>上面的话来自怡帆的父亲，我们的朋友潘俊廷。</p></blockquote>
<p>详细请去救助小怡帆的<a href="http://www.help-yifan.org">主页</a>。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2010/01/help-yifan.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Vimrc File</title>
		<link>http://blog.feihoo.com/2009/12/my-vimrc-file.html</link>
		<comments>http://blog.feihoo.com/2009/12/my-vimrc-file.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:48:37 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[Tools & Tips]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=433</guid>
		<description><![CDATA[Apply the recommend vimrc file:

cp /usr/share/vim/vimcurrent/vimrc_example.vim  /usr/share/vim/vimrc

~/.vimrc: Keep it simple!

&#34; 设置文件编码检测类型及支持格式
 set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
&#160;
 &#34;显示行号
 set nu!
&#160;
 &#34; 中文帮助
 if version &#62; 603
 set helplang=cn
 endi
&#160;
 &#34; 设置代码自动缩进
 :set cindent
&#160;
 &#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;
 &#34; cscope setting (from http://easwy.com/blog/archives/advanced-vim-skills-cscope/)
 &#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;
 if has(&#34;cscope&#34;)
   set csprg=/usr/bin/cscope
   set csto=1
   set cst
   set nocsverb
 [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Apply the recommend vimrc file:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">cp /usr/share/vim/vimcurrent/vimrc_example.vim  /usr/share/vim/vimrc</pre></div></div>

<p>~/.vimrc: Keep it simple!</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">&quot; 设置文件编码检测类型及支持格式
 set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
&nbsp;
 &quot;显示行号
 set nu!
&nbsp;
 &quot; 中文帮助
 if version &gt; 603
 set helplang=cn
 endi
&nbsp;
 &quot; 设置代码自动缩进
 :set cindent
&nbsp;
 &quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;
 &quot; cscope setting (from http://easwy.com/blog/archives/advanced-vim-skills-cscope/)
 &quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;
 if has(&quot;cscope&quot;)
   set csprg=/usr/bin/cscope
   set csto=1
   set cst
   set nocsverb
   &quot; add any database in current directory
   if filereadable(&quot;cscope.out&quot;)
       cs add cscope.out
   endif
   set csverb
 endif
&nbsp;
 nmap &lt;C-@&gt;s :cs find s &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;g :cs find g &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;c :cs find c &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;t :cs find t &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;e :cs find e &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;f :cs find f &lt;C-R&gt;=expand(&quot;&lt;cfile&gt;&quot;)&lt;CR&gt;&lt;CR&gt;
 nmap &lt;C-@&gt;i :cs find i ^&lt;C-R&gt;=expand(&quot;&lt;cfile&gt;&quot;)&lt;CR&gt;$&lt;CR&gt;
 nmap &lt;C-@&gt;d :cs find d &lt;C-R&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;CR&gt;&lt;CR&gt;</pre></div></div>



<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/12/my-vimrc-file.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arguments on Java &amp; C++</title>
		<link>http://blog.feihoo.com/2009/12/arguments-on-java-c.html</link>
		<comments>http://blog.feihoo.com/2009/12/arguments-on-java-c.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 10:11:14 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[c/c++]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=423</guid>
		<description><![CDATA[The Hypertable Team claimed they choose C++ to be Hypertable implement language for performance issues. They gave two points about that, Hypertable is memory (malloc) intensive and and CPU intensive. They also say:
(Hadoop)There are some places where Java is sub-optimal. In particular, at scale, there will be considerable memory pressure in the Namenode of the [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/09/reliability-availability-and-scalability.html' rel='bookmark' title='Permanent Link: Reliability, Availability, and Scalability'>Reliability, Availability, and Scalability</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.hypertable.org">Hypertable</a> Team <a href="http://code.google.com/p/hypertable/wiki/WhyWeChoseCppOverJava">claimed they choose C++ to be Hypertable implement language</a> for performance issues. They gave two points about that, Hypertable is memory (malloc) intensive and and CPU intensive. They also say:</p>
<blockquote><p>(<em>Hadoop</em>)There are some places where Java is sub-optimal. In particular, at scale, there will be considerable memory pressure in the Namenode of the DFS. Java is a poor choice for this type of memory hungry application. Another place where the use of Java is sub-optimal is the post-map sorting in preparation for the reduce phase. This is CPU-intensive and involves the type of CPU work that Java is not good at.</p></blockquote>
<p>There are a bunch comments on the Wiki Page. Someone gave another views. A guy gave two links to support Java is not so bad.</p>
<blockquote><p>Some interesting comparative articles.<br />
<a href=" http://www.ddj.com/cpp/184401976?pgno=1"><br />
http://www.ddj.com/cpp/184401976?pgno=1</a><br />
<a href=" http://www.ddj.com/cpp/184401976?pgno=1">http://www.idiom.com/~zilla/Computer/javaCbenchmark.html </a></p></blockquote>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/09/reliability-availability-and-scalability.html' rel='bookmark' title='Permanent Link: Reliability, Availability, and Scalability'>Reliability, Availability, and Scalability</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/12/arguments-on-java-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Ubuntu Installation log</title>
		<link>http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html</link>
		<comments>http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html#comments</comments>
		<pubDate>Fri, 18 Dec 2009 08:11:44 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[Tools & Tips]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=406</guid>
		<description><![CDATA[业余使用Ubuntu好些年了，装了删删了装的，为了以后方便，把这次的新版本的安装配置过程都记录下来。
第一步，从官方下载 Ubuntu-desktop。
第二步，在VMWare上安装，并安装VMWare-tools。 在ubuntu-desktop-9.10上，不像以前需要手工安装一些包，安装linux头文件，这次一路回车就搞定了。
到这里系统就算安装完毕，发现已经用去了8G硬盘的 37%。


 (update 2009-12-28): 事后发现根本没有装好，再次尝试安装，基本上各个模块编译时都会出现error日志，并报告模块没有成功编译。而原来在 ubuntu 8.10下是工作正常的。 为什么升级到 ubuntu 9.10就出错了呢？一开始在网络上搜索，看过 VMware workstation fails after 9.0.4 upgrade to 9.10， 根据该帖建议去打补丁， 但是都没有解决。
后来，去Vmware官方找了下是否有更新，结果发现 VMware Workstationfor Windows 出了新的6.5.3版本， 在 Release Notes 中发现 Ubuntu 9.04 is fully supported. 猜测也许是需要新版本。 尝试下载新版本安装后，重新安装和配置 vmware-tools， 一切顺利！

第三步，安装我需要的各种软件。
0. 设置source.list，我使用 mirrors.163.com.
   设置网卡：

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.126
netmask 255.255.255.0
gateway 192.168.1.1

#auto [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/11/%e9%98%bf%e9%87%8c%e5%b7%b4%e5%b7%b4%e6%94%b6%e8%b4%ad%e4%b8%87%e7%bd%91%e4%b8%8evmware%e6%94%b6%e8%b4%adspringsource-%e5%b8%83%e5%b1%80%e4%ba%91%e8%ae%a1%e7%ae%97.html' rel='bookmark' title='Permanent Link: 阿里巴巴收购万网与Vmware收购SpringSource: 布局云计算'>阿里巴巴收购万网与Vmware收购SpringSource: 布局云计算</a></li><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>业余使用Ubuntu好些年了，装了删删了装的，为了以后方便，把这次的新版本的安装配置过程都记录下来。</p>
<p>第一步，从官方下载 Ubuntu-desktop。</p>
<p>第二步，在VMWare上安装，并安装VMWare-tools。 在ubuntu-desktop-9.10上，不像以前需要手工安装一些包，安装linux头文件，这次一路回车就搞定了。</p>
<p>到这里系统就算安装完毕，发现已经用去了8G硬盘的 37%。</p>
<div style="padding-left:10px">
<p>
<strong> (update 2009-12-28):</strong> 事后发现根本没有装好，再次尝试安装，基本上各个模块编译时都会出现error日志，并报告模块没有成功编译。而原来在 ubuntu 8.10下是工作正常的。 为什么升级到 ubuntu 9.10就出错了呢？一开始在网络上搜索，看过 <a href="http://newyork.ubuntuforums.org/showthread.php?p=8289474">VMware workstation fails after 9.0.4 upgrade to 9.10</a>， 根据该帖建议去打<a href="http://communities.vmware.com/thread/208219?start=0&amp;tstart=0">补丁</a>， 但是都没有解决。</p>
<p>后来，去Vmware官方找了下是否有更新，结果发现 VMware Workstationfor Windows 出了新的<a href="http://downloads.vmware.com/d/details/workstation_6_5_3_for_windows/dHdiZHdodGJAJXQ=">6.5.3版本</a>， 在 <a href="http://www.vmware.com/support/ws65/doc/releasenotes_ws653.html">Release Notes</a> 中发现 Ubuntu 9.04 is fully supported. 猜测也许是需要新版本。 尝试下载新版本安装后，重新安装和配置 vmware-tools， 一切顺利！</p>
</div>
<p>第三步，安装我需要的各种软件。</p>
<p>0. 设置source.list，我使用 mirrors.163.com.<br />
   设置网卡：</p>
<pre>
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.126
netmask 255.255.255.0
gateway 192.168.1.1

#auto eth0
#iface eth0 inet dhcp
</pre>
<p>1. 安装 vim/ctags/cscope, 设置颜色，缩进等。 The details are noted at <a href="http://blog.feihoo.com/archives/433" class="broken_link" >Here</a>.</p>
<ul>
<li>install: sudo apt-get install vim</li>
<li>Install Chinese vim help: download from http://vimcdoc.sourceforge.net/, tar and enter the directory, execute
<li>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">sudo ./vimcdoc.sh -i</pre></div></div>

<li>sudo apt-get install exuberant-ctags cscope</li>
</ul>
<p>2. 安装 JDK/C++工具: </p>
<pre>
sudo apt-get install sun-java6-jdk sun-java6-source
sudo apt-get install build-essential
</pre>
<p>3. 安装manuals:</p>
<div style="padding-left:20px;padding-top:5px;">
开发用的手册页：</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">sudo apt-get install manpages-dev</pre></div></div>

<p>安装 Posix 相关的手册页。pthread 库相关的手册页就在这里面，而不在 Dev manual pages 中。</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">sudo apt-get install manpages-posix manpages-posix-dev</pre></div></div>

</div>
<p>4. 安装版本工具 Subversion 和 Git:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">sudo apt-get install subversion subversion-tools git-doc git-core</pre></div></div>

<p>5. Configure SSH server:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">sudo apt-get install openssh-server</pre></div></div>

<p>.<br />
6. Install LAMP server by tasksel, and configure;<br />
7. 中文支持。我安装系统时用的是英文，因此 LANG=&#8217;en_US.UTF-8&#8242;。中文输入遵循下面三步骤即可：</p>
<div style="padding-left:20px;padding-top:5px;">
<ol>
<li>Install Simple Chinese Language support.</li>
<li>install: sudo apt-get install scim scim-pinyin</li>
<li>System->Administration->Language Support->Input Method, select scim. </li>
<ol>Reboot system, 此时就可以使用智能拼音了。</ol>
</ol>
<p>Resource: <a href="https://wiki.ubuntu.com/InputMethods/SCIM/Setup">SCIM Setup</a>, <a href="https://help.ubuntu.com/community/SCIM">SCIM Usage</a></p>
<p>中文问题的解决没有这么简单，还存在下面的问题：</p>
<ul>
<li>gedit不能打开中文文件： 这个文件主要是gedit猜测编码的机制造成的，略加修改就可以。具体参考<a href="http://www.byvoid.com/blog/gedit-encoding/">这里</a>。</li>
<li>vim不能打开中文文件：<a href="http://blog.feihoo.com/archives/433" class="broken_link" >Here</a> </li>
<li>pdf不能阅读某些中文文件： 问题的症状是能够阅读某些中文pdf，但是还有一些pdf则表现为乱码。问题的原因不太清楚，但是Google后安装了一个新包 <a href="http://poppler.freedesktop.org/">poppler-data</a>，就解决了。(sudo apt-get install poppler-data)</li>
</ul>
</div>
<p>8. 安装 CHM 格式文档查看工具 kchmviewer.</p>
<pre>sudo apt-get install kchmviewer</pre>
<p> 但是 kchmviewer 在查看 boost中文文档页时出现了编码错误。当然这不一定就是kchmviewer有问题，也可能是boost中文文档本身的兼容性等。于是另外安装了chmsee， chmsee的另外一个优点就是安装时体积很小，下载过程中才下了几百K。当然也可能是因为我提前把其他需要的库都已经装上了&#8230;<br />
9. ruby gems: </p>
<pre>sudo apt-get install rubygems1.9.1</pre>
<p>10. 声音问题的解决：<a href="http://hi.baidu.com/tony_chen2009/blog/item/3281fe51677d53858d54304e.html">这里</a> </p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/11/%e9%98%bf%e9%87%8c%e5%b7%b4%e5%b7%b4%e6%94%b6%e8%b4%ad%e4%b8%87%e7%bd%91%e4%b8%8evmware%e6%94%b6%e8%b4%adspringsource-%e5%b8%83%e5%b1%80%e4%ba%91%e8%ae%a1%e7%ae%97.html' rel='bookmark' title='Permanent Link: 阿里巴巴收购万网与Vmware收购SpringSource: 布局云计算'>阿里巴巴收购万网与Vmware收购SpringSource: 布局云计算</a></li><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>设计与开发的五条原则</title>
		<link>http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html</link>
		<comments>http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 15:23:55 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Architecture & design]]></category>
		<category><![CDATA[$软件工程与管理]]></category>
		<category><![CDATA[effcient]]></category>
		<category><![CDATA[systemdesign]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=388</guid>
		<description><![CDATA[从2004年初（大学二年级第二学期）加入学校就业信息网站，靠写代码获得第一笔收入，迄今已经将近六年。
第一条原则，首先弄清你的问题是什么。这一条规则无论怎么强调都不过分。
在《Programming Pearls》第二版的开篇，Jon Bentley 讲的就是，首先弄清你的问题是什么！ 在你没有详细、明确地定义好你的问题之前，你所做的大部分工作只产出废物。这些年，最头疼的事情，就是经常搞了一大堆东西，累死累活，甚至加班加点，最后总才发现很多事情偏离了目标。但这样的事情，总是在周围一遍一遍地发生。
一个工程师，如果在接到一个问题时首先不是尽可能挖到细致的资料，定义问题，并向了解问题的人去反馈，详细讨论问题的定义。虽然问题定义不是那么容易，但不首先定义好问题，那就是不合格的工程师。
还有很多原则，大抵都是这个原则的派生品。
第二条规则， 弄清你要干什么，以及哪些先干，哪些后干，哪些根本就不需要干。
说白了，就是把问题分解，列个表，排个先后顺序。这是大部分程序员最蹩脚的部分。高效的本质不是捧着ThoughtWorks那本《卓有成效的程序员》，而是我这条原则。我对Joel的书里印象最深刻的就是有关用Excel列任务列表的部分。
这条仍然是如此重要，以致于著名的YAGNI, (You ain&#8217;t gonna need it ）仅仅是一条推论而已。
当然，区分的标准是什么？It depends. 但是最重要的参照是，怎么做你能获得最大产出？也许你会在所谓的扩展性、适应需求变化与可工作的代码，用户的需求之间抉择。 最重要的还是可工作的代码，能够按时 ship the beta! 
记住，先列出来要干什么；然后分清先后顺序，然后淘汰那些可以不干的。
第三条规则，KISS。 Keep It Simple Stupid。
用郭靖和杨过来比喻，代码要像郭靖一样用最简单直接的方式强壮地工作，不需要太多的波折。你的程序要是像杨过的人生那么复杂、聪明，早死翘翘了。 你的程序要简单强壮地干活，思想越简单越好，功能和特性越少越好。
这一条对于设计是至关重要的，浮躁的程序员们经常要在架构设计中引入模式、分层，又或者是绚丽的Ajax效果之类，完全是无知下的自虐。我也是好些年后才明白这条道理，直到后来开始使用Unix下的那些让无数人着迷的工具，才真真地看到了这条规则的巨大威力。
要特别澄清一下，KISS 与你的程序是否好用，是否易于复用，不但不矛盾，而且是相辅相成的。你要知道的只是你的程序应该做什么，然后努力做好。借用《Programming Pearls》开篇里法国作家兼飞机设计师的话：“设计者确定其设计已经达到了完美的标准不是不能再增加任何东西,而是不能再减少任何东西”。又如Chuck Yeager将军（第一个超音速飞行的人）赞扬一架飞机的机械系统时的用词是“结构简单、部件很少、易于维护、非常坚固”。
第四条规则，一键集成和适当的自动化测试。
这条不多说了，在有条件的情况下做会受益非浅。
其他还有一些很有名的原则，例如 DRY （Don&#8217;t Repeat Yourself)， 也许是因为一开始我就懂得了这个道理（尤记得大学的时候把ASP代码提取函数，封装Head和Foot，将写HTML Table的封装成方法来根据不同的数据集打印，好傻。），感触没那么深。 
六年了，好快。
(Update 2009-12-23)
第五条： 一定需要且只需要数页简单明了的设计说明书。
这个设计说明最好不用word，最好是放在源代码下的html或者txt格式。简单粗线条的UML最适宜用在这种地方。当然设计文档也可以放在别的地方。
P.S.
用原则这个词，是为了强调重要性。遣词或有问题，慎自斟酌之。


Related posts:提高工作效率的方法


Related posts:<ol><li><a href='http://blog.feihoo.com/2010/04/work-effcient-thoughts.html' rel='bookmark' title='Permanent Link: 提高工作效率的方法'>提高工作效率的方法</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>从2004年初（大学二年级第二学期）加入学校就业信息网站，靠写代码获得第一笔收入，迄今已经将近六年。</p>
<p><strong>第一条原则，首先弄清你的问题是什么。这一条规则无论怎么强调都不过分。</strong></p>
<p>在<a href="http://www.china-pub.com/209243">《Programming Pearls》</a>第二版的开篇，<a href="http://en.wikipedia.org/wiki/Jon_Bentley">Jon Bentley</a> 讲的就是，首先弄清你的问题是什么！ 在你没有详细、明确地定义好你的问题之前，你所做的大部分工作只产出废物。这些年，最头疼的事情，就是经常搞了一大堆东西，累死累活，甚至加班加点，最后总才发现很多事情偏离了目标。但这样的事情，总是在周围一遍一遍地发生。</p>
<p>一个工程师，如果在接到一个问题时首先不是尽可能挖到细致的资料，定义问题，并向了解问题的人去反馈，详细讨论问题的定义。虽然问题定义不是那么容易，但不首先定义好问题，那就是不合格的工程师。</p>
<p>还有很多原则，大抵都是这个原则的派生品。</p>
<p><strong>第二条规则， 弄清你要干什么，以及哪些先干，哪些后干，哪些根本就不需要干。</strong></p>
<p>说白了，就是把问题分解，列个表，排个先后顺序。这是大部分程序员最蹩脚的部分。高效的本质不是捧着ThoughtWorks那本《卓有成效的程序员》，而是我这条原则。我对Joel的书里印象最深刻的就是有关用Excel列任务列表的部分。</p>
<p>这条仍然是如此重要，以致于著名的YAGNI, (<a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">You ain&#8217;t gonna need it</a> ）仅仅是一条推论而已。</p>
<p>当然，区分的标准是什么？It depends. 但是最重要的参照是，怎么做你能获得最大产出？也许你会在所谓的扩展性、适应需求变化与可工作的代码，用户的需求之间抉择。 最重要的还是可工作的代码，能够按时 ship the beta! </p>
<p>记住，先列出来要干什么；然后分清先后顺序，然后淘汰那些可以不干的。</p>
<p><strong>第三条规则，KISS。 Keep It Simple Stupid。</strong><br />
用郭靖和杨过来比喻，代码要像郭靖一样用最简单直接的方式强壮地工作，不需要太多的波折。你的程序要是像杨过的人生那么复杂、聪明，早死翘翘了。 你的程序要简单强壮地干活，思想越简单越好，功能和特性越少越好。</p>
<p>这一条对于设计是至关重要的，浮躁的程序员们经常要在架构设计中引入模式、分层，又或者是绚丽的Ajax效果之类，完全是无知下的自虐。我也是好些年后才明白这条道理，直到后来开始使用Unix下的那些让无数人着迷的工具，才真真地看到了这条规则的巨大威力。</p>
<p>要特别澄清一下，KISS 与你的程序是否好用，是否易于复用，不但不矛盾，而且是相辅相成的。你要知道的只是你的程序应该做什么，然后努力做好。借用《Programming Pearls》开篇里法国作家兼飞机设计师的话：“设计者确定其设计已经达到了完美的标准不是不能再增加任何东西,而是不能再减少任何东西”。又如Chuck Yeager将军（第一个超音速飞行的人）赞扬一架飞机的机械系统时的用词是“结构简单、部件很少、易于维护、非常坚固”。</p>
<p><strong>第四条规则，一键集成和适当的自动化测试。</strong></p>
<p>这条不多说了，在有条件的情况下做会受益非浅。</p>
<p>其他还有一些很有名的原则，例如 DRY （<a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">Don&#8217;t Repeat Yourself</a>)， 也许是因为一开始我就懂得了这个道理（尤记得大学的时候把ASP代码提取函数，封装Head和Foot，将写HTML Table的封装成方法来根据不同的数据集打印，好傻。），感触没那么深。 </p>
<p>六年了，好快。</p>
<p><strong>(Update 2009-12-23)</strong><br />
<strong>第五条： 一定需要且只需要数页简单明了的设计说明书。</strong></p>
<p>这个设计说明最好不用word，最好是放在源代码下的html或者txt格式。简单粗线条的UML最适宜用在这种地方。当然设计文档也可以放在别的地方。</p>
<p>P.S.<br />
用原则这个词，是为了强调重要性。遣词或有问题，慎自斟酌之。</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2010/04/work-effcient-thoughts.html' rel='bookmark' title='Permanent Link: 提高工作效率的方法'>提高工作效率的方法</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygwin下使用公钥登录SSH</title>
		<link>http://blog.feihoo.com/2009/12/cygwin-ssh-keys.html</link>
		<comments>http://blog.feihoo.com/2009/12/cygwin-ssh-keys.html#comments</comments>
		<pubDate>Wed, 02 Dec 2009 07:02:12 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=351</guid>
		<description><![CDATA[为了直接使用公钥登录SSH，而不使用密码登录Cygwin，费了老大劲，很长时间以来一直没有成功。此前，一直是按照网络上流传的方法，主要是生成key，然后设置到 authorized_keys中。遵照官方的命令，修改sshd_config, ssh_config, 但是一直没有奏效(不过遵照这些方法，在Ubuntu等系统上配置成功)。
昨天偶然在这个页面上看到 ssh-user-config 命令，试了试，就成功了！各位设置不成功的同学，考虑使用下这个命令，然后一路回车确认即可。
另一篇重要的参考文章：这里。
顺便记录下在探索 SSH使用公钥登录过程中学到的几个sshd相关的命令：

# debug more information 
ssh  -vvv  localhost
&#160;
#start services
net start sshd
#or
cygrunsrv  --start  sshd
&#160;
#login command for user name that has space
ssh  Mickey\  mouse@127.0.0.1
&#160;
#copy publickey to remote host
king@king:~$ cat .ssh/id_dsa.pub &#124; ssh master &#34;cat - &#62;&#62; ~/.ssh/authorized_keys&#34;
#copy publickey from remote host
king@king:~$  ssh master &#34;cat .ssh/id_dsa.pub&#34; [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html' rel='bookmark' title='Permanent Link: Maybe Another Choice for QQ?'>Maybe Another Choice for QQ?</a></li><li><a href='http://blog.feihoo.com/2009/03/linux-command-shell-tips-1.html' rel='bookmark' title='Permanent Link: Linux Command &#038; Shell Tips (1)'>Linux Command &#038; Shell Tips (1)</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>为了直接使用公钥登录SSH，而不使用密码登录Cygwin，费了老大劲，很长时间以来一直没有成功。此前，一直是按照网络上流传的方法，主要是生成key，然后设置到 authorized_keys中。遵照官方的命令，修改sshd_config, ssh_config, 但是一直没有奏效(不过遵照这些方法，在Ubuntu等系统上配置成功)。</p>
<p>昨天偶然在<a href="http://chinese-watercolor.com/LRP/printsrv/cygwin-sshd.html">这个页面</a>上看到 ssh-user-config 命令，试了试，就成功了！各位设置不成功的同学，考虑使用下这个命令，然后一路回车确认即可。</p>
<p>另一篇重要的参考文章：<a href="http://ist.uwaterloo.ca/~kscully/CygwinSSHD_W2K3.html">这里</a>。</p>
<p>顺便记录下在探索 SSH使用公钥登录过程中学到的几个sshd相关的命令：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># debug more information </span>
<span style="color: #c20cb9; font-weight: bold;">ssh</span>  <span style="color: #660033;">-vvv</span>  localhost
&nbsp;
<span style="color: #666666; font-style: italic;">#start services</span>
net start sshd
<span style="color: #666666; font-style: italic;">#or</span>
cygrunsrv  <span style="color: #660033;">--start</span>  sshd
&nbsp;
<span style="color: #666666; font-style: italic;">#login command for user name that has space</span>
<span style="color: #c20cb9; font-weight: bold;">ssh</span>  Mickey\  mouse<span style="color: #000000; font-weight: bold;">@</span>127.0.0.1
&nbsp;
<span style="color: #666666; font-style: italic;">#copy publickey to remote host</span>
king<span style="color: #000000; font-weight: bold;">@</span>king:~$ <span style="color: #c20cb9; font-weight: bold;">cat</span> .ssh<span style="color: #000000; font-weight: bold;">/</span>id_dsa.pub <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> master <span style="color: #ff0000;">&quot;cat - &gt;&gt; ~/.ssh/authorized_keys&quot;</span>
<span style="color: #666666; font-style: italic;">#copy publickey from remote host</span>
king<span style="color: #000000; font-weight: bold;">@</span>king:~$  <span style="color: #c20cb9; font-weight: bold;">ssh</span> master <span style="color: #ff0000;">&quot;cat .ssh/id_dsa.pub&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cat</span> - <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>authorized_keys<span style="color: #ff0000;">&quot;</span></pre></div></div>

<p>在某些情况下，必须使用代理登录SSH服务器。<a href="http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html">connect.c</a> is the simple relaying command to make network connection via SOCKS and https proxy. It is mainly intended to be used as proxy command of OpenSSH. You can make SSH session beyond the firewall with this command. </p>
<p>在Windows下，只需要下载<a href=" http://www.taiyo.co.jp/~gotoh/ssh/connect.exe">connect.exe</a>到c:/windows，然后在  ~/.ssh/config中添加如下配置：</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">ProxyCommand connect -S x.x.x.x:x %h %p</pre></div></div>

<p>connect.c 还支持 https 代理，真不赖。</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html' rel='bookmark' title='Permanent Link: Maybe Another Choice for QQ?'>Maybe Another Choice for QQ?</a></li><li><a href='http://blog.feihoo.com/2009/03/linux-command-shell-tips-1.html' rel='bookmark' title='Permanent Link: Linux Command &#038; Shell Tips (1)'>Linux Command &#038; Shell Tips (1)</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/12/cygwin-ssh-keys.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>益智思考题以及分析</title>
		<link>http://blog.feihoo.com/2009/11/puzzs.html</link>
		<comments>http://blog.feihoo.com/2009/11/puzzs.html#comments</comments>
		<pubDate>Sun, 22 Nov 2009 15:10:24 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[puzzle]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=266</guid>
		<description><![CDATA[问题虽然很朴素，但是却能够起到活跃脑筋的作用，有些问题的分析还能够有有利于我们对数学知识（例如概率）的运用，所以把这些益智题都列出来如下。
1. 有一家人父亲、母亲和儿子、女儿，当父亲和女儿独处或者母亲和儿子独处时，父亲（母亲）就会骂女儿（儿子）。现在他们要过一条河，河上有一条船，船一次只能容纳两人,并只能由大人驾船。问他们应该怎么过河才能保证女儿和儿子都不会被骂。
完全是推理分析能力，采用试错法。答案有两种，其中一种是母亲先送女儿过河，然后目前回来接父亲过河，然后父亲回去接儿子过河。
2. 我三个筐子，一个装苹果，一个装橙子，一个装苹果和橙子。你看不到筐子里的东东，而标签都贴错了，你只能任选一个筐子，拿一个水果出来，然后把标签都改正过来，怎么拿?
根据条件要一次确定最多的结果，肯定应该去挑选标签为苹果和橙子的框，选出的水果就决定了这个框的真实标签，然后决定了另外一个标签称是该水果的框里的是混合物，剩余一个自然清楚了。
3. 屋子里有三盏灯，屋外有三个开关，屋外看不到屋里。你在屋外可以任意设置三个开关，然后进屋一次，就要说出哪个开关控制哪盏灯。
? 题目似乎不太清楚。
4. 12个小球，其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。
答案是3次。这是一个涉及到概率的问题，需要用概率的方法来选择。详细请参考 刘未鹏的博客 。
对于类似于此种问题， 有其特殊的规律。

第一，是天平有三种输出的可能，所以应该让最终的结果均分称三等分。分得越严格，最有利于最终结果。
第二，分组时，还应该要保证天平输出三种结果的几率是均等的。

这种方式通过构造最佳决策树来解决问题。在刘未鹏的文章中，还提到有人用信息论的方式来讨论此问题。



No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>问题虽然很朴素，但是却能够起到活跃脑筋的作用，有些问题的分析还能够有有利于我们对数学知识（例如概率）的运用，所以把这些益智题都列出来如下。</p>
<p>1. 有一家人父亲、母亲和儿子、女儿，当父亲和女儿独处或者母亲和儿子独处时，父亲（母亲）就会骂女儿（儿子）。现在他们要过一条河，河上有一条船，船一次只能容纳两人,并只能由大人驾船。问他们应该怎么过河才能保证女儿和儿子都不会被骂。</p>
<blockquote><p>完全是推理分析能力，采用试错法。答案有两种，其中一种是母亲先送女儿过河，然后目前回来接父亲过河，然后父亲回去接儿子过河。</p></blockquote>
<p>2. 我三个筐子，一个装苹果，一个装橙子，一个装苹果和橙子。你看不到筐子里的东东，而标签都贴错了，你只能任选一个筐子，拿一个水果出来，然后把标签都改正过来，怎么拿?</p>
<blockquote><p>根据条件要一次确定最多的结果，肯定应该去挑选标签为苹果和橙子的框，选出的水果就决定了这个框的真实标签，然后决定了另外一个标签称是该水果的框里的是混合物，剩余一个自然清楚了。</p></blockquote>
<p>3. 屋子里有三盏灯，屋外有三个开关，屋外看不到屋里。你在屋外可以任意设置三个开关，然后进屋一次，就要说出哪个开关控制哪盏灯。</p>
<blockquote><p>? 题目似乎不太清楚。</p></blockquote>
<p>4. 12个小球，其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。</p>
<blockquote><p>答案是3次。这是一个涉及到概率的问题，需要用概率的方法来选择。详细请参考 <a href="http://blog.csdn.net/pongba/archive/2008/06/13/2544933.aspx">刘未鹏的博客</a> 。<br />
对于类似于此种问题， 有其特殊的规律。</p>
<ul>
<li>第一，是天平有三种输出的可能，所以应该让最终的结果均分称三等分。分得越严格，最有利于最终结果。</li>
<li>第二，分组时，还应该要保证天平输出三种结果的几率是均等的。</li>
</ul>
<p>这种方式通过构造最佳决策树来解决问题。在刘未鹏的文章中，还提到有人用信息论的方式来讨论此问题。
</p></blockquote>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/puzzs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《Did you know?》 3.0 Edition</title>
		<link>http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html</link>
		<comments>http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html#comments</comments>
		<pubDate>Fri, 13 Nov 2009 03:22:15 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$IT Thoughts]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=163</guid>
		<description><![CDATA[Update(2009/12/12): 世界变化是如此之快，对于IT行业来说尤其如此。我们看到了在1995年编程代名词的Windows桌面开发的没落，90年代末辉煌无限的VC和Delphi的死亡 ，曾经的王者C++的没落，Java从兴起到辉煌世界到走向衰落就在这十年间。产业兴衰在这个新兴的行业里有着人类历史上从未有过的剧烈和快速&#8230;..
现在，云计算不可阻挡地兴起，大部分计算要向Linux和云端迁移，不能跟上变化的程序员在若干年后就会像现在的Delphi程序员&#8212;-他们中的大部分都要被迫离开&#8230;&#8230;
不需要去追赶潮流，只需要学习那些几十年来了都没有变的东西，因为这些东西变化的速度慢一些罢了




Related posts:下半年经济走势与股市走向Compete, Go!


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html' rel='bookmark' title='Permanent Link: 下半年经济走势与股市走向'>下半年经济走势与股市走向</a></li><li><a href='http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html' rel='bookmark' title='Permanent Link: Compete, Go!'>Compete, Go!</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><b>Update(2009/12/12):</b> 世界变化是如此之快，对于IT行业来说尤其如此。我们看到了在1995年编程代名词的Windows桌面开发的没落，90年代末辉煌无限的VC和Delphi的死亡 ，曾经的王者C++的没落，Java从兴起到辉煌世界到走向衰落就在这十年间。产业兴衰在这个新兴的行业里有着人类历史上从未有过的剧烈和快速&#8230;..</p>
<p>现在，云计算不可阻挡地兴起，大部分计算要向Linux和云端迁移，不能跟上变化的程序员在若干年后就会像现在的Delphi程序员&#8212;-他们中的大部分都要被迫离开&#8230;&#8230;</p>
<p>不需要去追赶潮流，只需要学习那些几十年来了都没有变的东西，因为这些东西变化的速度慢一些罢了</p>
<hr/>
<p><embed src="http://player.youku.com/player.php/sid/XMTExMjg0NzQw/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html' rel='bookmark' title='Permanent Link: 下半年经济走势与股市走向'>下半年经济走势与股市走向</a></li><li><a href='http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html' rel='bookmark' title='Permanent Link: Compete, Go!'>Compete, Go!</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>沟通 &#124; 产业 &#124; 设计</title>
		<link>http://blog.feihoo.com/2009/11/%e6%b2%9f%e9%80%9a.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e6%b2%9f%e9%80%9a.html#comments</comments>
		<pubDate>Wed, 11 Nov 2009 15:39:20 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Architecture & design]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[systemdesign]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=145</guid>
		<description><![CDATA[作为一名工科生，从没有十分直接地感受到一些相隔很远的概念的价值。
边码代码边听着《致我们终将逝去的青春》广播剧，优美的音乐，不一样的爱情故事。忽然没来由地觉得沟通是一个如此重要的事情，而相关的产业也如此地受到人们关注。
沟通，是人成长的催化剂。不只是学校里的教诲，书本里的知识，还有朋友之间的交流，陌生人之间的言语。没有沟通变没有人的成长。
沟通，无处不在的沟通。无比重要的沟通。为什么沟通需要特别的监管？只能是因为沟通的力量是如此重大。
因为人是社会的动物。社会性是沟通如此重要的根本。
沟通对于产业的影响力，不仅仅在传媒产业里显而易见。我所从事的行业，互联网正是因为沟通而产生，沟通正是其立身之本。Google, Baidu, Facebook, Twitter, Renren, Kaixin001 等这些公司，无疑不是靠沟通吃饭的。 Google/Baidu是在帮助人们传递信息，减少沟通成本；如果说这还有点间接的话，Facebook, Twitter, Renren, Kaixin001 等都是直接地在拉近人们之间的距离。
系统，其很重要的用途是帮助人们沟通，业务设计的根本，其中之一就是沟通。
设计文档、代码可读易懂，正是设计工作中最重要的一个部分，因为是为了沟通。
工程管理中最重要的工作，自然也有沟通。各种各样的沟通，与客户沟通，与程序员沟通，与分析师沟通，与老板沟通，与客户的老板沟通； 与前任沟通，为后任留下可以沟通的介质； 读懂系统，读懂业务，正是沟通。
云计算似乎回归到一种与沟通无关的计算机产业。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>作为一名工科生，从没有十分直接地感受到一些相隔很远的概念的价值。</p>
<p>边码代码边听着<a href="http://www.xici.net/b1123568/d89907318.htm" class="broken_link" >《致我们终将逝去的青春》广播剧</a>，优美的音乐，不一样的爱情故事。忽然没来由地觉得沟通是一个如此重要的事情，而相关的产业也如此地受到人们关注。</p>
<p>沟通，是人成长的催化剂。不只是学校里的教诲，书本里的知识，还有朋友之间的交流，陌生人之间的言语。没有沟通变没有人的成长。</p>
<p>沟通，无处不在的沟通。无比重要的沟通。为什么沟通需要特别的监管？只能是因为沟通的力量是如此重大。</p>
<p>因为人是社会的动物。社会性是沟通如此重要的根本。</p>
<p>沟通对于产业的影响力，不仅仅在传媒产业里显而易见。我所从事的行业，互联网正是因为沟通而产生，沟通正是其立身之本。Google, Baidu, Facebook, Twitter, Renren, Kaixin001 等这些公司，无疑不是靠沟通吃饭的。 Google/Baidu是在帮助人们传递信息，减少沟通成本；如果说这还有点间接的话，Facebook, Twitter, Renren, Kaixin001 等都是直接地在拉近人们之间的距离。</p>
<p>系统，其很重要的用途是帮助人们沟通，业务设计的根本，其中之一就是沟通。<br />
设计文档、代码可读易懂，正是设计工作中最重要的一个部分，因为是为了沟通。<br />
工程管理中最重要的工作，自然也有沟通。各种各样的沟通，与客户沟通，与程序员沟通，与分析师沟通，与老板沟通，与客户的老板沟通； 与前任沟通，为后任留下可以沟通的介质； 读懂系统，读懂业务，正是沟通。</p>
<p>云计算似乎回归到一种与沟通无关的计算机产业。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e6%b2%9f%e9%80%9a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compete, Go!</title>
		<link>http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html#comments</comments>
		<pubDate>Wed, 11 Nov 2009 10:32:43 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=131</guid>
		<description><![CDATA[突发奇想，人分三种。
第一种人是消极的，生活就为他们选择比赛，直到他们放弃了或者偶尔胜利，于是生活给他们一个换一场比赛，换一个更低级的比赛。
第二种人是积极的，他们努力不服输地对着靶子射击，直到击中目标。有的时候他们不断地赢得比赛，有时候他们耗费甚大地打一场没有意思的比赛，有时候他们不得不从零开始做打一场全新的但同样没什么意思的比赛。
第二种人如果知道自己去选比赛，自己设定靶子，就会提高得更快，生活更有意思，成为第三种人。
你是哪一种人？
赶快选定自己的比赛，设定目标，努力去比赛吧！
Update(2009-12-23): Paul Krugman says on his blog 24/7 at the Ig Nobels:
Greedy people, competing, make the world go round.


Related posts:下半年经济走势与股市走向《Did you know?》 3.0 Edition


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html' rel='bookmark' title='Permanent Link: 下半年经济走势与股市走向'>下半年经济走势与股市走向</a></li><li><a href='http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html' rel='bookmark' title='Permanent Link: 《Did you know?》 3.0 Edition'>《Did you know?》 3.0 Edition</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>突发奇想，人分三种。</p>
<p>第一种人是消极的，生活就为他们选择比赛，直到他们放弃了或者偶尔胜利，于是生活给他们一个换一场比赛，换一个更低级的比赛。</p>
<p>第二种人是积极的，他们努力不服输地对着靶子射击，直到击中目标。有的时候他们不断地赢得比赛，有时候他们耗费甚大地打一场没有意思的比赛，有时候他们不得不从零开始做打一场全新的但同样没什么意思的比赛。</p>
<p>第二种人如果知道自己去选比赛，自己设定靶子，就会提高得更快，生活更有意思，成为第三种人。</p>
<p>你是哪一种人？</p>
<p>赶快选定自己的比赛，设定目标，努力去比赛吧！</p>
<p><strong>Update(2009-12-23):</strong> <a href="http://krugman.blogs.nytimes.com">Paul Krugman</a> says on his blog <a href="http://krugman.blogs.nytimes.com/2009/10/02/247-at-the-ig-nobels/">24/7 at the Ig Nobels</a>:</p>
<blockquote><p>Greedy people, competing, make the world go round.</p></blockquote>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html' rel='bookmark' title='Permanent Link: 下半年经济走势与股市走向'>下半年经济走势与股市走向</a></li><li><a href='http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html' rel='bookmark' title='Permanent Link: 《Did you know?》 3.0 Edition'>《Did you know?》 3.0 Edition</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>钗头凤</title>
		<link>http://blog.feihoo.com/2009/11/%e9%92%97%e5%a4%b4%e5%87%a4.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e9%92%97%e5%a4%b4%e5%87%a4.html#comments</comments>
		<pubDate>Sat, 07 Nov 2009 06:22:17 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[古诗]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=105</guid>
		<description><![CDATA[南宋词人陆游(1125-1209)，在1144年娶了表妹唐琬。次年，唐琬被逐出家门。依古人的说法乃因「不当母夫人意」「二亲恐其惰於学，数谴妇，放翁不敢逆尊者意，与妇诀」。（但依陆游晚年诗作（《剑南诗稿》卷十四），是因唐琬不孕，而遭公婆逐出。） 后陆游另娶，唐婉改嫁皇族赵士程。
十年后一春日绍兴城外沈园中，陆游来此赏春，偶遇唐婉与赵士程也来此春游。 虽遇然不得诉怀，唐婉派人送来一些酒菜，以示默默关怀，然后与夫离去。陆游伤心之余，在园墙上题下《钗头凤》：


红酥手，黄藤酒，满城春色宫墙柳。
东风恶，欢情薄，一怀愁绪，几年离索。
错！错！错！
春如旧，人空瘦，泪痕红邑鲛绡透。
桃花落，闲池阁。山盟虽在，锦书难托。
莫！莫！莫！ 

唐婉后以另一首《钗头凤》作答：


世情薄，人情恶，雨送黄昏花易落。
晓风干，泪痕残，欲笺心事，独语斜阑。
难！难！难！
人成各，今非昨，病魂常似秋千索。
角声寒，夜阑珊。怕人寻问，咽泪装欢。
瞒！瞒！瞒！ 

而后不久，唐婉忧郁而辞世。史载：「未几，怏怏而卒」。
陆游去世前一年，再来沈园，又题下：
「沈家园里花如锦，半是当年识放翁；也信美人终作土，不堪幽梦太匆匆」
好一个「也信美人终作土，不堪幽梦太匆匆」，其中何等苦辛！
参考：

百度知道：谁能够提供陆游及唐婉的，《钗头凤》这两首词？
沈园
钗头凤 陆游与唐婉



No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>南宋词人陆游(1125-1209)，在1144年娶了表妹唐琬。次年，唐琬被逐出家门。依古人的说法乃因「不当母夫人意」「二亲恐其惰於学，数谴妇，放翁不敢逆尊者意，与妇诀」。（但依陆游晚年诗作（《剑南诗稿》卷十四），是因唐琬不孕，而遭公婆逐出。） 后陆游另娶，唐婉改嫁皇族赵士程。</p>
<p>十年后一春日绍兴城外沈园中，陆游来此赏春，偶遇唐婉与赵士程也来此春游。 虽遇然不得诉怀，唐婉派人送来一些酒菜，以示默默关怀，然后与夫离去。陆游伤心之余，在园墙上题下《钗头凤》：</p>
<ul style="padding-left:20px">
<ol>
红酥手，黄藤酒，满城春色宫墙柳。<br />
东风恶，欢情薄，一怀愁绪，几年离索。<br />
错！错！错！<br />
春如旧，人空瘦，泪痕红邑鲛绡透。<br />
桃花落，闲池阁。山盟虽在，锦书难托。<br />
莫！莫！莫！ </ol>
</ul>
<p>唐婉后以另一首《钗头凤》作答：</p>
<ul style="padding-left:20px">
<ol>
世情薄，人情恶，雨送黄昏花易落。<br />
晓风干，泪痕残，欲笺心事，独语斜阑。<br />
难！难！难！<br />
人成各，今非昨，病魂常似秋千索。<br />
角声寒，夜阑珊。怕人寻问，咽泪装欢。<br />
瞒！瞒！瞒！ </ol>
</ul>
<p>而后不久，唐婉忧郁而辞世。史载：「未几，怏怏而卒」。</p>
<p>陆游去世前一年，再来沈园，又题下：<br />
「沈家园里花如锦，半是当年识放翁；也信美人终作土，不堪幽梦太匆匆」</p>
<p>好一个「也信美人终作土，不堪幽梦太匆匆」，其中何等苦辛！</p>
<p>参考：</p>
<ul style="padding-left:20px">
<a href="http://zhidao.baidu.com/question/24861604.html">百度知道：谁能够提供陆游及唐婉的，《钗头凤》这两首词？</a><br />
<a href="http://baike.baidu.com/view/23627.htm">沈园</a><br />
<a href="http://www.jsdj.com/luyou/lyzy/zjshaoxing5.htm">钗头凤 陆游与唐婉</a>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e9%92%97%e5%a4%b4%e5%87%a4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>孔雀东南飞，五里一徘徊</title>
		<link>http://blog.feihoo.com/2009/11/%e5%ad%94%e9%9b%80%e4%b8%9c%e5%8d%97%e9%a3%9e%ef%bc%8c%e4%ba%94%e9%87%8c%e4%b8%80%e5%be%98%e5%be%8a.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e5%ad%94%e9%9b%80%e4%b8%9c%e5%8d%97%e9%a3%9e%ef%bc%8c%e4%ba%94%e9%87%8c%e4%b8%80%e5%be%98%e5%be%8a.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 15:01:42 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>
		<category><![CDATA[love]]></category>
		<category><![CDATA[古诗]]></category>
		<category><![CDATA[古文]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=79</guid>
		<description><![CDATA[今夜观央视《孔雀东南飞》，恰逢“鸡鸣入机织，夜夜不得息。三日断五匹，大人故嫌迟”，思及二人即将“黄泉下相见”，心有戚戚焉。复寻此文，诵之而哽咽不得语。付全诗如下，另有百度百科中节选精妙评述，引述如后。又精彩剧评：随看随写，孔雀东南飞，只为你徘徊。
序曰：汉末建安中，庐江府小吏焦仲卿妻刘氏，为仲卿母所遣，自誓不嫁。其家逼之，乃投水而死。仲卿闻之，亦自缢于庭树。时人伤之，为诗云尔。
孔雀东南飞，五里一徘徊。
　　“十三能织素，十四学裁衣。十五弹箜篌，十六诵诗书。十七为君妇，心中常苦悲。君既为府吏，守节情不移。贱妾留空房，相见常日稀。鸡鸣入机织，夜夜不得息。三日断五匹，大人故嫌迟。非为织作迟，君家妇难为！妾不堪驱使，徒留无所施。便可白公姥，及时相遣归。”
　　府吏得闻之，堂上启阿母：“儿已薄禄相，幸复得此妇。结发同枕席，黄泉共为友。共事二三年，始尔未为久。女行无偏斜，何意致不厚。”
　　阿母谓府吏：“何乃太区区！此妇无礼节，举动自专由。吾意久怀忿，汝岂得自由！东家有贤女，自名秦罗敷。可怜体无比，阿母为汝求。便可速遣之，遣去慎莫留！”
　　府吏长跪告：“伏惟启阿母。今若遣此妇，终老不复取！”
　　阿母得闻之，槌床便大怒：“小子无所畏，何敢助妇语！吾已失恩义，会不相从许！”
　　府吏默无声，再拜还入户。举言谓新妇，哽咽不能语：“我自不驱卿，逼迫有阿母。卿但暂还家，吾今且报府。不久当归还，还必相迎取。以此下心意，慎勿违吾语。”
　　新妇谓府吏：“勿复重纷纭。往昔初阳岁，谢家来贵门。奉事循公姥，进止敢自专？昼夜勤作息，伶俜萦苦辛。谓言无罪过，供养卒大恩；仍更被驱遣，何言复来还！妾有绣腰襦，葳蕤自生光；红罗复斗帐，四角垂香囊；箱帘六七十，绿碧青丝绳，物物各自异，种种在其中。人贱物亦鄙，不足迎后人，留待作遗施，于今无会因。时时为安慰，久久莫相忘！”
　　鸡鸣外欲曙，新妇起严妆。著我绣夹裙，事事四五通。足下蹑丝履，头上玳瑁光。腰若流纨素，耳著明月珰。指如削葱根，口如含朱丹。纤纤作细步，精妙世无双。
　　上堂拜阿母，阿母怒不止。“昔作女儿时，生小出野里。本自无教训，兼愧贵家子。受母钱帛多，不堪母驱使。今日还家去，念母劳家里。”却与小姑别，泪落连珠子。“新妇初来时，小姑始扶床；今日被驱遣，小姑如我长。勤心养公姥，好自相扶将。初七及下九，嬉戏莫相忘。”出门登车去，涕落百余行。
　　府吏马在前，新妇车在后。隐隐何甸甸，俱会大道口。下马入车中，低头共耳语：“誓不相隔卿，且暂还家去。吾今且赴府，不久当还归。誓天不相负！”
　　新妇谓府吏：“感君区区怀！君既若见录，不久望君来。君当作磐石，妾当作蒲苇。蒲苇纫如丝，磐石无转移。我有亲父兄，性行暴如雷，恐不任我意，逆以煎我怀。”举手长劳劳，二情同依依 。
　　入门上家堂，进退无颜仪。阿母大拊掌，不图子自归：“十三教汝织，十四能裁衣，十五弹箜篌，十六知礼仪，十七遣汝嫁，谓言无誓违。汝今何罪过，不迎而自归？”兰芝惭阿母：“儿实无罪过。”阿母大悲摧。
　　还家十余日，县令遣媒来。云有第三郎，窈窕世无双。年始十八九，便言多令才。
　　阿母谓阿女：“汝可去应之。”
　　阿女含泪答：“兰芝初还时，府吏见丁宁，结誓不别离。今日违情义，恐此事非奇。自可断来信，徐徐更谓之。”
　　阿母白媒人：“贫贱有此女，始适还家门。不堪吏人妇，岂合令郎君？幸可广问讯，不得便相许。”
　　媒人去数日，寻遣丞请还，说有兰家女，承籍有宦官。云有第五郎，娇逸未有婚。遣丞为媒人，主簿通语言。直说太守家，有此令郎君，既欲结大义，故遣来贵门。
　　阿母谢媒人：“女子先有誓，老姥岂敢言！”
　　阿兄得闻之，怅然心中烦。举言谓阿妹：“作计何不量！先嫁得府吏，后嫁得郎君。否泰如天地，足以荣汝身。不嫁义郎体，其往欲何云？”
　　兰芝仰头答：“理实如兄言。谢家事夫婿，中道还兄门。处分适兄意，那得自任专！虽与府吏要，渠会永无缘。登即相许和，便可作婚姻。”
　　媒人下床去。诺诺复尔尔。还部白府君：“下官奉使命，言谈大有缘。”府君得闻之，心中大欢喜。视历复开书，便利此月内，六合正相应。良吉三十日，今已二十七，卿可去成婚。交语速装束，络绎如浮云。青雀白鹄舫，四角龙子幡。婀娜随风转，金车玉作轮。踯躅青骢马，流苏金镂鞍。赍钱三百万，皆用青丝穿。杂彩三百匹，交广市鲑珍。从人四五百，郁郁登郡门。
　　阿母谓阿女：“适得府君书，明日来迎汝。何不作衣裳？莫令事不举！”
　　阿女默无声，手巾掩口啼，泪落便如泻。移我琉璃榻，出置前窗下。左手持刀尺，右手执绫罗。朝成绣夹裙，晚成单罗衫。晻晻日欲暝，愁思出门啼。
　　府吏闻此变，因求假暂归。未至二三里，摧藏马悲哀。新妇识马声，蹑履相逢迎。怅然遥相望，知是故人来。举手拍马鞍，嗟叹使心伤：“自君别我后，人事不可量。果不如先愿，又非君所详。我有亲父母，逼迫兼弟兄。以我应他人，君还何所望！”
　　府吏谓新妇：“贺卿得高迁！磐石方且厚，可以卒千年；蒲苇一时纫，便作旦夕间。卿当日胜贵，吾独向黄泉！”
　　新妇谓府吏：“何意出此言！同是被逼迫，君尔妾亦然。黄泉下相见，勿违今日言！”执手分道去，各各还家门。生人作死别，恨恨那可论？念与世间辞，千万不复全！
　　府吏还家去，上堂拜阿母：“今日大风寒，寒风摧树木，严霜结庭兰。儿今日冥冥，令母在后单。故作不良计，勿复怨鬼神！命如南山石，四体康且直！”
　　阿母得闻之，零泪应声落：“汝是大家子，仕宦于台阁。慎勿为妇死，贵贱情何薄！东家有贤女，窈窕艳城郭，阿母为汝求，便复在旦夕。”
　　府吏再拜还，长叹空房中，作计乃尔立。转头向户里，渐见愁煎迫。
　　其日牛马嘶，新妇入青庐。奄奄黄昏后，寂寂人定初。我命绝今日，魂去尸长留！揽裙脱丝履，举身赴清池。
　　府吏闻此事，心知长别离。徘徊庭树下，自挂东南枝。
　　两家求合葬，合葬华山傍。东西植松柏，左右种梧桐。枝枝相覆盖，叶叶相交通。中有双飞鸟，自名为鸳鸯。仰头相向鸣，夜夜达五更。行人驻足听，寡妇起彷徨。多谢后世人，戒之慎勿忘。


下面为来自百度百科上的部分精妙评述，引录如下。更多精妙请参考：百度百科》孔雀东南飞
     全诗“共一千七百八十五字，古今第一首长诗也。淋淋漓漓，反反复复，杂述十数人口中语，而各肖其声音面目，岂非化工之笔”（《古诗源》卷四，沈德潜按语）。在贯穿全篇的对话中，可以看到，刘兰芝对仲卿、对焦母、对小姑、对自己的哥哥和母亲讲话时的态度与语气各不相同，正是在这种不同中可以感受到她那勤劳、善良、备受压迫而又富于反抗精神的外柔内刚的个性。同样的，在焦仲卿各种不同场合的话语中，也可以感受到他那忠于爱情、明辨是非但又迫于母亲威逼的诚正而软弱、但又有发展的性格。
     诗中写到兰芝与仲卿死前，兰芝假意同意再嫁，仲卿见兰芝后回家与母亲诀别，他俩这时的话语，非常切合各自的身份与处境。陈祚明《采菽堂古诗选》曾作过这样细致的分析：“兰芝不白母而府吏白母者，女之于母，子之于母，情固不同。女从夫者也，又恐母防之，且母有兄在，可死也。子之与妻，孰与母重？且子死母何依，能无白乎？同死者，情也。彼此不负，女以死偿，安得不以死？彼此时，母即悔而迎女，犹可两俱无死也。然度母终不肯迎女，死终不可以已，故白母之言亦有异者，儿今冥冥四语明言之矣，今日风寒命如山石，又不甚了了，亦恐母觉而防我也。府吏白母而母不防者，女之去久矣。他日不死而今日何为独死？不过谓此怨怼之言，未必实耳。故漫以东家女答之，且用相慰。然府吏白母，不言女将改适，不言女亦欲死，盖度母之性，必不肯改而迎女，而徒露真情，则防我不得死故也。”试想，兰芝如果直说要死，这个弱女子势必会遭到暴力的约束，被强迫成婚。而仲卿的情况自然与兰芝不同，诚如上述引文的分析。又如：“吾意久怀忿，汝岂得自由”、“小子无所畏，何敢助妇语”，于此可立见焦母的蛮横：“作计何不量！先嫁得府吏，后嫁得郎君。否泰如天地，足以荣汝身。不嫁义郎体，其往欲何云？”由此可见刘兄的势利。
     即使次要人物如媒人、府君的简短对话，也各各符合其人的身份、特点。
     诗中，简洁的人物行动刻划，有助于形象的鲜明；精炼的抒情性穿插，增强了行文的情韵。“鸡鸣外欲曙，新妇起严妆。著我绣夹裙，事事四五通”，写出了刘兰芝离开焦家时的矛盾心情。欲曙即起，表示她不愿在焦家生活的决心，严妆辞婆是她对焦母的抗议与示威。打扮时的事事四五通，表示了她对焦仲卿的爱，欲去又不忍遽去的微妙心理。“却与小姑别，泪落连珠子”，姑嫂关系不易相处，兰芝与小姑关系融洽，正表现了她的懂礼仪、易相处。这同焦母的不容恰成对照。另外，辞焦母不落泪，而辞小姑落泪，也可见兰芝的倔强。
     焦仲卿的形象刻划也是如此，他送兰芝到大道口，“下马入车中，低头共耳语”，表现了一片真情。闻知兰芝要成婚，“未至二三里，摧藏马悲哀”，诗篇用马悲渲染衬托他内心的强烈痛苦。临死前“长叹空房中”、“转头向户里”，对母亲还有所顾念，这里愈见他的诚正与善良。
     在整篇诗中，类似上述的动作刻划还有一些，笔墨虽不多，却极精粹。兰芝死时，一无反顾，“揽裙脱丝履，举身赴清池”；仲卿死时，顾念老母，“徘徊庭树下，自挂东南枝”，这些不同的动作细节，都切合各自的性格与处境。同样是母亲，焦母“捶床便大怒”的泼辣，刘母见兰芝回家时惊异而“大拊掌”的温和，对性格的描绘来说寥寥几笔已极传神。抒情性穿插较之动作刻划更少，但也是成功之笔“举手长劳劳，二情同依依”，兰芝和仲卿第一次分手时，作者情不自禁的感叹，增添了悲剧气氛。“生人作死别，恨恨那可论”，这画龙点睛的穿插，更激起了人们对焦、刘遭遇的同情。即使那教训式的全诗结尾，也带有浓重的抒情意味，充满了作者的同情与期望。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>今夜观央视《孔雀东南飞》，恰逢“鸡鸣入机织，夜夜不得息。三日断五匹，大人故嫌迟”，思及二人即将“黄泉下相见”，心有戚戚焉。复寻此文，诵之而哽咽不得语。付全诗如下，另有百度百科中节选精妙评述，引述如后。又精彩剧评：<a href="http://hi.baidu.com/%B9%C2%D3%B0%BE%AA%BA%E8/blog/item/09fcf603dde920e608fa93f9.html">随看随写，孔雀东南飞，只为你徘徊</a>。</p>
<p style="text-align: left; padding-left:20px"><em>序曰：汉末建安中，庐江府小吏焦仲卿妻刘氏，为仲卿母所遣，自誓不嫁。其家逼之，乃投水而死。仲卿闻之，亦自缢于庭树。时人伤之，为诗云尔。</em><br />
孔雀东南飞，五里一徘徊。<br />
　　“十三能织素，十四学裁衣。十五弹箜篌，十六诵诗书。十七为君妇，心中常苦悲。君既为府吏，守节情不移。贱妾留空房，相见常日稀。鸡鸣入机织，夜夜不得息。三日断五匹，大人故嫌迟。非为织作迟，君家妇难为！妾不堪驱使，徒留无所施。便可白公姥，及时相遣归。”<br />
　　府吏得闻之，堂上启阿母：“儿已薄禄相，幸复得此妇。结发同枕席，黄泉共为友。共事二三年，始尔未为久。女行无偏斜，何意致不厚。”<br />
　　阿母谓府吏：“何乃太区区！此妇无礼节，举动自专由。吾意久怀忿，汝岂得自由！东家有贤女，自名秦罗敷。可怜体无比，阿母为汝求。便可速遣之，遣去慎莫留！”<br />
　　府吏长跪告：“伏惟启阿母。今若遣此妇，终老不复取！”<br />
　　阿母得闻之，槌床便大怒：“小子无所畏，何敢助妇语！吾已失恩义，会不相从许！”<br />
　　府吏默无声，再拜还入户。举言谓新妇，哽咽不能语：“我自不驱卿，逼迫有阿母。卿但暂还家，吾今且报府。不久当归还，还必相迎取。以此下心意，慎勿违吾语。”<br />
　　新妇谓府吏：“勿复重纷纭。往昔初阳岁，谢家来贵门。奉事循公姥，进止敢自专？昼夜勤作息，伶俜萦苦辛。谓言无罪过，供养卒大恩；仍更被驱遣，何言复来还！妾有绣腰襦，葳蕤自生光；红罗复斗帐，四角垂香囊；箱帘六七十，绿碧青丝绳，物物各自异，种种在其中。人贱物亦鄙，不足迎后人，留待作遗施，于今无会因。时时为安慰，久久莫相忘！”<br />
　　鸡鸣外欲曙，新妇起严妆。著我绣夹裙，事事四五通。足下蹑丝履，头上玳瑁光。腰若流纨素，耳著明月珰。指如削葱根，口如含朱丹。纤纤作细步，精妙世无双。<br />
　　上堂拜阿母，阿母怒不止。“昔作女儿时，生小出野里。本自无教训，兼愧贵家子。受母钱帛多，不堪母驱使。今日还家去，念母劳家里。”却与小姑别，泪落连珠子。“新妇初来时，小姑始扶床；今日被驱遣，小姑如我长。勤心养公姥，好自相扶将。初七及下九，嬉戏莫相忘。”出门登车去，涕落百余行。<br />
　　府吏马在前，新妇车在后。隐隐何甸甸，俱会大道口。下马入车中，低头共耳语：“誓不相隔卿，且暂还家去。吾今且赴府，不久当还归。誓天不相负！”<br />
　　新妇谓府吏：“感君区区怀！君既若见录，不久望君来。君当作磐石，妾当作蒲苇。蒲苇纫如丝，磐石无转移。我有亲父兄，性行暴如雷，恐不任我意，逆以煎我怀。”举手长劳劳，二情同依依 。<br />
　　入门上家堂，进退无颜仪。阿母大拊掌，不图子自归：“十三教汝织，十四能裁衣，十五弹箜篌，十六知礼仪，十七遣汝嫁，谓言无誓违。汝今何罪过，不迎而自归？”兰芝惭阿母：“儿实无罪过。”阿母大悲摧。<br />
　　还家十余日，县令遣媒来。云有第三郎，窈窕世无双。年始十八九，便言多令才。<br />
　　阿母谓阿女：“汝可去应之。”<br />
　　阿女含泪答：“兰芝初还时，府吏见丁宁，结誓不别离。今日违情义，恐此事非奇。自可断来信，徐徐更谓之。”<br />
　　阿母白媒人：“贫贱有此女，始适还家门。不堪吏人妇，岂合令郎君？幸可广问讯，不得便相许。”<br />
　　媒人去数日，寻遣丞请还，说有兰家女，承籍有宦官。云有第五郎，娇逸未有婚。遣丞为媒人，主簿通语言。直说太守家，有此令郎君，既欲结大义，故遣来贵门。<br />
　　阿母谢媒人：“女子先有誓，老姥岂敢言！”<br />
　　阿兄得闻之，怅然心中烦。举言谓阿妹：“作计何不量！先嫁得府吏，后嫁得郎君。否泰如天地，足以荣汝身。不嫁义郎体，其往欲何云？”<br />
　　兰芝仰头答：“理实如兄言。谢家事夫婿，中道还兄门。处分适兄意，那得自任专！虽与府吏要，渠会永无缘。登即相许和，便可作婚姻。”<br />
　　媒人下床去。诺诺复尔尔。还部白府君：“下官奉使命，言谈大有缘。”府君得闻之，心中大欢喜。视历复开书，便利此月内，六合正相应。良吉三十日，今已二十七，卿可去成婚。交语速装束，络绎如浮云。青雀白鹄舫，四角龙子幡。婀娜随风转，金车玉作轮。踯躅青骢马，流苏金镂鞍。赍钱三百万，皆用青丝穿。杂彩三百匹，交广市鲑珍。从人四五百，郁郁登郡门。<br />
　　阿母谓阿女：“适得府君书，明日来迎汝。何不作衣裳？莫令事不举！”<br />
　　阿女默无声，手巾掩口啼，泪落便如泻。移我琉璃榻，出置前窗下。左手持刀尺，右手执绫罗。朝成绣夹裙，晚成单罗衫。晻晻日欲暝，愁思出门啼。<br />
　　府吏闻此变，因求假暂归。未至二三里，摧藏马悲哀。新妇识马声，蹑履相逢迎。怅然遥相望，知是故人来。举手拍马鞍，嗟叹使心伤：“自君别我后，人事不可量。果不如先愿，又非君所详。我有亲父母，逼迫兼弟兄。以我应他人，君还何所望！”<br />
　　府吏谓新妇：“贺卿得高迁！磐石方且厚，可以卒千年；蒲苇一时纫，便作旦夕间。卿当日胜贵，吾独向黄泉！”<br />
　　新妇谓府吏：“何意出此言！同是被逼迫，君尔妾亦然。黄泉下相见，勿违今日言！”执手分道去，各各还家门。生人作死别，恨恨那可论？念与世间辞，千万不复全！<br />
　　府吏还家去，上堂拜阿母：“今日大风寒，寒风摧树木，严霜结庭兰。儿今日冥冥，令母在后单。故作不良计，勿复怨鬼神！命如南山石，四体康且直！”<br />
　　阿母得闻之，零泪应声落：“汝是大家子，仕宦于台阁。慎勿为妇死，贵贱情何薄！东家有贤女，窈窕艳城郭，阿母为汝求，便复在旦夕。”<br />
　　府吏再拜还，长叹空房中，作计乃尔立。转头向户里，渐见愁煎迫。<br />
　　其日牛马嘶，新妇入青庐。奄奄黄昏后，寂寂人定初。我命绝今日，魂去尸长留！揽裙脱丝履，举身赴清池。<br />
　　府吏闻此事，心知长别离。徘徊庭树下，自挂东南枝。<br />
　　两家求合葬，合葬华山傍。东西植松柏，左右种梧桐。枝枝相覆盖，叶叶相交通。中有双飞鸟，自名为鸳鸯。仰头相向鸣，夜夜达五更。行人驻足听，寡妇起彷徨。多谢后世人，戒之慎勿忘。</p>
<p><br/></p>
<hr/>
<p>下面为来自百度百科上的部分精妙评述，引录如下。更多精妙请参考：<a href="http://baike.baidu.com/view/26343.htm?fr=ala0#1">百度百科》孔雀东南飞</a></p>
<p><code>     全诗“共一千七百八十五字，古今第一首长诗也。淋淋漓漓，反反复复，杂述十数人口中语，而各肖其声音面目，岂非化工之笔”（《古诗源》卷四，沈德潜按语）。在贯穿全篇的对话中，可以看到，刘兰芝对仲卿、对焦母、对小姑、对自己的哥哥和母亲讲话时的态度与语气各不相同，正是在这种不同中可以感受到她那勤劳、善良、备受压迫而又富于反抗精神的外柔内刚的个性。同样的，在焦仲卿各种不同场合的话语中，也可以感受到他那忠于爱情、明辨是非但又迫于母亲威逼的诚正而软弱、但又有发展的性格。</p>
<p>     诗中写到兰芝与仲卿死前，兰芝假意同意再嫁，仲卿见兰芝后回家与母亲诀别，他俩这时的话语，非常切合各自的身份与处境。陈祚明《采菽堂古诗选》曾作过这样细致的分析：“兰芝不白母而府吏白母者，女之于母，子之于母，情固不同。女从夫者也，又恐母防之，且母有兄在，可死也。子之与妻，孰与母重？且子死母何依，能无白乎？同死者，情也。彼此不负，女以死偿，安得不以死？彼此时，母即悔而迎女，犹可两俱无死也。然度母终不肯迎女，死终不可以已，故白母之言亦有异者，儿今冥冥四语明言之矣，今日风寒命如山石，又不甚了了，亦恐母觉而防我也。府吏白母而母不防者，女之去久矣。他日不死而今日何为独死？不过谓此怨怼之言，未必实耳。故漫以东家女答之，且用相慰。然府吏白母，不言女将改适，不言女亦欲死，盖度母之性，必不肯改而迎女，而徒露真情，则防我不得死故也。”试想，兰芝如果直说要死，这个弱女子势必会遭到暴力的约束，被强迫成婚。而仲卿的情况自然与兰芝不同，诚如上述引文的分析。又如：“吾意久怀忿，汝岂得自由”、“小子无所畏，何敢助妇语”，于此可立见焦母的蛮横：“作计何不量！先嫁得府吏，后嫁得郎君。否泰如天地，足以荣汝身。不嫁义郎体，其往欲何云？”由此可见刘兄的势利。</p>
<p>     即使次要人物如媒人、府君的简短对话，也各各符合其人的身份、特点。</p>
<p>     诗中，简洁的人物行动刻划，有助于形象的鲜明；精炼的抒情性穿插，增强了行文的情韵。“鸡鸣外欲曙，新妇起严妆。著我绣夹裙，事事四五通”，写出了刘兰芝离开焦家时的矛盾心情。欲曙即起，表示她不愿在焦家生活的决心，严妆辞婆是她对焦母的抗议与示威。打扮时的事事四五通，表示了她对焦仲卿的爱，欲去又不忍遽去的微妙心理。“却与小姑别，泪落连珠子”，姑嫂关系不易相处，兰芝与小姑关系融洽，正表现了她的懂礼仪、易相处。这同焦母的不容恰成对照。另外，辞焦母不落泪，而辞小姑落泪，也可见兰芝的倔强。</p>
<p>     焦仲卿的形象刻划也是如此，他送兰芝到大道口，“下马入车中，低头共耳语”，表现了一片真情。闻知兰芝要成婚，“未至二三里，摧藏马悲哀”，诗篇用马悲渲染衬托他内心的强烈痛苦。临死前“长叹空房中”、“转头向户里”，对母亲还有所顾念，这里愈见他的诚正与善良。</p>
<p>     在整篇诗中，类似上述的动作刻划还有一些，笔墨虽不多，却极精粹。兰芝死时，一无反顾，“揽裙脱丝履，举身赴清池”；仲卿死时，顾念老母，“徘徊庭树下，自挂东南枝”，这些不同的动作细节，都切合各自的性格与处境。同样是母亲，焦母“捶床便大怒”的泼辣，刘母见兰芝回家时惊异而“大拊掌”的温和，对性格的描绘来说寥寥几笔已极传神。抒情性穿插较之动作刻划更少，但也是成功之笔“举手长劳劳，二情同依依”，兰芝和仲卿第一次分手时，作者情不自禁的感叹，增添了悲剧气氛。“生人作死别，恨恨那可论”，这画龙点睛的穿插，更激起了人们对焦、刘遭遇的同情。即使那教训式的全诗结尾，也带有浓重的抒情意味，充满了作者的同情与期望。</code></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e5%ad%94%e9%9b%80%e4%b8%9c%e5%8d%97%e9%a3%9e%ef%bc%8c%e4%ba%94%e9%87%8c%e4%b8%80%e5%be%98%e5%be%8a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>算法解题思考过程[总结]</title>
		<link>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:39:14 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Fibonacci]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/58</guid>
		<description><![CDATA[今天又做了个斐波那契数列相关的题目：上台阶，每次可走一台阶和两台阶，问上10个台阶有多少种走法。 （出处：阅微堂. EMC笔试 ， 89种) 。 上次的农夫养牛问题也是个斐波那契问题。
对于斐波那契这一类问题，因为特征过于鲜明，可以一看题目就套上，用的联想的思维方式就解决了。不过如果是在不熟悉此类问题时，首先是根据题目估计可用演绎推理来解决，然后尝试 f(1), f(2), f(3) = f(2)+f(1) 之类的推理。 演绎/推理确实是一项十分重要的解题方法，尤其是在对问题领域不熟悉的时候。
延伸阅读：

刘未鹏：知其所以然地学习（以算法为例）



No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>今天又做了个斐波那契数列相关的题目：<span class="Apple-style-span" style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 15px; line-height: 23px">上台阶，每次可走一台阶和两台阶，问上10个台阶有多少种走法。 （出处：<a href="http://yueweitang.org/blog/posts/emc-2008-10-writing-test.html">阅微堂. EMC笔试</a> ， 89种) 。 上次的<a href="http://blog.feihoo.com/archives/53" class="broken_link" >农夫养牛问题</a>也是个斐波那契问题。</span></p>
<p>对于斐波那契这一类问题，因为特征过于鲜明，可以一看题目就套上，用的<strong>联想</strong>的思维方式就解决了。不过如果是在不熟悉此类问题时，首先是根据题目估计可用演绎推理来解决，然后尝试 f(1), f(2), f(3) = f(2)+f(1) 之类的推理。 <strong>演绎/推理</strong>确实是一项十分重要的解题方法，尤其是在对问题领域不熟悉的时候。</p>
<p>延伸阅读：</p>
<ol>
<li><a href="http://blog.csdn.net/pongba/archive/2008/07/07/2622713.aspx">刘未鹏：知其所以然地学习（以算法为例）</a></li>
</ol>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>25匹马五条赛道决出前五匹马的最少场次[未解决]</title>
		<link>http://blog.feihoo.com/2009/11/25%e5%8c%b9%e9%a9%ac%e4%ba%94%e6%9d%a1%e8%b5%9b%e9%81%93%e5%86%b3%e5%87%ba%e5%89%8d%e4%ba%94%e5%8c%b9%e9%a9%ac%e7%9a%84%e6%9c%80%e5%b0%91%e5%9c%ba%e6%ac%a1%e6%9c%aa%e8%a7%a3%e5%86%b3.html</link>
		<comments>http://blog.feihoo.com/2009/11/25%e5%8c%b9%e9%a9%ac%e4%ba%94%e6%9d%a1%e8%b5%9b%e9%81%93%e5%86%b3%e5%87%ba%e5%89%8d%e4%ba%94%e5%8c%b9%e9%a9%ac%e7%9a%84%e6%9c%80%e5%b0%91%e5%9c%ba%e6%ac%a1%e6%9c%aa%e8%a7%a3%e5%86%b3.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 09:18:38 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[algorithm]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/57</guid>
		<description><![CDATA[有关25马问题，目前有很多讨论，但是还没有看到真正解决问题的讨论。
TopLanguage 上我的发言：我的发言是8次，应该是正确的，但是还没有找出数学上的理由。
TopLanguage上一个较早的讨论：这个讨论是相对比较意义的，有人说：
其实这个就是kth smallest element的算法，MIT 的 Introduction to Algorithms 里有详细的分析。

参见：http://videolectures.net/mit6046jf05_demaine_lec06/
还有人说：
这个问题应该是磁盘排序的问题的变种吧    在不能计时的情况下   我觉得n * n 匹马 m 条跑道起码需要  
两个Blog文章：http://fayaa.com/tiku/view/91/  （有篇评论值得研究，说到是8场）
http://blog.solrex.cn/articles/25-horses-problem.html#comment-1738 （我对他的做法做了评论）


Related posts:算法解题思考过程[总结]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>有关25马问题，目前有很多讨论，但是还没有看到真正解决问题的讨论。</p>
<p><a href="http://groups.google.com/group/pongba/browse_thread/thread/7c59e6519919d240/9a97f2c56b02ef09?lnk=gst&amp;q=%E9%A9%AC#9a97f2c56b02ef09">TopLanguage 上我的发言</a>：我的发言是8次，应该是正确的，但是还没有找出数学上的理由。</p>
<p><a href="http://groups.google.com/group/pongba/browse_thread/thread/700ebb5d00e72299/84cf7bea74ff51c4?lnk=raot">TopLanguage上一个较早的讨论</a>：这个讨论是相对比较意义的，有人说：</p>
<blockquote><p><em>其实这个就是kth smallest element的算法，MIT 的 Introduction to Algorithms 里有详细的分析。<br />
</em></p></blockquote>
<blockquote><p><em>参见：<a href="http://videolectures.net/mit6046jf05_demaine_lec06/" target="_blank" rel="nofollow">http://videolectures.net/mit6046jf05_demaine_lec06/</a></em></p></blockquote>
<p>还有人说：</p>
<blockquote><p><em>这个问题应该是磁盘排序的问题的变种吧    在不能计时的情况下   我觉得n * n 匹马 m 条跑道起码需要  </em></p></blockquote>
<p>两个Blog文章：http://fayaa.com/tiku/view/91/  （有篇评论值得研究，说到是8场）</p>
<p>http://blog.solrex.cn/articles/25-horses-problem.html#comment-1738 （我对他的做法做了评论）</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/25%e5%8c%b9%e9%a9%ac%e4%ba%94%e6%9d%a1%e8%b5%9b%e9%81%93%e5%86%b3%e5%87%ba%e5%89%8d%e4%ba%94%e5%8c%b9%e9%a9%ac%e7%9a%84%e6%9c%80%e5%b0%91%e5%9c%ba%e6%ac%a1%e6%9c%aa%e8%a7%a3%e5%86%b3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>算法：无序实数列V[N]中大小相邻实数的最大差（线性空间和线性时间）</title>
		<link>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%ef%bc%9a%e6%97%a0%e5%ba%8f%e5%ae%9e%e6%95%b0%e5%88%97vn%e4%b8%ad%e5%a4%a7%e5%b0%8f%e7%9b%b8%e9%82%bb%e5%ae%9e%e6%95%b0%e7%9a%84%e6%9c%80%e5%a4%a7%e5%b7%ae%e7%ba%bf%ef%bc%88.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%ef%bc%9a%e6%97%a0%e5%ba%8f%e5%ae%9e%e6%95%b0%e5%88%97vn%e4%b8%ad%e5%a4%a7%e5%b0%8f%e7%9b%b8%e9%82%bb%e5%ae%9e%e6%95%b0%e7%9a%84%e6%9c%80%e5%a4%a7%e5%b7%ae%e7%ba%bf%ef%bc%88.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:21:51 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[buck-sort]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/56</guid>
		<description><![CDATA[题： 有无序的实数列V[N]，要求求里面大小相邻的实数的差的最大值，关键是要求线性空间和线性时间
题目来自CSDN论坛里的讨论，很多网友给出了他们的意见。
其实这个问题要求线性时间条件下，通常会让我们想到桶排序；接着关键是考虑怎么减少桶排序中对桶中各数的排序即可想到解决方法。我的算法如下：

主要是先找出最大的数与最小的数，然后构造一个n个桶，桶的下标与数的关系为： index =  (v[i]-min)/(max-min/n).
遍历数列，将数值插入到对应的桶中。每个桶最多保留最小和最大的两个元素，不需要多余的数。
遍历所有的桶，记录每个桶之间有多少个空桶到数据flags中，并求出最大连续空桶数 maxGap。
最后遍历flags数组，对于空桶数 &#62;= maxGap -1 的元素，计算从前面的最近的不为空的桶中的大元素与当前桶中的最小元素的差，最终找出最大差。

主算法：

max,min ← GetMaxAndMin &#40;v&#41;
&#160;
bucks&#91;n&#93;;
&#160;
for i = 0 to n-1
     buckNo ← get buck no:  &#40;v&#91;i&#93;-min&#41; / &#40;max-min/n&#41;  //计算桶下标（如果不为整数，取较小的数的绝对值）
     if buck&#91; buckNo &#93; is empty: insert v&#91;i&#93;
     if buck&#91;buckNo&#93;.length == 1 : [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html' rel='bookmark' title='Permanent Link: 动态规划练习（一）: 求数列中连续数字之和的最大值'>动态规划练习（一）: 求数列中连续数字之和的最大值</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>题： 有无序的实数列V[N]，要求求里面大小相邻的实数的差的最大值，关键是要求线性空间和线性时间</p>
<p>题目来自<a href="http://topic.csdn.net/u/20091024/12/989417AA-60E9-45D1-A96F-A623695FC6D7.html">CSDN论坛里的讨论</a>，很多网友给出了他们的意见。</p>
<p>其实这个问题要求线性时间条件下，通常会让我们想到桶排序；接着关键是考虑怎么减少桶排序中对桶中各数的排序即可想到解决方法。我的算法如下：</p>
<ol>
<li>主要是先找出最大的数与最小的数，然后构造一个n个桶，桶的下标与数的关系为： index =  (v[i]-min)/(max-min/n).</li>
<li>遍历数列，将数值插入到对应的桶中。每个桶最多保留最小和最大的两个元素，不需要多余的数。</li>
<li>遍历所有的桶，记录每个桶之间有多少个空桶到数据flags中，并求出最大连续空桶数 maxGap。</li>
<li>最后遍历flags数组，对于空桶数 &gt;= maxGap -1 的元素，计算从前面的最近的不为空的桶中的大元素与当前桶中的最小元素的差，最终找出最大差。</li>
</ol>
<p>主算法：</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">max<span style="color: #339933;">,</span>min ← GetMaxAndMin <span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span>
&nbsp;
bucks<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span> to n<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span>
     buckNo ← get buck no<span style="color: #339933;">:</span>  <span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">-</span>min<span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #009900;">&#40;</span>max<span style="color: #339933;">-</span>min<span style="color: #339933;">/</span>n<span style="color: #009900;">&#41;</span>  <span style="color: #666666; font-style: italic;">//计算桶下标（如果不为整数，取较小的数的绝对值）</span>
     <span style="color: #b1b100;">if</span> buck<span style="color: #009900;">&#91;</span> buckNo <span style="color: #009900;">&#93;</span> is empty<span style="color: #339933;">:</span> insert v<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>
     <span style="color: #b1b100;">if</span> buck<span style="color: #009900;">&#91;</span>buckNo<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">length</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">//insert v[i] 与原来的数构成正序关系</span>
     <span style="color: #b1b100;">if</span> buck<span style="color: #009900;">&#91;</span>buckNo<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">length</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">//与原来的2元素按正序关系排列，去掉中间的数，仍然是2个元素</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// 标记每个不为空的桶元素之前有多少个空桶</span>
flags<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//记录每个桶之前的空桶数目</span>
maxgaps <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
tempgaps <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> i ← FindFirstNotEmptyBuck <span style="color: #009900;">&#40;</span>bucks<span style="color: #009900;">&#41;</span> to n<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span>
         <span style="color: #b1b100;">if</span> buck<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> is empty then
              tempgaps <span style="color: #339933;">++</span>
         <span style="color: #b1b100;">else</span>
             flags<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> ← tempgaps<span style="color: #339933;">;</span>
             maxgaps ← GetMax <span style="color: #009900;">&#40;</span>tempgaps<span style="color: #339933;">,</span> maxgaps<span style="color: #009900;">&#41;</span>
             tempgaps <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// 计算最大的相邻的最大值</span>
maxNeighbor <span style="color: #339933;">==</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> i ← <span style="color: #0000dd;">0</span> to n<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span>
    <span style="color: #b1b100;">if</span> maxgaps <span style="color: #339933;">-</span> flag<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">2</span> then
       maxNeighbor ← GetMax<span style="color: #009900;">&#40;</span>COMPUTE_MAX<span style="color: #009900;">&#40;</span>bucks<span style="color: #339933;">,</span>i<span style="color: #339933;">,</span>flag<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> maxNeighbor<span style="color: #009900;">&#41;</span>
<span style="color: #b1b100;">return</span> maxNeighbor</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">COMPUTE_MAX<span style="color: #009900;">&#40;</span>bucks<span style="color: #339933;">,</span>i<span style="color: #339933;">,</span>gap<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span>
    <span style="color: #666666; font-style: italic;">//常数级别，取头或取尾</span>
    <span style="color: #b1b100;">return</span> GetMinEle<span style="color: #009900;">&#40;</span>bucks<span style="color: #339933;">,</span> i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> getMaxEle<span style="color: #009900;">&#40;</span>bucks<span style="color: #339933;">,</span> i <span style="color: #339933;">-</span> gap <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">&lt;</span>pre lang<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;c&quot;</span><span style="color: #339933;">&gt;</span>GetMaxAndMin <span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span>
max<span style="color: #339933;">,</span> min<span style="color: #339933;">,</span> i
n ← v.<span style="color: #202020;">length</span>
<span style="color: #b1b100;">if</span> n<span style="color: #339933;">%</span><span style="color:#800080;">2</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> then
     <span style="color: #b1b100;">if</span> V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> then
          max ← V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> min ← V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">else</span>
          max ← V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> min ← V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
     i <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
     max <span style="color: #339933;">=</span> min <span style="color: #339933;">=</span> V<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
     i <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> i to n<span style="color: #339933;">-</span><span style="color: #0000dd;">2</span>
    <span style="color: #b1b100;">if</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> then
        min ←GetMin<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">,</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        max ← GetMax<span style="color: #009900;">&#40;</span>max<span style="color: #339933;">,</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #b1b100;">else</span>
        min ←GetMin<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">,</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        max ← GetMax<span style="color: #009900;">&#40;</span>max<span style="color: #339933;">,</span> v<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
   i<span style="color: #339933;">++;</span> <span style="color: #666666; font-style: italic;">//每次取两个数</span>
&nbsp;
<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>max<span style="color: #339933;">,</span>min<span style="color: #009900;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">FindFirstNotEmptyBuck <span style="color: #009900;">&#40;</span>bucks<span style="color: #009900;">&#41;</span>
<span style="color: #b1b100;">for</span> i ← <span style="color: #0000dd;">0</span> to n<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span>
     <span style="color: #b1b100;">if</span> tempgapstart <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span> then
         <span style="color: #b1b100;">if</span> buck<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> is empty then
             <span style="color: #000000; font-weight: bold;">break</span>
         <span style="color: #b1b100;">else</span>
              <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> i<span style="color: #339933;">;</span></pre></div></div>

</pre>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html' rel='bookmark' title='Permanent Link: 动态规划练习（一）: 求数列中连续数字之和的最大值'>动态规划练习（一）: 求数列中连续数字之和的最大值</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%ef%bc%9a%e6%97%a0%e5%ba%8f%e5%ae%9e%e6%95%b0%e5%88%97vn%e4%b8%ad%e5%a4%a7%e5%b0%8f%e7%9b%b8%e9%82%bb%e5%ae%9e%e6%95%b0%e7%9a%84%e6%9c%80%e5%a4%a7%e5%b7%ae%e7%ba%bf%ef%bc%88.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>经济复苏期的操作策略</title>
		<link>http://blog.feihoo.com/2009/11/%e9%a1%ba%e5%91%a8%e6%9c%9f%e6%93%8d%e4%bd%9c%e4%b8%80%e5%8f%a5%e8%af%9d.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e9%a1%ba%e5%91%a8%e6%9c%9f%e6%93%8d%e4%bd%9c%e4%b8%80%e5%8f%a5%e8%af%9d.html#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:42:25 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/54</guid>
		<description><![CDATA[顺周期操作一句话:
初期的低价中小盘，周期类复苏类，后期的核心蓝筹主流。
初期已经过了，现在正式周期性股票和复苏类。
这句话来自：http://blog.sina.com.cn/s/blog_404cdd300100fo2t.html?tj=1
股市上升周期主要关注：

结合消息面和板块轮动做波段操作。
适当布局中长期品种。 



Related posts:人口下降，城市化与房价趋势十多年后再见到卓依婷


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%ba%ba%e5%8f%a3%e4%b8%8b%e9%99%8d%ef%bc%8c%e5%9f%8e%e5%b8%82%e5%8c%96%e4%b8%8e%e6%88%bf%e4%bb%b7%e8%b6%8b%e5%8a%bf.html' rel='bookmark' title='Permanent Link: 人口下降，城市化与房价趋势'>人口下降，城市化与房价趋势</a></li><li><a href='http://blog.feihoo.com/2010/01/%e5%8d%81%e5%a4%9a%e5%b9%b4%e5%90%8e%e5%86%8d%e8%a7%81%e5%88%b0%e5%8d%93%e4%be%9d%e5%a9%b7.html' rel='bookmark' title='Permanent Link: 十多年后再见到卓依婷'>十多年后再见到卓依婷</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>顺周期操作一句话:</p>
<blockquote><p><strong><span style="font-family: monospace;">初期的低价中小盘，周期类复苏类，后期的核心蓝筹主流。</span></strong></p></blockquote>
<p>初期已经过了，现在正式周期性股票和复苏类。</p>
<p>这句话来自：http://blog.sina.com.cn/s/blog_404cdd300100fo2t.html?tj=1</p>
<p>股市上升周期主要关注：</p>
<ol>
<li><strong>结合消息面和板块轮动做波段操作。</strong></li>
<li><strong>适当布局中长期品种。 </strong></li>
</ol>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/08/%e4%ba%ba%e5%8f%a3%e4%b8%8b%e9%99%8d%ef%bc%8c%e5%9f%8e%e5%b8%82%e5%8c%96%e4%b8%8e%e6%88%bf%e4%bb%b7%e8%b6%8b%e5%8a%bf.html' rel='bookmark' title='Permanent Link: 人口下降，城市化与房价趋势'>人口下降，城市化与房价趋势</a></li><li><a href='http://blog.feihoo.com/2010/01/%e5%8d%81%e5%a4%9a%e5%b9%b4%e5%90%8e%e5%86%8d%e8%a7%81%e5%88%b0%e5%8d%93%e4%be%9d%e5%a9%b7.html' rel='bookmark' title='Permanent Link: 十多年后再见到卓依婷'>十多年后再见到卓依婷</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e9%a1%ba%e5%91%a8%e6%9c%9f%e6%93%8d%e4%bd%9c%e4%b8%80%e5%8f%a5%e8%af%9d.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>农夫养牛问题</title>
		<link>http://blog.feihoo.com/2009/11/farmer-cow-problem.html</link>
		<comments>http://blog.feihoo.com/2009/11/farmer-cow-problem.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 11:02:08 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Fibonacci]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/53</guid>
		<description><![CDATA[算法题来自 CSDN ：http://topic.csdn.net/u/20091001/15/40BF4993-8ED7-45CC-968F-97C524DAE3C4.html
问题： 一个农夫养了一头牛，三年后，这头牛每年会生出1头牛，生出来的牛三年后，又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢？
这个问题的数学模型是类似于斐波那契（Fibonacci）数列，其计算式为：
F(n) = 1 , n&#60;3
或
F(n) = F(n-3) + F(n-1) , n &#62;=3
十年后是28头牛。实现算法时该贴提到了两种实现方式，一种是用过程的方法实现该数列，另一种是面向对象的方法实现。第二种方法确实更好一些，但是原帖实现似乎并不理想。


Related posts:算法解题思考过程[总结]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>算法题来自 CSDN ：http://topic.csdn.net/u/20091001/15/40BF4993-8ED7-45CC-968F-97C524DAE3C4.html</p>
<p>问题： 一个农夫养了一头牛，三年后，这头牛每年会生出1头牛，生出来的牛三年后，又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢？</p>
<p>这个问题的数学模型是类似于斐波那契（Fibonacci）数列，其计算式为：</p>
<p>F(n) = 1 , n&lt;3</p>
<p>或</p>
<p>F(n) = F(n-3) + F(n-1) , n &gt;=3</p>
<p>十年后是28头牛。实现算法时该贴提到了两种实现方式，一种是用过程的方法实现该数列，另一种是面向对象的方法实现。第二种方法确实更好一些，但是原帖实现似乎并不理想。</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/farmer-cow-problem.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>阿里巴巴收购万网与Vmware收购SpringSource: 布局云计算</title>
		<link>http://blog.feihoo.com/2009/11/%e9%98%bf%e9%87%8c%e5%b7%b4%e5%b7%b4%e6%94%b6%e8%b4%ad%e4%b8%87%e7%bd%91%e4%b8%8evmware%e6%94%b6%e8%b4%adspringsource-%e5%b8%83%e5%b1%80%e4%ba%91%e8%ae%a1%e7%ae%97.html</link>
		<comments>http://blog.feihoo.com/2009/11/%e9%98%bf%e9%87%8c%e5%b7%b4%e5%b7%b4%e6%94%b6%e8%b4%ad%e4%b8%87%e7%bd%91%e4%b8%8evmware%e6%94%b6%e8%b4%adspringsource-%e5%b8%83%e5%b1%80%e4%ba%91%e8%ae%a1%e7%ae%97.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 07:29:25 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$IT Thoughts]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/52</guid>
		<description><![CDATA[2009年8月，Vmware 收购了 SpringSource，详情请看这里。
2009年9月28日，阿里巴巴收购了万网。
这两则消息的背后的秘密，不言而喻，都是为了布局云计算，没有其他秘密。
SpringSource是一家从事企业应用服务基础技术服务的公司，其 Spring Framework 在全世界Java EE应用中举足轻重,其 Spring DM Server 是一款模块化Java EE应用服务器。Vmware的这笔收购，目的是为了整合SpringSource 在企业服务方面的资源，结合自己在 IAAS方面的优势，组建PAAS云计算服务平台。
万网是中国内地一家领先的互联网应用服务提供商，在主机服务、域名服务方面具有强大优势。其在互联网基础设施方面的市场和技术实力都是阿里巴巴布局云计算所急需的。 阿里巴巴在2009年9月9日刚刚宣布成立一家新的子公司——阿里巴巴云计算子公司。阿里巴巴在云计算方面的工作开始正式启航。阿里巴巴是迄今为止中国内地第一家真正进入云计算行业的公司。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>2009年8月，<a href="http://www.vmware.com">Vmware</a> 收购了 <a href="http://www.springsource.com">SpringSource</a>，详情请看<a href="http://www.theserverside.com/news/thread.tss?thread_id=55430">这里</a>。</p>
<p>2009年9月28日，<a href="http://tech.163.com/09/0928/18/5KAM6G5V000915BF.html">阿里巴巴收购了万网</a>。</p>
<p>这两则消息的背后的秘密，不言而喻，都是为了布局云计算，没有其他秘密。</p>
<p>SpringSource是一家从事企业应用服务基础技术服务的公司，其 <a href="http://www.springframework.org">Spring Framework</a> 在全世界Java EE应用中举足轻重,其 <a href="http://www.springsource.org/dmserver">Spring DM Server</a> 是一款模块化Java EE应用服务器。Vmware的这笔收购，目的是为了整合SpringSource 在企业服务方面的资源，结合自己在 IAAS方面的优势，组建PAAS云计算服务平台。</p>
<p><a href="http://www.net.cn" title="www.net.cn">万网</a>是中国内地一家领先的互联网应用服务提供商，在主机服务、域名服务方面具有强大优势。其在互联网基础设施方面的市场和技术实力都是<a href="http://www.alibaba.com/">阿里巴巴</a>布局云计算所急需的。 阿里巴巴在<a href="http://tech.qq.com/a/20090910/000278.htm">2009年9月9日刚刚宣布成立一家新的子公司</a>——<a href="http://www.alibabalabs.com/" class="broken_link" >阿里巴巴云计算子公司</a>。阿里巴巴在云计算方面的工作开始正式启航。阿里巴巴是迄今为止中国内地第一家真正进入云计算行业的公司。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/11/%e9%98%bf%e9%87%8c%e5%b7%b4%e5%b7%b4%e6%94%b6%e8%b4%ad%e4%b8%87%e7%bd%91%e4%b8%8evmware%e6%94%b6%e8%b4%adspringsource-%e5%b8%83%e5%b1%80%e4%ba%91%e8%ae%a1%e7%ae%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maybe Another Choice for QQ?</title>
		<link>http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html</link>
		<comments>http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:43:07 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$IT Thoughts]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/50</guid>
		<description><![CDATA[QQ is the only choice to communicate with friends for most Chinese. And now, it&#8217;s a cash cow for Tencent Inc. They control everything, ask your money all the time. Some money for service is reasonable, but they even demand your money when you want more privacy. For an example, when you want to remove [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>QQ is the only choice to communicate with friends for most Chinese. And now, it&#8217;s a cash cow for Tencent Inc. They control everything, ask your money all the time. Some money for service is reasonable, but they even demand your money when you want more privacy. For an example, when you want to remove which blog you have visited, you must become their paid user.</p>
<p>How to build another simple, strong, easy to control by user himself/herself, no money-accquired function and cheap system to give another choice? As my imagine,</p>
<p>1st, <strong>Openness</strong>. Everyone can build new function for himself and who likes the function. Users  build the system by themselves.<br />
2nd, <strong>Users make decision</strong>. Everything is controlled by the users community. Even if whether the project should continue or stop.<br />
3rd, <strong>No business goal</strong>. The main system may supported by users&#8217; denotation.<br />
4th, <strong>Distributed and reliable</strong>. Maybe it would like tor, eMule? Most computation is executed on the volunteers&#8217; machine. The center server may serve a index.<br />
5th, <strong>Secured and spam-free</strong>.</p>
<p>To build that system, the road map may like below:</p>
<p>1st, a few architects build the start-up system and open it to more developers.<br />
2nd, many volunteers compose of a support community, and it broadcast by itself.</p>
<p>It must be the source that everything is controlled by users, made by users.</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/10/maybe-another-choice-for-qq.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动态规划练习（一）: 求数列中连续数字之和的最大值</title>
		<link>http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html</link>
		<comments>http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html#comments</comments>
		<pubDate>Fri, 23 Oct 2009 13:36:46 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$算法、数学与计算机]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[dynamic programming]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=273</guid>
		<description><![CDATA[问题：
给你n个数a[1], a[2], &#8230;, a[n]，(0


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/09/%e8%bd%ac%ef%bc%9a%e4%bf%9e%e6%95%8f%e6%b4%aa%e5%9c%a8%e5%8c%97%e4%ba%ac%e5%a4%a7%e5%ad%a62008%e5%b9%b4%e5%bc%80%e5%ad%a6%e5%85%b8%e7%a4%bc%e4%b8%8a%e7%9a%84%e6%bc%94%e8%ae%b2%e8%be%9e.html' rel='bookmark' title='Permanent Link: 转：俞敏洪在北京大学2008年开学典礼上的演讲辞'>转：俞敏洪在北京大学2008年开学典礼上的演讲辞</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>问题：</p>
<blockquote><p>给你n个数a[1], a[2], &#8230;, a[n]，(0<n<=16,000, -1,000<=a[i]<=1,000)和0<L1<=L2<=n 求长度在[L1,L2]的连续若干个数a[i], a[i+1], ..., a[j], (即L1<=j+1-i<=L2) 使得a[i]+a[i+1]+...+a[j]取到最大值, 你只需要输出那个最大值即可<sub>[<a href="#ref1">1</a>]</sub>。</p></blockquote>
<p>这个题目看上去与动态规划很类似，在于其解的特点。设数列的前 n 个数的最大值为 F(n)，则：</p>
<p><img src="http://blog.feihoo.com/wp-content/uploads/2009/11/dp_num_seqs1.gif" alt="dp_num_seqs_larger" title="dp_num_seqs_larger" width="596" height="60" class="alignnone size-full wp-image-286" /></p>
<p>证明从略。</p>
<p>代码如下：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.feihoo.test</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MaxSequenceValue <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> nums <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">9</span>, <span style="color: #cc66cc;">30</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">30</span>, <span style="color: #cc66cc;">20</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">34</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">45</span>, <span style="color: #cc66cc;">12</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">8</span>, <span style="color: #cc66cc;">11</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">int</span> minLen <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> maxLen <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> m <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span>nums.<span style="color: #006633;">length</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		m<span style="color: #009900;">&#91;</span>minLen <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> minLen<span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> nums.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
			compute<span style="color: #009900;">&#40;</span>i, m, minLen, maxLen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">int</span> largest <span style="color: #339933;">=</span> m<span style="color: #009900;">&#91;</span>minLen<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> minLen <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> nums.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>largest <span style="color: #339933;">&lt;</span> m<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
				largest <span style="color: #339933;">=</span> m<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>largest<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> compute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> n, <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> m, <span style="color: #000066; font-weight: bold;">int</span> minLen, <span style="color: #000066; font-weight: bold;">int</span> maxLen<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		m<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> m<span style="color: #009900;">&#91;</span>n <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> len <span style="color: #339933;">=</span> minLen<span style="color: #339933;">;</span> len <span style="color: #339933;">&lt;</span> maxLen <span style="color: #339933;">&amp;&amp;</span> n <span style="color: #339933;">-</span> len <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> len<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">int</span> re <span style="color: #339933;">=</span> nums<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> n <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&gt;</span> n <span style="color: #339933;">-</span> len<span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span>
				re <span style="color: #339933;">+=</span> nums<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> re<span style="color: #009900;">&#41;</span>
				m<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> re<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>参考：<br />
<a name="ref1"></a><br />
1. 来源： <a href="http://blog.pfan.cn/argol/16648.html">动态规划习题 </a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/09/%e8%bd%ac%ef%bc%9a%e4%bf%9e%e6%95%8f%e6%b4%aa%e5%9c%a8%e5%8c%97%e4%ba%ac%e5%a4%a7%e5%ad%a62008%e5%b9%b4%e5%bc%80%e5%ad%a6%e5%85%b8%e7%a4%bc%e4%b8%8a%e7%9a%84%e6%bc%94%e8%ae%b2%e8%be%9e.html' rel='bookmark' title='Permanent Link: 转：俞敏洪在北京大学2008年开学典礼上的演讲辞'>转：俞敏洪在北京大学2008年开学典礼上的演讲辞</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>细节背后：为什么线程协作之前必须先获得锁?</title>
		<link>http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html</link>
		<comments>http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html#comments</comments>
		<pubDate>Sat, 03 Oct 2009 08:24:17 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Performance]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[lock]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=204</guid>
		<description><![CDATA[为什么Object.wait()/notify()/notifyAll() 之前必须获得锁？ 这是JLS的规定。Wait-notify机制是围绕监控器锁进行的，获得锁是很自然的前提，自身没有拿到锁之前，怎么能够尝试去操作靠锁来调控的线程呢？不过今天偶尔有时间，就看下Sun Hotspot是怎么实现这一机制的。
当我们执行下面的代码时，线程会抛出异常java.lang.IllegalMonitorStateException: current thread not owner。

public class WaitNotifyCompilerCode &#123;
	private String aString = &#34;Hello World!&#34;;
&#160;
	public static void main&#40;String&#91;&#93; args&#41; &#123;
		System.out.println&#40;&#34;Execute start ....&#34;&#41;;
		final WaitNotifyCompilerCode w = new WaitNotifyCompilerCode&#40;&#41;;
		w.wait1SecAndPrintString&#40;&#41;;
		System.out.println&#40;&#34;Execute end ....&#34;&#41;;
	&#125;
&#160;
	public void wait1SecAndPrintString&#40;&#41; &#123;
		try &#123;
			this.wait&#40;1000&#41;;
		&#125; catch &#40;InterruptedException e&#41; &#123;
			e.printStackTrace&#40;&#41;;
		&#125;
		System.out.println&#40;aString&#41;;
	&#125;
&#160;
&#125;

异常栈的信息如下：

Exception in thread &#34;main&#34; java.lang.IllegalMonitorStateException: current thread not owner
	at java.lang.Object.wait&#40;Native Method&#41;
	at com.feihoo.test.waitnotify.WaitNotifyCompilerCode.wait1SecAndPrintString&#40;WaitNotifyCompilerCode.java:35&#41;
	at com.feihoo.test.waitnotify.WaitNotifyCompilerCode.main&#40;WaitNotifyCompilerCode.java:27&#41;

深入查看 OpenJDK的源码，找到 Object.wait() 函数本地代码：

JVM_ENTRY&#40;void, JVM_MonitorWait&#40;JNIEnv* env, [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html' rel='bookmark' title='Permanent Link: 动态规划练习（一）: 求数列中连续数字之和的最大值'>动态规划练习（一）: 求数列中连续数字之和的最大值</a></li><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：1. object'>（翻译）Orx教程：1. object</a></li><li><a href='http://blog.feihoo.com/2010/01/dbcp_principle.html' rel='bookmark' title='Permanent Link: DBCP连接池(一)：原理与基本配置'>DBCP连接池(一)：原理与基本配置</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>为什么Object.wait()/notify()/notifyAll() 之前必须获得锁？ 这是JLS的规定。Wait-notify机制是围绕监控器锁进行的，获得锁是很自然的前提，自身没有拿到锁之前，怎么能够尝试去操作靠锁来调控的线程呢？不过今天偶尔有时间，就看下Sun Hotspot是怎么实现这一机制的。</p>
<p>当我们执行下面的代码时，线程会抛出异常java.lang.IllegalMonitorStateException: current thread not owner。</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> WaitNotifyCompilerCode <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> aString <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Hello World!&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Execute start ....&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">final</span> WaitNotifyCompilerCode w <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WaitNotifyCompilerCode<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		w.<span style="color: #006633;">wait1SecAndPrintString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Execute end ....&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> wait1SecAndPrintString<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">wait</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">InterruptedException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>aString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>异常栈的信息如下：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Exception</span> in thread <span style="color: #0000ff;">&quot;main&quot;</span> java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">IllegalMonitorStateException</span><span style="color: #339933;">:</span> current thread not owner
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">Object</span>.<span style="color: #006633;">wait</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Native</span> <span style="color: #003399;">Method</span><span style="color: #009900;">&#41;</span>
	at com.<span style="color: #006633;">feihoo</span>.<span style="color: #006633;">test</span>.<span style="color: #006633;">waitnotify</span>.<span style="color: #006633;">WaitNotifyCompilerCode</span>.<span style="color: #006633;">wait1SecAndPrintString</span><span style="color: #009900;">&#40;</span>WaitNotifyCompilerCode.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">35</span><span style="color: #009900;">&#41;</span>
	at com.<span style="color: #006633;">feihoo</span>.<span style="color: #006633;">test</span>.<span style="color: #006633;">waitnotify</span>.<span style="color: #006633;">WaitNotifyCompilerCode</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#40;</span>WaitNotifyCompilerCode.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">27</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>深入查看 OpenJDK的源码，找到 Object.wait() 函数本地代码：</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">JVM_ENTRY<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span>, JVM_MonitorWait<span style="color: #008000;">&#40;</span>JNIEnv<span style="color: #000040;">*</span> env, jobject handle, jlong ms<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
  JVMWrapper<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;JVM_MonitorWait&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  Handle obj<span style="color: #008000;">&#40;</span>THREAD, JNIHandles<span style="color: #008080;">::</span><span style="color: #007788;">resolve_non_null</span><span style="color: #008000;">&#40;</span>handle<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">assert</span><span style="color: #008000;">&#40;</span>obj<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>is_instance<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> obj<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>is_array<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, <span style="color: #FF0000;">&quot;JVM_MonitorWait must apply to an object&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  JavaThreadInObjectWaitState jtiows<span style="color: #008000;">&#40;</span>thread, ms <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>JvmtiExport<span style="color: #008080;">::</span><span style="color: #007788;">should_post_monitor_wait</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    JvmtiExport<span style="color: #008080;">::</span><span style="color: #007788;">post_monitor_wait</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>JavaThread <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>THREAD, <span style="color: #008000;">&#40;</span>oop<span style="color: #008000;">&#41;</span>obj<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, ms<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
  ObjectSynchronizer<span style="color: #008080;">::</span><span style="color: #007788;">wait</span><span style="color: #008000;">&#40;</span>obj, ms, CHECK<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
JVM_END</pre></div></div>

<p>重点看倒数第二行，调用的函数如下面的代码：</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// NOTE: must use heavy weight monitor to handle wait()</span>
<span style="color: #0000ff;">void</span> ObjectSynchronizer<span style="color: #008080;">::</span><span style="color: #007788;">wait</span><span style="color: #008000;">&#40;</span>Handle obj, jlong millis, TRAPS<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>UseBiasedLocking<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    BiasedLocking<span style="color: #008080;">::</span><span style="color: #007788;">revoke_and_rebias</span><span style="color: #008000;">&#40;</span>obj, <span style="color: #0000ff;">false</span>, THREAD<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">assert</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>obj<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>mark<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>has_bias_pattern<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, <span style="color: #FF0000;">&quot;biases should be revoked by now&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
  <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>millis <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    TEVENT <span style="color: #008000;">&#40;</span>wait <span style="color: #000040;">-</span> <span style="color: #0000ff;">throw</span> IAX<span style="color: #008000;">&#41;</span> <span style="color: #008080;">;</span>
    THROW_MSG<span style="color: #008000;">&#40;</span>vmSymbols<span style="color: #008080;">::</span><span style="color: #007788;">java_lang_IllegalArgumentException</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, <span style="color: #FF0000;">&quot;timeout value is negative&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
  ObjectMonitor<span style="color: #000040;">*</span> monitor <span style="color: #000080;">=</span> ObjectSynchronizer<span style="color: #008080;">::</span><span style="color: #007788;">inflate</span><span style="color: #008000;">&#40;</span>THREAD, obj<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  DTRACE_MONITOR_WAIT_PROBE<span style="color: #008000;">&#40;</span>monitor, obj<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, THREAD, millis<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  monitor<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>wait<span style="color: #008000;">&#40;</span>millis, <span style="color: #0000ff;">true</span>, THREAD<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p>而上面的代码中最后一行的函数里，在做实际操作之前调用了下面的宏：</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// A macro is used below because there may already be a pending</span>
<span style="color: #666666;">// exception which should not abort the execution of the routines</span>
<span style="color: #666666;">// which use this (which is why we don't put this into check_slow and</span>
<span style="color: #666666;">// call it with a CHECK argument).</span>
&nbsp;
<span style="color: #339900;">#define CHECK_OWNER()                                                             \
  do {                                                                            \
    if (THREAD != _owner) {                                                       \
      if (THREAD-&gt;is_lock_owned((address) _owner)) {                              \
        _owner = THREAD ;  /* Convert from basiclock addr to Thread addr */       \
        _recursions = 0;                                                          \
        OwnerIsThread = 1 ;                                                       \
      } else {                                                                    \
        TEVENT (Throw IMSX) ;                                                     \
        THROW(vmSymbols::java_lang_IllegalMonitorStateException());               \
      }                                                                           \
    }                                                                             \
  } while (false)</span></pre></div></div>



<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/10/dynamic-programming-problem-1.html' rel='bookmark' title='Permanent Link: 动态规划练习（一）: 求数列中连续数字之和的最大值'>动态规划练习（一）: 求数列中连续数字之和的最大值</a></li><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_object.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：1. object'>（翻译）Orx教程：1. object</a></li><li><a href='http://blog.feihoo.com/2010/01/dbcp_principle.html' rel='bookmark' title='Permanent Link: DBCP连接池(一)：原理与基本配置'>DBCP连接池(一)：原理与基本配置</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reliability, Availability, and Scalability</title>
		<link>http://blog.feihoo.com/2009/09/reliability-availability-and-scalability.html</link>
		<comments>http://blog.feihoo.com/2009/09/reliability-availability-and-scalability.html#comments</comments>
		<pubDate>Wed, 30 Sep 2009 05:51:54 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Architecture & design]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=316</guid>
		<description><![CDATA[Reliability, according the Wikipedia:
In general, reliability (systemic def.) is the ability of a person or system to perform and maintain its functions in routine circumstances, as well as hostile or unexpected circumstances.
The IEEE defines it as &#8220;. . . the ability of a system or component to perform its required functions under stated conditions for [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/arguments-on-java-c.html' rel='bookmark' title='Permanent Link: Arguments on Java &#038; C++'>Arguments on Java &#038; C++</a></li><li><a href='http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html' rel='bookmark' title='Permanent Link: 设计与开发的五条原则'>设计与开发的五条原则</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><em><strong>Reliability</strong></em>, according the <a href="http://en.wikipedia.org/wiki/Reliability">Wikipedia</a>:</p>
<blockquote><p>In general, <strong>reliability</strong> (systemic def.) is the ability of a person or system to perform and maintain its functions in routine circumstances, as well as hostile or unexpected circumstances.</p>
<p>The IEEE defines it as &#8220;. . . the ability of a system or component to perform its required functions under stated conditions for a specified period of time.&#8221;</p></blockquote>
<p>On the page, it also tells:</p>
<blockquote><p><strong>Reliability</strong> may refer to:<br />
Data reliability, a property of some <em>disk arrays</em> in computer storage</p></blockquote>
<p><em><strong>Availability</strong></em>, according to <a href="http://en.wikipedia.org/wiki/Availability">Wikipedia</a>:</p>
<blockquote><p>In telecommunications and reliability theory, the term availability has the following meanings:</p>
<p>1. The degree to which a system, subsystem, or equipment is operable and in a committable state at the start of a mission, when the mission is called for at an unknown, i.e., a random, time. Simply put, <strong>availability</strong> is <strong>the proportion of time a system is in a functioning condition</strong>.</p>
<p>Note 1: The conditions determining operability and committability must be specified.</p>
<p>Note 2: Expressed mathematically, availability is 1 minus the unavailability.</p>
<p>2. <strong>The ratio of (a) the total time a functional unit is capable of being used during a given interval to (b) the length of the interval.</strong></p>
<p>Note 1: An example of availability is 100/168 if the unit is capable of being used for 100 hours in a week.</p>
<p>Note 2: Typical availability objectives are specified either in decimal fractions, such as 0.9998, or sometimes in a logarithmic unit called nines, which corresponds roughly to a number of nines following the decimal point, such as &#8220;five nines&#8221; for 0.99999 reliability.</p></blockquote>
<p>There is another page about <a href="http://en.wikipedia.org/wiki/High_availability">High Avaliability</a> on Wikipedia:</p>
<blockquote><p><strong>High availability</strong> is a system design protocol and associated implementation that ensures a certain degree of operational continuity during a given measurement period.</p>
<p>Users want their systems, for example wrist watches, hospitals, airplanes or computers, to be ready to serve them at all times. Availability refers to the ability of the user community to access the system, whether to submit new work, update or alter existing work, or collect the results of previous work. If a user cannot access the system, it is said to be <em>unavailable</em>.  Generally, the term <em>downtime</em> is used to refer to periods when a system is unavailable.</p></blockquote>
<p><em><strong>Scalability</strong></em>, according to <a href="http://en.wikipedia.org/wiki/Scalability">Wikipedia</a>:</p>
<blockquote><p>In <em>telecommunications</em> and <em>software engineering</em>, <strong>scalability</strong> is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be readily enlarged.</p></blockquote>
<p>Methods of adding more resources for a particular application fall into two broad categories: Scale Up (Vertically) and Scale Out (Horizontally). Scale Out could be the better choices  in many larger situations.</p>
<p>References:</p>
<ol>
<li><a href="http://www.eventhelix.com/RealtimeMantra/FaultHandling/system_reliability_availability.htm">System Reliability and Availability</a></li>
<li><a href="http://www.eventhelix.com/RealtimeMantra/FaultHandling/reliability_availability_basics.htm">Reliability and Availability Basics</a></li>
</ol>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/arguments-on-java-c.html' rel='bookmark' title='Permanent Link: Arguments on Java &#038; C++'>Arguments on Java &#038; C++</a></li><li><a href='http://blog.feihoo.com/2009/12/software-design-devolopment-pricinples.html' rel='bookmark' title='Permanent Link: 设计与开发的五条原则'>设计与开发的五条原则</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/09/reliability-availability-and-scalability.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>读《散户炒股的50条毛病》</title>
		<link>http://blog.feihoo.com/2009/08/%e8%af%bb.html</link>
		<comments>http://blog.feihoo.com/2009/08/%e8%af%bb.html#comments</comments>
		<pubDate>Sat, 29 Aug 2009 08:16:46 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/48</guid>
		<description><![CDATA[原文地址：《散户炒股的50条毛病》
摘抄我也深有体会的毛病：
1.我总喜欢跌了才舍得卖,涨了却不舍得卖! （我总是跌了也不卖！）
5.我总喜欢买自己熟悉的股票,而不知道去尝试买新鲜的股票.
11.我总喜欢把现金看得很重要,而不知道股票市场筹码才重要.. （筹码是什么？）
17.我总喜欢往证券公司存钱，却从来没考虑取点出来潇洒一下
24.我总喜欢在山顶上站岗,而不知道在山谷下埋伏..
28.我总喜欢看大盘涨,而不喜欢有一点调整..
31.我总喜欢报喜不报忧,担心被老婆骂..
33.我总喜欢把赚的钱不当作自己的,而亏的钱认为是自己..
35.我总喜欢满仓操作，而不知道半仓或空仓休息..
45.我总喜欢把自己定位为股东,不懂得做短线投机..
50.我总喜欢忘记失败的操作,而只记住胜利的喜悦..


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>原文地址：<a href="http://bbs.finance.qq.com/b-1001024154/71308.htm">《散户炒股的50条毛病》</a></p>
<p>摘抄我也深有体会的毛病：</p>
<p>1.我总喜欢跌了才舍得卖,涨了却不舍得卖! （我总是跌了也不卖！）<br />
5.我总喜欢买自己熟悉的股票,而不知道去尝试买新鲜的股票.<br />
11.我总喜欢把现金看得很重要,而不知道股票市场筹码才重要.. （筹码是什么？）<br />
17.我总喜欢往证券公司存钱，却从来没考虑取点出来潇洒一下<br />
24.我总喜欢在山顶上站岗,而不知道在山谷下埋伏..<br />
28.我总喜欢看大盘涨,而不喜欢有一点调整..<br />
31.我总喜欢报喜不报忧,担心被老婆骂..<br />
33.<strong>我总喜欢把赚的钱不当作自己的,而亏的钱认为是自己..</strong><br />
35.<strong>我总喜欢满仓操作，而不知道半仓或空仓休息..</strong><br />
45.我总喜欢把自己定位为股东,不懂得做短线投机..<br />
50.我总喜欢忘记失败的操作,而只记住胜利的喜悦..</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/08/%e8%af%bb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>下半年经济走势与股市走向</title>
		<link>http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html</link>
		<comments>http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html#comments</comments>
		<pubDate>Mon, 24 Aug 2009 04:32:48 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/47</guid>
		<description><![CDATA[Update (11/11/2009) : 十月份的经济数据已经公布，其中最大的利差是CPI继续下降，通胀趋势并没有出现，以及贷款总额创新低。短期来看，对银行金融等有一定影响，尤其是招商银行；但是从长期来看，正是逢低吸入的时机。航运股这两天受益于BDI指数升高，或许可以继续静心等待机会。
Update (27/10/2009) : 现在已经是十月份末，国内经济复苏态势相对确立，可能进入通胀区间，银行/地产/矿产/钢铁等可能受益；欧美经济复苏并不如预期，且人民币升值预期（或实际已经略有升值）对出口有所冲击，对外出口的制造业复苏不如预期，远洋航运和造船都还有待观察。四季度操作策略：适时买入银行/矿产，出口明显复苏时长期布局航运龙头。

从目前来看，经济增长主要靠中央的固定资产投资推动，信贷大幅增长。考虑到银行坏账的风险，以及通胀的可能，而这是难以持续的。宏观经济走向似乎并非预期，可能真的出现W型复苏。从已经披露的各大公司的财报来看，经济增长并不高。下半年股市可能不会如我之前的估计。股市下跌，可能是宏观经济增速放缓的前兆。
宏观经济放缓，而流动性趋紧，下半年股市走势难料。我的股票会受到什么影响？
一，美国经济复苏速度。 美国经济复苏程度可能会成为影响国内经济走势的一个重要原因，如果出口增加，国内经济下降可能不如预期。从目前来看，这是当前最重要的因素。航运股自然会增值；招商银行则会因为零售业尤其是华南地区经济转好而转好。
二，下半年信贷走势也会对股市产生较大影响。上半年股市主要依靠信贷支撑，下半年信贷速度肯定放缓。放缓程度将成为股市风向的重要指标，这个得等到8月份信贷额披露后方知。不过，总体上，我想政策不会对信贷采急刹车，即使放缓，也应到有其他因素起到或者即将起到替代作用之时。
上半年股市依靠信贷，下半年股市主要需要上市公司利润以及宏观经济支撑。那些认为热钱流入的评论绝对不可靠，因为外国股市向好，会吸引更多的资金。 如果是U型或者V型复苏，都不需要做太多的考虑。如果是W型复苏，则不要被乱了分寸。
参考：《V型复苏难以实现》


Related posts:Compete, Go!《Did you know?》 3.0 Edition


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html' rel='bookmark' title='Permanent Link: Compete, Go!'>Compete, Go!</a></li><li><a href='http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html' rel='bookmark' title='Permanent Link: 《Did you know?》 3.0 Edition'>《Did you know?》 3.0 Edition</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Update (11/11/2009)</strong> : 十月份的经济数据已经公布，其中最大的利差是CPI继续下降，通胀趋势并没有出现，以及贷款总额创新低。短期来看，对银行金融等有一定影响，尤其是招商银行；但是从长期来看，正是逢低吸入的时机。航运股这两天受益于BDI指数升高，或许可以继续静心等待机会。</p>
<p><strong>Update (27/10/2009)</strong> : 现在已经是十月份末，国内经济复苏态势相对确立，可能进入通胀区间，银行/地产/矿产/钢铁等可能受益；欧美经济复苏并不如预期，且人民币升值预期（或实际已经略有升值）对出口有所冲击，对外出口的制造业复苏不如预期，远洋航运和造船都还有待观察。四季度操作策略：适时买入银行/矿产，出口明显复苏时长期布局航运龙头。</p>
<hr/>
<p>从目前来看，经济增长主要靠中央的固定资产投资推动，信贷大幅增长。考虑到银行坏账的风险，以及通胀的可能，而这是难以持续的。宏观经济走向似乎并非预期，可能真的出现W型复苏。从已经披露的各大公司的财报来看，经济增长并不高。下半年股市可能不会如我之前的估计。股市下跌，可能是宏观经济增速放缓的前兆。</p>
<p>宏观经济放缓，而流动性趋紧，下半年股市走势难料。我的股票会受到什么影响？</p>
<p>一，美国经济复苏速度。 美国经济复苏程度可能会成为影响国内经济走势的一个重要原因，如果出口增加，国内经济下降可能不如预期。从目前来看，这是当前最重要的因素。航运股自然会增值；招商银行则会因为零售业尤其是华南地区经济转好而转好。</p>
<p>二，下半年信贷走势也会对股市产生较大影响。上半年股市主要依靠信贷支撑，下半年信贷速度肯定放缓。放缓程度将成为股市风向的重要指标，这个得等到8月份信贷额披露后方知。不过，总体上，我想政策不会对信贷采急刹车，即使放缓，也应到有其他因素起到或者即将起到替代作用之时。</p>
<p>上半年股市依靠信贷，下半年股市主要需要上市公司利润以及宏观经济支撑。那些认为热钱流入的评论绝对不可靠，因为外国股市向好，会吸引更多的资金。 如果是U型或者V型复苏，都不需要做太多的考虑。如果是W型复苏，则不要被乱了分寸。</p>
<p>参考：<a href="http://www.create.hk/archives/406">《V型复苏难以实现》</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/11/%e7%94%9f%e6%b4%bb%e6%98%af%e4%b8%8d%e6%96%ad%e7%9a%84%e7%ab%9e%e8%b5%9b.html' rel='bookmark' title='Permanent Link: Compete, Go!'>Compete, Go!</a></li><li><a href='http://blog.feihoo.com/2009/11/did-you-know-3-0-edition.html' rel='bookmark' title='Permanent Link: 《Did you know?》 3.0 Edition'>《Did you know?》 3.0 Edition</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/08/%e4%b8%8b%e5%8d%8a%e5%b9%b4%e7%bb%8f%e6%b5%8e%e8%b5%b0%e5%8a%bf%e4%b8%8e%e8%82%a1%e5%b8%82%e8%b5%b0%e5%90%91.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>人口下降，城市化与房价趋势</title>
		<link>http://blog.feihoo.com/2009/08/%e4%ba%ba%e5%8f%a3%e4%b8%8b%e9%99%8d%ef%bc%8c%e5%9f%8e%e5%b8%82%e5%8c%96%e4%b8%8e%e6%88%bf%e4%bb%b7%e8%b6%8b%e5%8a%bf.html</link>
		<comments>http://blog.feihoo.com/2009/08/%e4%ba%ba%e5%8f%a3%e4%b8%8b%e9%99%8d%ef%bc%8c%e5%9f%8e%e5%b8%82%e5%8c%96%e4%b8%8e%e6%88%bf%e4%bb%b7%e8%b6%8b%e5%8a%bf.html#comments</comments>
		<pubDate>Sun, 23 Aug 2009 17:02:48 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/46</guid>
		<description><![CDATA[最近看到若干条消息：

截至去年我国城镇人口达6.07亿    到2008年底，我国城镇人口为6.07亿人，城镇化水平为45.68%，比解放初期提高了35个百分点，年均增长0.95个百分点。据住房城乡建设部城乡规划司副司长张勤介绍，目前，我国已初步形成以大城市为中心、中小城市为骨干、小城镇为基础的多层次的大中小城市和小城镇协调发展的城镇体系。城镇之间的联系更加紧密，城镇密集地区逐步形成。与此同时，市政功用设施服务能力和供给能力增强，投资规模逐步扩大，城乡规划工作不断改进和加强，在城镇化和城镇发展中发挥了引导作用。
人口巨变将碾死诸多行业     1987年。新生人口在这一年达到了2550万的顶峰，此后便以平均每年48万的速度下降，直到2004年后暂时趋稳。需要牢记的另一个年份是2003年。这一年，离开农村进入城市的人口达到历史顶峰2000万，此后便以平均每年170万的速度下降，降至去年的1100万，显然，城市化进程已经走过了拐点。

也许，人口老化和增速下降甚至整体下降才是房价的真正杀手。又见：《哈继铭：2015年前中国房价还要涨》
2008年初，沙河的房子在6000～7000左右的时候，我觉得很贵。现在那儿开盘的小区都已经在一万以上了。最近又有一片炒得沸沸扬扬的文章：北京房价收入比是否达27：1 。（有的网站上该文名叫《北京房价收入比27:1 买套房需27年不吃不喝》， 例如腾讯上该文）
上文中称，计算的时候是以北京平均家庭年收入11.3 万计算的。看来了北京人真的很富裕。房价的对话中提到，计算北京的房价，是不能以平均收入来计算的，而是要以平均收入的2～4倍来计算。因为对于经济高速发展的预期，很多人把钱投入楼市，仅此而已。我觉得这篇文章的思路还真有些道理。
也许现在真的不能急着买房子 ，真的是太贵了！


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>最近看到若干条消息：</p>
<ol>
<li><a href="http://news.sina.com.cn/c/2009-08-23/152718494332.shtml" title="新浪">截至去年我国城镇人口达6.07亿</a>    到2008年底，我国城镇人口为6.07亿人，城镇化水平为45.68%，比解放初期提高了35个百分点，年均增长0.95个百分点。据住房城乡建设部城乡规划司副司长张勤介绍，目前，我国已初步形成以大城市为中心、中小城市为骨干、小城镇为基础的多层次的大中小城市和小城镇协调发展的城镇体系。城镇之间的联系更加紧密，城镇密集地区逐步形成。与此同时，市政功用设施服务能力和供给能力增强，投资规模逐步扩大，城乡规划工作不断改进和加强，在城镇化和城镇发展中发挥了引导作用。</li>
<li><a href="http://finance.sina.com.cn/review/20090713/16236473641.shtml">人口巨变将碾死诸多行业</a>     1987年。新生人口在这一年达到了2550万的顶峰，此后便以平均每年48万的速度下降，直到2004年后暂时趋稳。需要牢记的另一个年份是2003年。这一年，离开农村进入城市的人口达到历史顶峰2000万，此后便以平均每年170万的速度下降，降至去年的1100万，显然，城市化进程已经走过了拐点。</li>
</ol>
<p>也许，人口老化和增速下降甚至整体下降才是房价的真正杀手。又见：<a href="http://finance.qq.com/a/20090822/001261.htm">《哈继铭：2015年前中国房价还要涨》</a></p>
<p>2008年初，沙河的房子在6000～7000左右的时候，我觉得很贵。现在那儿开盘的小区都已经在一万以上了。最近又有一片炒得沸沸扬扬的文章：<a href="http://bj.house.sina.com.cn/news/2009-08-23/1007325832.html">北京房价收入比是否达27：1 </a>。（有的网站上该文名叫《北京房价收入比27:1 买套房需27年不吃不喝》， 例如<a href="http://finance.qq.com/a/20090821/002359.htm">腾讯上该文</a>）</p>
<p>上文中称，计算的时候是以北京平均家庭年收入11.3 万计算的。看来了北京人真的很富裕。<a href="http://kaieconblog.spaces.live.com/Blog/cns!B4C829CC97B9EDD8!11836.entry">房价的对话</a>中提到，计算北京的房价，是不能以平均收入来计算的，而是要以平均收入的2～4倍来计算。因为对于经济高速发展的预期，很多人把钱投入楼市，仅此而已。我觉得这篇文章的思路还真有些道理。</p>
<p>也许现在真的不能急着买房子 ，真的是太贵了！</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/08/%e4%ba%ba%e5%8f%a3%e4%b8%8b%e9%99%8d%ef%bc%8c%e5%9f%8e%e5%b8%82%e5%8c%96%e4%b8%8e%e6%88%bf%e4%bb%b7%e8%b6%8b%e5%8a%bf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>震荡迷局中在3000点左右买入的理由</title>
		<link>http://blog.feihoo.com/2009/08/%e8%b5%b0%e5%8a%bf%e4%ba%89%e6%89%a7%e4%b8%8b%e6%88%91%e5%9d%9a%e6%8c%813000%e7%82%b9%e5%b7%a6%e5%8f%b3%e4%b9%b0%e5%85%a5.html</link>
		<comments>http://blog.feihoo.com/2009/08/%e8%b5%b0%e5%8a%bf%e4%ba%89%e6%89%a7%e4%b8%8b%e6%88%91%e5%9d%9a%e6%8c%813000%e7%82%b9%e5%b7%a6%e5%8f%b3%e4%b9%b0%e5%85%a5.html#comments</comments>
		<pubDate>Sun, 23 Aug 2009 16:35:25 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/43</guid>
		<description><![CDATA[目前，国内股市经历了一次突然下跌，沪指从2770多点饭堂到2965点左右。 虽然离上一次的最高点（3478）还有500点左右，但是下周股市走势仍然不明朗。网络上很多争论，我不是什么专家，但是买股票就要有自己的理由，因此在这里记录一下。
对于中长期持有来讲，股市底部会到具体什么地步，不管是2500点还是2700点，都不重要。 目前应逐步买入，开始建仓。
第一，随着美国经济复苏，相信下半年航运股会逐步走强。及时下半年不走强，在明年上半年也会启动走强。因此，持有航运股票一直到航运股全面复苏。 复苏以后要开始注意控制风险，逐步减仓。但是仍然要注意复苏若不如预期可能产生的风险。
第二，银行股PE值目前均在14左右，认为可以适当介入，长期持有。虽然下半年贷款会有所减少，但是息差扩大。并且，贷款规模减小，有利于中小股份制商业银行竞争。考虑到上海金融中心建设，我认为可以买入浦发银行。 招商银行也是一只不错的股票，但是不知道这次增发180亿会否对股价造成影响。推测股价在增发推出之前一直会处于较低水平，增发完成后可能会再次下降，此后再逐步上涨。总之，我认为目前银行股可以继续增持。
2010年初再来验看我的估计。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>目前，国内股市经历了一次突然下跌，沪指从2770多点饭堂到2965点左右。 虽然离上一次的最高点（3478）还有500点左右，但是下周股市走势仍然不明朗。网络上很多争论，我不是什么专家，但是买股票就要有自己的理由，因此在这里记录一下。</p>
<p>对于中长期持有来讲，股市底部会到具体什么地步，不管是2500点还是2700点，都不重要。 目前应逐步买入，开始建仓。</p>
<p>第一，随着美国经济复苏，相信下半年航运股会逐步走强。及时下半年不走强，在明年上半年也会启动走强。因此，持有航运股票一直到航运股全面复苏。 复苏以后要开始注意控制风险，逐步减仓。但是仍然要注意复苏若不如预期可能产生的风险。</p>
<p>第二，银行股PE值目前均在14左右，认为可以适当介入，长期持有。虽然下半年贷款会有所减少，但是息差扩大。并且，贷款规模减小，有利于中小股份制商业银行竞争。考虑到上海金融中心建设，我认为可以买入浦发银行。 招商银行也是一只不错的股票，但是不知道这次增发180亿会否对股价造成影响。推测股价在增发推出之前一直会处于较低水平，增发完成后可能会再次下降，此后再逐步上涨。总之，我认为目前银行股可以继续增持。</p>
<p>2010年初再来验看我的估计。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/08/%e8%b5%b0%e5%8a%bf%e4%ba%89%e6%89%a7%e4%b8%8b%e6%88%91%e5%9d%9a%e6%8c%813000%e7%82%b9%e5%b7%a6%e5%8f%b3%e4%b9%b0%e5%85%a5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0906-0908月股市总结</title>
		<link>http://blog.feihoo.com/2009/08/0906-0908%e6%9c%88%e8%82%a1%e5%b8%82%e6%80%bb%e7%bb%93.html</link>
		<comments>http://blog.feihoo.com/2009/08/0906-0908%e6%9c%88%e8%82%a1%e5%b8%82%e6%80%bb%e7%bb%93.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 06:49:00 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/44</guid>
		<description><![CDATA[1， 关注航运股没错。最高时期，我选中的股票上涨了50%。在上涨过程中我不断加仓，并在最高点时处于满仓状态。
2，不注意控制风险。在已经上涨了50%的时候，我还在看平均收益略小于30%。我仍然踌躇满志，计划翻倍的时候再卖，完全不知道长的越高，安全边际风险大大增加。而且，在下跌超过12%的时候，我还在买入，完全没有意识到可能会走入一个较大幅度下跌过程，没有对部分股票获利了结，降低仓位。 网络上很多网友们讲，股票能不能赚钱，完全在于仓位的调节。在上涨行情的早期不断建仓； 在达到一定高度后开始减仓，对风险较大的个股获利了结。在大跌开始时，更要考虑对风险较大，并且不是长期投资的股票逐步甩出盈利。
3. 判断股市大涨与大跌：
第一方面，要注意到政策面，并判断消息对走势的影响。例如前段时间的流动性动态微调，注意到这个消息之时，对这个消息基本上没什么想法，完全没有将此消息与大盘走势联系起来。虽然自己的估计可能是错误的，但是一定要做出估计，并尝试寻找印证。
第二方面，要有宏观视野，抓紧可能的机会，也要控制风险。站在经济当局的立场，考虑整个宏观经济的情况，判断金融形势。信贷资金不可能一直上涨下去，因此金融和地产股在8月初的受到打击，当然是很有可能的。应该要随时保持警惕。再例如，航运股在经济复苏消息过后，可能要进入一个平静期，指导下一个季报来临之前。而当经济复苏到一定阶段后，航运股发挥比较充分时，就应分批出货，转换其他股票。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>1， 关注航运股没错。最高时期，我选中的股票上涨了50%。在上涨过程中我不断加仓，并在最高点时处于满仓状态。</p>
<p>2，不注意控制风险。在已经上涨了50%的时候，我还在看平均收益略小于30%。我仍然踌躇满志，计划翻倍的时候再卖，完全不知道长的越高，安全边际风险大大增加。而且，在下跌超过12%的时候，我还在买入，完全没有意识到可能会走入一个较大幅度下跌过程，没有对部分股票获利了结，降低仓位。 网络上很多网友们讲，股票能不能赚钱，完全在于仓位的调节。在上涨行情的早期不断建仓； 在达到一定高度后开始减仓，对风险较大的个股获利了结。在大跌开始时，更要考虑对风险较大，并且不是长期投资的股票逐步甩出盈利。</p>
<p>3. 判断股市大涨与大跌：</p>
<p>第一方面，要注意到政策面，并判断消息对走势的影响。例如前段时间的流动性动态微调，注意到这个消息之时，对这个消息基本上没什么想法，完全没有将此消息与大盘走势联系起来。虽然自己的估计可能是错误的，但是一定要做出估计，并尝试寻找印证。</p>
<p>第二方面，要有宏观视野，抓紧可能的机会，也要控制风险。站在经济当局的立场，考虑整个宏观经济的情况，判断金融形势。信贷资金不可能一直上涨下去，因此金融和地产股在8月初的受到打击，当然是很有可能的。应该要随时保持警惕。再例如，航运股在经济复苏消息过后，可能要进入一个平静期，指导下一个季报来临之前。而当经济复苏到一定阶段后，航运股发挥比较充分时，就应分批出货，转换其他股票。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/08/0906-0908%e6%9c%88%e8%82%a1%e5%b8%82%e6%80%bb%e7%bb%93.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>面向对象的几个原则</title>
		<link>http://blog.feihoo.com/2009/06/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e5%87%a0%e4%b8%aa%e5%8e%9f%e5%88%99.html</link>
		<comments>http://blog.feihoo.com/2009/06/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e5%87%a0%e4%b8%aa%e5%8e%9f%e5%88%99.html#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:29:33 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$Architecture & design]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/42</guid>
		<description><![CDATA[来源：http://snowolf.javaeye.com/blog/403184

“开-闭”原则（Open-Closed Principle，或者OCP）：Software entities should be open for extension,but closed for modification.
里氏代换原则（Liskov Subsitution Principle，或者LSP）    任何基类出现的地方，子类一定可以出现。
依赖倒转原则（Dependency Inversion Principle，或者DIP）    要依赖于抽象，不要依赖于实现。
接口隔离原则（Interface Segregation Principle，或者ISP）    应当为客户端提供尽可能小的单独的接口，而不要提供大的总接口。
组合/聚合复用原则（Composition/Aggregation Principle，或者CARP）    要尽量使用合成/聚合，而不是继承关系达到复用的目的。
迪米特法则（Law of Demeter，或者LoD）    一个软件实体应当与尽可能少的其他实体发生相互作用。
单一职责原则（Single Responsibility Principle，或者SRP）  要使每一个软件实体只负责一种职责的实现。



Related posts:Flex中的对象比较（相等性）


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/01/flex%e4%b8%ad%e7%9a%84%e5%af%b9%e8%b1%a1%e6%af%94%e8%be%83%ef%bc%88%e7%9b%b8%e7%ad%89%e6%80%a7%ef%bc%89.html' rel='bookmark' title='Permanent Link: Flex中的对象比较（相等性）'>Flex中的对象比较（相等性）</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>来源：<a href="http://snowolf.javaeye.com/blog/403184">http://snowolf.javaeye.com/blog/403184</a></p>
<ol>
<li>“开-闭”原则（Open-Closed Principle，或者OCP）：Software entities should be open for extension,but closed for modification.</li>
<li>里氏代换原则（Liskov Subsitution Principle，或者LSP）    任何基类出现的地方，子类一定可以出现。</li>
<li>依赖倒转原则（Dependency Inversion Principle，或者DIP）    要依赖于抽象，不要依赖于实现。</li>
<li>接口隔离原则（Interface Segregation Principle，或者ISP）    应当为客户端提供尽可能小的单独的接口，而不要提供大的总接口。</li>
<li>组合/聚合复用原则（Composition/Aggregation Principle，或者CARP）    要尽量使用合成/聚合，而不是继承关系达到复用的目的。</li>
<li>迪米特法则（Law of Demeter，或者LoD）    一个软件实体应当与尽可能少的其他实体发生相互作用。</li>
<li>单一职责原则（Single Responsibility Principle，或者SRP）  要使每一个软件实体只负责一种职责的实现。</li>
</ol>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/01/flex%e4%b8%ad%e7%9a%84%e5%af%b9%e8%b1%a1%e6%af%94%e8%be%83%ef%bc%88%e7%9b%b8%e7%ad%89%e6%80%a7%ef%bc%89.html' rel='bookmark' title='Permanent Link: Flex中的对象比较（相等性）'>Flex中的对象比较（相等性）</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/06/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e5%87%a0%e4%b8%aa%e5%8e%9f%e5%88%99.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>English Phrases</title>
		<link>http://blog.feihoo.com/2009/06/english-food.html</link>
		<comments>http://blog.feihoo.com/2009/06/english-food.html#comments</comments>
		<pubDate>Wed, 03 Jun 2009 13:35:33 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@English]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/40</guid>
		<description><![CDATA[
Egnlish Food: Beef, 牛肉类, Rack of lamb, 羊骨排. Escalope, 无骨小牛肉, Roast lamb, 烤羊.
Silence is golden.

我不是故意的
早上睡梦中想起这句话应该怎么说，一直不得要领。在百度上查到如下：
http://zhidao.baidu.com/question/17005447.html
I didn&#8217;t mean to.
I was not on purpose.
I was not intentional.
mean to
例句与用法:
1. I&#8217;m sorry I hurt you: I didn&#8217;t mean to.
对不起，我弄伤了你；我不是故意的。
2. Sorry, I didn&#8217;t mean to frighten you.
对不起, 我不是故意吓唬你的.
3. I didn&#8217;t mean to.
我不是故意的。
on purpose:
故意,有意
例句与用法:
1. He knocked the old man down on [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>Egnlish Food:</strong> Beef, 牛肉类, <span class="heighlight">Rack of lamb</span>, <span class="heighlight">羊骨排</span>. Escalope, 无骨小牛肉, Roast lamb, 烤羊.</li>
<li>Silence is golden.</li>
</ul>
<h4>我不是故意的</h4>
<p>早上睡梦中想起这句话应该怎么说，一直不得要领。在百度上查到如下：</p>
<p>http://zhidao.baidu.com/question/17005447.html</p>
<p>I didn&#8217;t mean to.<br />
I was not on purpose.<br />
I was not intentional.</p>
<p>mean to<br />
例句与用法:</p>
<p>1. I&#8217;m sorry I hurt you: I didn&#8217;t mean to.<br />
对不起，我弄伤了你；我不是故意的。</p>
<p>2. Sorry, I didn&#8217;t mean to frighten you.<br />
对不起, 我不是故意吓唬你的.</p>
<p>3. I didn&#8217;t mean to.<br />
我不是故意的。</p>
<p>on purpose:</p>
<p>故意,有意</p>
<p>例句与用法:<br />
1. He knocked the old man down on purpose.<br />
他故意把那个老人撞倒。</p>
<p>2. She seems to do these things on purpose.<br />
她似乎是有意地做这些事。</p>
<p>3. `Did he break it accidentally?&#8217; `No, on purpose.&#8217;<br />
‘他是无意中损坏的吗?’‘不, 是故意的.’</p>
<p>4. Bless your heart, I know you didn&#8217;t break the vase on purpose. Don&#8217;t cry!<br />
好了好了，我知道你不是故意把花瓶打破的。别哭了。</p>
<p>intentional:</p>
<p>adj.故意的</p>
<p>例句与用法:<br />
1. If I hurt your feelings, it was not intentional.<br />
我若伤了你的感情, 那并不是有意的.</p>
<p>2. His insult was intentional.<br />
他的侮辱是有意的。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/06/english-food.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weblogic 81Sp3</title>
		<link>http://blog.feihoo.com/2009/05/weblogic-81sp3.html</link>
		<comments>http://blog.feihoo.com/2009/05/weblogic-81sp3.html#comments</comments>
		<pubDate>Thu, 14 May 2009 10:17:12 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/38</guid>
		<description><![CDATA[Weblogic 81Sp3 发布时遇到如下错误：

&#38;lt;2009-5-14 下午05时29分20秒 CST&#38;gt; &#38;lt;Warning&#38;gt; &#38;lt;Deployer&#38;gt; &#38;lt;BEA-149004&#38;gt; &#38;lt;Failures were detected while initiating Deploy task for application receive.&#38;gt;
&#38;lt;2009-5-14 下午05时29分20秒 CST&#38;gt; &#38;lt;Error&#38;gt; &#38;lt;Deployer&#38;gt; &#38;lt;BEA-149201&#38;gt; &#38;lt;Failed to complete the deployment task with ID 0 for the application receive.
weblogic.management.ApplicationException:
Exception:weblogic.management.ApplicationException: prepare failed for receive
Module: receive Error: Could not load receive: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
&#160;
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer&#40;SlaveDeployer.java:2398&#41;
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare&#40;SlaveDeployer.java:2310&#41;
at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask&#40;SlaveDeployer.java:866&#41;
at [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html' rel='bookmark' title='Permanent Link: 细节背后：为什么线程协作之前必须先获得锁?'>细节背后：为什么线程协作之前必须先获得锁?</a></li><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Weblogic 81Sp3 发布时遇到如下错误：</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">14</span> 下午05时<span style="color: #cc66cc;">29</span>分<span style="color: #cc66cc;">20</span>秒 CST<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Warning<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Deployer<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>BEA<span style="color: #339933;">-</span><span style="color: #cc66cc;">149004</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Failures were detected <span style="color: #000000; font-weight: bold;">while</span> initiating Deploy task <span style="color: #000000; font-weight: bold;">for</span> application receive.<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span>
<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">14</span> 下午05时<span style="color: #cc66cc;">29</span>分<span style="color: #cc66cc;">20</span>秒 CST<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Error<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Deployer<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>BEA<span style="color: #339933;">-</span><span style="color: #cc66cc;">149201</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Failed to complete the deployment task with ID <span style="color: #cc66cc;">0</span> <span style="color: #000000; font-weight: bold;">for</span> the application receive.
<span style="color: #006633;">weblogic</span>.<span style="color: #006633;">management</span>.<span style="color: #003399;">ApplicationException</span><span style="color: #339933;">:</span>
<span style="color: #003399;">Exception</span><span style="color: #339933;">:</span>weblogic.<span style="color: #006633;">management</span>.<span style="color: #003399;">ApplicationException</span><span style="color: #339933;">:</span> prepare failed <span style="color: #000000; font-weight: bold;">for</span> receive
Module<span style="color: #339933;">:</span> receive <span style="color: #003399;">Error</span><span style="color: #339933;">:</span> Could not load receive<span style="color: #339933;">:</span> java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">StringIndexOutOfBoundsException</span><span style="color: #339933;">:</span> <span style="color: #003399;">String</span> index out of range<span style="color: #339933;">:</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>
&nbsp;
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>$ActivateTask.<span style="color: #006633;">createContainer</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">2398</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>$ActivateTask.<span style="color: #006633;">prepare</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">2310</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">processPrepareTask</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">866</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">prepareDelta</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">594</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">prepareUpdate</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">508</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">drs</span>.<span style="color: #006633;">internal</span>.<span style="color: #006633;">SlaveCallbackHandler</span>$1.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>SlaveCallbackHandler.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">25</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">kernel</span>.<span style="color: #006633;">ExecuteThread</span>.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>ExecuteThread.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">219</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">kernel</span>.<span style="color: #006633;">ExecuteThread</span>.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span>ExecuteThread.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">178</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">---------------</span> nested within<span style="color: #339933;">:</span> <span style="color: #339933;">------------------</span>
weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">ManagementException</span><span style="color: #339933;">:</span>  <span style="color: #339933;">-</span> with nested exception<span style="color: #339933;">:</span>
<span style="color: #009900;">&#91;</span>weblogic.<span style="color: #006633;">management</span>.<span style="color: #003399;">ApplicationException</span><span style="color: #339933;">:</span>
<span style="color: #003399;">Exception</span><span style="color: #339933;">:</span>weblogic.<span style="color: #006633;">management</span>.<span style="color: #003399;">ApplicationException</span><span style="color: #339933;">:</span> prepare failed <span style="color: #000000; font-weight: bold;">for</span> receive
Module<span style="color: #339933;">:</span> receive <span style="color: #003399;">Error</span><span style="color: #339933;">:</span> Could not load receive<span style="color: #339933;">:</span> java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">StringIndexOutOfBoundsException</span><span style="color: #339933;">:</span> <span style="color: #003399;">String</span> index out of range<span style="color: #339933;">:</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>
<span style="color: #009900;">&#93;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>$ActivateTask.<span style="color: #006633;">prepare</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">2327</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">processPrepareTask</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">866</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">prepareDelta</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">594</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">management</span>.<span style="color: #006633;">deploy</span>.<span style="color: #006633;">slave</span>.<span style="color: #006633;">SlaveDeployer</span>.<span style="color: #006633;">prepareUpdate</span><span style="color: #009900;">&#40;</span>SlaveDeployer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">508</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">drs</span>.<span style="color: #006633;">internal</span>.<span style="color: #006633;">SlaveCallbackHandler</span>$1.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>SlaveCallbackHandler.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">25</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">kernel</span>.<span style="color: #006633;">ExecuteThread</span>.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>ExecuteThread.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">219</span><span style="color: #009900;">&#41;</span>
at weblogic.<span style="color: #006633;">kernel</span>.<span style="color: #006633;">ExecuteThread</span>.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span>ExecuteThread.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">178</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>错误原因是Spring 2.5.5 与Weblogic 81之间不兼容造成的。<br />
详细看这里<br/><br />
<a href="http://jira.springframework.org/browse/SPR-4904">Doc: Deployment error on Weblogic 8.1 SP1/SP2 due to manifest issues &#8211; upgrade to SP6 required</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/10/%e7%bb%86%e8%8a%82%e8%83%8c%e5%90%8e%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ba%bf%e7%a8%8b%e5%8d%8f%e4%bd%9c%e4%b9%8b%e5%89%8d%e5%bf%85%e9%a1%bb%e5%85%88%e8%8e%b7%e5%be%97%e9%94%81.html' rel='bookmark' title='Permanent Link: 细节背后：为什么线程协作之前必须先获得锁?'>细节背后：为什么线程协作之前必须先获得锁?</a></li><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/05/weblogic-81sp3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim 快捷键</title>
		<link>http://blog.feihoo.com/2009/05/vim-usage.html</link>
		<comments>http://blog.feihoo.com/2009/05/vim-usage.html#comments</comments>
		<pubDate>Sun, 10 May 2009 12:56:31 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[Tools & Tips]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/35</guid>
		<description><![CDATA[All these stuff can be found in the manual. Put them here together to give me random review chance.
Some best resource about vim usage:

Bram Moolenaar:Seven habits of effective text editing: Good guide not just for vim usage. Some tips are copied from this.

General tips

Ctrl-N: auto completion
Position the cursor on the name of the function in [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/my-vimrc-file.html' rel='bookmark' title='Permanent Link: My Vimrc File'>My Vimrc File</a></li><li><a href='http://blog.feihoo.com/2009/05/google%e6%90%9c%e7%b4%a2%e4%bd%bf%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%94%ae.html' rel='bookmark' title='Permanent Link: Google搜索使用快捷键'>Google搜索使用快捷键</a></li><li><a href='http://blog.feihoo.com/2007/10/%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81%e7%9a%84%e6%82%b2%e5%93%80.html' rel='bookmark' title='Permanent Link: 转贴：华南虎照片造假论泛起是谁的悲哀'>转贴：华南虎照片造假论泛起是谁的悲哀</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>All these stuff can be found in the manual. Put them here together to give me random review chance.</p>
<h5>Some best resource about vim usage:</h5>
<ul>
<li><a href="http://www.moolenaar.net/habits.html">Bram Moolenaar:<strong>Seven habits of effective text editing</strong></a>: Good guide not just for vim usage. Some tips are copied from this.</li>
</ul>
<h5>General tips</h5>
<ul>
<li><strong>Ctrl-N</strong>: auto completion</li>
<li>Position the cursor on the name of the function in your file and type <strong>[I:</strong> Vim will show a list of all matches for the function name in included files. </li>
</ul>
<h5>Search &#038; Replace</h5>
<blockquote><p><font face="Verdana" size="2">这里有篇介绍文章：<a href="http://blog.feihoo.com/wp-admin/post/43/">VIM下,在文件及目录中查找字符串的方法</a> 。例如： vimgrep /登录/g **/*.html </font></p>
<p><font face="Verdana" size="2"><font face="Verdana" size="2">查找的结果会显示在 QuickList 列表中。对于Quicklist 的操纵，参考下面的文章 <a href="http://rickey-nctu.blogspot.com/2009/02/vim-quickfix.html">打造自己的VIM: QuickFix 編譯視窗</a></font><font face="Verdana" size="2"> 。 这篇文章还介绍了打造快捷键，因为我的Vim使用的版本比较多，而且直接切换到Qucik List然后使用行移动也很方便的，所以就不配置这些快捷键。 更详细的参考见官方手册 <a href="http://vimdoc.sourceforge.net/htmldoc/quickfix.html">Quickfix</a> 或者 :help quickfix</font></font></p></blockquote>
<h2><font face="Verdana" size="2">替换 </font></h2>
<blockquote><p><font face="Verdana" size="2"><font face="Verdana" size="2">可以在</font> vim 中查看帮助 :help argdo</font></p>
<p><font face="Verdana" size="2">示例：</font></p>
<p><font face="Verdana" size="2">:args **/*.htm</font></p>
<p><font face="Verdana" size="2">:argdo %s/旧/新/ge  |  update</font></p></blockquote>
<h5>Move around quickly</h5>
<ul>
<li>    Use <strong>%</strong> to jump from an open brace to its matching closing brace. Or from a "#if" to the matching "#endif". Actually, <strong>%</strong> can jump to many different matching items. It is very useful to check if () and {} constructs are balanced properly.</li>
<li> Use <strong>[{</strong> to jump back to the "{" at the start of the current code block.</li>
<li>Use <strong>gd</strong> to jump from the use of a variable to its local declaration.</li>
<li><strong>*</strong> command to search for other places</li>
<li><strong>CTRL-]</strong>, <strong>CTRL-t</strong> with ctags/cscope</li>
</ul>
<p>整页翻页 ctrl-f ctrl-b<br />
f就是forword b就是backward</p>
<p>翻半页<br />
ctrl-d ctlr-u<br />
d=down u=up</p>
<p>滚一行<br />
ctrl-e ctrl-y</p>
<p>zz 让光标所杂的行居屏幕中央<br />
zt 让光标所杂的行居屏幕最上一行 t=top<br />
zb 让光标所杂的行居屏幕最下一行 b=bottom</p>
<p>Highlight and increment search set:<br />
set hls is</p>
<h5>Block Operation (Delete a column):</h5>
<ul>
<li> start mode with Ctrl-v</li>
<li>specify a motion, e.g. G (to the end of the file), or use up / down keys</li>
<li>for the selected block specify an action, e.g. &#8216;d&#8217; for delete</li>
</ul>
<h5>Split Window</h5>
<p>set splitright &#8220;put the new split window in the right)</p>
<p>(some content cited from <a href="http://cscope.sourceforge.net/cscope_vim_tutorial.html">The Vim/Cscope tutorial</a>)</p>
<ul>
<li>move between windows via &#8216;CTRL-W w&#8217; (or CTRL-W arrow key, or CTRL-W h/j/k/l for left/up/down/right), </li>
<li>close a window via &#8216;CTRL-W c&#8217; (or good old &#8216;:q&#8217;), </li>
<li>make the current window the only one via &#8216;CTRL-W o&#8217;, </li>
<li>split a window into two via &#8216;CTRL-W s&#8217; (or &#8216;CTRL-W v&#8217; for a vertical split), </li>
<li>open a file in a new window via &#8216;:spl[it] filename&#8217;,</li>
<li>close a window &#8216;CTRL-W c&#8217;</li>
</ul>
<h5> cscope &#038; ctags </h5>
<p>The most completed tutorial I got from Internet:<br />
<a href="http://cscope.sourceforge.net/cscope_vim_tutorial.html">The Vim/Cscope tutorial</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/12/my-vimrc-file.html' rel='bookmark' title='Permanent Link: My Vimrc File'>My Vimrc File</a></li><li><a href='http://blog.feihoo.com/2009/05/google%e6%90%9c%e7%b4%a2%e4%bd%bf%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%94%ae.html' rel='bookmark' title='Permanent Link: Google搜索使用快捷键'>Google搜索使用快捷键</a></li><li><a href='http://blog.feihoo.com/2007/10/%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81%e7%9a%84%e6%82%b2%e5%93%80.html' rel='bookmark' title='Permanent Link: 转贴：华南虎照片造假论泛起是谁的悲哀'>转贴：华南虎照片造假论泛起是谁的悲哀</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/05/vim-usage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>中国国民收入的分配</title>
		<link>http://blog.feihoo.com/2009/05/%e4%b8%ad%e5%9b%bd%e5%9b%bd%e6%b0%91%e6%94%b6%e5%85%a5%e7%9a%84%e5%88%86%e9%85%8d.html</link>
		<comments>http://blog.feihoo.com/2009/05/%e4%b8%ad%e5%9b%bd%e5%9b%bd%e6%b0%91%e6%94%b6%e5%85%a5%e7%9a%84%e5%88%86%e9%85%8d.html#comments</comments>
		<pubDate>Sun, 10 May 2009 08:43:10 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/36</guid>
		<description><![CDATA[下面的内容转自《凤凰网》： http://news.ifeng.com/opinion/200905/0508_23_1145187.shtml  原载 《长江日报》 作者：晏扬(上海教师)
在很多发达国家，民众的收入总额占GDP的比重普遍在54%至65%之间，加上政府财政收入占40%左右，两者相加差不多是100%，能够还原成一块完整的大蛋糕。而中国的情况非常奇怪：政府的财政收入占GDP比重约为30%，百姓收入总额占GDP的比重却只有22%左右，两者相加只有52%，没法还原成一块完整的大蛋糕。中国国民收入这块大蛋糕为什么缺了一大块？
这块蛋糕当然是存在的，可分为这样几个部分：最大一部分是政府财政外收入。中央党校政策研究室副主任周天勇认为，2005年各级政府预算外收入达1.3万亿元，土地出让收入0.5万亿元，社保收入0.8万亿元，三项合计达2.6万亿元。而当年政府财政收入为3.2万亿元。3.2万亿元财政收入占当年GDP比重也许不高，但若加上财政之外的收入，整个政府所得占GDP的比重又有多高？
除此之外，一些垄断国企频频成为最赚钱企业，却并不向国家分红，收入都留在自己的腰包里。据经济学家胡鞍钢的研究，上世纪90年代后期，寻租性腐败、地下经济腐败、税收流失性腐败、公共投资与公共支出性腐败所造成的各类经济损失年均占GDP的13.2%至16.8%。也就是说，很大一块国民收入“蛋糕”，是以腐败的方式、灰色收入的方式流进了个人腰包，而这不会反映到统计数字上。
由此可以看出，我国政府所得占GDP比重绝对不低于国际水平，甚至要高于国际水平。更重要的是，财政收入占GDP比重较高的国家，其公共服务和社会保障完善，政府通过二次分配充分地还利于民。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>下面的内容转自《凤凰网》： <a href="http://news.ifeng.com/opinion/200905/0508_23_1145187.shtml">http://news.ifeng.com/opinion/200905/0508_23_1145187.shtml</a>  原载 《长江日报》 <strong>作者：晏扬</strong>(上海教师)</p>
<p>在很多发达国家，民众的收入总额占GDP的比重普遍在54%至65%之间，加上政府财政收入占40%左右，两者相加差不多是100%，能够还原成一块完整的大蛋糕。而中国的情况非常奇怪：政府的财政收入占GDP比重约为30%，百姓收入总额占GDP的比重却只有22%左右，两者相加只有52%，没法还原成一块完整的大蛋糕。中国国民收入这块大蛋糕为什么缺了一大块？</p>
<p>这块蛋糕当然是存在的，可分为这样几个部分：最大一部分是政府财政外收入。中央党校政策研究室副主任周天勇认为，2005年各级政府预算外收入达1.3万亿元，土地出让收入0.5万亿元，社保收入0.8万亿元，三项合计达2.6万亿元。而当年政府财政收入为3.2万亿元。3.2万亿元财政收入占当年GDP比重也许不高，但若加上财政之外的收入，整个政府所得占GDP的比重又有多高？</p>
<p>除此之外，一些垄断国企频频成为最赚钱企业，却并不向国家分红，收入都留在自己的腰包里。据经济学家胡鞍钢的研究，上世纪90年代后期，寻租性腐败、地下经济腐败、税收流失性腐败、公共投资与公共支出性腐败所造成的各类经济损失年均占GDP的13.2%至16.8%。也就是说，很大一块国民收入“蛋糕”，是以腐败的方式、灰色收入的方式流进了个人腰包，而这不会反映到统计数字上。</p>
<p>由此可以看出，我国政府所得占GDP比重绝对不低于国际水平，甚至要高于国际水平。更重要的是，财政收入占GDP比重较高的国家，其公共服务和社会保障完善，政府通过二次分配充分地还利于民。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/05/%e4%b8%ad%e5%9b%bd%e5%9b%bd%e6%b0%91%e6%94%b6%e5%85%a5%e7%9a%84%e5%88%86%e9%85%8d.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google搜索使用快捷键</title>
		<link>http://blog.feihoo.com/2009/05/google%e6%90%9c%e7%b4%a2%e4%bd%bf%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%94%ae.html</link>
		<comments>http://blog.feihoo.com/2009/05/google%e6%90%9c%e7%b4%a2%e4%bd%bf%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%94%ae.html#comments</comments>
		<pubDate>Sat, 09 May 2009 08:30:53 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[Tools & Tips]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/34</guid>
		<description><![CDATA[Google 搜索支持快捷键，对于只用键盘的人们是十分重要的。
Navigate search results quickly and easily, minimizing use of your mouse. Current keyboard shortcuts include:


Key
Action


J
Selects the next result.


K
Selects the previous result.


O
Opens the selected result.


&#60;Enter&#62;
Opens the selected result.


/
Puts the cursor in the search box.


&#60;Esc&#62;
Removes the cursor from the search box.


默认情况下，谷歌中国的搜索是支持快捷键的，但是 Google.com 不支持。要打开对快捷键的支持，你需要去下面的页面去激活快捷键功能。http://www.google.com/experimental/index.html
参考：
http://www.showsing.net/logs/google-search-of-shortcuts.html


Related posts:Vim 快捷键云计算：安全是七寸 &#8212; Google App Engine 宕机我的VPS使用经验


Related posts:<ol><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2010/02/%e4%ba%91%e8%ae%a1%e7%ae%97%ef%bc%9a%e5%ae%89%e5%85%a8%e6%98%af%e4%b8%83%e5%af%b8-google-app-engine-%e5%ae%95%e6%9c%ba.html' rel='bookmark' title='Permanent Link: 云计算：安全是七寸 &#8212; Google App Engine 宕机'>云计算：安全是七寸 &#8212; Google App Engine 宕机</a></li><li><a href='http://blog.feihoo.com/2010/03/my_vps_experience.html' rel='bookmark' title='Permanent Link: 我的VPS使用经验'>我的VPS使用经验</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Google 搜索支持快捷键，对于只用键盘的人们是十分重要的。</p>
<p>Navigate search results quickly and easily, minimizing use of your mouse. Current keyboard shortcuts include:</p>
<table class="shortcut" cellpadding="2" cellspacing="0">
<tr>
<td>Key</td>
<td>Action</td>
</tr>
<tr>
<td><strong>J</strong></td>
<td>Selects the next result.</td>
</tr>
<tr>
<td><strong>K</strong></td>
<td>Selects the previous result.</td>
</tr>
<tr>
<td><strong>O</strong></td>
<td>Opens the selected result.</td>
</tr>
<tr>
<td><strong>&lt;Enter&gt;</strong></td>
<td>Opens the selected result.</td>
</tr>
<tr>
<td><strong>/</strong></td>
<td>Puts the cursor in the search box.</td>
</tr>
<tr>
<td><strong>&lt;Esc&gt;</strong></td>
<td>Removes the cursor from the search box.</td>
</tr>
</table>
<p>默认情况下，谷歌中国的搜索是支持快捷键的，但是 Google.com 不支持。要打开对快捷键的支持，你需要去下面的页面去激活快捷键功能。<a href="http://www.google.com/experimental/index.html">http://www.google.com/experimental/index.html</a></p>
<p>参考：</p>
<p><a href="http://www.showsing.net/logs/google-search-of-shortcuts.html" class="broken_link" >http://www.showsing.net/logs/google-search-of-shortcuts.html</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2010/02/%e4%ba%91%e8%ae%a1%e7%ae%97%ef%bc%9a%e5%ae%89%e5%85%a8%e6%98%af%e4%b8%83%e5%af%b8-google-app-engine-%e5%ae%95%e6%9c%ba.html' rel='bookmark' title='Permanent Link: 云计算：安全是七寸 &#8212; Google App Engine 宕机'>云计算：安全是七寸 &#8212; Google App Engine 宕机</a></li><li><a href='http://blog.feihoo.com/2010/03/my_vps_experience.html' rel='bookmark' title='Permanent Link: 我的VPS使用经验'>我的VPS使用经验</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/05/google%e6%90%9c%e7%b4%a2%e4%bd%bf%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%94%ae.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装Sybase SQL Anywhere 7.02后Path路径丢失</title>
		<link>http://blog.feihoo.com/2009/04/%e5%ae%89%e8%a3%85sybase-sql-anywhere-702%e5%90%8epath%e8%b7%af%e5%be%84%e4%b8%a2%e5%a4%b1.html</link>
		<comments>http://blog.feihoo.com/2009/04/%e5%ae%89%e8%a3%85sybase-sql-anywhere-702%e5%90%8epath%e8%b7%af%e5%be%84%e4%b8%a2%e5%a4%b1.html#comments</comments>
		<pubDate>Thu, 30 Apr 2009 12:58:37 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[sybase anywhere]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/31</guid>
		<description><![CDATA[今天下午，安装完成Sybase SQL Anywhere 7.02后，按照提示重新启动。重新启动以后，发现很多程序启动不了。一查环境变量，Path变量竟然变成了
D:\software\sybaseASA7\SQLAnywhere7\win32;D:\software\sybaseASA7\Shared\win32;D:\software\sybaseASA7\Shared\Sybase Central 4.0\java
后悔莫及。于是从网上找找有没有备份的工具，没有找到，倒是找到一个环境变量编辑器：Windows Environment Variables Manager 。 这个东西的好处就是编辑变量更加方便些，尤其是像Path那样的路径。详细可以参考它主页上的图片。这个软件可以将环境变量保存到某个文件中。 如果能够做成TaskSchedule，在以后都定时自动备份到某个位置，就再也不用担心环境变量丢失的问题了。
我还发现了个不错的功能，就是如果发现指定的环境变量路径不存在时，会标红表示。



Related posts:在 Vista 上安装 Apache 2.2, PHP 5.2.6


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>今天下午，安装完成Sybase SQL Anywhere 7.02后，按照提示重新启动。重新启动以后，发现很多程序启动不了。一查环境变量，Path变量竟然变成了</p>
<p><code>D:\software\sybaseASA7\SQLAnywhere7\win32;D:\software\sybaseASA7\Shared\win32;D:\software\sybaseASA7\Shared\Sybase Central 4.0\java</code></p>
<p>后悔莫及。于是从网上找找有没有备份的工具，没有找到，倒是找到一个环境变量编辑器：<a href="http://www.codeproject.com/KB/system/EnvMan.aspx">Windows Environment Variables Manager</a> 。 这个东西的好处就是编辑变量更加方便些，尤其是像Path那样的路径。详细可以参考它主页上的图片。这个软件可以将环境变量保存到某个文件中。 如果能够做成TaskSchedule，在以后都定时自动备份到某个位置，就再也不用担心环境变量丢失的问题了。</p>
<p>我还发现了个不错的功能，就是如果发现指定的环境变量路径不存在时，会标红表示。</p>
<p><img src="http://blog.feihoo.com/wp-content/uploads/2009/04/capture.JPG" alt="capture.JPG" /></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/04/%e5%ae%89%e8%a3%85sybase-sql-anywhere-702%e5%90%8epath%e8%b7%af%e5%be%84%e4%b8%a2%e5%a4%b1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Command &amp; Shell Tips (1)</title>
		<link>http://blog.feihoo.com/2009/03/linux-command-shell-tips-1.html</link>
		<comments>http://blog.feihoo.com/2009/03/linux-command-shell-tips-1.html#comments</comments>
		<pubDate>Sun, 22 Mar 2009 06:30:43 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[Tools & Tips]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/?p=411</guid>
		<description><![CDATA[此文用于记录使用 Linux 过程中的与 shell 和 commands 有关的有意思的小知识。
1. The problem of ftp url:
  在写一个自动备份的脚本时发现，如果 username 中有 @ 符号时，使用 curl ftp://username:password@host/file 是不行的。这可能是 ftp url 地址格式的一个瑕疵。具体参考 Google Group上的一个讨论 （对于该讨论的正确性本人没有特别考证， 根据作者的观点，在整个URL中出现 &#8220;:&#8221;、&#8221;/&#8221;、&#8221;@&#8221; 都是不可行的。如果您发现此论断有问题请留言）。 还好 curl 可以使用 -n 指定使用 ~/.netrc 中的登录标识。
2. 直接使用 sed 命令批量替换文件中的内容

sed -i 's/\/var\/svn/d:\/data\/svn/g' `grep /var/svn -rl ./*/conf/trac.ini`

sed 命令还有很多用法，可惜平时用得不多，经常忘记了要查资料。
3. 使用 find 命令批量操作 Trac 项目同步SVN

find -maxdepth 1 -mindepth [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>此文用于记录使用 Linux 过程中的与 shell 和 commands 有关的有意思的小知识。</p>
<p>1. The problem of ftp url:<br />
  在写一个自动备份的脚本时发现，如果 username 中有 @ 符号时，使用 curl ftp://username:password@host/file 是不行的。这可能是 ftp url 地址格式的一个瑕疵。具体参考 <a href="http://groups.google.com/group/microsoft.public.inetserver.iis.ftp/msg/033ed2bff0c2d8bf">Google Group上的一个讨论</a> （对于该讨论的正确性本人没有特别考证， 根据作者的观点，在整个URL中出现 &#8220;:&#8221;、&#8221;/&#8221;、&#8221;@&#8221; 都是不可行的。如果您发现此论断有问题请留言）。 还好 curl 可以使用 -n 指定使用 ~/.netrc 中的登录标识。</p>
<p>2. 直接使用 sed 命令批量替换文件中的内容</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'s/\/var\/svn/d:\/data\/svn/g'</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #660033;">-rl</span> .<span style="color: #000000; font-weight: bold;">/*/</span>conf<span style="color: #000000; font-weight: bold;">/</span>trac.ini<span style="color: #000000; font-weight: bold;">`</span></pre></div></div>

<p>sed 命令还有很多用法，可惜平时用得不多，经常忘记了要查资料。</p>
<p>3. 使用 find 命令批量操作 Trac 项目同步SVN</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #660033;">-maxdepth</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-mindepth</span> <span style="color: #000000;">1</span>  <span style="color: #660033;">-type</span> d <span style="color: #660033;">-print</span> <span style="color: #660033;">-exec</span> trac-admin <span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span> resync \;</pre></div></div>

<p>对仅仅处理当前目录下的子目录的限定方法比较笨，也许有更好的方法。</p>
<p>find命令是最难用的，再提供一个统计代码行总数的例子。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">find</span> stat5.1projects<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-path</span> <span style="color: #ff0000;">'*.common/*'</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-path</span> <span style="color: #ff0000;">'*bin*'</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-path</span> <span style="color: #ff0000;">'*st
at.statuser*'</span> <span style="color: #660033;">-a</span> \<span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #660033;">-name</span> <span style="color: #000000; font-weight: bold;">*</span>.java <span style="color: #660033;">-or</span> <span style="color: #660033;">-name</span> <span style="color: #000000; font-weight: bold;">*</span>.sql <span style="color: #660033;">-or</span> <span style="color: #660033;">-name</span> <span style="color: #000000; font-weight: bold;">*</span>.xml \<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">wc</span>
<span style="color: #660033;">-l</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>pre <span style="color: #007800;">lang</span>=<span style="color: #ff0000;">&quot;bash&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
然后直接通过Shell计算出平均每天的代码行：
<span style="color: #000000; font-weight: bold;">&lt;</span>pre <span style="color: #007800;">lang</span>=<span style="color: #ff0000;">&quot;bash&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">8888</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">22</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>4. tar error message. </p>
<blockquote><p>Removing leading `/&#8217; from member names</p></blockquote>
<p>It&#8217;s really annoying when it present in a crontab script. That is why (refer from <a href="http://www.linuxquestions.org/questions/linux-general-1/bintar-removing-leading-from-member-names-269508/#post1366021">here</a>):</p>
<blockquote><p>what do you want suggestions about? tar archives don&#8217;t contain absolute paths, only relative ones. this is correct behaviour, as the alternative is really nasty and illogical. this is the same way that other compression programs like winzip work. when you untar somethign you provide an destination directory, which implicity is &#8216;/&#8217; in your case&#8230; but it should be explicit for logical operation</p></blockquote>
<p>The resolution is using relative path. e.g.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cf</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>user<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>wp-backup.tar web
<span style="color: #666666; font-style: italic;"># NOT below</span>
<span style="color: #666666; font-style: italic;"># cd /home/user/backup</span>
<span style="color: #666666; font-style: italic;"># tar -cf wp-backup.tar /var/www/web</span></pre></div></div>

<p>5. svn: Delete unversioned files</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> status <span style="color: #660033;">--no-ignore</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">'^[I?]'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/^[I?]//'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span></pre></div></div>

<p><a href="http://subversion.tigris.org/faq.html">Here</a> are more frequent ask questions on subversion.</p>
<p>6. 防火墙后面的git通过代理访问：<br />
  设置GIT_PROXY_COMMAND系统变量即可。具体参考：<a href="http://www.patthoyts.tk/blog/using-git-with-socks-proxy.html">Using Git with a SOCKS proxy</a></p>
<p>7. Ubuntu添加sudo用户:<br />
Edit file /etc/sudoers, add line:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">bob  <span style="color: #007800;">ALL</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span>ALL<span style="color: #7a0874; font-weight: bold;">&#41;</span> ALL</pre></div></div>

<p> 参考：http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch09_:_Linux_Users_and_Sudo</p>
<p>8. Unix timestamp 与 readable date 之间的转换：<br />
shell:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">@</span><span style="color: #000000;">1232144092</span> <span style="color: #666666; font-style: italic;">#timestamp to date</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">date</span> –<span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">date</span></span>=’<span style="color: #000000;">1970</span>-01-01 <span style="color: #000000;">1000000000</span> sec GMT’</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #660033;">-d</span> today +<span style="color: #000000; font-weight: bold;">%</span>s <span style="color: #666666; font-style: italic;">#date to stamp</span></pre></div></div>

<p>Perl:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #660033;">-d</span> today +<span style="color: #000000; font-weight: bold;">%</span>s <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print localtime(&lt;&gt;).&quot;\n&quot;'</span> <span style="color: #666666; font-style: italic;"># to readable time</span></pre></div></div>

<p>gawk:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #660033;">-d</span> today +<span style="color: #000000; font-weight: bold;">%</span>s <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gawk</span> <span style="color: #ff0000;">'END{print strftime(&quot;%c&quot;,$1)}'</span> <span style="color: #666666; font-style: italic;"># to readable time</span></pre></div></div>



<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/03/linux-command-shell-tips-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>只有创造和使用才能学会英文</title>
		<link>http://blog.feihoo.com/2009/02/%e9%98%85%e8%af%bb%e5%92%8c%e8%83%8c%e8%af%b5%e6%97%a0%e6%b3%95%e4%bd%bf%e4%bd%a0%e5%ad%a6%e4%bc%9a%e8%8b%b1%e6%96%87%e6%80%9d%e7%bb%b4%ef%bc%8c%e5%8f%aa%e6%9c%89%e9%80%9a%e8%bf%87%e8%87%aa%e5%b7%b1.html</link>
		<comments>http://blog.feihoo.com/2009/02/%e9%98%85%e8%af%bb%e5%92%8c%e8%83%8c%e8%af%b5%e6%97%a0%e6%b3%95%e4%bd%bf%e4%bd%a0%e5%ad%a6%e4%bc%9a%e8%8b%b1%e6%96%87%e6%80%9d%e7%bb%b4%ef%bc%8c%e5%8f%aa%e6%9c%89%e9%80%9a%e8%bf%87%e8%87%aa%e5%b7%b1.html#comments</comments>
		<pubDate>Mon, 09 Feb 2009 14:34:15 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@English]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/30</guid>
		<description><![CDATA[这是华尔街英语作业的 Student Manual Guide 上的一句话，至理名言。我最喜欢的华尔街英语上的课程，就是电脑给出上句，自己说出下句的练习。
阅读和背诵无法使你学会英文思维，只有创造和使用才能学会！
华尔街的作业好多。有的作业难度也不小。 我最重要的是完成 Student Manual，尤其是 Listen exercise 。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>这是华尔街英语作业的 Student Manual Guide 上的一句话，至理名言。我最喜欢的华尔街英语上的课程，就是电脑给出上句，自己说出下句的练习。</p>
<p>阅读和背诵无法使你学会英文思维，只有创造和使用才能学会！</p>
<p>华尔街的作业好多。有的作业难度也不小。 我最重要的是完成 Student Manual，尤其是 Listen exercise 。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/02/%e9%98%85%e8%af%bb%e5%92%8c%e8%83%8c%e8%af%b5%e6%97%a0%e6%b3%95%e4%bd%bf%e4%bd%a0%e5%ad%a6%e4%bc%9a%e8%8b%b1%e6%96%87%e6%80%9d%e7%bb%b4%ef%bc%8c%e5%8f%aa%e6%9c%89%e9%80%9a%e8%bf%87%e8%87%aa%e5%b7%b1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex中的对象比较（相等性）</title>
		<link>http://blog.feihoo.com/2009/01/flex%e4%b8%ad%e7%9a%84%e5%af%b9%e8%b1%a1%e6%af%94%e8%be%83%ef%bc%88%e7%9b%b8%e7%ad%89%e6%80%a7%ef%bc%89.html</link>
		<comments>http://blog.feihoo.com/2009/01/flex%e4%b8%ad%e7%9a%84%e5%af%b9%e8%b1%a1%e6%af%94%e8%be%83%ef%bc%88%e7%9b%b8%e7%ad%89%e6%80%a7%ef%bc%89.html#comments</comments>
		<pubDate>Mon, 05 Jan 2009 02:52:31 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/29</guid>
		<description><![CDATA[Flex中的对象相等性是什么样的呢？国外有篇文章讨论了这一问题：Architectural Atrocities, part 8: is there no equality? 
下面是我从Flex的参考手册中找出来的一些东西。
Equality operators
The equality operators take two operands, compare their values, and return a  Boolean value. All the equality operators, as listed in the following table,  have equal precedence:


Operator
Operation performed


== 
Equality


!= 
Inequality


=== 
Strict equality


!== 
Strict inequality


IUID


Package
mx.core


Interface
public interface IUID


The IUID interface defines the interface for objects that [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2010/04/dump_memcached.html' rel='bookmark' title='Permanent Link: 导出Memcached中的全部数据'>导出Memcached中的全部数据</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Flex中的对象相等性是什么样的呢？国外有篇文章讨论了这一问题：<a href="http://blog.iconara.net/2007/11/25/architectural-atrocities-part-8-is-there-no-equality/">Architectural Atrocities, part 8: is there no equality? </a></p>
<p>下面是我从Flex的参考手册中找出来的一些东西。</p>
<h2 class="h2nobreak"><a title="129993" id="129993" name="129993"></a>Equality operators</h2>
<p><a title="129993" id="129993" name="129993"></a>The equality operators take two operands, compare their values, and return a  Boolean value. All the equality operators, as listed in the following table,  have equal precedence:</p>
<table border="0" cellpadding="0" cellspacing="0" height="80" width="280">
<tr>
<th nowrap="nowrap">Operator</th>
<th nowrap="nowrap">Operation performed</th>
</tr>
<tr>
<td><samp class="codeph">== </samp></td>
<td>Equality</td>
</tr>
<tr>
<td><samp class="codeph">!= </samp></td>
<td>Inequality</td>
</tr>
<tr>
<td><samp class="codeph">=== </samp></td>
<td>Strict equality</td>
</tr>
<tr>
<td><samp class="codeph">!== </samp></td>
<td>Strict inequality</td>
</tr>
</table>
<hr />IUID</p>
<table class="classHeaderTable" cellpadding="0" cellspacing="0">
<tr>
<td class="classHeaderTableLabel">Package</td>
<td>mx.core</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Interface</td>
<td class="classSignature">public interface IUID</td>
</tr>
</table>
<p>The IUID interface defines the interface for objects that must have  Unique Identifiers (UIDs) to uniquely identify the object. UIDs do not need to  be universally unique for most uses in Flex. One exception is for messages send  by data services.</p>
<hr />
<h1>Data providers and the uid property</h1>
<p><!--googleoff: index--><!-- END PAGE TITLE --><!-- BEGIN CONTENT WRAPPER --></p>
<p id="content_wrapper"><!--googleon: index-->Flex data provider controls use a unique identifier (UID) to track data  items. Flex can automatically create and manage UIDs. However, there are  circumstances when you must supply your own <samp class="codeph">uid</samp>  property by implementing the IUID  interface, and there are circumstances when supplying your own <samp class="codeph">uid</samp> property improves processing efficiency.</p>
<p>Because the Object and Array classes are dynamic, you normally do not do  anything special for data objects whose items belong to these classes. However,  you should consider implementing the IUID if your data object items belong to  custom classes that you define.</p>
<p class="note"><span class="notetitle">Note: </span>When Flex creates a UID for  an object, such as an item in an ArrayCollection, it adds the UID as an <samp class="codeph">mx_internal_uid</samp> property of the item. Flex creates <samp class="codeph">mx_internal_uid</samp> properties for any objects that are dynamic  and do not have bindable properties. To avoid having Flex create <samp class="codeph">mx_internal_uid</samp> properties, the object class should do any  of the following things: have at least one property with a <samp class="codeph">[Bindable]</samp> metadata tag; implement the IUID interface; or  have a <samp class="codeph">uid</samp><em> property with a value.</em></p>
<p>If Flex must consider two or more different objects to be identical, the  objects must implement the IUID interface so that you can assign the same <samp class="codeph">uid</samp> value to multiple objects. A typical case where you must  implement the IUID interface is an application that uses paged collections. As  the cursor moves through the collection, a particular item might be pulled down  from the server and released from memory repeatedly. Every time the item is  pulled into memory, a new object is created to represent the item. If you need  to compare items for equality, Flex should consider all objects that represent  the same item to be the same &#8220;thing.&#8221;</p>
<p>More common than the case where you must implement the IUID interface is the  case where you can improve processing efficiency by doing so. As a general rule,  you do not implement the IUID interface if the data provider elements are  members of dynamic classes. Flex can automatically create a <samp class="codeph">uid</samp> property for these classes. There is still some  inefficiency, however, so you might consider implementing the IUID interface if  processing efficiency is particularly important.</p>
<p>In all other cases, Flex uses the Dictionary mechanism to manage the <samp class="codeph">uid</samp>, which might not be as efficient as supplying your own  UID.</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2010/04/dump_memcached.html' rel='bookmark' title='Permanent Link: 导出Memcached中的全部数据'>导出Memcached中的全部数据</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2009/01/flex%e4%b8%ad%e7%9a%84%e5%af%b9%e8%b1%a1%e6%af%94%e8%be%83%ef%bc%88%e7%9b%b8%e7%ad%89%e6%80%a7%ef%bc%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>第一次参加投标过程&#8211;数次蓝屏和紧张</title>
		<link>http://blog.feihoo.com/2008/12/%e7%ac%ac%e4%b8%80%e6%ac%a1%e5%8f%82%e5%8a%a0%e6%8a%95%e6%a0%87%e8%bf%87%e7%a8%8b-%e6%95%b0%e6%ac%a1%e8%93%9d%e5%b1%8f%e5%92%8c%e7%b4%a7%e5%bc%a0.html</link>
		<comments>http://blog.feihoo.com/2008/12/%e7%ac%ac%e4%b8%80%e6%ac%a1%e5%8f%82%e5%8a%a0%e6%8a%95%e6%a0%87%e8%bf%87%e7%a8%8b-%e6%95%b0%e6%ac%a1%e8%93%9d%e5%b1%8f%e5%92%8c%e7%b4%a7%e5%bc%a0.html#comments</comments>
		<pubDate>Mon, 29 Dec 2008 08:39:44 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$软件工程与管理]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/28</guid>
		<description><![CDATA[        今天陪同事去一个项目的投标，我负责技术演示的支持。前两天加班加点赶制投标的演示Demo，昨天晚上甚至加班到晚上2点，终于搞定。今天早上同事熟悉了我们的Demo，一切稳定，还是很正常的。心里觉得有底，自己的负责的部分没有问题。
但是在中午的时候，发现还几次我这个破Vista系统，蓝屏了好几次。但是那时犯困呢，也没有仔细想，继续睡。
下午1点多，跟同事去投标现场，这时候发现机器中午蓝屏后还需要启动。照说我的机器配置也很好了，可是启动的速度就是那么慢。尤其是硬盘，硬盘灯简直是疯了一般地闪，可是速度还是很慢。好不容易把装有数据库的虚拟机打开，启动数据库的时候，忽然，蓝屏了。 可恶的Vista。
接下来又重新启动了一遍，打开虚拟机，启动数据库，打开老慢的Eclipse，打开IE窗口的时候，又蓝屏了！可恶的Vista，我已经进了讲标的会议室，坐在座位上了。天啊，简直要崩溃。
只能在启动一次，这次是先打开虚拟机，然后启动数据库，最后打开老慢的Eclipse，将应用跑起来，再打开了两个演示用的IE窗口。心中一直在祈祷，上帝保佑。 还好，终于合作了一次。将笔记本放到了讲标的讲台上，于是只能来默默祈祷，保佑我的机器能够顺利配合同事完成演示。如果这是蓝屏，那就真要崩溃了。总共十分钟的演示时间，哪有可能再重启机器！ 同事在演示的时候，我的心里可是七上八下，暗自祈祷，偶尔盯下屏幕生怕万一。
最后，终于演示完成了。我看同事也很紧张的，回来的路上，我跟同事说，下次要是投标，一定要准备两个笔记本，两套系统，以防万一。
演示的过程中，专家们提了一些问题，有个专家提问很尖锐，虽然比较刺，但是提的问题的确很到位。看来，我们还是要多准备的。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>        今天陪同事去一个项目的投标，我负责技术演示的支持。前两天加班加点赶制投标的演示Demo，昨天晚上甚至加班到晚上2点，终于搞定。今天早上同事熟悉了我们的Demo，一切稳定，还是很正常的。心里觉得有底，自己的负责的部分没有问题。</p>
<p>但是在中午的时候，发现还几次我这个破Vista系统，蓝屏了好几次。但是那时犯困呢，也没有仔细想，继续睡。</p>
<p>下午1点多，跟同事去投标现场，这时候发现机器中午蓝屏后还需要启动。照说我的机器配置也很好了，可是启动的速度就是那么慢。尤其是硬盘，硬盘灯简直是疯了一般地闪，可是速度还是很慢。好不容易把装有数据库的虚拟机打开，启动数据库的时候，忽然，蓝屏了。 可恶的Vista。</p>
<p>接下来又重新启动了一遍，打开虚拟机，启动数据库，打开老慢的Eclipse，打开IE窗口的时候，又蓝屏了！可恶的Vista，我已经进了讲标的会议室，坐在座位上了。天啊，简直要崩溃。</p>
<p>只能在启动一次，这次是先打开虚拟机，然后启动数据库，最后打开老慢的Eclipse，将应用跑起来，再打开了两个演示用的IE窗口。心中一直在祈祷，上帝保佑。 还好，终于合作了一次。将笔记本放到了讲标的讲台上，于是只能来默默祈祷，保佑我的机器能够顺利配合同事完成演示。如果这是蓝屏，那就真要崩溃了。总共十分钟的演示时间，哪有可能再重启机器！ 同事在演示的时候，我的心里可是七上八下，暗自祈祷，偶尔盯下屏幕生怕万一。</p>
<p>最后，终于演示完成了。我看同事也很紧张的，回来的路上，我跟同事说，下次要是投标，一定要准备两个笔记本，两套系统，以防万一。</p>
<p>演示的过程中，专家们提了一些问题，有个专家提问很尖锐，虽然比较刺，但是提的问题的确很到位。看来，我们还是要多准备的。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/12/%e7%ac%ac%e4%b8%80%e6%ac%a1%e5%8f%82%e5%8a%a0%e6%8a%95%e6%a0%87%e8%bf%87%e7%a8%8b-%e6%95%b0%e6%ac%a1%e8%93%9d%e5%b1%8f%e5%92%8c%e7%b4%a7%e5%bc%a0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20%的人占有80%的储蓄，怎么拉动内需？</title>
		<link>http://blog.feihoo.com/2008/12/20%e7%9a%84%e4%ba%ba%e5%8d%a0%e6%9c%8980%e7%9a%84%e5%82%a8%e8%93%84%ef%bc%8c%e6%80%8e%e4%b9%88%e6%8b%89%e5%8a%a8%e5%86%85%e9%9c%80%ef%bc%9f.html</link>
		<comments>http://blog.feihoo.com/2008/12/20%e7%9a%84%e4%ba%ba%e5%8d%a0%e6%9c%8980%e7%9a%84%e5%82%a8%e8%93%84%ef%bc%8c%e6%80%8e%e4%b9%88%e6%8b%89%e5%8a%a8%e5%86%85%e9%9c%80%ef%bc%9f.html#comments</comments>
		<pubDate>Sun, 14 Dec 2008 05:51:25 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@finance]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/27</guid>
		<description><![CDATA[ 这篇文章里提到了几个有关储蓄的数据：巨额储蓄存款与和谐社会构建探析
1. 据中国人民银行公布的数据，在中国的全部居民储蓄存款中，最富有的20%人群拥有全部存款量的80%（其中极富有的3%的人拥有居民储蓄存款额的47%），而其余80%的人口才拥有存款的20%。
2.据有关学者两年前的估计，中国拥有100万以上财产的居民有100万人左右；年收入10万元以上的人口占中国总人口的1%。
3. 从出口拉动增长方面，连续多年出口增长都在30%以上，目前中国净出口对GDP增长的贡献率已达到了 37％。中国的外贸依存度已经达到80％，大大高于其他发达国家和发展中国家的水平，成为世界上外贸依存度最高的国家。（博主注：这里所指的目前应该是2005年？）
另外还有一篇文章：美国，低储蓄率探因
这篇文章里提到了一点：一个国家的储蓄率决定于私人部门和公共部门的支出比率。（国民储蓄率是指国民收入与私人及政府消费的差额占国民收入的比重。）
在目前的国情下，对于占有国民储蓄达到 80%的那20%的居民，刺激消费的措施将难以起到作用。对于另外80%的居民，即使大幅扩大消费，作用也不会太大。所以，国家只能选择基建的方式来刺激内需。当然，如果国家增加用于民生的公共开支（不是几千亿的毛毛雨，应该要几个万亿才能起作用），也许对降低比较贫穷的居民的消费是有意义的。
相信在未来的一段时间里，贫富差距还会越来越大。如果这种局面没有根本的改变，希望大幅提高消费对GDP的贡献率将是不太可能的。GDP还是要依赖于投资和出口来保持经济增长。 如果投资和增长不能解决问题，经济将陷入困境。
作为参照，人民网这篇文章：国际金融报：美国贫富差距创下40年新高 转载国际金融报的文章说，“美国最富有的20％家庭中位收入上涨了2.2％，即3592美元，达到16.6万美元，占全体收入的50.4％。而最贫穷的20％家庭中位收入仅上升了0.2％，即17美元，达到11288美元，占全体收入的3.4％，创下自上世纪60年代中期以来的最低比例。” 不知道美国人看了中国人的20%占有80%的储蓄是不是会感到欣慰？


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p> 这篇文章里提到了几个有关储蓄的数据：<a href="http://www.cmo.com.cn/0701z/jrtd/wsz.htm">巨额储蓄存款与和谐社会构建探析</a></p>
<blockquote><p>1. 据中国人民银行公布的数据，在中国的全部居民储蓄存款中，最富有的20%人群拥有全部存款量的80%（其中极富有的3%的人拥有居民储蓄存款额的47%），而其余80%的人口才拥有存款的20%。</p>
<p>2.据有关学者两年前的估计，中国拥有100万以上财产的居民有100万人左右；年收入10万元以上的人口占中国总人口的1%。</p>
<p>3. 从出口拉动增长方面，连续多年出口增长都在30%以上，目前中国净出口对GDP增长的贡献率已达到了 37％。中国的外贸依存度已经达到80％，大大高于其他发达国家和发展中国家的水平，成为世界上外贸依存度最高的国家。（博主注：这里所指的目前应该是2005年？）</p></blockquote>
<p>另外还有一篇文章：<a href="http://www.cei.gov.cn/loadpage.aspx?Page=ShowDoc&amp;BlockAlias=sjhwsd&amp;CategoryAlias=zonghe/ggmflm_zh&amp;ProductAlias=haiwshd&amp;filename=/doc/sjhwsd/200501191344.xml">美国，低储蓄率探因</a></p>
<p>这篇文章里提到了一点：一个国家的储蓄率决定于私人部门和公共部门的支出比率。（国民储蓄率是指国民收入与私人及政府消费的差额占国民收入的比重。）</p>
<p>在目前的国情下，对于占有国民储蓄达到 80%的那20%的居民，刺激消费的措施将难以起到作用。对于另外80%的居民，即使大幅扩大消费，作用也不会太大。所以，国家只能选择基建的方式来刺激内需。当然，如果国家增加用于民生的公共开支（不是几千亿的毛毛雨，应该要几个万亿才能起作用），也许对降低比较贫穷的居民的消费是有意义的。</p>
<p>相信在未来的一段时间里，贫富差距还会越来越大。如果这种局面没有根本的改变，希望大幅提高消费对GDP的贡献率将是不太可能的。GDP还是要依赖于投资和出口来保持经济增长。 如果投资和增长不能解决问题，经济将陷入困境。</p>
<p>作为参照，人民网这篇文章：<a href="http://news.people.com.cn/GB/37454/37462/4761749.html">国际金融报：美国贫富差距创下40年新高</a> 转载国际金融报的文章说，“美国最富有的20％家庭中位收入上涨了2.2％，即3592美元，达到16.6万美元，占全体收入的50.4％。而最贫穷的20％家庭中位收入仅上升了0.2％，即17美元，达到11288美元，占全体收入的3.4％，创下自上世纪60年代中期以来的最低比例。” 不知道美国人看了中国人的20%占有80%的储蓄是不是会感到欣慰？</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/12/20%e7%9a%84%e4%ba%ba%e5%8d%a0%e6%9c%8980%e7%9a%84%e5%82%a8%e8%93%84%ef%bc%8c%e6%80%8e%e4%b9%88%e6%8b%89%e5%8a%a8%e5%86%85%e9%9c%80%ef%bc%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>加班文化</title>
		<link>http://blog.feihoo.com/2008/12/%e6%88%91%e4%bb%ac%e5%85%ac%e5%8f%b8%e9%87%8c%e6%8c%a5%e4%b9%8b%e4%b8%8d%e5%8e%bb%e7%9a%84%e5%8a%a0%e7%8f%ad%e6%96%87%e5%8c%96.html</link>
		<comments>http://blog.feihoo.com/2008/12/%e6%88%91%e4%bb%ac%e5%85%ac%e5%8f%b8%e9%87%8c%e6%8c%a5%e4%b9%8b%e4%b8%8d%e5%8e%bb%e7%9a%84%e5%8a%a0%e7%8f%ad%e6%96%87%e5%8c%96.html#comments</comments>
		<pubDate>Sat, 13 Dec 2008 15:05:59 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$软件工程与管理]]></category>

		<guid isPermaLink="false">http://blog.feihoo.com/archives/26</guid>
		<description><![CDATA[今天和同事在一起吃饭的时候，聊起了公司里的加班现象。这位同事是刚到公司才三个月的新员工，他说自从来到公司里开始，每天如果能够在七点下班那简直就是高兴不已的事情。在这短短的时间里，明显的感觉到身体有了很大的变化，感受到身体上的损害和痛苦。基本上每天都是紧张的去做事情，但是还是做不完，还是要加班。不仅工作日的晚上要加班，连周末也经常不得不去公司&#8211;如果你想正常完成各项工作的话。
除了加不完的班，另外就是经常有突发性的任务忽然需要去处理。该同事讲到有一天六点多，要下班的时候，忽然PM告知他明天要去演示，要求他立即搭建演示环境，因为他明天要去见客户，要给客户演示。这下，搞得他不得不忙到很晚，快十一点时，拖着疲惫的身体回家。
仔细观察我们公司的加班文化，发现同是在一个公司的开发部门，有点行业组加班相对要少一些，有的行业组加班相对要多一些。第一个原因，可能跟领导有关系，有点部门领导很勤奋、是个工作狂，所以开发计划估计也比较紧密。有点部门领导比较重视生活点，正常平衡工作与生活，所以相对来说员工也会轻松一些。第二个原因，可能确实是不同的行业组，其任务量、效率都有不同。任务较重或者效率较低的组自然要加班了。
加班文化的重要原因肯定跟项目经理有关。人都是需要生活的，不只是需要工作。如果长期工作，而忽视了生活，员工怎么能够在公司里愉快的工作呢？ 不能愉快的工作，对公司有怨言（即使不说） ，怎么能够好好的工作呢？怎么心甘情愿地做忠诚负责的员工呢？ 我想有能力的员工，又想要平衡好生活与工作的关系的员工，肯定会对领导的强制或者是项目计划的强制产生内心的逆反（即使没有强烈到激化冲突），并进而去选择一个更好的工作环境。所以，好的项目经理的第一项重要素质就是在重视工作的同时，也应该努力帮助员工愉快地工作。
而项目经理也有自己的难处。
需求多变就是一个关键的难题，但是解决这个问题的方法，有时候也不是项目经理就能够解决的。不过我建议项目经理不应该因为需求多变就把这种多变的需求直接传导到员工头上去。这样，无非是多让员工做一些无意义的事情，最终带来项目成本的增加，还要求员工付出身心牺牲，最终却没有任何意义。管理和控制需求作为降低项目成本提高项目收益的重要内容，是项目经理的本职工作，绝对不应该客户比较刁蛮就丢弃了这部分工作内容。
工作过多而资源紧缺也是一个常见的问题。因此经常导致了在制定计划时不能够客观。有的情况下是忽略了一些在计划中需要处理的潜在工作，有的情况下是尽最大限度地去缩减对任务的资源支出。无论哪种方式，这个计划都没有尽可能地去贴近实际情况，这个项目计划的执行过程怎么能够不出问题呢？项目的计划怎么能够执行呢？掩耳盗铃的方式，并不可取。正确的方法，应该是制定计划时定时不定量，或者争取更多的资源。
突发事件是项目经理的另一个要经常面对的难题。例如上问提到的忽然要求搭建演示环境的事情。这完全是在项目经理的工作表里面没有的事情，忽然跑出来，那徒然疲劳自己的手下。 如果当这项工作确实是需要的，那么项目经理应该要提前通知，让手下有所准备，出来的东西也有保证。你疏忽了，造成了这样的突发事件，那真是不应该。如果感觉这项工作内容较多，需要手下去突击完成，从而采取这种突发事件让手下加班的方法，那更不应该。如果确实内容较多，那么要考虑下是不是值得去做这些任务，是不是可以将这项内容适当删减。即使你让你的手下是加班时间突击完成了这件事情，但这些确实已经是你项目中的成本。他是你的手下，他的加班尽管你不需要付钱，但是确实是项目成本。他是你的手下，尽管你没有付钱，但是他付出了时间和健康。尽管你没有付钱，但是你可能付出了威信，和下属对你的信任的成本。项目经理应该努力让所有的事情都是可控的，对于不可控的事情，也要努力去削弱突发事件的影响。
做一个好的项目经理，要尊重、爱惜自己的手下。 在某一个项目里，你最需要负责的也许不是手下，但是在很多项目构成的长期工作中，你最需要负责的正是你的手下。没有他们，你什么都成不了。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>今天和同事在一起吃饭的时候，聊起了公司里的加班现象。这位同事是刚到公司才三个月的新员工，他说自从来到公司里开始，每天如果能够在七点下班那简直就是高兴不已的事情。在这短短的时间里，明显的感觉到身体有了很大的变化，感受到身体上的损害和痛苦。基本上每天都是紧张的去做事情，但是还是做不完，还是要加班。不仅工作日的晚上要加班，连周末也经常不得不去公司&#8211;如果你想正常完成各项工作的话。</p>
<p>除了加不完的班，另外就是经常有突发性的任务忽然需要去处理。该同事讲到有一天六点多，要下班的时候，忽然PM告知他明天要去演示，要求他立即搭建演示环境，因为他明天要去见客户，要给客户演示。这下，搞得他不得不忙到很晚，快十一点时，拖着疲惫的身体回家。</p>
<p>仔细观察我们公司的加班文化，发现同是在一个公司的开发部门，有点行业组加班相对要少一些，有的行业组加班相对要多一些。第一个原因，可能跟领导有关系，有点部门领导很勤奋、是个工作狂，所以开发计划估计也比较紧密。有点部门领导比较重视生活点，正常平衡工作与生活，所以相对来说员工也会轻松一些。第二个原因，可能确实是不同的行业组，其任务量、效率都有不同。任务较重或者效率较低的组自然要加班了。</p>
<p>加班文化的重要原因肯定跟项目经理有关。人都是需要生活的，不只是需要工作。如果长期工作，而忽视了生活，员工怎么能够在公司里愉快的工作呢？ 不能愉快的工作，对公司有怨言（即使不说） ，怎么能够好好的工作呢？怎么心甘情愿地做忠诚负责的员工呢？ 我想有能力的员工，又想要平衡好生活与工作的关系的员工，肯定会对领导的强制或者是项目计划的强制产生内心的逆反（即使没有强烈到激化冲突），并进而去选择一个更好的工作环境。所以，好的项目经理的<strong>第一项重要素质就是在重视工作的同时，也应该努力帮助员工愉快地工作</strong>。</p>
<p>而项目经理也有自己的难处。</p>
<p><strong>需求多变</strong>就是一个关键的难题，但是解决这个问题的方法，有时候也不是项目经理就能够解决的。不过我建议项目经理不应该因为需求多变就把这种多变的需求直接传导到员工头上去。这样，无非是多让员工做一些无意义的事情，最终带来项目成本的增加，还要求员工付出身心牺牲，最终却没有任何意义。管理和控制需求作为降低项目成本提高项目收益的重要内容，是项目经理的本职工作，绝对不应该客户比较刁蛮就丢弃了这部分工作内容。</p>
<p>工作过多而资源紧缺也是一个常见的问题。因此经常导致了在制定计划时不能够客观。有的情况下是忽略了一些在计划中需要处理的潜在工作，有的情况下是尽最大限度地去缩减对任务的资源支出。无论哪种方式，这个计划都没有尽可能地去贴近实际情况，这个项目计划的执行过程怎么能够不出问题呢？项目的计划怎么能够执行呢？掩耳盗铃的方式，并不可取。正确的方法，应该是制定计划时定时不定量，或者争取更多的资源。</p>
<p><strong>突发事件</strong>是项目经理的另一个要经常面对的难题。例如上问提到的忽然要求搭建演示环境的事情。这完全是在项目经理的工作表里面没有的事情，忽然跑出来，那徒然疲劳自己的手下。 如果当这项工作确实是需要的，那么项目经理应该要提前通知，让手下有所准备，出来的东西也有保证。你疏忽了，造成了这样的突发事件，那真是不应该。如果感觉这项工作内容较多，需要手下去突击完成，从而采取这种突发事件让手下加班的方法，那更不应该。如果确实内容较多，那么要考虑下是不是值得去做这些任务，是不是可以将这项内容适当删减。即使你让你的手下是加班时间突击完成了这件事情，但这些确实已经是你项目中的成本。他是你的手下，他的加班尽管你不需要付钱，但是确实是项目成本。他是你的手下，尽管你没有付钱，但是他付出了时间和健康。尽管你没有付钱，但是你可能付出了威信，和下属对你的信任的成本。项目经理应该努力让所有的事情都是可控的，对于不可控的事情，也要努力去削弱突发事件的影响。</p>
<p><strong>做一个好的项目经理，要尊重、爱惜自己的手下</strong>。 在某一个项目里，你最需要负责的也许不是手下，但是在很多项目构成的长期工作中，你最需要负责的正是你的手下。没有他们，你什么都成不了。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/12/%e6%88%91%e4%bb%ac%e5%85%ac%e5%8f%b8%e9%87%8c%e6%8c%a5%e4%b9%8b%e4%b8%8d%e5%8e%bb%e7%9a%84%e5%8a%a0%e7%8f%ad%e6%96%87%e5%8c%96.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在 Vista 上安装 Apache 2.2, PHP 5.2.6</title>
		<link>http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html</link>
		<comments>http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html#comments</comments>
		<pubDate>Sun, 12 Oct 2008 14:58:29 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/25</guid>
		<description><![CDATA[今天，在Vista上安装了 Apache 2.2， PHP 5.2.6，花费了三四个小时。 Apache 和 PHP 的新版本，在相互兼容性方面似乎是越来越差了！
Apache 2.2  下载完后安装，倒是很顺利，最后 http://localhost, 显示 It works.
一开始，打算以 Module 形式安装 PHP，安装后显示 缺少不少库，并且不能显示 phpinfo.php。
于是改成以 CGI 形式重新安装，配置如下：
ScriptAlias /php/ "D:/software/PHP/"
AddType application/x-httpd-php .php
# For PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"

打开网址，什么也访问不了：
You don&#8217;t have permission to access / on this server.
通过如下设置解决：
DocumentRoot &#8220;D:/programdata/Apachehtdocs&#8221;

Options FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
Satisfy all

然后就一直显示：
You don&#8217;t have permission to access /php/php-cgi.exe/phpinfo.php on this [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/05/weblogic-81sp3.html' rel='bookmark' title='Permanent Link: Weblogic 81Sp3'>Weblogic 81Sp3</a></li><li><a href='http://blog.feihoo.com/2009/04/%e5%ae%89%e8%a3%85sybase-sql-anywhere-702%e5%90%8epath%e8%b7%af%e5%be%84%e4%b8%a2%e5%a4%b1.html' rel='bookmark' title='Permanent Link: 安装Sybase SQL Anywhere 7.02后Path路径丢失'>安装Sybase SQL Anywhere 7.02后Path路径丢失</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>今天，在Vista上安装了 Apache 2.2， PHP 5.2.6，花费了三四个小时。 Apache 和 PHP 的新版本，在相互兼容性方面似乎是越来越差了！</p>
<p><a href="http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi">Apache 2.2 </a> 下载完后安装，倒是很顺利，最后 http://localhost, 显示 It works.</p>
<p>一开始，打算以 Module 形式安装 PHP，安装后显示 缺少不少库，并且不能显示 phpinfo.php。</p>
<p>于是改成以 CGI 形式重新安装，配置如下：<code><br />
ScriptAlias /php/ "D:/software/PHP/"<br />
AddType application/x-httpd-php .php<br />
# For PHP 5<br />
Action application/x-httpd-php "/php/php-cgi.exe"<br />
</code></p>
<p>打开网址，什么也访问不了：<br />
You don&#8217;t have permission to access / on this server.<br />
通过如下设置解决：<br />
DocumentRoot &#8220;D:/programdata/Apachehtdocs&#8221;<br />
<directory><br />
Options FollowSymLinks<br />
AllowOverride All<br />
Order Allow,Deny<br />
Allow from all<br />
Satisfy all<br />
</directory></p>
<p>然后就一直显示：<br />
You don&#8217;t have permission to access /php/php-cgi.exe/phpinfo.php on this server.<br />
在后台 error.log:<br />
[error] [client 127.0.0.1] client denied by server configuration: D:/software/PHP/php-cgi.exe</p>
<p>最后，增加如下设置，解决了问题：<br />
<directory><br />
Options Indexes FollowSymLinks<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
</directory></p>
<p>解决了问题。但是，后台又出现了一个问题：<br />
[Sun Oct 12 22:36:57 2008] [error] [client 127.0.0.1] PHP Fatal error:  require_once() [function.require]: Failed opening required &#8216;SAM/php_sam.php&#8217; (include_path=&#8217;.;C:\\php5\\pear&#8217;) in sam_factory on line 1</p>
<p>这个问题的解决，参考 <a href="http://www.phpbuilder.com/board/showthread.php?t=10339966"><strong>[RESOLVED] PHP Install Problem &#8211; SAM Error</strong></a>   我只是简单地安装PHP时，只选择 MySQL扩展。</p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html' rel='bookmark' title='Permanent Link: Ubuntu 上安装buildix，PHP5， Apache2'>Ubuntu 上安装buildix，PHP5， Apache2</a></li><li><a href='http://blog.feihoo.com/2009/05/weblogic-81sp3.html' rel='bookmark' title='Permanent Link: Weblogic 81Sp3'>Weblogic 81Sp3</a></li><li><a href='http://blog.feihoo.com/2009/04/%e5%ae%89%e8%a3%85sybase-sql-anywhere-702%e5%90%8epath%e8%b7%af%e5%be%84%e4%b8%a2%e5%a4%b1.html' rel='bookmark' title='Permanent Link: 安装Sybase SQL Anywhere 7.02后Path路径丢失'>安装Sybase SQL Anywhere 7.02后Path路径丢失</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 上安装buildix，PHP5， Apache2</title>
		<link>http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html</link>
		<comments>http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html#comments</comments>
		<pubDate>Sun, 12 Oct 2008 09:28:48 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[server & system]]></category>
		<category><![CDATA[buildix]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/24</guid>
		<description><![CDATA[一开始，我在计算机上安装了buildix，发现 Buildix的各项功能也能正确运行。但是，一旦我安装并启用了 php5和mod-php5，就会导致buildix被卸载。如下：

liuzhr@suowan-master:/etc/apache2/sites-enabled$ sudo apt-get install php5 libapache2-mod-php5
Reading package lists... Done
Building dependency tree
Reading state information... Done
php5 is already the newest version.
The following packages were automatically installed and are no longer required:
python-libxslt1 libapache2-svn libapache2-mod-python sun-java5-jdk python-libxml2 python-svn libapache2-mod-fastcgi cruisecontrol sun-java5-demo
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
apache2-mpm-prefork
The following packages will be REMOVED:
apache2-mpm-worker [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>一开始，我在计算机上安装了buildix，发现 Buildix的各项功能也能正确运行。但是，一旦我安装并启用了 php5和mod-php5，就会导致buildix被卸载。如下：<br />
<code><br />
liuzhr@suowan-master:/etc/apache2/sites-enabled$ sudo apt-get install php5 libapache2-mod-php5<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
php5 is already the newest version.<br />
The following packages were automatically installed and are no longer required:<br />
python-libxslt1 libapache2-svn libapache2-mod-python sun-java5-jdk python-libxml2 python-svn libapache2-mod-fastcgi cruisecontrol sun-java5-demo<br />
Use 'apt-get autoremove' to remove them.<br />
The following extra packages will be installed:<br />
apache2-mpm-prefork<br />
The following packages will be REMOVED:<br />
apache2-mpm-worker buildix<br />
The following NEW packages will be installed:<br />
apache2-mpm-prefork libapache2-mod-php5<br />
0 upgraded, 2 newly installed, 2 to remove and 60 not upgraded.<br />
Need to get 0B/2978kB of archives.<br />
After unpacking 5747kB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</code></p>
<p>如果选择继续，安装了php5和libapache2-mod-php5，则会导致buildix卸载，如果重新安装 buildix，安装过程中会出现下面的错误，原因大概是libapache-mod-php5被buildix自动卸载了。<br />
<code><br />
liuzhr@suowan-master:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart<br />
* Restarting web server apache2<br />
* We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!<br />
apache2: Syntax error on line 183 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /usr/lib/apache2/modules/libphp5.so: cannot open shared object file: No such file or directory。<br />
</code></p>
<p>原因应该是 buildix 依赖于   apache2-mpm-worker, 而目前的 php5只能运行单线程的apache2，这样就必须使用  apache2-mpm-prefork。<br />
使用  apt-cache show buildix 一看，果然buildix依赖于 apache2-mpm-worker。看来必须放弃将 buildix与目前的 php5(Module方式) 在一起安装的方法。</p>
<p>于是只能选择使用 cgi 的方式来安装。参考这篇文章：<a href="http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid">Installing Apache2 and PHP5 using mod_fcgid </a>。配置的过程中发生了一些错误（you don&#8217;t have permission to access &#8216;/index.php&#8217;），似乎是因为下面的配置中，AllowOverride ，FCGIWrapper ，AddHandler 或者 Options +ExecCGI 的顺序导致的。没有时间仔细研究这个问题，高手看到请指教。<br />
<code><br />
&lt;directory&gt;<br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
FCGIWrapper /usr/lib/cgi-bin/php5 .php<br />
AddHandler fcgid-script .php<br />
Options +ExecCGI<br />
Order allow,deny<br />
allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
#RedirectMatch ^/$ /apache2-default/<br />
&lt;/directory&gt;<br />
</code></p>
<p>php5 目前不能使用 apache2-mpm-worker 模块是因为不支持多线程的apache2。 PHP如此说：<a href="http://au.php.net/manual/en/faq.installation.php#faq.installation.apache2">Why shouldn&#8217;t I use Apache2 with a threaded MPM in a production environment?            </a></p>
<p>有关 apt-get 的命令，参考这里：<a href="https://help.ubuntu.com/community/AptGet/Howto">https://help.ubuntu.com/community/AptGet/Howto </a></p>
<p>有关 Ubuntu上的LAMP，参考：<a href="https://help.ubuntu.com/community/ApacheMySQLPHP" rel="nofollow">ApacheMySQLPHP</a></p>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2008/10/%e5%9c%a8-vista-%e4%b8%8a%e5%ae%89%e8%a3%85-apache-22-php-526.html' rel='bookmark' title='Permanent Link: 在 Vista 上安装 Apache 2.2, PHP 5.2.6'>在 Vista 上安装 Apache 2.2, PHP 5.2.6</a></li><li><a href='http://blog.feihoo.com/2009/12/my-ubuntu-installation-log.html' rel='bookmark' title='Permanent Link: My Ubuntu Installation log'>My Ubuntu Installation log</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/10/ubuntu-%e4%b8%8a%e5%ae%89%e8%a3%85buildix%ef%bc%8cphp5%ef%bc%8c-apache2-%e7%9a%84%e7%83%a6%e6%81%bc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>水落石出 回应《转贴：华南虎照片造假论泛起是谁的悲哀 》</title>
		<link>http://blog.feihoo.com/2008/09/%e6%b0%b4%e8%90%bd%e7%9f%b3%e5%87%ba-%e5%9b%9e%e5%ba%94%e3%80%8a%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81.html</link>
		<comments>http://blog.feihoo.com/2008/09/%e6%b0%b4%e8%90%bd%e7%9f%b3%e5%87%ba-%e5%9b%9e%e5%ba%94%e3%80%8a%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81.html#comments</comments>
		<pubDate>Sun, 28 Sep 2008 01:56:49 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/21</guid>
		<description><![CDATA[在大约一年后，华南虎照片事件终于水落石出。 我错了，真的不是那么简单的一件事，真的不是一个老农民拍到了，然后被一群好事的网友冤枉。 在这中间，这些打假的网友和媒体确实是有据的，周正龙确实是骗人的，一些官员确实是在贪功要建设保护区的。
世界不是那么简单的，不是那么淳朴的，而是虚虚实实的，朴素迷离的。迷惑啊迷惑。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>在大约一年后，华南虎照片事件终于水落石出。 我错了，真的不是那么简单的一件事，真的不是一个老农民拍到了，然后被一群好事的网友冤枉。 在这中间，这些打假的网友和媒体确实是有据的，周正龙确实是骗人的，一些官员确实是在贪功要建设保护区的。</p>
<p>世界不是那么简单的，不是那么淳朴的，而是虚虚实实的，朴素迷离的。迷惑啊迷惑。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/09/%e6%b0%b4%e8%90%bd%e7%9f%b3%e5%87%ba-%e5%9b%9e%e5%ba%94%e3%80%8a%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转：俞敏洪在北京大学2008年开学典礼上的演讲辞</title>
		<link>http://blog.feihoo.com/2008/09/%e8%bd%ac%ef%bc%9a%e4%bf%9e%e6%95%8f%e6%b4%aa%e5%9c%a8%e5%8c%97%e4%ba%ac%e5%a4%a7%e5%ad%a62008%e5%b9%b4%e5%bc%80%e5%ad%a6%e5%85%b8%e7%a4%bc%e4%b8%8a%e7%9a%84%e6%bc%94%e8%ae%b2%e8%be%9e.html</link>
		<comments>http://blog.feihoo.com/2008/09/%e8%bd%ac%ef%bc%9a%e4%bf%9e%e6%95%8f%e6%b4%aa%e5%9c%a8%e5%8c%97%e4%ba%ac%e5%a4%a7%e5%ad%a62008%e5%b9%b4%e5%bc%80%e5%ad%a6%e5%85%b8%e7%a4%bc%e4%b8%8a%e7%9a%84%e6%bc%94%e8%ae%b2%e8%be%9e.html#comments</comments>
		<pubDate>Sun, 28 Sep 2008 01:26:15 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/20</guid>
		<description><![CDATA[注：此文来自网络，版权归原作者所有。
 英语系80级校友、新东方教育科技集团董事长兼总裁俞敏洪作为优秀校友代表发言
各位同学、各位领导：
大家上午好！（掌声）
非常高兴许校长给我这么崇高的荣誉，谈一谈我在北大的体会。（掌声）
可以说，北大是改变了我一生的地方，是提升了我自己的地方，使我从一个农村孩子最后走向了世界的地方。毫不夸张地说，没有北大，肯定就没有我的今天。北大 给我留下了一连串美好的回忆，大概也留下了一连串的痛苦。正是在美好和痛苦中间，在挫折、挣扎和进步中间，最后找到了自我，开始为自己、为家庭、为社会能 做一点事情。
学生生活是非常美好的，有很多美好的回忆。我还记得我们班有一个男生，每天都在女生的宿舍楼下拉小提琴，（笑声）希望能够引起女生的注意，结果后来被女生 扔了水瓶子。我还记得我自己为了吸引女生的注意，每到寒假和暑假都帮着女生扛包。（笑声、掌声）后来我发现那个女生有男朋友，（笑声）我就问她为什么还要 让我扛包，她说为了让男朋友休息一下（笑声、掌声）。我也记得刚进北大的时候我不会讲普通话，全班同学第一次开班会的时候互相介绍，我站起来自我介绍了一 番，结果我们的班长站起来跟我说：“俞敏洪你能不能不讲日语？”（笑声）我后来用了整整一年时间，拿着收音机在北大的树林中模仿广播台的播音，但是到今天 普通话还依然讲得不好。
人的进步可能是一辈子的事情。在北大是我们生活的一个开始，而不是结束。有很多事情特别让人感动。比如说，我们很有幸见过朱光潜教授。在他最后的日子里， 是我们班的同学每天轮流推着轮椅在北大里陪他一起散步。（掌声）每当我推着轮椅的时候，我心中就充满了对朱光潜教授的崇拜，一种神圣感油然而生。所以，我 在大学看书最多的领域是美学。因为他写了一本《西方美学史》，是我进大学以后读的第二本书。
为什么是第二本呢？因为第一本是这样来的，我进北大以后走进宿舍，我有个同学已经在宿舍。那个同学躺在床上看一本书，叫做《第三帝国的兴亡》。所以我就问 了他一句话，我说：“在大学还要读这种书吗？”他把书从眼睛上拿开，看了我一眼，没理我，继续读他的书。这一眼一直留在我心中。我知道进了北大不仅仅是来 学专业的，要读大量大量的书。你才能够有资格把自己叫做北大的学生。（掌声）所以我在北大读的第一本书就是《第三帝国的兴亡》，而且读了三遍。后来我就去 找这个同学，我说：“咱们聊聊《第三帝国的兴亡》”，他说：“我已经忘了。”（笑声）
我也记得我的导师李赋宁教授，原来是北大英语系的主任，他给我们上《新概念英语》第四册的时候，每次都把板书写得非常的完整，非常的美丽。永远都是从 黑板的左上角写起，等到下课铃响起的时候，刚好写到右下角结束。（掌声）我还记得我的英国文学史的老师罗经国教授，我在北大最后一年由于心情不好，导致考 试不及格。我找到罗教授说：“这门课如果我不及格就毕不了业。”，罗教授说：“我可以给你一个及格的分数，但是请你记住了，未来你一定要做出值得我给你分 数的事业。”（掌声）所以，北大老师的宽容、学识、奔放、自由，让我们真正能够成为北大的学生，真正能够得到北大的精神。 当我听说许智宏校长对学生唱《隐形的翅膀》的时候，我打开视频，感动得热泪盈眶。因为我觉得北大的校长就应该是这样的。（掌声）
我记得自己在北大的时候有很多的苦闷。一是普通话不好，第二英语水平一塌糊涂。尽管我高考经过三年的努力考到了北大——因为我落榜了两次，最后一次很意外 地考进了北大。我从来没有想过北大是我能够上学的地方，她是我心中一块圣地，觉得永远够不着。但是那一年，第三年考试时我的高考分数超过了北大录取分数线 七分，我终于下定决心咬牙切齿填了“北京大学”四个字。我知道一定会有很多人比我分数高，我认为自己是不会被录取的。没想到北大的招生老师非常富有眼光， 料到了三十年后我的今天。（掌声）但是实际上我的英语水平很差，在农村既不会听也不会说，只会背语法和单词。我们班分班的时候，五十个同学分成三个班，因 为我的英语考试分数不错，就被分到了A班，但是一个月以后，我就被调到了C班。C班叫做“语音语调及听力障碍班”。（ 笑声）
我也记得自己进北大以前连《红楼梦》都没有读过，所以看到同学们一本一本书在读，我拼命地追赶。结果我在大学差不多读了八百多本书，用了五年时间（掌 声）。但是依然没有赶超上我那些同学。我记得我的班长王强是一个书癖，现在他也在新东方，是新东方教育研究院的院长。他每次买书我就跟着他去，当时北大给 我们每个月发二十多块钱生活费，王强有个癖好就是把生活费一分为二，一半用来买书，一半用来买饭菜票。买书的钱绝不动用来买饭票。如果他没有饭菜票了就到 处借，借不到就到处偷。（笑声）后来我发现他这个习惯很好，我也把我的生活费一份为二，一半用来买书，一半用来买饭菜票，饭票吃完了我就偷他的。（笑声掌 声）
毫不夸张地说，我们班的同学当时在北大，真是属于读书最多的班之一。而且我们班当时非常地活跃，光诗人就出了好几个。后来挺有名的一个诗人叫西川，真名叫 刘军，就是我们班的。（掌声）我还记得我们班开风气之先，当时是北大的优秀集体，但是有一个晚上大家玩得高兴了，结果跳起了贴面舞，第二个礼拜被教育部通 报批评了。那个时候跳舞是必须跳得很正规的，男女生稍微靠近一点就认为违反风纪。所以你们现在比我们当初要更加幸福一点。不光可以跳舞，而且可以手拉手地 在校园里面走，我们如果当时男女生手拉手在校园里面走，一定会被扔到未名湖里，所以一般都是晚上十二点以后再在校园里面走。（笑声掌声）
我也记得我们班五十个同学，刚好是二十五个男生二十五个女生，我听到这个比例以后当时就非常的兴奋（笑声），我觉得大家就应该是一个配一个。没想到女生们 都看上了那些外表英俊潇洒、风流倜傥的男生。像我这样外表不怎么样，内心充满丰富感情、未来有巨大发展潜力的，女生一般都看不上。（笑声掌声）
我记得我奋斗了整整两年希望能在成绩上赶上我的同学，但是就像刚才吕植老师说的，你尽管在中学高考可能考得很好，是第一名，但是北大精英人才太多了，你的 前后左右可能都是智商极高的同学，也是各个省的状元或者说第二名。所以，在北大追赶同学是一个非常艰苦的过程，尽管我每天几乎都要比别的同学多学一两个小 时，但是到了大学二年级结束的时候我的成绩依然排在班内最后几名。非常勤奋又非常郁闷，也没有女生来爱我安慰我。（笑声）这导致的结果是，我在大学三年级 的时候得了一场重病，这个病叫做传染性侵润肺结核。当时我就晕了，因为当时我正在读《红楼梦》，正好读到林黛玉因为肺结核吐血而亡的那一章，（笑声）我还 以为我的生命从此结束，后来北大医院的医生告诉我现在这种病能够治好，但是需要在医院里住一年。我在医院里住了一年，苦闷了一年，读了很多书，也写了六百 多首诗歌，可惜一首诗歌都没有出版过。从此以后我就跟写诗结上了缘，但是我这个人有丰富的情感，但是没有优美的文笔，所以终于没有成为诗人。后来我感到非 常的庆幸，因为我发现真正成为诗人的人后来都出事了。我们跟当时还不太出名的诗人海子在一起写过诗。后来他写过一首优美的诗歌，叫做《面朝大海，春暖花 开》，我们每一个同学大概都能背。后来当我听说他卧轨自杀的时候，嚎啕大哭了整整一天。从此以后，我放下笔，再也不写诗了。（掌）
记得我在北大的时候，到大学四年级毕业时，我的成绩依然排在全班最后几名。但是，当时我已经有了一个良好的心态。我知道我在聪明上比不过我的同学，但是我 有一种能力，就是持续不断的努力。所以在我们班的毕业典礼上我说了这么一段话，到现在我的同学还能记得，我说：“大家都获得了优异的成绩，我是我们班的落 后同学。但是我想让同学们放心，我决不放弃。你们五年干成的事情我干十年，你们十年干成的我干二十年，你们二十年干成的我干四十年”。（ 掌声）我对他们说：“如果实在不行，我会保持心情愉快、身体健康，到八十岁以后把你们送走了我再走。”（笑声掌声）
有一个故事说，能够到达金字塔顶端的只有两种动物，一是雄鹰，靠自己的天赋和翅膀飞了上去。我们这儿有很多雄鹰式的人物，很多同学学习不需要太努力就能达 到高峰。很多同学后来可能很轻松地就能在北大毕业以后进入哈佛、耶鲁、牛津、剑桥这样的名牌大学继续深造。有很多同学身上充满了天赋，不需要学习就有这样 的才能，比如说我刚才提到的我的班长王强，他的模仿能力就是超群的，到任何一个地方，听任何一句话，听一遍模仿出来的绝对不会两样。所以他在北大广播站当 播音员当了整整四年。我每天听着他的声音，心头咬牙切齿充满仇恨。（笑声）所以，有天赋的人就像雄鹰。但是，大家也都知道，有另外一种动物，也到了金字塔 的顶端。那就是蜗牛。蜗牛肯定只能是爬上去。从低下爬到上面可能要一个月、两个月，甚至一年、两年。在金字塔顶端，人们确实找到了蜗牛的痕迹。我相信蜗牛 绝对不会一帆风顺地爬上去，一定会掉下来、再爬、掉下来、再爬。但是，同学们所要知道的是，蜗牛只要爬到金字塔顶端，它眼中所看到的世界，它收获的成就， 跟雄鹰是一模一样的。（掌声）所以，也许我们在座的同学有的是雄鹰，有的是蜗牛。我在北大的时候，包括到今天为止，我一直认为我是一只蜗牛。但是我一直在 爬，也许还没有爬到金字塔的顶端。但是只要你在爬，就足以给自己留下令生命感动的日子。（掌声）
我常常跟同学们说，如果我们的生命不为自己留下一些让自己热泪盈眶的日子，你的生命就是白过的。我们很多同学凭着优异的成绩进入了北大，但是北大绝不是你 们学习的终点，而是你们生命的起点。在一岁到十八岁的岁月中间，你听老师的话、听父母的话，现在你真正开始了自己的独立生活。我们必须为自己创造一些让自 己感动的日子，你才能够感动别人。我们这儿有富裕家庭来的，也有贫困家庭来的，我们生命的起点由不得你选择出生在富裕家庭还是贫困家庭，如果你生在贫困家 庭，你不能说老爸给我收回去，我不想在这里待着。但是我们生命的终点是由我们自己选择的。我们所有在座的同学过去都走得很好，已经在十八岁的年龄走到了很 多中国孩子的前面去，因为北大是中国的骄傲，也可以说是世界的骄傲。但是，到北大并不意味着你从此大功告成，并不意味着你未来的路也能走好，后面的五十 年、六十年，甚至一百年你该怎么走，成为了每一个同学都要思考的问题。就本人而言，我觉得只要有两样东西在心中，我们就能成就自己的人生。
第一样叫做理想。我从小就有一种感觉，希望穿越地平线走向远方，我把它叫做“穿越地平线的渴望”。也正是因为这种强烈的渴望，使我有勇气不断地高考。当 然，我生命中也有榜样。比如我有一个邻居，非常的有名，是我终生的榜样，他的名字叫徐霞客。当然，是五百年前的邻居。但是他确实是我的邻居，江苏江阴的， 我也是江苏江阴的。因为崇拜徐霞客，直接导致我在高考的时候地理成绩考了九十七分。（掌声）也是徐霞客给我带来了穿越地平线的这种感觉，所以我也下定决 心，如果徐霞客走遍了中国，我就要走遍世界。而我现在正在实现自己这一梦想。所以，只要你心中有理想，有志向，同学们，你终将走向成功。你所要做到的就是 [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p id="postmessage_48687" class="t_msgfont">注：此文来自网络，版权归原作者所有。</p>
<p id="postmessage_48687" class="t_msgfont"> 英语系80级校友、新东方教育科技集团董事长兼总裁俞敏洪作为优秀校友代表发言<br />
各位同学、各位领导：<br />
大家上午好！（掌声）</p>
<p>非常高兴许校长给我这么崇高的荣誉，谈一谈我在北大的体会。（掌声）</p>
<p>可以说，北大是改变了我一生的地方，是提升了我自己的地方，使我从一个农村孩子最后走向了世界的地方。毫不夸张地说，没有北大，肯定就没有我的今天。北大 给我留下了一连串美好的回忆，大概也留下了一连串的痛苦。正是在美好和痛苦中间，在挫折、挣扎和进步中间，最后找到了自我，开始为自己、为家庭、为社会能 做一点事情。</p>
<p>学生生活是非常美好的，有很多美好的回忆。我还记得我们班有一个男生，每天都在女生的宿舍楼下拉小提琴，（笑声）希望能够引起女生的注意，结果后来被女生 扔了水瓶子。我还记得我自己为了吸引女生的注意，每到寒假和暑假都帮着女生扛包。（笑声、掌声）后来我发现那个女生有男朋友，（笑声）我就问她为什么还要 让我扛包，她说为了让男朋友休息一下（笑声、掌声）。我也记得刚进北大的时候我不会讲普通话，全班同学第一次开班会的时候互相介绍，我站起来自我介绍了一 番，结果我们的班长站起来跟我说：“俞敏洪你能不能不讲日语？”（笑声）我后来用了整整一年时间，拿着收音机在北大的树林中模仿广播台的播音，但是到今天 普通话还依然讲得不好。</p>
<p>人的进步可能是一辈子的事情。在北大是我们生活的一个开始，而不是结束。有很多事情特别让人感动。比如说，我们很有幸见过朱光潜教授。在他最后的日子里， 是我们班的同学每天轮流推着轮椅在北大里陪他一起散步。（掌声）每当我推着轮椅的时候，我心中就充满了对朱光潜教授的崇拜，一种神圣感油然而生。所以，我 在大学看书最多的领域是美学。因为他写了一本《西方美学史》，是我进大学以后读的第二本书。</p>
<p>为什么是第二本呢？因为第一本是这样来的，我进北大以后走进宿舍，我有个同学已经在宿舍。那个同学躺在床上看一本书，叫做《第三帝国的兴亡》。所以我就问 了他一句话，我说：“在大学还要读这种书吗？”他把书从眼睛上拿开，看了我一眼，没理我，继续读他的书。这一眼一直留在我心中。我知道进了北大不仅仅是来 学专业的，要读大量大量的书。你才能够有资格把自己叫做北大的学生。（掌声）所以我在北大读的第一本书就是《第三帝国的兴亡》，而且读了三遍。后来我就去 找这个同学，我说：“咱们聊聊《第三帝国的兴亡》”，他说：“我已经忘了。”（笑声）</p>
<p>我也记得我的导师李赋宁教授，原来是北大英语系的主任，他给我们上《新概念英语》第四册的时候，每次都把板书写得非常的完整，非常的美丽。永远都是从 黑板的左上角写起，等到下课铃响起的时候，刚好写到右下角结束。（掌声）我还记得我的英国文学史的老师罗经国教授，我在北大最后一年由于心情不好，导致考 试不及格。我找到罗教授说：“这门课如果我不及格就毕不了业。”，罗教授说：“我可以给你一个及格的分数，但是请你记住了，未来你一定要做出值得我给你分 数的事业。”（掌声）所以，北大老师的宽容、学识、奔放、自由，让我们真正能够成为北大的学生，真正能够得到北大的精神。 当我听说许智宏校长对学生唱《隐形的翅膀》的时候，我打开视频，感动得热泪盈眶。因为我觉得北大的校长就应该是这样的。（掌声）</p>
<p>我记得自己在北大的时候有很多的苦闷。一是普通话不好，第二英语水平一塌糊涂。尽管我高考经过三年的努力考到了北大——因为我落榜了两次，最后一次很意外 地考进了北大。我从来没有想过北大是我能够上学的地方，她是我心中一块圣地，觉得永远够不着。但是那一年，第三年考试时我的高考分数超过了北大录取分数线 七分，我终于下定决心咬牙切齿填了“北京大学”四个字。我知道一定会有很多人比我分数高，我认为自己是不会被录取的。没想到北大的招生老师非常富有眼光， 料到了三十年后我的今天。（掌声）但是实际上我的英语水平很差，在农村既不会听也不会说，只会背语法和单词。我们班分班的时候，五十个同学分成三个班，因 为我的英语考试分数不错，就被分到了A班，但是一个月以后，我就被调到了C班。C班叫做“语音语调及听力障碍班”。（ 笑声）</p>
<p>我也记得自己进北大以前连《红楼梦》都没有读过，所以看到同学们一本一本书在读，我拼命地追赶。结果我在大学差不多读了八百多本书，用了五年时间（掌 声）。但是依然没有赶超上我那些同学。我记得我的班长王强是一个书癖，现在他也在新东方，是新东方教育研究院的院长。他每次买书我就跟着他去，当时北大给 我们每个月发二十多块钱生活费，王强有个癖好就是把生活费一分为二，一半用来买书，一半用来买饭菜票。买书的钱绝不动用来买饭票。如果他没有饭菜票了就到 处借，借不到就到处偷。（笑声）后来我发现他这个习惯很好，我也把我的生活费一份为二，一半用来买书，一半用来买饭菜票，饭票吃完了我就偷他的。（笑声掌 声）</p>
<p>毫不夸张地说，我们班的同学当时在北大，真是属于读书最多的班之一。而且我们班当时非常地活跃，光诗人就出了好几个。后来挺有名的一个诗人叫西川，真名叫 刘军，就是我们班的。（掌声）我还记得我们班开风气之先，当时是北大的优秀集体，但是有一个晚上大家玩得高兴了，结果跳起了贴面舞，第二个礼拜被教育部通 报批评了。那个时候跳舞是必须跳得很正规的，男女生稍微靠近一点就认为违反风纪。所以你们现在比我们当初要更加幸福一点。不光可以跳舞，而且可以手拉手地 在校园里面走，我们如果当时男女生手拉手在校园里面走，一定会被扔到未名湖里，所以一般都是晚上十二点以后再在校园里面走。（笑声掌声）</p>
<p>我也记得我们班五十个同学，刚好是二十五个男生二十五个女生，我听到这个比例以后当时就非常的兴奋（笑声），我觉得大家就应该是一个配一个。没想到女生们 都看上了那些外表英俊潇洒、风流倜傥的男生。像我这样外表不怎么样，内心充满丰富感情、未来有巨大发展潜力的，女生一般都看不上。（笑声掌声）</p>
<p>我记得我奋斗了整整两年希望能在成绩上赶上我的同学，但是就像刚才吕植老师说的，你尽管在中学高考可能考得很好，是第一名，但是北大精英人才太多了，你的 前后左右可能都是智商极高的同学，也是各个省的状元或者说第二名。所以，在北大追赶同学是一个非常艰苦的过程，尽管我每天几乎都要比别的同学多学一两个小 时，但是到了大学二年级结束的时候我的成绩依然排在班内最后几名。非常勤奋又非常郁闷，也没有女生来爱我安慰我。（笑声）这导致的结果是，我在大学三年级 的时候得了一场重病，这个病叫做传染性侵润肺结核。当时我就晕了，因为当时我正在读《红楼梦》，正好读到林黛玉因为肺结核吐血而亡的那一章，（笑声）我还 以为我的生命从此结束，后来北大医院的医生告诉我现在这种病能够治好，但是需要在医院里住一年。我在医院里住了一年，苦闷了一年，读了很多书，也写了六百 多首诗歌，可惜一首诗歌都没有出版过。从此以后我就跟写诗结上了缘，但是我这个人有丰富的情感，但是没有优美的文笔，所以终于没有成为诗人。后来我感到非 常的庆幸，因为我发现真正成为诗人的人后来都出事了。我们跟当时还不太出名的诗人海子在一起写过诗。后来他写过一首优美的诗歌，叫做《面朝大海，春暖花 开》，我们每一个同学大概都能背。后来当我听说他卧轨自杀的时候，嚎啕大哭了整整一天。从此以后，我放下笔，再也不写诗了。（掌）</p>
<p>记得我在北大的时候，到大学四年级毕业时，我的成绩依然排在全班最后几名。但是，当时我已经有了一个良好的心态。我知道我在聪明上比不过我的同学，<strong>但是我 有一种能力，就是持续不断的努力</strong>。所以在我们班的毕业典礼上我说了这么一段话，到现在我的同学还能记得，我说：“大家都获得了优异的成绩，我是我们班的落 后同学。但是我想让同学们放心，我决不放弃。你们五年干成的事情我干十年，你们十年干成的我干二十年，你们二十年干成的我干四十年”。（ 掌声）我对他们说：“如果实在不行，我会保持心情愉快、身体健康，到八十岁以后把你们送走了我再走。”（笑声掌声）</p>
<p>有一个故事说，能够到达金字塔顶端的只有两种动物，一是雄鹰，靠自己的天赋和翅膀飞了上去。我们这儿有很多雄鹰式的人物，很多同学学习不需要太努力就能达 到高峰。很多同学后来可能很轻松地就能在北大毕业以后进入哈佛、耶鲁、牛津、剑桥这样的名牌大学继续深造。有很多同学身上充满了天赋，不需要学习就有这样 的才能，比如说我刚才提到的我的班长王强，他的模仿能力就是超群的，到任何一个地方，听任何一句话，听一遍模仿出来的绝对不会两样。所以他在北大广播站当 播音员当了整整四年。我每天听着他的声音，心头咬牙切齿充满仇恨。（笑声）所以，有天赋的人就像雄鹰。但是，大家也都知道，有另外一种动物，也到了金字塔 的顶端。那就是蜗牛。蜗牛肯定只能是爬上去。从低下爬到上面可能要一个月、两个月，甚至一年、两年。在金字塔顶端，人们确实找到了蜗牛的痕迹。我相信蜗牛 绝对不会一帆风顺地爬上去，一定会掉下来、再爬、掉下来、再爬。但是，同学们所要知道的是，蜗牛只要爬到金字塔顶端，它眼中所看到的世界，它收获的成就， 跟雄鹰是一模一样的。（掌声）所以，也许我们在座的同学有的是雄鹰，有的是蜗牛。我在北大的时候，包括到今天为止，我一直认为我是一只蜗牛。但是我一直在 爬，也许还没有爬到金字塔的顶端。但是只要你在爬，就足以给自己留下令生命感动的日子。（掌声）</p>
<p><strong>我常常跟同学们说，如果我们的生命不为自己留下一些让自己热泪盈眶的日子，你的生命就是白过的</strong>。我们很多同学凭着优异的成绩进入了北大，但是北大绝不是你 们学习的终点，而是你们生命的起点。在一岁到十八岁的岁月中间，你听老师的话、听父母的话，现在你真正开始了自己的独立生活。我们必须为自己创造一些让自 己感动的日子，你才能够感动别人。我们这儿有富裕家庭来的，也有贫困家庭来的，我们生命的起点由不得你选择出生在富裕家庭还是贫困家庭，如果你生在贫困家 庭，你不能说老爸给我收回去，我不想在这里待着。但是我们生命的终点是由我们自己选择的。我们所有在座的同学过去都走得很好，已经在十八岁的年龄走到了很 多中国孩子的前面去，因为北大是中国的骄傲，也可以说是世界的骄傲。但是，到北大并不意味着你从此大功告成，并不意味着你未来的路也能走好，后面的五十 年、六十年，甚至一百年你该怎么走，成为了每一个同学都要思考的<span onclick="tagshow(event)" class="t_tag">问题</span>。就本人而言，我觉得只要有两样东西在心中，我们就能成就自己的人生。</p>
<p><strong>第一样叫做理想。</strong>我从小就有一种感觉，希望穿越地平线走向远方，我把它叫做“穿越地平线的渴望”。也正是因为这种强烈的渴望，使我有勇气不断地高考。当 然，我生命中也有榜样。比如我有一个邻居，非常的有名，是我终生的榜样，他的名字叫徐霞客。当然，是五百年前的邻居。但是他确实是我的邻居，江苏江阴的， 我也是江苏江阴的。因为崇拜徐霞客，直接导致我在高考的时候地理成绩考了九十七分。（掌声）也是徐霞客给我带来了穿越地平线的这种感觉，所以我也下定决 心，如果徐霞客走遍了中国，我就要走遍世界。而我现在正在实现自己这一梦想。所以，只要你心中有理想，有志向，同学们，你终将走向成功。你所要做到的就是 在这个过程要有艰苦奋斗、忍受挫折和失败的能力，要不断地把自己的心胸扩大，才能够把事情做得更好。</p>
<p><strong>第二样东西叫良心。</strong>什么叫良心呢？就是要做好事，要做对得起自己对得起别人的事情，要有和别人分享的姿态，要有愿意为别人服务的精神。有良心的人会从你具 体的生活中间做的事情体现出来，而且你所做的事情一定对你未来的生命产生影响。我来讲两个小故事，讲完我就结束我的讲话，已经占用了很长的时间。</p>
<p>第一个小故事。有一个企业家和我讲起他大学时候的一个故事，他们班有一个同学，家庭比较富有，每个礼拜都会带六个苹果到学校来。宿舍里的同学以为是一人一 个，结果他是自己一天吃一个。尽管苹果是他的，不给你也不能抢，但是从此同学留下一个印象，就是这个孩子太自私。后来这个企业家做成功了事情，而那个吃苹 果的同学还没有取得成功，就希望加入到这个企业家的队伍里来。但后来大家一商量，说不能让他加盟，原因很简单，因为在大学的时候他从来没有体现过<strong>分享精神</strong>。所以，对同学们来说在大学时代的第一个要点，你得跟同学们分享你所拥有的东西，感情、思想、财富，哪怕是一个苹果也可以分成六瓣大家一起吃。（掌声） 因为你要知道，这样做你将来能得到更多，你的付出永远不会是白白付出的。</p>
<p>我再来讲一下我自己的故事。在北大当学生的时候，我一直比较具备为同学服务的精神。我这个人成绩一直不怎么样，但我从小就热爱劳动，我希望通过勤奋的劳动 来引起老师和同学的的注意，所以我从小学一年级就一直打扫教室卫生。到了北大以后我养成了一个良好的习惯，每天为宿舍打扫卫生，这一打扫就打扫了四年。所以我们宿舍从来没排过卫生值日表。另外，我每天都拎着宿舍的水壶去给同学打水，把它当作一种体育锻炼。大家看我打水习惯了，最后还产生这样一种情况，有的 时候我忘了打水，同学就说“俞敏洪怎么还不去打水”。（笑声）。但是我并不觉得打水是一件多么吃亏的事情。因为大家都是一起同学，互相帮助是理所当然的。 同学们一定认为我这件事情白做了。又过了十年，到了九五年年底的时候新东方做到了一定规模，我希望找合作者，结果就跑到了美国和加拿大去寻找我的那些同 学，他们在大学的时候都是我生命的榜样，包括刚才讲到的王强老师等。我为了诱惑他们回来还带了一大把美元，每天在美国非常大方地花钱，想让他们知道在中国也能赚钱。我想大概这样就能让他们回来。后来他们回来了，但是给了我一个十分意外的理由。他们说：“俞敏洪，我们回去是冲着你过去为我们打了四年水。 ”（掌声）他们说：“我们知道，你有这样的一种精神，所以你有饭吃肯定不会给我们粥喝，所以让我们一起回中国，共同干新东方吧。”才有了新东方的今 天。（掌声）</p>
<p>人的一生是奋斗的一生，但是有的人一生过得很伟大，有的人一生过得很琐碎。如果我们有一个伟大的理想，有一颗善良的心，我们一定能把很多琐碎的日子堆砌起 来，变成一个伟大的生命。但是如果你每天庸庸碌碌，没有理想，从此停止进步，那未来你一辈子的日子堆积起来将永远是一堆琐碎。所以，我希望所有的同学能把 自己每天平凡的日子堆砌成伟大的人生。（掌声）</p>
<p>……</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/09/%e8%bd%ac%ef%bc%9a%e4%bf%9e%e6%95%8f%e6%b4%aa%e5%9c%a8%e5%8c%97%e4%ba%ac%e5%a4%a7%e5%ad%a62008%e5%b9%b4%e5%bc%80%e5%ad%a6%e5%85%b8%e7%a4%bc%e4%b8%8a%e7%9a%84%e6%bc%94%e8%ae%b2%e8%be%9e.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python中将中文字符串拆分为中文字符数组</title>
		<link>http://blog.feihoo.com/2008/06/python%e4%b8%ad%e5%b0%86%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%8b%86%e5%88%86%e4%b8%ba%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e6%95%b0%e7%bb%84.html</link>
		<comments>http://blog.feihoo.com/2008/06/python%e4%b8%ad%e5%b0%86%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%8b%86%e5%88%86%e4%b8%ba%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e6%95%b0%e7%bb%84.html#comments</comments>
		<pubDate>Thu, 26 Jun 2008 02:51:54 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[charset]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/19</guid>
		<description><![CDATA[line 是一个从中文文件(gbk)中读取的行,值为： 上海市第一中级人民法院刑事判决书 。
将中文字符串转换为中文 ：
def __line2characters(self, line):
return list(line.decode(&#8221;gbk&#8221;))
打印显示代码：
characters = self.__line2characters(line)
for ch in characters:
print ch.decode(&#8221;gbk&#8221;),
显示结果：
上 海 市 第 一 中 级 人 民 法 院 刑 事 判 决 书
如果不采用这种方式，直接list(line)的话，得到的是一个字节数组 。
&#8216;\xc9&#8242;, &#8216;\xcf&#8217;, &#8216;\xba&#8217;, &#8216;\xa3&#8242;, &#8216;\xca&#8217;, &#8216;\xd0&#8242;, &#8216;\xb5&#8242;, &#8216;\xda&#8217;, &#8216;\xd2&#8242;, &#8216;\xbb&#8217;, &#8216;\xd6&#8242;, &#8216;\xd0&#8242;, &#8216;\xbc&#8217;, &#8216;\xb6&#8242;, &#8216;\xc8&#8242;, &#8216;\xcb&#8217;, &#8216;\xc3&#8242;, &#8216;\xf1&#8242;, &#8216;\xb7&#8242;, &#8216;\xa8&#8242;, &#8216;\xd4&#8242;, &#8216;\xba&#8217;, &#8216;\xd0&#8242;, &#8216;\xcc&#8217;, &#8216;\xca&#8217;, &#8216;\xc2&#8242;, [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>line 是一个从中文文件(gbk)中读取的行,值为： 上海市第一中级人民法院刑事判决书 。</p>
<p>将中文字符串转换为中文 ：</p>
<p>def __line2characters(self, line):<br />
return list(line.decode(&#8221;gbk&#8221;))</p>
<p>打印显示代码：</p>
<p>characters = self.__line2characters(line)<br />
for ch in characters:<br />
print ch.decode(&#8221;gbk&#8221;),</p>
<p>显示结果：</p>
<p>上 海 市 第 一 中 级 人 民 法 院 刑 事 判 决 书</p>
<p>如果不采用这种方式，直接list(line)的话，得到的是一个字节数组 。</p>
<p>&#8216;\xc9&#8242;, &#8216;\xcf&#8217;, &#8216;\xba&#8217;, &#8216;\xa3&#8242;, &#8216;\xca&#8217;, &#8216;\xd0&#8242;, &#8216;\xb5&#8242;, &#8216;\xda&#8217;, &#8216;\xd2&#8242;, &#8216;\xbb&#8217;, &#8216;\xd6&#8242;, &#8216;\xd0&#8242;, &#8216;\xbc&#8217;, &#8216;\xb6&#8242;, &#8216;\xc8&#8242;, &#8216;\xcb&#8217;, &#8216;\xc3&#8242;, &#8216;\xf1&#8242;, &#8216;\xb7&#8242;, &#8216;\xa8&#8242;, &#8216;\xd4&#8242;, &#8216;\xba&#8217;, &#8216;\xd0&#8242;, &#8216;\xcc&#8217;, &#8216;\xca&#8217;, &#8216;\xc2&#8242;, &#8216;\xc5&#8242;, &#8216;\xd0&#8242;, &#8216;\xbe&#8217;, &#8216;\xf6&#8242;, &#8216;\xca&#8217;, &#8216;\xe9&#8242;, &#8216;\n&#8217;</p>
<p>不明白其中的原理，但是实现了这个目的，请高手帮忙解释。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/06/python%e4%b8%ad%e5%b0%86%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%8b%86%e5%88%86%e4%b8%ba%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e6%95%b0%e7%bb%84.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有关 sum与limit组合使用时的问题</title>
		<link>http://blog.feihoo.com/2008/06/%e6%9c%89%e5%85%b3-sum%e4%b8%8elimit%e7%bb%84%e5%90%88%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e9%97%ae%e9%a2%98.html</link>
		<comments>http://blog.feihoo.com/2008/06/%e6%9c%89%e5%85%b3-sum%e4%b8%8elimit%e7%bb%84%e5%90%88%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Wed, 25 Jun 2008 14:03:51 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/18</guid>
		<description><![CDATA[
BODY { FONT-FAMILY:Verdana; FONT-SIZE:10pt } P { FONT-FAMILY:Verdana; FONT-SIZE:10pt } DIV { FONT-FAMILY:Verdana; FONT-SIZE:10pt } TD { FONT-FAMILY:Verdana; FONT-SIZE:10pt } 
select sum(a) from test_table order by b desc limit 1,2
这个句子，在MySQL 和 Sqlite3下，如此 sum得到的是 Empty Set
而 select sum(a) from test_table order by b desc limit 0,2 则返回全部记录的a字段的合计，limit不起作用。
但是去掉sum函数的话， select a from test_table order by b desc limit [...]


Related posts:<ol><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_basic.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：0.Basic'>（翻译）Orx教程：0.Basic</a></li><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="GENERATOR" content="BLOCKNOTE.NET" /><title></title></p>
<style>BODY { FONT-FAMILY:Verdana; FONT-SIZE:10pt } P { FONT-FAMILY:Verdana; FONT-SIZE:10pt } DIV { FONT-FAMILY:Verdana; FONT-SIZE:10pt } TD { FONT-FAMILY:Verdana; FONT-SIZE:10pt } </style>
<p><basefont face="Verdana" size="2"></basefont>select sum(a) from test_table order by b desc limit 1,2</p>
<p>这个句子，在MySQL 和 Sqlite3下，如此 sum得到的是 Empty Set</p>
<p>而 select sum(a) from test_table order by b desc limit 0,2 则返回全部记录的a字段的合计，limit不起作用。</p>
<p>但是去掉sum函数的话， select a from test_table order by b desc limit 1,2 能够选择出需要的行。</p>
<p>为什么？ 来自 MySQL 官方站点论坛的解释：</p>
<blockquote><p>The LIMIT clause affects only the number of rows returned, and this query in fact only returns one row. You might want to try something like this:</p></blockquote>
<blockquote>
<blockquote><p><font face="monospace"> SELECT sum(quantity)</font><br />
<font face="monospace"> FROM (SELECT quantity</font><br />
<font face="monospace"> FROM stock_card</font><br />
<font face="monospace"> LIMIT 0,2</font><br />
<font face="monospace"> ) AS subquery;</font></p></blockquote>
</blockquote>


<p>Related posts:<ol><li><a href='http://blog.feihoo.com/2010/07/orx_tutorial_cn_basic.html' rel='bookmark' title='Permanent Link: （翻译）Orx教程：0.Basic'>（翻译）Orx教程：0.Basic</a></li><li><a href='http://blog.feihoo.com/2009/05/vim-usage.html' rel='bookmark' title='Permanent Link: Vim 快捷键'>Vim 快捷键</a></li><li><a href='http://blog.feihoo.com/2009/11/%e7%ae%97%e6%b3%95%e8%a7%a3%e9%a2%98%e6%80%9d%e8%80%83%e8%bf%87%e7%a8%8b.html' rel='bookmark' title='Permanent Link: 算法解题思考过程[总结]'>算法解题思考过程[总结]</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/06/%e6%9c%89%e5%85%b3-sum%e4%b8%8elimit%e7%bb%84%e5%90%88%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>感谢日东的珍贵礼物</title>
		<link>http://blog.feihoo.com/2008/06/%e6%84%9f%e8%b0%a2%e6%97%a5%e4%b8%9c%e7%9a%84%e7%8f%8d%e8%b4%b5%e7%a4%bc%e7%89%a9.html</link>
		<comments>http://blog.feihoo.com/2008/06/%e6%84%9f%e8%b0%a2%e6%97%a5%e4%b8%9c%e7%9a%84%e7%8f%8d%e8%b4%b5%e7%a4%bc%e7%89%a9.html#comments</comments>
		<pubDate>Mon, 16 Jun 2008 03:41:23 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@生活]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/15</guid>
		<description><![CDATA[
他为我们结婚，做了个专门的网站。收到这份珍贵的礼物，莫名感动。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.liuzhaoren.cn" title="站点的截图"><img src="http://blog.feihoo.com/wp-content/uploads/2008/06/liuzhaorecn448_336.png" title="站点的截图" alt="站点的截图" /></a><br />
他为我们结婚，做了个专门的网站。收到这份珍贵的礼物，莫名感动。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2008/06/%e6%84%9f%e8%b0%a2%e6%97%a5%e4%b8%9c%e7%9a%84%e7%8f%8d%e8%b4%b5%e7%a4%bc%e7%89%a9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>闻网友晒见父母的次数有感</title>
		<link>http://blog.feihoo.com/2007/11/%e9%97%bb%e7%bd%91%e5%8f%8b%e6%99%92%e8%a7%81%e7%88%b6%e6%af%8d%e7%9a%84%e6%ac%a1%e6%95%b0%e6%9c%89%e6%84%9f.html</link>
		<comments>http://blog.feihoo.com/2007/11/%e9%97%bb%e7%bd%91%e5%8f%8b%e6%99%92%e8%a7%81%e7%88%b6%e6%af%8d%e7%9a%84%e6%ac%a1%e6%95%b0%e6%9c%89%e6%84%9f.html#comments</comments>
		<pubDate>Tue, 06 Nov 2007 00:45:45 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@生活]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/12</guid>
		<description><![CDATA[在公司内网看到一篇文章，讨论网友晒见父母的次数。阅后，心里戚戚然。
我回复道：
        我早算过了，如果不能把爸爸妈妈接到北京来，我基本上一年见父母一次吧。就像我爸爸说的，他由于打工待遇微薄，春节时人潮太多，工厂放假又少，以前一般要两年才能回家见爷爷一次。现在爷爷八十多了，还是只能一年见一次。想起这些怎么不心里戚戚然。
啊，咱们公司的年假，是最好的一项福利待遇了。我喜欢。
原文如下：
 				近日，一些网友在一起聊自己的父母。有网友表示：以前总觉得孝敬爸妈的机会还很多，可仔细一算，爸妈能再活二十年，我每年平均回去一两次，跟他们在一起最多就30来次；假若他们只能再活十年，跟他们见面的机会就只有十多次了。
我们曾经对网上的“晒客”们有过非议，认为他们很无聊。“晒工资”自己的工资也涨不了，“晒隐私”你没有那些明星多。可当我看到“父母年迈我们还能见多少面”的帖子时，竟然被深深地打动了。
这是一个令人感到心酸的话题。“父母年迈我们还能见多少面”就像是一根针插进我们感情的胸口，触动我们那麻木的神经，每个人都会感到沉重和自 责。当我们用“多少”这个词儿来标注与父母见面的次数时，才发现这份感情原来是那么的宝贵，而我们却无情的挥霍。“多少”不是多而是少，我们与父母见面的 次数实在是太少了。
面对年迈的父母，我们或许还没有来得及去想这样一个沉重的话题。因为我们一直以为自己还是个孩子。我们的内心深处是不希望父母老去的，希望他们永远年轻，而人生百年又有谁能避免呢？
曾几何时，我们自以为自己已经长大，不再需要父母的呵护；曾几何时，我们厌倦了父母的唠叨，听不进老人的规劝；曾几何时，我们来去匆匆，把家 当作了客栈。而只有当我们静下心来，认真地思考“我们还能见年迈的父母多少面”这样的问题时，才发现自己依然是年幼无知。虽然我们已然是别人的父亲或母 亲。
古代说“父母在，不远游。”可现代社会又有几人能与父母长相厮守，床前尽孝呢？对于在远方的游子，一年也许就有在春节时，才能回家见上父母一 面。即使生活在一个城市，真正与父母在一起的时间又有多少呢？我们嘴上喊着“忙，没时间，加班……”，可宁愿在家上网聊天，出门与朋友喝酒。我们有几个人 还记得父母的生日，会记得上次回家是几月几号，我们多久没和父母聊天了？而还有一些自诩为“月光一族”的朋友，竟然还跟年迈的父母伸手要钱。
不要责怪这位网友的残酷，他用自己的冷静告诉了我们这样一个现实的问题。珍惜和父母在一起的时间吧，不要嫌弃父母的唠叨，多同他们聊聊天；不要嫌弃父母的土气，常回家看看；不要忘了父母的养育，让他们有一个祥和的晚年。
与那些“晒工资”、“晒隐私”、“晒家庭”的晒客相比，我们真应该为这位网友叫好，因为他教会了我们如何珍惜，如何不丢弃孝敬老人这样的传统美德。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>在公司内网看到一篇文章，讨论网友晒见父母的次数。阅后，心里戚戚然。</p>
<p>我回复道：</p>
<blockquote><p>        我早算过了，如果不能把爸爸妈妈接到北京来，我基本上一年见父母一次吧。就像我爸爸说的，他由于打工待遇微薄，春节时人潮太多，工厂放假又少，以前一般要两年才能回家见爷爷一次。现在爷爷八十多了，还是只能一年见一次。想起这些怎么不心里戚戚然。<br />
啊，咱们公司的年假，是最好的一项福利待遇了。我喜欢。</p></blockquote>
<p>原文如下：</p>
<blockquote><p> 				近日，一些网友在一起聊自己的父母。有网友表示：以前总觉得孝敬爸妈的机会还很多，可仔细一算，爸妈能再活二十年，我每年平均回去一两次，跟他们在一起最多就30来次；假若他们只能再活十年，跟他们见面的机会就只有十多次了。</p>
<p>我们曾经对网上的“晒客”们有过非议，认为他们很无聊。“晒工资”自己的工资也涨不了，“晒隐私”你没有那些明星多。可当我看到“父母年迈我们还能见多少面”的帖子时，竟然被深深地打动了。</p>
<p>这是一个令人感到心酸的话题。“父母年迈我们还能见多少面”就像是一根针插进我们感情的胸口，触动我们那麻木的神经，每个人都会感到沉重和自 责。当我们用“多少”这个词儿来标注与父母见面的次数时，才发现这份感情原来是那么的宝贵，而我们却无情的挥霍。“多少”不是多而是少，我们与父母见面的 次数实在是太少了。</p>
<p>面对年迈的父母，我们或许还没有来得及去想这样一个沉重的话题。因为我们一直以为自己还是个孩子。我们的内心深处是不希望父母老去的，希望他们永远年轻，而人生百年又有谁能避免呢？</p>
<p>曾几何时，我们自以为自己已经长大，不再需要父母的呵护；曾几何时，我们厌倦了父母的唠叨，听不进老人的规劝；曾几何时，我们来去匆匆，把家 当作了客栈。而只有当我们静下心来，认真地思考“我们还能见年迈的父母多少面”这样的问题时，才发现自己依然是年幼无知。虽然我们已然是别人的父亲或母 亲。</p>
<p>古代说“父母在，不远游。”可现代社会又有几人能与父母长相厮守，床前尽孝呢？对于在远方的游子，一年也许就有在春节时，才能回家见上父母一 面。即使生活在一个城市，真正与父母在一起的时间又有多少呢？我们嘴上喊着“忙，没时间，加班……”，可宁愿在家上网聊天，出门与朋友喝酒。我们有几个人 还记得父母的生日，会记得上次回家是几月几号，我们多久没和父母聊天了？而还有一些自诩为“月光一族”的朋友，竟然还跟年迈的父母伸手要钱。</p>
<p>不要责怪这位网友的残酷，他用自己的冷静告诉了我们这样一个现实的问题。珍惜和父母在一起的时间吧，不要嫌弃父母的唠叨，多同他们聊聊天；不要嫌弃父母的土气，常回家看看；不要忘了父母的养育，让他们有一个祥和的晚年。</p>
<p>与那些“晒工资”、“晒隐私”、“晒家庭”的晒客相比，我们真应该为这位网友叫好，因为他教会了我们如何珍惜，如何不丢弃孝敬老人这样的传统美德。</p></blockquote>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2007/11/%e9%97%bb%e7%bd%91%e5%8f%8b%e6%99%92%e8%a7%81%e7%88%b6%e6%af%8d%e7%9a%84%e6%ac%a1%e6%95%b0%e6%9c%89%e6%84%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun科技日归来</title>
		<link>http://blog.feihoo.com/2007/11/sun%e7%a7%91%e6%8a%80%e6%97%a5%e5%bd%92%e6%9d%a5.html</link>
		<comments>http://blog.feihoo.com/2007/11/sun%e7%a7%91%e6%8a%80%e6%97%a5%e5%bd%92%e6%9d%a5.html#comments</comments>
		<pubDate>Thu, 01 Nov 2007 15:55:07 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[$IT Thoughts]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/9</guid>
		<description><![CDATA[ 
今天参加了Sun的2007北京科技日。这是我第一次参加类似的会议，感觉很有意思。
回来以后，仔细想了想，今天让我印象最深刻的，大概就是Netbeans了。今天的多场演讲都讲到了Netbeans，演讲者们也都言必谈Netbeans。以前曾经尝试用过Netbeans，但是因为用习惯了Eclipse的关系，用Netbeans总是感觉不方便。
第一个Session是GlassFish以及JEE 6，演讲的人讲得很有神采，侃侃而谈，内容很多，繁杂。不过，仔细想来，对我们受益的就不是很多了。不过，对GlassFish有了个印象吧。有时间的时候可以下载来玩玩。
第二个Session是Oracle的BEPL介绍，呵呵，权且当作是广告时间好了。
第三个Session的演讲者是一位新加坡人，英文口应很重。将了JAX-RPC WebService和Restful WebService。两种讲解都演示了下，加深了我对Web Service开发的印象。 我有他的Slides，谁要的给个Comment吧。
第四个Session的演讲者是一位洋女士。主要讲了JavaFX和JRuby。名词很热。回来就冲着JRuby试用了下。
后来的两个Session都是以为Sun工程师讲的。一个是GC，澄清了某些概念。很好的一个东西。想要他的Slides，他说网上有下载，可惜现在还是没有找到。明天去了跟他交换名片吧。另一个是SWING，展示了他的一个程序。看着还行。
有一个很遗憾的是Netbeans Profiler的实验竟然没有注意到，早想听听的一个好东西，今天就这么错过了。
另外，收了一些小礼物。
还有，China-pub的返券得了50元，呵呵。 后来才知道，每次只能够使用一张。。看来，又要买好几次书了。


No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p> <a href="http://blog.feihoo.com/wp-content/uploads/2007/11/std08_web_header.jpg" title="std08_web_header.jpg"><img src="http://blog.feihoo.com/wp-content/uploads/2007/11/std08_web_header.jpg" alt="std08_web_header.jpg" /></a></p>
<p>今天参加了Sun的2007北京科技日。这是我第一次参加类似的会议，感觉很有意思。</p>
<p>回来以后，仔细想了想，今天让我印象最深刻的，大概就是Netbeans了。今天的多场演讲都讲到了Netbeans，演讲者们也都言必谈Netbeans。以前曾经尝试用过Netbeans，但是因为用习惯了Eclipse的关系，用Netbeans总是感觉不方便。</p>
<p>第一个Session是GlassFish以及JEE 6，演讲的人讲得很有神采，侃侃而谈，内容很多，繁杂。不过，仔细想来，对我们受益的就不是很多了。不过，对GlassFish有了个印象吧。有时间的时候可以下载来玩玩。</p>
<p>第二个Session是Oracle的BEPL介绍，呵呵，权且当作是广告时间好了。</p>
<p>第三个Session的演讲者是一位新加坡人，英文口应很重。将了JAX-RPC WebService和Restful WebService。两种讲解都演示了下，加深了我对Web Service开发的印象。 我有他的Slides，谁要的给个Comment吧。</p>
<p>第四个Session的演讲者是一位洋女士。主要讲了JavaFX和JRuby。名词很热。回来就冲着JRuby试用了下。</p>
<p>后来的两个Session都是以为Sun工程师讲的。一个是GC，澄清了某些概念。很好的一个东西。想要他的Slides，他说网上有下载，可惜现在还是没有找到。明天去了跟他交换名片吧。另一个是SWING，展示了他的一个程序。看着还行。</p>
<p>有一个很遗憾的是Netbeans Profiler的实验竟然没有注意到，早想听听的一个好东西，今天就这么错过了。</p>
<p>另外，收了一些小礼物。</p>
<p>还有，China-pub的返券得了50元，呵呵。 后来才知道，每次只能够使用一张。。看来，又要买好几次书了。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2007/11/sun%e7%a7%91%e6%8a%80%e6%97%a5%e5%bd%92%e6%9d%a5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转贴：华南虎照片造假论泛起是谁的悲哀</title>
		<link>http://blog.feihoo.com/2007/10/%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81%e7%9a%84%e6%82%b2%e5%93%80.html</link>
		<comments>http://blog.feihoo.com/2007/10/%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81%e7%9a%84%e6%82%b2%e5%93%80.html#comments</comments>
		<pubDate>Tue, 30 Oct 2007 11:16:50 +0000</pubDate>
		<dc:creator>Zhaoren</dc:creator>
				<category><![CDATA[@迷思]]></category>

		<guid isPermaLink="false">http://www.feihoo.com/archives/7</guid>
		<description><![CDATA[

引言：我完整地追踪了华南虎照片质疑闹剧的整个过程，看似公平理性实则倾向质疑不屑的报纸和记者，莽撞冲动的网友，炒作狂妄的傅某，以及陕西官方的反应，周正龙的辩解和愤怒，其实，一幅当代中国 媒体和网络乌烟瘴气的真实画像。所谓公正客观的记者们、报纸们，所谓科学专业的伪专家们，以及愚昧习惯炒作的网友们，露出了你们的真面目。
下文转自：http://ido.3mt.com.cn/Article/200710/show846464c32p1.html


天府论坛  张军昱 2007-10-17 13:56
野生华南虎照片会是某些网友所说的那样，“是纸老虎或者玩具老虎”吗？
老猎人周正龙冒着“被老虎吃掉”的危险拍摄到野生华南虎的照片，就好比是在已经持续了30年的野生华南虎已经绝迹的沉默中，一个勇士提溜着一只活蹦乱跳的大老虎登高一呼，振奋人心的鼓动效果，大概是比同样出自陕西的《信天游》还要管用。
《信天游》还没听过瘾，就有人开始怀疑野生华南虎照片的真假，一些相关的臆测性的帖子开始出现在国内的几大知名论坛上，“四大造假”说法看上去言之凿凿，大有可以作为呈堂证供的势头。
很多媒体都公布了这一张照片，无论是色调，还是清晰度，看上去似乎确实是和正常拍摄的照片不大一样。公布这样一张照片不是小事情，陕西省林业厅在向媒体 公布之前早就征求过专家的论证，从技术角度上证实了照片的真实性。至于用很多人都会作的PS，陕西省林业厅的说法是如果说照片经过了处理，那就是向媒体公 布的照片是在原照片的基础上经过放大后取了以老虎为主体的截图，并不影响照片的真实性。
孤身一人拍摄野生老虎，自然不是像摄影家在摄影棚里拍 摄美女模特一样可以做到从从容容，何况周正龙只是个老猎人，打兔子他就行，拍摄照片他就属于外行了。四大质疑之一的“拍摄照片的相机本来可用更长焦距的镜 头将老虎拉到更近，但拍摄者却没有这样做，而且对焦点放在了树叶而非老虎身上”，很像是一个过惯了衣来伸手、饭来张口的美食家在责怪一个吃大饼的饿汉怎么 不知道大饼子要搭配了50年的红酒吃才更有营养。
真假自有技术上的论证。科学是严肃的，让人可以思考的是像发现野生华南虎这样严肃的科学命题怎么也会轻易引起网友的轻易怀疑。
空穴自有来风的地方，凡事都有榜样，始作俑者大概还是娱乐圈的炒作风气波及到了本该严肃的科学命题上。娱乐圈流行炒作，并且是深谙炒作的无穷妙处。就像 是鲁迅说得那样，看到女子露在外面的半截胳膊就可以想到大腿，实在没有美丽胳膊可以展示的，就张大了嘴巴说自己要变性，变出个美丽胳膊来做演贾宝玉的最佳 人选。
诸葛亮都虚伪了，李白都蛊惑仔了，孔子也郁闷了，总之是要引起大家的注意，娱乐至死，然后是学术至死。到了纸馅包子新鲜出锅，是想没事儿都难了。
阿Q说，尼姑的头皮和尚摸得，他为什么就摸不得？在流行炒作、流行炒作炒作再炒作的一个染缸里，也难怪有人要动心思周正龙拿命换回来的照片难保就是假的。但是拿对待娱乐圈的心态来对付很多本该严肃的命题，这不知道又该是谁的悲哀？



No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><span id="BodyLabel" class="content" style="padding: 0px 10px; display: block"><br />
</span></p>
<p>引言：我完整地追踪了华南虎照片质疑闹剧的整个过程，看似公平理性实则倾向质疑不屑的报纸和记者，莽撞冲动的网友，炒作狂妄的傅某，以及陕西官方的反应，周正龙的辩解和愤怒，其实，一幅当代中国 媒体和网络乌烟瘴气的真实画像。所谓公正客观的记者们、报纸们，所谓科学专业的伪专家们，以及愚昧习惯炒作的网友们，露出了你们的真面目。</p>
<p>下文转自：http://ido.3mt.com.cn/Article/200710/show846464c32p1.html</p>
<p><img src="http://blog.feihoo.com/wp-content/uploads/2007/10/xinsrc_132100419085173477192.jpg" title="华南虎" alt="华南虎" align="middle" /></p>
<p><span id="BodyLabel" class="content" style="padding: 0px 10px; display: block"><br />
</span><span id="BodyLabel" class="content" style="padding: 0px 10px; display: block">天府论坛  张军昱 2007-10-17 13:56</span><br />
<span id="BodyLabel" class="content" style="padding: 0px 10px; display: block">野生<strong><strong>华南</strong>虎</strong>照片会是某些网友所说的那样，“是纸老虎或者玩具老虎”吗？<br />
老猎人周正龙冒着“被老虎吃掉”的危险拍摄到野生<strong><strong>华南</strong>虎</strong>的照片，就好比是在已经持续了30年的野生<strong><strong>华南</strong>虎</strong>已经绝迹的沉默中，一个勇士提溜着一只活蹦乱跳的大老虎登高一呼，振奋人心的鼓动效果，大概是比同样出自陕西的《信天游》还要管用。<br />
《信天游》还没听过瘾，就有人开始怀疑野生<strong><strong>华南</strong>虎</strong>照片的真假，一些相关的臆测性的帖子开始出现在国内的几大知名论坛上，“四大造假”说法看上去言之凿凿，大有可以作为呈堂证供的势头。<br />
很多媒体都公布了这一张照片，无论是色调，还是清晰度，看上去似乎确实是和正常拍摄的照片不大一样。公布这样一张照片不是小事情，陕西省林业厅在向媒体 公布之前早就征求过专家的论证，从技术角度上证实了照片的真实性。至于用很多人都会作的PS，陕西省林业厅的说法是如果说照片经过了处理，那就是向媒体公 布的照片是在原照片的基础上经过放大后取了以老虎为主体的截图，并不影响照片的真实性。<br />
孤身一人拍摄野生老虎，自然不是像摄影家在摄影棚里拍 摄美女模特一样可以做到从从容容，何况周正龙只是个老猎人，打兔子他就行，拍摄照片他就属于外行了。四大质疑之一的“拍摄照片的相机本来可用更长焦距的镜 头将老虎拉到更近，但拍摄者却没有这样做，而且对焦点放在了树叶而非老虎身上”，很像是一个过惯了衣来伸手、饭来张口的美食家在责怪一个吃大饼的饿汉怎么 不知道大饼子要搭配了50年的红酒吃才更有营养。<br />
真假自有技术上的论证。科学是严肃的，让人可以思考的是像发现野生<strong><strong>华南</strong>虎</strong>这样严肃的科学命题怎么也会轻易引起网友的轻易怀疑。<br />
空穴自有来风的地方，凡事都有榜样，始作俑者大概还是娱乐圈的炒作风气波及到了本该严肃的科学命题上。娱乐圈流行炒作，并且是深谙炒作的无穷妙处。就像 是鲁迅说得那样，看到女子露在外面的半截胳膊就可以想到大腿，实在没有美丽胳膊可以展示的，就张大了嘴巴说自己要变性，变出个美丽胳膊来做演贾宝玉的最佳 人选。<br />
诸葛亮都虚伪了，李白都蛊惑仔了，孔子也郁闷了，总之是要引起大家的注意，娱乐至死，然后是学术至死。到了纸馅包子新鲜出锅，是想没事儿都难了。<br />
阿Q说，尼姑的头皮和尚摸得，他为什么就摸不得？在流行炒作、流行炒作炒作再炒作的一个染缸里，也难怪有人要动心思周正龙拿命换回来的照片难保就是假的。但是拿对待娱乐圈的心态来对付很多本该严肃的命题，这不知道又该是谁的悲哀？<br />
</span></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.feihoo.com/2007/10/%e8%bd%ac%e8%b4%b4%ef%bc%9a%e5%8d%8e%e5%8d%97%e8%99%8e%e7%85%a7%e7%89%87%e9%80%a0%e5%81%87%e8%ae%ba%e6%b3%9b%e8%b5%b7%e6%98%af%e8%b0%81%e7%9a%84%e6%82%b2%e5%93%80.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
