<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>乐在其中</title>
		<link>http://www.eoss.cn/blog/</link>
		<description>一个不安分的程序员对技术和商业的思考...</description>
		<copyright>Powered by SaBlog-X. Copyright (C) 2003-2009.</copyright>
		<generator>SaBlog-X Version Plus 2.0 Build 20090308</generator>
		<lastBuildDate>Wed, 10 Mar 2010 11:54:17 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://www.eoss.cn/blog/usability1/</guid>
			<title>易用性简谈-从UML和Hibernate说开去</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>最近在CSDN上看到一篇文章《UML正日薄西山的13个理由》，说出了我一直想说的话，我一直认为UML就是一种&ldquo;符号暴力&rdquo;。一直想写一篇关于易用性的文章，易用性对于软件开发而言关系到用户学习和使用的难度，也就进一步关系到了开发的效率和质量。对易用性的看法还没来得及仔细梳理，简单谈谈目前想到的两条：</p>
<p>1、图形化&ne;易用性</p>
<p>很好的例子就是UML。</p>
<p>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="file:///C:%5CTEMP%5Cmsohtml1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning />
<w:ValidateAgainstSchemas />
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables />
<w:SnapToGridInCell />
<w:WrapTextWithPunct />
<w:UseAsianBreakRules />
<w:DontGrowAutofit />
<w:UseFELayout />
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><style type="text/css">
<!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:SimSun;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:宋体;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--><br></style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="file:///C:%5CTEMP%5Cmsohtml1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning />
<w:ValidateAgainstSchemas />
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:BreakWrappedTables />
<w:SnapToGridInCell />
<w:WrapTextWithPunct />
<w:UseAsianBreakRules />
<w:DontGrowAutofit />
<w:UseFELayout />
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><style type="text/css">
<!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:SimSun;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:宋体;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->≠</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]--></meta>
</meta>
</meta>
</meta>
</meta>
</meta>
</meta>
</meta>
</p>
<p>2、自动化&ne;易用性</p>
<p>显然自动化的目的是为了易用性，但并不是所有的自动化都能够带来正面效益。以Hibernate为例，一旦自动化的设计超出了普通人的心智模型，往往会带来负面影响。我曾写过一篇批评Hibernate的文章，也引起了很大的争议，我承认只要有足够的时间和足够的细心，存在能够把Hibernate学到精通的人，但在现实的环境中，影响到时间和细心程度的因素实在太多了，有时我们不得不为Hibernate的这种复杂的自动化说埋下的隐患买单。</p>
<p>那么什么才是好的易用性，这个话题又可以谈很多，这里只归纳一条：Simple is Best.</p>
<p>附：UML正日薄西山的13个理由</p>
<p><span style="background-color: rgb(192, 192, 192);">编者按：UML开发社区最近流失了一批开发者和拥趸，对一种软件设计技术来说，这意味着它正趋于下滑。而且它的发展趋于一个不利的方向：UML已经开始变得官僚化。本文作者罗列13个理由，以此来分析为何UML正日薄西山。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>由委员会设计</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 从长远来看这是导致语言或技术失败的一个主要和常见的原因，CORBA就是最好的例子。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>过分注重商业化</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 试图为一门不够成熟的技术出售工具而且只对工程的管理部门承诺什么，这只能是一种短期有效的方法。有时候人们会认识到这样的成本远大于收益，这也让程序员在本能上非常厌恶。另一些人因为工程管理部门的要求或好奇心而尝试这些工具，但大都使用不超过一个工程就弃用了。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>太过激进地想把几乎一切都涵盖起来（UML规范超过800页）</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 当你试图为一个领域内的每个问题都提供一个解决方案的时候，最终你会发现其实你没有提供任何有效的解决方法。UML试图解决所有与软件开发相关的问题。试图涵盖一切是一个不可能的任务，即使规范有800页，UML也只是覆盖了复杂的软件工程领域的一部分。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>背离了开发者的最初目的</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 作为一名程序员，我喜欢UML为设计通讯等内容而提供的标准化，能够使用一套通用的符号来与其他的程序员或者设计师交流我的想法真的很棒。我想大多数程序 员仍然只是使用类图表，或者在他们写一份文件的序列图时偶尔用一下。然而，UML开始使用那些即便是商务人士都不懂的面向商业的类图表。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>概念膨胀</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 在过去的10-15年里，UML一直试图概括所有流行语言的概念。现实么？</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>总在追赶新的语言和概念</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 承接上一点，既然UML承诺全语言的代码生成，就意味着它必须包含每一种特殊的语言架构。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>试图成为一门编程语言</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);">由于能够生成全代码，所以实际上UML试图成为一门编程语言，而一种通用的图形编程语言存在很大的问题。在人类历史上，所有语言的手写形式都是从图 形到文本，在捕捉和传递思想方面，字母表证明比图像更具表达力。如果试图用图形描述每个流程，那必须还得使用语言来注释这些图形。图形在形象化人们的思维 和概念方面确实有效，但是在描述细节方面语言更有效。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>需要昂贵的工具还是只需要一个文本编辑器</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 要想真正地UML入门，要求很高，他们需要训练，因为他们不是时时刻刻都在使用最直观的工具。咨询公司会喜欢UML的这一特性，因为这意味着昂贵的培训课程。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>缺乏模型清晰度（model clarity）</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);">  图形读不懂我听到很多开发者在理解UML图解的设计时发出这样的抱怨，最终不得不通过读代码来理解。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>缺乏真正软件设计的问题解决方法</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> UML规范很多，却没有软件系统常见问题的好的解决方法。随便举个例子：</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 没有多任务和任务间通信的解决方案；</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 没有用例（use cases）之间的依赖</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>假设你在写第一行代码前就知道一切</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 编写使用手册，然后在此基础上顺利成章地生成代码但这可能无法实现。由于在实践中一切都是动态的，所以UML图表如果要与代码保持一致，它的维护就变得非常麻烦，开发者对此很反感。</span></p>
<p><span style="background-color: rgb(192, 192, 192);">对待软件开发就像对待制造业</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 软件设计不是制造业，软件创作是一种创造性的活动，更加是工艺或者艺术。UML试图标准化和形式化开发者的想象力和才智。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"><strong>UML工具的目标错误</strong></span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 大部分的UML工具承诺代码生成，然而大多数时候它们都是没用的，因为只是生成了没有逻辑的空的类别本体。而且这很笨重和繁琐，因为开发者必须保持代码和图表的同步。有开发者不得不使用丑陋格式的评论来进行标记。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 这些工具的另一个问题是屏幕上呈现的有效图表元素的数量。很多次我查看一个UML图表或者一个复杂的系统，但只能看到一角，根本无法帮助全局的理解。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 而且，很多使用UML完成的工程，其最终的代码与最初的UML图表并不一致。</span></p>
<p><span style="background-color: rgb(192, 192, 192);"> 我也不认为代码生成是个好主意，一般来说生成的都是复杂的代码，而大部分工程可能使用库中的公用代码更好。</span></p>
<p><span style="background-color: rgb(192, 192, 192);">  你怎么看待UML呢？</span></p>
<p>&nbsp;</p>]]></description>
			<link>http://www.eoss.cn/blog/usability1/</link>
			<category domain="http://www.eoss.cn/blog/category/pm/">产品经理</category>
			<pubDate>2010-01-07 17:38</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/nothing_to_say/</guid>
			<title>大环境不好，有什么好写的呢？</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>很久没有写文章了，正如谢文所说的，&ldquo;有什么好写的呢？&ldquo;&ldquo;大环境不好，即使有创新也会被各种各样的利益集团以五花八门的借口扼杀掉。创新容易颠覆 既存的利益分配格局，所以也容易被既得利益者扼杀，这不难理解，比较难理解的是这种扼杀是在高举创新大旗的口号声中进行的。&ldquo;</p>
<p>其他的不说了，就拿最近传言的CN域名必须在公司名下和落实不备案不予解析这两条政策来说，我的这个网站也不知道还能坚持多久，也许明天就会倒下。</p>]]></description>
			<link>http://www.eoss.cn/blog/nothing_to_say/</link>
			<category domain="http://www.eoss.cn/blog/category/default/">默认分类</category>
			<pubDate>2010-01-07 16:42</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/findvps/</guid>
			<title>VPS选购网FindVPS</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>FindVPS定位于VPS导购、VPS使用教程发布以及VPS使用交流。</p>
