﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-大道无亲 大象无形 大音希声 大巧若拙 大智若愚 大器晚成-随笔分类-乱七八糟</title><link>http://www.cppblog.com/CornerZhang/category/3977.html</link><description>生命的隐喻：自我意识产生于躯体，躯体产生于食物，食物源于物质，物质源于太阳辐射能。
&lt;P&gt;http://cyberzei.wordpress.com&lt;/P&gt;
</description><language>zh-cn</language><lastBuildDate>Thu, 05 Mar 2015 06:33:18 GMT</lastBuildDate><pubDate>Thu, 05 Mar 2015 06:33:18 GMT</pubDate><ttl>60</ttl><item><title>关于本人接触到的一些技术方案的感想</title><link>http://www.cppblog.com/CornerZhang/archive/2015/03/05/209926.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 05 Mar 2015 01:41:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2015/03/05/209926.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/209926.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2015/03/05/209926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/209926.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/209926.html</trackback:ping><description><![CDATA[@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
&nbsp;游戏开发行业：
<div>近几年随着移动端市场的兴起，cocos2d[-x], Unity3D变得很火</div>
<div>逼得Epic的ＵＥ４现在都走free路线了，不过这会使得有UE开发经验的Ｃ＋＋程序员变得值钱了！</div>
<div><br />
</div>
<div>app开发:</div>
<div>apple平台的iOS/macosx还是用objective-c比较靠谱，对于新出来的swift，Xcode的支持好对方面还没跟进，就连最新版的XCode6.1.1中，当playground的文件一长，速度就慢的不行，在.swift文件里，代码一长也发生太多语言highlights的问题．而且不论是objective-c还swift，这两个编程语言对于出错处理有太多的不严谨，很难用来作ｓｅｒｖｅｒ端技术了，有谁看到ａｐｐｌｅ的官方文档里有用objective-c和swift的网络ｓｅｒｖｅｒ端的描述么？！用这两个货作app的RAD开发才是ａｐｐｌｅ的战略</div>
<div>google的ａｎｄｒｏｉｄ挺不错，即能用Ｃ＋＋还能用Java，推出的界面设计方案Material Designer很不错</div>
<div><br />
</div>
<div>编程语言：</div>
<div>C++ 11出来了，Clang,VC12,gcc都支持的不错，C++ 14更是要把boost::asio和boost::filesystem成为std::asio, std::filesystem．Ｃ＋＋程序员永远不会被淘汰</div>
<div>html5规范也定义完整了，兼容各类显示设备的特性＼支持流媒体＼支持３Ｄ＼支持矢量图，意味着adobe的flash要失去一部分市场</div>
<div><br />
</div>
<div>世态变迁：</div>
<div>以５年以上的跨度看</div>
<div>* 国内自己研发的Game Engine比不上国外的，技术也无法能跟上国外的步调，不知国内还在作引擎的程序员是该自我鞭策，还是另辟蹊径?</div>
<div>* app开发，除了与已有的ｗｅｂ应用结合，新出来的app与那些个game尽可能走细分市场的路线，精品路线！换一句话说就是，竞争激烈　^^</div>
<div>* game 我只能说它与影视行业很相似，我们玩过了然后忘了，然后等待下一个＂刺激＂！游戏运营商使劲的用广告＼各种营销手段来给产品，催化处一个市场来，大家知道化学中的催化剂的原理就是，把自己消耗掉呗！美国的米高梅影业不也是砸死在大制作上的？！</div>
<div>* 貌似UE这个东西从８０年代到现在发展了很久，Tim用Ｃ＋＋折腾了许久</div>
<div>* apple的硬件更新，objective-c曾经也改了许久，swift不知...</div>
<div>* C++尽管从98标准走到现在将出的14，好在都可以用编译器选项保持对原有代码的兼容，任何严谨的编程任务还得Ｃ＋＋．还能靠他稳稳的赚钱.顺带想到C99也非常的稳定好用</div>
<div>* html5可以使各类浏览器稍统一些吧</div>
<div><br />
</div>
<div>年轻时做加法，年老时做减法！－－能隐隐的发现哪些事物随着岁月在发挥着＂累积＂效应</div><img src ="http://www.cppblog.com/CornerZhang/aggbug/209926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2015-03-05 09:41 <a href="http://www.cppblog.com/CornerZhang/archive/2015/03/05/209926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>寒！用了n年的VC，今天才发现项目设置中加入另一种宏定义的样子！</title><link>http://www.cppblog.com/CornerZhang/archive/2010/08/03/122106.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Tue, 03 Aug 2010 13:33:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2010/08/03/122106.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/122106.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2010/08/03/122106.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/122106.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/122106.html</trackback:ping><description><![CDATA[show个图！看了一目了然，之前只知道蓝色框里的那种。<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/cornerzhang/2010-08-03_2127.png" width=756 height=582><img src ="http://www.cppblog.com/CornerZhang/aggbug/122106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2010-08-03 21:33 <a href="http://www.cppblog.com/CornerZhang/archive/2010/08/03/122106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发人深省 《攻壳机动队》经典对白</title><link>http://www.cppblog.com/CornerZhang/archive/2010/06/13/117805.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sun, 13 Jun 2010 11:13:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2010/06/13/117805.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/117805.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2010/06/13/117805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/117805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/117805.html</trackback:ping><description><![CDATA[<p>素子:<br>不得不说那的确是部好电影<br>不过无论什么娱乐，基本上都只是一时的，而且也应该如此<br>像这种没有开始也没有结束，只是持续使观众着迷，一点都不肯放过观众的电影<br>不管那让人认为有多好看，终究只是有害无益而已</p>
<p>导演:<br>哦，还真是严厉啊！<br>你是不是想说，我们这些观众有应该回到的现实中去吧？<br>若要剥夺这些观众的梦想，你承担得起这样的责任吗？</p>
<p>素子:<br>承担不起！<br>但正是在现实中打拼，梦想才有意义<br>只是将自己投射在他人的梦里面，跟死又有什么两样</p>
<p>导演:<br>真是个现实主义者<br>哪天你所相信的现实被创造出来的时候，记得来叫我们。到时候我们会离开这个电影院的</p>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/117805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2010-06-13 19:13 <a href="http://www.cppblog.com/CornerZhang/archive/2010/06/13/117805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>需要Google Wave邀请的留言</title><link>http://www.cppblog.com/CornerZhang/archive/2010/05/07/114789.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Fri, 07 May 2010 12:24:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2010/05/07/114789.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/114789.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2010/05/07/114789.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/114789.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/114789.html</trackback:ping><description><![CDATA[本人使用下来感觉挺爽的，所以这里开闸了 ^^

至于是否要有gmail帐号才能用，我不确定，而且我一次只能发布25个邀请。所以，只能分批发放。

Enjoy!<img src ="http://www.cppblog.com/CornerZhang/aggbug/114789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2010-05-07 20:24 <a href="http://www.cppblog.com/CornerZhang/archive/2010/05/07/114789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个乞丐的故事 --！感兴趣的看看 </title><link>http://www.cppblog.com/CornerZhang/archive/2010/01/20/106039.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Tue, 19 Jan 2010 16:03:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2010/01/20/106039.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/106039.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2010/01/20/106039.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/106039.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/106039.html</trackback:ping><description><![CDATA[http://cyberzei.spaces.live.com/blog/cns!F3A1F03EC3123406!378.entry<img src ="http://www.cppblog.com/CornerZhang/aggbug/106039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2010-01-20 00:03 <a href="http://www.cppblog.com/CornerZhang/archive/2010/01/20/106039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【望管理员置顶】警告贴文 -- 最近我一好友遭遇msn上的网络诈骗，幸好被我等好人协助，得以揭穿，值得这里一帖</title><link>http://www.cppblog.com/CornerZhang/archive/2009/12/29/104378.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Tue, 29 Dec 2009 07:53:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/12/29/104378.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/104378.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/12/29/104378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/104378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/104378.html</trackback:ping><description><![CDATA[<p>为保证朋友名誉，再次贴参考，借以提示：<br />也希望个位保持警觉，也能在各大交友网内传递此文。让这群无良之辈，没有作案市场。让他们堕入十八层地狱。<br /><br />零七年的事居然于零九年年底重演，还望大家广泛传播。<br />这类事件，在 google 里以 "网络欺诈 六合彩 代签"搜索，受害者一堆！<br /><br /><br /><br /><strong><font color="#000066">女子陷网络恋情 被“老公”诱骗签赌香港六合彩<br /></font></strong><br />2007年03月19日 15:30 来源：中国新闻网<br /><br />中新网3月19日电 相信网络上“中奖”信息的网友要注意了，许多网络聊天室利用人性弱点，假借“商业机密”为钓饵，诱骗网友上钩。</p>
		<p>　　据“中央社”报道，台中一位郑姓女子因为网络恋情，相信网络“老公”甜言蜜语，失去理智签赌香港六合彩。警方循线查获此两岸诈骗集团在台活动车手八人，其中两位车手未满20岁。</p>
		<p>　　警方表示，现年35岁、住在台中的郑姓女子，去年11月透过网络聊天室，认识一名自称林祥斌的男子，两人虽未见过面，却陷入网络恋情，彼此以“老公”、“老婆”互称。 
</p>
		<div id="adhzh" name="hzh">
				<table border="0" cellspacing="0" cellpadding="0" align="left">
						<tbody>
								<tr>
										<td>
												<!--Adforward Begin:-->
												<script language="JavaScript1.1" src="http://universalmccannafa.allyes.com/main/adfshow?user=universalmccann|FY07_Linux_Chinanews|News_page_pip_350_250&amp;db=universalmccannafa&amp;border=0&amp;local=yes&amp;js=ie">
												</script>
												<!--Adforward End-->
										</td>
								</tr>
						</tbody>
				</table>
		</div>
		<p>
		</p>
		<p>　　未料，在交往2个月后，“老公”见时机成熟，突向郑姓女子透露一个“大好机会”，因林姓男子在香港六合彩公司上班，现在有极高的商业机密要向她透露。林姓男子表示，公司为了打击台湾的地下六合彩组头，要找寻台湾的下注人，中奖号码会由公司决定，只要下注就“稳赚不赔”，“下注愈多中奖愈多”。</p>
		<p>　　林姓男子为了取信这名女子，还从香港传送一份“代签申请书”，并告诉她，“这次活动名额只有15个人，你因认识我才有幸获此名额，千万要把握此难得机会。”</p>
		<p>　　禁不起诱惑与游说的郑姓女子，半信半疑地汇了2万元新台币下注金给林祥斌，未料，三天后，林姓男子又要求汇一笔“银行汇款手续费”，但女子坚持要等领到奖金才汇。事后，女子与朋友讨论后发觉被骗向警方报案。</p>
		<p>　　警方接报后，循线在彰化市、台中市查获此案的车手集团，落网的8人中有5人未满30岁，另有2人未满20岁。这些车手以每领一万元抽取手续费600元代价，专门替人在大陆的诈欺集团领取诈骗所得。作案两个月来，经手诈骗款高达新台币百万元。</p>
		<p>　　警方表示，诈骗歹徒擅长掌握人性弱点，以“中奖”为诱饵，利用网络平台不断传送所谓“商业机密”、“特别名额”等讯息，并且很难查证网友的身份及相关资料。提醒民众切勿轻易汇款，或答应对方留下“视频画面”以免后患无穷。</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/104378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-12-29 15:53 <a href="http://www.cppblog.com/CornerZhang/archive/2009/12/29/104378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C代码中符合标准的方式输出中文</title><link>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 01 Jul 2009 09:58:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/89011.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/89011.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/89011.html</trackback:ping><description><![CDATA[wchat_t str[40] = { L"我的英文名为Corner Zhang!\n" };
