<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/soloman817" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/soloman817" type="application/rss+xml"></fs:self_link><lastBuildDate>Thu, 12 Nov 2009 21:23:29 GMT</lastBuildDate><title>老所工作室</title><description>把握概念，关注细节</description><link>http://blog.ipattern.org</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Thu, 12 Nov 2009 21:30:12 GMT</pubDate><item><title>这周六育音堂的成都乐队演出</title><link>http://blog.ipattern.org/archives/1045</link><content:encoded>&lt;p&gt;在豆瓣上看到这周六育音堂有成都乐队的演出，主要是两只乐队：马赛克和海龟先生，去听了下，还不错。马赛克是80年代的乐风，欢快带点电子舞蹈的意思，而且刚成立的时候还是在绵阳的，哈哈，老乡？；海龟先生则有点雷鬼乐的感觉，仿佛让人置身加勒比海滩。说起雷鬼乐，我又不得不想起了PAI，在这个亚洲的腹地，居然充满着雷鬼乐，那高高把手的摩托车、梳着夸张长辫的脸庞消瘦如强尼德普的乐手以及那紧身衣和喇叭裤。。。。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1045&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;下载了3首歌放到空间上，海龟先生的《男孩别哭》《草裙舞》和马赛克的《Dancing Girl》。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ipattern.org/pot/music/%ba%a3%b9%ea%cf%c8%c9%fa-%c4%d0%ba%a2%b1%f0%bf%de.mp3&quot;&gt;海龟先生 &amp;#8211; 男孩别哭&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ipattern.org/pot/music/%ba%a3%b9%ea%cf%c8%c9%fa-%b2%dd%c8%b9%ce%e8.mp3&quot;&gt;海龟先生 &amp;#8211; 草裙舞&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.ipattern.org/pot/music/%c2%ed%c8%fc%bf%cb-Dancing%20Girl.mp3&quot;&gt;马赛克 &amp;#8211; Dancing Girl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;男孩别哭&lt;br /&gt;
词曲：海龟先生&lt;br /&gt;
我跟你描述一个灵魂&lt;br /&gt;
它拥有不谢的青春&lt;br /&gt;
每当夜色降临&lt;br /&gt;
就会轻轻歌唱&lt;/p&gt;
&lt;p&gt;它唱着一个新鲜的故事&lt;br /&gt;
里面的人们相互微笑&lt;br /&gt;
是不是每个夜晚都要这样&lt;br /&gt;
为了爱&lt;br /&gt;
去用清醒交换&lt;/p&gt;
&lt;p&gt;男孩别哭&lt;br /&gt;
美丽世界的孤儿&lt;br /&gt;
可 我的心&lt;br /&gt;
我的家&lt;br /&gt;
在哪里&lt;br /&gt;
在哪里呢我的朋友&lt;/p&gt;
&lt;p&gt;静静的听&lt;br /&gt;
有个声音在说爱你&lt;br /&gt;
闭上眼&lt;br /&gt;
跟随她&lt;br /&gt;
跟随她&lt;br /&gt;
就像跟着希望&lt;/p&gt;
&lt;p&gt;那些城市上空飘着一颗颗不安的心&lt;br /&gt;
她一定也曾在这儿跳过欢快的舞蹈&lt;br /&gt;
清风吹来让我感到一阵迷醉&lt;br /&gt;
那婆娑的身影&lt;br /&gt;
太阳般光洁&lt;/p&gt;
&lt;p&gt;那些男孩一次次的叫着寂寞妈妈&lt;br /&gt;
爱是否能抚平他们内心的内心的伤痕&lt;br /&gt;
孤独的人呵&lt;br /&gt;
我带上你走&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;间奏&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;我跟你描述一个灵魂&lt;br /&gt;
它拥有不谢的青春&lt;br /&gt;
每当夜色降临&lt;br /&gt;
就会轻轻歌唱&lt;/p&gt;
&lt;p&gt;它唱着一个新鲜的故事&lt;br /&gt;
里面的人们相互微笑&lt;br /&gt;
是不是每个夜晚都要这样&lt;br /&gt;
为了爱&lt;br /&gt;
去用清醒交换&lt;/p&gt;
&lt;p&gt;男孩别哭&lt;br /&gt;
美丽世界的孤儿&lt;br /&gt;
可 我的心&lt;br /&gt;
我的家&lt;br /&gt;
在哪里&lt;br /&gt;
在哪里呢我的朋友&lt;/p&gt;
&lt;p&gt;静静的听&lt;br /&gt;
有个声音在说爱你&lt;br /&gt;
闭上眼&lt;br /&gt;
跟随她&lt;br /&gt;
跟随她&lt;br /&gt;
就像跟着希望&lt;/p&gt;
&lt;p&gt;那些城市上空飘着一颗颗不安的心&lt;br /&gt;
她一定也曾在这儿跳过欢快的舞蹈&lt;br /&gt;
清风吹来让我感到一阵迷醉&lt;br /&gt;
那婆娑的身影&lt;br /&gt;
太阳般光洁&lt;/p&gt;
&lt;p&gt;那些男孩一次次的叫着寂寞妈妈&lt;br /&gt;
爱是否能抚平他们内心的内心的伤痕&lt;br /&gt;
孤独的人呵&lt;br /&gt;
我带上你走&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;间奏&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;这是一个放肆狂妄的年代&lt;br /&gt;
我们的身体&lt;br /&gt;
怎能时刻拥抱在一起&lt;br /&gt;
去见证这样的爱情&lt;br /&gt;
早就筋疲力尽&lt;/p&gt;
&lt;p&gt;你脸上尽管挂着深深的泪痕&lt;br /&gt;
我的心 我的爱&lt;br /&gt;
还是跟着梦想远走&lt;br /&gt;
去寻找另一个生命&lt;br /&gt;
它会带上我走&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;boy boy boy is olation&lt;br /&gt;
buy buy buy buy buy a one night stend&lt;br /&gt;
Dance dance dance in nowhere&lt;br /&gt;
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
海龟先生 《草裙舞》&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 AND 吧 哟 哟 哟 哟 哟 哟~！诶诶 诶诶，M 哼哼 恩恩~&lt;/p&gt;
&lt;p&gt;我倒在夏维夷岛上勤快的阳光抚摩着我的身体&lt;br /&gt;
那些老头还有老太太扒光着衣裳在沙滩上奔跑&lt;br /&gt;
每一个晚上 也跟着舞声卡拉去迎接他的姐姐或生配来，要去早卷我&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 哎来吧哟哟 哟哟哟 哟 诶诶 诶诶，大家快来说啊路哈&lt;/p&gt;
&lt;p&gt;我串过那茂密的丛林，天上掉下来一棵大大的叶子 那些女孩&lt;br /&gt;
还有小朋友围着大树他蹦蹦跳跳&lt;br /&gt;
每一个晚上 也跟着舞声卡拉去迎接他的姐姐或生配来，要去早卷我&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 哎来吧哟哟 哟哟哟 哟 诶诶 诶诶，大家快来说啊路哈&lt;/p&gt;
&lt;p&gt;读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦本 吧啦本~~~&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦本 吧啦本~~~&lt;br /&gt;
读拉吧 吧吧 吧 吧 吧 吧啦吧，吧啦吧 吧吧吧 诶诶，啊累路哈&lt;br /&gt;
读拉吧 吧吧 AND 吧 哟 哟 哟 哟 哟 哟~！诶诶 诶诶，大家快来说啊路哈&lt;br /&gt;
你一定 在这里 会找到你的真心的朋友来跳草裙舞&lt;br /&gt;
他们一起来跳草裙舞 一起来跳草裙舞 一起来跳草裙 舞~舞~舞~舞~&lt;br /&gt;
一起来跳草裙~~~舞！！！&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;《dancing girl》&amp;#8211; mosaic马赛克乐队&lt;/p&gt;
&lt;p&gt;炎热的夏天 无聊的夜晚&lt;br /&gt;
寂寞的人群 都想找个伴&lt;br /&gt;
怀旧的party 霓虹灯旋转&lt;br /&gt;
跳舞的女孩 性感的摇摆&lt;br /&gt;
　　&lt;br /&gt;
Evrybody in the bored night&lt;br /&gt;
忘掉一切只要跟着音乐一起摇摆&lt;br /&gt;
　　&lt;br /&gt;
Evrybody in the bored night&lt;br /&gt;
Wow~wow~wow&lt;br /&gt;
　　&lt;br /&gt;
Wow ~dancing girl&lt;br /&gt;
Wow ~dancing girl&lt;br /&gt;
Wow ~dancing girl&lt;br /&gt;
Wow ~dancing girl&lt;br /&gt;
Give me your kiss&lt;br /&gt;
Give me your soul &lt;/p&gt;