<p><a href="http://www.findvps.cn" target="_blank">http://www.findvps.cn</a></p>]]></description>
			<link>http://www.eoss.cn/blog/findvps/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-10-16 00:40</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/apparch_vps/</guid>
			<title>VPS使用手记-推荐VPS服务商AppArch</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>&nbsp;AppArch(<a target="_blank" href="http://www.apparch.net">www.apparch.net</a>)致力于为客户提供高端VPS服务。<br />
&nbsp; <br />
&nbsp; 选择我们的理由:<br />
<br />
&nbsp; 品质<br />
&nbsp; * 基于Xen虚拟化技术，安全稳定，客户拥有完全root管理权限<br />
&nbsp; * RAID1存储保障<br />
&nbsp; * 服务器数据中心位于国内访问速度最佳洛杉矶<br />
&nbsp; * 拒绝非法网站，保障合法用户对网络、服务器资源的使用<br />
<br />
&nbsp; 弹性<br />
&nbsp; * 灵活的升级模式，按需配置你的VPS，随时升级<br />
&nbsp; * 灵活的付费模式，无需开通费，目前支持月付，不满意随时取消，支持支付宝等在线付款<br />
&nbsp; * 提供CentOS、Ubuntu、Fedora、Debian、Gentoo等多种操作系统可供选择<br />
<br />
&nbsp; 增值<br />
&nbsp; * 自主研发的基于Web界面的虚拟机管理系统<br />
&nbsp; * 专业全面的Linux技术、网站架构设计支持<br />
<br />
&nbsp; 未来<br />
&nbsp; * 按需付费，按小时计费模式<br />
&nbsp; * 动态扩充计算资源<br />
&nbsp; * 动态迁移<br />
&nbsp; * 自动伸缩架构<br />
&nbsp; * 高可用性<br />
&nbsp; * 负载平衡<br />
&nbsp; * 自动资源分配<br />
&nbsp; * API</p>
<p>&nbsp; AppArch Beta测试期间推出特惠型VPS主机:<br />
&nbsp; * Xen<br />
&nbsp; * 512MB内存<br />
&nbsp; * 25GB RAID1 硬盘空间<br />
&nbsp; * 1个独立IP<br />
&nbsp; * 100Mbps网络端口 400GB流量<br />
&nbsp; * Linux<br />
&nbsp; 168元/月</p>
<p>&nbsp; 推荐联系方式<br />
&nbsp; 我们推荐您提交服务单联系我们，以便我们能高效、安全地处理您的问题。<br />
<br />
&nbsp; 其它联系方式<br />
&nbsp; Email: 售前咨询 sales@apparch.net 技术支持 support@apparch.net<br />
&nbsp; MSN: apparch@live.cn</p>]]></description>
			<link>http://www.eoss.cn/blog/apparch_vps/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-09-17 15:45</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/simple_vim/</guid>
			<title>VPS使用手记-VIM最简教程</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>vi/vim是Linux下一个常用的编辑器，很多VPS初始时只默认安装vim，所以简单掌握一下vim的使用是很有必要的。vim可以使用退格，相比vi更加简单，一般Linux上安装的都是vim，但可以启用vi风格，一般如果通过输入vi进入vi风格，那么输入vim可以进入vim风格。</p>
<p>基本上vi可分为三种操作状态，分别是命令模式（Command mode）、插入模式（Insert mode）和底线命令模式（Last line mode），各模式的功能区分如下：<br />
1． Comand mode：控制屏幕光标的移动，字符或光标的删除，移动复制某区段及进入Insert mode下，或者到Last line mode。<br />
2． Insert mode：唯有在Insert mode下，才可做文字数据输入，按Esc等可回到Comand mode。<br />
3． Last line mode：将储存文件或离开编辑器，也可设置编辑环境，如寻找字符串、列出行号等。<br />
不过可以把vi简化成两个模式，即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。</p>
<p>进入编辑状态：i<br />
退出编辑状态：Esc<br />
到第一行：gg<br />
到最後一行：G<br />
到某一行：xxG<br />
到行首：0<br />
到行末：$<br />
复制：yy<br />
贴上：p<br />
复原：u<br />
删整行：dd<br />
删除全部内容：dG<br />
显示行数：:set nu<br />
不显示行数：:set nonu<br />
搜寻：/、再次搜寻：n<br />
储存：:w<br />
离开：:q<br />
储存兼离开：:wq 或 shift+zz <br />
强制离开（不储存）：:q!</p>]]></description>
			<link>http://www.eoss.cn/blog/simple_vim/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-09-11 00:21</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/projectone_plan/</guid>
			<title>AppArch ProjectOne开源计划及预览版发布</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>网站开发讲究的是效率，能把一个创意在最短的时间内实现，往往容易占得先机。尽管Ruby On Rails的开发效率很高，但是如果每次开发网站都需要从头做起注册、登录、权限管理、忘记密码这些繁琐的基础功能，实在不是一件愉快的事。另一方面，尽管已经有几年的历史，Ruby On Rails在国内仍然属于迅速发展中的小众社区，到目前为止没有产生比较有影响力的开源项目，作为第一波绝大部分的Ruby On Rails开源项目几乎绝迹，如何为初学者提供一个学习、实践的案例成为一个现实的问题。<br />
<br />
AppArch ProjectOne的目标是通过长期的、持续的开发形成：<br />
一套实用的网站基础架构<br />
一份完善的架构风格和指导原则<br />
一个成熟的开源社区<br />
<br />
目前已经实现的功能：<br />
注册、不允许注册的关键字设置<br />
激活、重新激活<br />
登录<br />
Remember me<br />
注销<br />
忘记密码<br />
重设密码<br />
修改密码<br />
发生异常时发送邮件通知<br />
权限管理<br />
修改用户信息<br />
全局错误处理<br />
配置文件<br />
登录失败5次需要输入认证码<br />
管理界面<br />
用户头像<br />
类似于豆瓣的小组、豆邮、好友功能<br />
注册开关<br />
网站开关<br />
自动识别URL和图片<br />
...<br />
<br />
正在进行的工作：<br />
文档<br />
测试<br />
缓存<br />
Ajax<br />
代码重构、减少重复代码、优化<br />
数据挖掘<br />
...<br />
<br />
讨论区和Demo<br />
<a href="http://www.apparch.net" target="_blank">http://www.apparch.net</a><br />
<br />
注1：目前没有打开邮件发送功能，所以注册后请直接点击链接激活账号。<br />
注2：此版本为预览版，源代码近期放出。<br />
<br />
欢迎有兴趣的Ruby开发者加入我们。</p>]]></description>
			<link>http://www.eoss.cn/blog/projectone_plan/</link>
			<category domain="http://www.eoss.cn/blog/category/ror/">Ruby On Rails</category>
			<pubDate>2009-08-10 15:05</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/first_cloud_computing_brainstorming/</guid>
			<title>首次云计算头脑风暴</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>6月20日组织了杭州地区的首次<a href="http://www.douban.com/event/10724006/" target="_blank">云计算头脑风暴</a>，简单说说吧。</p>
<p>1、云计算确实是一个众说纷纭的概念，也许下次把范围限制在云计算基础架构或者具体的虚拟化技术可能更好些。</p>
<p>2、国内已经有不少先行者开始研究、开发云计算服务了，时不我待，这也是最近很少更新博客的原因。</p>
<p>关注云计算的可以加QQ群：87833826</p>]]></description>
			<link>http://www.eoss.cn/blog/first_cloud_computing_brainstorming/</link>
			<category domain="http://www.eoss.cn/blog/category/cloud_computing/">云计算</category>
			<pubDate>2009-07-06 11:00</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/open_project_one/</guid>
			<title>准备开源Project One</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>最近一直忙于研究云计算，把<a href="http://www.eoss.cn/blog/projectone" target="_blank">Project One</a>耽搁了一段时间，打算本周修改一把后把源代码放出来，代码是写得不怎么样，测试和文档都还没有，算是准开源吧，想开豆瓣小组类似网站的可以试试。</p>]]></description>
			<link>http://www.eoss.cn/blog/open_project_one/</link>
			<category domain="http://www.eoss.cn/blog/category/ror/">Ruby On Rails</category>
			<pubDate>2009-07-06 10:48</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/projectone/</guid>
			<title>第一个Ruby On Rails项目</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>网站开发讲究的是效率，能把一个创意在最短的时间内实现，往往容易占得先机。尽管Ruby On Rails的开发效率很高，但是如果每次开发网站都需要从头做起注册、登录、权限管理、忘记密码这些繁琐的基础功能，实在不是一件愉快的事。下面这些代码能够让我们直接关注网站的逻辑实现，而不是繁琐的基本功能。<br />
