<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7444802</id><updated>2012-02-16T19:07:35.860-08:00</updated><category term='SAGE'/><category term='vc8'/><title type='text'>Codes of Magi...</title><subtitle type='html'>低沉的吟唱，无谓的思考；
代码的累牍，轮子的重造。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7444802.post-5946849011857416176</id><published>2007-03-15T01:08:00.000-07:00</published><updated>2007-03-15T01:40:57.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAGE'/><title type='text'>模版分离重载</title><content type='html'>用Boost::bind可以实现很多匪夷所思的绑定，比如将不同类型的参数绑定到一个函数上。在SAGE的回调函数中，希望能提供一个尽量统一的接口，使得用户可以使用function/member function来作为回调函数，回调函数的参数可以是各种类型，SAGE 将自动从输入流中读取该类型的数据并传回给回调函数。&lt;br /&gt;本来想用function1&lt;void,&gt;来包装回调函数，以为可以轻松搞定。结果发现当T=void时，不能定义void类型的变量并作为形参……编译出错&lt;br /&gt;苦思冥想了半天，终于用bind绑定函数，然后将bind的返回对象bind_t&lt;r,f,l&gt;进行分离重载，重载成L=boost::_bi::list0和list1两个函数，终于搞定。&lt;br /&gt;然后想用同样的方法bind绑定member function，再分离重载……谁又知member function(void)和function(T)都是L=boost::_bi::list1这样的形式……然后再苦思冥想分离……&lt;br /&gt;最后：&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;void BindedCall( boost::_bi::bind_t〈R, F, boost::_bi::list0〉 Func )&lt;/span&gt;   // function(void), 不读入&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;void BindedCall( boost::_bi::bind_t〈R, F, boost::_bi::list1〈boost::arg〈1〉〉〉 Func )&lt;/span&gt;   // function(T), 读入&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;void BindedCall( boost::_bi::bind_t〈R, F, boost::_bi::list1〈boost::reference_wrapper〈REFT〉〉〉 Func )&lt;/span&gt;   // member function(void), 不读入&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;void BindedCall( boost::_bi::bind_t〈R, F, boost::_bi::list2〈A1,A2〉〉 Func )&lt;/span&gt;   // member function(T)，读入&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;这4种形式&lt;br /&gt;知道这并不好看，将就着吧。&lt;br /&gt;&lt;br /&gt;分离的模版具体方法参见 boost::bind 和 boost::bind_t Ref:http://blog.csdn.net/lyskyly/archive/2006/10/28/1354273.aspx&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-5946849011857416176?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/5946849011857416176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=5946849011857416176' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/5946849011857416176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/5946849011857416176'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2007/03/blog-post.html' title='模版分离重载'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-9210788031462617729</id><published>2007-03-13T04:02:00.000-07:00</published><updated>2007-03-13T04:19:21.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vc8'/><title type='text'>VS2005 编译后在其他机器中不能正常载入msvcp80.dll</title><content type='html'>FAT32清单文件的问题早就提过，就不说了。&lt;br /&gt;vcredist 发布包也早装了，也不管用。&lt;br /&gt;曾经的问题再度困扰着我。&lt;br /&gt;&lt;br /&gt;在痛苦了一天之后，终于明白了，因为我曾安装了VS2005 SP1 !!!&lt;br /&gt;该死的微软，在安装vs2005 sp1后，dll的版本号也从8.0.50727.42变成了8.0.50727.762，在WinSxS目录下的位置自然也变化了。而竟然，vcredist发布包只提供到.42的版本，所以sp1编译出来的东西自然就找不到dll了。&lt;br /&gt;该死的微软是不是忘记更新这个vc发布包了？我们难道要傻等么？&lt;br /&gt;其实可以这样：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;将Windows\WinSxS下对应的目录（如x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700）都copy到目标机器的WinSxS下&lt;/li&gt;&lt;li&gt;将Windows\WinSxS\Manifests下对应的.manifest和.cat文件copy到目标机器的WinSxS\Manifests下&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;无论如何，VS2005是令我最头痛的一个vs版本&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-9210788031462617729?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/9210788031462617729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=9210788031462617729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/9210788031462617729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/9210788031462617729'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2007/03/vs2005-msvcp80dll.html' title='VS2005 编译后在其他机器中不能正常载入msvcp80.dll'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-6494012606195866936</id><published>2007-03-13T01:21:00.000-07:00</published><updated>2007-03-13T04:18:50.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vc8'/><title type='text'>Boost : VC8 : x64 编译</title><content type='html'>Boost 1_33_1 thread库要在VC8下编译为amd64版本, 搜了一下发现问题挺多，而且没什么中文资料。&lt;br /&gt;废话少说&lt;br /&gt;&lt;ol&gt;&lt;li&gt;修改libs/threads/src/once.cpp, 将 &lt;em&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;return ice_wrapper(&amp;InterlockedCompareExchange, dest, exch, cmp);&lt;/span&gt;&lt;/em&gt; ==&gt; &lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;return InterlockedCompareExchange(dest, exch, cmp); &lt;/span&gt;&lt;/em&gt;&lt;span style="font-size:100%;"&gt;因为Win64下InterlockedCompareExchange成为了intrinsic function&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;vc-8_0-x86_amd64-tools.jam中修改成： &lt;span style="font-size:85%;color:#3333ff;"&gt;&lt;em&gt;VC_SETUP = "CALL \"$(VC_TOOL_PATH)\\VCVARSx86_amd64.bat\" &gt;nul" ;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;在thread目录下run: &lt;span style="font-size:85%;"&gt;&lt;em&gt;..\..\..\..\bjam -sTOOLS="vc-8_0-x86_amd64" -sBUILD="release debug multi/single static/dynamic"&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Reference:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://article.gmane.org/gmane.comp.lib.boost.threads.devel/13"&gt;&lt;span style="font-size:100%;"&gt;http://article.gmane.org/gmane.comp.lib.boost.threads.devel/13&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.allexperts.com/q/C-1040/Building-boost-libraries-64.htm"&gt;http://en.allexperts.com/q/C-1040/Building-boost-libraries-64.htm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://steve.chinavfx.net/?p=22"&gt;http://steve.chinavfx.net/?p=22&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-6494012606195866936?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/6494012606195866936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=6494012606195866936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/6494012606195866936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/6494012606195866936'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2007/03/boost-vc8-x64.html' title='Boost : VC8 : x64 编译'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-4911264155978701397</id><published>2007-03-01T03:54:00.000-08:00</published><updated>2007-03-01T04:08:04.676-08:00</updated><title type='text'>SAGE 1 核心底层70%完工</title><content type='html'>呼，接下去最大的困难是Linux环境下的调试了。不知道那个底层够不够健壮。&lt;br /&gt;&lt;br /&gt;顺便提一下碰到的DLL包装上的问题。&lt;br /&gt;一开始生成.dll却不生成.exp和.lib导入库，最后搜破头，终于发现犯了小白错误&lt;br /&gt;没有__declspec(dllexport)定义dll的调用接口。然后写上了发现出来一堆warning，最后排到后来是STL的数据也需要dllexport……这个怎么弄……。最后网上搜了半天还是disable warning的解决方案。&lt;br /&gt;所以Windows下DLL包装要：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;# define SAGE_DECLSPEC_IMPORT __declspec(dllimport)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;# define SAGE_DECLSPEC_EXPORT __declspec(dllexport)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;# define SAGE_API SAGE_DECLSPEC_EXPORT&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;#pragma warning (disable : 4251)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;其中C4251是STL需要dllexport的警告，如果显式声明就要把STL里几乎所有的东西都声明一次了……。哎，c++还是不够美啊，只能粉饰太平眼不见为净了。&lt;br /&gt;而Linux下包装DLL估计就要写DEF文件了……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-4911264155978701397?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/4911264155978701397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=4911264155978701397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/4911264155978701397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/4911264155978701397'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2007/03/sage-1-70.html' title='SAGE 1 核心底层70%完工'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684735980623676</id><published>2006-12-22T20:15:00.000-08:00</published><updated>2006-12-22T20:15:59.806-08:00</updated><title type='text'>整理：ICE Log: Hello Demo client runtime error</title><content type='html'>Hello Demo client runtime error:&lt;br /&gt;Problem:&lt;br /&gt;jump a debug runtime error when invoking remote "helloword()"&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;Enable RTTI in VC project. In 配置属性 - C/C++ - 语言 - 启用运行时类型信息&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;a href="http://www.zeroc.com/vbulletin/archive/index.php/t-844.html" s_oidt="0" s_oid="http://www.zeroc.com/vbulletin/archive/index.php/t-844.html"&gt;http://www.zeroc.com/vbulletin/archive/index.php/t-844.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684735980623676?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684735980623676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684735980623676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684735980623676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684735980623676'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/ice-log-hello-demo-client-runtime.html' title='整理：ICE Log: Hello Demo client runtime error'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684730602430974</id><published>2006-12-22T20:12:00.000-08:00</published><updated>2006-12-22T20:15:06.023-08:00</updated><title type='text'>整理：ICE Log: Hello Demo run failure</title><content type='html'>Hello Demo run failure:&lt;br /&gt;&lt;br /&gt;Problem:&lt;br /&gt;The ordinal 2604 could not be located in the dynamic link library LIBEAY32.dll&lt;br /&gt;&lt;br /&gt;clicking ok spits this out to the console:&lt;br /&gt;&lt;br /&gt;Quote:&lt;br /&gt;server:&lt;br /&gt; .\PluginManagerI.cpp:182: Ice::PluginInitializationException:&lt;br /&gt;plug-in initialization failed: unable to load entry point `IceSSL:create'&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;COPY libeay32.dll and ssleay32.dll from ice\bin to the working directory.&lt;br /&gt;Because Windows will use SYSTEM dll before PATH.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;a href="http://zeroc.com/vbulletin/showthread.php?t=817"&gt;http://zeroc.com/vbulletin/showthread.php?t=817&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684730602430974?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684730602430974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684730602430974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684730602430974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684730602430974'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/ice-log-hello-demo-run-failure.html' title='整理：ICE Log: Hello Demo run failure'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684711988020008</id><published>2006-12-22T20:11:00.000-08:00</published><updated>2006-12-22T20:11:59.880-08:00</updated><title type='text'>整理：Current Path of ASP.net Application</title><content type='html'>ASP.net Application invokes a native dll.&lt;br /&gt;The native dll need a conf file under Current Path. But what is the Current Path?&lt;br /&gt;It is not the directory which the native dll locates.&lt;br /&gt;Well....I found the answer is simple.&lt;br /&gt;Because asp.net app is loaded by w3wp.exe, w3wp.exe is under C:\WINDOWS\system32\inetsrv&lt;br /&gt;So the current path is C:\WINDOWS\system32\inetsrv !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684711988020008?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684711988020008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684711988020008' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684711988020008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684711988020008'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/current-path-of-aspnet-application.html' title='整理：Current Path of ASP.net Application'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684707086957933</id><published>2006-12-22T20:09:00.000-08:00</published><updated>2006-12-22T20:11:10.870-08:00</updated><title type='text'>整理：Best Practice in MS</title><content type='html'>总结一下，谈一下ms软件开发的一些best practice，个人体会&lt;br /&gt;Reference: &lt;a href="http://blog.csdn.net/shony_zhao/archive/2005/04/25/362014.aspx"&gt;http://blog.csdn.net/shony_zhao/archive/2005/04/25/362014.aspx&lt;/a&gt;&lt;br /&gt;1) 充分沟通：每个人都知道自己在干什么，也知道别人在干什么，同时一个代码由owner和一个xp式的buddy共同通晓，这样做review, buddy build都很方便，一个倒下了也不至于block。&lt;br /&gt;2) No Pure Coder：没有纯粹的执行者，每个人都有充分的空间发挥，从feature构思到design到experiment到debug，每个人都可以作为倡导者，这样就不会有边缘人的感觉了……当然除了我，呵呵。&lt;br /&gt;3) PM：PM是不懂也不管具体技术的，负责上下协调，要钱找人，控制进度，联系出行，集合玩乐，总之就是程序员们不喜欢的工作就交给PM啦。而且重要的任务还有调节男女比例，我们这里dev全是男的，2个女生PM就被捧着了，吃饭的时候明显有PM的那桌热闹。&lt;br /&gt;4) 适当文档：其实ATC里代码的注释不是很多的，大段大段没有注释的代码也不少，文档也主要是Design和Spec。但是那些代码都很容易懂，当然匈牙利命名法+好的结构。当然接口定义是很详细的。&lt;br /&gt;5) 包：什么都可以包，包一包就好了 。指针对象用栈对象一包，就不用管del，close了。c++用mc一包，去.net调。好东西啊。&lt;br /&gt;6) 统一Error Code：统一Error Code Define，统一Error Message Map，这样就不会有冲突。&lt;br /&gt;7) Feature Priority：Feature永远做不完，时间永远不够，所以定好P0,P1 ....&lt;br /&gt;想到再加&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684707086957933?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684707086957933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684707086957933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684707086957933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684707086957933'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/best-practice-in-ms.html' title='整理：Best Practice in MS'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684683195838630</id><published>2006-12-22T20:02:00.000-08:00</published><updated>2006-12-22T20:09:30.030-08:00</updated><title type='text'>整理：STL doesn't support UNICODE fully!</title><content type='html'>现在正好是写blog的时间了，因为那个按照网上的正确代码写成的程序终于开始run了。&lt;br /&gt;先说一下这是如何的一件白痴事情吧：很简单，我不过是要读一个unicode文件，然后把它里面的某几行写到另外一个文件里去罢了。&lt;br /&gt;OK, 看上去是小学生的题目，于是我准备正好练练手，试试看最近学到的standard c++的STL。&lt;br /&gt;wstring, wfstream, wchar_t.......... everything looks correct, except the answer&lt;br /&gt;好了，经过艰苦卓绝的嫌疑排查之后，疑点终于集中在wfstream上了，看上去他每次都只读写byte……（大概荒废了我一个下午）但是他是w-的啊……何况getline里面还有widen('\n')这样的操作。&lt;br /&gt;经过我失败地用C style的东西改写后，work了，看来果然是wfstream的问题，不支持Unicode。&lt;br /&gt;终于……看到变态的解释和解法了：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;using namespace std;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;typedef codecvt&lt;wchar_t,&gt; Mybase;&lt;br /&gt;    // CLASS Simple_codecvt&lt;br /&gt;class Simple_codecvt : public Mybase&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;public:    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    typedef wchar_t  _E;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    typedef char  _To;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    typedef mbstate_t _St;&lt;br /&gt;    explicit Simple_codecvt(size_t _R = 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;        : Mybase(_R) {}&lt;br /&gt;protected:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    virtual result do_in(_St&amp; _State,  const _To *_F1, const _To *_L1, const _To *&amp;amp;_Mid1,  _E *F2, _E *_L2, _E *&amp;_Mid2) const&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (noconv);}&lt;br /&gt;    virtual result do_out(_St&amp; _State,  const _E *_F1, const _E *_L1, const _E *&amp;amp;_Mid1,  _To *F2, _E *_L2, _To *&amp;_Mid2) const&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (noconv);}&lt;br /&gt;    virtual result do_unshift(_St&amp; _State,  _To *_F2, _To *_L2, _To *&amp;amp;_Mid2) const&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (noconv);}&lt;br /&gt;    virtual int do_length(_St&amp; _State, const _To *_F1,  const _To *_L1, size_t _N2) const _THROW0()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (_N2 &lt; (size_t)(_L1 - _F1)? _N2 : _L1 - _F1); }     virtual bool do_always_noconv() const _THROW0()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (true);}&lt;br /&gt;    virtual int do_max_length() const _THROW0()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (2);}&lt;br /&gt;    virtual int do_encoding() const _THROW0()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    {return (2);}&lt;br /&gt;};&lt;br /&gt;#include &lt;fstream&gt;&lt;br /&gt;int _tmain(int argc, TCHAR* argv[])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;    const char *fname = "filename.txt"; // or whatever    locale loc = _ADDFAC(locale::classic(), new Simple_codecvt);&lt;br /&gt;     wofstream myostr;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;     myostr.imbue(loc);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;     myostr.open(fname, ios_base::binary);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;     if (!myostr.is_open()) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;         cerr &lt;&lt; "can't write to " &lt;&lt; fname &lt;&lt; endl;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;     return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;算了，我承认我高估STL了，或者说是VC上的STL&lt;br /&gt;不讲了，累死了，有兴趣自己看&lt;a href="http://www.codeproject.com/vcpp/stl/upgradingstlappstounicode.asp?df=100&amp;forumid=16224&amp;amp;exp=0&amp;select=646006"&gt;http://www.codeproject.com/vcpp/stl/upgradingstlappstounicode.asp?df=100&amp;amp;forumid=16224&amp;exp=0&amp;amp;select=646006&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684683195838630?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684683195838630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684683195838630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684683195838630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684683195838630'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/stl-doesnt-support-unicode-fully.html' title='整理：STL doesn&apos;t support UNICODE fully!'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116684617897172002</id><published>2006-12-22T19:55:00.000-08:00</published><updated>2006-12-22T19:56:18.983-08:00</updated><title type='text'>整理：IIS 5 vs IIS 6</title><content type='html'>FT, 搞了半天原来真的是IIS 5和IIS 6的不同&lt;br /&gt;IIS 5所有的App虽然都可以是Isolation(high)，但是其本身还是在一个进程空间内，所以如果调用一个外部native dll的singleton对象，所有的App会指向同一个对象……&lt;br /&gt;IIS 6就是真正的在不同进程空间内运行了，不同的App Pool终于是隔开的了&lt;br /&gt;然而，xp是很难装IIS6的……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116684617897172002?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116684617897172002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116684617897172002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684617897172002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116684617897172002'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/iis-5-vs-iis-6.html' title='整理：IIS 5 vs IIS 6'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116677231390056905</id><published>2006-12-21T23:21:00.000-08:00</published><updated>2006-12-21T23:25:13.910-08:00</updated><title type='text'>光线跟踪MPI并行版本 STEP 1</title><content type='html'>SolidViewer_MPI 并行msmpi, Win32版本基本完工。&lt;br /&gt;关键词：光线跟踪3d场景渲染，易并行，条状分割&lt;br /&gt;现在在一台机器上开n个mpi进程试验成功，不过好像效率上差不多。&lt;br /&gt;下一步准备研究Win64编程，然后把这个deploy到Windows Cluster上面&lt;br /&gt;话说为啥Window CCS只有x64版本呢？还得我很多东西还要重新改过……&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116677231390056905?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116677231390056905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116677231390056905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116677231390056905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116677231390056905'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/mpi-step-1.html' title='光线跟踪MPI并行版本 STEP 1'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-116548458071001430</id><published>2006-12-07T01:39:00.000-08:00</published><updated>2006-12-07T02:45:35.553-08:00</updated><title type='text'>VS2005超大bug</title><content type='html'>vs2005我装了x64编译器后（不知道没装之前有没有这个bug）：&lt;br /&gt;1）创建最简单win32 console，啥都不改&lt;br /&gt;2）debug下直接run，显示找不到msvcr80d.dll&lt;br /&gt;3）属性里把“使用标准windows库”改成“静态库使用MFC”，run，正确&lt;br /&gt;4）改回“使用标准windows库”, run，就不报错了……&lt;br /&gt;&lt;br /&gt;解决方案除了上面说的那个么，还有：&lt;br /&gt;a）在“属性-&gt;配置属性-&gt;清单工具-&gt;常规“下有一个”使用FAT32解决办法，把它选成是，就可以了。（注意：一定要先配置这个选项，然后再编译工程，要不然还是不好用：）&lt;br /&gt;b）到你的工程的文件夹，如（myproject），找到其下的myproject\myproject\Debug\ myproject.rec，把它删掉（删掉整个Debug目录也可以），重新编译，搞定&lt;br /&gt;c）在“属性-&gt;配置属性-&gt;清单工具-&gt;输入输出”，把嵌入manifest选为否&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-116548458071001430?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/116548458071001430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=116548458071001430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116548458071001430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/116548458071001430'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/12/vs2005bug.html' title='VS2005超大bug'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-115684348648859746</id><published>2006-08-29T02:13:00.000-07:00</published><updated>2006-08-29T02:24:46.500-07:00</updated><title type='text'>自写ThreadPool+select做多线程服务端心得</title><content type='html'>ThreadPool采用message driven方式，每当select返回一个fd的read请求时，将其包装为Task，丢入ThreadPool的message queue中。等其中的Thread从queue拿出，进行处理。&lt;br /&gt;有三点心得：&lt;br /&gt;1）当read请求已经被包装丢入队列，但还未得到recv处理时，select依然会不停的对这个fd的read进行响应，因此当丢入队列尚未处理时，select应拒绝该fd的read，否则负载越高，越容易重复Task溢出。解决方法是再设一个fd_pending的set，记录此状态下的fd。&lt;br /&gt;2）queue不应是无限长的，在达到一定长度后应拒绝入队请求，以控制负载。同时对队列操作部分要设Critical Section。&lt;br /&gt;3）fd_set的系列操作都是线程不安全的，在多个线程同时操作其时，需要设Critical Section。因此要将fd_set系列操作重新包装，外面加上Enter/Leave Critical Section。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-115684348648859746?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/115684348648859746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=115684348648859746' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115684348648859746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115684348648859746'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/08/threadpoolselect.html' title='自写ThreadPool+select做多线程服务端心得'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-115614701305737115</id><published>2006-08-21T00:43:00.000-07:00</published><updated>2006-08-21T01:37:10.716-07:00</updated><title type='text'>似乎终于有点看懂select了</title><content type='html'>&lt;p&gt;从只会用WSAxxxx到看懂select，还真是一个飞跃，赶快记下来。&lt;br /&gt;select一般用于单线程、并发服务器&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;SOCKET msock;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;fd_set rfds, afds;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;msock = passiveTCP( service, QLEN );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;FD_ZERO( &amp;afds );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;FD_SET( msock, &amp;afds );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;while( 1 )&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;{&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;   memcpy( &amp;rfds, &amp;amp;afds, sizeof( rfds ) );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;   if( select( FD_SETSIZE, &amp;rfds, (fd_set*)0, (fd_set*)0, (struct timeval *)0 ) &lt;/em&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;== SOCKET_ERROR ) )&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;      errexit;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;em&gt;   if( FD_ISSET( msock, &amp;rfds )) &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;   {&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;      SOCKET ssock;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;      alen = sizeof( fsin );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;      ssock = accept( msock, (struct sockaddr *)&amp;fsin,&amp;amp;alen );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;      if( ssock == INVALID_SOCKET )&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;        errexit;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;      FD_SET( ssock, &amp;afds );&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;   }&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Courier New;"&gt;   for( fdndx=0; fdndx &lt; &lt;rfds.fd_count;&gt;&lt;/span&gt;rfds.fd_count; ++ fdndx )&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;   {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;      SOCKET fd=rfds.fd_array[fdndx];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;      if( fd != msock &amp;&amp;amp; FD_ISSET( fd, &amp;rfds )) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;      if( echo(fd) == 0 ) // DO Echo Process&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;       closesocket( fd );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;       FD_CLR( fd, &amp;afds );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;}&lt;/span&gt; &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-115614701305737115?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/115614701305737115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=115614701305737115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115614701305737115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115614701305737115'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/08/select.html' title='似乎终于有点看懂select了'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-115522730095174441</id><published>2006-08-10T09:25:00.001-07:00</published><updated>2006-08-10T09:28:20.966-07:00</updated><title type='text'>好久没来了</title><content type='html'>原因很简单，似乎就是我们伟大的长城金盾，以倒水把孩子也要一律倒掉的伟大作风，把我们的双眼狠狠蒙上，不让我们看到这里。&lt;br /&gt;不过现在说这里改了ip，就解封了?不知道能解多久。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-115522730095174441?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/115522730095174441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=115522730095174441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115522730095174441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/115522730095174441'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2006/08/blog-post_10.html' title='好久没来了'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7444802.post-108912440046659494</id><published>2004-07-06T07:32:00.000-07:00</published><updated>2004-07-06T07:33:20.466-07:00</updated><title type='text'>The first shot to the Words of Magi...</title><content type='html'>第一次尝试一下，不知道究竟写什么好呢&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7444802-108912440046659494?l=magiword.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://magiword.blogspot.com/feeds/108912440046659494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7444802&amp;postID=108912440046659494' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/108912440046659494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7444802/posts/default/108912440046659494'/><link rel='alternate' type='text/html' href='http://magiword.blogspot.com/2004/07/first-shot-to-words-of-magi.html' title='The first shot to the Words of Magi...'/><author><name>Magi...</name><uri>http://www.blogger.com/profile/11083097561990949080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