<br />
setlocale(LC_ALL, "chs');
<br />
wprintf(L"%s", str);<img src ="http://www.cppblog.com/CornerZhang/aggbug/89011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-07-01 17:58 <a href="http://www.cppblog.com/CornerZhang/archive/2009/07/01/89011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编程时经常使用到的标点符号列表!</title><link>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 01 Jul 2009 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/89009.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/89009.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/89009.html</trackback:ping><description><![CDATA[Punctuation type:<br /> ~ -- tilde 波浪线 <br />! -- bang [或 Exclamation mark] 叹号 <br />@ -- at ??? <br /># -- number sign [或 pound sign] 井号 <br />$ -- dollar 美元符 <br />%-- percent 百分号 <br />^ -- accent 幂 <br />&amp; -- and 和 <br />* -- star [或 asterisk] 星号 <br />( -- open round 左括号<br />）-- close round 右括号 <br />+ -- plus 加 <br />- -- sub [或 midline 或 dash] 减 <br />= -- equal 等于 <br />_ -- underline 下划线 <br />\ -- backslash 反斜线 <br />| -- vertical [或 bar] 竖线 <br />{ -- open brace 左花括号 <br />} -- close brace 右花括号 <br />[ -- open quad 左方括号 <br />] -- close quad 左方括号 <br />: -- colon 冒号 <br />; -- semicolon 分号 <br />" -- quote 引号 <br />' -- single quote 单引号 <br />? -- question 问号 <br />/ -- slash 斜线 <br />&lt; -- open angle 左尖括号 <br />&gt; -- close angle 右尖括号 <br />, -- comma 逗号 <br />. -- dot 点号<br /><br />还有空白符: <br />' ' -- space 空格<br />'\n' -- newline 换行<br />'\t' -- table 制表符<br />\r' -- return ？？？<br /><br />至于 "..." 不是单个字符，就不列在上面了，英文名为ellipsis （省略符）<img src ="http://www.cppblog.com/CornerZhang/aggbug/89009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-07-01 17:44 <a href="http://www.cppblog.com/CornerZhang/archive/2009/07/01/89009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unreal Engine (虚幻) 开发的游戏列表</title><link>http://www.cppblog.com/CornerZhang/archive/2009/04/30/81585.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 30 Apr 2009 10:02:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/04/30/81585.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/81585.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/04/30/81585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/81585.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/81585.html</trackback:ping><description><![CDATA[Unreal Engine 1:<br /> Deus Ex （2000） Ion Storm <br />Rune （2000） Human Head Studios <br />Clive Barker's Undying （2001） Dreamworks Interactive （是不是觉得很眼熟） <br />X-COM：Enforcer （2001） MicroProse <br /><br />Unreal Engine 2: <br />LineageII （2002）NC Soft -- 3D 网游 <br />Tom Clancy’s Splinter Cell （2002）Ubisoft <br />Deus Ex：Invisible War （2003）Ion Storm <br />Tom Clancy’s Rainbow Six 3：Reaven Shield （2003）Ubisoft <br />XIII （2003）Ubisoft Thief：Deadly Shadows （2004）Ion Storm <br />Tom Clancy’s Rainbow Six 3：Athena Sword （2004）Ubisoft <br />Tom Clancy’s Splinter Cell：Pandora Tomorrow（2004）Ubisoft <br />Tribes：Venegeance （2004）Irrational Games <br />Advent Rising （2005）GlyphX Games Brother <br />In Arms：Road to Hill 30 （2005）Gearbox Software <br />Jinyong Online 2 （2005）Soft World <br />Star Wars：Repubilc Commando （2005）LucasArts -- 3D 网游 <br />SWAT 4 （2005）Irrational Games <br />Tom Clancy’s Splinter Cell：Chaos Theory （2005）Ubisoft <br />Red Steel （2006）Ubisoft <br />Tom Clancy’s Splinter Cell：Double Agent （2006）Ubisoft <br />Tom Clancy’s Ghost Recon 2 （2006）Ubisoft <br />Tom Clancy’s Ghost Recon Advanced Warfighter （2006）Ubisoft <br />Huang Yi Online （2007）Soft World -- 3D 网游 <br />Ragnarok Online 2：The Gate of the World （2007）Gravity -- 3D 网游 <br />Tom Clancy’s Splinter Cell：Conviction （2008）Ubisoft <br /><br />Unreal Engine 3: <br />Tom Clancy’s Rainbow Six：Vegas （2006）Ubisoft <br />BioShock （2007）2K Bastion/2K Australia <br />Lost Odyssey （2007）Miswalker <br />Medal of Honor：Airborns （2007）Electronic Arts <br />Stranglehold （2007）Midway Chicago<img src ="http://www.cppblog.com/CornerZhang/aggbug/81585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-04-30 18:02 <a href="http://www.cppblog.com/CornerZhang/archive/2009/04/30/81585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(分享) 什么是游戏引擎? What ... Game Engine</title><link>http://www.cppblog.com/CornerZhang/archive/2009/04/14/79844.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 13 Apr 2009 17:10:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/04/14/79844.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/79844.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/04/14/79844.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/79844.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/79844.html</trackback:ping><description><![CDATA[<p>以下是摘自日本著名杂志《FAMI通》游戏中文版评论杂志</p>
		<p>在阅读各种游戏介绍的时候我们常常会碰见“引擎”（Engine）这个单词，引擎在游戏中究竟起着什么样的作用？它的进化对于游戏的发展产生了哪些影响？希望下面这篇文章能为大家释疑。</p>
		<p>一、什么是引擎</p>
		<p>我们可以把游戏的引擎比作赛车的引擎，大家知道，引擎是赛车的心脏，决定着赛车的性能和稳定性，赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此，玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引擎直接控制的，它扮演着中场发动机的角色，把游戏中的所有元素捆绑在一起，在后台指挥它们同时、有序地工作。简单地说，引擎就是“用于控制所有游戏功能的主程序，从计算碰撞、物理系统和物体的相对位置，到接受玩家的输入，以及按照正确的音量输出声音等等。”</p>
		<p>可见，引擎并不是什么玄乎的东西，无论是2D游戏还是3D游戏，无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏，哪怕是一个只有1兆的小游戏，都有这样一段起控制作用的代码。经过不断的进化，如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统，从建模、动画到光影、粒子特效，从物理系统、碰撞检测到文件管理、网络特性，还有专业的编辑工具和插件，几乎涵盖了开发过程中的所有重要环节，以下就对引擎的一些关键部件作一个简单的介绍。首先是光影效果，即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的，折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。</p>
		<p>其次是动画，目前游戏所采用的动画系统可以分为两种：一是骨骼动画系统，一是模型动画系统，前者用内置的骨骼带动物体产生运动，比较常见，后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏，方便动画师为角色设计丰富的动作造型。引擎的另一重要功能是提供物理系统，这可以使物体的运动遵循固定的规律，例如，当角色跳起的时候，系统内定的重力值将决定他能跳多高，以及他下落的速度有多快，子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。</p>
		<p>碰撞探测是物理系统的核心部分，它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候，这种技术可以防止它们相互穿过，这就确保了当你撞在墙上的时候，不会穿墙而过，也不会把墙撞倒，因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。</p>
		<p>渲染是引擎最重要的功能之一，当3D模型制作完毕之后，美工会按照不同的面把材质贴图赋予模型，这相当于为骨骼蒙上皮肤，最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的，它的强大与否直接决定着最终的输出质量。</p>
		<p>引擎还有一个重要的职责就是负责玩家与电脑之间的沟通，处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话，网络代码也会被集成在引擎中，用于管理客户端与服务器之间的通信。</p>
		<p>通过上面这些枯燥的介绍我们至少可以了解到一点：引擎相当于游戏的框架，框架打好后，关卡设计师、建模师、动画师只要往里填充内容就可以了。因此，在3D游戏的开发过程中，引擎的制作往往会占用非常多的时间，《马科斯·佩恩》的MAX-FX引擎从最初的雏形Final Reality到最终的成品共花了四年多时间，LithTech引擎的开发共花了整整五年时间，耗资700万美元，Monolith公司（LithTech引擎的开发者）的老板詹森·霍尔甚至不无懊悔地说：“如果当初意识到制作自己的引擎要付出这么大的代价的话，我们根本就不可能去做这种傻事。没有人会预料得到五年后的市场究竟是怎样的。”</p>
		<p>正是出于节约成本、缩短周期和降低风险这三方面的考虑，越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏，一个庞大的引擎授权市场已经形成。</p>
		<p>二、引擎的进化</p>
		<p>曾经有一段时期，游戏开发者关心的只是如何尽量多地开发出新的游戏并把它们推销给玩家。尽管那时的游戏大多简单粗糙，但每款游戏的平均开发周期也要达到8到10个月以上，这一方面是由于技术的原因，另一方面则是因为几乎每款游戏都要从头编写代码，造成了大量的重复劳动。渐渐地，一些有经验的开发者摸索出了一条偷懒的方法，他们借用上一款类似题材的游戏中的部分代码作为新游戏的基本框架，以节省开发时间和开发费用。根据马老先生的生产力学说，单位产品的成本因生产力水平的提高而降低，自动化程度较高的手工业者最终将把那些生产力低下的手工业者淘汰出局，引擎的概念就是在这种机器化作业的背景下诞生的。</p>
		<p>每一款游戏都有自己的引擎，但真正能获得他人认可并成为标准的引擎并不多。纵观九年多的发展历程，我们可以看出引擎最大的驱动力来自于3D游戏，尤其是3D射击游戏。尽管像 Infinity这样的2D引擎也有着相当久远的历史，从《博德之门》（Baldur’s Gate）系列到《异域镇魂曲》（Planescape：Torment）、《冰风谷》（Icewind Dale）直至今年夏天将要发布的《冰风谷2》，但它的应用范围毕竟局限于“龙与地下城”风格的角色扮演游戏，包括颇受期待的《夜在绝冬城》（Neverwinter Nights）所使用的Aurora引擎，它们都有着十分特殊的使用目的，很难对整个引擎技术的发展起到推动作用，这也是为什么体育模拟游戏、飞行模拟游戏和即时策略游戏的引擎很少进入授权市场的原因，开发者即便使用第三方引擎也很难获得理想的效果，采用《帝国时代2》（Age of Empires）引擎制作的《星球大战：银河战场》（Star Wars：Galactic Battleground）就是一个最好的例子。</p>
		<p>因此，下面对引擎的历史回顾将主要围绕动作射击游戏的变迁展开，动作射击游戏同3D引擎之间的关系相当于一对孪生兄弟，它们一同诞生，一同成长，互相为对方提供着发展的动力。</p>
		<p>引擎的诞生（1992年~1993年）</p>
		<p>1992年，3D Realms公司/Apogee公司发布了一款只有2兆多的小游戏——《德军司令部》（Wolfenstein 3D），稍有资历的玩家可能都还记得初接触它时的兴奋心情，用“革命”这一极富煽动色彩的词语也无法形容出它在整个电脑游戏发展史上占据的重要地位。这部游戏开创了第一人称射击游戏的先河，更重要的是，它在X轴和Y轴的基础上增加了一根Z轴，在由宽度和高度构成的平面上增加了一个向前向后的纵深空间，这根 Z轴对那些看惯了2D游戏的玩家造成的巨大冲击可想而知。</p>
		<p>Wolfenstein 3D引擎的作者是大名鼎鼎的约翰·卡马克，这位id Software公司的首席程序师正是凭借这款Wolfenstein 3D引擎在游戏圈里站稳了脚跟。事实上，《德军司令部》并非第一款采用第一人称视角的游戏，在它发售前的几个月，Origin公司就已经推出了一款第一人称视角的角色扮演游戏——《创世纪：地下世界》（Ultima Underworld），这款角游戏采用了类似的技术，但它与Wolfenstein 3D引擎之间有着相当大的差别，举例来说，《地下世界》的引擎支持斜坡，地板和天花板可以有不同的高度，分出不同的层次，玩家可以在游戏中跳跃，可以抬头低头，这些特性Wolfenstein 3D引擎都无法做到，而且从画面上看，《德军司令部》更接近漫画风格而不是传统的像素画面。</p>
		<p>尽管从技术细节上看，Wolfenstein 3D引擎比不上《创世纪：地下世界》的引擎，但它却更好地利用了第一人称视角的特点，快速火爆的游戏节奏使人们一下子记住了“第一人称射击游戏”这个单词，而不是“第一人称角色扮演游戏”。《德军司令部》后来还发布过一款名义上的续集——《三元的崛起》（Rise of the Triad），这款游戏在Wolfenstein 3D引擎的基础上增加了许多重要特性，包括跳跃和抬头低头等动作。</p>
		<p>引擎诞生初期的另一部重要游戏同样是出自id Software公司的一款非常成功的第一人称射击游戏——《毁灭战士》（Doom）。Doom引擎在技术上大大超越了Wolfenstein 3D引擎，《德军司令部》中的所有物体大小都是固定的，所有路径之间的角度都是直角，也就是说你只能笔直地前进或后退，这些局限在《毁灭战士》中都得到了突破。尽管游戏的关卡还是维持在2D平面上进行制作，没有“楼上楼”的概念，但墙壁的厚度可以为任意，并且路径之间的角度也可以为任意，这使得楼梯、升降平台、塔楼和户外等各种场景成为可能。</p>
		<p>由于Doom引擎本质上依然是二维的，因此可以做到同时在屏幕上显示大量角色而不影响游戏的运行速度，这一特点为游戏创造出了一种疯狂刺激的动作风格，在这方面迄今为止大约只有《英雄萨姆》（Serious Sam）系列能与之相比，除此之外还没有哪款3D引擎能在大批敌人向你涌来的时候依然保持游戏的流畅，这也是为什么如今市面上的大部分第一人称射击游戏都在积极地培养玩家的战术运用能力、提高玩家的射击准确率而拒绝滥砍滥杀的主要原因之一。值得一提的是，尽管Doom引擎缺乏足够的细节度，但开发者仍然在《毁灭战士》中表现出了惊人的环境效果，其纯熟的设计技巧实在令人赞叹。</p>
		<p>不过更值得纪念的是，Doom引擎是第一个被用于授权的引擎。1993年底，Raven公司采用改进后的Doom引擎开发了一款名为《投影者》（ShadowCaster）的游戏，这是游戏史上第一例成功的嫁接手术。1994年Raven公司采用Doom引擎开发《异教徒》（Heretic），为引擎增加了飞行的特性，成为跳跃动作的前身。1995年Raven 公司采用Doom引擎开发《毁灭巫师》（Hexen），加入了新的音效技术、脚本技术以及一种类似集线器的关卡设计，使你可以在不同关卡之间自由移动。 Raven公司与id Software公司之间的一系列合作充分说明了引擎的授权无论对于使用者还是开发者来说都是大有裨益的，只有把自己的引擎交给更多的人去使用才能使引擎不断地成熟起来。</p>
		<p>《毁灭战士》系列本身就相当成功，大约卖了350万套，而授权费又为id Software公司带来了一笔可观的收入。在此之前引擎只是作为一种自产自销的开发工具，从来没有哪家游戏商考虑过依靠引擎赚钱，Doom引擎的成功无疑为人们打开了一片新的市场。</p>
		<p>
				<br />引擎的转变（1994年~1997年）</p>
		<p>在引擎的进化过程中，肯·西尔弗曼于1994年为3D Realms公司开发的Build引擎是一个重要的里程碑，Build引擎的“肉身”就是那款家喻户晓的《毁灭公爵》（Duke Nukem 3D）。《毁灭公爵》已经具备了今天第一人称射击游戏的所有标准内容，如跳跃、360度环视以及下蹲和游泳等特性，此外还把《异教徒》里的飞行换成了喷气背包，甚至加入了角色缩小等令人耳目一新的内容。在Build引擎的基础上先后诞生过14款游戏，例如《农夫也疯狂》（Redneck Rampage）、《阴影武士》（Shadow Warrior）和《血兆》（Blood）等，还有台湾艾生资讯开发的《七侠五义》，这是当时（至今依然是）国内不多的几款3D射击游戏之一。Build 引擎的授权业务大约为3D Realms公司带来了一百多万美元的额外收入，3D Realms公司也由此而成为了引擎授权市场上的第一个“暴发户”。不过从总体来看，Build引擎并没有为3D引擎的发展带来任何质的变化，突破的任务最终由id Software公司的《雷神之锤》（Quake）完成了。</p>
		<p>《雷神之锤》紧跟在《毁灭公爵》之后发售，两者孰优孰劣一时之间成为玩家的热门话题。从内容的精彩程度来看《毁灭公爵》超过《雷神之锤》不少，但从技术的先进与否来看，《雷神之锤》是毫无疑问的赢家。Quake引擎是当时第一款完全支持多边形模型、动画和粒子特效的真正意义上的3D引擎，而不是Doom、Build那样的2.5D引擎。此外Quake引擎还是连线游戏的始作俑者，尽管几年前的《毁灭战士》也能通过调制解调器连线对战，但最终把网络游戏带入大众的视野之中的是《雷神之锤》，是它促成了电子竞技产业的发展。</p>
		<p>一年之后，id Software公司推出《雷神之锤2》，一举确定了自己在3D引擎市场上的霸主地位。《雷神之锤2》采用了一套全新的引擎，可以更充分地利用3D加速和 OpenGL技术，在图像和网络方面与前作相比有了质的飞跃，Raven公司的《异教徒2》（Heretic II）和《军事冒险家》（Soldier of Fortune）、Ritual公司的《原罪》（Sin）、Xatrix娱乐公司的《首脑：犯罪生涯》（Kingpin：Life of Crime）以及离子风暴工作室去年夏天刚刚发布的《安纳克朗诺克斯》（Anachronox）都采用了Quake II引擎。</p>
		<p>Quake II引擎的授权模式大致如下：基本许可费从40万美元到100万美元不等，版税金视基本许可费的多少而定，40万美元的许可费大约需提取10%以上的版税金，100万美元的许可费则提取很少一部分版税金。这样算下来，《雷神之锤2》通过引擎授权所获得的收入至少有一千万美元，尽管游戏本身的销售业绩比起《毁灭战士》来要差很多，大约卖了110多万套，收入在4500万美元左右，但在授权金这一块它所获得的盈利显然要远远高于《毁灭战士》，此时的引擎已经从一种单纯的工具变成了一块令人垂涎欲滴的肥肉。</p>
		<p>俗话说“一个巴掌拍不响”，没有实力相当的竞争者，任何市场都无法发展起来的。正当 Quake II独霸整个引擎市场的时候，Epic Megagames公司（即现在的Epic游戏公司）的《虚幻》（Unreal）问世了。毫不夸张，第一次运行这款游戏的时候，我的确被眼前的画面惊呆了，尽管当时只是在300x200的分辨率下运行的这款游戏（四大悲事之一：玩游戏机器不够劲）。除了精致的建筑物外，游戏中的许多特效即便在今天看来依然很出色，荡漾的水波，美丽的天空，庞大的关卡，逼真的火焰、烟雾和力场等效果。从单纯的画面效果来看，《虚幻》是当之无愧的佼佼者，其震撼力完全可以与人们第一次见到《德军司令部》时的感受相比。 Unreal引擎可能是使用最广的一款引擎，在推出后的两年之内就有18款游戏与Epic公司签订了许可协议，这还不包括Epic公司自己开发的《虚幻》资料片《重返纳帕利》，其中比较近的几部作品如第三人称动作游戏《北欧神符》（Rune）、角色扮演游戏《杀出重围》（Deus Ex）以及永不上市的第一人称射击游戏《永远的毁灭公爵》（Duke Nukem Forever），这些游戏都曾经或将要获得不少好评。</p>
		<p>Unreal 引擎的应用范围不限于游戏制作，还涵盖了教育、建筑等其它领域。Digital Design公司曾与联合国教科文组织的世界文化遗产分部合作采用Unreal引擎制作过巴黎圣母院的内部虚拟演示，Zen Tao公司采用Unreal引擎为空手道选手制作过武术训练软件，另一家软件开发商Vito Miliano公司也采用Unreal引擎开发了一套名为“Unrealty”的建筑设计软件，用于房地产的演示。</p>
		<p>这款与《雷神之锤2》同时代的引擎经过不断的更新，至今依然活跃在游戏市场上，丝毫没有显出老迈的迹象，实属难得</p>
		<p>引擎的革命（1998年~2000年）</p>
		<p>游戏的图像发展到《虚幻》这里已经达到了一个天花板的高度，接下去的发展方向很明显不可能再朝着视觉方面进行下去。前面说过，引擎技术对于游戏的作用并不仅局限于画面，它还影响到游戏的整体风格，例如，所有采用Doom引擎制作的游戏，无论是《异教徒》还是《毁灭巫师》，都有着相似的内容，甚至连情节设定都如出一辙。玩家开始对端着枪跑来跑去的单调模式感到厌倦，开发者们不得不从其它方面寻求突破，由此掀起了第一人称射击游戏的一个新的高潮。</p>
		<p>两部划时代的作品同时出现在1998年——Valve公司的《半条命》（Half-Life）和LookingGlass工作室的《神偷：暗黑计划》（Thief：The Dark Project），尽管此前的《系统震撼》（System Shock）等游戏也为引擎技术带来过许多新的特性，但没有哪款游戏能像《半条命》和《神偷》那样对后来的作品以及引擎技术的进化造成如此深远的影响。</p>
		<p>曾获得无数大奖的《半条命》采用的是Quake和Quake II引擎的混合体，Valve公司在这两部引擎的基础上加入了两个很重要的特性：一是脚本序列技术，这一技术可以令游戏以合乎情理的节奏通过触动事件的方式让玩家真实地体验到情节的发展，这对于诞生以来就很少注重情节的第一人称射击游戏来说无疑是一次伟大的革命；第二个特性是对人工智能引擎的改进，敌人的行动与以往相比明显有了更多的狡诈，不再是单纯地扑向枪口。这两个特点赋予了《半条命》引擎鲜明的个性，在此基础上诞生的《要塞小分队》、《反恐精英》和《毁灭之日》等优秀作品又通过网络代码的加入令《半条命》引擎焕发出了更为夺目的光芒。 在人工智能方面真正取得突破的游戏是Looking Glass工作室的《神偷：暗黑计划》，游戏的故事发生在中古年代，玩家扮演一名盗贼，任务是进入不同的场所，在尽量不引起别人注意的情况下窃取物品。《神偷》采用的是Looking Glass工作室自行开发的Dark引擎，Dark引擎在图像方面比不上《雷神之锤2》或《虚幻》，但在人工智能方面它的水准却远远高于后两者，游戏中的敌人懂得根据声音辨认你的方位，能够分辨出不同地面上的脚步声，在不同的光照环境下有不同的目力，发现同伴的尸体后会进入警戒状态，还会针对你的行动做出各种合理的反应，你必须躲在暗处不被敌人发现才有可能完成任务，这在以往那些纯粹的杀戮游戏中是根本见不到的。如今的绝大部分第一人称射击游戏都或多或少地采用了这种隐秘的风格，包括新近发布的《荣誉勋章：盟军进攻》（Medal of Honor：Allied Assault）。遗憾的是，由于Looking Glass工作室的过早倒闭，Dark引擎未能发扬光大，除了《神偷：暗黑计划》外，采用这一引擎的只有《神偷2：金属时代》（Thief 2：The Metal Age）和《系统震撼2》等少数几款游戏。</p>
		<p>受《半条命》和《神偷：暗黑计划》两款游戏的启发，越来越多的开发者开始把注意力从单纯的视觉效果转向更具变化的游戏内容，其中比较值得一提的是离子风暴工作室出品的《杀出重围》，《杀出重围》采用的是Unreal引擎，尽管画面效果十分出众，但在个体的人工智能方面它无法达到《神偷》系列的水准，游戏中的敌人更多的是依靠预先设定的场景脚本做出反应，例如砸碎弹药盒可能会引起附近敌人的警惕，但这并不代表他听到了什么，打死敌人后周围的同伙可能会朝你站立的位置奔过来也可能会无动于衷，这些不真实的行为即便在《荣誉勋章：盟军进攻》里也依然存在。图像的品质抵消了人工智能方面的缺陷，而真正帮助《杀出重围》在众多射击游戏中脱颖而出的则是它的独特风格，游戏含有浓重的角色扮演成分，人物可以积累经验、提高技能，还有丰富的对话和曲折的情节。同《半条命》一样，《杀出重围》的成功说明了叙事对第一人称射击游戏的重要性，能否更好地支持游戏的叙事能力成为了衡量引擎的一个新标准。从2000年开始3D引擎朝着两个不同的方向分化，一是如《半条命》、《神偷》和《杀出重围》那样通过融入更多的叙事成分和角色扮演成分以及加强游戏的人工智能来提高游戏的可玩性，二是朝着纯粹的网络模式发展，在这一方面，id Software公司再次走到了整个行业的最前沿，他们意识到与人斗才是其乐无穷，于是在Quake II出色的图像引擎的基础上加入更多的网络成分，破天荒推出了一款完全没有单人过关模式的纯粹的网络游戏——《雷神之锤3竞技场》（Quake III Arena），它与Epic公司稍后推出的《虚幻竞技场》（Unreal Tournament）一同成为引擎发展史上的一个转折点。 随着Quake III引擎的大获成功，id Software公司在引擎授权市场上也大赚了一笔。Raven公司再次同id Software公司合作，采用Quake III引擎制作了第一人称射击游戏《星际迷航：精英部队》（Star Trek Voyager：Elite Force），此外这部引擎还被用于制作第三人称动作游戏《重金属F.A.K.K. 2》（Heavy Metal F.A.K.K 2）和《艾丽丝漫游魔境》（American McGee’s Alice）、最近的两款二战题材的射击游戏《重返德军总部》（Return to Castle Wolfenstein）和《荣誉勋章：盟军进攻》，以及开发中的《绝地放逐者：绝地武士2》（Jedi Outcast：Jedi Knight II）。从地牢到外太空，从童话世界到二战年代，从第一人称视角到第三人称视角，充分显示了Quake III引擎的强大潜力。</p>
		<p>Epic 公司的《虚幻竞技场》虽然比《雷神之锤3竞技场》落后了一步，但如果仔细比较一下的话，你就会发现它的表现要略高出后者一筹。从画面方面看两者差不多打成平手，但在联网模式上，它不仅提供有死亡竞赛模式，还提供有团队合作等多种激烈火爆的对战模式，而且Unreal Tournament引擎不仅可以应用在动作射击游戏中，还可以为大型多人游戏、即时策略游戏和角色扮演游戏提供强有力的3D支持。Unreal Tournament引擎在许可业务方面的表现也超过了Quake III，迄今为止采用Unreal Tournament引擎制作的游戏大约已经有20多款，其中包括《星际迷航深度空间九：坠落》（Star Trek Deep Space Nine：The Fallen）、《新传说》（New Legend）和《塞拉菲姆》（Seraphim）等。</p>
		<p>在1998年到 2000年期间迅速崛起的另一款引擎是Monolith公司的LithTech引擎，这款引擎最初是用在机甲射击游戏《升刚》（Shogo）上的。前面说过，LithTech引擎的开发共花了整整五年时间，耗资700万美元，功夫不负有心人，1998年LithTech引擎的第一个版本推出之后立即引起了业界的主意，为当时处于白热化状态下的《雷神之锤2》vs.《虚幻》之争泼了一盆冷水。</p>
		<p>正是由于过于高昂的开发代价，2002年 Monolith公司决定单独成立一个LithTech公司，以LithTech引擎的授权许可作为主要业务，希望借此捞回一些成本。采用 LithTech第一代引擎制作的游戏包括《血兆2》和《清醒》（Sanity）等。2000年LithTech公司推出了引擎的2.0版本和2.5版本，加入了骨骼动画和高级地形系统，给人留下深刻印象的《无人永生》（No One Lives Forever）以及即将上市的《全球行动》（Global Operations）采用的就是LithTech 2.5引擎，此时的LithTech已经从一名有益的补充者变成了一款同Quake III和Unreal Tournament平起平坐的引擎。如今LithTech引擎的3.0版本也已经发布，并且衍生出了“木星”（Jupiter）、“鹰爪” （Talon）、“深蓝”（Cobalt）和“探索”（Discovery）四大系统，其中“鹰爪”被用于开发《异形大战掠夺者2》（Alien Vs. Predator 2），“木星”将用于《无人永生2》的开发，“深蓝”用于开发PS2版《无人永生》，“探索”则将被用来制作一款尚未公布的大型网络游戏。</p>
		<p>LithTech 引擎除了本身的强大性能外，最大的卖点在于详尽的服务，除了LithTech引擎的源代码和编辑器外，购买者还可以获得免费的升级、迅捷的电子邮件和电话技术支持，LithTech公司甚至还会把购买者请到公司进行手把手的培训。而且LithTech引擎的平均价格也不算很高，大约在25万美元左右，同 Quake III引擎的70万美元相比已经是相当低廉了。 </p>
		<p>引擎的明天（2001年~）</p>
		<p>2001年有许多优秀的3D射击游戏陆续发布，其中一部分采用的是Quake III和Unreal Tournament等现成引擎，如《星际迷航深度空间九：坠落》、《重返德军总部》和《荣誉勋章：盟军进攻》，而更多的则采用的是自己开发的引擎，比较有代表性的包括网络射击游戏《部落2》（Tribes 2）、第一人称射击游戏《马科斯·佩恩》、《红色派系》（Red Faction）和《英雄萨姆》等。</p>
		<p>《部落2》采用的是V12引擎，这款引擎虽然无法同Quake III和Unreal Tournament相提并论，但开发者为它制定的许可模式却相当新颖，你只需花上100美元就可以获得引擎的使用权，不过天下没有免费的午餐，随之而来的一系列规定相当苛刻，例如，开发者不能把该引擎用于为其它游戏发行商、其它商业游戏站点等竞争对手制作游戏，开发出来的游戏必须在发行前交给 GarageGames公司（V12引擎的所有者），不能交给任何第三方，GarageGames公司将拥有这些游戏五年的独家发行权等等。尽管如此，对于那些规模较小的独立开发者来说，这个超低价引擎仍然具有非常大的吸引力。</p>
		<p>《马科斯·佩恩》采用的是MAX-FX引擎，这是第一款支持辐射光影渲染技术（Radiosity Lighting）的引擎，这种技术以往只在一些高级的建筑设计软件中出现过，它能够结合物体表面的所有光源效果，根据材质的物理属性及其几何特性，准确地计算出每个点的折射率和反射率，让光线以更自然的方式传播过去，为物体营造出十分逼真的光影效果。MAX-FX引擎的另一个特点是所谓的“子弹时间” （Bullet Time），这是一种《黑客帝国》风格的慢动镜头，在这种状态下甚至连子弹的飞行轨迹都可以看得一清二楚。MAX-FX引擎的问世把游戏的视觉效果推向了一个新的高峰。</p>
		<p>《红色派系》采用的是Geo-Mod引擎，这是第一款可任意改变几何体形状的3D引擎，也就是说，你可以使用武器在墙壁、建筑物或任何坚固的物体上炸开一个缺口，穿墙而过，或者在平地上炸出一个弹坑躲进去。Geo-Mod引擎的另一个特点是高超的人工智能，敌人不仅仅是在看见同伴的尸体或听见爆炸声后才会做出反应，当他们发现你留在周围物体上的痕迹如弹孔时也会警觉起来，他们懂得远离那些可能对自己造成伤害而自己又无法做出还击的场合，受伤的时候他们会没命地逃跑，而不会冒着生命危险继续作战。 </p>
		<p>《英雄萨姆》采用的是Serious引擎，这款引擎最大的特点在于异常强大的渲染能力，面对大批涌来的敌人和一望无际的开阔场景，你丝毫不会感觉到画面的停滞，而且游戏的画面效果也相当出色。此外值得一提的还有《海底惊魂》（AquaNox）所用的Krass引擎，这款引擎被作为GeForce 3的官方指定引擎，专门用于宣传、演示GeForce 3的效果，视觉方面的表现无可挑剔。 </p>
		<p>可以看出，2001年问世的几部引擎依旧延续了两年多来的发展趋势，一方面不断地追求真实的效果，例如MAX-FX引擎追求画面的真实，Geo- Mod引擎追求内容的真实，《军事冒险家》（Soldier of Fortune）的GHOUL引擎追求死亡的真实；另一方面则继续朝着网络的方向探索，如《部落2》、《要塞小分队2》（Team Fortress 2），以及Monolith公司那款尚未公布的大型网络游戏。 </p>
		<p>不过，由于受到技术方面的限制，把第一人称射击游戏放入大型网络环境中的构想至少在目前还很难实现。众所周知，一般的大型网络游戏多为节奏较慢的角色扮演游戏，这些游戏所使用的引擎，无论是《卡米洛特的黑暗年代》（Dark Age of Camelot）使用的NetImmerse引擎，还是《地平线：伊斯塔里亚大陆》（Horizons：Empires of Istaria）使用的Horizons引擎，或是“据说可以保证50万人在同一虚拟世界中尽情游戏而不会有任何滞后感”的Big World引擎，都无法支持一个供数百名玩家同时战斗的大型团队动态环境。正是基于这样的考虑，id Software公司重新把目光放在了单人模式上，去年年底公布的《雷神之锤4》和《毁灭战士3》将重新建构一个以单人游戏为主的引擎。与此同时，老对手 Epic游戏公司也在紧锣密鼓地开发新一代Unreal引擎和《虚幻竞技场2》的引擎。尽管目前关于这几款引擎的具体资料并不多，但从已展示的几段采用新引擎实时渲染的动画片段来看，它们的确完全超越了市面上的其它引擎，预示着一个新的引擎时代的到来。 </p>
		<p>最后需要指出的是，许多优秀的游戏开发者正在退出游戏开发市场，转而进入引擎授权市场，仅靠开发引擎吃饭，这是个危险的信号。尽管引擎的不断进化使游戏的技术含量越来越高，但最终决定一款游戏是否优秀的因素在于使用技术的人而不是技术本身。如前所述，引擎相当于游戏的框架，框架打好后，你只需往里填充内容即可，在这里，框架只是提供了一种可能性，游戏的精彩与否取决于内容如何而非框架如何。正如《无人永生》开发小组所说：“所有问题最终都会归结为一点 ——你的游戏是否好玩。” </p>
		<p>---全文完--- </p><img src ="http://www.cppblog.com/CornerZhang/aggbug/79844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-04-14 01:10 <a href="http://www.cppblog.com/CornerZhang/archive/2009/04/14/79844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 代码技巧 (续 02)</title><link>http://www.cppblog.com/CornerZhang/archive/2009/04/13/79004.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 13 Apr 2009 09:35:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/04/13/79004.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/79004.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/04/13/79004.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/79004.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/79004.html</trackback:ping><description><![CDATA[<p>6 头文件依赖，Pimpl法，加速编译<br />   举个例子:<br />      // File: SoundSystem.h<br /><br />      #include "StreamFilter.h"<br />      #include "Emitters."<br /><br />      <a title="class" href="http://www.cppblog.com/CornerZhang" >class</a> SoundSystem {<br />      public:<br />         // ...<br />      private:<br />         StreamFilter currentFilter;<br />         EmitModeConfig modeConfig;<br />      };<br />   一目了然的是，看得出SoundSystem实现使用了StreamFilter和EmitModeConfig的定义，所以#include 了他们的定义在此SoundSystem.h中，可是随着项目的不断推进，class SoundSystem中依赖的使用类型会增多，它的header被引入到其它模块中，不知不觉的编译时间越来越长，改进之：<br />      // File: SoundSystem.h<br /><br />      <a title="class" href="http://www.cppblog.com/CornerZhang" >class</a> StreamFilter;<br />      <a title="class" href="http://www.cppblog.com/CornerZhang" >class</a> EmitModeConfig;<br /><br />      <a title="class" href="http://www.cppblog.com/CornerZhang" >class</a> SoundSystem {<br />      public:<br />         // ...<br />      private:<br />         StreamFilter* currentFilterPtr;<br />         EmitModeConfig* modeConfigPtr;<br />      };<br /><br />      // File: SoundSystem.cpp<br />      #include "StreamFilter.h"<br />      #include "Emitters."<br /><br />      SoundSystem::SoundSystem() {<br />         //...<br />         currentFilterPtr = new StreamFilter;<br />         modeConfigPtr = new EmitModeConfig;<br />      }<br /><br />      SoundSystem::~SoundSystem() {<br />         delete currentFilterPtr;<br />         delete modeConfigPtr;<br />         //...<br />      }<br />      这么一来，把StreamFilter和EmitModeConfig的#include藏到了SoundSystem的实现代码中，以后对SoundSystem的部分改动不会导致其它模块的rebuild哦，不过由此可能会牺牲一点效率吧!</p>
		<p>      记得，有位微软的C++翘楚人物，Herb Sutter给这种技巧称为Pimpl ( Private Implemention ), 用的恰到好处时，可以提高项目开发速度，同时模块的头文件间的#include关系得以缓解，可以避开循环依赖，而且可以获得一个良好的物理设计。<br /><br />( to be continued )</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/79004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-04-13 17:35 <a href="http://www.cppblog.com/CornerZhang/archive/2009/04/13/79004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 代码技巧 (续 01)</title><link>http://www.cppblog.com/CornerZhang/archive/2009/04/05/79003.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sun, 05 Apr 2009 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/04/05/79003.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/79003.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/04/05/79003.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/79003.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/79003.html</trackback:ping><description><![CDATA[<p>4 更好的使用标准库中的字符串类 (std::basic_string&lt;class Char, <a title="class" href="/CornerZhang">class</a> CharTraits, <a title="class" href="/CornerZhang">class</a> Alloc&gt;)</p>
		<p>   如果在一个实际的项目中要使用标准库的std::string 或 std::wstring，会发现随着时间的推移，越会产生出重写一个自己的字符串类之冲动，而std::string的接口如此之好用，同时code里到处是std::string这样的东西，有时又要向多字节字符转换。此处有一个比较好的方案，不过最好从项目开始就实施：<br />   typedef unsigned char UChar;<br />   typedef unsigned short UWChar;<br /><br />   typedef std::allocator StringAllocator;   // 使得以后有针对字符串分配优化<br /><br />   typedef std::basic_string&lt; UChar, std::char_traits&lt;UChar&gt;, StringAllocator&lt;UChar&gt; &gt; String;<br />   typedef std::basic_string&lt; UWChar, std::char_traits&lt;UWChar&gt;, StringAllocator&lt;UWChar&gt; &gt; WString; // 宽字符版本<br /><br />然后，在项目中就可以使用这个经过定制的String / WString。<br /><br />5 函数名称重载是C++很好的特性，适当使用会带来很好的效果，有时却会自找麻烦，下面就是一例:<br />   <a title="class" href="/CornerZhang">class</a> EntityDefination {<br />   public:<br />      //...<br />      Entity* GetEntity(const char* name);<br />      Entity* GetEntity(const unsigned id);   // 重载<br />   };<br />   自认为这样很好不是吗？<br />   有一次，我写了这样一行代码:<br />   Entity* result = entDef-&gt;GetEntity(0);<br />   知道，发生什么事吗，这是个对GetEntity(const unsigned id)的调用，虽说这是一行测试代码，但足以说明我的类接口上的信息缺了些，遂做了如下改动:<br />      Entity* GetEntityByName(const char* name);<br />      Entity* GetEntityByID(const unsigned id);<br /><br />然后，看看：<br />     Entity× result = entDef-&gt;GetEntityById(0);   // 哈哈！错误一目了然，眼睛调试 :)<br /><br /><br /><br />(to be continued!)</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/79003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-04-05 13:41 <a href="http://www.cppblog.com/CornerZhang/archive/2009/04/05/79003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 代码技巧</title><link>http://www.cppblog.com/CornerZhang/archive/2009/04/02/78734.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 02 Apr 2009 12:13:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/04/02/78734.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/78734.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/04/02/78734.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/78734.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/78734.html</trackback:ping><description><![CDATA[1 在开发维护代码的过程中，对构造、析构函数的修改比较频繁，所以将它们的实现放在.cpp文件中<br /><br />2 保证 operator = 的不变性，保证对象不会处于部分构造状态:<br />   通常的技巧就是:<br />   T&amp; T::operator = (const T&amp; rhs) {<br />      T temp(rhs);<br />      this-&gt;swap(temp);   // 实现swap<br />      return *this;<br />   }<br /><br />3 整数转字符(int convert to string)<br />   std::string itos_ctm(int num) {<br />      std::stringstream s;<br />      s&lt;&lt;num;<br />      return s.str();<br />   }<br /><br />(to be continued)<img src ="http://www.cppblog.com/CornerZhang/aggbug/78734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-04-02 20:13 <a href="http://www.cppblog.com/CornerZhang/archive/2009/04/02/78734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有人在管制这个国家吗？ [转]</title><link>http://www.cppblog.com/CornerZhang/archive/2009/01/08/71496.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 08 Jan 2009 06:45:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2009/01/08/71496.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/71496.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2009/01/08/71496.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/71496.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/71496.html</trackback:ping><description><![CDATA[<p>转帖 [梁文道] <a href="http://www.bullog.cn/blogs/liangwendao/archives/180823.aspx">http://www.bullog.cn/blogs/liangwendao/archives/180823.aspx</a></p>
		<p>梁文道 @ 2008-9-23 2:43:24 阅读(9027) 评论(63) 引用通告 分类: 未归类 <br />改革开放三十年来的中国就像以往的「东亚四小龙」，国家机器的合法性不是建立在形式保证的民众授权之上(如选举)，而是在于经济增长与人民生活的基本保障。至于大家认识到的民族主义和爱国主义等意识形态，其实只是一道黏合剂，让百姓感到自己生活的富足安定是国家的赐予，民族的自豪。假如民生凋敝，社会不安，再多的爱国宣传也挽救不了统治的危机。</p>
		<p>难怪中国政府一直致力于经济的高速增长，因为这正是官方共产主义破产之后仍然力保政权不坠的不二法门。其中的等式是这样的：经济发展等于百姓生活无忧，百姓生活无忧就等于政府长治久安。</p>
		<p>明乎此，便能了解近日「毒奶事件」的严重了。纵观这件事的来龙去脉，我们看见的不只是商人的贪婪无良，还是各个部门各级政府的集体缺席。</p>
		<p>早 在今年二月，就有消费者向工商局投诉「三鹿」奶粉的质量有问题。但当局的回应竟然是要该名消费者先给两万块钱人民币，才能替他检测相关产品！作风就和救命 得先缴订金的无良医院一样。如果政府连它该尽的本份也要收钱才做，谁还需要政府呢？何不干脆让民间自行开办产品检试实验室？说不定取价还能便宜点呢。</p>
		<p>能 够预先测知并且处理牛奶问题的部门有一大串，但它们全到哪里去了呢？至于地方政府，从石家庄市到河北省都曾接过投诉，他们的响应是什么？就算出动到了新西 兰政府，他们依然默不作声。我很难想象新西兰总理打电话给温家宝，对他说「你们那里的牛奶出事了，他们没告诉你吗？」的情景。我只感到政府好像不见了。这 是不是个体制问题？当然是！但它甚至已经和民主不民主无关了。就算是在「东亚四小龙」式的威权体制之下，这种无政府状态也很难发生。不要搞错，就算是邓小 平式的强人统治，也不大可能出现这种整体管治失效的情况。</p>
		<p>政府已经不能保障人民生命的安全，它还能够维持经济的高速增长吗？由次按风暴引发的全球金融海啸必将打击中国来年的出口贸易，我们的内需再怎么扩大也补不上那巨大的缺口吧？</p>
		<p>如此一来，这个国家的合法性能不遇到空前的危机吗？到底有没有人在管治这个国家呢？肯定有，最起码还要有政府部门勒令媒体不得擅自报道毒奶事件，更不能发布类似这篇文章的评论。这是我最能感到政府存在的环节。<br /></p><img src ="http://www.cppblog.com/CornerZhang/aggbug/71496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2009-01-08 14:45 <a href="http://www.cppblog.com/CornerZhang/archive/2009/01/08/71496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优良C++程序设计的法则</title><link>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69049.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sun, 14 Dec 2008 14:23:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69049.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/69049.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/69049.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/69049.html</trackback:ping><description><![CDATA[<p>
				<font style="BACKGROUND-COLOR: #000000" color="#ffffff">1 首先，了解自己。这样才能知道，哪些是与机器打交道的人是可以做到的，而哪些是不能做的<br />2 知识结构中，一定要对计算机这个"二进制编码系统"有所了解，所以为什么好多C/C++大师人物，推荐学习汇编和现代计算机体系结构<br />    因为，虽说现代的优化编译器很好，但是从另一个角度来说，我们所做的所有编码任务最终要被映射到计算机硬件（这个经过"预编码的二进制系统"，而且硬件本身也有缺陷）环境上，所以这样有助于了解程序到底做了什么事，有助于写出便于调试和优化的代码。<br />3 C++语言各个特性对设计产生的影响<br />4 数据结构、算法的熟悉，这是基本功<br />5 确定目标，人员的，与时间表，尽可能早的让市场人员参与进来，所以建立一些个release point and demo<br />6 让项目相关人员一起讨论，统一口头词汇，一些行业背景概念，建立技术规范说明书（不宜晦涩难懂），统一技术词汇，要有个大家都能接受的代码规范说明，和命名规则，以及一些必要的原则，尽可能多的在这个阶段吧每一项都化为白纸黑字。<br />还有，最重要的是工作内容的量化评估系统！<br />7 模块划分时，考虑参与人员的数量和任务分配，如何使他们有利于分配到自己每一天的任务表中。考虑与代码管理系统的整合关系<br />8 良好接口所拥有的特征审查表: （你会发觉，只要当你不断调整你的借口定义来满足以下四项中的三项时，代码重用性很好，因为这是个符合人性的定义，便于记忆！）<br />    a 功能的正交分解<br />    b 最小化的接口<br />    c 最明确的函数调用语义<br />    d 最适合的出错检查机制<br /><br />9 实现接口时，同时写一些用户代码，以此检查功能正确性和用户端代码的编程范型。由此，推动良好接口的产生<br />10 在接口中写下定义这个接口的初衷，它的产生需求，以及限制与开发状态(实现完成度)<br />11 那些不能用代码描述的接口，就该化为文档<br />12 尽可能引诱那些愿意使代码高质量的程序员参与进来<br />13 接下来... ...精益求精ing<br /></font>
		</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/69049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-12-14 22:23 <a href="http://www.cppblog.com/CornerZhang/archive/2008/12/14/69049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不满意的这一年</title><link>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69052.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sun, 14 Dec 2008 13:27:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69052.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/69052.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/12/14/69052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/69052.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/69052.html</trackback:ping><description><![CDATA[<p>
				<font style="BACKGROUND-COLOR: #000000" color="#ffffff">早期完成的两个模块用不上，也就是浪费了，不知当初做的是什么规划，而且拿的还是投资人的钱。至今，还没有一个真能领班的，所以，进度总是缓慢，人心定不下啊。<br /><br />考虑下技术人员的立场，他们随着年纪的增大，照理来说对技术会越来越能把握住，可亲自私下问了几个，他们反而觉得没了方向，不知自己做的这些所谓逻辑程序员的活有啥意义，而且技术能力没有多大增长，就是又多写了些小游戏的游戏逻辑代码，而且看他们又是累死累活的自愿加班，这样下去，造了太多的恶。庆幸的是，不是我做了这样的安排。<br /><br />我知道，我也走过来的，对他们个人而言实在浪费时间，除了那一般的收入之外，而且，健康的支出、对他们亲人的陪伴时间减少（太多年轻人的悲欢离合发生中...），太多的隐患！<br /><br />我就不信，在让整个公司运营起来，有一定的收入的同时，就不能照顾自己的好员工！<br /><br /><br /><br /><br /><br />想了想，现在中国政治的形态就是个“北奥模式"，这个模式将会在今后以不同的形态的于经济实体中复现！ </font>
		</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/69052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-12-14 21:27 <a href="http://www.cppblog.com/CornerZhang/archive/2008/12/14/69052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载] NXN -  AlienBrain Server 的安装</title><link>http://www.cppblog.com/CornerZhang/archive/2008/12/04/68543.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 04 Dec 2008 03:00:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/12/04/68543.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/68543.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/12/04/68543.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/68543.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/68543.html</trackback:ping><description><![CDATA[<p class="g_w_100 g_t_wrap g_t_center g_t_bold g_t_24 g_c_pdin c07" id="blogtitle_fks_085065087085085070086094081095087095084069085095">[NXN] AlienBrain Server 的安装</p>
		<div class="g_blog_list">
				<div class="g_t_center g_c_pdin g_p_center c07 content" id="blogtext_fks_085065087085085070086094081095087095084069085095" style="WIDTH: 760px">1. 首先需要 Windows Server 版系统，比如 win2000 server<br />2. 安装过程中，要设置一个 Center Server Name，就用本机的 hostname，不要乱改。（以后 NXN Admin 工具 connect to server 的 server name 就要填这个）<br />3. 新建一个 Project，然后设置好 User Management 中每个用户对此 Project 的访问权限，即可。<br /><br />官方上有教程<br /><a href="http://www.softimage.com/products/alienbrain/" target="_blank"><font color="#4f4fa3">http://www.softimage.com/products/alienbrain/</font></a></div>
		</div><img src ="http://www.cppblog.com/CornerZhang/aggbug/68543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-12-04 11:00 <a href="http://www.cppblog.com/CornerZhang/archive/2008/12/04/68543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>3dsMax 9 中导出带骨骼动画的 microsoft x file</title><link>http://www.cppblog.com/CornerZhang/archive/2008/12/03/68471.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 03 Dec 2008 07:59:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/12/03/68471.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/68471.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/12/03/68471.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/68471.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/68471.html</trackback:ping><description><![CDATA[1 首先下载Panda DirectX Export Plugin for 3ds Max<br />下载地址，自己google吧<br /><br />2 把8.dle放到(MaxDir)/plugins/下<br /><br />3 启动Max9, 打开自己的模型文件，然后File-&gt;Export.../或Export Selected...  , 选"Panda Export"导出器, 确定<br /><br />4 “3DS Max Objects"中勾选<br />       Mesh definition<br />       Materials<br />       Include Animation(requires sub-frames)<br />       Bones<br />       Geometric<br />      为了以后方便，选上Save settings in scene<br />   "Mesh"中勾选<br />       Mesh normals<br />       Mapping coordinates<br />       Vertex colors<br />       Combo单选"Normal"<br />   "Animation"<br />       Sampled<br />       Position, Scale &amp; Rotate<br />       Key Seq.<br />       一个动画序列为Start: 0, End: 30<br />   "X File Settings"<br />      Text<br />      Sub frame hierarchy<br />      Left Handed Axis<br />      Include Animation options勾上, type为Closed, Pos. quality为Linear Positions<br />  "Textures &amp; .fx files"中的保持默认<br /><br />注意: 由于美工那边一直说插件装了后，max9启动报错，究其原因可能是Visual C++ 2005 Redistributable Package或较新版本的DirectX runtime 没有安装，所以请务必装上，还有为max9安上它的SP2 package<br /><br />(完)<img src ="http://www.cppblog.com/CornerZhang/aggbug/68471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-12-03 15:59 <a href="http://www.cppblog.com/CornerZhang/archive/2008/12/03/68471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 下的常用命令</title><link>http://www.cppblog.com/CornerZhang/archive/2008/10/31/65627.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Fri, 31 Oct 2008 07:41:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/10/31/65627.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/65627.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/10/31/65627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/65627.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/65627.html</trackback:ping><description><![CDATA[grep<br /><br />eg: <br />  列出在当前目录下含有VecInt内容的文件列表<br />  grep -l "VecInt" ./* <br /><br /><br /><br />ls<br /><br />eg:<br />  以列表形式列出当前目录下的内容<br />  ls -l <br /><br />ps<br />列出当前系统中的进程<br /><br /><br />kill<br /><br />eg: 杀死PID为8093的进程<br />  kill 8093<br /><br /><br /><br />su<br />  <br /><br />top 实时监测进程<br /><br /><br />free 显示内存使用状态<br /><br /><br /><img src ="http://www.cppblog.com/CornerZhang/aggbug/65627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-10-31 15:41 <a href="http://www.cppblog.com/CornerZhang/archive/2008/10/31/65627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Crysis mod -- MTV</title><link>http://www.cppblog.com/CornerZhang/archive/2008/10/20/64458.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 20 Oct 2008 01:32:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/10/20/64458.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/64458.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/10/20/64458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/64458.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/64458.html</trackback:ping><description><![CDATA[<object width="400" height="225">
				<param name="allowfullscreen" value="true" />
				<param name="allowscriptaccess" value="always" />
				<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=748442&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />
				<embed src="http://vimeo.com/moogaloop.swf?clip_id=748442&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225">
				</embed>
		</object>
		<br />
		<a href="http://vimeo.com/748442?pg=embed&amp;sec=748442">Natural Mod 2.0 for Crysis</a> from <a href="http://vimeo.com/user388113?pg=embed&amp;sec=748442">pydon</a> on <a href="http://vimeo.com?pg=embed&amp;sec=748442">Vimeo</a>.<img src ="http://www.cppblog.com/CornerZhang/aggbug/64458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-10-20 09:32 <a href="http://www.cppblog.com/CornerZhang/archive/2008/10/20/64458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 8.04.1 edgy Chinese Input Method</title><link>http://www.cppblog.com/CornerZhang/archive/2008/09/08/61321.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 08 Sep 2008 09:40:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/09/08/61321.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/61321.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/09/08/61321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/61321.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/61321.html</trackback:ping><description><![CDATA[先在System -&gt; Administration -&gt; Language Support里安装上Chinese语言选项<br /><br />vim  /etc/X11/xinit/xinput.d/all_ALL <br />
    <br />
change:<br />
XIM=SCIM<br />
XIM_PROGRAM=/usr/bin/scim<br />
XIM_ARGS="-d"<br />
XIM_PROGRAM_XTRA=<br />
GTK_IM_MODULE=scim<br />
QT_IM_MODULE=scim<br />
DEPENDS="scim,scim-gtk2-immodule | scim-qtimm"<img src ="http://www.cppblog.com/CornerZhang/aggbug/61321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-09-08 17:40 <a href="http://www.cppblog.com/CornerZhang/archive/2008/09/08/61321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为arm linux 交叉编译boost 1.33.1</title><link>http://www.cppblog.com/CornerZhang/archive/2008/08/21/59498.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 21 Aug 2008 02:02:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/08/21/59498.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/59498.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/08/21/59498.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/59498.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/59498.html</trackback:ping><description><![CDATA[<p>首先在arm linux环境上要有zlib<br /><br />1 解开boost压缩包, cd进入解压目录<br /><br />2 编译出bjam,并配置好，看手册页<br /><br />3 产生Makefile: ./configure "-sBUILD=debug release &lt;runtime-link&gt;static/dynamic" --without-python<br /><br />4 更改Makefile:<br />  把文件头上的几个变量改成下面这样，我的编译环境在"/MyDev/arm-linux/bin"下面,其它的不用改<br />   BJAM=./tools/build/jam_src/bin.linuxx86/bjam<br />  TOOLSET=arm-linux-gcc<br />  BJAM_CONFIG= -sPYTHON_ROOT=/usr -sPYTHON_VERSION=2.5<br />  PREFIX=/MyDev/arm-linux/bin<br />  EPREFIX=/MyDev/arm-linux/bin<br />  LIBDIR=/MyDev/Intel_CE_2110-1.1.290/arm-linux-elf/lib<br />  INCLUDEDIR=/MyDev/Intel_CE_2110-1.1.290/arm-linux-elf/include<br /><br />  更改BOOST_ROOT/tools/build/v1/gcc-tools.jam,最好先备份一下这个文件:<br />  把里面出现gcc/g++/ar/as的地方改为arm-linux-gcc/arm-linux-g++/arm-linux-ar/arm-linux-as<br /><br />5 回到BOOST_ROOT<br />   由于是嵌入式系统，所以也需要静态库，所以输入:<br />    bjam "-sBUILD=debug release &lt;runtime-link&gt;static/dynamic"<br /><br />以上步骤在本人的Ubuntu 8.04上一切顺利<br /><br />&lt;end&gt;<br /></p><img src ="http://www.cppblog.com/CornerZhang/aggbug/59498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-08-21 10:02 <a href="http://www.cppblog.com/CornerZhang/archive/2008/08/21/59498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>compile alsa sound system on linux(arm)</title><link>http://www.cppblog.com/CornerZhang/archive/2008/08/04/57954.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 04 Aug 2008 04:45:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/08/04/57954.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/57954.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/08/04/57954.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/57954.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/57954.html</trackback:ping><description><![CDATA[Step 1: get alsa driver/lib/utils arch files from www.alsa-project.org<br />            and ncurses-5.5<br />            note: let extarct them on same directory<br />Step 2: see the script file "customer_alsa_build.sh"<br />            file full context:<br /><br /><br />#!/bin/sh<br /><br /># This script must be run from this directory<br /><br />BUILD_ROOT=$PWD/../..<br />TOP=$PWD<br />LINUX=$BUILD_ROOT/linux-2.6.16.16<br /><br />mkdir tmp;<br /><br /># Create the directory tree to export<br />mkdir -p $BUILD_ROOT/arm-linux-elf/lib/modules/sound<br />mkdir -p $BUILD_ROOT/arm-linux-elf/src<br />mkdir -p $BUILD_ROOT/arm-linux-elf/bin<br />mkdir -p $BUILD_ROOT/arm-linux-elf/etc<br />mkdir -p $BUILD_ROOT/arm-linux-elf/usr/share/alsa<br /><br /># Compile the ALSA driver<br />tar xjf alsa-driver-1.0.11-Olo.tar.bz2<br />cd alsa-driver-1.0.11<br />rm Makefile.conf<br />./configure --with-cross=arm-linux- --prefix=$TOP/tmp --with-kernel=$LINUX --with-redhat=no --with-suse=no --with-oss=no --with-cards=dummy,usb-audio<br />make<br />cd ..<br /><br /># Copy the modules for the target<br />mkdir -p $BUILD_ROOT/arm-linux-elf/lib/modules/sound<br />cp alsa-driver-1.0.11/acore/snd-hwdep.ko        \<br />   alsa-driver-1.0.11/acore/snd.ko              \<br />   alsa-driver-1.0.11/acore/snd-page-alloc.ko   \<br />   alsa-driver-1.0.11/acore/snd-pcm.ko          \<br />   alsa-driver-1.0.11/acore/snd-timer.ko        \<br />   alsa-driver-1.0.11/acore/snd-rawmidi.ko      \<br />   alsa-driver-1.0.11/acore/seq/snd-seq-device.ko \<br />   alsa-driver-1.0.11/acore/seq/snd-seq-dummy.ko \<br />   alsa-driver-1.0.11/usb/snd-usb-audio.ko      \<br />   alsa-driver-1.0.11/usb/snd-usb-lib.ko        \<br />   $BUILD_ROOT/arm-linux-elf/lib/modules/sound<br /><br /><br /># Cross-Compile curses<br />tar xzf ncurses-5.5.tar.gz<br />cd ncurses-5.5/<br />CC=arm-linux-gcc ./configure --host=arm-linux --target=arm-linux --build=i386-linux --with-softfloat --prefix=$TOP/tmp<br />make<br />make install<br />cd ..<br /><br /># Cross-Compile ALSA library<br />tar xjf alsa-lib-1.0.11-Olo.tar.bz2<br />cd alsa-lib-1.0.11<br />CC=arm-linux-gcc ./configure --host=arm-linux --target=arm-linux --build=i386-linux --with-softfloat --exec-prefix=$TOP/tmp --includedir=$TOP/tmp/include<br />make<br /><br /># copy libraries and headers target<br /><br />datadir=$TOP/tmp/share make -e install <br />arm-linux-strip $TOP/tmp/lib/libasound.so.2.0.0<br />cp $TOP/tmp/lib/libasound.so.2.0.0 $BUILD_ROOT/arm-linux-elf/lib/<br />mkdir -p $BUILD_ROOT/arm-linux-elf/include/<br />cp -a $TOP/tmp/include/alsa $BUILD_ROOT/arm-linux-elf/include/<br />pushd $BUILD_ROOT/arm-linux-elf/lib<br />rm -f libasound.so.2<br />rm -f libasound.so<br />ln -s libasound.so.2.0.0 libasound.so.2<br />ln -s libasound.so.2.0.0 libasound.so<br />popd<br />cd ..<br /><br /><br /># Cross-Compile ALSA utils<br />tar xjf alsa-utils-1.0.11.tar.bz2 <br />cp alsa-utils-1.0.11.tar.bz2 $BUILD_ROOT/arm-linux-elf/src<br />cd alsa-utils-1.0.11<br />CC=arm-linux-gcc ./configure --host=arm-linux --target=arm-linux --build=i386-linux --with-softfloat --prefix=$TOP/tmp --with-alsa-prefix=$TOP/tmp/lib/ --with-alsa-inc-prefix=$TOP/tmp/include CPPFLAGS="-I$TOP/tmp/include/alsa -I$TOP/tmp/include/ncurses" <br />make<br />make install<br />arm-linux-strip $TOP/tmp/bin/aplay<br />cp $TOP/tmp/bin/aplay $BUILD_ROOT/arm-linux-elf/bin<br />(cd $BUILD_ROOT/arm-linux-elf/bin; rm -f arecord; ln -s aplay arecord)<br /><br />    run it in your Shell Term<br /><br />(complete)<br /><br />enjoy!<br /><img src ="http://www.cppblog.com/CornerZhang/aggbug/57954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-08-04 12:45 <a href="http://www.cppblog.com/CornerZhang/archive/2008/08/04/57954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Ubuntu 7.04上安装samba与windows共享</title><link>http://www.cppblog.com/CornerZhang/archive/2008/07/24/57018.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 24 Jul 2008 01:55:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/07/24/57018.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/57018.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/07/24/57018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/57018.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/57018.html</trackback:ping><description><![CDATA[无权限目录共享<br />先是主机方面的设置:<br />[global]<br />workgroup = frog studio<br />server string = Ubuntu Samba Server<br />log file = /var/log/samba/log.%m<br />security = share<br />encrypt passwords = no<br />(其它按默认设置)<br />然后是共享目录设置:<br />[Share Directory]<br />comment = My Share Directory<br />path = /home/share<br />read only = yes<br />public = yes<br />writable = yes<br />设置完成后,我们先输入testparm来测试一下我们的设置有没有错,如果有,系统会有提醒...确定没有错后,我们还要重启一下我们的Samba服务器来让设置生效:<br />/etc/init.d/samba restart<br />接下来我们再进行一次客户端的自我测试:<br />smbclient -L //localhost<br />然后我们就可以看到刚刚我们共享的目录名Share Directory,呵呵 ... 进入Windows网上邻居找一下,我们就可以对Linux的共享目录进行访问了...好,下面来提高一下我们的权限:<br />主机方面的设置<br />[global]<br />workgroup = frog studio<br />server string = Ubuntu Samba Server<br />log file = /var/log/samba/log.%m<br />security = user<br />encrypt passwords = yes<br />smb passwd file = /etc/samba/smbpasswd<br />共享目录设置<br />[Share Directory 2]<br />comment = My Share Directory 2<br />path = /home/share2<br />writable = yes<br />valid users = %S(有权限进入者)<br />create mode = 0664<br />directory mode = 0775<br />设置完成后,再次重启Samba服务器,但现在先不要急于跑到windows下去测试,因为这个是要用户名和密码的,下面我们先创建登录用户和登录密码:<br />useradd smb (创建系统用户名)<br />passwd smb (创建系统用户密码)<br />smbpasswd -a smb (在密码文件里新增一个用户)<br />#smbpasswd -d smb (暂停用户登录)<br />#smbpasswd -e smb (恢复暂停用户)<br />#smbpasswd -x smb (删除用户)<br />更多操作请参考man smbpasswd<br />创建好密码文件后,测试Samba设置,testparm,测试正常后,查看一下我们的共享目录:<br />smbclient -L //localhost<br />一切就绪,我们打开windows下的网上邻居,登录共享目录,输入用户密码,呵呵 ... 就可以看到我们Linux下的共享目录了,并且可以任意创建删除文件,从此让我们的Windows和Linux互联吧...<img src ="http://www.cppblog.com/CornerZhang/aggbug/57018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-07-24 09:55 <a href="http://www.cppblog.com/CornerZhang/archive/2008/07/24/57018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Olo-Linux下编译freealut</title><link>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56305.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 16 Jul 2008 07:35:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56305.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/56305.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/56305.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/56305.html</trackback:ping><description><![CDATA[1 下载并解开，URL: <a href="http://www.openal.org/openal_webstf/downloads/freealut-1.1.0.tar.gz">http://www.openal.org/openal_webstf/downloads/freealut-1.1.0.tar.gz</a><br />   我的OpenAL安装目录在系统变量OPENAL_OLO_DIR上<br /><br />2 设置环境变量:<br />   输入<br />   CPPFLAGS="-I${OPENAL_OLO_DIR}/include"<br />   LDFLAGS="-L${OPENAL_OLO_DIR}/lib"<br />   export CPPFLAGS LDFLAGS<br /><br />3 编译设置:<br />   输入: CC=arm-linux-gcc ./configure -prefix=$PREFIX -target=arm-linux --enable-shared -with-softfloat --host=arm-linux<br /><br />4 编译<br />   make<br /><br />5 安装<br />  make install<br /><br />6 确认的方法与编译OpenAL方法的相同<br /><br />(end)<img src ="http://www.cppblog.com/CornerZhang/aggbug/56305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-07-16 15:35 <a href="http://www.cppblog.com/CornerZhang/archive/2008/07/16/56305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Olo--Linux下编译出OpenAL SDK</title><link>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56301.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 16 Jul 2008 07:13:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56301.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/56301.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/07/16/56301.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/56301.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/56301.html</trackback:ping><description><![CDATA[1 下载 OpenAL, URL: <a href="http://www.openal.org/openal_webstf/downloads/openal-0.0.8.tar.gz">http://www.openal.org/openal_webstf/downloads/openal-0.0.8.tar.gz</a><br />2 解开到某个目录下，然后cd进来<br />3 设置编译:<br />  输入 export "PREFIX=/MyDev/OLO_PDK/arm-linux-elf/"<br />  CC=arm-linux-gcc ./configure -prefix=$PREFIX -target=arm-linux --enable-shared -with-softfloat --host=arm-linux<br />4 编译SDK:<br />  输入 make<br />5 安装:<br />  输入 make install<br />6 确认安装是否成功，进入Olo的开发包的include和lib中去看看，include中会多出al目录，以及三个header; lib中多出libsound.so.2.0.0以及其它的target link<br /><br />(end)<img src ="http://www.cppblog.com/CornerZhang/aggbug/56301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-07-16 15:13 <a href="http://www.cppblog.com/CornerZhang/archive/2008/07/16/56301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试用Microsoft XNA Express 2.0感触</title><link>http://www.cppblog.com/CornerZhang/archive/2008/07/03/55192.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 03 Jul 2008 02:42:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/07/03/55192.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/55192.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/07/03/55192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/55192.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/55192.html</trackback:ping><description><![CDATA[<p>主要特色<br />1 基于C#编程，依赖于.net framework<br />2 与Visual Studio 系列高度集成<br />3 具备一套完整的开发流程，从编码-&gt;调试-&gt;资源整合，还有单元测试和协作开发<br />4 较充分的入门文档，完备的api reference<br /><br />个人感受<br />× 是microsoft力推.net平台的游戏市场<br />× 是奴役一部分游戏新人的良好开端，与当初的Visual Basic 6.0一个思路<br />× 用它的公司或个人将失去游戏开发的核心价值、创造性<br />× 是维持Windows + Visual Studio + XBox 360这个链条的扣环</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/55192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-07-03 10:42 <a href="http://www.cppblog.com/CornerZhang/archive/2008/07/03/55192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Work on Linux -- Ubuntu 8.04 LTS desktop system</title><link>http://www.cppblog.com/CornerZhang/archive/2008/06/20/54122.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Fri, 20 Jun 2008 05:28:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/06/20/54122.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/54122.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/06/20/54122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/54122.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/54122.html</trackback:ping><description><![CDATA[My twinview screenshot picture of desktop<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/cornerzhang/7030/o_UB_sp.jpg" alt="o_UB_sp.jpg" align="center" border="0" height="1024" width="2560" /><br /><br /><br /><img src ="http://www.cppblog.com/CornerZhang/aggbug/54122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-06-20 13:28 <a href="http://www.cppblog.com/CornerZhang/archive/2008/06/20/54122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 7.10 上安装 CodeBlocks Binary</title><link>http://www.cppblog.com/CornerZhang/archive/2008/06/18/51589.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Wed, 18 Jun 2008 01:52:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/06/18/51589.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/51589.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/06/18/51589.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/51589.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/51589.html</trackback:ping><description><![CDATA[<p>ref url: <a href="http://lgp203.free.fr/spip/spip.php?article1">http://lgp203.free.fr/spip/spip.php?article1</a><br /><br />具体安装步骤如下： <br />1、安装必要组件 <br />代码: <br />sudo apt-get install build-essential </p>
		<p>代码: <br />sudo apt-get install gdb </p>
		<p>4、安装最新 wxWidgets 库 <br />代码: <br />sudo apt-get update </p>
		<p>代码: <br />sudo apt-get install libwxgtk2.8-0 libwxgtk2.8-dev wx2.8-headers wx-common </p>
		<p>5、设置 wxWidgets 默认版本 <br />代码: <br />sudo update-alternatives --config wx-config </p>
		<p>6、下载 Code::Blocks 每夜构建版本 <br />sudo gedit /etc/apt/sources.list<br />在最后一行的后面加一行<br /><font face="Courier New">deb http://lgp203.free.fr/ubuntu/ gutsy universe</font><br />获得密钥<br /><font face="Courier New">wget -q http://lgp203.free.fr/public.key -O- | sudo apt-key add -</font><br /><font face="Courier New">下载 并且 安装<br />sudo apt-get install libcodeblocks0 codeblocks libwxsmithlib0 codeblocks-contrib</font></p>
		<p>or download the install package from CodeBlocks site:</p>
		<p>wget http://downloads.sourceforge.net/codeblocks/codeblocks-8.02-src.tar.bz2</p>
		<p>tar xzf codeblocks-8.02-src.tar.bz2</p>
		<p>... and then install these deb packages<br /></p>
		<p>
				<font face="Courier New">
						<br />
				</font>
		</p><img src ="http://www.cppblog.com/CornerZhang/aggbug/51589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-06-18 09:52 <a href="http://www.cppblog.com/CornerZhang/archive/2008/06/18/51589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NFS在ubuntu 7.10上简单安装(改进)</title><link>http://www.cppblog.com/CornerZhang/archive/2008/06/16/53552.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Mon, 16 Jun 2008 08:01:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2008/06/16/53552.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/53552.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2008/06/16/53552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/53552.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/53552.html</trackback:ping><description><![CDATA[ref:  <a href="http://timoqi.blogbus.com/logs/17282973.html" minmax_bound="true"><font color="#108dd2">http://timoqi.blogbus.com/logs/17282973.html</font></a><br /><br /><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">server</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端：</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">首先是安装服务器相关软件</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo apt-get install nfs-kernel-server</span></font></font></strong></font></em></pre><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">然后是编辑</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">/etc/exports</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">添加：</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><strong minmax_bound="true">/home 172.16.30.211(rw,ro,sync,subtree_check)</strong></font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">exports</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">文件的具体修改方式可以通过 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">man exports</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">/home</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">为服务器上需要映射的目录</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">172.16.30.211</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">为客户端</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">IP</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">，也可以写成 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">172.16.30.0/24 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">这样的网段形式</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><br minmax_bound="true" /></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">执行<em minmax_bound="true"></em></font></font><em minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">exportfs -rv</font></font></em></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">用来重新进行同步共享，并显示出来</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><br minmax_bound="true" /></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">最后重启下</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">nfs</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">服务器程序就可以了</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo /etc/init.d/nfs-kernel-server start</span></font></font></strong></font></em></pre><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">client</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">在</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">7.10</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">中</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">client</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端需要安装</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">nfs</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">－</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">common</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo apt-get install nfs</span></font></font></strong></font><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">－</span></font></font><font face="Nimbus Mono L, monospace" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">common<br /></span></font></font></font></strong></em><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">映射服务器端的</span></font></font><font face="Nimbus Mono L, monospace" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">/home</span></font></font></font></strong><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">目录</span></font></font></strong><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo mount -t nfs 172.16.30.189:/home /home</span></font></font></strong></font></em></pre><br />值得注意的是:<br />sudo 
<p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">NFS</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">在</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">ubuntu7.10</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">下安装</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">server</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端：</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">首先是安装服务器相关软件</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo apt-get install nfs-kernel-server</span></font></font></strong></font></em></pre><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">然后是编辑</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">/etc/exports</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">添加：</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><strong minmax_bound="true">/home 172.16.30.211(rw,subtree_check)</strong></font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">exports</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">文件的具体修改方式可以通过 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">man exports</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">/home</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">为服务器上需要映射的目录</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">172.16.30.211</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">为客户端</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">IP</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">，也可以写成 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">172.16.30.0/24 </font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">这样的网段形式</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><br minmax_bound="true" /></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">执行<em minmax_bound="true"></em></font></font><em minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">exportfs -rv</font></font></em></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">用来重新进行同步共享，并显示出来</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><br minmax_bound="true" /></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">最后重启下</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">nfs</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">服务器程序就可以了</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo /etc/init.d/nfs-kernel-server start</span></font></font></strong></font></em></pre><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">client</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端</font></font></p><p style="MARGIN-BOTTOM: 0cm" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">在</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">7.10</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">中</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">client</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">端需要安装</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">nfs</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">－</font></font><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true">common</font></font></p><pre class="cjk" style="MARGIN-BOTTOM: 0.5cm" minmax_bound="true"><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo apt-get install nfs</span></font></font></strong></font><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">－</span></font></font><font face="Nimbus Mono L, monospace" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">common</span></font></font></font></strong></em><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">映射服务器端的</span></font></font><font face="Nimbus Mono L, monospace" minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">/home</span></font></font></font></strong><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">目录</span></font></font></strong><em minmax_bound="true"><font face="Nimbus Mono L, monospace" minmax_bound="true"><strong minmax_bound="true"><font face="ZhunYuan" minmax_bound="true"><font style="FONT-SIZE: 10pt" size="2" minmax_bound="true"><span minmax_bound="true">sudo mount -t nfs 172.16.30.189:/home /home 在我的机器上失败<br /></span></font></font></strong></font></em>我输入 mount -t nfs 172.16.1.82:/MyDev /mnt/tmp 成功<br /><br /><br /><br /><br /></pre><br minmax_bound="true" /><img src ="http://www.cppblog.com/CornerZhang/aggbug/53552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2008-06-16 16:01 <a href="http://www.cppblog.com/CornerZhang/archive/2008/06/16/53552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>