<br />
restful_authentication_tutorial<br />
http://github.com/activefx/restful_authentication_tutorial/tree/master<br />
<br />
Bort - A Base Rails Application<br />
http://jimneath.org/bort/<br />
<br />
还有就是正在开发中的Project One。<br />
目前已经实现了以下功能：<br />
注册、不允许注册的关键字设置<br />
激活、重新激活<br />
登录<br />
Remember me<br />
注销<br />
忘记密码<br />
重设密码<br />
修改密码<br />
发生异常时发送邮件通知<br />
权限管理<br />
修改用户信息<br />
全局错误处理<br />
配置文件<br />
登录失败5次需要输入认证码<br />
用户管理<br />
用户头像<br />
类似于豆瓣的小组、豆邮、好友功能<br />
注册开关<br />
网站开关<br />
...<br />
<br />
可以在这里测试 <a target="_blank" href="http://216.45.55.12:8080/">http://216.45.55.12:8080/</a><br />
<br />
目前没有打开邮件发送功能，所以注册后请直接点击链接激活账号。<br />
<br />
第一个Ruby On Rails程序，胡乱写写，小心轻点，发现Bug可以提交到<a target="_blank" href="http://216.45.55.12:8080/group/1">http://216.45.55.12:8080/group/1</a></p>]]></description>
			<link>http://www.eoss.cn/blog/projectone/</link>
			<category domain="http://www.eoss.cn/blog/category/ror/">Ruby On Rails</category>
			<pubDate>2009-06-15 13:49</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/tr_arch/</guid>
			<title>国内首个开放式严肃游戏专用底层引擎——TR引擎架构简介</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <div>TR引擎由凌泽信息科技（我所在的团队）研发，为国内首例开放式严肃游戏专用底层引擎，核心技术已经申请软件著作权并通过了产品登记测试，为科技部评选支持项目。</div>
<div>&nbsp;</div>
<div><span style="line-height: 150%;">TR</span><span style="line-height: 150%;">引擎技术平台的软件架构设计原则是低耦合、可配置、高性能、高兼容。为实现这样的设计准则，所有技术及模块尽可能的采用通用编程语言如</span><span style="line-height: 150%;">C/C++</span><span style="line-height: 150%;">编写</span><span style="line-height: 150%;">，保证了平台的可移植性。</span><span style="line-height: 150%;">实际应用中</span><span style="line-height: 150%;">每个严肃游戏产品并非需要集成所有的</span><span style="line-height: 150%;">TR</span><span style="line-height: 150%;">引擎技术</span><span style="line-height: 150%;">。应用</span><span style="line-height: 150%;">TR</span><span style="line-height: 150%;">引擎开发的严肃游戏具有</span><span style="line-height: 150%;">发布运行时优化、商业模式灵活的特点。</span></div>
<div>&nbsp;</div>
<div><span style="font-size: 10.5pt;">图形图像显示技术是</span><span style="font-size: 10.5pt;">TR</span><span style="font-size: 10.5pt;">引擎</span><span style="font-size: 10.5pt;">的核心</span><span style="font-size: 10.5pt;">部分</span><span style="font-size: 10.5pt;">，</span><span style="font-size: 10.5pt;">其他的技术模块</span><span style="font-size: 10.5pt;">则</span><span style="font-size: 10.5pt;">分别在用户界面、模拟逻辑编写、网络传输、运行时、编辑环境等各个环节提供给开发者全面的智能辅助和支持。下图</span><span style="font-size: 10.5pt;">为</span><span style="font-size: 10.5pt;">TR</span><span style="font-size: 10.5pt;">引擎技术平台的简要技术架构</span><span style="font-size: 10.5pt;">：</span></div>
<p>&nbsp;</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=9" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200906/thumb_4145365baf78f7397baf3e65993a4ed9.jpg" border="0" alt="&#13;&#13;大小: 29.97 K&#13;尺寸: 398 x 500&#13;浏览: 16 次&#13;点击打开新窗口浏览全图" width="398" height="500" /></a></div></p>
<p>图一：TR引擎平台软件架构图<br />
具体各技术及模块的目的和作用为：<br />
显卡加速用户界面生成程序以及运行引擎 (PowerGT Engine)：组合、构建、并利用显卡硬件加速渲染用户界面的布局元素，能够和其他部分如三维渲染引擎有机结合；<br />
二维角色动画的辅助生成及显示技术（Power2D）：基于基本的骨骼结构模型，结合预制的动画模板生成逼真的物体运动动画序列或过程，可在二维实时渲染中回放；<br />
用户界面及场景集成开发环境(PowerGT Studio)：包括项目管理、图形资源管理、可见即所得的编辑器、发布功能模块的集成开发环境等。能够使非程序员也能有效的利用引擎技术制作严肃游戏的界面及逻辑；<br />
二维场景及角色编辑工具（Power2D Editor）：Power2D技术的编辑工具，生成特定格式的动画文件；<br />
三维渲染引擎(PowerVS)：基于显卡加速的三维模型渲染引擎，支持贴图映射；<br />
三维角色动画辅助生成及显示技术（PChar）：基于基本的骨骼结构模型，结合预制的三维动画模型生成逼真的物体运动动画序列或过程，可在三维实时渲染中回放；<br />
复杂流程及逻辑的脚本解释、运行引擎（PScript）：支持人物、对话、逻辑、流程等模拟脚本的编写及解释，提供相应的接口支持，可以直观、简洁的表达静态、动态的模拟过程；<br />
基础网络通讯协议及开发接口(PComm)：基于Socket和HTTP协议，提供网络化分布式的软件部署，支持动态传输游戏内容和逻辑，能够减少客户端安装大小，可以为用户简化部署成本，同时在商用环境中避免作弊行为；<br />
物理模拟引擎（PPhX）：基本的重力、碰撞、加速、变形的模拟，支持更逼真的环境下的虚拟体验；<br />
通用服务器端模拟引擎技术（PowerServer）：支持链接数据库，动态调度显示资源、三维模型、模拟逻辑以及用户特定的数据等，是网络化运营的服务器核心组件。同时支持服务器硬件以及并行计算能力，可以允许将来的大规模运用。</p>]]></description>
			<link>http://www.eoss.cn/blog/tr_arch/</link>
			<category domain="http://www.eoss.cn/blog/category/sglab/">SGLab</category>
			<pubDate>2009-06-07 23:53</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/ruby_conf_china_2009/</guid>
			<title>Ruby Conf China 2009之东拉西扯</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>Ruby Conf China 2009回来一直很累、很忙，今天终于决定把这篇拖欠了近2周的文章写出来。我是20号下午从杭州出发到上海的，晚上住在同学的寝室，这里就从我们的聊天开始。</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=8" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200906/thumb_58f3af1bc08cdba178beb11af2b2a160.jpg" border="0" alt="&#13;&#13;大小: 132.7 K&#13;尺寸: 500 x 378&#13;浏览: 3 次&#13;点击打开新窗口浏览全图" width="500" height="378" /></a></div><br />