&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/724' rel='bookmark' title='Permanent Link: 松下 LX-3 效果真不错'&gt;松下 LX-3 效果真不错&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/661' rel='bookmark' title='Permanent Link: 听大师弹奏吉他小品'&gt;听大师弹奏吉他小品&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872515/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1045&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872515/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872515/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1045/feed</wfw:commentRss><slash:comments>0</slash:comments><description>在豆瓣上看到这周六育音堂有成都乐队的演出，主要是两只乐队：马赛克和海龟先生，去听了下，还不错。马赛克是80年代的乐风，欢快带点电子舞蹈的意思，而且刚成立的时候还是在绵阳的，哈哈，老乡？；海龟先生则有点雷鬼乐的感觉，仿佛让人置身加勒比海滩。说起雷鬼乐，我又不得不想起了PAI，在这个亚洲的腹地，居然充满着雷鬼乐，那高高把手的摩托车、梳着夸张长辫的脸庞消瘦如强尼德普的乐手以及那紧身衣和喇叭裤。。。。

下载了3首歌放到空间上，海龟先生的《男孩别哭》《草裙舞》和马赛克的《Dancing Girl》。
海龟先生 &amp;#8211; 男孩别哭
海龟先生 &amp;#8211; 草裙舞
马赛克 &amp;#8211; Dancing Girl
男孩别哭
词曲：海龟先生
我跟你描述一个灵魂
它拥有不谢的青春
每当夜色降临
就会轻轻歌唱
它唱着一个新鲜的故事
里面的人们相互微笑
是不是每个夜晚都要这样
为了爱
去用清醒交换
男孩别哭
美丽世界的孤儿
可 我的心
我的家
在哪里
在哪里呢我的朋友
静静的听
有个声音在说爱你
闭上眼
跟随她
跟随她
就像跟着希望
那些城市上空飘着一颗颗不安的心
她一定也曾在这儿跳过欢快的舞蹈
清风吹来让我感到一阵迷醉
那婆娑的身影
太阳般光洁
那些男孩一次次的叫着寂寞妈妈
爱是否能抚平他们内心的内心的伤痕
孤独的人呵
我带上你走
boy boy boy is olation
buy buy buy buy buy a one night stend
Dance dance dance in nowhere
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid
boy boy boy is olation
buy buy buy buy buy a one night stend
Dance dance dance in nowhere
Don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t don&amp;#8217;t be afraid
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;间奏&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;
我跟你描述一个灵魂
它拥有不谢的青春
每当夜色降临
就会轻轻歌唱
它唱着一个新鲜的故事
里面的人们相互微笑
是不是每个夜晚都要这样
为了爱
去用清醒交换
男孩别哭
美丽世界的孤儿
可 我的心
我的家
在哪里
在哪里呢我的朋友
静静的听
有个声音在说爱你
闭上眼
跟随她
跟随她
就像跟着希望
那些城市上空飘着一颗颗不安的心
她一定也曾在这儿跳过欢快的舞蹈
清风吹来让我感到一阵迷醉
那婆娑的身影
太阳般光洁
那些男孩一次次的叫着寂寞妈妈
爱是否能抚平他们内心的内心的伤痕
孤独的人呵
我带上你走
boy [...]&lt;img src=&quot;http://www1.feedsky.com/t1/295872515/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1045&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872515/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872515/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>音乐</category><category>育音堂</category><category>马赛克</category><category>海龟先生</category><pubDate>Fri, 13 Nov 2009 05:23:29 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1045#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1045</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1045</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872515/5297329</fs:itemid></item><item><title>2009 in PAI – 我们的纪念日</title><link>http://blog.ipattern.org/archives/1043</link><content:encoded>&lt;p&gt;记录我们在PAI的美好时光。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1043&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/bMOE5KgFXFE&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;550&quot; height=&quot;420&quot;/&gt;&lt;/p&gt;


&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/982' rel='bookmark' title='Permanent Link: 到泰国上山下海之道岛清迈之旅'&gt;到泰国上山下海之道岛清迈之旅&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/678' rel='bookmark' title='Permanent Link: 入手一件 Marmot Zeus Jacket'&gt;入手一件 Marmot Zeus Jacket&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/859' rel='bookmark' title='Permanent Link: 想窜就窜，要窜得BH'&gt;想窜就窜，要窜得BH&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/935' rel='bookmark' title='Permanent Link: 夜泊西塘'&gt;夜泊西塘&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/943' rel='bookmark' title='Permanent Link: 逛逛大理附近的农贸市场'&gt;逛逛大理附近的农贸市场&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872516/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1043&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872516/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872516/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1043/feed</wfw:commentRss><slash:comments>10</slash:comments><description>记录我们在PAI的美好时光。




相关文章到泰国上山下海之道岛清迈之旅入手一件 Marmot Zeus Jacket想窜就窜，要窜得BH夜泊西塘逛逛大理附近的农贸市场&lt;img src=&quot;http://www1.feedsky.com/t1/295872516/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1043&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872516/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872516/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>旅游与户外</category><category>PAI</category><pubDate>Mon, 09 Nov 2009 02:10:50 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1043#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1043</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1043</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872516/5297329</fs:itemid></item><item><title>极品飞车13之驾驶福特野马征服SPA赛道</title><link>http://blog.ipattern.org/archives/1028</link><content:encoded>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://blog.ipattern.org/wp-content/uploads/2009/09/RW-Spa-Francorchamps-530x330.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1029&quot; title=&quot;RW-Spa-Francorchamps-530x330&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/09/RW-Spa-Francorchamps-530x330.jpg&quot; alt=&quot;RW-Spa-Francorchamps-530x330&quot; width=&quot;530&quot; height=&quot;330&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SPA——用各种香精油泡澡，全身放松？看见这3个字母99％的人都会有这样的联想。但在比利时的SPA，恐怕你只能高度紧张地用一身冷汗来“泡澡”了。&lt;/p&gt;
&lt;p&gt;“最壮观的赛道”、“最经典的赛道”、“难度最大的赛道”&amp;#8230;&amp;#8230;车手们各种各样的评价早已为SPA罩上了一层层光环。2006年，SPA（斯帕）进行了全面保养改造，在硬件设备得到升级后，这条古老的赛道迅速从众多“旧赛车场”中脱颖而出，吸引力倍增。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1028&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;下图是 F1 在 SPA 赛道的数据统计，其中每点都给出了速度和档位（红色的是速度，黑底黄字的是档位）。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.ipattern.org/wp-content/uploads/2009/09/bellap.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1030&quot; title=&quot;bellap&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/09/bellap.jpg&quot; alt=&quot;bellap&quot; width=&quot;585&quot; height=&quot;668&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在游戏里，起点是在1号发卡弯和2号弯道之间，靠近2号弯道。过了4号弯道就是一个非常长的直道，这时由于车辆众多，不可掉以轻心。电脑车手横冲直撞的，可是这又不是《Burn Out》游戏，所以，我宁愿尾随其他车辆。快到5号弯道之前狂刹车，从6挡减到3挡，同时注意前车距离，如果追尾，车子就难看了，呵呵。5，6号S型弯，过了后应该能位于4，5名左右。最终，我在12号弯道超到了第一。&lt;/p&gt;
&lt;p&gt;到了第一就是表演赛了，因为我将这辆福特野马GT500进行了改装，加速度和速度都是其他车辆望尘莫及的，哈哈。从15到18号弯道间都很好开，几乎不用太多减速。18号和19号是一个很小的S弯，需要特别小心，进入18号弯道前需得从6档狂降至2档，然后用2档过完两个弯。1号弯道是个发卡弯，我也是减到2档过的。&lt;/p&gt;
&lt;p&gt;一共跑了2圈，当然，和 F1 的44圈没法比，呵呵，红色的野马就是我的车，大家看视频吧。&lt;/p&gt;
&lt;p&gt;&lt;object width=&quot;550&quot; height=&quot;420&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/dIF14u6wPVY&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.tudou.com/v/dIF14u6wPVY&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;550&quot; height=&quot;420&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;a href=&quot;javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://blog.ipattern.org/wp-content/plugins/wp-piclens/mrss.php?id=1028'});&quot;&gt;Start Slide Show with PicLens Lite &lt;img src=&quot;http://blog.ipattern.org/wp-content/plugins/wp-piclens/PicLensButton.png&quot; alt=&quot;PicLens&quot; width=&quot;16&quot; height=&quot;12&quot; border=&quot;0&quot; align=&quot;top&quot;&gt;&lt;/a&gt;

&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1025' rel='bookmark' title='Permanent Link: 初玩极品飞车13：变速'&gt;初玩极品飞车13：变速&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/680' rel='bookmark' title='Permanent Link: 桌游社开张之化妆酒会'&gt;桌游社开张之化妆酒会&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872517/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1028&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872517/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872517/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1028/feed</wfw:commentRss><slash:comments>2</slash:comments><description>SPA——用各种香精油泡澡，全身放松？看见这3个字母99％的人都会有这样的联想。但在比利时的SPA，恐怕你只能高度紧张地用一身冷汗来“泡澡”了。
“最壮观的赛道”、“最经典的赛道”、“难度最大的赛道”&amp;#8230;&amp;#8230;车手们各种各样的评价早已为SPA罩上了一层层光环。2006年，SPA（斯帕）进行了全面保养改造，在硬件设备得到升级后，这条古老的赛道迅速从众多“旧赛车场”中脱颖而出，吸引力倍增。

下图是 F1 在 SPA 赛道的数据统计，其中每点都给出了速度和档位（红色的是速度，黑底黄字的是档位）。

在游戏里，起点是在1号发卡弯和2号弯道之间，靠近2号弯道。过了4号弯道就是一个非常长的直道，这时由于车辆众多，不可掉以轻心。电脑车手横冲直撞的，可是这又不是《Burn Out》游戏，所以，我宁愿尾随其他车辆。快到5号弯道之前狂刹车，从6挡减到3挡，同时注意前车距离，如果追尾，车子就难看了，呵呵。5，6号S型弯，过了后应该能位于4，5名左右。最终，我在12号弯道超到了第一。
到了第一就是表演赛了，因为我将这辆福特野马GT500进行了改装，加速度和速度都是其他车辆望尘莫及的，哈哈。从15到18号弯道间都很好开，几乎不用太多减速。18号和19号是一个很小的S弯，需要特别小心，进入18号弯道前需得从6档狂降至2档，然后用2档过完两个弯。1号弯道是个发卡弯，我也是减到2档过的。
一共跑了2圈，当然，和 F1 的44圈没法比，呵呵，红色的野马就是我的车，大家看视频吧。

Start Slide Show with PicLens Lite 

相关文章初玩极品飞车13：变速桌游社开张之化妆酒会&lt;img src=&quot;http://www1.feedsky.com/t1/295872517/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1028&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872517/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872517/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>13</category><category>游戏</category><category>极品飞车</category><category>SPA</category><pubDate>Fri, 25 Sep 2009 01:38:47 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1028#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1028</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1028</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872517/5297329</fs:itemid></item><item><title>初玩极品飞车13：变速</title><link>http://blog.ipattern.org/archives/1025</link><content:encoded>&lt;p&gt;极品飞车出了13了，从1995年算起，有14个年头了，还真是历史悠久啊。以前玩的最多的还是《地下狂飙2》，那个是地下飙车风格的，新出的这个《变速》则是跑道赛车风格的，初步玩下来，感觉还是不错，尤其是驾驶舱视角，感觉很好。视频是游戏中第一个邀请赛，驾驶Lotus比拼，电脑AI设为了Normal，还是很轻松地夺冠，呵呵。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1025&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;object width=&quot;550&quot; height=&quot;420&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/DUA5ZA9SrZo&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.tudou.com/v/DUA5ZA9SrZo&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;550&quot; height=&quot;420&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;


&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1028' rel='bookmark' title='Permanent Link: 极品飞车13之驾驶福特野马征服SPA赛道'&gt;极品飞车13之驾驶福特野马征服SPA赛道&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/680' rel='bookmark' title='Permanent Link: 桌游社开张之化妆酒会'&gt;桌游社开张之化妆酒会&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872518/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1025&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872518/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872518/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1025/feed</wfw:commentRss><slash:comments>12</slash:comments><description>极品飞车出了13了，从1995年算起，有14个年头了，还真是历史悠久啊。以前玩的最多的还是《地下狂飙2》，那个是地下飙车风格的，新出的这个《变速》则是跑道赛车风格的，初步玩下来，感觉还是不错，尤其是驾驶舱视角，感觉很好。视频是游戏中第一个邀请赛，驾驶Lotus比拼，电脑AI设为了Normal，还是很轻松地夺冠，呵呵。




相关文章极品飞车13之驾驶福特野马征服SPA赛道桌游社开张之化妆酒会&lt;img src=&quot;http://www1.feedsky.com/t1/295872518/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1025&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872518/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872518/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>视频</category><category>游戏</category><category>极品飞车</category><category>变速</category><pubDate>Tue, 22 Sep 2009 18:30:59 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1025#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1025</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1025</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872518/5297329</fs:itemid></item><item><title>C++ 关于类型的计算</title><link>http://blog.ipattern.org/archives/1020</link><content:encoded>&lt;p&gt;继续阅读《C++ Meta Programming》这本书。在&lt;a href=&quot;http://blog.ipattern.org/archives/703&quot;&gt;上一篇日志&lt;/a&gt;里，我初步了解了编译期的 metafunction 的使用，然而对何时使用类型的计算仍然不是很清晰。而在这本书的第三章里，作者为我们举了一个非常合适的例子，那就是，科学物理计算程序中，对于单位的纠错。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1020&quot;&gt;&lt;/span&gt;我们知道，在物理计算中，很多单位是由基础的物理单位符合而成，如速度单位可以表示为距离除以时间，密度单位可以表示为质量除以体积。这个例子中使用的就是牛顿第二定律中对于力的定义：f=ma，即，力等于质量乘以加速度，而其中，加速度单位又可以进一步表示为距离除以时间的平方。&lt;/p&gt;
&lt;p&gt;在物理中，七种单位是最基本的：mass, length, time, charge, temperature, intensity, angle，其他的物理单位都可以表示为这7种单位的组合。那么，对于这七种单位以及其演变出的无穷无尽的单位，我们是无法在C++语言里为他们一一定义一个class，那么，对于很多物理计算，单位的检查就将变得非常麻烦，因为没有了类型，光是数值计算无法进行类型的纠错。比如你想求得一个力的单位 f ，然而你却将质量乘以了速度，而不是加速度，那么程序上，这样的错误是无法鉴别的，因为他们的类型都是 float 或者 double。&lt;/p&gt;
&lt;p&gt;metaprogramming 在这种情况下就能很好地发挥作用，因为，这些基础单位无论如何组合，都可以表示为指数形式，如 f=ma=m*l/t/t，即质量的1次方加上距离的1次方加上时间的-2次方。&lt;/p&gt;
&lt;p&gt;在 metaprogramming 里，作者使用 mpl::vector_c 来表示 7 种基本单位（外加一个数量，即没有单位）：&lt;/p&gt;
&lt;pre&gt;typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 0, 0&amp;gt; scalar;
typedef mpl::vector_c&amp;lt;int, 1, 0, 0, 0, 0, 0, 0&amp;gt; mass;
typedef mpl::vector_c&amp;lt;int, 0, 1, 0, 0, 0, 0, 0&amp;gt; length;
typedef mpl::vector_c&amp;lt;int, 0, 0, 1, 0, 0, 0, 0&amp;gt; time;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 1, 0, 0, 0&amp;gt; charge;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 1, 0, 0&amp;gt; temperature;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 1, 0&amp;gt; intensity;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 0, 1&amp;gt; angle;&lt;/pre&gt;
&lt;p&gt;这个 mpl::vector_c 里，分别有7个成员，都是整数型，表示该单位的指数，所以，对于基本单位，都只有一位为1，其他均为0。&lt;/p&gt;
&lt;p&gt;有了这些基本单位后，我们可以轻松定义其他的复合单位：&lt;/p&gt;
&lt;pre&gt;typedef mpl::vector_c&amp;lt;int, 0, 1,-1, 0, 0, 0, 0&amp;gt; velocity;       // l/t
typedef mpl::vector_c&amp;lt;int, 0, 1,-2, 0, 0, 0, 0&amp;gt; acceleration;   // l/(t^2)
typedef mpl::vector_c&amp;lt;int, 1, 1,-1, 0, 0, 0, 0&amp;gt; momentum;       // ml/t
typedef mpl::vector_c&amp;lt;int, 1, 1,-2, 0, 0, 0, 0&amp;gt; force;          // ml/(t^2)&lt;/pre&gt;
&lt;p&gt;有了这些单位类型后，我们就可以不是用浮点类型来表示数量了，而是将浮点类型和单位绑定起来，构成一个数量单位：&lt;/p&gt;
&lt;pre&gt;template &amp;lt;class T, class D&amp;gt;
struct quantity
{
    explicit quantity(T v) : v_(v) {}
    T value() const { return v_; }
private:
    T v_;
};&lt;/pre&gt;
&lt;p&gt;对于数量的加减很简单，必须要求同样单位：&lt;/p&gt;
&lt;pre&gt;template &amp;lt;class T, class D&amp;gt;
quantity&amp;lt;T, D&amp;gt; operator+(quantity&amp;lt;T, D&amp;gt; x, quantity&amp;lt;T, D&amp;gt; y)
{
    return quantity&amp;lt;T, D&amp;gt;(x.value() + y.value());
}

template &amp;lt;class T, class D&amp;gt;
quantity&amp;lt;T, D&amp;gt; operator-(quantity&amp;lt;T, D&amp;gt; x, quantity&amp;lt;T, D&amp;gt; y)
{
    return quantity&amp;lt;T, D&amp;gt;(x.value() - y.value());
}&lt;/pre&gt;
&lt;p&gt;而对于数量的乘除，则会产生新的单位，于是，我们使用 mpl 的 metafunction 来对相应的数值进行计算，以此产生新的类型：&lt;/p&gt;
&lt;pre&gt;template &amp;lt;class D1, class D2&amp;gt;
struct multiple_dimensions : mpl::transform&amp;lt;D1, D2, mpl::plus&amp;lt;_,_&amp;gt; &amp;gt;
{};