<br />
工作再思考<br />
几个同学都是明年毕业，马上就要面临求职的问题。求职难，在经济危机下求职更难。这场源于美国的经济危机，使得历来处于IT领域高端的欧美外企收紧了招聘步伐，就连有过Google、微软实习经历的一个同学也显得有些茫然，而已经工作的也从跳槽变成了卧槽。经济危机虽然带给我们很大的冲击，但也并不全是坏事，它引发了我们对工作、对职业的重新思考和定位。为什么要工作？你在工作中快乐吗？现在的工作能体现你的价值吗？能够在职业生涯的前几年来思考这些问题，而不是迷失在不断增加的薪酬中，也是一种幸福。Matz在题为Why Ruby的演讲中提到了Enjoy Programming这个话题，编程应该是快乐的，就算是为了工作（混饭吃）而编程，也不妨碍我们对快乐的追求。回想我刚开始接触编程的那些日子，充满了激情和快乐，一个又一个抽象的问题在我手中解决，语言不过是我实现梦想的工具，而之后的几年，迷失在了.NET中，迷失在了JAVA中，迷失在了所谓的企业级开发中。作为业余程序员是快乐的，作为专业程序员却是痛苦的，也许是该回归业余程序员的时候了。正像90年代日本经济泡沫破灭后，Matz在没有工作任务的情况下开始了Ruby语言的设计，在当前经济危机的环境下，我们是否也该静下心来做点什么，哪怕只是为了好玩。<br />
<br />
DNS大规模故障事件<br />
21号早上7点出发，赶赴大会现场，正好遭遇地铁早高峰，想不到离开上海还不到2年，抢位子的能力下降得很厉害，在莘庄拿到的时代报也没有机会看了，不过瞥了一眼正在看的，正好看到&ldquo;暴风影音缺陷引发上网大塞车&rdquo;的标题，原来如此，作为19号DNS大规模故障事件的受害者终于明白了故障的原因。Robbin在讲解JavaEye架构时也提到这一事件，之前一直不明白既然有现成DNS服务器还需要自己搭建干什么，现在开始明白一点了。<br />
<br />
Matz<br />
Ruby之父Matz给人的第一印象有些&ldquo;猥琐&rdquo;，和之前接触过的那些喜欢把头发梳得油光发亮的日本人差别很大，也许是为了大胡子和编程语言流行度一说吧。会议间隙，大家纷纷找Matz签名或是合影，我没有RUBY编程语言这本书，唯一带的一本Ruby书还是从图书馆借的，那就只好合影了。有人说我和Matz长得比较像，呵呵。</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=5" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200906/thumb_f92a179465d8acc09d4f2533d7894c2b.jpg" border="0" alt="&#13;&#13;大小: 53.21 K&#13;尺寸: 500 x 375&#13;浏览: 2 次&#13;点击打开新窗口浏览全图" width="500" height="375" /></a></div></p>
<p><br />
Robbin和Robin<br />
除了Matz的演讲，Robbin的JavaEye网站架构解密和来自财帮子的Robin Lu的Ruby On Rails Pitfall也是相当精彩，ThoughtWorks咨询师郑晔的企业开发中的Ruby/Rails差强人意，其他的就不说了，具体大家看视频吧 。</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=7" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200906/thumb_e7d2a527fffe9b83723a99148b61141f.jpg" border="0" alt="&#13;&#13;大小: 37.68 K&#13;尺寸: 500 x 375&#13;浏览: 3 次&#13;点击打开新窗口浏览全图" width="500" height="375" /></a></div></p>
<p><br />
网络监管与云计算<br />
Robbin演讲的时候发生了个小插曲，网监打电话来要求删除某个帖子，否则就要拔网线了，国内的互联网环境实在是...最近在考虑<a href="http://www.eoss.cn/blog/cloud_computing_in_china/" target="_blank">云计算在国内的发展</a>，技术不是问题，最大的问题还是在网络监管，在云计算这种模式下一拔网线还不是全瘫痪了。<br />
<br />
多语言多平台<br />
大会中反复出现多语言、多平台共同解决问题的例子，看来这已经成为一种趋势，我们所要做的就是用合适的工具做正确的事。<br />
<br />
大QA<br />
由于除了Matz以外的嘉宾演讲后没有安排提问时间，在下午演讲结束后举行了大QA环节，也就是把全部嘉宾请上台来接受大家的提问。Matz提到了Ruby 2.0将在一年内发布，由于赶火车，没有结束就匆匆离开了会场。</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=6" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200906/thumb_96e204ed1679f032f313ed116f2d69be.jpg" border="0" alt="&#13;&#13;大小: 67.54 K&#13;尺寸: 500 x 375&#13;浏览: 2 次&#13;点击打开新窗口浏览全图" width="500" height="375" /></a></div><br />
<br />
晚上7点回到杭州，我一直很喜欢在地铁和火车上看书，在上面能够真正静下心来，效率特别高，来回两小时，又把《Agile Web Development With Rails》重读了一遍。</p>]]></description>
			<link>http://www.eoss.cn/blog/ruby_conf_china_2009/</link>
			<category domain="http://www.eoss.cn/blog/category/ror/">Ruby On Rails</category>
			<pubDate>2009-06-02 13:57</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/qq_group/</guid>
			<title>本站QQ群</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>云计算等前沿技术、商业交流，也欢迎天使投资参加 <br />
QQ群：87833826</p>]]></description>
			<link>http://www.eoss.cn/blog/qq_group/</link>
			<category domain="http://www.eoss.cn/blog/category/default/">默认分类</category>
			<pubDate>2009-05-27 00:01</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/cloud_computing_in_china/</guid>
			<title>什么是云计算，什么是国内的云计算</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>什么是云计算？这一直是一个让人感觉云里雾里的概念。云计算是指IT基础设施的交付和使用模式，指通过网络以按需、易扩展的方式获得所需的资源（硬件、平台、软件）。提供资源的网络被称为&ldquo;云&rdquo;，&ldquo;云&rdquo;中的资源在使用者看来是可以无限扩展的，并且可以随时获取，按需使用，随时扩展，按使用付费。这种特性经常被称为像水电一样使用IT基础设施。云计算是一场极具生产力的IT技术变革，必将推动新的商业模式的诞生。<br />
<br />
我们不妨从云计算的两个典型应用来更好地认识云计算，即Amazon EC2和Google AppEngine(GAE)。乍一看这两个平台似乎是两码事，Amazon EC2提供的是虚拟机服务，即Infrastructure as a Service（IaaS，基础设施即服务），而Google AppEngine提供的是应用程序的托管运行平台，即Platform as a Service（PaaS，平台即服务）,但仔细比较就会发现在这两类服务身上都体现了下面几个关键词：弹性或者说是随需应变、虚拟化、服务！<br />
<br />
在过去的2008年，云计算在国外IT领域可谓是炙手可热，然而在这大半年时间里，国内IT厂商似乎却在睡觉，直到下半年才醒悟过来，纷纷抛出自己所谓的&ldquo;云计算&rdquo;产品。下面我们就以上面提到的3个关键词作为评判依据，来看看国内的&ldquo;云计算&rdquo;产品吧。<br />
<br />
杀毒软件厂商最早抛出云安全这个概念，云安全是一个很好的概念，但云安全不是云计算，甚至可以说和云计算一点关系都没有。<br />
<br />
百度的云计算&mdash;&mdash;阿拉丁计划<br />
搜索&ldquo;暗网&rdquo;信息很好，但干嘛非要贴上云计算这个标签？<br />
<br />
腾讯CTO熊明华宣称腾讯早已&ldquo;云计算&rdquo;<br />
拜托不要把分布式计算和云计算搞混淆，不要把大规模网站架构和云计算搞混淆。<br />
<br />
世纪互联CloudEx云计算平台<br />
这不就是一个VPS（虚拟服务器）吗？弹性主机是云计算的基础设施，但弹性主机仅仅是云计算平台的第一步，而且仅仅是一小步。<br />
<br />
SaaS厂商宣称自己是云计算<br />
SaaS概念的提出早于云计算，也就是说SaaS并不一定需要云计算作为底层架构，即使SaaS使用了云计算作为底层架构，也只能说是基于云计算的应用，而不是云计算平台本身，这就相当于我们把计算机硬件和操作系统称为系统环境，而把建立在上面的各种消费级软件成为应用。<br />
<br />
阿里巴巴宣布将筹建多个&ldquo;电子商务云计算中心&rdquo;<br />
阿里软件做的是SaaS平台服务，上面已经论述了SaaS和云计算的关系，这里就不再重复，从报道中涉及的数据中心等信息看来，将是最有可能建成云计算平台的，但阿里巴巴强调将云计算定义为&ldquo;Business Cloud(商业云)&rdquo;，而不是通用的、公用的云计算，抛开云计算的通用定义，引入一个新的名词&ldquo;商业云&rdquo;，表面上是为了和阿里巴巴已有的优势相结合，会不会也是为了将来执行过程中的走样埋下伏笔，这不免又为这个平台蒙上了一层阴影。<br />
<br />
以上结论的依据是厂商披露的公开资料，在没有进一步的内部资料的前提下，正确与否难以保证，一家之言仅供参考，欢迎讨论。</p>]]></description>
			<link>http://www.eoss.cn/blog/cloud_computing_in_china/</link>
			<category domain="http://www.eoss.cn/blog/category/cloud_computing/">云计算</category>
			<pubDate>2009-05-12 23:32</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/my_view_about_pm/</guid>
			<title>我对产品经理的看法</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>在网上看到不少对产品经理这个职位的抱怨：<br />
<br />
&ldquo;兄弟做了6年PM--PD了 产品经理 产品总监 就是一个受气的工作 就是一个杂的工作 PM在北京最多就20000（大公司）可是说实在的运营内容 技术 市场 BD 那个部门都是你爷爷 天天的追着他们提需求 像个高级的文档写手 写文档 还要伺候爷爷一样 求着技术干天呀我真佩服我自己 这么多年 是怎么熬过来的 人家说 干产品的 要脾气好的 有个性的 基本就别考虑这个职位了&rdquo;<br />
<br />
&ldquo;压力太大，每天被人challenge，每天协调一堆又一堆的人，每天一堆破事，555555555555555555555555555555，真想去做家庭主妇。。。&rdquo;<br />
<br />
在我看来造成这种情况的原因在于国内对产品经理认识的错误。产品经理是一个从国外引进的概念，做的工作就是以产品为中心来协调跨部门合作，职责贯穿产品的整个生命周期。从产品经理的定义看来，其管的确实是产品而不是人。但是老祖宗们几千年前就教导我们&ldquo;橘生淮南则为橘，生于淮北则为枳&rdquo;，对于产品经理也是一样，我们不能简单的生搬硬套国外的模式。以IT行业为例，先来看看产品经理在国外为什么玩得转：<br />
1、国外工程师一般都有10万美元的年薪，如果去掉汇率，数值上大致与国内相等，但物价水平却低得多，福利水平高，生活压力不大，在国内的工程师为离谱的房价，沉重的生活压力伤脑筋的时候，国外的工程师想的却是游艇这类高档的消费品，这就决定了国外的工程师选择工作往往是从兴趣出发，而国内的工程师则是从生计出发。<br />
2、国外的企业一般有良好的制度保证，而国内一般在这方面比较欠缺。<br />
3、产品经理需要协调多个部门，一般需要在企业具有一定的资历，不是国内刚毕业几年的产品经理能胜任的。<br />
<br />
人是利益驱动的，一味强调产品经理的软能力，而没有合适的没有胡萝卜或大棒，就算你是一个总裁的料也玩不转。所以，只要有利于产品，就大胆的提出这些权力要求，不要拘泥于形式！<br />
<br />
另一方面，从上面的抱怨中还可以看到，国内大多数所谓的产品经理其实是产品设计师或者产品市场策划之类的工作，产品经理需要的是既懂技术又懂商业的复合型人才，只有这样的人才能压众。</p>]]></description>
			<link>http://www.eoss.cn/blog/my_view_about_pm/</link>
			<category domain="http://www.eoss.cn/blog/category/pm/">产品经理</category>
			<pubDate>2009-05-12 16:45</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/pm_or_architect/</guid>
			<title>产品经理还是架构师</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>之前写过一篇文章讨论过<a target="_blank" href="http://www.eoss.cn/blog/programmer_career/">程序员的前程</a>问题，作为一个程序员，我也面临着如何选择发展方向的难题。技术出身和对技术的热爱决定了可以走架构师的路线，但我也不想抛弃对商业的敏锐，产品经理作为复合型人才，似乎能充分发挥我全部潜力。产品经理还是架构师，这一直是一个问题。在厌倦了技术领域的语言之争、框架之争后，我开始信奉实用主义哲学，即创造实际价值的是应用而不是技术本身。而产品经理面向的恰恰是应用，成为了更好的选择。其实无所谓，殊途同归。</p>]]></description>
			<link>http://www.eoss.cn/blog/pm_or_architect/</link>
			<category domain="http://www.eoss.cn/blog/category/enterprise/">创业与管理</category>
			<pubDate>2009-05-12 00:25</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/choose_vps/</guid>
			<title>VPS使用手记-如何选择VPS服务商</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>国内 VS 国外<br />
国内VPS服务商一般使用Virutozzo，以Windows VPS居多，服务商良莠难辨，价格一般较高，支付方便，中文客服，需要备案，理论上网络速度应该好于国外VPS，但不一定，有时不太稳定，同时存在电信/网通问题，一般有带宽限制。<br />
<br />
国外VPS服务商一般使用OpenVZ或者Xen，一般都是Linux VPS，价格适中，一般需要用信用卡或者Paypal支付，主要通过英语邮件或者ticket沟通，不需要备案，对于国内用户速度略慢，但一般可以接受，一般有流量限制，内容需要注意版权问题。<br />
<br />
在经过一段时间的考察后，我选择使用国外的VPS，当时初步列出5个候选对象JB WebHosting、CheapVPS、FsckVPS、Linode、Slicehost。<br />
<br />
我把这5个VPS分为2组：<br />
1、JB WebHosting、Linode、Slicehost <br />
Linode、Slicehost技术、服务评价都很好，Lindoe的控制面板是自己做的，而且很棒，JB WebHosting、Linode都是SoftLayer（一个美国的数据中心）的转售，价格也差不多，唯一的区别是JB WebHosting提供了一款配置更低的$10/月的VPS，但如果希望价格低，不如选择第2组中的FsckVPS。Linode性价比比Slicehost高，这一组Linode胜出。<br />
<br />
2、CheapVPS、FsckVPS <br />
CheapVPS和FsckVPS是同一家公司的，CheapVPS价格比FsckVPS贵，两者价格差别主要是在初始设置时，FsckVPS是自动的，CheapVPS是人工服务的，另外CheapVPS提供的功能多（Xen、控制面板），并且在英国也有数据中心。CheapVPS经常会有特别优惠，2008年底的时候他那款512内存的VPS就卖过$10，比FsckVPS的还超值。这两家的评价远不如Linode、Slicehost，如果选择这两家VPS当然是贪图便宜，FsckVPS胜出。<br />
<br />
技术支持方面，打分标准主要是我在调查过程中取得信息的容易程度，Linode和Slicehost做的不错，Blog、wiki、FQA 、BBS、IM都有，而且很活跃，甚至包括很多技术教程。CheapVPS和FsckVPS一般，论坛帖子少、形同虚设，JB的论坛干脆被上千条垃圾广告占领了，当然一般邮件技术支持每个服务商都有。<br />
<br />
VPS一般都提供对内存、硬盘、流量的升级，FsckVPS只能直接整体升级配置到下一个等级，而Linode可以灵活地决定对内存、硬盘、流量的升级。另外，升级可以在原主机上升级，也可以换一个放置更高初始等级VPS的主机，一般规模比较小的VPS服务商会把各种不同初始等级的VPS混放在同一台服务器上，毕竟这样比较节省成本，Linode则是分开放置的：<br />
<br />
How many Linodes share a host?<br />
We group Linodes of the same plan together onto the hosts. A Linode 360 host has no more than 40 Linodes on it. A Linode 540 host has no more than 30. Linode 720 host: 20 Linodes; Linode 1080 host: 15; Linode 1440 host: 10; Linode 2880: 5. <br />
<br />
如果升级后的配置超过了下一个初始等级，建议换主机，这样可以增加CPU等共享资源的使用量。<br />
<br />
Linode VS FsckVPS<br />
我的意见是：这两者代表了两种不同的方案，虚拟化技术上不同，服务提供上不同，反映出来的就是价格上的差异，求性能、便宜买FsckVPS（当然可以关注一下cheapVPS的特价优惠，cheapVPS的网速比FsckVPS快、稳定），求稳定+技术+服务+扩展性买Linode。<br />
<br />
但这两个都不是我的最终选择，我最后选的是一个新的VPS服务商<a target="_blank" href="http://www.diavps.cn/client/aff.php?aff=013">DiaVPS</a>，主要基于以下的考虑：<br />
1、中国人开的美国VPS，中文总比英文舒适；<br />
2、价格适中，初始方案选择余地多，我买的时候有8折优惠的活动；<br />
3、既然是面向国内客户的，网络速度当然很快，不上面5个VPS都好；<br />
4、支持支付宝，我没有信用卡；<br />
5、中文QQ客服，沟通起来比较方便，并且接触下来感觉不错；<br />
6、基于Xen虚拟技术<br />
<br />
事实证明，我的选择还是正确的，毕竟是第一次使用VPS，对很多方面比较陌生，中文QQ客服帮了大忙，如果是纯美国的VPS服务商，光用英语Ticket来Ticket去的够头痛了，还不一定会回答所有的问题，毕竟选择是Unmanaged VPS。因此，强烈推荐VPS新手选择<a target="_blank" href="http://www.diavps.cn/client/aff.php?aff=013">DiaVPS</a>，有VPS使用经验并且手头比较宽的可以选择Linode。</p>]]></description>
			<link>http://www.eoss.cn/blog/choose_vps/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-05-11 15:52</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/vps_virtualization/</guid>
			<title>VPS使用手记-虚拟化技术简介</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>考虑到大家可能在选择VPS时对一些技术知识不是很了解，可能会影响判断，我整理出了一些虚拟化技术的知识：<br />