template &amp;lt;class D1, class D2&amp;gt;
struct divide_dimensions : mpl::transform&amp;lt;D1, D2, mpl::minus&amp;lt;_,_&amp;gt; &amp;gt;
{};

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, typename multiple_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;
operator*(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    return quantity&amp;lt;T, typename multiple_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;(
        x.value() * y.value());
}

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, typename divide_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;
operator/(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    return quantity&amp;lt;T, typename divide_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;(
        x.value() / y.value());
}&lt;/pre&gt;
&lt;p&gt;这样，当我们使用如下计算表达式的时候，编译器就将报错：&lt;/p&gt;
&lt;pre&gt;quantity&amp;lt;float, length&amp;gt; l =
    quantity&amp;lt;float, length&amp;gt;(5.0f) / quantity&amp;lt;float, myns::time&amp;gt;(2.0f);&lt;/pre&gt;
&lt;p&gt;而正常的计算，诸如：&lt;/p&gt;
&lt;pre&gt;quantity&amp;lt;float, force&amp;gt; f =
    quantity&amp;lt;float, mass&amp;gt;(5.0f) * quantity&amp;lt;float, acceleration&amp;gt;(9.8f);&lt;/pre&gt;
&lt;p&gt;则会通过编译，因为 mass * accelaration 就正好产生新的单位 force。这样，对于大规模的物理计算程序来说，实在是一件非常好的事情。&lt;/p&gt;
&lt;p&gt;现在，说完了理想目标，我们看看现实吧。将以上的程序进行编译，我们却会得到编译错误。虽然从理论上说，mass * acceleration 生成的新 type 和 force 应该是一致的，然而 C++ 编译器还是将它们视为两种类型，并且要求你提供转换函数，鉴于这种理想与现实的差距，我们只好在 quantity 的类声明中添加一个转换构造函数，用 mpl::equal 来判别两种类型是否本质上是一致的，并用 static assert 来进行类型的检查：&lt;/p&gt;
&lt;pre&gt;template &amp;lt;class T, class D&amp;gt;
struct quantity
{
    template &amp;lt;class DD&amp;gt;
    quantity(const quantity&amp;lt;T, DD&amp;gt; &amp;amp; o) : v_(o.value())
    {
        BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D, DD&amp;gt;::value));
    }
    explicit quantity(T v) : v_(v) {}
    T value() const { return v_; }
private:
    T v_;
};&lt;/pre&gt;
&lt;p&gt;这下，我们的：&lt;/p&gt;
&lt;pre&gt;quantity&amp;lt;float, force&amp;gt; f =
    quantity&amp;lt;float, mass&amp;gt;(5.0f) * quantity&amp;lt;float, acceleration&amp;gt;(9.8f);&lt;/pre&gt;
&lt;p&gt;语句就能够编译通过了。（mpl::equal 和 boost::is_same 的区别在于， equal 是用来检查一个 mpl 容器的，比如 mpl::vector ，对其中每一个 metadata 执行 boost::is_same，实际上，我用 boost::is_same 直接判别这两种类型也能得到正确的答案，在 VC80 上测试过）。&lt;/p&gt;
&lt;p&gt;然而还没有完，看如下的表达式：&lt;/p&gt;
&lt;pre&gt;// f = f + m * a
quantity&amp;lt;float, force&amp;gt; f = quantity&amp;lt;float, force&amp;gt;(5.0f)
    + (quantity&amp;lt;float, mass&amp;gt;(2.0f) * quantity&amp;lt;float, acceleration&amp;gt;(3.0f));&lt;/pre&gt;
&lt;p&gt;这个编译依然无法通过，原因依然是在 operator+ 中，编译器无法把本质一样的类型进行统一，我们只需要修改 operator+ 和 operator-：&lt;/p&gt;
&lt;pre&gt;template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, D1&amp;gt; operator+(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D1, D2&amp;gt;::type::value));
    return quantity&amp;lt;T, D1&amp;gt;(x.value() + y.value());
}

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, D1&amp;gt; operator-(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D1, D2&amp;gt;::type::value));
    return quantity&amp;lt;T, D1&amp;gt;(x.value() - y.value());
}&lt;/pre&gt;
&lt;p&gt;至此，这个例子就讲完了。书中的第三章后半部分还着重讲解了 mpl 提供的 lambda 表达式，以及 forward 的技巧，有兴趣可以看看。&lt;/p&gt;
&lt;p&gt;整个例子的完整代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;boost/static_assert.hpp&amp;gt;
#include &amp;lt;boost/mpl/vector_c.hpp&amp;gt;
#include &amp;lt;boost/mpl/equal.hpp&amp;gt;
#include &amp;lt;boost/mpl/plus.hpp&amp;gt;
#include &amp;lt;boost/mpl/minus.hpp&amp;gt;
#include &amp;lt;boost/mpl/transform.hpp&amp;gt;
#include &amp;lt;boost/mpl/placeholders.hpp&amp;gt;

namespace myns
{

namespace mpl = boost::mpl;
using namespace mpl::placeholders;

typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 0, 0&amp;gt; scalar;
typedef mpl::vector_c&amp;lt;int, 1, 0, 0, 0, 0, 0, 0&amp;gt; mass;
typedef mpl::vector_c&amp;lt;int, 0, 1, 0, 0, 0, 0, 0&amp;gt; length;
typedef mpl::vector_c&amp;lt;int, 0, 0, 1, 0, 0, 0, 0&amp;gt; time;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 1, 0, 0, 0&amp;gt; charge;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 1, 0, 0&amp;gt; temperature;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 1, 0&amp;gt; intensity;
typedef mpl::vector_c&amp;lt;int, 0, 0, 0, 0, 0, 0, 1&amp;gt; angle;

typedef mpl::vector_c&amp;lt;int, 0, 1,-1, 0, 0, 0, 0&amp;gt; velocity;       // l/t
typedef mpl::vector_c&amp;lt;int, 0, 1,-2, 0, 0, 0, 0&amp;gt; acceleration;   // l/(t^2)
typedef mpl::vector_c&amp;lt;int, 1, 1,-1, 0, 0, 0, 0&amp;gt; momentum;       // ml/t
typedef mpl::vector_c&amp;lt;int, 1, 1,-2, 0, 0, 0, 0&amp;gt; force;          // ml/(t^2)

template &amp;lt;class T, class D&amp;gt;
struct quantity
{
    template &amp;lt;class DD&amp;gt;
    quantity(const quantity&amp;lt;T, DD&amp;gt; &amp;amp; o) : v_(o.value())
    {
        BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D, DD&amp;gt;::value));
    }
    explicit quantity(T v) : v_(v) {}
    T value() const { return v_; }
private:
    T v_;
};

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, D1&amp;gt; operator+(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D1, D2&amp;gt;::type::value));
    return quantity&amp;lt;T, D1&amp;gt;(x.value() + y.value());
}

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, D1&amp;gt; operator-(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    BOOST_STATIC_ASSERT((mpl::equal&amp;lt;D1, D2&amp;gt;::type::value));
    return quantity&amp;lt;T, D1&amp;gt;(x.value() - y.value());
}

template &amp;lt;class D1, class D2&amp;gt;
struct multiple_dimensions : mpl::transform&amp;lt;D1, D2, mpl::plus&amp;lt;_,_&amp;gt; &amp;gt;
{};

template &amp;lt;class D1, class D2&amp;gt;
struct divide_dimensions : mpl::transform&amp;lt;D1, D2, mpl::minus&amp;lt;_,_&amp;gt; &amp;gt;
{};

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, typename multiple_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;
operator*(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    return quantity&amp;lt;T, typename multiple_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;(
        x.value() * y.value());
}

template &amp;lt;class T, class D1, class D2&amp;gt;
quantity&amp;lt;T, typename divide_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;
operator/(quantity&amp;lt;T, D1&amp;gt; x, quantity&amp;lt;T, D2&amp;gt; y)
{
    return quantity&amp;lt;T, typename divide_dimensions&amp;lt;D1, D2&amp;gt;::type&amp;gt;(
        x.value() / y.value());
}

}

using namespace myns;