实现一台虚拟服务器(VPS)的主流的虚拟化技术分为3种：<br />
1、全虚拟化：如vmware<br />
2、半虚拟化：如xen<br />
3、操作系统虚拟化：如Virtuozzo、OpenVZ，OpenVZ是开源的，而Virtuozzo是它的商业版。</p>
<p>其中1和2都是虚拟硬件模式，是真正意义上的虚拟化技术，通过虚拟一套完整的硬件，这一套完整的硬件具有超强的兼容能力，在这个虚拟层上可以运行各种不同的操作系统平台。半虚拟化需要修改宿主操作系统的内核，因此比全虚拟化有更好的性能。现在的趋势是vmware在发展半虚拟化的技术，而xen也在发展全虚拟化的技术。而操作系统虚拟化事实上不是真正意义上的虚拟化技术，但由于能够达到类似的功能，也把它归为其中。操作系统虚拟化技术要求虚拟机和宿主服务器上使用同一个操作系统，通过拦截虚拟机的操作来实现隔离，也就是说在windows下只能再虚拟windows，linux下只能再虚拟linux，虚拟安装一个的操作系统仅仅占用200M的空间，其他文件都是使用宿主机上的文件。一般我们把1和2的虚拟化服务器称为vm，把3称为vz。<br />
<br />
既然vm和vz都能达到我们的目的，那这两者有什么区别呢？<br />
vm：占用系统资源多，因此成本高，虚拟的操作系统不受主机操作系统的限制，稳定性、安全性高。<br />
vz：占用系统资源少（你想想一个服务器上就算有100个vps也只有一套操作系统，一台服务器上的所有VPS都共享部分操作系统资源），成本低，只可以虚拟和主机的操作系统一样的操作系统，性能好。</p>
<p>一般相同配置的服务器上能能够建立30-40个vps那么只能建立10-20个vm，这也就是相同配置vm往往比vps价格贵一倍的原因。</p>
<p><br />
对vps性能、稳定性影响最大的是内存，下面看看在内存方面两者的区别：<br />
vm：支持虚拟内存（交换分区）<br />
vz：不支持虚拟内存（交换分区），只要一超过就容易死机之类的。<br />
<br />
所有的OpenVZ的VPS都不支持虚拟机自己定义虚拟内存，而基于Xen技术的主机可以。OpenVZ系统里面所有的虚拟机共享一个内核，而虚拟内存是需要内核支持的，所以OpenVZ里面的虚拟机都不能再定义虚拟机级别的虚拟内存。OpenVZ可以在母机操作系统里设置的虚拟内存，但在虚拟机看来就是真的内存，加上虚拟机共享资源可以动态调配，所以OpenVZ主机可以超卖。<br />
<br />
有种说法：运行同样的程序,如长时间运行sql server，vm需要512M就能稳定了，而vz最少需要1024M才会稳定。为了弥补虚拟内存上的缺陷，vz引入了一个爆炸内存（Burst RAM）的概念，允许短时间内占用超出分配大小的内存。那么这些内存是哪里来的？显然是占用了同一台服务器上其他用户的空闲内存。并不是说vm在内存方面就一定比vz好，vm的虚拟内存理论上可以设的很大（局限于硬盘容量），但会增加对IO的读写，而vps毕竟不是独立的服务器，在这方面有所限制，因此也不宜设得过大。而且虚拟内存毕竟比不上Burst RAM那样真正的内存的速度。</p>
<p><br />
再从商业运营的角度看看两者的区别：<br />
vm：vm的解决方案使得每个vps独立性很好，分配了多少资源就是多少资源，不存在超卖现象。<br />
vz：从前面的Burst RAM就可以看出vz的隔离性并不好，你可以占用同一台机器上其他vps的资源，这也就给服务商浑水摸鱼的机会，往往存在超卖现象，一台服务器本该40个vps，卖到了60、70个，性能（本该是vz的优点）、稳定性都很难保证。另外，安全性上也存在风险。<br />
<br />
因此外在因素一样的情况下(配置,价格等)，vm的肯定比vz的好。但一般vm要贵些。服务器以稳定性为主，所以大多数客户会用vm的vps，国外的一些数据中心也同样是这个技术，国内一般是vz！ <br />
<br />
如果看了上面这段文字后还不是很清楚，我觉得这个用户的体验更生动些：<br />
<a target="_blank" href="http://zealy.spaces.live.com/blog/cns!3E882EE246E7E0A5!354.entry">http://zealy.spaces.live.com/blog/cns!3E882EE246E7E0A5!354.entry</a><br />
<a target="_blank" href="http://zealy.spaces.live.com/Blog/cns!3E882EE246E7E0A5!355.entry">http://zealy.spaces.live.com/Blog/cns!3E882EE246E7E0A5!355.entry</a></p>]]></description>
			<link>http://www.eoss.cn/blog/vps_virtualization/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-05-11 14:31</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/setup_vps_group/</guid>
			<title>豆瓣VPS小组建立</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>在豆瓣新建了一个VPS小组，欢迎访问。</p>
<p><a href="http://www.douban.com/group/vps/" target="_blank">http://www.douban.com/group/vps/</a></p>]]></description>
			<link>http://www.eoss.cn/blog/setup_vps_group/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-05-10 23:32</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/Linux_ftp_server/</guid>
			<title>VPS使用手记-Linux下FTP服务器的选择</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>Linux下常见的FTP服务器有wu-ftp、vsftpd、proftpd和pure-ftpd。wu-ftp历史久，安全漏洞比较多，不建议使用。作为wu-ftp的替代者，vsftpd、proftpd、pure-ftpd是linux里有三个主要的FTP服务器，其中vsftpd以安全和性能著称，proftpd则以众多的特性取胜，pure-ftpd的性能和特性介乎两者中间，基本很少更新了。一般情况下，选择使用vsftpd，安全、稳定、简单、通用，如果对功能有特殊要求可以选择proftpd，pure-ftpd在某些平台不通用。<br />
<br />
vsftpd在安全性、高性能及稳定性三个方面有上佳的表现，总体性能也是非常高：<br />
1、安全性<br />
vsftpd的名字代表&ldquo;very secure FTP daemon&rdquo;，它的开发者Chris Evans考虑的首要问题就是数据传输的安全性，灾情、安全性上比其他诸如wu-ftpd和proftpd之类的FTP服务器更加优越。<br />
1. 速度<br />
使用ASCII模式下载数据的速度是Wu-ftpd的两倍。在Linux2.4系列版本的内核下，千兆以太网的下载速度可以达到86MB/S。<br />
2. 稳定性<br />
可以在单机(非群集)上支持4000个以上并发用户同时连接，根据ftp.redhat.com的数据，它可以支持15000个并发用户。<br />
<br />
vsftpd提供的主要功能还包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。目前正在使用vsftpd的有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等一些大型站点。</p>]]></description>
			<link>http://www.eoss.cn/blog/Linux_ftp_server/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-05-10 17:23</pubDate>
		</item>
		<item>
			<guid>http://www.eoss.cn/blog/Linux_email_server/</guid>
			<title>VPS使用手记-Linux下邮件服务器的选择</title>
			<author>shine</author>
			<description><![CDATA[乐在其中 ( http://www.eoss.cn/blog/ ) : <p>在Linux平台中，有许多邮件服务器可供选择，但目前使用较多的是Sendmail、Qmail和Postfix。参考以下两篇文章结合Google Trends尝试选择Postfix作为邮件服务器。</p>
<p><div class="attach"><a href="http://www.eoss.cn/blog/attachment.php?id=4" target="_blank"><img src="http://www.eoss.cn/blog/attachments/date_200905/thumb_64ec7985bfb0caaef8158404e75a7b7f.png" border="0" alt="&#13;&#13;大小: 36.85 K&#13;尺寸: 500 x 248&#13;浏览: 1 次&#13;点击打开新窗口浏览全图" width="500" height="248" /></a></div></p>
<p><strong>参考资料1：</strong></p>
<p>3种大型邮件系统的比较 <br />
<br />
关于sendmail/qmail/postfix孰优孰劣，以及部署邮件系统的时候该选哪一个的讨论已经重复了千百次了。但事实往往并不是A好B坏，或B好A坏，必须根据场合和应用的要求来定。但虽然如此，大多数人还是需要一个相对公平的评价，以引导邮件系统的部署。<br />
<br />
自己一直很慎重于回答这类问题，以免引发不必要的争论甚至矛盾，但还是必须面对这个问题做一定的分析和比较的，否则很多朋友经常会问&ldquo;到底用哪个好？&rdquo;，却拿不出完整的答案。<br />
<br />
首先看看三个MTA的历史<br />
<br />
Sendmail<br />
毫无疑问，sendmail是最古老的MTA之一。它比qmail和postfix要古老得多。最早它诞生的时候，Internet还没有被标准化，当时主机之间使用的是UUCP技术来交换邮件。它被设计得比较灵活，便于配置和运行于各种类型的机器。<br />
<br />
Qmail<br />
qmail是新生一代的MTA代表，它以速度快、体积小、易配置安装等特性而著称。作者D. J. Bernstein(djb)是一个数学教授，富有传奇色彩。djb于1995年开发qmail，1996年发布0.70版，并使用了多种当时比较先进的技术，包括Maildir，与sendmail单个binary不同的模块化设计，权限分离，以及使用了大量由djb编写的配套工具，如daemontools，ucsip-tcp等。qmail迅速成为了Internet上最有名的MTA，使用者众。<br />
<br />
Postfix<br />
Postfix作者是Wietse Venema，一名著名的安全专家。最早postfix起源于1996年，当时venema 在美国IBM研究中心负责研究更安全的邮件系统，当时称为Vmailer。后因为商标问题于1998年11月正式更名为Postfix。Postfix以替代sendmail为目的，并提供了一个更安全、更高性能的灵活的体系。它同样也采用模块化设计，使用了大量优秀的技术，以达到安全的目的。由于作者的设计理念独到，经过7，8年时间，Postfix现今已发展成为功能非常丰富，扩展性和安全性强的优秀MTA。<br />
<br />
概括的比较<br />
以下的分析主要基于我在CASA上发的一个小文章，对sendmail/qmail/postfix做了一个概括性的比较。 <br />
sendmail<br />
sendmai功能非常强大，很多先进功能在sendmail上都最先有实现。sendmail里的Milter技术是一个非常好的框架，目前postfix及qmail仍然没有官方发布的方案比milter要好。但sendmail也有典型的历史问题，只有一个binary程序，需要sid权限，m4配置文件复杂难懂。这些是是阻碍sendmail更好发展的一些客观问题。客观来说，调教得好的sendmail，其性能也是相当不俗的，据一个国外的Unix杂志称，在solaris+内存文件系统+带电池的raid系统下，sendmail能达到惊人的287封/秒的注入速度！目前sendmail比较适合那些老用户，因为他们习惯了sendmail的应用环境和配置。<br />
<br />
qmail<br />
qmail体积非常小巧，source的gz包大概只有260多K，是三大MTA中最小的！模块化设计，避免了sid问题，基本功能齐全。配置相对sendmail而言，简单了很多，而且用户非常广泛。而且补丁和插件非常多，例如著名的vpopmail，netqmail，以及qmail-ldap等。但qmail有几个问题，一是djb已经5，6年没有继续开发了，补丁的良莠不齐及版本依赖是非常麻烦的事，这对初学者极为不利。二是功能扩充需要补丁来完成，扩展能力不足。总体上qmail依然是个非常不错的选择。对于希望了解mta原理，或希望修改mta代码的爱好者，qmail是值得推荐的。对于需要建立中小型邮件系统的用户也同样适合。而对于需要丰富功能却不想面对补丁困难，或者需要建立大型的系统，qmail不太合适，需要更丰富的经验和技术。<br />
<br />
postfix<br />
postfix如今已经独树一帜，流水线、模块化的设计，兼顾了效率和功能。灵活的配置和扩展，使得配置postfix变得富有趣味。其主要的特点是速度快、稳定，而且配置/功能非常强大，并和sendmail类似，提供了与外部程序对接的API/protocol。尤其是配置部分，可以说是一扫qmail和sendmail的各自缺点。但postfix管理及配置的入门依然需要一定的工夫，必须仔细阅读官方文档。postfix另一个优势是至今依然保持活跃的开发工作，而且稳步发展，适合高流量大负载的系统，扩充能力较强。<br />
<br />
大规模应用例子<br />
国内若干个大型email ISP（如163.net/tom.com/163.com及sohu等）过去都使用qmail，后来全部更换成postfix。新浪使用qmail，yahoo使用qmail。但这些已经不是普通的qmail了。<br />
<br />
技术层面的分析<br />
这里仅探讨一些典型的技术特点，从这些特点可以看出每个MTA设计的异同，主要讨论的焦点是qmail和postfix。 <br />
<br />
磁盘I/O<br />
从队列文件的读写来看，qmail处理每一封邮件时，都至少需要建立3个文件，mess, intd, info等。而Postfix使用的是单队列文件设计，因此磁盘I/O的开销要比qmail小得多，如果仅仅从这个方面考虑，postfix的队列是qmail的2-4倍那么快。从我过去的一个qmail vs postfix对比测试中，也可以发现这个问题。<br />
<br />
数据同步<br />
如果从MTA对待操作系统的文件是否安全写入磁盘的策略来看，qmail和postfix也是不同的。Postfix使用的是随机写，并且需要写入完成并安全同步到磁盘后才算完成。而qmail的写入则是即刻执行的，因此它将等待数据安全写入磁盘后才返回。对于高流量的系统而言，这将导致性能问题。此外，Postfix的队列对于FreeBSD的softupdate是安全的，而qmail则是不安全的，qmail作者明确警告用户不要使用softupdate，除非是有磁盘后写电池。<br />
<br />
扩充能力<br />
sendmail有着非常好的扩充能力，支持众多的特性，功能可谓豪华。包括频率控制到集群支持应有尽有。而milter API则更加使sendmail的灵活性发挥至极，通过milter，用户可以对邮件几乎所有的参数进行控制！但是在存储方面，由于只支持mbox，会有一定的问题。<br />
<br />
qmail在系统容量扩展上有着独到的设计，配合qmail-ldap补丁，可以充分利用qmqp及分布存储的优势。现今已有各式各样的qmail扩展方案，最著名的是qmail-ldap。但qmail缺乏类似milter的设计，功能扩展需要各种补丁，而补丁的设计水平参差不齐，配置能力有限。实施起来相对是最复杂的。<br />
<br />
Postfix同样有着非常好的容量扩充能力，利用LMTP或transport的/alias的方法，可以分布式的存储邮件，扩充容量。同时postfix的功能扩展也非常强，通过灵活的配置即可实现复杂的功能，这是其最突出的优点之一，是qmail望尘莫及的。此外，类似sendmail的milter，postfix拥有content_filter和policy 两个与外部程序/应用对接的接口，但不如milter那样功能集中和灵活，也没有完整实现qmail的qmqp及类似qmail-ldap的机制。<br />
<br />
可配置性<br />
sendmail 使用m4语法，单一的主配置文件（sendmail.cf）是三个mta中最难使用的，但是如果熟悉使用的话却能实现复杂的功能。qmail使用的是大量小配置文本，格式最简单，每个配置一个文件，存放在/var/qmail/control目录里。postfix也使用单一的主配置文件（main.cf），同时还有对应master主服务进程的配置文件master.cf，但使用的是简明易懂的key = value 格式。总体而言，qmail的配置文件较易管理（格式最简单）但配置文件多（10个以上），而postfix的格式简单只有2个配置文件，并配备强大的postconf工具，sendmail的配置文件最复杂。<br />
<br />
数据库支持<br />
sendmail通过一些插件/补丁，可以支持mysql/pgsql/oracle等，ldap及小型的dbm/cdb等数据存储格式。qmail默认只支持cdb，需通过补丁才可支持ldap，mysql，pgsql及oracle等。postfix可以支持的数据库应该是最多的，默认就包括了mysql/pgsql/ldap及dbm/cdb和cidr/nis*/btree等一堆。还支持特殊的tcp_table(仅在snapshot里支持)<br />
<br />
稳定性/负载能力<br />
sendmail, qmail, postfix都比较稳定。在高负载下，配置不佳或没有打足够补丁的qmail容易被DOS攻击打跨，而postfix在遇到超过配置的限制时会降低处理能力，但系统依然有一定资源可用。</p>
<p><strong>参考资料2：</strong></p>
<p>Sendmail的不足<br />
<br />
无论从使用的广泛程度，还是从代码的复杂程度来讲，sendmail都是一个非常优秀的软件。如果使用它来构建网站的电子邮件系统，基本上不必费心，因为几乎所有的Unix的缺省配置中都内置这个软件，只需要设置好操作系统，它就能立即运转起来。然而，Internet用户的要求更为苛刻，纷纷指出sendmail中包含的各个不足之处。<br />
<br />
第一个重要的缺点是它的安全性较差，这是因为当其作者Eric Allman最初开始写作这个软件的时候，Internet的用户还很少，因而安全性并不没有得到大家的重视。由于邮件系统需要处理的是外部发送来的各种各样的信息，甚至包含一些恶意数据，然而sendmail在大多数系统中都是以root身份运行，一旦出现问题，就会对系统安全造成严重影响。在这种情况下，要防止出现安全问题，仅仅依赖程序本身是不可取的，应该从系统结构出发，使程序拥有的特殊权限限制到最小。<br />
<br />
此外，也是由于其早期的Internet用户数量及邮件数量都相当小，Sendmail的系统结构并不适合较大的负载，对于高负载的邮件系统，需要对Sendmail进行复杂的调整。例如，通常情况下sendmail只启动一个进程顺序向外发送邮件，如果邮件较多时就要花费相当长的时间。<br />
<br />
使用Sendmail还会遇到的另一个问题是它的设置相当复杂，对于使用缺省设置来收发电子邮件，问题并不存在。当管理员打算进行一些特殊设置，以便利用Sendmail提供的复杂邮件处理能力时，就不得不面对复杂的宏和正则表达式。虽然现在Sendmail使用了宏预处理程序m4使设置更易于理解一些，但是掌握Sendmail的设置仍然是对系统管理员的一大挑战。<br />
<br />
使用Qmail替代Sendmail<br />
<br />
为了解决sendmail的安全问题，整个系统结构需要重新设计。基本的原则是将系统划分为不同的模块，有负责接收外部邮件的，有管理缓冲目录中待发送的邮件队列的，有将邮件发送到远程服务器或本地用户的。Qmail就是按照这个原则进行的设计，它由多个不同功能的小程序组成，只有必要的程序才是setuid程序(即以root用户权限执行)，这样就减少了安全隐患，并且由于这些程序都比较简单一些，因此就可以达到较高的安全性。<br />
<br />
这种按照Unix思路的模块化设计方法也使得Qmail具备较高的性能，因为如果需要，Qmail可以启动某个模块的多个实例来完成同一个任务，例如启动多个发送程序同时向外发送邮件，这对于提供邮件列表服务的邮件系统是非常有益的。这种方式也使得Qmail要占用较大的网络带宽，如果带宽有限，效果反而不好，但在当前网络性能大幅度提高的情况下，这种方式是非常合适的。<br />
<br />
Qmail还提供一些非常有用的特色来增强系统的可靠性，例如，它提出了Maildir格式的邮件存储方式，这使得通过网络文件系统NFS存取邮件成为可能。此外，Qmail还具备一些非常别致的特色，它不仅仅提供了与Sendmail兼容的方式来处理转发、别名等能力，还可以用以Sendmail完全不同的方式来提供这些功能。从它的编译安装方式、提供的扩展功能和源代码的风格，可以看出其作者Dan Bernstein是一个极具个性化的程序员。正因为如此，对于Qmail的某些方面，有着一些争论，例如有些人认为Qmail的安装设置并不易于理解，很容易让人糊涂，而另一些人的看法则相反。基本上这是因为Qmail提供解决问题的方式，和Sendmail不大相同的缘故，这样对那些不太熟悉Sendmail的邮件系统管理员，反而更容易接受Qmail一些。<br />
<br />
另一种替换软件:Postfix<br />
<br />
Postfix同样也是采用了模块化的方式，但与Qmail不同的是，Postfix使用了一个主控进程进行监控。Postfix在很多方面都考虑到了安全问题，它甚至不向root分发电子邮件，以避免以root身份读写文件或启动外部程序。考虑到它的作者Wietse Venema曾编写了著名的安全软件TcpWrapper，并是SATAN程序的合作人员之一，Postfix的安全性是非常值得信赖的。<br />
<br />
同样，Postfix的性能也非常不错，甚至在Qmail作者自己进行的测试中也表明，Postfix的性能和Qmail基本相当。但Postfix占用的内存要大一些，这主要是由于Postfix和Qmail在系统结构上的差异造成的。<br />
<br />
与Qmail不同，Postfix更着眼于作为Sendmail的直接替换，使用Postfix替换Sendmail却相当简单，因为Postfix使用的很多文件和Sendmail一致，只需要在配置文件中指明原有Sendmail配置文件的位置就可以了，Postfix甚至还提供了sendmail和mailq程序，以保持兼容性。基本上，可以直接从Sendmail转换为使用Postfix，而不需要额外的设置。Postfix提供的安装配置方式也相当简单，它使用中心化的配置文件和非常易理解的配置指令。<br />
<br />
Postfix提供的一些强大的功能主要在于多种数据库表查询方式，例如它支持DB、DBM、passwd文件、正则表达式、MySQL数据库以及LDAP方式的查询，用于支持系统级的别名、虚拟主机等。虽然在Qmail中也能支持这些功能，但没有象Postfix那样统一、简洁。此外，更改Postfix的设置之后，也不需要重新启动整个系统，只需要使用postfix reload就能完全刷新配置，这也避免了丢失邮件的可能性。<br />
<br />
事实上，除了Qmail和Postfix之外，还有很多种邮件系统，例如Smail、Exim等，然而毫无疑问Qmail和Postfix是其中最优秀的，也是Sendmail最有力的竞争者。此外，还有一些商业邮件服务器产品，但一般情况下，购买商业邮件服务器软件大部分是冲着其提供的服务或者是附加功能来的，例如群件产品通常带有很多额外功能用于办公环境等。<br />
<br />
至于在Sendmail、Postfix和Qmail之间进行选择，基本上依赖于用户自己的偏好。有些人喜欢Qmail提供的复杂特色，而有的人希望对Sendmail的替换能简单一些，也有人不打算更换，而坚持使用Sendmail的最新版本。对于一个熟悉Unix系统而又愿意改善邮件系统性能和安全性的管理员，应该转换为使用Postfix或Qmail，除非对Sendmail非常熟悉而保持了特殊的感情。在Postfix和Qmail之间，它们各自有一批忠心拥护者，选择哪个都是可行的。不管选择哪种邮件系统核心，都需要选择过硬的专业电子邮件系统厂商提供完善的技术支持服务，除非您本身有强大过硬的技术力量，否则，您将面对的是一场恶梦。</p>]]></description>
			<link>http://www.eoss.cn/blog/Linux_email_server/</link>
			<category domain="http://www.eoss.cn/blog/category/linux/">Linux</category>
			<pubDate>2009-05-10 17:16</pubDate>
		</item>
	</channel>
</rss>