int main(int, char**)
{
    {
        std::cout &amp;lt;&amp;lt; &quot;test01: length(5.8) - length(3.2) = length(x)&quot; &amp;lt;&amp;lt; std::endl;
        quantity&amp;lt;float, length&amp;gt; x = quantity&amp;lt;float, length&amp;gt;(5.8f) - quantity&amp;lt;float, length&amp;gt;(3.2f);
        // the following line would fail at compile time
        //quantity&amp;lt;float, mass&amp;gt; y = quantity&amp;lt;float, length&amp;gt;(5.8f) - quantity&amp;lt;float, length&amp;gt;(3.2f);
        std::cout &amp;lt;&amp;lt; &quot;result: &quot; &amp;lt;&amp;lt; x.value() &amp;lt;&amp;lt; std::endl;
    }

    {
        std::cout &amp;lt;&amp;lt; &quot;test02: force = mass(5.0) * accelertion(9.8)&quot; &amp;lt;&amp;lt; std::endl;
        quantity&amp;lt;float, force&amp;gt; f = quantity&amp;lt;float, mass&amp;gt;(5.0f) * quantity&amp;lt;float, acceleration&amp;gt;(9.8f);
        // the following line would fail at compile time
        //quantity&amp;lt;float, acceleration&amp;gt; a = quantity&amp;lt;float, mass&amp;gt;(5.0f) * quantity&amp;lt;float, acceleration&amp;gt;(9.8f);
        std::cout &amp;lt;&amp;lt; &quot;result: &quot; &amp;lt;&amp;lt; f.value() &amp;lt;&amp;lt; std::endl;
    }

    {
        std::cout &amp;lt;&amp;lt; &quot;test03: v = l(5.0) / t(2.0)&quot; &amp;lt;&amp;lt; std::endl;
        quantity&amp;lt;float, velocity&amp;gt; v = quantity&amp;lt;float, length&amp;gt;(5.0f) / quantity&amp;lt;float, myns::time&amp;gt;(2.0f);
        // the following line would fail at compile time
        //quantity&amp;lt;float, length&amp;gt; l = quantity&amp;lt;float, length&amp;gt;(5.0f) / quantity&amp;lt;float, myns::time&amp;gt;(2.0f);
        std::cout &amp;lt;&amp;lt; &quot;result: &quot; &amp;lt;&amp;lt; v.value() &amp;lt;&amp;lt; std::endl;
    }

    {
        // f = f + m * a
        quantity&amp;lt;float, force&amp;gt; f = quantity&amp;lt;float, force&amp;gt;(5.0f)
            + (quantity&amp;lt;float, mass&amp;gt;(2.0f) * quantity&amp;lt;float, acceleration&amp;gt;(3.0f));
        std::cout &amp;lt;&amp;lt; &quot;result: &quot; &amp;lt;&amp;lt; f.value() &amp;lt;&amp;lt; std::endl;
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/703' rel='bookmark' title='Permanent Link: C++编译期间对类型的计算'&gt;C++编译期间对类型的计算&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/742' rel='bookmark' title='Permanent Link: VC编译器的BUG: float ** 变成了 float *?!'&gt;VC编译器的BUG: float ** 变成了 float *?!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/591' rel='bookmark' title='Permanent Link: OpenCL，并行计算模型的统一'&gt;OpenCL，并行计算模型的统一&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/661' rel='bookmark' title='Permanent Link: 听大师弹奏吉他小品'&gt;听大师弹奏吉他小品&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/769' rel='bookmark' title='Permanent Link: DIY了一台 Tesla C870 机器'&gt;DIY了一台 Tesla C870 机器&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872519/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1020&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872519/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872519/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1020/feed</wfw:commentRss><slash:comments>1</slash:comments><description>继续阅读《C++ Meta Programming》这本书。在上一篇日志里，我初步了解了编译期的 metafunction 的使用，然而对何时使用类型的计算仍然不是很清晰。而在这本书的第三章里，作者为我们举了一个非常合适的例子，那就是，科学物理计算程序中，对于单位的纠错。
我们知道，在物理计算中，很多单位是由基础的物理单位符合而成，如速度单位可以表示为距离除以时间，密度单位可以表示为质量除以体积。这个例子中使用的就是牛顿第二定律中对于力的定义：f=ma，即，力等于质量乘以加速度，而其中，加速度单位又可以进一步表示为距离除以时间的平方。
在物理中，七种单位是最基本的：mass, length, time, charge, temperature, intensity, angle，其他的物理单位都可以表示为这7种单位的组合。那么，对于这七种单位以及其演变出的无穷无尽的单位，我们是无法在C++语言里为他们一一定义一个class，那么，对于很多物理计算，单位的检查就将变得非常麻烦，因为没有了类型，光是数值计算无法进行类型的纠错。比如你想求得一个力的单位 f ，然而你却将质量乘以了速度，而不是加速度，那么程序上，这样的错误是无法鉴别的，因为他们的类型都是 float 或者 double。
metaprogramming 在这种情况下就能很好地发挥作用，因为，这些基础单位无论如何组合，都可以表示为指数形式，如 f=ma=m*l/t/t，即质量的1次方加上距离的1次方加上时间的-2次方。
在 metaprogramming 里，作者使用 mpl::vector_c 来表示 7 种基本单位（外加一个数量，即没有单位）：
typedef mpl::vector_c&amp;#60;int, 0, 0, 0, 0, 0, 0, 0&amp;#62; scalar;
typedef mpl::vector_c&amp;#60;int, 1, 0, 0, 0, 0, 0, 0&amp;#62; mass;
typedef mpl::vector_c&amp;#60;int, 0, 1, 0, 0, 0, 0, 0&amp;#62; length;
typedef mpl::vector_c&amp;#60;int, 0, 0, 1, [...]&lt;img src=&quot;http://www1.feedsky.com/t1/295872519/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1020&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872519/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872519/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>编程与开发平台</category><category>mpl</category><category>metaprogramming</category><pubDate>Sun, 20 Sep 2009 19:15:03 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1020#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1020</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1020</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872519/5297329</fs:itemid></item><item><title>Fun Dive in Kao Tao</title><link>http://blog.ipattern.org/archives/1014</link><content:encoded>&lt;p&gt;从泰国回来快2个月了，自己排的视频都没有时间整理，先放一个当时在道岛潜水时拍摄的视频。&lt;/p&gt;
&lt;p&gt;当时我们在 Budda view 学习 PADI OpenWater 的时候，本来想雇人拍摄上课的情形的，可是学校的摄影师生病了，没有办法，我只有自己出去找，找到了这家 Crystal Dive resort 的，他们专门有个摄影公司，叫 deepdown ，还不错。&lt;/p&gt;
&lt;p&gt;于是上午出海，在 White Rock 潜点潜了一次，起来后天色大变，开始下起了雨，无法去更远的春蓬潜点，只有又跑到去了好几次的 Japanese Garden 潜。下午没事，在道岛上最大的 Sariee Beach 晒了一下午太阳，无非就是吃喝、睡觉、看美女。傍晚，骑着摩托车来的 Crystal 的海边酒吧，他们架起了投影仪，白天一船出海的人都坐在酒吧，喝着酒，看大家上午拍摄的视频，笑声不断。其中他们教练让他们在水底练习摘面镜时还让他们每人带上一幅墨镜拍照，真是很有趣的。我们的 DM Steph 也洗了澡跑过来，说今天我们拍的视频很有趣，她准备拿一张回去，呵呵。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1014&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/F7Yl2pqcmRI&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.tudou.com/v/F7Yl2pqcmRI&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;550&quot; height=&quot;420&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;


&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/982' rel='bookmark' title='Permanent Link: 到泰国上山下海之道岛清迈之旅'&gt;到泰国上山下海之道岛清迈之旅&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/924' rel='bookmark' title='Permanent Link: 藏北草原村庄'&gt;藏北草原村庄&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/935' rel='bookmark' title='Permanent Link: 夜泊西塘'&gt;夜泊西塘&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/980' rel='bookmark' title='Permanent Link: [转载] 中国人吃狗肉和泰国人娶两个老婆'&gt;[转载] 中国人吃狗肉和泰国人娶两个老婆&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1043' rel='bookmark' title='Permanent Link: 2009 in PAI &amp;#8211; 我们的纪念日'&gt;2009 in PAI &amp;#8211; 我们的纪念日&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872520/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1014&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872520/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872520/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1014/feed</wfw:commentRss><slash:comments>4</slash:comments><description>从泰国回来快2个月了，自己排的视频都没有时间整理，先放一个当时在道岛潜水时拍摄的视频。
当时我们在 Budda view 学习 PADI OpenWater 的时候，本来想雇人拍摄上课的情形的，可是学校的摄影师生病了，没有办法，我只有自己出去找，找到了这家 Crystal Dive resort 的，他们专门有个摄影公司，叫 deepdown ，还不错。
于是上午出海，在 White Rock 潜点潜了一次，起来后天色大变，开始下起了雨，无法去更远的春蓬潜点，只有又跑到去了好几次的 Japanese Garden 潜。下午没事，在道岛上最大的 Sariee Beach 晒了一下午太阳，无非就是吃喝、睡觉、看美女。傍晚，骑着摩托车来的 Crystal 的海边酒吧，他们架起了投影仪，白天一船出海的人都坐在酒吧，喝着酒，看大家上午拍摄的视频，笑声不断。其中他们教练让他们在水底练习摘面镜时还让他们每人带上一幅墨镜拍照，真是很有趣的。我们的 DM Steph 也洗了澡跑过来，说今天我们拍的视频很有趣，她准备拿一张回去，呵呵。




相关文章到泰国上山下海之道岛清迈之旅藏北草原村庄夜泊西塘[转载] 中国人吃狗肉和泰国人娶两个老婆2009 in PAI &amp;#8211; 我们的纪念日&lt;img src=&quot;http://www1.feedsky.com/t1/295872520/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1014&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872520/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872520/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>旅游与户外</category><category>稻岛</category><category>潜水</category><category>道岛</category><pubDate>Wed, 09 Sep 2009 19:35:15 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1014#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1014</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1014</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872520/5297329</fs:itemid></item><item><title>使用Qt+VTK做了一个简单的曲面可视化</title><link>http://blog.ipattern.org/archives/1007</link><content:encoded>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/surface_viewer.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-1008&quot; title=&quot;surface_viewer&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/surface_viewer-300x250.png&quot; alt=&quot;surface_viewer&quot; width=&quot;300&quot; height=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这几天捣鼓 Qt+VTK ，发现 Qt 确实很好用啊，尤其是那个 signal + slot 的机制，再配上一个轻量级的 designer ，正是我所喜欢的轻量级开发工具。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span id=&quot;more-1007&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/dev.png&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;size-medium wp-image-1009 aligncenter&quot; title=&quot;dev&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/dev-300x277.png&quot; alt=&quot;dev&quot; width=&quot;300&quot; height=&quot;277&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我的开发，编辑器用 UltraEdit ，编译器用 msvc 8.0，编译工程用 scons ，界面开发就用 Qt 自带的 designer，为了加速编译，还是用上了 incredibuild。&lt;/p&gt;
&lt;p&gt;这次我解决的问题主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将 Qt 的工具整合进 scons 系统，这样，moc 和 uic 都自动进行，非常方便；&lt;/li&gt;
&lt;li&gt;由于我是要开发一个库，而不是一个 GUI 应用程序，所以标准的 Qt 模式不能使用，所有的 Qt 对象，都必须在同一个线程内创建，即你不能在线程1执行 QApplication app(); 而在线程二执行 QWidget * window = new QWidget(0); 于是，我自己封装了一个框架，将所有 Qt 的东西都移到了一个单独的现场进行管理，通过 postEvent() 这个方法，以及一个扩展的 QEvent 来进行 GUI 的操作。postEvent() 在文档里写明了的，是 thread-safe 的，但是 sendEvent 就没有说明是 thread-safe 了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关于具体的内容，容我以后再写吧，呵呵。&lt;/p&gt;
&lt;a href=&quot;javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://blog.ipattern.org/wp-content/plugins/wp-piclens/mrss.php?id=1007'});&quot;&gt;Start Slide Show with PicLens Lite &lt;img src=&quot;http://blog.ipattern.org/wp-content/plugins/wp-piclens/PicLensButton.png&quot; alt=&quot;PicLens&quot; width=&quot;16&quot; height=&quot;12&quot; border=&quot;0&quot; align=&quot;top&quot;&gt;&lt;/a&gt;

&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/920' rel='bookmark' title='Permanent Link: scons + mex: 一个临时解决方案'&gt;scons + mex: 一个临时解决方案&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/976' rel='bookmark' title='Permanent Link: 初试分布式编译系统 IncrediBuild'&gt;初试分布式编译系统 IncrediBuild&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/717' rel='bookmark' title='Permanent Link: 解决nVidia驱动无法识别显卡的问题'&gt;解决nVidia驱动无法识别显卡的问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/999' rel='bookmark' title='Permanent Link: 在 windows 下 编译 Qt + VTK'&gt;在 windows 下 编译 Qt + VTK&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/816' rel='bookmark' title='Permanent Link: Ubuntu 8.10 安装记录'&gt;Ubuntu 8.10 安装记录&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872521/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1007&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872521/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872521/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/1007/feed</wfw:commentRss><slash:comments>12</slash:comments><description>这几天捣鼓 Qt+VTK ，发现 Qt 确实很好用啊，尤其是那个 signal + slot 的机制，再配上一个轻量级的 designer ，正是我所喜欢的轻量级开发工具。

我的开发，编辑器用 UltraEdit ，编译器用 msvc 8.0，编译工程用 scons ，界面开发就用 Qt 自带的 designer，为了加速编译，还是用上了 incredibuild。
这次我解决的问题主要有：

将 Qt 的工具整合进 scons 系统，这样，moc 和 uic 都自动进行，非常方便；
由于我是要开发一个库，而不是一个 GUI 应用程序，所以标准的 Qt 模式不能使用，所有的 Qt 对象，都必须在同一个线程内创建，即你不能在线程1执行 QApplication app(); 而在线程二执行 QWidget * window = new QWidget(0); 于是，我自己封装了一个框架，将所有 Qt 的东西都移到了一个单独的现场进行管理，通过 postEvent() 这个方法，以及一个扩展的 QEvent 来进行 GUI 的操作。postEvent() 在文档里写明了的，是 thread-safe 的，但是 [...]&lt;img src=&quot;http://www1.feedsky.com/t1/295872521/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/1007&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872521/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872521/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>qt</category><category>编程与开发平台</category><category>gui</category><category>vtk</category><pubDate>Fri, 28 Aug 2009 02:37:05 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/1007#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=1007</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/1007</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872521/5297329</fs:itemid></item><item><title>在 windows 下 编译 Qt + VTK</title><link>http://blog.ipattern.org/archives/999</link><content:encoded>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1000&quot; title=&quot;qt-vtk-1&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/qt-vtk-1.png&quot; alt=&quot;qt-vtk-1&quot; width=&quot;568&quot; height=&quot;432&quot; /&gt;&lt;/p&gt;
&lt;p&gt;VTK 库提供了完善的 3D 图形接口，Qt 则提供丰富的 GUI 元素，我想将它们组合起来使用。然而默认的 VTK 编译并不支持 Qt，我们需要重新编译。大致过程是：先编译 Qt，然后编译支持 Qt 的 VTK，然后用 VTK 里的 Example 来测试。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-999&quot;&gt;&lt;/span&gt;首先下载 Qt 源码。然而我在其官方网站 &lt;a href=&quot;http://qt.nokia.com&quot; target=&quot;_blank&quot;&gt;http://qt.nokia.com&lt;/a&gt; 里看到的都是预编译好的，而且是用 MingW 编译的，而我希望使用 MSVC2005 来编译。找了半天，在 &lt;a href=&quot;ftp://ftp.trolltech.com/qt/source/&quot;&gt;ftp://ftp.trolltech.com/qt/source/&lt;/a&gt; 这个目录下找到了各个版本的源代码，我选择下载了 qt-win-opensource-src-4.5.2.zip 。&lt;/p&gt;
&lt;p&gt;编译前说说我的目录组织，我的源代码都在 E:\dev 目录下，而编译好的库一般放在 E:\win\lib 下，于是我将源代码解压到 E:\dev\qt-win-opensource-src-4.5.2 目录下，并将安装目录设置为 E:\win\lib\Qt-4.5.2-VC80 。&lt;/p&gt;
&lt;p&gt;然而，Qt 的 Windows 编译使用其自带的 qmake （也是先由源码编译出来的），如果我们要设置安装目录 （prefix），则需要先手动解决一个 bug。我们先创建目标安装目录 Qt-4.5.2-VC80，然后从源代码目录里将 mkspecs 整个目录拷贝到 Qt-4.5.2-VC80 目录里，否则将无法顺利进行编译。这个 mkspecs 目录下其实是 qmake 使用的各个编译器的参数，按道理不需要拷贝，但我估计这是 Qt 项目的一个 Bug。&lt;/p&gt;
&lt;p&gt;准备好安装目录后，进入 qt-win-opensource-src-4.5.2 源代码目录，执行：&lt;/p&gt;
&lt;pre&gt;] configure -release -opensource -no-webkit -no-qt3support \
  -prefix E:\win\lib\Qt-4.5.2-VC80 -platform win32-msvc2005&lt;/pre&gt;
&lt;p&gt;-no-webkit 关闭 webkit 的支持，因为这个编译好像有问题；-prefix 用来指定目标安装目录；-platform 用来指定你的编译器，其实系统也会自己查找的，不过我的机器上同时安装了 MSVC2005 和 2008，所以我必须制定一个。&lt;/p&gt;
&lt;p&gt;配置需要用很长的时间，configure 也有很多参数，你可以参考 configure -help，一下是 configure 执行时显示的信息，你也可以自己对照着来调整编译参数：&lt;/p&gt;
&lt;pre&gt;You are licensed to use this software under the terms of the GNU GPL version 3.Y
ou are licensed to use this software under the terms of the Lesser GNU LGPL vers
ion 2.1.
See E:/dev/qt-win-opensource-src-4.5.23

 or E:/dev/qt-win-opensource-src-4.5.2L

Configuration:
 dist-config
 large-config
 medium-config
 minimal-config
 small-config
 full-config
 release
Qt Configuration:
 release
 zlib
 png
 accessibility
 opengl
 openssl
 ipv6
 scripttools
 xmlpatterns
 svg
 minimal-config
 small-config
 medium-config
 large-config
 full-config

QMAKESPEC...................win32-msvc2005 (commandline)
Architecture................windows
Maketool....................nmake
Debug symbols...............no
Link Time Code Generation...no
Accessibility support.......yes
STL support.................yes
Exception support...........yes
RTTI support................yes
MMX support.................yes
3DNOW support...............yes
SSE support.................yes
SSE2 support................yes
IWMMXT support..............no
OpenGL support..............yes
Direct3D support............no
OpenSSL support.............yes
QtDBus support..............no
QtXmlPatterns support.......yes
Phonon support..............no
WebKit support..............no
QtScriptTools support.......yes
Graphics System.............raster
Qt3 compatibility...........no

Third Party Libraries:
 ZLIB support............qt
 GIF support.............plugin
 TIFF support............plugin
 JPEG support............plugin
 PNG support.............qt
 MNG support.............plugin

Styles:
 Windows.................yes
 Windows XP..............yes
 Windows Vista...........yes
 Plastique...............yes
 Cleanlooks..............yes
 Motif...................yes
 CDE.....................yes
 Windows CE..............no
 Windows Mobile..........no

Sql Drivers:
 ODBC....................no
 MySQL...................no
 OCI.....................no
 PostgreSQL..............no
 TDS.....................no
 DB2.....................no
 SQLite..................plugin (qt)
 SQLite2.................no
 InterBase...............no

Sources are in..............E:\dev\qt-win-opensource-src-4.5.2
Build is done in............E:\dev\qt-win-opensource-src-4.5.2
Install prefix..............E:\win\lib\Qt-4.5.2-VC80
Headers installed to........E:\win\lib\Qt-4.5.2-VC80\include
Libraries installed to......E:\win\lib\Qt-4.5.2-VC80\lib
Plugins installed to........E:\win\lib\Qt-4.5.2-VC80\plugins
Binaries installed to.......E:\win\lib\Qt-4.5.2-VC80\bin
Docs installed to...........E:\win\lib\Qt-4.5.2-VC80\doc
Data installed to...........E:\win\lib\Qt-4.5.2-VC80
Translations installed to...E:\win\lib\Qt-4.5.2-VC80\translations
Examples installed to.......E:\win\lib\Qt-4.5.2-VC80\examples
Demos installed to..........E:\win\lib\Qt-4.5.2-VC80\demos

Using IncrediBuild XGE......yes
Creating qmake...&lt;/pre&gt;
&lt;p&gt;configure 完成后，你可以使用 nmake 和 nmake install 来编译和安装 （当然是从 MSVC2005 的命令行里）。如果你的配置不正确，可以使用 nmake confclean 然后再重新执行 configure。编译完后，所以头文件，可执行文件以及库文件都将被拷贝到你的 Qt-4.5.2-VC80 目标目录里，请马上将这些参数设置进你的环境变量：PATH, INCLUDE 和 LIB ，以方便下面的操作。&lt;/p&gt;
&lt;p&gt;接下来开始搞 VTK ，下载源码 vtk-5.4.2.zip ，同时也要下载 vtk-5.4.2-data.zip ，这个 data 包包括了在 Example 里的测试程序所使用的数据（比如3D模型什么的），方便你以后把玩 Example。我将这两个包都解压到我的源代码目录 E:\dev 下： vtk-5.4.2 和 vtk-5.4.2-data ，然后将环境变量 VTK_DATA_ROOT 设置到 vtk-5.4.2-data 目录，在 CMake 的时候会检查这个环境变量的。&lt;/p&gt;
&lt;p&gt;接下来，就是最重要的步骤了，用 cmake 来配置：&lt;/p&gt;
&lt;pre&gt;E:\dev\vtk-5.4.2-src&amp;gt;cmake \
                     -DCMAKE_INSTALL_PREFIX:PATH=E:\win\lib\VTK-5.4.2-VC80 \
                     -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_TESTING:BOOL=ON \
                     -DBUILD_EXAMPLES:BOOL=ON -DVTK_USE_GUISUPPORT:BOOL=ON \
                     -DVTK_USE_QVTK:BOOL=ON -DDESIRED_QT_VERSION:STRING=4 \
                     -G &quot;Visual Studio 8 2005&quot; .&lt;/pre&gt;
&lt;p&gt;在这个配置中，目标目录设置到了 VTK-5.4.2-VC80。接下来，打开了5个开关：BUILD_SHARED_LIBS、BUILD_TESTING、BUILD_EXAMPLES、VTK_USE_GUISUPPORT、VTK_USE_QVTK ，最后还设置了一个 DESIRED_QT_VERSION。&lt;/p&gt;
&lt;p&gt;在执行完 cmake 后，我们可以看到，我们编译的 Qt 被找到了（前提是你的INCLUDE路径能找到你编译的Qt）：&lt;/p&gt;
&lt;pre&gt;-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.5.2
-- Configuring done
-- Generating done
-- Build files have been written to: E:/dev/vtk-5.4.2&lt;/pre&gt;
&lt;p&gt;接下来，用 MSVC2005 打开在该目录下生成的 VTK.sln 文件，编译 ALL_BUILD 、 INSTALL 、VTKExamplesTarget 这三个目标。然后将你的目标路径设置进 PATH, INCLUDE 和 LIB 这三个环境变量里。&lt;/p&gt;
&lt;p&gt;关闭 VTK.sln，最后，进入 vtk-5.4.2\Examples\All 目录，打开 VTKExamples.sln，编译执行 qtevents，qtimageviewer，qtsimpleview 这三个测试项目，就可以看见在Qt面板上运行的 VTKRenderWindow 啦！。&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-1001&quot; title=&quot;qt-vtk-2&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/qt-vtk-2.png&quot; alt=&quot;qt-vtk-2&quot; width=&quot;450&quot; height=&quot;395&quot; /&gt;&lt;/p&gt;
&lt;p&gt;注意，我在执行 example 的时候，遇到了错误，后来仔细分析了 dll 的载入信息，发现 MATLAB 自带一堆 dll，里面就有 Qt dll ，无奈，只有将 MATLAB\bin\win32 下的 Qt 相关 dll 暂时删除，才能使用，而且我测试了， MATLAB 用我编译出的 Qt Dll 也是好用的，所以，如果有任何运行问题，仔细检查你的系统环境。&lt;/p&gt;
&lt;a href=&quot;javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://blog.ipattern.org/wp-content/plugins/wp-piclens/mrss.php?id=999'});&quot;&gt;Start Slide Show with PicLens Lite &lt;img src=&quot;http://blog.ipattern.org/wp-content/plugins/wp-piclens/PicLensButton.png&quot; alt=&quot;PicLens&quot; width=&quot;16&quot; height=&quot;12&quot; border=&quot;0&quot; align=&quot;top&quot;&gt;&lt;/a&gt;

&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/874' rel='bookmark' title='Permanent Link: 在 WIN32 平台下完整编译 ZeroC ICE 3.3.1'&gt;在 WIN32 平台下完整编译 ZeroC ICE 3.3.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/591' rel='bookmark' title='Permanent Link: OpenCL，并行计算模型的统一'&gt;OpenCL，并行计算模型的统一&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/703' rel='bookmark' title='Permanent Link: C++编译期间对类型的计算'&gt;C++编译期间对类型的计算&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/849' rel='bookmark' title='Permanent Link: Ubuntu 下使用远程桌面连接 rdesktop'&gt;Ubuntu 下使用远程桌面连接 rdesktop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1007' rel='bookmark' title='Permanent Link: 使用Qt+VTK做了一个简单的曲面可视化'&gt;使用Qt+VTK做了一个简单的曲面可视化&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872522/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/999&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872522/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872522/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/999/feed</wfw:commentRss><slash:comments>3</slash:comments><description>VTK 库提供了完善的 3D 图形接口，Qt 则提供丰富的 GUI 元素，我想将它们组合起来使用。然而默认的 VTK 编译并不支持 Qt，我们需要重新编译。大致过程是：先编译 Qt，然后编译支持 Qt 的 VTK，然后用 VTK 里的 Example 来测试。
首先下载 Qt 源码。然而我在其官方网站 http://qt.nokia.com 里看到的都是预编译好的，而且是用 MingW 编译的，而我希望使用 MSVC2005 来编译。找了半天，在 ftp://ftp.trolltech.com/qt/source/ 这个目录下找到了各个版本的源代码，我选择下载了 qt-win-opensource-src-4.5.2.zip 。
编译前说说我的目录组织，我的源代码都在 E:\dev 目录下，而编译好的库一般放在 E:\win\lib 下，于是我将源代码解压到 E:\dev\qt-win-opensource-src-4.5.2 目录下，并将安装目录设置为 E:\win\lib\Qt-4.5.2-VC80 。
然而，Qt 的 Windows 编译使用其自带的 qmake （也是先由源码编译出来的），如果我们要设置安装目录 （prefix），则需要先手动解决一个 bug。我们先创建目标安装目录 Qt-4.5.2-VC80，然后从源代码目录里将 mkspecs 整个目录拷贝到 Qt-4.5.2-VC80 目录里，否则将无法顺利进行编译。这个 mkspecs 目录下其实是 qmake 使用的各个编译器的参数，按道理不需要拷贝，但我估计这是 Qt [...]&lt;img src=&quot;http://www1.feedsky.com/t1/295872522/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/999&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872522/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872522/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>qt</category><category>编程与开发平台</category><category>msvc</category><category>vtk</category><pubDate>Mon, 24 Aug 2009 16:47:05 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/999#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=999</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/999</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872522/5297329</fs:itemid></item><item><title>出手一块 GTX 260+ 显卡</title><link>http://blog.ipattern.org/archives/985</link><content:encoded>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-986&quot; title=&quot;p1020698&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020698.jpg&quot; alt=&quot;p1020698&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;卡的包装­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span id=&quot;more-985&quot;&gt;&lt;/span&gt;&lt;img class=&quot;alignnone size-full wp-image-987&quot; title=&quot;p1020700&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020700.jpg&quot; alt=&quot;p1020700&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;居然送手套，囧­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-988&quot; title=&quot;p1020703&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020703.jpg&quot; alt=&quot;p1020703&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;驱动光盘不用，直接下载nvidia官方最新驱动即可，送的 far cry 2，打开 DX10 效果还是不错，就是打得我头昏脑胀。­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-989&quot; title=&quot;p1020705&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020705.jpg&quot; alt=&quot;p1020705&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这卡很重，看来用料很足，和我拆下来的 Tesla 稍微小点，也算巨型卡了吧。据说里面是铜质散热片­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-990&quot; title=&quot;p1020706&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020706.jpg&quot; alt=&quot;p1020706&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;背面也有铁板散热，不错­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-991&quot; title=&quot;p1020708&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020708.jpg&quot; alt=&quot;p1020708&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p&gt;为了带动它，不得不换了个好点的电源，500W，600块。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-992&quot; title=&quot;p1020709&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020709.jpg&quot; alt=&quot;p1020709&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;密密麻麻的线啊。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-993&quot; title=&quot;p1020716&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020716.jpg&quot; alt=&quot;p1020716&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;确实很厚啊，我的板子插了这个就别想再插其他卡了：（&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-994&quot; title=&quot;p1020711&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/p1020711.jpg&quot; alt=&quot;p1020711&quot; width=&quot;550&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;机箱，后来发现太热了，还补了个机箱散热风扇。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-995&quot; title=&quot;cuda1&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/cuda1.jpg&quot; alt=&quot;cuda1&quot; width=&quot;640&quot; height=&quot;640&quot; /&gt;&lt;/p&gt;
&lt;p&gt;用CUDA测试，版本是1.3的，支持双精度计算。216个流处理器也很不错，比起来，板载的那块真是很垃圾啊。玩 FSX  效果全开（不开DX10）基本在25-40帧之间。­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-996&quot; title=&quot;fluids&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/fluids.jpg&quot; alt=&quot;fluids&quot; width=&quot;520&quot; height=&quot;546&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;执行CUDA fluidGL ，基本在60-90帧之间，偶尔也能上到100帧以上，表现不输于之前的 Tesla C870，何况 C870 还不支持双精度。­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-997&quot; title=&quot;temperature&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/temperature.jpg&quot; alt=&quot;temperature&quot; width=&quot;515&quot; height=&quot;646&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;装了个机箱风扇，主板温度稳定在45-50之间，这块显卡的散热还不错，闲置时都在50多度，玩游戏时到60多度。­&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://blog.ipattern.org/wp-content/plugins/wp-piclens/mrss.php?id=985'});&quot;&gt;Start Slide Show with PicLens Lite &lt;img src=&quot;http://blog.ipattern.org/wp-content/plugins/wp-piclens/PicLensButton.png&quot; alt=&quot;PicLens&quot; width=&quot;16&quot; height=&quot;12&quot; border=&quot;0&quot; align=&quot;top&quot;&gt;&lt;/a&gt;

&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/751' rel='bookmark' title='Permanent Link: 为 Tesla 卡选了一块主板'&gt;为 Tesla 卡选了一块主板&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/769' rel='bookmark' title='Permanent Link: DIY了一台 Tesla C870 机器'&gt;DIY了一台 Tesla C870 机器&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/785' rel='bookmark' title='Permanent Link: 华硕主板的节能功能：EPU'&gt;华硕主板的节能功能：EPU&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/591' rel='bookmark' title='Permanent Link: OpenCL，并行计算模型的统一'&gt;OpenCL，并行计算模型的统一&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/724' rel='bookmark' title='Permanent Link: 松下 LX-3 效果真不错'&gt;松下 LX-3 效果真不错&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872523/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/985&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872523/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872523/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/985/feed</wfw:commentRss><slash:comments>14</slash:comments><description>卡的包装­

居然送手套，囧­

驱动光盘不用，直接下载nvidia官方最新驱动即可，送的 far cry 2，打开 DX10 效果还是不错，就是打得我头昏脑胀。­

这卡很重，看来用料很足，和我拆下来的 Tesla 稍微小点，也算巨型卡了吧。据说里面是铜质散热片­

背面也有铁板散热，不错­

为了带动它，不得不换了个好点的电源，500W，600块。

密密麻麻的线啊。

确实很厚啊，我的板子插了这个就别想再插其他卡了：（

机箱，后来发现太热了，还补了个机箱散热风扇。

用CUDA测试，版本是1.3的，支持双精度计算。216个流处理器也很不错，比起来，板载的那块真是很垃圾啊。玩 FSX  效果全开（不开DX10）基本在25-40帧之间。­

执行CUDA fluidGL ，基本在60-90帧之间，偶尔也能上到100帧以上，表现不输于之前的 Tesla C870，何况 C870 还不支持双精度。­

装了个机箱风扇，主板温度稳定在45-50之间，这块显卡的散热还不错，闲置时都在50多度，玩游戏时到60多度。­

Start Slide Show with PicLens Lite 

相关文章为 Tesla 卡选了一块主板DIY了一台 Tesla C870 机器华硕主板的节能功能：EPUOpenCL，并行计算模型的统一松下 LX-3 效果真不错&lt;img src=&quot;http://www1.feedsky.com/t1/295872523/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/985&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872523/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872523/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>GTX260+</category><category>数码与互联网应用</category><category>iGame</category><category>电源</category><category>七彩虹</category><pubDate>Tue, 11 Aug 2009 02:31:34 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/985#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=985</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/985</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872523/5297329</fs:itemid></item><item><title>到泰国上山下海之道岛清迈之旅</title><link>http://blog.ipattern.org/archives/982</link><content:encoded>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-983&quot; title=&quot;m&quot; src=&quot;http://blog.ipattern.org/wp-content/uploads/2009/08/m.jpg&quot; alt=&quot;m&quot; width=&quot;550&quot; height=&quot;310&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;从泰国玩回来了，很爽，先去南部的道岛（Ko Tao）学潜水，考得OpenWater证书，然后去北部的清迈和PAI玩，发图都发了我一个礼拜，地址在&lt;a href=&quot;http://fbfb.groups.tianya.cn/bulo/ShowArticle.asp?idWriter=107120&amp;amp;Key=714264965&amp;amp;buloid=6767&amp;amp;ArticleID=635999&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt;，海量图片：）&lt;/p&gt;
&lt;a href=&quot;javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://blog.ipattern.org/wp-content/plugins/wp-piclens/mrss.php?id=982'});&quot;&gt;Start Slide Show with PicLens Lite &lt;img src=&quot;http://blog.ipattern.org/wp-content/plugins/wp-piclens/PicLensButton.png&quot; alt=&quot;PicLens&quot; width=&quot;16&quot; height=&quot;12&quot; border=&quot;0&quot; align=&quot;top&quot;&gt;&lt;/a&gt;

&lt;p&gt;相关文章&lt;ol&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/924' rel='bookmark' title='Permanent Link: 藏北草原村庄'&gt;藏北草原村庄&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1014' rel='bookmark' title='Permanent Link: Fun Dive in Kao Tao'&gt;Fun Dive in Kao Tao&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/980' rel='bookmark' title='Permanent Link: [转载] 中国人吃狗肉和泰国人娶两个老婆'&gt;[转载] 中国人吃狗肉和泰国人娶两个老婆&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/1043' rel='bookmark' title='Permanent Link: 2009 in PAI &amp;#8211; 我们的纪念日'&gt;2009 in PAI &amp;#8211; 我们的纪念日&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://blog.ipattern.org/archives/935' rel='bookmark' title='Permanent Link: 夜泊西塘'&gt;夜泊西塘&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/295872524/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/982&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872524/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872524/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.ipattern.org/archives/982/feed</wfw:commentRss><slash:comments>9</slash:comments><description>从泰国玩回来了，很爽，先去南部的道岛（Ko Tao）学潜水，考得OpenWater证书，然后去北部的清迈和PAI玩，发图都发了我一个礼拜，地址在这里，海量图片：）
Start Slide Show with PicLens Lite 

相关文章藏北草原村庄Fun Dive in Kao Tao[转载] 中国人吃狗肉和泰国人娶两个老婆2009 in PAI &amp;#8211; 我们的纪念日夜泊西塘&lt;img src=&quot;http://www1.feedsky.com/t1/295872524/soloman817/feedsky/s.gif?r=http://blog.ipattern.org/archives/982&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/soloman817/295872524/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/soloman817/295872524/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>旅游与户外</category><category>清迈</category><category>潜水</category><category>PAI</category><category>道岛</category><category>泰国</category><pubDate>Sun, 02 Aug 2009 21:29:19 +0800</pubDate><author>Soloman</author><comments>http://blog.ipattern.org/archives/982#comments</comments><guid isPermaLink="false">http://blog.ipattern.org/?p=982</guid><dc:creator>Soloman</dc:creator><fs:srclink>http://blog.ipattern.org/archives/982</fs:srclink><fs:srcfeed>http://blog.ipattern.org/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/soloman817/~7188319/295872524/5297329</fs:itemid></item></channel></rss>